dfr*_*kow 5 django google-app-engine internationalization google-app-engine-patch
我有一个想要国际化的 Django 应用程序(在 Google App Engine 上)。
设置.py:
USE_I18N = True
LANGUAGE_CODE = 'en'
# Restrict supported languages (and JS media generation)
LANGUAGES = (
('en', 'English'),
('fr', 'French'),
)
MIDDLEWARE_CLASSES = (
'ragendja.middleware.ErrorMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# i18n
'django.middleware.locale.LocaleMiddleware',
...
Run Code Online (Sandbox Code Playgroud)
我在 locale/fr/LC_MESSAGES 中为我的应用程序生成了 .po 和 .mo 文件(虽然不是在全局级别)。
我将浏览器的 Accept-Language 标题设置为“fr”,Django 忽略它。当我查看 request.LANGUAGE_CODE 时,它总是“en”。
我可以判断浏览器是正确的,因为我访问了其他一些支持 i18n 的站点,它返回法语。
我如何找到 Django 认为我的设置缺少的内容?
我看到了这个问题,但对我没有帮助。
我在 Google App Engine 上使用应用引擎补丁 1.0.2.2 运行 Django 1.0。
Django 在 i18n 方面做事有一定的顺序。
首先它检查LANGUAGE_CODE
. 这是站点范围的语言,如果没有其他设置,这就是用户获得的语言。
其次,由于您添加了LocaleMiddleware
,它会检查django_language
用户会话中是否设置了 。我建议清除数据库中的会话信息或创建一个全新的用户来尝试。
第三,它检查是否有django_language
cookie 集(或者,实际上,cookie 的名称由 定义LANGUAGE_COOKIE_NAME
)。我建议删除这个cookie。
第四,它查找Accept-Language
HTTP 标头。这是您的浏览器设置的来源。
祝你好运!