Руководить локализацией в крупной компании-разработчике ПО и так непросто. А когда она переходит на гибкую методологию, становится ещё сложнее. Приходится кардинально — и быстро! — менять весь ход работы. Екатерина Галицкая и Дарья Егорушкина из отдела технического документирования и локализации «Лаборатории Касперского» рассказали о том, как им удалось не только справиться с трудностями, но и повысить эффективность своих процессов благодаря Smartcat.

Записано со слов Екатерины и Дарьи

Наша команда пишет интерфейсные тексты и справочные статьи для мобильных приложений «Лаборатории», а также локализует их. Рассказываем, как мы сделали весь процесс более надёжным, гибким и автоматизированным. Сперва поговорим про «боли», из-за которых начались изменения, а затем — о том, какие трудности сопутствовали изменениям и как (спойлер!) удалось их преодолеть. Надеемся, наш опыт вдохновит коллег, которые тоже столкнулись с трудностями перехода на аджайл — не только в разработке, но и в смежных аспектах.

Коварный аджайл

Как и многие другие компании-разработчики ПО, «Лаборатория Касперского» в определённый момент обратила внимание на agile-практики. Как предписывает гибкая методология разработки, циклы выпуска обновлений заметно сократились. Раньше новые версии приложений выходили раз в сколько-то месяцев, а стали — каждые две недели. Хоть в каждом релизе и меньше строк, нам, локализаторам, проще не стало: строки по-прежнему приходилось прогонять через весь процесс лингвистического тестирования и тестирования локализации, только вот сроки стали куда жёстче.

Кажется, будто в мобильных приложениях текста мало. Если бы! Наши приложения содержат в среднем 25 тыс. слов, и это только интерфейсные тексты. Умножьте эту цифру на 10 (количество приложений), а потом на 20 (количество целевых языков). Плюс каждую неделю добавляются новые тексты, в том числе документация.

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

В «Лаборатории» локализация состоит из двух этапов: перевод и лингвистическое тестирование.

С переводами основная проблема была в том, что приходилось слишком много работать руками — отчасти из-за неэффективности самого процесса, отчасти из-за ограничений CAT-инструмента. Объясним поконкретнее:

  • Поскольку так называемые “multibranch pipelines” не поддерживались (Как это по-русски? «Конвейеры с несколькими ветвями»?), создавать дельты (разности при изменении) по переводам и затем возвращать их в ветви приходилось вручную.
  • Обеспечить согласованность текстов между приложениями и языками было просто невозможно.
  • Параллельно переводить отдельные кусочки (например, если исходные тексты изменились в процессе) тоже удавалось плохо. Ждали переводов основного комплекта и только потом приступали к кусочкам.
  • При сборке постоянно возникали проблемы. Непереводимые фрагменты, апострофы без экранирования... В общем, «человеческий фактор».

Что до лингвистического тестирования, оно порой длилось по две недели. Для сравнения — на сами переводы уходило три-пять дней. Кстати, если вы не в курсе, что такое «лингвистическое тестирование», объясним кратко.

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

Поэтому специальные люди вручную сопоставляют переводы с соответствующими элементами интерфейса. Чаще всего случается следующее:

  • Текст не помещается в элемент. Если это финансовая или юридическая информация, компания сильно рискует.
  • Текст не перевели. Это либо ошибка переводчика, либо программистов, которые «зашили» текст в код вместо того, чтобы вынести его в отдельную строку.
  • Перевод не в контексте. Например, надпись на кнопке «Скачайте» вместо «Скачать».

На одни только скриншоты уходила уйма времени. Если новая функция затрагивала 40 экранов, а перевести нужно было на 20 языков, все эти ручные, механические манипуляции могли отнять до 70 часов!

Проходить всё это раз в три месяца было терпимо. Но каждые две недели! Долго бы мы так не выдержали.

Обсудили два варианта:

1. Нанять низкоквалифицированных сотрудников и уменьшить объём работ над локализацией. Понятно, что качество бы упало. ИЛИ
2. Внедрить автоматизацию.

Мы выбрали второе.

Почему Smartcat

Выбирая CAT/TMS-решение, мы определили приоритеты:

  1. Меньше корпоративных согласований — утверждений бюджетов, генерации серийных ключей и т. п.
  2. Готовый набор функций— чтобы сразу начать работу, не дожидаясь разработки дополнительных фич.
  3. Низкие требования к серверу — опять же, чтобы без долгих согласований.
  4. Недорогой, а лучше бесплатный ввод в эксплуатацию.
  5. Хорошая техподдержка, чтобы не пришлось нанимать специального разработчика.
  6. Безопасность — мы подключаемся к системе, а не наоборот.
  7. Поддержка нескольких ветвей, чтобы параллельно переводить тексты по нескольким функциям.
  8. Возможность переводить дополнительные тексты параллельно с основной партией.

До шорт-листа добрались два решения: Smartcat и Zing — инструмент для непрерывной локализации от создателей Evernote.

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

Остановились на Smartcat. У нас запрещено подключать CAT-инструменты напрямую к внутренним системам управления версиями, поэтому решено было использовать Smartcat в связке с Serge. Serge — ПО с открытым исходным кодом, которое синхронизирует строки между системой контроля версий и системой управления переводами. Программа определяет строки в файлах различных форматов, преобразует строки в ресурсные файлы в формате PO и передаёт созданные файлы в Smartcat. Serge можно поставить на корпоративный сервер, так что данные не утекут.

Получилось отлично:

  • Все наши требования удовлетворены: multibranch pipelines, дополнительные переводы, безопасность и т. д.
  • Обновления приходят автоматически — не нужно ничего скачивать, устанавливать.
  • Связка Smartcat + Serge позволяет парсить строки по собственным схемам.
  • На платформе есть чат для общения с переводчиками.
  • На Маркетплейсе можно найти новых специалистов, если понадобится.
  • За все задачи по всем проектам и языкам платим одним счетом.
  • Отличная техподдержка — ребята помогли запустить процесс и в приоритетном режиме добавили несколько важных для нас функций.
  • Сервис практически бесплатный, но мы всё-таки купили подписку, чтобы искать тексты по всем документам проекта, но это для удобства.

Совсем без трудностей, правда, не обошлось:

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

Вообще, судя по нашему опыту, эти вопросы наверняка уже решаются.

До и после Smartcat

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

Процесс

Было

До изменений процесс перевода и тестирования состоял из почти 30 шагов:
Перевод:

  1. Забрать тексты из разных ветвей репозитория — вручную
  2. Создать дельту по переводам — вручную
  3. Собрать пакеты текстов на перевод
  4. Загрузить пакеты на FTP-сервер
  5. Разослать кучу писем агентствам, фрилансерам или местным офисам
  6. Забрать переводы с FTP-сервера
  7. Загрузить переводы в CAT-инструмент и проверить их на ошибки
  8. Загрузить переведённые строки в репозиторий, постаравшись не перепутать ветви — вручную
  9. Запустить сборку, исправить ошибки, завершить сборку
  10. Запросить дополнительные переводы — по сути, повторить процесс.

Лингвистическое тестирование:

  1. Запустить сборку и дождаться завершения
  2. Если из-за локализации были ошибки, перезапустить сборку
  3. Настроить специальную среду тестирования, если нет меню отладки
  4. Сделать скриншоты для более чем 20 языков
  5. Вместе с тестировщиками достать недостающие скриншоты
  6. Создать комплекты скриншотов и дать им названия
  7. Загрузить скриншоты на FTP-сервер
  8. Поручить проверку переводов агентству
  9. Ответить на вопросы агентства
  10. Получить результаты и внести изменения
  11. Выполнить сборку (бывает долго)
  12. Если были ошибки, выполнить сборку заново
  13. Сделать скриншоты для регрессионного тестирования
  14. Снова загрузить скриншоты и поручить задачи агентству
  15. Опять обсудить всё с агентством
  16. Если переводы изменились, ещё раз провести регрессионное тестирование

Стало

