我想在Qt应用程序中加载本地化字符串。为此,我要遵循几个步骤。如果我错了,请纠正我。
注意:它适用于QString
但不适用于const char*
使用更新专业文件 翻译语言
生成.ts
&使用Qt编辑
语言学家。使用生成.qm
文件
lupdate和lrelease。
从特定文件加载.qm文件 位置。
以下是const char*
看起来的样子:
const char* sayHello = QT_TRANSLATE_NOOP("FriendlyConversation","hello");
LocalizationWithQT::LocalizationWithQT(QWidget *parent)
: QMainWindow(parent)
{
//ui.setupUi(this);
QString str = tr("say hello");
QPushButton *pushbutton = new QPushButton(tr(sayHello));
setCentralWidget(pushbutton)
}
以下是我加载.qm文件的方法:
QApplication a(argc, argv);
QTranslator translator;
bool val = translator.load("c:\\Data\\test\\hellotr_la");
a.installTranslator(&translator);
LocalizationWithQT w;
w.showMaximized();
return a.exec();
问题是,如果我提供任何替代的拉丁字符串到“sayhello”,它根本不加载。
我不知道错误在哪里。
答案 0 :(得分:0)
如果您使用tr(sayHellow)
,Qt将在当前上下文(= LocalizationWithQT
类)中查找sayHellow翻译。
您必须明确向Qt提供文本上下文:
QPushButton *pushbutton
= new QPushButton(qApp->translate("FriendlyConversation", sayHellow));