Я написал простую категорию, которая обрабатывает локализацию с помощью 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
Базовое использование:
- Создание элемента UIView, например UIButton или UIlable
- Укажите ваш строковый ключ внутри UserDefinedAttributes для ключа «mainTextKey» или «secondTextKey».
- Запустите приложение, и оно загрузит нужный текст из вашего строкового файла.
Это написано без каких-либо корректур, извините за любые глупые ошибки.