现在的位置: 首页 > 综合 > 正文

Qt多语言

2017年12月21日 ⁄ 综合 ⁄ 共 1147字 ⁄ 字号 评论关闭

目标一:根据系统语言决定程序的显示语言

步骤
1、让程序支持语言替换:代码里用tr来标识要替换的语言资源
2、生成ts文件
      1、在pro中添加要生成的ts文件名

TRANSLATIONS= myapp_zh_CN.ts \
         += myapp_EN.ts

      2、使用lupdate工具,对pro文件做处理,会在pro同目录生成ts文件
3、生成qm文件
      1、ts文件本质是xml
      2、使用linguist工具,打开ts文件,增加文本对应的翻译内容即可
      3、翻译完成,通过文件菜单中的Release,生成qm
4、在程序中使用资源文件
      1、在main中添加以下代码      

QTranslator appTranslator;
QString fileName = "myapp_" + QLocale::system().name();
QString path = qApp->applicationDirPath();

//从外部文件中加载
check = appTranslator.load(fileName, path);
qDebug() << check;

a.installTranslator(&appTranslator);

目标二:动态切换语言

步骤:
1、要把程序中设置显示文本的代码独立出来,比如窗口里只有一个按钮的化,就要定义这样一个函数

void MainWindow::retranslateUi()
{
   m_pbnTest->setText(tr("test"));
}

2、窗口构造的时候调用该函数
3、在切换时可参考以下方式

void MainWindow::on_click()
{
   static bool flag = true;
   bool check;
  qApp->removeTranslator(&m_appTranslator);
   if(flag)
   {
       QString fileName = "myapp_" + QLocale::system().name();
       check = m_appTranslator.load(QString(":translations/%1").arg(fileName));
       flag = false;
       qDebug() << "Using chinese" << check;
   }
   else
   {
       QString fileName = "myapp_EN";
       check = m_appTranslator.load(QString(":translations/%1").arg(fileName));
       flag = true;
       qDebug() << "Using english" << check;
   }
   qApp->installTranslator(&m_appTranslator);
   retranslateUi();
}

这段代码是测试用的,目的是点一下换一种语言。

抱歉!评论已关闭.