diff --git a/CHANGELOG.md b/CHANGELOG.md
index 35257c29..da73024f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,8 @@
### New features
- Use Papermc Group's API for `paper` & `folia` builds in server builder ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/688))
- Allow omission of player count from Dashboard (e.g. for proxy servers) ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/692))
+### Refactor
+- Refactor subpage perm checks ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/695))
### Bug fixes
- Fix bukkit and downstream fork MOTD crash ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/686))
- Fix bug where invalid server Id leads to stack ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/690))
@@ -12,7 +14,8 @@
- Refactor Forge server initialisation flow for newer versions ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/687))
- Remove scroll bars from player management ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/693))
### Lang
-TBD
+- Update `zh_CN, pl_PL, nl_BE, lv_LV, he_IL, fr_FR, de_DE, lol_EN` translations for `4.2.3` ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/696))
+- New `uk_UA, tr_TR, th_TH` translations for `4.2.3` ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/696))
## --- [4.2.2] - 2023/12/13
diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py
index 8ac827c3..02a5dbc1 100644
--- a/app/classes/web/panel_handler.py
+++ b/app/classes/web/panel_handler.py
@@ -28,6 +28,18 @@ from app.classes.web.base_handler import BaseHandler
from app.classes.web.webhooks.webhook_factory import WebhookFactory
logger = logging.getLogger(__name__)
+# You must put any new subpages in here
+SUBPAGE_PERMS = {
+ "term": EnumPermissionsServer.TERMINAL,
+ "logs": EnumPermissionsServer.LOGS,
+ "schedules": EnumPermissionsServer.SCHEDULE,
+ "backup": EnumPermissionsServer.BACKUP,
+ "files": EnumPermissionsServer.FILES,
+ "config": EnumPermissionsServer.CONFIG,
+ "admin_controls": EnumPermissionsServer.PLAYERS,
+ "metrics": EnumPermissionsServer.LOGS,
+ "webhooks": EnumPermissionsServer.CONFIG,
+}
class PanelHandler(BaseHandler):
@@ -138,6 +150,11 @@ class PanelHandler(BaseHandler):
# increasing and will eat up the RAM
del chunk
+ def check_subpage_perms(self, user_perms, subpage):
+ if SUBPAGE_PERMS.get(subpage, False) in user_perms:
+ return True
+ return False
+
def check_server_id(self):
server_id = self.get_argument("id", None)
@@ -489,8 +506,17 @@ class PanelHandler(BaseHandler):
server_id = self.check_server_id()
# load page the user was on last
server_subpage = self.controller.servers.server_subpage.get(server_id, "")
- if subpage == "" and server_subpage != "":
- subpage = self.controller.servers.server_subpage.get(server_id, "")
+ if (
+ subpage == ""
+ and server_subpage != ""
+ and self.check_subpage_perms(
+ self.controller.server_perms.get_user_id_permissions_list(
+ exec_user["user_id"], server_id
+ ),
+ server_subpage,
+ )
+ ):
+ subpage = server_subpage
else:
self.controller.servers.server_subpage[server_id] = subpage
if server_id is None:
@@ -502,16 +528,6 @@ class PanelHandler(BaseHandler):
page_data["backup_failed"] = server_obj.last_backup_status()
server_obj = None
- valid_subpages = [
- "term",
- "logs",
- "backup",
- "config",
- "files",
- "admin_controls",
- "schedules",
- "metrics",
- ]
if not self.failed_server:
server = self.controller.servers.get_server_instance_by_id(server_id)
# server_data isn't needed since the server_stats also pulls server data
@@ -577,7 +593,6 @@ class PanelHandler(BaseHandler):
page_data["get_players"] = server.get_server_players()
else:
page_data["get_players"] = []
- page_data["active_link"] = subpage
page_data["permissions"] = {
"Commands": EnumPermissionsServer.COMMANDS,
"Terminal": EnumPermissionsServer.TERMINAL,
@@ -601,83 +616,41 @@ class PanelHandler(BaseHandler):
page_data["server_stats"][
"server_type"
] = self.controller.servers.get_server_type_by_id(server_id)
- if subpage not in valid_subpages:
- logger.debug("not a valid subpage")
+
if not subpage:
- if (
- page_data["permissions"]["Terminal"]
- in page_data["user_permissions"]
- ):
- subpage = "term"
- elif page_data["permissions"]["Logs"] in page_data["user_permissions"]:
- subpage = "logs"
- elif (
- page_data["permissions"]["Schedule"]
- in page_data["user_permissions"]
- ):
- subpage = "schedules"
- elif (
- page_data["permissions"]["Backup"] in page_data["user_permissions"]
- ):
- subpage = "backup"
- elif page_data["permissions"]["Files"] in page_data["user_permissions"]:
- subpage = "files"
- elif (
- page_data["permissions"]["Config"] in page_data["user_permissions"]
- ):
- subpage = "config"
- elif (
- page_data["permissions"]["Players"] in page_data["user_permissions"]
- ):
- subpage = "admin_controls"
- else:
+ for spage, perm in SUBPAGE_PERMS.items():
+ if perm in page_data["user_permissions"]:
+ subpage = spage
+ break
+ # If we still don't have a subpage we're going to assume they
+ # have no perms
+ if not subpage:
self.redirect("/panel/error?error=Unauthorized access to Server")
+ if subpage not in SUBPAGE_PERMS.keys():
+ self.set_status(404)
+ page_data["background"] = self.controller.cached_login
+ return self.render(
+ "public/404.html",
+ data=page_data,
+ translate=self.translator.translate,
+ )
+ page_data["active_link"] = subpage
logger.debug(f'Subpage: "{subpage}"')
- if subpage == "term":
- if (
- not page_data["permissions"]["Terminal"]
- in page_data["user_permissions"]
- ):
- if not superuser:
- self.redirect(
- "/panel/error?error=Unauthorized access to Terminal"
- )
- return
-
- if subpage == "logs":
- if (
- not page_data["permissions"]["Logs"]
- in page_data["user_permissions"]
- ):
- if not superuser:
- self.redirect("/panel/error?error=Unauthorized access to Logs")
- return
+ if (
+ not self.check_subpage_perms(page_data["user_permissions"], subpage)
+ and not superuser
+ ):
+ return self.redirect(
+ f"/panel/error?error=Unauthorized access to {subpage}"
+ )
if subpage == "schedules":
- if (
- not page_data["permissions"]["Schedule"]
- in page_data["user_permissions"]
- ):
- if not superuser:
- self.redirect(
- "/panel/error?error=Unauthorized access To Schedules"
- )
- return
page_data["schedules"] = HelpersManagement.get_schedules_by_server(
server_id
)
if subpage == "config":
- if (
- not page_data["permissions"]["Config"]
- in page_data["user_permissions"]
- ):
- if not superuser:
- self.redirect(
- "/panel/error?error=Unauthorized access Server Config"
- )
- return
page_data["java_versions"] = Helpers.find_java_installs()
server_obj: Servers = self.controller.servers.get_server_obj(server_id)
page_data["failed"] = self.failed_server
@@ -691,26 +664,7 @@ class PanelHandler(BaseHandler):
page_java.append(version)
page_data["java_versions"] = page_java
-
- if subpage == "files":
- if (
- not page_data["permissions"]["Files"]
- in page_data["user_permissions"]
- ):
- if not superuser:
- self.redirect("/panel/error?error=Unauthorized access Files")
- return
-
if subpage == "backup":
- if (
- not page_data["permissions"]["Backup"]
- in page_data["user_permissions"]
- ):
- if not superuser:
- self.redirect(
- "/panel/error?error=Unauthorized access to Backups"
- )
- return
server_info = self.controller.servers.get_server_data_by_id(server_id)
page_data[
"backup_config"
@@ -761,15 +715,6 @@ class PanelHandler(BaseHandler):
server_id, hours=(days * 24)
)
if subpage == "webhooks":
- if (
- not page_data["permissions"]["Config"]
- in page_data["user_permissions"]
- ):
- if not superuser:
- self.redirect(
- "/panel/error?error=Unauthorized access to Webhooks Config"
- )
- return
page_data[
"webhooks"
] = self.controller.management.get_webhooks_by_server(
diff --git a/app/translations/de_DE.json b/app/translations/de_DE.json
index 11311bb0..1a7f8995 100644
--- a/app/translations/de_DE.json
+++ b/app/translations/de_DE.json
@@ -327,6 +327,7 @@
"bePatientDeleteFiles": "Bitte haben Sie etwas Geduld, während wir Ihren Server aus dem Crafty-Panel entfernen und alle Dateien löschen. Dieser Bildschirm wird in wenigen Augenblicken geschlossen.",
"bePatientUpdate": "Bitte haben Sie etwas Geduld, während wir den Server aktualisieren. Die Downloadzeiten können je nach Ihrer Internetgeschwindigkeit variieren.
Dieser Bildschirm wird sich in einem Moment aktualisieren",
"cancel": "Abbrechen",
+ "countPlayers": "Server in die Gesamtspielerzahl einbeziehen",
"crashTime": "Zeitüberschreitung nach Absturz",
"crashTimeDesc": "Wie lange soll Crafty warten, bevor Crafty den Server als abgestürzt betrachtet?",
"deleteFilesQuestion": "Serverdateien vom Rechner löschen?",
diff --git a/app/translations/en_EN.json b/app/translations/en_EN.json
index a717c929..32721082 100644
--- a/app/translations/en_EN.json
+++ b/app/translations/en_EN.json
@@ -327,6 +327,7 @@
"bePatientDeleteFiles": "Please be patient while we remove your server from the Crafty panel and delete all files. This screen will close in a few moments.",
"bePatientUpdate": "Please be patient while we update the server. Download times can vary depending upon your internet speeds.
This screen will refresh in a moment",
"cancel": "Cancel",
+ "countPlayers": "Include server in total player count",
"crashTime": "Crash Timeout",
"crashTimeDesc": "How long should we wait before we consider your server as crashed?",
"deleteFilesQuestion": "Delete server files from machine?",
@@ -377,8 +378,7 @@
"timeoutExplain2": "command before it forces the process down.",
"update": "Update Executable",
"yesDelete": "Yes, delete",
- "yesDeleteFiles": "Yes, delete files",
- "countPlayers": "Include server in total player count"
+ "yesDeleteFiles": "Yes, delete files"
},
"serverConfigHelp": {
"desc": "Here is where you can change the configuration of your server",
@@ -666,4 +666,4 @@
"webhook_body": "Webhook Body",
"webhooks": "Webhooks"
}
-}
\ No newline at end of file
+}
diff --git a/app/translations/fr_FR.json b/app/translations/fr_FR.json
index 112de289..aa45a69b 100644
--- a/app/translations/fr_FR.json
+++ b/app/translations/fr_FR.json
@@ -327,6 +327,7 @@
"bePatientDeleteFiles": "Merci de patienter pendant la suppression du serveur du tableau de bord de Crafty et des fichiers de la machine hôte. Cet écran se fermera dans quelques instants.",
"bePatientUpdate": "Merci de patienter pendant la mise à jour du Serveur. La durée de téléchargement dépend de votre vitesse de connexion internet.
Cet écran se mettra à jour dans quelques instants",
"cancel": "Annuler",
+ "countPlayers": "Inclure ce serveur dans le nombre total de joueurs",
"crashTime": "Délai de plantage",
"crashTimeDesc": "Combien de temps attendre avant de considérer que le serveur a crash ?",
"deleteFilesQuestion": "Supprimer les fichiers de la machine ?",
diff --git a/app/translations/he_IL.json b/app/translations/he_IL.json
index 73e7032a..cff35559 100644
--- a/app/translations/he_IL.json
+++ b/app/translations/he_IL.json
@@ -327,6 +327,7 @@
"bePatientDeleteFiles": "אנא חכו בסבלנות בזמן שאנו מסירים את השרת שלך מהחלונית קראפטי ומוחקים את כל הקבצים. מסך זה ייסגר בעוד מספר רגעים.",
"bePatientUpdate": "אנא חכו בסבלנות בזמן שאנו מעדכנים את השרת. זמני ההורדה עשויים להשתנות בהתאם למהירויות האינטרנט שלך.
מסך זה יתרענן בעוד רגע",
"cancel": "ביטול",
+ "countPlayers": "הכללת השרת במספר המשחקנים הכולל",
"crashTime": "פסק זמן לקריסה",
"crashTimeDesc": "כמה זמן עלינו להמתין לפני שנראה שהשרת שלך קרס?",
"deleteFilesQuestion": "למחוק קבצי שרת מהמחשב?",
@@ -500,8 +501,10 @@
"every": "כל",
"interval": "מרווח",
"name": "שם",
+ "newSchedule": "לוח זמנים חדש",
"nextRun": "הריצה הבאה",
"no": "לא",
+ "no-schedule": "אין כרגע לוחות זמנים מוגדרים עבור שרת זה. כדי להתחיל, לחץ",
"scheduledTasks": "משימות מתוזמנות",
"yes": "כן"
},
@@ -652,6 +655,8 @@
"kill": "השרת נסגר",
"name": "שם",
"new": "Webhook חדש",
+ "newWebhook": "וובהוק חדש",
+ "no-webhook": "אין כרגע וובהוקים מוגדרים עבור שרת זה. כדי להתחיל, לחץ.",
"run": "הרץ Webhook לבדיקה",
"send_command": "פקודת שרת התקבלה",
"start_server": "השרת הופעל",
diff --git a/app/translations/lol_EN.json b/app/translations/lol_EN.json
index a2368a84..4836501b 100644
--- a/app/translations/lol_EN.json
+++ b/app/translations/lol_EN.json
@@ -327,6 +327,7 @@
"bePatientDeleteFiles": "PLZ BE PAITENT I EAT UR SERVR AN EAT AW TEH YUMMI FISH. DIS SCRIEN WILL REFRESH SOONZ",
"bePatientUpdate": "PLZ BE PAITENTZ WE GET TEH NEWZ SERVER. HUNTING TEIMZ CAN VARY IF UR INTERWEBZ IZ POOP.
DIS SCRIEN WILL REFRESH SOONZ",
"cancel": "STAHP",
+ "countPlayers": "COUNT ALL DA HOOMANS IN TOTAL PLAYERZ",
"crashTime": "DUN GOOF TIMEOUT",
"crashTimeDesc": "HOW LONG SHUD WE WAIT BEFORE WE CONSIDR UR SERVR HAS DUN GOOFD?",
"deleteFilesQuestion": "EAT SERVR FISH TOO?",
diff --git a/app/translations/lv_LV.json b/app/translations/lv_LV.json
index 95d2ffae..354a0e54 100644
--- a/app/translations/lv_LV.json
+++ b/app/translations/lv_LV.json
@@ -328,6 +328,7 @@
"bePatientDeleteFiles": "Lūdzu esiet pacietīgs, kamēr mēs noņemam jūsu serveri no Crafty paneļa un izdzēšam visus failus. Šis ekrāns aizvērsies pēc maza brītiņa.",
"bePatientUpdate": "Lūdzu esiet pacietīgi, kamēr mēs atjauninām serveri. Lejupielādes laiki var mainīties atkarībā no tīkla savienojuma ātruma.
Šis ekrāns atjaunosies pēc brīža",
"cancel": "Atcelt",
+ "countPlayers": "Pieskaitīt serveri pie kopējā spēlētāju skaita",
"crashTime": "Avārijas Taimouts",
"crashTimeDesc": "Cik ilgi mums nogaidīt pirms mēs uzskatām serveri kā avarējušu?",
"deleteFilesQuestion": "Dzēst servera failus no ierīces?",
diff --git a/app/translations/nl_BE.json b/app/translations/nl_BE.json
index bed0f894..c9414bbe 100644
--- a/app/translations/nl_BE.json
+++ b/app/translations/nl_BE.json
@@ -327,6 +327,7 @@
"bePatientDeleteFiles": "Even geduld terwijl we uw server uit het Crafty-paneel verwijderen, en alle bestanden verwijderen. Dit scherm wordt over enkele ogenblikken gesloten.",
"bePatientUpdate": "Even geduld terwijl we de server updaten. De downloadtijden kunnen variëren, afhankelijk van je internetsnelheden.
Dit scherm wordt zo vernieuwd",
"cancel": "Annuleren",
+ "countPlayers": "Server opnemen in het totale spelersaantal",
"crashTime": "Crash Timeout",
"crashTimeDesc": "Hoe lang moet er gewacht worden voordat we uw server als gecrasht beschouwen?",
"deleteFilesQuestion": "Serverbestanden van de machine verwijderen?",
diff --git a/app/translations/pl_PL.json b/app/translations/pl_PL.json
index 2b9ce56d..86f8f9cb 100644
--- a/app/translations/pl_PL.json
+++ b/app/translations/pl_PL.json
@@ -327,6 +327,7 @@
"bePatientDeleteFiles": "Poczekaj, aż usuniemy twój serwer i jego pliki. Strona za chwilę się zamknie.",
"bePatientUpdate": "Poczekaj kiedy my aktualizujemy twój serwer. Pobieranie zależy od prędkości twojego internetu.
Strona się odświeży za chwile.",
"cancel": "Anuluj",
+ "countPlayers": "Wlicz serwer do całkowitej liczby graczy",
"crashTime": "Crash serwera wyszedł poza limit czasu",
"crashTimeDesc": "Jak długo powinniśmy poczekać zanim uznać serwer za zcrashowany?",
"deleteFilesQuestion": "Usuń pliki serwera z maszyny?",
diff --git a/app/translations/th_TH.json b/app/translations/th_TH.json
new file mode 100644
index 00000000..a833cf1c
--- /dev/null
+++ b/app/translations/th_TH.json
@@ -0,0 +1,669 @@
+{
+ "404": {
+ "contact": "ติดต่อฝ่ายสนับสนุน Crafty Control ผ่านดิสคอร์ด",
+ "notFound": "Page Not Found",
+ "unableToFind": "เราไม่พบหน้าที่คุณกำลังมองหา โปรดลองอีกครั้งหรือย้อนกลับและโหลดหน้าเว็บใหม่อีกครั้ง"
+ },
+ "accessDenied": {
+ "accessDenied": "Access Denied",
+ "contact": "ติดต่อฝ่ายสนับสนุน Crafty Control ผ่านดิสคอร์ด",
+ "contactAdmin": "กรุณาติดต่อผู้ดูแลระบบเซิร์ฟเวอร์ของคุณเพื่อเข้าถึงหน้านี้ หรือหากคุณคิดว่าคุณควรมีสิทธิ์เข้าถึงหน้านี้ โปรดติดต่อฝ่ายสนับสนุน",
+ "noAccess": "คุณไม่ได้รับอนุญาติให้เข้าถึงหน้านี้"
+ },
+ "apiKeys": {
+ "apiKeys": "คีย์ API",
+ "auth": "ให้สิทธิ์อนุญาต? ",
+ "buttons": "ปุ่มคำสั่ง",
+ "config": "ตั้งค่า",
+ "crafty": "Crafty: ",
+ "createNew": "สร้างโทเค็น API ใหม่",
+ "created": "สร้างเมื่อ",
+ "deleteKeyConfirmation": "คุณต้องการลบคีย์ API นี้หรือไม่ สิ่งนี้ไม่สามารถยกเลิกได้",
+ "deleteKeyConfirmationTitle": "ลบคีย์ API นี้ ${keyId} หรือไม่?",
+ "getToken": "แสดงโทเค็น",
+ "name": "ชื่อ",
+ "nameDesc": "คุณต้องการเรียกโทเค็น API นี้ว่าอะไร ? ",
+ "no": "ไม่",
+ "pageTitle": "แก้ไขคีย์ API ของผู้ใช้",
+ "permName": "ชื่อการอนุญาต",
+ "perms": "สิทธิ์อนุญาต",
+ "server": "เซิร์ฟเวอร์: ",
+ "superUser": "Super User",
+ "yes": "ใช่"
+ },
+ "base": {
+ "doesNotWorkWithoutJavascript": "คำเตือน: Crafty จะทำงานไม่ถูกต้องเมื่อไม่ได้เปิดใช้งาน JavaScript!"
+ },
+ "credits": {
+ "developmentTeam": "ทีมพัฒนา",
+ "hugeDesc": "ขอ",
+ "pageDescription": "หากไม่มีบุคคลเหล่านี้ ก็จะไม่มี Crafty ในวันนี้",
+ "pageTitle": "เครดิต",
+ "patreonDesc": "ถึงผู้สนับสนุน Patreon / Ko-fi ของเรา!",
+ "patreonOther": "อื่นๆ",
+ "patreonSupporter": "ผู้สนับสนุน Patreon / Ko-fi",
+ "patreonUpdate": "อัปเดตล่าสุด:",
+ "retiredStaff": "อดีตทีมงาน",
+ "subscriberName": "ชื่อ",
+ "subscriptionLevel": "ระดับ",
+ "supportTeam": "ทีมสนับสนุนและจัดทำเอกสาร",
+ "thankYou": "ขอบคุณจากหัวใจ",
+ "translationDesc": "ถึงชุมชนของเราที่ช่วยแปล! [ ยังคงทำงานอยู่ = 🟢 ไม่ได้ทำงานแล้ว/อดีตทีมงาน = ⚪ ]",
+ "translationName": "ภาษา",
+ "translationTitle": "ทีมแปลภาษา",
+ "translator": "ผู้แปล"
+ },
+ "customLogin": {
+ "apply": "นำไปใช้",
+ "backgroundUpload": "อัปโหลดภาพพื้นหลัง",
+ "customLoginPage": "ปรับแต่งหน้าเข้าสู่ระบบ",
+ "delete": "ลบ",
+ "labelLoginImage": "เลือกรูปพื้นหลังหน้าเข้าสู่ระบบของคุณ",
+ "loginBackground": "รูปพื้นหลังหน้าเข้าสู่ระบบ",
+ "loginImage": "อัปโหลดภาพพื้นหลังสำหรับหน้าเข้าสู่ระบบ",
+ "loginOpacity": "เลือกความทึบของหน้าต่างเข้าสู่ระบบ",
+ "pageTitle": "หน้าเข้าสู่ระบบที่กำหนดเอง",
+ "preview": "ดูตัวอย่าง",
+ "select": "เลือก",
+ "selectImage": "เลือกรูปภาพ"
+ },
+ "dashboard": {
+ "actions": "คำสั่งด่วน",
+ "allServers": "เซิร์ฟเวอร์ทั้งหมด",
+ "avg": "ค่าเฉลี่ย",
+ "backups": "สำรองข้อมูล",
+ "bePatientClone": "กรุณารออย่างใจเย็นในขณะที่เราโคลนเซิร์ฟเวอร์
หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
+ "bePatientRestart": "กรุณารออย่างใจเย็นในขณะที่เรารีสตาร์ทเซิร์ฟเวอร์
หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
+ "bePatientStart": "กรุณารออย่างใจเย็นในขณะที่เรากำลังเริ่มเซิร์ฟเวอร์
หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
+ "bePatientStop": "กรุณารออย่างใจเย็นในขณะที่เราหยุดการทำงานเซิร์ฟเวอร์
หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
+ "cannotSee": "ไม่เห็นอะไรเลยใช่ใหม?",
+ "cannotSeeOnMobile": "ไม่เห็นอะไรในโทรศัพท์เลยใช่ใหม่?",
+ "cannotSeeOnMobile2": "ลองเลื่อนไปด้านข้างดูสิ",
+ "clone": "โคลนเซิร์ฟเวอร์",
+ "cloneConfirm": "คุณแน่ใจหรือไม่ว่าต้องการโคลนเซิร์ฟเวอร์นี้? กระบวนการนี้อาจใช้เวลาสักครู่",
+ "cpuCores": "คอร์ CPU",
+ "cpuCurFreq": "CPU Clock ปัจจุบัน",
+ "cpuMaxFreq": "CPU Clock สูงสุด",
+ "cpuUsage": "การใช้งาน CPU",
+ "crashed": "ล้มเหลว",
+ "dashboard": "แผงควบคุม",
+ "delay-explained": "บริการ/ตัวแทนเพิ่งเริ่มต้นและกำลังชะลอการเริ่มต้นเซิร์ฟเวอร์ Minecraft",
+ "host": "โฮส",
+ "installing": "กำลังติดตั้ง...",
+ "kill": "บังคับหยุดการทำงาน",
+ "killing": "กำลังหยุดการทำงาน...",
+ "lastBackup": "ล่าสุด:",
+ "max": "เต็ม",
+ "memUsage": "การใช้งาน RAM",
+ "motd": "MOTD",
+ "newServer": "สร้างเซิร์ฟเวอร์ใหม่",
+ "nextBackup": "ต่อไป:",
+ "no-servers": "ไม่มีเซิร์ฟเวอร์ขณะนี้ ถ้าต้องการเริ่มต้น, กดที่",
+ "offline": "ออฟไลน์",
+ "online": "ออนไลน์",
+ "players": "จำนวนผู้เล่น",
+ "restart": "รีสตาร์ท",
+ "sendingCommand": "กำลังส่งคำสั่งของคุณ",
+ "server": "เซิร์ฟเวอร์",
+ "servers": "เซิร์ฟเวอร์",
+ "size": "ขนาดเซิร์ฟเวอร์",
+ "start": "เริ่มการทำงาน",
+ "starting": "ชะลอการเริ่มต้น",
+ "status": "สถานะเซิร์ฟเวอร์",
+ "stop": "หยุดการทำงาน",
+ "storage": "พื้นที่จัดเก็บ",
+ "version": "เวอร์ชั่น",
+ "welcome": "ยินดีต้อนรับสู่ Crafty Controller"
+ },
+ "datatables": {
+ "i18n": {
+ "aria": {
+ "sortAscending": ": เปิดใช้งานเพื่อเรียงลำดับคอลัมน์จากน้อยไปมาก",
+ "sortDescending": ": เปิดใช้งานเพื่อเรียงลำดับคอลัมน์จากมากไปน้อย"
+ },
+ "buttons": {
+ "collection": "Collection ",
+ "colvis": "การมองเห็นคอลัมน์",
+ "colvisRestore": "คืนค่าการมองเห็น",
+ "copy": "คัดลอก",
+ "copyKeys": "กด Ctrl หรือ u2318 + C เพื่อคัดลอกข้อมูลตารางไปยังคลิปบอร์ดของระบบ
หากต้องการยกเลิก ให้คลิกข้อความนี้หรือกด Escape",
+ "copySuccess": {
+ "1": "คัดลอก 1 แถวไปยังคลิปบอร์ดแล้ว",
+ "_": "คัดลอก %d แถวไปยังคลิปบอร์ดแล้ว"
+ },
+ "copyTitle": "คัดลอกไปยังคลิปบอร์ด",
+ "csv": "CSV",
+ "excel": "Excel",
+ "pageLength": {
+ "-1": "แสดงทุกแถว",
+ "1": "แสดง 1 แถว",
+ "_": "แสดง %d แถว"
+ },
+ "pdf": "PDF",
+ "print": "Print"
+ },
+ "decimal": "",
+ "emptyTable": "ไม่มีข้อมูลในตาราง",
+ "info": "แสดงรายการ _START_ ถึง _END_ จากทั้งหมด _TOTAL_ รายการ",
+ "infoEmpty": "แสดงรายการ 0 ถึง 0 จากทั้งหมด 0 รายการ",
+ "infoFiltered": "(กรองจากรายการทั้งหมด _MAX_ รายการ)",
+ "infoPostFix": "",
+ "lengthMenu": "แสดง _MENU_ รายการ",
+ "loadingRecords": "กำลังโหลด...",
+ "paginate": {
+ "first": "หน้าแรก",
+ "last": "หน้าสุดท้าย",
+ "next": "หน้าต่อไป",
+ "previous": "หน้าก่อนหน้า"
+ },
+ "processing": "กำลังประมวลผล...",
+ "search": "ค้นหา:",
+ "select": {
+ "cells": {
+ "0": "คลิกที่เซลเพื่อเลือก",
+ "1": "เลือก %d เซลล์แล้ว",
+ "_": "เลือก %d เซลล์แล้ว"
+ },
+ "columns": {
+ "0": "คลิกที่คอลัมน์เพื่อเลือก",
+ "1": "เลือก %d คอลัมน์แล้ว",
+ "_": "เลือก %d คอลัมน์แล้ว"
+ },
+ "rows": {
+ "0": "คลิกที่แถวเพื่อเลือก",
+ "1": "เลือก %d แถวแล้ว",
+ "_": "เลือก %d แถวแล้ว"
+ }
+ },
+ "thousands": ",",
+ "zeroRecords": "ไม่พบรายการที่ตรงกัน"
+ }
+ },
+ "error": {
+ "agree": "ยอมรับ",
+ "bedrockError": "การดาวน์โหลดเวอร์ชั่น Bedrock ไม่พร้อมใช้งาน โปรดตรวจสอบ",
+ "cancel": "ยกเลิก",
+ "contact": "ติดต่อฝ่ายสนับสนุน Crafty Control ผ่านดิสคอร์ด",
+ "craftyStatus": "หน้าสถานะของ Crafty",
+ "cronFormat": "ตรวจพบรูปแบบครอนที่ไม่ถูกต้อง",
+ "embarassing": "โอ้ย นี่มันน่าอายชะมัด",
+ "error": "Error!",
+ "eulaAgree": "คุณเห็นด้วยหรือไม่?",
+ "eulaMsg": "คุณต้องเห็นด้วยกับ ",
+ "eulaTitle": "เห็นด้วยกับ EULA",
+ "fileError": "ประเภทไฟล์ต้องเป็นรูปภาพ",
+ "fileTooLarge": "การอัปโหลดล้มเหลว. ไฟล์ที่อัปโหลดมีขนาดใหญ่เกินไป ติดต่อผู้ดูแลระบบเพื่อขอความช่วยเหลือ",
+ "hereIsTheError": "นี่คือข้อผิดพลาด",
+ "installerJava": "ไม่สามารถติดตั้ง {} : การติดตั้ง Forge Server ต้องใช้ Java เราตรวจพบว่าคุณไม่ได้ติดตั้ง Java กรุณาติดตั้ง Java จากนั้นติดตั้งเซิร์ฟเวอร์อีกครั้ง",
+ "internet": "เราตรวจพบว่าเครื่องที่ใช้งาน Crafty ไม่มีการเชื่อมต่ออินเทอร์เน็ต การเชื่อมต่อผู้ใช้กับเซิร์ฟเวอร์อาจถูกจำกัด",
+ "migration": "พื้นที่เก็บข้อมูลเซิร์ฟเวอร์หลักของ Crafty กำลังถูกย้ายไปยังตำแหน่งใหม่ การเริ่มต้นเซิร์ฟเวอร์ทั้งหมดถูกระงับในช่วงเวลานี้ โปรดรอในขณะที่เราย้ายข้อมูลนี้ให้เสร็จสิ้น",
+ "no-file": "ดูเหมือนเราจะไม่พบไฟล์ที่ร้องขอ ตรวจสอบเส้นทางอีกครั้ง, Crafty เข้าถึงสิทธิ์ที่เหมาะสมหรือไม่?",
+ "noInternet": "Crafty ประสบปัญหาในการเข้าถึงอินเทอร์เน็ต การสร้างเซิร์ฟเวอร์ถูกปิดใช้งาน โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณและโหลดหน้านี้ใหม่อีกครั้ง",
+ "noJava": "เซิร์ฟเวอร์ {} ไม่สามารถเริ่มต้นได้เนื่องจากรหัสข้อผิดพลาด: เราตรวจพบว่าคุณไม่ได้ติดตั้ง Java กรุณาติดตั้ง Java จากนั้นเริ่มเซิร์ฟเวอร์ใหม่อีกครั้ง",
+ "not-downloaded": "ดูเหมือนว่าเราจะไม่พบแฟ้มกระทำการของคุณ (.jar) ตรวจสอบให้แน่ใจว่าการดาวโหลดน์เสร็จสิ้นแล้ว, การอนุญาตถูกตั้งไปยังแฟ้มกระทำการหรือไม่?",
+ "portReminder": "เราตรวจพบว่านี่เป็นครั้งแรกที่มีการเรียกใช้ {} ตรวจสอบให้แน่ใจว่าได้ Forward port {} ผ่านเราเตอร์/ไฟร์วอลล์ของคุณเพื่อให้สามารถเข้าถึงได้จากอินเทอร์เน็ตจากระยะไกล",
+ "privMsg": "และ ",
+ "serverJars1": "ไม่สามารถเข้าถึงเซิร์ฟเวอร์ JARs API กรุณาตรวจสอบ",
+ "serverJars2": "เพื่อข้อมูลที่ทันสมัยที่สุด",
+ "start-error": "เซิร์ฟเวอร์ {} ไม่สามารถเริ่มต้นได้เนื่องจากรหัสข้อผิดพลาด: {}",
+ "superError": "คุณต้องเป็น Super User จึงจะดำเนินการนี้ได้",
+ "terribleFailure": "นี่มันเป็นความล้มเหลวครั้งยิ่งใหญ่!"
+ },
+ "footer": {
+ "allRightsReserved": "สงวนลิขสิทธิ์ทั้งหมด",
+ "copyright": "ลิขสิทธิ์ของ",
+ "version": "เวอร์ชั่น"
+ },
+ "login": {
+ "forgotPassword": "ลืมรหัสผ่าน",
+ "login": "เข้าสู่ระบบ",
+ "password": "รหัสผ่าน",
+ "username": "ชื่อผู้ใช้",
+ "viewStatus": "ดูหน้าสถานะเซิร์ฟเวอร์แบบสาธารณะ"
+ },
+ "notify": {
+ "activityLog": "บันทึกกิจกรรม",
+ "backupComplete": "การสำรองข้อมูลเสร็จสมบูรณ์สำหรับเซิร์ฟเวอร์ {}",
+ "backupStarted": "เริ่มต้นการสำรองข้อมูลสำหรับเซิร์ฟเวอร์ {}",
+ "downloadLogs": "ต้องการดาวน์โหลดบันทึกการสนับสนุนไหม?",
+ "finishedPreparing": "เราได้เตรียมบันทึกการสนับสนุนของคุณเสร็จแล้ว กรุณาคลิกดาวน์โหลดเพื่อดาวน์โหลด",
+ "logout": "ออกจากระบบ",
+ "preparingLogs": " โปรดรอสักครู่ในขณะที่เราเตรียมบันทึกของคุณ... เราจะส่งการแจ้งเตือนเมื่อเสร็จสิ้น การดำเนินการนี้อาจใช้เวลาสักครู่สำหรับการเตรียมข้อมูลขนาดใหญ่",
+ "supportLogs": "บันทึกการสนับสนุน"
+ },
+ "offline": {
+ "offline": "ออฟไลน์",
+ "pleaseConnect": "กรุณาเชื่อมต่ออินเทอร์เน็ตเพื่อใช้ Crafty"
+ },
+ "panelConfig": {
+ "adminControls": "การควบคุมผู้ดูแล",
+ "allowedServers": "เซิร์ฟเวอร์ที่ได้รับอนุญาต",
+ "apply": "ยืนยัน",
+ "assignedRoles": "บทบาทที่ได้รับมอบหมาย",
+ "cancel": "ยกเลิก",
+ "clearComms": "ล้างคำสั่งที่ยังไม่ได้ดำเนินการ",
+ "custom": "ปรับแต่ง Crafty",
+ "delete": "ลบ",
+ "edit": "แก้ไข",
+ "enableLang": "เปิดใช้งานภาษาทั้งหมด",
+ "enabled": "เปิด",
+ "globalExplain": "พิ้นที่ที่ Crafty เก็บไฟล์เซิร์ฟเวอร์ทั้งหมดของคุณ (เราจะต่อท้ายเส้นทางด้วย /servers/[uuid ของเซิร์ฟเวอร์])",
+ "globalServer": "พิ้นที่เก็บข้อมูลหลัก",
+ "json": "Config.json",
+ "match": "รหัสผ่านต้องตรงกัน",
+ "newRole": "เพิ่มบทบาทใหม่",
+ "newUser": "เพิ่มผู้ใช้ใหม่",
+ "noMounts": "ไม่แสดงพื้นที่จัดเก็บบนแผงควบคุม",
+ "pageTitle": "ตั้งค่าแผงควบคุม",
+ "role": "ชื่อบทบาท",
+ "roleUsers": "สมาชิคบทบาท",
+ "roles": "บทบาท",
+ "save": "บันทึก",
+ "select": "เลือก",
+ "superConfirm": "ดำเนินการต่อเฉพาะในกรณีที่คุณต้องการให้ผู้ใช้รายนี้สามารถเข้าถึงทุกสิ่งได้ (บัญชีผู้ใช้ทั้งหมด เซิร์ฟเวอร์ การตั้งค่าแผงควบคุม ฯลฯ) พวกเขายังสามารถเพิกถอนสิทธิ์ Super User ของคุณได้",
+ "superConfirmTitle": "ให้สิทธิ์ Super User? คุณแน่ใจแล้วใช่ไหม?",
+ "title": "การตั้งค่า Crafty",
+ "user": "ชื่อผู้ใช้",
+ "users": "ผู้ใช้"
+ },
+ "rolesConfig": {
+ "config": "แก้ไขบทบาท",
+ "configDesc": "คุณสามารถเปลี่ยนแปลงการตั้งค่าบทบาทของคุณได้ที่นี่",
+ "configUpdate": "อัปเดตล่าสุด: ",
+ "created": "สร้างเมื่อ: ",
+ "delRole": "ลบบทบาท",
+ "doesNotExist": "คุณไม่สามารถลบสิ่งที่ยังไม่มีได้",
+ "pageTitle": "แก้ไขบทบาท",
+ "pageTitleNew": "บทบาทใหม่",
+ "permAccess": "เข้าถึง?",
+ "permName": "ชื่อการอนุญาต",
+ "permsServer": "สิทธิ์ที่บทบาทนี้มีสำหรับเซิร์ฟเวอร์ที่ระบุนี้",
+ "roleConfigArea": "พื้นที่ตั้งค่าบทบาท",
+ "roleDesc": "คุณอยากจะเรียกบทบาทนี้ว่าอะไร?",
+ "roleName": "ชื่อบทบาท: ",
+ "rolePerms": "สิทธิ์ของบทบาท",
+ "roleServers": "เซิร์ฟเวอร์ที่ได้รับอนุญาต",
+ "roleTitle": "การตั้งค่าบทบาท",
+ "roleUserName": "ชื่อผู้ใช้",
+ "roleUsers": "ผู้ใช้บทบาท: ",
+ "selectManager": "เลือกผู้จัดการสำหรับบทบาทนี้",
+ "serverAccess": "ให้สิทธิ์การเข้าถึง",
+ "serverName": "ชื่อเซิร์ฟเวอร์",
+ "serversDesc": "เซิร์ฟเวอร์ที่บทบาทนี้ได้รับอนุญาตให้เข้าถึง"
+ },
+ "serverBackups": {
+ "after": "ส่งคำสั่งหลังการสำรองข้อมูล",
+ "backupAtMidnight": "คุณต้องการสำรองข้อมูลอัตโนมัติตอนเที่ยงคืนหรือไม่?",
+ "backupNow": "สำรองข้อมูลตอนนี้!",
+ "backupTask": "เริ่มการสำรองข้อมูลแล้ว",
+ "before": "ส่งคำสั่งก่อนการสำรองข้อมูล",
+ "cancel": "ยกเลิก",
+ "clickExclude": "คลิกเพื่อเลือกการยกเว้น",
+ "compress": "บีบอัดข้อมูลสำรอง",
+ "confirm": "ยืนยัน",
+ "confirmDelete": "คุณต้องการลบข้อมูลสำรองนี้หรือไม่ สิ่งนี้ไม่สามารถยกเลิกได้",
+ "confirmRestore": "คุณแน่ใจหรือไม่ว่าต้องการกู้คืนจากข้อมูลสำรองนี้ ไฟล์เซิร์ฟเวอร์ปัจจุบันทั้งหมดจะเปลี่ยนเป็นแบบสำรองและจะไม่สามารถกู้คืนได้",
+ "currentBackups": "ไฟล์สำรองข้อมูลปัจจุบัน",
+ "delete": "ลบ",
+ "destroyBackup": "คุณต้องการทำลายข้อมูลสำรอง \" + file_to_del + \"หรือไม่",
+ "download": "ดาวน์โหลด",
+ "excludedBackups": "เส้นทางที่ยกเว้น: ",
+ "excludedChoose": "เลือกเส้นทางที่คุณต้องการยกเว้นจากการสำรองข้อมูลของคุณ",
+ "exclusionsTitle": "ข้อยกเว้นการสำรองข้อมูล",
+ "maxBackups": "ต้องการเก็บข้อมูลสำรองกี่ครั้ง?",
+ "maxBackupsDesc": "Crafty จะไม่เก็บข้อมูลสำรองมากกว่า N รายการ โดยจะลบข้อมูลสำรองที่เก่าที่สุด (ป้อน 0 เพื่อเก็บทั้งหมด)",
+ "options": "ตัวเลือก",
+ "path": "เส้นทาง",
+ "restore": "คืนค่า",
+ "restoring": "กำลังกู้คืนข้อมูลสำรอง การดำเนินการนี้อาจใช้เวลาสักครู่ กรุณาอดทนรออย่างใจเย็น",
+ "save": "บันทึก",
+ "shutdown": "ปิดเซิร์ฟเวอร์ตามระยะเวลาของการสำรองข้อมูล",
+ "size": "ขนาด",
+ "storageLocation": "สถานที่จัดเก็บ",
+ "storageLocationDesc": "คุณต้องการสำรองข้อมูลไว้ที่ไหน?"
+ },
+ "serverConfig": {
+ "bePatientDelete": "กรุณารออย่างใจเย็นในขณะที่เราลบเซิร์ฟเวอร์ของคุณออกจากแผงควบคุม Crafty หน้าต่างนี้จะปิดลงในอีกสักครู่",
+ "bePatientDeleteFiles": "โปรดอดทนรอในขณะที่เราลบเซิร์ฟเวอร์ของคุณออกจากแผง Crafty และลบไฟล์ทั้งหมด หน้าต่องนี้จะปิดลงในอีกสักครู่",
+ "bePatientUpdate": "กรุณารออย่างใจเย็นในขณะที่เราอัปเดตเซิร์ฟเวอร์ เวลาในการดาวน์โหลดอาจแตกต่างกันไปขึ้นอยู่กับความเร็วอินเทอร์เน็ตของคุณ
หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
+ "cancel": "ยกเลิก",
+ "countPlayers": "รวมเซิร์ฟเวอร์ในจำนวนผู้เล่นทั้งหมด",
+ "crashTime": "ผิดพลาด หมดเวลา",
+ "crashTimeDesc": "เราควรรอนานแค่ไหนก่อนที่จะพิจารณาว่าเซิร์ฟเวอร์ของคุณขัดข้อง?",
+ "deleteFilesQuestion": "ลบไฟล์เซิร์ฟเวอร์ออกจากเครื่อง?",
+ "deleteFilesQuestionMessage": "คุณต้องการให้ Crafty ลบไฟล์เซิร์ฟเวอร์ทั้งหมดออกจากเครื่องโฮสต์หรือไม่
ซึ่งรวมถึงข้อมูลสำรองของเซิร์ฟเวอร์ด้วย",
+ "deleteServer": "ลบเซิร์ฟเวอร์",
+ "deleteServerQuestion": "ต้องการลบเซิร์ฟเวอร์?",
+ "deleteServerQuestionMessage": "คุณแน่ใจหรือไม่ว่าต้องการลบเซิร์ฟเวอร์นี้ หลังจากนี้จะไม่มีทางให้หันหลังกลับ...",
+ "exeUpdateURL": "อัปเดต URL แฟ้มกระทำการ (.jar) ของเซิร์ฟเวอร์",
+ "exeUpdateURLDesc": "ดาวน์โหลด URL โดยตรงสำหรับการอัปเดต",
+ "ignoredExits": "ละเว้นรหัสข้อผิดพลาด",
+ "ignoredExitsExplain": "รหัสข้อผิดพลาดที่ระบบตรวจจับข้อขัดข้องของ Crafty จะละเว้นเป็นการ 'หยุด' ปกติ (คั่นด้วยเครื่องหมายจุลภาค)",
+ "javaNoChange": "อย่าแทนที่",
+ "javaVersion": "แทนที่เวอร์ชัน Java ปัจจุบัน",
+ "javaVersionDesc": "หากคุณกำลังจะแทนที่ Java ตรวจสอบให้แน่ใจว่าเส้นทาง Java ปัจจุบันของคุณใน 'คำสั่งการดำเนินการเซิร์ฟเวอร์' อยู่ในเครื่องหมายคำพูด (ยกเว้นตัวแปร 'java' เริ่มต้น)",
+ "noDelete": "ไม่, ย้อนกลับ",
+ "noDeleteFiles": "ไม่, แค่ลบออกจากแผงควบคุม",
+ "removeOldLogsAfter": "ลบบัททึกเก่าหลังจาก",
+ "removeOldLogsAfterDesc": "ไฟล์บันทึกจะต้องเก่ากี่วันจึงจะถูกลบ (ปิด 0)",
+ "save": "บันทึก",
+ "sendingDelete": "กำลังลบเซิร์ฟเวอร์",
+ "sendingRequest": "กำลังส่งคำขอของคุณ...",
+ "serverAutoStart": "เริ่มการทำงานเซิร์ฟเวอร์โดยอัตโนมัติ",
+ "serverAutostartDelay": "หน่วงเวลาการเริ่มต้นโดยอัตโนมัติ",
+ "serverAutostartDelayDesc": "หน่วงเวลาก่อนเริ่มต้นอัตโนมัติ (หากเปิดใช้งานด้านล่าง)",
+ "serverCrashDetection": "การตรวจจับความผิดพลาดของเซิร์ฟเวอร์",
+ "serverExecutable": "แฟ้มกระทำการของเซิร์ฟเวอร์",
+ "serverExecutableDesc": "แฟ้มกระทำการที่ใช้ในการทำงานของเซิร์ฟเวอร์ (.jar)",
+ "serverExecutionCommand": "คำสั่งการดำเนินการเซิร์ฟเวอร์",
+ "serverExecutionCommandDesc": "สิ่งนี้จะทำงานเบื้องหลังเทอร์มินัล",
+ "serverIP": "IP เซิร์ฟเวอร์",
+ "serverIPDesc": "IP ที่ Crafty ใช้เชื่อมต่อเพื่อดูสถิติ (ลองใช้ IP จริงแทน 127.0.0.1 หากคุณพบปัญหา)",
+ "serverLogLocation": "ตำแหน่งไฟล์บันทึกข้อมูลเซิร์ฟเวอร์",
+ "serverLogLocationDesc": "เส้นทางไปยังไฟล์บันทึก",
+ "serverName": "ชื่อเซิร์ฟเวอร์",
+ "serverNameDesc": "คุณอยากเรียกเซิร์ฟเวอร์นี้ว่าอะไร",
+ "serverPath": "โฟลเดอร์การทำงานของเซิร์ฟเวอร์",
+ "serverPathDesc": "เส้นทางแบบเต็มสัมบูรณ์ (ไม่รวมแฟ้มกระทำการ .jar)",
+ "serverPort": "พอร์ตเซิร์ฟเวอร์",
+ "serverPortDesc": "พอร์ตที่ Crafty ใช้เชื่อมต่อเพื่อดูสถิติ",
+ "serverStopCommand": "คำสั่งหยุดการทำงานเซิร์ฟเวอร์",
+ "serverStopCommandDesc": "คำสั่งที่ส่งไปยังโปรแกรมเพื่อหยุดการทำงาน",
+ "showStatus": "แสดงบนหน้าสถานะเซิร์ฟเวอร์",
+ "shutdownTimeout": "หมดเวลาหยุดการทำงาน",
+ "statsHint1": "พอร์ตที่เซิร์ฟเวอร์ของคุณทำงานอยู่ควรอยู่ที่นี่ นี่เป็นเพียงวิธีที่ Crafty เปิดการเชื่อมต่อกับเซิร์ฟเวอร์ของคุณเพื่อดูสถิติ",
+ "statsHint2": "สิ่งนี้จะไม่เปลี่ยนพอร์ตของเซิร์ฟเวอร์ของคุณ คุณยังคงต้องเปลี่ยนพอร์ตในไฟล์กำหนดค่าเซิร์ฟเวอร์ของคุณ",
+ "stopBeforeDeleting": "กรุณาหยุดเซิร์ฟเวอร์ก่อนที่จะลบมัน",
+ "timeoutExplain1": "Crafty จะรอให้เซิร์ฟเวอร์ของคุณปิดระบบนานแค่ไหนหลังจากดำเนินการ",
+ "timeoutExplain2": "คำสั่งก่อนที่จะบังคับให้กระบวนการหยุดทำงาน",
+ "update": "อัปเดตการดำเนินการ",
+ "yesDelete": "ใช่, ลบ",
+ "yesDeleteFiles": "ใช่, ลบไฟล์"
+ },
+ "serverConfigHelp": {
+ "desc": "ที่นี่คุณสามารถเปลี่ยนการตั้งค่าเซิร์ฟเวอร์ของคุณได้",
+ "perms": [
+ "ขอแนะนำให้ ไม่
เปลี่ยนเส้นทางของเซิร์ฟเวอร์ที่จัดการโดย Crafty",
+ "การเปลี่ยนเส้นทาง สามารถ
ทำให้สิ่งต่างๆ เสียหาย โดยเฉพาะบนระบบปฏิบัติการประเภท Linux ที่การอนุญาตของไฟล์ถูกจำกัดไว้มากกว่า",
+ "
",
+ "หากคุณรู้สึกว่าต้องเปลี่ยนตำแหน่งของเซิร์ฟเวอร์ คุณสามารถทำได้ตราบใดที่คุณให้สิทธิ์ผู้ใช้ \"crafty\" ในการอ่าน / เขียนไปยังเส้นทางเซิร์ฟเวอร์",
+ "
",
+ "
",
+ "บน Linux วิธีที่ดีที่สุดคือดำเนินการคำสั่งดังต่อไปนี้:
",
+ "",
+ " sudo chown crafty:crafty /path/to/your/server -R
",
+ " sudo chmod 2775 /path/to/your/server -R
",
+ "
"
+ ],
+ "title": "พื้นที่ตั้งค่าเซิร์ฟเวอร์"
+ },
+ "serverDetails": {
+ "backup": "สำรองข้อมูล",
+ "config": "ตั้งค่า",
+ "files": "ไฟล์",
+ "filter": "กรองบันทึก",
+ "filterList": "ข้อความที่ถูกกรอง",
+ "logs": "บันทึก",
+ "metrics": "สถิติ",
+ "playerControls": "การจัดการผู้เล่น",
+ "reset": "รีเซ็ตการเลื่อน",
+ "schedule": "กำหนดการ",
+ "serverDetails": "รายละเอียดเซิร์ฟเวอร์",
+ "terminal": "เทอร์มินัล"
+ },
+ "serverFiles": {
+ "clickUpload": "คลิกที่นี่เพื่อเลือกไฟล์ของคุณ",
+ "close": "ปิด",
+ "createDir": "สร้างโฟล์เดอร์ใหม่",
+ "createDirQuestion": "คุณอยากเรียกโฟล์เดอร์ใหม่นี้ว่าอะไร?",
+ "createFile": "สร้างไฟล์ใหม่",
+ "createFileQuestion": "คุณอยากเรียกไฟล์ใหม่นี้ว่าอะไร?",
+ "default": "ค่าเริ่มต้น",
+ "delete": "ลบ",
+ "deleteItemQuestion": "คุณแน่ใจหรือไม่ว่าต้องการลบ \" + name + \"?",
+ "deleteItemQuestionMessage": "คุณกำลังลบ \\\"\" + path + \"\\\"!
การกระทำนี้จะไม่สามารถย้อนกลับได้ และจะสูญหายไปตลอดกาล!",
+ "download": "ดาวน์โหลด",
+ "editingFile": "แก้ไขไฟล์",
+ "error": "เกิดข้อผิดพลาดขณะรับไฟล์",
+ "fileReadError": "ข้อผิดพลาดในการอ่านไฟล์",
+ "files": "ไฟล์",
+ "keybindings": "แป้นพิมพ์ลัด",
+ "loadingRecords": "กำลังโหลดไฟล์...",
+ "noDelete": "ไม่",
+ "noscript": "ตัวจัดการไฟล์จะไม่ทำงานหากไม่มี JavaScript",
+ "rename": "แก้ไขชื่อ",
+ "renameItemQuestion": "คุณจะตั้งชื่อใหม่ว่าอะไร?",
+ "save": "บันทึก",
+ "size": "สลับขนาดตัวแก้ไข",
+ "stayHere": "อย่าออกจากหน้านี้!",
+ "unsupportedLanguage": "คำเตือน: นี่ไม่ใช่ประเภทไฟล์ที่รองรับ",
+ "unzip": "แตกไฟล์",
+ "upload": "อัปโหลด",
+ "uploadTitle": "อัปโหลดไฟล์ไปที่: ",
+ "waitUpload": "โปรดรอสักครู่ในขณะที่เราอัปโหลดไฟล์ของคุณ... การกระทำนี้อาจใช้เวลาสักครู่",
+ "yesDelete": "ใช่ม ฉันเข้าใจผลที่ตามมา"
+ },
+ "serverMetrics": {
+ "resetZoom": "รีเซ็ตการซูม",
+ "zoomHint1": "หากต้องการซูมกราฟ ให้กดปุ่ม Shift ค้างไว้แล้วใช้ลูกกลิ้งเมาส์",
+ "zoomHint2": "หรือกดปุ่ม Shift ค้างไว้ จากนั้นคลิกและลากบริเวณที่คุณต้องการซูมเข้า"
+ },
+ "serverPlayerManagement": {
+ "bannedPlayers": "ผู้เล่นที่ถูกแบน",
+ "loadingBannedPlayers": "กำลังโหลดผู้เล่นที่ถูกแบน",
+ "players": "ผู้เล่น"
+ },
+ "serverScheduleConfig": {
+ "backup": "สำรองข้อมูลเซิร์ฟเวอร์",
+ "basic": "ขั้นพื้นฐาน",
+ "children": "งานย่อยที่เชื่อมโยง: ",
+ "command": "คำสั่ง",
+ "command-explain": "คุณอยากให้เราดำเนินการคำสั่งใด? ไม่ต้องใส่ '/'",
+ "cron": "ครอน",
+ "cron-explain": "ป้อนครอนของคุณ -- หมายเหตุ: 0 = วันจันทร์ในตัวเลือกสุดท้าย",
+ "custom": "คำสั่งที่กำหนดเอง",
+ "days": "วัน",
+ "enabled": "เปิดใช้งาน",
+ "hours": "ชั่วโมง",
+ "interval": "ความถี่",
+ "interval-explain": "คุณต้องการดำเนินการกำหนดการนี้บ่อยแค่ไหน?",
+ "minutes": "นาที",
+ "offset": "การหน่วงเวลา",
+ "offset-explain": "เราควรรอนานแค่ไหนจึงจะเริ่มทำงานนี้หลังจากเริ่มภารกิจแรกแล้ว (วินาที)",
+ "one-time": "ลบหลังจากดำเนินการ",
+ "parent": "เลือกกำหนดการที่เป็นผู้ปกครอง",
+ "parent-explain": "กำหนดการใดควรเรียกใช้งานกำหนดการนี้",
+ "reaction": "ลูกโซ่",
+ "restart": "รีสตาร์ทเซิร์ฟเวอร์",
+ "select": "เลือกปฏิกิริยา ขั้นพื้นฐาน / ครอน / ลูกโซ่",
+ "start": "เริ่มเซิร์ฟเวอร์",
+ "stop": "ปิดเซิร์ฟเวอร์",
+ "time": "เวลา",
+ "time-explain": "คุณต้องการให้กำหนดการของคุณดำเนินการกี่โมง?"
+ },
+ "serverSchedules": {
+ "action": "การกระทำ",
+ "areYouSure": "ลบงานที่กำหนดเวลาไว้?",
+ "cancel": "ยกเลิก",
+ "cannotSee": "ไม่เห็นอะไรเลยใช่ใหม?",
+ "cannotSeeOnMobile": "ลองคลิกงานที่กำหนดเวลาไว้เพื่อดูรายละเอียดทั้งหมด",
+ "child": "ลูกของกำหนดการที่พร้อม ID ",
+ "close": "ปิด",
+ "command": "คำสั่ง",
+ "confirm": "ยืนยัน",
+ "confirmDelete": "คุณต้องการลบงานที่กำหนดเวลาไว้นี้หรือไม่ สิ่งนี้ไม่สามารถยกเลิกได้.",
+ "create": "สร้างกำหนดการใหม่",
+ "cron": "ครอนสตริง",
+ "delete": "ลบ",
+ "details": "รายละเอียดกำหนดการ",
+ "edit": "แก้ไข",
+ "enabled": "เปิดใช้งาน",
+ "every": "ทั้งหมด",
+ "interval": "ช่วงเวลา",
+ "name": "ชื่อ",
+ "newSchedule": "สร้างกำหนดการใหม่",
+ "nextRun": "ทำงานครั้งต่อไป",
+ "no": "ไม่",
+ "no-schedule": "ขณะนี้ไม่มีกำหนดการสำหรับเซิร์ฟเวอร์นี้ หากต้องการเริ่มต้น คลิก",
+ "scheduledTasks": "งานที่กำหนดเวลาไว้",
+ "yes": "ใช่"
+ },
+ "serverStats": {
+ "cpuUsage": "การใช้งานซีพียู",
+ "description": "คำอธิบาย",
+ "errorCalculatingUptime": "เกิดข้อผิดพลาดในการคำนวณสถานะการออนไลน์",
+ "memUsage": "การใช้งานหน่วยความจำ",
+ "offline": "ออฟไลน์",
+ "online": "ออนไลน์",
+ "players": "ผู้เล่น",
+ "serverStarted": "เวลาเริ่มการทำงานเซิร์ฟเวอร์",
+ "serverStatus": "สถานะเซิร์ฟเวอร์",
+ "serverTime": "UTC Time",
+ "serverTimeZone": "โซนเวลาของเซิร์ฟเวอร์",
+ "serverUptime": "เวลาทำงานของเซิร์ฟเวอร์",
+ "starting": "หน่วงเวลาเริ่มต้น",
+ "unableToConnect": "ไม่สามารถเชื่อมต่อ",
+ "version": "เวอร์ชั่น"
+ },
+ "serverTerm": {
+ "commandInput": "ป้อนคำสั่งของคุณ",
+ "delay-explained": "บริการ/ตัวแทนเพิ่งเริ่มต้นและกำลังชะลอการเริ่มต้นเซิร์ฟเวอร์ Minecraft",
+ "importing": "กำลังนำเข้า...",
+ "installing": "กำลังติดตั้ง...",
+ "restart": "รีสตาร์ท",
+ "sendCommand": "ส่งคำสั่ง",
+ "start": "เริ่มต้น",
+ "starting": "ชะลอการเริ่มต้น",
+ "stop": "หยุด",
+ "stopScroll": "หยุดการเลื่อนอัตโนมัติ",
+ "updating": "กำลังอัปเดต..."
+ },
+ "serverWizard": {
+ "absoluteServerPath": "เส้นทางที่แน่นอนไปยังเซิร์ฟเวอร์ของคุณ",
+ "absoluteZipPath": "เส้นทางที่แน่นอนไปยังเซิร์ฟเวอร์ของคุณ",
+ "addRole": "เพิ่มเซิร์ฟเวอร์ให้กับบทบาทที่มีอยู่",
+ "autoCreate": "หากไม่มีใครถูกเลือก Crafty จะสร้างให้!",
+ "bePatient": "โปรดอดทนรอในขณะที่เรา ' + (นำเข้า ? 'importing' : 'download') + ' เซิร์ฟเวอร์",
+ "buildServer": "สร้างเซิร์ฟเวอร์!",
+ "clickRoot": "คลิกที่นี่เพื่อเลือกไดเรกทอรีหลัก",
+ "close": "ปิด",
+ "defaultPort": "ค่าเริ่มต้น 25565",
+ "downloading": "กำลังดาวน์โหลดเซิร์ฟเวอร์...",
+ "explainRoot": "โปรดคลิกที่ปุ่มด้านล่างเพื่อเลือกไดเรกทอรีหลักของเซิร์ฟเวอร์ของคุณภายในแหล่งข้อมูล (archive)",
+ "importServer": "นำเข้าเซิร์ฟเวอร์ที่มีอยู่แล้ว",
+ "importServerButton": "นำเข้าเซิร์ฟเวอร์!",
+ "importZip": "นำเข้าจากไฟล์ซิป",
+ "importing": "กำลังนำเข้าเซิร์ฟเวอร์...",
+ "labelZipFile": "เลือกไฟล์ซิปของคุณ",
+ "maxMem": "หน่วยความจำสูงสุด",
+ "minMem": "หน่วยความจำขั้นต่ำ",
+ "myNewServer": "เซิร์ฟเวอร์ใหม่ของฉัน",
+ "newServer": "สร้างเซิร์ฟเวอร์ใหม่",
+ "quickSettings": "การตั้งค่าด่วน",
+ "quickSettingsDescription": "ไม่ต้องกังวล คุณสามารถเปลี่ยนแปลงสิ่งเหล่านี้ได้ในภายหลัง",
+ "resetForm": "รีเซ็ตแบบฟอร์ม",
+ "save": "บันทึก",
+ "selectRole": "เลือกบทบาท",
+ "selectRoot": "เลือกไดเรกทอรีหลัก",
+ "selectServer": "เลือกเซิร์ฟเวอร์",
+ "selectType": "ประเภทเซิร์ฟเวอร์ (วานิลลา, เซิร์ฟเวอร์, ม็อด, ฯลฯ)",
+ "selectVersion": "เลือกเวอร์ชั่น",
+ "selectZipDir": "เลือกไดเร็กทอรีในแหล่งข้อมูลที่คุณต้องการให้เราแตกไฟล์",
+ "serverJar": "แฟ้มกระทำการของเซิร์ฟเวอร์ (.jar)",
+ "serverName": "ชื่อเซิร์ฟเวอร์",
+ "serverPath": "เส้นทางเซิร์ฟเวอร์",
+ "serverPort": "พอร์ตเซิร์ฟเวอร์",
+ "serverSelect": "เลือกเซิร์ฟเวอร์",
+ "serverType": "ประเภทเซิร์ฟเวอร์",
+ "serverUpload": "อัปโหลดเซิร์ฟเวอร์ซิป",
+ "serverVersion": "เวอร์ชันเซิร์ฟเวอร์",
+ "sizeInGB": "ขนาดเป็นกิกะไบต์",
+ "uploadButton": "อัปโหลด",
+ "uploadZip": "อัปโหลดไฟล์ซิปสำหรับการนำเข้าเซิร์ฟเวอร์",
+ "zipPath": "เส้นทางเซิร์ฟเวอร์"
+ },
+ "sidebar": {
+ "contribute": "สนับสนุนเรา",
+ "credits": "เครดิต",
+ "dashboard": "แผงควบคุม",
+ "documentation": "เอกสารประกอบ",
+ "inApp": "เอกสารประกอบภายในแอป",
+ "navigation": "เมนูนำทาง",
+ "newServer": "สร้างเซิร์ฟเวอร์ใหม่",
+ "servers": "เซิร์ฟเวอร์"
+ },
+ "startup": {
+ "almost": "เสร็จสิ้นการทำงาน. รอซักครู่...",
+ "internals": "กำหนดค่าและเริ่มการทำงานภายในของ Crafty",
+ "internet": "กำลังตรวจสอบการเชื่อมต่ออินเทอร์เน็ต",
+ "server": "กำลังเริ่มต้นการทำงาน ",
+ "serverInit": "กำลังเริ่มต้นการทำงานเซิร์ฟเวอร์",
+ "starting": "Crafty กำลังเริ่มการทำงาน...",
+ "tasks": "กำลังเริ่มการทำงานกำหนดการ"
+ },
+ "userConfig": {
+ "apiKey": "คีย์ API",
+ "auth": "ให้สิทธิ์การเข้าถึง?",
+ "config": "ตั้งค่า",
+ "configArea": "พื้นที่ตั้งค่าผู้ใช้",
+ "configAreaDesc": "ที่นี่คือที่ที่คุณเปลี่ยนการตั้งค่าผู้ใช้ทั้งหมดของคุณ",
+ "confirmDelete": "คุณแน่ใจหรือไม่ว่าต้องการลบผู้ใช้รายนี้ การกระทำนี้ไม่สามารถย้อนกลับได้",
+ "craftyPermDesc": "สิทธิ์เข้าถึง Crafty ที่ผู้ใช้คนนี้มี ",
+ "craftyPerms": "สิทธิ์เข้าถึง Crafty: ",
+ "created": "สร้างเมื่อ: ",
+ "delSuper": "คุณไม่สามารถลบผู้ใช้ขั้นสูงได้",
+ "deleteUser": "ลบผู้ใช้: ",
+ "deleteUserB": "ลบผู้ใช้",
+ "enabled": "เปิดใช้งาน",
+ "gravDesc": "อีเมลนี้มีไว้สำหรับใช้กับ Gravatar™ เท่านั้น Crafty จะไม่ใช้อีเมลนี้เพื่อสิ่งอื่นใดนอกจากการค้นหา Gravatar™ ของคุณไม่ว่าในกรณีใดก็ตาม",
+ "gravEmail": "อีเมล Gravatar™",
+ "lastIP": "IP ล่าสุด: ",
+ "lastLogin": "เข้าสู่ระบบครั้งล่าสุด: ",
+ "lastUpdate": "การปรับปรุงครั้งล่าสุด: ",
+ "leaveBlank": "หากต้องการแก้ไขผู้ใช้โดยไม่เปลี่ยนรหัสผ่านให้เว้นว่างไว้",
+ "manager": "ผู้จัดการ",
+ "member": "สมาชิก?",
+ "notExist": "คุณไม่สามารถลบสิ่งที่ไม่มีอยู่ได้!",
+ "pageTitle": "แก้ไขผู้ใช้",
+ "pageTitleNew": "สร้างผู้ใช้",
+ "password": "รหัสผ่านใหม่",
+ "permName": "ชื่อการอนุญาต",
+ "repeat": "ยืนยันรหัสผ่าน",
+ "roleName": "ชื่อบทบาท",
+ "selectManager": "เลือกผู้จัดการสำหรับผู้ใช้นี้",
+ "super": "ผู้ใช้ขั้นสูง",
+ "userLang": "ภาษาของผู้ใช้",
+ "userName": "ชื่อผู้ใช้",
+ "userNameDesc": "คุณต้องการเรียกผู้ใช้รายนี้ว่าอะไร?",
+ "userRoles": "บทบาทของผู้ใช้",
+ "userRolesDesc": "บทบาทที่ผู้ใช้รายนี้เป็นสมาชิก",
+ "userSettings": "การตั้งค่าผู้ใช้",
+ "userTheme": "ธีม UI",
+ "uses": "จำนวนการใช้งานที่อนุญาต (-1==ไม่มีขีดจำกัด)"
+ },
+ "webhooks": {
+ "areYouSureDel": "คุณแน่ใจหรือไม่ว่าต้องการลบ Webhook นี้?",
+ "areYouSureRun": "คุณแน่ใจหรือไม่ว่าต้องการทดสอบ Webhook นี้?",
+ "backup_server": "การสำรองข้อมูลเซิร์ฟเวอร์เสร็จสมบูรณ์",
+ "bot_name": "ชื่อบอท",
+ "color": "เลือกการเน้นสี",
+ "crash_detected": "เซิร์ฟเวอร์ขัดข้อง",
+ "edit": "แก้ไข",
+ "enabled": "เปิดใช้งาน",
+ "jar_update": "อัปเดตแฟ้มกระทำการเซิร์ฟเวอร์แล้ว",
+ "kill": "เซิร์ฟเวอร์ถูกบังคับหยุด",
+ "name": "ชื่อ",
+ "new": "สร้าง Webhook ใหม่",
+ "newWebhook": "สร้าง Webhook ใหม่",
+ "no-webhook": "ขณะนี้ไม่มี webhooks สำหรับเซิร์ฟเวอร์นี้ หากต้องการเริ่มต้น คลิก",
+ "run": "ทดสอบเรียกใช้ Webhook",
+ "send_command": "ได้รับคำสั่งเซิร์ฟเวอร์แล้ว",
+ "start_server": "เซิร์ฟเวอร์เริ่มต้นแล้ว",
+ "stop_server": "เซิร์ฟเวอร์หยุดทำงาน",
+ "trigger": "สิ่งกระตุ้น",
+ "type": "ประเภท Webhook",
+ "url": "URL ของ Webhook",
+ "webhook_body": "ภายใน Webhook",
+ "webhooks": "Webhooks"
+ }
+}
diff --git a/app/translations/tr_TR.json b/app/translations/tr_TR.json
new file mode 100644
index 00000000..9ab3a6c8
--- /dev/null
+++ b/app/translations/tr_TR.json
@@ -0,0 +1,669 @@
+{
+ "404": {
+ "contact": "Crafty Control Destek Discord Sunucusu",
+ "notFound": "Sayfa Bulunamadı",
+ "unableToFind": "Aradığınız sayfayı bulamıyoruz. Lütfen tekrar deneyin, veya geri gidip sayfayı yenileyin."
+ },
+ "accessDenied": {
+ "accessDenied": "Erişim Reddedildi",
+ "contact": "Crafty Control Destek Discord Sunucusu",
+ "contactAdmin": "Bu içeriğe erişebilmek için sunucu yöneticinizle iletişim kurun, ya da bu içeriğe erişmeniz gerektiğini düşünüyorsanız, destek ile iletişime geçin.",
+ "noAccess": "Bu kaynağa erişiminiz yok."
+ },
+ "apiKeys": {
+ "apiKeys": "API Anahtarları",
+ "auth": "Yetkili mi? ",
+ "buttons": "İşlemler",
+ "config": "Konfigürasyon",
+ "crafty": "Crafty: ",
+ "createNew": "Yeni API tokeni oluştur",
+ "created": "Oluşturuldu",
+ "deleteKeyConfirmation": "Bu API anahtarını silmek istediğine emin misin? Bu geri alınamaz.",
+ "deleteKeyConfirmationTitle": "${keyId} API anahtarını kaldırma işlemi.",
+ "getToken": "Bir Token Al",
+ "name": "Ad",
+ "nameDesc": "Bu API tokeninin adı ne olsun?",
+ "no": "Hayır",
+ "pageTitle": "Kullanıcı API Anahtarlarını Düzenle",
+ "permName": "Yetki İsmi",
+ "perms": "Yetkiler",
+ "server": "Sunucu: ",
+ "superUser": "Süper Kullanıcı",
+ "yes": "Evet"
+ },
+ "base": {
+ "doesNotWorkWithoutJavascript": "Uyarı: Crafty, Javascript aktifleştirilmediği zaman düzgün çalışmaz!"
+ },
+ "credits": {
+ "developmentTeam": "Geliştirme Takımı",
+ "hugeDesc": " ",
+ "pageDescription": "Bu kişiler olmadan, Crafty olmazdı.",
+ "pageTitle": "Katkıda Bulunanlar",
+ "patreonDesc": "Patreon / Ko-fi destekçilerimize kocaman bir TEŞEKKÜR!",
+ "patreonOther": "Diğer",
+ "patreonSupporter": "Patreon / Ko-fi Destekçileri",
+ "patreonUpdate": "Son güncelleme:",
+ "retiredStaff": "Emekli Personeller",
+ "subscriberName": "İsim",
+ "subscriptionLevel": "Seviye",
+ "supportTeam": "Destek ve Dokümantasyon",
+ "thankYou": " ",
+ "translationDesc": "Çeviri yapan topluluğumuza kocaman bir TEŞEKKÜR! [ Aktif = 🟢 İnaktif/Emekli = ⚪ ]",
+ "translationName": "İsim",
+ "translationTitle": "Çeviri",
+ "translator": "Çevirmenler"
+ },
+ "customLogin": {
+ "apply": "Uygula",
+ "backgroundUpload": "Arkaplan Yükleme",
+ "customLoginPage": "Giriş Ekranını Düzenle",
+ "delete": "Sil",
+ "labelLoginImage": "Oturum Açma Sayfası Arkaplanını Seç",
+ "loginBackground": "Oturum Açma Sayfası",
+ "loginImage": "Oturum açma sayfası için bir arka plan resmi yükleyin.",
+ "loginOpacity": "Oturum Açma Penceresi Opaklığını Seçin",
+ "pageTitle": "Özelleştirilmiş Oturum Açma Sayfası",
+ "preview": "Ön İzleme",
+ "select": "Seç",
+ "selectImage": "Bir resim seçin"
+ },
+ "dashboard": {
+ "actions": "İşlemler",
+ "allServers": "Tüm Sunucular",
+ "avg": "Ort",
+ "backups": "Yedeklemeler",
+ "bePatientClone": "Sunucuyu klonlarken lütfen sabırlı olunuz.
Bu ekran birazdan kendini yenileyecektir",
+ "bePatientRestart": "Sunucuyu yeniden başlatırken lütfen sabırlı olunuz.
Bu ekran birazdan kendini yenileyecektir",
+ "bePatientStart": "Sunucuyu başlatırken başlatırken lütfen sabırlı olunuz.
Bu ekran birazdan kendini yenileyecektir",
+ "bePatientStop": "Sunucuyu durdururken başlatırken lütfen sabırlı olunuz.
Bu ekran birazdan kendini yenileyecektir",
+ "cannotSee": "Gözükmeyen şeyler mi var?",
+ "cannotSeeOnMobile": "Mobilde gözükmeyen şeyler mi var?",
+ "cannotSeeOnMobile2": "Tabloyu yana doğru kaydırmayı deneyin.",
+ "clone": "Klonla",
+ "cloneConfirm": "Bu sunucuyu klonlamak istediğinizden emin misiniz? Bu işlem biraz zaman alabilir.",
+ "cpuCores": "CPU Çekirdekler",
+ "cpuCurFreq": "CPU Mevcut Hızı",
+ "cpuMaxFreq": "CPU Maksimum Hızı",
+ "cpuUsage": "CPU Kullanımı",
+ "crashed": "Çöktü",
+ "dashboard": "Arayüz",
+ "delay-explained": "Servis/ajan yakın zaman içerisinde başlatıldı ve minecraft sunucu örneğinin başlamasını erteliyor",
+ "host": "Ana Makine",
+ "installing": "İndiriliyor...",
+ "kill": "İşlemi Sonlandır",
+ "killing": "İşlem sonlandırılıyor...",
+ "lastBackup": "En Son:",
+ "max": "Maks",
+ "memUsage": "Bellek Kullanımı",
+ "motd": "MOTD",
+ "newServer": "Yeni Sunucu Oluştur",
+ "nextBackup": "Sonraki:",
+ "no-servers": "Şu anda sunucu yok. Başlamak için,",
+ "offline": "Çevrimdışı",
+ "online": "Çevrimiçi",
+ "players": "Oyuncular",
+ "restart": "Yeniden Başlat",
+ "sendingCommand": "Komutun gönderiliyor",
+ "server": "Sunucu",
+ "servers": "Sunucular",
+ "size": "Sunucu Dir Boyutu",
+ "start": "Başlat",
+ "starting": "Gecikmeli Başlangıç",
+ "status": "Durum",
+ "stop": "Dur",
+ "storage": "Saklama Alanı",
+ "version": "Sürüm",
+ "welcome": "Crafty Controller'a Hoşgeldiniz!"
+ },
+ "datatables": {
+ "i18n": {
+ "aria": {
+ "sortAscending": ": artan sütun sıralamasını aktifleştir",
+ "sortDescending": ": azalan sütun sıralamasını aktifleştir"
+ },
+ "buttons": {
+ "collection": "Koleksiyon ",
+ "colvis": "Sütun Görünürlüğü",
+ "colvisRestore": "Görünürlüğü eski haline getir",
+ "copy": "Kopyala",
+ "copyKeys": "Tablodaki veriyi panoya kopyalamak için CTRL veya u2318 + C tuşlarına basınız.
İptal etmek için bu mesaja tıklayın veya esc tuşuna basın.",
+ "copySuccess": {
+ "1": "Panoya 1 satır kopyalandı",
+ "_": "Panoya %d satır kopyalandı"
+ },
+ "copyTitle": "Panoya Kopyala",
+ "csv": "CSV",
+ "excel": "Excel",
+ "pageLength": {
+ "-1": "Bütün satırları göster",
+ "1": "1 satır göster",
+ "_": "%d satır göster"
+ },
+ "pdf": "PDF",
+ "print": "Yazdır"
+ },
+ "decimal": "",
+ "emptyTable": "Tabloda veri bulunmuyor",
+ "info": "_TOTAL_ kayıttan _START_ - _END_ arasındaki kayıtlar gösteriliyor",
+ "infoEmpty": "0 kayıttan 0 - 0 arasındaki kayıtlar gösteriliyor",
+ "infoFiltered": "(_MAX_ kayıt içerisinden filtrelenen)",
+ "infoPostFix": "",
+ "lengthMenu": "_MENU_ kayıt göster",
+ "loadingRecords": "Yükleniyor...",
+ "paginate": {
+ "first": "İlk",
+ "last": "Son",
+ "next": "Sonraki",
+ "previous": "Önceki"
+ },
+ "processing": "İşleniyor...",
+ "search": "Ara:",
+ "select": {
+ "cells": {
+ "0": "Seçmek için bir hücreye tıklayın",
+ "1": "%d hücre seçildi",
+ "_": "%d hücre seçildi"
+ },
+ "columns": {
+ "0": "Seçmek için bir sütuna tıklayın",
+ "1": "%d sütun seçildi",
+ "_": "%d sütun seçildi"
+ },
+ "rows": {
+ "0": "Seçmek için bir satıra tıklayın",
+ "1": "%d satır seçildi",
+ "_": "%d satır seçildi"
+ }
+ },
+ "thousands": ".",
+ "zeroRecords": "Eşleşen kayıt bulunamadı"
+ }
+ },
+ "error": {
+ "agree": "Kabul Et",
+ "bedrockError": "Bedrock indirmeleri kullanılamıyor. Lütfen kontrol edin",
+ "cancel": "İptal",
+ "contact": "Crafty Control Destek Discord Sunucusu",
+ "craftyStatus": "Crafty'nin durum sayfası",
+ "cronFormat": "Geçersiz Cron biçimi algılandı",
+ "embarassing": "Hay aksi, bu çok utanç verici.",
+ "error": "Hata!",
+ "eulaAgree": "Kabul ediyor musun?",
+ "eulaMsg": "Minecraft EULA'yı kabul etmelisiniz. ",
+ "eulaTitle": "EULA'yı Kabul Et",
+ "fileError": "Dosya türü bir resim olmalıdır.",
+ "fileTooLarge": "Yükleme başarısız oldu. Dosya yüklemesi çok büyük. Yardım için sistem yöneticisine başvurun.",
+ "hereIsTheError": "Hata burada",
+ "installerJava": "{} indirilemedi : Forge sunucu yüklemeleri Java gerektirir. Java'nın yüklü olmadığını tespit ettik. Lütfen Java'yı yükleyin ve ardından sunucuyu yükleyin.",
+ "internet": "Crafty'yi çalıştıran makinenin internet bağlantısı olmadığını tespit ettik. Sunucuya istemci bağlantıları sınırlı olabilir.",
+ "migration": "Crafty'nin ana sunucu veri deposu yeni bir yere taşınıyor. Bu süre zarfında tüm sunucu başlangıçları askıya alınmıştır. Lütfen biz bu taşıma işlemini tamamlarken bekleyin",
+ "no-file": "İstenen dosyayı bulamıyoruz. Dosya yolunu tekrar kontrol edin. Crafty'nin doğru izinleri var mı?",
+ "noInternet": "Crafty internete erişimde sorun yaşıyor. Sunucu oluşturma devre dışı bırakıldı. Lütfen internet bağlantınızı kontrol edin ve bu sayfayı yenileyin.",
+ "noJava": "{} sunucusu başlamatılamadı. Hata kodu: Java'nın yüklü olmadığını tespit ettik. Lütfen Java'yı yükleyin ve ardından sunucuyu başlatın.",
+ "not-downloaded": "Çalıştırılabilir dosyanızı bulamıyoruz. İndirme işlemi tamamlandı mı? İzinler çalıştırılabilir olarak ayarlandı mı?",
+ "portReminder": "{} ilk kez çalıştırılıyor olduğunu tespit ettik. Bunu internetten uzaktan erişilebilir kılmak için {} bağlantı noktasını yönlendiriciniz/güvenlik duvarınız üzerinden ilettiğinizden emin olun.",
+ "privMsg": "ve ",
+ "serverJars1": "Sunucu JARs API'ına erişilemiyor.",
+ "serverJars2": "en güncel bilgilere sahiptir",
+ "start-error": "{} sunucusu başlamatılamadı. Hata kodu: {}",
+ "superError": "Bu işlemi tamamlamak için süper kullanıcı olmanız gerekir.",
+ "terribleFailure": "Ne Korkunç Bir Hata!"
+ },
+ "footer": {
+ "allRightsReserved": "Tüm hakları saklıdır",
+ "copyright": "Telif Hakkı",
+ "version": "Sürüm"
+ },
+ "login": {
+ "forgotPassword": "Şifremi Unuttum",
+ "login": "Oturum Aç",
+ "password": "Şifre",
+ "username": "Kullanıcı Adı",
+ "viewStatus": "Herkese Açık Durum Sayfasını Görüntüle"
+ },
+ "notify": {
+ "activityLog": "Faaliyet Günlükleri",
+ "backupComplete": "{} sunucusu için yedekleme başarıyla tamamlandı",
+ "backupStarted": "{} sunucusu için yedekleme başlatıldı",
+ "downloadLogs": "Destek Günlükleri İndirilsin mi?",
+ "finishedPreparing": "Destek günlüklerinizi hazırlamayı tamamladık. İndirmek için lütfen indir'e tıklayın",
+ "logout": "Oturumu Kapat",
+ "preparingLogs": " Günlüklerinizi hazırlarken lütfen bekleyin... Hazır olduklarında bir bildirim göndereceğiz. Bu, büyük dağıtımlar için biraz zaman alabilir.",
+ "supportLogs": "Destek Günlükleri"
+ },
+ "offline": {
+ "offline": "Çevrimdışı",
+ "pleaseConnect": "Crafty'yi kullanmak için lütfen internete bağlanın."
+ },
+ "panelConfig": {
+ "adminControls": "Yönetici Kontrolleri",
+ "allowedServers": "İzin Verilen Sunucular",
+ "apply": "Uygula",
+ "assignedRoles": "Atanan Roller",
+ "cancel": "İptal",
+ "clearComms": "Çalıştırılmamış Komutları Temizle",
+ "custom": "Crafty'yi Özelleştir",
+ "delete": "Sil",
+ "edit": "Düzenle",
+ "enableLang": "Tüm Dilleri Etkinleştir",
+ "enabled": "Etkin",
+ "globalExplain": "Crafty'nin tüm sunucu dosyalarınızı depoladığı yer. (Yolu ile /servers/[uuid of server] ekleyeceğiz.)",
+ "globalServer": "Genel Sunucular Rehberi",
+ "json": "Config.json",
+ "match": "Şifreler eşleşmelidir",
+ "newRole": "Yeni Rol Ekle",
+ "newUser": "Yeni Kullanıcı Ekle",
+ "noMounts": "Arayüzde montaj gösterme",
+ "pageTitle": "Panel Konfigürasyonu",
+ "role": "Rol",
+ "roleUsers": "Role Sahip Kullanıcılar",
+ "roles": "Roller",
+ "save": "Kaydet",
+ "select": "Seç",
+ "superConfirm": "Yalnızca bu kullanıcının HER ŞEYE (tüm kullanıcı hesapları, sunucular, panel ayarları vb.) erişmesini istiyorsanız devam edin. Süper kullanıcı haklarınızı bile kaldırabilirler.",
+ "superConfirmTitle": "Süper kullanıcıyı etkinleştirmek istediğinize emin misiniz?",
+ "title": "Crafty Konfigürasyon",
+ "user": "Kullanıcı",
+ "users": "Kullanıcılar"
+ },
+ "rolesConfig": {
+ "config": "Rol Konfigürasyonu",
+ "configDesc": "Rolünüzün konfigürasyonu buradan değiştirebilirsiniz",
+ "configUpdate": "Son Güncelleme: ",
+ "created": "Oluşturulma: ",
+ "delRole": "Rolü Sil",
+ "doesNotExist": "Henüz var olmayan bir şeyi silemezsiniz",
+ "pageTitle": "Rolü Düzenle",
+ "pageTitleNew": "Yeni Rol",
+ "permAccess": "İzin?",
+ "permName": "İzin Adı",
+ "permsServer": "Bu rolün belirtilen sunucular için sahip olduğu izinler",
+ "roleConfigArea": "Rol Konfigürasyon Alanı",
+ "roleDesc": "Bu rolü nasıl adlandırmak istersiniz?",
+ "roleName": "Rol Adı: ",
+ "rolePerms": "Rol İzinleri",
+ "roleServers": "İzin Verilen Sunucular",
+ "roleTitle": "Rol Ayarları",
+ "roleUserName": "Kullanıcı Adı",
+ "roleUsers": "Role Sahip Kullanıcılar: ",
+ "selectManager": "Bu rol için bir yönetici seçin",
+ "serverAccess": "Erişim?",
+ "serverName": "Sunucu Adı",
+ "serversDesc": "bu rolün erişmesine izin verilen sunucular"
+ },
+ "serverBackups": {
+ "after": "Yedeklemeden sonra bir komut çalıştır",
+ "backupAtMidnight": "Gece yarısında otomatik yedekleme yapılsın mı?",
+ "backupNow": "Backup Now!",
+ "backupTask": "Bir yedekleme görevi başlatıldı.",
+ "before": "Yedeklemeden önce bir komut çalıştır",
+ "cancel": "İptal",
+ "clickExclude": "İstisnaları seçmek için tıklayın",
+ "compress": "Yedeklemeyi Sıkıştır",
+ "confirm": "Onayla",
+ "confirmDelete": "Bu yedeği silmek istediğine emin misin? Bu geri alınamaz.",
+ "confirmRestore": "Bu yedeği geri yüklemek istediğinizden emin misiniz? Tüm mevcut sunucu dosyaları yedeklemedeki durumuna dönecek ve kurtarılamayacaktır.",
+ "currentBackups": "Mevcut Yedekmeler",
+ "delete": "Sil",
+ "destroyBackup": "\" + file_to_del + \" yedeklemesi yok edilsin mi?",
+ "download": "İndir",
+ "excludedBackups": "Hariç Tutulan Yollar: ",
+ "excludedChoose": "Yedeklemelerinizden hariç tutmak istediğiniz yolları seçin",
+ "exclusionsTitle": "Yedekleme İstisnaları",
+ "maxBackups": "Maksimum Yedekleme Sayısı",
+ "maxBackupsDesc": "Crafty N yedeklemeden fazlasını saklamayacak, en eskisini silecektir (tümünü saklamak için 0 girin)",
+ "options": "Seçenekler",
+ "path": "Dosya Yolu",
+ "restore": "Geri Yükleme",
+ "restoring": "Yedekleme geri yükleniyor. Bu biraz zaman alabilir. Lütfen sabırlı olun.",
+ "save": "Kaydet",
+ "shutdown": "Yedekleme süresince sunucuyu kapat",
+ "size": "Boyut",
+ "storageLocation": "Depolama Konumu",
+ "storageLocationDesc": "Yedekmeleri nerede saklamak istiyorsunuz?"
+ },
+ "serverConfig": {
+ "bePatientDelete": "Sunucunuzu Crafty panelinden kaldırırken lütfen sabırlı olun. Bu ekran birazdan kapanacaktır.",
+ "bePatientDeleteFiles": "Sunucunuzu Crafty panelinden kaldırırken ve dosyalarını silerken lütfen sabırlı olun. Bu ekran birazdan kapanacaktır.",
+ "bePatientUpdate": "Sunucuyu güncellerken lütfen sabırlı olun. İndirme süreleri internet hızınıza bağlı olarak değişebilir.
Bu ekran birazdan kendini yenileyecektir",
+ "cancel": "İptal",
+ "countPlayers": "Sunucuyu toplam oyuncu sayısına dahil et.",
+ "crashTime": "Çökme Zaman Aşımı",
+ "crashTimeDesc": "Sunucunuzun çöktüğünü varsaymadan önce ne kadar beklemeliyiz?",
+ "deleteFilesQuestion": "Sunucu dosyaları makineden silinsin mi?",
+ "deleteFilesQuestionMessage": "Crafty'nin ana makineden tüm sunucu dosyalarını silmesini ister misiniz?
Buna sunucu yedeklemeleri de dahildir.",
+ "deleteServer": "Sunucuyu Sil",
+ "deleteServerQuestion": "Sunucu silinsin mi?",
+ "deleteServerQuestionMessage": "Bu sunucuyu silmek istediğinizden emin misiniz? Bundan sonra geri dönüş yok...",
+ "exeUpdateURL": "Sunucu Çalıştırılabilir Güncelleme URL'si",
+ "exeUpdateURLDesc": "Güncellemeler için Doğrudan İndirme URL'si.",
+ "ignoredExits": "Yok Sayılan Çökme Çıkış Kodları",
+ "ignoredExitsExplain": "Crafty'nin Crash algılamasının normal bir 'durdurma' olarak görmezden gelmesi gereken çıkış kodları (virgülle ayrılmış)",
+ "javaNoChange": "Geçersiz Kılma",
+ "javaVersion": "Geçerli Java sürümünü geçersiz kıl",
+ "javaVersionDesc": "Java'yı geçersiz kılacaksanız, 'çalıştırma komutu' içindeki geçerli Java yolunuzun tırnak içine alındığından emin olun (varsayılan 'java' değişkeni hariç)",
+ "noDelete": "Hayır, geri dön",
+ "noDeleteFiles": "Hayır, sadece panelden kaldırın",
+ "removeOldLogsAfter": "Eski Günlükleri Kaldırma Süresi",
+ "removeOldLogsAfterDesc": "Bir günlük dosyasının silinmesi için kaç gün geçmesi gerekir (0 kapalıdır)",
+ "save": "Kaydet",
+ "sendingDelete": "Sunucu Siliniyor",
+ "sendingRequest": "İsteğiniz gönderiliyor...",
+ "serverAutoStart": "Sunucuyu Otomatik Başlatma",
+ "serverAutostartDelay": "Sunucuyu Otomatik Başlatma Gecikmesi",
+ "serverAutostartDelayDesc": "Otomatik başlatmadan önceki gecikme (Aşağıda etkinleştirilmişse)",
+ "serverCrashDetection": "Sunucu Çökmesi Algılama",
+ "serverExecutable": "Sunucu Çalıştırılabilir Dosyası",
+ "serverExecutableDesc": "Sunucunun çalıştırılabilir dosyası",
+ "serverExecutionCommand": "Sunucu Çalıştırma Komutu",
+ "serverExecutionCommandDesc": "Gizli bir terminalde başlatılacaklar",
+ "serverIP": "Sunucu IP'si",
+ "serverIPDesc": "Crafty'nin istatistikler için bağlanması gereken IP (Sorun yaşarsanız 127.0.0.1 yerine gerçek bir ip deneyin)",
+ "serverLogLocation": "Sunucu Günlük Konumu",
+ "serverLogLocationDesc": "Günlük dosyasının konumu",
+ "serverName": "Sunucu Adı",
+ "serverNameDesc": "Sunucuya vermek istediğiniz ad",
+ "serverPath": "Sunucu Çalışma Dizini",
+ "serverPathDesc": "Mutlak tam yol (çalıştırılabilir dahil değil)",
+ "serverPort": "Sunucu Bağlantı Noktası (Portu)",
+ "serverPortDesc": "Crafty'nin istatistikler için bağlanması gereken bağlantı noktası (portu)",
+ "serverStopCommand": "Sunucu Durdurma Komutu",
+ "serverStopCommandDesc": "Programı durdurmak için gönderilecek komut",
+ "showStatus": "Herkese Açık Durum Sayfasında Göster",
+ "shutdownTimeout": "Kapanma Zaman Aşımı",
+ "statsHint1": "Sunucunuzun çalıştığı port buraya girilmelidir. Crafty sunucunuzun istatistiklerine böyle erişiyor.",
+ "statsHint2": "Bu, sunucunuzun portunu değiştirmez. Sunucu konfigürasyon dosyanızdaki portu da ayrıca değiştirmeniz gerekir.",
+ "stopBeforeDeleting": "Lütfen sunucuyu silmeden önce durdurun",
+ "timeoutExplain1": "Crafty'nin",
+ "timeoutExplain2": "komutunu çalıştırdıktan sonra sunucuyu kapatmaya zorlamadan önce sunucunuzun kapanmasını ne kadar bekleyeceği.",
+ "update": "Çalıştırılabilir Dosyayı Güncelle",
+ "yesDelete": "Evet, sil",
+ "yesDeleteFiles": "Evet, dosyaları sil"
+ },
+ "serverConfigHelp": {
+ "desc": "Sunucunuzun konfigürasyonu buradan değiştirebilirsiniz",
+ "perms": [
+ "Crafty tarafından yönetilen bir sunucunun konumlarının DEĞİŞTİRİLMEMESİ
önerilir.",
+ "Konumları değiştirmek, özellikle dosya izinlerinin daha kilitli olduğu Linux tipi işletim sistemlerinde işleri BOZABİLİR
.",
+ "
",
+ "Bir sunucunun bulunduğu yeri değiştirmek zorunda olduğunuzu düşünüyorsanız, \"crafty\" kullanıcısına sunucu yolunu okuma / yazma izni verdiğiniz sürece bunu yapabilirsiniz.",
+ "
",
+ "
",
+ "Linux'ta bu en iyi şekilde aşağıdakileri uygulayarak yapılır:
",
+ "",
+ " sudo chown crafty:crafty /sunucunuzun/konumu/ -R
",
+ " sudo chmod 2775 /sunucunuzun/konumu/ -R
",
+ "
"
+ ],
+ "title": "Sunucu Konfigürasyon Alanı"
+ },
+ "serverDetails": {
+ "backup": "Yedekleme",
+ "config": "Konfigürasyon",
+ "files": "Dosyalar",
+ "filter": "Günlükleri Filtrele",
+ "filterList": "Filtrelenmiş Kelimeler",
+ "logs": "Günlükler",
+ "metrics": "Metrikler",
+ "playerControls": "Oyuncu Yönetimi",
+ "reset": "Kaydırmayı Sıfırla",
+ "schedule": "Zamanlama",
+ "serverDetails": "Sunucu Detayları",
+ "terminal": "Terminal"
+ },
+ "serverFiles": {
+ "clickUpload": "Dosyalarınızı seçmek için buraya tıklayın",
+ "close": "Kapat",
+ "createDir": "Dizin oluştur",
+ "createDirQuestion": "Yeni dizinin adı ne olsun?",
+ "createFile": "Dosya oluştur",
+ "createFileQuestion": "Yeni dosyanın adı ne olsun?",
+ "default": "Varsayılan",
+ "delete": "Sil",
+ "deleteItemQuestion": "\" + name + \" klasör/dosyasını silmek istediğinizden emin misiniz?",
+ "deleteItemQuestionMessage": "\\\"\" + path + \"\\\" silenecektir!
Bu eylemin geri dönüşü olmayacak ve sonsuza kadar kaybolacak!",
+ "download": "İndir",
+ "editingFile": "Düzenlenen dosya:",
+ "error": "Dosyalar alınırken hata oluştu",
+ "fileReadError": "Dosya okuma hatası",
+ "files": "Dosyalar",
+ "keybindings": "Tuş Atamaları",
+ "loadingRecords": "Dosyalar yükleniyor...",
+ "noDelete": "Hayır",
+ "noscript": "Dosya yöneticisi JavaScript olmadan çalışmıyor",
+ "rename": "Yeniden Adlandır",
+ "renameItemQuestion": "Dosyanın yeni adı ne olsun?",
+ "save": "Kaydet",
+ "size": "Düzenleyici Boyutunu Değiştir",
+ "stayHere": "BU SAYFADAN AYRILMAYIN!",
+ "unsupportedLanguage": "Uyarı: Bu desteklenen bir dosya türü değil",
+ "unzip": "Fermuarı aç",
+ "upload": "Dosya Yükle",
+ "uploadTitle": "Dosyayı buraya yükle: ",
+ "waitUpload": "Lütfen dosyalarınızı yüklerken bekleyiniz... Bu biraz zaman alabilir.",
+ "yesDelete": "Evet, sonuçlarını anlıyorum"
+ },
+ "serverMetrics": {
+ "resetZoom": "Yakınlaştırmayı Sıfırla",
+ "zoomHint1": "Grafiği yakınlaştırmak için shift tuşunu basılı tutun ve ardından kaydırma tekerleğini kullanın.",
+ "zoomHint2": "Ya da shift tuşunu basılı tutup yakınlaştırmak istediğiniz alana tıklayın ve sürükleyin."
+ },
+ "serverPlayerManagement": {
+ "bannedPlayers": "Yasaklanmış Oyuncular",
+ "loadingBannedPlayers": "Yasaklanmış Oyuncular Yükleniyor",
+ "players": "Oyuncular"
+ },
+ "serverScheduleConfig": {
+ "backup": "Sunucuyu Yedekle",
+ "basic": "Basit",
+ "children": "Bağlantılı Alt Görevler: ",
+ "command": "Komut",
+ "command-explain": "Hangi komutu çalıştırmamızı istiyorsunuz? '/'yi dahil etmeyin.",
+ "cron": "Cron",
+ "cron-explain": "Cron dizenizi girin -- NOT: 0 = Son seçenekte Pazartesi.",
+ "custom": "Özel Komut",
+ "days": "Günler",
+ "enabled": "Etkin",
+ "hours": "Saatler",
+ "interval": "Aralık",
+ "interval-explain": "Bu zamanlamanın ne sıklıkla uygulanmasını istiyorsunuz?",
+ "minutes": "Dakika",
+ "offset": "Gecikme Ofseti",
+ "offset-explain": "İlk görevi ateşledikten sonra bunu ateşlemek için ne kadar beklemeliyiz? (Saniye)",
+ "one-time": "Çalıştırdıktan sonra sil",
+ "parent": "Bir üst zamanlama seçin",
+ "parent-explain": "Bunu hangi zamanlama tetiklemeli?",
+ "reaction": "Zincirleme Reaksiyon",
+ "restart": "Sunucuyu Yeniden Başlat",
+ "select": "Basit / Cron / Zincirleme Reaksiyon Seçimi",
+ "start": "Sunucuyu Başlat",
+ "stop": "Sunucuyu Kapat",
+ "time": "Zaman",
+ "time-explain": "Zamanlamanın ne zaman uygulanmasını istiyorsunuz?"
+ },
+ "serverSchedules": {
+ "action": "Eylem",
+ "areYouSure": "Zamanlanmış Görev Silinsin mi?",
+ "cancel": "İptal",
+ "cannotSee": "Her şeyi göremiyor musun?",
+ "cannotSeeOnMobile": "Tüm ayrıntılar için zamanlanmış bir göreve tıklamayı deneyin.",
+ "child": "ID ile alt zamanlama ",
+ "close": "Kapat",
+ "command": "Komut",
+ "confirm": "Onayla",
+ "confirmDelete": "Bu zamanlanmış görevi silmek istiyor musunuz? Bu geri alınamaz.",
+ "create": "Yeni Zamanlama Oluştur",
+ "cron": "Cron Dizesi",
+ "delete": "Sil",
+ "details": "Zamanlama Detayları",
+ "edit": "Düzenle",
+ "enabled": "Etkin",
+ "every": "Her",
+ "interval": "Aralık",
+ "name": "Ad",
+ "newSchedule": "Yeni Zamanlama",
+ "nextRun": "Sonraki Çalışma",
+ "no": "Hayır",
+ "no-schedule": "Şu anda bu sunucu için herhangi bir zamanlama bulunmamaktadır. Başlamak için: ",
+ "scheduledTasks": "Zamanlanmış Görevler",
+ "yes": "Evet"
+ },
+ "serverStats": {
+ "cpuUsage": "CPU Kullanımı",
+ "description": "Açıklama",
+ "errorCalculatingUptime": "Çalışma Süresi Hesaplanırken Hata",
+ "memUsage": "Bellek Kullanımı",
+ "offline": "Çevrimdışı",
+ "online": "Çevrimiçi",
+ "players": "Oyuncular",
+ "serverStarted": "Sunucu Başlatıldı",
+ "serverStatus": "Sunucu Durumu",
+ "serverTime": "UTC Saati",
+ "serverTimeZone": "Sunucu Saat Dilimi",
+ "serverUptime": "Sunucu Çalışma Süresi",
+ "starting": "Gecikmeli Başlangıç",
+ "unableToConnect": "Bağlanılamıyor",
+ "version": "Sürüm"
+ },
+ "serverTerm": {
+ "commandInput": "Komutunuzu girin",
+ "delay-explained": "Servis/ajan yakın zaman içerisinde başlatıldı ve minecraft sunucu örneğinin başlamasını erteliyor",
+ "importing": "İçe Aktarılıyor...",
+ "installing": "Kuruluyor...",
+ "restart": "Yeniden Başlat",
+ "sendCommand": "Komut gönder",
+ "start": "Başlat",
+ "starting": "Gecikmeli Başlangıç",
+ "stop": "Durdur",
+ "stopScroll": "Otomatik Kaydırmayı Durdur",
+ "updating": "Güncelleniyor..."
+ },
+ "serverWizard": {
+ "absoluteServerPath": "Sunucunuzun mutlak konumu",
+ "absoluteZipPath": "Sunucunuzun mutlak konumu",
+ "addRole": "Sunucuyu Mevcut Rol(ler)e Ekle",
+ "autoCreate": "Hiçbiri seçilmezse Crafty bir tane yapacak!",
+ "bePatient": "Biz sunucuyu ' + (importing ? 'içe aktarırken' : 'indirirken') + ' lütfen sabırlı olun",
+ "buildServer": "Sunucuyu Oluştur!",
+ "clickRoot": "Kök dizinini seçmek için buraya tıklayın",
+ "close": "Kapat",
+ "defaultPort": "25565 varsayılan",
+ "downloading": "Sunucu İndiriliyor...",
+ "explainRoot": "Arşivin içinden sunucunuzun kök dizinini seçmek için lütfen aşağıdaki düğmeye tıklayın",
+ "importServer": "Mevcut Bir Sunucuyu İçe Aktar",
+ "importServerButton": "Sunucuyu İçe Aktar!",
+ "importZip": "Zip Dosyasından İçe Aktar",
+ "importing": "Sunucu İçe Aktarılıyor...",
+ "labelZipFile": "Zip Dosyanızı Seçin",
+ "maxMem": "Maksimum Bellek",
+ "minMem": "Minimum Bellek",
+ "myNewServer": "Benim Yeni Sunucum",
+ "newServer": "Yeni Sunucu Oluştur",
+ "quickSettings": "Hızlı Ayarlar",
+ "quickSettingsDescription": "Endişelenmeyin, bunları daha sonra değiştirebilirsiniz",
+ "resetForm": "Formu Sıfırla",
+ "save": "Kaydet",
+ "selectRole": "Rol(ler)i Seçin",
+ "selectRoot": "Arşiv Kök Dizinini Seçiniz",
+ "selectServer": "Bir Sunucu Seçin",
+ "selectType": "Sunucu Türü (Vanilla, Sunucular, Modlanmış, vb.)",
+ "selectVersion": "Bir Sürüm Seçin",
+ "selectZipDir": "Fermuarını açmamızı istediğiniz arşivdeki dizini seçin",
+ "serverJar": "Sunucu Çalıştırılabilir Dosyası",
+ "serverName": "Sunucu Adı",
+ "serverPath": "Sunucu Konumu",
+ "serverPort": "Sunucu Portu",
+ "serverSelect": "Sunucu Seçimi",
+ "serverType": "Server Tipi",
+ "serverUpload": "Sıkıştırılmış Sunucu Yükle",
+ "serverVersion": "Sunucu Sürümü",
+ "sizeInGB": "GB cinsinden boyut",
+ "uploadButton": "Dosya Yükle",
+ "uploadZip": "Sunucu İçe Aktarımı İçin Zip Dosyası Yükle",
+ "zipPath": "Sunucu Konumu"
+ },
+ "sidebar": {
+ "contribute": "Katkıda Bulun",
+ "credits": "Krediler",
+ "dashboard": "Arayüz",
+ "documentation": "Dokümantasyon",
+ "inApp": "Uygulama İçi Dokümanlar",
+ "navigation": "Navigasyon",
+ "newServer": "Yeni Sunucu Oluştur",
+ "servers": "Sunucular"
+ },
+ "startup": {
+ "almost": "Bitiriliyor. Sıkı tutun...",
+ "internals": "Crafty'nin dahili bileşenlerini konfigüre etme ve başlatma",
+ "internet": "İnternet bağlantısı kontrol ediliyor",
+ "server": "Başlatılıyor ",
+ "serverInit": "Sunucular Başlatılıyor",
+ "starting": "Crafty Başlatılıyor...",
+ "tasks": "Görev Zamanlayıcısı Başlatılıyor"
+ },
+ "userConfig": {
+ "apiKey": "API Anahtarları",
+ "auth": "Yetkili mi? ",
+ "config": "Konfigürasyon",
+ "configArea": "Kullanıcı Konfigürasyon Alanı",
+ "configAreaDesc": "Tüm kullanıcı ayarlarınızı değiştireceğiniz yer burasıdır",
+ "confirmDelete": "Bu kullanıcıyı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
+ "craftyPermDesc": "Bu kullanıcının sahip olduğu Crafty izinleri: ",
+ "craftyPerms": "Crafty İzinleri: ",
+ "created": "Oluşturulma: ",
+ "delSuper": "Bir süper kullanıcıyı silemezsiniz",
+ "deleteUser": "Kullanıcıyı Sil: ",
+ "deleteUserB": "Kullanıcıyı Sil",
+ "enabled": "Etkin",
+ "gravDesc": "Bu e-posta katı bir şekilde sadece Gravatar™ kullanımı içindir. Crafty, hiçbir koşulda bu e-postayı Gravatar™'ınıza bakmak dışında herhangi bir amaçla kullanmayacaktır.",
+ "gravEmail": "Gravatar™ Emaili",
+ "lastIP": "Son IP: ",
+ "lastLogin": "Son Oturum Açma: ",
+ "lastUpdate": "Son Güncelleme: ",
+ "leaveBlank": "Şifreyi değiştirmeden kullanıcıyı düzenlemek için boş bırakın.",
+ "manager": "Yönetici",
+ "member": "Üye mi?",
+ "notExist": "Var olmayan bir şeyi silemezsiniz!",
+ "pageTitle": "Kullanıcıyı Düzenle",
+ "pageTitleNew": "Kullanıcı Oluştur",
+ "password": "Yeni Şifre",
+ "permName": "İzin Adı",
+ "repeat": "Şifreyi Onayla",
+ "roleName": "Rol Adı",
+ "selectManager": "Kullanıcı için Yönetici Seçin",
+ "super": "Süper Kullanıcı",
+ "userLang": "Kullanıcı Dili",
+ "userName": "Kullanıcı Adı",
+ "userNameDesc": "Bu kullanıcıya nasıl isimlendirmek istersiniz?",
+ "userRoles": "Kullanıcı Rolleri",
+ "userRolesDesc": "Bu kullanıcının üye olduğu roller.",
+ "userSettings": "Kullanıcı Ayarları",
+ "userTheme": "UI Teması",
+ "uses": "İzin verilen kullanım sayısı (-1==Sınır Yok)"
+ },
+ "webhooks": {
+ "areYouSureDel": "Bu webhooku silmek istediğinizden emin misiniz?",
+ "areYouSureRun": "Bu webhooku test etmek istediğinizden emin misiniz?",
+ "backup_server": "Sunucu Yedeklemesi Tamamlandı",
+ "bot_name": "Bot Adı",
+ "color": "Renk Vurgusu Seçin",
+ "crash_detected": "Sunucu Çöktü",
+ "edit": "Düzenle",
+ "enabled": "Etkin",
+ "jar_update": "Sunucu Çalıştırılabilir Dosyası Güncellendi",
+ "kill": "Sunucu Öldürüldü",
+ "name": "Ad",
+ "new": "Yeni Webhook",
+ "newWebhook": "Yeni Webhook",
+ "no-webhook": "Şu anda bu sunucu için herhangi bir webhook bulunmamaktadır. Başlamak için:",
+ "run": "Webhooku Test Et",
+ "send_command": "Sunucu Komutu Alındı",
+ "start_server": "Sunucu Başlatıldı",
+ "stop_server": "Sunucu Durduruldu",
+ "trigger": "Tetikleyici",
+ "type": "Webhook Tipi",
+ "url": "Webhook URLsi",
+ "webhook_body": "Webhook Gövdesi",
+ "webhooks": "Webhooklar"
+ }
+}
diff --git a/app/translations/uk_UA.json b/app/translations/uk_UA.json
new file mode 100644
index 00000000..a7018a5f
--- /dev/null
+++ b/app/translations/uk_UA.json
@@ -0,0 +1,669 @@
+{
+ "404": {
+ "contact": "Зв'язатись з Crafty Control підтримкою через Discord",
+ "notFound": "Сторінку не найдено!",
+ "unableToFind": "Нам не вдалося знайти сторінку, яку ви шукаєте. Спробуйте ще раз або поверніться й оновіть."
+ },
+ "accessDenied": {
+ "accessDenied": "Доступ заборонено",
+ "contact": "Зв'язатись з Crafty Control підтримкою через Discord",
+ "contactAdmin": "Щоб отримати доступ до цього ресурсу, зверніться до адміністратора свого сервера або, якщо ви вважаєте, що вже маєте доступ до цього ресурсу, зверніться до служби підтримки.",
+ "noAccess": "У вас немає доступу до цього ресурсу."
+ },
+ "apiKeys": {
+ "apiKeys": "API Ключі",
+ "auth": "Авторизовані?",
+ "buttons": "Кнопки",
+ "config": "Конфігурація",
+ "crafty": "Crafty: ",
+ "createNew": "Створити новий API Token",
+ "created": "Створений",
+ "deleteKeyConfirmation": "Ви дійсно бажаєте видалити API ключ? Це незворотня дія.",
+ "deleteKeyConfirmationTitle": "Видалення API ключ ${keyId}?",
+ "getToken": "Отримати Токен",
+ "name": "Ім'я",
+ "nameDesc": "Як ви хочете назвати даний API токен?",
+ "no": "Ні",
+ "pageTitle": "Редагування Користувацьких API ключів",
+ "permName": "Назва дозволу",
+ "perms": "Дозволи",
+ "server": "Сервер: ",
+ "superUser": "СуперЮзер",
+ "yes": "Так"
+ },
+ "base": {
+ "doesNotWorkWithoutJavascript": "Увага: Crafty не працює належним чином коли JavaScript вимкненний!"
+ },
+ "credits": {
+ "developmentTeam": "Команда Розробки",
+ "hugeDesc": "Величезне",
+ "pageDescription": "Без цих людей, не було б Crafty",
+ "pageTitle": "Подяка",
+ "patreonDesc": "нашим Patreon / Ko-fi підтримувачам!",
+ "patreonOther": "Інше",
+ "patreonSupporter": "Patreon / Ko-fi підтримка",
+ "patreonUpdate": "Останнє оновлення:",
+ "retiredStaff": "Ветерани",
+ "subscriberName": "Ім'я",
+ "subscriptionLevel": "Рівень",
+ "supportTeam": "Команда підтримки та документації",
+ "thankYou": "ДЯКУЮ",
+ "translationDesc": "нашій спільноті, хто перекладає! [ Активні = 🟢 Неактивні/Ветерани = ⚪ ]",
+ "translationName": "Ім'я",
+ "translationTitle": "Мовний переклад",
+ "translator": "Перекладачі"
+ },
+ "customLogin": {
+ "apply": "Застосувати",
+ "backgroundUpload": "Фонове завантаження",
+ "customLoginPage": "Кастомізація сторінки входу",
+ "delete": "Видалити",
+ "labelLoginImage": "Вибрати свій фон входу",
+ "loginBackground": "Фон Вхідної сторінки",
+ "loginImage": "Завантаження свого фону для сторінки входу.",
+ "loginOpacity": "Виберіть прозорість фону сторінки входу",
+ "pageTitle": "Кастомна сторінка входу",
+ "preview": "Попередній перегляд",
+ "select": "Вибрати",
+ "selectImage": "Вибрати зображення"
+ },
+ "dashboard": {
+ "actions": "Дії",
+ "allServers": "Всі сервери",
+ "avg": "Середнє",
+ "backups": "Бекапи",
+ "bePatientClone": "Будь ласка, будьте терплячі сервер копіюється/клонується.
Ця сторінка скоро оновиться",
+ "bePatientRestart": "Будь ласка, будьте терплячі сервер перезавантажується.
Ця сторінка скоро оновиться",
+ "bePatientStart": "Будь ласка, будьте терплячі сервер включається..
Ця сторінка скоро оновиться",
+ "bePatientStop": "Будь ласка, будьте терплячі сервер вимикається.
Ця сторінка скоро оновиться",
+ "cannotSee": "Нічого не бачите?",
+ "cannotSeeOnMobile": "Нічого не бачите на смартфоні?",
+ "cannotSeeOnMobile2": "Спробуйте прокрутити таблицю вбік.",
+ "clone": "Копіювати/клонувати",
+ "cloneConfirm": "Ви впевненні що бажаєте копіювати/клонувати даний сервер? Цей процес займе трішки часу.",
+ "cpuCores": "CPU Ядра",
+ "cpuCurFreq": "Швидкість CPU",
+ "cpuMaxFreq": "Максимальна швидкість CPU",
+ "cpuUsage": "Використання CPU",
+ "crashed": "Аварійне завершення",
+ "dashboard": "Панель",
+ "delay-explained": "Служба/агент нещодавно запущено та затримує запуск серверів minecraft",
+ "host": "Хост",
+ "installing": "Встановлення...",
+ "kill": "Вбити процес",
+ "killing": "Вбиваємо процес...",
+ "lastBackup": "Останній:",
+ "max": "Макс",
+ "memUsage": "Використання ОЗП",
+ "motd": "MOTD",
+ "newServer": "Створити новий сервер",
+ "nextBackup": "Наступний:",
+ "no-servers": "Зараз відсутні сервери. Щоб розпочати, натисніть.",
+ "offline": "Оффлайн",
+ "online": "Онлайн",
+ "players": "Гравці",
+ "restart": "Перезавантаження",
+ "sendingCommand": "Надіслати команду",
+ "server": "Сервер",
+ "servers": "Сервери",
+ "size": "Об'єм папки сервера",
+ "start": "Старт",
+ "starting": "Відкладений старт",
+ "status": "Статус",
+ "stop": "Стоп",
+ "storage": "Сховище",
+ "version": "Версія",
+ "welcome": "Ласкаво просимо у Crafty Controller"
+ },
+ "datatables": {
+ "i18n": {
+ "aria": {
+ "sortAscending": ": активуйте, щоб сортувати стовпці за зростанням",
+ "sortDescending": ": активуйте, щоб сортувати стовпці за спаданням"
+ },
+ "buttons": {
+ "collection": "Колекція ",
+ "colvis": "Видимість стовпців",
+ "colvisRestore": "Стандартна видимість",
+ "copy": "Копіювати",
+ "copyKeys": "Натисніть ctrl або u2318 + C щоб скопіювати таблицю в буфер обміну.
Для відміни, натисніть на це повідомлення або ESC.",
+ "copySuccess": {
+ "1": "Скопійовано 1 рядок в буфер обміну",
+ "_": "скопійовано %d рядки(-ів) в буфер обміну"
+ },
+ "copyTitle": "Скопіювати в буфер обміну",
+ "csv": "CSV",
+ "excel": "Excel",
+ "pageLength": {
+ "-1": "Показати усі рядки",
+ "1": "Показати 1 рядок",
+ "_": "Показати %d рядки(-ів)"
+ },
+ "pdf": "PDF",
+ "print": "Друк"
+ },
+ "decimal": "",
+ "emptyTable": "Немає даних у цій таблиці",
+ "info": "Показ _START_ до _END_ з _TOTAL_ рядків",
+ "infoEmpty": "Показ 0 до 0 з 0 рядків",
+ "infoFiltered": "(відфльтровано з _MAX_ загалом рядків)",
+ "infoPostFix": "",
+ "lengthMenu": "Показати _MENU_ рядки",
+ "loadingRecords": "Завантаження...",
+ "paginate": {
+ "first": "Перший",
+ "last": "Останній",
+ "next": "Наступний",
+ "previous": "Попередній"
+ },
+ "processing": "В процесі...",
+ "search": "Пошук:",
+ "select": {
+ "cells": {
+ "0": "Натисніть на комірку, щоб вибрати її",
+ "1": "%d комірку вибрано",
+ "_": "%d комірок вибрано"
+ },
+ "columns": {
+ "0": "Натисніть на стовпець, щоб вибрати його",
+ "1": "%d стовпців вибрано",
+ "_": "%d стовпців вибрано"
+ },
+ "rows": {
+ "0": "Натисність на рядок, щоб вибрати його",
+ "1": "%d рядок вибрано",
+ "_": "%d рядків вибрано"
+ }
+ },
+ "thousands": ",",
+ "zeroRecords": "Не знайдено збігів в базі"
+ }
+ },
+ "error": {
+ "agree": "Згодний",
+ "bedrockError": "Bedrock недоступний для скачування. Перевірте будь ласка",
+ "cancel": "Відміна",
+ "contact": "Зв'язатись з Crafty Control підтримкою через Discord",
+ "craftyStatus": "Crafty's статус",
+ "cronFormat": "Недійсний Cron формат знайдено",
+ "embarassing": "Ой, перепрошую, мені так соромно.",
+ "error": "Помилка!",
+ "eulaAgree": "Ви згодні?",
+ "eulaMsg": "Ви мусите погодитись з ",
+ "eulaTitle": "Ліцезнія EULA",
+ "fileError": "Тип файлу має бути зображення.",
+ "fileTooLarge": "Завантаження зупинено. Надто великий розмір файлу. Зв'яжіться зі системним адміністратором для допомоги.",
+ "hereIsTheError": "Ось помилка",
+ "installerJava": "Не вдалось встановити {} : Forge сервер потребує Java. Ми бачимо що, Java не інстальована. Будь ласка, встановіть java і лиш тоді сервер.",
+ "internet": "Ми виявили, що машина, на якій працює Crafty, не має підключення до Інтернету. Підключення клієнта до сервера може бути обмежено.",
+ "migration": "Основне серверне сховище Crafty переноситься в нове місце. На цей час усі запуски серверів призупинено. Зачекайте, поки ми завершимо цю міграцію.",
+ "no-file": "Здається, ми не можемо знайти потрібний файл. Ще раз перевірте шлях. Чи має Crafty належні дозволи?",
+ "noInternet": "Crafty має проблеми з доступом до Інтернету. Створення сервера вимкнено. Перевірте підключення до Інтернету та оновіть сторінку.",
+ "noJava": "Сервер {} не вдалося запустити з кодом помилки: ми виявили, що Java не встановлено. Установіть Java, а потім запустіть сервер.",
+ "not-downloaded": "Здається, ми не можемо знайти ваш виконуваний файл. Чи завершилось завантаження? Чи встановлено дозволи на виконуваний файл?",
+ "portReminder": "Ми виявили це вперше {} був запущений. Обов’язково перенаправте порт {} через ваш маршрутизатор/брандмауер, щоб зробити це доступним з Інтернету.",
+ "privMsg": "і ",
+ "serverJars1": "API сервера JAR недоступний. Будь ласка, перевірте",
+ "serverJars2": "для найактуальнішої інформації.",
+ "start-error": "Сервер {} не запустився через помилку: {}",
+ "superError": "Ви маєте мати права суперюзера для виконання даного завдання.",
+ "terribleFailure": "Яка Жахлива Невдача!"
+ },
+ "footer": {
+ "allRightsReserved": "Всі права захищено",
+ "copyright": "Захищено Авторським правом",
+ "version": "Версія"
+ },
+ "login": {
+ "forgotPassword": "Забули пароль",
+ "login": "Вхід",
+ "password": "Пароль",
+ "username": "Логін",
+ "viewStatus": "Список серверів"
+ },
+ "notify": {
+ "activityLog": "Логи активностей",
+ "backupComplete": "Бекап успішно завершено для сервера {}",
+ "backupStarted": "Бекап успішно розпочато для сервера {}",
+ "downloadLogs": "Завантажити логи для підтримки?",
+ "finishedPreparing": "Ми підготували логи. Будь ласка натисніть завантажити",
+ "logout": "Вихід",
+ "preparingLogs": "Будь ласка зачекайте поки ми підготуємо для вас логи... Ми надішлемо вам сповіщення коли усе буде готово. Це може зайняти трішки часу для великих проєктів.",
+ "supportLogs": "Логи для підтримки"
+ },
+ "offline": {
+ "offline": "Оффлайн",
+ "pleaseConnect": "Будь ласка підключіться до інтернету, щоб використовувати Crafty."
+ },
+ "panelConfig": {
+ "adminControls": "Адмінський контроль",
+ "allowedServers": "Доступні сервери",
+ "apply": "Застосувати",
+ "assignedRoles": "Призначені ролі",
+ "cancel": "Відмінити",
+ "clearComms": "Очистити невиконані команди",
+ "custom": "Кастомізація Crafty",
+ "delete": "Видалити",
+ "edit": "Редагувати",
+ "enableLang": "Увімкнути усі мови",
+ "enabled": "Увімкненно",
+ "globalExplain": "Де Crafty зберігає усі файли сервера (Шлях до серверів можна знайти за допомогою /servers/[uuid сервера])",
+ "globalServer": "Глобальна папка серверів",
+ "json": "Config.json",
+ "match": "Паролі мають співпадати",
+ "newRole": "Додати нову роль",
+ "newUser": "Додати нового користувача",
+ "noMounts": "Show no Mounts on Dash",
+ "pageTitle": "Панель конфігурації",
+ "role": "Роль",
+ "roleUsers": "Ролі юзерів",
+ "roles": "Ролі",
+ "save": "Зберегти",
+ "select": "Вибрати",
+ "superConfirm": "Продовжуйте, лише якщо ви хочете, щоб цей користувач мав доступ до ВСЬОГО (усіх облікових записів користувачів, серверів, налаштувань панелі тощо). Вони навіть можуть відкликати ваші права суперкористувача. Оберігайтесь Шахраїв!",
+ "superConfirmTitle": "Активувати суперюзера? Ви впевненні?",
+ "title": "Конфігурація Crafty",
+ "user": "Користувач",
+ "users": "Користувачі"
+ },
+ "rolesConfig": {
+ "config": "Конфігурація ролей",
+ "configDesc": "Тут ви можете змінити конфігурацію своєї ролі",
+ "configUpdate": "Востаннє оновлено: ",
+ "created": "Створено: ",
+ "delRole": "Видалити роль",
+ "doesNotExist": "Ви не можете видалити те, чого не існує!",
+ "pageTitle": "Редагувати роль",
+ "pageTitleNew": "Нова роль",
+ "permAccess": "Доступ?",
+ "permName": "Назва прав",
+ "permsServer": "Дозволи, які ця роль має для вказаних серверів",
+ "roleConfigArea": "Область конфігурації ролі",
+ "roleDesc": "Як ви хочете називати цю роль?",
+ "roleName": "Назва ролі: ",
+ "rolePerms": "Права ролі",
+ "roleServers": "Доступні сервери",
+ "roleTitle": "Налаштування ролі",
+ "roleUserName": "Назва користувача",
+ "roleUsers": "Ролі користувачів: ",
+ "selectManager": "Виберіть менеджера для цієї ролі",
+ "serverAccess": "Доступ?",
+ "serverName": "Назва сервера",
+ "serversDesc": "сервери які доступні для цієї ролі"
+ },
+ "serverBackups": {
+ "after": "Виконати команду після завершення бекапу",
+ "backupAtMidnight": "Авто-бекап опівночі?",
+ "backupNow": "Запустити бекап!",
+ "backupTask": "Бекап запущено.",
+ "before": "Виконати команду перед початком бекапу",
+ "cancel": "Відмінити",
+ "clickExclude": "Додати винятки",
+ "compress": "Стиснути бекап",
+ "confirm": "Прийняти",
+ "confirmDelete": "Ви дійсно бажаєте видати бекап? Ця дія незворотня.",
+ "confirmRestore": "Ви впевненні що бажаєте відновити даний бекап? При відновленні сервер буде вимкнуто та відновлено за допомогою даного бекапу, минулі файли будуть втрачені!",
+ "currentBackups": "Поточні бекапи",
+ "delete": "Видалити",
+ "destroyBackup": "Видалити бекап \" + file_to_del + \"?",
+ "download": "Завантажити",
+ "excludedBackups": "Винятки: ",
+ "excludedChoose": "Виберіть папки які бажаєте додати у винятки",
+ "exclusionsTitle": "Бекап винятки",
+ "maxBackups": "Максимум бекапів",
+ "maxBackupsDesc": "Crafty не зможе зберігати більше ніж N бекапів, видалятиме старі (введіть 0 для зберігання усіх бекапів)",
+ "options": "Налаштування",
+ "path": "Шлях",
+ "restore": "Відновити",
+ "restoring": "Відновлення бекапу. Це може зайняти деякий час. Будь ласка будьте терплячі.",
+ "save": "Зберегти",
+ "shutdown": "Вимикати сервер на час бекапу",
+ "size": "Розмір",
+ "storageLocation": "Місце зберігання",
+ "storageLocationDesc": "Де ви бажаєте зберігати бекапи?"
+ },
+ "serverConfig": {
+ "bePatientDelete": "Будь ласка зачекайте поки Crafty видалить сервер з панелі. Ця сторінка закриється через кілька секунд.",
+ "bePatientDeleteFiles": "Будь ласка зачекайте поки Crafty видалить сервер з панелі та видалить усі його файли. Ця сторінка закриється через кілька секунд.",
+ "bePatientUpdate": "Please be patient while we update the server. Download times can vary depending upon your internet speeds.
This screen will refresh in a moment",
+ "cancel": "Відміна",
+ "countPlayers": "Враховувати сервер до загальної кількості гравців",
+ "crashTime": "Краш таймаут",
+ "crashTimeDesc": "Скільки часу чекати, перш ніж ми вважатимемо, що ваш сервер крашнувся?",
+ "deleteFilesQuestion": "Видалити файли сервера з машини?",
+ "deleteFilesQuestionMessage": "Чи бажаєте щоб Crafty видалив усі сервери та файли до них з машини?
Включаючи бекапи.",
+ "deleteServer": "Видалити сервер",
+ "deleteServerQuestion": "Видалити сервер?",
+ "deleteServerQuestionMessage": "Ви впевнені що бажаєте видалити сервер? Назад вороття не буде...",
+ "exeUpdateURL": "URL-адреса оновлення сервера",
+ "exeUpdateURLDesc": "Пряме посилання для завантаження оновлень.",
+ "ignoredExits": "Ігнорувати дані коди помилок",
+ "ignoredExitsExplain": "Коди виходу виявлення крашу сервера Crafty має ігнорувати як звичайну «зупинку» (розділені комами)",
+ "javaNoChange": "Автоматичний вибір",
+ "javaVersion": "Вибрати іншу Java версію",
+ "javaVersionDesc": "Якщо ви збираєтеся замінити Java, переконайтеся, що ваш поточний шлях Java у «команді виконання» взято в лапки (за замовчуванням змінна «java» виключена)",
+ "noDelete": "Ні, повернутись назад",
+ "noDeleteFiles": "Ні, видалити тільки з панелі",
+ "removeOldLogsAfter": "Видалити старі логи після",
+ "removeOldLogsAfterDesc": "Скільки днів має пройти щоб видалити старі логи? (0 це вимкненно)",
+ "save": "Зберегти",
+ "sendingDelete": "Видалення сервера",
+ "sendingRequest": "Надсилання вашого запиту...",
+ "serverAutoStart": "Сервер Авто-старт",
+ "serverAutostartDelay": "Сервер Авто-старт затримка",
+ "serverAutostartDelayDesc": "Затримка Авто-старту сервера (Якщо увімкнуто раніше)",
+ "serverCrashDetection": "Детектор крашу сервера",
+ "serverExecutable": "Виконуваний файл Серверу",
+ "serverExecutableDesc": "Це виконуваний файл для запуску сервера",
+ "serverExecutionCommand": "Виконувана команда запуску сервера",
+ "serverExecutionCommandDesc": "Буде запущено у прихованому терміналі",
+ "serverIP": "IP-адреса сервера",
+ "serverIPDesc": "IP-адреса Crafty для статистики (Спробуй справжню IP-адресу, або 127.0.0.1 якщо маєте проблеми)",
+ "serverLogLocation": "Логи сервера",
+ "serverLogLocationDesc": "Шлях до логів сервера",
+ "serverName": "Назва сервера",
+ "serverNameDesc": "Як назвати даний сервер?",
+ "serverPath": "Робоча папка сервера",
+ "serverPathDesc": "Повний шлях до папки сервера (не посилання на виконуваний файл)",
+ "serverPort": "Порт сервера",
+ "serverPortDesc": "Цей порт призначений для статистики Crafty",
+ "serverStopCommand": "Команда зупинки сервера",
+ "serverStopCommandDesc": "Команда яка буде надсилатись, щоб зупинити сервер",
+ "showStatus": "Показувати на публічній сторінці статус",
+ "shutdownTimeout": "Час відклику зупинки",
+ "statsHint1": "Цей порт на якому працює сервер. Це потрібно лиш для того щоб Crafty міг виводити статистику для цього сервера.",
+ "statsHint2": "Це не змінює порт вашого сервера. Ви мусите власноруч змінити налаштування в server.properties або іншому конфігураційному файлі.",
+ "stopBeforeDeleting": "Будь ласка зупиніть сервер перед тим як видаляти його",
+ "timeoutExplain1": "Скільки Crafty має чекати вимкнення вашого сервера після запуску",
+ "timeoutExplain2": "команди перед тим як примусово його вимкнути?",
+ "update": "Оновити виконуваний файл",
+ "yesDelete": "Так, видалити",
+ "yesDeleteFiles": "Так, видалити файли"
+ },
+ "serverConfigHelp": {
+ "desc": "Тут можна змінити конфігурацію вашого сервера.",
+ "perms": [
+ "Рекомендовано НЕ
змінювати шлях до сервера який створив Crafty.",
+ "Зміна шляхів МОЖЕ
зламати щось, особливо в операційних системах типу Linux, де дозволи на файли більш заблоковані.",
+ "
",
+ "Якщо ви вважаєте, що потрібно змінити шлях до сервера, ви можете це зробити, але обов'язково надайте \"crafty\" користувачеві дозвіл читати/записувати шлях до сервера.",
+ "
",
+ "
",
+ "У Linux це найкраще зробити, виконавши наступне:
",
+ "",
+ " sudo chown crafty:crafty /шлях/до/вашого/сервера -R
",
+ " sudo chmod 2775 /шлях/до/вашого/сервера -R
",
+ "
"
+ ],
+ "title": "Область конфігурації сервера"
+ },
+ "serverDetails": {
+ "backup": "Бекап",
+ "config": "Конфігурація",
+ "files": "Файли",
+ "filter": "Фільтри логів",
+ "filterList": "Відфільтровані слова",
+ "logs": "Логи",
+ "metrics": "Графік",
+ "playerControls": "Керування Гравцями",
+ "reset": "Повернутись нагору",
+ "schedule": "Розклад",
+ "serverDetails": "Деталі сервера",
+ "terminal": "Термінал"
+ },
+ "serverFiles": {
+ "clickUpload": "Натисність тут щоб обрати ваші файли",
+ "close": "Закрити",
+ "createDir": "Створити папку",
+ "createDirQuestion": "Як назвати створену вашу директорію?",
+ "createFile": "Створити файл",
+ "createFileQuestion": "Як назвати створений вами файл?",
+ "default": "За замовчуванням",
+ "delete": "Видалити",
+ "deleteItemQuestion": "Ви впевнені що бажаєте видалити \" + name + \"?",
+ "deleteItemQuestionMessage": "Ви видаляєте \\\"\" + path + \"\\\"!
Це незворотня дія!",
+ "download": "Завантажити",
+ "editingFile": "Редагувати файл",
+ "error": "Помилка отримання файлів",
+ "fileReadError": "Помилка читання файлу",
+ "files": "Файли",
+ "keybindings": "Прив'язки клавіш",
+ "loadingRecords": "Завантаження файлів...",
+ "noDelete": "Ні",
+ "noscript": "Файловий менеджер не працює без JavaScript",
+ "rename": "Перейменувати",
+ "renameItemQuestion": "Яка нова назва файлу?",
+ "save": "Зберегти",
+ "size": "Перемкнути розмір редактора",
+ "stayHere": "НЕ ВИХОДЬТЕ З ЦІЄЇ СТОРІНКИ!",
+ "unsupportedLanguage": "Увага: Цей файл не підтримується",
+ "unzip": "Розархівувати",
+ "upload": "Вивантажити",
+ "uploadTitle": "Вивантажити файл до: ",
+ "waitUpload": "Будь ласка зачекати поки ми завантажимо вибрані файли... Це займе трішки часу.",
+ "yesDelete": "Так, я розумію наслідки"
+ },
+ "serverMetrics": {
+ "resetZoom": "Скинути приближення",
+ "zoomHint1": "Щоб збільшити графік, утримуйте клавішу Shift, а потім використовуйте колесо прокручування.",
+ "zoomHint2": "Або утримуйте клавішу Shift, а потім клацніть і перетягніть область, яку ви хочете збільшити."
+ },
+ "serverPlayerManagement": {
+ "bannedPlayers": "Заблоковані користувачі",
+ "loadingBannedPlayers": "Завантаження заблокованих користувачів",
+ "players": "Користувачі"
+ },
+ "serverScheduleConfig": {
+ "backup": "Бекап серверу",
+ "basic": "Базова",
+ "children": "Зв’язані дочірні завдання: ",
+ "command": "Команда",
+ "command-explain": "Яку команду потрібно виконати? Не враховується '/'",
+ "cron": "Cron",
+ "cron-explain": "Введіть свій рядок cron -- ПРИМІТКА: 0 = понеділок в останньому варіанті.",
+ "custom": "Користувацька команда",
+ "days": "Дні",
+ "enabled": "Увімкнути",
+ "hours": "Години",
+ "interval": "Інтервал",
+ "interval-explain": "Як часто ви хочете виконувати це заплановане завдання?",
+ "minutes": "Хвилини",
+ "offset": "Зсув затримки",
+ "offset-explain": "Скільки часу ми повинні чекати, щоб запустити це після запуску першого завдання? (Секунди)",
+ "one-time": "Видалити після виконання",
+ "parent": "Виберіть батьківське відкладене завдання",
+ "parent-explain": "Який з інших завдань має викликати цей?",
+ "reaction": "Реакція",
+ "restart": "Перезавантаження сервера",
+ "select": "Базова / Cron / Ланцюгова реакція",
+ "start": "Старт серверу",
+ "stop": "Вимкнення серверу",
+ "time": "Час",
+ "time-explain": "О котрій годині ви хочете виконувати свій розклад?"
+ },
+ "serverSchedules": {
+ "action": "Дія",
+ "areYouSure": "Видалити заплановане завдання?",
+ "cancel": "Відмінити",
+ "cannotSee": "Нічого не бачите?",
+ "cannotSeeOnMobile": "Спробуйте натиснути на заплановане завдання щоб побачити деталі.",
+ "child": "Дочірнє заплановане завдання, його ID ",
+ "close": "Закрити",
+ "command": "Команда",
+ "confirm": "Прийняти",
+ "confirmDelete": "Ви впевненні що бажаєте видалити дане заплановане завдання? Це незворотня дія.",
+ "create": "Створити нове заплановане завдання",
+ "cron": "Cron рядок",
+ "delete": "Видалити",
+ "details": "Деталі запланованих завдань",
+ "edit": "Редагувати",
+ "enabled": "Увімкнуто",
+ "every": "Кожен",
+ "interval": "Інтервал",
+ "name": "Назва",
+ "newSchedule": "Нове завдання",
+ "nextRun": "Настуне виконання",
+ "no": "Ні",
+ "no-schedule": "Зараз жодного запланованого завдання для цього сервера, щоб розпочати натисніть",
+ "scheduledTasks": "Заплановані завдання",
+ "yes": "Так"
+ },
+ "serverStats": {
+ "cpuUsage": "Використання Процесора",
+ "description": "Опис",
+ "errorCalculatingUptime": "Підрахунок помилок аптайму",
+ "memUsage": "Використання ОПЗ",
+ "offline": "Оффлайн",
+ "online": "Онлайн",
+ "players": "Гравці",
+ "serverStarted": "Сервер запущено",
+ "serverStatus": "Статус сервера",
+ "serverTime": "UTC час",
+ "serverTimeZone": "Часовий пояс серверу",
+ "serverUptime": "Аптайм сервера",
+ "starting": "Відкладений запуск",
+ "unableToConnect": "Неможливо підключитись",
+ "version": "Версія"
+ },
+ "serverTerm": {
+ "commandInput": "Введіть команду",
+ "delay-explained": "Сервіс/агент щойно запустився і потрібно трішки часу для початку старту серверів",
+ "importing": "Імпортування...",
+ "installing": "Встановлення...",
+ "restart": "Рестарт",
+ "sendCommand": "Надіслати",
+ "start": "Старт",
+ "starting": "Відкладений старт",
+ "stop": "Стоп",
+ "stopScroll": "Зупинити автоматичне прокручування",
+ "updating": "Оновлення..."
+ },
+ "serverWizard": {
+ "absoluteServerPath": "Повний шлях до папки сервера",
+ "absoluteZipPath": "Повний шлях до архіву сервера",
+ "addRole": "Додати сервер до Наявної ролі(-ей)",
+ "autoCreate": "Якщо жоден не вибраний, Crafty зробить один!",
+ "bePatient": "Будь ласка зачекайте поки ми ' + (importing ? 'імпортуємо' : 'завантажуємо') + ' сервер",
+ "buildServer": "Зібрати сервер!",
+ "clickRoot": "Натисність щоб обрати корневу директорію сервера",
+ "close": "Закрити",
+ "defaultPort": "25565 за замовчуванням",
+ "downloading": "Завантажується сервер...",
+ "explainRoot": "Натисніть кнопку нижче, щоб вибрати кореневий каталог вашого сервера всередині архіву",
+ "importServer": "Імпортувати готовий сервер",
+ "importServerButton": "Імпортувати сервер!",
+ "importZip": "Імпортувати з Архіву(Zip) ",
+ "importing": "Імпортування сервера...",
+ "labelZipFile": "Виберіть архів (Zip)",
+ "maxMem": "Максимум пам'яті",
+ "minMem": "Мінімум пам'яті",
+ "myNewServer": "Мій новий сервер (краще називати латиницею)",
+ "newServer": "Створити новий сервер",
+ "quickSettings": "Швидкі налаштування",
+ "quickSettingsDescription": "Не хвилюйтесь, ви можете це змінити це пізніше",
+ "resetForm": "Скинути форму",
+ "save": "Зберегти",
+ "selectRole": "Вибрати роль(-і)",
+ "selectRoot": "Вибрати корневу папку архіву",
+ "selectServer": "Вибрати сервер",
+ "selectType": "Типи серверів (Ваніла, Ванільні з плагінами, Модові, інші)",
+ "selectVersion": "Вибрати версію",
+ "selectZipDir": "Виберіть каталог в архіві, з якого ви хочете розархівувати файли",
+ "serverJar": "Виконуваний файл серверу (.jar)",
+ "serverName": "Назва серверу",
+ "serverPath": "Шлях сервера",
+ "serverPort": "Порт сервера",
+ "serverSelect": "Вибрати сервер",
+ "serverType": "Тип серверу",
+ "serverUpload": "Вивантажити архівований сервер",
+ "serverVersion": "Версія сервера",
+ "sizeInGB": "Об'єм пам'яті в ГБ",
+ "uploadButton": "Вивантажити",
+ "uploadZip": "Вивантажити архів(.zip) для імпорту сервера",
+ "zipPath": "Шлях архіву сервера"
+ },
+ "sidebar": {
+ "contribute": "Внести свій внесок",
+ "credits": "Подяка",
+ "dashboard": "Панель",
+ "documentation": "Документація",
+ "inApp": "Швидка документація",
+ "navigation": "Навігація",
+ "newServer": "Створити новий сервер",
+ "servers": "Сервери"
+ },
+ "startup": {
+ "almost": "Закінчуємо. Тримайся міцніше...",
+ "internals": "Налаштування та запуск внутрішніх компонентів Crafty ",
+ "internet": "Перевірка доступу до інтернету",
+ "server": "Ініціалізація ",
+ "serverInit": "Ініціалізація серверів",
+ "starting": "Crafty запускається...",
+ "tasks": "Запуск відкладених завдань"
+ },
+ "userConfig": {
+ "apiKey": "API Ключі",
+ "auth": "Авторизовані? ",
+ "config": "Конфігурація",
+ "configArea": "Область конфігурації користувача",
+ "configAreaDesc": "Тут ви можете змінити всі налаштування користувача",
+ "confirmDelete": "Ви впевненні що бажаєте видалити даного користувача? Це незворотня дія.",
+ "craftyPermDesc": "Дозволи Crafty для цього користувача",
+ "craftyPerms": "Доступ Crafty: ",
+ "created": "Створений: ",
+ "delSuper": "Ви не можете видалити суперюзера!",
+ "deleteUser": "Видалити користувача: ",
+ "deleteUserB": "Видалити користувача",
+ "enabled": "Увімкнуто",
+ "gravDesc": "Цей електронний лист призначений виключно для використання з Gravatar™. Crafty ні за яких обставин не використовуватиме цю електронну пошту для будь-яких інших цілей, крім пошуку вашого Gravatar™",
+ "gravEmail": "Gravatar™ пошта",
+ "lastIP": "Остання IP-адреса: ",
+ "lastLogin": "Остання авторизація: ",
+ "lastUpdate": "Останнє оновлення: ",
+ "leaveBlank": "Щоб редагувати користувача без зміни пароля, залиште це поле пустим.",
+ "manager": "Менеджер",
+ "member": "Учасник?",
+ "notExist": "Ви не можете видалити те, чого не існує!",
+ "pageTitle": "Редагувати користувача",
+ "pageTitleNew": "Створити користувача",
+ "password": "Новий пароль",
+ "permName": "Назва дозволу",
+ "repeat": "Підтвердити пароль",
+ "roleName": "Назва ролі",
+ "selectManager": "Вказати менеджера для цього користувача",
+ "super": "СуперЮзер",
+ "userLang": "Мова користувача",
+ "userName": "Ім'я користувача",
+ "userNameDesc": "Як ви хочете назвати даного користувача?",
+ "userRoles": "Ролі користувача",
+ "userRolesDesc": "Виберіть ролі до яких належить користувач.",
+ "userSettings": "Налаштування користувача",
+ "userTheme": "Тема інтерфейсу",
+ "uses": "Дозволена кількість використань(-1==Без ліміту)"
+ },
+ "webhooks": {
+ "areYouSureDel": "Ви впевнені, що хочете видалити цей Вебхук?",
+ "areYouSureRun": "Ви впевнені, що хочете перевірити цей Вебхук?",
+ "backup_server": "Бекап серверу завершено!",
+ "bot_name": "Назва бота",
+ "color": "Вибрати колір",
+ "crash_detected": "Сервер впав",
+ "edit": "Редагувати",
+ "enabled": "Увімкнуто",
+ "jar_update": "Виконуваний файл сервера оновлено",
+ "kill": "Сервер вбито",
+ "name": "Назва",
+ "new": "Новий Вебхук",
+ "newWebhook": "Новий Вебхук",
+ "no-webhook": "Зараз для цього сервера немає Вебхуків. Щоб почати, натисніть",
+ "run": "Тестовий запуск Вебхука",
+ "send_command": "Серверну команду отримано",
+ "start_server": "Сервер запущено",
+ "stop_server": "Сервер зупинено",
+ "trigger": "Тріггер",
+ "type": "Тип Вебхуку",
+ "url": "URL-адреса Вебхука",
+ "webhook_body": "Код Вебхука",
+ "webhooks": "Вебхуки"
+ }
+}
diff --git a/app/translations/zh_CN.json b/app/translations/zh_CN.json
index b8689b2a..ffac7b3b 100644
--- a/app/translations/zh_CN.json
+++ b/app/translations/zh_CN.json
@@ -327,6 +327,7 @@
"bePatientDeleteFiles": "请耐心等待,我们正在从 Crafty 面板中移除服务器并删除所有文件。稍后此页面会关闭。",
"bePatientUpdate": "请耐心等待,我们正在更新服务器。下载时长可能因您的网络速度而异。
稍后此页面会刷新",
"cancel": "取消",
+ "countPlayers": "在玩家总数中包含服务器",
"crashTime": "崩溃超时",
"crashTimeDesc": "我们应该在考虑您的服务器已崩溃之前等待多久?",
"deleteFilesQuestion": "从设备上删除服务器文件?",