Django:无法更改默认语言

时间:2013-01-28 12:57:48

标签: python django internationalization translation

我用en-gb语言代码开发了一段时间。现在接近发布日期我将默认语言切换为en-us,但无论我做什么,初始request.LANGUAGE_CODE都设置为en-gb,即使对于未注册的用户也是如此。

仅供参考,我实际上希望将time_zone保留到伦敦,只需将默认语言更改为美式英语。现在我改变它们只是为了让它工作,但仍然没有快乐。

#TIME_ZONE = 'Europe/London'
TIME_ZONE = 'US/Eastern'

LANGUAGE_CODE = 'en-us'
#LANGUAGE_CODE = 'en-gb'

ugettext = lambda s: s

LANGUAGES = (
    ('en', ugettext('American English')),
    ('en-gb', ugettext('British English'))
)

USE_I18N = True
USE_L10N = True
USE_TZ = True

我能错过什么?感谢

3 个答案:

答案 0 :(得分:5)

当Django找不到要使用的语言时,

LANGUAGE_CODE只是默认值。你的会话中可能已经有en-gb或者Django选择了一个cookie。

阅读How Django discovers language preference,了解有关Django确定请求语言的步骤的更多信息。

答案 1 :(得分:0)

查看how Django discovers language preference

在您的情况下,我打赌您已启用LocaleMiddleware,并且它会从您的浏览器随每个请求发送的Accept-Language标头中获取您的语言。您可以在浏览器的首选项中更改该标题,但许多用户并不知道这一点,并保留其系统上的默认值。例如,在Firefox中,您可以在“首选项”,“内容”,“选择”(在“语言”下)更改此项。

答案 2 :(得分:0)

这个问题有一段时间了...我后来发现我的 settings.py 文件中缺少一个中间件...那就是 -> 'django.middleware.locale.LocaleMiddleware',

How Django discovers language preference

Where to place the middleware