diff --git a/CHANGES.en.md b/CHANGES.en.md index ffba786..82849ed 100644 --- a/CHANGES.en.md +++ b/CHANGES.en.md @@ -170,7 +170,35 @@ translation layer: * Anything not yet translated falls back to the original Russian text, so nothing can disappear from the interface -Details and current coverage: see [GUIDE.en.md](GUIDE.en.md), the "Interface language" section. +Translation is applied to the finished response via `ob_start()`, so none of the 200 template files +had to be rewritten and the coverage extends to the admin area and the e-mails at once. Replacement +only happens on word boundaries — without that a short key corrupts longer words ("Мод" turned +"Модуль" into "Modуль"). + +### Translation coverage + +The dictionary holds **1304 phrases** — everything the panel shows a human: the client area, +ordering a server, server management (the console with every RCON command described, FTP, MySQL +databases, the firewall, the task scheduler, mod auto-install), tickets, the whole FAQ, the entire +admin area, the e-mails and the scheduler's status messages. + +Coverage is not eyeballed: a script replays the replacement logic against the sources and lists +what would stay Russian. By that measure **four** items are uncovered, and all four should be: + +* "Русский" — the label of the language switcher itself; +* `rus => Pyccĸий` and `ukr => Українська` in the FAQ — these are game server language codes, not UI; +* the name validation regular expression `/^([А-ЯЁ])([а-яё]{1,15})$/u` — code, not text. + +Two traps that produced mixed-language output were fixed separately: + +* the preposition "в" was its own dictionary entry and got substituted inside sentences that were not + translated yet, producing "at поле имя пользователя". Function words like that are only translated + together with the phrase they belong to; +* the date format `d.m.Y в H:i` contains the Russian "в" between the date and the time. It now goes + through `t()` (31 `date()` calls across 20 files), so English mode renders `30.07.2026 14:22`. + +Verified by a live crawl of 45 pages in English mode, including the creation forms and the hidden +settings tabs. Details: see [GUIDE.en.md](GUIDE.en.md), the "Interface language" section. --- diff --git a/GUIDE.en.md b/GUIDE.en.md index b5d13d5..d9adac3 100644 --- a/GUIDE.en.md +++ b/GUIDE.en.md @@ -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. diff --git a/README.en.md b/README.en.md deleted file mode 100644 index c75a003..0000000 --- a/README.en.md +++ /dev/null @@ -1,161 +0,0 @@ -[Русский](README.md) · **English** - -# Game Hosting Control Panel · REDL build - -A control panel for selling and managing game servers: SA-MP, CRMP, MTA, Minecraft, CS 1.6, CS:S, RAGE:MP. -Client area, ticket system, payment gateways, automated game server deployment onto game nodes. - -**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.** - -This build is a modernisation of the HostinPL 5.6 panel. The original was written for Debian 9 and PHP 7.0 -(both end-of-life since 2022) and simply would not start on a current server. Here it runs on an up-to-date -stack, the vulnerabilities we found are fixed, and one-click installers are included. - ---- - -## ⚠️ Legal status — read this before installing - -The original **HostinPL 5.6 is a commercial, proprietary product**. Its authors are Samir Shelenko and -Alexander Zemlyanoy. The file `panel/LICENSE` is their licence, and it grants no permission to -redistribute or modify the software. - -The sources this build is based on were circulated as "nulled" — a cracked copy of a paid product, -published without the authors' consent. We are not hiding that or rewriting history: the authors' -copyright headers are preserved throughout the code and were deliberately not removed. - -What this means in practice: - -* using it for commercial hosting infringes copyright, with all the risks that follow; -* the legal route is to buy a licence from the authors, or use an open-source alternative - (Pterodactyl, Pelican); -* this repository is only useful for studying the code, auditing it, and internal experiments. - -Responsibility for use rests with whoever installs it. - ---- - -## What is in this repository - -| Path | What it is | -|------|------------| -| `install-panel.sh` | One-click panel install (nginx + PHP 8 + MariaDB + scheduler + admin user) | -| `install-node.sh` | One-click game node install (Docker + image + directories + SSH/FTP + SteamCMD) | -| `panel/` | Panel source code with all of our changes | -| `docker/Dockerfile` | Modern game server image (Debian 12; the original stretch-based one no longer builds) | -| `docker/Dockerfile.original-stretch` | The original Dockerfile, kept for comparison | -| [`CHANGES.en.md`](CHANGES.en.md) | Full list of differences from the original | -| [`SECURITY.en.md`](SECURITY.en.md) | Audit results: vulnerabilities, backdoors, what was fixed | -| [`GUIDE.en.md`](GUIDE.en.md) | Complete guide: install, connecting a node, configuration, maintenance | - ---- - -## Requirements - -**For the panel** (the website and database — Docker is not needed): - -* Ubuntu 24.04 / 22.04 or Debian 12 / 13 -* 1 core, 1 GB RAM, 10 GB disk -* Any VPS will do, including container-based ones (LXC/OpenVZ) - -**For a game node** (this is where the game servers actually run): - -* Ubuntu 24.04 / 22.04 or Debian 12 / 13 -* 2 cores, 2 GB RAM, 100 GB disk (budget 1–2 GB per game server) -* **Full kernel access is mandatory: a dedicated server or KVM.** - The panel creates a separate Docker container for every game server, and Docker does not start - inside a container-based VPS (LXC/OpenVZ) — the kernel forbids nested namespaces. The installer - checks for this and tells you plainly if the machine is unsuitable. - -The panel and a node can share one machine, but separating them is better: keep the website on a -cheap VPS and put the games on real hardware. - ---- - -## One-click install - -### Panel - -```bash -apt-get update && apt-get install -y git -git clone https://github.com/RedlHosting/redl-gamepanel.git -cd redl-gamepanel -sudo bash install-panel.sh -``` - -The script asks only for the panel address, the administrator e-mail and password — everything else -is automatic: it installs nginx, PHP 8 and MariaDB, creates a database with a random password, loads -the schema, writes the configuration and the scheduler, sets up an autostart watchdog, creates the -administrator, and verifies that the login page actually opens. - -To run the panel on a non-standard port, set it via an environment variable: - -```bash -sudo PORT=8095 bash install-panel.sh -``` - -### Game node - -```bash -git clone https://github.com/RedlHosting/redl-gamepanel.git -cd redl-gamepanel -sudo bash install-node.sh -``` - -At the end the script prints the IP, SSH login and password — enter those in the panel under -**Admin → Locations → Add location**. See [GUIDE.en.md](GUIDE.en.md) for details. - ---- - -## What already works - -* Login, registration, password recovery — **without a captcha** (it is enabled from the admin area, see below) -* Client area: balance, invoices, transfers, bonuses, promo codes, referral system -* Ticket system with categories and attachments -* Admin area: users, servers, locations, games, news, statistics, promo codes, settings -* System check (Admin → System check) — every item green -* Payment gateways: Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, YooKassa, QIWI - (credentials are entered in the admin area; we did not test any gateway with a real payment) -* Web hosting (the WEB section) — via ISPmanager on a separate machine -* Scheduler: statistics, tasks, automatic suspension of expired servers -* **Two interface languages: Russian and English**, with automatic detection from the browser - and a switcher in the header (see [GUIDE.en.md](GUIDE.en.md)) - -### The captcha is off and is enabled with a single switch - -By default there is no captcha anywhere — not on login, registration or tickets; the field simply -does not exist. When you need it: - -1. Get reCAPTCHA v2 ("I'm not a robot") keys at [google.com/recaptcha](https://www.google.com/recaptcha/admin) -2. Go to **Admin → Settings → Other settings → "Bot protection (reCAPTCHA v2)"** -3. Paste the Site key and the Secret key, switch it to "Enabled", save - -The order matters: keys first, switch second — otherwise the form shows -"ERROR for site owner: Invalid site key" and nobody can log in. - -## What does not work - -* **Creating game servers on a container-based VPS.** You need a node with real Docker - (dedicated or KVM) — see Requirements for why. -* **Game server files are not included.** The original installer downloaded them from third-party - sites over plain HTTP with no signature checking, so we removed that (see [SECURITY.en.md](SECURITY.en.md)). - You need to place the files into `/home/cp/gameservers/files//` yourself. -* **Payments and VK login** require your own keys and merchant accounts. - ---- - -## Differences from the original, in brief - -* Runs on **PHP 8.4** instead of PHP 7.0 — a walk through all 21 sections of the panel produces - zero errors in the log -* **The installer was rewritten from scratch**: the original overwrote `/etc/apt/sources.list` with - Debian 9 repositories and broke apt on any current system -* **Two pre-authentication SQL injections were fixed**, and plaintext password storage was removed -* The captcha became manageable from the admin area -* Russian and English interface with automatic language detection -* The scheduler and autostart work even where systemd is absent - -The full list is in [CHANGES.en.md](CHANGES.en.md) and [SECURITY.en.md](SECURITY.en.md). - ---- - -**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.** diff --git a/README.md b/README.md index 0d90f8f..39b54f0 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,129 @@ -**Русский** · [English](README.en.md) +

+ Читать по-русски +

