我的应用程序有一些qm文件。 (pr_en.qm,pr_ru.qm)。我可以通过
加载它们translator.load(fileName, '.');
qApp->installTranslator(translator);
我想要构建动态菜单(英语,俄语)来选择语言。但是,如何从qm文件中提取这些常量(英语,俄语)而不是它的名称(pr_en.qm,pr_ru.qm)。感谢。
答案 0 :(得分:8)
我建议采用两种方法:
首先会声明特殊的翻译领域,如:
tr("__LANGNAME__")
将在每个翻译文件中填充正确的语言名称(甚至是本机名称)。然后,您可以列出所有可用的翻译,逐个加载并使用QTranslator::translate(const char * context, const char * sourceText, const char * disambiguation = 0)
方法。
示例:
QStringList availableLanguages;
QDirIterator qmIt(pathToQm, QStringList() << "*.qm", QDir::Files);
while(qmIt.hasNext())
{
qmIt.next();
QFileInfo finfo = qmIt.fileInfo();
QTranslator translator;
translator.load(finfo.baseName(), pathToQm);
availableLanguages << translator.translate("__LANGNAME__");
}
qDebug() << availableLanguages;
我的第二个方法是使用QLocale和QLocale :: Language。我将为qm目录中的每个文件基本名称创建QLocale对象,然后使用QLocale :: Language枚举以QLocale::languageToString
方法获取语言名称。