QT的中文化相关问题

Archlinux KDE中文化备忘录 Arch知名度高,禁不住想体验一下。考虑到没有一步到位的arch LiveCD,安装图形桌面环境比较麻烦,就先上了其衍生版Manjaro,成为我体验的第8个Linux发行版。体验Manjaro几天后感觉还不错,运行效率比较高,官网资料多。对Manjaro有一定了解后,就下决心安装Archlinux。先用虚拟机折腾,免得耽误时间。在Manjaro KVM下安装的arch。具体安装方法不表,网上教程多得是。启动arch后是纯英文界面。当然,若在安装桌面环境后,先手动修改配置文件设定中文环境并安装中文字体启动后就 阅读详情

QT的中文化相关问题

 

Author:snail

Date:07-03-05

 

0

Qt应用的翻译过程分为三步:

运行lupdate,以提取出Qt应用的C++源代码中的可翻译文本,会产生一个给翻译者的信息文件(.ts文件)。该工具识别出tr()结构和上面描述的QT_*_NOOP宏,产生.ts文件(通常每种语言一个)。

使用Qt语言学家提供.ts文件中源文本的译文。既然.ts文件是XML格式,你也可以手工编辑它们。

运行lrelease,以从.ts文件中得到只适用于最后使用的轻量级的信息文件(.qm文件)。你可以把.ts文件看成“源文件”,把.qm文件看成“目标文件”。翻译者编辑的是.ts文件,可是你的应用的用户只需要.qm文件。这两种文件都是平台和地区(locale)无关的。

 

 

1

像普通的国际化过程一样,Qt 使用了类似GNU gettext一样的函数 QObject::tr(),它 用于从Qt的信息文件 .qm 中取出信息,这些信息是经过 Qt 的工具处理的。 Qt在处理 编码时还使用了 QTranslator 类,可用于指定整个应用软件的 的信息文件。

 

QPopupMenu* popup;
popup = new QPopupMenu( this );
popup->insertItem(
tr("&Quit"),qApp,SLOT(quit()) );
menubar->insertItem(
tr("&File"),popup );

 

两种特殊情况!

1 对于绝大多数情况,可以用上述方法处理。不过有时在定义某些变量中使用的字符串,不能使用上述方法,但是为了让Qt提取并翻译该字符串,必须用某种方法标志出 来。Qt 定义了 QT_TR_NOOP() 和 QT_TRANSLATE_NOOP() 来标志它们。前者用于单个字符串,后者用于多个字符串。比如,

static const char* strings[] = {
QT_TR_NOOP( "Hello" ),
QT_TR_NOOP( "World" )
};

2 有时需要使用printf/sprintf之类的函数动态生成字符串,比如,
QStings s;
s.sprintf( "Button %d"
,i );
but->setText( s );

对这种使用方式的国际化是使用 arg() 函数。
QString s = tr( "Button %1" )
.arg(i);
but->setText( s );

 

 

2

在1中谈到了” 它 用于从Qt的信息文件 .qm 中取出信息,这些信息是经过 Qt 的工具处理的。”

这里就又提出了2个问题?

如何生成.qm文件?

信息是经过Qt的工具处理的,这里的工具指的是什么工具?

 

提取上述信息的方法是使用 Qt 提供的工具 findtr 命令:
findtr [filename].cpp > i18n.po

对于翻译后的文件(比如上面的翻译文件存为 i18n_gb.po),必须使用 Qt 提供的 工具 msg2qm 把它转换为 .qm 文件才能使用,
msg2qm i18n_gb.po i18n_gb.qm

最后在程序中添加下列语句

QTranslator *translator = new QTranslator(0);
translator->load("i18n_gb.qm"
,".");
qApp->installTranslator(translator);

 

 

3

在 Qt 中也可以直接使用 QTextCodec 来转换字符串的编码,这为在Qt下开发纯 中文软件带来了便利条件,不过这种方法不符和国际化/本地化的习惯.

 

char *string = "中文和English混和字符串!"
QTextCodec* gbk_codec = QTextCodec::codecByName("GBK");
QString gbk_string = gbk_codec->toUnicode(string);
QLabel *label = new QLabel(gbk_string);

 

 

