所以,我正在将我的应用翻译成另一种语言。我有几个插入变量的文本,例如:
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 正常显示数组中的对象数
这是怎么回事?
谢谢!
答案 0 :(得分:1)
像defined?(Rails)
之类的东西被称为格式说明符。它们根据您要打印的内容而有所不同。要打印%d
,请使用int
。要打印C样式字符串,请使用%d
并打印使用%s
的Objective-C字符串或对象。
在您的情况下,您看到一些随机数,因为您正在尝试打印格式为int的字符串。由于您的%@
变量可能是Objective-C或Swift字符串,因此您应该使用name
作为格式说明符。
您可以在此处找到可用说明符的完整列表:String Format Specifiers