2016-01-12 5 views
0

Я использую QML MessageDialog с кнопкой «Отмена» и «Да». Мой телефон настроен на немецкий, но кнопка «Отмена» и «Да» не переведена.перевод кнопок на qml-диалогах

Я следую 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 пуст.

Я также загружаю переводчик для собственных строк, и это работает.

Итак, я правильно инициализирую перевод внутренних укусов Qt на андроид?

ответ

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_DIR и TRDESTDIR реальное местоположение, если оно отличается. Также вы должны изменить qt*_ru.qm на свой язык.

Затем вы можете загрузить перевод, как:

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

ли файлы копируются в Android/активы/переводы atomaticly добавлен в ": активы" на Android? Ваше решение не сработало для меня (или я все еще делаю что-то неправильно), '' qDebug() << qtTranslator.isEmpty(); '' '' все еще сообщает '' 'true'''. – Nathan

+0

хорошо, он работает. Единственное, что мне нужно скопировать в каталог «android-souces», а не в каталог «android». Можете ли вы обновить свой ответ? – Nathan

+0

Я написал, что вы меняете этот путь до своего фактического местоположения. Я имею в виду значение ANDROID_PACKAGE_SOURCE_DIR'. Хорошо, я добавил это к моему ответу – Evgeny