15 октября 2010 г.

Локализация строк в Xcode

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

С помощью Xcode можно локализировать:
- статический текст в коде программы
- ресурсы (иконки, рисунки, звуковые файлы, nib-файлы)
- вывод даты/времени

В этой заметке я расскажу о локализации статического текста в коде программы.

Локализация текста в коде программы необходима если, например, в коде программы задается текст который потом показывается пользователю (это может быть название кнопок, текст отчета и т.п.). Перед локализацией необходимо интернационализировать код программы. Для этого любой текст который показывается пользователю необходимо обвернуть макросом NSLocalizedString. Если раньше вы показывали диалог таким способом:

  1. UIAlertView *tmp = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Your e-mail application not configured" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
  2. [tmp show];
  3. [tmp release];


то теперь показываем так:

  1. UIAlertView *tmp = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Warning", @"") message:NSLocalizedString(@"Your e-mail application not configured", @"") delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil];
  2. [tmp show];
  3. [tmp release];


Макрос NSLocalizedString вызывает метод localizedStringForKey:value:table: обьекта NSBundle приложения, которая возвращает локализированную строку.

Теперь нужно создать файл Localizable.strings, который будет шаблоном для файлов локализации. Для этого в терминале переходим в папку Classes приложения и выполняем команду:

  1. $ genstrings ./*.m


В результате в той же папке будет находиться файл Localizable.strings который и добавляем в проект (кодировку файла указываем UTF-16).



Теперь осталось локализировать этот файл на нужный нам язык. Для этого открываем свойства добавленного в проект файла Localizable.strings.



На вкладке "General" нажимаем кнопку "Маке File Localizable"



Переходим обратно на вкладку "General" и там добавляем локализацию



При этом в проекте создается папка с локализацией для этого языка и в нее помещаются файл Localizable.strings который нужно перевести на указанный язык. В проекте это выглядит так:



Файл Localizable.strings представляет собой пары "ключ" = "значение", где ключом выступает параметр переданный в макрос NSLocalizedString а значением - локализированная строка

  1. "Done" = "Готово";


См. также:
1. Локализация даты/времени

3 комментария:

  1. Спасибо за статью.

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. Если вы ищете практичный локализационный инструмент для .strings на другой язык, присмотритесь к POEditor.
    Для достижения наилучших результатов он использует совместные переводы через веб-платформу.

    ОтветитьУдалить