首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从数据库中加载QTranslator?

如何从数据库中加载QTranslator?
EN

Stack Overflow用户
提问于 2019-01-03 08:41:38
回答 2查看 231关注 0票数 0

没有办法从我自己的方式加载QTranslator。我想将.ts文件排除在我的应用程序的架构之外。我只想从数据库中加载我的语言,惠奇将从任何地方更新。我不想加载任何文件(.ts)。是否存在这样的方式:QTranslator::load(QStringList)?QStringList是一种语言对。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-03 10:31:32

QTranslator::translate方法是虚拟的--这意味着您可以创建自己的翻译器来扩展QTranslator并覆盖此方法(以及其他方法):

代码语言:javascript
复制
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
    }
};
票数 2
EN

Stack Overflow用户

发布于 2019-01-03 10:12:04

我明白你的目标。为什么不从数据库中获取数据,将其保存为临时文件,通过QTranslator (常规方式)加载,然后删除临时文件?

另一种选择可能是超载:

::load( const *data,int,const QString &目录= QString())

(出发地:http://doc.qt.io/qt-5/qtranslator.html#load-2 ),它允许您在没有临时文件的情况下从自己的结构中加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54018850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档