Qt lupdate и строки строк группы QTranslator в исключительных контекстах. Это означает, что перевод, определенный в одном контексте, не будет доступен в другом контексте.Автоматизация пользовательских контекстов QTranslator
Контекст по умолчанию в C++ - это имя класса, который переопределил QObject::tr()
. Контекст по умолчанию внутри декларативного QML - это текущее имя файла без расширения. Чтобы переопределить контекст перевода, можно использовать qApp->translate("context", "source")
или qsTranslate("context", "source")
в C++ или QML.
Я хочу, чтобы иметь возможность использовать один общий контекст трансляции в большом проекте, и я нахожу, что определение контекста перевода с каждой функцией перевода очень утомительно. Есть ли существующие или будущие расширения каркаса перевода Qt, которые упростили бы эту задачу? Я ищу что-то, что было бы так же просто, как tr("source")
и qsTr("source")
, но используйте общесистемный или общий по умолчанию контекст по умолчанию. Есть идеи?
Кажется, что это хорошо работает, спасибо! «ID» может быть сложной строкой с пробелом и некоторой пунктуацией, но она не отображается в лингвисте. Вместо этого перед вызовами 'qTTrId()'/'qsTrId()' нужно добавить специальные комментарии ''%% исходного текста ''. ... или написать сценарий для автоматической копирования строки ID в исходный тег. :) Надеюсь, мне не понадобится контекстное разделение по дороге. – Igor