Статьи

Фундаментальное руководство по локализации приложений Android: часть II

Еще не прочитали первую часть? Проверьте это здесь !

Каскадирование через файлы локали и языковых ресурсов

Локализованные ресурсы размещаются в папках, квалификаторы которых отражают язык и, возможно, локализацию локализации. Формат имени папки — значения- <язык> или значения- <код языка-региона> .

  • «Язык» в данном случае — это код языка ISO, например, «fr» для французского языка.
  • «Код региона» — это необязательный код региона, которому предшествует «r» (строчная буква r), например: fr-rFR для французского, используемого во Франции, или fr-rCA для канадского французского.

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

Например, предположим, что языковой стандарт — швейцарский французский, но нет папки или ресурсов «fr-rCH» (нет res / values-fr-rCH / strings.xml и т. Д.). Затем Android проверит папку «fr» (res / values-fr / strings.xml и т. Д.) И, наконец, папку по умолчанию (если требуется) (res / values ​​/ strings.xml), чтобы получить версию ресурсов для отображения.

Избегайте жесткого кодирования текста или других ресурсов

Размещение текстовых ресурсов в файле strings.xml по умолчанию с самого начала позволяет избежать трудностей, связанных с их жестким кодированием в приложении. Использование файла strings.xml значительно облегчает модификацию, обновление и локализацию приложения. Это также означает, что переведенные версии (из соответствующих подкаталогов) можно использовать без перекомпиляции кода вашего приложения. Текст, используемый при создании изображений, должен быть помещен в файл strings.xml по той же причине. Локализованные изображения будут сгенерированы правильно таким же образом.

Делаем Strings.xml понятным для переводчиков

Помните, что переводчики, создающие локализованные тексты, могут видеть только ваш файл strings.xml, не зная столько же о вашем приложении и его назначении, сколько вы. Поэтому подумайте заранее и включите информацию о контексте каждой строки в файл strings.xml. Это особенно важно для коротких текстов, используемых для кнопок, например, когда одно слово, например «clear» в английском языке, может соответствовать двум совершенно разным словам в другом языке («clear», как в «transparent», или как «delete») , Контекстная информация может даже помочь вам более эффективно управлять текстовыми строками, когда вы вернетесь к ним позже после работы над другими проектами.

Указание на содержание, которое не нужно переводить

Строки могут также содержать текст, который не должен переводиться, такой как код, заполнители значений, специальные символы или имена собственные. Эти тексты необходимо указывать переводчикам, чтобы они не менялись. Для этого пометьте такой текст с помощью тега <xliff: g>, как показано в следующем примере. Обратите внимание на использование атрибута id, чтобы объяснить читателям назначение заполнителя, и пример атрибута, чтобы показать, как будет отображаться строка, использующая заполнитель.

<string name="availability"> <xliff:g id="quantity" example="4 widgets">%1$s</xliff:g>in stock </string>

Использование Java и форматеров

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

Android предлагает несколько утилит для правильного форматирования в разных локалях, таких как:

  • DateUtils и DateFormat для дат.
  • String.format () или DecimalFormat для чисел и валюты.
  • PhoneNumberUtils для телефонных номеров.

Помощь Android в локализации множественного числа

Использование множественного числа для конкретной страны также может быть сложным Рассмотрим основное правило на английском языке, которое заключается в использовании единственного числа с количеством единиц («1 продукт») и множественного числа с другими величинами («n продуктов», включая «0 продуктов».) Другие языки определяют больше случаев и имеют больше правил. Например, русский язык имеет определенные форматы множественного числа не только для «одного» и «другого», как в английском, но также для «немногих» и «многих», что дает в общей сложности четыре различных формата. Полный набор поддерживаемых Android множественных форматов — ноль, один, два, несколько, многие и другие. Android-метод «getQuantityString ()» прорезает сложность, чтобы выбрать формат множественного числа, который будет использоваться для данного языка / локали и заданного количества.

Обработка макетов экрана

В общем, чем меньше раскладок вы должны обработать, тем лучше. Единый, отзывчивый дизайн, который автоматически адаптируется к различным устройствам, упрощает жизнь. Однако могут быть случаи, когда пользовательский интерфейс не может правильно отображать текст для локализации вашего приложения Android. Простым примером будет короткая метка или пункт меню со словом «Сейчас» в версии по умолчанию с использованием английского языка, где эквивалентное слово на французском языке будет «Техническое обслуживание» (более чем в три раза длиннее). Один из вариантов — создать альтернативный макет для этого особого случая и сохранить его в месте с соответствующим квалификатором ресурса. С другой стороны, это дополнительный ресурс для управления, проверки и обновления в зависимости от будущих версий вашего приложения.

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

Хранить файлы ресурсов до разумного минимума

