# Быстрый старт: Мультиязычность для NGCMS

## 🚀 Что реализовано

Система мультиязычных переводов для новостей с поддержкой:

- Связи переводов статей между языковыми версиями сайтов
- Удобный интерфейс управления переводами в админке
- Автоопределение языка по домену (ru.web.ua → русский, en.web.ua → английский)

## 📋 Как использовать

### Шаг 1: Применить миграцию БД

Выполните в MySQL (замените `ng_` на ваш префикс):

```sql
ALTER TABLE `ng_news`
ADD COLUMN `translation_group_id` VARCHAR(36) NULL DEFAULT NULL AFTER `id`,
ADD COLUMN `lang_code` VARCHAR(5) NULL DEFAULT NULL AFTER `translation_group_id`,
ADD INDEX `idx_translation_group` (`translation_group_id`),
ADD INDEX `idx_lang_code` (`lang_code`);

UPDATE `ng_news` SET `translation_group_id` = UUID(), `lang_code` = 'ru' WHERE `translation_group_id` IS NULL;
```

### Шаг 2: Создать языковые версии сайтов

1. Откройте **Админ панель → Конфигурация → Управление мультисайтами**
2. Добавьте новый сайт:
   - **ID сайта:** `en_site`
   - **Домены:** `en.web.ua`
   - **Язык сайта:** `English (en)` ← **НОВОЕ ПОЛЕ!**
   - **☑ Мультиязычность:** отметьте, чтобы включить переводы ← **НОВОЕ!**
   - **База данных:** выберите shared или separate
3. Аналогично создайте другие языковые версии

> 💡 **Совет:** Снимите галочку "Мультиязычность" для сайтов, где не нужны переводы статей. Блок управления переводами не будет отображаться в админке таких сайтов.

### Шаг 3: Создать статью с переводами

1. Зайдите на основной сайт (ru.web.ua)
2. Создайте новость: **Админ → Новости → Добавить новость**
3. Заполните заголовок и текст, **сохраните**
4. После сохранения в правой панели появится блок **"Переводы"**
5. Выберите язык (English) и нажмите **"Добавить перевод"**
6. Откроется новое окно для создания английской версии

### Шаг 4: Редактировать переводы

- В блоке "Переводы" видны все существующие переводы
- Кнопка "Редактировать перевод" открывает редактор конкретной версии
- Каждый перевод - отдельная статья с собственными настройками

## 🎯 Пример конфигурации

```php
// conf/multiconfig.php
$multiconfig = [
    'main' => [
        'domains' => ['ru.web.ua', 'web.ua'],
        'active' => 1,
        'lang' => 'ru',  // Русский - основной язык
        'multilang_enabled' => 1,  // Включить систему переводов
        'db' => ['type' => 'shared', 'prefix' => 'ng']
    ],
    'en_site' => [
        'domains' => ['en.web.ua'],
        'active' => 1,
        'lang' => 'en',  // Английский
        'multilang_enabled' => 1,  // Включить систему переводов
        'db' => ['type' => 'shared', 'prefix' => 'en']
    ],
    'uk_site' => [
        'domains' => ['uk.web.ua'],
        'active' => 1,
        'lang' => 'uk',  // Украинский
        'multilang_enabled' => 0,  // ОТКЛЮЧИТЬ переводы (не нужны)
        'db' => ['type' => 'shared', 'prefix' => 'uk']
    ]
];
```

## ✅ Файлы, которые были изменены/добавлены

### Добавлены:

- `engine/includes/multilang.php` - библиотека функций мультиязычности
- `engine/trash/upgrade_multilang.sql` - SQL миграция
- `engine/skins/default/tpl/news/translations.tpl` - блок управления переводами
- `docs/multilang-installation.md` - полная документация

### Изменены:

- `engine/trash/tables.sql` - добавлены поля в таблицу news
- `engine/actions/configuration.php` - сохранение языка при создании мультисайта
- `engine/actions/news.php` - загрузка данных о переводах
- `engine/skins/default/tpl/multisite.tpl` - поле выбора языка
- `engine/skins/default/tpl/news/edit.tpl` - блок переводов в редакторе
- `engine/lang/russian/admin/configuration.ini` - языковые строки
- `engine/lang/english/admin/configuration.ini` - языковые строки
- `engine/lang/russian/admin/addnews.ini` - языковые строки для переводов
- `engine/lang/english/admin/addnews.ini` - языковые строки для переводов

## 🔧 Поддерживаемые языки

- Русский (ru)
- English (en)
- Українська (uk)
- Deutsch (de)
- Français (fr)
- Español (es)
- Italiano (it)
- Polski (pl)

## ⚠️ Важно!

1. **Сделайте резервную копию БД перед применением миграции!**
2. Переводы НЕ синхронизируются автоматически - каждая языковая версия независима
3. Для существующих новостей автоматически установится `lang_code = 'ru'`
4. Новые установки уже содержат необходимые поля в tables.sql

## 📖 Полная документация

См. файл `docs/multilang-installation.md` для подробной информации об API, устранении проблем и дальнейшем развитии.

---

**Готово!** Теперь у вас есть полноценная мультиязычная система для новостей! 🎉
