【Qt一骚操作】Qt语言家 Qt Linguist 使用 【总结】

Qt语言家 Qt Linguist


1)简介

​ 源代码中经常会出现一些字符串,比如定义要显示在控件上的文本,在不同的语言环境下,可能会需要显示不同语言对应的文本。针对多语言切换的需求,Qt提供的解决方案是,在所有需要翻译的字符串处都使用QObject::tr()函数,Qt提取出所有QObject::tr()函数的参数,使用Qt语言家对其进行翻译后发布,Qt程序可以在运行时加载发布的翻译文件以更新文本字符串。

​ QT语言家就是解决字符串乱码和翻译的问题。


2)操作

在QtCreator 中新建一个Demo项目,然后对工程文件中的pro文件进行编辑,在最后加上一行

TRANSLATIONS += demo2_zh_CN.ts

在菜单栏上选择“工具”-“外部”-“Qt语言家”-“更新翻译”
然后在你的项目路径下就会生成一个叫做“demo2_zh_CN.ts”的文件

点击所有程序”-“找到你自己安装的QT目录下找到“Linguist” 打开Qt语言家,“文件”-“打开” 选择项目路径下的Demo2_zh_CN.ts。如图:

左侧上下文面板中,选择MainWindow,在源文下选择”btn1”,在下方面板中,汉语 译文输入框中输入“按钮1”,然后点击上面绿色的勾号按钮,变为勾号,确认这一行已经翻译,最后点击保存退出。

添加翻译与未添加翻译的按钮控件 在ts 文件对比如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j4sccaxM-1637225030234)(/home/her/.config/Typora/typora-user-images/image-20211118145221895.png)]

然后即可回到工程文件中,点击工具–外部–Qt语言家–发布翻译

然后在QtCreator中,编辑main.cpp 载入翻译文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
	
	//  ------  载入翻译 -------
    QTranslator translator; // 新建翻译类
    translator.load("Demo2_zh_CN.qm", "./"); // 导入生成的文件
    a.installTranslator(&translator); //装入
	//  ------  载入翻译 -------

    MainWindow w;
    w.show();
    return a.exec();
}


3)试错阶段:

<1>如果想在QtCreator中运行,显示翻译的话,则
    translator.load("Demo2_zh_CN.qm", "../Demo2"); // 导入生成的文件

<2>如果想在编译安装之后,能显示翻译,则需要配置pro文件以及修改load路径地址
Demo2.pro文件

TRANSLATIONS += Demo2_zh_CN.ts

dtk_translations.path = /usr/share/$$TARGET/translations
dtk_translations.files = $$PWD/*.qm

INSTALLS += dtk_translations

main.cpp 需要修改为

translator.load("Demo2_zh_CN.qm", "/usr/share/Demo2/translations"); 

<3>还有一种方式就是把*.qm加入资源文件*.qrc(根据路径不同,也是相应的修改load中的形参)

操作如下:

main.cpp 需要修改为

translator.load("Demo2_zh_CN.qm", ":/"); 

即可实现。


4) Qt翻译–注释添加

重要:讨论添加 == 开发人员注释 == 问题:

QString QObject::tr(const char *sourceText, const char *disambiguation = Q_OBJECT, int n = Q_OBJECT)
// disambiguation -- 消除歧义的意思,个人理解是"注释"

那么针对btn1 按钮的文案添加注释

QPushButton *btn1 = new QPushButton(this);
btn1->setText(tr("btn1", "button"));

将会在ts,以及Qt语言家(Qt Linguist)上产生一些变化,如下图:

在语言家可看出,新增了一个““开发人员注释” 一栏,即可根据这样类似的注释,有区别的去翻译相关空间文案及其信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yUziQd4K-1637225030236)(/home/her/.config/Typora/typora-user-images/image-20211118161615582.png)]

VS Qt Linguist是一个用于在Visual Studio中进行Qt语言翻译的工具。通过VS Qt Linguist,你可以打开ts文件并进行翻译。然而,需要注意的是,如果在Qt Core中生成了ts文件,那么在VS中打开时可能会出现乱码的情况。因此,最好确保在Qt中打开的.pro文件不包含中文路径。在main.cpp中,你需要包含<QTranslator>头文件,并加载qm文件,以便在运行时进行多语言切换。你可以使用QApplication的installTranslator函数来安装翻译器,并在需要翻译的字符串处使用QObject::tr()函数。这样,Qt程序就可以在运行时加载发布的翻译文件以更新文本字符串。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [VS Qt 使用linguits(Qt语言)生成.ts的翻译文件并翻译使用的详细过程](https://blog.csdn.net/Como0413/article/details/127747123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [在VS中使用Qt Linguist完成国际化翻译](https://blog.csdn.net/qq_37996632/article/details/113282148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【Qt一骚操作Qt语言 Qt Linguist 使用总结】](https://blog.csdn.net/Monster_H7/article/details/121404508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monster_H777

我直说吧:你的奖励我的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值