当前位置

django 1.9 i18n 国际化和本地化

网上一堆讲 django 国际化与本地化的文档。不说太多。

django 1.9 以后(也有可能是 1.8 以后),zh_CN/zh_TW 不推荐用了,改为 zh_Hans/zh_Hant,这个作为 locale 下的文件夹名。

在 settings.py 文件里,用 LANGUAGE_CODE = 'zh-hans' 或 LANGUAGE_CODE = 'zh-hant' 似乎是官方推荐的。(注意这里是连字符,文件夹是下划线)

我碰到的问题是,用 django-admin makemessages -l zh_Hans 后,能够在 app_name/locale 下面生成 zh_Hans 文件夹及对应的 po 文件。编辑文件后,用 django-admin compilemessages,能把 po 文件编译出对应的 mo 文件,但是网页上死活出不来中文。

settings.py 里 'django.middleware.locale.LocaleMiddleware', 这句也加在 MIDDLEWARE_CLASSES 里了,USE_I18N、USE_L10N 默认就设为 True,也没改过。折腾半天,有个网页说有可能是 django 找不到 locale 的位置,需要在 settings.py 里写出来,于是加上:

LOCALE_PATHS = [
    os.path.join(BASE_DIR, 'app_name/locale'),
]

搞定!

另外目前 Django REST Framework 好像还不支持 zh-hans 这样写。

Topic: