[Python] i18n
1. 將下列文字存成 lang.po
# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR [EMAIL@ADDRESS], YEAR. # msgid "" msgstr "" "Project-Id-Version PACKAGE VERSION\n" "POT-Creation-Date: 2013-06-24 14:16+台北標準時間\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME [EMAIL@ADDRESS]\n" "Language-Team: LANGUAGE [LL@li.org]\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: utf-8\n" "Generated-By: pygettext.py 1.5\n" msgid "Hello World!!" msgstr "哈囉世界!!"
charset 與 endocding 可以自訂,我都設為 utf-8,
這個檔案是由 pygettext.py 所產生的,
但你可以不用管它,
最後我會介紹功能更強大的 GNU xgettext。
2. 將 lang.po 編譯為 lang.mo:
C:\Python33\Tools\i18n\msgfmt.py –o lang.mo lang.po
然後放到 APP_DIR\locale\cn\LC_MESSAGES 目錄下,
APP_DIR就是程式的所在目錄。
3. 程式內容如下:
test.py
import gettext gettext.install('lang', './locale', unicode=True) gettext.translation('lang', './locale', languages=['cn']).install(True) print (_('Hello World!!'))
執行結果:
[ 關於 GNU xgettext ]
它可以 parse 多種程式語言原始碼,
(pygettext 只能 parse Python 原始碼)
找出所有字串,產生 .po 檔,
用法如下:
xgettext --language=Python --keyword=_ --output=test.po test.py
Windows要另外下載 xgettext.exe for win32:
裡面也有 msgfmt.exe (如果你不想用 Python 附的 msgfmt.py 的話也可以用這個)
參考: