mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Merge branch 'dev' into refactor/server_ids
This commit is contained in:
commit
56d37989e5
18
CHANGELOG.md
18
CHANGELOG.md
@ -1,13 +1,23 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
## --- [4.2.3] - 2023/TBD
|
## --- [4.2.3] - 2023/TBD
|
||||||
### New features
|
### New features
|
||||||
TBD
|
- 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
|
### Bug fixes
|
||||||
TBD
|
- 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))
|
||||||
|
- Fix indent on public status check box ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/691))
|
||||||
|
- Fix unicode chars in terminal & logs w/ textiowrapper ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/689))
|
||||||
|
- Provide feedback on file delete failure ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/699))
|
||||||
|
- Fix bug where audit log would show 0 for any stdin sent to the server ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/700))
|
||||||
### Tweaks
|
### Tweaks
|
||||||
TBD
|
- 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
|
### 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))
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
## --- [4.2.2] - 2023/12/13
|
## --- [4.2.2] - 2023/12/13
|
||||||
|
@ -462,7 +462,10 @@ class ServersController(metaclass=Singleton):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def server_id_exists(server_id):
|
def server_id_exists(server_id):
|
||||||
|
try:
|
||||||
srv = ServersController().get_server_instance_by_id(server_id)
|
srv = ServersController().get_server_instance_by_id(server_id)
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
return srv.stats_helper.server_id_exists()
|
return srv.stats_helper.server_id_exists()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -12,6 +12,7 @@ from app.classes.minecraft.bedrock_ping import BedrockPing
|
|||||||
from app.classes.shared.console import Console
|
from app.classes.shared.console import Console
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
MOTD_CODES = ["bold", "italic", "underlined", "strikethrough"]
|
||||||
|
|
||||||
|
|
||||||
class Server:
|
class Server:
|
||||||
@ -34,18 +35,19 @@ class Server:
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
description = self.description
|
description = self.description
|
||||||
|
if "text" in description.keys():
|
||||||
|
lines.append(description["text"])
|
||||||
if "extra" in description.keys():
|
if "extra" in description.keys():
|
||||||
|
if isinstance(description["extra"], list):
|
||||||
for e in description["extra"]:
|
for e in description["extra"]:
|
||||||
|
if not isinstance(e, dict):
|
||||||
|
lines.append(e)
|
||||||
|
continue
|
||||||
# Conversion format code needed only for Java Version
|
# Conversion format code needed only for Java Version
|
||||||
lines.append(get_code_format("reset"))
|
lines.append(get_code_format("reset"))
|
||||||
if "bold" in e.keys():
|
for item in MOTD_CODES:
|
||||||
lines.append(get_code_format("bold"))
|
if e.get(item, False):
|
||||||
if "italic" in e.keys():
|
lines.append(get_code_format(item))
|
||||||
lines.append(get_code_format("italic"))
|
|
||||||
if "underlined" in e.keys():
|
|
||||||
lines.append(get_code_format("underlined"))
|
|
||||||
if "strikethrough" in e.keys():
|
|
||||||
lines.append(get_code_format("strikethrough"))
|
|
||||||
if "color" in e.keys():
|
if "color" in e.keys():
|
||||||
lines.append(get_code_format(e["color"]))
|
lines.append(get_code_format(e["color"]))
|
||||||
# Then append the text
|
# Then append the text
|
||||||
|
@ -11,12 +11,18 @@ from app.classes.models.server_permissions import PermissionsServers
|
|||||||
from app.classes.shared.websocket_manager import WebSocketManager
|
from app.classes.shared.websocket_manager import WebSocketManager
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
PAPERJARS = ["paper", "folia"]
|
||||||
|
|
||||||
|
|
||||||
class ServerJars:
|
class ServerJars:
|
||||||
def __init__(self, helper):
|
def __init__(self, helper):
|
||||||
self.helper = helper
|
self.helper = helper
|
||||||
self.base_url = "https://serverjars.com"
|
self.base_url = "https://serverjars.com"
|
||||||
|
self.paper_base = "https://api.papermc.io"
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_paper_jars():
|
||||||
|
return PAPERJARS
|
||||||
|
|
||||||
def _get_api_result(self, call_url: str):
|
def _get_api_result(self, call_url: str):
|
||||||
full_url = f"{self.base_url}{call_url}"
|
full_url = f"{self.base_url}{call_url}"
|
||||||
@ -38,6 +44,40 @@ class ServerJars:
|
|||||||
|
|
||||||
return api_response
|
return api_response
|
||||||
|
|
||||||
|
def get_paper_versions(self, project):
|
||||||
|
try:
|
||||||
|
response = requests.get(
|
||||||
|
f"{self.paper_base}/v2/projects/{project}/", timeout=2
|
||||||
|
)
|
||||||
|
response.raise_for_status()
|
||||||
|
api_data = json.loads(response.content)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(
|
||||||
|
f"Unable to load https://api.papermc.io/v2/projects/{project}/"
|
||||||
|
f"api due to error: {e}"
|
||||||
|
)
|
||||||
|
return {}
|
||||||
|
versions = api_data.get("versions", [])
|
||||||
|
versions.reverse()
|
||||||
|
return versions
|
||||||
|
|
||||||
|
def get_paper_build(self, project, version):
|
||||||
|
try:
|
||||||
|
response = requests.get(
|
||||||
|
f"{self.paper_base}/v2/projects/{project}/versions/{version}/builds/",
|
||||||
|
timeout=2,
|
||||||
|
)
|
||||||
|
response.raise_for_status()
|
||||||
|
api_data = json.loads(response.content)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(
|
||||||
|
f"Unable to load https://api.papermc.io/v2/projects/{project}/"
|
||||||
|
f"api due to error: {e}"
|
||||||
|
)
|
||||||
|
return {}
|
||||||
|
build = api_data.get("builds", [])[-1]
|
||||||
|
return build
|
||||||
|
|
||||||
def _read_cache(self):
|
def _read_cache(self):
|
||||||
cache_file = self.helper.serverjar_cache
|
cache_file = self.helper.serverjar_cache
|
||||||
cache = {}
|
cache = {}
|
||||||
@ -95,6 +135,8 @@ class ServerJars:
|
|||||||
for j in data["types"].get(s):
|
for j in data["types"].get(s):
|
||||||
versions = self._get_jar_details(j, s)
|
versions = self._get_jar_details(j, s)
|
||||||
data["types"][s].update({j: versions})
|
data["types"][s].update({j: versions})
|
||||||
|
for item in PAPERJARS:
|
||||||
|
data["types"]["servers"][item] = self.get_paper_versions(item)
|
||||||
# save our cache
|
# save our cache
|
||||||
try:
|
try:
|
||||||
with open(cache_file, "w", encoding="utf-8") as f:
|
with open(cache_file, "w", encoding="utf-8") as f:
|
||||||
@ -133,6 +175,8 @@ class ServerJars:
|
|||||||
for j in data["types"].get(s):
|
for j in data["types"].get(s):
|
||||||
versions = self._get_jar_details(j, s)
|
versions = self._get_jar_details(j, s)
|
||||||
data["types"][s].update({j: versions})
|
data["types"][s].update({j: versions})
|
||||||
|
for item in PAPERJARS:
|
||||||
|
data["types"]["servers"][item] = self.get_paper_versions(item)
|
||||||
# save our cache
|
# save our cache
|
||||||
try:
|
try:
|
||||||
with open(cache_file, "w", encoding="utf-8") as f:
|
with open(cache_file, "w", encoding="utf-8") as f:
|
||||||
@ -171,7 +215,17 @@ class ServerJars:
|
|||||||
def a_download_jar(self, jar, server, version, path, server_id):
|
def a_download_jar(self, jar, server, version, path, server_id):
|
||||||
# delaying download for server register to finish
|
# delaying download for server register to finish
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
|
if server not in PAPERJARS:
|
||||||
fetch_url = f"{self.base_url}/api/fetchJar/{jar}/{server}/{version}"
|
fetch_url = f"{self.base_url}/api/fetchJar/{jar}/{server}/{version}"
|
||||||
|
else:
|
||||||
|
build = self.get_paper_build(server, version).get("build", None)
|
||||||
|
if not build:
|
||||||
|
return
|
||||||
|
fetch_url = (
|
||||||
|
f"{self.paper_base}/v2/projects"
|
||||||
|
f"/{server}/versions/{version}/builds/{build}/downloads/"
|
||||||
|
f"{server}-{version}-{build}.jar"
|
||||||
|
)
|
||||||
server_users = PermissionsServers.get_server_user_list(server_id)
|
server_users = PermissionsServers.get_server_user_list(server_id)
|
||||||
|
|
||||||
# We need to make sure the server is registered before
|
# We need to make sure the server is registered before
|
||||||
|
@ -45,6 +45,7 @@ class Servers(BaseModel):
|
|||||||
# created_by = ForeignKeyField(Users, backref="creator_server", null=True)
|
# created_by = ForeignKeyField(Users, backref="creator_server", null=True)
|
||||||
shutdown_timeout = IntegerField(default=60)
|
shutdown_timeout = IntegerField(default=60)
|
||||||
ignored_exits = CharField(default="0")
|
ignored_exits = CharField(default="0")
|
||||||
|
count_players = BooleanField(default=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
table_name = "servers"
|
table_name = "servers"
|
||||||
|
@ -35,8 +35,9 @@ class FileHelpers:
|
|||||||
try:
|
try:
|
||||||
# This removes the top-level folder:
|
# This removes the top-level folder:
|
||||||
path.rmdir()
|
path.rmdir()
|
||||||
except:
|
except Exception as e:
|
||||||
logger.error("Unable to remove top level")
|
logger.error("Unable to remove top level")
|
||||||
|
return e
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -47,9 +48,9 @@ class FileHelpers:
|
|||||||
# Remove the file
|
# Remove the file
|
||||||
os.remove(path)
|
os.remove(path)
|
||||||
return True
|
return True
|
||||||
except FileNotFoundError:
|
except (FileNotFoundError, PermissionError) as e:
|
||||||
logger.error(f"Path specified is not a file or does not exist. {path}")
|
logger.error(f"Path specified is not a file or does not exist. {path}")
|
||||||
return False
|
return e
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def copy_dir(src_path, dest_path, dirs_exist_ok=False):
|
def copy_dir(src_path, dest_path, dirs_exist_ok=False):
|
||||||
|
@ -536,10 +536,14 @@ class Controller:
|
|||||||
if data["create_type"] == "minecraft_java":
|
if data["create_type"] == "minecraft_java":
|
||||||
if root_create_data["create_type"] == "download_jar":
|
if root_create_data["create_type"] == "download_jar":
|
||||||
# modded update urls from server jars will only update the installer
|
# modded update urls from server jars will only update the installer
|
||||||
if create_data["category"] != "modded":
|
if (
|
||||||
|
create_data["category"] != "modded"
|
||||||
|
and create_data["type"] not in ServerJars.get_paper_jars()
|
||||||
|
):
|
||||||
server_obj = self.servers.get_server_obj(new_server_id)
|
server_obj = self.servers.get_server_obj(new_server_id)
|
||||||
url = (
|
url = (
|
||||||
f"https://serverjars.com/api/fetchJar/{create_data['category']}"
|
"https://serverjars.com/api/fetchJar/"
|
||||||
|
f"{create_data['category']}"
|
||||||
f"/{create_data['type']}/{create_data['version']}"
|
f"/{create_data['type']}/{create_data['version']}"
|
||||||
)
|
)
|
||||||
server_obj.executable_update_url = url
|
server_obj.executable_update_url = url
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from contextlib import redirect_stderr
|
from contextlib import redirect_stderr
|
||||||
import os
|
import os
|
||||||
|
import io
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import time
|
import time
|
||||||
@ -43,6 +44,7 @@ with redirect_stderr(NullWriter()):
|
|||||||
from psutil import NoSuchProcess
|
from psutil import NoSuchProcess
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
SUCCESSMSG = "SUCCESS! Forge install completed"
|
||||||
|
|
||||||
|
|
||||||
def callback(called_func):
|
def callback(called_func):
|
||||||
@ -115,14 +117,17 @@ class ServerOutBuf:
|
|||||||
ServerOutBuf.lines[self.server_id].pop(0)
|
ServerOutBuf.lines[self.server_id].pop(0)
|
||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
|
text_wrapper = io.TextIOWrapper(
|
||||||
|
self.proc.stdout, encoding="UTF-8", errors="ignore", newline=""
|
||||||
|
)
|
||||||
while True:
|
while True:
|
||||||
if self.proc.poll() is None:
|
if self.proc.poll() is None:
|
||||||
char = self.proc.stdout.read(1).decode("utf-8", "ignore")
|
char = text_wrapper.read(1) # modified
|
||||||
# TODO: we may want to benchmark reading in blocks and userspace
|
# TODO: we may want to benchmark reading in blocks and userspace
|
||||||
# processing it later, reads are kind of expensive as a syscall
|
# processing it later, reads are kind of expensive as a syscall
|
||||||
self.process_byte(char)
|
self.process_byte(char)
|
||||||
else:
|
else:
|
||||||
flush = self.proc.stdout.read().decode("utf-8", "ignore")
|
flush = text_wrapper.read() # modified
|
||||||
for char in flush:
|
for char in flush:
|
||||||
self.process_byte(char)
|
self.process_byte(char)
|
||||||
break
|
break
|
||||||
@ -723,10 +728,11 @@ class ServerInstance:
|
|||||||
f' -jar "{file_name}" nogui'
|
f' -jar "{file_name}" nogui'
|
||||||
)
|
)
|
||||||
server_obj.execution_command = execution_command
|
server_obj.execution_command = execution_command
|
||||||
Console.debug("SUCCESS! Forge install completed")
|
Console.debug(SUCCESSMSG)
|
||||||
|
|
||||||
else:
|
elif version_major <= 1 and version_minor < 20:
|
||||||
# NEW VERSION >= 1.17
|
# NEW VERSION >= 1.17 and <= 1.20
|
||||||
|
# (no jar file in server dir, only run.bat and run.sh)
|
||||||
|
|
||||||
run_file_path = ""
|
run_file_path = ""
|
||||||
if self.helper.is_os_windows():
|
if self.helper.is_os_windows():
|
||||||
@ -770,7 +776,38 @@ class ServerInstance:
|
|||||||
f" {server_command[4]}"
|
f" {server_command[4]}"
|
||||||
)
|
)
|
||||||
server_obj.execution_command = execution_command
|
server_obj.execution_command = execution_command
|
||||||
Console.debug("SUCCESS! Forge install completed")
|
Console.debug(SUCCESSMSG)
|
||||||
|
else:
|
||||||
|
# NEW VERSION >= 1.20
|
||||||
|
# (executable jar is back in server dir)
|
||||||
|
|
||||||
|
# Retrieving the executable jar filename
|
||||||
|
file_path = glob.glob(
|
||||||
|
f"{server_obj.path}/forge-{version[0][0]}*.jar"
|
||||||
|
)[0]
|
||||||
|
file_name = re.findall(
|
||||||
|
r"(forge-[\-0-9.]+-shim.jar)",
|
||||||
|
file_path,
|
||||||
|
)[0]
|
||||||
|
|
||||||
|
# Let's set the proper server executable
|
||||||
|
server_obj.executable = os.path.join(file_name)
|
||||||
|
|
||||||
|
# Get memory values
|
||||||
|
memory_values = re.findall(
|
||||||
|
r"-Xms([A-Z0-9\.]+) -Xmx([A-Z0-9\.]+)",
|
||||||
|
server_obj.execution_command,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Now lets set up the new run command.
|
||||||
|
# This is based off the run.sh/bat that
|
||||||
|
# Forge uses in 1.17 and <
|
||||||
|
execution_command = (
|
||||||
|
f"java -Xms{memory_values[0][0]} -Xmx{memory_values[0][1]}"
|
||||||
|
f' -jar "{file_name}" nogui'
|
||||||
|
)
|
||||||
|
server_obj.execution_command = execution_command
|
||||||
|
Console.debug(SUCCESSMSG)
|
||||||
except:
|
except:
|
||||||
logger.debug("Could not find run file.")
|
logger.debug("Could not find run file.")
|
||||||
# TODO Use regex to get version and rebuild simple execution
|
# TODO Use regex to get version and rebuild simple execution
|
||||||
@ -1560,6 +1597,7 @@ class ServerInstance:
|
|||||||
"version": raw_ping_result.get("version"),
|
"version": raw_ping_result.get("version"),
|
||||||
"icon": raw_ping_result.get("icon"),
|
"icon": raw_ping_result.get("icon"),
|
||||||
"crashed": self.is_crashed,
|
"crashed": self.is_crashed,
|
||||||
|
"count_players": self.server_object.count_players,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,6 +28,18 @@ from app.classes.web.base_handler import BaseHandler
|
|||||||
from app.classes.web.webhooks.webhook_factory import WebhookFactory
|
from app.classes.web.webhooks.webhook_factory import WebhookFactory
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
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):
|
class PanelHandler(BaseHandler):
|
||||||
@ -138,6 +150,11 @@ class PanelHandler(BaseHandler):
|
|||||||
# increasing and will eat up the RAM
|
# increasing and will eat up the RAM
|
||||||
del chunk
|
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):
|
def check_server_id(self):
|
||||||
server_id = self.get_argument("id", None)
|
server_id = self.get_argument("id", None)
|
||||||
|
|
||||||
@ -489,8 +506,17 @@ class PanelHandler(BaseHandler):
|
|||||||
server_id = self.check_server_id()
|
server_id = self.check_server_id()
|
||||||
# load page the user was on last
|
# load page the user was on last
|
||||||
server_subpage = self.controller.servers.server_subpage.get(server_id, "")
|
server_subpage = self.controller.servers.server_subpage.get(server_id, "")
|
||||||
if subpage == "" and server_subpage != "":
|
if (
|
||||||
subpage = self.controller.servers.server_subpage.get(server_id, "")
|
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:
|
else:
|
||||||
self.controller.servers.server_subpage[server_id] = subpage
|
self.controller.servers.server_subpage[server_id] = subpage
|
||||||
if server_id is None:
|
if server_id is None:
|
||||||
@ -502,16 +528,6 @@ class PanelHandler(BaseHandler):
|
|||||||
page_data["backup_failed"] = server_obj.last_backup_status()
|
page_data["backup_failed"] = server_obj.last_backup_status()
|
||||||
server_obj = None
|
server_obj = None
|
||||||
|
|
||||||
valid_subpages = [
|
|
||||||
"term",
|
|
||||||
"logs",
|
|
||||||
"backup",
|
|
||||||
"config",
|
|
||||||
"files",
|
|
||||||
"admin_controls",
|
|
||||||
"schedules",
|
|
||||||
"metrics",
|
|
||||||
]
|
|
||||||
if not self.failed_server:
|
if not self.failed_server:
|
||||||
server = self.controller.servers.get_server_instance_by_id(server_id)
|
server = self.controller.servers.get_server_instance_by_id(server_id)
|
||||||
# server_data isn't needed since the server_stats also pulls server data
|
# 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()
|
page_data["get_players"] = server.get_server_players()
|
||||||
else:
|
else:
|
||||||
page_data["get_players"] = []
|
page_data["get_players"] = []
|
||||||
page_data["active_link"] = subpage
|
|
||||||
page_data["permissions"] = {
|
page_data["permissions"] = {
|
||||||
"Commands": EnumPermissionsServer.COMMANDS,
|
"Commands": EnumPermissionsServer.COMMANDS,
|
||||||
"Terminal": EnumPermissionsServer.TERMINAL,
|
"Terminal": EnumPermissionsServer.TERMINAL,
|
||||||
@ -601,83 +616,41 @@ class PanelHandler(BaseHandler):
|
|||||||
page_data["server_stats"][
|
page_data["server_stats"][
|
||||||
"server_type"
|
"server_type"
|
||||||
] = self.controller.servers.get_server_type_by_id(server_id)
|
] = 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:
|
||||||
|
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:
|
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:
|
|
||||||
self.redirect("/panel/error?error=Unauthorized access to Server")
|
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}"')
|
logger.debug(f'Subpage: "{subpage}"')
|
||||||
|
|
||||||
if subpage == "term":
|
|
||||||
if (
|
if (
|
||||||
not page_data["permissions"]["Terminal"]
|
not self.check_subpage_perms(page_data["user_permissions"], subpage)
|
||||||
in page_data["user_permissions"]
|
and not superuser
|
||||||
):
|
):
|
||||||
if not superuser:
|
return self.redirect(
|
||||||
self.redirect(
|
f"/panel/error?error=Unauthorized access to {subpage}"
|
||||||
"/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 subpage == "schedules":
|
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(
|
page_data["schedules"] = HelpersManagement.get_schedules_by_server(
|
||||||
server_id
|
server_id
|
||||||
)
|
)
|
||||||
|
|
||||||
if subpage == "config":
|
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()
|
page_data["java_versions"] = Helpers.find_java_installs()
|
||||||
server_obj: Servers = self.controller.servers.get_server_obj(server_id)
|
server_obj: Servers = self.controller.servers.get_server_obj(server_id)
|
||||||
page_data["failed"] = self.failed_server
|
page_data["failed"] = self.failed_server
|
||||||
@ -691,26 +664,7 @@ class PanelHandler(BaseHandler):
|
|||||||
page_java.append(version)
|
page_java.append(version)
|
||||||
|
|
||||||
page_data["java_versions"] = page_java
|
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 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)
|
server_info = self.controller.servers.get_server_data_by_id(server_id)
|
||||||
page_data[
|
page_data[
|
||||||
"backup_config"
|
"backup_config"
|
||||||
@ -761,15 +715,6 @@ class PanelHandler(BaseHandler):
|
|||||||
server_id, hours=(days * 24)
|
server_id, hours=(days * 24)
|
||||||
)
|
)
|
||||||
if subpage == "webhooks":
|
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[
|
page_data[
|
||||||
"webhooks"
|
"webhooks"
|
||||||
] = self.controller.management.get_webhooks_by_server(
|
] = self.controller.management.get_webhooks_by_server(
|
||||||
|
@ -237,10 +237,14 @@ class ApiServersServerFilesIndexHandler(BaseApiHandler):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if os.path.isdir(data["filename"]):
|
if os.path.isdir(data["filename"]):
|
||||||
FileHelpers.del_dirs(data["filename"])
|
proc = FileHelpers.del_dirs(data["filename"])
|
||||||
else:
|
else:
|
||||||
FileHelpers.del_file(data["filename"])
|
proc = FileHelpers.del_file(data["filename"])
|
||||||
|
# disabling pylint because return value could be truthy
|
||||||
|
# but not a true boolean value
|
||||||
|
if proc == True: # pylint: disable=singleton-comparison
|
||||||
return self.finish_json(200, {"status": "ok"})
|
return self.finish_json(200, {"status": "ok"})
|
||||||
|
return self.finish_json(500, {"status": "error", "error": str(proc)})
|
||||||
|
|
||||||
def patch(self, server_id: str):
|
def patch(self, server_id: str):
|
||||||
auth_data = self.authenticate_user()
|
auth_data = self.authenticate_user()
|
||||||
|
@ -29,6 +29,7 @@ server_patch_schema = {
|
|||||||
"logs_delete_after": {"type": "integer", "minimum": 0},
|
"logs_delete_after": {"type": "integer", "minimum": 0},
|
||||||
"ignored_exits": {"type": "string"},
|
"ignored_exits": {"type": "string"},
|
||||||
"show_status": {"type": "boolean"},
|
"show_status": {"type": "boolean"},
|
||||||
|
"count_players": {"type": "boolean"},
|
||||||
},
|
},
|
||||||
"additionalProperties": False,
|
"additionalProperties": False,
|
||||||
"minProperties": 1,
|
"minProperties": 1,
|
||||||
@ -46,6 +47,7 @@ basic_server_patch_schema = {
|
|||||||
"shutdown_timeout": {"type": "integer"},
|
"shutdown_timeout": {"type": "integer"},
|
||||||
"logs_delete_after": {"type": "integer", "minimum": 0},
|
"logs_delete_after": {"type": "integer", "minimum": 0},
|
||||||
"ignored_exits": {"type": "string"},
|
"ignored_exits": {"type": "string"},
|
||||||
|
"count_players": {"type": "boolean"},
|
||||||
},
|
},
|
||||||
"additionalProperties": False,
|
"additionalProperties": False,
|
||||||
"minProperties": 1,
|
"minProperties": 1,
|
||||||
|
@ -39,7 +39,7 @@ class ApiServersServerStdinHandler(BaseApiHandler):
|
|||||||
self.controller.management.add_to_audit_log(
|
self.controller.management.add_to_audit_log(
|
||||||
auth_data[4]["user_id"],
|
auth_data[4]["user_id"],
|
||||||
f"Sent command ({decoded}) to terminal",
|
f"Sent command ({decoded}) to terminal",
|
||||||
server_id=0,
|
server_id=server_id,
|
||||||
source_ip=self.get_remote_ip(),
|
source_ip=self.get_remote_ip(),
|
||||||
)
|
)
|
||||||
if svr.send_command(self.request.body.decode("utf-8")):
|
if svr.send_command(self.request.body.decode("utf-8")):
|
||||||
|
@ -119,7 +119,9 @@
|
|||||||
],
|
],
|
||||||
"blurb": "Silver enjoys helping others with their computer needs, writing documentation, and loving her cat.",
|
"blurb": "Silver enjoys helping others with their computer needs, writing documentation, and loving her cat.",
|
||||||
"pic": "/static/assets/images/credits/isilverfyre.png"
|
"pic": "/static/assets/images/credits/isilverfyre.png"
|
||||||
},
|
}
|
||||||
|
],
|
||||||
|
"retired": [
|
||||||
{
|
{
|
||||||
"name": "Quentin",
|
"name": "Quentin",
|
||||||
"title": "Document Curator",
|
"title": "Document Curator",
|
||||||
@ -146,9 +148,7 @@
|
|||||||
],
|
],
|
||||||
"blurb": "Day to day I am a Network Administrator, dealing with a range of vendors and products. Outside of work my hobbies are handyman things, such as carpentry and motor mechanics having grown up around them. My home-lab consists of Linux distros ranging from Debian, Ubuntu & Centos having self taught myself Linux for the last 12+ years.",
|
"blurb": "Day to day I am a Network Administrator, dealing with a range of vendors and products. Outside of work my hobbies are handyman things, such as carpentry and motor mechanics having grown up around them. My home-lab consists of Linux distros ranging from Debian, Ubuntu & Centos having self taught myself Linux for the last 12+ years.",
|
||||||
"pic": null
|
"pic": null
|
||||||
}
|
},
|
||||||
],
|
|
||||||
"retired": [
|
|
||||||
{
|
{
|
||||||
"name": "Kev Dagoat",
|
"name": "Kev Dagoat",
|
||||||
"title": "Head of Development",
|
"title": "Head of Development",
|
||||||
|
@ -315,7 +315,7 @@
|
|||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
</td>
|
</td>
|
||||||
<span class="server-player-totals" id="server_players_{{server['server_data']['server_id']}}" data-players="{{ server['stats']['online']}}" data-max="{{ server['stats']['max'] }}"></span>
|
<span class="server-player-totals" id="server_players_{{server['server_data']['server_id']}}" data-serverId="{{server['server_data']['server_id']}}" data-players="{{ server['stats']['online']}}" data-max="{{ server['stats']['max'] }}" data-count="{{server['server_data']['count_players']}}"></span>
|
||||||
</tr>
|
</tr>
|
||||||
{% end %}
|
{% end %}
|
||||||
</div>
|
</div>
|
||||||
@ -554,6 +554,9 @@
|
|||||||
display: none;
|
display: none;
|
||||||
/* for Chrome, Safari, and Opera */
|
/* for Chrome, Safari, and Opera */
|
||||||
}
|
}
|
||||||
|
.gray {
|
||||||
|
color: gray !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
@ -724,14 +727,19 @@
|
|||||||
|
|
||||||
server_players.setAttribute('data-players', server.online);
|
server_players.setAttribute('data-players', server.online);
|
||||||
server_players.setAttribute('data-max', server.max);
|
server_players.setAttribute('data-max', server.max);
|
||||||
|
server_players.setAttribute('data-count', server.count_players)
|
||||||
let servers = Array.from(document.getElementsByClassName("server-player-totals"));
|
let servers = Array.from(document.getElementsByClassName("server-player-totals"));
|
||||||
let all_total_players = 0;
|
let all_total_players = 0;
|
||||||
let all_total_max_players = 0;
|
let all_total_max_players = 0;
|
||||||
|
|
||||||
servers.forEach(server => {
|
servers.forEach(server => {
|
||||||
try {
|
try {
|
||||||
|
console.log(`#server_desc_${server.getAttribute("data-serverId")}`)
|
||||||
|
$(`#server_desc_${server.getAttribute("data-serverId")}`).toggleClass("gray", server.getAttribute('data-count') === 'false')
|
||||||
|
if (server.getAttribute('data-count') === 'true'){
|
||||||
all_total_players += parseInt(server.getAttribute('data-players'));
|
all_total_players += parseInt(server.getAttribute('data-players'));
|
||||||
all_total_max_players += parseInt(server.getAttribute('data-max'));
|
all_total_max_players += parseInt(server.getAttribute('data-max'));
|
||||||
|
}
|
||||||
} catch {
|
} catch {
|
||||||
console.log("Player totals are not of type int");
|
console.log("Player totals are not of type int");
|
||||||
}
|
}
|
||||||
|
@ -11,13 +11,13 @@
|
|||||||
<tbody id="player-body">
|
<tbody id="player-body">
|
||||||
{% for player in data['cached_players'] %}
|
{% for player in data['cached_players'] %}
|
||||||
<tr id="playerItem-{{ player['name'] }}" class="playerItem--" style="text-align: center;">
|
<tr id="playerItem-{{ player['name'] }}" class="playerItem--" style="text-align: center;">
|
||||||
<td>
|
<td class="no-scroll" style="overflow: scroll;">
|
||||||
<strong> {{ player['name'] }}</strong>
|
<strong> {{ player['name'] }}</strong>
|
||||||
</td>
|
</td>
|
||||||
{% if player['status'] == 'Online' %}
|
{% if player['status'] == 'Online' %}
|
||||||
<td style="overflow: scroll;"><span class="text-success"><i class="fas fa-signal"></i> {{ player['status'] }}</span></td>
|
<td class="no-scroll" style="overflow: scroll;"><span class="text-success"><i class="fas fa-signal"></i> {{ player['status'] }}</span></td>
|
||||||
{% elif player['status'] == 'Offline' %}
|
{% elif player['status'] == 'Offline' %}
|
||||||
<td><span class="text-warning"><i class="fa-regular fa-circle-xmark"></i><span class="offline-status"> {{ player['status'] }}</span><span class="conn-break"> Last connection :<br> {{ player['last_seen'] }}</span></span></td>
|
<td class="no-scroll" style="overflow: scroll;"><span class="text-warning"><i class="fa-regular fa-circle-xmark"></i><span class="offline-status"> {{ player['status'] }}</span><span class="conn-break"> Last connection :<br> {{ player['last_seen'] }}</span></span></td>
|
||||||
{% end %}
|
{% end %}
|
||||||
<td class="buttons" style="text-align: center;">
|
<td class="buttons" style="text-align: center;">
|
||||||
{% if data['server_stats']['running'] %}
|
{% if data['server_stats']['running'] %}
|
||||||
|
@ -188,6 +188,17 @@
|
|||||||
{% end %}
|
{% end %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
{% if data['server_stats']['server_id']['count_players'] %}
|
||||||
|
<input type="checkbox" class="custom-control-input" id="count_players" name="count_players" checked="" value="1">
|
||||||
|
<label class="custom-control-label" for="count_players"> {{ translate('serverConfig', 'countPlayers', data['lang']) }}</label>
|
||||||
|
{% else %}
|
||||||
|
<input type="checkbox" class="custom-control-input" id="count_players" name="count_players" value="1">
|
||||||
|
<label class="custom-control-label" for="count_players"> {{ translate('serverConfig', 'countPlayers', data['lang']) }}</label>
|
||||||
|
{% end %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="custom-control custom-switch">
|
<div class="custom-control custom-switch">
|
||||||
{% if data['super_user'] %}
|
{% if data['super_user'] %}
|
||||||
@ -195,7 +206,7 @@
|
|||||||
<input type="checkbox" class="custom-control-input" id="show_status" name="show_status" checked="" value="1">
|
<input type="checkbox" class="custom-control-input" id="show_status" name="show_status" checked="" value="1">
|
||||||
<label class="custom-control-label" for="show_status"> {{ translate('serverConfig', 'showStatus', data['lang']) }}</label>
|
<label class="custom-control-label" for="show_status"> {{ translate('serverConfig', 'showStatus', data['lang']) }}</label>
|
||||||
{% else %}
|
{% else %}
|
||||||
<input type="checkbox" class="custom-control-input" id="show_status" name="show_status" value="1">
|
<input type="checkbox" class="custom-control-input" id="show_status" name="show_status" value="1">
|
||||||
<label class="custom-control-label" for="show_status"> {{ translate('serverConfig', 'showStatus', data['lang']) }}</label>
|
<label class="custom-control-label" for="show_status"> {{ translate('serverConfig', 'showStatus', data['lang']) }}</label>
|
||||||
{% end %}
|
{% end %}
|
||||||
{% end %}
|
{% end %}
|
||||||
@ -559,6 +570,7 @@
|
|||||||
formDataObject.show_status = $("#show_status").prop('checked');
|
formDataObject.show_status = $("#show_status").prop('checked');
|
||||||
formDataObject.crash_detection = $("#crash_detection").prop('checked');
|
formDataObject.crash_detection = $("#crash_detection").prop('checked');
|
||||||
formDataObject.auto_start = $("#auto_start").prop('checked');
|
formDataObject.auto_start = $("#auto_start").prop('checked');
|
||||||
|
formDataObject.count_players = $("#count_players").prop('checked');
|
||||||
console.log(formDataObject);
|
console.log(formDataObject);
|
||||||
// Format the plain form data as JSON
|
// Format the plain form data as JSON
|
||||||
let formDataJsonString = JSON.stringify(formDataObject, replacer);
|
let formDataJsonString = JSON.stringify(formDataObject, replacer);
|
||||||
|
@ -192,7 +192,7 @@
|
|||||||
const token = getCookie("_xsrf")
|
const token = getCookie("_xsrf")
|
||||||
let colors = true;
|
let colors = true;
|
||||||
if (!$("#stop_scroll").is(':checked')) {
|
if (!$("#stop_scroll").is(':checked')) {
|
||||||
let res = await fetch(`/api/v2/servers/${serverId}/logs?colors=${colors}`, {
|
let res = await fetch(`/api/v2/servers/${serverId}/logs?colors=${colors}&file=true`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
'X-XSRFToken': token
|
'X-XSRFToken': token
|
||||||
|
@ -164,7 +164,7 @@
|
|||||||
|
|
||||||
const serverId = new URLSearchParams(document.location.search).get('id')
|
const serverId = new URLSearchParams(document.location.search).get('id')
|
||||||
|
|
||||||
function send_command(serverId, command) {
|
async function send_command(serverId, command) {
|
||||||
if (command == 'start_server') {
|
if (command == 'start_server') {
|
||||||
startBtn.setAttribute('disabled', 'disabled');
|
startBtn.setAttribute('disabled', 'disabled');
|
||||||
restartBtn.removeAttribute('disabled');
|
restartBtn.removeAttribute('disabled');
|
||||||
@ -178,16 +178,23 @@
|
|||||||
//<!-- this getCookie function is in base.html-->
|
//<!-- this getCookie function is in base.html-->
|
||||||
const token = getCookie("_xsrf");
|
const token = getCookie("_xsrf");
|
||||||
|
|
||||||
$.ajax({
|
let res = await fetch(`/api/v2/servers/${serverId}/action/${command}`, {
|
||||||
type: "POST",
|
method: 'POST',
|
||||||
headers: { 'X-XSRFToken': token },
|
headers: {
|
||||||
url: `/api/v2/servers/${serverId}/action/${command}`,
|
'token': token,
|
||||||
success: function (data) {
|
},
|
||||||
console.log("got response:");
|
});
|
||||||
console.log(data);
|
let responseData = await res.json();
|
||||||
}
|
if (responseData.status === "ok") {
|
||||||
|
console.log("Command received successfully")
|
||||||
|
} else {
|
||||||
|
bootbox.alert({
|
||||||
|
title: responseData.status,
|
||||||
|
message: responseData.error
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (webSocket) {
|
if (webSocket) {
|
||||||
webSocket.on('update_button_status', function (updateButton) {
|
webSocket.on('update_button_status', function (updateButton) {
|
||||||
if (updateButton.isUpdating) {
|
if (updateButton.isUpdating) {
|
||||||
|
16
app/migrations/20231229_player_count.py
Normal file
16
app/migrations/20231229_player_count.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Generated by database migrator
|
||||||
|
import peewee
|
||||||
|
|
||||||
|
|
||||||
|
def migrate(migrator, database, **kwargs):
|
||||||
|
migrator.add_columns("servers", count_players=peewee.BooleanField(default=True))
|
||||||
|
"""
|
||||||
|
Write your migrations here.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def rollback(migrator, database, **kwargs):
|
||||||
|
migrator.drop_columns("servers", ["count_players"])
|
||||||
|
"""
|
||||||
|
Write your rollback migrations here.
|
||||||
|
"""
|
@ -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.",
|
"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.<br /> Dieser Bildschirm wird sich in einem Moment aktualisieren",
|
"bePatientUpdate": "Bitte haben Sie etwas Geduld, während wir den Server aktualisieren. Die Downloadzeiten können je nach Ihrer Internetgeschwindigkeit variieren.<br /> Dieser Bildschirm wird sich in einem Moment aktualisieren",
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
|
"countPlayers": "Server in die Gesamtspielerzahl einbeziehen",
|
||||||
"crashTime": "Zeitüberschreitung nach Absturz",
|
"crashTime": "Zeitüberschreitung nach Absturz",
|
||||||
"crashTimeDesc": "Wie lange soll Crafty warten, bevor Crafty den Server als abgestürzt betrachtet?",
|
"crashTimeDesc": "Wie lange soll Crafty warten, bevor Crafty den Server als abgestürzt betrachtet?",
|
||||||
"deleteFilesQuestion": "Serverdateien vom Rechner löschen?",
|
"deleteFilesQuestion": "Serverdateien vom Rechner löschen?",
|
||||||
|
@ -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.",
|
"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.<br /> This screen will refresh in a moment",
|
"bePatientUpdate": "Please be patient while we update the server. Download times can vary depending upon your internet speeds.<br /> This screen will refresh in a moment",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
|
"countPlayers": "Include server in total player count",
|
||||||
"crashTime": "Crash Timeout",
|
"crashTime": "Crash Timeout",
|
||||||
"crashTimeDesc": "How long should we wait before we consider your server as crashed?",
|
"crashTimeDesc": "How long should we wait before we consider your server as crashed?",
|
||||||
"deleteFilesQuestion": "Delete server files from machine?",
|
"deleteFilesQuestion": "Delete server files from machine?",
|
||||||
|
@ -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.",
|
"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.<br /> Cet écran se mettra à jour 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.<br /> Cet écran se mettra à jour dans quelques instants",
|
||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
|
"countPlayers": "Inclure ce serveur dans le nombre total de joueurs",
|
||||||
"crashTime": "Délai de plantage",
|
"crashTime": "Délai de plantage",
|
||||||
"crashTimeDesc": "Combien de temps attendre avant de considérer que le serveur a crash ?",
|
"crashTimeDesc": "Combien de temps attendre avant de considérer que le serveur a crash ?",
|
||||||
"deleteFilesQuestion": "Supprimer les fichiers de la machine ?",
|
"deleteFilesQuestion": "Supprimer les fichiers de la machine ?",
|
||||||
|
@ -327,6 +327,7 @@
|
|||||||
"bePatientDeleteFiles": "אנא חכו בסבלנות בזמן שאנו מסירים את השרת שלך מהחלונית קראפטי ומוחקים את כל הקבצים. מסך זה ייסגר בעוד מספר רגעים.",
|
"bePatientDeleteFiles": "אנא חכו בסבלנות בזמן שאנו מסירים את השרת שלך מהחלונית קראפטי ומוחקים את כל הקבצים. מסך זה ייסגר בעוד מספר רגעים.",
|
||||||
"bePatientUpdate": "אנא חכו בסבלנות בזמן שאנו מעדכנים את השרת. זמני ההורדה עשויים להשתנות בהתאם למהירויות האינטרנט שלך.<br /> מסך זה יתרענן בעוד רגע",
|
"bePatientUpdate": "אנא חכו בסבלנות בזמן שאנו מעדכנים את השרת. זמני ההורדה עשויים להשתנות בהתאם למהירויות האינטרנט שלך.<br /> מסך זה יתרענן בעוד רגע",
|
||||||
"cancel": "ביטול",
|
"cancel": "ביטול",
|
||||||
|
"countPlayers": "הכללת השרת במספר המשחקנים הכולל",
|
||||||
"crashTime": "פסק זמן לקריסה",
|
"crashTime": "פסק זמן לקריסה",
|
||||||
"crashTimeDesc": "כמה זמן עלינו להמתין לפני שנראה שהשרת שלך קרס?",
|
"crashTimeDesc": "כמה זמן עלינו להמתין לפני שנראה שהשרת שלך קרס?",
|
||||||
"deleteFilesQuestion": "למחוק קבצי שרת מהמחשב?",
|
"deleteFilesQuestion": "למחוק קבצי שרת מהמחשב?",
|
||||||
@ -500,8 +501,10 @@
|
|||||||
"every": "כל",
|
"every": "כל",
|
||||||
"interval": "מרווח",
|
"interval": "מרווח",
|
||||||
"name": "שם",
|
"name": "שם",
|
||||||
|
"newSchedule": "לוח זמנים חדש",
|
||||||
"nextRun": "הריצה הבאה",
|
"nextRun": "הריצה הבאה",
|
||||||
"no": "לא",
|
"no": "לא",
|
||||||
|
"no-schedule": "אין כרגע לוחות זמנים מוגדרים עבור שרת זה. כדי להתחיל, לחץ",
|
||||||
"scheduledTasks": "משימות מתוזמנות",
|
"scheduledTasks": "משימות מתוזמנות",
|
||||||
"yes": "כן"
|
"yes": "כן"
|
||||||
},
|
},
|
||||||
@ -652,6 +655,8 @@
|
|||||||
"kill": "השרת נסגר",
|
"kill": "השרת נסגר",
|
||||||
"name": "שם",
|
"name": "שם",
|
||||||
"new": "Webhook חדש",
|
"new": "Webhook חדש",
|
||||||
|
"newWebhook": "וובהוק חדש",
|
||||||
|
"no-webhook": "אין כרגע וובהוקים מוגדרים עבור שרת זה. כדי להתחיל, לחץ.",
|
||||||
"run": "הרץ Webhook לבדיקה",
|
"run": "הרץ Webhook לבדיקה",
|
||||||
"send_command": "פקודת שרת התקבלה",
|
"send_command": "פקודת שרת התקבלה",
|
||||||
"start_server": "השרת הופעל",
|
"start_server": "השרת הופעל",
|
||||||
|
@ -327,6 +327,7 @@
|
|||||||
"bePatientDeleteFiles": "PLZ BE PAITENT I EAT UR SERVR AN EAT AW TEH YUMMI FISH. DIS SCRIEN WILL REFRESH SOONZ",
|
"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.<BR /> DIS SCRIEN WILL REFRESH SOONZ",
|
"bePatientUpdate": "PLZ BE PAITENTZ WE GET TEH NEWZ SERVER. HUNTING TEIMZ CAN VARY IF UR INTERWEBZ IZ POOP.<BR /> DIS SCRIEN WILL REFRESH SOONZ",
|
||||||
"cancel": "STAHP",
|
"cancel": "STAHP",
|
||||||
|
"countPlayers": "COUNT ALL DA HOOMANS IN TOTAL PLAYERZ",
|
||||||
"crashTime": "DUN GOOF TIMEOUT",
|
"crashTime": "DUN GOOF TIMEOUT",
|
||||||
"crashTimeDesc": "HOW LONG SHUD WE WAIT BEFORE WE CONSIDR UR SERVR HAS DUN GOOFD?",
|
"crashTimeDesc": "HOW LONG SHUD WE WAIT BEFORE WE CONSIDR UR SERVR HAS DUN GOOFD?",
|
||||||
"deleteFilesQuestion": "EAT SERVR FISH TOO?",
|
"deleteFilesQuestion": "EAT SERVR FISH TOO?",
|
||||||
|
@ -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.",
|
"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.<br /> Šis ekrāns atjaunosies pēc brīž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.<br /> Šis ekrāns atjaunosies pēc brīža",
|
||||||
"cancel": "Atcelt",
|
"cancel": "Atcelt",
|
||||||
|
"countPlayers": "Pieskaitīt serveri pie kopējā spēlētāju skaita",
|
||||||
"crashTime": "Avārijas Taimouts",
|
"crashTime": "Avārijas Taimouts",
|
||||||
"crashTimeDesc": "Cik ilgi mums nogaidīt pirms mēs uzskatām serveri kā avarējušu?",
|
"crashTimeDesc": "Cik ilgi mums nogaidīt pirms mēs uzskatām serveri kā avarējušu?",
|
||||||
"deleteFilesQuestion": "Dzēst servera failus no ierīces?",
|
"deleteFilesQuestion": "Dzēst servera failus no ierīces?",
|
||||||
|
@ -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.",
|
"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.<br /> Dit scherm wordt zo vernieuwd",
|
"bePatientUpdate": "Even geduld terwijl we de server updaten. De downloadtijden kunnen variëren, afhankelijk van je internetsnelheden.<br /> Dit scherm wordt zo vernieuwd",
|
||||||
"cancel": "Annuleren",
|
"cancel": "Annuleren",
|
||||||
|
"countPlayers": "Server opnemen in het totale spelersaantal",
|
||||||
"crashTime": "Crash Timeout",
|
"crashTime": "Crash Timeout",
|
||||||
"crashTimeDesc": "Hoe lang moet er gewacht worden voordat we uw server als gecrasht beschouwen?",
|
"crashTimeDesc": "Hoe lang moet er gewacht worden voordat we uw server als gecrasht beschouwen?",
|
||||||
"deleteFilesQuestion": "Serverbestanden van de machine verwijderen?",
|
"deleteFilesQuestion": "Serverbestanden van de machine verwijderen?",
|
||||||
|
@ -327,6 +327,7 @@
|
|||||||
"bePatientDeleteFiles": "Poczekaj, aż usuniemy twój serwer i jego pliki. Strona za chwilę się zamknie.",
|
"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.<br /> Strona się odświeży za chwile.",
|
"bePatientUpdate": "Poczekaj kiedy my aktualizujemy twój serwer. Pobieranie zależy od prędkości twojego internetu.<br /> Strona się odświeży za chwile.",
|
||||||
"cancel": "Anuluj",
|
"cancel": "Anuluj",
|
||||||
|
"countPlayers": "Wlicz serwer do całkowitej liczby graczy",
|
||||||
"crashTime": "Crash serwera wyszedł poza limit czasu",
|
"crashTime": "Crash serwera wyszedł poza limit czasu",
|
||||||
"crashTimeDesc": "Jak długo powinniśmy poczekać zanim uznać serwer za zcrashowany?",
|
"crashTimeDesc": "Jak długo powinniśmy poczekać zanim uznać serwer za zcrashowany?",
|
||||||
"deleteFilesQuestion": "Usuń pliki serwera z maszyny?",
|
"deleteFilesQuestion": "Usuń pliki serwera z maszyny?",
|
||||||
|
669
app/translations/th_TH.json
Normal file
669
app/translations/th_TH.json
Normal file
@ -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": "<strong>คำเตือน: </strong>Crafty จะทำงานไม่ถูกต้องเมื่อไม่ได้เปิดใช้งาน JavaScript!"
|
||||||
|
},
|
||||||
|
"credits": {
|
||||||
|
"developmentTeam": "ทีมพัฒนา",
|
||||||
|
"hugeDesc": "ขอ",
|
||||||
|
"pageDescription": "หากไม่มีบุคคลเหล่านี้ ก็จะไม่มี Crafty ในวันนี้",
|
||||||
|
"pageTitle": "เครดิต",
|
||||||
|
"patreonDesc": "ถึงผู้สนับสนุน Patreon / Ko-fi ของเรา!",
|
||||||
|
"patreonOther": "อื่นๆ",
|
||||||
|
"patreonSupporter": "ผู้สนับสนุน Patreon / Ko-fi",
|
||||||
|
"patreonUpdate": "อัปเดตล่าสุด:",
|
||||||
|
"retiredStaff": "อดีตทีมงาน",
|
||||||
|
"subscriberName": "ชื่อ",
|
||||||
|
"subscriptionLevel": "ระดับ",
|
||||||
|
"supportTeam": "ทีมสนับสนุนและจัดทำเอกสาร",
|
||||||
|
"thankYou": "ขอบคุณจากหัวใจ",
|
||||||
|
"translationDesc": "ถึงชุมชนของเราที่ช่วยแปล! [ ยังคงทำงานอยู่ = 🟢 ไม่ได้ทำงานแล้ว/อดีตทีมงาน = ⚪ ]",
|
||||||
|
"translationName": "ภาษา",
|
||||||
|
"translationTitle": "ทีมแปลภาษา",
|
||||||
|
"translator": "ผู้แปล"
|
||||||
|
},
|
||||||
|
"customLogin": {
|
||||||
|
"apply": "นำไปใช้",
|
||||||
|
"backgroundUpload": "อัปโหลดภาพพื้นหลัง",
|
||||||
|
"customLoginPage": "ปรับแต่งหน้าเข้าสู่ระบบ",
|
||||||
|
"delete": "ลบ",
|
||||||
|
"labelLoginImage": "เลือกรูปพื้นหลังหน้าเข้าสู่ระบบของคุณ",
|
||||||
|
"loginBackground": "รูปพื้นหลังหน้าเข้าสู่ระบบ",
|
||||||
|
"loginImage": "อัปโหลดภาพพื้นหลังสำหรับหน้าเข้าสู่ระบบ",
|
||||||
|
"loginOpacity": "เลือกความทึบของหน้าต่างเข้าสู่ระบบ",
|
||||||
|
"pageTitle": "หน้าเข้าสู่ระบบที่กำหนดเอง",
|
||||||
|
"preview": "ดูตัวอย่าง",
|
||||||
|
"select": "เลือก",
|
||||||
|
"selectImage": "เลือกรูปภาพ"
|
||||||
|
},
|
||||||
|
"dashboard": {
|
||||||
|
"actions": "คำสั่งด่วน",
|
||||||
|
"allServers": "เซิร์ฟเวอร์ทั้งหมด",
|
||||||
|
"avg": "ค่าเฉลี่ย",
|
||||||
|
"backups": "สำรองข้อมูล",
|
||||||
|
"bePatientClone": "กรุณารออย่างใจเย็นในขณะที่เราโคลนเซิร์ฟเวอร์<br /> หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
|
||||||
|
"bePatientRestart": "กรุณารออย่างใจเย็นในขณะที่เรารีสตาร์ทเซิร์ฟเวอร์<br /> หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
|
||||||
|
"bePatientStart": "กรุณารออย่างใจเย็นในขณะที่เรากำลังเริ่มเซิร์ฟเวอร์<br /> หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
|
||||||
|
"bePatientStop": "กรุณารออย่างใจเย็นในขณะที่เราหยุดการทำงานเซิร์ฟเวอร์<br /> หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
|
||||||
|
"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 <span class='ui-button-icon-primary ui-icon ui-icon-triangle-1-s'/>",
|
||||||
|
"colvis": "การมองเห็นคอลัมน์",
|
||||||
|
"colvisRestore": "คืนค่าการมองเห็น",
|
||||||
|
"copy": "คัดลอก",
|
||||||
|
"copyKeys": "กด Ctrl หรือ u2318 + C เพื่อคัดลอกข้อมูลตารางไปยังคลิปบอร์ดของระบบ<br><br>หากต้องการยกเลิก ให้คลิกข้อความนี้หรือกด Escape",
|
||||||
|
"copySuccess": {
|
||||||
|
"1": "คัดลอก 1 แถวไปยังคลิปบอร์ดแล้ว",
|
||||||
|
"_": "คัดลอก %d แถวไปยังคลิปบอร์ดแล้ว"
|
||||||
|
},
|
||||||
|
"copyTitle": "คัดลอกไปยังคลิปบอร์ด",
|
||||||
|
"csv": "CSV",
|
||||||
|
"excel": "Excel",
|
||||||
|
"pageLength": {
|
||||||
|
"-1": "แสดงทุกแถว",
|
||||||
|
"1": "แสดง 1 แถว",
|
||||||
|
"_": "แสดง %d แถว"
|
||||||
|
},
|
||||||
|
"pdf": "PDF",
|
||||||
|
"print": "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": "กรุณารออย่างใจเย็นในขณะที่เราอัปเดตเซิร์ฟเวอร์ เวลาในการดาวน์โหลดอาจแตกต่างกันไปขึ้นอยู่กับความเร็วอินเทอร์เน็ตของคุณ<br /> หน้าต่างนี้จะรีเฟรชในอีกสักครู่",
|
||||||
|
"cancel": "ยกเลิก",
|
||||||
|
"countPlayers": "รวมเซิร์ฟเวอร์ในจำนวนผู้เล่นทั้งหมด",
|
||||||
|
"crashTime": "ผิดพลาด หมดเวลา",
|
||||||
|
"crashTimeDesc": "เราควรรอนานแค่ไหนก่อนที่จะพิจารณาว่าเซิร์ฟเวอร์ของคุณขัดข้อง?",
|
||||||
|
"deleteFilesQuestion": "ลบไฟล์เซิร์ฟเวอร์ออกจากเครื่อง?",
|
||||||
|
"deleteFilesQuestionMessage": "คุณต้องการให้ Crafty ลบไฟล์เซิร์ฟเวอร์ทั้งหมดออกจากเครื่องโฮสต์หรือไม่ <br><br><strong>ซึ่งรวมถึงข้อมูลสำรองของเซิร์ฟเวอร์ด้วย</strong>",
|
||||||
|
"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": [
|
||||||
|
"ขอแนะนำให้ <code>ไม่</code> เปลี่ยนเส้นทางของเซิร์ฟเวอร์ที่จัดการโดย Crafty",
|
||||||
|
"การเปลี่ยนเส้นทาง <code>สามารถ</code> ทำให้สิ่งต่างๆ เสียหาย โดยเฉพาะบนระบบปฏิบัติการประเภท Linux ที่การอนุญาตของไฟล์ถูกจำกัดไว้มากกว่า",
|
||||||
|
"<br /><br/>",
|
||||||
|
"หากคุณรู้สึกว่าต้องเปลี่ยนตำแหน่งของเซิร์ฟเวอร์ คุณสามารถทำได้ตราบใดที่คุณให้สิทธิ์ผู้ใช้ \"crafty\" ในการอ่าน / เขียนไปยังเส้นทางเซิร์ฟเวอร์",
|
||||||
|
"<br />",
|
||||||
|
"<br />",
|
||||||
|
"บน Linux วิธีที่ดีที่สุดคือดำเนินการคำสั่งดังต่อไปนี้:<br />",
|
||||||
|
"<code>",
|
||||||
|
" sudo chown crafty:crafty /path/to/your/server -R<br />",
|
||||||
|
" sudo chmod 2775 /path/to/your/server -R<br />",
|
||||||
|
"</code>"
|
||||||
|
],
|
||||||
|
"title": "พื้นที่ตั้งค่าเซิร์ฟเวอร์"
|
||||||
|
},
|
||||||
|
"serverDetails": {
|
||||||
|
"backup": "สำรองข้อมูล",
|
||||||
|
"config": "ตั้งค่า",
|
||||||
|
"files": "ไฟล์",
|
||||||
|
"filter": "กรองบันทึก",
|
||||||
|
"filterList": "ข้อความที่ถูกกรอง",
|
||||||
|
"logs": "บันทึก",
|
||||||
|
"metrics": "สถิติ",
|
||||||
|
"playerControls": "การจัดการผู้เล่น",
|
||||||
|
"reset": "รีเซ็ตการเลื่อน",
|
||||||
|
"schedule": "กำหนดการ",
|
||||||
|
"serverDetails": "รายละเอียดเซิร์ฟเวอร์",
|
||||||
|
"terminal": "เทอร์มินัล"
|
||||||
|
},
|
||||||
|
"serverFiles": {
|
||||||
|
"clickUpload": "คลิกที่นี่เพื่อเลือกไฟล์ของคุณ",
|
||||||
|
"close": "ปิด",
|
||||||
|
"createDir": "สร้างโฟล์เดอร์ใหม่",
|
||||||
|
"createDirQuestion": "คุณอยากเรียกโฟล์เดอร์ใหม่นี้ว่าอะไร?",
|
||||||
|
"createFile": "สร้างไฟล์ใหม่",
|
||||||
|
"createFileQuestion": "คุณอยากเรียกไฟล์ใหม่นี้ว่าอะไร?",
|
||||||
|
"default": "ค่าเริ่มต้น",
|
||||||
|
"delete": "ลบ",
|
||||||
|
"deleteItemQuestion": "คุณแน่ใจหรือไม่ว่าต้องการลบ \" + name + \"?",
|
||||||
|
"deleteItemQuestionMessage": "คุณกำลังลบ \\\"\" + path + \"\\\"!<br/><br/>การกระทำนี้จะไม่สามารถย้อนกลับได้ และจะสูญหายไปตลอดกาล!",
|
||||||
|
"download": "ดาวน์โหลด",
|
||||||
|
"editingFile": "แก้ไขไฟล์",
|
||||||
|
"error": "เกิดข้อผิดพลาดขณะรับไฟล์",
|
||||||
|
"fileReadError": "ข้อผิดพลาดในการอ่านไฟล์",
|
||||||
|
"files": "ไฟล์",
|
||||||
|
"keybindings": "แป้นพิมพ์ลัด",
|
||||||
|
"loadingRecords": "กำลังโหลดไฟล์...",
|
||||||
|
"noDelete": "ไม่",
|
||||||
|
"noscript": "ตัวจัดการไฟล์จะไม่ทำงานหากไม่มี JavaScript",
|
||||||
|
"rename": "แก้ไขชื่อ",
|
||||||
|
"renameItemQuestion": "คุณจะตั้งชื่อใหม่ว่าอะไร?",
|
||||||
|
"save": "บันทึก",
|
||||||
|
"size": "สลับขนาดตัวแก้ไข",
|
||||||
|
"stayHere": "อย่าออกจากหน้านี้!",
|
||||||
|
"unsupportedLanguage": "คำเตือน: นี่ไม่ใช่ประเภทไฟล์ที่รองรับ",
|
||||||
|
"unzip": "แตกไฟล์",
|
||||||
|
"upload": "อัปโหลด",
|
||||||
|
"uploadTitle": "อัปโหลดไฟล์ไปที่: ",
|
||||||
|
"waitUpload": "โปรดรอสักครู่ในขณะที่เราอัปโหลดไฟล์ของคุณ... การกระทำนี้อาจใช้เวลาสักครู่",
|
||||||
|
"yesDelete": "ใช่ม ฉันเข้าใจผลที่ตามมา"
|
||||||
|
},
|
||||||
|
"serverMetrics": {
|
||||||
|
"resetZoom": "รีเซ็ตการซูม",
|
||||||
|
"zoomHint1": "หากต้องการซูมกราฟ ให้กดปุ่ม Shift ค้างไว้แล้วใช้ลูกกลิ้งเมาส์",
|
||||||
|
"zoomHint2": "หรือกดปุ่ม Shift ค้างไว้ จากนั้นคลิกและลากบริเวณที่คุณต้องการซูมเข้า"
|
||||||
|
},
|
||||||
|
"serverPlayerManagement": {
|
||||||
|
"bannedPlayers": "ผู้เล่นที่ถูกแบน",
|
||||||
|
"loadingBannedPlayers": "กำลังโหลดผู้เล่นที่ถูกแบน",
|
||||||
|
"players": "ผู้เล่น"
|
||||||
|
},
|
||||||
|
"serverScheduleConfig": {
|
||||||
|
"backup": "สำรองข้อมูลเซิร์ฟเวอร์",
|
||||||
|
"basic": "ขั้นพื้นฐาน",
|
||||||
|
"children": "งานย่อยที่เชื่อมโยง: ",
|
||||||
|
"command": "คำสั่ง",
|
||||||
|
"command-explain": "คุณอยากให้เราดำเนินการคำสั่งใด? ไม่ต้องใส่ '/'",
|
||||||
|
"cron": "ครอน",
|
||||||
|
"cron-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"
|
||||||
|
}
|
||||||
|
}
|
669
app/translations/tr_TR.json
Normal file
669
app/translations/tr_TR.json
Normal file
@ -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": "<strong>Uyarı: </strong>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.<br /> Bu ekran birazdan kendini yenileyecektir",
|
||||||
|
"bePatientRestart": "Sunucuyu yeniden başlatırken lütfen sabırlı olunuz.<br /> Bu ekran birazdan kendini yenileyecektir",
|
||||||
|
"bePatientStart": "Sunucuyu başlatırken başlatırken lütfen sabırlı olunuz.<br /> Bu ekran birazdan kendini yenileyecektir",
|
||||||
|
"bePatientStop": "Sunucuyu durdururken başlatırken lütfen sabırlı olunuz.<br /> 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 <span class='ui-button-icon-primary ui-icon ui-icon-triangle-1-s'/>",
|
||||||
|
"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.<br><br>İ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.<br /> 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? <br><br><strong>Buna sunucu yedeklemeleri de dahildir.</strong>",
|
||||||
|
"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 <code>DEĞİŞTİRİLMEMESİ</code> önerilir.",
|
||||||
|
"Konumları değiştirmek, özellikle dosya izinlerinin daha kilitli olduğu Linux tipi işletim sistemlerinde işleri <code>BOZABİLİR</code>.",
|
||||||
|
"<br /><br/>",
|
||||||
|
"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.",
|
||||||
|
"<br />",
|
||||||
|
"<br />",
|
||||||
|
"Linux'ta bu en iyi şekilde aşağıdakileri uygulayarak yapılır:<br />",
|
||||||
|
"<code>",
|
||||||
|
" sudo chown crafty:crafty /sunucunuzun/konumu/ -R<br />",
|
||||||
|
" sudo chmod 2775 /sunucunuzun/konumu/ -R<br />",
|
||||||
|
"</code>"
|
||||||
|
],
|
||||||
|
"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!<br/><br/>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"
|
||||||
|
}
|
||||||
|
}
|
669
app/translations/uk_UA.json
Normal file
669
app/translations/uk_UA.json
Normal file
@ -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": "<strong>Увага: </strong>Crafty не працює належним чином коли JavaScript вимкненний!"
|
||||||
|
},
|
||||||
|
"credits": {
|
||||||
|
"developmentTeam": "Команда Розробки",
|
||||||
|
"hugeDesc": "Величезне",
|
||||||
|
"pageDescription": "Без цих людей, не було б Crafty",
|
||||||
|
"pageTitle": "Подяка",
|
||||||
|
"patreonDesc": "нашим Patreon / Ko-fi підтримувачам!",
|
||||||
|
"patreonOther": "Інше",
|
||||||
|
"patreonSupporter": "Patreon / Ko-fi підтримка",
|
||||||
|
"patreonUpdate": "Останнє оновлення:",
|
||||||
|
"retiredStaff": "Ветерани",
|
||||||
|
"subscriberName": "Ім'я",
|
||||||
|
"subscriptionLevel": "Рівень",
|
||||||
|
"supportTeam": "Команда підтримки та документації",
|
||||||
|
"thankYou": "ДЯКУЮ",
|
||||||
|
"translationDesc": "нашій спільноті, хто перекладає! [ Активні = 🟢 Неактивні/Ветерани = ⚪ ]",
|
||||||
|
"translationName": "Ім'я",
|
||||||
|
"translationTitle": "Мовний переклад",
|
||||||
|
"translator": "Перекладачі"
|
||||||
|
},
|
||||||
|
"customLogin": {
|
||||||
|
"apply": "Застосувати",
|
||||||
|
"backgroundUpload": "Фонове завантаження",
|
||||||
|
"customLoginPage": "Кастомізація сторінки входу",
|
||||||
|
"delete": "Видалити",
|
||||||
|
"labelLoginImage": "Вибрати свій фон входу",
|
||||||
|
"loginBackground": "Фон Вхідної сторінки",
|
||||||
|
"loginImage": "Завантаження свого фону для сторінки входу.",
|
||||||
|
"loginOpacity": "Виберіть прозорість фону сторінки входу",
|
||||||
|
"pageTitle": "Кастомна сторінка входу",
|
||||||
|
"preview": "Попередній перегляд",
|
||||||
|
"select": "Вибрати",
|
||||||
|
"selectImage": "Вибрати зображення"
|
||||||
|
},
|
||||||
|
"dashboard": {
|
||||||
|
"actions": "Дії",
|
||||||
|
"allServers": "Всі сервери",
|
||||||
|
"avg": "Середнє",
|
||||||
|
"backups": "Бекапи",
|
||||||
|
"bePatientClone": "Будь ласка, будьте терплячі сервер копіюється/клонується.<br /> Ця сторінка скоро оновиться",
|
||||||
|
"bePatientRestart": "Будь ласка, будьте терплячі сервер перезавантажується.<br /> Ця сторінка скоро оновиться",
|
||||||
|
"bePatientStart": "Будь ласка, будьте терплячі сервер включається..<br /> Ця сторінка скоро оновиться",
|
||||||
|
"bePatientStop": "Будь ласка, будьте терплячі сервер вимикається.<br /> Ця сторінка скоро оновиться",
|
||||||
|
"cannotSee": "Нічого не бачите?",
|
||||||
|
"cannotSeeOnMobile": "Нічого не бачите на смартфоні?",
|
||||||
|
"cannotSeeOnMobile2": "Спробуйте прокрутити таблицю вбік.",
|
||||||
|
"clone": "Копіювати/клонувати",
|
||||||
|
"cloneConfirm": "Ви впевненні що бажаєте копіювати/клонувати даний сервер? Цей процес займе трішки часу.",
|
||||||
|
"cpuCores": "CPU Ядра",
|
||||||
|
"cpuCurFreq": "Швидкість CPU",
|
||||||
|
"cpuMaxFreq": "Максимальна швидкість CPU",
|
||||||
|
"cpuUsage": "Використання CPU",
|
||||||
|
"crashed": "Аварійне завершення",
|
||||||
|
"dashboard": "Панель",
|
||||||
|
"delay-explained": "Служба/агент нещодавно запущено та затримує запуск серверів minecraft",
|
||||||
|
"host": "Хост",
|
||||||
|
"installing": "Встановлення...",
|
||||||
|
"kill": "Вбити процес",
|
||||||
|
"killing": "Вбиваємо процес...",
|
||||||
|
"lastBackup": "Останній:",
|
||||||
|
"max": "Макс",
|
||||||
|
"memUsage": "Використання ОЗП",
|
||||||
|
"motd": "MOTD",
|
||||||
|
"newServer": "Створити новий сервер",
|
||||||
|
"nextBackup": "Наступний:",
|
||||||
|
"no-servers": "Зараз відсутні сервери. Щоб розпочати, натисніть.",
|
||||||
|
"offline": "Оффлайн",
|
||||||
|
"online": "Онлайн",
|
||||||
|
"players": "Гравці",
|
||||||
|
"restart": "Перезавантаження",
|
||||||
|
"sendingCommand": "Надіслати команду",
|
||||||
|
"server": "Сервер",
|
||||||
|
"servers": "Сервери",
|
||||||
|
"size": "Об'єм папки сервера",
|
||||||
|
"start": "Старт",
|
||||||
|
"starting": "Відкладений старт",
|
||||||
|
"status": "Статус",
|
||||||
|
"stop": "Стоп",
|
||||||
|
"storage": "Сховище",
|
||||||
|
"version": "Версія",
|
||||||
|
"welcome": "Ласкаво просимо у Crafty Controller"
|
||||||
|
},
|
||||||
|
"datatables": {
|
||||||
|
"i18n": {
|
||||||
|
"aria": {
|
||||||
|
"sortAscending": ": активуйте, щоб сортувати стовпці за зростанням",
|
||||||
|
"sortDescending": ": активуйте, щоб сортувати стовпці за спаданням"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"collection": "Колекція <span class='ui-button-icon-primary ui-icon ui-icon-triangle-1-s'/>",
|
||||||
|
"colvis": "Видимість стовпців",
|
||||||
|
"colvisRestore": "Стандартна видимість",
|
||||||
|
"copy": "Копіювати",
|
||||||
|
"copyKeys": "Натисніть ctrl або u2318 + C щоб скопіювати таблицю в буфер обміну.<br><br>Для відміни, натисніть на це повідомлення або 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.<br /> This screen will refresh in a moment",
|
||||||
|
"cancel": "Відміна",
|
||||||
|
"countPlayers": "Враховувати сервер до загальної кількості гравців",
|
||||||
|
"crashTime": "Краш таймаут",
|
||||||
|
"crashTimeDesc": "Скільки часу чекати, перш ніж ми вважатимемо, що ваш сервер крашнувся?",
|
||||||
|
"deleteFilesQuestion": "Видалити файли сервера з машини?",
|
||||||
|
"deleteFilesQuestionMessage": "Чи бажаєте щоб Crafty видалив усі сервери та файли до них з машини? <br><br><strong>Включаючи бекапи.</strong>",
|
||||||
|
"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": [
|
||||||
|
"Рекомендовано <code>НЕ</code> змінювати шлях до сервера який створив Crafty.",
|
||||||
|
"Зміна шляхів <code>МОЖЕ</code> зламати щось, особливо в операційних системах типу Linux, де дозволи на файли більш заблоковані.",
|
||||||
|
"<br /><br/>",
|
||||||
|
"Якщо ви вважаєте, що потрібно змінити шлях до сервера, ви можете це зробити, але обов'язково надайте \"crafty\" користувачеві дозвіл читати/записувати шлях до сервера.",
|
||||||
|
"<br />",
|
||||||
|
"<br />",
|
||||||
|
"У Linux це найкраще зробити, виконавши наступне:<br />",
|
||||||
|
"<code>",
|
||||||
|
" sudo chown crafty:crafty /шлях/до/вашого/сервера -R<br />",
|
||||||
|
" sudo chmod 2775 /шлях/до/вашого/сервера -R<br />",
|
||||||
|
"</code>"
|
||||||
|
],
|
||||||
|
"title": "Область конфігурації сервера"
|
||||||
|
},
|
||||||
|
"serverDetails": {
|
||||||
|
"backup": "Бекап",
|
||||||
|
"config": "Конфігурація",
|
||||||
|
"files": "Файли",
|
||||||
|
"filter": "Фільтри логів",
|
||||||
|
"filterList": "Відфільтровані слова",
|
||||||
|
"logs": "Логи",
|
||||||
|
"metrics": "Графік",
|
||||||
|
"playerControls": "Керування Гравцями",
|
||||||
|
"reset": "Повернутись нагору",
|
||||||
|
"schedule": "Розклад",
|
||||||
|
"serverDetails": "Деталі сервера",
|
||||||
|
"terminal": "Термінал"
|
||||||
|
},
|
||||||
|
"serverFiles": {
|
||||||
|
"clickUpload": "Натисність тут щоб обрати ваші файли",
|
||||||
|
"close": "Закрити",
|
||||||
|
"createDir": "Створити папку",
|
||||||
|
"createDirQuestion": "Як назвати створену вашу директорію?",
|
||||||
|
"createFile": "Створити файл",
|
||||||
|
"createFileQuestion": "Як назвати створений вами файл?",
|
||||||
|
"default": "За замовчуванням",
|
||||||
|
"delete": "Видалити",
|
||||||
|
"deleteItemQuestion": "Ви впевнені що бажаєте видалити \" + name + \"?",
|
||||||
|
"deleteItemQuestionMessage": "Ви видаляєте \\\"\" + path + \"\\\"!<br/><br/>Це незворотня дія!",
|
||||||
|
"download": "Завантажити",
|
||||||
|
"editingFile": "Редагувати файл",
|
||||||
|
"error": "Помилка отримання файлів",
|
||||||
|
"fileReadError": "Помилка читання файлу",
|
||||||
|
"files": "Файли",
|
||||||
|
"keybindings": "Прив'язки клавіш",
|
||||||
|
"loadingRecords": "Завантаження файлів...",
|
||||||
|
"noDelete": "Ні",
|
||||||
|
"noscript": "Файловий менеджер не працює без JavaScript",
|
||||||
|
"rename": "Перейменувати",
|
||||||
|
"renameItemQuestion": "Яка нова назва файлу?",
|
||||||
|
"save": "Зберегти",
|
||||||
|
"size": "Перемкнути розмір редактора",
|
||||||
|
"stayHere": "НЕ ВИХОДЬТЕ З ЦІЄЇ СТОРІНКИ!",
|
||||||
|
"unsupportedLanguage": "Увага: Цей файл не підтримується",
|
||||||
|
"unzip": "Розархівувати",
|
||||||
|
"upload": "Вивантажити",
|
||||||
|
"uploadTitle": "Вивантажити файл до: ",
|
||||||
|
"waitUpload": "Будь ласка зачекати поки ми завантажимо вибрані файли... Це займе трішки часу.",
|
||||||
|
"yesDelete": "Так, я розумію наслідки"
|
||||||
|
},
|
||||||
|
"serverMetrics": {
|
||||||
|
"resetZoom": "Скинути приближення",
|
||||||
|
"zoomHint1": "Щоб збільшити графік, утримуйте клавішу Shift, а потім використовуйте колесо прокручування.",
|
||||||
|
"zoomHint2": "Або утримуйте клавішу Shift, а потім клацніть і перетягніть область, яку ви хочете збільшити."
|
||||||
|
},
|
||||||
|
"serverPlayerManagement": {
|
||||||
|
"bannedPlayers": "Заблоковані користувачі",
|
||||||
|
"loadingBannedPlayers": "Завантаження заблокованих користувачів",
|
||||||
|
"players": "Користувачі"
|
||||||
|
},
|
||||||
|
"serverScheduleConfig": {
|
||||||
|
"backup": "Бекап серверу",
|
||||||
|
"basic": "Базова",
|
||||||
|
"children": "Зв’язані дочірні завдання: ",
|
||||||
|
"command": "Команда",
|
||||||
|
"command-explain": "Яку команду потрібно виконати? Не враховується '/'",
|
||||||
|
"cron": "Cron",
|
||||||
|
"cron-explain": "Введіть свій рядок cron -- ПРИМІТКА: 0 = понеділок в останньому варіанті.",
|
||||||
|
"custom": "Користувацька команда",
|
||||||
|
"days": "Дні",
|
||||||
|
"enabled": "Увімкнути",
|
||||||
|
"hours": "Години",
|
||||||
|
"interval": "Інтервал",
|
||||||
|
"interval-explain": "Як часто ви хочете виконувати це заплановане завдання?",
|
||||||
|
"minutes": "Хвилини",
|
||||||
|
"offset": "Зсув затримки",
|
||||||
|
"offset-explain": "Скільки часу ми повинні чекати, щоб запустити це після запуску першого завдання? (Секунди)",
|
||||||
|
"one-time": "Видалити після виконання",
|
||||||
|
"parent": "Виберіть батьківське відкладене завдання",
|
||||||
|
"parent-explain": "Який з інших завдань має викликати цей?",
|
||||||
|
"reaction": "Реакція",
|
||||||
|
"restart": "Перезавантаження сервера",
|
||||||
|
"select": "Базова / Cron / Ланцюгова реакція",
|
||||||
|
"start": "Старт серверу",
|
||||||
|
"stop": "Вимкнення серверу",
|
||||||
|
"time": "Час",
|
||||||
|
"time-explain": "О котрій годині ви хочете виконувати свій розклад?"
|
||||||
|
},
|
||||||
|
"serverSchedules": {
|
||||||
|
"action": "Дія",
|
||||||
|
"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": "Вебхуки"
|
||||||
|
}
|
||||||
|
}
|
@ -327,6 +327,7 @@
|
|||||||
"bePatientDeleteFiles": "请耐心等待,我们正在从 Crafty 面板中移除服务器并删除所有文件。稍后此页面会关闭。",
|
"bePatientDeleteFiles": "请耐心等待,我们正在从 Crafty 面板中移除服务器并删除所有文件。稍后此页面会关闭。",
|
||||||
"bePatientUpdate": "请耐心等待,我们正在更新服务器。下载时长可能因您的网络速度而异。<br /> 稍后此页面会刷新",
|
"bePatientUpdate": "请耐心等待,我们正在更新服务器。下载时长可能因您的网络速度而异。<br /> 稍后此页面会刷新",
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
|
"countPlayers": "在玩家总数中包含服务器",
|
||||||
"crashTime": "崩溃超时",
|
"crashTime": "崩溃超时",
|
||||||
"crashTimeDesc": "我们应该在考虑您的服务器已崩溃之前等待多久?",
|
"crashTimeDesc": "我们应该在考虑您的服务器已崩溃之前等待多久?",
|
||||||
"deleteFilesQuestion": "从设备上删除服务器文件?",
|
"deleteFilesQuestion": "从设备上删除服务器文件?",
|
||||||
|
Loading…
Reference in New Issue
Block a user