QT翻译上下文

QT翻译机制还是比较复杂的,实际翻译调用的是QCoreApplication的translate,如下:

translate的参数除了翻译的原文之外,另外还有一个很重要的是context(也就是上下文),

下面来看如下场景的写法,例如我边写了一个类,从QObject派上,而且加上了Q_OBJECT的宏,则演示代码如下:

namespace FirstLevel { namespace SecondLevel{

MyClass::MyClass()

{

}

void MyClass:doSomething()

{

QString s1=    tr("翻译内容1");

QString s2 = QObject::tr("翻译内容2");

}

在这里tr("翻译内容1")会将上下文解析为 FirstLevel::SecondLevel::MyClass

QObject::tr("翻译内容2")会将上下文解析为QObject

特别注意,这里问题出来了提取的ts文件中会将"翻译内容1"的上下文指定为MyClass,因此这就造成了翻译的错误,导致translate无法正确翻译。

所以注意一点就行,尽量使用QObject::tr,除了在界面UI的类中以外。

时间: 2024-08-29 09:33:27

QT翻译上下文的相关文章

Qt翻译---Thread Support in Qt

Thread Support in Qt QT提供线程支持在平台独立的线程类.一个安全线程的传递事件的方式,一个信号槽的链接在线程之中.这使得开发多线程容易.多线程程序也是一个有用的范例为不冻结用户界面情况下的耗时的操作. 推荐阅读: 这个文件打算给有多线程的知识和经验的读者.如果你是新手,看我们推荐的阅读清单. Threads Primer: A Guide to Multithreaded Programming Thread Time: The Multithreaded Programm

The Graphics View Coordinate System(Qt翻译)

Graphics View以笛卡尔坐标系为基础,items在scene上的位置和几何结构由x坐标和y坐标表示.当我们用未转置的view来观察scene时,scene中的一个单元由屏幕中的一个像素表示. 注:由于Graphics Views使用Qt的坐标系,y轴反向(y轴正方向向上)的坐标系是不支持的. Graphics View中有三个实用的坐标系:item坐标系.scene坐标系和view坐标系. 为了简化坐标系相关代码,Graphics View提供了便捷的函数,以方便在三个坐标系间转换.

qt翻译--QWaitCondition

QWaitCondition Class Reference[QtCore module] 该类提供一个情况变量来同步线程. #include <QWaitCondition> 注意:该类所有的函数是线程安全的. 公共函数: QWaitCondition ()   ~QWaitCondition () bool wait ( QMutex * mutex, unsigned long time = ULONG_MAX ) bool wait ( QReadWriteLock * readWri

Qt Installer Framework翻译(5-4)

自定义安装程序 您可以使用脚本通过以下方式来自定义安装程序: > 添加Qt Installer Framework操作,该操作由脚本提供,并由安装程序执行. > 添加新页面,该页面由您在package.xml文件中指定,并将其放置在packages文件夹中. > 修改现有页面,通过插入自定义用户界面元素来作为子部件. > 添加语言变体. 您可以同时使用组件脚本和控制脚本来自定义安装程序.通过在组件的package.xml文件的Script元素中指定组件脚本,可以将该脚本与特定的组件

qt 国际化(翻译时会触发changeEvent)

1. 修改工程文件 .pro ,加入翻译源文件 hello_world.ts: TRANSLATIONS += \        Resource/translations/hello_world.ts 写代码时需要注意下面两点:  2. 源码用 utf-8 字符集3. 源码中需要翻译的字符串必须用英文(不能有中文或其它语言),则需要用 tr()  函数.  例如: QMessageBox::information(this,tr("Information"),tr("Hel

第九篇:在SOUI中使用多语言翻译

为UI在不同地区显示不同的语言是产品国际化的一个重要要求. 在SOUI中实现了一套类似QT的多语言翻译机制:布局XML不需要调整,程序代码也不需要调整,只需要为不同地区的用户提供不同的语言翻译文件即可. 在SOUI中,我们实现了一个使用明文XML的语言翻译模块:translator.dll 为了使用多语言翻译,首先需要准备一个语言翻译的XML文件.demo中使用的翻译文件如下: <?xml version="1.0" encoding="utf-8"?>

(转载)java context上下文,通俗易懂

转载自http://blog.csdn.net/xiaokui008/article/details/8454949 Context在Java中的出现是如此频繁,但其中文翻译"上下文"又是如此诡异拗口,因此导致很多人不是很了解Context的具体含义是指什么,所以很有必要来深究一下这词的含义.先来举几个JAVA中用到Context的例子(1)JNDI的一个类javax.naming.InitialContext,它读取JNDI的一些配置信息,并内含对象和其在JNDI中的注册名称的映射信

qt 国际化

1. 修改工程文件 .pro ,加入翻译源文件 hello_world.ts: TRANSLATIONS += \ Resource/translations/hello_world.ts 写代码时需要注意下面两点: 2. 源码用 utf-8 字符集 3. 源码中需要翻译的字符串必须用英文(不能有中文或其它语言),则需要用 tr()  函数. 例如: QMessageBox::information(this,tr("Information"),tr("Hello world

context 上下文对象

最近学习中经常看到Context,没能明白中文含义,一番搜索后看到此文,颇为实在,特转之 Context在Java中的出现是如此频繁,但其中文翻译"上下文"又是如此诡异拗口,因此导致很多人不是很了解Context的具体含义是指什么,所以很有必要来深究一下这词的含义.先来举几个JAVA中用到Context的例子 (1)JNDI的一个类javax.naming.InitialContext,它读取JNDI的一些配置信息,并内含对象和其在JNDI中的注册名称的映射信息.请看下面的代码 Ini