青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(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)
相冊
公告照片
搜索
積分與排名
積分 - 662250
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11074)
2.?SVN中邪惡的replace(11000)
3.?VS2005編譯libevent(10456)
4.?混音算法的學習與研究(10258)
5.?C調用lua腳本的效率測試(9025)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
wxPython中XRC文件i18n示例
wxPython中XRC文件i18n示例
(轉載請注明來源于金慶的專欄)
簡介
XRC文件是XML格式的界面定義文件,
用于在wxWidgets/wxPython中生成界面。
i18n(Internationaliztion)是指國際化,對資源進行翻譯。
wxPython中XRC文件i18n有兩種方法,
一種是使用多個XRC文件,每個語種一個XRC,
另一種是只用一個XRC文件,各個語言使用一個mo翻譯文件。
本文是按照
“
wxPython中XRC文件對 i18N的支持
”
一文的指示,演示使用mo文件對XRC文件進行國際化翻譯。
創建XRC
用xrced創建一個text.xrc。只有一個空白窗口。
窗口標題"frame1"是待翻譯字符串。
<?xml version="1.0" encoding="utf-8"?>
<resource>
<object class="wxFrame" name="FRAME1">
<title>test frame</title>
</object>
</resource>
顯示窗口
寫一個簡單的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()
運行如下:
提取并翻譯資源
先生成一個帶資源的Python代碼frame1.py,xrced可以生成python代碼,
選中gettext支持,生成的文件包含資源中的字串符。
# 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 "測試窗口"
然后用msgfmt,將messages.po編譯成messages.mo。
> msgfmt messages.po
創建.\locale\zh_CN\LC_MESSAGES\目錄,并復制messages.mo到此。
翻譯XRC
為了裝入XRC時翻譯字符串,需要指定wx.Locale,讓Locale來翻譯界面中的資源。
并在XmlResource創建時,指定
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()
運行結果:
總結
千言萬語,不如實際做個例子。
與wxPython一樣,其它C語言編寫的第三方python模塊在i18n上并不能利用python的gettext模塊,
所以解決之道是:所有輸入都是翻譯好的,或者,該擴展模塊本身支持i18n。
http://m.shnenglu.com/Files/jinq0123/xrci18n.zip
posted on 2007-12-17 12:22
金慶
閱讀(2043)
評論(0)
編輯
收藏
引用
所屬分類:
6. Python
只有注冊用戶
登錄
后才能發表評論。
相關文章:
vs2017 linux 編譯輸出改成 vs 格式
xlsx批量轉為utf8的csv
如何運行 rpcz python example
Windows上Python讀取stdin出錯
建立Socket Policy服務器
python計算24點
(Python編程)Pickle對象
Boost.Python中文文檔下載
用Boost.Python構建混合系統
Python封裝的性能研究
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
中日韩高清电影网
|
亚洲人成在线播放
|
国产精品理论片
|
夜夜爽夜夜爽精品视频
|
亚洲高清色综合
|
欧美激情1区2区3区
|
亚洲国产精品欧美一二99
|
久久中文字幕导航
|
久久一区二区视频
|
日韩一级成人av
|
亚洲视频视频在线
|
狠狠色伊人亚洲综合网站色
|
久久国产88
|
欧美暴力喷水在线
|
久久嫩草精品久久久精品
|
亚洲愉拍自拍另类高清精品
|
欧美精品999
|
欧美一进一出视频
|
老妇喷水一区二区三区
|
99日韩精品
|
久久成人精品无人区
|
亚洲看片免费
|
欧美一级久久久
|
亚洲欧美日韩国产中文在线
|
国产情人综合久久777777
|
久久夜色精品国产亚洲aⅴ
|
欧美在线在线
|
亚洲小说春色综合另类电影
|
久久婷婷蜜乳一本欲蜜臀
|
性久久久久久
|
国产精品高清在线
|
一区二区成人精品
|
亚洲精品综合精品自拍
|
久久日韩精品
|
欧美成人嫩草网站
|
亚洲福利视频免费观看
|
久久成人免费电影
|
欧美不卡一卡二卡免费版
|
国产一区二区三区观看
|
亚洲欧美综合国产精品一区
|
一本大道久久精品懂色aⅴ
|
欧美激情精品久久久久久变态
|
久久精品视频在线看
|
国产欧美一区二区精品性
|
亚洲欧美国产精品va在线观看
|
99热免费精品在线观看
|
久久国产直播
|
久久手机免费观看
|
狠狠色丁香久久婷婷综合_中
|
欧美亚洲在线播放
|
欧美韩日高清
|
亚洲欧美日本日韩
|
国产在线不卡精品
|
亚洲国产一区视频
|
亚洲欧美日本日韩
|
麻豆精品一区二区综合av
|
精品99一区二区
|
欧美精品乱码久久久久久按摩
|
亚洲另类一区二区
|
欧美精品久久99久久在免费线
|
欧美激情影音先锋
|
久久国产88
|
一区二区三区欧美在线观看
|
国产精品丝袜白浆摸在线
|
久久九九电影
|
亚洲欧美日韩精品一区二区
|
欧美大色视频
|
久久久久久一区二区
|
亚洲综合视频在线
|
一二三区精品
|
日韩亚洲欧美精品
|
在线观看视频一区二区
|
国产日韩一区欧美
|
国产精品主播
|
国产欧美在线视频
|
99国产精品视频免费观看
|
久久综合精品国产一区二区三区
|
亚洲性视频h
|
老司机成人网
|
免费在线成人
|
欧美第十八页
|
国产精品扒开腿做爽爽爽软件
|
欧美日韩色综合
|
欧美日韩在线高清
|
欧美日韩成人综合在线一区二区
|
裸体歌舞表演一区二区
|
免费亚洲一区
|
欧美亚男人的天堂
|
国产深夜精品福利
|
亚洲国产乱码最新视频
|
亚洲毛片在线看
|
性18欧美另类
|
欧美成人一区二区三区
|
91久久在线播放
|
亚洲欧美日韩精品久久亚洲区
|
香蕉乱码成人久久天堂爱免费
|
久久九九精品
|
欧美三区美女
|
亚洲电影第1页
|
亚洲欧美国产日韩中文字幕
|
噜噜噜91成人网
|
亚洲一区二区三区精品在线观看
|
欧美中文字幕精品
|
国产精品久久久久77777
|
樱花yy私人影院亚洲
|
亚洲一区黄色
|
亚洲国产专区校园欧美
|
久久精品国产精品亚洲综合
|
欧美日韩久久久久久
|
红桃视频一区
|
久久免费视频这里只有精品
|
日韩一区二区精品葵司在线
|
欧美在线视频二区
|
国产欧美大片
|
欧美影院在线播放
|
亚洲午夜性刺激影院
|
国产精品videossex久久发布
|
9l视频自拍蝌蚪9l视频成人
|
欧美精选在线
|
亚洲第一精品福利
|
亚洲欧美精品
|
久久本道综合色狠狠五月
|
国产精品高潮呻吟久久av无限
|
99精品视频免费全部在线
|
一区二区三区 在线观看视
|
欧美人与性动交a欧美精品
|
av成人黄色
|
久久精品国产一区二区电影
|
在线电影一区
|
欧美日韩国产成人精品
|
性做久久久久久久免费看
|
美女主播一区
|
一区二区三区精品在线
|
国产精品区二区三区日本
|
久久嫩草精品久久久精品一
|
亚洲人成网站色ww在线
|
香蕉久久夜色精品
|
亚洲二区视频在线
|
国产精品视频内
|
美女久久一区
|
亚洲欧美日韩精品久久奇米色影视
|
欧美午夜不卡在线观看免费
|
亚洲与欧洲av电影
|
欧美福利影院
|
欧美一区二区三区啪啪
|
亚洲日本免费
|
黄色国产精品一区二区三区
|
欧美日韩三区
|
农村妇女精品
|
久久aⅴ国产欧美74aaa
|
亚洲欧洲另类
|
蜜桃久久av一区
|
午夜精品久久久
|
一区二区激情视频
|
亚洲国产另类久久精品
|
国产日韩精品一区二区
|
欧美精品一区二区三区久久久竹菊
|
欧美一区二区三区日韩视频
|
亚洲美女性视频
|
欧美激情按摩在线
|
久久久人人人
|
久久er精品视频
|
亚洲一区二区三区在线播放
|
亚洲国产日本
|
影院欧美亚洲
|
国产主播一区二区三区
|
国产精品视频一区二区高潮
|
欧美日韩精品一本二本三本
|
每日更新成人在线视频
|
久久精品一二三
|
午夜欧美大尺度福利影院在线看
|
99pao成人国产永久免费视频
|
欧美成人综合网站
|
免费h精品视频在线播放
|
久久久噜噜噜久久
|
久久精品99国产精品
|
亚洲欧美日韩在线一区
|
宅男精品视频
|
一区二区三区高清在线
|
亚洲精品一级
|
日韩午夜电影av
|
亚洲九九精品
|
一本久久综合亚洲鲁鲁五月天
|
欧美在线播放一区
|
先锋影音网一区二区
|
亚洲欧美成人一区二区在线电影
|
亚洲欧美激情精品一区二区
|
亚洲私拍自拍
|
亚洲欧美一区二区在线观看
|
亚洲欧美日韩国产成人
|
欧美在线日韩精品
|
久久夜色精品国产噜噜av
|
久久在线观看视频
|
欧美高清视频一二三区
|
欧美日韩成人网
|
国产麻豆精品视频
|
在线精品国精品国产尤物884a
|
亚洲激情一区二区三区
|
一区二区日韩
|
欧美在线播放一区二区
|