青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 24,  comments - 62,  trackbacks - 0

應(yīng)用程序國(guó)際化,在開(kāi)源世界里常以i18n被提及,i18n是Internationalization的簡(jiǎn)寫(xiě),正好18個(gè)字母。在wxPython程序進(jìn)行i18n,如果字符串是編碼在源文件中時(shí),完全可按照python程序的i18n的方法,即使用gexttext和locale模塊。而wxPython程序在使用XRC文件做為界面資源時(shí),則應(yīng)使用wx.Locale模塊,它封裝了區(qū)域化相關(guān)的操作。i18n,或者國(guó)際化實(shí)際上涉及到語(yǔ)言習(xí)慣,數(shù)字格式等等類別的內(nèi)容。這里只介紹語(yǔ)言多國(guó)化,將一個(gè)簡(jiǎn)單的英文程序轉(zhuǎn)換為中文,涉及到源文件,可從這里下載。

創(chuàng)建PO文件

PO文件是Portable Object文件的簡(jiǎn)稱,它包含需要翻譯的字符串。我們需要從源文件進(jìn)行提取。首先,對(duì)源文件test.py編輯,標(biāo)識(shí)代碼里需要翻譯的字符串內(nèi)容。我們使用_("xx")的方法,這種形式可能在許多開(kāi)源源代碼中見(jiàn)識(shí)過(guò)。

#加載菜單欄
menubar = rc.LoadMenuBar('IDR_MENU')

這里的IDR_MENU是資源標(biāo)識(shí)ID,不需要翻譯,因此不做改變,而下面的代碼:

info.SetVersion('1.0')
info.SetDescription('XRC i18n Demo')

'XRC i18n Demo'是描述性的文本,需要進(jìn)行翻譯,將需要處理為

info.SetVersion('1.0')
info.SetDescription(_('XRC i18n Demo'))

接著需要生成.pot(Portable Object Template),這是po的模板文件。在將來(lái)程序可能配置成其他語(yǔ)種,其他語(yǔ)言的po文件都從它而來(lái)。為了創(chuàng)建這文件,需要用到GNU gettext工具集中的xgettext。向xgettext傳入些必要的信息,來(lái)創(chuàng)建.pot文件。

>xgetttext --output=test.pot test.py

我們將wxPython界面以XRC文件保存了,那里同樣有要翻譯的字符串需要提取。用XRCed工具將XRC生成python代碼,勾選上'Generate gettext strings'項(xiàng)即可。將源文件和XRC生成的test_xrc.py文件一起處理,生成一個(gè)test.pot。

>xgettext --output=test.pot test.py test_xrc.py

將得到的test.pot另存為test.po文件,然后進(jìn)行翻譯編輯,在這過(guò)程中文件需要使用utf-8編碼。將對(duì)應(yīng)的英文翻譯成中文,將charset更改為utf-8。

"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: test.py:19
msgid "XRC i18n Demo"
msgstr "XRC 國(guó)際化示例"
...

.pot和.po這些文件都是文本文件,主要供翻譯者使用。為了使程序在運(yùn)行時(shí)能獲取相關(guān)的翻譯的內(nèi)容,要進(jìn)行所謂的編譯過(guò)程,將文本文件轉(zhuǎn)換為二進(jìn)制文件.mo。這里用了gettext工具集中的另一程序msgfmt。

> msgfmt --output=test.mo test.po

因?yàn)閣indows下沒(méi)有像linux像有公共存儲(chǔ).mo文件的目錄,保持平臺(tái)的遷移性,在應(yīng)用程序本地目錄下新建locale目錄,用來(lái)存放編譯過(guò)的.mo文件,然后將test.mo移動(dòng)至locale目錄。在完成這些步驟后,就轉(zhuǎn)入代碼方面的更改了。

wxPython代碼更改

原先的代碼只需要做小改動(dòng):

def OnInit(self):
    wx.Locale.AddCatalogLookupPathPrefix('locale')
    self.locale = wx.Locale(wx.LANGUAGE_CHINESE_SIMPLIFIED)
    self.locale.AddCatalog('test')
    import __builtin__
    __builtin__.__dict__['_'] = wx.GetTranslation

首先,增加了新的目錄文件路徑,這將使wxPython搜索這個(gè)目錄,尋找匹配的.mo文件。接著創(chuàng)建wx.Locale對(duì)象,將其初始化為簡(jiǎn)體中文,這將對(duì)應(yīng)于zh_CN。最后將wx.GetTranslation做了一全局映射,這樣你在其他類中,比如示例中TestFrame也能使用_('xx')調(diào)用。這樣wxPython的i18n工作就完成了,下面是翻譯前后的界面截圖。

