ПОТРАЧЕНО. Как тестировать локализацию переводов, чтобы потом не было стыдно

Привет! Меня зовут Михаил Кургузов, я из отдела локализации и переводов SM Lab. В этом цикле постов я расскажу о локализации и ее интеграции в процесс тестирования ПО. 

  • Пост #1 (вы находитесь здесь) — общая вводная про локализация и интернационализацию, важные примеры, лингвистические ошибки и функциональные баги, особенности разных языков.

  • Пост #2 — особенности тестирования локализации, кто чем занимается, как проходит процесс.

  • Пост #3 — чеклист, лучшие практики, дополнительные материалы и много полезных примеров.

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

Еще пример — HSBC. Это один из крупнейших банков в мире. Выходя на рынок Гонконга и запуская там свой интернет-банк, HSBC поймал проблемы с кодировкой. В итоге получилось так, что система банально не распознавала ввод символов на нужном языке и это, естественно, мешало клиентам проводить онлайн-платежи и, в целом, пользоваться интернет-банком. По итогу были убытки, связанные с потерей клиентов, и репутационные потери. 

Еще один кейс — всем известный Uber. Выходя на рынок Южной Кореи, ребята столкнулись сразу с двумя проблемами. Во-первых, не поддерживалась местная, наиболее популярная платежная система — Aopay, и плюс к этому некорректно отображались корейские символы в приложении. По очень приблизительным оценкам компания Uber от вот таких вот косяков понесла финансовые потери в размере более 100 миллионов долларов. 

Собственно, что же объединяет все эти истории?

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

Я работаю в группе компаний Спортмастер. В нее входят 5 торговых сетей. Это Спортмастер, Остин, Фандэй, Демикс, Скетчерс. Магазины нашей розничной сети работают в шести странах — Россия, Беларусь, Казахстан, Армения, Киргизия и Узбекистан.

Раньше наша розница работала еще в Китае, Польше, Дании. И для этих филиалов мы тоже осуществляли весь спектр услуг локализации. Соответственно, 1700 магазинов, 45 тысяч сотрудников и так далее. 

c7c4f93862efafbeb42a7f9eae86efe0.png

У нас есть офисы также не только в тех шести странах, которые я перечислил, но и в таких странах как Китай, Вьетнам, Сингапур, Бангладеш.

Наш СЭД-вый отдел, отдел локализации и переводов представляет бренд SM Lab. Это IT-подразделение компании Спортмастер, которое занимается внутренней разработкой софта. Ну и, собственно, мы помогаем с локализацией всего этого дела. И быстренько обо мне. Я, как это уже сказал, работаю больше 10 лет в сфере локализации. Я не понаслышке знаю, что такое тестирование локализации и с чем можно столкнуться в этом процессе. 

Участвовал в подготовке и запуске зарубежных филиалов нашей компании. Занимаюсь исследованием в области машинного перевода и осуществил запуск неправильной локализации в компании. Про неправильную локализацию мы поговорим чуть позже. 

Собственно, есть три главных элемента. От самого такого крупного до помельче. Это глобализация, интернационализация и локализация. 

1ce30ac6967726bf4bb36a2c2fb2ef50.png

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

Интернационализация. Ее очень часто сокращают до I-18N, соответственно, первая и последняя буква, плюс количество букв между ними. Это такой процесс разработки продукта, при котором программный код максимально готов к использованию в других странах или регионах. То есть, соответственно, он готовится таким образом, чтобы можно было максимально легко выйти на рынки других стран.

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

В качестве примера хорошо выполненной интернационализации можно привести продукты IKEA. 

c9b491b46a6c1873d1b2494b54dd89d6.jpeg

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

Теперь про локализацию.

Собственно, L10N — это перевод и культурная адаптация продукта под стандарты определенной страны или региона.

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

e7d6f56e6de00b6bd08b3ebc93e32ff8.png

По сути, что такое перевод? Грубо говоря, просто представление текста на другом языке, в то же время локализация — это именно адаптация текстовых значений под стандарты других стран.

Притом важно отметить, что внимание уделяется очень широкому спектру моментов, то есть не только текст, но даже цветовая гамма, использование различных значков, эмоджи — это тоже все проверяется в процессе, во-первых, локализации, во-вторых, локализационного тестирования.

В чем отличие перевода от локализации?

