繁体   English   中英

NSDateFormatter:仅在应用程序针对该语言进行本地化时才显示本地化日期

[英]NSDateFormatter: Only show localized dates if app is localized for the language

我正在为iPhone制作一款适用于日期的应用程序。 我正在使用NSDateFormatter将日期转换为字符串。 方便的是, NSDateFormatter根据区域格式自动使用用户的语言创建字符串。 由于我无法在所有可能的语言和地区中本地化我的应用,因此该应用仅限于英语,德语,西班牙语和其他一些应用。

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

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

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

问候,法比安

创建日期格式化程序时,它会从当前区域设置初始化它的样式,但您可以覆盖它。

[未测试]您可以使用NSBundle从用户列表和可用的语言环境中获取最佳语言环境:

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

NSFormatter:

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

应该为您提供指定区域设置的本地化格式字符串。

然后,您可以使用setDateFormat覆盖格式化程序的初始日期格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM