О насБлогКонтакты
SEO и маркетинг3 июня 2015 г. 4 мин 166Обновлено: 18 мая 2026 г.

Как добавить кыргызский язык на сайт: i18n, шрифты, SEO (2015)

AunimedaAunimeda
📋 Содержание

Как добавить кыргызский язык на сайт: i18n, шрифты, SEO (2015)

Коротко: Убедитесь что база данных использует utf8mb4 (не utf8), подключите Google Font Noto Sans с subset=cyrillic-ext для Ң/Ө/Ү, добавьте lang="ky" на HTML элемент, создайте отдельные URL /ky/ для кыргызских страниц, добавьте hreflang теги. Без utf8mb4 кыргызские буквы теряются в MySQL.


Почему кыргызский сложнее русского в вебе

Кыргызский кириллический алфавит содержит три уникальных буквы:

  • Ң (Eng) - U+04A2/U+04A3
  • Ө (O with stroke) - U+04E8/U+04E9
  • Ү (Straight U) - U+04AE/U+04AF

Большинство кириллических шрифтов 2015 года не включали эти символы. Open Sans, PT Sans, Roboto - в базовой конфигурации показывали квадраты вместо Ң, Ө, Ү.


Шрифты с поддержкой кыргызского

<!-- Google Fonts: cyrillic-ext включает Ң, Ө, Ү -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css?family=Noto+Sans:400,700&subset=cyrillic-ext" rel="stylesheet">

<!-- Или Open Sans с расширенным кириллическим подмножеством -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700&subset=cyrillic,cyrillic-ext" rel="stylesheet">
/* CSS: указать кыргызский язык для применения правильного шрифта */
:lang(ky) {
    font-family: 'Noto Sans', 'Open Sans', sans-serif;
}

/* Проверка отдельных символов */
.ky-text {
    font-family: 'Noto Sans', sans-serif;
}

База данных: utf8mb4 обязательно

-- ПРОБЛЕМА: MySQL 'utf8' - это не настоящий UTF-8, максимум 3 байта
-- Кыргызские буквы Ң, Ө, Ү хранятся в 3 байта - но некоторые emoji 4 байта
-- utf8mb4 = настоящий UTF-8 (4 байта)

-- Создать базу с правильной кодировкой
CREATE DATABASE mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Исправить существующую таблицу
ALTER TABLE pages CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE translations CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Проверить
SHOW CREATE TABLE pages;
-- Должно быть: ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
<?php
// Соединение с MySQL: указать utf8mb4
$pdo = new PDO(
    'mysql:host=localhost;dbname=mysite;charset=utf8mb4',
    $user, $password
);
$pdo->exec("SET NAMES utf8mb4");
$pdo->exec("SET CHARACTER SET utf8mb4");

Структура многоязычного сайта (PHP)

<?php
// config/languages.php

define('SUPPORTED_LANGS', ['ru', 'ky', 'en']);
define('DEFAULT_LANG', 'ru');

// Определение языка из URL
function detectLanguage(): string {
    $uri = $_SERVER['REQUEST_URI'];
    
    foreach (SUPPORTED_LANGS as $lang) {
        if (str_starts_with($uri, "/{$lang}/") || $uri === "/{$lang}") {
            return $lang;
        }
    }
    
    // Fallback: определить из Accept-Language
    $acceptLang = $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? '';
    if (str_starts_with($acceptLang, 'ky')) return 'ky';
    
    return DEFAULT_LANG;
}

// Роутинг
// /         → язык по умолчанию (ru)
// /ky/      → кыргызский
// /en/      → английский
// /ky/news  → новости на кыргызском

Таблица переводов

