Ric*_*kiG 23 iphone localization iphone-sdk-3.1
在我的应用程序的本地化过程中,我经历了很多文档,在某处我确定我读到有一种方法可以获得一组与语言环境相关联的单元.
我相信它说的是"基于文化的单位......"之类的东西.
我想显示一些国家的华氏温度和里程数的温度和距离以及其他国家的摄氏温度和公里数.
有没有办法在iPhone SDK中访问这些单位的列表.
谢谢.
ken*_*ytm 29
您可以NSLocale用来检查货币单位,但对于帝国与公制,你需要自己制作一份清单.
哎呀.您可以检查英制与公制.有NSLocaleMeasurementSystem和NSLocaleUsesMetricSystem钥匙.
值得一提的是,Apple提供了一个很好的库(MKDistanceFormatter,在iOS 7中引入),可以自动将CLLocationDistance作为给定用户的语言环境和语言的相应字符串.
它做了一点点模糊的舍入(例如300英尺 - > 350英尺 - > 400英尺),但在单位之间很好地转换(例如英尺 - >英里,适当的时候这样做).除非您需要非常精确的值,否则此类非常适合返回两行代码中的距离粗略估计值.
MKDistanceFormatter *distanceFormatter = [[MKDistanceFormatter alloc] init];
[distanceFormatter setUnitStyle:MKDistanceFormatterUnitStyleAbbreviated]; // Optional
NSString *formattedDistance = [distanceFormatter stringFromDistance:100];
NSLog(@"%@",formattedDistance); // Prints "350 ft"
Run Code Online (Sandbox Code Playgroud)
我只想注意一下,就像iOS8的发布一样NSFormatters,至少有一些你提到的单位会有新的东西.
将会有NSLengthFormatter,NSMassFormatter并且NSEnergyFormatter非常容易使用 - 请参阅此iOS8 NSFormatter教程.以下是使用带有swift的NSLengthFormatter的示例:
let lengthFormatter = NSLengthFormatter()
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer)) //Kilometer: 1,000 km
Run Code Online (Sandbox Code Playgroud)