mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Merge branch 'dev' into rerelease-4.4.1
This commit is contained in:
commit
fcdebbe3e5
14
CHANGELOG.md
14
CHANGELOG.md
@ -1,5 +1,16 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
## --- [4.4.1] - 2024/07/29
|
## --- [4.4.1] - 2024/08/06
|
||||||
|
|
||||||
|
### Patch Fixes
|
||||||
|
- Migrations | Fix orphan backup configurations crashing migration operation ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/785))
|
||||||
|
- Migrations | Fix missing default configuration if no server backup config exists during the migration ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/785))
|
||||||
|
- Migrations | Fix extended runtime on move procedure during migration ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/785))
|
||||||
|
|
||||||
|
**-----------------------------------------------------------------------------**
|
||||||
|
|
||||||
|
**Initial release was reverted for patching (See Merge Request: [!784](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/784))** *2024/07/28*
|
||||||
|
|
||||||
|
**-----------------------------------------------------------------------------**
|
||||||
### Refactor
|
### Refactor
|
||||||
- Backups | Allow multiple backup configurations ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/711))
|
- Backups | Allow multiple backup configurations ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/711))
|
||||||
- UploadAPI | Use Crafty's JWT authentication for file uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/762))
|
- UploadAPI | Use Crafty's JWT authentication for file uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/762))
|
||||||
@ -30,6 +41,7 @@
|
|||||||
- Show natural language name instead of country code in User Config Lang select list ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/773))
|
- Show natural language name instead of country code in User Config Lang select list ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/773))
|
||||||
- Add remaining `he_IL`, `th_TH` translations from **4.4.0** Release ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/761) | [Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/763))
|
- Add remaining `he_IL`, `th_TH` translations from **4.4.0** Release ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/761) | [Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/763))
|
||||||
- Fix `fr_FR` syntax issues ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/780) | [Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/778))
|
- Fix `fr_FR` syntax issues ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/780) | [Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/778))
|
||||||
|
- Add ru_RU Translation ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/779))
|
||||||
- Add `th_TH` translations for [!772](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/772) ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/781))
|
- Add `th_TH` translations for [!772](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/772) ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/781))
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
|
@ -400,6 +400,8 @@ class HelpersManagement:
|
|||||||
if "excluded_dirs" in conf:
|
if "excluded_dirs" in conf:
|
||||||
dirs_to_exclude = ",".join(conf["excluded_dirs"])
|
dirs_to_exclude = ",".join(conf["excluded_dirs"])
|
||||||
conf["excluded_dirs"] = dirs_to_exclude
|
conf["excluded_dirs"] = dirs_to_exclude
|
||||||
|
if len(self.get_backups_by_server(conf["server_id"], True)) <= 0:
|
||||||
|
conf["default"] = True
|
||||||
backup = Backups.create(**conf)
|
backup = Backups.create(**conf)
|
||||||
logger.debug("Creating new backup record.")
|
logger.debug("Creating new backup record.")
|
||||||
return backup.backup_id
|
return backup.backup_id
|
||||||
|
@ -183,8 +183,7 @@ class FileHelpers:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def move_dir(src_path, dest_path):
|
def move_dir(src_path, dest_path):
|
||||||
FileHelpers.copy_dir(src_path, dest_path)
|
shutil.move(src_path, dest_path)
|
||||||
FileHelpers.del_dirs(src_path)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def move_dir_exist(src_path, dest_path):
|
def move_dir_exist(src_path, dest_path):
|
||||||
@ -193,8 +192,7 @@ class FileHelpers:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def move_file(src_path, dest_path):
|
def move_file(src_path, dest_path):
|
||||||
FileHelpers.copy_file(src_path, dest_path)
|
shutil.move(src_path, dest_path)
|
||||||
FileHelpers.del_file(src_path)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def make_archive(path_to_destination, path_to_zip, comment=""):
|
def make_archive(path_to_destination, path_to_zip, comment=""):
|
||||||
|
@ -1373,6 +1373,19 @@ class ServerInstance:
|
|||||||
|
|
||||||
def threaded_jar_update(self):
|
def threaded_jar_update(self):
|
||||||
server_users = PermissionsServers.get_server_user_list(self.server_id)
|
server_users = PermissionsServers.get_server_user_list(self.server_id)
|
||||||
|
# check to make sure a backup config actually exists before starting the update
|
||||||
|
if len(self.management_helper.get_backups_by_server(self.server_id, True)) <= 0:
|
||||||
|
for user in server_users:
|
||||||
|
WebSocketManager().broadcast_user(
|
||||||
|
user,
|
||||||
|
"notification",
|
||||||
|
"Backup config does not exist for "
|
||||||
|
+ self.name
|
||||||
|
+ ". canceling update.",
|
||||||
|
)
|
||||||
|
logger.error(f"Back config does not exist for {self.name}. Update Failed.")
|
||||||
|
self.stats_helper.set_update(False)
|
||||||
|
return
|
||||||
was_started = "-1"
|
was_started = "-1"
|
||||||
# Get default backup configuration
|
# Get default backup configuration
|
||||||
backup_config = HelpersManagement.get_default_server_backup(self.server_id)
|
backup_config = HelpersManagement.get_default_server_backup(self.server_id)
|
||||||
@ -1428,7 +1441,8 @@ class ServerInstance:
|
|||||||
"notification",
|
"notification",
|
||||||
"Backup failed for " + self.name + ". canceling update.",
|
"Backup failed for " + self.name + ". canceling update.",
|
||||||
)
|
)
|
||||||
return False
|
self.stats_helper.set_update(False)
|
||||||
|
return
|
||||||
|
|
||||||
# lets download the files
|
# lets download the files
|
||||||
if HelperServers.get_server_type_by_id(self.server_id) != "minecraft-bedrock":
|
if HelperServers.get_server_type_by_id(self.server_id) != "minecraft-bedrock":
|
||||||
|
@ -58,8 +58,7 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% if len(data['backups']) == 0 %}
|
{% if len(data['backups']) == 0 %}
|
||||||
<div style="text-align: center; color: grey;">
|
<div style="text-align: center; color: grey;">
|
||||||
<h7>{{ translate('serverBackups', 'no-backup', data['lang']) }} <strong>{{
|
<h7>{{ translate('serverBackups', 'no-backup', data['lang']) }}.</h7>
|
||||||
translate('serverBackups', 'newBackup',data['lang']) }}</strong>.</h7>
|
|
||||||
</div>
|
</div>
|
||||||
{% end %}
|
{% end %}
|
||||||
{% if len(data['backups']) > 0 %}
|
{% if len(data['backups']) > 0 %}
|
||||||
|
@ -13,6 +13,13 @@ from app.classes.shared.file_helpers import FileHelpers
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def is_valid_backup(backup, all_servers):
|
||||||
|
try:
|
||||||
|
return str(backup.server_id) in all_servers
|
||||||
|
except (TypeError, peewee.DoesNotExist):
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def migrate(migrator: Migrator, database, **kwargs):
|
def migrate(migrator: Migrator, database, **kwargs):
|
||||||
"""
|
"""
|
||||||
Write your migrations here.
|
Write your migrations here.
|
||||||
@ -150,9 +157,17 @@ def migrate(migrator: Migrator, database, **kwargs):
|
|||||||
migrator.create_table(NewSchedules)
|
migrator.create_table(NewSchedules)
|
||||||
|
|
||||||
migrator.run()
|
migrator.run()
|
||||||
|
all_servers = [
|
||||||
|
row.server_id for row in Servers.select(Servers.server_id).distinct()
|
||||||
|
]
|
||||||
|
all_backups = Backups.select()
|
||||||
|
Console.info("Cleaning up orphan backups for all servers")
|
||||||
|
valid_backups = [
|
||||||
|
backup for backup in all_backups if is_valid_backup(backup, all_servers)
|
||||||
|
]
|
||||||
# Copy data from the existing backups table to the new one
|
# Copy data from the existing backups table to the new one
|
||||||
for backup in Backups.select():
|
for backup in valid_backups:
|
||||||
|
Console.info(f"Trying to get server for backup migration {backup.server_id}")
|
||||||
# Fetch the related server entry from the Servers table
|
# Fetch the related server entry from the Servers table
|
||||||
server = Servers.get(Servers.server_id == backup.server_id)
|
server = Servers.get(Servers.server_id == backup.server_id)
|
||||||
Console.info(f"Migrations: Migrating backup for server {server.server_name}")
|
Console.info(f"Migrations: Migrating backup for server {server.server_name}")
|
||||||
@ -172,15 +187,28 @@ def migrate(migrator: Migrator, database, **kwargs):
|
|||||||
default=True,
|
default=True,
|
||||||
enabled=True,
|
enabled=True,
|
||||||
)
|
)
|
||||||
|
Console.info(
|
||||||
|
f"New backup table created for {server.server_name} with id {new_backup.backup_id}"
|
||||||
|
)
|
||||||
Helpers.ensure_dir_exists(
|
Helpers.ensure_dir_exists(
|
||||||
os.path.join(server.backup_path, new_backup.backup_id)
|
os.path.join(server.backup_path, new_backup.backup_id)
|
||||||
)
|
)
|
||||||
|
try:
|
||||||
|
Console.info(
|
||||||
|
f"Moving old backups to new backup dir for {server.server_name}"
|
||||||
|
)
|
||||||
for file in os.listdir(server.backup_path):
|
for file in os.listdir(server.backup_path):
|
||||||
if not os.path.isdir(os.path.join(os.path.join(server.backup_path, file))):
|
if not os.path.isdir(
|
||||||
|
os.path.join(os.path.join(server.backup_path, file))
|
||||||
|
):
|
||||||
FileHelpers.move_file(
|
FileHelpers.move_file(
|
||||||
os.path.join(server.backup_path, file),
|
os.path.join(server.backup_path, file),
|
||||||
os.path.join(server.backup_path, new_backup.backup_id, file),
|
os.path.join(server.backup_path, new_backup.backup_id, file),
|
||||||
)
|
)
|
||||||
|
except FileNotFoundError as why:
|
||||||
|
logger.error(
|
||||||
|
f"Could not move backup {file} for {server.server_name} to new location with error {why}"
|
||||||
|
)
|
||||||
|
|
||||||
Console.debug("Migrations: Dropping old backup table")
|
Console.debug("Migrations: Dropping old backup table")
|
||||||
# Drop the existing backups table
|
# Drop the existing backups table
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
"lv_LV": "Latviešu",
|
"lv_LV": "Latviešu",
|
||||||
"nl_BE": "nl_BE",
|
"nl_BE": "nl_BE",
|
||||||
"pl_PL": "Polski",
|
"pl_PL": "Polski",
|
||||||
|
"ru_RU": "Русский",
|
||||||
"th_TH": "ไทย",
|
"th_TH": "ไทย",
|
||||||
"tr_TR": "Türkçe",
|
"tr_TR": "Türkçe",
|
||||||
"uk_UA": "Українська",
|
"uk_UA": "Українська",
|
||||||
|
699
app/translations/ru_RU.json
Normal file
699
app/translations/ru_RU.json
Normal file
@ -0,0 +1,699 @@
|
|||||||
|
{
|
||||||
|
"404": {
|
||||||
|
"contact": "Свяжитесь со службой поддержки Crafty Control через Discord",
|
||||||
|
"notFound": "Страница не найдена",
|
||||||
|
"unableToFind": "Нам не удалось найти страницу, которую вы ищете. Пожалуйста, попробуйте еще раз или вернитесь и обновите страницу."
|
||||||
|
},
|
||||||
|
"accessDenied": {
|
||||||
|
"accessDenied": "Доступ запрещен",
|
||||||
|
"contact": "Свяжитесь со службой поддержки Crafty Control через Discord",
|
||||||
|
"contactAdmin": "Обратитесь к администратору вашего сервера за доступом к этому ресурсу или, если вы считаете, что у вас должен быть доступ к этому ресурсу, обратитесь в службу поддержки.",
|
||||||
|
"noAccess": "У вас нет доступа к этому ресурсу"
|
||||||
|
},
|
||||||
|
"apiKeys": {
|
||||||
|
"apiKeys": "API ключи",
|
||||||
|
"auth": "Разрешить? ",
|
||||||
|
"buttons": "Кнопки",
|
||||||
|
"config": "Конфиг",
|
||||||
|
"crafty": "Crafty: ",
|
||||||
|
"createNew": "Создать новый API токен",
|
||||||
|
"created": "Созданный",
|
||||||
|
"deleteKeyConfirmation": "Вы хотите удалить этот API ключ? Это невозможно отменить.",
|
||||||
|
"deleteKeyConfirmationTitle": "Удалить API ключ ${keyId}?",
|
||||||
|
"fullAccess": "Полный доступ",
|
||||||
|
"getToken": "Получить токен",
|
||||||
|
"name": "Имя",
|
||||||
|
"nameDesc": "Как бы вы хотели назвать этот API токен? ",
|
||||||
|
"no": "Нет",
|
||||||
|
"pageTitle": "Редактирование пользовательских ключей API",
|
||||||
|
"permName": "Имя разрешения",
|
||||||
|
"perms": "Разрешения",
|
||||||
|
"server": "Сервер: ",
|
||||||
|
"yes": "Да"
|
||||||
|
},
|
||||||
|
"base": {
|
||||||
|
"doesNotWorkWithoutJavascript": "<strong>Внимание: </strong>Crafty не работает должным образом, если JavaScript не включен!"
|
||||||
|
},
|
||||||
|
"credits": {
|
||||||
|
"developmentTeam": "Команда разработчиков",
|
||||||
|
"hugeDesc": "Большое",
|
||||||
|
"pageDescription": "Без этих людей у вас не было бы Crafty",
|
||||||
|
"pageTitle": "Благодарности",
|
||||||
|
"patreonDesc": "нашим Patreon / Ko-fi подписчикам!",
|
||||||
|
"patreonOther": "Другие",
|
||||||
|
"patreonSupporter": "Patreon / Ko-fi подписчики",
|
||||||
|
"patreonUpdate": "Последнее обновление:",
|
||||||
|
"retiredStaff": "Ветераны",
|
||||||
|
"subscriberName": "Имя",
|
||||||
|
"subscriptionLevel": "Уровень",
|
||||||
|
"supportTeam": "Отдел технической поддержки и документации",
|
||||||
|
"thankYou": "СПАСИБО",
|
||||||
|
"translationDesc": "сообществу, кто переводит! [ В процессе = 🟢 Неактивный/Законченный = ⚪ ]",
|
||||||
|
"translationName": "Имя",
|
||||||
|
"translationTitle": "Перевод",
|
||||||
|
"translator": "Переводчики"
|
||||||
|
},
|
||||||
|
"customLogin": {
|
||||||
|
"apply": "Применить",
|
||||||
|
"backgroundUpload": "Загрузка фона",
|
||||||
|
"customLoginPage": "Настройки страницы входа в систему",
|
||||||
|
"delete": "Удалить",
|
||||||
|
"labelLoginImage": "Выберите фон для входа в систему",
|
||||||
|
"loginBackground": "Фоновое изображение входа в систему",
|
||||||
|
"loginImage": "Загрузите фоновое изображение для экрана входа в систему.",
|
||||||
|
"loginOpacity": "Выберите непрозрачность окна входа в систему",
|
||||||
|
"pageTitle": "Настройки страницы входа в систему",
|
||||||
|
"preview": "Превью",
|
||||||
|
"select": "Выбрать",
|
||||||
|
"selectImage": "Выбрать изображение"
|
||||||
|
},
|
||||||
|
"dashboard": {
|
||||||
|
"actions": "Действия",
|
||||||
|
"allServers": "Все серверы",
|
||||||
|
"avg": "Avg",
|
||||||
|
"backups": "Бэкапы",
|
||||||
|
"bePatientClone": "Пожалуйста, наберитесь терпения, пока мы будем клонировать сервер.<br /> Этот экран обновится через мгновение",
|
||||||
|
"bePatientRestart": "Пожалуйста, наберитесь терпения, пока мы перезапускаем сервер.<br /> Этот экран обновится через мгновение",
|
||||||
|
"bePatientStart": "Пожалуйста, наберитесь терпения, пока мы запускаем сервер.<br /> Этот экран обновится через мгновение",
|
||||||
|
"bePatientStop": "Пожалуйста, наберитесь терпения, пока мы не остановим сервер.<br /> Этот экран обновится через мгновение",
|
||||||
|
"cannotSee": "Не видишь всего?",
|
||||||
|
"cannotSeeOnMobile": "Не видите всего на мобильном телефоне?",
|
||||||
|
"cannotSeeOnMobile2": "Попробуйте прокрутить таблицу в сторону.",
|
||||||
|
"clone": "Клонировать",
|
||||||
|
"cloneConfirm": "Вы уверены, что хотите клонировать этот сервер? Этот процесс может занять некоторое время.",
|
||||||
|
"cpuCores": "Ядра CPU",
|
||||||
|
"cpuCurFreq": "Текущая тактовая частота CPU",
|
||||||
|
"cpuMaxFreq": "Максимальная тактовая частота CPU",
|
||||||
|
"cpuUsage": "Нагрузка CPU",
|
||||||
|
"crashed": "Сбой",
|
||||||
|
"dashboard": "Приборная панель",
|
||||||
|
"delay-explained": "Служба/агент недавно запустилась и задерживает запуск экземпляра сервера minecraft",
|
||||||
|
"host": "Хост",
|
||||||
|
"installing": "Установка...",
|
||||||
|
"kill": "Принудительное завершение процесса",
|
||||||
|
"killing": "Принудительное завершение процесса...",
|
||||||
|
"lastBackup": "Последний:",
|
||||||
|
"max": "Максимально",
|
||||||
|
"memUsage": "Нагрузка памяти",
|
||||||
|
"motd": "MOTD",
|
||||||
|
"newServer": "Создать новый сервер",
|
||||||
|
"nextBackup": "Следующий:",
|
||||||
|
"no-servers": "В настоящее время серверов нет. Чтобы начать, нажмите",
|
||||||
|
"offline": "Оффлайн",
|
||||||
|
"online": "Онлайн",
|
||||||
|
"players": "Игроки",
|
||||||
|
"restart": "Рестарт",
|
||||||
|
"sendingCommand": "Отправляю вашу команду",
|
||||||
|
"server": "Сервер",
|
||||||
|
"servers": "Серверы",
|
||||||
|
"size": "Размер каталога сервера",
|
||||||
|
"start": "Старт",
|
||||||
|
"starting": "Отложенный запуск",
|
||||||
|
"status": "Статус",
|
||||||
|
"stop": "Стоп",
|
||||||
|
"storage": "Диски",
|
||||||
|
"version": "Версия",
|
||||||
|
"welcome": "Добро пожаловать в Crafty Controller"
|
||||||
|
},
|
||||||
|
"datatables": {
|
||||||
|
"i18n": {
|
||||||
|
"aria": {
|
||||||
|
"sortAscending": ": активируйте сортировку столбцов по возрастанию",
|
||||||
|
"sortDescending": ": активируйте сортировку столбцов по убыванию"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"collection": "Коллекция <span class='ui-button-icon-primary ui-icon ui-icon-triangle-1-s'/>",
|
||||||
|
"colvis": "Видимость столбца",
|
||||||
|
"colvisRestore": "Восстановить видимость",
|
||||||
|
"copy": "Копировать",
|
||||||
|
"copyKeys": "Нажмите ctrl или u2318 + C, чтобы скопировать данные таблицы в системный буфер обмена.<br><br>Чтобы отменить, щелкните по этому сообщению или нажмите escape.",
|
||||||
|
"copySuccess": {
|
||||||
|
"1": "Скопирована 1 строка в буфер обмена",
|
||||||
|
"_": "Скопировано %d строк в буфер обмена"
|
||||||
|
},
|
||||||
|
"copyTitle": "Скопировать в буфер обмена",
|
||||||
|
"csv": "CSV",
|
||||||
|
"excel": "Excel",
|
||||||
|
"pageLength": {
|
||||||
|
"-1": "Показать все строки",
|
||||||
|
"1": "Показать 1 строку",
|
||||||
|
"_": "Показать %d строк"
|
||||||
|
},
|
||||||
|
"pdf": "PDF",
|
||||||
|
"print": "Печать"
|
||||||
|
},
|
||||||
|
"decimal": "",
|
||||||
|
"emptyTable": "Данные в таблице отсутствуют",
|
||||||
|
"info": "Отображение от _START_ до _END_ из _TOTAL_ записей",
|
||||||
|
"infoEmpty": "Отображение от 0 до 0 из 0 записей",
|
||||||
|
"infoFiltered": "(отфильтровано по _MAX_ количеству записей)",
|
||||||
|
"infoPostFix": "",
|
||||||
|
"lengthMenu": "Показывать записи _MENU_",
|
||||||
|
"loadingRecords": "Загрузка...",
|
||||||
|
"paginate": {
|
||||||
|
"first": "Первый",
|
||||||
|
"last": "Последний",
|
||||||
|
"next": "Следующий",
|
||||||
|
"previous": "Предыдущий"
|
||||||
|
},
|
||||||
|
"processing": "Обработка...",
|
||||||
|
"search": "Поиск:",
|
||||||
|
"select": {
|
||||||
|
"cells": {
|
||||||
|
"0": "Нажмите на ячейку, чтобы выбрать ее",
|
||||||
|
"1": "%d ячейка выбрана",
|
||||||
|
"_": "%d ячеек выбрано"
|
||||||
|
},
|
||||||
|
"columns": {
|
||||||
|
"0": "Нажмите на столбец, чтобы выбрать его",
|
||||||
|
"1": "%d колонка выбрана",
|
||||||
|
"_": "%d колонок выбрано"
|
||||||
|
},
|
||||||
|
"rows": {
|
||||||
|
"0": "Нажмите на строку, чтобы выбрать ее",
|
||||||
|
"1": "%d строка выбрана",
|
||||||
|
"_": "%d строк выбрано"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"thousands": ",",
|
||||||
|
"zeroRecords": "Совпадающих записей не найдено"
|
||||||
|
},
|
||||||
|
"loadingRecords": "Загрузка..."
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"agree": "Согласиться",
|
||||||
|
"bedrockError": "Загрузка Bedrock недоступна. Пожалуйста, проверьте",
|
||||||
|
"bigBucket1": "Не удалось выполнить проверку работоспособности Big Bucket. Пожалуйста, проверьте",
|
||||||
|
"bigBucket2": "для получения самой актуальной информации.",
|
||||||
|
"cancel": "Отмена",
|
||||||
|
"contact": "Свяжитесь со службой поддержки Crafty Control через Discord",
|
||||||
|
"craftyStatus": "Страница статуса Crafty",
|
||||||
|
"cronFormat": "Обнаружен недопустимый формат Cron",
|
||||||
|
"embarassing": "О боже, ну что ж, это так неловко.",
|
||||||
|
"error": "Ошибка!",
|
||||||
|
"eulaAgree": "Вы согласны?",
|
||||||
|
"eulaMsg": "Вы должны согласиться с",
|
||||||
|
"eulaTitle": "Согласитесь с EULA",
|
||||||
|
"fileError": "Типом файла должно быть изображение.",
|
||||||
|
"fileTooLarge": "Ошибка загрузки. Загружен слишком большой файл. Обратитесь за помощью к системному администратору.",
|
||||||
|
"hereIsTheError": "Вот в чем ошибка",
|
||||||
|
"installerJava": "Не удалось установить {} : Для установки Forge Server требуется Java. Мы обнаружили, что Java не установлена. Пожалуйста, установите java, а затем установите сервер.",
|
||||||
|
"internet": "Мы обнаружили, что компьютер, на котором запущен Crafty, не подключен к интернету. Возможно, подключение клиента к серверу ограничено.",
|
||||||
|
"migration": "Хранилище основного сервера Crafty переносится в новое место. В течение этого времени все запуски серверов были приостановлены. Пожалуйста, подождите, пока мы завершим эту миграцию",
|
||||||
|
"no-file": "Похоже, мы не можем найти запрошенный файл. Дважды проверьте путь. Есть ли у Crafty соответствующие разрешения?",
|
||||||
|
"noInternet": "У Crafty проблемы с доступом в интернет. Создание сервера было отключено. Пожалуйста, проверьте свое интернет-соединение и обновите эту страницу.",
|
||||||
|
"noJava": "Серверу {} не удалось запуститься с кодом ошибки: мы обнаружили, что Java не установлена. Пожалуйста, установите java, затем запустите сервер.",
|
||||||
|
"not-downloaded": "Похоже, мы не можем найти ваш исполняемый файл. Загрузка завершена? Установлены ли права доступа к исполняемому файлу?",
|
||||||
|
"portReminder": "Мы обнаружили, что это первый запуск {}. Убедитесь, что вы перенаправили порт {} через свой маршрутизатор/брандмауэр, чтобы сделать его удаленно доступным из интернета.",
|
||||||
|
"privMsg": "и ",
|
||||||
|
"return": "Вернуться к панели управления",
|
||||||
|
"selfHost": "Если вы самостоятельно размещаете этот репозиторий, пожалуйста, проверьте свой адрес или обратитесь к нашему руководству по устранению неполадок.",
|
||||||
|
"start-error": "Серверу {} не удалось запуститься с кодом ошибки: {}",
|
||||||
|
"superError": "Для выполнения этого действия вы должны быть суперпользователем.",
|
||||||
|
"terribleFailure": "Какая ужасная неудача!"
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"allRightsReserved": "Все права защищены",
|
||||||
|
"copyright": "Авторское право",
|
||||||
|
"version": "Версия"
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"defaultPath": "Введенный вами пароль - это путь к учетным данным по умолчанию, а не пароль. Пожалуйста, найдите пароль по умолчанию в этом месте.",
|
||||||
|
"disabled": "Учетная запись пользователя отключена. Пожалуйста, обратитесь к своему системному администратору за дополнительной информацией.",
|
||||||
|
"forgotPassword": "Забыли пароль",
|
||||||
|
"incorrect": "Неверное имя пользователя или пароль",
|
||||||
|
"login": "Войти",
|
||||||
|
"password": "Пароль",
|
||||||
|
"username": "Имя пользователя",
|
||||||
|
"viewStatus": "Просмотр страницы общедоступного статуса"
|
||||||
|
},
|
||||||
|
"notify": {
|
||||||
|
"activityLog": "Журналы действий",
|
||||||
|
"backupComplete": "Резервное копирование сервера успешно завершено {}",
|
||||||
|
"backupStarted": "Начато резервное копирование для сервера {}",
|
||||||
|
"downloadLogs": "Загружать журналы поддержки?",
|
||||||
|
"finishedPreparing": "Мы закончили подготовку ваших журналов поддержки. Пожалуйста, нажмите загрузить, чтобы загрузить",
|
||||||
|
"logout": "Выход из системы",
|
||||||
|
"preparingLogs": " Пожалуйста, подождите, пока мы подготовим ваши журналы... Мы отправим уведомление, когда они будут готовы. При больших объемах развертывания это может занять некоторое время.",
|
||||||
|
"supportLogs": "Журналы поддержки"
|
||||||
|
},
|
||||||
|
"offline": {
|
||||||
|
"offline": "Оффлайн",
|
||||||
|
"pleaseConnect": "Пожалуйста, подключитесь к интернету, чтобы использовать Crafty."
|
||||||
|
},
|
||||||
|
"panelConfig": {
|
||||||
|
"adminControls": "Административное управление",
|
||||||
|
"allowedServers": "Разрешенные серверы",
|
||||||
|
"apply": "Применить",
|
||||||
|
"assignedRoles": "Назначенные роли",
|
||||||
|
"cancel": "Отменить",
|
||||||
|
"clearComms": "Очистить неисполненные команды",
|
||||||
|
"custom": "Персонализировать Crafty",
|
||||||
|
"delete": "Удалить",
|
||||||
|
"edit": "Редактировать",
|
||||||
|
"enableLang": "Включить все языки",
|
||||||
|
"enabled": "Включено",
|
||||||
|
"globalExplain": "Где Crafty хранит все ваши серверные файлы. (Мы добавим к пути /servers/[uuid of server])",
|
||||||
|
"globalServer": "Глобальный каталог серверов",
|
||||||
|
"json": "Config.json",
|
||||||
|
"match": "Пароли должны совпадать",
|
||||||
|
"newRole": "Добавить новую роль",
|
||||||
|
"newUser": "Добавить нового пользователя",
|
||||||
|
"noMounts": "Не показывать диски на приборной панели",
|
||||||
|
"pageTitle": "Конфигурация панели",
|
||||||
|
"role": "Роль",
|
||||||
|
"roleUsers": "Пользователи роли",
|
||||||
|
"roles": "Роли",
|
||||||
|
"save": "Сохранить",
|
||||||
|
"select": "Выбрать",
|
||||||
|
"superConfirm": "Действуйте только в том случае, если вы хотите, чтобы у этого пользователя был доступ ко ВСЕМУ (ко всем учетным записям пользователей, серверам, настройкам панели и т.д.). Они могут даже лишить вас прав суперпользователя.",
|
||||||
|
"superConfirmTitle": "Включить суперпользователя? Вы уверены?",
|
||||||
|
"title": "Crafty конфигурация",
|
||||||
|
"user": "Пользователь",
|
||||||
|
"users": "Пользователи"
|
||||||
|
},
|
||||||
|
"rolesConfig": {
|
||||||
|
"config": "Конфигурация ролей",
|
||||||
|
"configDesc": "Здесь вы можете изменить конфигурацию вашей роли",
|
||||||
|
"configUpdate": "Последнее обновление: ",
|
||||||
|
"created": "Создан: ",
|
||||||
|
"delRole": "Удалить роль",
|
||||||
|
"doesNotExist": "Вы не можете удалить то, чего еще не существует",
|
||||||
|
"pageTitle": "Изменить роль",
|
||||||
|
"pageTitleNew": "Новая роль",
|
||||||
|
"permAccess": "Доступ?",
|
||||||
|
"permName": "Имя разрешения",
|
||||||
|
"permsServer": "Разрешения, которыми обладает эта роль для этих указанных серверов",
|
||||||
|
"roleConfigArea": "Область конфига роли",
|
||||||
|
"roleDesc": "Как бы вы хотели назвать эту роль?",
|
||||||
|
"roleName": "Имя роли: ",
|
||||||
|
"rolePerms": "Разрешения роли",
|
||||||
|
"roleServers": "Разрешенные серверы",
|
||||||
|
"roleTitle": "Настройки ролей",
|
||||||
|
"roleUserName": "Имя пользователя",
|
||||||
|
"roleUsers": "Пользователи роли: ",
|
||||||
|
"selectManager": "Выберать менеджера для этой роли",
|
||||||
|
"serverAccess": "Доступ?",
|
||||||
|
"serverName": "Имя сервера",
|
||||||
|
"serversDesc": "серверы, доступ к которым разрешен для этой роли"
|
||||||
|
},
|
||||||
|
"serverBackups": {
|
||||||
|
"actions": "Действия",
|
||||||
|
"after": "Запустить команду после создания резервной копии",
|
||||||
|
"backupAtMidnight": "Автоматическое резервное копирование в полночь?",
|
||||||
|
"backupNow": "Сделать резервную копию сейчас!",
|
||||||
|
"backupTask": "Запущена задача резервного копирования.",
|
||||||
|
"backups": "Резервные копии сервера",
|
||||||
|
"before": "Запустить команду перед резервным копированием",
|
||||||
|
"cancel": "Отменить",
|
||||||
|
"clickExclude": "Нажмите, чтобы выбрать исключения",
|
||||||
|
"compress": "Сжатие резервной копии",
|
||||||
|
"confirm": "Подтвердить",
|
||||||
|
"confirmDelete": "Вы хотите удалить эту резервную копию? Это невозможно будет отменить.",
|
||||||
|
"confirmRestore": "Вы уверены, что хотите выполнить восстановление из этой резервной копии? Все текущие файлы сервера перейдут в состояние резервной копии и будут недоступны восстановлению.",
|
||||||
|
"currentBackups": "Текущие резервные копии",
|
||||||
|
"default": "Резервное копирование по умолчанию",
|
||||||
|
"defaultExplain": "Резервная копия, которую Crafty будет использовать перед обновлением. Ее нельзя изменить или удалить.",
|
||||||
|
"delete": "Удалить",
|
||||||
|
"destroyBackup": "Уничтожить резервную копию \" + file_to_del + \"?",
|
||||||
|
"download": "Скачать",
|
||||||
|
"edit": "Изменить",
|
||||||
|
"enabled": "Включено",
|
||||||
|
"excludedBackups": "Исключенные пути: ",
|
||||||
|
"excludedChoose": "Выберите пути, которые вы хотите исключить из своих резервных копий",
|
||||||
|
"exclusionsTitle": "Исключения из резервного копирования",
|
||||||
|
"failed": "Неудача",
|
||||||
|
"maxBackups": "Максимально резервных копий",
|
||||||
|
"maxBackupsDesc": "Crafty не будет хранить более N резервных копий, удаляя самые старые (введите 0, чтобы сохранить все).",
|
||||||
|
"myBackup": "Моя новая резервная копия",
|
||||||
|
"name": "Имя",
|
||||||
|
"newBackup": "Создать новую резервную копию",
|
||||||
|
"no-backup": "Резервных копий нет. Чтобы создать новую конфигурацию резервного копирования, пожалуйста, нажмите - новая резервная копия",
|
||||||
|
"options": "Опции",
|
||||||
|
"path": "Путь",
|
||||||
|
"restore": "Восстановить",
|
||||||
|
"restoring": "Восстановление резервной копии. Это может занять некоторое время. Пожалуйста, наберитесь терпения.",
|
||||||
|
"run": "Запустить резервное копирование",
|
||||||
|
"save": "Сохранить",
|
||||||
|
"shutdown": "Выключить сервер на время резервного копирования",
|
||||||
|
"size": "Размер",
|
||||||
|
"standby": "Ожидание",
|
||||||
|
"status": "Статус",
|
||||||
|
"storage": "Место хранения",
|
||||||
|
"storageLocation": "Место хранения",
|
||||||
|
"storageLocationDesc": "Где вы хотите хранить резервные копии?"
|
||||||
|
},
|
||||||
|
"serverConfig": {
|
||||||
|
"bePatientDelete": "Пожалуйста, наберитесь терпения, пока мы удаляем ваш сервер из панели Crafty. Этот экран закроется через несколько секунд.",
|
||||||
|
"bePatientDeleteFiles": "Пожалуйста, наберитесь терпения, пока мы удаляем ваш сервер из панели Crafty и удаляем все файлы. Этот экран закроется через несколько секунд.",
|
||||||
|
"bePatientUpdate": "Пожалуйста, наберитесь терпения, пока мы обновляем сервер. Время загрузки может варьироваться в зависимости от скорости вашего Интернета.<br /> Этот экран обновится через мгновение",
|
||||||
|
"cancel": "Отмена",
|
||||||
|
"countPlayers": "Включить сервер в общее количество игроков",
|
||||||
|
"crashTime": "Тайм-аут при сбое",
|
||||||
|
"crashTimeDesc": "Как долго нам следует ждать, прежде чем считать ваш сервер аварийным?",
|
||||||
|
"deleteFilesQuestion": "Удалять серверные файлы с компьютера?",
|
||||||
|
"deleteFilesQuestionMessage": "Хотели бы вы, чтобы Crafty удалил все серверные файлы с хост-компьютера? <br><br><strong>Это включает в себя резервное копирование серверов.</strong>",
|
||||||
|
"deleteServer": "Удалить сервер",
|
||||||
|
"deleteServerQuestion": "Удалить сервер?",
|
||||||
|
"deleteServerQuestionMessage": "Вы уверены, что хотите удалить этот сервер? После этого пути назад не будет...",
|
||||||
|
"exeUpdateURL": "URL-адрес обновления исполняемого файла сервера",
|
||||||
|
"exeUpdateURLDesc": "Прямой URL-адрес для загрузки обновлений.",
|
||||||
|
"ignoredExits": "Игнорируемые коды аварийного выхода",
|
||||||
|
"ignoredExitsExplain": "Коды выхода при обнаружении сбоя Crafty следует игнорировать как обычную 'остановку' (через запятую).",
|
||||||
|
"javaNoChange": "Не переопределять",
|
||||||
|
"javaVersion": "Переопределить текущую версию Java",
|
||||||
|
"javaVersionDesc": "Если вы собираетесь переопределить Java, убедитесь, что ваш текущий путь к Java указан в 'Команда выполнения сервера' и заключен в кавычки (по умолчанию 'java')",
|
||||||
|
"noDelete": "Нет, вернуться",
|
||||||
|
"noDeleteFiles": "Нет, просто убрать с панели",
|
||||||
|
"removeOldLogsAfter": "Удалить старые журналы после",
|
||||||
|
"removeOldLogsAfterDesc": "На сколько дней должен устареть файл журнала, чтобы его удалили (0 значит выключено)",
|
||||||
|
"save": "Сохранить",
|
||||||
|
"sendingDelete": "Удалить сервер",
|
||||||
|
"sendingRequest": "Отправка вашего запроса...",
|
||||||
|
"serverAutoStart": "Автоматический запуск сервера",
|
||||||
|
"serverAutostartDelay": "Задержка автозапуска сервера",
|
||||||
|
"serverAutostartDelayDesc": "Задержка перед автоматическим запуском (если включена ниже)",
|
||||||
|
"serverCrashDetection": "Обнаружение сбоя сервера",
|
||||||
|
"serverExecutable": "Исполняемый файл сервера",
|
||||||
|
"serverExecutableDesc": "Это исполняемый файл сервера (ядро)",
|
||||||
|
"serverExecutionCommand": "Команда выполнения сервера",
|
||||||
|
"serverExecutionCommandDesc": "Что будет запущено в скрытом терминале",
|
||||||
|
"serverIP": "IP сервера",
|
||||||
|
"serverIPDesc": "IP, к которому Crafty должен подключиться для получения статистики (попробуйте использовать реальный ip вместо 127.0.0.1, если у вас возникли проблемы)",
|
||||||
|
"serverLogLocation": "Расположение журнала сервера",
|
||||||
|
"serverLogLocationDesc": "Путь к файлу журнала",
|
||||||
|
"serverName": "Имя сервера",
|
||||||
|
"serverNameDesc": "Как вы хотите называть этот сервер",
|
||||||
|
"serverPath": "Рабочий каталог сервера",
|
||||||
|
"serverPathDesc": "Абсолютный полный путь (не включая исполняемый файл)",
|
||||||
|
"serverPort": "Порт сервера",
|
||||||
|
"serverPortDesc": "Порт, к которому Crafty должен подключиться для получения статистики",
|
||||||
|
"serverStopCommand": "Команда остановки сервера",
|
||||||
|
"serverStopCommandDesc": "Команда для отправки программе команды на остановку",
|
||||||
|
"showStatus": "Показывать на странице публичного статуса",
|
||||||
|
"shutdownTimeout": "Тайм-аут выключения",
|
||||||
|
"statsHint1": "Порт, на котором работает ваш сервер, должен быть указан здесь. Именно так Crafty открывает соединение с вашим сервером для получения статистики.",
|
||||||
|
"statsHint2": "Это не изменит порт вашего сервера. Вы все равно должны изменить порт в файле конфигурации вашего сервера.",
|
||||||
|
"stopBeforeDeleting": "Пожалуйста, остановите сервер перед его удалением",
|
||||||
|
"timeoutExplain1": "Как долго Crafty будет ждать завершения работы вашего сервера после выполнения",
|
||||||
|
"timeoutExplain2": "выполните команду до того, как она остановит процесс.",
|
||||||
|
"update": "Исполняемый файл обновления",
|
||||||
|
"yesDelete": "Да, удалить",
|
||||||
|
"yesDeleteFiles": "Да, удалить файлы"
|
||||||
|
},
|
||||||
|
"serverConfigHelp": {
|
||||||
|
"desc": "Здесь вы можете изменить конфигурацию вашего сервера",
|
||||||
|
"perms": [
|
||||||
|
"Рекомендуется <code>НЕ</code> изменять пути к серверу, управляемому Crafty.",
|
||||||
|
"Изменение путей <code>МОЖЕТ</code> нарушить работу, особенно в операционных системах типа Linux, где права доступа к файлам более ограничены.",
|
||||||
|
"<br /><br/>",
|
||||||
|
"Если вы чувствуете, что вам необходимо изменить местоположение сервера, вы можете сделать это при условии, что предоставите соответствующее разрешение \"crafty\" разрешение пользователя на чтение/запись пути к серверу.",
|
||||||
|
"<br />",
|
||||||
|
"<br />",
|
||||||
|
"В Linux это лучше всего сделать, выполнив следующие действия:<br />",
|
||||||
|
"<code>",
|
||||||
|
" sudo chown crafty:crafty /путь/до/вашего/сервера -R<br />",
|
||||||
|
" sudo chmod 2775 /путь/до/вашего/сервера -R<br />",
|
||||||
|
"</code>"
|
||||||
|
],
|
||||||
|
"title": "Область настройки сервера"
|
||||||
|
},
|
||||||
|
"serverDetails": {
|
||||||
|
"backup": "Резервная копия",
|
||||||
|
"config": "Конфиг",
|
||||||
|
"files": "Файлы",
|
||||||
|
"filter": "Фильтровать логи",
|
||||||
|
"filterList": "Отфильтрованные слова",
|
||||||
|
"logs": "Логи",
|
||||||
|
"metrics": "Показатели",
|
||||||
|
"playerControls": "Управление игроками",
|
||||||
|
"reset": "Сброс прокрутки",
|
||||||
|
"schedule": "График",
|
||||||
|
"serverDetails": "Сведения о сервере",
|
||||||
|
"terminal": "Терминал"
|
||||||
|
},
|
||||||
|
"serverFiles": {
|
||||||
|
"clickUpload": "Нажмите здесь, чтобы выбрать нужные файлы",
|
||||||
|
"close": "Закрыть",
|
||||||
|
"createDir": "Создать каталог",
|
||||||
|
"createDirQuestion": "Какое имя вы хотите задать для нового каталога?",
|
||||||
|
"createFile": "Создать файл",
|
||||||
|
"createFileQuestion": "Какое имя вы хотите задать для нового файла?",
|
||||||
|
"default": "По умолчанию",
|
||||||
|
"delete": "Удалить",
|
||||||
|
"deleteItemQuestion": "Вы уверены, что хотите удалить \" + name + \"?",
|
||||||
|
"deleteItemQuestionMessage": "Вы удаляете \\\"\" + path + \"\\\"!<br/><br/>Это действие будет необратимым, и это будет потеряно навсегда!",
|
||||||
|
"download": "Загрузить",
|
||||||
|
"editingFile": "Изменить файл",
|
||||||
|
"error": "Ошибка при получении файлов",
|
||||||
|
"fileReadError": "Ошибка чтения файла",
|
||||||
|
"files": "Файлы",
|
||||||
|
"keybindings": "Сочетания клавиш",
|
||||||
|
"loadingRecords": "Загрузка файлов...",
|
||||||
|
"noDelete": "Нет",
|
||||||
|
"noscript": "Файловый менеджер не работает без JavaScript",
|
||||||
|
"rename": "Переименовать",
|
||||||
|
"renameItemQuestion": "Каким должно быть новое имя?",
|
||||||
|
"save": "Сохранить",
|
||||||
|
"size": "Переключение размера редактора",
|
||||||
|
"stayHere": "НЕ ПОКИДАЙТЕ ЭТУ СТРАНИЦУ!",
|
||||||
|
"unsupportedLanguage": "Предупреждение: Этот тип файлов не поддерживается",
|
||||||
|
"unzip": "Распаковать",
|
||||||
|
"upload": "Загрузить",
|
||||||
|
"uploadTitle": "Загрузить файлы в: ",
|
||||||
|
"waitUpload": "Пожалуйста, подождите, пока мы загрузим ваши файлы... Это может занять некоторое время.",
|
||||||
|
"yesDelete": "Да, я понимаю последствия"
|
||||||
|
},
|
||||||
|
"serverMetrics": {
|
||||||
|
"resetZoom": "Сброс масштаба",
|
||||||
|
"zoomHint1": "Чтобы увеличить масштаб графика, удерживайте клавишу shift, а затем используйте колесико прокрутки.",
|
||||||
|
"zoomHint2": "В качестве альтернативы удерживайте клавишу shift, затем щелкните и перетащите область, которую вы хотите увеличить."
|
||||||
|
},
|
||||||
|
"serverPlayerManagement": {
|
||||||
|
"bannedPlayers": "Забаненные игроки",
|
||||||
|
"loadingBannedPlayers": "Загрузка забаненных игроков",
|
||||||
|
"players": "Игроки"
|
||||||
|
},
|
||||||
|
"serverScheduleConfig": {
|
||||||
|
"backup": "Резервная копия сервера",
|
||||||
|
"basic": "Основной",
|
||||||
|
"children": "Связанные дочерние задачи: ",
|
||||||
|
"command": "Команда",
|
||||||
|
"command-explain": "Какую команду вы хотите, чтобы мы выполнили? Не включайте команду '/'",
|
||||||
|
"cron": "Cron",
|
||||||
|
"cron-explain": "Введите свою строку cron -- ПРИМЕЧАНИЕ: 0 = понедельник в последнем варианте.",
|
||||||
|
"custom": "Пользовательская команда",
|
||||||
|
"days": "Дни",
|
||||||
|
"enabled": "Включено",
|
||||||
|
"hours": "Часы",
|
||||||
|
"interval": "Интервал",
|
||||||
|
"interval-explain": "Как часто вы хотите, чтобы это расписание выполнялось?",
|
||||||
|
"minutes": "Минуты",
|
||||||
|
"offset": "Смещение задержки",
|
||||||
|
"offset-explain": "Как долго мы должны ждать, чтобы запустить это после запуска первого задания? (Секунды)",
|
||||||
|
"one-time": "Удалить после выполнения",
|
||||||
|
"parent": "Выберите родительское расписание",
|
||||||
|
"parent-explain": "По какому расписанию это должно произойти?",
|
||||||
|
"reaction": "Реакция",
|
||||||
|
"restart": "Перезапустить сервер",
|
||||||
|
"select": "Основной / Cron / Реакция",
|
||||||
|
"start": "Запустить сервер",
|
||||||
|
"stop": "Остановить сервер",
|
||||||
|
"time": "Время",
|
||||||
|
"time-explain": "На какое время вы хотите, чтобы ваше расписание было составлено?"
|
||||||
|
},
|
||||||
|
"serverSchedules": {
|
||||||
|
"action": "Действие",
|
||||||
|
"actionId": "Выберите дочернее действие",
|
||||||
|
"areYouSure": "Удалить запланированную задачу?",
|
||||||
|
"cancel": "Отмена",
|
||||||
|
"cannotSee": "Не видишь всего?",
|
||||||
|
"cannotSeeOnMobile": "Попробуйте нажать на запланированную задачу, чтобы получить более подробную информацию.",
|
||||||
|
"child": "Дочерний элемент расписания с ID ",
|
||||||
|
"close": "Закрыть",
|
||||||
|
"command": "Команда",
|
||||||
|
"confirm": "Подтверждаю",
|
||||||
|
"confirmDelete": "Вы хотите удалить это запланированное задание? Это невозможно будет отменить.",
|
||||||
|
"create": "Создать новое расписание",
|
||||||
|
"cron": "Cron строка",
|
||||||
|
"delete": "Удалить",
|
||||||
|
"details": "Подробная информация о расписании",
|
||||||
|
"edit": "Редактировать",
|
||||||
|
"enabled": "Включено",
|
||||||
|
"every": "Каждый",
|
||||||
|
"interval": "Интервал",
|
||||||
|
"name": "Имя",
|
||||||
|
"newSchedule": "Новое расписание",
|
||||||
|
"nextRun": "Следующий запуск",
|
||||||
|
"no": "Нет",
|
||||||
|
"no-schedule": "В настоящее время для этого сервера нет расписаний. Чтобы начать, нажмите",
|
||||||
|
"scheduledTasks": "Запланированные задачи",
|
||||||
|
"yes": "Да"
|
||||||
|
},
|
||||||
|
"serverStats": {
|
||||||
|
"cpuUsage": "Нагрузка CPU",
|
||||||
|
"description": "Описание",
|
||||||
|
"errorCalculatingUptime": "Ошибка при расчете времени безотказной работы",
|
||||||
|
"loadingMotd": "Загрузка MOTD",
|
||||||
|
"memUsage": "Нагрузка памяти",
|
||||||
|
"offline": "Оффлайн",
|
||||||
|
"online": "Онлайн",
|
||||||
|
"players": "Игроки",
|
||||||
|
"serverStarted": "Сервер запущен",
|
||||||
|
"serverStatus": "Состояние сервера",
|
||||||
|
"serverTime": "UTC время",
|
||||||
|
"serverTimeZone": "Часовой пояс сервера",
|
||||||
|
"serverUptime": "Время безотказной работы сервера",
|
||||||
|
"starting": "Отложенный запуск",
|
||||||
|
"unableToConnect": "Не удается подключиться",
|
||||||
|
"version": "Версия"
|
||||||
|
},
|
||||||
|
"serverTerm": {
|
||||||
|
"commandInput": "Введите свою команду",
|
||||||
|
"delay-explained": "Служба/агент недавно запустилась и задерживает запуск экземпляра сервера minecraft",
|
||||||
|
"importing": "Импорт...",
|
||||||
|
"installing": "Установка...",
|
||||||
|
"restart": "Перезапуск",
|
||||||
|
"sendCommand": "Отправить команду",
|
||||||
|
"start": "Запустить",
|
||||||
|
"starting": "Отложенный запуск",
|
||||||
|
"stop": "Остановить",
|
||||||
|
"stopScroll": "Остановить автоматическую прокрутку",
|
||||||
|
"updating": "Обновление..."
|
||||||
|
},
|
||||||
|
"serverWizard": {
|
||||||
|
"absoluteServerPath": "Абсолютный путь к вашему серверу",
|
||||||
|
"absoluteZipPath": "Абсолютный путь к вашему серверу",
|
||||||
|
"addRole": "Добавление сервера к существующей роли(-ям)",
|
||||||
|
"autoCreate": "Если ничего не выбрать, Crafty создаст и назначит роль сам!",
|
||||||
|
"bePatient": "Пожалуйста, будьте терпеливы, пока мы ' + (importing ? 'импортируем' : 'загружаем') + ' сервер",
|
||||||
|
"buildServer": "Создать сервер!",
|
||||||
|
"clickRoot": "Нажмите здесь, чтобы выбрать корневой каталог",
|
||||||
|
"close": "Закрыть",
|
||||||
|
"defaultPort": "25565 по умолчанию",
|
||||||
|
"downloading": "Загрузка сервера...",
|
||||||
|
"explainRoot": "Пожалуйста, нажмите на кнопку ниже, чтобы выбрать корневой каталог вашего сервера внутри архива",
|
||||||
|
"importServer": "Импорт существующего сервера",
|
||||||
|
"importServerButton": "Импортировать сервер!",
|
||||||
|
"importZip": "Импорт из Zip-файла",
|
||||||
|
"importing": "Импорт сервера...",
|
||||||
|
"labelZipFile": "Выберите свой Zip-файл",
|
||||||
|
"maxMem": "Максимальный объем памяти",
|
||||||
|
"minMem": "Минимальный объем памяти",
|
||||||
|
"myNewServer": "Мой новый сервер",
|
||||||
|
"newServer": "Создать новый сервер",
|
||||||
|
"noRole": "Не найдена роль с текущим параметром поиска",
|
||||||
|
"noneRoles": "Роли не выбраны",
|
||||||
|
"quickSettings": "Быстрые настройки",
|
||||||
|
"quickSettingsDescription": "Не волнуйтесь, вы можете изменить это позже",
|
||||||
|
"resetForm": "Сбросить форму",
|
||||||
|
"save": "Сохранить",
|
||||||
|
"selectRole": "Выберите роль(-и)",
|
||||||
|
"selectRoot": "Выберите корневой каталог архива",
|
||||||
|
"selectServer": "Выбрать сервер",
|
||||||
|
"selectType": "Тип сервера (Vanilla, Servers, Modded и т.д.)",
|
||||||
|
"selectVersion": "Выбрать версию",
|
||||||
|
"selectZipDir": "Выберите каталог в архиве, из которого вы хотите, чтобы мы распаковали файлы",
|
||||||
|
"serverJar": "Исполняемый файл сервера",
|
||||||
|
"serverName": "Имя сервера",
|
||||||
|
"serverPath": "Путь к серверу",
|
||||||
|
"serverPort": "Порт сервера",
|
||||||
|
"serverSelect": "Выбрать сервер",
|
||||||
|
"serverType": "Тип сервера",
|
||||||
|
"serverUpload": "Загрузить архивированный сервер",
|
||||||
|
"serverVersion": "Версия сервера",
|
||||||
|
"sizeInGB": "Размер в GB",
|
||||||
|
"unsupported": "Версии Minecraft ниже 1.8 не поддерживаются Crafty. Вы все равно можете установить его. Результаты могут отличаться.",
|
||||||
|
"uploadButton": "Загрузить",
|
||||||
|
"uploadZip": "Загрузить Zip-Файл для импорта на сервер",
|
||||||
|
"zipPath": "Путь к серверу"
|
||||||
|
},
|
||||||
|
"sidebar": {
|
||||||
|
"contribute": "Сотрудничать",
|
||||||
|
"credits": "Благодарности",
|
||||||
|
"dashboard": "Приборная панель",
|
||||||
|
"documentation": "Документация",
|
||||||
|
"inApp": "Документация в приложении",
|
||||||
|
"navigation": "Навигация",
|
||||||
|
"newServer": "Создать новый сервер",
|
||||||
|
"servers": "Серверы"
|
||||||
|
},
|
||||||
|
"startup": {
|
||||||
|
"almost": "Заканчиваю. Держись крепче...",
|
||||||
|
"cache": "Обновление файла кэша Big Bucket",
|
||||||
|
"internals": "Настройка и запуск внутренних компонентов Crafty",
|
||||||
|
"internet": "Проверка наличия подключения к интернету",
|
||||||
|
"server": "Инициализация ",
|
||||||
|
"serverInit": "Инициализация серверов",
|
||||||
|
"starting": "Crafty запускается...",
|
||||||
|
"tasks": "Запуск планировщика задач"
|
||||||
|
},
|
||||||
|
"userConfig": {
|
||||||
|
"apiKey": "API ключи",
|
||||||
|
"auth": "Разрешить? ",
|
||||||
|
"config": "Конфиг",
|
||||||
|
"configArea": "Область настройки пользователя",
|
||||||
|
"configAreaDesc": "Здесь вы можете изменить все свои пользовательские настройки",
|
||||||
|
"confirmDelete": "Вы уверены, что хотите удалить этого пользователя? Это действие необратимо.",
|
||||||
|
"craftyPermDesc": "Crafty разрешения, которыми обладает этот пользователь ",
|
||||||
|
"craftyPerms": "Crafty разрешения: ",
|
||||||
|
"created": "Создан: ",
|
||||||
|
"delSuper": "Вы не можете удалить суперпользователя",
|
||||||
|
"deleteUser": "Удалить пользователя: ",
|
||||||
|
"deleteUserB": "Удалить пользователя",
|
||||||
|
"enabled": "Включён",
|
||||||
|
"gravDesc": "Это электронное письмо предназначено исключительно для использования с Gravatar™. Crafty ни при каких обстоятельствах не будет использовать это электронное письмо для чего-либо, кроме поиска вашего Gravatar™",
|
||||||
|
"gravEmail": "Gravatar™ Email",
|
||||||
|
"lastIP": "Последний IP: ",
|
||||||
|
"lastLogin": "Последний вход в систему: ",
|
||||||
|
"lastUpdate": "Последнее обновление: ",
|
||||||
|
"leaveBlank": "Чтобы отредактировать пользователя без смены пароля, оставьте поле пустым.",
|
||||||
|
"manager": "Менеджер",
|
||||||
|
"member": "Участник?",
|
||||||
|
"notExist": "Вы не можете удалить то, чего не существует!",
|
||||||
|
"pageTitle": "Редактировать пользователя",
|
||||||
|
"pageTitleNew": "Создать пользователя",
|
||||||
|
"password": "Новый пароль",
|
||||||
|
"permName": "Имя разрешения",
|
||||||
|
"repeat": "Подтвердите пароль",
|
||||||
|
"roleName": "Имя роли",
|
||||||
|
"selectManager": "Выберите менеджера для пользователя",
|
||||||
|
"super": "Суперпользователь",
|
||||||
|
"userLang": "Язык пользователя",
|
||||||
|
"userName": "Имя пользователя",
|
||||||
|
"userNameDesc": "Как вы хотите называть этого пользователя?",
|
||||||
|
"userRoles": "Роли пользователя",
|
||||||
|
"userRolesDesc": "Роли, участником которых является этот пользователь.",
|
||||||
|
"userSettings": "Настройки пользователя",
|
||||||
|
"userTheme": "Тема пользовательского интерфейса",
|
||||||
|
"uses": "Количество использований (-1==без ограничений)"
|
||||||
|
},
|
||||||
|
"validators": {
|
||||||
|
"passLength": "Пароль слишком короткий. Минимальная длина: 8"
|
||||||
|
},
|
||||||
|
"webhooks": {
|
||||||
|
"areYouSureDel": "Вы уверены, что хотите удалить этот вебхук?",
|
||||||
|
"areYouSureRun": "Вы уверены, что хотите протестировать этот вебхук?",
|
||||||
|
"backup_server": "Завершено резервное копирование сервера",
|
||||||
|
"bot_name": "Имя бота",
|
||||||
|
"color": "Выберите цветовой акцент",
|
||||||
|
"crash_detected": "Сервер вышел из строя",
|
||||||
|
"edit": "Редактировать",
|
||||||
|
"enabled": "Включено",
|
||||||
|
"jar_update": "Обновлен исполняемый файл сервера",
|
||||||
|
"kill": "Сервер принудительно остановлен",
|
||||||
|
"name": "Имя",
|
||||||
|
"new": "Новый вебхук",
|
||||||
|
"newWebhook": "Новый вебхук",
|
||||||
|
"no-webhook": "В настоящее время для этого сервера нет веб-ссылок. Чтобы начать, нажмите",
|
||||||
|
"run": "Тестовый запуск вебхука",
|
||||||
|
"send_command": "Получена команда сервера",
|
||||||
|
"start_server": "Сервер запущен",
|
||||||
|
"stop_server": "Сервер остановлен",
|
||||||
|
"trigger": "Триггер",
|
||||||
|
"type": "Тип вебхука",
|
||||||
|
"url": "Вебхук URL",
|
||||||
|
"webhook_body": "Тело вебхука",
|
||||||
|
"webhooks": "Вебхуки"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user