Django2.1多语言i18n国际化与本地化支持

本文介绍如何在Django项目中实现多语言支持,包括配置步骤、翻译流程和展示效果。从开启i18n功能到安装工具,再到实际应用,详细指导开发者进行国际化设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

  1. 百度百科对i18n的解释
    i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。在资讯领域,国际化(i18n)指让产品(出版物,软件,硬件等)无需做大的改变就能够适应不同的语言和地区的需要。对程序来说,在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面。 在全球化的时代,国际化尤为重要,因为产品的潜在用户可能来自世界的各个角落。通常与i18n相关的还有L10n(“本地化”的简称)。
  2. Django怎么使用i18n
    Django框架是内置有i18n国际化支持模块的,只需要我们根据官方文档的要求使用就行。

启用Django i18n功能

  • 为了使用Django内置的i18n,需要在settings中完成一系列的配置。

打开i18n

USE_I18N = True

添加locale中间件

i18n中间件
按照官方文档的说法,需要先注册LocaleMiddleware中间件,而且这个中间件的位置是有要求的。
LocaleMiddleware中间件需要放在sessions中间件之后和common中间件之前。
因为LocaleMiddleware需要使用session的数据,而common需要有一个激活的语言来解析URL。

  • 按官方文档提示,添加好中间件。

添加i18n上下文处理器

添加i18n上下文处理器

  • 依然是按照官方教程,添加上下文处理器,官方文档说的很明白,接下来我们要添加LANGUAGES

添加LANGUAGES

按照官方文档的教程,接下来我们需要设置支持的语言类型。
官方解释了LocaleMiddleware需要设置语言首选项作为我们的显示语言。
设置语言类型

  • 官方给出了标准的示例
  • 这是我的示例
# 支持的语言类型
from django.utils.translation import gettext_lazy as _
LANGUAGES = (
    ('zh-hans', _('中文简体')),
    ('en-us', _('English')),
)
  • 接下来需要设置本地翻译文件的保存路径

设置本地翻译文件路径

# 本地翻译文件路径
LOCALE_PATHS=(
    os.path.join(BASE_DIR, 'locale'),
)
  • 重要:接下来需要在项目根目录下新建locale文件夹

安装gettext

sudo apt-get install gettext
  • 至此 i18n的环境已经搭建完成

使用i18n

使用方法在官方文档上也有详细的教程。

在模板标签添加标签

  1. 单句翻译
    trans
  2. 整块翻译
    blocktrans

统计翻译字符

python manage.py makemessages -l zh_Hans
	注意:这里的 zh_Hans, H需要大写,这是个坑
  • 接下来你会在locale文件夹中看到统计文件,点击打开,添加翻译字符串即可。

编译

翻译完成后需要编译才能使用

python manage.py compilemessages

展示

  • 首先需要在settings中更改系统语言
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

切换两种语言就能够看到翻译的效果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安心写bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值