为什么我的本地化变量显示为数字?

时间:2016-05-03 00:08:02

标签: swift localization translation localizable.strings

所以,我正在将我的应用翻译成另一种语言。我有几个插入变量的文本,例如:

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等。为什么会发生这种情况?一个奇怪的事情是,在一个文本中,我做了同样的事情":

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$1 and you have %d$2 assignments" = "Your name is %d$1 and you have %d$2 assignments"

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

这是怎么回事?

谢谢!

1 个答案:

答案 0 :(得分:1)

defined?(Rails)之类的东西被称为格式说明符。它们根据您要打印的内容而有所不同。要打印%d,请使用int。要打印C样式字符串,请使用%d并打印使用%s的Objective-C字符串或对象。

在您的情况下,您看到一些随机数,因为您正在尝试打印格式为int的字符串。由于您的%@变量可能是Objective-C或Swift字符串,因此您应该使用name作为格式说明符。

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