CREATE TABLE translations (
    id       INT AUTO_INCREMENT PRIMARY KEY,
    `key`    VARCHAR(200) NOT NULL,
    lang     CHAR(5) NOT NULL,         -- 'ru', 'ky', 'en'
    value    TEXT NOT NULL,
    UNIQUE KEY uniq_key_lang (`key`, lang)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Пример данных
INSERT INTO translations (`key`, lang, value) VALUES
    ('nav.home',     'ru', 'Главная'),
    ('nav.home',     'ky', 'Башкы бет'),
    ('nav.about',    'ru', 'О нас'),
    ('nav.about',    'ky', 'Биз жөнүндө'),
    ('nav.contacts', 'ru', 'Контакты'),
    ('nav.contacts', 'ky', 'Байланыш');
<?php
// I18n.php - класс переводов

class I18n {
    private array $translations = [];
    private string $lang;

    public function __construct(string $lang, PDO $db) {
        $this->lang = $lang;

        // Загружаем все переводы для текущего языка
        $stmt = $db->prepare('SELECT `key`, value FROM translations WHERE lang = ?');
        $stmt->execute([$lang]);
        $this->translations = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
    }

    public function t(string $key, array $vars = []): string {
        $text = $this->translations[$key] ?? $key;

        // Замена переменных: {name} → значение
        foreach ($vars as $var => $value) {
            $text = str_replace('{' . $var . '}', $value, $text);
        }

        return $text;
    }
}

// Использование
$i18n = new I18n('ky', $db);
echo $i18n->t('nav.home');                    // Башкы бет
echo $i18n->t('order.total', ['sum' => 500]); // Жалпы: 500 сом

HTML разметка и hreflang для SEO

<!DOCTYPE html>
<html lang="ky">  <!-- Важно: lang="ky" для скринридеров и SEO -->
<head>
    <meta charset="UTF-8">
    <meta name="language" content="Kyrgyz">
    
    <!-- hreflang: говорим Google о версиях на других языках -->
    <link rel="alternate" hreflang="ky" href="https://mysite.kg/ky/about/">
    <link rel="alternate" hreflang="ru" href="https://mysite.kg/ru/about/">
    <link rel="alternate" hreflang="x-default" href="https://mysite.kg/about/">
    
    <!-- Кириллический шрифт с поддержкой кыргызского -->
    <link href="https://fonts.googleapis.com/css?family=Noto+Sans:400,700&subset=cyrillic-ext" rel="stylesheet">
</head>

Sitemap для многоязычного контента

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <url>
    <loc>https://mysite.kg/ky/about/</loc>
    <lastmod>2015-06-01</lastmod>
    <xhtml:link rel="alternate" hreflang="ky" href="https://mysite.kg/ky/about/"/>
    <xhtml:link rel="alternate" hreflang="ru" href="https://mysite.kg/ru/about/"/>
  </url>

</urlset>

Реальный кейс: результаты после локализации

Для одного из наших клиентов (государственная организация в Бишкеке) добавление кыргызской версии дало:

  • +40% органического трафика за 4 месяца
  • Новая аудитория из регионов (Ош, Джалал-Абад) - 28% от нового трафика
  • Google начал ранжировать кыргызскоязычные запросы - конкуренция почти нулевая

В 2015 году кыргызскоязычных сайтов с качественным контентом было мало. Любой сайт с хорошим ky-контентом автоматически выходил в топ по кыргызским запросам.

Читайте также

Почему ваш сайт не находится в Google - 7 реальных причинaunimeda
SEO и маркетинг

Почему ваш сайт не находится в Google - 7 реальных причин

Сделали сайт, а в Google его нет? Разбираем 7 самых частых причин почему сайты бишкекских компаний не индексируются или не выходят в топ.

SEO-продвижение сайта в Бишкеке и Кыргызстане: полный гайд для бизнеса в 2026 годуaunimeda
SEO и маркетинг

SEO-продвижение сайта в Бишкеке и Кыргызстане: полный гайд для бизнеса в 2026 году

Пошаговый гайд по SEO-продвижению сайта для бизнеса в Бишкеке и Кыргызстане: технический SEO, локальный поиск, Google Business Profile, ссылки, контент-стратегия и реальные сроки результата.

Сайт для стоматологии в Бишкеке: онлайн-запись, SEO и доверие пациентовaunimeda
SEO и маркетинг

Сайт для стоматологии в Бишкеке: онлайн-запись, SEO и доверие пациентов

Как сделать сайт стоматологической клиники, который приводит пациентов: онлайн-запись, отзывы, SEO по запросам 'стоматолог Бишкек', цены от 150,000 сом.

Нужна IT-разработка для вашего бизнеса?

Разрабатываем сайты, мобильные приложения и AI-решения для бизнеса в Кыргызстане. Бесплатная консультация.

Разработка SEO-сайтов

Получить консультацию Все статьи