wxpython

一些有益的討論

.mo文件的查找目錄

如果你將locale目錄下的test.mo文件刪除掉,然后將test.py中的wx.LANGUAGE_CHINESE_SIMPLIFIED改為wx.LANGUAGE_CHINESE,重新運(yùn)行程序看看。發(fā)現(xiàn)界面變成了如下的繁體中文,但是菜單'檔案'下的Exit還是英文。

wxzh

因?yàn)槿笔?mo文件,但又指定wx.LANGUAGE_CHINESE,wxPython運(yùn)行時(shí)使用了wxstd.mo文件。wxstd.mo有許多預(yù)編譯好的常見(jiàn)字符串的對(duì)應(yīng)關(guān)系,它隨wxPython發(fā)布,在wx/locale下有許多語(yǔ)言版本的wxstd.mo。

對(duì)于wxPython會(huì)對(duì)待查目錄"DIR"來(lái)搜索.mo文件,查找它下面的這些目錄,(DIR/LANG/LC_MESSAGES;DIR/LANG;DIR),對(duì)于哪些是待查目錄,各個(gè)系統(tǒng)下又有不同,在所有的平臺(tái)上,LC_PATH環(huán)境變量指定的目錄將成為待查目錄,在Linux下/share/locale, /usr/share/locale, /usr/lib/locale, /usr/locale /share/locale以及當(dāng)前目錄將是待查目錄。在上面我們已經(jīng)用過(guò)AddCatalogLookupPathPrefix()函數(shù),其作用就是增加自己的待查目錄。

在示例程序中,將test.mo放在locale\zh_CN\LC_MESSAGES或者locale\zh\LC_MESSAGES同樣是可行的。但是如果使用wx.LANGUAGE_CHINESE指定,則zh_CN目錄將不可行,因?yàn)樗皇翘鼗夸洠负?jiǎn)體中文,而zh目錄同樣適用。

工具鏈再討論

gettext進(jìn)行國(guó)際化是開(kāi)源社區(qū)的主流方案,它也提供了許多實(shí)用工具供使用。上面提到了xgettext,msgfmt,還有msginit.exe,它將根據(jù).pot文件創(chuàng)建新的.po文件,然后初始化一些元信息,像作者信息,項(xiàng)目,以及編碼等,當(dāng)然也可像上面的手工編輯。msgmerge.exe將兩個(gè).po文件進(jìn)行合并。除了使用GNU Gettext工具集,也可使用隨python發(fā)布的tool\i18n目錄下pygettext.py和msgfmt.py,它們等同于上述的兩個(gè)工具。

對(duì)于編輯.po文件,可以嘗試一下Poedit,它提供了圖形化的編輯環(huán)境,其他功能我就不清楚了。

posted on 2008-07-15 20:21 len 閱讀(2245) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 程序開(kāi)發(fā)

