Django基于python的gettext来实现国际化。其过程为安装gettext工具,而后再代码中调用指定方法,而后用gettext提供的程序来把代码中须要翻译的部分找出来写到一个po的文件中,翻译po中的内容,最后经过gettext工具编译成mo文件。python
能够本身从下面网址下载: http://gnuwin32.sourceforge.net/packages/gettext.htmdjango
须要下载两个东西:windows
apt-get install gettext
解压上面的两个下载的zip包。而后把里面的bin目录配置到环境变量的path中。app
cd ..工具
from django.utils.translation import ugettext as _ from django.http import HttpResponse def my_view(request): output = _("Welcome to my site.") return HttpResponse(output)
上面的例子中的消息可经过下面的命令生成消息文件测试
django-admin makemessages -l zh_hans
注意: 须要在一个app目录下执行此命令。 另外此命令只须要执行一次。之后直接添加消息的翻译。.net
打开locale\zh_hans\LC_MESSAGES下面的django.po文件。翻译
msgid "username" msgstr "用户名"
开始对每个消息进行翻译。code
在消息文件翻译以后,还须要把此消息文件变成二进制文件。须要运行下面命令:htm
django-admin compilemessages
编译以后会生成django.mo文件。
接下来就能够开始进行测试了。
注意:决不要在settings文件中导入 django.utils.translation ,由于这个模块自己是依赖于settings,这样作会致使无限循环,而是使用一个“虚构的” gettext()
ugettext = lambda s: s LANGUAGES = ( ('de', ugettext('German')), ('en', ugettext('English')), )
错误OSError: No translation files found for default language zh_CN.
须要把settings.py中的LANGUAGE_CODE配置zh-cn修改为zh-hans,就行了