1 安装底层库

1
$ apt-get install gettext -y

2 修改设置

在 settings.py 中加

1
2
3
4
5
6
7
8
9
10
11
USE_I18N = True
USE_L10N = True

LANGUAGES = [
('en', 'English'),
('zh', 'Chinese'),
]

LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'),
]

3 修改代码

代码中加入要翻译的字符串,形如:

1
2
from django.utils.translation import gettext as _
text = _("Hello, World")

4 生成目录和翻译文件

1
$ python manage.py makemessages -l zh

此时生成 locale/zh/LC_MESSAGES/django.po,内容如下:

1
2
3
4
5
6
7
#: app_diet/diet.py:20
msgid "Hello, World"
msgstr ""

#: app_diet/diet.py:21
msgid "Right"
msgstr ""

修改上述文件,在 msgstr 中加入多语音翻译

5 编译翻译文件

1
$ python manage.py compilemessages

此时生成 django.mo 文件

6 切换语言

正常情况下在 settings.py 中设置。

也在程序中设置:

1
2
3
4
5
6
7
from django.utils import translation

def my_view(request):
user_language = 'zh'
translation.activate(user_language)
response = HttpResponse(_("Welcome to my site."))
return response

Django 会根据用户的浏览器设置自动选择语言

1
2
3
4
5
6
7
from django.conf.urls.i18n 
import i18n_patterns
from django.urls import path

urlpatterns = i18n_patterns(
path('', include('myapp.urls')),
)

同时 settings.py 中加入中间件支持

1
MIDDLEWARE = [ 'django.middleware.locale.LocaleMiddleware', … ]