set AppleLanguages doesn't work on ios 7?

2.5k views Asked by At

I need to set the default language in my app. I use the set AppleLanguages technique in my main.m. But it doesn't work under iOS 7, though work in iOS 6. Is there any workaround for this?

[[NSUserDefaults standardUserDefaults] setObject:@[@"ru"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
2

There are 2 answers

0
Shlomi Hasin On

This code work for me on iOS 7 I use it to set Hebrew as the default lang

NSMutableArray* arr = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] mutableCopy];
[arr removeObject:targetLang];
[arr insertObject:targetLang atIndex:0];
[[NSUserDefaults standardUserDefaults] setObject:arr forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
0
Antzi On

Update your main.m this way

int main(int argc, char * argv[]) {
    @autoreleasepool {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:@[@"ru"] forKey:@"AppleLanguages"];
        [defaults synchronize];
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([/*Nameofyourdelegate*/class]));
    }
}

I'm still investigating on it, see Set default language at first run IOS