4

我目前正在为 iPhone 编写一个与日期密切相关的应用程序。我NSDateFormatter用来将日期转换为字符串。方便地NSDateFormatter根据区域格式自动创建用户语言的字符串。因为我无法在所有可能的语言和地区本地化我的应用程序,所以该应用程序仅本地化为英语、德语、西班牙语和其他一些语言。

例如,当应用程序为法语用户运行时,应用程序默认为英语。这很好,但日期仍将使用法语进行转换。这会产生像“Month: Juillet”这样的字符串,而不是“Month: July”。

如何使NSDateFormatter始终使用应用程序运行的语言?我知道我可以NSLocalizedString()用来本地化NSLocale标识符,但这会导致不正确的区域设置。

当用户通常使用“en_GB”区域并且我的应用程序通常针对英语进行本地化时,我希望NSDateFormatter使用“en_GB”而不仅仅是“en”或“en_US”。当用户运行法语时,我希望语言环境为“en”,如果他在“de_DE”区域运行应用程序,我也希望日期格式为“de_DE”,因为该应用程序支持德语。

问候, 法比安

4

1 回答 1

3

When you create the date formatter, it initialises it's style from the current locale, but you can override this.

[not tested] You can get the best locale from the users list and your available locale using NSBundle:

+ (NSArray *)preferredLocalizationsFromArray:(NSArray *)localizationsArray

NSFormatter:

+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale

Should give you a localised format string for the specified locale.

You can then use setDateFormat to override the initial date format for the formatter.

于 2012-07-31T08:56:24.073 回答