Установить язык по умолчанию при первом запуске IOS

Я пытаюсь установить язык для своего приложения при первом запуске.

Увидев этот вопрос, я решил сделать то же самое.

Установка языка по умолчанию для приложения iPhone при первом запуске

Я немного адаптировал код и сделал это:

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

Но этот код не работает (изменения вносятся после второго запуска). Однако следующий код выполняется без проблем:

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

Не понимаю почему. ITConf возвращает строку из файла .plist, см.:

NSString *fileP = [[NSBundle mainBundle] pathForResource:@"Conf" ofType:@"plist"];
dictionary = [[NSDictionary alloc] initWithContentsOfFile:fileP];
return dictionary[key];

Я проверил с помощью LLDB, и NSString возвращается правильно с правильным значением.

Для меня это похоже на черную магию!


person Antzi    schedule 17.03.2014    source источник


Ответы (2)


Следующая настройка в Info.plist устранила проблему с локализацией и раскадровкой RTL в моем случае.

Установить язык по умолчанию

person MarkII    schedule 02.06.2015

По сути, вы не можете полагаться на [NSBundle mainBundle] для поиска вашей конфигурации, поскольку ссылка на [NSBundle mainBundle] фактически настроит пакет из (в то время без изменений) настройки AppleLanguages.

person Anders Carling    schedule 21.09.2015