Django 基于 gettext 的国际化

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/

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容