Я нашел способ полуавтоматизировать процесс, чтобы мне не пришлось делать это:
label1.text = NSLocalizedString(@"label1_key", @"");
label2.text = NSLocalizedString(@"label2_key", @"");
....
labeln.text = NSLocalizedString(@"labeln_key", @"");
Так что для всех меток, которые должны быть локализованы, я установил их текст в __KeyForLabelX
в IB. Затем в методе viewWillAppear
viewcontroller я перебираю элементы в представлении и устанавливаю текст в локализованное значение:
for (UIView *view in self.view){
if([view isMemberOfClass:[UILabel class]]){
UILabel *l = (UILabel *)view;
BOOL shouldTranslate = [l.text rangeOfString:@"__"].location != NSNotFound;
NSString *key = [l.text stringByReplacingOccurrencesOfString:@"__" withString:@"TranslationPrefix"];
if (shouldTranslate){
l.text = NSLocalizedString(key, @"");
}
}
}
Мой файл .strings выглядит следующим образом:
"TranslationPrefixKeyForLabelX" = "Translation of Label X";
Обновление: Для дальнейшей адаптации механизма вы также можете проверить другие UIView
s, например UIButtons
, UITextField
s (включая текст приглашения) и т. Д.