国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

舊文備份:Python國際化支持

2019-11-14 16:57:44
字體:
供稿:網(wǎng)友

Python通過gettext模塊支持國際化(i18n),可以實(shí)現(xiàn)程序的多語言界面的支持,下面是我的多語言支持實(shí)現(xiàn):

  1. 在python安裝目錄下的./Tools/i18n/(windows下例 D:/PRogram Files/Python25/Tools/i18n)目錄中找到pygettext.py運(yùn)行之,生成翻譯文件模版messages.pot,內(nèi)容大概是這個(gè)樣子:

# SOME DESCRipTIVE TITLE.

# Copyright (C) YEAR ORGANIZATION

# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.

#

msgid ""

msgstr ""

"Project-Id-Version: PACKAGE VERSION/n"

"POT-Creation-Date: 2007-01-24 15:05+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=CHARSET/n"

"Content-Transfer-Encoding: ENCODING/n"

"Generated-By: pygettext.py 1.5/n"

?

改之,charset=gb2312 Content-Transfer-Encoding: utf8如下:

# SOME DESCRIPTIVE TITLE.

# Copyright (C) YEAR ORGANIZATION

# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.

#

msgid ""

msgstr ""

"Project-Id-Version: PACKAGE VERSION/n"

"POT-Creation-Date: 2007-01-18 09:55+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=gb2312/n"

"Content-Transfer-Encoding: utf8/n"

"Generated-By: pygettext.py 1.5/n"

那個(gè)msgid" " 和msgstr" "不要?jiǎng)?/p>

好,翻譯文件已經(jīng)建立了,保存之,文件名改為lang.po.

  1. 建立翻譯文件路徑,在主文件目錄下建立中文翻譯路徑 ./locale/cn/LC_MESSAGES/(windows下例D:/ python-prj/src/locale/cn/LC_MESSAGES,其中src目錄是源文件主目錄),英文翻譯路徑 ./locale/en/LC_MESSAGES/(windows下例D:/ python-prj/src/locale/en/LC_MESSAGES,其中src目錄是源文件主目錄)
  2. 在主文件中引入gettext模塊:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import gettext

gettext.install('lang', './locale', unicode=False)

gettext.translation('lang', './locale', languages=['cn']).install(True)

第四行中l(wèi)ang是翻譯文件主名, ./locale是存放翻譯文件的路徑,第三個(gè)參數(shù)是是否使用unicode,第五行l(wèi)anguages參數(shù)指定要使用的語言存放的子目錄,這里cn表示使用./locale/cn/LC_MESSAGES/路徑下的翻譯文件.

注意: # -*- coding: utf-8 -*- 一定要寫在前兩行,寫第三行都不會(huì)生效

  1. 處理要翻譯的字符串,例:

print "Hello world!"

print "Python is a good Language."

改之:

print _("Hello world!")

print _("Python is a good Language.")

  1. 編寫并生成翻譯文件,打開步驟1中編輯過的lang.po文件添加翻譯文字,形成如下內(nèi)容:

# SOME DESCRIPTIVE TITLE.

# Copyright (C) YEAR ORGANIZATION

# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.

#

msgid ""

msgstr ""

"Project-Id-Version: PACKAGE VERSION/n"

"POT-Creation-Date: 2007-01-18 09:55+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=gb2312/n"

"Content-Transfer-Encoding: utf8/n"

"Generated-By: pygettext.py 1.5/n"

?

msgid " Hello world!"

msgstr "世界你好!"

?

msgid " Python is a good Language."

msgstr "Python 是門好語言."

保存之,運(yùn)行./Tools/i18n/目錄下的msgfmt.py,linux下命令為: python msgfmt.py lang.po(widows下的話,lang.po文件拷貝到./Tools/i18n/目錄下,運(yùn)行命令行窗口,到改目錄下鍵入:msgfmt.py lang.po),生成lang.mo,將該文件拷貝至./locale/cn/LC_MESSAGES/目錄下,將步驟1生成的lang.po文件直接生成lang.mo文件拷貝到./locale/en/LC_MESSAGES/目錄下,好了一切都準(zhǔn)備好了,命令行下運(yùn)行你的主文件,看看兩個(gè)print命令是不是輸出了世界你好! Python 是門好語言.,如果將主文件第五行l(wèi)anguages參數(shù)置為en,則輸出是Hello world! Python is a good Language.,因?yàn)閑n目錄下lang.mo文件未做任何的翻譯,默認(rèn)字符串不被替換.

上述實(shí)現(xiàn)的方法用在界面編程上可以實(shí)現(xiàn)中英文界面的切換,需要作個(gè)配置文件選擇中/英文;或者在主文件開始時(shí)先獲取操作系統(tǒng)本地語言然后根據(jù)獲取結(jié)果再設(shè)置中/英文,這樣就可以實(shí)現(xiàn)軟件語言自適應(yīng);如果想實(shí)現(xiàn)軟件語言在線切換,對(duì)于python來說就比較困難了,需要在軟件中加入界面刷新機(jī)制,不推薦,可以在切換中/英文設(shè)置后軟件下一次啟動(dòng)生效(軟件如Ulipad).

(2007.1.24)


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海安县| 拜城县| 汾阳市| 明溪县| 镇雄县| 东宁县| 天峻县| 莱芜市| 深泽县| 红河县| 乃东县| 酉阳| 新竹市| 公主岭市| 化德县| 深圳市| 双辽市| 久治县| 郴州市| 磐石市| 延边| 安顺市| 洪洞县| 城步| 临夏县| 修武县| 河池市| 台北县| 天峨县| 张掖市| 阿鲁科尔沁旗| 靖江市| 东海县| 洛南县| 铜梁县| 罗山县| 年辖:市辖区| 华坪县| 阳江市| 建宁县| 芦溪县|