Настройка локализации сайта на казахский язык
Казахский язык (kk / kk-KZ) использует кириллицу в Казахстане. Язык агглютинативный: падежные окончания, число и принадлежность выражаются суффиксами, что существенно влияет на подход к локализации — шаблонные строки с подстановкой часто нужно переделывать в цельные фразы.
Базовая настройка
// config/app.php
'locale' => 'kk',
'fallback_locale' => 'ru',
// resources/lang/kk/messages.php
return [
'welcome' => 'Сайтымызға қош келдіңіз',
'catalog' => 'Каталог',
'cart' => 'Себет',
'checkout' => 'Тапсырысты рәсімдеу',
'search' => 'Іздеу',
'add_to_cart' => 'Себетке қосу',
'price' => 'Баға',
'in_stock' => 'Қоймада бар',
'out_of_stock' => 'Қоймада жоқ',
'order_placed' => 'Тапсырыс берілді',
'items_in_cart' => 'Себетте :count тауар',
];
Особенности казахской грамматики для разработчика
В казахском языке нет грамматического рода. Число существительных: единственное (явное или без окончания) и множественное (суффикс -лар/-лер/-дар/-дер/-тар/-тер — выбор зависит от последнего звука основы по закону сингармонизма).
// Числительные в казахском — проще, чем в русском
// Используется только две формы: единственное и множественное
function pluralKk(int $n, string $singular, string $plural): string
{
return $n === 1 ? "$n $singular" : "$n $plural";
}
echo pluralKk(1, 'тауар', 'тауар'); // 1 тауар
echo pluralKk(5, 'тауар', 'тауар'); // 5 тауар
// В казахском после числительного существительное стоит в единственном числе!
// "5 тауар" — правильно, не "5 тауарлар"
Intl.PluralRules для казахского:
const rules = new Intl.PluralRules('kk')
// kk возвращает 'one' для 1 и 'other' для остальных
// НО: в казахском после числительного — всегда единственное число
// Поэтому для "N товаров" просто используем одну форму
const pluralize = (n: number) => `${n} тауар`
Форматирование дат и валюты
// Дата
const df = new Intl.DateTimeFormat('kk-KZ', {
day: 'numeric',
month: 'long',
year: 'numeric',
})
df.format(new Date()) // "28 наурыз 2026 ж."
// Валюта Казахстана — тенге (KZT)
new Intl.NumberFormat('kk-KZ', {
style: 'currency',
currency: 'KZT',
maximumFractionDigits: 0,
}).format(14990) // "14 990 ₸"
// Числа
new Intl.NumberFormat('kk-KZ').format(1234567.89)
// "1 234 567,89"
// Относительное время
const rtf = new Intl.RelativeTimeFormat('kk', { numeric: 'auto' })
rtf.format(-1, 'day') // "кеше"
rtf.format(-3, 'day') // "3 күн бұрын"
rtf.format(1, 'hour') // "1 сағаттан кейін"
Шрифты
Казахская кириллица содержит уникальные буквы: Ә ә, Ғ ғ, Қ қ, Ң ң, Ө ө, Ұ ұ, Ү ү, Һ һ, І і. Проверить наличие глифов:
body {
/* Noto Sans поддерживает все языки с кириллицей включая казахский */
font-family: 'Noto Sans', 'PT Sans', Roboto, Arial, sans-serif;
}
Google Fonts: фильтр по Kazakh или Cyrillic Extended — находит совместимые шрифты.
Казахский в Next.js i18n
// next.config.js
module.exports = {
i18n: {
locales: ['ru', 'kk', 'en'],
defaultLocale: 'ru',
localeDetection: true,
},
}
pages/
index.tsx → /
[locale]/
index.tsx → /kk/, /en/
SEO
<html lang="kk">
<head>
<meta charset="UTF-8">
<meta property="og:locale" content="kk_KZ">
<link rel="alternate" hreflang="kk" href="https://example.kz/kk/" />
<link rel="alternate" hreflang="ru" href="https://example.kz/" />
<link rel="alternate" hreflang="x-default" href="https://example.kz/" />
</head>
Яндекс индексирует казахскоязычный контент. Google — также. Доля казахскоязычных запросов растёт: по данным Яндекса, около 30% поисковых запросов из Казахстана на казахском языке.
Сроки
Подключение локали, настройка форматирования, базовые переводы интерфейса — 1 рабочий день.







