如何启用服务器范围的翻译?

时间:2014-12-07 14:14:09

标签: django translation

我试图强制将网站翻译成德语(不用德语对字符串进行硬编码)。无论客户的浏览器发送的语言代码是什么,我都想要德语。

在我的settings.py

LOCALE_PATHS = (
    '/path_to_my_app/locale',
)
LANGUAGE_CODE = 'de-de'
USE_I18N = True

已安装的应用和中间件没有什么特别之处:

INSTALLED_APPS = (
    'my_project',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

我已在django.po中生成了相关的django.mo/path_to_my_app/locale/de-de/LC_MESSAGES/个文件。

但是使用ugettext()时我的字符串不会翻译。我也在网站shell中看到了这一点:

In [1]: from django.utils.translation import get_language

In [2]: get_language()
Out[2]: u'en-us'

我错过了什么?

1 个答案:

答案 0 :(得分:0)

经过几个小时的努力,我找到了一个解决方案......

settings.py

LANGUAGE_CODE = 'de-de'
USE_I18N = True

(无需设置LOCALE_PATHS。)

然后,在django.po中生成相关的django.mo/path_to_my_app/locale/de/LC_MESSAGES/个文件。 请注意使用" de"这里而不是" de-de"。

这让我想知道如何在Django中为一个国家生成语言变体......