From 00735c402b8b153c9851f9f1600973d3a365d440 Mon Sep 17 00:00:00 2001 From: xithical <86810816+xithical@users.noreply.github.com> Date: Thu, 9 Dec 2021 21:57:52 -0600 Subject: [PATCH 1/6] Add initial example config for nginx --- config_examples/nginx.conf.example | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 config_examples/nginx.conf.example diff --git a/config_examples/nginx.conf.example b/config_examples/nginx.conf.example new file mode 100644 index 00000000..d8da08b7 --- /dev/null +++ b/config_examples/nginx.conf.example @@ -0,0 +1,37 @@ +# Config based on https://gitlab.com/lewishill211/crafty-controller-https +# Edits for 4.0 compatibility by pretzelDewey - https://gitlab.com/amcmanu3 + +upstream crafty { + server ""; +} + +server { + listen 80 default_server; + rewrite ^(.*) https://$host$1 permanent; +} + +server { + listen 443 ssl; + server_name ; + ssl_certificate ; + ssl_certificate_key ; + location / { + proxy_http_version 1.1; + proxy_redirect off; + + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $http_connection; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host + + proxy_pass https://localhost:8443; + + proxy_buffering off; + client_max_body_size 0; + proxy_connect_timeout 3600s; + proxy_read_timeout 3600s; + proxy_send_timeout 3600s; + send_timeout 3600s; + } +} From fb42b3b628ea45a3c3e7f6421fa461361c9914a4 Mon Sep 17 00:00:00 2001 From: Iain Powrie Date: Sun, 12 Dec 2021 15:17:22 +0000 Subject: [PATCH 2/6] Apply vulnerability patch to mitigate CVE-2021-44228 --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index ba7278be..c98d65c3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,6 +2,9 @@ FROM python:alpine LABEL maintainer="Dockerfile created by Zedifus " +# Security Patch for CVE-2021-44228 +ENV LOG4J_FORMAT_MSG_NO_LOOKUPS=true + # Install Packages & Garbage Collect Compile Deps & Harden COPY requirements.txt /commander/requirements.txt RUN apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/latest-stable/community \ From f6b1cf68af5771bd6243d8b72e0a0654ba73be83 Mon Sep 17 00:00:00 2001 From: xithical <9237920-xithical@users.noreply.gitlab.com> Date: Tue, 14 Dec 2021 00:44:56 +0000 Subject: [PATCH 3/6] i missed a semi-colon... --- config_examples/nginx.conf.example | 74 +++++++++++++++--------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/config_examples/nginx.conf.example b/config_examples/nginx.conf.example index d8da08b7..8c57626c 100644 --- a/config_examples/nginx.conf.example +++ b/config_examples/nginx.conf.example @@ -1,37 +1,37 @@ -# Config based on https://gitlab.com/lewishill211/crafty-controller-https -# Edits for 4.0 compatibility by pretzelDewey - https://gitlab.com/amcmanu3 - -upstream crafty { - server ""; -} - -server { - listen 80 default_server; - rewrite ^(.*) https://$host$1 permanent; -} - -server { - listen 443 ssl; - server_name ; - ssl_certificate ; - ssl_certificate_key ; - location / { - proxy_http_version 1.1; - proxy_redirect off; - - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $http_connection; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $http_host - - proxy_pass https://localhost:8443; - - proxy_buffering off; - client_max_body_size 0; - proxy_connect_timeout 3600s; - proxy_read_timeout 3600s; - proxy_send_timeout 3600s; - send_timeout 3600s; - } -} +# Config based on https://gitlab.com/lewishill211/crafty-controller-https +# Edits for 4.0 compatibility by pretzelDewey - https://gitlab.com/amcmanu3 + +upstream crafty { + server ""; +} + +server { + listen 80 default_server; + rewrite ^(.*) https://$host$1 permanent; +} + +server { + listen 443 ssl; + server_name ; + ssl_certificate ; + ssl_certificate_key ; + location / { + proxy_http_version 1.1; + proxy_redirect off; + + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $http_connection; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + + proxy_pass https://localhost:8443; + + proxy_buffering off; + client_max_body_size 0; + proxy_connect_timeout 3600s; + proxy_read_timeout 3600s; + proxy_send_timeout 3600s; + send_timeout 3600s; + } +} From cf1403a0ee754a854791630067ad8d9c1086b442 Mon Sep 17 00:00:00 2001 From: xithical Date: Mon, 13 Dec 2021 20:44:22 -0600 Subject: [PATCH 4/6] Added better handling for non UTF-8 characters in output --- app/classes/shared/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index ef92f370..b1ceb271 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -68,11 +68,11 @@ class ServerOutBuf: def check(self): while True: if self.proc.poll() is None: - char = self.proc.stdout.read(1).decode('utf-8') + char = self.proc.stdout.read(1).decode('utf-8', 'ignore') # TODO: we may want to benchmark reading in blocks and userspace processing it later, reads are kind of expensive as a syscall self.process_byte(char) else: - flush = self.proc.stdout.read().decode('utf-8') + flush = self.proc.stdout.read().decode('utf-8', 'ignore') for char in flush: self.process_byte(char) break From f018267b6201cc3f6340cde1502cb75b39c1e239 Mon Sep 17 00:00:00 2001 From: Quentin B Date: Thu, 16 Dec 2021 21:07:36 -0500 Subject: [PATCH 5/6] Made server polls asynchronus, fix for serverjars --- app/classes/web/panel_handler.py | 34 ++++++++++++++++++++----------- app/classes/web/server_handler.py | 4 ++-- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index fa699be0..5847741d 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -9,7 +9,7 @@ import datetime import os from tornado import iostream - +from tornado.ioloop import IOLoop from app.classes.shared.console import console from app.classes.shared.main_models import Users, installer @@ -27,8 +27,26 @@ logger = logging.getLogger(__name__) class PanelHandler(BaseHandler): + # Server fetching, spawned asynchronously + # TODO: Make the related front-end elements update with AJAX + def fetch_server_data(self, page_data): + total_players = 0 + for server in page_data['servers']: + total_players += len(self.controller.stats.get_server_players(server['server_data']['server_id'])) + page_data['num_players'] = total_players + + for s in page_data['servers']: + try: + data = json.loads(s['int_ping_results']) + s['int_ping_results'] = data + except Exception as e: + logger.error("Failed server data for page with error: {} ".format(e)) + + return page_data + + @tornado.web.authenticated - def get(self, page): + async def get(self, page): error = bleach.clean(self.get_argument('error', "WTF Error!")) template = "panel/denied.html" @@ -153,17 +171,9 @@ class PanelHandler(BaseHandler): except: data['stats']['waiting_start'] = False - total_players = 0 - for server in page_data['servers']: - total_players += len(self.controller.stats.get_server_players(server['server_data']['server_id'])) - page_data['num_players'] = total_players + page_data['num_players'] = 0 - for s in page_data['servers']: - try: - data = json.loads(s['int_ping_results']) - s['int_ping_results'] = data - except Exception as e: - logger.error("Failed server data for page with error: {} ".format(e)) + IOLoop.current().add_callback(self.fetch_server_data, page_data) template = "panel/dashboard.html" diff --git a/app/classes/web/server_handler.py b/app/classes/web/server_handler.py index faaf849d..bff818f1 100644 --- a/app/classes/web/server_handler.py +++ b/app/classes/web/server_handler.py @@ -81,8 +81,8 @@ class ServerHandler(BaseHandler): self.redirect("/panel/error?error=Unauthorized access: not a server creator or server limit reached") return - page_data['server_types'] = server_jar_obj.get_serverjar_data_sorted() - page_data['js_server_types'] = json.dumps(server_jar_obj.get_serverjar_data_sorted()) + page_data['server_types'] = server_jar_obj.get_serverjar_data() + page_data['js_server_types'] = json.dumps(server_jar_obj.get_serverjar_data()) template = "server/wizard.html" self.render( From 9351e77b28e243e08d9a7b52b0d341f525fbf0ca Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 18 Dec 2021 19:10:32 -0500 Subject: [PATCH 6/6] Add new translations. --- app/translations/es_ES.json | 42 +++-- app/translations/hr_HR.json | 346 ++++++++++++++++++++++++++++++++++++ app/translations/nl_BE.json | 346 ++++++++++++++++++++++++++++++++++++ app/translations/zh_CN.json | 10 +- 4 files changed, 722 insertions(+), 22 deletions(-) create mode 100644 app/translations/hr_HR.json create mode 100644 app/translations/nl_BE.json diff --git a/app/translations/es_ES.json b/app/translations/es_ES.json index a75359f4..8a43dbe5 100644 --- a/app/translations/es_ES.json +++ b/app/translations/es_ES.json @@ -8,7 +8,7 @@ "error": { "hereIsTheError": "Aquí está el error.", "contact": "Contacta el soporte de Crafty Control desde Discord", - "terribleFailure": "¡Qué terrible error!", + "terribleFailure": "¡Un terrible error!", "embarassing": "Oh por, bueno, esto es vergonzoso.", "error": "Error!", "start-error": "Servidor {} fallo al iniciar con código de error: {}", @@ -16,7 +16,8 @@ "internet": "Hemos detectado que la maquina ejecutando Crafty no tiene acceso a internet. Las conexiones de clientes al servidor podrían estar limitadas.", "eulaTitle": "Aceptar EULA", "eulaMsg": "Debes aceptar el EULA. Una copia del EULA de Mojang esta vinculada debajo de este mensaje.", - "eulaAgree": "Estás de acuerdo?" + "eulaAgree": "Estás de acuerdo?", + "noJava": "Server {} fallo al iniciar con código de error: Detectamos que Java no esta instalado, Por favor instale java y inicie el servidor." }, "404": { "contact": "Contacta el soporte de Crafty Control desde Discord", @@ -43,8 +44,8 @@ "importZip": "Importar desde archivo Zip", "serverName": "Nombre del servidor", "serverPath": "Dirección del servidor", - "selectType": "Selecciona un tipo", "serverType": "Tipo de servidor", + "selectType": "Selecciona un tipo", "serverVersion": "Versión del servidor", "selectVersion": "Selecciona una versión", "absoluteServerPath": "Dirección absoluta del servidor", @@ -109,7 +110,7 @@ "restart": "Reiniciar", "killing": "Matando el proceso...", "starting": "Inicio-retrasado", - "delay-explained": "El servicio/agente ha iniciado recientemente y está retrasando el inicio de la instancia del servidor de Minecraft.", + "delay-explained": "El agente/servicio ha iniciado recientemente y está retrasando el inicio de la instancia del servidor de Minecraft.", "no-servers": "Actualmente no hay servidores. Para comenzar, haga click", "welcome": "Bienvenido a Crafty Controller" }, @@ -143,21 +144,21 @@ "files": "Archivos", "config": "Configuración", "playerControls": "Gestionar jugadores" - }, + }, "serverTerm": { - "stopScroll": "Detener el desplazamiento automático", - "commandInput": "Ingrese su comando", + "stopScroll": "Detener Scrolling automatico", + "commandInput": "Introducir tu comando", "sendCommand": "Enviar comando", "start": "Iniciar", "restart": "Reiniciar", "stop": "Detener", "updating": "Actualizando...", "starting": "Inicio-retrasado", - "delay-explained": "El servicio/agente ha iniciado recientemente y está retrasando el inicio de la instancia del servidor de Minecraft." - }, + "delay-explained": "El agente/servicio ha recientemente iniciado y está retrasando el inicio de la instancia del servidor de Minecraft." + }, "serverPlayerManagement": { "players": "Jugadores", - "bannedPlayers": "Jugadores baneados", + "bannedPlayers": "Jugadores Baneados", "loadingBannedPlayers": "Cargando jugadores baneados" }, "serverBackups": { @@ -178,7 +179,10 @@ "destroyBackup": "¿Destruir copia de seguridad \" + file_to_del + \"?", "confirmDelete": "¿Quieres eliminar esta copia de seguridad? Esto no se puede deshacer.", "confirm": "Confirmar", - "options": "Opciones" + "options": "Opciones", + "restoring": "Restaurando copia de seguridad. Esto puede tomar un tiempo. Sea paciente.", + "restore": "Restaurar", + "confirmRestore": "Esta seguro de que quiere restaurar desde este backup. Todos los archivos actuales del servidor seran cambiados al estado del backup y seran irrecuperables." }, "serverFiles": { "noscript": "El administrador de archivos no funciona sin JavaScript ", @@ -247,24 +251,24 @@ "yesDelete": "Si, borralo.", "noDelete": "No, vuelve atrás.", "deleteFilesQuestion": "¿Eliminar archivos del servidor de la máquina?", - "deleteFilesQuestionMessage": "¿Le gustaría que Crafty elimine todos los archivos del servidor de la máquina host?", + "deleteFilesQuestionMessage": "¿Le gustaría que Crafty elimine todos los archivos del servidor de la máquina host?

Esto incluye backups del servidor.", "yesDeleteFiles": "Si, borra los archivos.", "noDeleteFiles": "No, solo remover del panel.", "sendingDelete": "Eliminando servidor", "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. " + "bePatientDeleteFiles" : "Tenga paciencia mientras eliminamos su servidor del panel de Crafty y eliminamos todos los archivos. Esta pantalla se cerrará en unos momentos." }, "serverConfigHelp": { - "title": "Área de configuración del servidor", - "desc": "Aquí es donde puedes cambiar la configuración de su servidor", + "title": "Server Config Area", + "desc": "Here is where you can change the configuration of your server", "perms": [ - "Está recomendado que NO cambie las direcciones de un servidor administrado por Crafty.", - "Cambiar direcciones PUEDE romper cosas, especialmente en sistemas operativos de tipo Linux donde los permisos están más restringidos.", + "It is recommended to NOT change the paths of a server managed by Crafty.", + "Changing paths CAN break things, especially on Linux type operating systems where file permissions are more locked down.", "

", - "Si necesita cambiar donde se ubica un servidor, puede hacerlo siempre y cuando le des al usuario \"crafty\" permiso para leer / escribir a la ubicación del servidor.", + "If you feel you have to change a where a server is located you may do so as long as you give the \"crafty\" user permission to read / write to the server path.", "
", "
", - "En linux, esto es mejor hecho ejecutando lo siguiente:
", + "On Linux this is best done by executing the following:
", "", " sudo chown crafty:crafty /path/to/your/server -R
", " sudo chmod 2775 /path/to/your/server -R
", diff --git a/app/translations/hr_HR.json b/app/translations/hr_HR.json new file mode 100644 index 00000000..71c505f5 --- /dev/null +++ b/app/translations/hr_HR.json @@ -0,0 +1,346 @@ +{ + "login": { + "forgotPassword": "Zaboravio si lozinku?", + "login": "Prijava", + "password": "Lozinka", + "username": "Korisničko ime" + }, + "error": { + "hereIsTheError": "Ovdje je pogreška", + "contact": "Kontaktirajte Crafty Control podršku putem Discorda", + "terribleFailure": "Kakav užasan neuspjeh!", + "embarassing": "Uhh, ovo je sramotno.", + "error": "Greška!", + "start-error": "Poslužitelj {} nije usješno pokrenut s kodom pogreške: {}", + "closedPort": "Otkrili smo da port {} nije otvoren na glavnoj mreži ili ga vatrozid blokira. Povezivanje udaljenog klijenta s poslužiteljem može biti ograničeno.", + "internet": "Otkrili smo da uređaj koji pokreće Crafty nije povezan s internetom. Povezivanje klijenta s poslužiteljem može biti ograničeno.", + "eulaTitle": "Prihvatite EULA-u", + "eulaMsg": "Morate prihvatiti EULA-u. Poveznica Mojangove EULA-e se nalazi ispod ove poruke.", + "eulaAgree": "Slažete li se?" + }, + "404": { + "contact": "Kontaktirajte Crafty Control podršku putem Discorda", + "unableToFind": "Nismo u mogućnosti pronaći stranicu koju tražite. Molimo pokušajte kasnije, ili se vratite nazad i osvježite stranicu.", + "notFound": "Stranica nije pronađena" + }, + "footer": { + "version": "Verzija", + "copyright": "Autorska prava", + "allRightsReserved": "Sva prava zadržana" + }, + "sidebar": { + "dashboard": "Upravljačka ploča", + "servers": "Poslužitelji", + "documentation": "Dokumentacija", + "credits": "Zasluge", + "contribute": "Doprinesite", + "newServer": "Stvorite novi poslužitelj", + "navigation": "Navigacija" + }, + "serverWizard": { + "newServer": "Stvorite novi poslužitelj", + "importServer": "Uvezite postojeći poslužitelj", + "importZip": "Uvoz iz Zip datoteke", + "serverName": "Ime poslužitelja", + "serverPath": "Mjesto poslužitelja", + "serverType": "Tip poslužitelja", + "selectType": "Odaberite vrstu", + "serverVersion": "Verzija poslužitelja", + "selectVersion": "Odaberite verziju", + "absoluteServerPath": "Apsolutna putanja vašeg poslužitelja", + "serverJar": "Jar datoteka poslužitelja", + "minMem": "Minimalna memorija", + "maxMem": "Maksimalna memorija", + "serverPort": "Port poslužitelja", + "defaultPort": "25565 zadano", + "sizeInGB": "Veličina u GB", + "zipPath": "Mjesto poslužitelja", + "absoluteZipPath": "Apsolutna putanja vašeg poslužitelja", + "resetForm": "Poništi obrazac", + "importServerButton": "Uvezite poslužitelj!", + "buildServer": "Izgradite poslužitelj!", + "quickSettings": "Brze postavke", + "quickSettingsDescription": "Bez brige, ovo možete promijeniti kasnije", + "myNewServer": "Moj novi poslužitelj", + "bePatient": "Molim vas strpite se dok ' + (importing ? 'uvozimo' : 'preuzimamo') + ' poslužitelj", + "importing": "Uvoz poslužitelja...", + "downloading": "Preuzimanje poslužitelja...", + "addRole": "Pridružite poslužitelj postojećim ulogama", + "autoCreate": "Ako nijedna nije odabrana, Crafty će stvoriti jednu!", + "selectRole": "Odaberi ulogu" + }, + "dashboard": { + "dashboard": "Upravljačka ploča", + "memUsage": "Upotreba memorije", + "cpuUsage": "Upotreba procesora", + "host": "Domaćin", + "players": "Igrači", + "backups": "Sigurnosne kopije", + "newServer": "Stvorite novi poslužitelj", + "allServers": "Svi poslužitelji", + "server": "Poslužitelj", + "actions": "Radnje", + "world": "Svijet", + "motd": "MOTD", + "version": "Verzija", + "status": "Status", + "online": "Na mreži", + "offline": "Izvan mreže", + "lastBackup": "Posljednji:", + "nextBackup": "Sljedeći:", + "servers": "Poslužitelji", + "cannotSeeOnMobile": "Ne vidite sve na mobitelu?", + "cannotSee": "Ne vidite sve?", + "cannotSeeOnMobile2": "Pokušajte listati tablicu postrance.", + "max": "Maksimalno", + "avg": "Prosjek", + "bePatientStart": "Molimo budite strpljivi dok pokrećemo poslužitelj.
Zaslon će se osvježiti za par trenutaka", + "bePatientStop": "Molimo budite strpljivi dok zaustavljamo poslužitelj.
Zaslon će se osvježiti za par trenutaka", + "bePatientRestart": "Molimo budite strpljivi dok ponovno pokrećemo poslužitelj.
Zaslon će se osvježiti za par trenutaka", + "bePatientClone": "Molimo budite strpljivi dok kloniramo poslužitelj.
Zaslon će se osvježiti za par trenutaka", + "sendingCommand": "Slanje vaše naredbe", + "cpuCurFreq": "Trenutni takt procesora", + "cpuMaxFreq": "Maksimalni takt procesora", + "cpuCores": "Jezgre procesora", + "start": "Pokreni", + "stop": "Zaustavi", + "clone": "Kloniraj", + "kill": "Zaustavi postupak", + "restart": "Ponovno pokreni", + "killing": "Zaustavljanje postupka...", + "starting": "Odgođeno pokretanje", + "delay-explained": "Usluga je nedavno započeta i odgađa pokretanje instance poslužitelja Minecrafta", + "no-servers": "Trenutno nema poslužitelja. Da biste započeli, kliknite", + "welcome": "Dobrodošli u Crafty Controller" + }, + "accessDenied": { + "accessDenied": "Pristup odbijen", + "noAccess": "Nemate pristup ovom resursu", + "contactAdmin": "Obratite se administratoru poslužitelja kako biste pristupili ovom resursu ili ako mislite da biste trebali imati pristup ovom resursu, kontaktirajte podršku.", + "contact": "Kontaktirajte Crafty Control podršku putem Discorda" + }, + "serverStats": { + "online": "Na mreži", + "offline": "Izvan mreže", + "serverStatus": "Status poslužitelja", + "serverStarted": "Poslužitelj pokrenut", + "serverUptime": "Vrijeme rada poslužitelja", + "players": "Igrači", + "memUsage": "Upotreba memorije", + "cpuUsage": "Upotreba procesora", + "version": "Verzija", + "description": "Opis", + "errorCalculatingUptime": "Pogreška pri izračunavanja vremena neprekidnog rada", + "serverTime": "UTC vrijeme", + "unableToConnect": "Povezivanje nije moguće" + }, + "serverDetails": { + "serverDetails": "Pojedinosti poslužitelja", + "terminal": "Terminal", + "logs": "Zapisnik", + "schedule": "Raspored", + "backup": "Sigurnosna kopija", + "files": "Datoteke", + "config": "Konfiguracija", + "playerControls": "Upravljanje igračima" + }, + "serverTerm": { + "stopScroll": "Zaustavi automatsko listanje", + "commandInput": "Unesi naredbu", + "sendCommand": "Pošalji naredbu", + "start": "Pokreni", + "restart": "Ponovno pokreni", + "stop": "Zaustavi", + "updating": "Ažuriranje...", + "starting": "Odgođeno pokretanje", + "delay-explained": "Usluga je nedavno započeta i odgađa pokretanje instance poslužitelja Minecrafta" + }, + "serverPlayerManagement": { + "players": "Igrači", + "bannedPlayers": "Suspendirani igrači", + "loadingBannedPlayers": "Učitavanje liste suspendiranih igrača" + }, + "serverBackups": { + "backupNow": "Odmah napravi sigurnosnu kopiju!", + "backupAtMidnight": "Automatsko sigurnosno kopiranje u ponoć?", + "storageLocation": "Mjesto pohrane", + "storageLocationDesc": "Gdje želite pohraniti sigurnosne kopije?", + "maxBackups": "Maksimalan broj sigurnosnih kopija", + "maxBackupsDesc": "Crafty neće pohraniti više od zadanog broja sigurnosnih kopija, brišući najstarije (unesite 0 da biste zadržali sve)", + "save": "Spremi", + "cancel": "Odustani", + "currentBackups": "Trenutne sigurnosne kopije", + "download": "Preuzmi", + "path": "Mjesto", + "size": "Veličina", + "delete": "Izbriši", + "backupTask": "Pokrenut je zadatak sigurnosnog kopiranja.", + "destroyBackup": "Izbrisati sigurnosnu kopiju \" + file_to_del + \"?", + "confirmDelete": "Želite li izbrisati ovu sigurnosnu kopiju? Ovo se ne može poništiti.", + "confirm": "Potvrdi", + "options": "Mogućnosti" + }, + "serverFiles": { + "noscript": "Upravitelj datoteka ne radi bez JavaScripta", + "error": "Pogreška pri preuzimanju datoteka", + "files": "Datoteke", + "default": "Zadano", + "save": "Spremi", + "editingFile": "Uređivanje datoteke", + "delete": "Izbriši", + "createFile": "Stvori datoteku", + "createDir": "Stvori direktorij", + "rename": "Preimenuj", + "createFileQuestion": "Kako želite nazvati novu datoteku?", + "createDirQuestion": "Kako želite nazvati novi direktorij?", + "renameItemQuestion": "Kako glasi novi naziv?", + "deleteItemQuestion": "Jeste li sigurni da želite izbrisati \" + name + \"?", + "deleteItemQuestionMessage": "Brišete \\\"\" + path + \"\\\"!

Ova radnja je nepovratna i datoteka će biti zauvijek izgubljena!", + "yesDelete": "Da, razumijem posljedice", + "noDelete": "Ne", + "unsupportedLanguage": "Upozorenje: ova vrsta datoteke nije podržana", + "keybindings": "Tipkovnički prečaci", + "fileReadError": "Pogreška pri čitanju datoteke", + "upload": "Prenesi", + "unzip": "Raspakiraj", + "clickUpload": "Kliknite ovdje za odabir vaših datoteka", + "uploadTitle": "Prenesite datoteke na: ", + "waitUpload": "Molimo pričekajte dok prenosimo vaše datoteke... Ovo može potrajati.", + "stayHere": "NE NAPUŠTAJTE OVU STRANICU!", + "close": "Zatvori", + "download": "Preuzmi" + }, + "serverConfig": { + "serverName": "Ime poslužitelja", + "serverNameDesc": "Kako želite nazvati ovaj poslužitelj", + "serverPath": "Radni direktorij poslužitelja", + "serverPathDesc": "Apsolutna putanja (ne uključuje izvršnu datoteku)", + "serverLogLocation": "Lokacija zapisnika poslužitelja", + "serverLogLocationDesc": "Apsolutna putanja datoteke zapisnika", + "serverExecutable": "Izvršitelj poslužitelja", + "serverExecutableDesc": "Izvršna datoteka poslužitelja", + "serverExecutionCommand": "Naredba izvršenja poslužitelja", + "serverExecutionCommandDesc": "Ono što će biti pokrenuto u skrivenom terminalu", + "serverStopCommand": "Naredba zaustavljanja poslužitelja", + "serverStopCommandDesc": "Naredba koja uvjetuje zaustavljanje programa", + "serverAutostartDelay": "Odgoda automatskog pokretanja poslužitelja", + "serverAutostartDelayDesc": "Odgoda prije automatskog pokretanja (ako je omogućeno ispod)", + "serverIP": "IP poslužitelja", + "serverIPDesc": "IP na koji će se Crafty povezati radi skupljanja statistika (Ukoliko naiđete na problem, probajte upisati pravu IP adresu umjesto 127.0.0.1)", + "serverPort": "Port poslužitelja", + "serverPortDesc": "Port na koji će se Crafty povezati radi skupljanja statistika", + "removeOldLogsAfter": "Uklonite stare zapise nakon", + "removeOldLogsAfterDesc": "Nakon koliko dana bi se datoteka zapisa trebala izbrisati (0 za isključenje ove mogućnosti)", + "serverAutoStart": "Automatsko pokretanje poslužitelja", + "serverCrashDetection": "Otkrivanje rušenja poslužitelja", + "save": "Spremi", + "cancel": "Odustani", + "deleteServer": "Izbriši poslužitelj", + "stopBeforeDeleting": "Molimo zaustavite poslužitelj prije brisanja", + "exeUpdateURLDesc": "URL za izravno preuzimanje ažuriranja.", + "exeUpdateURL": "URL izvršnog ažuriranja poslužitelja", + "update": "Ažuriraj izvršnu datoteku", + "bePatientUpdate": "Molimo budite strpljivi dok ažuriramo poslužitelj. Vrijeme preuzimanja može varirati ovisno o vašoj brzini interneta.
Zaslon će se osvježiti za par trenutaka", + "sendingRequest": "Slanje vašeg zahtjeva...", + "deleteServerQuestion": "Izbrisati poslužitelj?", + "deleteServerQuestionMessage": "Jeste li sigurni da želite izbrisati ovaj poslužitelj? Nakon ovoga nema povratka...", + "yesDelete": "Da, izbriši", + "noDelete": "Ne, vrati se nazad", + "deleteFilesQuestion": "Izbrisati datoteke poslužitelja sa uređaja?", + "deleteFilesQuestionMessage": "Želite li da Crafty izbriše sve datoteke poslužitelja s glavnog računala?", + "yesDeleteFiles": "Da, izbriši datoteke", + "noDeleteFiles": "Ne, samo ih uklonite s panela", + "sendingDelete": "Brisanje poslužitelja", + "bePatientDelete": "Molimo budite strpljivi dok uklanjamo vaš poslužitelj s Crafty panela. Zaslon će se osvježiti za par trenutaka.", + "bePatientDeleteFiles" : "Molimo budite strpljivi dok uklanjamo vaš poslužitelj s Crafty panela i brišemo sve datoteke. Zaslon će se osvježiti za par trenutaka." + }, + "serverConfigHelp": { + "title": "Područje konfiguracije poslužitelja", + "desc": "Ovdje možete promijeniti konfiguraciju vašeg poslužitelja", + "perms": [ + "Preporuča se NE mijenjati putanju poslužitelja kojim upravlja Crafty.", + "Mijenjanje putanje MOŽE utjecati na pravilno funkcioniranje poslužitelja, posebice na operativnim sustavima poput Linuxa, gdje su dozvole datoteka ograničene.", + "

", + "Ako smatrate da morate promijeniti mjesto na kojem se poslužitelj nalazi, to možete učiniti pod uvjetom da \"crafty\" korisnik ima dopuštenje čitanja/pisanja na zadanoj putanji.", + "
", + "
", + "Na Linuxu je to najlakše postići izvršavanjem sljedećih komandi:
", + "", + " sudo chown crafty:crafty /putanja/vašeg/servera -R
", + " sudo chmod 2775 /putanja/vašeg/servera -R
", + "
" + ] + }, + "panelConfig": { + "save": "Spremi", + "cancel": "Odustani", + "delete": "Izbriši" + }, + "datatables": { + "i18n": { + "decimal": "", + "emptyTable": "Nema dostupnih podataka u tablici", + "info": "Prikazuje se _START_ do _END_ od _TOTAL_ unosa", + "infoEmpty": "Prikazuje se 0 do 0 od 0 unosa", + "infoFiltered": "(filtrirano od ukupno _MAX_ unosa)", + "infoPostFix": "", + "thousands": ",", + "lengthMenu": "Prikaži _MENU_ unose", + "loadingRecords": "Učitavanje...", + "processing": "Obrada...", + "search": "Pretraži:", + "zeroRecords": "Nisu pronađeni odgovarajući zapisi", + "paginate": { + "first": "Prvi", + "last": "Zadnji", + "next": "Sljedeći", + "previous": "Prethodni" + }, + "aria": { + "sortAscending": ": aktiviraj za sortiranje stupca uzlazno", + "sortDescending": ": aktiviraj za sortiranje stupca silazno" + }, + "buttons": { + "collection": "Zbirka ", + "colvis": "Vidljivost stupca", + "colvisRestore": "Povratak vidljivosti", + "copy": "Kopiraj", + "copyKeys": "Pritisnite ctrl ili u2318 + C da kopirate podatke tablice u međuspremnik sustava.

Da biste odustali, kliknite ovu poruku ili pritisnite tipku escape.", + "copySuccess": { + "1": "1 red je kopiran u međuspremnik", + "_": "Kopirana %d redaka u međuspremnik" + }, + "copyTitle": "Kopirati u međuspremnik", + "csv": "CSV", + "excel": "Excel", + "pageLength": { + "-1": "Prikaži sve retke", + "1": "Prikaži 1 red", + "_": "Prikaži %d redaka" + }, + "pdf": "PDF", + "print": "Isprintaj" + }, + "select": { + "rows": { + "0": "Kliknite na red da biste ga odabrali", + "1": "%d red odabran", + "_": "%d redaka odabrana" + }, + "cells": { + "0": "Kliknite na ćeliju da biste je odabrali", + "1": "%d ćelija odabrana", + "_": "%d ćelija odabrano" + }, + "columns": { + "0": "Kliknite na stupac da biste ga odabrali", + "1": "%d stupac odabran", + "_": "%d stupaca odabrano" + } + } + } + }, + "base": { + "doesNotWorkWithoutJavascript": "Upozorenje: Crafty ne radi ispravno kada JavaScript nije omogućen!" + } +} \ No newline at end of file diff --git a/app/translations/nl_BE.json b/app/translations/nl_BE.json new file mode 100644 index 00000000..b54fc542 --- /dev/null +++ b/app/translations/nl_BE.json @@ -0,0 +1,346 @@ +{ + "login": { + "forgotPassword": "Wachtwoord vergeten", + "login": "Log In", + "password": "Wachtwoord", + "username": "gebruikersnaam" + }, + "error": { + "hereIsTheError": "Hier is de fout", + "contact": "Neem contact op met Crafty Control ondersteuning via Discord", + "terribleFailure": "Wat een verschrikkelijke mislukking!", + "embarassing": "Oh, nou, dit is gênant.", + "error": "Fout!", + "start-error": "Server {} kan niet starten met foutcode: {}", + "closedPort": "We hebben gedetecteerd dat poort {} mogelijk niet open is op het hostnetwerk of dat een firewall deze blokkeert. Externe clientverbindingen met de server kunnen beperkt zijn.", + "internet": "We hebben gedetecteerd dat de machine waarop Crafty draait geen verbinding met internet heeft. Clientverbindingen met de server kunnen beperkt zijn.", + "eulaTitle": "Akkoord gaan met EULA", + "eulaMsg": "U moet akkoord gaan met de EULA. Een kopie van de Mojang EULA is gelinkt onder dit bericht.", + "eulaAgree": "Bent u het eens?" + }, + "404": { + "contact": "Neem contact op met Crafty Control ondersteuning via Discord", + "unableToFind": "We hebben de pagina die u zoekt niet kunnen vinden. Probeer het opnieuw, of ga terug en herlaad.", + "notFound": "Pagina niet gevonden" + }, + "footer": { + "version": "Versie", + "copyright": "auteursrechten", + "allRightsReserved": "Alle rechten voorbehouden" + }, + "sidebar": { + "dashboard": "Dashboard", + "servers": "Servers", + "documentation": "Documentatie", + "credits": "tegoed", + "contribute": "Bijdrage leveren", + "newServer": "Nieuwe server maken", + "navigation": "Navigatie" + }, + "serverWizard": { + "newServer": "Nieuwe server maken", + "importServer": "Een bestaande server importeren", + "importZip": "Importeren uit een zipbestand", + "serverName": "Server naam", + "serverPath": "Serverpad", + "serverType": "Server Type", + "selectType": "Selecteer een type", + "serverVersion": "Serverversie", + "selectVersion": "Selecteer een versie", + "absoluteServerPath": "Absoluut pad naar uw server", + "serverJar": "Server Jarfile", + "minMem": "Minimaal geheugen", + "maxMem": "Maximaal geheugen", + "serverPort": "Server poort", + "defaultPort": "25565 standaard", + "sizeInGB": "Grootte in GB", + "zipPath": "Serverpad", + "absoluteZipPath": "Absoluut pad naar uw server", + "resetForm": "Formulier resetten", + "importServerButton": "Server importeren!", + "buildServer": "Server bouwen!", + "quickSettings": "Snelle instellingen", + "quickSettingsDescription": "Maak je geen zorgen, je kunt deze later wijzigen", + "myNewServer": "My New Server", + "bePatient": "Even geduld a.u.b. we ' + (importeren ? 'importeren' : 'downloaden') + ' de server", + "importing": "Server importeren...", + "downloading": "Server downloaden...", + "addRole": "Server toevoegen aan bestaande rollen", + "autoCreate": "Als er geen zijn geselecteerd, maakt Crafty er een!", + "selectRole": "Selecteer Rollen" + }, + "dashboard": { + "dashboard": "Dashboard", + "memUsage": "Geheugengebruik", + "cpuUsage": "CPU gebruik", + "host": "Gastheer", + "players": "spelers", + "backups": "Backups", + "newServer": "Nieuwe server maken", + "allServers": "Alle servers", + "server": "Server", + "actions": "Acties", + "world": "Wereld", + "motd": "MOTD", + "version": "Versie", + "status": "Toestand", + "online": "Online", + "offline": "Offline", + "lastBackup": "Laatste:", + "nextBackup": "Volgende:", + "servers": "Servers", + "cannotSeeOnMobile": "Zie je niet alles op je GSM?", + "cannotSee": "Zie je niet alles?", + "cannotSeeOnMobile2": "Probeer de tabel zijwaarts te scrollen.", + "max": "Max", + "avg": "Avg", + "bePatientStart": "Even geduld terwijl we de server starten.
Dit scherm wordt zo vernieuwd", + "bePatientStop": "Even geduld terwijl we de server stoppen.
Dit scherm wordt zo vernieuwd", + "bePatientRestart": "Even geduld terwijl we de server herstarten.
Dit scherm wordt zo vernieuwd", + "bePatientClone": "Even geduld terwijl we de server klonen.
Dit scherm wordt zo vernieuwd", + "sendingCommand": "Uw opdracht verzenden", + "cpuCurFreq": "CPU huidige kloksnelheid", + "cpuMaxFreq": "CPU maximale kloksnelheid", + "cpuCores": "CPU Cores", + "start": "Begin", + "stop": "Stoppen", + "clone": "Kloon", + "kill": "Proces doden", + "restart": "Herstarten", + "killing": "Doden proces...", + "starting": "Vertraagde start", + "delay-explained": "De service/agent is onlangs gestart en vertraagt ​​de start van de minecraft-serverinstantie", + "no-servers": "Er zijn momenteel geen servers. Om te beginnen, klik", + "welcome": "Welkom bij Crafty Controller " + }, + "accessDenied": { + "accessDenied": "Toegang geweigerd", + "noAccess": "U heeft geen toegang tot deze bron", + "contactAdmin": "Neem contact op met uw serverbeheerder voor toegang tot deze bron, als u denkt dat u toegang zou moeten hebben tot deze bron, neem dan contact op met ondersteuning.", + "contact": "Neem contact op met Crafty Control ondersteuning via Discord" + }, + "serverStats": { + "online": "Online", + "offline": "Offline", + "serverStatus": "Server Status", + "serverStarted": "Server gestart", + "serverUptime": "Server Uptime", + "players": "Spelers", + "memUsage": "Geheugengebruik", + "cpuUsage": "CPU gebruik", + "version": "Versie", + "description": "Beschrijving", + "errorCalculatingUptime": "Fout bij berekenen van uptime", + "serverTime": "UTC tijd", + "unableToConnect": "Niet in staat te verbinden" + }, + "serverDetails": { + "serverDetails": "Server Details", + "terminal": "Terminal", + "logs": "Logboeken", + "schedule": "Schema", + "backup": "Backup", + "files": "Bestanden", + "config": "Configuratie", + "playerControls": "Spelersbeheer" + }, + "serverTerm": { + "stopScroll": "Automatisch scrollen stoppen", + "commandInput": "Voer uw opdracht in", + "sendCommand": "Stuur commando", + "start": "Begin", + "restart": "Herstarten", + "stop": "Stoppen", + "updating": "Bijwerken...", + "starting": "Vertraagde start", + "delay-explained": "De service/agent is onlangs gestart en vertraagt ​​de start van de minecraft-serverinstantie" + }, + "serverPlayerManagement": { + "players": "spelers", + "bannedPlayers": "Verbannen spelers", + "loadingBannedPlayers": "Verbannen spelers laden" + }, + "serverBackups": { + "backupNow": "Nu een back-up maken!", + "backupAtMidnight": "Automatische back-up maken om middernacht?", + "storageLocation": "Opslaglocatie", + "storageLocationDesc": "Waar wil je back-ups opslaan?", + "maxBackups": "Max Back-ups", + "maxBackupsDesc": "Crafty zal niet meer dan N back-ups opslaan, waarbij de oudste wordt verwijderd (voer 0 in om ze allemaal te bewaren)", + "save": "Opslaan", + "cancel": "Annuleren", + "currentBackups": "Huidige back-ups", + "download": "Downloaden", + "path": "Pad", + "size": "Grootte", + "delete": "Verwijderen", + "backupTask": "Er is een back-uptaak ​​gestart.", + "destroyBackup": "Back-up vernietigen \" + file_to_del + \"?", + "confirmDelete": "Wil je deze back-up verwijderen? Dit kan niet ongedaan gemaakt worden.", + "confirm": "Bevestigen", + "options": "Opties" + }, + "serverFiles": { + "noscript": "De bestandsbeheerder werkt niet zonder JavaScript", + "error": "Fout bij het ophalen van bestanden", + "files": "Bestanden", + "default": "Standaard", + "save": "Opslaan", + "editingFile": "Bestand bewerken", + "delete": "Verwijderen", + "createFile": "Bestand maken", + "createDir": "Maak een directory", + "rename": "Hernoemen", + "createFileQuestion": "Welke naam wil je voor het nieuwe bestand?", + "createDirQuestion": "Welke naam wil je voor de nieuwe directory?", + "renameItemQuestion": "Wat moet de nieuwe naam worden?", + "deleteItemQuestion": "Weet u zeker dat u \" + naam + \" wilt verwijderen?", + "deleteItemQuestionMessage": "Je verwijdert \\\"\" + pad + \"\\\"!

Deze actie is onomkeerbaar en het gaat voor altijd verloren!", + "yesDelete": "Ja, ik begrijp de gevolgen", + "noDelete": "Nee", + "unsupportedLanguage": "Waarschuwing: dit is geen ondersteund bestandstype", + "keybindings": "Sneltoetsen", + "fileReadError": "Bestand leesfout", + "upload": "Uploaden", + "unzip": "Uitpakken", + "clickUpload": "Klik hier om uw bestanden te selecteren", + "uploadTitle": "Bestanden uploaden naar: ", + "waitUpload": "Even geduld terwijl we uw bestanden uploaden a.u.b.... Dit kan even duren.", + "stayHere": "VERLAAT DEZE PAGINA NIET!", + "close": "Sluit", + "download": "Downloaden" + }, + "serverConfig": { + "serverName": "Server naam", + "serverNameDesc": "Hoe je deze server wilt noemen", + "serverPath": "Werkmap van server", + "serverPathDesc": "Absoluut volledig pad (exclusief executable)", + "serverLogLocation": "Locatie serverlog", + "serverLogLocationDesc": "Absoluut volledig pad naar het logbestand", + "serverExecutable": "Executable van de server", + "serverExecutableDesc": "Het executable van de server", + "serverExecutionCommand": "Serveruitvoeringsopdracht", + "serverExecutionCommandDesc": "Wat wordt gelanceerd in een verborgen terminal", + "serverStopCommand": "Server Stop Commando", + "serverStopCommandDesc": "Commando om het programma te verzenden om te stoppen", + "serverAutostartDelay": "Vertraging autostart server", + "serverAutostartDelayDesc": "Vertraging voor automatisch starten (indien hieronder ingeschakeld)", + "serverIP": "Server IP", + "serverIPDesc": "IP Crafty zou verbinding moeten maken voor statistieken (probeer een echt ip in plaats van 127.0.0.1 als je problemen hebt)", + "serverPort": "Server poort", + "serverPortDesc": "Port Crafty zou verbinding moeten maken voor statistieken", + "removeOldLogsAfter": "Oude logboeken verwijderen na", + "removeOldLogsAfterDesc": "Hoeveel dagen een logbestand oud moet zijn om te worden verwijderd (0 is uitgeschakeld)", + "serverAutoStart": "Server automatisch starten", + "serverCrashDetection": "Detectie servercrash", + "save": "Sparen", + "cancel": "Annuleren", + "deleteServer": "Server verwijderen", + "stopBeforeDeleting": "Stop de server voordat u dit verwijdert", + "exeUpdateURLDesc": "Directe download-URL voor updates.", + "exeUpdateURL": "Uitvoerbare server-update-URL", + "update": "Uitvoerbaar bestand bijwerken", + "bePatientUpdate": "Even geduld terwijl we de server updaten. De downloadtijden kunnen variëren, afhankelijk van je internetsnelheden.
Dit scherm wordt zo vernieuwd", + "sendingRequest": "Uw verzoek verzenden...", + "deleteServerQuestion": "Server verwijderen?", + "deleteServerQuestionMessage": "Weet u zeker dat u deze server wilt verwijderen? Deze actie is onomkeerbaar...", + "yesDelete": "Ja, verwijderen", + "noDelete": "Nee, ga terug", + "deleteFilesQuestion": "Serverbestanden van de machine verwijderen?", + "deleteFilesQuestionMessage": "Wil je dat Crafty alle serverbestanden van de hostmachine verwijdert?", + "yesDeleteFiles": "Ja, bestanden verwijderen", + "noDeleteFiles": "Nee, gewoon uit het paneel verwijderen", + "sendingDelete": "Server verwijderen", + "bePatientDelete": "Even geduld terwijl we uw server uit het Crafty-paneel verwijderen. Dit scherm wordt over enkele ogenblikken gesloten.", + "bePatientDeleteFiles" : "Even geduld terwijl we uw server uit het Crafty-paneel verwijderen, en alle bestanden verwijderen. Dit scherm wordt over enkele ogenblikken gesloten." + }, + "serverConfigHelp": { + "title": "Serverconfiguratiegebied", + "desc": "Hier kunt u de configuratie van uw server wijzigen", + "perms": [ + "Het wordt NIET aanbevolen om de paden van een door Crafty beheerde server te wijzigen.", + "Paden wijzigen KAN dingen kapotmaken, vooral op Linux-type besturingssystemen waar bestandspermissies meer vergrendeld zijn.", + "

", + "Als u denkt dat u de locatie van een server moet wijzigen, kunt u dit doen zolang u de \"crafty\"-gebruiker toestemming geeft om te lezen / schrijven naar het serverpad.", + "
", + "
", + "Op Linux kunt u dit het beste doen door het volgende uit te voeren:
", + "", + " sudo chown crafty:crafty /path/to/your/server -R
", + " sudo chmod 2775 /path/to/your/server -R
", + "
" + ] + }, + "panelConfig": { + "save": "Opslaan", + "cancel": "Annuleren", + "delete": "Verwijderen" + }, + "datatables": { + "i18n": { + "decimal": "", + "emptyTable": "Geen data beschikbaar in de tabel", + "info": "_START_ tot _END_ van _TOTAL_ inzendingen weergeven", + "infoEmpty": "0 tot 0 van 0 items weergeven", + "infoFiltered": "(gefilterd uit _MAX_ totale inzendingen)", + "infoPostFix": "", + "thousands": ",", + "lengthMenu": "Toon _MENU_ items", + "loadingRecords": "Bezig met laden...", + "processing": "Verwerken...", + "search": "Zoekopdracht:", + "zeroRecords": "Geen overeenkomende records gevonden", + "paginate": { + "first": "Eerste", + "last": "Laatst", + "next": "Volgende", + "previous": "Vorig" + }, + "aria": { + "sortAscending": ": activeren om kolom oplopend te sorteren", + "sortDescending": ": activeren om kolom aflopend te sorteren" + }, + "buttons": { + "collection": "Verzameling ", + "colvis": "Column Visibility", + "colvisRestore": "Zichtbaarheid herstellen", + "copy": "Kopiëren", + "copyKeys": "Druk op ctrl of u2318 + C om de tabelgegevens naar uw systeemklembord te kopiëren.

Klik op dit bericht of druk op escape om te annuleren.", + "copySuccess": { + "1": "1 rij gekopieerd naar klembord", + "_": "%d rijen gekopieerd naar klembord" + }, + "copyTitle": "Kopieer naar klembord", + "csv": "CSV", + "excel": "Excel", + "pageLength": { + "-1": "Toon alle rijen", + "1": "Toon 1 rij", + "_": "%d rijen tonen" + }, + "pdf": "PDF", + "print": "Afdrukken" + }, + "select": { + "rows": { + "0": "Klik op een rij om deze te selecteren", + "1": "%d rij geselecteerd", + "_": "%d rijen geselecteerd" + }, + "cells": { + "0": "Klik op een cel om deze te selecteren", + "1": "%d cel geselecteerd", + "_": "%d cellen geselecteerd" + }, + "columns": { + "0": "Klik op een kolom om deze te selecteren", + "1": "%d kolom geselecteerd", + "_": "%d kolommen geselecteerd" + } + } + } + }, + "base": { + "doesNotWorkWithoutJavascript": "Waarschuwing: Crafty werkt niet goed als JavaScript niet is ingeschakeld!" + } +} \ No newline at end of file diff --git a/app/translations/zh_CN.json b/app/translations/zh_CN.json index 3c68adc6..14a83439 100644 --- a/app/translations/zh_CN.json +++ b/app/translations/zh_CN.json @@ -16,7 +16,8 @@ "internet": "我们检测到运行 Crafty 的设备没有网络连接。客户端到服务器的连接可能受限。", "eulaTitle": "同意最终用户许可协议(EULA)", "eulaMsg": "你必须同意最终用户许可协议(EULA)。一份 Mojang EULA 副本的链接在此消息下方。", - "eulaAgree": "你同意吗?" + "eulaAgree": "你同意吗?", + "noJava": "服务器 {} 启动失败,并输出了如下错误码:我们检测到 Java 未安装。请先安装 java 然后再启动服务器。" }, "404": { "contact": "通过 Discord 联系 Crafty Control 支持", @@ -48,7 +49,7 @@ "serverVersion": "服务器版本", "selectVersion": "选择一个版本", "absoluteServerPath": "您的服务器的绝对路径", - "serverJar": "服务器 Jar 核心", + "serverJar": "服务器 Jar 文件", "minMem": "最小内存", "maxMem": "最大内存", "serverPort": "服务器端口", @@ -178,7 +179,10 @@ "destroyBackup": "删除备份 \" + file_to_del + \"?", "confirmDelete": "您想要删除这个备份吗?此操作不能撤销。", "confirm": "确认", - "options": "选项" + "options": "选项", + "restoring": "正在恢复备份。这需要一点时间。请耐心等待。", + "restore": "恢复", + "confirmRestore": "你确定要从此备份恢复吗?所有现存的服务器文件将更改到备份时的状态,并且无法撤销。" }, "serverFiles": { "noscript": "文件管理器无法在没有 JavaScript 的情况下使用",