2. • 177+ млн пользователей
• PHP-FPM: 30+ тыс запросов в сек
• 140 тыс регистраций в день
• 3 млн фото / видео в день
• 50 языков интерфейса
О компании
8. Blitz-шаблоны
<h1>Results</h1>
<!-- BEGIN NOTHING -->
No results found
<!-- END NOTHING -->
<!-- BEGIN RESULT -->
<div>
Name {{name}}, {{score}}
</div>
<!-- END RESULT -->
root_0: #1
NOTHING:
NOTHING_0: #2
RESULT:
RESULT_0: #3
#3
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. Генерация файлов
• Нет специальных маркеров
лексем
• Пре-генерируются шаблоны,
переведенные на все языки
• + 100 000 файлов при деплое
11. Лексемы
• Каждая лексема получает свой
идентификатор (Lexem_id)
• Даже лексемы с тем же текстом
каждый раз* получают новый id
• Переводчики могут независимо
поменять любой текст на сайте
* В новом контексте
15. Mini-staging: «шоты»
• Staging из текущей ветки
• Быстрое создание
• Лексемы попадают на перевод во
время тестирования задачи
• Позволяют сократить время
ожидания переводчиков
20. Проблемы с git
• Один файл могут редактировать в
разных ветках одновременно
• Ветки могут мержить друг в друга
• Нужно сохранять id лексем после
мержа двух версий файла
21. Хранение данных
• Полная структура
файла хранится в
базе данных
• Каждой лексеме в
файле выдается
уникальный id
root_0: #1
NOTHING:
NOTHING_0: #2
RESULT:
RESULT_0: #3
22. Что делать?
• «Контекст» лексемы #3:
«RESULT / RESULT_0»
• Уровень вложенности
блоков имеет значение
• Лексемы с тем же
содержимым имеют
такое же название
лексемы (RESULT_0)
root_0: #1
NOTHING:
NOTHING_0: #2
RESULT:
RESULT_0: #3
23. Интеграция с git
• Хранятся мастер-версии и диффы
к мастеру
• Между собой диффы не
мержатся
• Лексемы в том же контексте
получают тот же id
26. Summary
• Лексемы выделяются автоматически
из HTML-кода и linc-файлов
• Полная прегенерация шаблонов
• Интеграция с git и таск-трекером
• Задачи попадают на перевод в момент
начала тестирования задачи