wxPython中XRC文件对 i18N的支持

2024-02-09 22:58
文章标签 支持 wxpython i18n xrc

本文主要是介绍wxPython中XRC文件对 i18N的支持,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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文件。具体的 步骤如下:

  1. 从xrc 文件中生成.po文件用于翻译。有两种方法,一是使用wxrc -g将xrc文件中可翻译的字符串转换成_(str)的格式,然后用xgettext像对其他程序一样进行.po文件的抽取。wxrc工具在Debian 中位于wx2.5-common包内。另一种方式是将xrc文件导入到wxGlade这样的工具中,通过wxGlade转换成C++或python代码, 然后使用xgettext进行字串抽取。翻译完的.mo文件必须放在[lang]/LC_MESSAGES目录下。
  2. 初始化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对象依旧作为全局变量存在。

  1. 之后可以使用XmlResource生成相 应的对象。也可以使用Locale.GetString(string)函数返回对应Locale 的翻 译字符。该函数的功能类似于_(),但如果在同一界面中需要显示同一字串的不同语言译文时只要调用不同Locale的GetString函数即可。 

这篇关于wxPython中XRC文件对 i18N的支持的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695526

相关文章

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

QtC++截图支持窗口获取

介绍 在截图工具中你会发现,接触到窗口后会自动圈出目标窗口,个别强大一点的还能进行元素识别可以自动圈出元素,那么今天简单分析一下QTc++如何获取窗口并圈出当前鼠标下的窗口。 介绍1.如何获取所有窗口2.比较函数3.实现窗口判断 结尾 1.如何获取所有窗口 1.我们需要调用windows接口EnumWindowsProc回调函数来获取所有顶级窗口,需要包含windows.