Django 框架具有很好的 I18N 和 L10N 的支持,其实现是基于 GNU 的 gettext。
设置
在项目的 settings.py
文件中进行设置:
from django.utils.translation import ugettext_lazy as _
MIDDLEWARE = [
...
'django.middleware.locale.LocaleMiddleware',
]
USE_I18N = True
USE_L10N = True
LANGUAGES = (
('ko', _('Korean')),
('ja', _('Japanese')),
('zh_CN', _('Chinese'))
)
# 翻译文件所在目录
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
创建及编译语言文件
Django 为我们提供了工具,makemessages
用来自动创建和维护这些文件。
python manage.py makemessages -l zh_CN
创建语言文件后,每次对其进行更改时,都需要将其编译为更有效的形式,以供 gettext 使用。
python manage.py compilemessages
生成的目录结构如图:
更多使用方法请参考官方文档:
https://docs.djangoproject.com/en/2.0/topics/i18n/translation/