Вопросы к Поиску с Алисой
Разница между tr() и translate() в Qt заключается в том, как они подготавливают строки к переводу. www.opennet.ru
tr() возвращает перевод заданной строки, если он существует, или оригинальную версию строки — в противном случае. www.opennet.ru Функция определена в классе QObject и перекрывается в каждом классе-потомке, который включает в своё определение макрос Q_OBJECT. www.opennet.ru В большинстве случаев контекст перевода не указывается явно при вызове tr(). www.opennet.ru
translate() — более универсальный способ подготовки строк к переводу. www.opennet.ru Функция принимает три аргумента: контекст, исходный текст и необязательный комментарий. www.opennet.ru Она полезна, когда нужно работать со строкой в глобальной функции, которая не относится ни к какому классу. habr.com
Таким образом, tr() подходит для перевода строк внутри подклассов QObject, а translate() — для работы с строками, которые не связаны с определённым классом. runebook.dev habr.com