我知道 Qt 小部件应用程序通常在编译时和运行时被翻译成多种语言。有很多信息可以通过标记要提取的字符串(包括 official example )来做到这一点。
不过,在这种情况下,没有字符串,而是来自外部(假设是配置)文件的输入,并且 GUI 是在运行时根据其内容构建的。虽然外部文件的内容在运行时是已知的,但源代码中没有与之对应的字符,因此无法标记任何内容以进行提取。
解决该问题的一种方法是准备与支持的语言一样多的配置文件。但是,遵循通常的工作流程会好得多,即
我找到了一些信息,例如here 和 here ,但是我仍然缺少一个很好的直接方法来实现这一点。
最佳答案
这是一种以相对方便的方式实现这一目标的方法:
MainWindow
。如果一个字符串在多个类中使用,则为每个类添加一个条目 QString
将const char *
变量转换为<varname>.toUtf8().data()
,作为QObject::tr() 现在您可以按照通常的工作流程来翻译 Qt 小部件应用程序。
将新字符串添加到外部文件时,不要忘记在 *.tri 文件中添加新条目。
您可以从 here 下载示例。每次编译前将data.json中的语言改为en、de、es、pl或ru,看看结果。
关于c++ - 如何从 Qt 小部件应用程序中的外部文件转换字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48282029/