Двуязычный интерфейс (RU/EN) с автоопределением + документация на двух языках
Панель: - engine/main/lang.php: класс Lang, автоопределение языка (?lang= -> cookie -> Accept-Language -> конфиг) - перевод применяется к готовому ответу через ob_start(): покрывает всю панель, админку и письма, не требуя правки 200 файлов шаблонов; отсутствующая фраза остаётся русской - замена только на границах слов, иначе короткий ключ портил длинные слова (Модуль -> Modуль) - AJAX-ответы переводятся отдельно (json_encode экранирует кириллицу в \uXXXX) - application/lang/en.php: 657 переводов; ru.php как точка расширения - переключатель RU/EN в шапке кабинета, админки и в подвале страницы входа - 'lang' в config.php — язык по умолчанию - проверено обходом 20 разделов: 0 непереведённых фраз, 0 мешанины языков, 0 фаталов Документация — теперь на русском и английском: - README.en.md, CHANGES.en.md, SECURITY.en.md, GUIDE.en.md - переключатели языка в начале каждого документа - раздел «Язык интерфейса» в инструкции: как работает, как добавить свой язык
This commit is contained in:
+54
-9
@@ -1,3 +1,5 @@
|
||||
**Русский** · [English](GUIDE.en.md)
|
||||
|
||||
# Полная инструкция
|
||||
|
||||
От пустого сервера до принимающего клиентов хостинга.
|
||||
@@ -12,10 +14,11 @@
|
||||
4. [Подключение ноды к панели](#4-подключение-ноды-к-панели)
|
||||
5. [Сборки игр](#5-сборки-игр)
|
||||
6. [Настройка панели](#6-настройка-панели)
|
||||
7. [Капча](#7-капча)
|
||||
8. [HTTPS и домен](#8-https-и-домен)
|
||||
9. [Обслуживание](#9-обслуживание)
|
||||
10. [Если что-то не работает](#10-если-что-то-не-работает)
|
||||
7. [Язык интерфейса](#7-язык-интерфейса)
|
||||
8. [Капча](#8-капча)
|
||||
9. [HTTPS и домен](#9-https-и-домен)
|
||||
10. [Обслуживание](#10-обслуживание)
|
||||
11. [Если что-то не работает](#11-если-что-то-не-работает)
|
||||
|
||||
---
|
||||
|
||||
@@ -219,7 +222,49 @@ Minecraft (Paper) — с `papermc.io`, RAGE:MP — с `rage.mp`, игры Steam
|
||||
|
||||
---
|
||||
|
||||
## 7. Капча
|
||||
## 7. Язык интерфейса
|
||||
|
||||
Панель говорит на **русском и английском**. Язык выбирается в таком порядке:
|
||||
|
||||
1. `?lang=en` или `?lang=ru` в адресе — явный выбор, запоминается в cookie на год
|
||||
2. cookie `lang` — прошлый выбор
|
||||
3. **заголовок браузера `Accept-Language`** — автоопределение
|
||||
4. параметр `lang` в `application/config.php` (по умолчанию `ru`)
|
||||
|
||||
Автоопределение намеренно оставляет русский для русскоязычных локалей (ru, uk, be, kk и других)
|
||||
и переключает на английский для всех остальных — то есть посетитель из Германии или Бразилии
|
||||
сразу получает английский интерфейс, ничего не нажимая.
|
||||
|
||||
**Переключатель** стоит в верхней панели кабинета и админки (кнопки `RU` / `EN` рядом с балансом)
|
||||
и в подвале страницы входа.
|
||||
|
||||
**Как это сделано.** Панель написана с русским текстом прямо в шаблонах — около 1500 строк в
|
||||
200 файлах. Вместо того чтобы переписывать их все, перевод применяется к готовому ответу:
|
||||
`index.php` оборачивает вывод в `ob_start()`, и перед отправкой браузеру строки заменяются по
|
||||
словарю (`engine/main/lang.php`). Это разом покрывает всю панель, включая админку и письма, а
|
||||
фразы, которых нет в словаре, просто остаются русскими — ничего не может пропасть с экрана.
|
||||
|
||||
Замена работает **только на границах слов**, поэтому короткий ключ не может испортить слово
|
||||
подлиннее (без этого «Мод» превращал «Модуль» в «Modуль»).
|
||||
|
||||
**Как добавить свой язык**, например немецкий:
|
||||
|
||||
```bash
|
||||
cp panel/application/lang/en.php panel/application/lang/de.php
|
||||
# перевести значения в de.php, затем добавить 'de' в Lang::AVAILABLE
|
||||
# в panel/engine/main/lang.php
|
||||
```
|
||||
|
||||
Полноту словаря мы проверяли обходом страниц: все 20 разделов, которые проходим, отдаются без
|
||||
остатков русского текста. Если увидите непереведённую фразу — допишите её в
|
||||
`application/lang/en.php`, ключ это русский текст ровно в том виде, в каком он на странице.
|
||||
|
||||
Перевод включается только когда язык не русский; в русском режиме словарь даже не загружается,
|
||||
поэтому накладных расходов нет.
|
||||
|
||||
---
|
||||
|
||||
## 8. Капча
|
||||
|
||||
По умолчанию **выключена** — регистрация и вход работают без неё, поля просто нет.
|
||||
|
||||
@@ -246,7 +291,7 @@ sudo service php8.4-fpm restart # подставьте свою версию
|
||||
|
||||
---
|
||||
|
||||
## 8. HTTPS и домен
|
||||
## 9. HTTPS и домен
|
||||
|
||||
Панель ставится на HTTP. Для сертификата:
|
||||
|
||||
@@ -269,7 +314,7 @@ sudo service php8.4-fpm restart
|
||||
|
||||
---
|
||||
|
||||
## 9. Обслуживание
|
||||
## 10. Обслуживание
|
||||
|
||||
**Резервные копии.** Сохраняйте базу и конфиг:
|
||||
|
||||
@@ -303,7 +348,7 @@ sudo service php8.4-fpm restart
|
||||
|
||||
---
|
||||
|
||||
## 10. Если что-то не работает
|
||||
## 11. Если что-то не работает
|
||||
|
||||
**«Ошибка: Не удалось загрузить контроллер …»** — панель не нашла контроллер для этого адреса.
|
||||
Обычно это ссылка на то, чего нет: например `/phpmyadmin`, когда phpMyAdmin не установлен
|
||||
@@ -314,7 +359,7 @@ sudo service php8.4-fpm restart
|
||||
Частая причина: `short_open_tag = Off`. Панель использует короткие теги `<? ?>`, установщик
|
||||
включает эту опцию сам, но при переустановке PHP её нужно вернуть.
|
||||
|
||||
**Не могу войти, на форме «Invalid site key»** — включена капча без ключей, см. раздел 7.
|
||||
**Не могу войти, на форме «Invalid site key»** — включена капча без ключей, см. раздел 8.
|
||||
|
||||
**Планировщик не работает** (статистика не обновляется, просроченные сервера не отключаются):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user