Я работаю над переводом нашего проекта Qt GUI.
Файл *.ts создан успешно.
Я заполнил файл *.ts переводами с помощью Qt Linguist.
Но во время выполнения перевод с пространствами имен и статическими членами не работает.
Другие переводы (при вызове метода 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()
не помогает.