- PVSM.RU - https://www.pvsm.ru -
На Хабре не раз [1] обсуждались вопросы локализации/интернационализации приложений, и поскольку у нас в этом вопросе накопился значительный опыт, мы решили им поделиться, сделав больший акцент на организации всего процесса. Локализация приложений — более сложная задача, чем принято считать, и подойти к ней можно разными способами: можно изначально создать простой и понятный текст, можно вложиться в крутых переводчиков, которые из любого текста вытянут смысл, можно сделать подготовку и перевод текста «как-нибудь», но посадить сообщество или тестировщиков на выверку финального результата. Необходимо только помнить, что выверка исходного текста делается на одном языке, а выверка результата — на всех языках, т. е. усилий надо затратить в N раз больше.
Вообще, локализация — это по факту открытие еще одного рынка, и понятно, что, при принятии решения о локализации, руководство рассчитывает получить дополнительную прибыль. При этом зачастую в эту самую локализацию вкладывают лишь малую часть от общего бюджета разработки (скажем, порядка 1–2 %). Т.е. расчет идет на то, что, добавив 1 %, можно получить + 50 % дохода. Насколько реалистичными могут быть такие ожидания?
Первое, с чем необходимо определиться, — для чего будет производиться локализация, на какие языки, в каком объеме и с каким качеством. Обычно целью являются бизнес-задачи — вывод продукта на новые рынки, расширение аудитории. Бывают также случаи, когда продукт фактически будет продаваться на оригинальном языке, но, согласно законам государства, необходимо иметь его переведенную версию (например, различные руководства пользователя).
Вообще, весь процесс локализации требует активного взаимодействия клиента и переводчиков, поэтому, если перевод на какой-то язык осуществляется без реальной поддержки на локальном рынке (представительство, сообщество пользователей) и ее не будет в ближайшее время, есть шанс, что всю работу придется переделывать.
Говоря о переводе софта, можно выделить следующие основные типы контента:
При переходе к каждому последующему пункту объем информации, которую надо переводить, возрастает. Само приложение может содержать 10–100 тысяч слов, различные руководства и обучающие курсы — еще 200–500 тысяч, а полная помощь по продукту — до 1–3 миллионов слов (все, конечно, зависит от проекта).
Если на сам продукт денег еще хватает, то все остальное может остаться за кадром, хотя, конечно, крупный продукт без перевода руководства пользователя может быть вообще бесполезным.
Если локализуется все, важным фактором становится то, что и руководство пользователя, и помощь по продукту должны основываться на строках самого приложения. Поэтому невнятная терминология или неудачное название элементов интерфейса, а также ошибки и опечатки в строках приложения ведут к воспроизведению тех же ошибок в остальных материалах, часто с умножением их числа. Плюс может появиться несогласованность софта и всего остального, со всеми вытекающими последствиями в отношении качества, сроков и затрат.
Итак, допустим, выбор сделан, локализация нужна.
Сразу необходимо задуматься о том, как все будет реализовано технически. Т. е. будут ли строки извлекаться из продукта, или перевод будет идти непосредственно в исходных материалах, и т. д.
Возможные варианты (не все, конечно) для софта:
После того как текстовые ресурсы каким-то образом были выделены, необходимо продумать то, как они будут храниться: в специализированной базе данных, в виде текстовых файлов на сервере и т. д.
Следующий вопрос, который надо задать себе: «А как будет происходить перевод обновлений и выпуск новых версий?» Обычно все эти задачи можно автоматизировать, но лучше задумываться об этом с самого начала.
Главная особенность этого этапа заключается в том, что любая ошибка, допущенная при подготовке контента, автоматически умножается на количество языков перевода (N). Возьмем произвольную плохо сформулированную фразу.
В лучшем случае N переводчиков попросят менеджера проектов перевода (TRM) прояснить эту фразу. TRM не обязательно является специалистом по продукту: это человек, который организовывает процесс. Ему придется потратить заведомо больше времени, чтобы разобраться в ситуации, чем людям, которые непосредственно создают контент.
В худшем случае N переводчиков, чтобы не терять время, переведут фразу так, как им будет удобно. В результате придется исправлять перевод на N языках, N раз привлекая для подтверждения корректности правки не только TRM, но и тестеров. После чего N*Х клиентов потратят время, чтобы установить обновление программы.
Контент грубо можно разделить на две составляющие: терминология (фундамент) и собственно остальные строки (все здание). Терминология — это место, в котором необходимо приложить максимум усилий, чтобы получить качественный перевод. Нужно создать список самых часто используемых терминов, добавить к нему самые сложные понятия и убедиться, что все термины взаимнооднозначны: одно понятие — один термин. Любая многозначность — головная боль для переводчиков.
После того как список терминов создан на исходном языке, его необходимо перевести на все целевые языки и проверить (это очень важный момент) локальными специалистами. Этот шаг, включая выверку, ни в коем случае нельзя пропускать. Пока запущен этот процесс, можно заняться самими строками продукта.
Существует множество способов создания контента приложения. Конкретная реализация зависит от процесса разработки, способа размещения строк и других факторов.
Частая ситуация: дизайнер, общаясь с клиентом (или продакт-маркетингом), создает первичную спецификацию продукта.
Далее программист пишет код, иногда копируя названия элементов интерфейса, иногда привнося что-то свое, включая ошибки.
Затем тестер проверяет работу программы, находит функциональные ошибки, дает рекомендации, в результате чего появляются элементы интерфейса и сообщения, которые не присутствовали в исходной дизайн-спецификации. Ни времени, ни ресурсов, чтобы синхронизировать новую версию кода с первоначальной спецификацией, обычно нет.
Вся процедура может повторяться несколько раз. Проблема усугубляется в крупных международных компаниях, когда основной язык приложения и разработки, также являющийся основой локализации, не является родным языком для одного или нескольких участников цепочки. Более того, все участники могут разговаривать на разных языках: продукт создается на английском, дизайнер — русский, программист — китаец, а тестирует мексиканец.
Добавьте еще две проблемы:
Результатом такого процесса будет может быть набор строк с непонятной терминологией и определенным количеством ошибок. Иногда в компании имеется специалист по терминологии и отдел технических писателей, которые проверяют созданный контент. Вообще, такая проверка оптимальна на этапе создания спецификаций, до того как строки попадут в код. В противном случае программистам придется переделывать свою работу. Иногда технические писатели занимаются только описанием созданного приложения, а качество строк остается на совести разработчиков.
Большую роль играет наличие проработанного пример [2]). И, кстати, тот факт, что существует отдел технических писателей, еще не гарантирует наличие стайл-гайда.
Рассмотрим случай, когда строки все-таки проходят какой-то контроль.
Ошибок может быть много. Например, в работе с одним тематическим кластером, отвечающим за определенную функциональность (особенно если она специфична для конкретной страны, язык которой не совпадает с языком разработки), могут использоваться термины, которые в другом модуле будут означать совсем другое. Или наоборот: разные сущности в разных функциональных частях приложения могут иметь одинаковые названия. Это запутывает как клиентов, так и разработчиков с техническими писателями, которые в итоге будут описывать систему.
• Start Date cannot be greater than the End Date.
• Due Date cannot be before Start Date.
• End Date Cannot Be Before The Start Date.
• Start Date may not be greater than the End Date.
• From Date cannot be greater than To Date.
• The Star date cannot be greater than the End date.
• The star date cannot be greater than the end date.
• From Date cannont be greater than To Date.
• From Date cannot be later than To Date.
• Start date cannot be greater then End date.
• The Start date cannot be greater than the End date.
• Begin Date may not be greater than the End Date.
• Invoice not found.
• Invoice cannot be found.
• Unable to find invoice.
• Invoice wasn't found.
Приведенные примеры – это по смыслу одинаковые строки, но при этом их создают разные программисты в разных отделах. Вместо того, чтобы везде использовать что-то одно, у нас 10 вариантов, за перевод которых надо платить деньги.
Один из путей решения задачи по упрощению контента — внедрение системы Controlled Language (CL). Ее основная идея состоит в унификации языка и терминологии приложения, приведении его в соответствие с разработанным стайл-гайдом компании и автоматизации проверки. При этом используется определенный набор: например, ограниченный набор слов, грамматических конструкций, ограничения на длину предложения и т. д.
Система дает следующие преимущества:
Controlled Language можно разворачивать у себя внутри, можно отдавать подрядчикам, например, просто как перевод с English на Simplified English.
Таким образом, контент приложения (софтовые строки) должен проходить предельно полный контроль, выверяться на соответствие определенному набору правил, характерных для отрасли в целом и для компании в частности. Контент должен быть понятным для максимально возможного числа людей, в том числе не обладающих глубокими знаниями продукта.
Перевод и проверка его качества заслуживают отдельной статьи, так как появляется целый комплекс вопросов: от того, стоит ли доверять автоматическим проверкам или обязательно привлекать локальных пользователей, до выбора системы управления переводами и поддержки пула переводчиков.
Отказывать программисту никак нельзя, но и обнажёнка — это как-то слишком. Поэтому вот вам:
Автор: ABBYYTeam
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/26878
Ссылки в тексте:
[1] не раз: http://habrahabr.ru/post/165705/
[2] пример: http://en.wikipedia.org/wiki/Microsoft_Manual_of_Style_for_Technical_Publications
[3] Источник: http://habrahabr.ru/post/168653/
Нажмите здесь для печати.