Django项目国际化
- 实验环境: py3.4.3 + django1.8.2 + Windows
- 项目设置
>django-admin startproject I18nDjango >manage.py startapp i18n
1. 安装 gettext 。
2. 在源码中标记须要翻译的字符串
(1) 通过 ugettext() 标记views.py 中的待翻译字符串
from django.utils.translation import ugettextdef index(request): return HttpResponse(ugettext('hello world!'))
(2) 通过 {% trans %}标记模板中的待翻译字符串
{% load i18n %}translation
{% trans "This is the p element." %}
3. 创建语言相关的资源文件
(1) 在project根文件夹下’mkdir locale’
(2) 通过以下命令创建资源文件(.po file). 这个命令能提出 hard code string
django-admin.py makemessages -l de
(3) 在settings.py中设置LOCALE_PATHS。并保证以下的变量为True
LANGUAGE_CODE = 'en-us'TIME_ZONE = 'UTC'USE_I18N = TrueUSE_L10N = TrueLOCALE_PATHS = ('locale/',)
4. 更新资源文件
django-admin.py makemessages -a
5. 将.po资源文件编译为二进制的更有效率的.mo文件
django-admin.py compilemessages
6. 在 settings.py 中加入中间件
以下这个中间件能让Django站点依据配置或Accept-Language返回资源文件里相应语言的字符串
MIDDLEWARE_CLASSES = ( ... ... 'django.middleware.locale.LocaleMiddleware',)
实验代码请看
*很多其它Djang的I18n细节请看