一般情况下,我们使用NSLocalizedString
来加工需要翻译的字符串,如:
let says = NSLocalizedString("Hello World!", comment: "hello world")
一般情况这样就够了。如果你的字符串里包含了变量,这个就不能用了。比如:
let count = 10
let says = NSLocalizedString("It runs \(count) times", comment: "run times")
says
即使你翻译了,生成的程序也不能正确地显示。这是因为,目前版本的NSLocalizedString
不支持Swift的这种用法。它先把says
变成“It runs 10 times",然后查找是否有翻译与其匹配,显然是没有的。
在这里,我们需要使用String
的localizedStringWithFormat
方法。
let newSays = String.localizedStringWithFormat(NSLocalizedString("It runs %d times", comment: "new run times"), count)
然后就可以了。这么做很不Swift,但是,这个是目前唯一可用的办法。