• 15591阅读
  • 9回复

Qt国际化之动态语言切换 [复制链接]

上一主题 下一主题
离线zlbzeb
 
只看楼主 倒序阅读 楼主  发表于: 2008-04-18
— 本帖被 XChinux 执行加亮操作(2008-04-19) —
使用Qt语言学家生成完对应语言的.qm文件并放在../translations目录下。system.ini中存放着默认的系统语言DEFAULTLANGUAGE。
1.    在使用的类的*.h文件中声明QTranslator translator;变量
2.    在*.cpp中使用
void DisplayDemo::setLanguage()
{
    QString path = qApp->applicationDirPath();
    QString fileName = path+"/system.ini";
    QSettings settings(fileName, QSettings::IniFormat);
    // defaultLanguage
    settings.setValue("DEFAULTLANGUAGE", defaultLanguage);
    switch(defaultLanguage)
          {
      case 1:
          translator.load(path+"/translations/display_en.qm",path);
          break;
      case 0:
      default:
          translator.load(path+"/translations/display_zh.qm",path);
          }
    qApp->installTranslator(&translator);
}
在需要改换语言的地方调用此方法就可以了!!
离线eriol2004
只看该作者 1楼 发表于: 2008-04-19
刚好要用上,多谢楼主了.
びっくりしました~~
离线yfx2003

只看该作者 2楼 发表于: 2008-04-19
谢谢分享
www.qtcn.org/gpq4/
ajaxref.okajax.com/
离线duduqq

只看该作者 3楼 发表于: 2008-05-28
这个是在WINDOW下的啊,有没有LINUX下的
离线lovelydeath

只看该作者 4楼 发表于: 2008-05-31
对啊 所以我又问了一遍 LINUX下没有SYSTEM.INI的。。。
离线wwf_220
只看该作者 5楼 发表于: 2009-07-15
谢谢了!
离线shiroki

只看该作者 6楼 发表于: 2009-07-16
楼主的这个方法很不Qt哦, 在Qt里不用去读系统的配置, 应该用QLocale去获得当前的语言, 这样才能跨平台的说。
QLocale QLocale::system ()   [static]
Returns a QLocale object initialized to the system locale.
On Windows and Mac, this locale will use the decimal/grouping characters and date/time formats specified in the system configuration panel.
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线ttylikl

只看该作者 7楼 发表于: 2009-07-18
引用第6楼shiroki于2009-07-16 10:21发表的  :
楼主的这个方法很不Qt哦, 在Qt里不用去读系统的配置, 应该用QLocale去获得当前的语言, 这样才能跨平台的说。
QLocale QLocale::system ()   [static]
Returns a QLocale object initialized to the system locale.
On Windows and Mac, this locale will use the decimal/grouping characters and date/time formats specified in the system configuration panel.


用上shiroki MM的这个建议就完美多啦。
QM文件存储的时候将名称与QLocale::system的返回值关联起来。。。。。
离线anthonymo200
只看该作者 8楼 发表于: 2011-04-18
你这个应该是在QT4里面的编程吧, 如果在QT3呢, 只有main.cpp才有qApp的, 难道其他窗体里面也可以再定义一个qApp吗?  
离线zarelaky
只看该作者 9楼 发表于: 2011-06-24
我只问一句,如何实现多语言文字显示问题? 中文字体显示其他语言字体可能出乱码。难不成要在切换语言时所有控件统一调用一次setFont/?
快速回复
限100 字节
 
上一个 下一个