Готовиться к выводу продукта на международный рынок мы начали около года назад. Тогда же встал вопрос о переводе сервиса. Некоторые клиенты и раньше спрашивали нас, будет ли английская версия, мы даже давали возможность настроить мультиязычность чата через JS. Но для выхода «в мир» этого недостаточно, поэтому мы принялись за работу.
Сначала во всём сервисе мы выделили несколько блоков, которые требовали перевода:
Выделили, потому что к переводу каждой части надо подходить по-разному и каждую часть переводят разные люди, иногда несколько. Документацию API мы переводили просто в Google Docs. Чтобы не запутаться, составили даже несложный чеклист (отмечали, когда статью перевели и проверили). Базу знаний начали тоже в Google Docs, а потом перешли на Smartcat. Про Smartcat чуть позже.
Лендинги и блог писали сразу на английском. После кастдева на рынке США мы переделали свои лендинги для международного сайта, адаптировав их под те реалии и запросы. Статьи в английский блог пишут наши маркетологи, которые занимаются продвижением на американском (и международном) рынке.
Бэкенд переводили просто руками, прямо в json файлах. Одна из проблем с бэком в том, что его трудно тестировать. Бывает сложно (или даже невозможно) создать ту ситуацию, при которой появляется переведённый текст. Поэтому посмотреть, как на бою будут выглядеть некоторые переводы, было крайне сложно.
А вот перевод всех элементов админки — самый интересный вопрос в этой истории. Об этом расскажем подробнее.
Вот так она выглядит сейчас. В конце статьи увидите, какой она стала после перевода.
Раньше все тексты в интерфейсе (в кнопках, формах, подсказках), которые вы видите, были железно вбиты в код сервиса. Чтобы потом иметь возможность переводить на любой язык, нам пришлось пройтись по сервису и расставить везде ключи вместо текста. Это переменная в коде, которую не видит пользователь, а ей в соответствие ставится текст на том языке, который выбрал пользователь в настройках админки.
Расстановка ключей — это муторный, совсем не творческий процесс и, чтобы не демотивировать нашего «главного ключника», мы распределили эту задачу более-менее равномерно между всеми программистами. И всё равно в течение пары месяцев на Демо мы постоянно слышали «на прошлой неделе я расставлял ключи».
Ну и пользуясь случаем пошаманили внутри системы, чтобы с подключением других языков не было проблем.
Google Docs — One love. В любой непонятной ситуации можно использовать Google Docs. Так мы и поступили и начали переводить документацию API и базу знаний именно в нём.
Потом мы нашли Smartcat. Это бесплатный сервис для переводчиков, и его удобство в том, что переведённые фразы подставляются автоматически (ну, или должны подставляться). Скорость перевода увеличивается за счёт того, что в сервисе может работать сразу несколько человек и использовать уже переведённые фрагменты. Поэтому базу знаний и админку мы начали переводить уже в нём.
Так выглядят папки с переводами в Smartcat
А так выглядит сам процесс перевода:
Чтобы переводить в Smartcat, туда сначала надо загрузить файлы. Как вы можете догадаться, с базой знаний проблем не было, потому что она полностью состоит из текста, который можно выгрузить файлами и загрузить в Smartcat. А для админки Smartcat подходит плохо. Программист выгружал из Github .json файлы с ключами, перекидывал в Slack ответственному за перевод человеку, она загружала их в Smartcat, переводила, выгружала полученные файлы, отправляла обратно программисту, и он загружал их в Github. Так они вдвоём перевели почти всю админку.
Это не все проблемы. Другая сложность была в том, что даже в процессе перевода сервис менялся — мы не перестаём выкатывать фичи и править баги. Если в русскоязычном файле появлялся новый ключ, но у него не было перевода, пользователь увидит сам ключ, то есть абсолютно бессмысленную для него надпись. Выглядит это приблизительно так:
Поэтому периодически требовалось актуализировать перевод, чтобы версии соответствовали друг другу. Нужно отыскать изменившийся файл, затем строку и перевести новый вариант. Часто это всего одно слово или одна строка.
Наш программист за пол часа написал парсер, который проверял все строки и файлы русской и английской версии и находил несоответствия. Так как ключи одинаковые, парсер смотрел только на их значения. Нет перевода ключа — ошибка. Нет перевода файла — ошибка. В результате получался txt-файл, в котором перечислялось, какие файлы ещё не переведены, а в каких есть ошибки.
Смотришь в документ, находишь нужную строку, добавляешь значение и готово — стало немного проще ориентироваться не только в изменениях, но и в целом в переведённых файлах.
Работа через Smartcat была полезна — мы со скоростью подключения ключей постепенно переводили продукт и не оплачивали доп. сервисы. Но когда все ключи в админке были расставлены, надо было ускоряться и строить процесс.
Мы продолжили поиски сервиса для оптимальной работы. Два главных критерия, на которые мы обращали внимание:
При выборе мы опирались на вот этот обзор с Хабра. В итоге мы остановились Crowdin. Тарификация Crowdin идёт за количество переведённых строк, поэтому с его помощью мы только вносим изменения в уже переведённые (через боль и Smartcat) файлы. Зато видно прогресс перевода, все ошибки и изменения. А главное, отпала необходимость загрузки-выгрузки.
Вот как выглядит прогресс перевода в Crowdin, который полностью заменил нам парсер.
А вот, что видит переводчик:
Сначала мы постарались выписать все термины, которые используются в сервисе. Получился глоссарий (да, в родном Google Docs).
Это помогало находить взаимопонимание между всеми переводчиками. Если вы будете пользоваться только Smartcat, то глоссарий вам, скорее всего, и не понадобится — сервис сам подсказывает уже переведённые фразы, но мы, как вы уже поняли, пользовались не только им.
Дальше шло очень много битв за смысл, потому что перевод — это не только про то, чтобы сказать что-то на другом языке, но и про то, чтобы вас поняли. Текст важно адаптировать с учётом имеющихся ограничений.
Вот пример: вкладка Диалоги по логике сервиса должна переводиться как Conversations (в нашем словарике так и записано), но боковая панель слишком узкая, такое длинное слово в неё не помещалось. Мы придумывали и тестировали разные варианты названия панели, чтобы ограничения дизайна не сильно отражались на смысловом значении: были варианты Dialogs, Mail, Conv, но решено было остановиться на Inbox — входящие сообщения.
Во время адаптации не забудьте обратить внимание на следующие пункты:
Для того, чтобы перевод был понятен и не резал глаз американцам, мы планируем провести вычитку (так называемый proofreading). Перевод уже прошёл проверку нашей команды: разные люди проверяли всё, основываясь на своих знаниях, обращали внимание на все опечатки и ошибки. Затем мы передадим результат в руки носителей языка, которых нашли на бирже фрилансеров Upwork. Для нас важно, чтобы пруфридер был не только носителем американского английского, но и имел опыт в нашей сфере и работал с сервисами автоматизации маркетинга.
Пруфридинг нужен, чтобы не наткнуться на такое «у нас так не говорят».
В результате всех этих переводов, по сути, мы подняли отдельный продукт. Carrrot и Carrot quest — это разные сервисы. Мы и логотип сменили.
Вот лендинг сайта:
А так выглядит переведённая админка:
Конечно, мы могли сделать переключатель в настройках, который менял бы язык админки, но мы не стали так делать по нескольким причинам.
Разные сервера. Данные российских клиентов мы храним на российских серверах, как того требует законодательство, а западных — на серверах Google.
При самых первых контактах с потенциальными клиентами из Америки нам часто говорили, что название непонятное. Мы долго думали. Хотелось сохранить ключевую символику, не переделывать все под корень и остаться такими же яркими. Сервис многие называют просто Кэррот или Морковка. Поэтому думали сначала назваться просто Carrot, но домен был занят, да и это больше про садоводство. Решили, что будет Carrrot (с тремя R).
В названии скрыт дополнительный смысл. Это отсылка к «пиратским» метрикам AARRR:
Мы помогаем работать над каждой из них (кроме, пожалуй, привлечения) и намекаем об этом в названии.
Мы также переработали тарифную сетку и способы оплаты.
Сейчас все основные обновления мы выкатываем на русской версии сайта, а после тестирования добавляем на международную. Конечно, у нас есть русские пользователи и мы их очень ценим, поэтому относимся к релизам очень ответственно и не заставляем существующих клиентов вылавливать наши баги. Тем не менее, это помогает не править баги на обоих сайтах, а обкатать сначала на одном.
Мы прошли основную часть истории с переводами. Теперь только добавляем статей в блог, лендинги, дописываем последние статьи в базу знаний и следим за обновлениями в админке. Весь процесс перевода занял у нас около четырёх месяцев. Очень хочется, чтобы наш опыт был вам полезен.
Покажем, где вы теряете лидов, и составим план улучшений
Подпишитесь на рассылку Carrot quest
1 письмо в неделю со свежими материалами о маркетинге, поддержке и продажах
Нажимая на кнопку, вы даете согласие на обработку персональных данных