Merge branch 'dev' into enhancement/notify-display

This commit is contained in:
Zedifus 2023-10-16 20:14:32 +01:00
commit 9fa53c2c1a
38 changed files with 818 additions and 481 deletions

View File

@ -11,6 +11,7 @@ docker-compose.yml.example
.gitlab/
.gitignore
.gitlab-ci.yml
lang_sort_log.txt
# root
.editorconfig

2
.gitignore vendored
View File

@ -18,6 +18,7 @@ env.bak/
venv.bak/
.idea/
/import/
/imports/
/servers/
/app/frontend/static/assets/images/auth/custom/
@ -35,3 +36,4 @@ default.json
app/config/
docker/*
!docker/docker-compose.yml
lang_sort_log.txt

View File

@ -0,0 +1,77 @@
#!/bin/bash
# Get the script's own path
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Log file path
LOGFILE="${SCRIPT_DIR}/lang_sort_log.txt"
# Redirect stdout and stderr to the logfile
exec > "${LOGFILE}" 2>&1
# Check if jq is installed
if ! command -v jq &> /dev/null
then
echo "jq could not be found, please install jq first."
exit
fi
# Check for directory argument
if [ "$#" -ne 1 ]; then
echo "Usage: $0 /path/to/translations"
exit
fi
# Directory containing the JSON files to sort
DIR="$1"
# Check if en_EN.json exists in the directory
if [[ ! -f "${DIR}/en_EN.json" ]]; then
echo "The file en_EN.json does not exist in ${DIR}.Ensure you have the right directory, Exiting."
exit
fi
# Ensure locale is set to C for predictable sorting
export LC_ALL=C
export LC_COLLATE=C
# Sort keys of the en_EN.json file with 4-space indentation and overwrite it
jq -S --indent 4 '.' "${DIR}/en_EN.json" > "${DIR}/en_EN.json.tmp" && mv "${DIR}/en_EN.json.tmp" "${DIR}/en_EN.json"
# Function to recursively find all keys in a JSON object
function get_keys {
jq -r 'paths(scalars) | join("/")' "$1"
}
# Get keys and subkeys from en_EN.json
ref_keys=$(mktemp)
get_keys "${DIR}/en_EN.json" | sort > "${ref_keys}"
# Iterate over each .json file in the directory
for file in "${DIR}"/*.json; do
# Check if file is a regular file and not en_EN.json
if [[ -f "${file}" && "${file}" != "${DIR}/en_EN.json" ]]; then
# Get keys and subkeys from the current file
current_keys=$(mktemp)
get_keys "${file}" | sort > "${current_keys}"
# Display keys present in en_EN.json but not in the current file
missing_keys=$(comm -23 "${ref_keys}" "${current_keys}")
if [[ -n "${missing_keys}" ]]; then
echo -e "\nKeys/subkeys present in en_EN.json but missing in $(basename "${file}"): "
echo "${missing_keys}"
fi
# Sort keys of the JSON file and overwrite the original file
jq -S --indent 4 '.' "${file}" > "${file}.tmp" && mv "${file}.tmp" "${file}"
# Remove the temporary file
rm -f "${current_keys}"
fi
done
# Remove the temporary file
rm -f "${ref_keys}"
echo -e "\n\nComparison and sorting complete!"

View File

@ -3,6 +3,7 @@
### New features
- Finish and Activate Arcadia notification backend ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/621) | [Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/626) | [Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/632))
- Add initial Webhook Notification (Discord, Mattermost, Slack, Teams) ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/594))
- Implementation of OpenMetrics endpoints, for use with services such as Prometheus ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/624))
### Bug fixes
- PWA: Removed the custom offline page in favour of browser default ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/607))
- Fix hidden servers appearing visible on public mobile status page ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/612))
@ -15,6 +16,8 @@
- Fix Backup Restore/Schedules, Backup button function on `remote-comms2` ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/634))
- Add a wait to the call for the directory so we can make sure the wait dialogue has time to show up first ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/637))
- Fix bug where a reaction loop could be created, but would be cut short by an error when the loop occurred ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/636))
- Use controller on update user call ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/640))
- Move `imports` to `import/upload` in bind mount to better serve users on unraid with limited vdisk storage ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/642))
### Refactor
- Consolidate remaining frontend functions into API V2, and remove ajax internal API ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/585))
- Replace bleach with nh3 ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/628))
@ -29,6 +32,7 @@
- Add additional logging for server bootstrap & moves unnecessary logging to `debug` for improved log clarity ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/635))
- Bump orjson to 3.9.7 for python 3.12 support ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/638))
- Bump all Crafty required python dependancies, maintaining minimum 3.9 support ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/639))
- Better optimize and refactor docker launcher sh ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/642))
### Lang
TBD
<br><br>

View File

@ -1,6 +1,8 @@
import logging
import queue
from prometheus_client import CollectorRegistry, Gauge
from app.classes.models.management import HelpersManagement, HelpersWebhooks
from app.classes.models.servers import HelperServers
@ -11,6 +13,8 @@ class ManagementController:
def __init__(self, management_helper):
self.management_helper = management_helper
self.command_queue = queue.Queue()
self.host_registry = CollectorRegistry()
self.init_host_registries()
# **********************************************************************************
# Config Methods
@ -54,6 +58,19 @@ class ManagementController:
def add_crafty_row():
HelpersManagement.create_crafty_row()
def init_host_registries(self):
# REGISTRY Entries for Server Stats functions
self.cpu_usage = Gauge(
name="CPU_Usage",
documentation="The CPU usage of the server",
registry=self.host_registry,
)
self.mem_usage_percent = Gauge(
name="Mem_Usage",
documentation="The Memory usage of the server",
registry=self.host_registry,
)
# **********************************************************************************
# Commands Methods
# **********************************************************************************

View File

@ -8,6 +8,7 @@ from app.classes.shared.helpers import Helpers
from app.classes.shared.main_models import DatabaseShortcuts
from app.classes.shared.migration import MigrationManager
try:
from peewee import (
SqliteDatabase,

View File

@ -21,6 +21,9 @@ from tzlocal import get_localzone
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.jobstores.base import JobLookupError, ConflictingIdError
# OpenMetrics/Prometheus Imports
from prometheus_client import CollectorRegistry, Gauge, Info
from app.classes.minecraft.stats import Stats
from app.classes.minecraft.mc_ping import ping, ping_bedrock
from app.classes.models.servers import HelperServers, Servers
@ -175,6 +178,8 @@ class ServerInstance:
self.server_object = HelperServers.get_server_obj(self.server_id)
self.stats_helper = HelperServerStats(self.server_id)
self.last_backup_failed = False
self.server_registry = CollectorRegistry()
try:
with open(
os.path.join(self.server_object.path, "db_stats", "players_cache.json"),
@ -194,6 +199,7 @@ class ServerInstance:
self.tz = ZoneInfo("Europe/London")
self.server_scheduler = BackgroundScheduler(timezone=str(self.tz))
self.dir_scheduler = BackgroundScheduler(timezone=str(self.tz))
self.init_registries()
self.server_scheduler.start()
self.dir_scheduler.start()
self.start_dir_calc_task()
@ -1850,6 +1856,15 @@ class ServerInstance:
server_stats = self.get_servers_stats()
self.stats_helper.insert_server_stats(server_stats)
self.cpu_usage.labels(f"{self.server_id}").set(server_stats.get("cpu"))
self.mem_usage_percent.labels(f"{self.server_id}").set(
server_stats.get("mem_percent")
)
self.minecraft_version.labels(f"{self.server_id}").info(
{"version": f"{server_stats.get('version')}"}
)
self.online_players.labels(f"{self.server_id}").set(server_stats.get("online"))
# delete old data
max_age = self.helper.get_setting("history_max_age")
now = datetime.datetime.now()
@ -1857,6 +1872,34 @@ class ServerInstance:
self.stats_helper.remove_old_stats(minimum_to_exist)
def init_registries(self):
# REGISTRY Entries for Server Stats functions
self.cpu_usage = Gauge(
name="CPU_Usage",
documentation="The CPU usage of the server",
labelnames=["server_id"],
registry=self.server_registry,
)
self.mem_usage_percent = Gauge(
name="Mem_Usage",
documentation="The Memory usage of the server",
labelnames=["server_id"],
registry=self.server_registry,
)
self.minecraft_version = Info(
name="Minecraft_Version",
documentation="The version of the minecraft of this server",
labelnames=["server_id"],
registry=self.server_registry,
)
self.online_players = Gauge(
name="online_players",
documentation="The number of players online for a server",
labelnames=["server_id"],
registry=self.server_registry,
)
def get_server_history(self):
history = self.stats_helper.get_history_stats(self.server_id, 1)
return history

View File

@ -696,6 +696,12 @@ class TasksManager:
# Stats are different
host_stats = HelpersManagement.get_latest_hosts_stats()
self.controller.management.cpu_usage.set(host_stats.get("cpu_usage"))
self.controller.management.mem_usage_percent.set(
host_stats.get("mem_percent")
)
if len(WebSocketManager().clients) > 0:
# There are clients
try:
@ -757,11 +763,13 @@ class TasksManager:
)
# Search for old files in imports
self.helper.ensure_dir_exists(
os.path.join(self.controller.project_root, "imports")
os.path.join(self.controller.project_root, "import", "upload")
)
for file in os.listdir(os.path.join(self.controller.project_root, "imports")):
for file in os.listdir(
os.path.join(self.controller.project_root, "import", "upload")
):
if self.helper.is_file_older_than_x_days(
os.path.join(self.controller.project_root, "imports", file)
os.path.join(self.controller.project_root, "import", "upload", file)
):
try:
os.remove(os.path.join(file))

View File

@ -11,7 +11,7 @@ from app.classes.shared.helpers import Helpers
from app.classes.shared.file_helpers import FileHelpers
from app.classes.shared.main_controller import Controller
from app.classes.shared.translation import Translation
from app.classes.models.management import DatabaseShortcuts
from app.classes.shared.main_models import DatabaseShortcuts
logger = logging.getLogger(__name__)

View File

@ -0,0 +1,53 @@
import logging
import typing as t
from prometheus_client import REGISTRY, CollectorRegistry
from prometheus_client.exposition import _bake_output
from prometheus_client.exposition import parse_qs, urlparse
from app.classes.web.base_api_handler import BaseApiHandler
logger = logging.getLogger(__name__)
class BaseMetricsHandler(BaseApiHandler):
"""HTTP handler that gives metrics from ``REGISTRY``."""
registry: CollectorRegistry = REGISTRY
# registry.unregister(GC_COLLECTOR)
# registry.unregister(PLATFORM_COLLECTOR)
# registry.unregister(PROCESS_COLLECTOR)
def get_registry(self) -> None:
# Prepare parameters
registry = self.registry
accept_header = self.request.headers.get("Accept")
accept_encoding_header = self.request.headers.get("Accept-Encoding")
params = parse_qs(urlparse(self.request.path).query)
# Bake output
status, headers, output = _bake_output(
registry, accept_header, accept_encoding_header, params, False
)
# Return output
self.finish_metrics(int(status.split(" ", maxsplit=1)[0]), headers, output)
@classmethod
def factory(cls, registry: CollectorRegistry) -> type:
"""Returns a dynamic MetricsHandler class tied
to the passed registry.
"""
# This implementation relies on MetricsHandler.registry
# (defined above and defaulted to REGISTRY).
# As we have unicode_literals, we need to create a str()
# object for type().
cls_name = str(cls.__name__)
MyMetricsHandler = type(cls_name, (cls, object), {"registry": registry})
return MyMetricsHandler
def finish_metrics(self, status: int, headers, data: t.Dict[str, t.Any]):
self.set_status(status)
self.set_header("Content-Type", "text/plain")
for header in headers:
self.set_header(*header)
self.finish(data)

View File

@ -64,7 +64,9 @@ class ApiImportFilesIndexHandler(BaseApiHandler):
# JSON we need to remove this and just send
# the path.
if data["upload"]:
folder = os.path.join(self.controller.project_root, "imports", folder)
folder = os.path.join(
self.controller.project_root, "import", "upload", folder
)
if Helpers.check_file_exists(folder):
folder = self.file_helper.unzip_server(folder, user_id)
root_path = True

View File

@ -280,7 +280,7 @@ class ApiUsersUserIndexHandler(BaseApiHandler):
if key == "password":
value = self.helper.encode_pass(value)
setattr(user_obj, key, value)
user_obj.save()
self.controller.users.update_user(auth_data[4]["user_id"], data)
self.controller.management.add_to_audit_log(
user["user_id"],

View File

@ -0,0 +1,31 @@
from prometheus_client.exposition import _bake_output
from prometheus_client.exposition import parse_qs, urlparse
from app.classes.web.metrics_handler import BaseMetricsHandler
# Decorate function with metric.
class ApiOpenMetricsCraftyHandler(BaseMetricsHandler):
def get(self):
auth_data = self.authenticate_user()
if not auth_data:
return
if not auth_data[3]:
# if the user doesn't have access to the server, return an error
return self.finish_json(400, {"status": "error", "error": "NOT_AUTHORIZED"})
self.get_registry()
def get_registry(self) -> None:
# Prepare parameters
registry = self.controller.management.host_registry
accept_header = self.request.headers.get("Accept")
accept_encoding_header = self.request.headers.get("Accept-Encoding")
params = parse_qs(urlparse(self.request.path).query)
# Bake output
status, headers, output = _bake_output(
registry, accept_header, accept_encoding_header, params, False
)
# Return output
self.finish_metrics(int(status.split(" ", maxsplit=1)[0]), headers, output)

View File

@ -0,0 +1,21 @@
from prometheus_client import Info
from app.classes.web.metrics_handler import BaseMetricsHandler
CRAFTY_INFO = Info("Crafty_Controller", "Infos of this Crafty Instance")
# Decorate function with metric.
class ApiOpenMetricsIndexHandler(BaseMetricsHandler):
def get(self):
auth_data = self.authenticate_user()
if not auth_data:
return
version = f"{self.helper.get_version().get('major')} \
.{self.helper.get_version().get('minor')} \
.{self.helper.get_version().get('sub')}"
CRAFTY_INFO.info(
{"version": version, "docker": f"{self.helper.is_env_docker()}"}
)
self.get_registry()

View File

@ -0,0 +1,24 @@
from app.classes.web.routes.metrics.index import ApiOpenMetricsIndexHandler
from app.classes.web.routes.metrics.host import ApiOpenMetricsCraftyHandler
from app.classes.web.routes.metrics.servers import ApiOpenMetricsServersHandler
def metrics_handlers(handler_args):
return [
# OpenMetrics routes
(
r"/metrics/?",
ApiOpenMetricsIndexHandler,
handler_args,
),
(
r"/metrics/host/?",
ApiOpenMetricsCraftyHandler,
handler_args,
),
(
r"/metrics/servers/([0-9]+)/?",
ApiOpenMetricsServersHandler,
handler_args,
),
]

View File

@ -0,0 +1,37 @@
from prometheus_client.exposition import _bake_output
from prometheus_client.exposition import parse_qs, urlparse
from app.classes.web.metrics_handler import BaseMetricsHandler
from app.classes.controllers.servers_controller import ServersController
# Decorate function with metric.
class ApiOpenMetricsServersHandler(BaseMetricsHandler):
def get(self, server_id: str):
auth_data = self.authenticate_user()
if not auth_data:
return
if server_id not in [str(x["server_id"]) for x in auth_data[0]]:
# if the user doesn't have access to the server, return an error
return self.finish_json(400, {"status": "error", "error": "NOT_AUTHORIZED"})
self.get_registry(server_id)
def get_registry(self, server_id=None) -> None:
if server_id is None:
return self.finish_json(500, {"status": "error", "error": "UNKNOWN_SERVER"})
# Prepare parameters
registry = (
ServersController().get_server_instance_by_id(server_id).server_registry
)
accept_header = self.request.headers.get("Accept")
accept_encoding_header = self.request.headers.get("Accept-Encoding")
params = parse_qs(urlparse(self.request.path).query)
# Bake output
status, headers, output = _bake_output(
registry, accept_header, accept_encoding_header, params, False
)
# Return output
self.finish_metrics(int(status.split(" ", maxsplit=1)[0]), headers, output)

View File

@ -20,6 +20,7 @@ from app.classes.web.public_handler import PublicHandler
from app.classes.web.panel_handler import PanelHandler
from app.classes.web.default_handler import DefaultHandler
from app.classes.web.routes.api.api_handlers import api_handlers
from app.classes.web.routes.metrics.metrics_handlers import metrics_handlers
from app.classes.web.server_handler import ServerHandler
from app.classes.web.api_handler import (
ServersStats,
@ -174,6 +175,8 @@ class Webserver:
(r"/api/v1/users/delete_user", DeleteUser, handler_args),
# API Routes V2
*api_handlers(handler_args),
# API Routes OpenMetrics
*metrics_handlers(handler_args),
# Using this one at the end
# to catch all the other requests to Public Handler
(r"/(.*)", PublicHandler, handler_args),

View File

@ -102,7 +102,8 @@ class UploadHandler(BaseHandler):
)
self.do_upload = False
path = os.path.join(self.controller.project_root, "imports")
path = os.path.join(self.controller.project_root, "import", "upload")
self.helper.ensure_dir_exists(path)
# Delete existing files
if len(os.listdir(path)) > 0:
for item in os.listdir():

View File

@ -16,8 +16,8 @@
"buttons": "Tlačítka",
"config": "Nastavení",
"crafty": "Crafty: ",
"created": "Vytvořen",
"createNew": "Vytvořit nový token API",
"created": "Vytvořen",
"deleteKeyConfirmation": "Chcete tento API klíč odstranit? Tuto akci nelze vrátit zpět.",
"deleteKeyConfirmationTitle": "Odstranit klíč API ${keyId}?",
"getToken": "Získat token",
@ -75,6 +75,7 @@
"dashboard": "Ovládací panel",
"delay-explained": "Služba/agent byla nedávno spuštěna a zpožďuje spuštění instance minecraft serveru.",
"host": "Hostitel",
"installing": "Instalace...",
"kill": "Zabít proces",
"killing": "Zabíjím proces...",
"lastBackup": "Poslední:",
@ -97,8 +98,7 @@
"status": "Stav",
"stop": "Zastavit",
"version": "Verze",
"welcome": "Vítejte v Crafty Controlleru",
"installing": "Instalace..."
"welcome": "Vítejte v Crafty Controlleru"
},
"datatables": {
"i18n": {
@ -123,11 +123,11 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"-1": "Zobrazit všechny řádky",
"1": "Zobrazit 1 řádek",
"2": "Zobrazit 2 řádky",
"3": "Zobrazit 3 řádky",
"4": "Zobrazit 4 řádky",
"-1": "Zobrazit všechny řádky",
"_": "Zobrazit %d řádků"
},
"pdf": "PDF",
@ -180,15 +180,15 @@
}
},
"error": {
"agree": "Souhlasím",
"cancel": "Zrušit",
"contact": "Kontaktujte podporu Crafty přes Discord",
"embarassing": "Ach jo, no, to je trapné.",
"error": "Chyba!",
"eulaAgree": "Souhlasíte?",
"eulaMsg": "Musíte souhlasit s ",
"privMsg": "a ",
"eulaTitle": "Souhlas s EULA",
"agree": "Souhlasím",
"cancel": "Zrušit",
"fileError": "Typ souboru musí být obrázek.",
"fileTooLarge": "Odeslání se nezdařilo. Příliš velký nahraný soubor. Obraťte se na správce systému.",
"hereIsTheError": "Zde je chyba",
"internet": "Zjistili jsme, že počítač se spuštěným programem Crafty není připojen k internetu. Připojení klientů k serveru může být omezeno.",
@ -196,10 +196,10 @@
"noJava": "Server {} se nepodařilo spustit s kódem chyby: Zjistili jsme, že Java není nainstalována. Nainstalujte prosím Javu a poté spusťte server.",
"not-downloaded": "Zdá se, že nemůžeme najít váš spustitelný soubor. Bylo jeho stahování dokončeno? Jsou oprávnění nastavena na spustitelný soubor?",
"portReminder": "Zjistili jsme, že server {} byl spuštěn poprvé. Ujistěte se, že jste přesměrovali port {} přes váš směrovač/firewall, aby byl tento port vzdáleně přístupný z internetu.",
"privMsg": "a ",
"start-error": "Server {} se nepodařilo spustit s kódem chyby: {}",
"terribleFailure": "Jaké strašné selhání!",
"superError": "Pro dokončení této akce musíte být super uživatel.",
"fileError": "Typ souboru musí být obrázek."
"terribleFailure": "Jaké strašné selhání!"
},
"footer": {
"allRightsReserved": "Všechna práva vyhrazena",
@ -226,29 +226,29 @@
"adminControls": "Ovládání správce",
"allowedServers": "Povolené servery",
"assignedRoles": "Přidělené role",
"backgroundUpload": "Nahrání pozadí",
"cancel": "Zrušit",
"clearComms": "Vymazat nevykonané příkazy",
"delete": "Smazat",
"edit": "Upravit",
"enabled": "Zapnuto",
"loginBackground": "Přihlašovací obrázek na pozadí",
"loginImage": "Nahrajte obrázek na pozadí přihlašovací obrazovky.",
"match": "Hesla musí být stejná",
"newRole": "Přidat novou roli",
"newUser": "Přidat nového uživatele",
"pageTitle": "Nastavení panelu",
"preview": "Náhled",
"role": "Role",
"roles": "Role",
"roleUsers": "Uživatelé s rolí",
"roles": "Role",
"save": "Uložit",
"select": "Vyberte",
"selectImage": "Vyberte obrázek",
"superConfirm": "Postupujte pouze v případě, že chcete, aby měl tento uživatel přístup ke VŠEM (ke všem uživatelským účtům, serverům, nastavení panelu atd.). Může vám dokonce odebrat práva superuživatele.",
"superConfirmTitle": "Povolit superuživatele? Jste si jisti?",
"user": "Uživatel",
"users": "Uživatelé",
"loginImage": "Nahrajte obrázek na pozadí přihlašovací obrazovky.",
"backgroundUpload": "Nahrání pozadí",
"loginBackground": "Přihlašovací obrázek na pozadí",
"select": "Vyberte",
"selectImage": "Vyberte obrázek",
"preview": "Náhled"
"users": "Uživatelé"
},
"rolesConfig": {
"config": "Nastavení role",
@ -270,10 +270,10 @@
"roleTitle": "Nastavení rolí",
"roleUserName": "Uživatelské jméno",
"roleUsers": "Uživatelé role: ",
"selectManager": "Výběr manažera pro tuto roli",
"serverAccess": "Přístup?",
"serverName": "Název serveru",
"serversDesc": "servery, ke kterým má tato role přístup",
"selectManager": "Výběr manažera pro tuto roli"
"serversDesc": "servery, ke kterým má tato role přístup"
},
"serverBackups": {
"backupAtMidnight": "Automatické zálohování o půlnoci?",
@ -349,13 +349,13 @@
"serverStopCommand": "Příkaz pro zastavení serveru",
"serverStopCommandDesc": "Příkaz k odeslání programu pro jeho zastavení",
"showStatus": "Zobrazit na veřejné stavové stránce",
"shutdownTimeout": "Časový limit pro vypnutí",
"stopBeforeDeleting": "Před odstraněním serveru jej prosím zastavte",
"timeoutExplain1": "Jak dlouho bude Crafty čekat na vypnutí serveru po provedení příkazu",
"timeoutExplain2": "než proces ukončí.",
"update": "Aktualizovat spustitelný soubor",
"yesDelete": "Ano, smazat",
"yesDeleteFiles": "Ano, smazat soubory",
"shutdownTimeout": "Časový limit pro vypnutí",
"timeoutExplain1": "Jak dlouho bude Crafty čekat na vypnutí serveru po provedení příkazu",
"timeoutExplain2": "než proces ukončí."
"yesDeleteFiles": "Ano, smazat soubory"
},
"serverConfigHelp": {
"desc": "Zde můžete změnit konfiguraci serveru.",
@ -378,15 +378,15 @@
"backup": "Záloha",
"config": "Nastavení",
"files": "Soubory",
"filter": "Filtrovat protokoly",
"filterList": "Filtrovaná slova",
"logs": "Protokoly",
"metrics": "Metrika",
"playerControls": "Správa hráčů",
"reset": "Obnovit posuvník",
"schedule": "Harmonogram",
"serverDetails": "Podrobnosti o serveru",
"terminal": "Terminál",
"metrics": "Metrika",
"reset": "Obnovit posuvník",
"filter": "Filtrovat protokoly",
"filterList": "Filtrovaná slova"
"terminal": "Terminál"
},
"serverFiles": {
"clickUpload": "Klikněte sem a vyberte své soubory",
@ -420,6 +420,11 @@
"waitUpload": "Počkejte prosím, než se vaše soubory nahrají... To může chvíli trvat.",
"yesDelete": "Ano, chápu následky"
},
"serverMetrics": {
"resetZoom": "Reset Zoom",
"zoomHint1": "Chcete-li graf přiblížit, podržte klávesu Shift a poté použijte kolečko myši.",
"zoomHint2": "Případně můžete podržet klávesu Shift a kliknout a přetáhnout oblast, kterou chcete přiblížit."
},
"serverPlayerManagement": {
"bannedPlayers": "Zabanovaní hráči",
"loadingBannedPlayers": "Načítání zabanovaných hráčů",
@ -427,7 +432,6 @@
},
"serverScheduleConfig": {
"backup": "Zálohovat server",
"select": "Základní / Cron / Řetězová reakce",
"basic": "Základní",
"children": "Propojené dětské úlohy:",
"command": "Příkaz",
@ -448,35 +452,36 @@
"parent-explain": "Který plán by měl spustit tento?",
"reaction": "Reakce",
"restart": "Restartovat server",
"select": "Základní / Cron / Řetězová reakce",
"start": "Spustit server",
"stop": "Vypnout server",
"time": "Čas",
"time-explain": "V kolik hodin chcete, aby byl váš plán spuštěn?"
},
"serverSchedules": {
"scheduledTasks": "Naplánované úlohy",
"create": "Vytvořit nový plán",
"name": "Název",
"action": "Akce",
"command": "Příkaz",
"interval": "Interval",
"nextRun": "Příští spuštění",
"enabled": "Zapnuto",
"edit": "Upravit",
"every": "Každý",
"yes": "Ano",
"no": "Ne",
"cron": "Řetězec Crong",
"details": "Podrobnosti o plánu",
"child": "Dítě plánu s ID",
"areYouSure": "Odstranění naplánované úlohy?",
"close": "Zavřít",
"delete": "Odstranit",
"cancel": "Zrušit",
"cannotSee": "Nevidíte všechno?",
"cannotSeeOnMobile": "Kliknutím na naplánovanou úlohu získáte podrobné informace.",
"child": "Dítě plánu s ID",
"close": "Zavřít",
"command": "Příkaz",
"confirm": "Potvrdit",
"confirmDelete": "Chcete tuto naplánovanou úlohu odstranit? Tuto akci nelze vrátit zpět."
"confirmDelete": "Chcete tuto naplánovanou úlohu odstranit? Tuto akci nelze vrátit zpět.",
"create": "Vytvořit nový plán",
"cron": "Řetězec Crong",
"delete": "Odstranit",
"details": "Podrobnosti o plánu",
"edit": "Upravit",
"enabled": "Zapnuto",
"every": "Každý",
"interval": "Interval",
"name": "Název",
"nextRun": "Příští spuštění",
"no": "Ne",
"scheduledTasks": "Naplánované úlohy",
"yes": "Ano"
},
"serverStats": {
"cpuUsage": "Využití CPU",
@ -499,19 +504,14 @@
"commandInput": "Zadejte příkaz",
"delay-explained": "Služba/agent byla nedávno spuštěna a zpožďuje spuštění instance minecraft serveru.",
"importing": "Importování...",
"installing": "Instalace...",
"restart": "Restartovat",
"sendCommand": "Odeslat příkaz",
"start": "Spustit",
"starting": "Zpožděný start",
"stop": "Zastavit",
"stopScroll": "Zastavit automatické posouvání",
"updating": "Aktualizace...",
"installing": "Instalace..."
},
"serverMetrics": {
"resetZoom": "Reset Zoom",
"zoomHint1": "Chcete-li graf přiblížit, podržte klávesu Shift a poté použijte kolečko myši.",
"zoomHint2": "Případně můžete podržet klávesu Shift a kliknout a přetáhnout oblast, kterou chcete přiblížit."
"updating": "Aktualizace..."
},
"serverWizard": {
"absoluteServerPath": "Absolutní cesta k serveru",
@ -525,11 +525,10 @@
"defaultPort": "25565 výchozí hodnota",
"downloading": "Stahování serveru...",
"explainRoot": "Klikněte na tlačítko níže a vyberte kořenový adresář vašeho serveru z archivu.",
"importing": "Importování serveru...",
"importServer": "Importování existujícího serveru",
"importServerButton": "Importovat server!",
"importZip": "Imporovat ze souboru Zip",
"uploadZip": "Nahrání souboru Zip pro importování serveru",
"importing": "Importování serveru...",
"maxMem": "Maximální paměť",
"minMem": "Minimální paměť",
"myNewServer": "Nový server",
@ -540,18 +539,19 @@
"save": "Uložit",
"selectRole": "Vyberte roli(e)",
"selectRoot": "Vyberte kořenový adresář archivu",
"selectType": "Typ serveru (Vanilla, Servery, Modované atd.)",
"selectServer": "Vyberte server",
"selectType": "Typ serveru (Vanilla, Servery, Modované atd.)",
"selectVersion": "Vyberte verzi",
"selectZipDir": "Vyberte adresář v archivu, ze kterého mají být soubory rozbaleny.",
"serverJar": "Soubor spustitelný serverem",
"serverName": "Název serveru",
"serverPath": "Cesta k serveru",
"serverPort": "Port serveru",
"serverType": "Typ serveru",
"serverSelect": "Výběr serveru",
"serverType": "Typ serveru",
"serverVersion": "Verze serveru",
"sizeInGB": "Velikost v GB",
"uploadZip": "Nahrání souboru Zip pro importování serveru",
"zipPath": "Cesta k serveru"
},
"sidebar": {
@ -573,9 +573,9 @@
"craftyPermDesc": "Oprávnění tohoto uživatele ",
"craftyPerms": "Oprávnění: ",
"created": "Vytvořeno: ",
"delSuper": "Super uživatele nelze odstranit",
"deleteUser": "Smazat uživatele: ",
"deleteUserB": "Smazat uživatele",
"delSuper": "Super uživatele nelze odstranit",
"enabled": "Povolen",
"gravDesc": "Tento e-mail je určen výhradně pro použití se službou Gravatar™. Crafty nebude v žádném případě používat tento e-mail k ničemu jinému než k vyhledávání vašeho Gravataru™.",
"gravEmail": "Gravatar™ E-mail",
@ -583,6 +583,7 @@
"lastLogin": "Poslední přihlášení: ",
"lastUpdate": "Poslední aktualizace: ",
"leaveBlank": "Chcete-li upravit uživatele beze změny hesla, ponechte pole prázdné.",
"manager": "Správce",
"member": "Člen?",
"notExist": "Nemůžete odstranit něco, co neexistuje!",
"pageTitle": "Upravit uživatele",
@ -591,16 +592,15 @@
"permName": "Název povolení",
"repeat": "Zopakujte heslo",
"roleName": "Název role",
"selectManager": "Vyberte Správce pro uživatele",
"super": "Super uživatel",
"userLang": "Jazyk uživatele",
"userTheme": "Motiv UI",
"userName": "Uživatelské jméno",
"userNameDesc": "Jak chcete aby se tento uživatel jmenoval?",
"userRoles": "Role uživatele",
"userRolesDesc": "Role, jejichž je tento uživatel členem.",
"userSettings": "Nastavení uživatele",
"uses": "Počet povolených použití (-1==bez omezení)",
"manager": "Správce",
"selectManager": "Vyberte Správce pro uživatele"
"userTheme": "Motiv UI",
"uses": "Počet povolených použití (-1==bez omezení)"
}
}

View File

@ -16,8 +16,8 @@
"buttons": "Knöpfe",
"config": "Konfiguration",
"crafty": "Crafty: ",
"created": "Erstellt",
"createNew": "Neuen API Schlüssel erstellen",
"created": "Erstellt",
"deleteKeyConfirmation": "Möchten Sie diesen API Schlüssel löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
"deleteKeyConfirmationTitle": "Folgenden API Schlüssel löschen: ${keyId}?",
"getToken": "Schlüssel erhalten",
@ -40,12 +40,12 @@
"pageDescription": "Ohne diese Menschen würde Crafty nicht existieren",
"pageTitle": "Mitwirkende",
"patreonDesc": "an unsere Patreon/Ko-fi-Unterstützer!",
"subscriptionLevel": "Unterstützer-Level",
"subscriberName": "Name",
"patreonOther": "Andere",
"patreonSupporter": "Patreon / Ko-fi Unterstützer",
"patreonUpdate": "Letzte Aktualisierung:",
"retiredStaff": "Ehemalige Helfer",
"subscriberName": "Name",
"subscriptionLevel": "Unterstützer-Level",
"supportTeam": "Support- und Dokumentationsteam",
"thankYou": "DANKESCHÖN",
"translationDesc": "an unsere Community, die übersetzt!",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "1 Zeile anzeigen",
"-1": "Alle Zeilen anzeigen",
"1": "1 Zeile anzeigen",
"_": "%d Zeilen anzeigen"
},
"pdf": "PDF",
@ -170,6 +170,7 @@
"eulaAgree": "Stimmen Sie zu?",
"eulaMsg": "Sie müssen der EULA zustimmen. Eine Kopie der Minecraft EULA ist unter dieser Nachricht verlinkt.",
"eulaTitle": "Der EULA zustimmen",
"fileTooLarge": "Hochladen fehlgeschlagen. Datei ist zu groß. Wenden Sie sich an Ihren Systemadministrator für weitere Unterstütung.",
"hereIsTheError": "Das ist der Fehler",
"internet": "Wir haben festgestellt, dass der Rechner, auf dem Crafty läuft, keine Verbindung zum Internet hat. Client-Verbindungen zum Server können dadurch eingeschränkt sein.",
"no-file": "Crafty kann die Datei nicht öffnen. Bitte den angegebenen Pfad überprüfen. Hat Crafty die nötigen Berechtigungen?",
@ -177,8 +178,7 @@
"not-downloaded": "Crafty kann die auszuführende Datei nicht finden. Ist der Download abgeschlossen? Sind die Berechtigungen für Crafty korrekt?",
"portReminder": "Wir haben festgestellt, dass dies das erste Mal ist, dass {} ausgeführt wurde. Stellen Sie sicher, dass Sie Port {} durch Ihren Router/Firewall weiterleiten, um den Fernzugriff aus dem Internet zu ermöglichen.",
"start-error": "Der Server {} konnte wegen dem Fehlercode: {} nicht gestartet werden",
"terribleFailure": "Was für ein furchtbarer Fehler!",
"fileTooLarge": "Hochladen fehlgeschlagen. Datei ist zu groß. Wenden Sie sich an Ihren Systemadministrator für weitere Unterstütung."
"terribleFailure": "Was für ein furchtbarer Fehler!"
},
"footer": {
"allRightsReserved": "Alle Rechte vorbehalten",
@ -214,8 +214,8 @@
"newUser": "Neuen Benutzer hinzufügen",
"pageTitle": "Panel Konfiguration",
"role": "Rolle",
"roles": "Rollen",
"roleUsers": "Rollen-Benutzer",
"roles": "Rollen",
"save": "Speichern",
"superConfirm": "Nur fortfahren, wenn dieser Nutzer Zugang zu ALLEM haben soll (alle Benutzerkonten, Server, Panel-Konfiguration etc.). Er kann allen Benutzern die Super-Benutzer-Rechte entziehen.",
"superConfirmTitle": "Super-Benutzer Berechtigung erteilen? Sicher, dass diese Aktion ausgeführt werden soll?",
@ -270,10 +270,10 @@
"restore": "Wiederherstellen",
"restoring": "Backup wiederherstellen. Dies kann eine Weile dauern.",
"save": "Speichern",
"shutdown": "Server für die Dauer des Backups stoppen",
"size": "Größe",
"storageLocation": "Speicherort",
"storageLocationDesc": "Wo wollen Sie die Backups speichern?",
"shutdown": "Server für die Dauer des Backups stoppen"
"storageLocationDesc": "Wo wollen Sie die Backups speichern?"
},
"serverConfig": {
"bePatientDelete": "Bitte haben Sie etwas Geduld, während wir Ihren Server aus dem Crafty-Panel entfernen. Dieser Bildschirm wird in wenigen Augenblicken geschlossen.",
@ -289,6 +289,9 @@
"deleteServerQuestionMessage": "Sind Sie sicher, dass Sie diesen Server löschen wollen? Danach gibt es kein Zurück mehr...",
"exeUpdateURL": "Ausführbare Server Update URL",
"exeUpdateURLDesc": "Direkte Download-URL für Updates.",
"javaNoChange": "Nicht überschreiben",
"javaVersion": "Aktuelle Java Version überschreiben",
"javaVersionDesc": "Wenn Sie die Java-Version überschreiben möchten: Stellen Sie sicher, dass der 'auszuführende Befehl' in Anführungszeichen geschrieben ist (Ausgenommen die Standard-'java'-Variable)",
"noDelete": "Nein, zurück",
"noDeleteFiles": "Nein, nur aus dem Panel entfernen",
"removeOldLogsAfter": "Alte Logs entfernen nach",
@ -302,9 +305,6 @@
"serverCrashDetection": "Erkennung von Serverabstürzen",
"serverExecutable": "Ausführbare Server Datei",
"serverExecutableDesc": "Die ausführbare Datei des Servers",
"javaVersion": "Aktuelle Java Version überschreiben",
"javaVersionDesc": "Wenn Sie die Java-Version überschreiben möchten: Stellen Sie sicher, dass der 'auszuführende Befehl' in Anführungszeichen geschrieben ist (Ausgenommen die Standard-'java'-Variable)",
"javaNoChange": "Nicht überschreiben",
"serverExecutionCommand": "Server Ausführungsbefehl",
"serverExecutionCommandDesc": "Was wird in einer versteckten Konsole gestartet",
"serverIP": "Server IP",
@ -373,8 +373,8 @@
"noscript": "Der Dateimanager funktioniert nicht ohne JavaScript",
"rename": "Umbenennen",
"renameItemQuestion": "Wie soll der neue Name lauten?",
"size": "Editorgröße umschalten",
"save": "Speichern",
"size": "Editorgröße umschalten",
"stayHere": "VERLASSEN SIE DIESE SEITE NICHT!",
"unsupportedLanguage": "Warnung: Dies ist ein nicht unterstützter Dateityp",
"unzip": "Entpacken",
@ -464,10 +464,10 @@
"defaultPort": "25565 (Standard)",
"downloading": "Server herunterladen...",
"explainRoot": "Bitte klicken Sie auf die Schaltfläche unterhalb, um das Stammverzeichnis Ihres Servers innerhalb des Archivs auszuwählen",
"importing": "Server importieren...",
"importServer": "Existierenden Server importieren",
"importServerButton": "Server importieren!",
"importZip": "Aus einer Zip-Archiv importieren",
"importing": "Server importieren...",
"maxMem": "Maximaler RAM",
"minMem": "Minimaler RAM",
"myNewServer": "Mein neuer Server",
@ -509,9 +509,9 @@
"craftyPermDesc": "Crafty Berechtigungen die dieser Benutzer hat ",
"craftyPerms": "Crafty Berechtigungen: ",
"created": "Erstellt: ",
"delSuper": "Super Benutzer können nicht gelöscht werden",
"deleteUser": "Benutzer löschen: ",
"deleteUserB": "Benutzer löschen",
"delSuper": "Super Benutzer können nicht gelöscht werden",
"enabled": "Aktiviert",
"gravDesc": "Diese E-Mail ist ausschließlich für die Verwendung mit Gravatar™ bestimmt. Crafty wird diese E-Mail unter keinen Umständen für etwas anderes als die Suche nach Ihrem Gravatar™ verwenden.",
"gravEmail": "Gravatar™ E-Mail",

View File

@ -16,8 +16,8 @@
"buttons": "Buttons",
"config": "Config",
"crafty": "Crafty: ",
"created": "Created",
"createNew": "Create new API Token",
"created": "Created",
"deleteKeyConfirmation": "Do you want to delete this API key? This cannot be undone.",
"deleteKeyConfirmationTitle": "Remove API key ${keyId}?",
"getToken": "Get A Token",
@ -53,6 +53,20 @@
"translationTitle": "Language Translation",
"translator": "Translators"
},
"customLogin": {
"apply": "Apply",
"backgroundUpload": "Background Upload",
"customLoginPage": "Customise the Login Page",
"delete": "Delete",
"labelLoginImage": "Choose your Login Background",
"loginBackground": "Login Background Image",
"loginImage": "Upload a background image for the login screen.",
"loginOpacity": "Select the Login Window Opacity",
"pageTitle": "Custom Login Page",
"preview": "Preview",
"select": "Select",
"selectImage": "Select an image"
},
"dashboard": {
"actions": "Actions",
"allServers": "All Servers",
@ -75,6 +89,7 @@
"dashboard": "Dashboard",
"delay-explained": "The service/agent has recently started and is delaying the start of the minecraft server instance",
"host": "Host",
"installing": "Installing...",
"kill": "Kill Process",
"killing": "Killing process...",
"lastBackup": "Last:",
@ -97,8 +112,7 @@
"status": "Status",
"stop": "Stop",
"version": "Version",
"welcome": "Welcome to Crafty Controller",
"installing": "Installing..."
"welcome": "Welcome to Crafty Controller"
},
"datatables": {
"i18n": {
@ -120,8 +134,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Show 1 row",
"-1": "Show all rows",
"1": "Show 1 row",
"_": "Show %d rows"
},
"pdf": "PDF",
@ -165,34 +179,34 @@
}
},
"error": {
"agree": "Agree",
"bedrockError": "Bedrock downloads unavailable. Please check",
"cancel": "Cancel",
"contact": "Contact Crafty Control Support via Discord",
"craftyStatus": "Crafty's status page",
"cronFormat": "Invalid Cron format detected",
"embarassing": "Oh my, well, this is embarrassing.",
"error": "Error!",
"eulaAgree": "Do you agree?",
"eulaMsg": "You must agree to the ",
"privMsg": "and the ",
"eulaTitle": "Agree To EULA",
"agree": "Agree",
"cancel": "Cancel",
"fileError": "File type must be an image.",
"fileTooLarge": "Upload failed. File upload too large. Contact system administrator for assistance.",
"hereIsTheError": "Here is the error",
"internet": "We have detected the machine running Crafty has no connection to the internet. Client connections to the server may be limited.",
"no-file": "We can't seem to locate the requested file. Double check the path. Does Crafty have proper permissions?",
"noJava": "Server {} failed to start with error code: We have detected Java is not installed. Please install java then start the server.",
"installerJava": "Failed to install {} : Forge Server Installs require Java. We have detected Java is not installed. Please install java then install the server.",
"internet": "We have detected the machine running Crafty has no connection to the internet. Client connections to the server may be limited.",
"migration": "Crafty's main server storage is being mirgated to a new location. All server starts have been suspended during this time. Please wait while we finish this migration",
"no-file": "We can't seem to locate the requested file. Double check the path. Does Crafty have proper permissions?",
"noInternet": "Crafty is having trouble accessing the internet. Server Creation has been disabled. Please check your internet connection and refresh this page.",
"noJava": "Server {} failed to start with error code: We have detected Java is not installed. Please install java then start the server.",
"not-downloaded": "We can't seem to find your executable file. Has it finished downloading? Are the permissions set to executable?",
"portReminder": "We have detected this is the first time {} has been run. Make sure to forward port {} through your router/firewall to make this remotely accessible from the internet.",
"start-error": "Server {} failed to start with error code: {}",
"terribleFailure": "What a Terrible Failure!",
"superError": "You must be a super user to complete this action.",
"fileError": "File type must be an image.",
"migration": "Crafty's main server storage is being mirgated to a new location. All server starts have been suspended during this time. Please wait while we finish this migration",
"privMsg": "and the ",
"serverJars1": "Server JARs API unreachable. Please check",
"bedrockError": "Bedrock downloads unavailable. Please check",
"craftyStatus": "Crafty's status page",
"serverJars2": "for the most up to date information.",
"cronFormat": "Invalid Cron format detected",
"noInternet": "Crafty is having trouble accessing the internet. Server Creation has been disabled. Please check your internet connection and refresh this page."
"start-error": "Server {} failed to start with error code: {}",
"superError": "You must be a super user to complete this action.",
"terribleFailure": "What a Terrible Failure!"
},
"footer": {
"allRightsReserved": "All rights reserved",
@ -223,47 +237,33 @@
"panelConfig": {
"adminControls": "Admin Controls",
"allowedServers": "Allowed Servers",
"apply": "Apply",
"assignedRoles": "Assigned Roles",
"cancel": "Cancel",
"clearComms": "Clear Un-executed Commands",
"select": "Select",
"apply": "Apply",
"custom": "Customize Crafty",
"delete": "Delete",
"edit": "Edit",
"enableLang": "Enable All Languages",
"enabled": "Enabled",
"globalExplain": "Where Crafty stores all your server files. (We will append the path with /servers/[uuid of server])",
"globalServer": "Global Servers Directory",
"json": "Config.json",
"match": "Passwords must match",
"newRole": "Add New Role",
"newUser": "Add New User",
"noMounts": "Show no Mounts on Dash",
"pageTitle": "Panel Config",
"json": "Config.json",
"custom": "Customize Crafty",
"role": "Role",
"roles": "Roles",
"roleUsers": "Role Users",
"roles": "Roles",
"save": "Save",
"select": "Select",
"superConfirm": "Proceed only if you want this user to have access to EVERYTHING (all user accounts, servers, panel settings, etc.). They can even revoke your superuser rights.",
"superConfirmTitle": "Enable superuser? Are you sure?",
"user": "User",
"users": "Users",
"title": "Crafty Configuration",
"enableLang": "Enable All Languages",
"noMounts": "Show no Mounts on Dash",
"globalServer": "Global Servers Directory",
"globalExplain": "Where Crafty stores all your server files. (We will append the path with /servers/[uuid of server])"
},
"customLogin": {
"customLoginPage": "Customise the Login Page",
"loginImage": "Upload a background image for the login screen.",
"labelLoginImage": "Choose your Login Background",
"backgroundUpload": "Background Upload",
"loginBackground": "Login Background Image",
"loginOpacity": "Select the Login Window Opacity",
"select": "Select",
"apply": "Apply",
"delete": "Delete",
"selectImage": "Select an image",
"preview": "Preview",
"pageTitle": "Custom Login Page"
"user": "User",
"users": "Users"
},
"rolesConfig": {
"config": "Role Config",
@ -285,15 +285,17 @@
"roleTitle": "Roles Settings",
"roleUserName": "User Name",
"roleUsers": "Role Users: ",
"selectManager": "Select a manager for this Role",
"serverAccess": "Access?",
"serverName": "Server Name",
"serversDesc": "servers this role is allowed to access",
"selectManager": "Select a manager for this Role"
"serversDesc": "servers this role is allowed to access"
},
"serverBackups": {
"after": "Run command after backup",
"backupAtMidnight": "Auto-backup at midnight?",
"backupNow": "Backup Now!",
"backupTask": "A backup task has been started.",
"before": "Run command before backup",
"cancel": "Cancel",
"clickExclude": "Click to select Exclusions",
"compress": "Compress Backup",
@ -317,9 +319,7 @@
"shutdown": "Shutdown server for duration of backup",
"size": "Size",
"storageLocation": "Storage Location",
"storageLocationDesc": "Where do you want to store backups?",
"before": "Run command before backup",
"after": "Run command after backup"
"storageLocationDesc": "Where do you want to store backups?"
},
"serverConfig": {
"bePatientDelete": "Please be patient while we remove your server from the Crafty panel. This screen will close in a few moments.",
@ -335,6 +335,8 @@
"deleteServerQuestionMessage": "Are you sure you want to delete this server? After this there is no going back...",
"exeUpdateURL": "Server Executable Update URL",
"exeUpdateURLDesc": "Direct Download URL for updates.",
"ignoredExits": "Ignored Crash Exit Codes",
"ignoredExitsExplain": "Exit codes Crafty's Crash detection should ignore as a normal 'stop' (separated by commas)",
"javaNoChange": "Do Not Override",
"javaVersion": "Override current Java Version",
"javaVersionDesc": "If you're going to override Java, make sure your current Java path in 'execution command' is wrapped in quotes (default 'java' variable excluded)",
@ -366,17 +368,15 @@
"serverStopCommand": "Server Stop Command",
"serverStopCommandDesc": "Command to send the program to stop it",
"showStatus": "Show On Public Status Page",
"stopBeforeDeleting": "Please stop the server before deleting it",
"update": "Update Executable",
"yesDelete": "Yes, delete",
"yesDeleteFiles": "Yes, delete files",
"shutdownTimeout": "Shutdown Timeout",
"timeoutExplain1": "How long Crafty will wait for your server to shutdown after executing the",
"timeoutExplain2": "command before it forces the process down.",
"statsHint1": "The port your server is running on should go here. This is just how Crafty opens a connection to your server for stats.",
"statsHint2": "This does not change the port of your server. You must still change the port in your server config file.",
"ignoredExits": "Ignored Crash Exit Codes",
"ignoredExitsExplain": "Exit codes Crafty's Crash detection should ignore as a normal 'stop' (separated by commas)"
"stopBeforeDeleting": "Please stop the server before deleting it",
"timeoutExplain1": "How long Crafty will wait for your server to shutdown after executing the",
"timeoutExplain2": "command before it forces the process down.",
"update": "Update Executable",
"yesDelete": "Yes, delete",
"yesDeleteFiles": "Yes, delete files"
},
"serverConfigHelp": {
"desc": "Here is where you can change the configuration of your server",
@ -399,15 +399,15 @@
"backup": "Backup",
"config": "Config",
"files": "Files",
"filter": "Filter Logs",
"filterList": "Filtered Words",
"logs": "Logs",
"metrics": "Metrics",
"playerControls": "Player Management",
"reset": "Reset Scroll",
"schedule": "Schedule",
"serverDetails": "Server Details",
"terminal": "Terminal",
"metrics": "Metrics",
"reset": "Reset Scroll",
"filter": "Filter Logs",
"filterList": "Filtered Words"
"terminal": "Terminal"
},
"serverFiles": {
"clickUpload": "Click here to select your files",
@ -441,6 +441,11 @@
"waitUpload": "Please wait while we upload your files... This may take a while.",
"yesDelete": "Yes, I understand the consequences"
},
"serverMetrics": {
"resetZoom": "Reset Zoom",
"zoomHint1": "To zoom on the graph hold your shift key then use your scroll wheel.",
"zoomHint2": "Alternatively hold the shift key then click and drag the area you'd like to zoom in on."
},
"serverPlayerManagement": {
"bannedPlayers": "Banned Players",
"loadingBannedPlayers": "Loading Banned Players",
@ -448,7 +453,6 @@
},
"serverScheduleConfig": {
"backup": "Backup Server",
"select": "Basic / Cron / Chain Reaction Select",
"basic": "Basic",
"children": "Linked Child Tasks: ",
"command": "Command",
@ -469,35 +473,36 @@
"parent-explain": "Which schedule should trigger this one?",
"reaction": "Reaction",
"restart": "Restart Server",
"select": "Basic / Cron / Chain Reaction Select",
"start": "Start Server",
"stop": "Shutdown Server",
"time": "Time",
"time-explain": "What time do you want your schedule to execute?"
},
"serverSchedules": {
"scheduledTasks": "Scheduled Tasks",
"create": "Create New Schedule",
"name": "Name",
"action": "Action",
"command": "Command",
"interval": "Interval",
"nextRun": "Next Run",
"enabled": "Enabled",
"edit": "Edit",
"every": "Every",
"yes": "Yes",
"no": "No",
"cron": "Crong String",
"details": "Schedule Details",
"child": "Child of schedule with ID ",
"areYouSure": "Delete Scheduled Task?",
"close": "Close",
"delete": "Delete",
"cancel": "Cancel",
"cannotSee": "Not seeing everything?",
"cannotSeeOnMobile": "Try clicking on a scheduled task for full details.",
"child": "Child of schedule with ID ",
"close": "Close",
"command": "Command",
"confirm": "Confirm",
"confirmDelete": "Do you want to delete this scheduled task? This cannot be undone."
"confirmDelete": "Do you want to delete this scheduled task? This cannot be undone.",
"create": "Create New Schedule",
"cron": "Crong String",
"delete": "Delete",
"details": "Schedule Details",
"edit": "Edit",
"enabled": "Enabled",
"every": "Every",
"interval": "Interval",
"name": "Name",
"nextRun": "Next Run",
"no": "No",
"scheduledTasks": "Scheduled Tasks",
"yes": "Yes"
},
"serverStats": {
"cpuUsage": "CPU Usage",
@ -520,19 +525,14 @@
"commandInput": "Enter your command",
"delay-explained": "The service/agent has recently started and is delaying the start of the minecraft server instance",
"importing": "Importing...",
"installing": "Installing...",
"restart": "Restart",
"sendCommand": "Send command",
"start": "Start",
"starting": "Delayed-Start",
"stop": "Stop",
"stopScroll": "Stop Auto Scrolling",
"updating": "Updating...",
"installing": "Installing..."
},
"serverMetrics": {
"resetZoom": "Reset Zoom",
"zoomHint1": "To zoom on the graph hold your shift key then use your scroll wheel.",
"zoomHint2": "Alternatively hold the shift key then click and drag the area you'd like to zoom in on."
"updating": "Updating..."
},
"serverWizard": {
"absoluteServerPath": "Absolute path to your server",
@ -546,11 +546,10 @@
"defaultPort": "25565 default",
"downloading": "Downloading Server...",
"explainRoot": "Please click the button below to select your server's root dir inside of the archive",
"importing": "Importing Server...",
"importServer": "Import an Existing Server",
"importServerButton": "Import Server!",
"importZip": "Import from a Zip File",
"uploadZip": "Upload Zip File For Server Import",
"importing": "Importing Server...",
"labelZipFile": "Choose your Zip File",
"maxMem": "Maximum Memory",
"minMem": "Minimum Memory",
@ -562,20 +561,21 @@
"save": "Save",
"selectRole": "Select Role(s)",
"selectRoot": "Select Archive Root Dir",
"selectType": "Server Type (Vanilla, Servers, Modded, etc.)",
"selectServer": "Select a Server",
"selectType": "Server Type (Vanilla, Servers, Modded, etc.)",
"selectVersion": "Select a Version",
"selectZipDir": "Select the directory in the archive you want us to unzip files from",
"serverJar": "Server Executable File",
"serverName": "Server Name",
"serverPath": "Server Path",
"serverPort": "Server Port",
"serverType": "Server Type",
"serverSelect": "Server Select",
"serverVersion": "Server Version",
"serverType": "Server Type",
"serverUpload": "Upload Zipped Server",
"serverVersion": "Server Version",
"sizeInGB": "Size in GB",
"uploadButton": "Upload",
"uploadZip": "Upload Zip File For Server Import",
"zipPath": "Server Path"
},
"sidebar": {
@ -583,10 +583,10 @@
"credits": "Credits",
"dashboard": "Dashboard",
"documentation": "Documentation",
"inApp": "In App Docs",
"navigation": "Navigation",
"newServer": "Create New Server",
"servers": "Servers",
"inApp": "In App Docs"
"servers": "Servers"
},
"userConfig": {
"apiKey": "API Keys",
@ -598,9 +598,9 @@
"craftyPermDesc": "Crafty permissions this user has ",
"craftyPerms": "Crafty Permissons: ",
"created": "Created: ",
"delSuper": "You cannot delete a super user",
"deleteUser": "Delete user: ",
"deleteUserB": "Delete User",
"delSuper": "You cannot delete a super user",
"enabled": "Enabled",
"gravDesc": "This email is strictly for use with Gravatar™. Crafty will not, under any circumstance make use of this email for anything other than looking up your Gravatar™",
"gravEmail": "Gravatar™ Email",
@ -608,6 +608,7 @@
"lastLogin": "Last Login: ",
"lastUpdate": "Last Update: ",
"leaveBlank": "To edit user without changing password leave it blank.",
"manager": "Manager",
"member": "Member?",
"notExist": "You cannot delete something that doesn't exist!",
"pageTitle": "Edit User",
@ -616,39 +617,38 @@
"permName": "Permission Name",
"repeat": "Repeat Password",
"roleName": "Role Name",
"selectManager": "Select Manager for User",
"super": "Super User",
"userLang": "User Language",
"userTheme": "UI Theme",
"userName": "User Name",
"userNameDesc": "What do you want to call this user?",
"userRoles": "User Roles",
"userRolesDesc": "Roles this user is a member of.",
"userSettings": "User Settings",
"uses": "Number of uses allowed (-1==No Limit)",
"manager": "Manager",
"selectManager": "Select Manager for User"
"userTheme": "UI Theme",
"uses": "Number of uses allowed (-1==No Limit)"
},
"webhooks": {
"webhooks": "Webhooks",
"name": "Name",
"type": "Webhook Type",
"trigger": "Trigger",
"enabled": "Enabled",
"url": "Webhook URL",
"bot_name": "Bot Name",
"webhook_body": "Webhook Body",
"color": "Select Color Accent",
"areYouSureDel": "Are you sure you want to delete this webhook?",
"areYouSureRun": "Are you sure you want to test this webhook?",
"backup_server": "Server Backup Completed",
"bot_name": "Bot Name",
"color": "Select Color Accent",
"crash_detected": "Server Crashed",
"edit": "Edit",
"run": "Test Run Webhook",
"enabled": "Enabled",
"jar_update": "Server Executable Updated",
"kill": "Server Killed",
"name": "Name",
"new": "New Webhook",
"run": "Test Run Webhook",
"send_command": "Server Command Received",
"start_server": "Server Started",
"stop_server": "Server Stopped",
"crash_detected": "Server Crashed",
"jar_update": "Server Executable Updated",
"backup_server": "Server Backup Completed",
"send_command": "Server Command Received",
"kill": "Server Killed"
"trigger": "Trigger",
"type": "Webhook Type",
"url": "Webhook URL",
"webhook_body": "Webhook Body",
"webhooks": "Webhooks"
}
}

View File

@ -16,8 +16,8 @@
"buttons": "Botones",
"config": "Configuración",
"crafty": "Crafty: ",
"created": "Creado",
"createNew": "Crear un nuevo Token de API",
"created": "Creado",
"deleteKeyConfirmation": "¿Quieres eliminar esta clave de API? Esto no se puede deshacer.",
"deleteKeyConfirmationTitle": "¿Eliminar la clave API ${keyId}?",
"getToken": "Conseguir un Token",
@ -53,6 +53,20 @@
"translationTitle": "Traduccion de Idiomas",
"translator": "Traductores"
},
"customLogin": {
"apply": "Aplicar",
"backgroundUpload": "Subir imagen de fondo",
"customLoginPage": "Personalizar la página de logueo",
"delete": "Eliminar",
"labelLoginImage": "Elige tu fondo para la pantalla de logueo",
"loginBackground": "Imagen de fondo de logueo",
"loginImage": "Subir una imagen de fondo para la pantalla de logueo.",
"loginOpacity": "Seleccionar la opacidad de la ventana de logueo",
"pageTitle": "Página de logueo personalizada",
"preview": "Previsualizar",
"select": "Seleccionar",
"selectImage": "Seleccionar una imagen"
},
"dashboard": {
"actions": "Acciones",
"allServers": "Todos los servidores",
@ -75,6 +89,7 @@
"dashboard": "Panel de control",
"delay-explained": "El agente/servicio inicio recientemente y está retrasando el inicio de la instancia del servidor de Minecraft.",
"host": "Host",
"installing": "Instalando...",
"kill": "Matar Proceso",
"killing": "Cerrando el proceso...",
"lastBackup": "Último:",
@ -97,10 +112,9 @@
"status": "Estado",
"stop": "Detener",
"version": "Versión",
"welcome": "Bienvenido a Crafty Controller",
"installing": "Instalando..."
"welcome": "Bienvenido a Crafty Controller"
},
"datatables": {
"datatables": {
"i18n": {
"aria": {
"sortAscending": ": activar para ordenar las columnas de manera ascendente",
@ -120,8 +134,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Mostrar 1 fila",
"-1": "Mostrar todas las filas",
"1": "Mostrar 1 fila",
"_": "Mostrar %d filas"
},
"pdf": "PDF",
@ -165,35 +179,35 @@
}
},
"error": {
"agree": "Aceptar",
"bedrockError": "Descargas de Bedrock no disponibles. por favor, compruebe",
"cancel": "Cancelar",
"contact": "Contacta el soporte de Crafty Control desde Discord",
"craftyStatus": "Página de estados de Crafty",
"cronFormat": "Detectado formato CRON invalido",
"embarassing": "¡Oh cielos! Esto es embarazoso.",
"error": "Error!",
"eulaAgree": "¿Estás de acuerdo?",
"eulaMsg": "Debes aceptar el ",
"privMsg": "y el ",
"eulaTitle": "Aceptar EULA",
"agree": "Aceptar",
"cancel": "Cancelar",
"fileError": "El tipo de archivo debe ser una imagen.",
"fileTooLarge": "Subida fallida. El archivo es demasiado grande. Contacte al administrador del sistema para obtener asistencia.",
"hereIsTheError": "Aquí está el error.",
"internet": "Hemos detectado que la máquina ejecutando Crafty no tiene acceso a internet. Las conexiones de cliente al servidor podrían ser limitadas.",
"no-file": "No se puede encontrar el archivo solicitado. Verifique la dirección. ¿Quizas Crafty no tiene los permisos adecuados?",
"noJava": "Servidor {} no pudo iniciarse: Detectamos que Java no está instalado, Por favor instale java e inicie el servidor.",
"installerJava": "Fallo al instalar {} : La instalación de Forge requiere Java. Detectamos que Java no está instalado. Por favor instale java e inicie el servidor.",
"not-downloaded": "No podemos encontrar el archivo ejecutable. ¿Ha terminado de descargarse? ¿Están los permisos puestos como ejecutable?",
"portReminder": "Detectamos que es la primera vez que se inicia {}. Asegúrese de configurar el puerto {} a través de su router/firewall para hacer el servidor accesible por Internet.",
"start-error": "Servidor {} fallo al iniciar con código de error: {}",
"terribleFailure": "¡Un terrible error!",
"superError": "Debes ser un super usuario para completar esta acción.",
"fileError": "El tipo de archivo debe ser una imagen.",
"internet": "Hemos detectado que la máquina ejecutando Crafty no tiene acceso a internet. Las conexiones de cliente al servidor podrían ser limitadas.",
"migration": "El almacenamiento del servidor principal de Crafty se está migrando a una nueva ubicación. El inicio de servidores se han suspendido durante este periodo. Espere mientras finalizamos esta migración.",
"no-file": "No se puede encontrar el archivo solicitado. Verifique la dirección. ¿Quizas Crafty no tiene los permisos adecuados?",
"noInternet": "Crafty tiene problemas para acceder a Internet. La creación del servidor ha sido deshabilitada. Verifique su conexión a Internet y actualice esta página.Crafty tiene problemas para acceder a Internet. La creación del servidor ha sido deshabilitada. Verifique su conexión a Internet y actualice esta página.",
"noJava": "Servidor {} no pudo iniciarse: Detectamos que Java no está instalado, Por favor instale java e inicie el servidor.",
"not-downloaded": "No podemos encontrar el archivo ejecutable. ¿Ha terminado de descargarse? ¿Están los permisos puestos como ejecutable?",
"portReminder": "Detectamos que es la primera vez que se inicia {}. Asegúrese de configurar el puerto {} a través de su router/firewall para hacer el servidor accesible por Internet.",
"privMsg": "y el ",
"serverJars1": "API de Servidor JAR no disponible. por favor, compruebe",
"bedrockError": "Descargas de Bedrock no disponibles. por favor, compruebe",
"craftyStatus": "Página de estados de Crafty",
"serverJars2": "para la información más actualizada.",
"cronFormat": "Detectado formato CRON invalido",
"noInternet": "Crafty tiene problemas para acceder a Internet. La creación del servidor ha sido deshabilitada. Verifique su conexión a Internet y actualice esta página.Crafty tiene problemas para acceder a Internet. La creación del servidor ha sido deshabilitada. Verifique su conexión a Internet y actualice esta página."
},
"start-error": "Servidor {} fallo al iniciar con código de error: {}",
"superError": "Debes ser un super usuario para completar esta acción.",
"terribleFailure": "¡Un terrible error!"
},
"footer": {
"allRightsReserved": "Todos los derechos reservados",
"copyright": "Copyright",
@ -222,45 +236,31 @@
"panelConfig": {
"adminControls": "Controles de administrador",
"allowedServers": "Servidores Permitidos",
"apply": "Aplicar",
"assignedRoles": "Grupos asignados",
"cancel": "Cancelar",
"clearComms": "Limpiar comandos sin ejecutar.",
"select": "Seleccionar",
"apply": "Aplicar",
"delete": "Eliminar",
"edit": "Editar",
"enableLang": "Activar todos los Idiomas",
"enabled": "Habilitado",
"match": "Las contraseñas deben coincidir",
"globalExplain": "Donde Crafty almacena todos los archivos de tu servidor. (Juntaremos la ruta con /servers/[uuid de servidor])",
"globalServer": "Directorio Global de Servidores",
"match": "Las contraseñas deben coincidir",
"newRole": "Agregar nuevo Grupo",
"newUser": "Agregar nuevo Usuario",
"noMounts": "No mostrar Montajes en panel de Control",
"pageTitle": "Configuración del panel",
"role": "Grupo",
"roles": "Grupos",
"roleUsers": "Usuarios del Grupo",
"roles": "Grupos",
"save": "Guardar",
"select": "Seleccionar",
"superConfirm": "Proceder solamente si quieres que este usuario tenga acceso a TODO (todas las cuentas de usuarios, servidores, configuración del panel, etc.) Hasta puede quitarte tu permiso de super usuario.",
"superConfirmTitle": "¿Activar super usuario? ¿Seguro?",
"user": "Usuario",
"users": "Usuarios",
"title": "Configuración de Crafty",
"enableLang": "Activar todos los Idiomas",
"noMounts": "No mostrar Montajes en panel de Control",
"globalServer": "Directorio Global de Servidores",
"globalExplain": "Donde Crafty almacena todos los archivos de tu servidor. (Juntaremos la ruta con /servers/[uuid de servidor])"
},
"customLogin": {
"customLoginPage": "Personalizar la página de logueo",
"loginImage": "Subir una imagen de fondo para la pantalla de logueo.",
"labelLoginImage": "Elige tu fondo para la pantalla de logueo",
"backgroundUpload": "Subir imagen de fondo",
"loginBackground": "Imagen de fondo de logueo",
"loginOpacity": "Seleccionar la opacidad de la ventana de logueo",
"select": "Seleccionar",
"apply": "Aplicar",
"delete": "Eliminar",
"selectImage": "Seleccionar una imagen",
"preview": "Previsualizar",
"pageTitle": "Página de logueo personalizada"
"user": "Usuario",
"users": "Usuarios"
},
"rolesConfig": {
"config": "Configuración de grupos",
@ -287,9 +287,11 @@
"serversDesc": "Servidores a los que este grupo puede acceder"
},
"serverBackups": {
"after": "Comando ejecutado después del respaldo",
"backupAtMidnight": "¿Copia de seguridad automática a medianoche?",
"backupNow": "¡Respalde ahora!",
"backupTask": "Se ha iniciado una tarea de copia de seguridad.",
"before": "Comando ejecutado antes del respaldo",
"cancel": "Cancelar",
"clickExclude": "Click para seleccionar las Exclusiones",
"compress": "Comprimir la copia",
@ -313,15 +315,13 @@
"shutdown": "Apagar el servidor durante la duración de la copia del respaldo.",
"size": "Tamaño",
"storageLocation": "Ubicación de almacenamiento",
"storageLocationDesc": "¿Dónde quieres almacenar las copias de seguridad?",
"before": "Comando ejecutado antes del respaldo",
"after": "Comando ejecutado después del respaldo"
},
"storageLocationDesc": "¿Dónde quieres almacenar las copias de seguridad?"
},
"serverConfig": {
"bePatientDelete": "Tenga paciencia mientras eliminamos su servidor del panel de Crafty. Esta pantalla se cerrará en unos momentos.",
"bePatientDeleteFiles": "Tenga paciencia mientras eliminamos su servidor del panel de Crafty y eliminamos todos los archivos. Esta pantalla se cerrará en unos momentos.",
"bePatientUpdate": "Tenga paciencia mientras actualizamos el servidor. El tiempo de descarga puede variar según la velocidad del Internet...<br /> Esta pantalla se actualizará en unos momentos.",
"cancel": "Cancelar",
"cancel": "Cancelar",
"crashTime": "Tiempo de espera por crasheo",
"crashTimeDesc": "¿Cuanto tiempo esperar para considerar el servidor como crasheado?",
"deleteFilesQuestion": "¿Eliminar archivos del servidor del host?",
@ -331,6 +331,8 @@
"deleteServerQuestionMessage": "¿Estás seguro de que desea eliminar este servidor? Después de esto no hay vuelta atrás...",
"exeUpdateURL": "URL de actualización para el ejecutable del Servidor",
"exeUpdateURLDesc": "URL de descarga directa para actualizaciones.",
"ignoredExits": "Codigos de salida al crashear ignorados",
"ignoredExitsExplain": "Codigos de salida que Crafty deberia ignorar como un 'apagado' normal (separarados por comas)",
"javaNoChange": "No sobrescribir",
"javaVersion": "Sobrescribir versión de Java.",
"javaVersionDesc": "Si vas a sobrescribir la versión de Java, Asegúrese de rodear la ubicación con comillas. (Variable predeterminada 'java' excluida)",
@ -360,19 +362,17 @@
"serverPort": "Puerto del Servidor",
"serverPortDesc": "Puerto al que Crafty debería conectarse para obtener estadísticas",
"serverStopCommand": "Comando de detención del Servidor",
"serverStopCommandDesc": "Comando que enviar al programa para detener el servidor.",
"serverStopCommandDesc": "Comando que enviar al programa para detener el servidor.",
"showStatus": "Mostrar en la pagina de estados publicos",
"stopBeforeDeleting": "Por favor, detenga el servidor antes de eliminarlo.",
"update": "Actualizar Ejecutable",
"yesDelete": "Sí, borralo.",
"yesDeleteFiles": "Sí, borra los archivos.",
"shutdownTimeout": "Tiempo de espera al apagar",
"timeoutExplain1": "Cuánto tiempo esperará Crafty a que su servidor se apague después de ejecutar el",
"timeoutExplain2": "comando antes de forzar cerrar el proceso.",
"shutdownTimeout": "Tiempo de espera al apagar",
"statsHint1": "El puerto que ejecuta su servidor debe ir aquí. Crafty abre una conexión a su servidor para obtener estadísticas.",
"statsHint2": "Esto no cambia el puerto de su servidor. Aún debe cambiar el puerto en el archivo de configuración de su servidor.",
"ignoredExits": "Codigos de salida al crashear ignorados",
"ignoredExitsExplain": "Codigos de salida que Crafty deberia ignorar como un 'apagado' normal (separarados por comas)"
"stopBeforeDeleting": "Por favor, detenga el servidor antes de eliminarlo.",
"timeoutExplain1": "Cuánto tiempo esperará Crafty a que su servidor se apague después de ejecutar el",
"timeoutExplain2": "comando antes de forzar cerrar el proceso.",
"update": "Actualizar Ejecutable",
"yesDelete": "Sí, borralo.",
"yesDeleteFiles": "Sí, borra los archivos."
},
"serverConfigHelp": {
"desc": "Aquí es donde puede cambiar la configuración de su servidor",
@ -395,15 +395,15 @@
"backup": "Respaldos",
"config": "Configuración",
"files": "Archivos",
"filter": "Filtrar Registros",
"filterList": "Palabras filtradas",
"logs": "Registros",
"metrics": "Métricas",
"playerControls": "Gestionar jugadores",
"reset": "Reiniciar Desplazamiento",
"schedule": "Programar Tareas",
"serverDetails": "Detalles del Servidor",
"terminal": "Terminal",
"metrics": "Métricas",
"reset": "Reiniciar Desplazamiento",
"filter": "Filtrar Registros",
"filterList": "Palabras filtradas"
"terminal": "Terminal"
},
"serverFiles": {
"clickUpload": "Click aquí para seleccionar tus archivos",
@ -437,6 +437,11 @@
"waitUpload": "Espera mientras subimos tus archivos... Esto puede tomar un tiempo.",
"yesDelete": "Sí, entiendo las consecuencias"
},
"serverMetrics": {
"resetZoom": "Reiniciar Zoom",
"zoomHint1": "Para hacer zoom en el gráfico, mantén presionada la tecla shift y luego usa la rueda de desplazamiento.",
"zoomHint2": "Alternativamente, mantén presionada la tecla shift, luego haz click y arrastra el área en la que deseas hacer zoom."
},
"serverPlayerManagement": {
"bannedPlayers": "Jugadores Baneados",
"loadingBannedPlayers": "Cargando jugadores baneados",
@ -444,7 +449,6 @@
},
"serverScheduleConfig": {
"backup": "Respaldar Servidor",
"select": "Básico, / Cron / En cadena",
"basic": "Básico",
"children": "Tareas 'hijos' enlazados: ",
"command": "Comando",
@ -465,35 +469,36 @@
"parent-explain": "¿Qué tarea programada debería activar esta?",
"reaction": "Reacción",
"restart": "Reiniciar el Servidor",
"select": "Básico, / Cron / En cadena",
"start": "Iniciar el Servidor",
"stop": "Apagar el Servidor",
"time": "Horario",
"time-explain": "¿A que hora quiere que la tarea programada se ejecute?"
},
"serverSchedules": {
"scheduledTasks": "Tareas programadas",
"create": "Crear nueva tarea programada",
"name": "Nombre",
"action": "Acción",
"command": "Comando",
"interval": "Intervalo",
"nextRun": "Siguiente ejecución",
"enabled": "Habilitado",
"edit": "Editar",
"every": "Cada",
"yes": "Sí",
"no": "No",
"cron": "Cadena CRON",
"details": "Detalles de la tarea",
"child": "Tarea hija con ID ",
"areYouSure": "¿Borrar tarea programada?",
"close": "Cerrar",
"delete": "Eliminar",
"cancel": "Cancelar",
"cannotSee": "¿No puede ver todo?",
"cannotSeeOnMobile": "Intente hacer click en una tarea programada para obtener todos los detalles.",
"child": "Tarea hija con ID ",
"close": "Cerrar",
"command": "Comando",
"confirm": "Confirmar",
"confirmDelete": "¿De verdad desea eliminar esta tarea programada? Esto no se puede deshacer."
"confirmDelete": "¿De verdad desea eliminar esta tarea programada? Esto no se puede deshacer.",
"create": "Crear nueva tarea programada",
"cron": "Cadena CRON",
"delete": "Eliminar",
"details": "Detalles de la tarea",
"edit": "Editar",
"enabled": "Habilitado",
"every": "Cada",
"interval": "Intervalo",
"name": "Nombre",
"nextRun": "Siguiente ejecución",
"no": "No",
"scheduledTasks": "Tareas programadas",
"yes": "Sí"
},
"serverStats": {
"cpuUsage": "Uso de CPU",
@ -516,19 +521,14 @@
"commandInput": "Introducir tu comando",
"delay-explained": "El agente/servicio se inicio recientemente y está retrasando iniciar la instancia del servidor de Minecraft.",
"downloading": "Descargando...",
"installing": "Instalando...",
"restart": "Reiniciar",
"sendCommand": "Enviar comando",
"start": "Iniciar",
"starting": "Inicio-retrasado",
"stop": "Detener",
"stopScroll": "Detener Desplazamiento automático",
"updating": "Actualizando...",
"installing": "Instalando..."
},
"serverMetrics": {
"resetZoom": "Reiniciar Zoom",
"zoomHint1": "Para hacer zoom en el gráfico, mantén presionada la tecla shift y luego usa la rueda de desplazamiento.",
"zoomHint2": "Alternativamente, mantén presionada la tecla shift, luego haz click y arrastra el área en la que deseas hacer zoom."
"updating": "Actualizando..."
},
"serverWizard": {
"absoluteServerPath": "Ruta absoluta del servidor",
@ -542,13 +542,12 @@
"defaultPort": "25565 (Por defecto)",
"downloading": "Descargando Servidor...",
"explainRoot": "Por favor, haga click en el botón debajo para seleccionar el directorio raíz de su servidor.",
"importing": "Importando Servidor...",
"importServer": "Importar Servidor existente",
"importServerButton": "¡Importar Servidor!",
"importZip": "Importar desde archivo Zip",
"uploadZip": "Subir archivo Zip para importar servidor",
"importing": "Importando Servidor...",
"labelZipFile": "Elige tu archivo Zip",
"maxMem": "Memoria máxima",
"maxMem": "Memoria máxima",
"minMem": "Memoria mínima",
"myNewServer": "Mi nuevo Servidor",
"newServer": "Crear Servidor",
@ -566,10 +565,11 @@
"serverPath": "Ruta del servidor",
"serverPort": "Puerto del servidor",
"serverType": "Tipo de servidor",
"serverVersion": "Versión del servidor",
"serverUpload": "Subir servidor comprimido",
"serverVersion": "Versión del servidor",
"sizeInGB": "Tamaño en GB",
"uploadButton": "Subir",
"uploadZip": "Subir archivo Zip para importar servidor",
"zipPath": "Ruta del servidor"
},
"sidebar": {
@ -577,10 +577,10 @@
"credits": "Créditos",
"dashboard": "Panel de control",
"documentation": "Documentación",
"inApp": "Documentación de la Aplicación",
"navigation": "Navegación",
"newServer": "Crear nuevo Servidor",
"servers": "Servidores",
"inApp": "Documentación de la Aplicación"
"servers": "Servidores"
},
"userConfig": {
"apiKey": "Claves API",
@ -592,9 +592,9 @@
"craftyPermDesc": "Permisos de Crafty que tiene este usuario.",
"craftyPerms": "Permisos de Crafty: ",
"created": "Creado: ",
"delSuper": "No puedes eliminar un super usuario",
"deleteUser": "Eliminar Usuario: ",
"deleteUserB": "Eliminar Usuario",
"delSuper": "No puedes eliminar un super usuario",
"enabled": "Habilitado",
"gravDesc": "Este mail será utilizado únicamente para obtener el Gravatar. Crafty no utilizará esta información bajo otra circunstancia aparte de obtener el Gravatar™",
"gravEmail": "Gravatar™ Email",
@ -602,6 +602,7 @@
"lastLogin": "Última Sesión: ",
"lastUpdate": "Última Actualización: ",
"leaveBlank": "Para editar el usuario sin cambiar la contraseña, dejar en blanco.",
"manager": "Administrador",
"member": "¿Miembro?",
"notExist": "¡No se puede eliminar algo que no existe!",
"pageTitle": "Editar Usuario.",
@ -610,16 +611,15 @@
"permName": "Nombre del Permiso",
"repeat": "Repita la contraseña.",
"roleName": "Nombre del grupo.",
"selectManager": "Seleccionar Administrador para Usuario",
"super": "Super Usuario",
"userLang": "Idioma del usuario.",
"userTheme": "Tema de Interfaz",
"userName": "Nombre de usuario.",
"userNameDesc": "¿Como quieres llamar a este usuario?",
"userRoles": "Grupos del usuario.",
"userRolesDesc": "Grupos a los que este usuario pertenece.",
"userSettings": "Configuración de Usuario.",
"uses": "Número de usos permitidos. (Sin límite: -1)",
"manager": "Administrador",
"selectManager": "Seleccionar Administrador para Usuario"
"userTheme": "Tema de Interfaz",
"uses": "Número de usos permitidos. (Sin límite: -1)"
}
}

View File

@ -16,8 +16,8 @@
"buttons": "Painikkeet",
"config": "Asetukset",
"crafty": "Crafty: ",
"created": "Luotu",
"createNew": "Luo uusi API-avain",
"created": "Luotu",
"deleteKeyConfirmation": "Haluatko varmasti poistaa tämän API-avaimen? Tämä on peruuttamaton toimenpide!",
"deleteKeyConfirmationTitle": "Poistetaanko API-avain ${keyId}?",
"getToken": "Hanki API-avain",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Näytä yksi rivi",
"-1": "Näytä kaikki rivit",
"1": "Näytä yksi rivi",
"_": "Näytä %d riviä"
},
"pdf": "PDF",
@ -238,8 +238,8 @@
"newUser": "Luo uusi käyttäjä",
"pageTitle": "Paneelin asetukset",
"role": "Rooli",
"roles": "Roolit",
"roleUsers": "Roolin käyttäjät",
"roles": "Roolit",
"save": "Tallenna",
"superConfirm": "Jatka vain, jos haluat, että tällä käyttäjällä on pääsy KAIKKEEN (kaikki käyttäjätilit, palvelimet, paneelin asetukset jne.). Hän voi jopa poistaa sinun järjestelmänvalvojan oikeutesi.",
"superConfirmTitle": "Otetaanko järjestelmänvalvojan oikeudet käyttöön? Oletko varma?",
@ -488,10 +488,10 @@
"defaultPort": "Oletusarvo 25565",
"downloading": "Lataamme palvelinta...",
"explainRoot": "Napsauta alla olevaa painiketta valitaksesi palvelimesi juurihakemiston arkistosta",
"importing": "Tuomme palvelinta...",
"importServer": "Tuo olemassa oleva palvelin",
"importServerButton": "Tuo palvelin!",
"importZip": "Tuo zip-tiedostosta",
"importing": "Tuomme palvelinta...",
"maxMem": "Maximi Muisti",
"minMem": "Minimi Muisti",
"myNewServer": "Minun uusi palvelin",
@ -533,9 +533,9 @@
"craftyPermDesc": "Craftyn oikeuksia, joita tällä käyttäjällä on",
"craftyPerms": "Craftyn oikeudet: ",
"created": "Luotu: ",
"delSuper": "Et voi poistaa järjestelmänvalvojaa!",
"deleteUser": "Poista käyttäjä: ",
"deleteUserB": "Poista käyttäjä",
"delSuper": "Et voi poistaa järjestelmänvalvojaa!",
"enabled": "Päällä",
"gravDesc": "Tämä shäköposti on vain Gravatar™-palvelun käyttöön. Crafty ei missään olosuhteissa käytä tätä sähköpostia muuhun kuin Gravatar™-tietojesi etsimiseen",
"gravEmail": "Gravatar™ Sähköposti",

View File

@ -16,8 +16,8 @@
"buttons": "Boutons",
"config": "Configuration",
"crafty": "Crafty: ",
"created": "Crée",
"createNew": "Créer un nouveau Jeton d'API",
"created": "Crée",
"deleteKeyConfirmation": "Es-tu sûr de vouloir supprimer cette clé API? Tu ne pourras plus revenir en arrière.",
"deleteKeyConfirmationTitle": "Supprimer la clé API ${keyId}?",
"getToken": "Obtenir un Jeton",
@ -75,6 +75,7 @@
"dashboard": "Tableau de Bord",
"delay-explained": "Le service/agent a récemment démarré et retarde le démarrage de l'instance du serveur minecraft",
"host": "Hôte",
"installing": "Installation ...",
"kill": "Tuer le processus",
"killing": "Processus de mise à mort...",
"lastBackup": "Dernier:",
@ -97,8 +98,7 @@
"status": "Statut",
"stop": "Arrêter",
"version": "Version",
"welcome": "Bienvenue sur Crafty Controller",
"installing": "Installation ..."
"welcome": "Bienvenue sur Crafty Controller"
},
"datatables": {
"i18n": {
@ -120,8 +120,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Afficher 1 ligne",
"-1": "Afficher toutes les lignes",
"1": "Afficher 1 ligne",
"_": "Afficher %d lignes"
},
"pdf": "PDF",
@ -215,8 +215,8 @@
"newUser": "Ajouter un Nouvel Utilisateur",
"pageTitle": "Panneau de Configuration",
"role": "Rôle",
"roles": "Roles",
"roleUsers": "Rôles Utilisteurs",
"roles": "Roles",
"save": "Enregister",
"superConfirm": "Utiliser seulement si tu veux que cet utilisateur ait accès à ABSOLUMENT TOUT (tous les comptes, tous les serveurs, panneau de configuration, etc). Ils peuvent même supprimer tes droits superuser.",
"superConfirmTitle": "Activer le superuser ? Es-tu sûr ?",
@ -384,6 +384,11 @@
"waitUpload": "Merci de patienter pendant que nous téléversons tes fichiers... Cela peut prendre un certain temps.",
"yesDelete": "Oui, je comprends les conséquences"
},
"serverMetrics": {
"resetZoom": "Reset Zoom",
"zoomHint1": "Pour zoomer le graphique, maintenir la touche SHIFT et utiliser la molette de la souris.",
"zoomHint2": "Il est aussi possible de maintenir la touche SHIFT puis de clicker et déplacer la zone sur laquelle zoomer."
},
"serverPlayerManagement": {
"bannedPlayers": "Joueurs Bannins",
"loadingBannedPlayers": "Chargement des Joueurs Bannis",
@ -445,19 +450,14 @@
"commandInput": "Entre ta commande",
"delay-explained": "Le service/agent a récemment démarré et retarde le démarrage de l'instance du serveur minecraft",
"downloading": "Téléchargement ...",
"installing": "Installation ...",
"restart": "Redémarrer",
"sendCommand": "Envoiyer commande",
"start": "Démarrer",
"starting": "Démarrage retardé",
"stop": "Arrêter",
"stopScroll": "Stopper l'Auto Défilement",
"updating": "Mise à Jour ...",
"installing": "Installation ..."
},
"serverMetrics": {
"resetZoom": "Reset Zoom",
"zoomHint1": "Pour zoomer le graphique, maintenir la touche SHIFT et utiliser la molette de la souris.",
"zoomHint2": "Il est aussi possible de maintenir la touche SHIFT puis de clicker et déplacer la zone sur laquelle zoomer."
"updating": "Mise à Jour ..."
},
"serverWizard": {
"absoluteServerPath": "Chemin absolu de Votre Serveur",
@ -471,10 +471,10 @@
"defaultPort": "25565 par défaut",
"downloading": "Téléchargement du Serveur ...",
"explainRoot": "Merci de clicker sur le bouton ci-dessous pour sélectionner le dossier du server contenu dans l'Archive",
"importing": "Importation du Serveur ...",
"importServer": "Importer un Serveur Existant",
"importServerButton": "Importer Serveur !",
"importZip": "Importer depuis un Fichier Zip",
"importing": "Importation du Serveur ...",
"maxMem": "Mémoire Maximum",
"minMem": "Mémoire Minimum",
"myNewServer": "Mon Nouveau Serveur",
@ -516,9 +516,9 @@
"craftyPermDesc": "Les permisisons de l'Utilisateur pour Crafty ",
"craftyPerms": "Permissions de Crafty : ",
"created": "Crée le : ",
"delSuper": "Tu ne peux pas supprimer un Super Utilisateur",
"deleteUser": "Supprimer Utilisateur : ",
"deleteUserB": "Supprimer l'Utilisateur",
"delSuper": "Tu ne peux pas supprimer un Super Utilisateur",
"enabled": "Activé",
"gravDesc": "Cet email est strictement réservé pour être utiliser avec Gravatar™. En aucune circonstances Crafty n'utilisera cet email pour autre chose que trouver ton Gravatar™",
"gravEmail": "Email Gravatar™",

View File

@ -16,8 +16,8 @@
"buttons": "Knoppen",
"config": "Konfiguraasje",
"crafty": "Crafty: ",
"created": "Oanmakke",
"createNew": "Meitsje nij API-token",
"created": "Oanmakke",
"deleteKeyConfirmation": "Wolle jo dizze API-kaai wiskje? Dit kin net ûngedien makke wurde.",
"deleteKeyConfirmationTitle": "API-kaai ${keyId} wiskje?",
"getToken": "Krije in token",
@ -40,12 +40,12 @@
"pageDescription": "Sûnder dizze minsken soene jo Crafty net hawwe",
"pageTitle": "Credits",
"patreonDesc": "oan ús Patreon / Ko-fi-supporters!",
"subscriptionLevel": "Nivel",
"subscriberName": "Namme",
"patreonOther": "Oare",
"patreonSupporter": "Patreon / Ko-fi Supporters",
"patreonUpdate": "Lêste update:",
"retiredStaff": "Pensionearre staff",
"subscriberName": "Namme",
"subscriptionLevel": "Nivel",
"supportTeam": "Support- en dokumintaasjeteam",
"thankYou": "TANK JOU",
"translationDesc": "oan ús mienskip dy't oerset!",
@ -118,8 +118,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Lit 1 rigel sjen",
"-1": "Lit alle rigels sjen",
"1": "Lit 1 rigel sjen",
"_": "%d rigels sjen litte"
},
"pdf": "PDF",
@ -212,8 +212,8 @@
"newUser": "Nije brûker tafoegje",
"pageTitle": "Paneelkonfiguraasje",
"role": "Rol",
"roles": "Rollen",
"roleUsers": "Rol brûkers",
"roles": "Rollen",
"save": "Opslaan",
"superConfirm": "Gean allinich troch as jo wolle dat dizze brûker tagong hat ta ALLES (alle brûkersakkounts, servers, panielynstellingen, ensfh.). Se kinne sels jo superuser-rjochten ynlûke.",
"superConfirmTitle": "Superbrûker ynskeakelje? Binne jo wis?",
@ -457,10 +457,10 @@
"defaultPort": "25565 standert",
"downloading": "Server ynlade...",
"explainRoot": "Klikje asjebleaft op de knop hjirûnder om de root-map fan jo server yn it argyf te selektearjen",
"importing": "Server ymportearje...",
"importServer": "Ymportearje in besteande server",
"importServerButton": "Server ymportearje!",
"importZip": "Ymportearje út in zip-bestân",
"importing": "Server ymportearje...",
"maxMem": "Maksimum memory",
"minMem": "Minimum memory",
"myNewServer": "Myn nije server",
@ -502,9 +502,9 @@
"craftyPermDesc": "Crafty tastimmingen dizze brûker hat ",
"craftyPerms": "Crafty tastimmingen: ",
"created": "Oanmakke: ",
"delSuper": "Jo kinne in superbrûker net wiskje",
"deleteUser": "Wiskje brûker: ",
"deleteUserB": "Wiskje brûker",
"delSuper": "Jo kinne in superbrûker net wiskje",
"enabled": "Ynskeakele",
"gravDesc": "Dizze e-post is strikt foar gebrûk mei Gravatar™. Crafty sil dizze e-post ûnder gjin inkelde omstannichheid brûke foar wat oars as it opsykjen fan jo Gravatar™",
"gravEmail": "Gravatar™ e-post",

View File

@ -16,8 +16,8 @@
"buttons": "כפתורים",
"config": "הגדרה",
"crafty": "קראפטי: ",
"created": "נוצר",
"createNew": "חדש API צור מפתח",
"created": "נוצר",
"deleteKeyConfirmation": "האם ברצונך למחוק מפתח API זה? אי אפשר לבטל את זה.",
"deleteKeyConfirmationTitle": "? ${keyId} API-להסיר את מפתח ה",
"getToken": "קבלת אסימון",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "הצגת שורה אחת",
"-1": "הצגת כל השורות",
"1": "הצגת שורה אחת",
"_": "הצג %d שורות"
},
"pdf": "PDF",
@ -214,8 +214,8 @@
"newUser": "הוספת משתמש חדש",
"pageTitle": "הגדרת פאנל",
"role": "תפקיד",
"roles": "תפקידים",
"roleUsers": "תפקידי משתמשים",
"roles": "תפקידים",
"save": "שמירה",
"superConfirm": "המשיכו רק אם אתם רוצים שלמשתמש זה תהיה גישה להכל (כל חשבונות המשתמש, השרתים, הגדרות הפאנל וכו'). הם יכולים אפילו למחוק את זכויות משתמש העל שלך.",
"superConfirmTitle": "להפעיל משתמש-על? האם אתם בטוחים?",
@ -464,10 +464,10 @@
"defaultPort": "25565 ברירת מחדל",
"downloading": "מוריד שרת...",
"explainRoot": "אנא לחץ על הלחצן למטה כדי לבחור את ה-root dir של השרת שלך בתוך הארכיון",
"importing": "מייבא שרת...",
"importServer": "ייבוא שרת קיים",
"importServerButton": "ייבוא שרת!",
"importZip": "ייבוא מקובץ Zip",
"importing": "מייבא שרת...",
"maxMem": "מקסימום זיכרון",
"minMem": "מינימום זיכרון",
"myNewServer": "השרת החדש שלי",
@ -509,9 +509,9 @@
"craftyPermDesc": "הרשאות קראפטי יש למשתמש הזה ",
"craftyPerms": "הרשאות קראפטי: ",
"created": "נוצר: ",
"delSuper": "אינך יכול למחוק משתמש-על",
"deleteUser": "מחק משתמש: ",
"deleteUserB": "מחק משתמש",
"delSuper": "אינך יכול למחוק משתמש-על",
"enabled": "מופעל",
"gravDesc": "אימייל זה מיועד אך ורק לשימוש עם Gravatar™. קראפטי לא תשתמש בשום מקרה באימייל זה לשום דבר מלבד חיפוש Gravatar™ שלך",
"gravEmail": "אימייל Gravatar™",

View File

@ -16,8 +16,8 @@
"buttons": "Tipke",
"config": "Konfiguracija",
"crafty": "Crafty: ",
"created": "Stvoreno",
"createNew": "Stvori novi API token",
"created": "Stvoreno",
"deleteKeyConfirmation": "Želite li izbrisati ovaj API ključ? Ova radnja je nepovratna.",
"deleteKeyConfirmationTitle": "Ukloniti API ključ ${keyId}?",
"getToken": "Nabavi token",
@ -40,12 +40,12 @@
"pageDescription": "Bez ovih ljudi ne biste imali Crafty",
"pageTitle": "Zasluge",
"patreonDesc": "našim Patreon / Ko-fi donorima!",
"subscriptionLevel": "Razina",
"subscriberName": "Ime",
"patreonOther": "Ostalo",
"patreonSupporter": "Patreon / Ko-fi donorima",
"patreonUpdate": "Zadnje ažuriranje:",
"retiredStaff": "Umirovljeno osoblje",
"subscriberName": "Ime",
"subscriptionLevel": "Razina",
"supportTeam": "Tim za podršku i dokumentaciju",
"thankYou": "HVALA",
"translationDesc": "našoj zajednici koja prevodi!",
@ -118,8 +118,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Prikaži 1 red",
"-1": "Prikaži sve retke",
"1": "Prikaži 1 red",
"_": "Prikaži %d redaka"
},
"pdf": "PDF",
@ -212,8 +212,8 @@
"newUser": "Dodaj novog korisnika",
"pageTitle": "Konfiguracija panela",
"role": "Uloga",
"roles": "Uloge",
"roleUsers": "Uloge korisnika",
"roles": "Uloge",
"save": "Spremi",
"superConfirm": "Nastavite samo ako želite da ovaj korisnik ima pristup SVEMU (svim korisničkim računima, poslužiteljima, postavkama panela, itd.). Oni čak mogu i opozvati Vaša prava superkorisnika.",
"superConfirmTitle": "Omogućiti superkorisnika? Jeste li sigurni?",
@ -457,10 +457,10 @@
"defaultPort": "25565 zadano",
"downloading": "Preuzimanje poslužitelja...",
"explainRoot": "Kliknite donji gumb za odabir izvornog direktorija Vašeg poslužitelja unutar arhive",
"importing": "Uvoz poslužitelja...",
"importServer": "Uvezite postojeći poslužitelj",
"importServerButton": "Uvezite poslužitelj!",
"importZip": "Uvoz iz Zip datoteke",
"importing": "Uvoz poslužitelja...",
"maxMem": "Maksimalna memorija",
"minMem": "Minimalna memorija",
"myNewServer": "Moj novi poslužitelj",
@ -502,9 +502,9 @@
"craftyPermDesc": "Crafty dopuštenja ovog korisnika ",
"craftyPerms": "Crafty dopuštenja: ",
"created": "Stvoreno: ",
"delSuper": "Ne možete izbrisati superkorisnika",
"deleteUser": "Izbriši korisnika: ",
"deleteUserB": "Izbriši korisnika",
"delSuper": "Ne možete izbrisati superkorisnika",
"enabled": "Omogućeno",
"gravDesc": "Ova e-pošta je isključivo za korištenje s Gravatar™-om. Crafty ni pod kojim okolnostima neće koristiti ovu e-poštu za bilo što osim traženja vašeg Gravatar™-a.",
"gravEmail": "Gravatar™ E-pošta",

View File

@ -16,8 +16,8 @@
"buttons": "Tombol",
"config": "Configurasi",
"crafty": "Crafty: ",
"created": "Dibuat",
"createNew": "Buat Token API baru",
"created": "Dibuat",
"deleteKeyConfirmation": "Apakah Anda ingin menghapus kunci API ini? Ini tidak dapat dibatalkan.",
"deleteKeyConfirmationTitle": "Menghapus Kunci API ${keyId}?",
"getToken": "Dapatkan Token",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Tampilkan 1 Baris",
"-1": "Tampilkan semua baris",
"1": "Tampilkan 1 Baris",
"_": "Tampilkan %d baris"
},
"pdf": "PDF",
@ -214,8 +214,8 @@
"newUser": "Tambahkan Pengguna Baru",
"pageTitle": "Configurasi",
"role": "Peran",
"roles": "Peran",
"roleUsers": "Peran Pengguna",
"roles": "Peran",
"save": "Simpan",
"superConfirm": "Lanjutkan hanya jika Anda ingin pengguna ini memiliki akses ke EVERYTHING (semua akun pengguna, server, pengaturan panel, dll.).Mereka bahkan dapat mencabut hak superuser Anda.",
"superConfirmTitle": "Aktifkan superuser? Kamu yakin?",
@ -464,10 +464,10 @@
"defaultPort": "25565 bawaan",
"downloading": "Mendownload Server...",
"explainRoot": "Silakan klik tombol di bawah ini untuk memilih dir root server Anda di dalam arsip",
"importing": "Mengimpor Server!...",
"importServer": "Impor Server yang Ada",
"importServerButton": "Impor Server!",
"importZip": "Impor dari File Zip",
"importing": "Mengimpor Server!...",
"maxMem": "Maksimal Memory",
"minMem": "Minimal Memory",
"myNewServer": "Server baru ku",
@ -509,9 +509,9 @@
"craftyPermDesc": "Izin Crafty yang dimiliki pengguna ini ",
"craftyPerms": "Izin Crafty: ",
"created": "Dibuat: ",
"delSuper": "kamu tidak dapat menghapus super user",
"deleteUser": "Hapus Pengguna: ",
"deleteUserB": "Hapus Pengguna",
"delSuper": "kamu tidak dapat menghapus super user",
"enabled": "Diaktifkan",
"gravDesc": "Email ini benar-benar untuk digunakan dengan Gravatar™.Crafty tidak akan, dalam keadaan apapun menggunakan email ini untuk apa pun selain mencari Gravatar™ Anda",
"gravEmail": "Gravatar™ Email",

View File

@ -1,8 +1,8 @@
{
"404": {
"contact": "Contatta il supporto di Crafty Control tramite Discord",
"unableToFind": "Non siamo riusciti a trovare la pagina che cercavi. Per favore prova di nuovo, oppure torna indietro e riprova.",
"notFound": "Pagina non trovata"
"notFound": "Pagina non trovata",
"unableToFind": "Non siamo riusciti a trovare la pagina che cercavi. Per favore prova di nuovo, oppure torna indietro e riprova."
},
"accessDenied": {
"accessDenied": "Accesso negato",
@ -16,8 +16,8 @@
"buttons": "Pulsanti",
"config": "Configura",
"crafty": "Crafty: ",
"created": "Creato",
"createNew": "Crea un nuovo Token API",
"created": "Creato",
"deleteKeyConfirmation": "Vuoi cancellare questa chiave API? Non puoi tornare indietro.",
"deleteKeyConfirmationTitle": "Rimuovere la chiave API ${keyId}?",
"getToken": "Prendi un Token",
@ -40,12 +40,12 @@
"pageDescription": "Senza queste persone, non avremmo Crafty",
"pageTitle": "Crediti",
"patreonDesc": "ai nostri supporter di Patreon / Ko-fi!",
"subscriptionLevel": "Livello",
"subscriberName": "Nome",
"patreonOther": "Altro",
"patreonSupporter": "Supporter Patreon / Ko-fi",
"patreonUpdate": "Ultimo aggiornamento:",
"retiredStaff": "Staff ritirato",
"subscriberName": "Nome",
"subscriptionLevel": "Livello",
"supportTeam": "Squadra di supporto e documentazione",
"thankYou": "GRAZIE",
"translationDesc": "alla nostra community di traduttori!",
@ -54,76 +54,58 @@
"translator": "Traduttori"
},
"dashboard": {
"dashboard": "Pannello di Controllo",
"memUsage": "Utilizzo della memoria",
"cpuUsage": "Utilizzo del Processore",
"host": "Host",
"players": "Giocatori",
"backups": "Backups",
"newServer": "Crea un Nuovo Server",
"allServers": "Tutti i Server",
"server": "Server",
"actions": "Azioni",
"size": "Dimensioni della Cartella del Server",
"motd": "MOTD",
"version": "Versione",
"status": "Stato",
"online": "Online",
"offline": "Offline",
"lastBackup": "Ultimo:",
"nextBackup": "Prossimo:",
"servers": "Servers",
"cannotSeeOnMobile": "Non vedi nulla da mobile?",
"cannotSee": "Non vedi qualcosa?",
"cannotSeeOnMobile2": "Prova a scorrere la tabella orizzontalmente.",
"max": "Massimo",
"allServers": "Tutti i Server",
"avg": "Media",
"backups": "Backups",
"bePatientClone": "Per favore sii paziente mentre cloniamo il server.<br /> Questa schermata si aggiornerà a breve",
"bePatientRestart": "Per favore sii paziente mentre riavviamo il server.<br /> Questa schermata si aggiornerà a breve",
"bePatientStart": "Per favore sii paziente mentre avviamo il server.<br /> Questa schermata si aggiornerà a breveThis screen will refresh in a moment",
"bePatientStop": "Per favore sii paziente while we stop the server.<br /> Questa schermata si aggiornerà a breve",
"bePatientRestart": "Per favore sii paziente mentre riavviamo il server.<br /> Questa schermata si aggiornerà a breve",
"bePatientClone": "Per favore sii paziente mentre cloniamo il server.<br /> Questa schermata si aggiornerà a breve",
"sendingCommand": "Invio il tuo comando",
"cannotSee": "Non vedi qualcosa?",
"cannotSeeOnMobile": "Non vedi nulla da mobile?",
"cannotSeeOnMobile2": "Prova a scorrere la tabella orizzontalmente.",
"clone": "Clona",
"cpuCores": "CPU Cores",
"cpuCurFreq": "Velocità attuale CPU",
"cpuMaxFreq": "Velocità massima CPU",
"cpuCores": "CPU Cores",
"start": "Start",
"stop": "Stop",
"clone": "Clona",
"kill": "Termina il Processo",
"restart": "Riavvia",
"killing": "Terminando il processo...",
"starting": "Avvio ritardato",
"cpuUsage": "Utilizzo del Processore",
"crashed": "Crashato",
"dashboard": "Pannello di Controllo",
"delay-explained": "Il servizio/agente è stato avviato di recente e sta ritardando l'avvio del server di Minecraft",
"host": "Host",
"kill": "Termina il Processo",
"killing": "Terminando il processo...",
"lastBackup": "Ultimo:",
"max": "Massimo",
"memUsage": "Utilizzo della memoria",
"motd": "MOTD",
"newServer": "Crea un Nuovo Server",
"nextBackup": "Prossimo:",
"no-servers": "Attualmente non ci sono server. Per cominciare, cliccalick",
"welcome": "Benvenuto su Crafty Controller",
"crashed": "Crashato"
"offline": "Offline",
"online": "Online",
"players": "Giocatori",
"restart": "Riavvia",
"sendingCommand": "Invio il tuo comando",
"server": "Server",
"servers": "Servers",
"size": "Dimensioni della Cartella del Server",
"start": "Start",
"starting": "Avvio ritardato",
"status": "Stato",
"stop": "Stop",
"version": "Versione",
"welcome": "Benvenuto su Crafty Controller"
},
"datatables": {
"i18n": {
"decimal": "",
"emptyTable": "Nessun dato disponibile nella tabella",
"info": "Mostro da _START_ a _END_ di _TOTAL_ record",
"infoEmpty": "Mostro da 0 a 0 di 0 record",
"infoFiltered": "(filtrato da _MAX_ record totali)",
"infoPostFix": "",
"thousands": ",",
"lengthMenu": "Mostra _MENU_ record",
"loadingRecords": "Carico...",
"processing": "Calcolo...",
"search": "Cerca:",
"zeroRecords": "Nessun record corrispondente trovato",
"paginate": {
"first": "Prima",
"last": "Ultima",
"next": "Prossima",
"previous": "Precedente"
},
"aria": {
"sortAscending": ": attiva per ordinare le colonne in modo ascendente",
"sortDescending": ": attiva per ordinare le colonne in modo discendente"
},
"buttons": {
"collection": "Collection <span class='ui-button-icon-primary ui-icon ui-icon-triangle-1-s'\/>",
"collection": "Collection <span class='ui-button-icon-primary ui-icon ui-icon-triangle-1-s'/>",
"colvis": "Visibilità colonne",
"colvisRestore": "Ripristina visibilità",
"copy": "Copy",
@ -143,12 +125,23 @@
"pdf": "PDF",
"print": "Stampa"
},
"decimal": "",
"emptyTable": "Nessun dato disponibile nella tabella",
"info": "Mostro da _START_ a _END_ di _TOTAL_ record",
"infoEmpty": "Mostro da 0 a 0 di 0 record",
"infoFiltered": "(filtrato da _MAX_ record totali)",
"infoPostFix": "",
"lengthMenu": "Mostra _MENU_ record",
"loadingRecords": "Carico...",
"paginate": {
"first": "Prima",
"last": "Ultima",
"next": "Prossima",
"previous": "Precedente"
},
"processing": "Calcolo...",
"search": "Cerca:",
"select": {
"rows": {
"0": "Clicca su una riga per selezionarla",
"1": "%d riga selezionata",
"_": "%d righe selezionate"
},
"cells": {
"0": "Clicca su una cella per selezionarla",
"1": "%d cella selezionata",
@ -158,8 +151,15 @@
"0": "Clicca su una colonna per selezionarla",
"1": "%d colonna selezionata",
"_": "%d colonne selezionate"
},
"rows": {
"0": "Clicca su una riga per selezionarla",
"1": "%d riga selezionata",
"_": "%d righe selezionate"
}
}
},
"thousands": ",",
"zeroRecords": "Nessun record corrispondente trovato"
}
},
"error": {
@ -212,8 +212,8 @@
"newUser": "Aggiungi nuovo utente",
"pageTitle": "Configurazioni del pannello",
"role": "Ruolo",
"roles": "Ruoli",
"roleUsers": "Utenti del ruolo",
"roles": "Ruoli",
"save": "Salva",
"superConfirm": "Procedi solo se vuoi che questo utente abbia accesso a TUTTO (tutti gli utenti, server, impostazioni del pannello, ecc...). Può anche revocare i tuoi poteri da superuser.",
"superConfirmTitle": "Abilitare lo superuser? Sei sicuro?",
@ -457,10 +457,10 @@
"defaultPort": "25565 default",
"downloading": "Scaricando il Server...",
"explainRoot": "Per favore clicca il pulsante qui sotto per selezionare la cartella radice del server all'interno dell'archivio",
"importing": "Importando il Server...",
"importServer": "Importa un Server Esistente",
"importServerButton": "Importa Server!",
"importZip": "Importa da un File Zip",
"importing": "Importando il Server...",
"maxMem": "Memoria Massima",
"minMem": "Memoria minima",
"myNewServer": "Il mio nuovo Server",
@ -502,9 +502,9 @@
"craftyPermDesc": "I permessi Crafty che questo utente possiede ",
"craftyPerms": "Permessi di Crafty: ",
"created": "Creato il: ",
"delSuper": "Non puoi eliminare uno superuser",
"deleteUser": "Elimina Utente: ",
"deleteUserB": "Elimina Utente",
"delSuper": "Non puoi eliminare uno superuser",
"enabled": "Abilitato",
"gravDesc": "Questa email è solamente per l'uso di Gravatar™. Crafty non userà l'email in alcuna circostanza, se non per associare il Gravatar™",
"gravEmail": "Gravatar™ Email",

View File

@ -16,8 +16,8 @@
"buttons": "BOOPZ",
"config": "PLACE TO SAYS HINGZ",
"crafty": "CWAFTY: ",
"created": "CREATED",
"createNew": "CREATE A NU SUPA SECRET CODE",
"created": "CREATED",
"deleteKeyConfirmation": "U SURE U WANTS ME 2 EAT IT",
"deleteKeyConfirmationTitle": "I CAN EATZ IT??? : ${keyId}?",
"getToken": "GIT TOKEN",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Show 1 row",
"-1": "Show all rows",
"1": "Show 1 row",
"_": "Show %d rows"
},
"pdf": "PDF",
@ -214,8 +214,8 @@
"newUser": "ADDZ NU HOOMAN",
"pageTitle": "BIG SETINGZ",
"role": "ROLE",
"roles": "ROLES",
"roleUsers": "HOOMANZ",
"roles": "ROLES",
"save": "DUN",
"superConfirm": "PROCED ONLY IF U WANTS DIS HOOMAN 2 HAS ACCES 2 EVRYTHIN (ALL TEH SEATS, FISHIZ, FOODZ, COMFY SPOTZ.). THEY CAN EVEN MAK U NOT SUPA HOOMANZ",
"superConfirmTitle": "MAK HOMANZ AN ALPHA HOOMAN? R U SHURE?",
@ -464,10 +464,10 @@
"defaultPort": "25565 IZ NERMALZ CHOICEZ",
"downloading": "HUNTIN FUR GUD SERVR...",
"explainRoot": "PLZ CLICK TEH BUTN BELOW 2 SELECT UR SERVRS ROOT DIR INSIDE OV TEH SMOL BOX",
"importing": "CLAIMZIN SERVRZ...",
"importServer": "ADDZ SERVR TO CWAFTY",
"importServerButton": "GO GET DA SERVR",
"importZip": "ADDZ SERVR FROM SQUEEZD BOX",
"importing": "CLAIMZIN SERVRZ...",
"maxMem": "BIG MEMZ LIMIT",
"minMem": "SMOL MEMZ LIMIT",
"myNewServer": "MY NEW SOFT CHAIR",
@ -509,9 +509,9 @@
"craftyPermDesc": "CWAFTY PERMISHUNS DIS HOOMAN HAS ",
"craftyPerms": "CWAFTY PERMISHUNS: ",
"created": "CREATD: ",
"delSuper": "U CANT OVATHROW DA ALFA HOOMAN",
"deleteUser": "REHOME HOOMAN: ",
"deleteUserB": "REHOME HOOMAN",
"delSuper": "U CANT OVATHROW DA ALFA HOOMAN",
"enabled": "DIS ON",
"gravDesc": "I HUV MAD SUR EMAIL IZ ONLY FUR GRAVATAR™. CWAFTY WILL NOT, AT ALL EVR MAK USE OV DIS EMAIL 4 ANYTHIN OTHR THAN LOOKIN UP UR GRAVATAR™ FACE ",
"gravEmail": "GRAVATAR™ EMAIL",

View File

@ -16,8 +16,8 @@
"buttons": "Pogas",
"config": "Konfigurācija",
"crafty": "Crafty: ",
"created": "Izveidots",
"createNew": "Izveidot jaunu API Pilnvaru (Token)",
"created": "Izveidots",
"deleteKeyConfirmation": "Vai vēlies dzēst šo API atslēgu? Šo nevar atdarīt.",
"deleteKeyConfirmationTitle": "Noņemt API atslēgu ${keyId}?",
"getToken": "Saņemt Pilnvaru (Token)",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Rādīt 1 rindu",
"-1": "Rādīt visas rindas",
"1": "Rādīt 1 rindu",
"_": "Rādīt %d rindas"
},
"pdf": "PDF",
@ -214,8 +214,8 @@
"newUser": "Pievienot Jaunu Lietotāju",
"pageTitle": "Paneļa Konfigurācija",
"role": "Lomas",
"roles": "Lomas",
"roleUsers": "Lomu Lietotāji",
"roles": "Lomas",
"save": "Saglabāt",
"superConfirm": "Turpiniet tikai ja vēlieties lai šim lietotājam būtu piekļuve VISAM (visiem lietotāju kontiem, serveriem, paneļa iestatījumiem, utt.) Viņi var pat atņemt tavas superlietotāja atļaujas.",
"superConfirmTitle": "Iespējot superlietotāju? Vai esiet pārliecināti?",
@ -464,10 +464,10 @@
"defaultPort": "25565 noklusētais",
"downloading": "Lejupielādē Serveri...",
"explainRoot": "Lūdzu noespied pogu zemāk, lai izvēlētos sava servera saknes mapi iekš arhīva",
"importing": "Importē Serveri...",
"importServer": "Importēt Esošu Serveri",
"importServerButton": "Importēt Serveri!",
"importZip": "Importēt no Zip faila",
"importing": "Importē Serveri...",
"maxMem": "Maksimālā Atmiņa",
"minMem": "Minimālā Atmiņa",
"myNewServer": "Mans Jaunais Serveris",
@ -509,9 +509,9 @@
"craftyPermDesc": "Crafty atļaujas, kas ir šim lietotājam ",
"craftyPerms": "Crafty Atļaujas: ",
"created": "Izveidots: ",
"delSuper": "Jūs nevarat izdzēst super lietotāju",
"deleteUser": "Dzēst lietotāju: ",
"deleteUserB": "Dzēst Lietotāju",
"delSuper": "Jūs nevarat izdzēst super lietotāju",
"enabled": "Iespējots",
"gravDesc": "Šis e-pasts ir tikai priekš izmantošanas ar Gravatar™. Crafty nakādā veidā nedarīs neko ar šo epastu atskaitot atrodot jūsu Gravatar™",
"gravEmail": "Gravatar™ E-pasts",

View File

@ -16,8 +16,8 @@
"buttons": "Knoppen",
"config": "Config",
"crafty": "Crafty: ",
"created": "Gecreëerd",
"createNew": "Maak een nieuw API Token",
"created": "Gecreëerd",
"deleteKeyConfirmation": "Wilt u deze API sleutel verwijderen? Dit kan niet ongedaan gemaakt worden.",
"deleteKeyConfirmationTitle": "API sleutel verwijderen ${keyId}?",
"getToken": "Verkrijg een Token",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Toon 1 rij",
"-1": "Toon alle rijen",
"1": "Toon 1 rij",
"_": "%d rijen tonen"
},
"pdf": "PDF",
@ -214,8 +214,8 @@
"newUser": "Nieuwe gebruiker toevoegen",
"pageTitle": "Paneel Config",
"role": "Rollen",
"roles": "Rollen",
"roleUsers": "Gebruikersrollen",
"roles": "Rollen",
"save": "Opslaan",
"superConfirm": "Ga alleen verder als u wilt dat deze gebruiker toegang heeft tot ALLES (alle gebruikersaccounts, servers, paneelinstellingen, etc.). Ze kunnen zelfs uw superuser rechten intrekken.",
"superConfirmTitle": "Supergebruiker inschakelen? Weet u het zeker?",
@ -464,10 +464,10 @@
"defaultPort": "25565 standaard",
"downloading": "Server downloaden...",
"explainRoot": "Klik op de knop hieronder om de hoofddirectory van uw server in het archief te selecteren",
"importing": "Server importeren...",
"importServer": "Een bestaande server importeren",
"importServerButton": "Server importeren!",
"importZip": "Importeren uit een zipbestand",
"importing": "Server importeren...",
"maxMem": "Maximaal geheugen",
"minMem": "Minimaal geheugen",
"myNewServer": "My New Server",
@ -509,9 +509,9 @@
"craftyPermDesc": "Crafty machtigingen die deze gebruiker heeft ",
"craftyPerms": "Crafty Machtigingen: ",
"created": "Gecreëerd: ",
"delSuper": "U kunt een supergebruiker niet verwijderen",
"deleteUser": "Gebruiker verwijderen: ",
"deleteUserB": "Gebruiker verwijderen",
"delSuper": "U kunt een supergebruiker niet verwijderen",
"enabled": "Ingeschakeld",
"gravDesc": "Deze e-mail is strikt voor gebruik met Gravatar™. Crafty zal onder geen enkele omstandigheid gebruik maken van deze e-mail voor iets anders dan het opzoeken van uw Gravatar™",
"gravEmail": "Gravatar™ Email",

View File

@ -16,8 +16,8 @@
"buttons": "Knoppen",
"config": "Configuratie",
"crafty": "Crafty: ",
"created": "Gecreeërd",
"createNew": "Creeër nieuw API-token",
"created": "Gecreeërd",
"deleteKeyConfirmation": "Wil je deze API-sleutel verwijderen? Dit kan niet ongedaan gemaakt worden.",
"deleteKeyConfirmationTitle": "Verwijder API-sleutel ${keyId}?",
"getToken": "Verkrijg een token",
@ -40,12 +40,12 @@
"pageDescription": "Zonder deze mensen zou er geen Crafty zijn",
"pageTitle": "Credits",
"patreonDesc": "aan onze Patreon / Ko-fi supporters!",
"subscriptionLevel": "Niveau",
"subscriberName": "Naam",
"patreonOther": "Overig",
"patreonSupporter": "Patreon / Ko-fi Supporters",
"patreonUpdate": "Laatste update:",
"retiredStaff": "Gepensioneerde staff",
"subscriberName": "Naam",
"subscriptionLevel": "Niveau",
"supportTeam": "Support- en documentatieteam",
"thankYou": "DANKJEWEL",
"translationDesc": "aan onze community die vertaalt!",
@ -118,8 +118,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Laat 1 rij zien",
"-1": "Laat alle rijen zien",
"1": "Laat 1 rij zien",
"_": "Laat %d rijen zien"
},
"pdf": "PDF",
@ -212,8 +212,8 @@
"newUser": "Nieuwe gebruiker toevoegen",
"pageTitle": "Panel-configuratie",
"role": "Rol",
"roles": "Rollen",
"roleUsers": "Rol-gebruikers",
"roles": "Rollen",
"save": "Opslaan",
"superConfirm": "Ga alleen verder als je wil dat deze gebruiker bij ALLES kan (alle gebruikersaccounts, servers, panel-instellingen, etc.). Ze kunnen ook jouw super-gebruikerrechten intrekken.",
"superConfirmTitle": "super-gebruiker inschakelen? Weet je het zeker?",
@ -457,10 +457,10 @@
"defaultPort": "25565 standaard",
"downloading": "Server is aan het downloaden...",
"explainRoot": "Klik hieronder om je server's root-map in het archief te selecteren",
"importing": "Server is aan het importeren...",
"importServer": "Bestaande server importeren",
"importServerButton": "Importeer server!",
"importZip": "Importeren vanuit ZIP-bestand",
"importing": "Server is aan het importeren...",
"maxMem": "Maximum werkgeheugen",
"minMem": "Minimum werkgeheugen",
"myNewServer": "Mijn nieuwe server",
@ -502,9 +502,9 @@
"craftyPermDesc": "Toestemming die deze gebruiker heeft ",
"craftyPerms": "Crafty toestemmingen: ",
"created": "Gecreeërd: ",
"delSuper": "Je kan geen super-gebruikers verwijderen",
"deleteUser": "Gebruiker verwijderen: ",
"deleteUserB": "Gebruiker verwijderen",
"delSuper": "Je kan geen super-gebruikers verwijderen",
"enabled": "Ingeschakeld",
"gravDesc": "Dit e-mailadres is alleen voor het gebruik van Gravatar™. Crafty zal nooit, onder geen enkele omstandigheid dit e-mailadres gebruiker anders dan voor het opzoeken van je Gravatarâ„¢",
"gravEmail": "Gravatar™ e-mailadres",

View File

@ -16,8 +16,8 @@
"buttons": "Przyciski",
"config": "Config",
"crafty": "Crafty: ",
"created": "Stworzono",
"createNew": "Stwórz nowy klucz API",
"created": "Stworzono",
"deleteKeyConfirmation": "Czy chcesz usunąć ten klucz API? Nie można tego cofnąć.",
"deleteKeyConfirmationTitle": "Usunąć Klucz API ${keyId}?",
"getToken": "Zdobądź token",
@ -134,8 +134,8 @@
"csv": "CSV",
"excel": "Eksel",
"pageLength": {
"1": "Pokaż 1 rząd",
"-1": "Pokaż wszystkie rzędy",
"1": "Pokaż 1 rząd",
"_": "Pokaż %d rządów"
},
"pdf": "PDF",
@ -243,8 +243,8 @@
"custom": "Dostosuj Craftiego",
"delete": "Usuń",
"edit": "Edytuj",
"enabled": "Wlączone",
"enableLang": "Włącz wszystkie języki",
"enabled": "Wlączone",
"globalExplain": "Gdzie Crafty trzyma wszystkie twoje serwery. (dołączymy /servers/[uuid of server] do ścieżki)",
"globalServer": "Globalna ścieżka serwerów",
"json": "Config.json",
@ -254,8 +254,8 @@
"noMounts": "Nie pokazuj dysków w panelu",
"pageTitle": "Ustawienia Panelu",
"role": "Role",
"roles": "Roles",
"roleUsers": "Role użytkownika",
"roles": "Roles",
"save": "Zapisz",
"select": "Wybierz",
"superConfirm": "Zapisz jeśli chcesz aby ten użytkownik miał dostęp do WSZYSTKIEGO (wszyscy użytkownicy, konta, serwery, ustawienia panelu, itp.). Mogą oni nawet usunąć twoje prawa SuperUżytkownika.",
@ -545,10 +545,10 @@
"defaultPort": "25565 podstawowy",
"downloading": "Pobieranie serwera...",
"explainRoot": "Proszę, kliknij przycisk poniżej aby zaznaczyć główną ścieżkę w tym archiwum",
"importing": "Importowanie serwera...",
"importServer": "Importuj egzystujący serwer",
"importServerButton": "Importuj serwer!",
"importZip": "Importuj z ZIPa",
"importing": "Importowanie serwera...",
"labelZipFile": "Wybierz swój plik ZIP",
"maxMem": "Maks. RAMu",
"minMem": "Min. RAMu",
@ -570,8 +570,8 @@
"serverPort": "Port serwera",
"serverSelect": "Wybierz Serwer",
"serverType": "Typ serwera",
"serverVersion": "Wersja serwera",
"serverUpload": "Wgraj ZIP Serwera",
"serverVersion": "Wersja serwera",
"sizeInGB": "Wielkość w GB",
"uploadButton": "Wgraj",
"uploadZip": "Wgraj plik Zip dla imprtowania serwera",
@ -597,9 +597,9 @@
"craftyPermDesc": "Ten użytkownik ma dostęp do ustawień Craftiego takich jak: ",
"craftyPerms": "Ustawienia Craftiego: ",
"created": "Stworzono: ",
"delSuper": "Nie możesz usunąć SuperUżytkownika",
"deleteUser": "Usuń użytkownika: ",
"deleteUserB": "Usuń użytkownika",
"delSuper": "Nie możesz usunąć SuperUżytkownika",
"enabled": "Enabled",
"gravDesc": "To jest email tylko używany do Gravatar™. Crafty nie użyje pod żadnymi okolicznościami twojego adresu email, niż sprawdzenie ikony Gravatar™ ",
"gravEmail": "Gravatar™ Email",

View File

@ -16,8 +16,8 @@
"buttons": "Botões",
"config": "Config",
"crafty": "Crafty: ",
"created": "Criado",
"createNew": "Criar novo Token de API",
"created": "Criado",
"deleteKeyConfirmation": "Deseja deletar esta Chave de API?. Esta ação não pode ser desfeita.",
"deleteKeyConfirmationTitle": "Remover Chave de API ${keyId}?",
"getToken": "Pegar um Token",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "Exibir 1 linha",
"-1": "Exibir todas as linhas",
"1": "Exibir 1 linha",
"_": "Exibir %d linhas"
},
"pdf": "PDF",
@ -215,8 +215,8 @@
"newUser": "Adicionar Novo Usuário",
"pageTitle": "Configuração do Painel",
"role": "Cargo",
"roles": "Cargos",
"roleUsers": "Usuários com o Cargo",
"roles": "Cargos",
"save": "Salvar",
"superConfirm": "Proceda apenas se desejar que este usuário tenha acesso a TUDO (todas as contas de usuário, servidores, configurações do painel, etc.). Eles podem até mesmo revogar seus direitos de Super Usuário.",
"superConfirmTitle": "Habilitar Super Usuário? Tem certeza?",
@ -465,10 +465,10 @@
"defaultPort": "25565 = padrão",
"downloading": "Baixando Servidor...",
"explainRoot": "Por favor clique no botão abaixo para selecionar o diretório raiz do seu servidor dentro do arquivo",
"importing": "Importando Servidor...",
"importServer": "Importar um servidor existente",
"importServerButton": "Importar Servidor!",
"importZip": "Importar de um Arquivo Zip",
"importing": "Importando Servidor...",
"maxMem": "Memória Máxima",
"minMem": "Memória Mínima",
"myNewServer": "Meu Novo Servidor",
@ -510,9 +510,9 @@
"craftyPermDesc": "Permissões do Crafty que este usuário tem ",
"craftyPerms": "Permissões do Crafty: ",
"created": "Criado: ",
"delSuper": "Você não pode deletar um Super Usuário",
"deleteUser": "Deletar Usuário: ",
"deleteUserB": "Deletar Usuário",
"delSuper": "Você não pode deletar um Super Usuário",
"enabled": "Habilitado",
"gravDesc": "Este e-mail é para uso exclusivo com Gravatar™. Crafty não irá, sob quaisquer circunstâncias, fazer uso deste e-mail para qualquer coisa além de seu Gravatar™",
"gravEmail": "E-mail Gravatar™",

View File

@ -16,8 +16,8 @@
"buttons": "按钮",
"config": "配置",
"crafty": "Crafty",
"created": "创建时间",
"createNew": "创建新的 API 令牌",
"created": "创建时间",
"deleteKeyConfirmation": "您想要删除这个 API 密钥吗?此操作不能撤销。",
"deleteKeyConfirmationTitle": "删除 API 密钥 ${keyId}",
"getToken": "获得一个令牌",
@ -119,8 +119,8 @@
"csv": "CSV",
"excel": "Excel",
"pageLength": {
"1": "显示 1 行",
"-1": "显示所有行",
"1": "显示 1 行",
"_": "显示 %d 行"
},
"pdf": "PDF",
@ -214,8 +214,8 @@
"newUser": "添加新用户",
"pageTitle": "面板配置",
"role": "角色",
"roles": "角色",
"roleUsers": "被分配了该角色的用户",
"roles": "角色",
"save": "保存",
"superConfirm": "仅在你希望此用户能访问所有数据(所有用户账户、服务器、面板设置等)的情况下继续。它们甚至可以撤回您的超级用户权限。",
"superConfirmTitle": "启用超级用户?您确定吗?",
@ -464,10 +464,10 @@
"defaultPort": "默认值为 25565",
"downloading": "下载服务器中……",
"explainRoot": "请点击下方的按钮来选择您的服务器在压缩文件中的根目录",
"importing": "导入服务器中……",
"importServer": "导入现有服务器",
"importServerButton": "导入服务器!",
"importZip": "从 Zip 文件导入",
"importing": "导入服务器中……",
"maxMem": "最大内存",
"minMem": "最小内存",
"myNewServer": "我的新服务器",
@ -509,9 +509,9 @@
"craftyPermDesc": "此用户拥有的 Crafty 权限",
"craftyPerms": "Crafty 权限:",
"created": "创建时间:",
"delSuper": "您不能删除超级用户",
"deleteUser": "删除用户:",
"deleteUserB": "删除用户",
"delSuper": "您不能删除超级用户",
"enabled": "已启用",
"gravDesc": "此电子邮件仅用于 Gravatar™。Crafty 不会在任何情况下使用该邮箱进行除了查阅您的 Gravatar™ 以外的操作",
"gravEmail": "Gravatar™ 邮箱",

View File

@ -1,19 +1,30 @@
#!/bin/sh
repair_permissions () {
printf "\033[36mWrapper | \033[35m📋 (1/3) Ensuring root group ownership...\033[0m\n"
find . ! -group root -print0 | xargs -0 -r chgrp root
printf "\033[36mWrapper | \033[35m📋 (2/3) Ensuring group read-write is present on files...\033[0m\n"
find . ! -perm g+rw -print0 | xargs -0 -r chmod g+rw
printf "\033[36mWrapper | \033[35m📋 (3/3) Ensuring sticky bit is present on directories...\033[0m\n"
find . -type d ! -perm g+s -print0 | xargs -0 -r chmod g+s
}
# Check if config exists taking one from image if needed.
if [ ! "$(ls -A --ignore=.gitkeep ./app/config)" ]; then
echo "\033[36mWrapper | \033[33m🏗 Config not found, pulling defaults..."
printf "\033[36mWrapper | \033[33m🏗 Config not found, pulling defaults...\033[0m\n"
mkdir ./app/config/ 2> /dev/null
cp -r ./app/config_original/* ./app/config/
if [ $(id -u) -eq 0 ]; then
# We're running as root;
# Look for files & dirs that require group permissions to be fixed
# This will do the full /crafty dir, so will take a miniute.
echo "\033[36mWrapper | \033[35m📋 Looking for problem bind mount permissions globally..."
find . ! -group root -exec chgrp root {} \;
find . ! -perm g+rw -exec chmod g+rw {} \;
find . -type d ! -perm g+s -exec chmod g+s {} \;
printf "\033[36mWrapper | \033[35m📋 Looking for problem bind mount permissions globally...\033[0m\n"
repair_permissions
printf "\033[36mWrapper | \033[32m✅ Initialization complete!\033[0m\n"
fi
else
# Keep version file up to date with image
@ -26,24 +37,24 @@ if [ $(id -u) -eq 0 ]; then
# If we find files in import directory, we need to ensure all dirs are owned by the root group,
# This fixes bind mounts that may have incorrect perms.
if [ "$(ls -A --ignore=.gitkeep ./import)" ]; then
echo "\033[36mWrapper | \033[35m📋 Files present in import directory, checking/fixing permissions..."
echo "\033[36mWrapper | \033[33m⏳ Please be paitent for larger servers..."
find . ! -group root -exec chgrp root {} \;
find . ! -perm g+rw -exec chmod g+rw {} \;
find . -type d ! -perm g+s -exec chmod g+s {} \;
echo "\033[36mWrapper | \033[32m✅ Permissions Fixed! (This will happen every boot until /import is empty!)"
if [ "$(find ./import -type f ! -name '.gitkeep')" ]; then
printf "\033[36mWrapper | \033[35m📋 Files present in import directory, checking/fixing permissions...\033[0m\n"
printf "\033[36mWrapper | \033[33m⏳ Please be patient for larger servers...\033[0m\n"
repair_permissions
printf "\033[36mWrapper | \033[32m✅ Permissions Fixed! (This will happen every boot until /import is empty!)\033[0m\n"
fi
# Switch user, activate our prepared venv and lauch crafty
# Switch user, activate our prepared venv and launch crafty
args="$@"
echo "\033[36mWrapper | \033[32m🚀 Launching crafty with [\033[34m$args\033[32m]"
printf "\033[36mWrapper | \033[32m🚀 Launching crafty with [\033[34m%s\033[32m]\033[0m\n" "$args"
exec sudo -u crafty bash -c "source ./.venv/bin/activate && exec python3 main.py $args"
else
# Activate our prepared venv
echo "\033[36mWrapper | \033[32m🚀 Non-root host detected, using normal exec"
printf "\033[36mWrapper | \033[32m🚀 Non-root host detected, using normal exec\033[0m\n"
. ./.venv/bin/activate
# Use exec as our perms are already correct
# This is likely if using Kubernetes/OpenShift etc
exec python3 main.py $@
exec python3 main.py "$@"
fi

View File

@ -19,3 +19,4 @@ tornado==6.3.3
tzlocal==5.1
jsonschema==4.19.1
orjson==3.9.7
prometheus-client==0.17.1