Локализация и перевод SaaS-сервиса на английский для выхода на международные рынки

10 минут
19.07.2018
Локализация и перевод SaaS-сервиса на английский для выхода на международные рынки

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

Определяем план работы

Сначала во всём сервисе мы выделили несколько блоков, которые требовали перевода:

  1. Документация API;
  2. база знаний;
  3. лендинги;
  4. блог;
  5. админка;
  6. бэкенд.

Выделили, потому что к переводу каждой части надо подходить по-разному и каждую часть переводят разные люди, иногда несколько. Документацию API мы переводили просто в Google Docs. Чтобы не запутаться, составили даже несложный чеклист (отмечали, когда статью перевели и проверили). Базу знаний начали тоже в Google Docs, а потом перешли на Smartcat. Про Smartcat чуть позже.

чек-лист по переводам

Лендинги и блог писали сразу на английском. После кастдева на рынке США мы переделали свои лендинги для международного сайта, адаптировав их под те реалии и запросы. Статьи в английский блог пишут наши маркетологи, которые занимаются продвижением на американском (и международном) рынке.

Бэкенд переводили просто руками, прямо в json файлах. Одна из проблем с бэком в том, что его трудно тестировать. Бывает сложно (или даже невозможно) создать ту ситуацию, при которой появляется переведённый текст. Поэтому посмотреть, как на бою будут выглядеть некоторые переводы, было крайне сложно.

А вот перевод всех элементов админки — самый интересный вопрос в этой истории. Об этом расскажем подробнее.

Вот так она выглядит сейчас. В конце статьи увидите, какой она стала после перевода.

админка Carrot quest на русском языке

С какими проблемами столкнулись во время работы

  • Необходимо оценить объём работ и ничего не забыть;
  • Изначальная негибкость собственной системы;
  • Организация работы: подбор инструментов и распределения обязанностей в команде;
  • Сложность в адекватном переводе многих терминов и синхронизации между переводчиками;
  • Частые обновления в русской версии сервиса. Необходимо было реагировать на каждое это изменение и не забывать это перевести.

Подготовительный этап — расставляем ключи

Раньше все тексты в интерфейсе (в кнопках, формах, подсказках), которые вы видите, были железно вбиты в код сервиса. Чтобы потом иметь возможность переводить на любой язык, нам пришлось пройтись по сервису и расставить везде ключи вместо текста. Это переменная в коде, которую не видит пользователь, а ей в соответствие ставится текст на том языке, который выбрал пользователь в настройках админки.

Расстановка ключей — это муторный, совсем не творческий процесс и, чтобы не демотивировать нашего «главного ключника», мы распределили эту задачу более-менее равномерно между всеми программистами. И всё равно в течение пары месяцев на Демо мы постоянно слышали «на прошлой неделе я расставлял ключи».

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

Изучаем сервисы по переводу

Google Docs — One love. В любой непонятной ситуации можно использовать Google Docs. Так мы и поступили и начали переводить документацию API и базу знаний именно в нём.

Потом мы нашли Smartcat. Это бесплатный сервис для переводчиков, и его удобство в том, что переведённые фразы подставляются автоматически (ну, или должны подставляться). Скорость перевода увеличивается за счёт того, что в сервисе может работать сразу несколько человек и использовать уже переведённые фрагменты. Поэтому базу знаний и админку мы начали переводить уже в нём.

Так выглядят папки с переводами в Smartcat

рабочие папки

А так выглядит сам процесс перевода:

перевод фраз в сервисе Smartcat

Чтобы переводить в Smartcat, туда сначала надо загрузить файлы. Как вы можете догадаться, с базой знаний проблем не было, потому что она полностью состоит из текста, который можно выгрузить файлами и загрузить в Smartcat. А для админки Smartcat подходит плохо. Программист выгружал из Github .json файлы с ключами, перекидывал в Slack ответственному за перевод человеку, она загружала их в Smartcat, переводила, выгружала полученные файлы, отправляла обратно программисту, и он загружал их в Github. Так они вдвоём перевели почти всю админку. 

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

интеграция с разными соц.сетями

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

