一、开启多语言支持
1. 配置中间件
在我使用的 Django 1.11.6 中,默认没有加入 i18n 的 middleware ,所以需要我们自己手动加入相关 middleware 。
你需要将’django.middleware.locale.LocaleMiddleware’,加入 middleware_classes 中,同时,由于 locale 依赖于 session ,将其放在 SessionMiddleware后,同时由于 CommonMiddleware 需要一个语言来激活对应的 URL 显示,所以你需要将 django.middleware.locale.LocaleMiddleware 放在 CommonMiddleware 之前,就像下面这样。
middleware
|
|
2. 确认 I18N 相关配置为 True
在 Settings.py 的底部,你可以看到下面这些配置,确保其中的值都为 True
settings
|
|
3. 设置 locale 路径
在 settings.py 中加入如下的代码
path
|
|
这表明我们的 locale 文件默认会放在 app 目录中的 locale 目录下
二、在 views 中引入 ugettext
在 views.py 中加入如下代码
|
|
将所有需要输出的文字使用 _() 方法进行输出
比如
|
|
对于一些有变量的文字来说,也可以进行处理
比如
|
|
三、在模板中引入 uggettext
如果你希望在模板中引入多语言,可以通过如下方法来使用
首先,需要在要引入多语言页面的顶部加入 {% load i18n %}
在对应的位置使用 trans 方法来获取文字,比如
|
|
四、生成多语言模板文件
在命令行中,进入到应用目录下,执行如下命令
|
|
command
这样就会默认在当前应用的 locale 目录下,为我们生成对应的配置文件
file
我们打开 django.po ,就能看到其中需要翻译的内容了。
中文的 language code 为 zh-hans
五、使用 PoEdit 来编辑多语言文件
我们也可以使用 Poedit 来打开我们的 .po 文件,然后进行编辑
点击要翻译的条目,在下方的编辑框中进行输入。 在编辑框的右侧,还有机器翻译的内容,可以供我们参考。
PoEdito 在编辑完成,保存后,会自动生成 .mo 编译文件,如果没有生成,你可以在命令行中生成。
|
|
这样,就可以生成对应的编译文件了。