我有一个多语言的 Qt 应用程序,但我遇到了以下问题
- 应翻译大部分 UI 以匹配系统区域设置的语言
- 该应用程序还可以打印各种表格。这些表单的语言应该可以从 UI 语言中独立选择(这些表单将交给经常不会说本地语言的人)
- 如果可能,如果应用程序中的对话框也具有与前一点相同的功能,那就太好了。
我可以通过什么方式实现这一目标?我发现的所有示例都涉及翻译整个应用程序,但就我而言,我需要两个独立的翻译(尽管可能翻译成相同的语言)。
是否需要自己复制QApplication::translate
的回退机制,直接使用QTranslator::translate
,还是有更方便的方法?
最佳答案
假设您需要一个翻译用于整个应用程序,另一个用于对话。您需要做的是创建两个 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
关于c++ - 应用程序不同部分的不同语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16334419/