Статьи

iOS SDK: локализация с помощью NSLocalizedString

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


Если вы не владеете языком, на который вы хотите перевести свое приложение, вы можете быть озадачены тем, как выполнить этот шаг. Есть несколько вариантов перевода. Один из вариантов — просто использовать Google Translate , бесплатный сайт перевода, предоставляемый Google. К сожалению, автоматизированные компьютерные переводы могут быть далеки от совершенства, но это все же может быть лучше, чем ничего. Другой вариант — нанять услугу перевода. Быстрый поиск в Интернете покажет, что есть много компаний, которые возьмут текст из вашего приложения и вручную переведут его для вас на нужный язык. Наконец, вы можете попытаться найти друга или партнера, который свободно владеет целевым языком, и попросить их перевести текст приложения для вас. Помните, что человек, который также знаком с культурой целевого языка, может предоставить вам более точные переводы, чем тот, кто обладает только академическими знаниями языка.


Запустите Xcode и нажмите «Файл»> «Создать»> «Проект». Нажмите «Приложение» под панелью iOS слева. Нажмите значок «Одно приложение», а затем нажмите «Далее».

Локализации: первый экран нового окна проекта

В поле «Имя продукта» введите «LocalizationDemo» и введите имя для идентификатора вашей компании, например «com.mobiletuts». Выберите «iPhone» в меню «Семейство устройств». Снимите флажки «Использовать раскадровки» и «Включить юнит-тесты» и установите флажок «Использовать автоматический подсчет ссылок». Нажмите «Далее», выберите место для сохранения вашего проекта, а затем нажмите «Создать».

Локализация: второй экран нового окна проекта

Сначала мы добавим два новых языка, французский и испанский, в файл info.plist приложения. Это информирует iTunes о языках, которые поддерживает ваше приложение, что позволяет отображать дополнительные языки под названием вашего приложения в App Store. Нажмите на «localizationDemo-info.plist». Нажмите на последнюю строку файла и нажмите на серую кнопку плюс в первой ячейке. Введите «Локализации» в новой ячейке. Нажмите на стрелку слева от ячейки, чтобы показать ваш исходный язык, в нашем случае, английский. Нажмите кнопку «плюс» рядом с «Локализациями» и добавьте «французский» в массив. Нажмите кнопку «плюс» еще раз и введите «испанский».

Далее мы добавим файл строк для хранения нашего локализованного текста. Нажмите Файл> Новый> Новый файл.

Локализация: скриншот добавления файла строк

Выберите файл iOS Resource Strings и нажмите «Далее». Убедитесь, что ваш файл называется «Localizable», прежде чем нажимать «Create».

Локализация: скриншот именования файла строк

Нажмите на недавно созданный файл «Localizable.strings» и добавьте следующий код, чтобы создать английскую пару ключ-значение.

1
«HelloKey» = «Hello»;

Пара ключ-значение — это то, что написано, левая сторона знака равенства — это ключ, а правая сторона — это значение. Мы будем использовать ключ через минуту, чтобы получить доступ к связанному значению и установить его в качестве текста метки.

Теперь мы создадим файлы строк для французского и испанского языков. Нажмите «Просмотр»> «Утилиты»> «Показать инспектор файлов». Нажмите и удерживайте кнопку «плюс» в нижней части панели «Локализация». Выберите «Французский» из выпадающего меню и снова нажмите кнопку «плюс». На этот раз выберите «Испанский» из выпадающего меню.

Локализация: добавление французских и испанских файлов строк

Обратите внимание, что «Localizable.strings» имеет стрелку раскрытия рядом с ним; щелкните стрелку, чтобы просмотреть три языка: английский, французский и испанский. Щелкните файл французских строк и измените пару ключ-значение на код ниже.

1
«HelloKey» = «Bonjour»;

Щелкните файл испанских строк и измените его пару ключ-значение на следующий код.

1
«HelloKey» = «Hola!»;

Нажмите на файл «ViewController.m» и добавьте следующий код в метод viewDidLoad чтобы создать метку, текст которой задан из файла локализованных строк.

01
02
03
04
05
06
07
08
09
10
11
12
//get localized string from appropriate strings file
NSString *localizedHelloString = NSLocalizedString(@»HelloKey», @»»);
     
//create label — set text property to localized string
CGRect localizedLabel_Frame = CGRectMake(20.0f, 40.0f, 280.0f, 44.0f);
UILabel *localizedLabel = [[UILabel alloc] initWithFrame:localizedLabel_Frame];
localizedLabel.text = localizedHelloString;
localizedLabel.textAlignment = UITextAlignmentCenter;
localizedLabel.font = [UIFont boldSystemFontOfSize:20.0f];
     
//add label to view
[self.view addSubview:localizedLabel];

Обратите внимание, что мы использовали макрос NSLocalizedString (), чтобы получить локализованное значение из файла строк соответствующего языка. Это средство для настройки текста на основе языковых настроек пользователя. По умолчанию NSLocalizedString() ищет файл с именем «Localizable.strings». Если вы назвали свой файл строк как-то иначе, макрос не сможет найти файл строк, содержащий локализованное значение.


Нажмите Product> Run или нажмите стрелку Run в верхнем левом углу окна Xcode. Проект строится с нашим оригинальным английским текстом «Hello».

Локализация: скриншот конечного продукта: ярлык читает

Нажмите кнопку «Домой», чтобы выйти из приложения. Нажмите Настройки> Общие> Международный> Язык, чтобы получить доступ к языковым настройкам.

Локализация: скриншот с разделом настроек «Язык»

Выберите французский или испанский из меню и вернитесь в приложение LocalizationDemo.

Локализация: скриншот смены языка на французский

Посмотрите, что текст изменился на новый язык.

Локализация: скриншот приложения с ярлыком, на котором написано Bonjour

Если в вашем приложении много текста и вы планируете локализацию для многих языков, важно сохранять организованность ваших пар ключ-значение. Чтобы увидеть, как я организую свой текст, загрузите исходный код и посмотрите на строковые файлы. Вопросы или комментарии? Не стесняйтесь оставлять их в разделе комментариев или отправлять их напрямую через Twitter.