我无法理解为什么django翻译(i18n)不起作用。我在代码中使用英语,我为法语写了翻译。奇怪的是,它在我使用django.test.client.Client时有效,但在我使用网络浏览器时却没有。
我尝试在我的浏览器设置中将Accept-Language设置为fr,并且我还尝试从请求标头中删除密钥HTTP_ACCEPT_LANGUAGE。
我已经通过django.conf.urls.i18n中的setlang视图将语言设置为fr。
当我这样做时:
{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
我成功获得fr,即使我的页面中应该转换的字符串仍然是英文。
我在我的设置中有这个:
USE_I18N = True
#Probably ignored because of the django_language cookie
LANGUAGE_CODE = 'fr'
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.transaction.TransactionMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
我已经编译了我的翻译,因为我在使用测试客户端时获得了预期的输出,所以它们可以工作。
我很确定问题是浏览器发送给影响翻译的django的问题,但我无法弄清楚是什么。我比较了两种语言,并且对两种语言的唯一引用都是fr。
任何人都有任何关于我可以尝试的建议吗?
我使用调试器进行了更多的研究,我发现_active中的目录在使用浏览器时不包含我的翻译,但在使用测试客户端时也是如此。什么可能导致这种行为?
答案 0 :(得分:0)
不幸的是,虽然2016年即将推出,但在测试客户端中添加Accept-Language标头仍然无法正常工作。但您可以手动激活语言。请参阅以下代码:
from django.utils.translation import activate
activate('fr')
您可以阅读更多详细信息here。
希望这有帮助!