Qt 多国语言部分翻译不能成功加载的原因探索

缘起:目前这款软件翻译了十几种语言,出现了一小部分翻译的词汇不能正常加载。

 

这款软件已经维护更新多次,但此前这个问题的解决方案,并不是最优的。头疼医头脚疼医脚,治标不治本。随着类的优化调整,此问题又一次出现,暴露出原解决方案的弊端。不从根本上解决这个问题,问题将会重复出现。这也是搬砖和技术的区别。

 

出现的原因:部分词汇的初始化比翻译加载的时刻更早,所以加载的词汇是没翻译过的,之前的解决方案是使用这些词汇时,重新加载,这导致这些词汇反复加载,逻辑上是冗余代码。

 

本次解决方案:在界面加载时,去初始化这些词汇。

 

深层次的原因:为什么这些词汇会那么早加载?因为这次词汇的加载时间比应用实例初始化还早。

    QApplication a(argc, argv);//比这句还早加载,这些词汇是静态变量初始化,所在的类不是继承QObject,如果是继承自QObject的加载时机会迟一些,不会出现加载翻译不成功的问题。这句应用实例初始化之后,实例加载翻译。

 

考虑在

MainWindow w;//界面初始化时去加载这些词汇,就能保证加载出来的词汇是翻译过的,因为这句在翻译加载之后。

所以,最优解决方案是词汇的初始化放到界面初始化里。

 

 

 

 

 

 

 

 

你可能感兴趣的:(Qt)