Django的国际化

Django基于python的gettext来实现国际化。其过程为安装gettext工具,然后再代码中调用指定方法,然后用gettext提供的程序来把代码中需要翻译的部分找出来写到一个po的文件中,翻译po中的内容,最后通过gettext工具编译成mo文件。

安装gettext

在windows上安装gettext

可以自己从下面网址下载:

http://gnuwin32.sourceforge.net/packages/gettext.htm

需要下载两个东西:

  • gettext-0.14.4-bin.zip
  • gettext-0.14.4-dep.zip

在Ubuntu上安装gettext

apt-get install gettext

配置环境变量

解压上面的两个下载的zip包。然后把里面的bin目录配置到环境变量的path中。

代码中使用gettext

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目录下执行此命令。

另外此命令只需要执行一次。以后直接添加消息的翻译。

翻译消息

打开locale\zh_hans\LC_MESSAGES下面的django.po文件。

msgid "username"
msgstr "用户名"

开始对每一个消息进行翻译。

编译消息文件

在消息文件翻译之后,还需要把此消息文件变成二进制文件。需要运行下面命令:

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,就好了

最新文章

  1. Qml 写的弹出层控件
  2. C# 二维数组相关知识记录
  3. discuz后台开发常用函数
  4. JS常规的验证代码 - 手机号,邮箱,字符串查找
  5. 2、Linux系统root用户忘记密码的重置方式
  6. win7 php5.5 apache 源码安装 imagick扩展
  7. SQL联合查询中的关键语法(转)
  8. POJ 1699 Best Sequence(DFS)
  9. DESTOON系统文章模块默认设置第一张图片为标题图的方法
  10. uva 1597 Searching the Web
  11. jQuery滚动广告 解决子div绝对定位与父div重叠引起的闪烁问题
  12. How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数)
  13. SSL+socket详解
  14. 教你用命令行激活win10系统
  15. Visual Studio Code 如何将新项目发布到GIT服务器
  16. Python-Mongodb vs mysql
  17. spring-mvc集成 swagger
  18. Fluent UDF【2】:学习途径
  19. Sencha Touch 实战开发培训 视频教程 第二期 第四节
  20. Scala_标识符

热门文章

  1. HDU1412:{A} + {B}
  2. 18-10-30 Scrum Meeting 2
  3. Hibernate 零配置之Annotation注解
  4. 执行计划--Adhoc和Prepare
  5. TSQL--使用CTE完成递归查询
  6. C#基础笔记(第二十二天)
  7. AHOI2012 信号塔 | 最小圆覆盖模板
  8. 快速排序 JAVA实现
  9. 初识Mybatis框架
  10. sqlmap注入之tamper绕过WAF脚本列表