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')
'你好世界'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章