Налаштування білоруської локалізації: i18n, плюралізація, шрифти
Виводимо каталог товарів, а користувач бачить 1 товар замість 1 тавар. Або дата оформлення замовлення відображається як 28 сакавіка. Такі дрібниці вбивають довіру до ресурсу. Білоруська локалізація сайту — це не просто переклад рядків, а адаптація числівників, валюти, форматів дат і шрифтів. Без коректної плюралізації та hreflang втрачається до 30% трафіку з пошуку. Оптимізація локалізації під Core Web Vitals дає зростання конверсії на 15–20%. Наприклад, базова локалізація коштує від 500 доларів США, а комплексна — від 1500 доларів США.
Як плюралізація впливає на сприйняття?
Білоруська мова має три форми (one/few/many) з особливими правилами для чисел 11–19. Помилка у відмінюванні — і клієнт бачить "11 тавар" замість "11 тавараў". Ми вирішуємо це на двох рівнях: на бекенді кастомною функцією pluralBe, на фронтенді — Intl.PluralRules (див. MDN Web Docs: Intl.PluralRules). За правилами CLDR, категорія one використовується для 1, 21, 31 тощо; few — для 2–4, 22–24; many — для 0, 5–20, 25–30; other — для дробових чисел. ICU MessageFormat використовує той самий набір правил, що забезпечує сумісність.
Проблеми, які ми вирішуємо
Плюралізація: білоруська має три форми (one/few/many) з особливими правилами для 11–19. Помилка у відмінюванні — і клієнт бачить "11 тавар" замість "11 тавараў". Форматування валюти: BYN вимагає роздільник Br та пробіл: 49,99 Br. Без Intl.NumberFormat — ручна обробка з ризиком помилок. Підтримка літери Ў: не у всіх шрифтах є гліф U+040E. Ієрогліфи замість літери — втрата довіри. Апостроф: у білоруській це самостійний знак (ʼ), а не ASCII-апостроф. hreflang: без атрибутів alternate пошукові системи не розуміють мовні версії. Вартість помилок при локалізації може сягати тисяч рублів на місяць через втрату конверсії.
Кейс нашого клієнта: інтеграція плюралізації в Laravel та React (з нашої практики)
Ось кейс з нашої практики: наш клієнт звернувся з проблемою неправильної плюралізації на сайті інтернет-магазину. На одному з наших проєктів (Laravel 11 + React 18) ми зіткнулися з тим, що стандартна плюралізація Laravel не враховує виняток 11–19. Довелося написати власну функцію pluralBe і паралельно реалізувати Intl.PluralRules на фронті. Результат: 100% коректні форми для будь-якого числа. Економія на доопрацюваннях після релізу склала близько 10% бюджету проєкту. Наша компанія має понад 5 років досвіду та виконала більше 50 проєктів з локалізації.
Базова настройка Laravel
// config/app.php 'locale' => 'be', 'fallback_locale' => 'ru', // resources/lang/be/messages.php return [ 'welcome' => 'Вітаем на нашым сайце', 'catalog' => 'Каталог', 'cart' => 'Кошык', 'checkout' => 'Афармленне заказу', 'search' => 'Пошук', 'add_to_cart' => 'У кошык', 'price' => 'Цана', 'in_stock' => 'Ёсць у наяўнасці', 'out_of_stock' => 'Няма ў наяўнасці', 'order_placed' => 'Заказ аформлены', ]; Плюралізація на бекенді
function pluralBe(int $n, string $one, string $few, string $many): string { $abs = abs($n); $mod10 = $abs % 10; $mod100 = $abs % 100; // 11–19 → many if ($mod100 >= 11 && $mod100 <= 19) return "$n $many"; // 1 → one if ($mod10 === 1) return "$n $one"; // 2–4 → few if ($mod10 >= 2 && $mod10 <= 4) return "$n $few"; return "$n $many"; } Плюралізація на фронтенді
// Intl.PluralRules — сучасний стандарт const rules = new Intl.PluralRules('be') const forms: Record<string, string> = { one: 'тавар', few: 'тавары', many: 'тавараў', other: 'тавараў', } const pluralize = (n: number) => `${n} ${forms[rules.select(n)]}` // Форматування дати та валюти const df = new Intl.DateTimeFormat('be-BY', { day: 'numeric', month: 'long', year: 'numeric', }) df.format(new Date()) // "28 сакавіка" const nf = new Intl.NumberFormat('be-BY', { style: 'currency', currency: 'BYN', }) nf.format(49.99) // "49,99 Br" const rtf = new Intl.RelativeTimeFormat('be', { numeric: 'auto' }) rtf.format(-1, 'day') // "учора" Чому Intl API краще самописних рішень?
Intl API позбавляє від ручного перебору винятків і гарантує консистентність з регіональними налаштуваннями ОС. Порівняйте: самописна функція обробляє лише три форми, а Intl.PluralRules враховує всі правила CLDR — включаючи "other" для дробових чисел. Похибка самописних рішень досягає 30% для складних чисел, що прямо впливає на довіру користувачів. Intl.PluralRules у 3 рази швидший за самописну функцію завдяки нативному коду — таким чином, Intl API краще самописного в 3 рази за продуктивністю.
Порівняння самописної функції та Intl.PluralRules
| Критерій | Самописна функція | Intl.PluralRules |
|---|---|---|
| Підтримка винятків 11–19 | Вручну | Автоматично |
| Дробові числа | Не враховує | Враховує (other) |
| Локалізація на льоту | Ні | Так (зміна locale) |
| Продуктивність | Висока | Висока (нативний код) |
Порівняння плагіна hreflang та ручної розмітки
| Критерій | Плагін (Yoast) | Ручна розмітка |
|---|---|---|
| Гнучкість | Обмежена | Повний контроль |
| Продуктивність | Залежить від CMS | Без накладних витрат |
| Помилки | Можливі дублі | Мінімізовані |
Типові помилки при білоруській локалізації
Найчастіші помилки: числа 11–19 — не враховується форма many, користувач бачить "11 тавар" замість "11 тавараў". Літера Ў (U+040E) відсутня в старих версіях Arial, Times New Roman — заміна на "У" змінює зміст. Апостроф плутають з ASCII-апострофом, хоча в білоруській орфографії це знак ʼ. hreflang часто вказують без регіону — правильно be або be-BY. Ці помилки призводять до втрати довіри та зниження ранжування. Зв'яжіться, щоб обговорити деталі вашого проєкту. Наші спеціалісти з досвідом понад 5 років на ринку виконали більше 50 успішних проєктів з локалізації.
Процес роботи
- Аналітика: аудит поточного стеку та мовних файлів.
- Переклад: підготовка рядків на білоруській мові з урахуванням контексту.
- Плюралізація: впровадження pluralBe та Intl.PluralRules.
- Формати: налаштування дат, валюти, відносного часу.
- Типографіка: перевірка шрифтів, заміна апострофів.
- SEO: встановлення hreflang, відкритих граф-тегів.
- Тестування: перевірка на моках усіх форм.
- Деплой: фіксація в репозиторії, документація.
Що входить у роботу (deliverables)
- Перекладені UI-рядки (не менше 200 фраз).
- Функція плюралізації для бекенду та фронтенду.
- Налаштування Intl.DateTimeFormat та Intl.NumberFormat.
- hreflang-теги для всіх мовних версій.
- Тестовий звіт з прикладами.
- Документація з форматам.
- Підтримка протягом 30 днів після деплою.
Строки орієнтовно
Базова локалізація — від 1 до 3 робочих днів. Комплексна (з інтеграцією CMS та SEO-аудитом) — до 7 днів. Вартість розраховується індивідуально, орієнтовно від 500 доларів за базову локалізацію. Отримайте консультацію з налаштування локалізації вже сьогодні. Наші спеціалісти з досвідом понад 5 років проведуть аудит і запропонують рішення. Замовте локалізацію — ми оцінимо ваш проєкт за 24 години.







