python gettext_python gettext使用

你写了一个Python 3程序,还想要它适用于其他语言。你能复制全部代码库,然后刻意地检查每个.py文件,替换掉所有找到的文本字符串。但这意味着你有两份你代码的独立副本,每当你要做出个改动或修复个bug,你的工作量会加倍。而且如果你想要程序还适用于其他语言,就更糟了。

幸运的是,Python给了一个解决办法,就是用gettext模块。

一个Hack解法

你应该把你自己的解决办法统一改变。例如,你可以把你程序中的每个字符串替换为一个函数调用(函数名简单些,比如像_()一样),这会返回被翻译为该正确语言的字符串。举个例子,如果你的程序原本是:

……你可以将它改为:

……函数_()会返回'Hello world!'的翻译,它基于程序设置有的语言。比如,如果这个语言设置之前被存在一个叫LANGUAGE的全局变量中,函数_()看起来像这样:

这可以,但是你这是在重复造轮子。Python的gettext模块可以做更多。gettext是一系列工具,文件格式在20世纪90年代被发明出来,来规范软件国际化(也叫I18N)。gettext是个作为对于所有编程语言的系统化的设计,但是我们会在本篇文章中只专注于Python。

程序例子

设想你有个想要翻译的用Python3写的简单“猜数字”游戏。程序的源代码在这里。有四步来使这个程序国际化:

调整这个.py文件的源代码,这样使字符串输入进一个名为_()的函数。

用和Python一起安装的pygettext.py文本,从源代码创建一个”pot”文件。

用这个免费的跨平台Poedit软件,从pot文件创建.p

你可能感兴趣的:(python,gettext)