如果我使用[NSLocale preferredLanguages]
或[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]
,系统将返回语言列表。但是,我的应用程序可以更改此列表(不影响操作系统的其余部分)。有没有办法获得应用程序无法更改的实际全局列表(副本)?
这样做的目的是能够覆盖我的应用程序的手机语言设置,但也能够恢复到原始设置。如果无法访问不可变的全局语言列表,我将无法再次恢复(特别是如果用户更改了语言首选项)。如果我可以获得不可变列表,我可以简单地做这样的事情:
NSMutableArray *systemLanguages = [[someClass getImmutableSystemLanguages] mutableCopy];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (overrideLanguage {
[systemLanguages insertObject:@"languageCode" atIndex:0];
}
[defaults setObject:[systemLanguages copy] forKey"AppleLanguages"];
[defaults synchronize];