Smartcat сократил всё до девяти шагов:

  1. Копирайтер записывает новые строки в Git, Serge автоматически отправляет их в Smartcat
  2. Менеджер даёт задачи переводчикам
  3. Переводчики имеют контекст — скриншоты, комментарии
  4. Менеджер смотрит и принимает переводы, переводы автоматически возвращаются в Git
  5. Запускаем бота-скриншотера по локализованным текстам
  6. Помещаем скриншоты на FTP-сервер и передаём их переводчикам
  7. Переводчики проверяют и исправляют переводы по скриншотам
  8. Изменения автоматически попадают в Git
  9. Закрываем пул-реквест.
    Процесс укоротился втрое — ощутимая разница!

Цифры

Все цифры указаны из расчёта на один релиз (выходит каждые две недели) и одно приложение.

ШагЧасов занималоЧасов занимает
Сбор строк из всех ветвей1-
Создание дельты только по новым или обновленным строкам и их загрузка в CAT-инструмент для перевода на более чем 20 языков40.25
Упаковка исходных текстов для перевода на более чем 20 языков0.5-
Загрузка пакетов с исходными текстами на FTP-сервер0.5-
Подтверждение доступности агентств/переводчиков для выполнения переводов на более чем 20 языков2–3
Назначение задач агентствам/переводчикам прямо на платформе-0.25
Ответы на вопросы переводчиков2–40.5
Просмотр и принятие переводов10.25
Запуск сборкиДо 80.25
Дополнительные переводы80.25
Производство скриншотов16–328 при использовании инструмента автоматического создания скриншотов
Загрузка скриншотов на FTP-сервер81
Общение с агентствами/переводчиками и получение исправлений81
Обновление ресурсных файлов82
Запись изменений в Git80.25
Общее время в расчёте на релиз и приложение84 часа14 часов
В 6 РАЗ меньше!

Бонусы

Были и приятные сюрпризы:

  • Более надёжная сборка: Благодаря плейсхолдерам мы больше не боимся проблем с непереводимыми фрагментами, неэкранированными спецсимволами и т. п.
  • Встроенная в Smartcat система контроля качества обнажила давние ошибки.
  • Мы больше не беспокоим ребят из других команд: не приходится забирать тестовые устройства у тестировщиков и отвлекать разработчиков на создание скриншотов.
  • Переводчики работают лучше со скриншотами перед глазами — прямо в Редакторе.
    Этот рассказ можно продолжать, и мы уверены, что впереди новые открытия, как работать ещё эффективнее и и качественнее. Но главное — локализация перестала быть проблемной зоной в цикле выпуска релизов. Нам кажется, что добиться таких результатов в столь сжатые сроки — успех как для нас, так и для Smartcat.

Приложение. Советы и идеи

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

  • Протестируйте интеграцию между Git, Serge и Smartcat. Убедитесь, что все строки оправляются на перевод и обратно — чтобы потом не возникло сюрпризов.
  • Придумайте с разработчиками правила именования ветвей. Позже можно будет настроить бота для поиска конкретных ветвей для локализации — сэкономит время и вам, и разработчикам.
  • Если нужно, создайте свои парсеры в Serge. Мы сделали так, чтобы переводчики видели ключи строк, комментарии и ссылки на скриншоты.
  • Создайте задачу cron для поиска ветвей локализации по маске имени.
  • Попробуйте фреймворк Kaspresso: он позволяет тестировать элементы интерфейса и создавать скриншоты. Наши разработчики добавляют к каждой строке ссылку на скриншот. В Smartcat ссылка автоматически переводит пользователя во вкладку «Комментарии». Узнать подробнее о возможностях Kaspresso можно здесь.
    Локализация и лингвистическое тестирование:
  • Если у вас есть глоссарии, загрузите их в Smartcat, чтобы обеспечить согласованность между всеми локализуемыми текстами.
  • Пригласите в Smartcat штатных переводчиков, чтобы те научились работать с платформой заранее.
  • Найдите фрилансеров, объясните им свои процессы и убедитесь, что они знают про скриншоты, комментарии, глоссарии и другие функции.
  • Если понадобится, найти агентства для выполнения дополнительных задач по локализации или тестированию можно на Маркетплейсе.

Надеемся, советы пригодятся. Есть чем поделиться из своего опыта? Напишите нам!