Налаштування локалізації сайту українською мовою
Українська мова (uk / uk-UA) використовує кирилицю з буквами, відсутніми в російській: Ї ї, І і, Є є, Ґ ґ. Правила схилення числівників відрізняються від російських. Українська — друга за поширеністю мова СНД, обов'язкова для сайтів, орієнтованих на українську аудиторію.
Базова конфігурація
// config/app.php
'locale' => 'uk',
'fallback_locale' => 'en',
// resources/lang/uk/messages.php
return [
'welcome' => 'Ласкаво просимо на наш сайт',
'catalog' => 'Каталог',
'cart' => 'Кошик',
'checkout' => 'Оформлення замовлення',
'search' => 'Пошук',
'add_to_cart' => 'Додати до кошика',
'price' => 'Ціна',
'in_stock' => 'Є в наявності',
'out_of_stock' => 'Немає в наявності',
'order_placed' => 'Замовлення оформлено',
'login' => 'Увійти',
'register' => 'Зареєструватися',
'logout' => 'Вийти',
];
Схилення числівників в українській
Українська має три форми, як російська, але з іншими правилами для деяких цифр:
function pluralUk(int $n, string $one, string $few, string $many): string
{
$abs = abs($n);
$mod10 = $abs % 10;
$mod100 = $abs % 100;
if ($mod100 >= 11 && $mod100 <= 19) return "$n $many";
if ($mod10 === 1) return "$n $one";
if ($mod10 >= 2 && $mod10 <= 4) return "$n $few";
return "$n $many";
}
// "товар / товари / товарів"
echo pluralUk(1, 'товар', 'товари', 'товарів'); // 1 товар
echo pluralUk(3, 'товар', 'товари', 'товарів'); // 3 товари
echo pluralUk(11, 'товар', 'товари', 'товарів'); // 11 товарів
echo pluralUk(21, 'товар', 'товари', 'товарів'); // 21 товар
Ключова відмінність від російської: в українській форма «few» застосовується для 2–4, а не тільки для «two» (форма збігається, але називається інакше). На практиці код однаковий.
const rules = new Intl.PluralRules('uk')
const forms: Record<string, string> = {
one: 'товар',
few: 'товари',
many: 'товарів',
other: 'товарів',
}
const pluralize = (n: number) => `${n} ${forms[rules.select(n)]}`
Форматування дат та валюти
const df = new Intl.DateTimeFormat('uk-UA', {
day: 'numeric',
month: 'long',
year: 'numeric',
})
df.format(new Date()) // "28 березня 2026 р."
// Гривня
new Intl.NumberFormat('uk-UA', {
style: 'currency',
currency: 'UAH',
maximumFractionDigits: 0,
}).format(1990) // "1 990 ₴"
// Числа
new Intl.NumberFormat('uk-UA').format(1234567.89)
// "1 234 567,89"
const rtf = new Intl.RelativeTimeFormat('uk', { numeric: 'auto' })
rtf.format(-1, 'day') // "вчора"
rtf.format(-5, 'day') // "5 днів тому"
rtf.format(2, 'hour') // "через 2 години"
Специфіка українських букв
Буква «Ї» (U+0407 / U+0457) — унікальна для української. «І» — відрізняється від російської «И». «Є» ≠ «Е».
Не всі шрифти містять «Ґ» (U+0490 / U+0491). Перевіряйте шрифти:
body {
font-family: 'PT Sans', 'Roboto', 'Noto Sans', Arial, sans-serif;
}
Усі три шрифти містять повний український алфавіт.
Laravel: валідаційні повідомлення
// resources/lang/uk/validation.php
return [
'required' => 'Поле «:attribute» є обов\'язковим.',
'email' => 'Поле «:attribute» повинно містити коректну email-адресу.',
'min' => [
'string' => 'Поле «:attribute» має містити не менше :min символів.',
],
'unique' => 'Таке значення поля «:attribute» вже існує.',
'attributes' => [
'email' => 'email',
'password' => 'пароль',
'name' => 'ім\'я',
'phone' => 'телефон',
],
];
Телефонні номери України
function formatUaPhone(value: string): string {
const digits = value.replace(/\D/g, '')
const normalized = digits.startsWith('0') ? '380' + digits.slice(1) : digits
if (normalized.length !== 12 || !normalized.startsWith('380')) return value
return `+380 (${normalized.slice(3, 5)}) ${normalized.slice(5, 8)}-${normalized.slice(8, 10)}-${normalized.slice(10)}`
}
formatUaPhone('0671234567') // "+380 (67) 123-45-67"
SEO
<html lang="uk">
<head>
<meta charset="UTF-8">
<meta property="og:locale" content="uk_UA">
<link rel="alternate" hreflang="uk" href="https://example.ua/uk/" />
<link rel="alternate" hreflang="ru" href="https://example.ua/" />
<link rel="alternate" hreflang="x-default" href="https://example.ua/" />
</head>
Терміни
Налаштування локалі, переводи інтерфейсу, форматування дат/валюти/телефонів — 1 робочий день.







