Chinaunix首页 | 论坛 | 博客
  • 博客访问: 81143
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 137
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-24 08:12
文章分类

全部博文(20)

文章存档

2016年(6)

2015年(14)

分类: Python/Ruby

2015-07-10 16:22:15


Django 国际化使用的翻译模块是使用 Python 自带的 gettext 标准模块。通过一个到 GNU gettext 消息目录库的接口,这个模块为 Python 程序提供了国际化 (I18N) 和本地化 (L10N)


3 个步骤完成国际化:

第一步:在 Python 代码和模板中嵌入待翻译的字符串,

第二步:把那些字符串翻译成需要支持的语言,并进行相应的编译

第三步:在 Django settings 文件中激活本地中间件,


Django Python 代码进行国际化主要用到 ugettext()gettext_noop()gettext_lazy() ungettext() 等函数。



指定待翻译的字符串

针对 Python 代码的国际化和本地化

首先,代码中,使用函数 ugettext() 指定一个待翻译的字符串。另外,为了节约输入时间,代码中使用“from django.utils.translation import ugettext as _”即用短别名 _ 来引入这个函数。代码清单:

from django.utils.translation import ugettext as _


SUCCESS = _('success')

FAIL = _('failed')


针对 template 代码的国际化

模版文件代码清单:

{% load i18n %}

<li class="dropdown sign-in">

<a class=" btn btn-primary " href="{% url 'portal:index'%}">

{% trans "console" %}

</a>

</li>

在代码中已经加入了国际化模版相关代码,下面几点需要注意:

1 {% load i18n %}

使模版能够访问到访问到标签。

2 {% trans str %}

标记翻译一个常量字符串或 可变内容


创建语言文件

接下来,先在 test1 App 目录下创建 locale 目录,并运行“django-admin.py makemessages -l zh_CN”产生 locale/zh_CN/LC_MESSAGES/django.po 文件 ,

[root@localhost test1]# mkdir locale

[root@localhost test1]# python /usr/local/lib/python2.7/dist-packages/django/bin/django-admin.py makemessages -l zh_CN

如果没有安装gettext 就在线安装下:apt-get install gettext


打开 locale/zh_CN/LC_MESSAGES/django.po 文件

#: education_portal/views.py:31

msgid "success"

msgstr "成功"


#: education_portal/views.py:32

msgid "failed"

msgstr "失败"


这个文件是一个纯文本文件,包含用于翻译的原始字符串和目标语言字符串。

# 为前缀的行起注释作用。msgid 是在源文件中出现的翻译字符串。msgstr 是相应语言的翻译结果。注意语句前后都有引号。 刚创建时 msgstr 是空字符串,需要翻译人员翻译。这个文件,用户可以手动按格式添加一些内容。


编译信息文件

创建信息文件之后,每次对其做了修改,都需要用 django-admin.py compilemessages 编译成“.mo”文件供 gettext 使用,

[root@localhost test1]# python /usr/local/lib/python2.7/dist-packages/django/bin/django-admin.py compilemessages



在openstack中需要修改的话,先在openstack_dashboars的locale目录中修改zh_CN目录下的.po文件。。可参考原有的内容修改。
随后通过find / -name django-admin.py找到这个文件夹的目录,并在openstack_dashboards中运行
上述语句

阅读(1679) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~