Python本地化例子 - gettext 模塊


 關鍵字:Python 3.4,gettext,本地化,Localization

OS:Windows 7,Mac


1. 創建一個locsample.py文件,文件內容如下,把所有需要本地化的字符串放到_()里面。
# Python Localization Sample
import os, gettext

# Support localization
_ = None
def getUserLanguage():
    return "zh-CN"

# Get loc string by language
def getLocStrings():
    currentDir = os.path.dirname(os.path.realpath(__file__))
    return gettext.translation('resource', currentDir, [getUserLanguage(), "en-US"]).gettext 

_ = getLocStrings()
print(_("Hello"))
注意: 注意‘resource’是資源文件的名字,例如:'resource.mo'。getUserLanguage() 返回需要顯示的語言,"en-US"作為備份,如果找不到對應語言的資源文件,就使用"en-US"。

 
2.pygettext.py在python安裝目錄下 \Tools\i18n 文件夾里面。 使用pygettext.py從py文件中提取所有被標記成需要本地化的字符串,也就是在_()里面的字符串。 例如:
運行“python pygettext.py -o resource.pot locsample.py”生成resource.pot。
 
3. 把resource.pot改名為resource.po,為每種語言拷貝一份resource.po,zh-CN的resource.mo內容修改如下:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2015-08-04 12:47+China Standard Time\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: 8bit\n"
"Generated-By: pygettext.py 1.5\n"


#:
msgid "Hello"
msgstr "你好"

en-US的resource.mo內容如下:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2015-08-04 12:47+China Standard Time\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: 8bit\n"
"Generated-By: pygettext.py 1.5\n"


#:
msgid "Hello"
msgstr "Hello"

 

4. 為各種語言創建gettext可讀的.mo文件,使用msgfmt.py, 例如: 
運行"python msgfmt.py -o resource.mo resource.po"生成resource.mo。mo文件是一個二進制文件。
 
5.把所有文件按照以下文件夾結構放置。

6. 運行locsample.py,輸出:
你好
 
代碼:
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM