0

如果我尝试使用某个语言环境标识符初始化 NSLocale,我如何判断它是否是合法标识符?无论我传入什么标识符,即使是垃圾标识符,NSLocale 仍然会被初始化为某种东西。

例如,如果您传入“ar_NO”,一个语言为阿拉伯语的语言环境和一个(无效)国家代码 NO,我得到的 NSLocale 对象似乎是合法的。例如,如果我-[NSCalendar firstWeekday]从具有该语言环境的日历调用,它将返回星期一。我的问题是,这是从哪里来的?如果 iOS 不能使用给定的标识符,它是否会退回到另一个语言环境?我认为它会回到基础“ar”,但“ar” firstWeekday 是星期六,所以情况并非如此。

注意:我知道标识符是由 ISO BCP 47 规范指定的,并且我知道该[NSLocale availableLocaleIdentifiers]功能,但这并没有真正帮助我,因为如果我使用不在该列表中的标识符,我仍然会得到一个 NSLocale。

有人有什么想法吗?提前致谢

4

1 回答 1

0

我认为如果给定的 NSLocale 无效,它将回退到本地默认设置。尝试更改本地设备设置,看看会发生什么!设置无效区域后,打印 [NSLocale currentLocale]; 看看它会返回什么。

于 2012-09-19T21:51:24.587 回答