python gettext使用
2015-10-04 17:31
756 查看
python中使用gettext进行语言国际化的方法
1.编辑源代码, 保存为gettextdemo.py
2.从源代码中抽取需要国际化的文本消息,并转换创建.pot文件, 可以使用的工具为pygettext.py 或者GNU工具 xgettext
这里我使用xgettext, MAC上使用homebrew 安装, 输入命令:
>brew install xgettext
即可自动完成安装, 安装后的默认目录:/usr/local/Cellar/gettext/0.19.2/,
进入/usr/local/Cellar/gettext/0.19.2/bin 可以看到有很多可执行文件 , 我们这里需要用到xgettext 和 msgfmt
回到正题, 输入以下命令生成example.pot文件
3.将example.pot复制到./local/en_US/LC_MESSAGES/example.po, 修改这个文件,替换要国际化的消息内容
如把
修改为:
4.将po文件转换成.mo 二进制文件,
这一步很关键,我在弄的时候没注意到这一步, 直接把.po文件复制成.mo文件, 导致出现以下类似的情况, 掉到坑里,半天爬不出来,汗~
参考资料:
1.<python标准库> 15.1.3
1.编辑源代码, 保存为gettextdemo.py
import gettext catalogs = gettext.find("example", localedir="locale", all=True) print 'catalogs:',catalogs t = gettext.translation('example', "locale", fallback=True) _=t.ugettext print(_("this message"))
2.从源代码中抽取需要国际化的文本消息,并转换创建.pot文件, 可以使用的工具为pygettext.py 或者GNU工具 xgettext
这里我使用xgettext, MAC上使用homebrew 安装, 输入命令:
>brew install xgettext
即可自动完成安装, 安装后的默认目录:/usr/local/Cellar/gettext/0.19.2/,
进入/usr/local/Cellar/gettext/0.19.2/bin 可以看到有很多可执行文件 , 我们这里需要用到xgettext 和 msgfmt
回到正题, 输入以下命令生成example.pot文件
xgettext -o example.pot gettextdemo.py
3.将example.pot复制到./local/en_US/LC_MESSAGES/example.po, 修改这个文件,替换要国际化的消息内容
如把
msgid "this message" msgstr "translated message"
修改为:
<pre name="code" class="html">msgid "this message" msgstr "translated message"
4.将po文件转换成.mo 二进制文件,
cd locale/en_US/LC_MESSAGES/ msgfmt -o example.mo example.po可以看到转换后生成的mo是二进制文件,而po,pot都是文本文件
这一步很关键,我在弄的时候没注意到这一步, 直接把.po文件复制成.mo文件, 导致出现以下类似的情况, 掉到坑里,半天爬不出来,汗~
File "C:\env\lib\gettext.py", line 281, in _parse raise IOError(0, 'Bad magic number', filename) IOError: [Errno 0] Bad magic number: 'advbus/locale\\ja\\LC_MESSAGES\\noname.mo'
参考资料:
1.<python标准库> 15.1.3
相关文章推荐
- 用Python学习统计学基础-6
- 机器学习算法-K最近邻从原理到实现(Python)
- 【python】python2.x 与 python3.x区别对照+缩进错误解决方法
- python正则表达式和自制爬虫
- Python爬虫的一些总结
- Python 进程管理工具 Supervisor 使用教程
- Python中os模块的使用(附一个调试例子)
- 使用Python统计垃圾文件
- 关于wxPython中的TextCtrl响应失去焦点事件后不能再次编辑或出现不正常现象的解决办法
- Python加载csv文件的两种方式
- 萌妹子Python入门指北(一)
- [python]学习笔记6-python数字
- 《机器学习实战》笔记之八——预测数值型数据:回归
- Eclipse和PyDev搭建完美Python开发环境(Windows篇)
- 说说Python程序的执行过程
- 出现No module named numpy的解决办法
- Python-__builtin__与__builtins__的区别与关系
- 用python2.7,采集新浪博客
- 利用python脚本自动下载ICML会议接受的文章
- 验证码——python去除干扰线