pyqt5多语言实现

最近在总结pyqt5相关的一些知识,现在针对pyqt5实现多语言,这边出一个简略的教程,以我项目中的一个视频播放的组件为例,给大家简述以下他的实现流程。

第一步:我们在QT Designer中的视图中把我们的文本设置为为一个变量,我这里的变量是please_click_left,如下图所示:

第二步:在项目中通过pyui,把我们的.ui文件转换为.py文件,使得可在python的环境下使用,如下图所示:

第三步:新建一个源列表清单文件,我这里命名是transSources.txt (需要做多语言的python文件列表),通过pylupdate5.exe,转化你需要的ts文件,如下图所示:

第四步:用一个工具打开ts文件进行配置语言,这是pyqt5中内置的工具linguist.exe,可以添加为一个扩展工具,操作如下图所示:

在external tools里面去添加一个扩张工具,名字可以任意取,我这里叫linguist吧,然后在你的虚拟环境中找到venv\Lib\site-packages\qt5_applications\Qt\bin\linguist.exe,然后配置:

然后,你在文件下面,鼠标点击右键就会出现这个扩展工具,然后点击打开linguist工具

多选打开两个ts文件,两个文件设置需要转换成的语言,我这里选了中文和英文:

我项目中有很多模块,我这里案例是说video组件的,我就和你们说video,这里组件名字个视图中的命名是对应的,如下图所示:

第五步 翻译

这时我们与需要点击翻译确认就是把相应?号打勾,表示确认,然后点击file>release all转换我为.qm文件可在python环境下使用:

第五步 在客户端应用语言,框出来为主要代码:

第六步 在代码上应用语言,主要代码:

### PyQt5 中 `retranslateUi` 方法实现多语言界面切换 在开发跨平台应用程序时,提供多种语言的支持是一项重要功能。PyQt5 提供了强大的国际化(i18n)工具来帮助开发者轻松实现这一目标。 #### 使用 Qt Linguist 工具链处理翻译文件 为了支持多语言,在项目中通常会创建 `.ts` 文件用于存储不同语言的字符串映射关系。通过调用 lupdate 命令可以扫描源码中的待翻译文本并更新到对应的 .ts 文件里[^1]。 #### 动态加载翻译器 QTranslator 为了让程序能够动态响应用户的语言设置变化,可以在主窗口初始化阶段实例化 `QTranslator` 对象,并将其安装至 QApplication 或者特定 widget 上: ```python translator = QtCore.QTranslator() if translator.load(f"translations/{language}.qm"): app.installTranslator(translator) ``` 这里假设已经编译好了对应的目标语言 qm 文件存放在 translations 目录下[^2]。 #### 修改 `retranslateUi` 函数以适应多语言环境 当定义 UI 组件的文字属性时,应该总是使用 `_translate()` 辅助函数而不是硬编码字符串常量。这使得后续可以通过修改 ts/qm 文件方便地调整显示文字而不必改动 Python 逻辑代码: ```python self.label.setText(_translate("MainWindow", "Welcome")) self.pushButton.setText(_translate("MainWindow", "Click Me!")) ``` 每当需要刷新当前界面上所有控件的语言版本时(比如用户改变了偏好),只需重新执行一次 `retranslateUi(self)` 即可完成整个窗体范围内的即时生效。 对于菜单项同样适用此原则,如下所示为两个 QAction 设置不同的初始文本描述: ```python self.action_1.setText(_translate("MainWindow", "Page One")) self.action_2.setText(_translate("MainWindow", "Second Page")) ``` 这样做的好处在于即使后期增加新的语种也只需要维护好相应的翻译资源而无需频繁更改业务层代码结构。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值