Есть ли возможность неявно локализовать метки в Interfacebuilder? - PullRequest
1 голос
/ 14 сентября 2011

Где-то в записи блога я наткнулся на файл строк, который выглядел так:

// de.lproj/Localizable.strings
"This is the title" = "Das ist der Titel"

Для меня это выглядело так, как будто фактические метки в Интерфейсном конструкторе были обработаны компилятором, так что никакие явные переводы с использованиемNSLocalizedString(@"SOME_IDENTIFIER", @""); может понадобиться больше.

Мой вопрос сейчас: есть ли какой-нибудь ярлык или мне нужно локализовать все мои отдельные метки на моем виде, например, в методе awakeFromNib.

1 Ответ

3 голосов
/ 15 сентября 2011

Я нашел способ полуавтоматизировать процесс, чтобы мне не пришлось делать это:

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 (включая текст приглашения) и т. Д.

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