QML基础——QML国际化(中文示例)

QT国际化 / 中文环境下的日期格式QString formattedDate = QDate::currentDate().toString(tr("yyyy年MM月dd日 dddd")); 阅读详情

在Qt程序中如何使用多国语言已经在《Qt的国际化和本地化》 这篇文章中有所介绍,本文则针对如何对出现在QML中的字符串进行国际化进行专门介绍。
本本将通过一个很小的中文例子程序,向大家一步步讲解如何使得出现在QML代码中的字符串显示成中文。示例程序可通过本文末尾所附链接下载。更多阅读可以参照“QML的国际化”

修改pro

在Qt的pro文件中首先加入以下几行:

CONFIG += localize_deployment
SYMBIAN_SUPPORTED_LANGUAGES += zh_CN
SYMBIAN_LANG.zh_CN = 31
 
TRANSLATIONS = displayChinese_zh_CN.ts

其中CONFIG += localize_deployment是为了可以为应用程序添加中文名称。

然后加入以下几行:

symbian {
addFiles.sources = qml/displayChinese/displayChinese_zh_CN.qm
addFiles.path = .
DEPLOYMENT += addFiles
}

这是为了程序在手机上能够找到需要的qm文件

标记字符串

出现在QML 中的字符串如果需要翻译则可以通过使用 qsTr(), qsTranslate(), QT_TR_NOOP(), 或QT_TRANSLATE_NOOP() 来进行标记。例如在本例程中:

Text {
        text: qsTr("display Chinese character.")
        anchors.centerIn: parent
    }

使用了 qsTr()。 只有这样做过标记之后,translator才知道“display Chinese character”。是需要被翻译的,以便于后面进行处理

生成中文目标语言的ts文件

首先需要启动命令行,例如如果我们安装的是QtSDK 1.1 beta 则启动下图所示command prompt:

在命令行中进入我们项目的根目录,然后输入以下命令:

lupdate qml/displayChinese/main.qml -ts qml.ts

这样就会生成一个名为qml.ts的文件了.

然后我们在命令行中继续输入:

lupdate displayChinese.pro -ts app.ts

从而生成app.ts文件

翻译

用Qt Linguist打开上一步生成的qml.ts 和 app.ts,将我们翻译的文字输入进去即可,最后保存文件,完成。 然后在命令行中输入:

lconvert app.ts qml.ts -o displayChinese_zh_CN.ts

这是为了将两个ts文件合并起来。最后的效果如图:

其中QtApplicationCaptions就是指的程序呈现在用户面前的名称(我们这里起名叫QML中文应用程序),而QtPackageNames是指的安装sis时给用户的提示信息中的名称。

生成运行时所需的qm文件

上一步做完之后,我们点选择File 菜单中的release就可以生成qm文件了。

 

加载翻译文件

要想使得翻译起作用,还需要在Qt程序的main函数中进行设定,例如:

QString locale = QLocale::system().name();
QTranslator translator;
bool success = translator.load( QString("displayChinese_") + locale);
app.installTranslator(&translator);

至此,整个示例程序就完成了,下面我们看一下效果。

程序截图

本程序对QML中的字符串进行了多语言处理,并且给应用程序起了一个中文名字,只是没有处理软键,不过原理都是一样的,具体可以参阅《Qt的国际化和本地化》 。

下面是示例程序在N8上截图,当我们的N8语言设置为中文的时候就是第一幅图,当我们的N8语言设置为英文的时候就是第二副图。

当手机语言设定为中文时:

分类: QML
QML 国际化 在开发 QML 应用程序时,迟早要满足多语言的需求(例如:中英文),尤其是对动态翻译的支持,能够让我们的程序更加易用。 阅读详情

相关推荐

【QML-国际化和本地化】

QML编程指南■ QML Profiler■■■■■■ ■ QML Profiler ■ ■ ■ ■ ■ ■

sinat_23896491的博客 530