-# Панель управления игровым хостингом · сборка REDL +# Game Hosting Control Panel · REDL build -Панель для продажи и управления игровыми серверами: SA-MP, CRMP, MTA, Minecraft, CS 1.6, CS:S, RAGE:MP. -Личный кабинет клиента, тикеты, платёжные системы, автоматическое создание серверов на игровых нодах. +> 🇷🇺 **[Русская версия этого описания → README.ru.md](README.ru.md)** -**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.** +A control panel for selling and managing game servers: SA-MP, CRMP, MTA, Minecraft, CS 1.6, CS:S, RAGE:MP. +Client area, ticket system, payment gateways, automated game server deployment onto game nodes. -Эта сборка — модернизация панели HostinPL 5.6: оригинал написан под Debian 9 и PHP 7.0 (сняты с поддержки в 2022 году) -и на современном сервере просто не запускался. Здесь он приведён в рабочее состояние на актуальном стеке, -закрыты найденные уязвимости и добавлены установщики в один клик. +**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.** + +This build is a modernisation of the HostinPL 5.6 panel. The original was written for Debian 9 and PHP 7.0 +(both end-of-life since 2022) and simply would not start on a current server. Here it runs on an up-to-date +stack, the vulnerabilities we found are fixed, and one-click installers are included. --- -## ⚠️ Правовой статус — прочитайте до установки +## ⚠️ Legal status — read this before installing -Оригинальная панель **HostinPL 5.6 — коммерческий проприетарный продукт**. Авторы: Samir Shelenko и -Alexander Zemlyanoy. Файл `panel/LICENSE` — их лицензия, и разрешения на распространение или изменение -она не даёт. +The original **HostinPL 5.6 is a commercial, proprietary product**. Its authors are Samir Shelenko and +Alexander Zemlyanoy. The file `panel/LICENSE` is their licence, and it grants no permission to +redistribute or modify the software. -Исходники, лежащие в основе этой сборки, распространялись как «nulled» — то есть это взломанная копия -платного продукта, выложенная без согласия авторов. Мы этого не скрываем и не переписываем историю: -авторские копирайт-заголовки в коде сохранены как есть, они специально не удалялись. +The sources this build is based on were circulated as "nulled" — a cracked copy of a paid product, +published without the authors' consent. We are not hiding that or rewriting history: the authors' +copyright headers are preserved throughout the code and were deliberately not removed. -Что это значит на практике: +What this means in practice: -* использование в коммерческом хостинге — нарушение авторских прав со всеми вытекающими рисками; -* легальный путь — купить лицензию у авторов либо взять открытую альтернативу (Pterodactyl, Pelican); -* этот репозиторий имеет смысл только для изучения кода, аудита и внутренних экспериментов. +* using it for commercial hosting infringes copyright, with all the risks that follow; +* the legal route is to buy a licence from the authors, or use an open-source alternative + (Pterodactyl, Pelican); +* this repository is only useful for studying the code, auditing it, and internal experiments. -Ответственность за использование лежит на том, кто устанавливает. +Responsibility for use rests with whoever installs it. --- -## Что в репозитории +## What is in this repository -| Путь | Что это | -|------|---------| -| `install-panel.sh` | Установка панели в один клик (nginx + PHP 8 + MariaDB + планировщик + админ) | -| `install-node.sh` | Установка игровой ноды в один клик (Docker + образ + каталоги + SSH/FTP + SteamCMD) | -| `panel/` | Код панели со всеми нашими правками | -| `docker/Dockerfile` | Современный образ игровых серверов (Debian 12; оригинальный на stretch больше не собирается) | -| `docker/Dockerfile.original-stretch` | Оригинальный Dockerfile — оставлен для сравнения | -| [`ИЗМЕНЕНИЯ.md`](ИЗМЕНЕНИЯ.md) | Полный список отличий от оригинала | -| [`БЕЗОПАСНОСТЬ.md`](БЕЗОПАСНОСТЬ.md) | Что нашли при аудите: уязвимости, закладки, что исправлено | -| [`ИНСТРУКЦИЯ.md`](ИНСТРУКЦИЯ.md) | Полная инструкция: установка, подключение ноды, настройка, обслуживание | +| Path | What it is | +|------|------------| +| `install-panel.sh` | One-click panel install (nginx + PHP 8 + MariaDB + scheduler + admin user) | +| `install-node.sh` | One-click game node install (Docker + image + directories + SSH/FTP + SteamCMD) | +| `panel/` | Panel source code with all of our changes | +| `docker/Dockerfile` | Modern game server image (Debian 12; the original stretch-based one no longer builds) | +| `docker/Dockerfile.original-stretch` | The original Dockerfile, kept for comparison | +| [`CHANGES.en.md`](CHANGES.en.md) | Full list of differences from the original | +| [`SECURITY.en.md`](SECURITY.en.md) | Audit results: vulnerabilities, backdoors, what was fixed | +| [`GUIDE.en.md`](GUIDE.en.md) | Complete guide: install, connecting a node, configuration, maintenance | --- -## Требования +## Screenshots -**Для панели** (сам сайт и база — Docker не нужен): +Every section of the panel, captured in both languages — 38 screenshots per language: -* Ubuntu 24.04 / 22.04 или Debian 12 / 13 -* 1 ядро, 1 ГБ ОЗУ, 10 ГБ диска -* Подойдёт любой VPS, включая контейнерный (LXC/OpenVZ) +| | | +|---|---| +| [![Login](docs/screenshots/en/00-login.png)](docs/screenshots/en/00-login.png)
Login page | [![Client area](docs/screenshots/en/01-cabinet.png)](docs/screenshots/en/01-cabinet.png)
Client area | +| [![Order a server](docs/screenshots/en/03-server-order.png)](docs/screenshots/en/03-server-order.png)
Ordering a game server | [![Admin dashboard](docs/screenshots/en/11-admin-dashboard.png)](docs/screenshots/en/11-admin-dashboard.png)
Admin dashboard | +| [![Statistics](docs/screenshots/en/24-admin-statistics.png)](docs/screenshots/en/24-admin-statistics.png)
Statistics | [![Captcha switch](docs/screenshots/en/28-admin-settings-other-captcha.png)](docs/screenshots/en/28-admin-settings-other-captcha.png)
The captcha switch in the admin area | -**Для игровой ноды** (там крутятся сами игровые сервера): - -* Ubuntu 24.04 / 22.04 или Debian 12 / 13 -* 2 ядра, 2 ГБ ОЗУ, 100 ГБ диска (считайте 1–2 ГБ на игровой сервер) -* **Обязательно полный доступ к ядру: выделенный сервер или KVM.** - Панель создаёт на каждый игровой сервер отдельный Docker-контейнер, а в контейнерном VPS - (LXC/OpenVZ) Docker не запускается — ядро запрещает вложенные namespace. Установщик это проверяет - и честно предупредит. - -Панель и нода могут быть одной машиной, но лучше разными: сайт можно держать на дешёвом VPS, -а под игры взять железо. +**Full galleries:** [🇬🇧 English](docs/screenshots/README.md) · [🇷🇺 Russian](docs/screenshots/README.ru.md) --- -## Установка в один клик +## Supported games -### Панель +Eleven games ship in the panel's catalogue. Each one has its own query driver (so the panel can read +online player counts and the map), its own port and slot ranges, and its own default resource limits. + +| Game | Code | Query protocol | Slots | Port range | +|------|------|----------------|-------|------------| +| San Andreas: Multiplayer 0.3.7 | `samp` | samp | 50–1000 | 7777–9999 | +| Criminal Russia: Multiplayer 0.3e | `crmp` | samp | 50–500 | 3335–7000 | +| Criminal Russia: Multiplayer 0.3.7 | `crmp037` | samp | 50–500 | 3335–7000 | +| United Multiplayer | `unit` | samp | 50–500 | 7777–9999 | +| Multi Theft Auto | `mta` | mtasa | 50–1000 | 25020–80520 | +| Minecraft (Java) | `mine` | mine | 10–100 | 12410–55641 | +| Minecraft: Pocket Edition | `mcpe` | mine | 10–100 | 12410–55641 | +| Counter-Strike 1.6 | `cs` | valve | 6–32 | 27016–30550 | +| Counter-Strike: Source | `css` | valve | 6–32 | 27016–30550 | +| Counter-Strike: Global Offensive | `csgo` | valve | 6–32 | 27016–30550 | +| GTA V: RAGE MP | `ragemp` | ragemp | 50–500 | 22000–25000 | + +The client can switch the server core in one click, without ordering a new server: + +* **Minecraft (Java)** — CraftBukkit 1.7.10 / 1.8 / 1.13.2, Spigot 1.7.10 / 1.9.4 / 1.16.1, Vanilla 1.7.10 / 1.15.1 +* **Minecraft: PE** — Genisys and Nukkit builds +* **Counter-Strike** — a clean build from SteamCMD, plus the VAC anti-cheat toggle and FastDL +* **RAGE:MP** — NodeJS modules are installed from the server management page + +Every game is **disabled** in a fresh install (`Admin → Games → status`) — switch on the ones you +have a node and server files for. The game files themselves are not shipped, see +"What does not work" below. + +--- + +## Requirements + +**For the panel** (the website and database — Docker is not needed): + +* Ubuntu 24.04 / 22.04 or Debian 12 / 13 +* 1 core, 1 GB RAM, 10 GB disk +* Any VPS will do, including container-based ones (LXC/OpenVZ) + +**For a game node** (this is where the game servers actually run): + +* Ubuntu 24.04 / 22.04 or Debian 12 / 13 +* 2 cores, 2 GB RAM, 100 GB disk (budget 1–2 GB per game server) +* **Full kernel access is mandatory: a dedicated server or KVM.** + The panel creates a separate Docker container for every game server, and Docker does not start + inside a container-based VPS (LXC/OpenVZ) — the kernel forbids nested namespaces. The installer + checks for this and tells you plainly if the machine is unsuitable. + +The panel and a node can share one machine, but separating them is better: keep the website on a +cheap VPS and put the games on real hardware. + +--- + +## One-click install + +### Panel ```bash apt-get update && apt-get install -y git @@ -81,18 +132,18 @@ cd redl-gamepanel sudo bash install-panel.sh ``` -Скрипт спросит только адрес панели, e-mail и пароль администратора — дальше всё сам: -поставит nginx, PHP 8 и MariaDB, создаст базу со случайным паролем, загрузит схему, настроит -конфиг и планировщик, поднимет сторож автозапуска, создаст администратора и проверит, -что страница входа реально открывается. +The script asks only for the panel address, the administrator e-mail and password — everything else +is automatic: it installs nginx, PHP 8 and MariaDB, creates a database with a random password, loads +the schema, writes the configuration and the scheduler, sets up an autostart watchdog, creates the +administrator, and verifies that the login page actually opens. -Панель работает на нестандартном порту, если задать его переменной: +To run the panel on a non-standard port, set it via an environment variable: ```bash sudo PORT=8095 bash install-panel.sh ``` -### Игровая нода +### Game node ```bash git clone https://github.com/RedlHosting/redl-gamepanel.git @@ -100,60 +151,76 @@ cd redl-gamepanel sudo bash install-node.sh ``` -В конце скрипт напечатает IP, логин и пароль SSH — их нужно вбить в панели: -**Админка → Локации → Добавить локацию**. Подробнее — в [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md). +At the end the script prints the IP, SSH login and password — enter those in the panel under +**Admin → Locations → Add location**. See [GUIDE.en.md](GUIDE.en.md) for details. --- -## Что уже работает +## What already works -* Вход, регистрация, восстановление пароля — **без капчи** (включается из админки, см. ниже) -* Личный кабинет: баланс, счета, переводы, бонусы, промокоды, реферальная система -* Тикет-система с категориями и вложениями -* Админка: пользователи, сервера, локации, игры, новости, статистика, промокоды, настройки -* Проверка системы (Админка → Проверка системы) — все пункты зелёные -* Платёжные системы: Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, Юkassa, QIWI - (реквизиты вписываются в админке; ни один шлюз мы не тестировали живыми платежами) -* Веб-хостинг (раздел WEB) — через ISPmanager на отдельной машине -* Планировщик: статистика, задачи, автоотключение просроченных серверов -* **Два языка интерфейса: русский и английский**, с автоопределением по браузеру - и переключателем в шапке (см. [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md)) +* Login, registration, password recovery — **without a captcha** (it is enabled from the admin area, see below) +* Client area: balance, invoices, transfers, bonuses, promo codes, referral system +* Ticket system with categories and attachments +* Admin area: users, servers, locations, games, news, statistics, promo codes, settings +* System check (Admin → System check) — every item green +* Payment gateways: Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, YooKassa, QIWI + (credentials are entered in the admin area; we did not test any gateway with a real payment) +* Web hosting (the WEB section) — via ISPmanager on a separate machine +* Scheduler: statistics, tasks, automatic suspension of expired servers +* **Two interface languages: Russian and English**, with automatic detection from the browser + and a switcher in the header (see [GUIDE.en.md](GUIDE.en.md)) -### Капча — выключена, включается одним переключателем +### The captcha is off and is enabled with a single switch -По умолчанию капчи нет нигде: ни при входе, ни при регистрации, ни в тикетах — поля просто -не существует. Когда понадобится: +By default there is no captcha anywhere — not on login, registration or tickets; the field simply +does not exist. When you need it: -1. Получите ключи reCAPTCHA v2 («Я не робот») на [google.com/recaptcha](https://www.google.com/recaptcha/admin) -2. **Админка → Настройки → Прочие настройки → «Защита от ботов (reCAPTCHA v2)»** -3. Вставьте Site key и Secret key, переключите на «Включена», сохраните +1. Get reCAPTCHA v2 ("I'm not a robot") keys at [google.com/recaptcha](https://www.google.com/recaptcha/admin) +2. Go to **Admin → Settings → Other settings → "Bot protection (reCAPTCHA v2)"** +3. Paste the Site key and the Secret key, switch it to "Enabled", save -Порядок важен: сначала ключи, потом переключатель — иначе на форме появится -«ERROR for site owner: Invalid site key» и войти будет нельзя. +The order matters: keys first, switch second — otherwise the form shows +"ERROR for site owner: Invalid site key" and nobody can log in. -## Что не работает +## What does not work -* **Создание игровых серверов на контейнерном VPS.** Нужна нода с настоящим Docker - (дедик или KVM) — причина описана в требованиях. -* **Сборки игр в комплект не входят.** В оригинальном установщике они качались с посторонних - сайтов по обычному HTTP без проверки подписи — мы этот способ убрали (см. [БЕЗОПАСНОСТЬ.md](БЕЗОПАСНОСТЬ.md)). - Сборки нужно положить в `/home/cp/gameservers/files/<код_игры>/` самостоятельно. -* **Платежи и VK-авторизация** требуют ваших собственных ключей и мерчант-аккаунтов. +* **Creating game servers on a container-based VPS.** You need a node with real Docker + (dedicated or KVM) — see Requirements for why. +* **Game server files are not included.** The original installer downloaded them from third-party + sites over plain HTTP with no signature checking, so we removed that (see [SECURITY.en.md](SECURITY.en.md)). + You need to place the files into `/home/cp/gameservers/files//` yourself. +* **Payments and VK login** require your own keys and merchant accounts. --- -## Коротко об отличиях от оригинала +## Planned next -* Работает на **PHP 8.4** вместо PHP 7.0 — обход всех 21 раздела панели даёт ноль ошибок в логе -* **Установщик переписан с нуля**: оригинальный затирал `/etc/apt/sources.list` репозиториями - Debian 9 и ломал apt на любой современной системе -* **Закрыты две SQL-инъекции, доступные без авторизации**, и убрано хранение паролей в открытом виде -* Капча стала управляемой из админки -* Русский и английский интерфейс с автоопределением языка -* Планировщик и автозапуск работают и там, где нет systemd +1. **More games — by request.** The eleven games above are the ones the panel came with. Adding a + game means one row in the catalogue plus a query driver and server files, so the list is meant to + grow: tell us which game you want and it goes into the queue. Rust, ARK, Terraria, Valheim, + Garry's Mod, Team Fortress 2, FiveM and Minecraft: Bedrock are the obvious candidates. +2. **Modern payment gateways: PayPal, Stripe and Lava.** Right now the panel only has the Russian + gateways of its original author (Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, YooKassa, + QIWI). PayPal and Stripe open up card payments worldwide, Lava covers Russia and the CIS — + together they let the panel take money outside a single region. -Полностью — в [ИЗМЕНЕНИЯ.md](ИЗМЕНЕНИЯ.md) и [БЕЗОПАСНОСТЬ.md](БЕЗОПАСНОСТЬ.md). +Have a different priority? Open an issue in the repository. --- -**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.** +## Differences from the original, in brief + +* Runs on **PHP 8.4** instead of PHP 7.0 — a walk through all 21 sections of the panel produces + zero errors in the log +* **The installer was rewritten from scratch**: the original overwrote `/etc/apt/sources.list` with + Debian 9 repositories and broke apt on any current system +* **Two pre-authentication SQL injections were fixed**, and plaintext password storage was removed +* The captcha became manageable from the admin area +* Russian and English interface with automatic language detection +* The scheduler and autostart work even where systemd is absent + +The full list is in [CHANGES.en.md](CHANGES.en.md) and [SECURITY.en.md](SECURITY.en.md). + +--- + +**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.** diff --git a/README.ru.md b/README.ru.md new file mode 100644 index 0000000..69d0707 --- /dev/null +++ b/README.ru.md @@ -0,0 +1,223 @@ +

+ Read in English +

+ +# Панель управления игровым хостингом · сборка REDL + +> 🇬🇧 **[English version of this page → README.md](README.md)** + +Панель для продажи и управления игровыми серверами: SA-MP, CRMP, MTA, Minecraft, CS 1.6, CS:S, RAGE:MP. +Личный кабинет клиента, тикеты, платёжные системы, автоматическое создание серверов на игровых нодах. + +**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.** + +Эта сборка — модернизация панели HostinPL 5.6: оригинал написан под Debian 9 и PHP 7.0 (сняты с поддержки в 2022 году) +и на современном сервере просто не запускался. Здесь он приведён в рабочее состояние на актуальном стеке, +закрыты найденные уязвимости и добавлены установщики в один клик. + +--- + +## ⚠️ Правовой статус — прочитайте до установки + +Оригинальная панель **HostinPL 5.6 — коммерческий проприетарный продукт**. Авторы: Samir Shelenko и +Alexander Zemlyanoy. Файл `panel/LICENSE` — их лицензия, и разрешения на распространение или изменение +она не даёт. + +Исходники, лежащие в основе этой сборки, распространялись как «nulled» — то есть это взломанная копия +платного продукта, выложенная без согласия авторов. Мы этого не скрываем и не переписываем историю: +авторские копирайт-заголовки в коде сохранены как есть, они специально не удалялись. + +Что это значит на практике: + +* использование в коммерческом хостинге — нарушение авторских прав со всеми вытекающими рисками; +* легальный путь — купить лицензию у авторов либо взять открытую альтернативу (Pterodactyl, Pelican); +* этот репозиторий имеет смысл только для изучения кода, аудита и внутренних экспериментов. + +Ответственность за использование лежит на том, кто устанавливает. + +--- + +## Что в репозитории + +| Путь | Что это | +|------|---------| +| `install-panel.sh` | Установка панели в один клик (nginx + PHP 8 + MariaDB + планировщик + админ) | +| `install-node.sh` | Установка игровой ноды в один клик (Docker + образ + каталоги + SSH/FTP + SteamCMD) | +| `panel/` | Код панели со всеми нашими правками | +| `docker/Dockerfile` | Современный образ игровых серверов (Debian 12; оригинальный на stretch больше не собирается) | +| `docker/Dockerfile.original-stretch` | Оригинальный Dockerfile — оставлен для сравнения | +| [`ИЗМЕНЕНИЯ.md`](ИЗМЕНЕНИЯ.md) | Полный список отличий от оригинала | +| [`БЕЗОПАСНОСТЬ.md`](БЕЗОПАСНОСТЬ.md) | Что нашли при аудите: уязвимости, закладки, что исправлено | +| [`ИНСТРУКЦИЯ.md`](ИНСТРУКЦИЯ.md) | Полная инструкция: установка, подключение ноды, настройка, обслуживание | + +--- + +## Скриншоты + +Каждый раздел панели снят на двух языках — по 38 кадров на язык: + +| | | +|---|---| +| [![Вход](docs/screenshots/ru/00-login.png)](docs/screenshots/ru/00-login.png)
Страница входа | [![Кабинет](docs/screenshots/ru/01-cabinet.png)](docs/screenshots/ru/01-cabinet.png)
Личный кабинет | +| [![Заказ сервера](docs/screenshots/ru/03-server-order.png)](docs/screenshots/ru/03-server-order.png)
Заказ игрового сервера | [![Админка](docs/screenshots/ru/11-admin-dashboard.png)](docs/screenshots/ru/11-admin-dashboard.png)
Главная админки | +| [![Статистика](docs/screenshots/ru/24-admin-statistics.png)](docs/screenshots/ru/24-admin-statistics.png)
Статистика | [![Переключатель капчи](docs/screenshots/ru/28-admin-settings-other-captcha.png)](docs/screenshots/ru/28-admin-settings-other-captcha.png)
Переключатель капчи в админке | + +**Полные галереи:** [🇷🇺 русская](docs/screenshots/README.ru.md) · [🇬🇧 английская](docs/screenshots/README.md) + +--- + +## Какие игры доступны + +В каталоге панели одиннадцать игр. У каждой свой query-драйвер (панель сама читает онлайн игроков +и карту), свои диапазоны портов и слотов и свои лимиты ресурсов по умолчанию. + +| Игра | Код | Query-протокол | Слоты | Порты | +|------|-----|----------------|-------|-------| +| San Andreas: Multiplayer 0.3.7 | `samp` | samp | 50–1000 | 7777–9999 | +| Criminal Russia: Multiplayer 0.3e | `crmp` | samp | 50–500 | 3335–7000 | +| Criminal Russia: Multiplayer 0.3.7 | `crmp037` | samp | 50–500 | 3335–7000 | +| United Multiplayer | `unit` | samp | 50–500 | 7777–9999 | +| Multi Theft Auto | `mta` | mtasa | 50–1000 | 25020–80520 | +| Minecraft (Java) | `mine` | mine | 10–100 | 12410–55641 | +| Minecraft: Pocket Edition | `mcpe` | mine | 10–100 | 12410–55641 | +| Counter-Strike 1.6 | `cs` | valve | 6–32 | 27016–30550 | +| Counter-Strike: Source | `css` | valve | 6–32 | 27016–30550 | +| Counter-Strike: Global Offensive | `csgo` | valve | 6–32 | 27016–30550 | +| GTA V: RAGE MP | `ragemp` | ragemp | 50–500 | 22000–25000 | + +Ядро сервера клиент меняет в один клик, не заказывая новый сервер: + +* **Minecraft (Java)** — CraftBukkit 1.7.10 / 1.8 / 1.13.2, Spigot 1.7.10 / 1.9.4 / 1.16.1, Vanilla 1.7.10 / 1.15.1 +* **Minecraft: PE** — сборки Genisys и Nukkit +* **Counter-Strike** — чистая сборка из SteamCMD, плюс переключатель античита VAC и FastDL +* **RAGE:MP** — NodeJS-модули ставятся со страницы управления сервером + +В свежей установке все игры **выключены** (`Админка → Игры → статус`) — включайте те, под которые +у вас есть нода и сборки. Сами сборки игр в комплект не входят, см. «Что не работает» ниже. + +--- + +## Требования + +**Для панели** (сам сайт и база — Docker не нужен): + +* Ubuntu 24.04 / 22.04 или Debian 12 / 13 +* 1 ядро, 1 ГБ ОЗУ, 10 ГБ диска +* Подойдёт любой VPS, включая контейнерный (LXC/OpenVZ) + +**Для игровой ноды** (там крутятся сами игровые сервера): + +* Ubuntu 24.04 / 22.04 или Debian 12 / 13 +* 2 ядра, 2 ГБ ОЗУ, 100 ГБ диска (считайте 1–2 ГБ на игровой сервер) +* **Обязательно полный доступ к ядру: выделенный сервер или KVM.** + Панель создаёт на каждый игровой сервер отдельный Docker-контейнер, а в контейнерном VPS + (LXC/OpenVZ) Docker не запускается — ядро запрещает вложенные namespace. Установщик это проверяет + и честно предупредит. + +Панель и нода могут быть одной машиной, но лучше разными: сайт можно держать на дешёвом VPS, +а под игры взять железо. + +--- + +## Установка в один клик + +### Панель + +```bash +apt-get update && apt-get install -y git +git clone https://github.com/RedlHosting/redl-gamepanel.git +cd redl-gamepanel +sudo bash install-panel.sh +``` + +Скрипт спросит только адрес панели, e-mail и пароль администратора — дальше всё сам: +поставит nginx, PHP 8 и MariaDB, создаст базу со случайным паролем, загрузит схему, настроит +конфиг и планировщик, поднимет сторож автозапуска, создаст администратора и проверит, +что страница входа реально открывается. + +Панель работает на нестандартном порту, если задать его переменной: + +```bash +sudo PORT=8095 bash install-panel.sh +``` + +### Игровая нода + +```bash +git clone https://github.com/RedlHosting/redl-gamepanel.git +cd redl-gamepanel +sudo bash install-node.sh +``` + +В конце скрипт напечатает IP, логин и пароль SSH — их нужно вбить в панели: +**Админка → Локации → Добавить локацию**. Подробнее — в [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md). + +--- + +## Что уже работает + +* Вход, регистрация, восстановление пароля — **без капчи** (включается из админки, см. ниже) +* Личный кабинет: баланс, счета, переводы, бонусы, промокоды, реферальная система +* Тикет-система с категориями и вложениями +* Админка: пользователи, сервера, локации, игры, новости, статистика, промокоды, настройки +* Проверка системы (Админка → Проверка системы) — все пункты зелёные +* Платёжные системы: Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, Юkassa, QIWI + (реквизиты вписываются в админке; ни один шлюз мы не тестировали живыми платежами) +* Веб-хостинг (раздел WEB) — через ISPmanager на отдельной машине +* Планировщик: статистика, задачи, автоотключение просроченных серверов +* **Два языка интерфейса: русский и английский**, с автоопределением по браузеру + и переключателем в шапке (см. [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md)) + +### Капча — выключена, включается одним переключателем + +По умолчанию капчи нет нигде: ни при входе, ни при регистрации, ни в тикетах — поля просто +не существует. Когда понадобится: + +1. Получите ключи reCAPTCHA v2 («Я не робот») на [google.com/recaptcha](https://www.google.com/recaptcha/admin) +2. **Админка → Настройки → Прочие настройки → «Защита от ботов (reCAPTCHA v2)»** +3. Вставьте Site key и Secret key, переключите на «Включена», сохраните + +Порядок важен: сначала ключи, потом переключатель — иначе на форме появится +«ERROR for site owner: Invalid site key» и войти будет нельзя. + +## Что не работает + +* **Создание игровых серверов на контейнерном VPS.** Нужна нода с настоящим Docker + (дедик или KVM) — причина описана в требованиях. +* **Сборки игр в комплект не входят.** В оригинальном установщике они качались с посторонних + сайтов по обычному HTTP без проверки подписи — мы этот способ убрали (см. [БЕЗОПАСНОСТЬ.md](БЕЗОПАСНОСТЬ.md)). + Сборки нужно положить в `/home/cp/gameservers/files/<код_игры>/` самостоятельно. +* **Платежи и VK-авторизация** требуют ваших собственных ключей и мерчант-аккаунтов. + +--- + +## Что планируем дальше + +1. **Больше игр — по просьбам людей.** Одиннадцать игр выше — это то, с чем панель пришла. + Добавить игру = строка в каталоге плюс query-драйвер и сборки, так что список задуман + расширяемым: скажите, какую игру хотите, и она встанет в очередь. Очевидные кандидаты — + Rust, ARK, Terraria, Valheim, Garry's Mod, Team Fortress 2, FiveM и Minecraft: Bedrock. +2. **Современные платёжные системы: PayPal, Stripe и Lava.** Сейчас в панели только российские + шлюзы её первоначального автора (Unitpay, Enot, AnyPay, LiteKassa, RoboKassa, FreeKassa, + YooKassa, QIWI). PayPal и Stripe открывают приём карт по всему миру, Lava закрывает Россию + и СНГ — вместе они позволяют принимать деньги не только в одном регионе. + +Приоритеты другие? Откройте issue в репозитории. + +--- + +## Коротко об отличиях от оригинала + +* Работает на **PHP 8.4** вместо PHP 7.0 — обход всех 21 раздела панели даёт ноль ошибок в логе +* **Установщик переписан с нуля**: оригинальный затирал `/etc/apt/sources.list` репозиториями + Debian 9 и ломал apt на любой современной системе +* **Закрыты две SQL-инъекции, доступные без авторизации**, и убрано хранение паролей в открытом виде +* Капча стала управляемой из админки +* Русский и английский интерфейс с автоопределением языка +* Планировщик и автозапуск работают и там, где нет systemd + +Полностью — в [ИЗМЕНЕНИЯ.md](ИЗМЕНЕНИЯ.md) и [БЕЗОПАСНОСТЬ.md](БЕЗОПАСНОСТЬ.md). + +--- + +**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.** diff --git a/docs/screenshots/README.md b/docs/screenshots/README.md new file mode 100644 index 0000000..14486a0 --- /dev/null +++ b/docs/screenshots/README.md @@ -0,0 +1,58 @@ +

