Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Страх и ненависть локализации в больших проектах — Дмитрий Андриянов (Яндекс)

Страх и ненависть локализации в больших проектах — Дмитрий Андриянов (Яндекс)

Выступление на Live! Badoo Localization Meetup (21/04/2020)

Локализация — это просто, думаете вы. Нужно только вынести все тексты из кода приложения и перевести их.

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

Дмитрий расскажет, как организовали локализацию в Яндекс.Директе — проекте с десятками тысяч фрагментов текста и командой 40+ человек.

Badoo Tech

April 21, 2020
Tweet

More Decks by Badoo Tech

Other Decks in Programming

Transcript

  1. Страх и ненависть
    локализации
    в больших проектах
    Дмитрий Андриянов, Яндекс.Директ

    View full-size slide

  2. Процесс перевода
    сразу на всех языках
    не тормозится разработка
    ничего не конфликтует и не теряется

    View full-size slide

  3. i18n vs l10n

    View full-size slide

  4. i18n — это…
    когда вы пишете код

    View full-size slide

  5. Источник картинки

    View full-size slide

  6. l10n — это…
    перевод текстов

    View full-size slide

  7. i18n — сложно!
    l10n — просто?

    View full-size slide

  8. Continuous localization

    View full-size slide

  9. Проблемы:
    неудобный формат (текст)
    нужно хранить доп. информацию (статусы, контекст)
    нужна автоматизация

    View full-size slide

  10. Итог: научились
    выполнять локализацию
    многократно

    View full-size slide

  11. Параллельная
    разработка

    View full-size slide

  12. Проблемы
    перевод начинается после коммита в master
    задачи в куче

    View full-size slide

  13. --- src/components/Footer/lang/en.json Sat Jan 26 23:30:39 2020
    +++ src/components/Footer/lang/en.json Sat Jan 26 23:30:50 2020
    @@ -1,6 +1,6 @@
    {
    "advertisement": "Advertising",
    - "guide-link": "Гид по интерфейсу",
    + "guide-link": "Interface guide",
    "self-agency-help-link": "Department for working with ad agencies"
    };

    View full-size slide

  14. --- /trunk/src/desktop.blocks/trust-switcher.js Sat Jan 26 23:30:39 1991
    +++ /trunk/src/desktop.blocks/trust-switcher.js Sat Jan 26 23:30:50 1991
    @@ -9,3 +8,8 @@
    }).then(function(response) {
    + var frameTitle = shouldBindCard ?
    + iget2('trust-frame-title-bind', 'Привязка карты') :
    + iget2('trust-frame-title-pay', 'Пополнение общего счета');
    +
    parent._setSubmitButtonProgress(false);
    parent._setTitle(frameTitle);

    View full-size slide

  15. Решение:
    сделать ветки в Танкере

    View full-size slide

  16. Человеческие ошибки

    View full-size slide

  17. А — автоматизация

    View full-size slide

  18. Итог:
    запустили процесс
    в большой команде

    View full-size slide

  19. Конфликты слияния

    View full-size slide

  20. Конфликты
    {
    "account/btn-upload/ru": {
    "form": {
    "a": "Загрузить фото",
    "b": "Загрузить картинку или видео",
    "resolved": null
    },
    "hash": "2b5eea08e20948ade12e306c62e3dee"
    }
    }

    View full-size slide

  21. У нас было
    1 проект
    3 языка
    20K фрагментов текста
    40 фронтенд-разработчиков
    9 месяцев
    1.7К продуктовых тикетов

    View full-size slide

  22. Используйте платформу
    для переводов.

    View full-size slide

  23. Используйте платформу для переводов.
    Tanker

    View full-size slide

  24. Используйте платформу для переводов.
    Tanker
    gitlocalize.com
    crowdin.com
    locize.com

    View full-size slide

  25. Хаос в большой команде
    может победить
    автоматизация.

    View full-size slide

  26. Дмитрий Андриянов
    Яндекс.Директ
    [email protected]
    dima117
    dima117a
    dima117a
    Контакты

    View full-size slide