我有一个Django应用程序(在Google App Engine上)我希望国际化。
settings.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',
...
我已在locale / fr / LC_MESSAGES中为我的应用生成了.po和.mo文件(但不是在全局级别)。
我将浏览器Accept-Language标题设置为“fr”,Django忽略它。当我查看request.LANGUAGE_CODE时,它总是“en”。
我可以告诉浏览器是正确的,因为我访问了一些其他支持i18n的网站,它返回法语。
如何找到Django认为我的设置缺失的内容?
我看到this question并没有帮助我。
我在Google App Engine上使用app engine patch 1.0.2.2运行Django 1.0。
答案 0 :(得分:3)
Django有一定的顺序,就i18n而言。
首先检查LANGUAGE_CODE
。它是站点范围内的语言,如果没有设置其他内容,这就是用户获得的语言。
其次,由于您已添加LocaleMiddleware
,因此会检查是否在用户会话中设置了django_language
。我建议在数据库中清除会话信息或创建一个全新的用户来试用。
第三,它检查是否设置了django_language
cookie(实际上,cookie的名称是由LANGUAGE_COOKIE_NAME
定义的)。我建议删除这个cookie。
第四,它查找Accept-Language
HTTP标头。这是您的浏览器设置的来源。
答案 1 :(得分:0)
从this page开始,您可以从请求中删除$!
,然后退回到#! /bin/bash
cd /mnt/go/src/github.com/something
pwd
bash -c 'nohup go run apps/something/main.go >> /var/logs/go/crash.log 2>&1 & echo $! > /var/run/something.pid'
cat /var/run/something.pid
:
HTTP_ACCEPT_LANGUAGE