# Перенесла кожен рядок, звернений до користувача, з Python у дерево контенту з 874 файлів трьома мовами, знайшовши непомітно мертві переклади й перевірку, яка мовчки оцінювала лише третину досягнень.

серпень 2026

**Ситуація.** Кожен рядок генератора, який бачить користувач, — кожне досягнення, кожен відгук, кожен заголовок розділу, кожен короткий опис, трьома мовами — зберігався в коді на Python. Через це редагування речення перетворюється на зміну коду, перевірка перекладу — на порівняння з кодом, а з першого погляду неможливо зрозуміти, чи переклад якоюсь мовою повний. До того ж так приховується найважливіший тип збою: переклад може водночас існувати, бути помилковим і бути недосяжним.

**Завдання.** Рядки треба було винести з коду в дерево вмісту, яке можна підрахувати, порівняти між мовами й перевірити, не запускаючи рендерер.

**Дія.** У результаті з'явилося 874 файли в каталозі вмісту, упорядковані спершу за типом, а потім за мовою: досягнення, відгуки, короткі описи, посади, компанії, регіони, категорії, послуги, профілі, рекомендації та фрагменти супровідних листів. Файли з полями, розділеними табуляцією, — там, де одиниця — рядок з ідентифікатором, окремі файли — там, де одиниця — абзац. Завантажувач читає їх під час збірки, і з них збирається база даних, тож джерело — дерево, а база даних — похідна від нього. Два висновки з'явилися саме завдяки можливості рахувати. Деякі перекладені рядки вже не мали жодного англійського відповідника — це були мертві записи, які ніде не відображалися і яких ніхто не міг помітити, поки вони були вбудовані в код, бо ключ словника, на який ніщо не посилається, має точнісінько такий самий вигляд, як і той, на який посилаються. А перевірка вмісту, яка мала оцінювати кожне досягнення, читала лише ту підмножину, яку могла знайти, — оцінювала тридцять сім із дев'яноста трьох і звітувала про успіх. Коли корпус став каталогом, обидві проблеми проявилися як розбіжність у кількості файлів.

**Результат.** Текст тепер можна редагувати, не торкаючись коду, і порівнювати між мовами простим підрахунком. Ціна в тому, що додавання мови стало однозначним, а не поступовим: у дереві неповна мова одразу помітна — у цьому й суть, — але це також означає, що часткові переклади вже не вийде непомітно випускати, поки їх доробляють.

---

- Роль: Інженер баз даних
- Категорії: [Backend‑розробка](https://data.engineer.company/uk/categories/backend/), [Управління даними](https://data.engineer.company/uk/categories/data-governance/), [Міграції та модернізація](https://data.engineer.company/uk/categories/migration/), [Python](https://data.engineer.company/uk/categories/python/), [Інтернаціоналізація](https://data.engineer.company/uk/categories/i18n/), [Документація](https://data.engineer.company/uk/categories/documentation/)
- Послуги: [Backend- та API‑розробка](https://data.engineer.company/uk/services/backend-development/), [Інтернаціоналізація та локалізація](https://data.engineer.company/uk/services/i18n-localization/), [Міграція та модернізація баз даних](https://data.engineer.company/uk/services/database-migration/), [Data Governance та якість даних](https://data.engineer.company/uk/services/data-governance/)

<https://data.engineer.company/uk/portfolio/moved-every-user-facing-string-into-a-content-tree-152/>
