我正在使用 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/