+ Читать по-русски +

+ +# Panel screenshots + +Every section of the panel, captured on a live install — one shot per section, in both languages. +The English interface is on the left and the same screen in Russian on the right: the language is +switched with a button in the header and detected from the browser automatically. + +Shots are 1600 pixels wide; click an image to open it full size. + +[← back to the README](../../README.md) + +| English | Russian | +|---|---| +| **Panel login**
[](en/00-login.png) | **Panel login**
[](ru/00-login.png) | +| **Registration — no captcha**
[](en/00b-register.png) | **Registration — no captcha**
[](ru/00b-register.png) | +| **Password recovery**
[](en/00c-password-reset.png) | **Password recovery**
[](ru/00c-password-reset.png) | +| **Client area**
[](en/01-cabinet.png) | **Client area**
[](ru/01-cabinet.png) | +| **My game servers**
[](en/02-servers.png) | **My game servers**
[](ru/02-servers.png) | +| **Ordering a game server**
[](en/03-server-order.png) | **Ordering a game server**
[](ru/03-server-order.png) | +| **Hosting news**
[](en/04-news.png) | **Hosting news**
[](ru/04-news.png) | +| **Server status**
[](en/05-status.png) | **Server status**
[](ru/05-status.png) | +| **Support tickets**
[](en/06-tickets.png) | **Support tickets**
[](ru/06-tickets.png) | +| **Creating a ticket**
[](en/07-ticket-create.png) | **Creating a ticket**
[](ru/07-ticket-create.png) | +| **FAQ — client help**
[](en/08-faq.png) | **FAQ — client help**
[](ru/08-faq.png) | +| **Web hosting**
[](en/09-webhosting.png) | **Web hosting**
[](ru/09-webhosting.png) | +| **Ordering web hosting**
[](en/10-webhosting-order.png) | **Ordering web hosting**
[](ru/10-webhosting-order.png) | +| **Admin — dashboard**
[](en/11-admin-dashboard.png) | **Admin — dashboard**
[](ru/11-admin-dashboard.png) | +| **Admin — users**
[](en/12-admin-users.png) | **Admin — users**
[](ru/12-admin-users.png) | +| **Admin — game servers**
[](en/13-admin-servers.png) | **Admin — game servers**
[](ru/13-admin-servers.png) | +| **Admin — game catalogue**
[](en/14-admin-games.png) | **Admin — game catalogue**
[](ru/14-admin-games.png) | +| **Admin — game locations (nodes)**
[](en/15-admin-locations.png) | **Admin — game locations (nodes)**
[](ru/15-admin-locations.png) | +| **Admin — mods**
[](en/16-admin-mods.png) | **Admin — mods**
[](ru/16-admin-mods.png) | +| **Admin — file repository**
[](en/17-admin-repo.png) | **Admin — file repository**
[](ru/17-admin-repo.png) | +| **Admin — tickets**
[](en/18-admin-tickets.png) | **Admin — tickets**
[](ru/18-admin-tickets.png) | +| **Admin — ticket categories**
[](en/19-admin-ticket-categories.png) | **Admin — ticket categories**
[](ru/19-admin-ticket-categories.png) | +| **Admin — payments**
[](en/20-admin-invoices.png) | **Admin — payments**
[](ru/20-admin-invoices.png) | +| **Admin — promo codes**
[](en/21-admin-promo.png) | **Admin — promo codes**
[](ru/21-admin-promo.png) | +| **Admin — news**
[](en/22-admin-news.png) | **Admin — news**
[](ru/22-admin-news.png) | +| **Admin — site enquiries**
[](en/23-admin-infobox.png) | **Admin — site enquiries**
[](ru/23-admin-infobox.png) | +| **Admin — statistics and charts**
[](en/24-admin-statistics.png) | **Admin — statistics and charts**
[](ru/24-admin-statistics.png) | +| **Admin — system check**
[](en/25-admin-checksys.png) | **Admin — system check**
[](ru/25-admin-checksys.png) | +| **Settings — general**
[](en/26-admin-settings.png) | **Settings — general**
[](ru/26-admin-settings.png) | +| **Settings — payment gateways**
[](en/27-admin-settings-payments.png) | **Settings — payment gateways**
[](ru/27-admin-settings-payments.png) | +| **Settings — the captcha switch**
[](en/28-admin-settings-other-captcha.png) | **Settings — the captcha switch**
[](ru/28-admin-settings-other-captcha.png) | +| **Settings — information and bonuses**
[](en/29-admin-settings-info.png) | **Settings — information and bonuses**
[](ru/29-admin-settings-info.png) | +| **The language switcher in the header**
[](en/30-language-switcher.png) | **The language switcher in the header**
[](ru/30-language-switcher.png) | +| **Admin — balance transactions**
[](en/31-admin-waste.png) | **Admin — balance transactions**
[](ru/31-admin-waste.png) | +| **Admin — web hosting accounts**
[](en/32-admin-webhosting.png) | **Admin — web hosting accounts**
[](ru/32-admin-webhosting.png) | +| **Admin — web locations**
[](en/33-admin-web-locations.png) | **Admin — web locations**
[](ru/33-admin-web-locations.png) | +| **Admin — web hosting plans**
[](en/34-admin-web-plans.png) | **Admin — web hosting plans**
[](ru/34-admin-web-plans.png) | +| **Admin — e-mail templates**
[](en/35-admin-mail-templates.png) | **Admin — e-mail templates**
[](ru/35-admin-mail-templates.png) | + +--- + +**Maintained and developed with [REDL.IO](https://redl.io) — AI-powered hosting.** diff --git a/docs/screenshots/README.ru.md b/docs/screenshots/README.ru.md new file mode 100644 index 0000000..ad412eb --- /dev/null +++ b/docs/screenshots/README.ru.md @@ -0,0 +1,58 @@ +

+ Read in English +

+ +# Скриншоты панели + +Все разделы панели, снятые на живой установке — по одному кадру на раздел, на двух языках. +Слева русский интерфейс, справа тот же экран на английском: язык переключается кнопкой в шапке +и определяется по браузеру автоматически. + +Кадры сняты в разрешении 1600 пикселей по ширине; нажмите на картинку, чтобы открыть её целиком. + +[← вернуться к описанию](../../README.ru.md) + +| Русский | English | +|---|---| +| **Вход в панель**
[](ru/00-login.png) | **Вход в панель**
[](en/00-login.png) | +| **Регистрация — без капчи**
[](ru/00b-register.png) | **Регистрация — без капчи**
[](en/00b-register.png) | +| **Восстановление пароля**
[](ru/00c-password-reset.png) | **Восстановление пароля**
[](en/00c-password-reset.png) | +| **Личный кабинет**
[](ru/01-cabinet.png) | **Личный кабинет**
[](en/01-cabinet.png) | +| **Мои игровые серверы**
[](ru/02-servers.png) | **Мои игровые серверы**
[](en/02-servers.png) | +| **Заказ игрового сервера**
[](ru/03-server-order.png) | **Заказ игрового сервера**
[](en/03-server-order.png) | +| **Новости хостинга**
[](ru/04-news.png) | **Новости хостинга**
[](en/04-news.png) | +| **Статус серверов**
[](ru/05-status.png) | **Статус серверов**
[](en/05-status.png) | +| **Тикеты поддержки**
[](ru/06-tickets.png) | **Тикеты поддержки**
[](en/06-tickets.png) | +| **Создание тикета**
[](ru/07-ticket-create.png) | **Создание тикета**
[](en/07-ticket-create.png) | +| **FAQ — справка для клиентов**
[](ru/08-faq.png) | **FAQ — справка для клиентов**
[](en/08-faq.png) | +| **Веб-хостинг**
[](ru/09-webhosting.png) | **Веб-хостинг**
[](en/09-webhosting.png) | +| **Заказ веб-хостинга**
[](ru/10-webhosting-order.png) | **Заказ веб-хостинга**
[](en/10-webhosting-order.png) | +| **Админка — главная**
[](ru/11-admin-dashboard.png) | **Админка — главная**
[](en/11-admin-dashboard.png) | +| **Админка — пользователи**
[](ru/12-admin-users.png) | **Админка — пользователи**
[](en/12-admin-users.png) | +| **Админка — игровые серверы**
[](ru/13-admin-servers.png) | **Админка — игровые серверы**
[](en/13-admin-servers.png) | +| **Админка — каталог игр**
[](ru/14-admin-games.png) | **Админка — каталог игр**
[](en/14-admin-games.png) | +| **Админка — игровые локации (ноды)**
[](ru/15-admin-locations.png) | **Админка — игровые локации (ноды)**
[](en/15-admin-locations.png) | +| **Админка — моды**
[](ru/16-admin-mods.png) | **Админка — моды**
[](en/16-admin-mods.png) | +| **Админка — репозиторий файлов**
[](ru/17-admin-repo.png) | **Админка — репозиторий файлов**
[](en/17-admin-repo.png) | +| **Админка — тикеты**
[](ru/18-admin-tickets.png) | **Админка — тикеты**
[](en/18-admin-tickets.png) | +| **Админка — категории тикетов**
[](ru/19-admin-ticket-categories.png) | **Админка — категории тикетов**
[](en/19-admin-ticket-categories.png) | +| **Админка — платежи**
[](ru/20-admin-invoices.png) | **Админка — платежи**
[](en/20-admin-invoices.png) | +| **Админка — промокоды**
[](ru/21-admin-promo.png) | **Админка — промокоды**
[](en/21-admin-promo.png) | +| **Админка — новости**
[](ru/22-admin-news.png) | **Админка — новости**
[](en/22-admin-news.png) | +| **Админка — обращения с сайта**
[](ru/23-admin-infobox.png) | **Админка — обращения с сайта**
[](en/23-admin-infobox.png) | +| **Админка — статистика и графики**
[](ru/24-admin-statistics.png) | **Админка — статистика и графики**
[](en/24-admin-statistics.png) | +| **Админка — проверка системы**
[](ru/25-admin-checksys.png) | **Админка — проверка системы**
[](en/25-admin-checksys.png) | +| **Настройки — общие**
[](ru/26-admin-settings.png) | **Настройки — общие**
[](en/26-admin-settings.png) | +| **Настройки — платёжные системы**
[](ru/27-admin-settings-payments.png) | **Настройки — платёжные системы**
[](en/27-admin-settings-payments.png) | +| **Настройки — переключатель капчи**
[](ru/28-admin-settings-other-captcha.png) | **Настройки — переключатель капчи**
[](en/28-admin-settings-other-captcha.png) | +| **Настройки — информация и бонусы**
[](ru/29-admin-settings-info.png) | **Настройки — информация и бонусы**
[](en/29-admin-settings-info.png) | +| **Переключатель языка в шапке**
[](ru/30-language-switcher.png) | **Переключатель языка в шапке**
[](en/30-language-switcher.png) | +| **Админка — операции по балансу**
[](ru/31-admin-waste.png) | **Админка — операции по балансу**
[](en/31-admin-waste.png) | +| **Админка — веб-хостинги**
[](ru/32-admin-webhosting.png) | **Админка — веб-хостинги**
[](en/32-admin-webhosting.png) | +| **Админка — веб-локации**
[](ru/33-admin-web-locations.png) | **Админка — веб-локации**
[](en/33-admin-web-locations.png) | +| **Админка — тарифы веб-хостинга**
[](ru/34-admin-web-plans.png) | **Админка — тарифы веб-хостинга**
[](en/34-admin-web-plans.png) | +| **Админка — шаблоны писем**
[](ru/35-admin-mail-templates.png) | **Админка — шаблоны писем**
[](en/35-admin-mail-templates.png) | + +--- + +**Поддерживается и развивается с помощью [REDL.IO](https://redl.io) — Хостинг с искусственным интеллектом.** diff --git a/docs/screenshots/en/00-login.png b/docs/screenshots/en/00-login.png new file mode 100644 index 0000000..bebe7b9 Binary files /dev/null and b/docs/screenshots/en/00-login.png differ diff --git a/docs/screenshots/en/00b-register.png b/docs/screenshots/en/00b-register.png new file mode 100644 index 0000000..c77eda0 Binary files /dev/null and b/docs/screenshots/en/00b-register.png differ diff --git a/docs/screenshots/en/00c-password-reset.png b/docs/screenshots/en/00c-password-reset.png new file mode 100644 index 0000000..3459942 Binary files /dev/null and b/docs/screenshots/en/00c-password-reset.png differ diff --git a/docs/screenshots/en/01-cabinet.png b/docs/screenshots/en/01-cabinet.png new file mode 100644 index 0000000..9ff36e2 Binary files /dev/null and b/docs/screenshots/en/01-cabinet.png differ diff --git a/docs/screenshots/en/02-servers.png b/docs/screenshots/en/02-servers.png new file mode 100644 index 0000000..98bb3cb Binary files /dev/null and b/docs/screenshots/en/02-servers.png differ diff --git a/docs/screenshots/en/03-server-order.png b/docs/screenshots/en/03-server-order.png new file mode 100644 index 0000000..9ec3142 Binary files /dev/null and b/docs/screenshots/en/03-server-order.png differ diff --git a/docs/screenshots/en/04-news.png b/docs/screenshots/en/04-news.png new file mode 100644 index 0000000..8ca9a90 Binary files /dev/null and b/docs/screenshots/en/04-news.png differ diff --git a/docs/screenshots/en/05-status.png b/docs/screenshots/en/05-status.png new file mode 100644 index 0000000..b0d184b Binary files /dev/null and b/docs/screenshots/en/05-status.png differ diff --git a/docs/screenshots/en/06-tickets.png b/docs/screenshots/en/06-tickets.png new file mode 100644 index 0000000..9eb1898 Binary files /dev/null and b/docs/screenshots/en/06-tickets.png differ diff --git a/docs/screenshots/en/07-ticket-create.png b/docs/screenshots/en/07-ticket-create.png new file mode 100644 index 0000000..1cd7b55 Binary files /dev/null and b/docs/screenshots/en/07-ticket-create.png differ diff --git a/docs/screenshots/en/08-faq.png b/docs/screenshots/en/08-faq.png new file mode 100644 index 0000000..299eaff Binary files /dev/null and b/docs/screenshots/en/08-faq.png differ diff --git a/docs/screenshots/en/09-webhosting.png b/docs/screenshots/en/09-webhosting.png new file mode 100644 index 0000000..26331fd Binary files /dev/null and b/docs/screenshots/en/09-webhosting.png differ diff --git a/docs/screenshots/en/10-webhosting-order.png b/docs/screenshots/en/10-webhosting-order.png new file mode 100644 index 0000000..c0007b4 Binary files /dev/null and b/docs/screenshots/en/10-webhosting-order.png differ diff --git a/docs/screenshots/en/11-admin-dashboard.png b/docs/screenshots/en/11-admin-dashboard.png new file mode 100644 index 0000000..353f30d Binary files /dev/null and b/docs/screenshots/en/11-admin-dashboard.png differ diff --git a/docs/screenshots/en/12-admin-users.png b/docs/screenshots/en/12-admin-users.png new file mode 100644 index 0000000..8434e01 Binary files /dev/null and b/docs/screenshots/en/12-admin-users.png differ diff --git a/docs/screenshots/en/13-admin-servers.png b/docs/screenshots/en/13-admin-servers.png new file mode 100644 index 0000000..42d6910 Binary files /dev/null and b/docs/screenshots/en/13-admin-servers.png differ diff --git a/docs/screenshots/en/14-admin-games.png b/docs/screenshots/en/14-admin-games.png new file mode 100644 index 0000000..05335ab Binary files /dev/null and b/docs/screenshots/en/14-admin-games.png differ diff --git a/docs/screenshots/en/15-admin-locations.png b/docs/screenshots/en/15-admin-locations.png new file mode 100644 index 0000000..1319750 Binary files /dev/null and b/docs/screenshots/en/15-admin-locations.png differ diff --git a/docs/screenshots/en/16-admin-mods.png b/docs/screenshots/en/16-admin-mods.png new file mode 100644 index 0000000..42d5350 Binary files /dev/null and b/docs/screenshots/en/16-admin-mods.png differ diff --git a/docs/screenshots/en/17-admin-repo.png b/docs/screenshots/en/17-admin-repo.png new file mode 100644 index 0000000..78ef802 Binary files /dev/null and b/docs/screenshots/en/17-admin-repo.png differ diff --git a/docs/screenshots/en/18-admin-tickets.png b/docs/screenshots/en/18-admin-tickets.png new file mode 100644 index 0000000..cc8bc5e Binary files /dev/null and b/docs/screenshots/en/18-admin-tickets.png differ diff --git a/docs/screenshots/en/19-admin-ticket-categories.png b/docs/screenshots/en/19-admin-ticket-categories.png new file mode 100644 index 0000000..c58827e Binary files /dev/null and b/docs/screenshots/en/19-admin-ticket-categories.png differ diff --git a/docs/screenshots/en/20-admin-invoices.png b/docs/screenshots/en/20-admin-invoices.png new file mode 100644 index 0000000..3b116fb Binary files /dev/null and b/docs/screenshots/en/20-admin-invoices.png differ diff --git a/docs/screenshots/en/21-admin-promo.png b/docs/screenshots/en/21-admin-promo.png new file mode 100644 index 0000000..13183b4 Binary files /dev/null and b/docs/screenshots/en/21-admin-promo.png differ diff --git a/docs/screenshots/en/22-admin-news.png b/docs/screenshots/en/22-admin-news.png new file mode 100644 index 0000000..1809e52 Binary files /dev/null and b/docs/screenshots/en/22-admin-news.png differ diff --git a/docs/screenshots/en/23-admin-infobox.png b/docs/screenshots/en/23-admin-infobox.png new file mode 100644 index 0000000..b4c25e5 Binary files /dev/null and b/docs/screenshots/en/23-admin-infobox.png differ diff --git a/docs/screenshots/en/24-admin-statistics.png b/docs/screenshots/en/24-admin-statistics.png new file mode 100644 index 0000000..e93a8fd Binary files /dev/null and b/docs/screenshots/en/24-admin-statistics.png differ diff --git a/docs/screenshots/en/25-admin-checksys.png b/docs/screenshots/en/25-admin-checksys.png new file mode 100644 index 0000000..e411847 Binary files /dev/null and b/docs/screenshots/en/25-admin-checksys.png differ diff --git a/docs/screenshots/en/26-admin-settings.png b/docs/screenshots/en/26-admin-settings.png new file mode 100644 index 0000000..4db7e98 Binary files /dev/null and b/docs/screenshots/en/26-admin-settings.png differ diff --git a/docs/screenshots/en/27-admin-settings-payments.png b/docs/screenshots/en/27-admin-settings-payments.png new file mode 100644 index 0000000..0693872 Binary files /dev/null and b/docs/screenshots/en/27-admin-settings-payments.png differ diff --git a/docs/screenshots/en/28-admin-settings-other-captcha.png b/docs/screenshots/en/28-admin-settings-other-captcha.png new file mode 100644 index 0000000..3594741 Binary files /dev/null and b/docs/screenshots/en/28-admin-settings-other-captcha.png differ diff --git a/docs/screenshots/en/29-admin-settings-info.png b/docs/screenshots/en/29-admin-settings-info.png new file mode 100644 index 0000000..6cf5ab7 Binary files /dev/null and b/docs/screenshots/en/29-admin-settings-info.png differ diff --git a/docs/screenshots/en/30-language-switcher.png b/docs/screenshots/en/30-language-switcher.png new file mode 100644 index 0000000..f266e45 Binary files /dev/null and b/docs/screenshots/en/30-language-switcher.png differ diff --git a/docs/screenshots/en/31-admin-waste.png b/docs/screenshots/en/31-admin-waste.png new file mode 100644 index 0000000..2a90009 Binary files /dev/null and b/docs/screenshots/en/31-admin-waste.png differ diff --git a/docs/screenshots/en/32-admin-webhosting.png b/docs/screenshots/en/32-admin-webhosting.png new file mode 100644 index 0000000..d6ebe54 Binary files /dev/null and b/docs/screenshots/en/32-admin-webhosting.png differ diff --git a/docs/screenshots/en/33-admin-web-locations.png b/docs/screenshots/en/33-admin-web-locations.png new file mode 100644 index 0000000..3a2ad16 Binary files /dev/null and b/docs/screenshots/en/33-admin-web-locations.png differ diff --git a/docs/screenshots/en/34-admin-web-plans.png b/docs/screenshots/en/34-admin-web-plans.png new file mode 100644 index 0000000..b775156 Binary files /dev/null and b/docs/screenshots/en/34-admin-web-plans.png differ diff --git a/docs/screenshots/en/35-admin-mail-templates.png b/docs/screenshots/en/35-admin-mail-templates.png new file mode 100644 index 0000000..08c9959 Binary files /dev/null and b/docs/screenshots/en/35-admin-mail-templates.png differ diff --git a/docs/screenshots/ru/00-login.png b/docs/screenshots/ru/00-login.png new file mode 100644 index 0000000..ea12010 Binary files /dev/null and b/docs/screenshots/ru/00-login.png differ diff --git a/docs/screenshots/ru/00b-register.png b/docs/screenshots/ru/00b-register.png new file mode 100644 index 0000000..5725cdd Binary files /dev/null and b/docs/screenshots/ru/00b-register.png differ diff --git a/docs/screenshots/ru/00c-password-reset.png b/docs/screenshots/ru/00c-password-reset.png new file mode 100644 index 0000000..d907332 Binary files /dev/null and b/docs/screenshots/ru/00c-password-reset.png differ diff --git a/docs/screenshots/ru/01-cabinet.png b/docs/screenshots/ru/01-cabinet.png new file mode 100644 index 0000000..a6b8db4 Binary files /dev/null and b/docs/screenshots/ru/01-cabinet.png differ diff --git a/docs/screenshots/ru/02-servers.png b/docs/screenshots/ru/02-servers.png new file mode 100644 index 0000000..fe23303 Binary files /dev/null and b/docs/screenshots/ru/02-servers.png differ diff --git a/docs/screenshots/ru/03-server-order.png b/docs/screenshots/ru/03-server-order.png new file mode 100644 index 0000000..7251a34 Binary files /dev/null and b/docs/screenshots/ru/03-server-order.png differ diff --git a/docs/screenshots/ru/04-news.png b/docs/screenshots/ru/04-news.png new file mode 100644 index 0000000..20c640e Binary files /dev/null and b/docs/screenshots/ru/04-news.png differ diff --git a/docs/screenshots/ru/05-status.png b/docs/screenshots/ru/05-status.png new file mode 100644 index 0000000..6727b47 Binary files /dev/null and b/docs/screenshots/ru/05-status.png differ diff --git a/docs/screenshots/ru/06-tickets.png b/docs/screenshots/ru/06-tickets.png new file mode 100644 index 0000000..e399235 Binary files /dev/null and b/docs/screenshots/ru/06-tickets.png differ diff --git a/docs/screenshots/ru/07-ticket-create.png b/docs/screenshots/ru/07-ticket-create.png new file mode 100644 index 0000000..d029d44 Binary files /dev/null and b/docs/screenshots/ru/07-ticket-create.png differ diff --git a/docs/screenshots/ru/08-faq.png b/docs/screenshots/ru/08-faq.png new file mode 100644 index 0000000..30d36e5 Binary files /dev/null and b/docs/screenshots/ru/08-faq.png differ diff --git a/docs/screenshots/ru/09-webhosting.png b/docs/screenshots/ru/09-webhosting.png new file mode 100644 index 0000000..6e47c04 Binary files /dev/null and b/docs/screenshots/ru/09-webhosting.png differ diff --git a/docs/screenshots/ru/10-webhosting-order.png b/docs/screenshots/ru/10-webhosting-order.png new file mode 100644 index 0000000..1b752e5 Binary files /dev/null and b/docs/screenshots/ru/10-webhosting-order.png differ diff --git a/docs/screenshots/ru/11-admin-dashboard.png b/docs/screenshots/ru/11-admin-dashboard.png new file mode 100644 index 0000000..f3c4d29 Binary files /dev/null and b/docs/screenshots/ru/11-admin-dashboard.png differ diff --git a/docs/screenshots/ru/12-admin-users.png b/docs/screenshots/ru/12-admin-users.png new file mode 100644 index 0000000..1877467 Binary files /dev/null and b/docs/screenshots/ru/12-admin-users.png differ diff --git a/docs/screenshots/ru/13-admin-servers.png b/docs/screenshots/ru/13-admin-servers.png new file mode 100644 index 0000000..1e70451 Binary files /dev/null and b/docs/screenshots/ru/13-admin-servers.png differ diff --git a/docs/screenshots/ru/14-admin-games.png b/docs/screenshots/ru/14-admin-games.png new file mode 100644 index 0000000..968eaae Binary files /dev/null and b/docs/screenshots/ru/14-admin-games.png differ diff --git a/docs/screenshots/ru/15-admin-locations.png b/docs/screenshots/ru/15-admin-locations.png new file mode 100644 index 0000000..8f2f679 Binary files /dev/null and b/docs/screenshots/ru/15-admin-locations.png differ diff --git a/docs/screenshots/ru/16-admin-mods.png b/docs/screenshots/ru/16-admin-mods.png new file mode 100644 index 0000000..1864ffc Binary files /dev/null and b/docs/screenshots/ru/16-admin-mods.png differ diff --git a/docs/screenshots/ru/17-admin-repo.png b/docs/screenshots/ru/17-admin-repo.png new file mode 100644 index 0000000..d8c9239 Binary files /dev/null and b/docs/screenshots/ru/17-admin-repo.png differ diff --git a/docs/screenshots/ru/18-admin-tickets.png b/docs/screenshots/ru/18-admin-tickets.png new file mode 100644 index 0000000..3b81bf8 Binary files /dev/null and b/docs/screenshots/ru/18-admin-tickets.png differ diff --git a/docs/screenshots/ru/19-admin-ticket-categories.png b/docs/screenshots/ru/19-admin-ticket-categories.png new file mode 100644 index 0000000..694592b Binary files /dev/null and b/docs/screenshots/ru/19-admin-ticket-categories.png differ diff --git a/docs/screenshots/ru/20-admin-invoices.png b/docs/screenshots/ru/20-admin-invoices.png new file mode 100644 index 0000000..7d07388 Binary files /dev/null and b/docs/screenshots/ru/20-admin-invoices.png differ diff --git a/docs/screenshots/ru/21-admin-promo.png b/docs/screenshots/ru/21-admin-promo.png new file mode 100644 index 0000000..a17337f Binary files /dev/null and b/docs/screenshots/ru/21-admin-promo.png differ diff --git a/docs/screenshots/ru/22-admin-news.png b/docs/screenshots/ru/22-admin-news.png new file mode 100644 index 0000000..4ba6a17 Binary files /dev/null and b/docs/screenshots/ru/22-admin-news.png differ diff --git a/docs/screenshots/ru/23-admin-infobox.png b/docs/screenshots/ru/23-admin-infobox.png new file mode 100644 index 0000000..def0cb9 Binary files /dev/null and b/docs/screenshots/ru/23-admin-infobox.png differ diff --git a/docs/screenshots/ru/24-admin-statistics.png b/docs/screenshots/ru/24-admin-statistics.png new file mode 100644 index 0000000..931693d Binary files /dev/null and b/docs/screenshots/ru/24-admin-statistics.png differ diff --git a/docs/screenshots/ru/25-admin-checksys.png b/docs/screenshots/ru/25-admin-checksys.png new file mode 100644 index 0000000..45dad44 Binary files /dev/null and b/docs/screenshots/ru/25-admin-checksys.png differ diff --git a/docs/screenshots/ru/26-admin-settings.png b/docs/screenshots/ru/26-admin-settings.png new file mode 100644 index 0000000..c7b70bc Binary files /dev/null and b/docs/screenshots/ru/26-admin-settings.png differ diff --git a/docs/screenshots/ru/27-admin-settings-payments.png b/docs/screenshots/ru/27-admin-settings-payments.png new file mode 100644 index 0000000..24106c3 Binary files /dev/null and b/docs/screenshots/ru/27-admin-settings-payments.png differ diff --git a/docs/screenshots/ru/28-admin-settings-other-captcha.png b/docs/screenshots/ru/28-admin-settings-other-captcha.png new file mode 100644 index 0000000..f2baf3a Binary files /dev/null and b/docs/screenshots/ru/28-admin-settings-other-captcha.png differ diff --git a/docs/screenshots/ru/29-admin-settings-info.png b/docs/screenshots/ru/29-admin-settings-info.png new file mode 100644 index 0000000..c70b6a1 Binary files /dev/null and b/docs/screenshots/ru/29-admin-settings-info.png differ diff --git a/docs/screenshots/ru/30-language-switcher.png b/docs/screenshots/ru/30-language-switcher.png new file mode 100644 index 0000000..d7557d8 Binary files /dev/null and b/docs/screenshots/ru/30-language-switcher.png differ diff --git a/docs/screenshots/ru/31-admin-waste.png b/docs/screenshots/ru/31-admin-waste.png new file mode 100644 index 0000000..91bbbdc Binary files /dev/null and b/docs/screenshots/ru/31-admin-waste.png differ diff --git a/docs/screenshots/ru/32-admin-webhosting.png b/docs/screenshots/ru/32-admin-webhosting.png new file mode 100644 index 0000000..54bf4a0 Binary files /dev/null and b/docs/screenshots/ru/32-admin-webhosting.png differ diff --git a/docs/screenshots/ru/33-admin-web-locations.png b/docs/screenshots/ru/33-admin-web-locations.png new file mode 100644 index 0000000..9ac2075 Binary files /dev/null and b/docs/screenshots/ru/33-admin-web-locations.png differ diff --git a/docs/screenshots/ru/34-admin-web-plans.png b/docs/screenshots/ru/34-admin-web-plans.png new file mode 100644 index 0000000..8af55c5 Binary files /dev/null and b/docs/screenshots/ru/34-admin-web-plans.png differ diff --git a/docs/screenshots/ru/35-admin-mail-templates.png b/docs/screenshots/ru/35-admin-mail-templates.png new file mode 100644 index 0000000..208725a Binary files /dev/null and b/docs/screenshots/ru/35-admin-mail-templates.png differ diff --git a/panel/application/controllers/admin/tickets/view.php b/panel/application/controllers/admin/tickets/view.php index a3f6a22..6786cd3 100644 --- a/panel/application/controllers/admin/tickets/view.php +++ b/panel/application/controllers/admin/tickets/view.php @@ -200,7 +200,7 @@ class viewController extends Controller {
'. $item['user_firstname'] .' '. $item['user_lastname'] .' - '. date("d.m.Y в H:i", strtotime($item['ticket_message_date_add'])) .' + '. date(t("d.m.Y в H:i"), strtotime($item['ticket_message_date_add'])) .'
'. nl2br($item['ticket_message']) .' @@ -215,7 +215,7 @@ class viewController extends Controller {
'. $item['user_firstname'] .' '. $item['user_lastname'] .' - '. date("d.m.Y в H:i", strtotime($item['ticket_message_date_add'])) .' + '. date(t("d.m.Y в H:i"), strtotime($item['ticket_message_date_add'])) .'
'. nl2br($item['ticket_message']) .'
diff --git a/panel/application/controllers/servers/tasks.php b/panel/application/controllers/servers/tasks.php index 9225bae..2651ab1 100644 --- a/panel/application/controllers/servers/tasks.php +++ b/panel/application/controllers/servers/tasks.php @@ -124,7 +124,7 @@ class tasksController extends Controller { } $task = $this->serversModel->getTaskById($this->serversModel->createTask(array("server_id" => $serverid, "task_name" => $task, "task_type" => $type, "task_time" => $time, "task_lead_time" => $lead_time))); - $this->data['task'] = array("task_id" => $task['task_id'], "task_name" => $task['task_name'], "task_type" => $task['task_type'], "task_time" => $task['task_time'], "task_lead_time" => date("d.m.Y в H:i", strtotime($task['task_lead_time']))); + $this->data['task'] = array("task_id" => $task['task_id'], "task_name" => $task['task_name'], "task_type" => $task['task_type'], "task_time" => $task['task_time'], "task_lead_time" => date(t("d.m.Y в H:i"), strtotime($task['task_lead_time']))); $this->data["status"] = "success"; $this->data["success"] = "Задача успешно создана!"; diff --git a/panel/application/controllers/tickets/view.php b/panel/application/controllers/tickets/view.php index fd158d0..8c9feaa 100644 --- a/panel/application/controllers/tickets/view.php +++ b/panel/application/controllers/tickets/view.php @@ -243,7 +243,7 @@ class viewController extends Controller {
'. $item['user_firstname'] .' '. $item['user_lastname'] .' - '. date("d.m.Y в H:i", strtotime($item['ticket_message_date_add'])) .' + '. date(t("d.m.Y в H:i"), strtotime($item['ticket_message_date_add'])) .'
'. nl2br($item['ticket_message']) .' @@ -258,7 +258,7 @@ class viewController extends Controller {
'. $item['user_firstname'] .' '. $item['user_lastname'] .' - '. date("d.m.Y в H:i", strtotime($item['ticket_message_date_add'])) .' + '. date(t("d.m.Y в H:i"), strtotime($item['ticket_message_date_add'])) .'
'. nl2br($item['ticket_message']) .'
diff --git a/panel/application/lang/en.php b/panel/application/lang/en.php index e28e266..2fb24de 100644 --- a/panel/application/lang/en.php +++ b/panel/application/lang/en.php @@ -722,6 +722,679 @@ return array( 'Панель' => 'Panel', 'Вход в аккаунт' => 'Account login', 'Попытка входа в аккаунт' => 'Account login attempt', -'в' => 'at', +// предлог 'в' сюда добавлять НЕЛЬЗЯ: он подменяется внутри ещё не переведённых +// предложений и получается «at поле имя пользователя» вместо русского текста. +// Предлоги переводятся только вместе с фразой, в которой стоят. + +// ── полный обход панели: разделы управления сервером, планировщик, +// консоль, файрвол, MySQL, письма, FAQ и служебные сообщения ────────────── +'Обменял $sum бонусов на $upsum рублей' => 'Exchanged $sum bonuses for $upsum RUB', +'Данный аккаунт не активирован!' => 'This account is not activated!', +'Обратите внимание!' => 'Please note!', +'Рассылка успешно завершенна.' => 'Mailing completed successfully.', +'Вы успешно создали игру!' => 'Game created successfully!', +'Вы успешно отредактировали информацию об игре!' => 'Game information updated successfully!', +'Вы успешно удалили игру!' => 'Game deleted successfully!', +'Запрашиваемая игра не существует!' => 'The requested game does not exist!', +'Укажите допустимый интервал портов.' => 'Specify a valid port range.', +'Укажите допустимый интервал слотов.' => 'Specify a valid slot range.', +'Введите текст ответа!' => 'Enter the reply text!', +'Ответ на ваше сообщение' => 'Reply to your message', +'Сообщение отправлено!' => 'Message sent!', +'Сообщение отправлено, и удалено!' => 'Message sent and deleted!', +'Вы успешно создали локацию!' => 'Location created successfully!', +'Вы успешно отредактировали локацию!' => 'Location updated successfully!', +'Вы успешно удалили локацию!' => 'Location deleted successfully!', +'Запрашиваемая локация не существует!' => 'The requested location does not exist!', +'Вы успешно создали мод!' => 'Mod created successfully!', +'Название мода должно содержать от 2 до 32 символов!' => 'The mod name must be between 2 and 32 characters!', +'Размер файла не должен превышать 90МБ' => 'The file size must not exceed 90 MB', +'Вы успешно отредактировали мод!' => 'Mod updated successfully!', +'Вы успешно удалили мод!' => 'Mod deleted successfully!', +'Вы успешно создали новость!' => 'News item created successfully!', +'Название новости должно содержать от 2 до 100 символов!' => 'The news title must be between 2 and 100 characters!', +'Текст новости должен содержать от 2 до 1000 символов!' => 'The news text must be between 2 and 1000 characters!', +'Вы успешно отредактировали новость!' => 'News item updated successfully!', +'Вы успешно удалили новость!' => 'News item deleted successfully!', +'Текст должен содержать от 2 до 100 символов!' => 'The text must be between 2 and 100 characters!', +'Текст должен содержать от 2 до 1000 символов!' => 'The text must be between 2 and 1000 characters!', +'Введите количество использований от 1 до 10000!' => 'Enter a number of uses between 1 and 10000!', +'Вы успешно создали промо-Код!' => 'Promo code created successfully!', +'Код должен содержать от 2 до 32 символов!' => 'The code must be between 2 and 32 characters!', +'Вы успешно отредактировали промо-код!' => 'Promo code updated successfully!', +'Вы успешно удалили промо-код!' => 'Promo code deleted successfully!', +'Запрашиваемый код не существует!' => 'The requested code does not exist!', +'Вы успешно добавили файл в репозиторий!' => 'File added to the repository successfully!', +'Название файла должно содержать от 2 до 32 символов!' => 'The file name must be between 2 and 32 characters!', +'Вы успешно отредактировали файл в репозитории!' => 'File in the repository updated successfully!', +'Вы успешно удалили файл с репозитория!' => 'File deleted from the repository successfully!', +'Вы успешно заблокировали сервер!' => 'Server blocked successfully!', +'Вы успешно разблокировали сервер!' => 'Server unblocked successfully!', +'Вы успешно удалили сервер!' => 'Server deleted successfully!', +'МБ, запуск сервера невозможен!' => 'MB, the server cannot be started!', +'МБ, перезагрузка сервера невозможна!' => 'MB, the server cannot be restarted!', +'МБ, создание бекапа сервера невозможено!' => 'MB, the server backup cannot be created!', +'Не для данной игры!' => 'Not available for this game!', +'Сервер должен быть заблокирован!' => 'The server must be blocked!', +'Статус FastDL указан неверно!' => 'The FastDL status is invalid!', +'Статус античита VAC указан неверно!' => 'The VAC anti-cheat status is invalid!', +'У сервера нет BackUP!' => 'The server has no backup!', +'Удаление сервера администратором #$serverid' => 'Server deleted by administrator #$serverid', +'Успешное начало восстановление BackUP сервера.' => 'Server backup restore started successfully.', +'Запрашиваемый сервер не существует или у ват нету доступа!' => 'The requested server does not exist or you have no access to it!', +'Настройки сохранены!' => 'Settings saved!', +'Вы успешно создали категорию!' => 'Category created successfully!', +'Вы успешно отредактировали категорию!' => 'Category updated successfully!', +'Вы успешно удалили дополнение!' => 'Add-on deleted successfully!', +'Запрашиваемая категория не существует!' => 'The requested category does not exist!', +'ID клиента должен быть от 1 до 10 символов!' => 'The client ID must be between 1 and 10 characters!', +'Вы успешно отправили сообщение пользователю!' => 'Message sent to the user successfully!', +'Текст тикета должен содержать от 1 до 350 символов!' => 'The ticket text must be between 1 and 350 characters!', +'Запрашиваемый тикет не существует!' => 'The requested ticket does not exist!', +'Изображение загружено!' => 'Image uploaded!', +'Вы успешно удалили пользователя!' => 'User deleted successfully!', +'Укажите допустимый баланс!' => 'Specify a valid balance!', +'Укажите допустимый уровень доступа!' => 'Specify a valid access level!', +' администрацией была проведена раздача бонусных монет, их получили все активированные пользователи! ' => ' the administration handed out bonus coins, and every activated user received them! ', +' администрацией была проведена раздача реальных денег, их получили все активированные пользователи! ' => ' the administration handed out real money, and every activated user received it! ', +'Бонусные монеты выданы!' => 'Bonus coins issued!', +'Выдача бонусных монет всем' => 'Issue bonus coins to everyone', +'Реальные деньги выданы!' => 'Real money issued!', +'Сегодня ' => 'Today ', +'Укажите сумму в допустимом формате!' => 'Specify the amount in a valid format!', +'Укажите сумму от 1 до 5000' => 'Specify an amount between 1 and 5000', +'Вы успешно заблокировали веб-хостинг!' => 'Web hosting blocked successfully!', +'Вы успешно разблокировали веб-хостинг!' => 'Web hosting unblocked successfully!', +'Вы успешно удалили веб-хостинг!' => 'Web hosting deleted successfully!', +'NS Сервера локации должны содержать от 2 до 78 символов!' => 'The location NS servers must be between 2 and 78 characters!', +'Домен должен содержать от 2 до 32 символов!' => 'The domain must be between 2 and 32 characters!', +'Вы успешно создали тариф!' => 'Plan created successfully!', +'Название пакета должно содержать от 2 до 32 символов!' => 'The package name must be between 2 and 32 characters!', +'Название тарифа должно содержать от 2 до 32 символов!' => 'The plan name must be between 2 and 32 characters!', +'Вы успешно отредактировали тариф!' => 'Plan updated successfully!', +'Вы успешно удалили тариф!' => 'Plan deleted successfully!', +'Запрашиваеммый тариф не существует!' => 'The requested plan does not exist!', +'Ваше письмо отправлено! Номер IN' => 'Your message has been sent! Number IN', +' уже привязан!' => ' is already linked!', +'\' Отправлена инструкция с дальнейшими действиями!' => '\' Instructions with the next steps have been sent!', +'E-Mail Сменен!' => 'E-Mail changed!', +'На текущий E-Mail \'' => 'To the current E-Mail \'', +'Указанный ID-' => 'The specified ID-', +' - блокировка не удалась.' => ' - blocking failed.', +' - заблокирован.' => ' - blocked.', +' - неудачная переустановка.' => ' - reinstall failed.', +' - неудачная смена билда.' => ' - build change failed.', +' - неудачная смена ядра.' => ' - core change failed.', +' - неудачная установка.' => ' - installation failed.', +' - неудачное восстановление из бекапа.' => ' - restore from backup failed.', +' - неудачный бекап сервера.' => ' - server backup failed.', +' - отправлено уведомление.' => ' - notification sent.', +' - удален.' => ' - deleted.', +' - удаление не удалось.' => ' - deletion failed.', +' - успешная переустановка.' => ' - reinstalled successfully.', +' - успешная смена билда.' => ' - build changed successfully.', +' - успешная смена ядра.' => ' - core changed successfully.', +' - успешная установка.' => ' - installed successfully.', +' - успешное восстановление из бекапа.' => ' - restored from backup successfully.', +' - успешный бекап сервера.' => ' - server backed up successfully.', +' выполнена!' => ' completed!', +' для сервера #' => ' for server #', +' успешно обновлена (CPU: ' => ' updated successfully (CPU: ', +' успешно сохранена (CPU: ' => ' saved successfully (CPU: ', +' успешно сохранена (CPU: 0%, RAM: 0%, SSD: ' => ' saved successfully (CPU: 0%, RAM: 0%, SSD: ', +'Блокировка веб-хостинга #$webid' => 'Web hosting blocked #$webid', +'Блокировка сервера #$serverid' => 'Server blocked #$serverid', +'Завершение оплаченного периода веб-хостинга #$webid' => 'Paid period of web hosting ended #$webid', +'Завершение оплаченного периода сервера #$serverid' => 'Paid period of server ended #$serverid', +'Игровой сервер gs$item[server_id] - Поднят.' => 'Game server gs$item[server_id] - Started.', +'Остановка сервера: OVERLOAD-ssd = ' => 'Stopping the server: OVERLOAD-ssd = ', +'Остановка сервера: Чрезмерное кол.во игроков на сервере, игроков ' => 'Stopping the server: too many players on the server, players ', +'Ошибка остановки сервера gs$item[server_id]' => 'Failed to stop game server gs$item[server_id]', +'Статистика игрового сервера gs' => 'Game server statistics gs', +'Статистика игровой локации #' => 'Game location statistics #', +'Удаление веб-хостинга #$webid' => 'Web hosting deleted #$webid', +'Удаление сервера #$serverid' => 'Server deleted #$serverid', +'Не соответсвие MD5 хешей' => 'MD5 hash mismatch', +'Ошибка: Не удалось соединиться с сервером базы данных!' => 'Error: could not connect to the database server!', +'Только: check, pay' => 'Only: check, pay', +'Успех' => 'Success', +' р! Запускаем игровой сервер, пожалуйста, подождите...' => ' RUB! Starting the game server, please wait...', +' успешно был установлен,с вашего счёта снято ' => ' was installed successfully, the following amount was taken from your balance: ', +' успешно был установлен. Запускаем игровой сервер, пожалуйста, подождите...' => ' was installed successfully. Starting the game server, please wait...', +'МБ, установка мода невозможна!' => 'MB, the mod cannot be installed!', +'В данном статусе не доступно редактирование конфигурации!' => 'Editing the configuration is not available in this state!', +'Конфигурационный файл отредактирован!' => 'Configuration file saved!', +'[PAY] На счету не достаточно средств для продления сервера!' => '[PAY] Not enough funds on the balance to renew the server!', +'[SLOTS] Не достаточно средств!' => '[SLOTS] Not enough funds!', +'Вы указали неверный модуль!' => 'You specified an invalid module!', +'Вы успешно оплатили сервер на $days дней. С Вашего счета снято ' => 'You have paid for the server for $days days. The following amount was taken from your balance: ', +'Вы успешно установили $slots слотов! С Вашего счета снято ' => 'You have set $slots slots! The following amount was taken from your balance: ', +'МБ, загрузка модулей невозможна!' => 'MB, modules cannot be downloaded!', +'Продление сервера gs$serverid на $days дней' => 'Renewal of server gs$serverid for $days days', +'Увеличено до $slots слотов для сервера gs$serverid' => 'Increased to $slots slots for server gs$serverid', +'Услуга обещанный платеж для сервера gs$serverid' => 'Promised payment service for server gs$serverid', +'Установлен порт $port для сервера gs$serverid' => 'Port $port set for server gs$serverid', +'Введен неверный IP' => 'Invalid IP entered', +'Введены неверные данные после "/"' => 'Invalid data entered after "/"', +'Данное правило уже добавлено!' => 'This rule has already been added!', +'Не больше двух цифр после "/"' => 'No more than two digits after "/"', +'Не введены данные после "/"' => 'No data entered after "/"', +'Заказ сервера gs$serverid' => 'Order of server gs$serverid', +'Заказ тестового сервера gs$serverid' => 'Order of test server gs$serverid', +' р!' => ' RUB!', +' успешно был приобретен, с вашего счёта снято ' => ' was purchased successfully, the following amount was taken from your balance: ', +'Вы успешно оплатили веб-хостинг на $days дней. С Вашего счета снято ' => 'You have paid for web hosting for $days days. The following amount was taken from your balance: ', +'Продление веб-хостинга ws$webid на $days дней' => 'Renewal of web hosting ws$webid for $days days', +'Заказ веб-хостинга ws$webid' => 'Order of web hosting ws$webid', +'Обменять на' => 'Exchange for', +'У вас' => 'You have', +'бонусов' => 'bonuses', +'Службу поддержки' => 'Support team', +'Не оплачен' => 'Not paid', +'Оплачен' => 'Paid', +'ID Пользователя' => 'User ID', +'Не установлен' => 'Not installed', +'Рассылка начата!' => 'Mailing started!', +'Введите максимальное порт для заказа' => 'Enter the maximum port for ordering', +'Выберите query-драйвер игры' => 'Select the game query driver', +'Создание игры' => 'Create a game', +'Введите максимальный порт для заказа' => 'Enter the maximum port for ordering', +'Выберите статус игры' => 'Select the game status', +'Редактирование игры' => 'Edit game', +'На данный момент нет игр.' => 'There are no games at the moment.', +'Тех. поддержка' => 'Support', +'Дата обращения' => 'Request date', +'На данный момент нет запросов.' => 'There are no requests at the moment.', +'Отправитель' => 'Sender', +'Тема' => 'Subject', +'Удалить после отправки' => 'Delete after sending', +'На данный момент нет платежей.' => 'There are no payments at the moment.', +'Создание локации' => 'Create a location', +'Введите ID игр для которых будет доступна локация (через пробел)' => 'Enter the IDs of the games this location will be available for (separated by spaces)', +'Выберите статус локации' => 'Select the location status', +'Редактирование локации' => 'Edit location', +'Введите название мода' => 'Enter the mod name', +'Введите ссылку на изображение' => 'Enter the image link', +'Введите стоимость мода' => 'Enter the mod price', +'Загружено ' => 'Uploaded ', +'Создание мода' => 'Create a mod', +'Введите название архива' => 'Enter the archive name', +'Введите ссылку на архив (tar)' => 'Enter the archive link (tar)', +'Редактирование мода' => 'Edit mod', +'Игра' => 'Game', +'На данный момент нет модов.' => 'There are no mods at the moment.', +'Список модов' => 'Mod list', +'Стоимость' => 'Price', +'Введите заголовок' => 'Enter the title', +'Создание новости' => 'Create a news item', +'Редактирование новости' => 'Edit news item', +'Добавил' => 'Added by', +'На данный момент нет новостей.' => 'There are no news items at the moment.', +'Введите количество использований' => 'Enter the number of uses', +'Введите промо-код' => 'Enter the promo code', +'Создание промо кода' => 'Create a promo code', +'Редактирование промо кода' => 'Edit promo code', +'Использовано' => 'Used', +'На данный момент нет промо кодов.' => 'There are no promo codes at the moment.', +'Скидка' => 'Discount', +'Введите адрес файла' => 'Enter the file address', +'Введите название файла' => 'Enter the file name', +'Введите стоимость файла' => 'Enter the file price', +'Добавление файла в репозиторий' => 'Add a file to the repository', +'Введите ссылку на файд' => 'Enter the file link', +'Редактирование файла в репозитории' => 'Edit a file in the repository', +'На данный момент нет файлов.' => 'There are no files at the moment.', +'Список файлов в репозитории' => 'Files in the repository', +'MySQL Хост' => 'MySQL host', +'Адрес FTP-сервера' => 'FTP server address', +'Античит VAC' => 'VAC anti-cheat', +'Блокировать' => 'Block', +'Введите RCON Пароль' => 'Enter the RCON password', +'Вы уверенны в том, что хотите переустановить сервер? Все данные будут удалены.' => 'Are you sure you want to reinstall the server? All data will be deleted.', +'Вы уверены в том, что хотите восстановить сервер?' => 'Are you sure you want to restore the server?', +'Вы уверены в том, что хотите сделать бэкап сервера? Прежний бэкап будет удален.' => 'Are you sure you want to back up the server? The previous backup will be deleted.', +'Вы уверены в том, что хотите удалить BackUP сервера?' => 'Are you sure you want to delete the server backup?', +'Заблокирован' => 'Blocked', +'Запустить' => 'Start', +'Запущен' => 'Running', +'Карта' => 'Map', +'Обновляется' => 'Updating', +'Остановить' => 'Stop', +'Остановлен' => 'Stopped', +'Пароль доступа' => 'Access password', +'Перезапустить' => 'Restart', +'Переустанавливается' => 'Reinstalling', +'Переустановить' => 'Reinstall', +'Порт FTP-сервера' => 'FTP server port', +'Разблокировать' => 'Unblock', +'Развернуть BackUP' => 'Restore backup', +'Режим' => 'Mode', +'Сделать BackUP' => 'Create backup', +'Создается BackUP' => 'Creating backup', +'Удалить BackUP' => 'Delete backup', +'Удалить сервер' => 'Delete server', +'Устанавливается' => 'Installing', +'Устанавливается BackUP' => 'Restoring backup', +'Перейти' => 'Open', +'Авг.' => 'Aug', +'Август' => 'August', +'Апр.' => 'Apr', +'Вс' => 'Sun', +'Вт' => 'Tue', +'Дек.' => 'Dec', +'Декабрь' => 'December', +'Июнь' => 'June', +'Июнь.' => 'Jun', +'Количевство игроков' => 'Number of players', +'Количевство регистраций' => 'Number of registrations', +'Май' => 'May', +'Март' => 'March', +'Март.' => 'Mar', +'Ноя.' => 'Nov', +'Ноябрь' => 'November', +'Общая нагрузка на железо' => 'Total hardware load', +'Общее количевство игроков' => 'Total number of players', +'Окт.' => 'Oct', +'Пн' => 'Mon', +'Пополнение счета' => 'Balance top-up', +'Прибыль (руб)' => 'Revenue (RUB)', +'Пт' => 'Fri', +'Регистраций' => 'Registrations', +'Сб' => 'Sat', +'Сентябрь' => 'September', +'Ср' => 'Wed', +'Фев.' => 'Feb', +'Февраль' => 'February', +'Чт' => 'Thu', +'Введите название' => 'Enter the name', +'На данный момент нет категорий.' => 'There are no categories at the moment.', +'Введите ID клиента' => 'Enter the client ID', +'Введите тему обращения' => 'Enter the ticket subject', +'Вы уверенны в том, что хотите закрыть запрос?' => 'Are you sure you want to close the ticket?', +'Закрываем запрос...' => 'Closing the ticket...', +'Запрос закрыт' => 'Ticket closed', +'Запрос закрыт...' => 'Ticket closed...', +'Запрос открыт' => 'Ticket open', +'Импорт изображения' => 'Attach an image', +'Напишите сообщение...' => 'Write a message...', +'Получаю сообщения...' => 'Loading messages...', +'Получен ответ' => 'Reply received', +'Тех.поддержка' => 'Support', +'Web сайты пользователя' => 'User websites', +'Администрация' => 'Administration', +'Аккаунт неактивирован' => 'Account not activated', +'Аккаунт подтвержден' => 'Account confirmed', +'Вход в систему' => 'Sign-in', +'Вход через VK' => 'Sign-in via VK', +'Выход из системы' => 'Sign-out', +'Демонстрация' => 'Demo', +'Запросы пользователя' => 'User tickets', +'Логи авторизации' => 'Login log', +'Операции пользователя' => 'User transactions', +'Ошибка входа (пароль' => 'Login error (password', +'Ошибка входа через VK' => 'VK login error', +'Платежи пользователя' => 'User payments', +'Попытка востановленя пароля' => 'Password recovery attempt', +'Разблокирован' => 'Unblocked', +'Сервера пользователя' => 'User servers', +'Тестовый период запрещен' => 'Trial period denied', +'Тестовый период разрешен' => 'Trial period allowed', +'Тех.Поддержка' => 'Support', +'Удалить пользователя' => 'Delete user', +'На данный момент нет пользователей.' => 'There are no users at the moment.', +'Не подтвержден' => 'Not confirmed', +'Изменить пароль доступа' => 'Change the access password', +'Сменить пароль доступа' => 'Change the access password', +'Тариф' => 'Plan', +'Удалить веб-хостинг' => 'Delete web hosting', +'На данный момент нет веб-хостингов.' => 'There is no web hosting at the moment.', +'Введите имя пользователя (можно вводить не только root, но и пользователя с правами администратора)' => 'Enter the username (not only root — any user with administrator rights will do)', +'Создание web-локации' => 'Create a web location', +'Введите ID тарифов для которых будет доступна локация (через пробел)' => 'Enter the IDs of the plans this location will be available for (separated by spaces)', +'Редактирование web-локации' => 'Edit web location', +'Список web-локаций' => 'Web location list', +'Создание тарифа' => 'Create a plan', +'Выберите статус тарифа' => 'Select the plan status', +'Редактирование тарифа' => 'Edit plan', +'На данный момент нет тарифов.' => 'There are no plans at the moment.', +'Список тарифов' => 'Plan list', +'Цена' => 'Price', +'Шаблон' => 'Template', +'Ваш вопрос рассматривают.' => 'Your ticket is being reviewed.', +'Вопрос закрыт.' => 'Ticket closed.', +'Выход с аккаунта -' => 'Sign out of the account -', +'Ответ от администрации.' => 'Reply from the administration.', +'Пользователя' => 'User', +'Тех.поддержки' => 'Support', +' Приглашение от: ' => ' Invitation from: ', +'Вопроос' => 'Ticket', +'Задачи' => 'Tasks', +'Если вы не пытались сменить E-Mail, проигнорируйте данное сообщение и смените пароль от аккаунта!' => 'If you did not try to change your e-mail, ignore this message and change your account password!', +'Здравствуйте,' => 'Hello,', +'Ключ для смены E-Mail:' => 'E-Mail change key:', +'Новый E-Mail:' => 'New E-Mail:', +'Ваш пароль бы успешно сменен!' => 'Your password has been changed successfully!', +'Данные для входа в систему:' => 'Sign-in details:', +'! Мы благодарны Вам за то, что Вы выбрали именно нашу хостинг-компанию!' => '! We are grateful that you chose our hosting company!', +'Благодарим Вас за регистрацию на сайте игрового хостинга' => 'Thank you for registering with the game hosting site', +'Перейти на сайт' => 'Go to the website', +'Активировать учетную запись' => 'Activate account', +'Если вы не пытались сменить пароль, проигнорируйте данное сообщение!' => 'If you did not try to change your password, ignore this message!', +'Запрос на восстановления пароля был выполнен с IP:' => 'A password recovery request was made from IP:', +'У нас есть новость для Вас:' => 'We have some news for you:', +'Вы получили ответ:' => 'You have received a reply:', +'Уведомляем Вас об удалении сервера #' => 'We are notifying you that server # has been deleted', +'. Сервер будет удален через 3 дня после блокировки.' => '. The server will be deleted 3 days after being blocked.', +'Уведомляем Вас о блокировке сервера #' => 'We are notifying you that server # has been blocked', +'. До окончания оплаченного периода осталось' => '. Time left until the end of the paid period:', +'Уведомляем Вас о необходимости оплаты сервера #' => 'We are notifying you that server # needs to be paid for', +'Вами была подана заявка на добавление совладельца сервера, под USERID' => 'You have submitted a request to add a co-owner to the server, under USERID', +'Подтвердить' => 'Confirm', +'на сервер gs' => 'to server gs', +'Уведомляем Вас о том, что в тикете #' => 'We are notifying you that ticket #', +'появилось новое сообщение.' => 'has a new message.', +'Уведомляем Вас об удалении веб-хостинга #' => 'We are notifying you that web hosting # has been deleted', +'. Веб-хостинг будет удален через 3 дня после блокировки.' => '. The web hosting will be deleted 3 days after being blocked.', +'Уведомляем Вас о блокировке веб-хостинга #' => 'We are notifying you that web hosting # has been blocked', +'Уведомляем Вас о необходимости оплаты веб-хостинга #' => 'We are notifying you that web hosting # needs to be paid for', +'Активный' => 'Active', +'Бонусы' => 'Bonuses', +'Ваш E-Mail' => 'Your E-Mail', +'Ваш E-mail' => 'Your E-mail', +'Ваш ID' => 'Your ID', +'Ваша Фамилия' => 'Your last name', +'Ваше Имя' => 'Your first name', +'Введите ваше имя' => 'Enter your first name', +'Введите вашу фамилию' => 'Enter your last name', +'Введите новый E-mail' => 'Enter the new e-mail', +'Всего заработано:' => 'Earned in total:', +'Вы действительно хотите закончить данный сеанс?' => 'Do you really want to end this session?', +'Вы с нами:' => 'With us since:', +'Загрузка аватара' => 'Avatar upload', +'На данный момент у вас нет приглашенных друзей.' => 'You have no invited friends at the moment.', +'Настройки профиля' => 'Profile settings', +'Не привязан' => 'Not linked', +'Новый E-Mail' => 'New E-Mail', +'Операции' => 'Transactions', +'Редактирование профиля VK' => 'VK profile editing', +'Сеансы' => 'Sessions', +'Текущий' => 'Current', +'У вас есть возможность заработать вместе с нами, приглашая друзей.' => 'You can earn together with us by inviting friends.', +'Ваш комментарий...' => 'Your comment...', +'К сожалению, на данный момент нет комментариев.' => 'Unfortunately, there are no comments at the moment.', +'Хочешь оставить свой комментарий?' => 'Want to leave a comment?', +'Комментарии' => 'Comments', +'На данный момент нет коментариев.' => 'There are no comments at the moment.', +'Просмотров.' => 'Views.', +'Вся подробная информация в' => 'All the details are in', +'Хостинг возобновит работу в ближайшие минуты!' => 'The hosting will be back online within a few minutes!', +'") toastr.warning("Идет установка' => '") toastr.warning("Installing', +', пожалуйста, подождите...");' => ', please wait...");', +'Купить за' => 'Buy for', +'Сервер успешно был запущен!' => 'The server has been started successfully!', +'Товар куплен' => 'Item purchased', +'- Включить функцию убийства с одной пули (1 или 0)' => '- Enable one-shot kill (1 or 0)', +'- Выгрузить фильтрскрипт' => '- Unload a filterscript', +'- Забанить IP (Пример: banip 127.0.0.1)' => '- Ban an IP (example: banip 127.0.0.1)', +'- Забанить пользователя по его ID (Пример: ban 3)' => '- Ban a player by ID (example: ban 3)', +'- Загрузить фильтрскрипт' => '- Load a filterscript', +'- Изменить время на сервере (Пример: worldtime 2)' => '- Change the server time (example: worldtime 2)', +'- Изменить гравитацию на сервере - (Пример: gravity 0.008)' => '- Change the server gravity (example: gravity 0.008)', +'- Изменить макс. количество мест на сервере' => '- Change the maximum number of slots on the server', +'- Изменить название карты' => '- Change the map name', +'- Изменить название мода' => '- Change the mod name', +'- Изменить название сервера' => '- Change the server name', +'- Изменить погоду на сервере (Пример: weather 2)' => '- Change the server weather (example: weather 2)', +'- Изменить режим игры на сервере на заданный' => '- Switch the server game mode to the given one', +'- Кикнуть пользователя по его ID (Пример: kick 3)' => '- Kick a player by ID (example: kick 3)', +'- Открыть файл .cfg (Пример: exec blah.cfg)' => '- Open a .cfg file (example: exec blah.cfg)', +'- Очистить лог сервера' => '- Clear the server log', +'- Перезагрузить samp.ban' => '- Reload samp.ban', +'- Перезагрузить фильтрскрипт' => '- Reload a filterscript', +'- Показать всех игроков на сервере с их именами, ip и пингом' => '- Show every player on the server with their name, IP and ping', +'- Показать список RCON команд' => '- Show the list of RCON commands', +'- Посмотреть версию сервера' => '- Show the server version', +'- Посмотреть список всех установленных плагинов' => '- Show the list of installed plugins', +'- Посмотреть список всех установленных фильтрскриптов' => '- Show the list of installed filterscripts', +'- Посмотреть список текущих настроек' => '- Show the current settings', +'- Разбанить IP (Пример: unbanip 127.0.0.1)' => '- Unban an IP (example: unbanip 127.0.0.1)', +'- Рестарт сервера' => '- Restart the server', +'- Сказать в общий чат от лица админа (Пример: say Hello)' => '- Say something in the public chat as an admin (example: say Hello)', +'- Установить LAN (1 или 0)' => '- Set LAN mode (1 or 0)', +'- Установить url сайта на сервере' => '- Set the website URL on the server', +'- Установить пароль на сервере' => '- Set the server password', +'- Установить порядок гэйм-модов' => '- Set the game mode order', +'- Установить часовой пояс' => '- Set the time zone', +'changemode [название]' => 'changemode [name]', +'exec [имя файла]' => 'exec [file name]', +'gamemodetext [название]' => 'gamemodetext [name]', +'hostname [название]' => 'hostname [name]', +'loadfs [название]' => 'loadfs [name]', +'mapname [название]' => 'mapname [name]', +'password [пароль]' => 'password [password]', +'reloadfs [название]' => 'reloadfs [name]', +'say [текст]' => 'say [text]', +'unloadfs [название]' => 'unloadfs [name]', +'worldtime [время]' => 'worldtime [time]', +'Введите команду...' => 'Enter a command...', +'Консоль' => 'Console', +'Очистить консоль' => 'Clear the console', +'Тема Amethyst' => 'Amethyst theme', +'Тема City' => 'City theme', +'Тема Flat' => 'Flat theme', +'Тема Modern' => 'Modern theme', +'Тема Smooth' => 'Smooth theme', +' RUB. Дней: ' => ' RUB. Days: ', +'| Установлено' => '| Installed', +'Введите порт' => 'Enter the port', +'Версия сервера' => 'Server version', +'Вы действительно хотите активировать обещанный платёж на данный сервер ? С вашего счёта будет списано 15 руб!' => 'Do you really want to activate the promised payment for this server? 15 RUB will be taken from your balance!', +'Для данной игры пока нет билдов' => 'There are no builds for this game yet', +'Для данной игры пока нет модулей' => 'There are no modules for this game yet', +'Для данной игры пока нет ядер' => 'There are no cores for this game yet', +'Загрузить на сервер' => 'Upload to the server', +'Загрузка модулей NodeJS' => 'NodeJS module download', +'Изменение слотов' => 'Slot change', +'Модули NodeJS' => 'NodeJS modules', +'Модули загружаются в папку node_modules.' => 'Modules are downloaded into the node_modules folder.', +'Смена билда приводит к полной очистке сервера!' => 'Changing the build wipes the server completely!', +'Смена карты' => 'Map change', +'Смена порта' => 'Port change', +'Смена ядра приводит к полной очистке сервера!' => 'Changing the core wipes the server completely!', +'Услуга обещанный платеж продлит сервер на 3 дня.' => 'The promised payment service extends the server by 3 days.', +'1.1.0.0/16 - Сеть из 65536 адресов (с 1.1.1.1 по 1.1.255.255)' => '1.1.0.0/16 - a network of 65536 addresses (from 1.1.1.1 to 1.1.255.255)', +'1.1.0.0/255.255.0.0 - Сеть из 65536 адресов (с 1.1.1.1 по 1.1.255.255)' => '1.1.0.0/255.255.0.0 - a network of 65536 addresses (from 1.1.1.1 to 1.1.255.255)', +'1.1.1.0/24 - Сеть из 256 адресов (с 1.1.1.1 по 1.1.1.255)' => '1.1.1.0/24 - a network of 256 addresses (from 1.1.1.1 to 1.1.1.255)', +'1.1.1.0/255.255.255.0 - Сеть из 256 адресов (с 1.1.1.1 по 1.1.1.255)' => '1.1.1.0/255.255.255.0 - a network of 256 addresses (from 1.1.1.1 to 1.1.1.255)', +'1.1.1.1 - Одиночный IP адрес' => '1.1.1.1 - a single IP address', +'Firewall - это гарантированная защита Вашего сервера от нежелательных гостей. Он позволяет ограничить доступ определенным лицам по IP-адресу прямо из Панели управления. В отличие от бана в игре, такая блокировка полностью фильтрует весь трафик с данного IP-адреса.' => 'The firewall is guaranteed protection of your server against unwanted guests. It lets you deny access to specific people by IP address straight from the control panel. Unlike an in-game ban, this kind of block filters out all traffic from that IP address.', +'Блокировка ip адресов' => 'IP address blocking', +'Введите IP адрес...' => 'Enter an IP address...', +'Вы уверенны в том, что хотите разблокировать IP адрес?' => 'Are you sure you want to unblock this IP address?', +'Примеры для блокировки IP' => 'IP blocking examples', +'FTP Порт' => 'FTP port', +'Адрес для доступа по протоколу FTP' => 'Address for FTP access', +'Онлайн клиент' => 'Online client', +'Скачать FTP Клиент' => 'Download an FTP client', +'Тема Material' => 'Material theme', +'Тема Material gray' => 'Material gray theme', +'Тема Material light' => 'Material light theme', +'MySQL Порт' => 'MySQL port', +'MySQL Хост для внешнего подключения' => 'MySQL host for external connections', +'MySQL Хост для локального подключения' => 'MySQL host for local connections', +'База данных' => 'Database', +'Включаем базу данных...' => 'Enabling the database...', +'Включить' => 'Enable', +'Выключаем базу данных...' => 'Disabling the database...', +'Выключить' => 'Disable', +'На данный момент база данных не включена.' => 'The database is not enabled at the moment.', +'На данный момент база данных не создана.' => 'The database has not been created yet.', +'Пользователь активен' => 'User is active', +'Пользователь не создан' => 'User has not been created', +'Пользователь неактивен' => 'User is inactive', +'Создаем базу данных...' => 'Creating the database...', +'Создать' => 'Create', +' ядер, RAM: ' => ' cores, RAM: ', +'| Загруженность' => '| Load', +'Бесплатная база MySQL' => 'Free MySQL database', +'Введите количество слотов' => 'Enter the number of slots', +'Выберите игру' => 'Select a game', +'Купон' => 'Coupon', +'На данный момент нет доступных игр' => 'There are no games available at the moment', +'Параметры сервера' => 'Server parameters', +'Повторите пароль для FTP' => 'Repeat the FTP password', +'Придумайте пароль для FTP' => 'Choose an FTP password', +'Смена версии сервера одним кликом' => 'One-click server version change', +'Создать сервер' => 'Create a server', +'Введите ID друга...' => 'Enter a friend\'s ID...', +'Вы действительно хотите удалить друга?' => 'Do you really want to remove this friend?', +'Система совладельцев серверов - это система, позволяющая добавить своего друга в совладельцы. Добавив друга, он также сможет как и вы управлять вашим сервером.' => 'The server co-owner system lets you add a friend as a co-owner. Once added, your friend will be able to manage your server just like you do.', +'Совместное управление' => 'Shared management', +'Файл куплен' => 'File purchased', +'История количевства игроков' => 'Player count history', +'История нагрузки сервера' => 'Server load history', +'История операций с сервером' => 'Server operation history', +'На данный момент история чиста.' => 'The history is empty at the moment.', +'1 Час' => '1 hour', +'1 час' => '1 hour', +'12 Часов' => '12 hours', +'12 часов' => '12 hours', +'15 Минут' => '15 minutes', +'15 минут' => '15 minutes', +'24 Часа' => '24 hours', +'24 часа' => '24 hours', +'30 Минут' => '30 minutes', +'30 минут' => '30 minutes', +'Включение' => 'Start', +'Время выполнения' => 'Execution time', +'Вы действительно хотите удалить задачу ID-' => 'Do you really want to delete task ID-', +'Выключение' => 'Stop', +'Выполнение команд по расписанию' => 'Scheduled command execution', +'На данный момент нет задач.' => 'There are no tasks at the moment.', +'Перезагрузка' => 'Restart', +'Планировщик задач' => 'Task scheduler', +'Система планировщик задач - это система, позволяет автоматически выполнять определенные действия на сервере (запуск, рестарт, выключение и т.д.), с заданным временем или периодичностью.' => 'The task scheduler lets you run certain actions on the server automatically (start, restart, stop and so on) at a set time or interval.', +'Создать задачу' => 'Create a task', +'Список задач' => 'Task list', +'Тип задачи' => 'Task type', +'Данные обновлены в' => 'Data updated at', +'- в поле имя пользователя, введите ваш логин от ftp;' => '- in the user name field, enter your FTP login;', +'- в поле пароль, введите ваш пароль от ftp;' => '- in the password field, enter your FTP password;', +'- в поле хост, введите ip-адрес сервера, с портам (21);' => '- in the host field, enter the server IP address with the port (21);', +'- поле порт указать "21";' => '- set the port field to "21";', +'1. Скачать ftp-клиент, например: FileZilla' => '1. Download an FTP client, for example FileZilla', +'1. Устанавливайте только нужные Вам плагины.' => '1. Install only the plugins you actually need.', +'2. После запуска программы необходимо указать данные от ftp-сервера, их вы получите в управлении вашего игрового сервера, в разделе "FTP Доступ".' => '2. After starting the program you need to enter the FTP server details; you will find them in your game server management area, in the "FTP access" section.', +'2. Слишком большое количество плагинов может вызвать увеличение пинга и лаги.' => '2. Too many plugins can increase ping and cause lag.', +'3. Некоторые сочетания плагинов могут вызвать нестабильную работу сервера.' => '3. Some plugin combinations can make the server unstable.', +'3. После ввода данных, нажмите "Быстрое соединение"' => '3. Once the details are entered, click "Quickconnect"', +'FTP Доступ' => 'FTP access', +'Minecraft PE: Мой сервер не запускается и просит выбрать язык, что делать? (Nukkit)' => 'Minecraft PE: my server does not start and asks me to choose a language, what should I do? (Nukkit)', +'announce - Включает/выключает отображение сервера в Интернете.' => 'announce - turns the server listing on the Internet on or off.', +'bind - Указывает, на каком IP адресе работает сервер. Запрещено изменять на нашем хостинге.' => 'bind - specifies which IP address the server runs on. Changing it is not allowed on our hosting.', +'echo - Все, что стоит после этого параметра - будет выводится в консоль сервера при запуске. Стандартно установлено Executing Server Config...' => 'echo - everything after this parameter is printed to the server console at startup. The default is Executing Server Config...', +'filterscripts (N) - Скрипты' => 'filterscripts (N) - scripts', +'gamemode(n) (N) (t) - Игровой мод' => 'gamemode(n) (N) (t) - game mode', +'hostname - Название вашего сервера.' => 'hostname - the name of your server.', +'incar_rate - Технический параметр.' => 'incar_rate - a technical parameter.', +'lanmode - Указывает где работает сервер, в интернете или в локальной сети, 0 для интернета. Стандартно значение установлено на 0' => 'lanmode - specifies where the server runs, on the Internet or on a local network; 0 means the Internet. The default value is 0', +'mapname (m) - Название карты' => 'mapname (m) - map name', +'maxnpc - Кол-во ботов, которые могут быть использоваться на сервере.' => 'maxnpc - the number of bots that can be used on the server.', +'onfoot_rate - Технический параметр.' => 'onfoot_rate - a technical parameter.', +'password (p) - Пароль сервера' => 'password (p) - the server password', +'plugins (N) - Плагины' => 'plugins (N) - plugins', +'port - Порт сервера.' => 'port - the server port.', +'rcon 0/1 - Включает/выключает возможность использования RCON-консоли.' => 'rcon 0/1 - turns the use of the RCON console on or off.', +'rcon_password - RCON пароль сервера.' => 'rcon_password - the server RCON password.', +'stream_distance - Технический параметр.' => 'stream_distance - a technical parameter.', +'stream_rate - Технический параметр.' => 'stream_rate - a technical parameter.', +'weapon_rate - Технический параметр.' => 'weapon_rate - a technical parameter.', +'weburl - Адрес вашего сайта.' => 'weburl - the address of your website.', +'Бонусы можно получить за пополнение баланса.' => 'Bonuses can be earned by topping up your balance.', +'Быстрое соединение' => 'Quickconnect', +'В обязанности службы технической поддержки хостинга входит решение следующих задач' => 'The hosting technical support team is responsible for the following', +'В правом нижнем углу загрузится структура вашего игрового сервера. Здесь вы можете устанавливать любые плагины и выполнять любые настройки своего игрового сервера.' => 'The structure of your game server will load in the bottom right corner. From there you can install any plugins and apply any settings to your game server.', +'Важно знать и помнить' => 'Important things to know and remember', +'Где rus это язык на котором будет работать сервер.' => 'Here rus is the language the server will run in.', +'Далее укажите в нем такой параметр:' => 'Then set the following parameter in it:', +'Данная ошибка решается переименовыванием сервера английскими буквами.' => 'This error is fixed by renaming the server using Latin letters.', +'Если получилось так, что вам как-то удалось заменить наш стандартный файл конфигурации на свой, где нет строки bind, или просто удалить эту строку из нашего, то для нормальной работы сервера (да и вообще для любой) стоит эту строку вернуть назад. Ваши действия: Скачать на компьютер файл конфигурации server.cfg Открыть файл в любом текстовом редакторе и добавить в самый конец такую строку:' => 'If you somehow managed to replace our default configuration file with your own that has no bind line, or simply deleted that line from ours, you should put the line back for the server to work properly (and for it to work at all). What to do: download the server.cfg configuration file to your computer, open it in any text editor and add the following line at the very end:', +'Закачать файл назад по фтп с заменой старого' => 'Upload the file back over FTP, replacing the old one', +'Информация перед установкой плагинов' => 'Things to know before installing plugins', +'Как заработать бонусы?' => 'How do I earn bonuses?', +'Как подключиться к серверу через ftp?' => 'How do I connect to the server over FTP?', +'Какой будет пинг?' => 'What will the ping be?', +'Купон - это код,который вы вводите при заказе сервера,для получения скидки. (Вводить не обязательно).' => 'A coupon is a code you enter when ordering a server to get a discount. Entering it is optional.', +'Не входит обязанности службы технической поддержки' => 'What the technical support team is not responsible for', +'Не запускается сервер' => 'The server does not start', +'Ошибка UnknownResponse' => 'UnknownResponse error', +'Поддерживаемые языки:' => 'Supported languages:', +'Прежде чем искать решение проблемы и писать нам в тех.поддержку в первую очередь необходимо выяснить, что за ошибка вам попалась. Для этого вам необходимо посмотреть логи сервера и логи запуска сервера. Это файлы server_log.txt и screenlog. Посмотреть вы их можете через ФТП, например. В эти файлы записываются всё, что сервер отдает в командную строку.' => 'Before looking for a solution and writing to our support, you first need to find out which error you ran into. To do that, look at the server logs and the server startup logs — the files server_log.txt and screenlog. You can view them over FTP, for example. Everything the server prints to the command line is written into these files.', +'Проверить пинг и общее качество игрового сервера вы можете на тестовых демо серверах.' => 'You can check the ping and the overall quality of a game server on our demo test servers.', +'Проверьте наличие плагинов .so для вашего сервера в папке plugins, а также прописаны ли они в настройках сервера.' => 'Check that the .so plugins for your server are present in the plugins folder and that they are listed in the server settings.', +'Реагировать на проблемы неработоспособности функций хостинга. Предоставлять необходимую информацию касательно хостинга. Выполнять задачи поставленные клиентом (в случаи если эти задачи невозможно осуществить со стороны клиента, и эти задачи не входят в ряд дополнительных услуг.)' => 'Responding to problems with hosting features not working. Providing the necessary information about the hosting. Carrying out tasks set by the client (if those tasks cannot be done by the client themselves and are not part of the additional services).', +'Ручное добавление bind в файл конфигурации' => 'Adding bind to the configuration file manually', +'Сервер удаляется через 24 часа с момента отключения.' => 'The server is deleted 24 hours after it is switched off.', +'Создайте в корневой директории файл' => 'Create a file in the root directory', +'Сохранить файл' => 'Save the file', +'Статус сервера Unknown' => 'Server status Unknown', +'Устанавливать и настраивать плагины, моды, звуки, и т.д. даже в том случае, если клиент сам не в состоянии их настроить. Делать за клиента операции, которые может сделать клиент сам через FTP или Панель Управления в дальнейшем сокращёно ПУ Проводить обучение по настройке плагинов, по работе с серверами и другими услугами. Оказывать техподдержку лицам, которые не являются клиентами Хостинга. Проводить обучение по работе с серверами и другими услугами. Отвечать на вопросы которые не имеют отношения к сервисам хостинга.' => 'Installing and configuring plugins, mods, sounds and so on, even when the client cannot configure them themselves. Doing things for the client that the client can do themselves over FTP or in the control panel. Providing training on configuring plugins or working with servers and other services. Providing support to people who are not clients of the hosting. Answering questions unrelated to the hosting services.', +'Файл конфигурации server.cfg (SAMP,CRMP,UNITED)' => 'The server.cfg configuration file (SAMP, CRMP, UNITED)', +'Хостинг не отвечает за работоспособность/стабильность Вашего сервера с установленными Вами не стандартных плагинов, карт и других файлов. Мы не несем ответственности за работоспособность сервера при Вашей самостоятельной его настройке, наша задача предоставить Вам выделенный полностью рабочий сервер. Мы не обязаны, исправлять какие либо Ваши ошибки после которых, сервер не запускается или работает нестабильно. Возможно мы сможем помочь Вам в каких-либо вопросах связанных с настройкой, но задавать их нужно во вкладке Тех.Поддержка' => 'The hosting is not responsible for the operability or stability of your server once you install non-standard plugins, maps or other files. We take no responsibility for the server working while you configure it yourself; our job is to provide you with a fully working dedicated server. We are not obliged to fix any of your mistakes that leave the server unable to start or unstable. We may be able to help you with configuration questions, but they should be asked in the Support tab', +'Через сколько удаляется сервер если его не оплачивать?' => 'How long until an unpaid server is deleted?', +'Что такое купон?' => 'What is a coupon?', +'Статус поддержки' => 'Support status', +' руб. Дней: ' => ' RUB. Days: ', +'Выберите тариф' => 'Select a plan', +'Заказать' => 'Order', +'Идет просмотр настроек хостинга. И подготовка к установке.' => 'Reviewing the hosting settings and preparing for installation.', +'На данный момент нет доступных тарифов' => 'There are no plans available at the moment', +'Параметры веб-хостинга' => 'Web hosting parameters', +'
Номер ошибки: ' => '
Error number: ', +'Ошибка: ' => 'Error: ', +'Ошибка: Не удалось соединиться с базой ' => 'Error: could not connect to the database ', +'Genisys v0.15.х (PHP 7.0)' => 'Genisys v0.15.x (PHP 7.0)', +'Genisys_v0.15.х' => 'Genisys_v0.15.x', +'Steam [Чистый сервер]' => 'Steam [clean server]', +'Ошибка: Не указан E-Mail отправителя!' => 'Error: the sender e-mail is not set!', +'Ошибка: Не указан E-Mail получателя!' => 'Error: the recipient e-mail is not set!', +'Ошибка: Не указан текст сообщения!' => 'Error: the message text is not set!', +'Ошибка: Не указана тема сообщения!' => 'Error: the message subject is not set!', +'Ошибка: Не указано имя отправителя!' => 'Error: the sender name is not set!', +'Ошибка: Не удалось загрузить query-драйвер ' => 'Error: could not load the query driver ', +'Ошибка: Не удалось загрузить базовый query-драйвер!' => 'Error: could not load the base query driver!', +'Нет данных' => 'No data', +'Ошибка: Не удалось загрузить библиотеку для работы с sftp!' => 'Error: could not load the sftp library!', +'Ошибка: Не удалось соединиться с сервером!' => 'Error: could not connect to the server!', +'Вы уверенны в том, что хотите заблокировать сервер gs' => 'Are you sure you want to block server gs', +'Вы уверенны в том, что хотите разблокировать сервер gs' => 'Are you sure you want to unblock server gs', +'Вы уверенны в том, что хотите удалить сервер gs' => 'Are you sure you want to delete server gs', +'Вы уверенны в том, что хотите удалить пользователя ID-' => 'Are you sure you want to delete user ID-', +'Вы уверенны в том, что хотите заблокировать веб-хостинг ws' => 'Are you sure you want to block web hosting ws', +'Вы уверенны в том, что хотите разблокировать веб-хостинг ws' => 'Are you sure you want to unblock web hosting ws', +'Вы уверенны в том, что хотите удалить веб-хостинг ws' => 'Are you sure you want to delete web hosting ws', +'Идет установка' => 'Installing', + +// ── форматы даты и последние служебные строки ──────────────────────────────── +'d.m.Y в H:i' => 'd.m.Y H:i', +'dd.MM.yy в HH:mm' => 'dd.MM.yy HH:mm', +'Размер: ' => 'Size: ', +'КБ' => 'KB', +', пожалуйста, подождите...' => ', please wait...', +'Ошибка,' => 'Error,', + +// ── атрибуты (placeholder/tooltip) и абзацы FAQ построчно ──────────────────── +'Описание...' => 'Description...', +'Введите текст новости' => 'Enter the news text', +'Добавить мод' => 'Add a mod', +'Добавить тариф' => 'Add a plan', +'Добавить файл' => 'Add a file', +'Прежде чем искать решение проблемы и писать нам в тех.поддержку в первую очередь необходимо выяснить, что за ошибка вам попалась.' => 'Before looking for a solution and writing to our support, you first need to find out which error you ran into.', +'Для этого вам необходимо посмотреть логи сервера и логи запуска сервера.' => 'To do that you need to look at the server logs and the server startup logs.', +'Это файлы server_log.txt и screenlog. Посмотреть вы их можете через ФТП, например.' => 'These are the files server_log.txt and screenlog. You can view them over FTP, for example.', +'В эти файлы записываются всё, что сервер отдает в командную строку.' => 'Everything the server prints to the command line is written into these files.', +'Если получилось так, что вам как-то удалось заменить наш стандартный файл конфигурации на свой, где нет строки bind, или просто удалить эту строку из нашего, то для нормальной работы сервера (да и вообще для любой) стоит эту строку вернуть назад. Ваши действия:' => 'If you somehow managed to replace our default configuration file with your own that has no bind line, or simply deleted that line from ours, you should put the line back for the server to work properly (and for it to work at all). What to do:', +'Скачать на компьютер файл конфигурации server.cfg' => 'Download the server.cfg configuration file to your computer', +'Открыть файл в любом текстовом редакторе и добавить в самый конец такую строку:' => 'Open the file in any text editor and add the following line at the very end:', ); diff --git a/panel/application/views/account/invoices.php b/panel/application/views/account/invoices.php index ec37487..fe99b35 100644 --- a/panel/application/views/account/invoices.php +++ b/panel/application/views/account/invoices.php @@ -51,7 +51,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt Оплачен - + RUB. diff --git a/panel/application/views/account/waste.php b/panel/application/views/account/waste.php index 97ca95d..f1f837c 100644 --- a/panel/application/views/account/waste.php +++ b/panel/application/views/account/waste.php @@ -1,47 +1,47 @@ - - -
-
-
-
- -
-
-
-

-
- - " style="margin-right: .25rem">- руб - - - " style="margin-right: .25rem">+ руб - -
-
-
-
- -
- - - - -
-
-
+ + +
+
+
+
+ +
+
+
+

+
+ + " style="margin-right: .25rem">- руб + + + " style="margin-right: .25rem">+ руб + +
+
+
+
+ +
+ + + + +
+
+
\ No newline at end of file diff --git a/panel/application/views/admin/invoices/index.php b/panel/application/views/admin/invoices/index.php index 56be120..55ad0a1 100644 --- a/panel/application/views/admin/invoices/index.php +++ b/panel/application/views/admin/invoices/index.php @@ -21,9 +21,9 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
- ">Не оплачен + ">Не оплачен - ">Оплачен + ">Оплачен
diff --git a/panel/application/views/admin/tickets/index.php b/panel/application/views/admin/tickets/index.php index acdea1f..392287c 100644 --- a/panel/application/views/admin/tickets/index.php +++ b/panel/application/views/admin/tickets/index.php @@ -65,7 +65,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt - + diff --git a/panel/application/views/common/admheader.php b/panel/application/views/common/admheader.php index 160a8ce..b04dfc4 100644 --- a/panel/application/views/common/admheader.php +++ b/panel/application/views/common/admheader.php @@ -189,17 +189,17 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt diff --git a/panel/application/views/common/header.php b/panel/application/views/common/header.php index 9d7329b..4ddb8aa 100644 --- a/panel/application/views/common/header.php +++ b/panel/application/views/common/header.php @@ -189,17 +189,17 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt diff --git a/panel/application/views/main/acc.php b/panel/application/views/main/acc.php index 5246dd0..4812040 100644 --- a/panel/application/views/main/acc.php +++ b/panel/application/views/main/acc.php @@ -214,9 +214,9 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt

- ">- руб + ">- руб - ">+ руб + ">+ руб
@@ -245,11 +245,11 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt

()

- ">Ошибка входа (пароль ) + ">Ошибка входа (пароль ) - ">Вход в систему + ">Вход в систему - ">Выход из системы + ">Выход из системы
@@ -266,8 +266,8 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt
ТекущийАктивный
- - + + diff --git a/panel/application/views/main/index.php b/panel/application/views/main/index.php index b2bdb2b..157dfe2 100644 --- a/panel/application/views/main/index.php +++ b/panel/application/views/main/index.php @@ -64,7 +64,7 @@ Developed by Samir Shelenko (https://vk.com/id00v)
- +
diff --git a/panel/application/views/news/index.php b/panel/application/views/news/index.php index 9f0f83d..fd618a8 100644 --- a/panel/application/views/news/index.php +++ b/panel/application/views/news/index.php @@ -42,7 +42,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt - +
diff --git a/panel/application/views/news/view.php b/panel/application/views/news/view.php index 7dc2e02..2d16827 100644 --- a/panel/application/views/news/view.php +++ b/panel/application/views/news/view.php @@ -1,150 +1,150 @@ - - -
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - -
-
- -
-
- - - - - - - - - - -
-
- - - - - - - - - - -
-
-
-
-
-

-
-
-
-
-
-
-
-
- - - -
- Хочешь оставить свой комментарий? -
-
-
- -
- -
-
-
-
- -
-
-
-
- - - -
-
- - -
- -
-
-
- - - - -
-
-
-
-
-
- + + +
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + +
+
+ +
+
+ + + + + + + + + + +
+
+ + + + + + + + + + +
+
+
+
+
+

+
+
+
+
+
+
+
+
+ + + +
+ Хочешь оставить свой комментарий? +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+ + + +
+
+ + +
+ +
+
+
+ + + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/panel/application/views/news/view1.php b/panel/application/views/news/view1.php index a5a7ca6..bc4063d 100644 --- a/panel/application/views/news/view1.php +++ b/panel/application/views/news/view1.php @@ -1,153 +1,153 @@ - - -
-
-
-
-

- - Просмотров. -

-
-
- -
-
-
-
-

- -

-
-
-
-
-
-
-
-

- Оставить комментарий -

-
-
-
-
- -
-
- -
-
-
-
-
-

Комментарии

-
-
-
-
- -
-
-
- -
-
- - -
- -
- - - Пользователь - - - Тех.поддержка - - - Администратор - - -
-
-

-
-
- - -
- На данный момент нет коментариев. -
- -
-
-
-
-
- - + + +
+
+
+
+

+ + Просмотров. +

+
+
+ +
+
+
+
+

+ +

+
+
+
+
+
+
+
+

+ Оставить комментарий +

+
+
+
+
+ +
+
+ +
+
+
+
+
+

Комментарии

+
+
+
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + Пользователь + + + Тех.поддержка + + + Администратор + + +
+
+

+
+
+ + +
+ На данный момент нет коментариев. +
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/panel/application/views/servers/tasks.php b/panel/application/views/servers/tasks.php index a3095e5..0fd45bc 100644 --- a/panel/application/views/servers/tasks.php +++ b/panel/application/views/servers/tasks.php @@ -1,219 +1,219 @@ - - -
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-

Планировщик задач

-
Выполнение команд по расписанию
-
-
-
- -
-
-
-
-
-
-
- - -
-
- - -
-
- - -
- -
-
-
-
-
-
-
-
-
-

Список задач

-
-
-
- -
-
-

- "> - - -

-
- - - - -
-
-
- - - - -
-
-
-
-
-
-
- - - - + + +
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+

Планировщик задач

+
Выполнение команд по расписанию
+
+
+
+ +
+
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+
+
+
+
+
+
+

Список задач

+
+
+
+ +
+
+

+ "> + + +

+
+ + + + +
+
+
+ + + + +
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/panel/application/views/tickets/index.php b/panel/application/views/tickets/index.php index 1e20fed..8182ac9 100644 --- a/panel/application/views/tickets/index.php +++ b/panel/application/views/tickets/index.php @@ -48,7 +48,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt -
+
diff --git a/panel/application/views/tickets/view.php b/panel/application/views/tickets/view.php index 1c81e71..324ae9a 100644 --- a/panel/application/views/tickets/view.php +++ b/panel/application/views/tickets/view.php @@ -44,7 +44,7 @@ Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / htt - + diff --git a/ИЗМЕНЕНИЯ.md b/ИЗМЕНЕНИЯ.md index 0e50d22..5b6b907 100644 --- a/ИЗМЕНЕНИЯ.md +++ b/ИЗМЕНЕНИЯ.md @@ -171,8 +171,30 @@ Node.js берётся из NodeSource **по HTTPS с проверкой клю Замена работает только на границах слов: без этого короткий ключ портил длинные слова («Мод» превращал «Модуль» в «Modуль», «день» делал из «деньги» «dayги»). -Полнота проверена обходом 20 разделов: непереведённых фраз не осталось, мешанины языков нет. -Подробности — в [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md), раздел «Язык интерфейса». +### Полнота перевода + +В словаре **1304 фразы** — это весь текст, который панель показывает человеку: кабинет, заказ +сервера, управление сервером (консоль с описанием всех RCON-команд, FTP, базы MySQL, файрвол, +планировщик задач, автоустановка модов), тикеты, FAQ целиком, вся админка, письма и служебные +сообщения планировщика. + +Покрытие считается не на глаз: скрипт повторяет логику замены прямо на исходниках и показывает +строки, которые останутся русскими. По нему непокрытых мест **четыре**, и все четыре такими и +должны быть: + +* «Русский» — подпись самого переключателя языка; +* `rus => Pyccĸий` и `ukr => Українська` в FAQ — это коды языков игрового сервера, а не интерфейс; +* регулярное выражение проверки имени `/^([А-ЯЁ])([а-яё]{1,15})$/u` — код, а не текст. + +Отдельно поправлены два подводных камня, которые давали мешанину языков: + +* предлог «в» был отдельной записью словаря и подменялся внутри ещё не переведённых предложений — + получалось «at поле имя пользователя». Такие служебные слова переводятся только вместе с фразой; +* формат даты `d.m.Y в H:i` содержит русское «в» между датой и временем. Теперь он проходит через + `t()` (31 вызов `date()` в 20 файлах), и в английском режиме получается `30.07.2026 14:22`. + +Проверено живым обходом 45 страниц в английском режиме, включая формы создания и скрытые вкладки +настроек. Подробности — в [ИНСТРУКЦИЯ.md](ИНСТРУКЦИЯ.md), раздел «Язык интерфейса». --- diff --git a/ИНСТРУКЦИЯ.md b/ИНСТРУКЦИЯ.md index ad2eec7..7161c19 100644 --- a/ИНСТРУКЦИЯ.md +++ b/ИНСТРУКЦИЯ.md @@ -255,9 +255,24 @@ cp panel/application/lang/en.php panel/application/lang/de.php # в panel/engine/main/lang.php ``` -Полноту словаря мы проверяли обходом страниц: все 20 разделов, которые проходим, отдаются без -остатков русского текста. Если увидите непереведённую фразу — допишите её в -`application/lang/en.php`, ключ это русский текст ровно в том виде, в каком он на странице. +**Полнота.** В словаре 1304 фразы — весь текст, который видит человек: кабинет, заказ, управление +сервером (консоль с описанием всех RCON-команд, FTP, MySQL, файрвол, планировщик, автоустановка +модов), тикеты, FAQ целиком, вся админка и шаблоны писем. Покрытие мы не оцениваем на глаз: скрипт +повторяет логику замены на исходниках и показывает, что осталось бы русским, а живой обход 45 +страниц в английском режиме это подтверждает. Русскими намеренно остаются четыре места: подпись +«Русский» у самого переключателя, два кода языков игрового сервера в FAQ +(`rus => Pyccĸий`, `ukr => Українська`) и регулярное выражение проверки имени. + +Если всё же увидите непереведённую фразу — допишите её в `application/lang/en.php`, ключ это русский +текст ровно в том виде, в каком он на странице. Два правила, которые стоит знать: + +* **никогда не добавляйте отдельное служебное слово** (предлог или союз, например `в`). Оно + подменяется внутри ещё не переведённых предложений и даёт мешанину вида «at поле имя + пользователя». Такие слова переводятся только вместе с фразой. +* если во фразе есть PHP-переменная, ключами делайте статические куски вокруг неё — в готовом тексте + на месте переменной подставлено значение, и строка целиком никогда не совпадёт. + +Все разделы на двух языках — в [галерее скриншотов](docs/screenshots/README.ru.md). Перевод включается только когда язык не русский; в русском режиме словарь даже не загружается, поэтому накладных расходов нет.