Подтвердить что ты не робот

Как динамически переключаться между различными локализованными раскадными файлами objective-c

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

Суть прямолинейна.. на основе языка, выбранного пользователем. Определите файл локализованных строк (т.е. /path/to/app/Resources/Storyboard/en.lproj), а затем используйте что-то вроде

NSLocalizedStringFromTableInBundle(text, @"", [LanguageGateway currentLocalizedBundle], nil) 

чтобы локализовать строки. Все идет нормально.

Проблема возникает, когда я пытаюсь сделать то же самое с раскадровки. Я создал две локализованные версии моих раскадровки (вдохновение из этого учебника.. но основное различие заключалось в том, что я не мог выбрать use base internationalization опция b/c Я просто не мог выбрать базовые файлы), а затем где-то в моем методе локализации у меня было это:

- (void)launchLocalized {
    NSLog(@"switching to bundle %@", [LanguageGateway currentLocalizedBundle]);
    storyBoard_ = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[LanguageGateway currentBundle]];

в моих журналах я получил это:

switching to bundle NSBundle </path/to/App.app/en.lproj> (not yet loaded)
Could not load the "aboutUsMenuButton.png" image referenced from a nib in the bundle with identifier "(null)"
Could not load the "feedbackMenuButton_ar.png" image referenced from a nib in the bundle with identifier "(null)"

поэтому, видимо, локализованный пучок занимает некоторое время, чтобы загрузить. и в результате происходит странность (т.е. он не может правильно отображать изображения, и все становится неудобно).

вопрос:, как я могу обойти это? есть ли способ избежать этого состояния гонки и ждать, пока пакет не будет загружен, прежде чем получать изображения из него? В большинстве учебных пособий (например, на которых я ссылался) они полагаются на выход из приложения, а затем меняют настройки языка телефона. Я не хочу, чтобы это произошло. Я хочу, чтобы использование позволяло переключать языки внутри самого приложения.

4b9b3361