翻译qml对话框上的按钮

时间:2016-01-12 16:17:36

标签: android qt qml translation

我正在使用带有取消和是按钮的QML MessageDialog。我的手机设置为德语,但“取消”和“是”按钮未翻译。

我正在关注qt文档here并将其添加到我的主文件中:

QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(),
        QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);

它不起作用。这段代码:

qDebug() << QLibraryInfo::location(QLibraryInfo::TranslationsPath);
qDebug() << qtTranslator.isEmpty();

告诉我:

  1. 翻译路径为:/work/build/______________________________PADDING______________________________/translations

  2. qtTranslator对象为空。

  3. 我还为自己的字符串加载了一个翻译器,这样就可以了。

    所以我在android上正确初始化Qt内部蜇的翻译?

1 个答案:

答案 0 :(得分:1)

如果您想翻译您的应用程序,您应该使用它来分发qt翻译文件。对于android简单的复制翻译文件到assets文件夹。然后为qtTranslator设置此路径。

您可以使用qmake执行此操作。只需将其添加到您的.pro文件中:

android {
    ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
    TRDESTDIR = $$system_path($$PWD/android/assets/translations)
    QMAKE_POST_LINK = $$QMAKE_COPY $$shell_path($$[QT_INSTALL_TRANSLATIONS]/qt*_ru.qm) $$TRDESTDIR
}

当然,如果不同,您应该将ANDROID_PACKAGE_SOURCE_DIRTRDESTDIR更改为您的实际位置。您还应该将qt*_ru.qm更改为您的语言。

然后你可以加载翻译,如:

qtTranslator.load("qt_ru","assets:/translations")