Qt国际化之动态语言切换

使用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);
}
在需要改换语言的地方调用此方法 就可以了!!

 

 

==============================

引用
引用第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的返回值关联起来。。。。。

你可能感兴趣的:(Qt国际化之动态语言切换)