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 Slide

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

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

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

    View Slide

  8. i18n vs l10n

    View Slide

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

    View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

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

    View Slide

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

    View Slide

  16. View Slide

  17. View Slide

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

    View Slide

  19. Continuous localization

    View Slide

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

    View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. View Slide

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

    View Slide

  30. View Slide

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

    View Slide

  32. View Slide

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

    View Slide

  34. View Slide

  35. --- 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 Slide

  36. --- /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 Slide

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

    View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. View Slide

  42. View Slide

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

    View Slide

  44. View Slide

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

    View Slide

  46. View Slide

  47. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  51. View Slide

  52. Итоги

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide