0

我正在使用django-modeltranslation我的模型中的一些字段进行翻译。该软件包效果很好,所有内容都已翻译。

但是手动切换语言没有简单的方法。

从阅读访问翻译和翻译字段

因为使用模型翻译应用程序的重点是翻译动态内容,所以标记为翻译的字段在访问它们时有些特殊。翻译字段返回的值取决于当前语言设置。“语言设置”是指 Djangoset_language视图和相应的get_lang功能。

按照文档中的描述使用set_language()是行不通的。得到:

AttributeError: 'str' object has no attribute 'POST'

这可能是因为我set_language()不在视野范围内运行。

问题:如何django-modeltranslation在基本功能中切换语言?

4

2 回答 2

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_languagefrom django.utils.translation

>>> from django.utils.translation import get_language, activate
>>> current_language = get_language()
>>> activate('fr')
>>> Model.object.first()
>>> activate(current_language)
于 2017-06-30T10:39:37.987 回答
1

也许为时已晚,但您可以在设置文件中添加中间件

MIDDLEWARE + = ['django.middleware.locale.LocaleMiddleware',]

并且在请求头中 Key =Accept-Language Value= en,所以现在 Django 会根据请求头切换语言库。

于 2020-12-03T18:07:24.293 回答