金慶的專欄
C++博客
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評(píng)論 :: 0 Trackbacks
公告
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開(kāi)發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊(cè)
公告照片
搜索
積分與排名
積分 - 656586
排名 - 25
最新評(píng)論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫(kù)
asio 成為C++首選網(wǎng)絡(luò)庫(kù)
--linda
2.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個(gè)mingw編譯好的OrzNet庫(kù)給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯(cuò)誤(11032)
2.?SVN中邪惡的replace(10955)
3.?VS2005編譯libevent(10413)
4.?混音算法的學(xué)習(xí)與研究(10203)
5.?C調(diào)用lua腳本的效率測(cè)試(9007)
評(píng)論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯(cuò)誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
wxPython中XRC文件i18n示例
wxPython中XRC文件i18n示例
(轉(zhuǎn)載請(qǐng)注明來(lái)源于金慶的專欄)
簡(jiǎn)介
XRC文件是XML格式的界面定義文件,
用于在wxWidgets/wxPython中生成界面。
i18n(Internationaliztion)是指國(guó)際化,對(duì)資源進(jìn)行翻譯。
wxPython中XRC文件i18n有兩種方法,
一種是使用多個(gè)XRC文件,每個(gè)語(yǔ)種一個(gè)XRC,
另一種是只用一個(gè)XRC文件,各個(gè)語(yǔ)言使用一個(gè)mo翻譯文件。
本文是按照
“
wxPython中XRC文件對(duì) i18N的支持
”
一文的指示,演示使用mo文件對(duì)XRC文件進(jìn)行國(guó)際化翻譯。
創(chuàng)建XRC
用xrced創(chuàng)建一個(gè)text.xrc。只有一個(gè)空白窗口。
窗口標(biāo)題"frame1"是待翻譯字符串。
<?xml version="1.0" encoding="utf-8"?>
<resource>
<object class="wxFrame" name="FRAME1">
<title>test frame</title>
</object>
</resource>
顯示窗口
寫(xiě)一個(gè)簡(jiǎn)單的python程序test.py,裝入該窗口并顯示。
import wx
import wx.xrc as xrc
class MyApp(wx.App):
def OnInit(self):
self.res = xrc.XmlResource(r"./test.xrc")
self.frame_1 = self.res.LoadFrame(None, "FRAME1")
self.frame_1.Show()
return 1
# End of OnInit().
# End of class MyApp.
if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()
運(yùn)行如下:
提取并翻譯資源
先生成一個(gè)帶資源的Python代碼frame1.py,xrced可以生成python代碼,
選中g(shù)ettext支持,生成的文件包含資源中的字串符。
# This file was automatically generated by pywxrc, do not edit by hand.
# -*- coding: UTF-8 -*-
import wx
import wx.xrc as xrc
__res = None
def get_resources():
""" This function provides access to the XML resources in this module."""
global __res
if __res == None:
__init_resources()
return __res
class xrcFRAME1(wx.Frame):
def PreCreate(self, pre):
""" This function is called during the class's initialization.
Override it for custom setup before the window is created usually to
set additional window styles using SetWindowStyle() and SetExtraStyle()."""
pass
def __init__(self, parent):
# Two stage creation (see http://wiki.wxpython.org/index.cgi/TwoStageCreation)
pre = wx.PreFrame()
self.PreCreate(pre)
get_resources().LoadOnFrame(pre, parent, "FRAME1")
self.PostCreate(pre)
# create attributes for the named items in this container
# ------------------------ Resource data ----------------------
def __init_resources():
global __res
__res = xrc.EmptyXmlResource()
__res.Load('test.xrc')
# ----------------------- Gettext strings ---------------------
def __gettext_strings():
# This is a dummy function that lists all the strings that are used in
# the XRC file in the _("a string") format to be recognized by GNU
# gettext utilities (specificaly the xgettext utility) and the
# mki18n.py script. For more information see:
# http://wiki.wxpython.org/index.cgi/Internationalization
def _(str): pass
_("test frame")
該生成的程序只是為了作為xgettext的輸入,
> xgettext frame1.py
輸出message.po。
編輯該po文件,指定charset并翻譯"test frame",如下:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2007-12-17 10:58+0800\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: 8bit\n"
#: frame1.py:55
msgid "test frame"
msgstr "測(cè)試窗口"
然后用msgfmt,將messages.po編譯成messages.mo。
> msgfmt messages.po
創(chuàng)建.\locale\zh_CN\LC_MESSAGES\目錄,并復(fù)制messages.mo到此。
翻譯XRC
為了裝入XRC時(shí)翻譯字符串,需要指定wx.Locale,讓Locale來(lái)翻譯界面中的資源。
并在XmlResource創(chuàng)建時(shí),指定
flags=XRC_USE_LOCALE
domain="messages"
其中flags缺省值如此,而domain必須顯示指定。
test.py更改如下:
import wx
import wx.xrc as xrc
L = wx.Locale()
class MyApp(wx.App):
def OnInit(self):
L.Init(wx.LANGUAGE_CHINESE_SIMPLIFIED)
L.AddCatalogLookupPathPrefix(r'./locale')
L.AddCatalog('messages')
self.res = xrc.XmlResource(r"./test.xrc", domain = "messages")
self.frame_1 = self.res.LoadFrame(None, "FRAME1")
self.frame_1.Show()
return 1
# End of OnInit().
# End of class MyApp.
if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()
運(yùn)行結(jié)果:
總結(jié)
千言萬(wàn)語(yǔ),不如實(shí)際做個(gè)例子。
與wxPython一樣,其它C語(yǔ)言編寫(xiě)的第三方python模塊在i18n上并不能利用python的gettext模塊,
所以解決之道是:所有輸入都是翻譯好的,或者,該擴(kuò)展模塊本身支持i18n。
http://www.shnenglu.com/Files/jinq0123/xrci18n.zip
posted on 2007-12-17 12:22
金慶
閱讀(2018)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
6. Python
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
vs2017 linux 編譯輸出改成 vs 格式
xlsx批量轉(zhuǎn)為utf8的csv
如何運(yùn)行 rpcz python example
Windows上Python讀取stdin出錯(cuò)
建立Socket Policy服務(wù)器
python計(jì)算24點(diǎn)
(Python編程)Pickle對(duì)象
Boost.Python中文文檔下載
用Boost.Python構(gòu)建混合系統(tǒng)
Python封裝的性能研究
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
久久精品中文闷骚内射
|
大香网伊人久久综合网2020
|
久久精品亚洲精品国产欧美
|
久久午夜无码鲁丝片午夜精品
|
久久影院久久香蕉国产线看观看
|
亚洲伊人久久综合影院
|
亚洲香蕉网久久综合影视
|
久久精品九九亚洲精品天堂
|
久久久精品国产亚洲成人满18免费网站
|
国产高清国内精品福利99久久
|
国产精品亚洲综合专区片高清久久久
|
亚洲?V乱码久久精品蜜桃
|
亚洲精品乱码久久久久久蜜桃图片
|
国产91久久精品一区二区
|
色综合久久久久无码专区
|
久久久久国产精品
|
日韩精品久久久久久免费
|
久久久精品日本一区二区三区
|
久久夜色精品国产噜噜亚洲AV
|
久久99精品久久久久久9蜜桃
|
久久精品国产亚洲AV香蕉
|
久久久久亚洲av综合波多野结衣
|
99久久综合国产精品二区
|
久久亚洲中文字幕精品有坂深雪
|
久久无码人妻精品一区二区三区
|
AV狠狠色丁香婷婷综合久久
|
97久久国产综合精品女不卡
|
久久国产成人亚洲精品影院
|
久久99精品国产99久久6男男
|
成人久久免费网站
|
久久久SS麻豆欧美国产日韩
|
污污内射久久一区二区欧美日韩
|
久久久久夜夜夜精品国产
|
国产亚洲色婷婷久久99精品
|
久久久国产打桩机
|
亚洲中文久久精品无码
|
99久久无色码中文字幕人妻
|
久久这里有精品
|
国产69精品久久久久9999APGF
|
欧美与黑人午夜性猛交久久久
|
久久综合久久伊人
|