qt国际化

转载 2012年03月29日 10:50:09

 1.程序中要国际化的静态字符串用tr()<源代码是latin1字符串时>及trUtf8()<源代码不是latin1字符时>

2.动态string用qstring的arg()方法,如tr("host %1 found").arg(hostname),所谓动态是指需要参数生成字符串

3.在用tr转换变量之前,变量用QT_TR_NOOP,此方法用在静态字符串数组上
  如: static const char *greeting_strings[] = {
         QT_TR_NOOP("Hello"),
         QT_TR_NOOP("Goodbye")
     };
     tr(greeting_strings[0]);
 
4.宏QT_NO_CAST_FROM_ASCII强制tr检查

5. QTextCodec及QTextStream提供不同的字符编码支持。app可能偶尔需要输入输出不同于locale编码的字符编码。
app运行时,系统的locale决定了8-bit 数据的8-bit 编码方式。
当app在Cyrillic KOI8-R locale (the de-facto standard locale in Russia)需要输出Cyrillic in the ISO 8859-5 encoding,可用如下参考代码:
QString string = ...; // some Unicode text
 QTextCodec *codec = QTextCodec::codecForName("ISO 8859-5");
 QByteArray encodedString = codec->fromUnicode(string);
  从Unicode转化到local 8-bit 编码,一个简便方法是用QString::toLocal8Bit(),另一个是用 QString::toUtf8()
  烦方向的转换有 QString::fromUtf8() and QString::fromLocal8Bit(),或更通用的从ISO 8859-5 Cyrillic到Unicode的转换:
    QByteArray encodedString = ...; // some ISO 8859-5 encoded text
 QTextCodec *codec = QTextCodec::codecForName("ISO 8859-5");
 QString string = codec->toUnicode(encodedString);
 
QTextCodec::codecForLocale()返回的编码方式是最可能需要支持的编码方式,因为用户最可能使用它与其他人分享交流文档。

如果tr中不是latin1,在.qro中增加codecfortr = utf-8指明字符编码,在main中也应QTextCodec::setCodecfortr


6.QApplication::setLayoutDirection可以设置书写方向

7.可以把qm文件放在exe中,可以用qt的资源系统

8. 在app中用QTranslator::load()及QCoreApplication::installTranslator()根据用户语言加载语言文件.
qt可以安装多个QTranslator
int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QTranslator qtTranslator;
     qtTranslator.load("qt_" + QLocale::system().name(),
             QLibraryInfo::location(QLibraryInfo::TranslationsPath));
     app.installTranslator(&qtTranslator);

     QTranslator myappTranslator;
     myappTranslator.load("myapp_" + QLocale::system().name());
     app.installTranslator(&myappTranslator);

     ...
     return app.exec();
 }

9.qlocale可以指定数字和日期时间。其他locale信息可用C++标准函数setlocale或localeconv
10.icon的国际化,可在qre文件中用lang属性:
如<qreresource>
 </qreresource>
 <qreresource lang="es">
 </qreresource>
11. 1)在.qro中增加欲支持的语言,
  TRANSLATIONS=app-cn.ts \
  app-fr.ts \
  app-ca.ts

 2)lupdate提取所有的tr中的字符形成qm文件
 3)用qt linguist转换不同语言
 
 4)用lrelease把.ts文件转换成二进制的.qm文件

QT国际化例子

  • 2014年07月11日 12:45
  • 694KB
  • 下载

Qt之国际化

  • 2016年08月09日 09:47
  • 42KB
  • 下载

Qt中动态实现语言国际化

Qt中动态实现语言切换( Qt5.7.1)         为了方便在Widget.ui中放置Combo Box 对象名为languageBox。放置一个button,右击该button改变文本为:...
  • gao_qj
  • gao_qj
  • 2017年07月19日 18:51
  • 100

QT国际化中文

  • 2014年11月04日 14:33
  • 636KB
  • 下载

Qt翻译文件实现国际化

  • 2015年04月23日 10:11
  • 51KB
  • 下载

Qt程序国际化工具使用和相关代码编写规范

1.Qt程序国际化背景          Qt程序国际化指的是提取程序源码中的需要进行翻译的字符串,翻译成相应的语言,置于界面程序中,使得软件能够满足不同国家和地区的用户需求,软件的汉化即是程序国际化...
  • swrd456
  • swrd456
  • 2015年02月27日 16:38
  • 462

Qt应用程序国际化工程示例

  • 2017年06月14日 18:53
  • 21KB
  • 下载

Qt多语言国际化demo

  • 2017年08月04日 14:39
  • 979KB
  • 下载

QT中文乱码与国际化支持

QT国际化支持     Qt内部采用的全Unicode编码,这从根本上保证了多国语界面实现的正确性和便捷性。Qt本身提供的linguist工具,用来实现翻译过程十分方便。MFC中利用资源DLL切换资...

qt多国语言国际化

  • 2012年02月16日 16:54
  • 988KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:qt国际化
举报原因:
原因补充:

(最多只允许输入30个字)