Чому польська і чому саме зараз?
Сайт має чималу польську аудиторію, що читає англійську версію (Google Search Console показує pl-PL на 5-му місці за кількістю показів серед країн), а польська наукова термінологія має добре усталені академічні конвенції, які машинний переклад часто спотворює («Inżynieria Materiałowa», а не «Inżynieria Materiałów»; «Dynamika Płynów», а не «Dynamika Cieczy»). Виконання цього як єдиного інфраструктурного релізу, а не розсіювання перекладів по щотижневих хвилях, зберігає шар локалі хірургічно чистим.
Що насправді охоплює «фаза 1»
Фаза 1 — це шар точок входу — кожна сторінка, на яку польський читач, ймовірно, потрапить з органічного пошуку:
- /pl/ — головна сторінка з JSON-LD WebSite + BreadcrumbList + FAQPage (8 польських питань-відповідей, кожна на 100-300 слів; придатна для розширених сніпетів FAQ Google).
- /pl/categories/ — алфавітний хаб усіх 80 категорій, відсортований за їхніми польськими назвами (тож «Algorytmy» йде перед «Astronomia», а не десь на «К», як в англійській версії).
- /pl/categories/<id>/ — 80 сторінок категорій, кожна з локалізованим героєм, JSON-LD CollectionPage, що перелічує кожну симуляцію-учасницю, та явна примітка запасного варіанту («Symulacja w jęz. angielskim») на кожній картці симуляції, щоб відвідувачі не дивувалися, натрапляючи на сторінку EN/UK.
- /pl/about/, /pl/contact/, /pl/privacy/, /pl/terms/, /pl/blog/, /pl/sitemap-html/, /pl/knowledge-graph/ — 7 статичних сторінок, потрібних кожній локалі. Приватність і Умови — повний польський текст; Блог і Граф знань — заглушки анонсів, що посилаються на версії EN/UK до фази 2.
Фаза 1 свідомо не перекладає 559 сторінок симуляцій чи 295 статей. Це буде зусиллям фази 2 (план на Q3 2026), тому що цінність перекладу на сторінку для точки входу («Fizyka kwantowa») набагато вища, ніж переклад однієї конкретної нішевої симуляції («протокол BB84»).
Шар перекладу
Переклади живуть у даних, а не в шаблонах. Кожен рядок у
shared/data/categories.json тепер має два додаткових
поля поруч зі своїми українськими відповідниками:
{
"id": "fluid-dynamics",
"title": "Fluid Dynamics",
"titleUk": "Гідродинаміка",
"titlePl": "Dynamika Płynów",
"description": "SPH, MPM, Navier-Stokes equations...",
"descriptionUk": "SPH, MPM, рівняння Нав'є-Стокса...",
"descriptionPl": "SPH, MPM, równania Naviera-Stokesa, fale strzemienne, turbulencja."
}
Переклади кураторські, а не машинно згенеровані. Невеликий приклад рішень, які мали значення:
| ID категорії | Англійська | Польська (обрано) | Чому не буквальний МП |
|---|---|---|---|
materials-science | Materials Science | Inżynieria Materiałowa | Польська академічна спільнота використовує інженерне формулювання для цієї галузі; «Materiałoznawstwo» існує, але застаріле. |
fluid-dynamics | Fluid Dynamics | Dynamika Płynów | «Płyny» охоплює як рідини, так і гази; «Cieczy» виключило б гази. |
chronobiology | Chronobiology | Chronobiologia | Пряме запозичення; «Biologia rytmów» затуманило б назву галузі. |
networks | Networks | Sieci | Просте «Sieci», а не «Sieci komputerowe», тому що категорія охоплює також соціальні/біологічні/транспортні мережі. |
perception | Perception | Percepcja | Обидва варіанти, «Percepcja» і «Postrzeganie», підходять; «Percepcja» — термін у підручниках з когнітивних наук. |
game-math | Game Math | Matematyka Gier | Родовий відмінок («Matematyka Gier») — природний складений термін, а не «Matematyka Gra». |
Трипозиційний перемикач у навбарі
До v1.1.8 перемикач мов у навбарі був однією кнопкою, що перемикала EN ↔ UK на основі поточного шляху. Додавання третьої локалі змусило зробити вибір дизайну: випадаючий список, три пігулки чи цикл? Переміг цикл — та сама одна кнопка, але тепер вона проходить EN → UK → PL → EN при кожному кліку. Дві причини:
- Без зсуву макета. Наявний навбар мав пікселево щільний інтервал на мобільних; додавання ще двох чипів виштовхнуло б пошук і перемикач теми за межі екрана на вікнах перегляду шириною 360 пікселів.
-
Збереження шляху працює так само. Допоміжна
функція
getLangHrefs()тепер повертає всі 3 посилання для поточної сторінки (спершу знімаючи/uk/чи/pl/, потім додаючи цільову локаль на початок), аgetAlternateHref()просто обирає «наступний» запис. Обробники кліків для повторного обчислення в стилі SPA-хешу усе ще працюють, тому що функція перераховується в момент кліку.
Цикл зміщений у бік EN, тому що це найповніша локаль — якщо ви прокрутите повз свою ціль, ще один клік приводить до EN, де сторінка завжди присутня.
// shared/components.js
function getLangHrefs() {
const rootUrl = new URL(_base || "./", window.location.href).href;
const noLang = currRelPath.replace(/^(uk|pl)\//, "");
const hrefs = {
en: rootUrl + noLang,
uk: rootUrl + "uk/" + noLang,
pl: rootUrl + "pl/" + noLang,
};
const cycle = { en: "uk", uk: "pl", pl: "en" };
hrefs.next = hrefs[cycle[_lang] || "uk"];
return hrefs;
}
Хірургія hreflang на 174 наявних сторінках
Додавання третьої локалі — це не лише створення нових файлів; кожна
наявна сторінка EN та UK, яка має польського близнюка,
потребує <link rel="alternate" hreflang="pl"> у
своєму head, інакше Google не зв'яже кластер. Скрипт
add_pl_hreflang.js:
- Проходить по кореневому індексу, індексу UK, хабу категорій, усіх 80 категоріях EN + 80 UK та 14 парах статичних сторінок.
- Виявляє наявні теги
hreflang="pl"і пропускає, якщо вже коректні. - Видаляє будь-які неправильні теги PL (наприклад, що вказують на неправильну ціль).
- Вставляє новий тег одразу після
hreflang="uk", якщо присутній, з поверненням до вставки післяhreflang="en", з поверненням до вставки перед</head>.
Ідемпотентний за побудовою: запуск двічі не змінює жодного файлу. Оновлено 174 сторінки, 0 уже коректних (перший запуск), 4 файли відсутні (це були близнюки UK, яких ніколи не існувало для деяких статичних сторінок).
Карта сайту: 2158 → 2247 URL-адрес
scripts/gen_sitemap.js автоматично підхопив PL, тому
що наявний цикл для кожної локалі тепер перевіряє
pl/<path>/index.html на додачу до варіантів EN та
UK. Кожен запис URL має супутній
<xhtml:link rel="alternate" hreflang="pl">, коли
польський близнюк існує.
URL-адреси PL видаються з пріоритетом на 0.05-0.10 нижчим за їхні відповідники EN (тож 0.8 для категорії PL проти 0.9 EN) як м'який сигнал того, що локаль — заглушка фази 1. П'ять підкарт сайту тепер загалом дають 2247 URL-адрес: sitemap_categories.xml (240, +80), sitemap_sims.xml (1118), sitemap_articles.xml (555), sitemap_blog.xml (224), sitemap_static.xml (28, +6).
FAQPage як прискорювач результатів пошуку
Розширені сніпети FAQPage польською мовою залишаються відносно недовикористаними для науково-освітніх запитів, що робить їх хорошою раннею ставкою для фази 1. Польська головна сторінка має 8 записів FAQ, що охоплюють питання, які виникають у листах підтримки й Discord: «Czy trzeba coś instalować?», «Czy te symulacje są naukowo poprawne?», «Czy mogę używać symulacji w szkole?». Кожна відповідь займає 100-300 слів, щоб пройти поріг якості Google; разом вони — найбільш читабельний єдиний документ про призначення MySimulator, будь-якою мовою.
Що відкладено до фази 2 (Q3 2026)
- Сторінки симуляцій. Топ-100 симуляцій перекладено польською; довгий хвіст (459 спеціалізованих симуляцій) залишається EN/UK.
- Статті. Топ-50 статей за трафіком, перекладених польською.
- Блог. Польськомовна серія девлогів, що починається з допису-анонсу фази 2.
- Мітки вузлів графа знань. Наразі силовий граф D3 показує назви EN/UK; фаза 2 перемкне мітки на основі локалі.
- Пошуковий індекс. Додати
titlePl+descriptionPlдо пошукового корпусу, тож польськомовний користувач, що вводить «kwantowy», знаходить відповідні категорії. - Сторінки тегів. Перекласти 80+ сторінок тегів польською.
Порядок впливу (оцінений за коефіцієнтами конверсії EN→UK фаза 1→2): сторінки симуляцій дають у 5-10 разів більший обсяг кліків, ніж сторінки категорій, статті дають у 2-3 рази більше (довше перебування, менше відмов), а сторінки тегів заповнюють довгий хвіст.
Зачеплені файли
П'яти нових скриптів було достатньо, щоб провести весь реліз; усе решта генерується:
scripts/add_pl_translations.js— заповнюєtitlePl+descriptionPlуcategories.json.scripts/gen_pl_pages.js— видає всі 89 HTML-файлів PL.scripts/add_pl_hreflang.js— латає 174 сторінки EN+UK.scripts/gen_sitemap.js— розширено для кластерів URL 3 локалей.shared/components.js— розширено для трипозиційного навбару зI18N.pl+getLangHrefs().
Запуск node scripts/add_pl_translations.js && node
scripts/gen_pl_pages.js && node scripts/add_pl_hreflang.js
&& node scripts/gen_sitemap.js відтворює весь реліз
лише з шару даних.
Що далі
Хвиля 62 повертається до симуляцій наступного тижня — ймовірно, гідродинаміка й статистична механіка. Підготовка до фази 2 PL (оновлення пошукового індексу, інструментарій перекладу симуляцій) відбуватиметься тихо паралельно; очікуйте, що фаза 2 приземлиться приблизно на межі Q3 2026.