2. Когда продукт, который вы разрабатываете тестируете, выходит на мировой
рынок, рано или поздно встает вопрос о локализации. Тут начинается самое
интересное...
Для начала давайте определимся с терминами Глобализация, Интернализация
и Локализация.
Глобализация, в большей степени, отражает стратегию бизнеса в целом,
нацеленность на мировой рынок сбыта. Интернализация – это подход к
разработке, при котором создана база для последующей адаптации работы
приложения на различных языках (разделение кода и локально-зависимых
составляющих). Локализация – это и есть сам процесс перевода и
тестирования адаптации приложения на различные языки.
Я намеренно разделила понятия Интернализация и Локализация. Конечно,
при правильной разработке, интернализация включает в себя локализацию.
Но бывают иные случаи – приложение растет, развивается постепенно,
претерпевает изменения и в какой-то момент становится ясно – надо
локализовать продукт, хотя изначально об этом никто и не помышлял. В этом
случае происходит именно локализация, а интернализация – это изначально
известное стратегическое будущее проекта.
Если решение воплотить локализацию пришло «внезапно», то это несет в
себе дополнительные риски, и на тестирование такой локализации
необходимо выделить больше времени, т.к. в процессе обычно выявляется
незрелость продукта к таким изменениям, требуется доработка –
соответственно, дополнительное время. Так же не сразу выявляются
ненужные зависимости ресурсов, что приводит к дополнительному раунду
фиксов. Вывод: если локализация нагрянула неожиданно – накиньте
процентов 30% в план – пригодится.
В связи с открывшейся перспективой «говорить» приложению на нескольких
языках, появляется множество задач и вопросов:
• делать локализацию собственными силами или привлекать аутсорсинг
или комбинировать собственные силы с аутсорсингом.
2
3. • определить список поддерживаемых языков (очень важно, будет ли
среди поддерживаемых языков китайский, корейский, японский,
арабский).
• использовать или нет псевдолокализацию как предварительный шаг
локализации.
• осуществить перевод пользовательского интерфейса.
• адаптация к различным форматам данных.
• осуществить перевод системных сообщений и ошибок.
• осуществить адаптацию графики, звуков, анимации.
• осуществить перевод help и сопутствующей документации.
• проверка правильности перевода в контексте данного приложения.
• проверка локализованных приложений на разных языковых
платформах.
Псевдолокализация
Решение о принятии этапа псевдолокализации может быть связано с
желанием стабилизировать теоретическую локализацию, если достаточно
много языков локализации.
Что же такое псевдолокализация?
Путем хитрых научных исследований выяснилось, что при локализации
длина строки увеличивается в среднем на 30%. Именно этот показатель
используется для псевдолокализации.
Утверждается спец символы начала и конца строки, например *** как начало
строки и +++ как конец строки. Таким образом, псевдолокализованная строка
может выглядеть так:
***Тестовая строка+++
Что это дает? Можно тестировать читабельность и проверять вся ли строка
(сообщение) будет помещаться и отображаться на контроле и будет ли
псевдолокализироваться в принципе, будет ли правильно масштабироваться
интерфейс при изменении размера шрифта, например.
Подобным образом может осуществляться псевдолокализация графики,
аудио, анимации. На первый взгляд забавно звучит: псевдолокализация
графики, аудио, анимации. Не так уж странно, если задуматься над этим
вопросом. Зачастую в качестве графики может использоваться картинки,
которые в большей степени понятны, очевидны именно для жителей
определенной страны. Например, герой из мультика «Ну, погоди!» известен
каждому в нашей стране, мы все помним эти замечательные серии. Если в
приложении будет иллюстрация из этого мультика, мы сразу поймем
контекст данного изображения. Но, если показать это же изображение,
например, американцу, не стоит ждать, что он проникнется нежными
3
4. воспоминаниями о детстве. Для него это будет просто забавная картинка. Как
же будет выглядеть локализация такой графики?
Тоже касается аудио и других медиафайлов. Т.к. локализация – это адаптация
для жителей других стран носителей других культур, то следует обратить
пристальное внимание на то, действительно ли графическое медийное
сопровождение усиливает понимание продукта, а не вводит в заблуждение
пользователей.
Но на этапе псевдолокализации картинка может меняться так:
Обозначение Ru-ru на картинке указывает на то, что впоследствии картинка
изменится на русскую версию.
После завершения этого подготовительного этапа начинается, что
называется, проверка в полевых условиях. Время приступать к настоящему
сражению за локализацию или против локализации - это как пойдет.
Какие важные моменты стоит здесь учесть?
Системные настройки, которые являются маркерными при выборе
языка вашего приложения.
Работая с разными проектами, могу сказать, что спектр велик. Приступая к
работе с проектом, не лишним будет интерес: Почему именно так работает
локализация? Итак, список в студию:
1. Browser (в случае вэб-приложения) Tools → Language preference.
Выбранный в этой настройке язык и будет определять язык UI. Но
коварство этих настроек проявляется тогда, когда в списке языков
4
5. первым значится неподдерживаемый язык. Как корректно
обрабатывать такой случай? Возможно, искать в списке первый
поддерживаемый язык, а если такового нет, то считать выбранным
языком базовый (в общем случае, английский).
2. System locale, user's locale (Control Panel → Region and Language). Здесь
возможны вариации. Настройки System locale, user's locale могут
трактоваться приложением как независимые настройки, а может
использоваться "жесткая сцепка".
2.1. User's locale (Control Panel → Format tab → Region and Language).
Важным поинтом является то, что после выбора страны становится
доступной опция расширенного форматирования таких параметров как
числа, валюта, дата, время. Неспособность корректно обработать такие
настройки часто губит приложение. Так же нужно помнить о том, что
данная настройка может быть выставлена для каждого пользователя.
Исходя из этого, не вредно проверить работу системы под разными
пользователями разными user's locale.
2.2. System locale (Administrative tab → Change system locale.) Эта
настройка для всей системы в целом, т.е. в отличие от user's locale, она
будет едина для всех пользователей.
2.3. Жесткая сцепка User's locale & System locale. "Так не бывает! Это
неправильно!" - скажите вы. "Бывает и так", - отвечу я со слезами на
глазах.
Так же отдельным пунктом стоит рассмотреть клиент-серверные приложения
и требования к настройкам локали сервера и клиента. Возможные варианты
ограничиваются фантазией архитектора разработчика.
Оставляя локали (locales) позади, переходим к следующему этапу.
На что обратить внимание при тестировании локализации и интернализации
UI & functional?
• Текст должен отображаться полностью. Строка (предложение) не
должна быть составной, т.к. использование составных строк
приспособлено к определенному языку и не может гарантировать
корректность при переводе.
5
6. • Списки и меню – если размер списка или меню жестко прописан и не
появляется скролбара, например, некоторые пункты списка или меню
могут просто безмолвно изчезнуть.
• Если в локализации присутствует Китайский язык, важно помнить, что
направление текста может быть как слева направо, так и сверху вниз.
При написании текста сверху вниз неприменимы правила переноса,
привычные при письме слева-направо. (Это просто перелом мозга)
• Сортировка. Сложно, не владея, к примеру, Китайским языком,
оценить правильность сортировки. Предлагаю применить хитрость,
иначе говоря – костыль. Для сортировки, если это возможно, задать 3
значения. Таким образом, при сортировке (ascending, descending) 1
значение должно все время вторым в списке, а первое и третье
значение должны меняться местами. Такой метод позволит выявить
мертвую сортировку.
• Печать. Печать на листах разных форматов, с разными единицами
измерения листа.
• Форматы и данные.
o Дата
o Время
o Валюта
o Числа (разделение целойдробной части, разделитель тысяч)
Какие возможны варианты настройки и тестирования?
Самое простое – когда эти форматы настраиваются внутри приложения
и не требуют взаимодействия с операционной системой.
Второй вариант, когда настройки берутся из Control Panel → Format tab
→ Region and Language как упоминалось выше, но при этом не
допускается расширенная настройка.
6
7. И последний, самый мучительный вариант, когда настройки берутся из
Control Panel → Format tab → Region and Language и при этом
разрешается расширенная настройка этих параметров.
Здесь самые коварные баги могут крыться в динамическом изменении
этих настроек. Приложение должно определять, можно ли динамически
во время работы тестируемого приложения менять эти настройки или
необходимо переоткрыть ПО после этого. Возможно, придется даже
перезапустить сервисы. Важно, чтобы эта информация не затерялась и
нашла отражение в Help или другом документе.
Очень важный момент в локализации при работе с финансовым ПО.
Некоторые данные – такие как валюта, в финансовой проводке, должны
быть сохранены как есть. Очень нехорошо получится, если на счет
поступят 10 000 рублей вместо 10 000€.
С другой стороны, возможно, при распределенной структуре обработка
временных данных производится путем перерасчета в GMT время и
перевод в формат 24H. На это тоже стоит обратить внимание и
перепроверить преобразование текущего времени приложения в GMT и
обратно – результаты операции со временем должны корректно
преобразовываться во время приложения.
Это, конечно же, не полный список тех тонкостей, которые могут
встретиться на Вашем пути. В заключении хотелось бы напомнить, что
при распределении ответственности, при наличии возможности, стоит
заложить основу для взаимодействия с командами тех. писателей,
локализаторов и время на это взаимодействие. Ведь в конечном итоге,
именно отдел тестирования отвечает за качество продукта.
7
8. Спасибо за внимание!
Если у Вас возникли вопросы
или Вы хотели бы со мной
связаться:
http://lilia-gorbachik.com
info@lilia-gorbachik.com
8