[英]qApp->installTranslator() and tr didn't translate?
I'm trying to change my application language dynamically : 我正在尝试动态更改我的应用程序语言:
void MainWindow::ChangeEvent(QEvent *event, QString *language)
{
if (event->type() == QEvent::LanguageChange) {
RetranslateInterface(language);
//ui.retranslateUi(this);
}
QWidget::changeEvent(event);
}
void MainWindow::RetranslateInterface(QString *language) {
QString lang = language->remove(2, language->length());
lang = lang.toLower();
qDebug()<<"lang"<<lang;
lang = "qt_" + lang + ".qm";
qDebug()<<"lang"<<lang;
if ( Translator )
qApp->removeTranslator( Translator );
qDebug()<<"Translator->load( lang)"<< Translator->load( QApplication::applicationDirPath()+"/"+ lang);
qApp->installTranslator( Translator );
//qDebug()<<"tr >>>>"<<qApp->translate("MainWindow","my english text");
setWindowTitle(tr("my english text"));
}
void MainWindow::Slot_ChLangue(QAction* Trigaction)
{
QString Selectedlanguage = Trigaction->text();
qDebug()<<"selected language"<<Selectedlanguage;
if (!Selectedlanguage.isEmpty()) {
QEvent *translate = new QEvent(QEvent::LanguageChange);
ChangeEvent(translate, &Selectedlanguage);
}
}
"qt_*.qm" was loaded but setWindowTitle(tr("my english text"));
“ qt _ *
setWindowTitle(tr("my english text"));
”已加载,但setWindowTitle(tr("my english text"));
didn't set the appropriate text 没有设置适当的文字
I tried this in the main function it didn't work either: 我在主要功能中尝试了这一点,但它也不起作用:
QTranslator translator;
if(QFile::exists(QApplication::applicationDirPath()+"/qt_fr.qm"))
qDebug()<<"loaded"<<translator.load(QApplication::applicationDirPath()+"/qt_fr.qm");
app.installTranslator(&translator);
qDebug()<<"out en français"<<app.tr("my english text");
I get always "my english text" in english. 我总是得到英文的“我的英文文本”。
Any help will be appreciated. 任何帮助将不胜感激。
Regarding your latest comment: 关于您的最新评论:
There is no predefined Dictionary, you need to translate the strings yourself (or have someone else translate them). 没有预定义的字典,您需要自己翻译字符串(或让其他人翻译它们)。
In order to do this, you need the following steps: 为此,您需要执行以下步骤:
TRANSLATIONS += qt_fr.ts
to your .pro file TRANSLATIONS += qt_fr.ts
lupdate -verbose <yourprofile>.pro
in order to create an XML-structured .ts file which contains the texts which shall be translated lupdate -verbose <yourprofile>.pro
,以创建一个XML结构的.ts文件,该文件包含应翻译的文本 linguist qt_fr.ts
in order to start Qt Linguist and easily translate strings linguist qt_fr.ts
来启动Qt语言专家并轻松翻译字符串 lupdate
lupdate
生成.qm文件 There is a tutorial on using translations here . 有使用翻译教程这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.