多语言翻译qt自带语言包有些没有翻译过来的问题

1、将Qt自带的一些窗口和弹出菜单翻译成中文:如颜色窗口、鼠标右键QLineText、QMessageBox、QTextEdit等实现原理

1.1、加载qt语言翻译文件包qt_zh_CN.qm

在Qt的安装目录C:\Qt\Qt5.7.0VS2015\5.7\msvc2015\translations中有名为qt_zh_CN.qm翻译文件,QLineEdit等通过加载该翻译文件就能实现右键中文菜单,如下所示:

QApplication a(argc, argv);
 
//加载Qt中的资源文件,使Qt显示中文(包括QMessageBox、QLineEdit右键菜单等)
 

QTranslator translator;
translator.load(":/translations/qt_zh_CN.qm");
a.installTranslator(&translator);

1.2、对QTextEdit等无效,问题的原因在于

QTextEdit中使用的对象QWidgetTextControl中的复制、粘贴等右键菜单选项在qt_zh_CN.qm中没有被翻译。
解决方法:

1.找到C:\Qt\Qt5.7.0VS2015\5.7\Src\qtbase\src\widgets目录(你的Qt安装目录,如我的E:\Qt\5.12.2\Src\qtbase\src\widgets),用Qt Creator打开里面的widgets.pro文件,添加一行:

//TRANSLATIONS += widgets.ts; //(注意:网上提供的答案:这行在我的Qt版本下无效,我的Qt版本Qt5.12.2)

需要添加这行:

TRANSLATIONS = widgets.ts


2.然后在Qt Creator的系统菜单中,选择:工具->外部->Qt语言家->更新翻译,就会在widgets.pro所在目录下生成一个widgets.ts文件;

3.用Qt Linguist打开widgets.ts,翻译所有需要汉化的Qt控件,然后选择:文件->发布,就会在widgets.ts所在目录生产一个widgets.qm文件,然后用上面的方式应用到项目中即可。

注意:网上说只翻译QWidgetTextControl窗口时错的。得将所有界面全部汉化处理。

网上github:qt_zh_CN.ts/qt_zh_CN.ts at master · niemingzhao/qt_zh_CN.ts · GitHub


 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt实现国际化和多语言切换需要以下步骤: 1. 在Qt项目创建一个“ts”文件,用于存储翻译后的资源。可以使用Qt自带的工具“Qt Linguist”来创建和编辑这些文件。 2. 在Qt项目使用Qt翻译API来翻译界面元素。例如,使用tr()函数来标记需要翻译的字符串。 3. 使用lupdate工具来生成一个“.ts”文件,其包含需要翻译的所有字符串。 4. 使用Qt Linguist编辑器来翻译这些字符串,并将它们保存到“.ts”文件。 5. 使用lrelease工具来生成一个二进制的翻译文件“qm”文件,其包含翻译后的资源。 6. 在Qt项目加载这些翻译文件,并在运行时切换语言。 下面是一个简单的示例代码,演示如何在Qt实现多语言切换: ```cpp #include <QApplication> #include <QTranslator> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 加载翻译文件 QTranslator translator; translator.load("myapp_zh.qm"); app.installTranslator(&translator); // 设置界面元素的翻译 QLabel label(tr("Hello World!")); label.show(); return app.exec(); } ``` 在上面的例子,我们使用了QTranslator类来加载翻译文件,并使用installTranslator()函数将其安装到应用程序。我们还使用了tr()函数来标记需要翻译的字符串。 当应用程序启动时,它将自动加载当前系统语言对应的翻译文件。如果用户切换了语言,我们只需要重新加载对应的翻译文件即可。 希望这可以帮助你实现Qt的国际化和多语言切换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值