Наш программист за пол часа написал парсер, который проверял все строки и файлы русской и английской версии и находил несоответствия. Так как ключи одинаковые, парсер смотрел только на их значения. Нет перевода ключа — ошибка. Нет перевода файла — ошибка. В результате получался txt-файл, в котором перечислялось, какие файлы ещё не переведены, а в каких есть ошибки.

текст ошибок

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

Подключаем WYSIWYG редактор для локализации сервиса

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

Мы продолжили поиски сервиса для оптимальной работы. Два главных критерия, на которые мы обращали внимание:

  1. Визивиг-редактор (WYSIWYG — What You See IWhat You Get);
  2. Интеграция с GitHub.

При выборе мы опирались на вот этот обзор с Хабра. В итоге мы остановились Crowdin. Тарификация Crowdin идёт за количество переведённых строк, поэтому с его помощью мы только вносим изменения в уже переведённые (через боль и Smartcat) файлы. Зато видно прогресс перевода, все ошибки и изменения. А главное, отпала необходимость загрузки-выгрузки.

Вот как выглядит прогресс перевода в Crowdin, который полностью заменил нам парсер.

перевод на английский

А вот, что видит переводчик:

интерфейс переводчика

Делаем сервис понятнее (адаптация перевода)

Сначала мы постарались выписать все термины, которые используются в сервисе. Получился глоссарий (да, в родном Google Docs).

словарь для перевода сервиса

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

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

Вот пример: вкладка Диалоги по логике сервиса должна переводиться как Conversations (в нашем словарике так и записано), но боковая панель слишком узкая, такое длинное слово в неё не помещалось. Мы придумывали и тестировали разные варианты названия панели, чтобы ограничения дизайна не сильно отражались на смысловом значении: были варианты Dialogs, Mail, Conv, но решено было остановиться на Inbox — входящие сообщения.

Во время адаптации не забудьте обратить внимание на следующие пункты:

  • цены (в какой валюте они написаны),
  • способы оплаты (не надо ли прикрутить дополнительные, более распространённые в Америке и Европе)
  • формат даты (в Америке число и месяц меняются местами: ММ/ДД/ГГГГ);
  • формат времени (12-часовой формат).
форматы дат в Европе, Америке и Японии

Проверяем качество перевода

Для того, чтобы перевод был понятен и не резал глаз американцам, мы планируем провести вычитку (так называемый proofreading). Перевод уже прошёл проверку нашей команды: разные люди проверяли всё, основываясь на своих знаниях, обращали внимание на все опечатки и ошибки. Затем мы передадим результат в руки носителей языка, которых нашли на бирже фрилансеров Upwork. Для нас важно, чтобы пруфридер был не только носителем американского английского, но и имел опыт в нашей сфере и работал с сервисами автоматизации маркетинга.

Пруфридинг нужен, чтобы не наткнуться на такое «у нас так не говорят».

Итог — Новый продукт

В результате всех этих переводов, по сути, мы подняли отдельный продукт. Carrrot и Carrot quest — это разные сервисы. Мы и логотип сменили.

лого Carrot quest

Вот лендинг сайта:

лендинг сервиса Carrot quest

А так выглядит переведённая админка:

чаты с клиентами

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

1. Безопасность

Разные сервера. Данные российских клиентов мы храним на российских серверах, как того требует законодательство, а западных — на серверах Google.

2. Результаты сustdev

При самых первых контактах с потенциальными клиентами из Америки нам часто говорили, что название непонятное. Мы долго думали. Хотелось сохранить ключевую символику, не переделывать все под корень и остаться такими же яркими. Сервис многие называют просто Кэррот или Морковка. Поэтому думали сначала назваться просто Carrot, но домен был занят, да и это больше про садоводство. Решили, что будет Carrrot (с тремя R). 

В названии скрыт дополнительный смысл. Это отсылка к «пиратским» метрикам AARRR:

  • acquisition (привлечение);
  • activation (активация);
  • retention (удержание);
  • retention (удержание);

Мы помогаем работать над каждой из них (кроме, пожалуй, привлечения) и намекаем об этом в названии.

Мы также переработали тарифную сетку и способы оплаты.

тарифный план по скроллу

3. Тестирование

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

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

Трафик есть, а заявок нет?

Покажем, где вы теряете лидов, и составим план улучшений

Лучшее в блоге: