【发布时间】:2017-09-20 09:00:07
【问题描述】:
我正在使用这段代码将日期本地化为 Swift 中的字符串:
if elapsedTime > 3600 {
let hourString = NSLocalizedString("hour ago", tableName: "v1.0.0", bundle: Bundle.main, value: "hour ago", comment: "")
let hoursString = NSLocalizedString("hours ago", tableName: "v1.0.0", bundle: Bundle.main, value: "hours ago", comment: "")
let hours = Int(elapsedTime/3600)
return "\(hours) " + (hours > 1 ? hoursString : hourString)
}
其中 elapsedTime 是以秒为单位的值。 英文本地化的结果是
6 hours ago 例如。我需要修改它以添加特定于语言的本地化,例如在法语中,它的格式不应该是[N] hours ago,而是il ya [N] heurs。有没有办法让它自动化,避免为它使用的不同语言添加特定的前缀?
提前致谢!
【问题讨论】:
-
Localizable.string可以使用“%@”、“%d”等。只需使用stringWithFormat:。另外,有Localizable.stringsdict的复数管理。那应该避免您进行hours >1测试(对于不同的语言,0、1、2 等的文本可能会有所不同。 -
谢谢,@Larme!您能否将您的评论转换为答案,对 stringWithFormat() 的用法进行更多解释?
-
在 Objective-C 中,我们使用
stringWithFormat:,在 Swift 中,我们倾向于像其他语言(JavaScript、C++)一样使用+和\(var)。文档:developer.apple.com/library/content/documentation/Cocoa/… 和 developer.apple.com/library/content/documentation/Cocoa/… 用于 stringDict:developer.apple.com/library/content/documentation/MacOSX/…
标签: ios swift date localization nslocalizedstring