Django 模板 : Get current URL in another language

标签 django internationalization django-templates

我正在使用 i18n_patterns 在 Django 应用程序中创建语言前缀。

我的网址是这样的:

/de/contact/
/fr/contact/
/it/contact/

在我的基本模板中,我遍历所有可用语言以显示语言切换链接。

{% get_available_languages as languages %}
<nav id="language_chooser">
    <ul>
        {% for lang_code, lang_name in languages %}
            {% language lang_code %}
            <li><a href="{% url 'home' %}" alt="{{ lang_name }}" title="{{ lang_name }}">{{ lang_code }}</a></li
            {% endlanguage %}
        {% endfor %}
    </ul>
</nav>

在这种情况下,我要反转“主页”URL。有没有办法获取当前页面的翻译 URL?

如果我在德语版的“联系”页面上,我希望“fr”链接指向法语版的“联系”页面,而不是“主页”页面。

最佳答案

我没有使用语言前缀,而是使用了翻译后的网址。然而,这个模板标签也应该能帮助你:

# This Python file uses the following encoding: utf-8

from django import template
from django.core.urlresolvers import reverse # from django.urls for Django >= 2.0
from django.core.urlresolvers import resolve # from django.urls for Django >= 2.0
from django.utils import translation

register = template.Library()

class TranslatedURL(template.Node):
    def __init__(self, language):
        self.language = language
    def render(self, context):
        view = resolve(context['request'].path)
        request_language = translation.get_language()
        translation.activate(self.language)
        url = reverse(view.url_name, args=view.args, kwargs=view.kwargs)
        translation.activate(request_language)
        return url

@register.tag(name='translate_url')
def do_translate_url(parser, token):
    language = token.split_contents()[1]
    return TranslatedURL(language)

它以所需语言返回当前 url。像这样使用它:{% translate_url de %}

欢迎提出改进意见和建议。

关于Django 模板 : Get current URL in another language,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11437454/

相关文章:

design-patterns - 什么是级联对象的良好数据结构?

android - 我如何强制 Android 不使用已用库项目中的某些语言文件?

javascript函数没有被调用

python - Django 中的单选按钮

django - 通过中间表从多个对象中获取ManyToMany对象

python - 如何从 Django URL 更改语言?

python - 使用 ListView django 进行分页

django - 如何使用 django ORM 聚合计算字段? (没有原始 SQL)

python - Django 使用数据库值修改 css/sass

ruby-on-rails - Rails 3本地化路线并显示资源