Qt国际化(i18n)使用方法

    以Qt中i18n示例为参照,解读Qt实现国际化的方法和步骤。

一、制作翻译文件

1、修改.pro文件,添加翻译文件配置:

TRANSLATIONS  += translations/i18n_zh.ts \
                 translations/i18n_en.ts

说明:

翻译文件名:项目名_地区名.ts,示例中i18n应随着实际项目修改。

地区名缩写:

        zh    中国

        en   英国

2、生成翻译文件

       交互模式:QtCreator菜单/工具/外部/Qt语言家/更新翻译

        命令行:

$ lupdate -verbose i18n.pro

翻译文件格式:

<!DOCTYPE TS><TS>
<context>
    …
    <name>范围名称</name>
    <message>
        <source>标识名称</source>
        <translation>内容</translation>
</message>
    …
</context>
</TS>

3、编辑翻译文件

启动linguist语言翻译工具,命令行:

$ linguist

打开翻译文件,逐一配置翻译内容

 4、生成.qm文件

       交互模式:QtCreator菜单/工具/外部/Qt语言家/发布翻译

        命令行:

$ lrelease -verbose i18n.pro

二、配置资源文件

1、添加资源文件

    打开菜单文件/新建文件,选择Qt项目/Qt Resource File模板添加资源文件。

    示例中资源文件为i18n.qrc,可随着实际项目修改。

2、在资源文件中添加翻译文件,注意是发布后的.qm文件

/translations/i18n_zh.qm
/translations/i18n_en.qm

注意:可以同时使用多个翻译文件,使用时按后装优先的原则从最后安装的翻译文件找起。

三、关键代码

1、装配翻译文件

QTranslator translator;

//加载翻译文件的几种方法:
translator.load(":/translations/i18n_zh.qm");
translator.load("i18n",":/translations","_"/ _zh.qm");
translator.load(QLocale(),"i18n","_",":/translations",".qm"));

//安装翻译器
QCoreApplication::installTranslator(&translator);

2、使用翻译的几种方法:

QCoreApplication::translate(const char *context, const char *sourceText, \
                            const char *disambiguation = nullptr, int n = -1)

参数说明:

        Context:             范围标识。对应翻译文件的范围名称

        sourceText:         文本标识。对应翻译文件中的标识名称,翻译文件中未找对应的翻译内容时则返回sourceText的值

        disambiguation     消歧标识,可选项。用以处理同一范围内同一文本标识有多处不同用途的情况

​​​​​​​QObject::tr(const char *sourceText, const char *disambiguation = nullptr, int n = -1)

参数说明:

        对象类名:           对应翻译文件的范围名称。

        sourceText:         文本标识。对应翻译文件中的标识名称,翻译文件中未找对应的翻译内容时则返回sourceText的值

        disambiguation     消歧标识,可选项。应对同一范围内同一文本标识有多处不同用途的情况

注意:在非QObject类中使用tr()函数,需在类定义中增加宏

    Q_DECLARE_TR_FUNCTIONS(类名)

3、卸载翻译文件

removeTranslator(":/translations/i18n_zh.qm")

四、参考:

1、qt中制作添加 .ts 翻译文件

https://blog.csdn.net/peter_huang1987/article/details/67633633

2、Qt 国际化 | Qt 6.3

https://doc.qt.io/qt-6/internationalization.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

muren

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值