python的国际化gettext模块

国际化与本地化

国际化(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')
'你好世界'
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值