Перевод панели доведён до конца, скриншоты всех разделов, английское описание главным

Перевод
* Полный обход исходников скриптом, повторяющим логику подстановки: было
  видно 681 строку, которая осталась бы русской. Переведены все — словарь
  вырос с 640 до 1304 записей.
* Покрыты разделы, которых раньше не было в проверке: консоль сервера с
  описанием всех RCON-команд, планировщик задач, файрвол, базы MySQL, FTP,
  автоустановка модов, совладельцы, статистика сервера, страница аккаунта,
  сообщения планировщика и все письма.
* Убран ключ-предлог 'в' => 'at': он подменялся ВНУТРИ ещё не переведённых
  предложений и давал «at поле имя пользователя». Служебные слова переводятся
  только вместе с фразой.
* Формат даты 'd.m.Y в H:i' содержал русское «в» между датой и временем —
  теперь проходит через t() (31 вызов date() в 20 файлах), в английском
  режиме получается 30.07.2026 14:22.
* Абзацы FAQ разбиты по строкам вёрстки, атрибуты placeholder и tooltip
  добавлены отдельными ключами — раньше они не попадали в разбор.
* Живой обход 45 страниц в английском режиме: русскими остались 4 места, и
  все намеренно — подпись «Русский» у переключателя, коды языков игрового
  сервера в FAQ и регулярное выражение проверки имени.

Скриншоты
* docs/screenshots/{ru,en} — по 38 кадров: вход, регистрация, восстановление
  пароля, кабинет, заказ сервера, новости, статус, тикеты, FAQ, веб-хостинг и
  вся админка вместе со скрытыми вкладками настроек и переключателем капчи.
* docs/screenshots/README.md и README.ru.md — галереи, где каждый раздел
  показан на двух языках рядом.

Документация
* README.md теперь английский (главное описание), русский переехал в
  README.ru.md; в начале каждого — кнопка на другой язык.
* Добавлен раздел о доступных играх: 11 игр каталога с кодами,
  query-протоколами, диапазонами слотов и портов, плюс список ядер, которые
  клиент переключает в один клик.
* Добавлен раздел планов: больше игр по просьбам людей и современные
  платёжные системы — PayPal, Stripe, Lava.

Поддерживается и развивается с помощью REDL.IO.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 03:48:33 +00:00
co-authored by Claude Fable 5
parent e0b96d3501
commit 2e0eacbcea
106 changed files with 1876 additions and 878 deletions
+18 -3
View File
@@ -255,9 +255,24 @@ cp panel/application/lang/en.php panel/application/lang/de.php
# in panel/engine/main/lang.php
```
Dictionary coverage is verified by crawling the pages: all 20 sections we walk through render with
no Russian left over. If you spot an untranslated phrase, add it to `application/lang/en.php`
the key is the Russian text exactly as it appears.
**Coverage.** The dictionary holds 1304 phrases and covers everything a person sees: the client area,
ordering, server management (console with all RCON commands, FTP, MySQL, firewall, scheduler,
mod auto-install), tickets, the whole FAQ, the entire admin area, and the e-mail templates. Coverage
is measured, not assumed — a script replays the replacement logic against the sources and reports
what would stay Russian; a live crawl of 45 pages in English mode confirms it. Four items remain
Russian on purpose: the "Русский" label of the switcher itself, the two game-server language codes
in the FAQ (`rus => Pyccĸий`, `ukr => Українська`), and a name-validation regular expression.
If you do spot an untranslated phrase, add it to `application/lang/en.php` — the key is the Russian
text exactly as it appears in the output. Two rules worth knowing:
* **never add a standalone function word** (a preposition or conjunction such as `в`). It gets
substituted inside sentences that are not translated yet and produces mixed-language nonsense
like "at поле имя пользователя". Translate such words as part of the whole phrase.
* if the phrase contains a PHP variable, use the static fragments around it as separate keys — the
rendered text has real values in place of the variable and the full string would never match.
See the [screenshot gallery](docs/screenshots/README.md) for every section in both languages.
Translation only runs when the language is not Russian; in Russian mode the dictionary is not even
loaded, so there is no overhead.