全部:
通常我们在使用 Qt5 时有正常的项目结构:
/res
en-US-app.qm
en-US-dll.qm
/app
app.pro
/dll
dll.pro
strings.h
dll 和 app 需要使用相同的字符串,其中 strings.h 是:
#include <QObject>
class Strings:public QObject
{
Q_OBJECT
public:
#define STR_HELLO Strings::tr("你好")
#define STR_HELLO2 Strings::tr("好不好")
};
在 dll 中:
#include "../strings.h"
void Dll::pbClick()
{
ui->myPb->setText(STR_HELLO);
ui->myPb2->setText(STR_HELLO2);
}
在应用程序中:
#include "../strings.h"
void App::pbClick()
{
ui->myLbl->setText(STR_HELLO);
ui->myLbl2->setText(STR_HELLO2);
}
现在它适用于dll和app中的翻译,他们都使用过STR_HELLO和STR_HELLO2。
但不幸的是,我必须翻译两次STR_HELLO和STR_HELLO2!每个项目都需要翻译(en-US-app.ts 和 en-US-dll.ts)!
我怎样才能为所有项目只翻译一次???