Локализуйте приложение iPad во время выполнения - PullRequest
3 голосов
/ 09 февраля 2012

Я разрабатываю приложение, которое требует локализации во время выполнения, я имею в виду, что это будет кнопка для мгновенного изменения языка, я искал о локализации и нашел, как локализовать приложение зависитна международном языке iPhone.

Я локализовал все имеющиеся у меня файлы пера и изменил дизайн каждого файла пера в соответствии с его языком, но как я могу изменить файл пера, когда пользователь нажимает кнопку?

любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

В основном вы можете использовать проект, созданный кем-то: Предварительная локализация в приложениях 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. Так что работы больше, но это очень хорошая база. Я не думаю, что это может произойти автоматически, вы должны кодировать.

1 голос
/ 21 февраля 2012

См. Мой ответ на Создание локализованного приложения для iPhone, но позволяющее пользователю менять язык для приложения .

По сути, вы разделяете свои локализации на таблицы и пакеты, а не используете встроенную систему локализации. Вы просматриваете свои строки из таблиц для каждого языка и файлы пера из пакетов для каждого языка.

...