Setting up website localization for Belarusian language
Belarusian language (be / be-BY) uses Cyrillic with several unique letters: Ў ў (short u), І і (decimal i), and apostrophe instead of soft sign in some words. Numeral declension differs from Russian.
Basic setup
// 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' => 'Заказ аформлены',
];
Numeral declension in Belarusian
Rules are similar to Russian but not identical:
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 тавараў
Via Intl.PluralRules on the frontend:
const rules = new Intl.PluralRules('be')
// Belarusian is supported in all modern browsers
const forms: Record<string, string> = {
one: 'тавар',
few: 'тавары',
many: 'тавараў',
other: 'тавараў',
}
const pluralize = (n: number) => `${n} ${forms[rules.select(n)]}`
Date and currency formatting
// Date in Belarusian
const df = new Intl.DateTimeFormat('be-BY', {
day: 'numeric',
month: 'long',
year: 'numeric',
})
df.format(new Date()) // "28 сакавіка 2026 г."
// Belarus currency — Belarusian ruble (BYN)
new Intl.NumberFormat('be-BY', {
style: 'currency',
currency: 'BYN',
}).format(49.99) // "49,99 Br"
// Relative time
const rtf = new Intl.RelativeTimeFormat('be', { numeric: 'auto' })
rtf.format(-1, 'day') // "учора"
rtf.format(-7, 'day') // "7 дзён таму"
Font and typography specifics
The letter «Ў» (short u) is not present in all system fonts. Verify that your selected font contains glyph U+040E (Ў) and U+045E (ў):
/* Safe font stack for Belarusian */
body {
font-family: 'PT Sans', 'Roboto', 'Noto Sans', Arial, sans-serif;
}
Google Fonts: PT Sans, Roboto, Noto Sans — all contain Ў/ў.
HTML and 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>
For websites targeting Belarusian audience: Yandex.Webmaster considers hreflang. Most Belarusian users read both languages, so a language switcher "Bel / Rus" is a mandatory UI element.
Apostrophe in Belarusian text
In Belarusian, apostrophe is a standalone punctuation mark, separating soft sign: м'яч, з'явіцца. Use typographic apostrophe U+2019 ('), not ASCII apostrophe:
// In translations
'description' => 'Дэталь\u2019ная інфармацыя аб прадукце',
Timeframe
Basic localization with UI string translations and formatting setup — 1 working day.