Qt5 Qml 界面开发(二)

详细讲解Qt Quick Controls 2组件、Qml数据展示及Canvas画布。从实战案例出发讲解HMI屏及桌面软件界面开发。

QT/QML语言国际化

前言 话说这个都写烂大街了,主要还是自己做下记录,毕竟好记性不如烂笔头啊!!! 说明下背景:Qt,QML翻译,语言国际化,大概的操作过程与代码的编写,就是书写需要翻译的字符串加上翻译标识,通过配置工程文件生成需要的ts文件,修改ts文件,发布生成需要的qm文件,然后在CPP 上加载设置需要的翻译文件。具体下面说明 正文 一、在工程文件上添加 举个粒子 TRANSLATIONS += \ l...

波风水门 1020

Qt Qml实现国际化

Qt Qml实现国际化 qml 中翻译的字符串需要用qsTr()/qsTranslate()包裹起来。 在.pro文件中定义多个语言版本,如下所示 通过定义转换语言单例类,注册到Qml中来实现。 使用IDE自带工具-语言家来自动绑定Qml中的qStr(“xxx”)字段。 通过qml触发语言切换,调用C++程序切换语言,关键点为QQmlEngine::retranslate()函数,此函数刷新所有使用标记为翻译(qsTr())的字符串的绑定表达式,注意,此函数在Qt 5.10以后可用。 ...

quietbxj的博客 2985

Qt基于Qml语言国际化

1.生成语言国际化资源。 2.使用QT语言库进行翻译。 3.注册语言切换函数。 4.注册QML对象 5.前端QML中使用注册的函数。 QM文件要包含在资源中才能正常翻译。

364

Qt QML语言的国际化编程

在Qt开发中,QML是一种强大的语言,用于创建跨平台的用户界面。国际化是一个重要的功能,允许应用程序在不同的语言环境中展示本地化的内容。Qt QML是一种功能强大的语言,用于创建跨平台的用户界面。我们可以使用该工具来生成一个基础的翻译文件,然后手动编辑其中的翻译内容。我们可以使用该工具生成一个基础的翻译文件,并手动编辑其中的翻译内容。步骤4:在左侧的“String List”视图中,可以看到需要进行翻译的文本字符串。步骤4:在左侧的“String List”视图中,可以看到需要进行翻译的文本字符串。

CyberByte的博客 247

QML中使用Qt 的翻译功能

参考 在C++中与QML对象交互 QT5 CMAKE工程忘记添加翻译文件怎么办?【日积月累计划】

beibeix2015的博客 457

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

Time_1023的博客 1872

QML 国际化(中文示例)

在Qt程序中如何使用多国语言已经在《Qt的国际化和本地化》 这篇文章中有所介绍,本文则针对如何对出现在QML中的字符串进行国际化进行专门介绍。 本本将通过一个很小的中文例子程序,向大家一步步讲解如何使得出现在QML代码中的字符串显示成中文。示例程序可通过本文末尾所附链接下载。更多阅读可以参照“QML的国际化” 修改pro 在Qt的pro文件中首先加入以下几行: CONFIG

1220

三轴云台稳定控制算法优化实战:从PID到模糊自适应

本文深入探讨了三轴云台稳定控制算法的优化实践,从经典PID控制到模糊自适应算法的进阶应用。通过实战案例和代码示例,详细解析了PID调参技巧、模糊控制实现及多传感器数据融合方法,帮助工程师在复杂环境下提升云台抗干扰能力和响应速度,特别适用于无人机航拍等场景。

green的博客 908

华为CCA架构软件栈VehicleStack解析:3层服务化设计与AOS/VOS双核OS

本文深入解析华为CCA架构下的VehicleStack软件平台,重点介绍其三层服务化设计(硬件抽象层、服务框架层、应用层)与AOS/VOS双核操作系统协同机制。该架构通过计算与通信的深度融合,推动汽车电子电气架构向集中式发展,为智能汽车提供灵活、高效的软件定义汽车解决方案。

