qt多个翻译文件|Qt如何生成ts文件

Ⅰ 关于Qt的工具的版本,各个概念,请大侠详细解释一下

你是要让qt能使用,两种套路都可行:1、安装傻瓜包QtSDK,大概1GB多,你要用到的所有东西都在这里面,按照默认的安装,装好后直接打开qtcreator就可以用。2、自己组装:(1)下载QtCreator(qt-creator-win-opensource-2.4.1.exe),就是你下载的50多MB的那个,按照默认的装上;(2)下载QtFramework(qt-win-opensource-4.8.0-mingw.exe),两三百兆的,按照默认的装上。打开qtcreator,菜单“工具”–》“选项”,在打开的对话框里选左边的“构建和运行”,右边选“Qt版本”,点击添加,找到你之前安装的QtFramework的文件夹里的bin子文件夹,找到qmake.exe,然后点击确定,这样就设置好了,就能解决你遇到的“找不到合适的QT版本”的问题。下面说这些工具的关系:要正常使用qt,至少要这些东西:(1)代码编写和调试的界面,就是qtcreator(2)代码编译工具合集,如MinGW(包括gcc和g++、gdb等)(3)Qt库本身,包括头文件、库文件和qtdesigner设计师、qtassitant帮助、qtlinguist翻译器三个工具。qt官方是这样打包的:上面(1)(2)部分打包一起的,如qt-creator-win-opensource-2.4.1.exe,把这里面的都装上,就有了代码编辑和编译的两部分工具。上面(3)部分打包在QtFramework里面,如qt-win-opensource-4.8.0-mingw.exe。你之所以无法编译qt代码,就因为没装这QtFramework。而qtSDK是1GB多的大包,包括上面提到的(1)(2)(3)全部的东西,装上QtSDK就什么都有了。

Ⅱ Qt中怎么加载静态库的翻译文件

我的做法是,建一个顶级pro,内容如下:TEMPLATE = subdirsSUBDIRS += mylib myapp TRANSLATIONS += XXX.ts

Ⅲ qtranslator实时翻译模式怎么设置

QT自带的内建标准对话框QFontDialog、QColorDialog、QMessageBox。默认的文字全是英文的。QLineEdit和QTextEdit的右键菜单,默认的文字也全是英文的。请问,如何可以把文字修改成中文或其他语言文字?解决方案如下:简体中文的解决思路是打开Qt安装目录下的translations,找到qt_zh_CN.qm和qt_zh_CN.ts。直接用qt_zh_CN.qm即可,如果确实有翻译不完全的,打开qt_zh_CN.ts翻译一下重新生成.qm文件即可。即:把translation/qt_zh_CN.qm加载到QTranslator中。其他国语言方法类似。参考源码:#include "mainwindow.h"#include <QApplication>#include <QTranslator>int main(int argc, char *argv[]){QApplication a(argc, argv);//加载Qt标准对话框的中文翻译文件QTranslator tran;bool ok = tran.load("qt_zh_CN.qm", "C:\\qt\\4.8.5_VS2010\\translations\\");//注,这里使用的是绝对路径,建议把.qm拷贝到工程目录下,然后使用相对路径.a.installTranslator(tran);//加载用户自定义的界面翻译文件QTranslator user;ok = user.load("user_zh.qm", ":/");a.installTranslator(user);//设置全局文字大小,非必需,根据自身情况使用QFont font = a.font();font.setPointSize(9);a.setFont(font);MainWindow w;w.show();return a.exec();}最终效果图:如果想动态得切换语言,则需要定义一个全局函数供调用,举例如下:#include "mainwindow.h"#include <QApplication>#include <QTranslator>QTranslator g_tran;//必须设置成全局变量,如果是局部变量,设置将失效。void setLanguage(int lan)//全局函数,可供其他文件调用{bool ok = false;if (lan == 1)//中文{ok = g_tran.load("qt_zh_CN.qm", ":/lan/");//这里使用Qt资源文件,把.qm文件拷贝到项目路径/lan之下}else if (lan == 2)//英文{ok = g_tran.load("", ":/lan/");}QCoreApplication::installTranslator(g_tran);//或者写成qApp->installTranslator(g_tran);}int main(int argc, char *argv[]){QApplication a(argc, argv);setLanguage(1);//调用全局函数MainWindow w;w.show();return a.exec();}

