Одна система локалізації для української та англійської версій ICanUp
Оновлення

Одна система локалізації для української та англійської версій ICanUp

ICanUp перейшов на єдину localization infrastructure: українська залишилась default locale без префікса, English працює через /en, а всі публічні маршрути отримали спільний locale-aware routing contract.

Двомовність у ICanUp існувала від самого початку, але з розвитком сайту стало важливо, щоб вона не залишалася набором окремих умов у різних частинах застосунку.

У серпні 2026 року публічна локалізація була переведена на єдину infrastructure на основі AVN Laravel Localization.

Мета була простою: однакові правила для route registration, locale resolution, language switch, canonical URLs і public links у всьому проєкті.

Структура URL стала передбачуваною

Українська без prefix

Default locale використовує чисті public URLs без /uk, тому основна версія сайту залишається короткою та канонічною.

English через /en

Англійська версія має стабільний /en prefix і використовує ті самі public routes та route names.

Locale з URL

Поточна мова визначається explicit URL, а preferred locale не може неочікувано перевизначити явно вказану locale.

Canonical redirects

Неканонічні default-locale URLs на кшталт /uk перенаправляються на правильну версію без prefix.

Shared slug став частиною багатомовної моделі

Окремим важливим рішенням став перехід Posts і Categories на один product-owned slug для всіх локалей.

Українська та англійська URL тепер відрізняються саме мовним префіксом, а не двома незалежними slug.

Наприклад, одна й та сама сутність має стабільний ідентифікатор у URL:

  • /posts/example-slug
  • /en/posts/example-slug

Це спростило language switch, sitemap, RSS, hreflang і генерацію внутрішніх посилань.

Language switch перестав бути окремим набором винятків

Route Parameters

Під час перемикання мови зберігаються параметри поточного route, тому користувач залишається на тій самій сутності.

Query Parameters

Фільтри, пошукові параметри та інший query string не губляться під час locale switch.

Strict Locale Handling

Malformed, unknown або disabled explicit locales повертають 404 замість небезпечного неявного fallback.

Stable Route Names

Існуючі logical route names залишились стабільними, навіть після зміни внутрішньої localization infrastructure.

Локалізація стала infrastructure, а не feature окремої сторінки

Після інтеграції homepage, posts, categories, pages та інші публічні маршрути почали використовувати один механізм locale resolution.

При цьому Admin, API, authentication, webhooks та service routes залишились поза public localization layer і не отримали зайвих залежностей.

Так само було важливо, що маршрути продовжили працювати після Laravel route cache та application optimization.

Це рішення стало важливим фундаментом для подальшого розвитку ICanUp.

Нові Pages, Series, Forms, News та інші публічні модулі вже могли підключатися до готового locale-aware routing contract замість створення власної логіки для кожного нового розділу.

Від цього моменту українська й англійська версії ICanUp стали двома представленнями однієї системи, а не двома паралельними наборами маршрутів.