Django: 无法更改默认语言

9 投票
4 回答
10146 浏览
提问于 2025-04-17 13:55

我已经用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

我可能遗漏了什么呢?谢谢!

4 个回答

1

我之前遇到了一些问题,后来发现我的settings.py文件里缺少了一个中间件...就是这个 -> 'django.middleware.locale.LocaleMiddleware',

Django是如何发现语言偏好的

中间件放置位置

2

你可以看看Django是如何发现语言偏好的

在你的情况中,我猜测你启用了LocaleMiddleware,它会从浏览器每次发送的请求中获取Accept-Language这个头信息来判断你的语言。你可以在浏览器的设置中更改这个头信息,不过很多用户并不知道这一点,通常就保持系统默认的设置。例如,在Firefox浏览器中,你可以在设置里找到“内容”,然后在“语言”下选择更改。

13

LANGUAGE_CODE 只是当 Django 找不到应该使用什么语言时的默认设置。你可能已经在你的会话或 cookie 中有 en-gb,而 Django 会根据这些信息来判断。

可以看看 Django 如何发现语言偏好,了解 Django 是如何确定请求语言的步骤。

撰写回答