国际化与本地化
国际化(internationalization).简称i18n
(18指在”internationalization”这个单词中,i和n之间有18个字母).
本地化(localization).简称L10n
(10指在”localization”这个单词中,l和n之间有10个字母).
本地化
是指使一个国际化
的软件为了在某个特定地区使用而进行实际翻译的过程。
国际化的软件具备这样一种能力,当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正。
gettext
gettext 是一套 GNU下的国际化工具。主要有工具:
- xgettext: 从源码中抽取字符串,生成po文件(portable object)
- msgfmt: 将po文件编译成mo文件(machine object)
- gettext: 进行翻译
如果找不到gettext命令,或者找不到msgfmt命令。请重新安装一遍gettext套件。
ubuntu系统:
sudo apt-get install gettext
python中gettext模块的使用
我们看python中的gettext模块是怎么用的
建目录
$ mkdir -p locale/zh_CN/LC_MESSAGES
创建hello.po文件
msgid "hello world"
msgstr "你好世界"
po文件->mo文件
$ msgfmt locale/zh_CN/LC_MESSAGES/hello.po -o locale/zh_CN/LC_MESSAGES/hello.mo
在ipython中调试
# 只要有mo文件,就能翻译
# 路径如locale/zh_CN/LC_MESSAGES/hello.mo
# 在跟locale目录同一级别的地方运行ipython
>> import gettext
>> zh = gettext.translation("hello", "locale", languages=["zh_CN"])
>> zh.install()
>> _('hello world')
'你好世界'