это можно сделать легко, хотя мне потребовались недели, чтобы понять, как; -)
У меня есть приложение для iPhone под названием iDEX, которое является румынским словарем.На iPad румынский язык не доступен в качестве языка пользовательского интерфейса, поэтому я хотел предоставить пользователю возможность выбрать румынский язык в настройках приложения, поскольку настройки устройства его не включают.
Что нужно сделатьИнтернационализировать приложение и локализовать его как обычно.Затем, в основном методе , установите ключ AppleLanguages
стандарта NSUserDefaults
на выбранный вами язык и страну, например
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSArray arrayWithObject:@"ro_RO"] forKey:@"AppleLanguages"];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool drain];
return retVal;
}
обязательно , чтобы вы установили AppleLanguages
ключ до , когда вы запустите UIApplicationMain()
, потому что именно в этот момент загружается инфраструктура UIKit и определяется язык по умолчанию.
Также важно, чтобы вы указали и язык, и страну (например, @ "ro_RO", а не просто @ "ro"), иначе ваше приложение может аварийно завершить работу при установке ключа.
При этом,все вызовы NSBundle
, которые поддерживают локализацию, будут искать язык, который вы установили программно, а не тот, который установлен на устройстве.
Надеюсь, это поможет ...