为什么我的局部变量显示为数字?

Why are my localized variables showing up as numbers?

所以,我正在将我的应用程序翻译成另一种语言。我有一些带有内插变量的文本,例如:

label.text = String(format: NSLocalizedString("Your name is %d", comment: "label that show user's name"), name)

现在,我转到 Localizable.strings 文件并翻译它(实际上我不会翻译):

"Your name is %d" = "Your name is %d"

但在我的 ViewController 中,变量 %d 不是以字母形式出现,而是以随机数字形式出现,例如 782393 等。为什么会这样?一件奇怪的事情是,在一篇文章中我做了 "same thing":

anotherLabel.text = String(format: NSLocalizedString("Your name is %d and you have %d assignments", comment: "label that show user's name"), name, someArray.count)

翻译时:

"Your name is %d and you have %d assignments" = "Your name is %d and you have %d assignments"

奇怪的是,第二个%d显示正常,数组中的对象数

这是怎么回事?

谢谢!

%d这样的东西被称为格式说明符。它们因您要打印的内容而异。要打印 int,您可以使用 %d。要打印 C 风格的字符串,请使用 %s,要打印 Objective-C 字符串或对象,请使用 %@

在你的例子中,你看到了一些随机数,因为你正试图打印一个格式化为 int 的字符串。由于您的 name 变量可能是 Objective-C 或 Swift 字符串,因此您应该使用 %@ 作为格式说明符。

您可以在此处找到可用说明符的完整列表:String Format Specifiers