
Руководить локализацией в крупной компании-разработчике ПО и так непросто. А когда она переходит на гибкую методологию, становится ещё сложнее. Приходится кардинально — и быстро! — менять весь ход работы. Екатерина Галицкая и Дарья Егорушкина из отдела технического документирования и локализации «Лаборатории Касперского» рассказали о том, как им удалось не только справиться с трудностями, но и повысить эффективность своих процессов благодаря Smartcat.
Записано со слов Екатерины и Дарьи
Наша команда пишет интерфейсные тексты и справочные статьи для мобильных приложений «Лаборатории», а также локализует их. Рассказываем, как мы сделали весь процесс более надёжным, гибким и автоматизированным. Сперва поговорим про «боли», из-за которых начались изменения, а затем — о том, какие трудности сопутствовали изменениям и как (спойлер!) удалось их преодолеть. Надеемся, наш опыт вдохновит коллег, которые тоже столкнулись с трудностями перехода на аджайл — не только в разработке, но и в смежных аспектах.
Коварный аджайл
Как и многие другие компании-разработчики ПО, «Лаборатория Касперского» в определённый момент обратила внимание на agile-практики. Как предписывает гибкая методология разработки, циклы выпуска обновлений заметно сократились. Раньше новые версии приложений выходили раз в сколько-то месяцев, а стали — каждые две недели. Хоть в каждом релизе и меньше строк, нам, локализаторам, проще не стало: строки по-прежнему приходилось прогонять через весь процесс лингвистического тестирования и тестирования локализации, только вот сроки стали куда жёстче.
Кажется, будто в мобильных приложениях текста мало. Если бы! Наши приложения содержат в среднем 25 тыс. слов, и это только интерфейсные тексты. Умножьте эту цифру на 10 (количество приложений), а потом на 20 (количество целевых языков). Плюс каждую неделю добавляются новые тексты, в том числе документация.
Локализация стала узким местом в процессе развертывания релизов. Раньше продакт-менеджеры даже не знали нас по именам — зачем, если переводы появляются как по волшебству? Им пришлось погрузиться в различные аспекты локализации, причем куда глубже, чем хотелось.
В «Лаборатории» локализация состоит из двух этапов: перевод и лингвистическое тестирование.
С переводами основная проблема была в том, что приходилось слишком много работать руками — отчасти из-за неэффективности самого процесса, отчасти из-за ограничений CAT-инструмента. Объясним поконкретнее:
- Поскольку так называемые “multibranch pipelines” не поддерживались (Как это по-русски? «Конвейеры с несколькими ветвями»?), создавать дельты (разности при изменении) по переводам и затем возвращать их в ветви приходилось вручную.
- Обеспечить согласованность текстов между приложениями и языками было просто невозможно.
- Параллельно переводить отдельные кусочки (например, если исходные тексты изменились в процессе) тоже удавалось плохо. Ждали переводов основного комплекта и только потом приступали к кусочкам.
- При сборке постоянно возникали проблемы. Непереводимые фрагменты, апострофы без экранирования... В общем, «человеческий фактор».
Что до лингвистического тестирования, оно порой длилось по две недели. Для сравнения — на сами переводы уходило три-пять дней. Кстати, если вы не в курсе, что такое «лингвистическое тестирование», объясним кратко.
Основная цель этого этапа — проверить все переводы в контексте. Наши переводчики владеют терминологией, но когда видишь тексты в отрыве продукта, ошибки неизбежны.
Поэтому специальные люди вручную сопоставляют переводы с соответствующими элементами интерфейса. Чаще всего случается следующее:
- Текст не помещается в элемент. Если это финансовая или юридическая информация, компания сильно рискует.
- Текст не перевели. Это либо ошибка переводчика, либо программистов, которые «зашили» текст в код вместо того, чтобы вынести его в отдельную строку.
- Перевод не в контексте. Например, надпись на кнопке «Скачайте» вместо «Скачать».
На одни только скриншоты уходила уйма времени. Если новая функция затрагивала 40 экранов, а перевести нужно было на 20 языков, все эти ручные, механические манипуляции могли отнять до 70 часов!
Проходить всё это раз в три месяца было терпимо. Но каждые две недели! Долго бы мы так не выдержали.
Обсудили два варианта:
1. Нанять низкоквалифицированных сотрудников и уменьшить объём работ над локализацией. Понятно, что качество бы упало. ИЛИ
2. Внедрить автоматизацию.
Мы выбрали второе.
Почему Smartcat
Выбирая CAT/TMS-решение, мы определили приоритеты:
- Меньше корпоративных согласований — утверждений бюджетов, генерации серийных ключей и т. п.
- Готовый набор функций— чтобы сразу начать работу, не дожидаясь разработки дополнительных фич.
- Низкие требования к серверу — опять же, чтобы без долгих согласований.
- Недорогой, а лучше бесплатный ввод в эксплуатацию.
- Хорошая техподдержка, чтобы не пришлось нанимать специального разработчика.
- Безопасность — мы подключаемся к системе, а не наоборот.
- Поддержка нескольких ветвей, чтобы параллельно переводить тексты по нескольким функциям.
- Возможность переводить дополнительные тексты параллельно с основной партией.
До шорт-листа добрались два решения: Smartcat и Zing — инструмент для непрерывной локализации от создателей Evernote.
В Zing нам понравилась гибкость настроек, бесплатная установка и приватный доступ — возможность разместить решение у себя. Однако процесс установки оказался непростым, а значит онбординг всех переводчиков и сотрудников отнял бы у всех много времени.
Остановились на Smartcat. У нас запрещено подключать CAT-инструменты напрямую к внутренним системам управления версиями, поэтому решено было использовать Smartcat в связке с Serge. Serge — ПО с открытым исходным кодом, которое синхронизирует строки между системой контроля версий и системой управления переводами. Программа определяет строки в файлах различных форматов, преобразует строки в ресурсные файлы в формате PO и передаёт созданные файлы в Smartcat. Serge можно поставить на корпоративный сервер, так что данные не утекут.
Получилось отлично:
- Все наши требования удовлетворены: multibranch pipelines, дополнительные переводы, безопасность и т. д.
- Обновления приходят автоматически — не нужно ничего скачивать, устанавливать.
- Связка Smartcat + Serge позволяет парсить строки по собственным схемам.
- На платформе есть чат для общения с переводчиками.
- На Маркетплейсе можно найти новых специалистов, если понадобится.
- За все задачи по всем проектам и языкам платим одним счетом.
- Отличная техподдержка — ребята помогли запустить процесс и в приоритетном режиме добавили несколько важных для нас функций.
- Сервис практически бесплатный, но мы всё-таки купили подписку, чтобы искать тексты по всем документам проекта, но это для удобства.
Совсем без трудностей, правда, не обошлось:
- Изначально искать тексты по документам проекта было нельзя, но позже такая возможность появилась.
- Когда в проекте обновляется документ, фрилансеры иногда пропускают или игнорируют уведомления — приходится напоминать через встроенный чат.
- Менеджер вручную рассылает приглашения переводчикам. Говорят, скоро это можно будет делать автоматически.
Вообще, судя по нашему опыту, эти вопросы наверняка уже решаются.
До и после Smartcat
Сравним, как у нас было и что есть сейчас. Сперва поговорим о процессе, а затем будут цифры.
Процесс
Было
До изменений процесс перевода и тестирования состоял из почти 30 шагов:
Перевод:
- Забрать тексты из разных ветвей репозитория — вручную
- Создать дельту по переводам — вручную
- Собрать пакеты текстов на перевод
- Загрузить пакеты на FTP-сервер
- Разослать кучу писем агентствам, фрилансерам или местным офисам
- Забрать переводы с FTP-сервера
- Загрузить переводы в CAT-инструмент и проверить их на ошибки
- Загрузить переведённые строки в репозиторий, постаравшись не перепутать ветви — вручную
- Запустить сборку, исправить ошибки, завершить сборку
- Запросить дополнительные переводы — по сути, повторить процесс.
Лингвистическое тестирование:
- Запустить сборку и дождаться завершения
- Если из-за локализации были ошибки, перезапустить сборку
- Настроить специальную среду тестирования, если нет меню отладки
- Сделать скриншоты для более чем 20 языков
- Вместе с тестировщиками достать недостающие скриншоты
- Создать комплекты скриншотов и дать им названия
- Загрузить скриншоты на FTP-сервер
- Поручить проверку переводов агентству
- Ответить на вопросы агентства
- Получить результаты и внести изменения
- Выполнить сборку (бывает долго)
- Если были ошибки, выполнить сборку заново
- Сделать скриншоты для регрессионного тестирования
- Снова загрузить скриншоты и поручить задачи агентству
- Опять обсудить всё с агентством
- Если переводы изменились, ещё раз провести регрессионное тестирование
Стало
Smartcat сократил всё до девяти шагов:
- Копирайтер записывает новые строки в Git, Serge автоматически отправляет их в Smartcat
- Менеджер даёт задачи переводчикам
- Переводчики имеют контекст — скриншоты, комментарии
- Менеджер смотрит и принимает переводы, переводы автоматически возвращаются в Git
- Запускаем бота-скриншотера по локализованным текстам
- Помещаем скриншоты на FTP-сервер и передаём их переводчикам
- Переводчики проверяют и исправляют переводы по скриншотам
- Изменения автоматически попадают в Git
- Закрываем пул-реквест.
Процесс укоротился втрое — ощутимая разница!
Цифры
Все цифры указаны из расчёта на один релиз (выходит каждые две недели) и одно приложение.
Шаг | Часов занимало | Часов занимает |
Сбор строк из всех ветвей | 1 | - |
Создание дельты только по новым или обновленным строкам и их загрузка в CAT-инструмент для перевода на более чем 20 языков | 4 | 0.25 |
Упаковка исходных текстов для перевода на более чем 20 языков | 0.5 | - |
Загрузка пакетов с исходными текстами на FTP-сервер | 0.5 | - |
Подтверждение доступности агентств/переводчиков для выполнения переводов на более чем 20 языков | 2–3 | |
Назначение задач агентствам/переводчикам прямо на платформе | - | 0.25 |
Ответы на вопросы переводчиков | 2–4 | 0.5 |
Просмотр и принятие переводов | 1 | 0.25 |
Запуск сборки | До 8 | 0.25 |
Дополнительные переводы | 8 | 0.25 |
Производство скриншотов | 16–32 | 8 при использовании инструмента автоматического создания скриншотов |
Загрузка скриншотов на FTP-сервер | 8 | 1 |
Общение с агентствами/переводчиками и получение исправлений | 8 | 1 |
Обновление ресурсных файлов | 8 | 2 |
Запись изменений в Git | 8 | 0.25 |
Общее время в расчёте на релиз и приложение | 84 часа | 14 часов В 6 РАЗ меньше! |
Бонусы
Были и приятные сюрпризы:
- Более надёжная сборка: Благодаря плейсхолдерам мы больше не боимся проблем с непереводимыми фрагментами, неэкранированными спецсимволами и т. п.
- Встроенная в Smartcat система контроля качества обнажила давние ошибки.
- Мы больше не беспокоим ребят из других команд: не приходится забирать тестовые устройства у тестировщиков и отвлекать разработчиков на создание скриншотов.
- Переводчики работают лучше со скриншотами перед глазами — прямо в Редакторе.
Этот рассказ можно продолжать, и мы уверены, что впереди новые открытия, как работать ещё эффективнее и и качественнее. Но главное — локализация перестала быть проблемной зоной в цикле выпуска релизов. Нам кажется, что добиться таких результатов в столь сжатые сроки — успех как для нас, так и для Smartcat.
Приложение. Советы и идеи
Ниже — ряд действий, которые мы предприняли после внедрения Smartcat. Если решите пойти по нашим стопам, надеемся, эти шпаргалки будут полезны. Не всё легко повторить, однако если хотите оптимизировать процесс локализации и повысить качество, берите наши приёмы на вооружение.
Интеграция:
- Протестируйте интеграцию между Git, Serge и Smartcat. Убедитесь, что все строки оправляются на перевод и обратно — чтобы потом не возникло сюрпризов.
- Придумайте с разработчиками правила именования ветвей. Позже можно будет настроить бота для поиска конкретных ветвей для локализации — сэкономит время и вам, и разработчикам.
- Если нужно, создайте свои парсеры в Serge. Мы сделали так, чтобы переводчики видели ключи строк, комментарии и ссылки на скриншоты.
- Создайте задачу cron для поиска ветвей локализации по маске имени.
- Попробуйте фреймворк Kaspresso: он позволяет тестировать элементы интерфейса и создавать скриншоты. Наши разработчики добавляют к каждой строке ссылку на скриншот. В Smartcat ссылка автоматически переводит пользователя во вкладку «Комментарии». Узнать подробнее о возможностях Kaspresso можно здесь.
Локализация и лингвистическое тестирование: - Если у вас есть глоссарии, загрузите их в Smartcat, чтобы обеспечить согласованность между всеми локализуемыми текстами.
- Пригласите в Smartcat штатных переводчиков, чтобы те научились работать с платформой заранее.
- Найдите фрилансеров, объясните им свои процессы и убедитесь, что они знают про скриншоты, комментарии, глоссарии и другие функции.
- Если понадобится, найти агентства для выполнения дополнительных задач по локализации или тестированию можно на Маркетплейсе.
Надеемся, советы пригодятся. Есть чем поделиться из своего опыта? Напишите нам!