<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美成人精品| 亚洲视频专区在线| 欧美成人日韩| 久久九九精品99国产精品| 亚洲欧洲av一区二区| 欧美一二三视频| 国产欧美日韩不卡| 久久国产精品高清| 久久男人资源视频| 欧美国产精品专区| 国产精品都在这里| 国产视频一区欧美| 在线观看国产日韩| 日韩一区二区精品视频| 午夜精彩视频在线观看不卡 | 欧美精品日韩综合在线| 欧美国产日韩xxxxx| 欧美视频中文字幕在线| 国产精品午夜久久| 亚洲国产精品va在线看黑人动漫 | 久久久久久久精| 欧美国产日本在线| 中文一区二区| 免费美女久久99| 国产精品午夜国产小视频| 在线观看视频欧美| 亚洲一区二区三区在线播放| 久久永久免费| 一区二区三区蜜桃网| 久久久久久夜| 国产精品免费视频xxxx| 亚洲精品美女免费| 久久久久久亚洲精品杨幂换脸| 亚洲人久久久| 亚洲免费婷婷| 欧美日韩一区二区三区在线看| 永久免费毛片在线播放不卡| 亚洲影视在线播放| 亚洲国产天堂久久综合网| 亚洲欧美视频在线| 欧美四级剧情无删版影片| 亚洲韩国一区二区三区| 久久久久久电影| 亚洲校园激情| 欧美色大人视频| 夜夜嗨av色综合久久久综合网| 狂野欧美激情性xxxx欧美| 亚洲影视中文字幕| 国产精品高潮在线| 亚洲色图制服丝袜| 亚洲日本激情| 欧美国产日韩一区二区| 永久91嫩草亚洲精品人人| 久久精品综合网| 西瓜成人精品人成网站| 国产精品婷婷| 欧美综合国产精品久久丁香| 亚洲午夜精品福利| 国产精品大片| 欧美在线3区| 午夜一区在线| 国产欧美亚洲日本| 亚洲国产第一页| 久久躁日日躁aaaaxxxx| 狠狠综合久久| 美女视频黄 久久| 久久男人av资源网站| 亚洲国产欧美日韩| 亚洲黄色精品| 欧美日韩少妇| 亚洲欧美日韩国产精品 | 久久精品视频播放| 国产伊人精品| 免费在线视频一区| 欧美成人午夜| 亚洲一区视频| 欧美一区二区三区喷汁尤物| 精品成人一区二区三区四区| 欧美黄色片免费观看| 欧美精品一区二区三区在线看午夜 | 国产精品第一区| 性欧美精品高清| 久久久久久久久久久久久9999| 伊人久久大香线蕉av超碰演员| 欧美成人福利视频| 欧美日韩国产小视频| 欧美一区二区三区四区夜夜大片| 欧美在线电影| 一本色道久久综合亚洲精品按摩 | 久久婷婷成人综合色| 亚洲最黄网站| 欧美在线观看视频一区二区| 亚洲国产精品嫩草影院| 日韩午夜在线播放| 国产一区二区三区久久| 亚洲国产精品日韩| 国产女精品视频网站免费| 欧美大片免费观看| 国产精品每日更新| 亚洲电影有码| 国产噜噜噜噜噜久久久久久久久| 女人香蕉久久**毛片精品| 欧美三级电影精品| 你懂的成人av| 国产目拍亚洲精品99久久精品| 欧美激情视频一区二区三区免费| 国产精品福利网站| 欧美激情va永久在线播放| 国产日本亚洲高清| 亚洲黄色天堂| 尤物九九久久国产精品的分类| 一区二区欧美精品| 亚洲激情在线播放| 欧美一区91| 亚洲亚洲精品三区日韩精品在线视频| 久久精品国产视频| 欧美一级二区| 欧美日韩一区二区高清| 欧美黄色影院| 亚洲国产综合视频在线观看| 国产精品自拍网站| 亚洲激情在线观看| 欧美制服丝袜第一页| 午夜精品av| 国产精品久久久久影院色老大 | 一区二区电影免费在线观看| 在线播放中文一区| 午夜日韩视频| 欧美影院午夜播放| 国产精品视频xxx| 亚洲午夜国产成人av电影男同| 99精品热视频只有精品10| 玖玖玖免费嫩草在线影院一区| 久久久久久69| 怡红院av一区二区三区| 久久精品九九| 麻豆成人综合网| 在线观看视频免费一区二区三区| 久久av一区| 另类激情亚洲| 亚洲高清资源| 欧美激情偷拍| 亚洲精选一区| 亚洲欧美国产制服动漫| 国产精品国产三级国产| 亚洲一二三四区| 久久精品一区二区| 黄色成人av在线| 久久网站热最新地址| 欧美黑人在线观看| 99精品欧美一区二区三区 | 久久人人爽国产| 欧美大片免费观看在线观看网站推荐 | 久久精品国产91精品亚洲| 久久久久天天天天| 在线观看视频日韩| 欧美精品一区二区在线观看| 99精品欧美一区| 欧美亚洲尤物久久| 在线观看91精品国产入口| 美女日韩欧美| 99re6这里只有精品| 欧美在线啊v| 亚洲人永久免费| 国产精品视频免费观看| 久久久久国色av免费观看性色| 欧美第一黄色网| 亚洲欧美另类在线| 尤物九九久久国产精品的分类| 欧美女同视频| 久久国产99| 一本久久青青| 你懂的国产精品永久在线| 亚洲香蕉伊综合在人在线视看| 国产综合香蕉五月婷在线| 欧美日韩美女一区二区| 久久精品夜色噜噜亚洲aⅴ| 亚洲久久视频| 欧美成人精品在线播放| 午夜精品久久久久久久99热浪潮| **性色生活片久久毛片| 国产精品女人网站| 玖玖玖免费嫩草在线影院一区| 亚洲视频网站在线观看| 亚洲大胆av| 久久久亚洲国产美女国产盗摄| 校园激情久久| 亚洲精品小视频在线观看| 久久久久免费| 亚洲自拍偷拍网址| 亚洲片国产一区一级在线观看| 国产欧美1区2区3区| 欧美劲爆第一页| 久久免费国产| 午夜精品美女自拍福到在线| 亚洲精品极品| 欧美成人免费网| 久久米奇亚洲| 欧美在线免费观看| 亚洲中午字幕|