Как заставить приложение IOS использовать определенную локализацию?

У меня есть приложение с двумя локализациями (на иврите и на английском), и меня попросили отменить локализацию на английском, чтобы приложение не зависело от языка вашего устройства (но сохраните локализацию для будущего использования).

локализация осуществляется через Localizable.strings, а также Xib локализацию (выделено из них).

Есть ли способ сказать приложению всегда использовать определенную локализацию и игнорировать язык устройства?

Спасибо!

2 ответа

Решение

В этом случае просто установите ключ по умолчанию AppleLanguages ​​EARLY при запуске, чтобы переопределить настройки IOS

(EARLY = до использования xib/storyboard или NSLocalizedString)

NSString *langCultureCode = @"he";
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@[langCultureCode] forKey:@"AppleLanguages"];
[defaults synchronize];

Я адаптировал это к Swift и использую это для легкого тестирования локализаций. Когда помещено в AppDelegate->didFinishLaunchingWithOptions, симулятор должен запускаться дважды, чтобы получить правильные настройки, но, возможно, есть лучший способ.

В примере используется датская локализация, и больше можно найти здесь: Коды локалей для папок iPhone lproj

let langCultureCode: String = "da"
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject([langCultureCode], forKey: "AppleLanguages")
defaults.synchronize()

И чтобы удалить значения по умолчанию еще раз:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.removeObjectForKey("AppleLanguages")
defaults.synchronize()
Другие вопросы по тегам