Изменить язык приложения iOS на лету - PullRequest
25 голосов
/ 27 мая 2011

Я пишу приложение для iOS, в котором я хочу, чтобы пользователь мог изменять язык интерфейса независимо от языка iPhone или iPad. Вопрос в том, как перезагрузить соответствующий файл NIB для отображаемого в данный момент представления при изменении языка и как загрузить соответствующий файл .strings, чтобы NSLocalizedString работал надлежащим образом?

Ответы [ 2 ]

27 голосов
/ 27 мая 2011

Это должно сработать, предполагая, что de - это новый язык, выбранный пользователем. Также убедитесь, что вы повторно запускаете текущий вид.

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil] 
                                          forKey:@"AppleLanguages"];
4 голосов
/ 01 июня 2011

Лично мне не нравится идея передавать NIB-файлы переводчикам.Вместо этого я проектирую NIB, чтобы было достаточно места для неанглийских языков (обычно для них требуется на 50% больше места для текста), а затем я сохраняю все текстовые ресурсы в файлах Localizable.strings.в моем коде я установил текст для каждого элемента управления пользовательского интерфейса.

[_myButton setTitle:NSLocalizedString(@"My button title", 
                                      @"My description for translation file, e.g. including chars limit")
           forState:UIControlStateNormal];

Я считаю, что это облегчает управление процессом перевода.

Чтобы ответить на исходный вопрос, вы должны поместить этот код в функцию viewWillAppear вашего UIView, чтобыон перезагружается каждый раз, когда пользовательский интерфейс появляется снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...