0

似乎大多数关于QTranslator和安装它们的文档QApplication都是针对.QLocale

在现实世界中,用户的区域设置必须考虑语言和国家/地区,这通常通过首先获得一种语言的翻译文件 ( en),然后为使用该语言的每个国家/地区的附加翻译文件 ( en_US) 来实现。

使用默认值QLocale(),加载适当翻译文件(一个、两个或无,取决于存在的文件)的最优雅方式是什么?

这里有一些正确的代码,但有点太麻烦了。

4

1 回答 1

0
bool Application::installTranslator(QString localeName)
{
  QTranslator* translator = new QTranslator(this);

  QString fileToLoad = ":/translators/translation_" + localeName + ".qm";

  if (!QFile::exists(fileToLoad))
    return;

  if (translator->load(fileToLoad)) // Caution this will perform stripping of '_' heuristic
    QApplication::installTranslator(translator);
}

void Application::installTranslator()
{
  QLocale locale;
  boost::optional<QString> optLanguage = m_commandLineParser->getLanguage();
  if (optLanguage)
    locale = QLocale(optLanguage.get());

  // Load language (en, de, etc.) translator first
  QString language = locale.name().left(2);
  installTranslator(language);

  // Load country translator (en_US, de_CH, etc.) translator second
  installTranslator(locale.name());
}
于 2017-10-12T21:13:24.523 回答