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

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>
            亚洲美女av网站| 亚洲在线观看视频| 免费欧美日韩| 久久久久一区二区| 久久一区激情| 欧美日韩喷水| 欧美激情视频网站| 亚洲网友自拍| 欧美电影电视剧在线观看| 久久久久中文| 美日韩免费视频| 欧美极品一区二区三区| 欧美日韩a区| 国产美女精品一区二区三区| 国产精品自拍视频| 国产一区欧美| 亚洲国产欧美久久| 亚洲少妇最新在线视频| 亚洲——在线| 麻豆乱码国产一区二区三区| 蘑菇福利视频一区播放| 欧美aa在线视频| 一区二区日韩精品| 欧美在线视频一区二区| 欧美一区二区三区在线| 欧美成人在线免费观看| 欧美三级韩国三级日本三斤| 国产欧美日韩高清| 亚洲精品中文字幕女同| 性高湖久久久久久久久| 欧美电影资源| 欧美一级淫片aaaaaaa视频| 欧美ed2k| 国语自产精品视频在线看一大j8| 99精品视频免费观看视频| 久久免费高清视频| 日韩西西人体444www| 久久久久看片| 国产女主播一区| 这里只有精品视频在线| 男女激情视频一区| 亚洲欧美日韩中文播放| 母乳一区在线观看| 亚洲摸下面视频| 欧美日韩成人在线观看| 红桃视频国产一区| 亚洲欧美日韩综合一区| 亚洲人成网站999久久久综合| 亚洲图片自拍偷拍| 欧美日韩精品一本二本三本| 亚洲激情网站免费观看| 久久精品视频亚洲| 亚洲永久网站| 欧美三级视频在线| 日韩一级成人av| 欧美国产一区二区| 久久久久久免费| 国产一区二区三区四区在线观看| 亚洲一区二区三区精品视频| 日韩小视频在线观看| 欧美精品精品一区| 亚洲国产精品第一区二区| 久久综合一区二区| 久久久www| 久久综合中文| 久久久久欧美精品| 国外成人性视频| 免费久久精品视频| 久久亚洲国产精品日日av夜夜| 狠狠色狠色综合曰曰| 久久精品一区二区三区不卡| 亚洲欧美日韩国产一区| 国产欧美日韩亚洲精品| 久久国产精品99精品国产| 亚洲一级一区| 国产亚洲精品高潮| 久久视频一区| 免费亚洲电影| 一区二区不卡在线视频 午夜欧美不卡在 | 国产午夜精品一区理论片飘花| 午夜精品三级视频福利| 亚洲欧美国产毛片在线| 国产午夜精品美女视频明星a级| 久久精品综合一区| 午夜精品久久久久| 欧美在线在线| 亚洲经典在线看| 亚洲精品中文字幕女同| 国产精品亚洲网站| 美女尤物久久精品| 欧美粗暴jizz性欧美20| 亚洲欧美视频一区二区三区| 欧美一区二区三区在线播放| 在线看片第一页欧美| 亚洲国语精品自产拍在线观看| 欧美巨乳在线| 久久成人资源| 欧美第一黄网免费网站| 午夜精品99久久免费| 久久精品亚洲一区二区| 亚洲国产精品t66y| 宅男噜噜噜66一区二区| 国产日韩在线一区二区三区| 老司机免费视频一区二区| 久久激情视频久久| 日韩视频在线观看一区二区| 在线综合亚洲欧美在线视频| 韩国精品一区二区三区| 亚洲精一区二区三区| 国产亚洲欧美日韩一区二区| 欧美成人午夜剧场免费观看| 国产精品你懂的在线| 欧美大片91| 国产精品你懂的在线欣赏| 欧美韩国一区| 国产日韩在线亚洲字幕中文| 亚洲日本无吗高清不卡| 国产精品无人区| 91久久精品国产91久久| 国产一区二区三区在线观看精品| 欧美v国产在线一区二区三区| 亚洲国产另类久久久精品极度| 亚洲影音一区| 加勒比av一区二区| 欧美激情中文字幕在线| 国产精品自在线| 一道本一区二区| 亚洲精品在线二区| 久久免费视频在线观看| 小黄鸭精品aⅴ导航网站入口| 欧美成人亚洲成人| 亚洲深夜福利| 久久国产成人| 欧美在线你懂的| 欧美性一二三区| 日韩一级在线观看| 99视频精品| 欧美人与性动交a欧美精品| 久久久精品tv| 国产目拍亚洲精品99久久精品| 艳女tv在线观看国产一区| 亚洲国产美女| 欧美成人一区二区三区| 亚洲第一天堂av| 日韩视频专区| 欧美日韩另类丝袜其他| 亚洲精品永久免费精品| 一本久久综合亚洲鲁鲁五月天| 男男成人高潮片免费网站| 免费成人高清| 亚洲高清一二三区| 另类人畜视频在线| 欧美电影电视剧在线观看| 亚洲国内精品在线| 欧美日产一区二区三区在线观看| 亚洲激情黄色| 亚洲网站在线| 国产精品久久久久久一区二区三区| 99国产麻豆精品| 性色av一区二区三区红粉影视| 国产日韩精品一区| 久久蜜臀精品av| 亚洲风情在线资源站| 日韩视频在线免费| 欧美日韩色婷婷| 亚洲一区二区三区免费观看 | 欧美一区国产二区| 国产日韩精品在线| 久久免费一区| 亚洲精品1234| 午夜精品久久久久久99热| 狠狠色丁香婷婷综合| 欧美国产日本| 亚洲一区在线观看视频 | 欧美国产激情二区三区| 一区二区三区欧美视频| 国产综合色产在线精品| 每日更新成人在线视频| 日韩午夜在线电影| 欧美77777| 亚洲一区二区毛片| 亚洲国产高清视频| 国产精品试看| 欧美精品九九| 久久免费精品视频| 欧美视频在线看| 美女网站在线免费欧美精品| 亚洲先锋成人| 亚洲精品国产日韩| 国内自拍一区| 国产精品私人影院| 欧美精品在线看| 亚洲永久免费| 9久草视频在线视频精品| 久久亚洲视频| 欧美一区二区三区啪啪| 艳女tv在线观看国产一区| 国产一区二区黄色| 国产农村妇女毛片精品久久麻豆 | 亚洲欧美视频|