django_多语言支持
1 安装底层库
1 | apt-get install gettext -y |
2 修改设置
在 settings.py 中加
1 | USE_I18N = True |
3 修改代码
代码中加入要翻译的字符串,形如:
1 | from django.utils.translation import gettext as _ |
4 生成或更新语言文件
1 | python manage.py makemessages -l zh |
此时生成 locale/zh/LC_MESSAGES/django.po,内容如下:
1 | #: app_diet/diet.py:20 |
修改上述文件,在 msgstr 中加入多语音翻译。可以使用 copilot 自动填充。
注意:
- 如果 django.po 已存在,则会被更新。
- 如果包含格式转换,则标注:python-brace-format。
- 如果之前有现在没有,则以~开头,显示在 django.po 最后。
- 如果与之前定义不一致,则出现 fuzzy 关键,需要进一步修正。
5 编译翻译文件
1 | python manage.py compilemessages |
此时生成 django.mo 文件
6 切换语言
正常情况下在 settings.py 中设置。
也在程序中设置:
1 | from django.utils import translation |
Django 会根据用户的浏览器设置自动选择语言
1 | from django.conf.urls.i18n |
同时 settings.py 中加入中间件支持
1 | MIDDLEWARE = [ 'django.middleware.locale.LocaleMiddleware', … ] |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.