Локализация Интерфейсного Разработчика - PullRequest
3 голосов
/ 14 октября 2011

Я копался в Документах Apple для разработчиков, чтобы понять, как должна осуществляться локализация / интернационализация приложений, и я хотел понять, как Interface Builder помогает вам управлять несколькими файлами NIB для нескольких языков ... документы указывают мне на "локализацию" "в руководстве пользователя Interface Builder , но я не могу его найти ... мне найти его в документах Xcode 4? Может кто-нибудь указать мне документ, который показывает вам, как реализовать локализацию в Интерфейсном Разработчике / XCode? Где находится "Руководство пользователя Interface Builder"?

Заранее спасибо.

PS: я должен начать реализацию моего приложения с использованием локализованных строк / пакетов с самого начала, даже если я только начинаю с одного языка? Трудно ли «интернационализировать» приложение, которое не было разработано с учетом поддержки нескольких языков?

Ответы [ 3 ]

4 голосов
/ 14 октября 2011

Джани Я думаю, вы пытались найти это:

http://developer.apple.com/internationalization/

(более подробно: http://developer.apple.com/library/ios/#documentation/MacOSX/Conceptual/BPInternational/BPInternational.html)

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

2 голосов
/ 19 марта 2013

Я согласен с предыдущими комментариями относительно сложности этих решений. По этой причине я только что создал новый инструмент, который автоматически локализует ваши файлы IB . Проверьте это здесь: https://github.com/angelolloqui/AGi18n

0 голосов
/ 01 октября 2014

Я написал простую категорию, которая обрабатывает локализацию с помощью IB.

Заголовочный файл выглядит следующим образом.

@interface UIView (Localization)

@property (nonatomic, strong) NSString *mainTextKey;
@property (nonatomic, strong) NSString *secondaryTextKey;

- (void)updateMainText;
- (void)updateSecondaryText;

@end

Осуществление

@implementation UIView (Localization)


- (NSString *)mainTextKey{

    return objc_getAssociatedObject(self, @selector(mainTextKey));

}

- (void)setMainTextKey:(NSString *)mainTextKey{

    objc_setAssociatedObject(self, @selector(mainTextKey), mainTextKey, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    [self updateMainText];


}

- (NSString *)secondaryTextKey{

    return objc_getAssociatedObject(self, @selector(secondaryTextKey));

}

- (void)setSecondaryTextKey:(NSString *)secondaryTextKey{

    objc_setAssociatedObject(self, @selector(secondaryTextKey), secondaryTextKey, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    [self updateSecondaryText];
}

- (void)updateMainText{

    //handle all cases one by one

    if([self isKindOfClass:[UILabel class]]){
        UILabel *label = (UILabel *)self;
        label.text= NSLocalizedString(self.mainTextKey, nil) ;
    }else if ([self isKindOfClass:[UIButton class]]){

        UIButton *btn = (UIButton *)self;
        [btn setTitle:NSLocalizedString(self.mainTextKey, nil)  forState:UIControlStateNormal];

    }


}
- (void)updateSecondaryText{
    //handle all cases one by one

}



@end

Базовое использование:

  1. Создание элемента UIView, например UIButton или UIlable
  2. Укажите ваш строковый ключ внутри UserDefinedAttributes для ключа «mainTextKey» или «secondTextKey».
  3. Запустите приложение, и оно загрузит нужный текст из вашего строкового файла.

Это написано без каких-либо корректур, извините за любые глупые ошибки.

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