мне нужно перевести свой английский интерфейс на французском, так что я сделал все необходимое с .ts и qm-файлы, загрузите его в классе QTranslator, и установить его на QApplication:Почему мой C++ Qt UI был переведен, но не мой QStrings в моей программе?
//in the InterfaceWidget constructor:
QTranslator myappTranslator;
bool loaded = myappTranslator.load("myApp_" + QLocale::system().name());
qDebug() << "Is translation file loaded?" << loaded; // RETURNS TRUE
QApplication::installTranslator(&myappTranslator);
ui.setupUi(this);
ui.retranslateUi(this); //works, it translates the UI
Позже , создать и прикрепить к InterfaceWidget другой виджет (на вкладке) под названием ConfigurationTabUI:
m_ConfigurationTabUI = new ConfigurationTabUI(ui.configTab);
соответствующий интерфейс также переведены на французский, правильно.
А вот моя проблема: в методах ConfigurationTabUI, он не работает, когда я пытаюсь перевести простой QString:
void ConfigurationTabUI::on_ValidButton_clicked(){
QString msg(ConfigurationTabUI::tr("message to translate"));
qDebug() << "translated string: " << msg; // NOT TRANSLATED
}
Я действительно понятия не имею, почему ... Спасибо за ваша помощь.
Примечание: Я использую Qt5.2, и я дважды проверил, что файл .ts содержит правую переведенную строку.
Что вы печатаете не та же переменная, где хранится переведенной строки. Вы сохранили перевод в «msg», но напечатали «l_sMsg», который не определен нигде, что мы можем видеть, и понятия не имеем, на что он может быть установлен. Если это опечатка, пожалуйста, исправьте вопрос, и мы снова посмотрим на него. – goug
Ах, извините, это была опечатка ... Посмотрите на это – toussa
Имеет ли класс 'ConfigurationTabUI' макрос' Q_OBJECT'? Что происходит, когда вы используете 'QObject :: tr' вместо' ConfigurationTabUI :: tr'? – Mike