文章目录
-
- [1、在 Windows 上安装 GNU gettext 工具](#1、在 Windows 上安装 GNU gettext 工具)
- [2、设置 Django 的国际化配置](#2、设置 Django 的国际化配置)
-
- 创建一个demo项目,方便后续国际化配置
-
- (1)新建django项目`demo`
- [(2)将 项目导入到pycharm,方便后续操作,记得配置python解释器](#(2)将 项目导入到pycharm,方便后续操作,记得配置python解释器)
- [(3)项目配置目录下`demo/demo`,新加 views.py 文件,实现一个简单界面](#(3)项目配置目录下
demo/demo
,新加 views.py 文件,实现一个简单界面) - (4)配置路由
- (5)修改结果如图
- (6)运行Djnago项目,结果如图
- 配置国际化
-
- [(1)在应用根目录中创建一个 `locale` 目录。](#(1)在应用根目录中创建一个
locale
目录。) - [(2)`setting.py`中 配置全局翻译目录](#(2)
setting.py
中 配置全局翻译目录) - [(3)运行 `django-admin makemessages -l zh_Hans` 命令以生成对应语言目录和相关文件](#(3)运行
django-admin makemessages -l zh_Hans
命令以生成对应语言目录和相关文件) - [(4)翻译`django.po` 文件中的字符串](#(4)翻译
django.po
文件中的字符串) - [(5)运行 `django-admin compilemessages` 编译翻译文件](#(5)运行
django-admin compilemessages
编译翻译文件) - (6)切换语言
- (7)翻译效果如图
- [(1)在应用根目录中创建一个 `locale` 目录。](#(1)在应用根目录中创建一个
1、在 Windows 上安装 GNU gettext 工具
在 Windows 上下载和安装 GNU gettext 工具的作用是支持 Django 项目的国际化(i18n)功能。具体来说,gettext 工具帮助 Django 处理翻译文件,使应用能够生成和编译 .po
和 .mo
文件,从而实现多语言支持。
下载安装
官网地址:https://mlocati.github.io/articles/gettext-iconv-windows.html
注: 直接下载后,安装即可。本人安装的是1.17版本,无需手动配置path
环境变量,安装后即可使用;
验证安装
安装并添加到路径后,输入以下命令以验证安装:
bash
msguniq --version
如果安装成功,应该会显示 msguniq
的版本信息。如图:
2、设置 Django 的国际化配置
创建一个demo项目,方便后续国际化配置
(1)新建django项目demo
shell
django-admin startproject demo
(2)将 项目导入到pycharm,方便后续操作,记得配置python解释器
(3)项目配置目录下demo/demo
,新加 views.py 文件,实现一个简单界面
python
from django.http import HttpResponse
from django.utils.translation import gettext as _
def index(request):
message = _('hello world') # 翻译字符串
return HttpResponse(message)
使用 gettext
进行翻译 :_('hello world')
会返回翻译后的字符串。
(4)配置路由
python
urlpatterns = [
path("admin/", admin.site.urls),
path("",index),
]
(5)修改结果如图
(6)运行Djnago项目,结果如图
配置国际化
⭐首先 ,确保setting.py文件中USE_I18N = True
,为True时表示:启用国际化支持;
(1)在应用根目录中创建一个 locale
目录。
(2)setting.py
中 配置全局翻译目录
在 settings.py
中添加或修改 LOCALE_PATHS
配置,来设置一个全局翻译目录。
python
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale')
]
(3)运行 django-admin makemessages -l zh_Hans
命令以生成对应语言目录和相关文件
shell
django-admin makemessages -l zh_Hans
解释:
-
makemessages
:这是 Django 的一个子命令,用于提取项目中可翻译的字符串(例如,使用gettext
或gettext_lazy
标记的字符串)。makemessages
会扫描项目中的 Python 文件、模板文件(HTML 文件)、JavaScript 文件等,找到所有标记为可翻译的字符串,并将其收集到一个.po
文件中,方便翻译。 -
-l
:这是makemessages
命令的一个参数,表示语言代码(locale
),用来指定生成翻译文件的目标语言。 -
zh_Hans
:表示简体中文。zh_Hans
是简体中文的语言代码,用于指定生成的翻译文件为简体中文版本。根据不同语言需求,可以替换为其他语言代码(例如en
表示英语,fr
表示法语等)。
这会在项目或应用目录下的 locale/zh_Hans/LC_MESSAGES/
路径中生成一个 django.po
文件结果如图:
(4)翻译django.po
文件中的字符串
打开 zh_Hans/LC_MESSAGES/django.po
文件,找到你需要翻译的字符串,将其翻译成目标语言。例如:
(5)运行 django-admin compilemessages
编译翻译文件
保存 .po
文件后,编译成 .mo
文件,Django 运行时会读取该文件:
shell
django-admin compilemessages
(6)切换语言
在 settings.py
中,将 LANGUAGE_CODE
设置为你的目标语言(例如中文 zh-Hans
),或者使用 Django 的 translation
模块动态切换语言。
注: Django 的 translation
模块动态切换语言 ,如果感兴趣可以自行了解。