c++ - 应用程序不同部分的不同语言

标签 c++ qt multilingual

我有一个多语言的 Qt 应用程序,但我遇到了以下问题

  1. 应翻译大部分 UI 以匹配系统区域设置的语言
  2. 该应用程序还可以打印各种表格。这些表单的语言应该可以从 UI 语言中独立选择(这些表单将交给经常不会说本地语言的人)
  3. 如果可能,如果应用程序中的对话框也具有与前一点相同的功能,那就太好了。

我可以通过什么方式实现这一目标?我发现的所有示例都涉及翻译整个应用程序,但就我而言,我需要两个独立的翻译(尽管可能翻译成相同的语言)。

是否需要自己复制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/

相关文章:

c++ - cURL 显示 SSLv3 而不是 TLSv1

C++ 模板与继承

qt - Qt Quick Controls 2 上 SpinBox 的后缀选项

php - 如何将来自服务器的数据更改为其他语言(php mysql)

python - 如何向 Django(1.10) 管理添加更改语言下拉列表?

c++使用模板的 undefined reference

c++ - 使用SWIG将自定义C++异常动态地重新抛出为Python异常

qt - QX11EmbedWidget 和 QX11EmbedContainer

c++ - 如何在 QListWidget 中缩放自定义小部件?

c - Windows Hook 保存语言字符