У моего приложения есть GUI, написанный в Qt QML, и мы успешно интернационализировали его, используя qsTr()
и Qt .ts
файлов. Теперь мы добавляем стороннюю поддержку плагинов через API qmldir Qt. В файлах .qml
плагина qsTr()
работает корректно, только если перевод уже находится в файлах .ts
главного приложения. Как сторонний автор QML добавляет локализованные строки в свой плагин qmldir?Как локализовать плагин Qt qmldir?
ответ
Я создал класс Translator
, чтобы организовать и загрузить переводы. У меня есть QVariantMap
, который содержит имя и имя языка, а затем, когда я создаю свой Translator
, я должен предоставить исходный каталог, поскольку это требование для загрузки переводов. Мой класс также заботится о сохранении в QSettings
используемого последнего языка.
Теперь, чтобы ответить на ваш вопрос, вы всегда можете перевести точно так же, как если бы это было обычное приложение на вашем файле проекта вы должны добавить что-то вроде этого:
1 - список всех ваших возможные переводы
TRANSLATIONS = \
translation_sp.ts \
translation_fr.ts
2 - Запуск LUPDATE для создания фактических файлов перевод
lupdate project.pro
3 - Запуск lrelease
Перевести с Лингвист и создать фактические переводы. В этом примере, этот шаг будет генерировать translation_sp.qm
и translation_fr.qm
4 - Развертывание переводов с плагином
После того, как у вас есть .qm
файлы развернуть их с помощью плагина, в идеале вы могли бы стандартизировать именование, может быть, всегда используя plugin_XX.qm
5 - Загрузить плагин перевода в приложении
Чтобы сделать это, вы будете иметь знать путь к файлу перевода и имя файла, так что если ваш плагин установлен в каталогах Qt по умолчанию, и вы стандартизированы перевод имен файлов это должно быть просто
qTranslator.load("plugin_XX.qm", "PATH_TO_TRANSLATION_FILE")
app->installTranslator(qtTranslator);
Я упростили это в моем классе. Вот файлы header и source моего класса Translator
, если вы хотите посмотреть.
А вот как вы его используете:
Translator translator(app.data(), "PATH_TO_TRANSLATION");
translator.addTranslation("SP", "plugin_XX.qm");
engine.rootContext()->setContextProperty("translator", &translator);
Вы можете установить несколько переводчиков, поэтому он будет работать для вашего приложения и ваших плагинов. Когда я писал свой класс, я не ожидал появления разных источников, но вы можете изменить его, чтобы каждый раз, когда вы добавляли перевод, для него должен был быть 2-буквенный код, имя файла и путь к нему.
Надеюсь, это поможет!
- 1. Как локализовать plupload плагин JQuery
- 2. Загрузить qmldir из файла QRC
- 3. Локализовать магазин, используя имя плагин wordpress
- 4. Как локализовать сайт Django
- 5. Плагин qt не загружается («не действительный плагин qt»)
- 6. Плагин QT с CMake
- 7. Что такое плагин QT?
- 8. Выгрузить плагин в Qt
- 9. Как локализовать панель инструментов pdf.js?
- 10. Как разработать настраиваемый виджет-плагин в Qt?
- 11. Как использовать плагин widget в qt 3?
- 12. Плагин TFS для «Qt Creator»
- 13. Плагин для платформы QT «окна»
- 14. Плагин QWT для QT 4.5
- 15. Плагин Qt Creator для Java
- 16. Как использовать плагин Qt 4 или саморазвитый плагин в приложении qt?
- 17. Пытается локализовать плагин на стеллах Bedrock в Wordpress
- 18. Как локализовать оповещения обозревателя?
- 19. Как локализовать российскую дату?
- 20. Как локализовать InfoPlist.strings вручную?
- 21. Как локализовать глобальную строку?
- 22. Как локализовать MvcSiteMapProvider
- 23. Как локализовать цифры?
- 24. Как локализовать расширение Safari?
- 25. Как локализовать Android DatePicker?
- 26. Как локализовать Web.sitemap
- 27. Как локализовать классы COM?
- 28. Как локализовать мнемонику?
- 29. Как локализовать мой wtform?
- 30. Как локализовать диалоги win32?
Мне нравится это решение, потому что оно использует все встроенные i18n Qt. Одним из негативных последствий является то, что плагин будет загружать свой перевод после того, как хост загрузит свой перевод. Qt просматривает переводы в обратном порядке добавления, поэтому плагин имеет право переопределять переводы хоста, если они используют одни и те же строки. Если авторы плагина компетентны, возможно, это нормально, но если они используют более низкие переводы (например, машинный перевод), это наносит вред хосту. –
Вы всегда можете контролировать заказ, скажем, у вас уже есть переводы, тогда вы загружаете плагин, вы можете выгружать все переводы (без отправки сигнала, что-то изменилось), а затем загружать их в том порядке, в котором вы хотите. – iktwo