# Настройка мультиязычности и поддержки кириллицы в Linux

Этот мануал описывает, как корректно настроить **отображение русских символов (UTF-8)** в Linux-системе: консоль, SSH, приложения, systemd, Docker и Ansible.

---

### 🔍 Как понять, есть ли проблема

Типичные симптомы:
- вместо кириллицы — `????` или кракозябры
- `locale` выводит `C` или `POSIX`
- команды с русскими именами файлов работают некорректно
- в логах systemd или приложений битая кодировка

Проверка текущего состояния:

```bash
locale
```

❌ Плохо:
```
LANG=C
LC_ALL=
```

✅ Хорошо:
```
LANG=ru_RU.UTF-8
LC_ALL=
```

---

### 📦 Установка необходимых локалей

#### Debian / Ubuntu

```bash
apt update
apt install -y locales
```

#### RHEL / Rocky / Alma / CentOS Stream

```bash
dnf install -y glibc-langpack-ru
```

#### Arch Linux

```bash
pacman -S glibc
```

---

### 🧩 Генерация локали ru_RU.UTF-8

#### Debian / Ubuntu

```bash
nano /etc/locale.gen
```
Раскомментировать:
```
ru_RU.UTF-8 UTF-8
```

Сгенерировать:
```bash
locale-gen
```

---

### 🌐 Установка локали по умолчанию

```bash
localectl set-locale LANG=ru_RU.UTF-8
```

---

### 🖥 Принудительная установка (cron, systemd, Ansible)

#### /etc/environment

```
LANG=ru_RU.UTF-8
LC_ALL=ru_RU.UTF-8
```

---

### 🔐 SSH

В `/etc/ssh/sshd_config`:
```
AcceptEnv LANG LC_*
```

```bash
systemctl restart sshd
```

---

### 🧰 systemd

В unit-файле:
```ini
[Service]
Environment="LANG=ru_RU.UTF-8"
Environment="LC_ALL=ru_RU.UTF-8"
```

```bash
systemctl daemon-reexec
```

---

### 🐳 Docker

```dockerfile
ENV LANG=ru_RU.UTF-8
ENV LC_ALL=ru_RU.UTF-8
```

---

### 🛠 Ansible

```yaml
ansible_env:
  LANG: ru_RU.UTF-8
  LC_ALL: ru_RU.UTF-8
```

---

### 🧪 Проверка

```bash
echo "Привет, мир"
touch тест.txt
ls
```

---

## ✅ Итог

Если локаль сгенерирована и `LANG=ru_RU.UTF-8` задан глобально — кириллица будет работать везде.