По причинам требуемых усилий и управляемости имеет смысл минимизировать количество используемых файлов ресурсов. Условие, конечно, состоит в том, что это не ухудшает пользовательский опыт. В приведенном выше примере формы для пользовательского ввода может не потребоваться создание совершенно нового макета. В других случаях для любой локали может быть достаточно одного макета, определенного в файле res / layout / main.xml.

Аналогичные замечания применимы к текстовым строкам. Хотя пользователь всегда должен видеть полностью локализованную версию, возможно, что некоторые региональные различия в значительной степени перекрываются. Например, американский и британский английский имеют некоторые различия, но во многих других случаях они идентичны. Приложение может использовать американский английский в качестве языка по умолчанию, со словарем американского английского в файле res / values ​​/ strings.xml. Для определенных фраз, для которых британский английский словарь важен для британских пользователей приложений, может быть создан файл меньшего размера (res / values-en-rGB / strings.xml), содержащий только те строки, которые отличаются. Для любых других строк приложение по умолчанию вернется к файлу res / values ​​/ strings.xml и (идентичным) американским английским эквивалентам.

Получение переведенных файлов

Вы определяете качество вашего файла strings.xml, включая его точность, его организацию и любые необходимые пояснения для переводчиков. Программное обеспечение автоматического перевода вряд ли даст достаточно хорошие результаты, потому что ваши объяснения не могут быть поняты (помните наш пример выше о различных возможностях перевода слова «ясно».) Однако для переводчиков-людей объяснения могут помочь избежать многих запросов или недоразумений. Может быть хорошей идеей добавить список терминологии в пакет переводчика, чтобы объяснить конкретные термины или жаргон, используемые в вашем приложении, чтобы переводчикам не приходилось догадываться.

Ключевые слова App Store

Не забудьте перевести описание вашего приложения для таких магазинов, как Google Play. С другой стороны, ключевые слова, помогающие пользователям найти ваше приложение и способствующие его использованию или продажам, являются другим вопросом. Ключевые слова не только зависят от языка, но и зависят от рынка. Возможно, имеет больше смысла работать с профессионалом SEO для страны или соответствующего рынка, который найдет наиболее эффективные ключевые слова в этом контексте. Они могут отличаться от переведенных версий ключевых слов, используемых в языковой версии по умолчанию (как бы ни были хороши переводы.)

Проверка переводов

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

Теперь протестируйте свое приложение для каждой поддерживаемой локали, проверяя правильность управления следующими элементами:

  • Форматирование динамического текста, такого как числа и даты.
  • Обработка разрывов слов, пунктуации и алфавитной сортировки.
  • Откат к ресурсам по умолчанию.
  • Дисплей в ландшафтном и портретном режимах.

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

Псевдолокализация как дополнительная проверка

Используйте псевдолокализацию для проверки макетов и отображений, например, путем создания версии strings.xml с текстом для ресурсов, которые намеренно бессмысленны и / или в два раза длиннее текста по умолчанию. Эти методы псевдолокализации позволяют легче увидеть, были ли пропущены какие-либо строки в локализации приложения (это строки, которые по-прежнему отображаются нормально.) Они также могут помочь выяснить, может ли какой-либо локализованный текст исчерпать пространство в ограниченных областях. как кнопки, заголовки и метки.

Соображения магазина приложений

Когда все необходимые проверки были успешно выполнены, пришло время подписать ваше приложение, сделать окончательную сборку, а затем сделать ваше локализованное приложение доступным для пользователей. Например, в Google Play:

  • Выберите языки для вашего локализованного приложения.
  • Загрузите ваш .apk файл.
  • Добавьте переводы для страницы со списком магазинов и кампаний AdWords. Если языковые предпочтения пользователя соответствуют выбранному вами языку, пользователь увидит переведенную версию вашего приложения. Добавьте локализованные версии любой рекламной графики и видео тоже. При необходимости вы можете создавать разные версии для разных языков, ссылаясь на соответствующее локализованное видео для каждого языка, поддерживаемого приложением.

После этого промойте и повторите для новых локализаций

Большим преимуществом правильной интернационализации приложения является то, что каждая локализация приложения в этом случае относительно проста. Вы переводите файлы ресурсов для нового языка или локали, проверяете их и включаете в приложение в папке с соответствующим названием (и обновляете информацию о списке приложений в магазине приложений). Методы интернационализации и локализации также могут пойти дальше. Одним из примеров является более сложный способ, которым Android выбирает лучшую папку ресурсов для локали, которая еще не была обработана как часть локализации приложения. Тем не менее, это руководство уже дает вам основную информацию, которую вы должны знать о интернационализации и локализации приложений Android. На растущем международном рынке решений для Android мы желаем вам успеха в удовлетворении потребностей пользователей на выбранных вами рынках.