wxPython中XRC文件对 i18N的支持
2007-07-24 10:17
253 查看
有关XRC I18N的第一个中文文档。
转自[python-chinese]
星期一 七月 23 13:04:46 HKT 2007
但是wxPython提供了另外一种生成面界的方法,即使用XRC资源文件定义界面,在程序中只要加载相应的界面对象。通过这种方式生成界面时在 python代码中看不见界面元素的字串常量,这些字符串都保存在.xrc的资源文件中,无法用xgettext直接进行处理。
wxPython的XRC支持包括了对i18N的支持。函数XmlResource有一个默认参数flags=XRC_USE_LOCALE,这样 在加载XRC资源时会根据当前locale判断是否存在语言包,从语言包中将相应字串的翻译显示出来。wxPython本身库函数中的文字内容则存放在 wxstd.mo中。
这样对于xrc使用i18N的前提一是正确设置wxPython的locale,二是从xrc文件中抽取需要翻译的字符串,生成.mo文件。具体的 步骤如下:
从xrc文件中生成.po文件用于翻译。有两种方法,一是使用wxrc -g将xrc文件中可翻译的字符串转换成_(str)的格式,然后用xgettext像对其他程序一样进行.po文件的抽取。wxrc工具在Debian 中位于wx2.5-common包内。另一种方式是将xrc文件导入到wxGlade这样的工具中,通过wxGlade转换成C++或python代码, 然后使用xgettext进行字串抽取。翻译完的.mo文件必须放在[lang]/LC_MESSAGES目录下。
初始化locale,指定语言以及在何处可以找到相应的.mo文件。通常情况下系统首先在当前目录中查找catalog,然后在系统目录中搜 索。但保险起见用AddCatalogLookupPathPrefix比较可靠。
注意: 在wxPython 2.7以后的版本中,必须先生成wx.App对象后才能调用wx.Locale对象的Init方法。因此对上述代码需略微修改,将L=wx.Locale ()放在生成wx.App前,而在wx.App对象的OnInit代码中调用L.Init等代码。这样可以保证在OnInit结束后L对象依旧作为全局变 量存在。
之后可以使用XmlResource生成相应的对象。也可以使用Locale.GetString(string)函数返回对应Locale 的翻 译字符。该函数的功能类似于_(),但如果在同一界面中需要显示同一字串的不同语言译文时只要调用不同Locale的GetString函数即可。
转自[python-chinese]
[python-chinese] 用XRC生成wxPython的界面,如何实现I18N呢?
Hong Yuan hongyuan在homemaster.cn星期一 七月 23 13:04:46 HKT 2007
马踏飞燕 写道: > 我用wxPython自带的XRCed生成了一个界面,然后用代码调用之后可以显示出界面了. > 但是,现在的问题是,我虽然用XRCed提供的生成gettext的功能而得到了一个写有 > _('File') 这样的代码,但是我用poEdit翻译之后并且install了,只有在程序代码中直接创建控件的地方写的_('some > text')才有翻译的效果,从xrc生成的还是英文的. > > 有什么办法吗?
wxPython中XRC文件对 i18N的支持
上面的方法是对于所有python程序的通用方法。对于wxPython的程序,如果所有的界面元素都使用代码来生成,即界面中的文字都出现在界面 代码中,则可以完全使用相同的方法来实现i18N。但是wxPython提供了另外一种生成面界的方法,即使用XRC资源文件定义界面,在程序中只要加载相应的界面对象。通过这种方式生成界面时在 python代码中看不见界面元素的字串常量,这些字符串都保存在.xrc的资源文件中,无法用xgettext直接进行处理。
wxPython的XRC支持包括了对i18N的支持。函数XmlResource有一个默认参数flags=XRC_USE_LOCALE,这样 在加载XRC资源时会根据当前locale判断是否存在语言包,从语言包中将相应字串的翻译显示出来。wxPython本身库函数中的文字内容则存放在 wxstd.mo中。
这样对于xrc使用i18N的前提一是正确设置wxPython的locale,二是从xrc文件中抽取需要翻译的字符串,生成.mo文件。具体的 步骤如下:
从xrc文件中生成.po文件用于翻译。有两种方法,一是使用wxrc -g将xrc文件中可翻译的字符串转换成_(str)的格式,然后用xgettext像对其他程序一样进行.po文件的抽取。wxrc工具在Debian 中位于wx2.5-common包内。另一种方式是将xrc文件导入到wxGlade这样的工具中,通过wxGlade转换成C++或python代码, 然后使用xgettext进行字串抽取。翻译完的.mo文件必须放在[lang]/LC_MESSAGES目录下。
初始化locale,指定语言以及在何处可以找到相应的.mo文件。通常情况下系统首先在当前目录中查找catalog,然后在系统目录中搜 索。但保险起见用AddCatalogLookupPathPrefix比较可靠。
L = wx.Locale() L.Init(wx.LANGUAGE_CHINESE_SIMPLIFIED) L.AddCatalogLookupPathPrefix('./locale') L.AddCatalog('messages')
注意: 在wxPython 2.7以后的版本中,必须先生成wx.App对象后才能调用wx.Locale对象的Init方法。因此对上述代码需略微修改,将L=wx.Locale ()放在生成wx.App前,而在wx.App对象的OnInit代码中调用L.Init等代码。这样可以保证在OnInit结束后L对象依旧作为全局变 量存在。
之后可以使用XmlResource生成相应的对象。也可以使用Locale.GetString(string)函数返回对应Locale 的翻 译字符。该函数的功能类似于_(),但如果在同一界面中需要显示同一字串的不同语言译文时只要调用不同Locale的GetString函数即可。
相关文章推荐
- wxPython中XRC文件对 i18N的支持
- wxPython中XRC文件对 i18N的支持
- wxPython中XRC文件i18n示例
- wxPython中XRC文件i18n示例
- I18n(国际化)原理(国际化资源文件2种实现支持中文的方法,propedit5.3.3插件在MyEclipse和Eclipse中安装)
- Web.py Cookbook 简体中文版 - 模板文件中的i18n支持
- 【Cocos2d-x】支持 i18n 国际化(2)——i18n XML 解析生成头文件
- 让服务器apache/iis/nginx支持.apk/ipa文件下载
- swfupload多文件上传(支持多Ctrl和Shift多选)
- 将指定文件夹下结构相同的EXCEL文件(支持2003和2007版本)批量导入到SQL数据库中指定的表
- 老李秘技:LoadRunner支持参数文件极限是多大
- 配置iis支持.json格式的文件
- Linux2.6.32移植到MINI2440(3)支持yaffs2文件系统
- 修改TomCat文件实现同时支持http协议与https协议
- XCODE中为单独的文件设置不支持ARC的方法
- 如何是Android中的webView支持页面中的文件上传?
- android 默认浏览器 无法下载,此手机不支持此内容(自定义文件or APK文件看过了)
- PHPSTORM支持dwt文件设置方法
- Win10预览版9860:已内置MKV格式文件的视频支持
- delphi 文件拖拽获取路径(一)支持单文件(笔记)