Django:无法更改默认语言

问题描述 投票:0回答:4

我已经用

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

我可能会错过什么?谢谢

python django internationalization translation
4个回答
12
投票

LANGUAGE_CODE
仅是当 Django 找不到要使用的语言时的默认值。您的会话中可能已经有
en-gb
或 Django 可以获取的 cookie。

阅读Django 如何发现语言偏好,了解有关 Django 确定请求语言的步骤的更多信息。


2
投票

看看 Django 如何发现语言偏好

就您而言,我打赌您已启用

LocaleMiddleware
,并且它会从浏览器随每个请求发送的
Accept-Language
标头获取您的语言。您可以在浏览器的首选项中更改该标头,尽管许多用户没有意识到这一点并保留其系统上的默认值。例如,在 Firefox 中,您可以在“首选项”、“内容”、“选择”(在“语言”下)中更改此设置。


1
投票

有一段时间遇到了这个问题...我后来发现我的settings.py 文件中缺少一个中间件...那就是 ->

'django.middleware.locale.LocaleMiddleware',

Django 如何发现语言偏好


0
投票

https://github.com/django/django/pull/17151

您可以在这里找到解决方案 您需要自定义本地中间件以跳过首选浏览器语言

© www.soinside.com 2019 - 2024. All rights reserved.