4

如果使程序只支持一种编码,也可以直接把整个应用程序的编码设置为GBK编码,然后在字符串之前加tr(QObject::tr),
qApp->setDefaultCodec( QTextCodec::codecForName("GBK") );
QLabel *label = new QLabel( tr("
中文标签") );

 

5

如果使Qt根据Locale的环境变量取得字符集,可以使用 QString::fromLocal8Bit(str)。

 

6

我的QtEmbedded程序中的中文字符为什么显示成方块?

两个可能的原因:

一是qte的库未编译进对中文textcodec的支持, 解决方案:修改qconfig-qpe.h, 去掉CODEC有关的宏, 重新configure和make

二是程序中选用的字体不是中文字体(默认的字体是Helvetica,没有中文), 需要在程序中指定一个中文字体,如qte自带的unifont(这个字体大家普遍的看法是看上去像残废), qt4版本里新加入了文泉驿的unicode字体,可以在源码包里找到,比较漂亮, 推荐。

 

7

 

 

 

 

 

附录:

这些类同国际化Qt应用有关。

 

QEucJpCodec 从和到EUC-JP字符集的转换 

QEucKrCodec 从和到EUC-KR字符集的转换 

QGb18030Codec 从和到Chinese GB18030/GBK/GB2312编码的转换 

QGbkCodec 从和到Chinese GBK编码的转换 

QHebrewCodec 从和到visually ordered Hebrew的转换 

QJisCodec 从和到JIS字符集的转换 

QSjisCodec 从和到Shift-JIS的转换 

QTextCodec 文本编码之间的转换 

QTextDecoder 基于状态(State-based)的解码器 

QTextEncoder 基于状态的编码器 

QTranslator 文本输出的国际化支持 

QTranslatorMessage Translator的信息及其属性 

QTsciiCodec 从和到Tamil TSCII编码的转换 

 

 

qtopia目录结构

       apps/Applications:应用程序桌面配置文件

apps/Games:游戏桌面配置文件

apps/Settings:系统设置桌面配置文件

bin:二进制可执行文件

configs:编译配置文件目录

doc和docs:qtopia的参考文档

etc:应用配置文件目录

i18n:国际化目录

i18n/zh_CN:简体中文目录

include/qpe:与qtopia相关的头文件目录

inputmethods:输入法

library:qtopia部分源代码目录

pics:与应用相关的图片存放目录

plugins:各种插件目录,如mpeg3解码插件、输入法插件等

sounds:音频文件存放目录

taskbar:桌面程序的源代码(qpe的源代码)

 

 

FreeBSD桌面中文化实战:从字体渲染到输入法配置全解析 在操作系统本地化过程中,字体渲染引擎和输入法框架是支撑非英语环境用户体验的核心技术组件。字体渲染引擎通过抗锯齿、微调等技术优化字符显示效果,而输入法框架则负责处理复杂的文字输入逻辑。这些基础技术的价值在于为不同语言用户提供无缝的桌面交互体验,广泛应用于多语言操作系统、国际化软件开发等场景。本文聚焦FreeBSD系统,深入探讨其中文桌面环境的构建,涉及locale设置、字体配置优化以及Fcitx5输入法框架的集成与调试,帮助用户解决字体显示异常、输入法无法调出等典型问题,实现稳定流畅的中文支持。 阅读详情

相关推荐

Qt程序中文化,详细介绍中文化的过程

第一步 在你的pro里面加入 TRANSLATIONS = myexec_zh.ts 第二步 用lupdate 操作pro 将要翻译的提取到ts文件 命令是 lupdate my.pro 第三步 用 linguist 打开刚才的ts文件,linugist是在qt的bin的目录里面, 是一个界面工具 打开linguist 后用菜单栏file ->open 打开 相应的ts文件 如刚才myexec_zh.ts 打开后你会看到左边是相应的类 右边的上半部 是相应的类里面tr 里面的内容 所以在程序里面 tr里面的都是e文 到这里就用上了 下半部是你要翻译的语言的相应的东西,就是你输入中文的地方 要注意的就是 那些标点符号 最好还是用e文输入状态的如save as.... 就应该是 另存为.... 而不是 另存为。。。。注意后面的标点的差别,其中绿色的表示翻译好了 ,叹号的表示没有翻译对,交叉的表示没有翻译 第四步 先用 linguist 菜单保存你翻译好的ts文件,接着用linguist界面工具里面菜单file里面的release...,点击这个就会弹出对话框 提示你 输入 qm文件的文件名,用默认的就可以了。按确定后你会在ts文件所在的目录看到一个qm后缀名的个文件,这就程序翻译器要用到的文件。 第五步,在你的程序里面使用刚才得到的qm文件 方法如下 QTranslator translator( 0 ); translator.load( "myexec_zh.qm", "." );//要跟刚才得到的qm的文件名对应 app.installTranslator( &translator ); 切记 在第五步的时候,一定要在界面的前面安装翻译器

QT开发--国际中文化(一)

如果想在程序中显示中文或其他非英文的文字怎么办?QT支持几种显示非英文的文字的方法。我们还是在前两节的hello程序基础上示例如何添加中文显示。一、在hello.pro的尾端加入TRANSLATIONS = hello.ts,加入后的hello.pro如下例所示:TEMPLATE = appCONFIG  += qt staticlib thread warn_on release

青瓜王子的博客 904

OpenClaw 最强技能 self-improving-agent 详解:让 AI 从错误中自主学习

self-improving-agent 是 OpenClaw 生态中最受欢迎的技能插件,下载量突破 268k。它能让 AI 记住犯过的错误和解决方案,实现持续自我改进。本文深入讲解其工作原理、安装配置和实战案例。测试数据显示:部署流程时间从 15 分钟降到 2 分钟(87%↓),API 调试时间从 2 小时降到 20 分钟,数据库查询编写时间减少 90%。文章包含完整架构图、配置文件示例、3 个详细实战案例和性能测试数据,适合开发者、运维和数据分析师使用。

qq_38610923的博客 3634

QT Creator 5.1.2中英文切换

QT 5.1.2中英文切换

沐的博客 1万+

立创EDA实战:基于NE555的夜间氛围呼吸灯电路设计与模式切换

本文详细介绍了使用立创EDA设计基于NE555芯片的夜间氛围呼吸灯电路。项目核心是利用NE555产生PWM信号,并通过RC充放电电路实现LED亮度的缓慢周期性变化,形成呼吸效果。文章手把手教学,涵盖从电路原理分析、元件参数计算,到在立创EDA中进行原理图绘制、PCB布局布线,直至焊接调试的完整硬件设计流程,是电子爱好者入门实战的经典项目。

weixin_42153793的博客 124

VS2022命令行编译C++报错?一招解决‘fatal error C1034: iostream: 不包括路径集‘

本文针对VS2022命令行编译C++时常见的'fatal error C1034: iostream: 不包括路径集'错误,深入剖析了其根源在于环境变量缺失。文章提供了永久配置用户环境变量(PATH、INCLUDE、LIB)的一劳永逸解决方案,确保在任何终端中都能直接使用cl命令进行编译,并给出了进阶配置与常见错误排查指南。

weixin_29011667的博客 304

Qt学习之路(34): 国际化(下)

上次说了国际化的过程,现在来看一下具体的国际化的相关代码。 在代码中,我们使用tr()将需要翻译的字符串标记出来。lupdate工具就是提取出tr()函数中的相关字符串。tr()函数是QObject类的一个static函数,其签名如下: static QString tr(const char *sourceText, const char *commen...

weixin_33913332的博客 463

报错:subprocess.CalledProcessError: Command ‘[‘where‘, ‘cl‘]‘ returned non-zero exit status 1.

右键此电脑--属性--高级系统设置--环境变量--系统变量--找到Path。Enterprise是企业版,如果你是社区版就找Community。2.安装的时候,c++桌面那个需要勾选。

2301_77554343的博客 1507

Qt 多语言界面设计概述

有些软件需要开发多语言界面版本,如中文版和英文版,并且在软件里可以方便地切换界面语言。Qt 为多语言界面提供了很好的支持,使用 Qt 的一些规则和工具,可以很方便地为应用程序开发提供多语言界面支持。

yangxueyangxue的博客 1969

华为主题包HWT从入门到排障:下载、导入、修改与兼容性指南

手机主题是很多用户个性化设备的起点,华为手机的主题文件以HWT格式封装,本质上是一种结构特殊的ZIP压缩包,内部包含壁纸、图标、字体和XML配置。了解HWT的目录结构与系统版本兼容性,能帮助用户避开导入失败、秒回默认等常见问题。本文从HWT的基本原理讲起,梳理了安全下载渠道、三种导入方式、应用失败的系统性排查思路,并介绍了解包修改壁纸与字体的方法。无论是普通用户还是进阶玩家,掌握这些技术细节都能更从容地在EMUI与HarmonyOS环境下管理自己的主题资源。

weixin_31155097的博客 355

Simeck算法流程

算法流程 paper在此:https://eprint.iacr.org/2015/612.pdf x ⋘\lll⋘ c denotes the cyclic shift of x to the left by c bits. x & y is the bitwise AND of x and y. x⊕yx \oplus yx⊕y is the exclusive-or (XOR) of x and y. github代码在此:https://github.com/bozhu/Simeck

Simp123 1074

Qt 的多语言支持的翻译机制

https://www.cnblogs.com/lsgxeva/p/12557656.html 本节主要讲解如何进行 Qt 的翻译。希望本文内容能给新手对 Qt 翻译一个全面的认识。 本文结构如下: 概述 我们到底在翻译什么? 和翻译相关的 Qt 类 翻译流程框架图 如何进行翻译? 第一步:写规范的代码 用 QString 包裹不需要翻译的文本 用 tr() 包裹需要翻译的文本 定义上下文 如何翻译非 Qt 类 第一种:利用 QCoreApplication::.

qinjie的博客 3245

Python深度学习基于Tensorflow(17)基于Transformer的图像处理实例VIT和Swin-T

定义窗口注意力机制,与普通的注意力机制不同,其是在各个窗口中执行注意力机制。从中可以看到,其创新点主要是将图片进行拆分作为序列数据带入。差不多,主要实现的是一个下采样的算法过程;相同位置的像素绑定到一起构成一张新的。模型定义完毕后,初始化模型并开始训练。由于层之间重复性出现,可以定义一个。中,这里先实现拆分图片类。进行操作时我们定义三个类。定义一个多头注意力机制类。的数据,导入数据如下。导入数据,这里同样用。

bigcrab的博客 1634

Qt开发相关问题

1、对话框中文化 将绿色的代码用下面的代码替换,并如下操作,也可以汉化。 1.我默认安装Qt4.8.4的目录为C://Qt/translations/,在此目录下有qt_zh_CN.ts 和 qt_zh_CN.qm  把它们拷贝到你的工程里,并加入到qrc文件中。 2.在主文件加入下列代码: QTranslator translator(0);

寂寞的秋叶 625

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

qt的如何调整显示不为科学记数法_qt开发中遇到的问题整理八(整理)

5.如何使通用对话框中文化答:对话框的中文化比如说,QColorDialog的与文字相关的部分,主要在qcolordialog.cpp文件中,我们可以从qcolordialog.cpp用 lupdate生成一个ts文件,然后用自定义这个ts文件的翻译,再用lrelease生成一个.qm文件,当然了,主程序就要改变要支持多国语言了,使用这个.qm文件就可以了。另外,还有一个更快的方法,在源代码解开后...

weixin_35807050的博客 1958

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[Qt]Qt Creator汉化方法及汉化包

[Qt]Qt Creator汉化方法及汉化包 【下载地址】QtQtCreator汉化方法及汉化包 本项目专注于为Qt Creator提供便捷的汉化解决方案,帮助用户更好地在中文环境下使用这一强大的开发工具。通过提供详细的汉化方法和优化后的汉化包,用户可以轻松替换相关资源文件,快速实现界面中文化。汉化包基于官方资源进行了优...

gitblog_06764的博客 967

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

QT国际化 一 (lupdate/linguits/lrelease)

本文的重点在于QT界面显示的中文化。 ##1、控制需要翻译的文本 在编写QT程序的时候,对于要翻译的文本,应当使用tr()包含起来。 我们先来看看tr函数的原型,注意,这是一个静态函数 QString QObject::tr(const char * sourceText, const char * disambiguation = 0, int n = -1) 因为Qt中的类都继承自QObject类,所以这里直接使用了tr,如果不是在继承自QT的类中使用,应该用Object::tr(....

thinkpadlove的专栏 1000

【原创】QT中文化例子程序

前言: 本文使用的环境如下:操作系统:WIN7,QT library :4.8.1,IDE :VS2010。 例子: 相关注释说明已经在代码里有体现,直接上代码: #include <Qpushbutton> #include <QApplication> #include <Qwidget> #include <QTextCo...

weixin_34061042的博客 142

Qt 中文翻译资源文件

Qt 中文翻译资源文件 【下载地址】Qt中文翻译资源文件 该项目提供了Qt框架的中文翻译资源文件,包含编译后的`.qm`文件和可编辑的`.ts`文件,专为 `QMessageBox`、`QFontDialog` 和 `QColorDialog` 等常用对话框提供中文支持。通过简单集成,开发者可以轻松实现Qt应用的中文化,...

gitblog_06775的博客 415

Qt中文翻译资源文件:助力Qt框架中文支持

Qt中文翻译资源文件:助力Qt框架中文支持 【下载地址】Qt中文翻译资源文件 该项目提供了Qt框架的中文翻译资源文件,包含编译后的`.qm`文件和可编辑的`.ts`文件,专为 `QMessageBox`、`QFontDialog` 和 `QColorDialog` 等常用对话框提供中文支持。通过简单集成,开发者可以轻松实...

gitblog_06732的博客 353

零基础学Qt4编程之Ubuntu/Kubuntu上Qt4的安装方法

 Ubuntu和Kubuntu这两个Linux发行版都是比较容易上手的,在上面安装Qt4也是比较简捷的。但在论坛里面还是不断有朋友提问与Ubuntu上安装配置Qt4相关的问题。下面笔者就以Ubuntu8.04为例,讲解从Live CD安装Ubuntu后如何安装配置Qt4的全过程,希望能够对读者朋友有所帮助。⑴ Ubuntu版本的选择截至笔者写作时,Ubuntu最新的版本是9.04版,它

qter_wd007的专栏 4999

debian中文化

对于使用 X Window 的用户而言,拥有一个漂亮的界面是非常重要的。因为只有这样,工作的时候才能心情娱悦,否则,看着大小不一或者是朦朦胧胧的字体,恐怕没人会有心情做自己的工作。由于中文 TTF 字库的版权原因,很多 Linux 的发型版都没有携带最常用的简体中文字库。虽然台湾的文鼎公司捐助了四款中文字体给自由社区,但其中的简体中文字体却只不完整地支持 GB2312 的字符集,对于多数应用而言都

帆子的技术的专栏 1756

QT国际化

在代码里面写中文就很low,运行时多语言切换是客户端程序都应该具备的。 qt国际化其实就是qt中字符串的字符集编码的设置。当然这个设置不是简单的选择一下什么语言就好,这个需要编程人员来处理的。

Albert_weiku的博客 715

arch中文化

做一点记一点 makepkg -s和pacman -U是安装AUR里中文字体的方法,中文字体随便下了一个ms hei什么的 还有一个直接 pacman -S wqy-zenhei 就可以 系统字体将默认安装到/usr/share/fonts。如果没有root权限或只打算自己使用某些字体,可以直接复制这些字体到~/.fonts目录(或其子目录)下面,并把该路径加入/etc

959
上一篇: [初]snail关于C++指针与内存管理的一些备忘
下一篇: 详解linux下的串口通讯开发[转载]
飞羽飞之猪
博客等级 码龄21年 127粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值