Настройка локализации сайта на белорусский язык
Белорусский язык (be / be-BY) использует кириллицу с несколькими уникальными буквами: Ў ў (у краткое), І і (и десятичное), а также апостроф вместо мягкого знака в ряде слов. Склонение числительных отличается от русского.
Базовая настройка
// 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";
}
// "тавар / тавары / тавараў"
echo pluralBe(1, 'тавар', 'тавары', 'тавараў'); // 1 тавар
echo pluralBe(3, 'тавар', 'тавары', 'тавараў'); // 3 тавары
echo pluralBe(11, 'тавар', 'тавары', 'тавараў'); // 11 тавараў
Через 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 сакавіка 2026 г."
// Валюта Беларуси — Белорусский рубль (BYN)
new Intl.NumberFormat('be-BY', {
style: 'currency',
currency: 'BYN',
}).format(49.99) // "49,99 Br"
// Относительное время
const rtf = new Intl.RelativeTimeFormat('be', { numeric: 'auto' })
rtf.format(-1, 'day') // "учора"
rtf.format(-7, 'day') // "7 дзён таму"
Особенности шрифтов и типографики
Буква «Ў» (у краткое) присутствует не во всех системных шрифтах. Проверьте, что выбранный шрифт содержит глиф U+040E (Ў) и U+045E (ў):
/* Безопасный стек для белорусского */
body {
font-family: 'PT Sans', 'Roboto', 'Noto Sans', Arial, sans-serif;
}
Google Fonts: PT Sans, Roboto, Noto Sans — все содержат Ў/ў.
HTML и SEO
<html lang="be">
<head>
<meta charset="UTF-8">
<meta property="og:locale" content="be_BY">
<link rel="alternate" hreflang="be" href="https://example.by/be/" />
<link rel="alternate" hreflang="ru" href="https://example.by/" />
</head>
Для сайтов, ориентированных на белорусскую аудиторию: Яндекс.Вебмастер учитывает hreflang. Большинство белорусских пользователей читают оба языка, поэтому языковой переключатель «Бел / Рус» — обязательный элемент интерфейса.
Апостроф в белорусском тексте
В белорусском языке апостроф — самостоятельный знак препинания, отделяющий мягкий знак: м'яч, з'явіцца. Используйте типографический апостроф U+2019 ('), а не ASCII-апостроф:
// В переводах
'description' => 'Дэталь\u2019ная інфармацыя аб прадукце',
Сроки
Базовая локализация с переводами UI-строк и настройкой форматирования — 1 рабочий день.







