如何改变当前的语言?

时间:2011-05-16 08:52:52

标签: iphone

defs = [NSUserDefaults standardUserDefaults];
languages=[[NSMutableArray alloc]init];
languages= [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:14];
NSString *chn=@"zh-Hans";
NSString *eng=@"en";
[languages replaceObjectAtIndex:0 withObject:chn];
[languages replaceObjectAtIndex:14 withObject:eng];
defs=(NSUserDefaults*)languages;

我可以更改NSUserDefaults defs的内容。但它对苹果语没有影响。谁能帮我?我需要将defs的第一个对象存储为当前语言。

3 个答案:

答案 0 :(得分:1)

您似乎正在尝试为用户设置当前语言。

iOS sdk不支持;用户必须自己在设置中执行此操作。

如果您解释了尝试这样做的动机,也许我可以提供解决方案。

答案 1 :(得分:0)

您可能正在尝试这样做

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *languages = [defaults objectForKey:@"AppleLanguages"];

languages = [[languages mutableCopy] autorelease];

[languages replaceObjectAtIndex:0 withObject:@"zh-Hans"];
[languages replaceObjectAtIndex:14 withObject:@"en"]
[defaults setObject:languages forKey:@"AppleLanguages"];

但你确定要对用户强加一种语言吗?他总是可以选择通过设置应用程序更改语言。

您还需要确保已正确设置本地化字符串。如果您还没有,请阅读this文档。

答案 2 :(得分:0)

    NSMutableArray *languages= [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
    NSString *chn=@"zh-Hans";
    NSString *eng=@"en";
    [languages replaceObjectAtIndex:0 withObject:chn];
    [languages replaceObjectAtIndex:14 withObject:eng];
    [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    NSMutableArray *languagesAterChange= [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
    NSLog(@"Lang:%@  | %@",[languagesAterChange objectAtIndex:0],[languagesAterChange objectAtIndex:14]);

你去。