Таким образом, после дальнейшего чтения документации я нашел решение, которое, кажется, работает, и хотел опубликовать свои выводы на будущее:
1) Строки могут быть помечены для перевода с помощью: QT_TRANSLATE_NOOP(context, text)
2) Чтобы явно получить перевод, используйте QCoreApplication::translate()
для C++ и qsTranslate()
для QML. Затем файлы переводов будут искать подходящий перевод в определенном контексте. Если совпадение не найдено или эти две функции не использовались, вы получите исходный текст.
Вот пример, который я отвечал в мой вопрос:
QString MyClass::getError()
{
QString errorText = QT_TRANSLATE_NOOP("errorContex", "hardError1");
return errorText;
}
qDebug()<< getError(); //this will give you the original string
qDebug()<< QCoreApplication::translate("errorContex", getError()); //this will give you the translation of the string according to the set language
console.log(qsTranslate("errorContex", myclass.getError())) //this will give you the translation of the string in QML
Вот почему ваша внутренняя логика не может полагаться на манипуляции строки пользовательского интерфейса. Во всяком случае, ограничьте использование переведенных строк до самой точки, где отображается строка, и используйте псевдонимы везде в вашем приложении. –
Вот почему в такой ситуации у вас есть два значения: текст ошибки (считываемый человеком) и код ошибки (машиночитаемый). Код ошибки обычно представляет собой перечисление. –