Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".

1,269 views

Published on

1. Общее устройство системы перевода в Badoo
2. Лексемы, интеграция с таск-трекером
3. Иерархия языков, интерфейс перевода
4. Выделение лексем из текста: парсер, знающий HTML
5. Интеграция с git: многоверсионная система хранения лексем

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".

  1. 1. Система переводав BadooBadoo, Юрий Насретдиновy.nasretdinov@corp.badoo.com
  2. 2. • 177+ млн пользователей• PHP-FPM: 30+ тыс запросов в сек• 140 тыс регистраций в день• 3 млн фото / видео в день• 50 языков интерфейсаО компании
  3. 3. Система переводаHello
  4. 4. Система переводаПривет  ‫שלום‬Bonjour
  5. 5. Blitz-шаблоны<h1>Results</h1><!-- BEGIN NOTHING -->No results found<!-- END NOTHING --><!-- BEGIN RESULT --><div>Name {{name}}, {{score}}</div><!-- END RESULT -->
  6. 6. Linc-файлы (тексты)
  7. 7. Blitz-шаблоны• Шаблоны обрабатываются спомощью движка Blitz• С помощью умного алгоритма™выделяются куски текста:лексемы
  8. 8. Blitz-шаблоны<h1>Results</h1><!-- BEGIN NOTHING -->No results found<!-- END NOTHING --><!-- BEGIN RESULT --><div>Name {{name}}, {{score}}</div><!-- END RESULT -->root_0: #1NOTHING:NOTHING_0: #2RESULT:RESULT_0: #3#3
  9. 9. Генерация файлов<h1>Results</h1><!-- BEGIN NOTHING -->No results found<!-- END NOTHING --><!-- BEGIN RESULT --><div>Name {{name}},{{score}}</div><!-- END RESULT --><h1>Результаты</h1><!-- BEGIN NOTHING -->Результатов не найдено<!-- END NOTHING --><!-- BEGIN RESULT --><div>Имя {{name}},{{score}}</div><!-- END RESULT -->
  10. 10. Генерация файлов• Нет специальных маркеровлексем• Пре-генерируются шаблоны,переведенные на все языки• + 100 000 файлов при деплое
  11. 11. Лексемы• Каждая лексема получает свойидентификатор (Lexem_id)• Даже лексемы с тем же текстомкаждый раз* получают новый id• Переводчики могут независимопоменять любой текст на сайте* В новом контексте
  12. 12. Типичный workflowZAPILIT-1Задача:Ветка:ZAPILIT-1_done_job(7bf41e1cae80ec6)+ file1.tpl- file2.phpM file3.tpl
  13. 13. Типичный workflowЛексемы:ZAPILIT-1:3 новых5 измененоДеплой: git merge ZAPILIT-1
  14. 14. Типичный workflowЛексемы:ZAPILIT-1:3 новых5 измененоДеплой: git merge ZAPILIT-1
  15. 15. Mini-staging: «шоты»• Staging из текущей ветки• Быстрое создание• Лексемы попадают на перевод вовремя тестирования задачи• Позволяют сократить времяожидания переводчиков
  16. 16. Иерархия языковMasterDevelEnglish (UK) Portuguese (Brazil)Portuguese (Portugal)
  17. 17. Иерархия языков• Отдельный язык — Devel• Сначала переводится на Master• Перевод наследуется от родителя
  18. 18. Проблемы с git?
  19. 19. Интеграция с git
  20. 20. Проблемы с git• Один файл могут редактировать вразных ветках одновременно• Ветки могут мержить друг в друга• Нужно сохранять id лексем послемержа двух версий файла
  21. 21. Хранение данных• Полная структурафайла хранится вбазе данных• Каждой лексеме вфайле выдаетсяуникальный idroot_0: #1NOTHING:NOTHING_0: #2RESULT:RESULT_0: #3
  22. 22. Что делать?• «Контекст» лексемы #3:«RESULT / RESULT_0»• Уровень вложенностиблоков имеет значение• Лексемы с тем жесодержимым имеюттакое же названиелексемы (RESULT_0)root_0: #1NOTHING:NOTHING_0: #2RESULT:RESULT_0: #3
  23. 23. Интеграция с git• Хранятся мастер-версии и диффык мастеру• Между собой диффы немержатся• Лексемы в том же контекстеполучают тот же id
  24. 24. Сохранение id лексемroot_0: #1NOTHING:NOTHING_0: #2root_0: #1RESULT:RESULT_0: #3+Задача1 Задача2
  25. 25. Сохранение id лексемroot_0: #1NOTHING:NOTHING_0: #2RESULT:RESULT_0: #3Задача1Задача2
  26. 26. Summary• Лексемы выделяются автоматическииз HTML-кода и linc-файлов• Полная прегенерация шаблонов• Интеграция с git и таск-трекером• Задачи попадают на перевод в моментначала тестирования задачи
  27. 27. Вопросы
  28. 28. Спасибо завнимание!Badoo, Юрий Насретдиновy.nasretdinov@corp.badoo.comtwitter.com/YNasretdinov
  29. 29. Интерфейс

×