Как изменить локализованные изображения во время выполнения - PullRequest
0 голосов
/ 05 марта 2012

Я создал две локализованные директории с именами en.lproj и fr.lproj.Я поместил два разных изображения с одинаковым именем like.png в эти локализованные каталоги.

Теперь я создал контроллер представления таблицы с двумя строками "английский" и "французский" текст соответственно.

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

Код:

-(NSString*) languageSelectedStringForKey:(NSString*) key
{

    NSString *path;
    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
    if([[userDefault valueForKey:@"language_Selected"] intValue] == 0)
      path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
    else if([[userDefault valueForKey:@"language_Selected"] intValue] == 1)
      path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"];

    NSBundle* languageBundle = [NSBundle bundleWithPath:path];
    NSString* str=[[languageBundle localizedStringForKey:key value:@"" table:nil] retain];
    return str;
}

С помощью приведенного выше кода динамически я могу изменить язык запущенного приложения.Но как получить изображения из этого пакета?

Любая идея?

Спасибо

1 Ответ

1 голос
/ 05 марта 2012

Предположительно, вы не хотите менять каждое изображение, только изображения, которые содержат текст или другой контент, зависящий от культуры.Для этих изображений вы можете добавить в файл localizable.strings запись, содержащую путь к изображению для заданного языка, и использовать этот путь вместо жестко заданного пути.

Тем не менее, во многих случаях выизображения будут включены в пользовательский интерфейс как часть .xib.Все, что вам нужно сделать в этих случаях, это локализовать xib (т.е. создать другую версию .xib для каждого языка - вы можете сделать это в XCode с помощью элемента управления Languages ​​на панели свойств) и просто изменить изображение в каждой языковой версии..xib с использованием Interface Builder.

...