带变量的 NSLocalizedString 对我不起作用

NSLocalizedString with variables doesnt work for me

所以我有以下代码:

游戏场景:

Rule = Level / 10
let StrRule = String(Rule) //for example Level = 24 -> Rule = 2

let RegelString = String(format: NSLocalizedString("RegelText", comment: ""), StrRule)

//Give the String out in an UILabel as text
RegelLabel.text = RegelString

这就是我的 Localizable.strings 的样子:

"RegelText" = "You lose %d goals if you miss.";

所以我开始游戏,我的Level是24。所以Rule应该是2。

所以我构建并 运行 但是当我启动应用程序时,他向我显示了一些疯狂的数字。 标签就像:You lose 1314063968 goals if you miss.

为什么不起作用?

%d 用于数字。 StrRule 显然不是一个数字。您打算使用 %s 吗? RegelText 应该是这样的:

"RegelText" = "You lose %s goals if you miss.";

或者只使用 Rule 而不是将其转换为字符串。代码可能是这样的:

Rule = Level / 10
let RegelString = String(format: NSLocalizedString("RegelText", comment: ""), Rule)

在这种情况下 RegelText 仍会使用 %d

此外,我没有看到您对 Level / 10 的结果进行了四舍五入。我知道用整数除以整数会得到整数,而不是小数。但为了安全起见,我认为您应该将 Level / 10 放在 roundfloor 函数中。