Django Translation - 适用于测试客户端,但不适用于浏览器

时间:2010-11-05 20:10:01

标签: django translation

我无法理解为什么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中的目录在使用浏览器时不包含我的翻译,但在使用测试客户端时也是如此。什么可能导致这种行为?

1 个答案:

答案 0 :(得分:0)

不幸的是,虽然2016年即将推出,但在测试客户端中添加Accept-Language标头仍然无法正常工作。但您可以手动激活语言。请参阅以下代码:

from django.utils.translation import activate
activate('fr')

您可以阅读更多详细信息here

希望这有帮助!