Ⅳ Qt如何生成.ts文件

下面介绍怎么制作和使用qt的翻译文件:一、生成.ts翻译文件(.ts是可读的翻译文件,使用简单的XML格式)启动qt的命令行工具: 开始 -> 程序-> qt4.7.0 -> qt4.7.0 commond prompt ;在命令行窗口中,进入到工程目录 ;利用编辑工具打开.pro文件 ,在末尾添加 TRANSLATIONS += yourproject_zh.ts等号右边的名字可以自己取,比如中文的就用后缀_zh, 英文的就用 _en ,便于识别4. 然后回到qt命令行窗口, 执行lupdate –verbose yourproject.pro //生成相应的.ts 文件二、编辑 .ts文件1)接上,在命令行窗口中执行linguist //启动Linguist语言翻译工具,可以翻译相应可见字符串(启动:命令行或者开始菜单均可)2)打开:工具界面中的File—>Open,可以打开所需的 .ts 文件3)翻译:界面中部的翻译栏,两行:第一行:Source Text 第二行:… Translation, 在地二行进行相应的翻译即可,翻译完一条之后点击“确定下一个”按钮。保存即可。三、生成.qm文件(.qm是经过.ts转换而成的二进制机器语言)lrelease –verbose spreadsheet.pro //将翻译好的文件生成.qm文件四、修改或新加入界面部件时只需从 lupdate -verbose 这一步开始执行,即可。然后把生成的.qm文件放到正确的目录中,即可实现翻译的效果。如果是安装了插件的visual studio ,也可以右击解决方案,实现 lupdate 和 lrelease 命令同样的功能。

Ⅳ qt installtranslator 可以加载多个文件吗

1、QTranslator类提供了对文本输出的国际化(internationalization)的支持。创建的Qtranslator对象translator包含了一组从源语言到目标语言的翻译(translations),这些翻译是通过QTranslator对象参照Qt翻译文件来实现的。

Ⅵ qt中已经翻译成中文为什么显示的还是英文

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());如果你想变要中文的话,就直接在主函数里加这么一段吧(上面一段时我平时用的,下面这段是网上找的)QTextCodec *codec = QTextCodec::codecForName("GB2312"); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec);我从来不用语言专家……呵呵

Ⅶ 求解!!Qt,c++高手们快快显身手。。。 帮忙解释一下下面的程序,注释下每行吧,小弟是初学者,拜托!!

#include"mp3window.h" //包含该头文件 #include<QApplication> //包含头文件,qt应用程序的主要头文件#include<QObject> //包含object类的头文件#include<QTranslator> //包含qt的翻译家头文件 int main(int argc,char **argv){ //main主函数入口 QApplication app(argc,argv); //创建应用程序,名叫app,参数是命令行参数 QTranslator tas; //创建翻译家对象,名叫tas tas.load("Chinese.qm"); //tas加载中文翻译文件,该文件名叫Chinese.qm app.installTranslator(&tas); //将上述翻译文件安装到应用程序app上,即翻译该程序 mp3window tt; //建立一个mp3窗口对象,名叫tt tt.show(); //将tt显示出来 app.exec(); //运行应用程序app,执行它的事件循环 system("killall -9 mplayer"); //调用系统的命令行参数,结束Mplayer进程}

Ⅷ QT5.2中的加载的翻译文件对应的中文翻译在哪里操作,需要安装linguist工具吗

qt又不是只有中国用,如果你的汉字要翻译成俄文,德文呢,这就得用到linguist工具了。当然这个工具个人感觉很麻烦,一般中文操作系统显示中文都没问题,就没必要用这个工具了。windows编码格式为GBK,linux为utf-8,显示乱码可以在程序里设下编码格式就行了。

