QObject :: tr()没有正确翻译语言

时间:2014-07-28 14:54:18

标签: qt blackberry-10 blackberry-cascades

QLocale systemLocale;
LOG_ERROR() << "SYSTEM LANGUAGE:" << systemLocale.languageToString(systemLocale.language());
LOG_ERROR() << QObject::tr("Welcome");

第二行打印正确的语言,当我从手机设置中更改语言时,&#34;欢迎&#34;没有翻译成当前的系统语言。这可能是什么问题?

1 个答案:

答案 0 :(得分:0)

可能未加载翻译。以下是加载文件的方法:

QTranslator translator;
QString locale_string = QLocale().name();
QString filename = QString("my_app_%1").arg(locale_string);
if (translator.load(filename, "app/native/qm")) {
    app.installTranslator(&translator);
}

例如,这会尝试在法语设备上加载app/native/qm/my_app_fr.qm的翻译。

请注意,默认情况下,您必须在更改设备语言后重新启动应用程序。当手机语言发生变化时,您可以使用LocaleHandler更新翻译。收听onSystemLanguageChanged()信号,删除旧的翻译器,然后加载新的翻译器(与上面相同的代码)。