我有一个多语言Qt应用程序,我有以下问题
我能以什么方式实现这一目标?我发现的所有示例都涉及翻译整个应用程序,但在我的情况下,我需要两个独立的翻译(尽管可能使用相同的语言)。
我是否需要自己复制QApplication::translate
的后备机制并直接使用QTranslator::translate
,还是有更方便的方式?
答案 0 :(得分:5)
假设您需要为整个应用程序进行一次翻译,并为对话框进行另一次翻译。您需要做的是创建两个qm文件:一个包含除此对话框之外的所有内容的翻译,另一个包含仅用于此对话框的翻译。现在您可以单独加载/卸载此qm文件。
我想你知道如何动态地改变翻译。
从评论中更新:
要创建单独的qm文件,您可以将所有主要源放在一个目录中,将所有对话源放到另一个目录中,然后调用lupdate -no-obsolete -recursive ../src/Form -ts Form_ru.ts
,其中../src/Form
是对话框目录。甚至可以在文件上调用lupdate -no-obsolete ../src/Form.ui ../src/Form.cpp ../src/Form.h -ts Form_ru.ts
。
结果脚本将是这样的:
lupdate -no-obsolete -recursive ../test.pro -ts test_ru.ts
lupdate -no-obsolete ../Form.ui ../Form.cpp ../Form.h -ts Form_ru.ts
答案 1 :(得分:1)
由于QTranslator类具有用于翻译的虚拟功能。您可以从QTranslator继承并重载translate函数以返回所需的每个语言环境的语言字符串,具体取决于您在继承类中设置的标志。
然后在创建打印页面之前将标志设置为要使用的区域设置,然后将其设置回来。
答案 2 :(得分:0)
我不确定它是否是一个选项,但您可以将您的应用程序拆分为两个:
这样,可以单独设置语言并翻译两个应用程序。