我正在为iPhone制作一款适用于日期的应用程序。我正在使用NSDateFormatter
将日期转换为字符串。方便的是,NSDateFormatter
根据区域格式自动使用用户的语言创建字符串。
由于我无法在所有可能的语言和地区中本地化我的应用,因此该应用仅限于英语,德语,西班牙语和其他一些应用。
例如,当应用程序为法国用户运行时,该应用程序默认为英语。这很好,但日期仍将使用法语进行转换。这导致像“Month:Juillet”而不是“Month:July”这样的字符串。
如何让NSDateFormatter
始终使用应用运行的语言?
我知道我可以使用NSLocalizedString()
来本地化NSLocale
个标识符,但这会产生错误的区域设置。
当用户通常使用“en_GB”区域并且我的应用程序通常已针对英语进行本地化时,我希望NSDateFormatter
使用“en_GB”而不仅仅是“en”或“en_US”。当用户运行法语时,我希望语言环境为“en”,如果他在“de_DE”区域中运行应用程序,我希望日期格式也是“de_DE”,因为该应用程序支持德语。
此致 费边
答案 0 :(得分:2)
当您创建日期格式化程序时,它会从当前区域设置初始化它的样式,但您可以覆盖它。
[未经测试] 您可以使用用户列表和可用的区域设置获取最佳区域设置 一个NSBundle:
+ (NSArray *)preferredLocalizationsFromArray:(NSArray *)localizationsArray
NSFormatter:
+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale
应为您提供指定区域设置的本地化格式字符串。
然后,您可以使用setDateFormat覆盖格式化程序的初始日期格式。