gpt4 book ai didi

c++ - qApp->installTranslator() 和 tr 没有翻译?

转载 作者:行者123 更新时间:2023-11-28 00:52:13 29 4
gpt4 key购买 nike

我正在尝试动态更改我的应用程序语言:

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”已加载但 setWindowTitle(tr("my english text")); 没有设置适当的文本

我在主函数中试过它也没有用:

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");

我总是得到英文的“我的英文文本”。

我们将不胜感激。

最佳答案

关于您的最新评论:

没有预定义的字典,需要自己翻译字符串(或者找人翻译)。

为此,您需要执行以下步骤:

  • 在您的代码中调用 tr()
  • 添加类似 TRANSLATIONS += qt_fr.ts 的内容到您的 .pro 文件
  • 调用lupdate -verbose <yourprofile>.pro为了创建一个 XML 结构的 .ts 文件,其中包含要翻译的文本
  • 调用linguist qt_fr.ts为了启动 Qt Linguist 并轻松翻译字符串
  • 从 Qt Linguist 或使用 lupdate 生成 .qm 文件
  • 运行应用程序

有一个使用翻译的教程here .

关于c++ - qApp->installTranslator() 和 tr 没有翻译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13530690/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com