我正在使用django-modeltranslation
翻译我模型中的某些字段。包装很棒,一切都翻译好了。
但是没有简单的手动切换语言的方法。
阅读Accessing Translated and Translation Fields:
因为使用模型翻译应用程序的重点是翻译动态内容,所以标记为翻译的字段在访问它们时有些特殊。翻译字段返回的值取决于当前语言设置。 “语言设置”指的是Django
set_language
视图和相应的get_lang
函数。
如文档中所述,使用set_language()
并不起作用。得到:
AttributeError: 'str' object has no attribute 'POST'
这可能正在发生,因为我不在视图中运行set_language()
。
问题:如何在基本功能中切换django-modeltranslation
的语言?
答案 0 :(得分:2)
activate()
中有一个名为django.utils.translation
的方法非常简单:
>>> from django.utils.translation import activate
>>> activate('en')
>>> Model.objects.first() # will fetch english version
>>> activate('fr')
>>> Model.objects.first() # will fetch french version
这将在视图和普通函数中起作用。
如果您只想为一次提取更改语言并返回当前语言,则可以使用get_language
中的django.utils.translation
:
>>> from django.utils.translation import get_language, activate
>>> current_language = get_language()
>>> activate('fr')
>>> Model.object.first()
>>> activate(current_language)
答案 1 :(得分:0)
也许为时已晚,但是您可以在“设置”文件中添加中间件
MIDDLEWARE + = ['django.middleware.locale.LocaleMiddleware',]
在请求标头中,键=接受语言值= zh_, 因此,现在Django将根据请求标头切换语言。