NSLocale - 无效的标识符

时间:2012-09-19 21:17:28

标签: objective-c ios localization nslocale

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

例如,如果传入“ar_NO”,一个语言为arabic且(无效)国家/地区代码为NO的语言环境,我得到的NSLocale对象似乎是合法的。例如,如果我从具有该区域设置的日历中调用-[NSCalendar firstWeekday],它将在星期一返回。我的问题是,来自哪里?如果iOS无法使用给定的标识符,iOS是否会回退到另一个语言环境?我认为它会回到基础“ar”,但是“ar”首先是周六,所以事实并非如此。

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

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

1 个答案:

答案 0 :(得分:0)

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