weixin_33491377的博客 319

QT/QML国际化:中英文界面切换显示(cmake方式使用)

在当今全球化的软件开发环境中,应用程序的国际化(i18n)与本地化(l10n)能力已成为衡量其专业度和用户体验的重要标准之一。QT/QML作为一套强大的跨平台应用程序开发框架,其内置的国际化支持机制使得开发者能够轻松地为应用添加多语言功能,从而满足不同地域用户的语言需求。本文将深入探讨如何在QT/QML项目中实现中英文显示的国际化,从基础概念到具体实施步骤,帮助开发者构建出更加友好、包容的应用界面。QT框架提供了完整的国际化支持,包括字符串提取、翻译文件的创建与管理、以及运行时的动态加载等。

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 3014

从零实现反激式电源仿真:LTspice高级应用实例

深入解析反激式开关电源的建模与仿真过程,利用LTspice实现从零搭建电路,精准验证电路仿真效果,提升电源设计效率与可靠性。

weixin_36149538的博客 1896

玩转Qml(4)-I18n动态国际化

简介 效果预览 源码中输出中文 Qt本身的国际化 翻译工作 实现动态翻译 加载翻译文件 Qml中切换语言 多国语言版本 简介本文是《玩转Qml》系列文章的第四篇,涛哥将教大家,如何在Qml中实现动态国际化。 i18n 是 internationalization(国际化) 的首尾字符加中间的 18 个字符。随着产品越做...

武威的涛哥-博客 991

Conda安装cuda指定版本遇到的一个大坑,导致pytorch无法使用cuda且nvcc -V显示错误的cuda版本

24年3月份的时候用conda install nvidia/label/cuda-11.x.x::cuda还挺正常的,能直接安装11.x.x版本的cuda,我还安利给同学用。但现在5月份不知道为什么这些命令都只会安装最新的cuda12.4,不知道是我哪里设置有问题还是官网的安装目录里的环境配置换了?我在三台不同的服务器上都尝试了安装不同版本的cuda,但最后安装下来的都是12.4版本。

weixin_43933424的博客 8892

用长tree方式做等长线

1)写一个sdc,把等长线的起点设置成clock source,用于创建create_clock,至于period和waveform等参数随便写即可。然后clock_opt -from build_clock -to route_clock即可。3)在正式cts之前或之后,给自己创建的scenario长tree并don't touch。前面讲过了如何用set_data_check做等长线,这里再讲一下如何用cts的方式做。2)为该clock创建一个新mode,并创建对应的scenario。

m0_61544122的博客 622

QML 中文支持

在 QML 中使用中文,目前似乎只有两种方式 使用 Qt 的国际化功能(与QtScript完全一样,使用 qsTr()) 使用 unicode 的转义字符("\uxxxx") #include #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv);

木心[ mx1024 ] 欢迎 3248

RK3588 Buildroot 新建板级DTS

在rk3588 linux开发过程中,新创建板型主要基于硬件差异化、软件适配与优化、项目定制化等多方面需求。

501846585_QQAndroid_java 1298

QML 中实现国际化翻译

Qt 中提供了多种将字符串标记为可翻译的方法,我们将之称为国际化翻译。

billy的博客 1416

redhawk:使用rh_setup.pl产生gsr模板

必须加的option工具会在rh_setup.pl给出提示,按照要求填写即可,另外工具会把所有填写的输入文件和信息放到rh_setup.init文件中,拷贝这个文件可在任何平级运行目录下,直接rh_setup.pl产生gsr以及run sta/dyn/em的脚本。rhsetup.pl -top top_cell_name -vdd_nets VDD 1.2 VDD2 1.2 -vss_nets VSS -frequency 100e6 (100m是默认值)更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 1052

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: QML基础——基本语法
下一篇: QML基础——在C++程序中使用QML
獠
獠
博客等级 码龄16年 43粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值