首页 文章

翻译qml对话框上的按钮

提问于
浏览
0

我正在使用带有取消和是按钮的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();

告诉我:

  • 翻译路径是: /work/build/______________________________PADDING______________________________/translations

  • qtTranslator 对象为空 .

我还为我自己的字符串加载了一个翻译器,这是有效的 .

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

1 回答

  • 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")
    

相关问题