通俗的说法叫多语言支持,为严谨的说法叫做创建国际化和本地化,

国际化:使你项目中的字符串可以翻译成成其他的语言。

本地化:为某个项目创建翻译的过程。

使用可翻译字符串:

#在py文件中
from django.utils.translation import gettext as _
translated_string = _("Parent")
#在html模板中
{% load i18n %}
<h1>{% translate "Parent"}

设置Django

在Django项目的settings.py文件中,检查以下设置:

#国际化支持
USE_I18N = True #设置网站的语种
LANGUAGES = [ ('en', 'English'), ('zh-hans', '简体中文'), #设置翻译文件的存储位置 
LOCALE_PATHS = [ os.path.join(BASE_DIR, 'locale'), ] 

这里,您需要根据您项目支持的语言来配置LANGUAGES

收集翻译字符串

使用Django的makemessages管理命令来收集你项目中的翻译字符串。运行以下命令:

python manage.py makemessages -l zh_hans

上述命令会根据LANGUAGES设置中的语言(例如,英语'en')创建翻译文件。

这里可能会报错:Make sure you have GNU gettext tools 0.15 or newer installed.

https://mlocati.github.io/articles/gettext-iconv-windows.html

去下载64bit的static,安装一下就可以了。

编辑翻译文件

打开创建的翻译文件(locale目录下,语言名称文件夹下的.po文件,随便用记事本vscode打开),然后添加或编辑扩展中的翻译字符串。您需要为每个支持的语言创建一个对应的翻译文件,并为每个字符串提供翻译。

#...
#: .\zheng\models.py:36
msgid "Parent"
msgstr "上级分类"

msgid:代码中的可翻译字符串
msgstr:对应的翻译

全部翻译好以后保存

编译翻译文件

python manage.py compilemessages

使用compilemessages命令来编译翻译文件: 生成.mo文件,这些文件包含了实际的翻译内容,用于在运行时进行翻译。

通过以上步骤,翻译就创建好了。

详情参考:https://docs.djangoproject.com/zh-hans/4.2/topics/i18n/translation/

本文还参考了:https://blog.csdn.net/weixin_66526635/article/details/125894950

此作者没有提供个人介绍。
最后更新于 2023-10-07