В основном вы можете использовать проект, созданный кем-то: Предварительная локализация в приложениях iOS
Или есть другой способ реализовать его самостоятельно. В вашем проекте должны быть все файлы локализации:
@implementation Language
static NSBundle *bundle = nil;
+(void)initialize {
NSArray* languages = [NSLocale preferredLanguages];
NSString *current = [languages objectAtIndex:0];
[self setLanguage:current];
}
/*
example calls:
[Language setLanguage:@"it"];
[Language setLanguage:@"de"];
*/
+(void)setLanguage:(NSString *)l {
NSLog(@"preferredLang: %@", l);
NSString *path = [[ NSBundle mainBundle ] pathForResource:l ofType:@"lproj" ];
bundle = [[NSBundle bundleWithPath:path] retain];
}
+(NSString *)get:(NSString *)key alter:(NSString *)alternate {
return [bundle localizedStringForKey:key value:alternate table:nil];
}
@end
Этот код хорош для того, что вам нужно. Но это только база. Таким образом, каждый текст должен быть загружен методом get:alter:
, поэтому он будет загружен на правильном языке. Как вы видите при инициализации, этот класс будет использовать системный язык, но после вызова метода setLanguage
он будет использовать язык, который вы установили. После того, как вы установили язык с помощью метода get:alter:
, вы должны перезагрузить весь ваш текст в вашем контроллере представления, снова вызвав метод get:alter:
для каждого отображаемого текста и присвоив результату нужную метку или текстовое поле или любое другое NSString
параметр типа, для которого требуется i18n. Так что работы больше, но это очень хорошая база. Я не думаю, что это может произойти автоматически, вы должны кодировать.