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. None
  2. Страх и ненависть локализации в больших проектах Дмитрий Андриянов, Яндекс.Директ

  3. None
  4. None
  5. None
  6. None
  7. Процесс перевода сразу на всех языках не тормозится разработка ничего

    не конфликтует и не теряется
  8. i18n vs l10n

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

  10. None
  11. None
  12. None
  13. None
  14. Источник картинки

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

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

  19. Continuous localization

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

    нужна автоматизация
  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. Итог: научились выполнять локализацию многократно

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

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

  34. None
  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" };
  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);
  37. Решение: сделать ветки в Танкере

  38. None
  39. None
  40. None
  41. None
  42. None
  43. Человеческие ошибки

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

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

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

  50. Конфликты { "account/btn-upload/ru": { "form": { "a": "Загрузить фото", "b":

    "Загрузить картинку или видео", "resolved": null }, "hash": "2b5eea08e20948ade12e306c62e3dee" } }
  51. None
  52. Итоги

  53. У нас было 1 проект 3 языка 20K фрагментов текста

    40 фронтенд-разработчиков 9 месяцев 1.7К продуктовых тикетов
  54. Используйте платформу для переводов.

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

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

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

  58. Дмитрий Андриянов Яндекс.Директ dima117a@yandex-team.ru dima117 dima117a dima117a Контакты