没有办法从我自己的方式加载QTranslator。我想将.ts文件排除在我的应用程序的架构之外。我只想从数据库中加载我的语言,惠奇将从任何地方更新。我不想加载任何文件(.ts)。是否存在这样的方式:QTranslator::load(QStringList)?QStringList是一种语言对。
发布于 2019-01-03 10:31:32
QTranslator::translate方法是虚拟的--这意味着您可以创建自己的翻译器来扩展QTranslator并覆盖此方法(以及其他方法):
class MyTranslator : public QTranslator
{
public:
MyTranslator(QStringList data, QObject* parent) :
QTranslator(parent)
{
// ...
}
bool isEmpty() const override {
return false; //or use your own logic to determine if data contains translations
}
QString translate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1) const override {
// Use the data to somehow find your translation
}
};发布于 2019-01-03 10:12:04
我明白你的目标。为什么不从数据库中获取数据,将其保存为临时文件,通过QTranslator (常规方式)加载,然后删除临时文件?
另一种选择可能是超载:
::load( const *data,int,const QString &目录= QString())
(出发地:http://doc.qt.io/qt-5/qtranslator.html#load-2 ),它允许您在没有临时文件的情况下从自己的结构中加载。
https://stackoverflow.com/questions/54018850
复制相似问题