我正在尝试使用 Qt 的tr()
函数进行翻译。
在.pro
文件中,我有:
TRANSLATIONS += languages/myapp_en.ts \
languages/myapp_es.ts
并在
main.cpp
中:QTranslator translator;
translator.load("myapp_es"); //espanol
app.installTranslator(&translator);
我运行
lupdate
并生成文件myapp_en.ts
,myapp_es.ts
。我编辑文件
myapp_es.ts
,例如:<context>
<name>Example</name>
<message>
<location filename="../example.cpp" line="24"/>
<source>Good night</source>
<translation>Buenas noches</translation> <!-- THIS IS MY EDIT -->
</message>
</context>
然后我运行
lrelease
,以便生成文件myapp_en.qm
,myapp_es.qm
。然后我在这样的代码中使用
tr()
:button->setText(tr("Good night"));
在
Q_OBJECT
类的构造函数中。但是文本仍以英语(“晚安”)显示,而不是以西类牙语显示。
我究竟做错了什么?
编辑:
Putting the
*.qm
files in the correct directory解决了该问题。只需确保它在Release目录中,而不在Debug中即可。 最佳答案
调用.qm
时,您需要包括扩展名translator.load
和正确的路径:
QTranslator translator;
translator.load("languages/myapp_es.qm"); //espanol
app.installTranslator(&translator);