QTranslator Class

news2024/11/16 8:18:07

QTranslator Class

  • QTranslator 类
    • 公共成员函数
    • 类说明
    • 查找翻译
    • 使用多种翻译
    • 成员函数使用说明


QTranslator 类

QTranslator类为文本输出提供国际化支持。多国语言

Header:	#include <QTranslator>
qmake:	QT += core
Inherits:	QObject

公共成员函数

构造函数QTranslator(QObject *parent = nullptr)
virtual~QTranslator()
QStringfilePath() const
virtual boolisEmpty() const
QStringlanguage() const
boolload(const QString &filename, const QString &directory = QString(), const QString &search_delimiters = QString(), const QString &suffix = QString())
boolload(const QLocale &locale, const QString &filename, const QString &prefix = QString(), const QString &directory = QString(), const QString &suffix = QString())
boolload(const uchar *data, int len, const QString &directory = QString())
virtual QStringtranslate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1) const

类说明

这个类的对象包含一组从源语言到目标语言的翻译。QTranslator提供了在翻译文件中查找翻译的功能。翻译文件是用Qt语言学家创建的(Qt Linguist)。


QTranslator最常见的用途是:加载翻译文件,并使用QCoreApplication::installtranslator()安装它。


下面是一个使用QTranslator的main()函数示例:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QTranslator translator;
    // look up e.g. :/i18n/myapp_de.qm
    if (translator.load(QLocale(), QLatin1String("myapp"), QLatin1String("_"), QLatin1String(":/i18n")))
        QCoreApplication::installTranslator(&translator);

    QPushButton hello(QCoreApplication::translate("main", "Hello world!"));
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}

请注意,必须在应用程序的小部件之前创建翻译器。 大多数应用程序不需要对这个类做任何其他事情。 该类提供的其他函数对于处理翻译文件的应用程序很有用。


查找翻译

可以使用translate()查找翻译(就像tr()QCoreApplication::translate()所做的那样)。
translate()函数最多接受三个参数:

translate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1) const
  1. context:通常是tr()调用者的类名。
  2. sourceText:通常tr()的参数。
  3. disambiguation:一个可选字符串,有助于消除同一文本在同一上下文中的不同用法的歧义。

使用多种翻译

一个应用程序中可以安装多个翻译文件。翻译的搜索顺序与安装顺序相反,因此首先搜索最近安装的翻译文件,最后搜索最早的翻译文件。只要找到包含匹配字符串的翻译,搜索就会停止。


这种机制使得特定的翻译有可能被“选择”或优先于其他翻译;只需将转换器传递给QCoreApplication::removeTranslator()函数,并使用
QCoreApplication::installTranslator()重新安装它,即可从应用程序中卸载该转换器。然后,它将是第一个搜索匹配字符串的翻译。


成员函数使用说明

构造一个空消息文件对象,其父级不连接到任何文件。

QTranslator::QTranslator(QObject *parent = nullptr)

销毁对象并释放所有分配的资源。

QTranslator::~QTranslator()

返回加载的翻译文件的路径。
如果尚未加载翻译、加载失败或者翻译不是从文件加载的,则文件路径为空。

QString QTranslator::filePath() const

如果此翻译器为空,则返回true,否则返回false。此功能适用于已剥离和未剥离的翻译文件。

bool QTranslator::isEmpty() const

返回存储在翻译文件中的目标语言。

QString QTranslator::language() const

