from django.utils import translation
with translation.override('fr'):
print(_("Hello")) # <= will be translated inside the with block
translation.activate('fr') # <= will change the language for the whole thread.
# You then have to manually "restore" the language with another activate()
translation.activate('en') # <= change languages manually
字符串 如果你想让django检查路径和/或request(language cookie,...),这是更常见的,例如:www.example.com/en/<somepath> vs www.example.com/fr/<somepath>,使用django.utils.translation.get_language_from_request(request, check_path=False)。此外,它将始终返回settings.LANGUAGES中的有效语言集 我发现通过谷歌找到关于这个主题的这些差异并不是很容易,所以在这里它是为了进一步参考。
{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
Current language code: {{ LANGUAGE_CODE }}<br>
{% get_current_language_bidi as LANGUAGE_BIDI %}
{% if LANGUAGE_BIDI %}RTL <br>{% endif %}
{% get_language_info for LANGUAGE_CODE as lang %}
Language code: {{ lang.code }}<br>
Name of language: {{ lang.name_local }}<br>
Name in English: {{ lang.name }}<br>
Bi-directional: {{ lang.bidi }}
Name in the active language: {{ lang.name_translated }}
7条答案
按热度按时间busg9geu1#
特别感兴趣的函数是
django.utils.translation.get_language()
,它返回当前线程中使用的语言。参见文档。wxclj1h52#
或者你也可以在你的观点中得到这一点
字符串
sy5wg1nm3#
注意你使用的语言。取决于哪种方法,Django将使用不同的方法和信息来 * 确定 * 要使用的正确语言。
当使用
django.utils.translation.get_language()
函数时,它链接到thread语言。在Django 1.8之前,当翻译被禁用时,它总是返回settings.LANGUAGE_CODE
。如果你想手动重写线程语言,你可以使用override()
或activate()
函数,它的命名不是很明确,但仍然很有用:字符串
如果你想让django检查路径和/或request(language cookie,...),这是更常见的,例如:
www.example.com/en/<somepath>
vswww.example.com/fr/<somepath>
,使用django.utils.translation.get_language_from_request(request, check_path=False)
。此外,它将始终返回settings.LANGUAGES
中的有效语言集我发现通过谷歌找到关于这个主题的这些差异并不是很容易,所以在这里它是为了进一步参考。
wh6knrhe4#
如果你使用
django.utils.translation.get_language()
,那么你应该记住,如果这段代码将被异步调用(例如:作为celery任务),那么这种方法将无法工作,因为它运行在不同的线程中。qv7cva1a5#
你可以在Django的模板语言中使用这些模板标签:
字符串
khbbv19g6#
您可以阅读系统的
locale
以了解语言信息。b1uwtaje7#
你可以在Django Views中通过LANGUAGE_CODE和get_language()获取当前语言,如下所示:
字符串
你可以在Django模板中使用
LANGUAGE_CODE
和get_current_language获取当前语言,如下所示。*get_current_language
需要加载i18n:型