Это руководство покажет вам, как преобразовать одноязычное приложение iOS, созданное с помощью Xcode, в многоязычное.
Содержание:
- Создание ресурсов, локализуемых в Xcode
- Локализация файлов Interface Builder
- Сбор внедренных текстов в файлы ресурсов
- Перевод файлов ресурсов
- Импорт перевода в приложение для iOS
- Проверка перевода на устройстве iOS
У вас уже есть переводчики?
Предлагаем бесплатно воспользоваться нашей системой перевода и сократить время, необходимое для управления и координации работы по переводу вашего приложения.
Введение
Процесс локализации приложения для iOS включает в себя следующее:
- Подготовка файлов ресурсов для локализации.
- Сбор всех текстов, используемых в приложении, в файлы ресурсов.
- Перевод файлов ресурсов.
- Интеграция файлов ресурсов обратно в приложение.
Поскольку приложения для iOS многоязычны по своему дизайну, устройство уже знает, что делать, если ваше приложение доступно на нескольких языках. Оно будет отображать тексты GUI на нужном языке, в соответствии с настройками языка устройства.
Все приложения для iOS построены с использованием текстов Unicode, закодированных как UTF-16. Симуляторы iPhone и iPad поддерживают этот формат и позволяют предварительно просмотреть переведенное приложение.
1. Создание ресурсов, локализуемых в Xcode
Xcode должен знать, что ваш проект содержит многоязычные файлы ресурсов.
Самый простой способ сделать файл локализуемым с помощью Xcode — просто удалить файл из проекта и, в Finder, переместить его в каталог локализации. Убедитесь, что вы нажимаете «Удалить ссылки», а не «Также переместить в корзину» при удалении файла из вашего проекта, чтобы сам файл не удалялся, а удалялась только ссылка на него в проекте.
Если ваши исходные файлы ресурсов на английском языке, то создайте новую папку с именем en.lprojв папке вашего проекта. Если исходные файлы ресурсов на другом языке, замените en на двухбуквенный код страны.
Переместите файл ресурса в новый каталог локализации, а затем перетащите ресурс в проект Xcode. Xcode теперь распознает ресурс как локализованный на данном языке. Повторите эти действия для всех остальных файлов ресурсов, которые нужно локализовать.
2. Локализация файлов Interface Builder
Извлечение строк
Чтобы извлечь строки из файлов ресурсов Interface Builder, вам необходимо запустить инструмент, подобный ibtool, который входит в стандартную установку комплекта разработчика.
Чтобы извлечь файлы, откройте Терминал в каталоге проекта и выполните команду:
ibtool --generate-strings-file Example.strings en.lpoj/Example.xib
Это создаст файл Example.strings. Откройте его, и вы увидите множество парных значений объекта-строки.
Внимательно изучите этот документ и проверьте его содержание. Вы можете удалить ненужные строки, которые не требуют перевода.
Обработка дублированных строк
Файл ресурсов может содержать повторяющиеся строки, такие как некоторые названия для кнопок в разных состояниях.
Некоторые повторяющиеся строки необходимо перевести только один раз, в то время как другие повторяющиеся строки имеют разные переводы. Одно и то же название кнопки в разных состояниях должно иметь одинаковый перевод. Тем не менее, строка может быть как существительным, так и глаголом.
Вы можете удалить лишние дубликаты строк (с одинаковым переводом) из файла ресурсов или оставить их в нем и сообщить переводчику обрабатывать их как дубликаты строк.
Система перевода ICanLocalize для iOS может автоматически удалять дубликаты строк из файлов ресурсов, упрощая эту задачу.
3. Сбор встроенных текстов в файлы ресурсов
Обычно приложения для iOS содержат два вида текстов. Есть интерфейс приложения (управляемый Interface Builder) и внедренные строки, которые появляются встроенными в самом коде.
Строки в интерфейсе уже расположены в файле ресурсов, и мы должны убедиться, что сам код использует только те строки, которые также считываются из файла ресурсов.
Встроенная строка будет выглядеть так:
@"Hello World!"
Нам нужно отредактировать исходные файлы и изменить все встроенные строки, чтобы они выглядели так:
NSLocalizedString(@"Hello World", @"hello message")
Теперь «Hello World!» является токеном. Функция NSLocalizedString создаст строку, которая будет выведена. Она вернет локализованную строку в соответствии с языком приложения. NSLocalizedString будет читать файл Localizable.strings из каталога локализации.
Просмотрите весь свой код и определите, какие строки ориентированы на пользователя и должны быть локализованы. Не локализуйте строки, которые пользователь никогда не увидит, например ключи в NSDictionary (если, конечно, вы никогда не отобразите эти ключи).
Добавление комментариев
Вы заметили это «приветственное сообщение» (второй аргумент)?
Это комментарий, который войдет в файл ресурсов и также будет виден переводчику. Очень важно добавлять комментарии в местах, где текст не требует пояснений. Таким образом, переводчик, который работает над вашим приложением, будет знать, для чего используется текст и как правильно его перевести.
Создание файла Localizable.strings
genstrings соберет все строки, которые необходимо перевести из исходных файлов, и создаст файл Localizable.strings. Чтобы запустить его, откройте Terminal, перейдите в каталог проекта и запустите:
genstrings -o en.lproj *.m
Это извлечет все ключи из вызовов NSLocalizedString и скомпилирует их в один файл Localizable.strings в каталоге локализации en.lproj. Если ваши файлы классов находятся в другом каталоге, убедитесь, что вы включили их в конец этой команды (например, Classes/*.m).
4. Перевод файлов ресурсов
Теперь у вас должно быть два файла ресурсов. Файл ресурсов Interface Builder (созданный ibtool) и файл ресурсов встроенных строк (созданный genstrings).
Вы можете отправить оба файла для перевода в ICanLocalize.
У нас есть специальный инструмент для локализации файлов ресурсов iOS, который позволяет переводить приложения iOS, не тратя время на технические задачи. Инструмент прочитает ваши файлы ресурсов, извлечет тексты, которые нужно перевести, и создаст переведенные файлы ресурсов.
Вы можете загружать файлы ресурсов в кодировке UTF-16 или UTF-8. Инструмент извлечет пары меток и строк (и комментарии, если таковые имеются). Профессиональные переводчики, имеющие большой опыт локализации приложений для iOS, переведут только строки. Вы сможете напрямую общаться со своими переводчиками, чтобы убедиться, что перевод не только точен, но и адаптирован к культуре и обычаям других стран.
Для этого вам нужно будет создать аккаунт (бесплатно). Затем создайте проект перевода для iOS, загрузите файлы ресурсов, выберите языки для перевода и оплатите перевод. По завершении вы сможете загрузить локализованные файлы ресурсов и импортировать их обратно в свое приложение.
И даже спустя долгое время после завершения перевода, если вам потребуется обновить его или исправить, наши переводчики всегда будут рады помочь.
5. Импорт перевода в приложение для iOS
Создание локализованного xib
Как только вы получите переведенный файл строк, снова запустите Terminal и используйте его для создания локализованной копии этого xib.
Сначала удостоверьтесь, что вы создали каталог для той локализации, которую вы только что получили, например, «fr.lproj». Переместите переведенный файл строк в данный каталог локализации.
Предполагая, что вашим исходным языком был английский, перейдите в каталог вашего проекта, откройте Terminal и запустите:
ibtool --strings-file fr.lproj/Example.strings en.lproj/Example.xib –write fr.lproj/Example.xib
Это скопирует локализованный на английском языке файл Interface Builder в другой каталог локализации и заменит значения всех объектов значениями в переведенном файле строк.
Теперь у вас есть локализованный файл .xib, но файл еще не готов к работе.
Добавление локализованного файла в Xcode
Перетащите только что локализованный файл .xib в ваш проект в Xcode. Убедитесь, что вы не перетаскиваете файл в существующую локализацию. Локализованный файл .xib должен войти в группу, которая содержит другие локализации этого файла.
Правильное место для размещения файла .xib | Неправильное место для размещения файла .xib |
Просмотрите переведенный файл Interface Builder.
Откройте переведенный файл в Interface Builder и просмотрите все. Зачастую, длины различных строк могут значительно меняться. Перевод с английского на немецкий и французский часто на 50% длиннее исходного текста. Возможно, вам придется немного изменить макет, чтобы убедиться, что все видно.
Если вы удалили дубликаты вручную, сейчас самое время их вернуть, продублировав переведенные строки. Например, если две кнопки имеют один и тот же заголовок, и вы удалили одну из кнопок из файла .strings, который был создан ранее, теперь вам будет нужно скопировать заголовок с кнопки, которая была переведена.
Это необходимо сделать только в том случае, если вы отредактировали файл .strings перед отправкой на перевод. Система ICanLocalize уже удаляет дубликаты из перевода и повторно вставляет их в переведенный файл ресурсов.
Ваше iOS-приложение теперь должно работать на нескольких языках! Но подождите, есть еще один шаг.
6. Проверьте перевод на устройстве iPhone или iPad
После того, как все будет сделано, у вас будет многоязычное приложение.
Чтобы проверить его на реальном телефоне, вам нужно изменить язык устройства. Вы можете следовать руководству Apple по переключению языков iPhone.
Вы почти готовы к выпуску, только не забудьте его проверить.
Вот некоторые вещи, на которые стоит обратить внимание:
Просчет | Что может случиться | Как исправить |
---|---|---|
Переведенные строки выходят за границы | Немецкий, французский, испанский и другие европейские языки обычно составляют от 120% до 150% размера английского текста. Азиатские языки обычно составляют 50%-70%. | Рекомендуем адаптировать графический интерфейс к строкам разных размеров. Система локализации iOS ICanLocalize проверяет длину строк и предупреждает о слишком длинных или слишком коротких строках. |
Отсутствующие символы форматирования | Многие строки содержат местозаполнители для данных, такие как %s для текста и %d для чисел. Другие строки включают HTML-код. Если перевод не включает такое же форматирование, приложение не будет работать. | Наша система перевода позволяет вам вводить «обязательные» последовательности. Это обеспечит, чтобы переводы включали те же последовательности, что и оригиналы. В противном случае вам следует вручную просмотреть все строки и убедиться, что символы форматирования совпадают. |
Перевод вне контекста | Всегда есть вероятность, что переводчик не совсем понял значение строки. Это происходит, когда приложения содержат короткие и не описательные строки. | Перед началом работы отправьте полное описание приложения переводчику. После этого сделайте снимки экрана приложения и отправьте переводчику для окончательной проверки. Добавление комментариев к строкам поможет вам получить отличный перевод. |
Устранение неполадок
Если строки Localizable.strings присутствуют в переведенном файле, но не локализуются на устройстве, проверьте кодировку символов файла.
В отличие от симулятора iPhone, реальное устройство распознает только строковые файлы в формате UTF-16. Всегда проверяйте локализации на устройстве, так как симулятор и устройство не всегда ведут себя одинаково.
Переведенные файлы ресурсов, загружаемые из ICanLocalize, имеют кодировку UTF-16. Они содержатся в архивах gzip, чтобы ваш браузер не изменял их при загрузке.
Обновление перевода, когда приложение для iOS развивается
ICanLocalize позволяет легко поддерживать ваши переводы в актуальном состоянии. Когда приложение развивается, создаются новые строки, и существующие строки могут измениться.
Чтобы обновить переводы, снова запустите genstrings, для создания нового файла Localizable.strings. Затем перезапустите ibtool, чтобы сгенерировать новые строковые файлы.
Наконец, загрузите новые файлы ресурсов в существующий проект в ICanLocalize. Система обнаружит новые или измененные строки и переведет только их. Вам нужно будет заплатить только за обновление перевода, а не за весь перевод с нуля.
Примечание: когда в строку вносятся изменения, ее необходимо снова полностью перевести. Для того, чтобы снизить стоимость обновления переводов, рекомендуем разбивать большие строки на несколько меньших. Таким образом, когда вы вносите изменения, та часть, которую необходимо перевести, становится меньше и стоит дешевле. Строки должны быть достаточно большими, чтобы их можно было очистить самостоятельно, но не слишком большими, чтобы их обновление не было дорогим.
Нужен перевод для вашего iOS-приложения?
ICanLocalize предлагает профессиональный перевод, оптимизированный для iOS-приложений. Мы можем помочь вам быстро, легко и с минимальными затратами сделать ваше приложение в многоязычным.
Опытные переводчики, пишущие на своих родных языках, переведут ваше приложение, помогая вам получать больше продаж со всего мира.
Начиная от 0,135 USD/слово за экспертный перевод.
«Я использовал ICanLocalize, чтобы перевести мое iOS-приложение для садоводства, Plant Album. Я уже пользовался их услугами в прошлом, и я по-прежнему впечатлен их профессиональным составом, качеством переводов и их простым в использовании сайтом. Настоятельно рекомендуется для всех ваших потребностей локализации!»
«Мы используем ICanLocalize с 2012 года, и это действительно упростило наш рабочий процесс, когда речь заходит о переводе нашего контента для разных рынков. Больше не нужно искать переводчиков на разные языки, учить их пользоваться инструментами перевода, индивидуально составлять счета и т. д., поскольку ICanLocalize делает все это для нас! Мы используем сервисы ICanLocalize для перевода наших веб-сайтов, приложений, информационных бюллетеней и других маркетинговых материалов, и вы всегда можете рассчитывать на быструю работу. Я понимаю, что все это заявление звучит как платная реклама или что-то в этом роде, но я действительно не написал ничего, что не соответствует действительности или не является моим подлинным мнением! Я бы порекомендовал ICanLocalize в любое время!»
«ICanLocalize — это лучшее решение для быстрых и качественных переводов вашего приложения. Мы пользуемся их услугами для всех наших приложений с хорошими результатами и положительными отзывами наших пользователей. Я рекомендую использовать ICanLocalize для локализации ваших приложений.»
«Пользоваться ICanLocalize было невероятно просто. Переводчики нам очень помогли, а процесс перевода оказался идеально прост. ICanLocalize доступен для разработчиков всех категорий, и он помог нам достичь намного большего количества клиентов, чем когда-либо ранее.»
«ICanLocalize помог мне сэкономить массу времени, поскольку он предоставляет переводчиков для любого языка, а также вы можете попросить других переводчиков проверить переводы, чтобы убедиться в их точности. Самая большая помощь, которую предоставляет ICanLocalize, — это возможность загружать мои строковые файлы из xcode непосредственно в сайт, поэтому, когда переводы готовы, я могу просто заменить мои строковые файлы в моем проекте, и все сделано.»
Если вы желаете перевести и повторно опубликовать это руководство, пожалуйста сначала свяжитесь с нами. Скажите нам, где вы хотите опубликовать его и несколько слов о себе.