我正在尝试使用 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.tsmyapp_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.qmmyapp_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);

07-28 13:12