【发布时间】:2015-03-14 20:53:36
【问题描述】:
我正在翻译我们的 Qt GUI 项目。
*.ts文件生成成功。
我使用 Qt Linguist 在 *.ts 文件中填写了翻译。
但在运行时,使用命名空间和静态成员的翻译不起作用。
其他翻译(在类中调用 tr() 方法时,继承自 QObject)工作正常。
我有以下代码(翻译不起作用):
命名空间示例:
// example with namespaces
// declaration in header
namespace Error
{
namespace RadionetworkInput
{
QString alreadyInUse = QT_TR_NOOP("already in use");
char requestFailed[] = QT_TR_NOOP("request failed");
}
}
在cpp中的用法:
// usage in cpp code0
QString error0 = Error::RadionetworkInput::alreadyInUse;
QString error1 = tr(Error::RadionetworkInput::requestFailed);
静态成员示例:
// example with static members
// declaration in header
namespace Error
{
class RadionetworkInput
{
public:
static const QString alreadyInUse;
static const char requestFailed[];
}
QString Error::RadionetworkInput::alreadyInUse = QT_TR_NOOP("already in use");
char Error::RadionetworkInput::requestFailed[] = QT_TR_NOOP("request failed");
}
在cpp代码中的使用
// usage in cpp code
QString error0 = Error::RadionetworkInput::alreadyInUse;
QString error1 = tr(Error::RadionetworkInput::requestFailed);
示例,带有工作翻译:
class ViewNetwork : public QObject
{
Q_OBJECT
public:
explicit ViewNetwork(QString name = tr("New Radionetwork"));
};
代码中的用法:
ViewNetwork::ViewNetwork(QString name)
{
QString dummy = name;
}
使用 QObject::tr() 代替 QT_TR_NOOP() 宏没有帮助。
【问题讨论】:
标签: qt static namespaces translation tr