В третьем Ведьмаке был прекрасный такой персонаж — в английской версии его имя звучит как Джонни. Собственно, если бы это был просто перевод, то тогда и на русском было бы Джонни, но так как все-таки третьего Ведьмака именно локализовывали для использования в РФ, то получилось прекрасное имя Ивасик.

83ed13b972bfcd38377d3ea1471aa8f8.jpeg

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

9465807638ff6b459301f1efc6ca1609.png

Если у нас он воспринимается позитивно, то в некоторых странах он может восприниматься именно уже оскорбительно.

Этапы

7abef3e6ab749a570db03191360305ff.png

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

Далее — проверка на соответствие культурным и языковым нормам в других странах.

Это как раз вот в тему тех же emoji, цветов и так далее.

Затем — лингвистические проверки.

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

Давайте подробнее про лингвистические ошибки.

42af15287de87e71d30cd205873c0523.png

  1. Неединобразие перевода.

Представьте, что одна и та же кнопка, которая отвечает за одну и ту же функцию, в разных интерфейсах приложения переведена по-разному. И иногда, может быть, и так понятно, за что кнопка отвечает. Например, если она переведена в одном окне — «ОК», в другом — «Хорошо». Ну, в целом понятно.

В то же время, перевод может достаточно сильно отличаться по смыслу. То есть, условно, тот же delete и remove. Remove это, скорее, убрать из текущего интерфейса, то delete — это полное удаление.

  1. Недопереводы.

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

  1. Несоответствие перевода графическим элементам, как в примере с вистой, когда подсказка относится не к той кнопке.

  2. Несоответствие перевода контексту. 

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

А вот насчет несоответствия перевода контексту — самый наглядный пример это всем известное «Потрачено», которое давно уже стало мемом в русскоязычном интернете.

50c64a1cefcb31bb684769a66c6488c6.jpeg

Изначально слово wasted — это сленговое слово, которое переводится как «замочили», «завалили». Но так как все это делалось без знания контекста и вообще не обращали на это никакого внимания, то в итоге получили вот то самое «потрачено».

Функциональные баги

49f421d67b791aa93bd3f73b56be95e1.png

  1.  Некорректно отображаемые спецсимволы

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

  1. Некорректное форматирование любых данных

Отмечу ниже в чек-листе.

  1. Несоответствие длины текста и размера графического элемента. 

Вот скрин для наглядности.

Языки могут очень сильно отличаться друг от друга по своей длине. Например, по одним исследованием, русский язык в среднем процентов на 30 длиннее английского.

5dfde6fdf183c18608a78ecc21cc989f.png

Также можно обратиться к другой статистике, это среднее количество букв в разных языках. И, как мы можем видеть, там тот же сербский, всего лишь 7 букв. Датский и немецкий — уже в районе 11.

И, собственно, шестибуквенный «бэтмен» в английском и в русском языках превращается в прекрасное слово «ледерлапен», которое практически в два раза длиннее на том же шведском.

ee4a8b9d073f2580186940074e036bad.jpeg

И это мы ещё не говорим про различные грамматические особенности различных языков — например, тех же скандинавских, которые считаются одними из самых длинных в мире. Главная причина этого — это особенности словообразования, когда, по сути, новые слова получаются путем банального выражения. По итогу получаем вот такие прекрасные примеры, когда одно слово практически на три строки, и его даже особо не разбить по пробелам.

4037137361da4ea1bf04055243f22669.jpeg

А ещё в некоторых языках правило переноса не распространено в принципе.

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

Тут, как мы видим, текст банально не помещается на кнопке.

?utm_source=habrahabr&utm_medium=rss&utm

Тут что-то у нас подставилось, но что — непонятно.

acb18b9084a05b1bb1b6ec21cfbffd8c.jpeg

И игрок вряд ли поймет, что он такое получил и почему он такой молодец.

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

a260cf0f58859c746662dd0716064cc1.jpeg

Тут вообще комбо. Это скриншот окошка под макось.

662e7e1c22b3feaca9c1e806b595fb94.jpeg

Тут отсутствие апострофов, что для итальянского языка критично.Ещё видим, что не подставились какие-либо переменные, и плюс еще текст в кнопочку не умещается.

А вот уже пример из нашей деятельности.

ef4a82e8c3e161a213a016b0c85cf6ce.jpeg

Здесь и недоперевод, и то, что где-то текст заезжает на элемент интерфейса, где-то он им перекрывается.

791f0eb2967006f13c02fe18642e2c9e.jpeg

Тоже текст не поместился, к сожалению. И снова недопереводы.

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

© Habrahabr.ru