翻译 qml 对话框上的按钮

translate buttons on qml dialogs

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

我正在关注 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 对象为空。

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

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

如果你想翻译你的应用程序,你应该用它分发 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")