我已经用
en-gb
语言代码进行开发一段时间了。现在临近发布日期,我打算将默认语言切换为 en-us
,但无论我做什么,最初的 request.LANGUAGE_CODE
都会设置为 en-gb
,即使对于未注册的用户也是如此。
仅供参考,我实际上想将时区保留为伦敦,并将默认语言更改为美式英语。现在我已经改变了两者只是为了让它工作,但仍然没有乐趣。
#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
我可能会错过什么?谢谢
LANGUAGE_CODE
仅是当 Django 找不到要使用的语言时的默认值。您的会话中可能已经有 en-gb
或 Django 可以获取的 cookie。
阅读Django 如何发现语言偏好,了解有关 Django 确定请求语言的步骤的更多信息。
看看 Django 如何发现语言偏好。
就您而言,我打赌您已启用
LocaleMiddleware
,并且它会从浏览器随每个请求发送的 Accept-Language
标头获取您的语言。您可以在浏览器的首选项中更改该标头,尽管许多用户没有意识到这一点并保留其系统上的默认值。例如,在 Firefox 中,您可以在“首选项”、“内容”、“选择”(在“语言”下)中更改此设置。
有一段时间遇到了这个问题...我后来发现我的settings.py 文件中缺少一个中间件...那就是 ->
'django.middleware.locale.LocaleMiddleware',
https://github.com/django/django/pull/17151
您可以在这里找到解决方案 您需要自定义本地中间件以跳过首选浏览器语言