似乎大多数关于QTranslator和为QApplication安装它们的文档都假定simplistic cases适用于QLocale。
在现实世界中,用户的区域设置必须考虑语言和国家,这通常是通过首先为一种语言(en)提供翻译文件,然后为使用该语言的每个国家(en_US)提供额外的翻译文件来实现的。
使用默认的QLocale(),加载适当的翻译文件(一个、两个或无,取决于存在的文件)最优雅的方式是什么?
这里的some code是正确的,但是有点太麻烦了。
发布于 2017-10-13 05:13:25
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());
}https://stackoverflow.com/questions/46717504
复制相似问题