pyside6实现中英文切换(国际化)

之前使用pyside2,可以通过.pro文件生成.ts文件,换成pyside6以后,发现这一套不行了,用相同命令会提示“系统找不到指定路径”,换着法子问AI跟百度,都没一个方法成功的,后来在Translating Applications - Qt for Python找到了方法。

import os
import sys
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *


class UiForm(object):
    def __init__(self):
        self.translator_en = QTranslator()
        self.translator_zh = QTranslator()

    def setup_ui(self, form):
        # 略
        self.form = form
        # 略
        self.choose_ch = QCheckBox(form)
        self.choose_en = QCheckBox(form)
        # 略
        self.translator_en.load(os.path.join(base_path(), r'translations\en_US.qm'))
        self.choose_en.stateChanged.connect(self.on_language_changed)
        self.translator_zh.load(os.path.join(base_path(), r'translations\zh_CN.qm'))
        QApplication.instance().installTranslator(self.translator_zh)
        # 略

    def on_language_changed(self):
        if self.choose_en.isChecked():
            # 切换到英文
            QApplication.instance().removeTranslator(self.translator_zh)
            QApplication.instance().installTranslator(self.translator_en)
        else:
            # 切换到中文
            QApplication.instance().removeTranslator(self.translator_en)
            QApplication.instance().installTranslator(self.translator_zh)
        self.retranslate_ui(self.form)

我的ui.py大概是这样子的,默认加载中文翻译文件,通过判断英文的QCheckBox是否被选中,来决定加载哪一份翻译文件。

def select_folder(self):
	choose_folder_message = QCoreApplication.translate("MyWindow", "Choose Folder")
	folder_path = QFileDialog.getExistingDirectory(self.parent_widget, choose_folder_message)
	self.ui.txt_path.setText(folder_path)

这个函数是其他功能py文件中的一个例子,所有需要翻译的内容都加上了translate函数。

然后打开pycharm的终端界面,输入

pyside6-lupdate .\ui.py .\func_a.py .\func_b.py -ts example_de.ts

意思还是通过lupdate转换成.ts文件,不过这次是直接通过.py生成.ts,不再经过.pro文件。

中间需要翻译的.py文件我是放了多个,通过空格隔开,另外我是偷懒直接把所有需要翻译的.py文件复制到了一个文件夹内。这样子多个.py文件放一起的好处就是会把内容都生成在一份.ts文件内,不需要在代码上区分什么时候用哪份.qm文件。我执行了两次,分别生成了一份中转英、一份英转中的.ts文件。

随后在项目路径\.venv\Lib\site-packages\PySide6下,双击打开linguist.exe,依次点击左上角文件—打开,选中之前生成的.ts文件,随后进行正常的翻译,依次点击左上角文件—保存,文件—发布。即可在.ts相同路径下看到一份同名的.qm文件,最后去引用就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值