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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Этапы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии (8)


  1. Vitaly83vvp
    10.10.2024 12:07

    Могу добавить ещё и про разные переводы одного и того же слова, в зависимости от контекста. Если в оригинале это будет одна единица, то перевод будет корректен только для одного контекста, а не другого.

    Пример:
    исходный текст: МИР
    что должно быть в переводе: WORLD или PEACE?

    Если используются оба значения этого слова.


    1. aldekotan
      10.10.2024 12:07

      Примечательно, что наличие технической основы для перевода может сильно помочь в этом плане. Наткнулся на перевод изначально польской игры на русский, в котором классической проблемы с падежами и родом слов не было) Склонения имён прибавили живости произведению. Жаль, что очень часто мастер-версией выступает английская, как самая куцая в плане набора языковых возможностей.


  1. aldekotan
    10.10.2024 12:07

    Насчёт примера с Ивасиком (Janek) из Ведьмака 3, его разве не с польской версии переводили? Это заметно при сравнении переводов. Там где у поляков говорится молоко - в русской версии тоже молоко, а в английской, японской и французской - виски. В немецкой - шнапс.


    1. pda0
      10.10.2024 12:07

      Сейчас мы в пару к Ивасику ещё Индржиха позовём...


    1. Aggle
      10.10.2024 12:07

      Janek Kurwa?


  1. jmnemonik
    10.10.2024 12:07

    А что потрачено-то? И куда?


  1. frank3
    10.10.2024 12:07

    Михаил, спасибо за ряд статей.
    Видел ваши выступления на sqa и презу с heisenbug по локализации приложения. У меня возник вопрос кем вы сами являетесь? вы тестировщик или вы локализатор?


  1. frank3
    10.10.2024 12:07

    я проанализировал свои баги в приложении и разделили их на 4 типа:
    - ошибки переводов(это недопереводы)
    - ошибки локализации (это ошибки с форматами дат, символов, иконок)
    - ошибки контролов (текст наезжает на контрол или контрол его перекрывает)
    - ошибки системы (это пробелмы с диакритикой, или некорректно работающим приложением из-за особенностей языка)
    Вроде как перекликается с вашей кластеризацией.