Django 启用国际化支持—实现配置多国语言

文章目录

    • [1、在 Windows 上安装 GNU gettext 工具](#1、在 Windows 上安装 GNU gettext 工具)
    • [2、设置 Django 的国际化配置](#2、设置 Django 的国际化配置)
      • 创建一个demo项目,方便后续国际化配置
      • 配置国际化
        • [(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、在 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 的一个子命令,用于提取项目中可翻译的字符串(例如,使用 gettextgettext_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 模块动态切换语言 ,如果感兴趣可以自行了解。

(7)翻译效果如图
相关推荐
Z2116133477 分钟前
学习日志011--模块,迭代器与生成器,正则表达式
python
CrazyCosin13 分钟前
Clip结合Faiss+Flask简易版文搜图服务
python·flask·faiss
jokerest12326 分钟前
web——upload-labs——第五关——大小写绕过绕过
前端·后端
java_python源码43 分钟前
[含文档+PPT+源码等]精品基于springboot实现的原生Andriod手机使用管理软件
java·spring boot·后端
恒风52121 小时前
PyCharm 中的【控制台】和【终端】的区别
ide·python·pycharm
JavaPub-rodert1 小时前
Windows系统下载、安装和配置Python环境变量 --- 《跟着小王学Python》
开发语言·windows·python
技术猿188702783512 小时前
Spring Boot应用中的文件压缩与解压技术实践
java·spring boot·后端
JAMES费2 小时前
python机器人Agent编程——多Agent框架的底层逻辑(上)
开发语言·python·机器人
JovaZou2 小时前
[Python学习日记-67] 封装
开发语言·python·学习
hlsd#2 小时前
go 集成swagger 在线接口文档
开发语言·后端·golang