翻译(国际化)文本的Qt原始值

翻译(国际化)文本的Qt原始值,qt,internationalization,default,multilingual,Qt,Internationalization,Default,Multilingual,好的,这是我的问题。 我有一个多语言应用程序。我用lupdate和lrelease翻译ui 我有一些选项,用户可以编辑,他可以从“输入选择”对话框编辑它们。这些值是例如“质量”和“速度” 现在,我想用它们的翻译来替换这些值 稍后,当我检查选项的值时,我只想使用原始值。例如:我必须检查value==“Speed”,但是如果语言没有设置为英语,我在选择对话框中将不会有“Speed”值,而是有翻译为“Speed”的字符串 如果ui已设置为其他语言,如何从代码中访问默认(英语)值?如果我理解正确,您可以

好的,这是我的问题。 我有一个多语言应用程序。我用lupdate和lrelease翻译ui

我有一些选项,用户可以编辑,他可以从“输入选择”对话框编辑它们。这些值是例如“质量”和“速度”

现在,我想用它们的翻译来替换这些值

稍后,当我检查选项的值时,我只想使用原始值。例如:我必须检查value==“Speed”,但是如果语言没有设置为英语,我在选择对话框中将不会有“Speed”值,而是有翻译为“Speed”的字符串


如果ui已设置为其他语言,如何从代码中访问默认(英语)值?

如果我理解正确,您可以将英语值设置为常量并引用它

const char* kEnglishKey = "Speed";
...
if (value == tr(kEnglishKey)) {
  ...
  DoSomeThingWith(kEnglishKey);
}

tr
是一个运行时操作,而不是编译时操作。

如果我理解正确,您可以将英文值设置为常量并引用它

const char* kEnglishKey = "Speed";
...
if (value == tr(kEnglishKey)) {
  ...
  DoSomeThingWith(kEnglishKey);
}

tr
是一个运行时操作,而不是编译时操作。

谢谢。但问题在于对话。我将转换后的值加载到其中。但它将所选文本作为输出返回。翻译后的文本是正确的,因此
tr(kEnglishKey)
将返回翻译后的值,您可以根据选择进行测试。这就是为什么我提到
tr
是一个运行时活动。您的代码仍然包含英文文本,但会在运行时查找。也许我不理解这个问题。如果你发布了一些不起作用的代码,也许我会更好地知道哪里出了问题。我能用If(value==tr(“Speed”)吗?还是它必须是常量?你可以用
tr(“Speed”)
。我只是把它设为一个常数,因为听起来你可能也需要未翻译的值。那么你就没有任何“魔法弦”,以防你在路上把“速度”改成“速度”之类的东西。谢谢。但问题在于对话。我将转换后的值加载到其中。但它将所选文本作为输出返回。翻译后的文本是正确的,因此
tr(kEnglishKey)
将返回翻译后的值,您可以根据选择进行测试。这就是为什么我提到
tr
是一个运行时活动。您的代码仍然包含英文文本,但会在运行时查找。也许我不理解这个问题。如果你发布了一些不起作用的代码,也许我会更好地知道哪里出了问题。我能用If(value==tr(“Speed”)吗?还是它必须是常量?你可以用
tr(“Speed”)
。我只是把它设为一个常数,因为听起来你可能也需要未翻译的值。那么你就没有任何“魔法弦”,以防你在路上把“速度”改成“速度”之类的东西。