Ⅸ 学习QT需要下载什么软件

Qt(官方发音同cute发音为 /kju:t/,虽然也俗称为Q.T.发音为 /kju:tiː/")是一个跨平台的C++应用程序开发框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,比如控制台工具和服务器。在发布 Qt 4.6 的同时,作为 Qt 开发跨平台 IDE 的Qt Creator也发布了更新版本。Qt Creator 1.3 和 Qt 4.6共同构成的 Qt SDK,包含了开发跨平台应用程序所需的全部功能。1、Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的IDE。Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:一个高级的C++代码编辑器 上下文感知帮助系统 可视化调试器 源代码管理 项目和构建管理工具Qt Creator在LGPL2.1版本授权下有效,并且接受代码贡献。2、Qt LinguistQt Linguist被称为Qt语言家。它的主要任务只是读取翻译文件、为翻译人员提供友好的翻译界面,它是用于界面国际化的重要工具。Linguist工具从4.5开始可以支持Gettext的PO文件格式。

Ⅹ 如何使用qt的国际化,本地化支持 步骤

国际化是指在代码设计上加入能方便的移植到其他国家和地区的特性。而本地化是指将具有国际化支持的代码翻译成本国或地区的语言,是本地用户更容易使用。 I18n是Internationalization的简写,l10n是Localization的简写。在Qt中创建可以国际化的代码最常见的是将要翻译的字符串加上tr语句,tr语句的标准语法是:Context::tr(sourceText,comment), 比如 QString str2 = QTextEdit::'''tr'''(“Letter”,”paper size”);Context(上下文)和comment(注释)是可以省略的,它们的意思分别是 Context:用于指明该翻译文字所在的上下文,一般为类名。因为同样的一个字串在不同的环境中翻译出来是不一样的,比如都是死,皇帝是崩,普通老百姓就是死翘。 comment: 用于指明要翻译文字的一个注释。因为作翻译的可能并不是写代码的人。比如spring既有弹簧的意思,又有春天的意思。designer里面选组建的时候,有一个blue spring(蓝色的弹簧)是用于addStretch()的,如果没加说明,有可能被翻译成蓝色的春天。在写代码的时候,我们可能希望把所有的字符串都放在一个地方,而方便于我们自己集中作改动。真正用到的时候,用一个字符常量指针去访问。那么我们可能想到这样写代码// Wrong,这种实现Qt不认识,无法作翻译const char *appName=“OpenDrawer 2D”;QString translated=tr(appName);//ok, 需要使用QT_TR_NOOP字串来提醒Qt系统该翻译的字串const char *appName=QT_TR_NOOP(“OpenDrawer 2D”);QString translated=tr(appName);QT_TR_NOOP的语法是QT_TR_NOOP(sourceText),它还有两个变体,语法如下QT_TRANSLATE_NOOP ( context, sourceText )QT_TRANSLATE_NOOP3 ( context, sourceText, comment )对应介绍的context和comment,其意思应该不难理解还有一种情况是在一个字串中有一部分来源于变量。那我们看看两种正误的写法// wrong 这种写法无法被正确识别statusBar()->showMessage('''tr'''(“Host ” + hostName+“ found”);//ok 利用了QString的arg()函数。在翻译时,需保留%1 statusBar()->showMessage('''tr'''(“Host %1 found”).arg(hostName)在书写了含可翻译语句的程序后,我们来看看如何生成翻译文件生成翻译文件首先要修改.pro工程文件,比如在app.pro里加入TRANSLATIONS+=app_en.ts app_zh_CN.ts app_zh_TW.ts #后面你可以加你想要翻译的各种版本CONFIG += localize_deployment SYMBIAN_SUPPORTED_LANGUAGES += zh_CNSYMBIAN_LANG.zh_CN = 31注:其中SYMBIAN_SUPPORTED_LANGUAGES ,SYMBIAN_LANG.zh_CN 两行是localize_deployment.prf 中缺少的两行,简体中文qs 文件只使用语言代号zh时 与系统解析的" 语言_区域"区域格式不符,请先这样设置。然后在shell, 里执行如下语句( 在Qt SDK 中请打开Qt for Desktop的命令行,目前lupdate 命令没有为Qt for symbian生成的版本)$ lupdate app.pro$ linguist app_zh_CN.ts$linguist app_zh_TW.ts $ lrelease *.ts$ lupdate app.pro #会根据.pro里指示的内容,生成app_zh_CN.ts和app_zh_TW.ts $ linguist app_zh_CN.ts 翻译其中一个文件,linguist是一个图形化的工具, $linguist app_zh_TW.ts 翻译另一个, $ lrelease *.ts 将.ts文本文件转换成.qm二进制文件,会生成app_zh_CN.qm和app_zh_TW.qm,方便应用加载.ts 是Text String的缩写;.qm是Qt Message的缩写所以翻译文件生成的流程就是 .cpp —> .ts —>.qm lupdate是负责找出qt源代码中需要翻译的字符串的。会搜tr/QT_TR_NOOP/QT_TRANSLATE_NOOP /QT_TRANSLATE_NOOP3等语句 linguist是手动翻译.ts文件的一个工具,真正加入本地语言是在这一步 lrelease是将.ts转换成.qm的一个工具。需要提醒一下的,lupdate生成的.ts文件不会覆盖掉已经翻译过的.ts文件,只会更新其中的内容。所以其名字为languange update有了翻译文件,我们看看系统是怎么加载翻译文件的。加载翻译文件一个例子,很简单的说明问题QTranslator qt_translator;QTranslator app_translator;if( usersettings.language == SimpleChinese ) {// Qt’s own translationsqt_translator.load("qt_zh");qApp->installTranslator( &qt_translator );// application translationapp_translator.load("myprogram_zh");qApp->installTranslator( &app_translator );}这里,我们看到有两个翻译加载器,其中一个是加载应用程序的翻译文件,也就是我们在第二个步骤中生成的文件。另外一个是Qt系统的翻译文件,比如 Qt的版权信息,designer的一些菜单等,名字叫qt_后带一个语言版本。有时候我们在系统启动的时候,就需要判断本地的语言,然后加载不同的翻译文件,那么代码就是如下结构QString locale = QLocale::system().name();QTranslator translator;translator.load(QString("trollprint_") + locale);app.installTranslator(&translator);在pro文件中部署qm文件,使得在symbian系统下能方便的检索到qm文件,而不用再load方法中设置路径symbian: { addFiles.sources = helloworld_en.ts helloworld_zh_CN.qm helloworld_zh_TW.qm helloworld_zh_HK.qmaddFiles.path = .DEPLOYMENT += addFiles}本地设置的语言,和我们的.qm前面部分并不完全一样,有一个.qm查询的过程,假如本地字语言名字是fr_CA.ISO8859-15,加载程序会按照 trollprint_fr_CA.ISO8859-15.qm,trollprint_fr_CA.qm,trollprint_fr.qm顺序来加载,如果以上都没有,将使用默认的语言一个极其简单的例子 //main.cppint main(int argc, char *argv[]){QApplication app(argc, argv);QTranslator translator;translator.load("hellotr_zh");app.installTranslator(&translator);QPushButton hello(QPushButton::tr("Hello world!"));hello.resize(100, 30);hello.show();return app.exec();}本地化中文例程:File:HelloWorld.zip, 语言代码可以在ISO 639-1 codes中找到(two-letter ISO 639 language code)。远程编译远程编译需要在pro文件中如下声明ts qm,否则远程编译器找不到 ts和 qm 文件OTHER_FILES += helloworld_en.ts helloworld_zh_CN.ts helloworld_en.qm helloworld_zh_CN.qm参见Remote Compiler troubleshooting相关文档Internationalization with Qt


赞 (0)