Локализация iPhone для файлов XIB - PullRequest
7 голосов
/ 13 сентября 2010

Я только знакомлюсь с локализацией XIB-файлов, и мне было интересно, есть ли способ локализовать строки в XIB, ссылаясь непосредственно на списки ...*

Ответы [ 4 ]

7 голосов
/ 24 ноября 2011

Если вы не хотите локализовать файлы .xib напрямую, вы можете извлечь текст, который они содержат, в файлы .strings и, как только файлы .strings переведены, вставить их обратно в файл .xib для создания локализованных версий.,Эти операции извлечения / ввода выполняются с помощью утилиты ibtool.

Я нашел подробные инструкции о том, как это сделать на этом веб-сайте .

4 голосов
/ 18 марта 2013

Мой метод основывается на ответе @Clafou, однако он может быть немного более простым.Я просто установил IBOutlets для своих кнопок и строк меток (созданных на xib) в моем контроллере .h.

 @interface DetailViewController : UIViewController {


IBOutlet UILabel *TitleLabelMain;

}

Затем пошел к своему контроллеру .m и присвоил этим меткам и кнопкам значение с помощью NSLocalizableStrings.

- (void)viewWillAppear:(BOOL)animated {

TitleLabelMain.text = NSLocalizedString(@"titleLabel",nil);

И, конечно, вам понадобится значение, определенное в Localizable.strings

"titleLabel" = "THIS TEXT IS LOCALIZED!";
1 голос
/ 14 сентября 2010

Apple предложила способ сделать это - экспортировать строки в .strings файлы в .lproj пакетах, которые будут отключены в рамках локализации Cocoa.

Xcode может генерировать .strings файлыиз XIB, что делает локализацию довольно простой.

Щелкните правой кнопкой мыши файл XIB в XCode и выберите Get Info.Выберите вкладку General и в нижней части нажмите Make File Localizable.Затем вы сможете добавить локализации, нажав Add Localization на той же вкладке.

Я бы порекомендовал этот урок для пошаговой информации (и красивых картинок).

0 голосов
/ 05 сентября 2016

Я думаю, что локализация 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];
...