加载文件名+后缀(".qm”,如果没有指定后缀的话),这可能是一个绝对文件名或者相对于目录。如果翻译成功加载,则返回true否则返回false。

如果未指定目录,则使用当前目录(即currentPath()
如果文件名不存在,则按以下顺序尝试其他文件名:

1\不带后缀的文件名。
2\search_delimiters中的字符后的文本被去除的文件名(" _ . "如果是空字符串,则默认为search_delimiters)和后缀。
3\去掉文件名,不附加后缀。
4\文件名被进一步剥离,等等。

bool QTranslator::load(const QString &filename, const QString &directory = QString(), const QString &search_delimiters = QString(), const QString &suffix = QString())

例如,在fr_CA语言环境(讲法语的加拿大)中运行的应用程序可能会调用load("foo.fr_ca ","/opt/foolib ").load()将尝试打开列表中第一个现有的可读文件:

  1. /opt/foolib/foo.fr_ca.qm
  2. /opt/foolib/foo.fr_ca
  3. /opt/foolib/foo.fr.qm
  4. /opt/foolib/foo.fr
  5. /opt/foolib/foo.qm
  6. /opt/foolib/foo

通常,使用QTranslator::load(const QLocale &,const QString &,const QString &,const QString &,const QString &,const QString &)函数会更好,因为它使用QLocale::uiLanguages(),而不仅仅是区域设置名称,区域设置名称指的是日期和数字的格式,不一定是UI语言。


加载文件名+前缀+ ui language name+后缀(".qm”,如果没有指定后缀的话),这可能是一个绝对文件名或者相对于目录。如果翻译成功加载,则返回true否则返回false。

bool QTranslator::load(const QLocale &locale, const QString &filename, const QString &prefix = QString(), const QString &directory = QString(), const QString &suffix = QString())

例如,在使用以下 ui languages的区域设置中运行的应用程序-“es”、“fr-CA”、“de”可能会调用load(QLocale(),“foo”,“.”,"/opt/foolib",".qm”)。load()会将ui语言中的’-’(破折号)替换为’ _ '(下划线),然后尝试打开列表中的第一个现有可读文件:

/opt/foolib/foo.es.qm
/opt/foolib/foo.es
/opt/foolib/foo.fr_CA.qm
/opt/foolib/foo.fr_CA
/opt/foolib/foo.fr.qm
/opt/foolib/foo.fr
/opt/foolib/foo.de.qm
/opt/foolib/foo.de
/opt/foolib/foo.qm
/opt/foolib/foo.
/opt/foolib/foo

在文件系统区分大小写的操作系统上,QTranslator也会尝试加载一个小写版本的语言环境名。


返回关键字的翻译(上下文、源文本、歧义消除)。如果找不到,也会尝试(context,sourceText," ")。如果仍然失败,则返回空字符串。

如果您需要以编程方式将翻译插入到QTranslator中,这个函数可以重新实现。

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/594785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营15期 Day 7 | 454.四数相加II 、 383. 赎金信 、15. 三数之和 、18. 四数之和

昨天看了一下别的东西&#xff0c;导致昨天没有练习打卡&#xff0c;今天补上昨天的学习知识。 454.四数相加II 建议&#xff1a;本题是 使用map 巧妙解决的问题&#xff0c;好好体会一下 哈希法 如何提高程序执行效率&#xff0c;降低时间复杂度&#xff0c;当然使用哈希法 会…

AURIX TC3XX Cached PFLASH与Non-Cached PFLASH的区别

Cached ? Non-Cached&#xff1f; 在阅读TC3XX的用户手册时&#xff0c;在内存映射表中&#xff0c;有两个segment都是Program Flash&#xff0c;而且大小都一样是3M&#xff0c;一个是segment 8 另一个是segment10 这难免让人产生疑惑&#xff0c;二者区别在哪&#xff1f; …

高程实验 二分算法

学校的ppt把相等也考虑到大于上面去了&#xff0c;所以是错误的 1. (程序题) 有n(1<n<1000005)个整数&#xff0c;已经按照从小到大顺序排列好&#xff0c;现在另外给一个整数x&#xff0c;请找出序列中第1个大于x的数的下标&#xff01; 输入&#xff1a; 输入数据包含多…

4. 垃圾收集器ParNewCMS底层三色标记算法详解

JVM性能调优 1. 垃圾收集算法1.1 分代收集理论1.2 标记-复制算法1.3 标记-清除算法1.4 标记-整理算法 2. 垃圾收集器2.1 Serial收集器(-XX:UseSerialGC -XX:UseSerialOldGC)2.2 Parallel Scavenge收集器(-XX:UseParallelGC(年轻代)&#xff0c;-XX:UseParallelOldGC(老年代))2.…

浅谈MySQL主键

常用主键 常用主键 1&#xff09;自增 int、bigint等&#xff0c;顺序递增。 2&#xff09;雪花 雪花算法是因为有时间参数&#xff0c;所以是有序地&#xff0c;而且都是由数字组成。雪花id最大为64位,符合java中long的长度64位&#xff0c;适用于大规模分布式场景。 3&#…

docker基础操作与进阶 - 搭建基于pm2的node环境

1、为什么要使用docker 最近遇到一台机器需要部署两个不同版本node的情况&#xff0c;首先就想起了docker&#xff0c;想必还有其他类似环境问题的情况&#xff0c;需要进行项目隔离&#xff0c;而docker正是用来解决这个问题的。 docker的优势就在于环境隔离&#xff0c;相当…

第九篇、基于Arduino uno,用LCD1602(带IIC的)显示屏显示字符——结果导向

0、结果 说明&#xff1a;可以在LCD1602屏幕上面显示字符&#xff0c;实时的变量&#xff0c;也可以设置是否背光&#xff0c;如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;注意是带IIC通讯的LCD屏幕&#xff0c;外形如下。 2、连线 说明&#xff…

Hexo写文章不方便?用上GitHub Actions真的是泰裤辣

对于做个人博客的小伙伴来说 HEXO 大家肯定都是非常熟悉的吧,这是一个静态的个人博客程序,通过 HEXO + GitHub Pages 搭建免费个人博客也是很多博主的选择。但相信肯定也会有些困恼,比如博客的渲染维护太麻烦了,我要在一台新设备上写博客并推送到 GitHub Pages 还要先安装 …

【Redis】聊一下哨兵集群

上一篇中&#xff0c;介绍了哨兵机制可以减少主库实例下线的误判率&#xff0c;但是如果只有一个哨兵实例&#xff0c;出现宕机后没有办法保证服务的高可用&#xff0c;所以一般实际的生产环境都是搭建3个哨兵实例构建的集群进行运行。但是具体的运行机制是什么。其实主要就是三…

使用langchain及llama_index实现基于文档(长文本)的相似查询与询问

文章目录 1. 引言2. 简介3. 带关键字的查询方案4. 不带关键字的总结询问5. 实现代码 1. 引言 在调用ChatGPT接口时&#xff0c;我们常常受到4096个字符&#xff08;token&#xff09;的限制。这种限制对于处理长文本或者需要对文档进行相似查询和询问的场景来说是一个挑战。然…

如何复制投票链接投票怎样链接到公众号投票链接如何生成

关于微信投票&#xff0c;我们现在用的最多的就是小程序投票&#xff0c;今天的网络投票&#xff0c;在这里会教大家如何用“活动星投票”小程序来进行投票。 我们现在要以“妙趣拾光”为主题进行一次投票活动&#xff0c;我们可以在在微信小程序搜索&#xff0c;“活动星投票”…

【Python开发】FastAPI 03:请求参数—请求体

除了路径参数和查询参数&#xff0c;还有请求体&#xff0c;其用于传递 JSON、XML 或其他格式的数据&#xff0c;以便服务器能够读取并做出相应的处理&#xff0c;可以说请求体的作用更为强大。试想一下&#xff0c;如果存在七八个参数&#xff0c;路径参数和查询是不是就招架不…

Camera | 10.linux驱动 led架构-基于rk3568

前面文章我们简单给大家介绍了如何移植闪光灯芯片sgm3141&#xff0c;该驱动依赖了led子系统和v4l2子系统。 V4L2可以参考前面camera系列文章&#xff0c;本文主要讲述led子系统。 一、LED子系统框架 Linux内核的 led 子系统主要功能&#xff1a; 为每个设备在/sys/class/le…

《Linux内核源码分析》(2)进程原理及系统调用

《Linux内核源码分析》(2)进程原理及系统调用 一、进程 操作系统的作用&#xff1a;作为硬件的使用层&#xff0c;提供使用硬件资源的能力&#xff0c; 进程的作用&#xff1a;作为操作系统使用层&#xff0c;提供使用操作系统抽象出的资源层的能力 进程、线程和程序的区别&…

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码)

文章目录 一、前言二、安装2.1 基本要求2.2 Install Segment Anything 三、代码使用示例3.1 Automatically generating object masks with SAM3.2 Environment Set-up3.3 显示标注3.4 图像示例3.5 Automatic mask generation3.6 Automatic mask generation options 一、前言 目…

客户体验:响应速度是他们的 No.1 Pick么?

服务响应速度在为消费者提供服务时极为重要&#xff0c;那么&#xff0c;在消费者整体体验中&#xff0c;响应速度是否是消费者最在意的呢&#xff1f; 无论是对企业还是消费者来说&#xff0c;时间都至关重要。消费者在寻求客户服务时&#xff0c;不喜欢等待。根据《客户服务受…

【Python asyncio】零基础也能轻松掌握的学习路线与参考资料

Python asyncio是一个强大而易于使用的库&#xff0c;让Python程序员能够编写高效的异步IO应用程序。它为程序员提供了一种简单而优雅的方法来避免使用 Python GIL&#xff08;全局解释器锁&#xff09;&#xff0c;同时允许他们轻松地处理高并发的网络通信和并发任务执行。下面…

蓝桥杯数论总结:快速幂和矩阵快速幂

本文先是给出快速幂的原理&#xff0c;又由一道例题明确快速幂的Python代码模版&#xff1b;而后给出矩阵快速幂的原理&#xff08;介绍了矩阵相乘&#xff0c;对没学过线代者友好&#xff09;&#xff0c;和矩阵快速幂的模版。再给出快速幂和矩阵快速幂相关的题单。 目录 快…

Linux高级---k8s存储

文章目录 一、数据卷的概述二、关系图三、数据卷的类型1、emptydira、描述b、适用场景c、emptydir应用 2、hostpatha、描述b、适用场景c、hostpath应用 3、nfsa、描述b、适用场景c、nfs应用 4、PV和PVCa、描述b、存储卷和存储卷声明的关系c、存储卷声明的管理过程 5、PVa、资源…

10个可以快速用Python进行数据分析的小技巧

一些小提示和小技巧可能是非常有用的&#xff0c;特别是在编程领域。有时候使用一点点黑客技术&#xff0c;既可以节省时间&#xff0c;还可能挽救“生命”。 一个小小的快捷方式或附加组件有时真是天赐之物&#xff0c;并且可以成为真正的生产力助推器。所以&#xff0c;这里…