Как я могу локализовать текст в xib-представлениях без создания xib для каждого языка?

Я хочу локализовать текст внутри xib-представления. В настоящее время у меня есть несколько xib для каждого языка.

Возможно ли локализовать текст внутри xib файла без создания отдельных xib для каждого языка?

Ответ 1

Похоже, вы хотите узнать о файлах .string.

Вот связанный вопрос, который вы можете посмотреть для получения дополнительной информации: Откройте файлы .string как NSDictionary

Ответ 2

Исходя из Android-фона, я задавал тот же вопрос. Даже Apple рекомендует создавать отдельные xib файлы для каждого языка. К счастью, этот процесс можно автоматизировать с помощью ibtool в сборке script. Это хорошо описано в в этой статье.

Ответ 3

Локализация применяется для текста, а не для Xib. Таким образом, вам не нужно рассмотрим файл xib. Локализация легко не слишком сложна. Проверьте эта ссылка поможет вам.

http://www.raywenderlich.com/2876/how-to-localize-an-iphone-app-tutorial

Ответ 4

Эта проблема сводила меня с ума.

Я столкнулся с этим сообщением и несколькими другими, пытаясь упростить локализацию xib. Я отправил свой метод включения IBOutles для меток/кнопок по этому вопросу, отлично поработал у меня, сохраняет все изменения, ограниченные файлами Localization.strings.

fooobar.com/questions/435672/...

Ответ 5

Я думаю, что локализовать xibs напрямую не является хорошим вариантом. Я использую https://github.com/steipete/Aspects, чтобы подключить метод awakeFromNib UILabel и локализовать там текст. Пример:

 #define Localized(_v_) NSLocalizedString(_v_, nil)
 NSError *err = nil;
[UILabel aspect_hookSelector:@selector(awakeFromNib)
                 withOptions:AspectPositionAfter
                  usingBlock:^(id<AspectInfo> aspectInfo) {
                      UILabel *label = aspectInfo.instance;
                      NSString *lStr = Localized(label.text);
                      if (lStr) {
                          label.text = lStr;
                      }
} error:&err];

Если у вас есть UIButton и другой UIView для обработки, вы можете просто подключить awakeFromNib UIView и локализовать каждый вид вида.