Python通過gettext模組支援國際化(i18n),可以實現程式的多語言介面的支援
方法/步驟
進入Python的安裝目錄中Tools\i18n目錄
執行pygettext.py
生成一個messages.pot
修改messages.pot中編碼
CHARSET gb2312
ENCODING utf8
編輯messages.pot
新增需要國際化的內容,另存為*.po檔案
我這裡存成了lang.po
編譯lang.po
執行msgfmt.py lang.po
生成lang.mo
在專案中建立目錄
\locale\zh_CN\LC_MESSAGES
\locale\en_US\LC_MESSAGES
LC_MESSAGES這個是必須的
同時將剛剛的lang.po、lang.mo放入到zh_CN\LC_MESSAGES\這個目錄下。
也可以生成一個英文的對應檔案放入到en_US\LC_MESSAGES\目錄下
測試下效果,輸出用_(str)代替str。成功輸出中文
將zh_CN換成en_US如果沒有配置預設直接輸出原內容,如Hello YY
完整的test.py
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import gettext
gettext.install('lang', 'F:\Workspaces\server\MobileApiServer\project\locale', unicode=False)
gettext.translation('lang', 'F:\Workspaces\server\MobileApiServer\project\locale', languages=['zh_CN']).install(True)
print _('Hello YY')
專案直接使用,服務啟動的時候載入所有的mo檔案。
在請求的過濾入口處設定本次請求的語言,後面程式碼中就可以直接使用啦