diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 00000000..60213d6c
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,44 @@
+name: CI
+
+on:
+ push:
+ branches:
+ - public-server
+ - api9
+
+jobs:
+ run_server_binary:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.13'
+ - name: Set execute permissions for wrapper
+ run: chmod +x ./bombsquad_server
+
+ - name: Set execute permissions for binary
+ run: chmod +x ./dist/bombsquad_headless
+
+ - name: Run server binary and capture output
+ run: |
+ ./bombsquad_server > server-output.log 2>&1 &
+ SERVER_PID=$!
+ sleep 30 # let it run for 30 seconds
+ kill $SERVER_PID # terminate the server
+ - name: Check server output for success message
+ run: |
+ if grep -E "Exception|RuntimeError" server-output.log; then
+ echo "Error message found. Check server-output.log for details."
+ exit 1
+ elif ! grep -q "Server started" server-output.log; then
+ echo "Success message not found in server's output."
+ exit 1
+ fi
+ - name: Upload server output as artifact
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: server-output
+ path: ./server-output.log
diff --git a/.gitignore b/.gitignore
index 7f146b42..8fce3d27 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,11 @@ __pycache__/
*.py[cod]
*$py.class
.mypy_cache/
-dist/ba_root/mods/playerdata/*.json*
+.bsuuid
+.bsac2
+dist/ba_root/mods/playersdata/*.json*
dist/ba_root/mods/serverdata/*.log
dist/ba_root/mods/serverdata/*.log*
dist/ba_root/mods/serverdata/*.json
+dist/ba_root/mods/stats/*.json
+
diff --git a/dist/ba_root/mods/.idea/.gitignore b/.idea/.gitignore
similarity index 100%
rename from dist/ba_root/mods/.idea/.gitignore
rename to .idea/.gitignore
diff --git a/.idea/Bombsquad-Ballistica-Modded-Server.iml b/.idea/Bombsquad-Ballistica-Modded-Server.iml
new file mode 100644
index 00000000..34bf6e3b
--- /dev/null
+++ b/.idea/Bombsquad-Ballistica-Modded-Server.iml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dist/ba_root/mods/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
similarity index 100%
rename from dist/ba_root/mods/.idea/inspectionProfiles/profiles_settings.xml
rename to .idea/inspectionProfiles/profiles_settings.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..699c5dfc
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..4e55ed65
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..d3e5c734
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,7 @@
+{
+ "python.analysis.extraPaths": [
+ "./dist/ba_data/python",
+ "./dist/dummymodules",
+ "./dist/ba_data/python-site-packages"
+ ]
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 133f8a47..55dde9ed 100644
--- a/README.md
+++ b/README.md
@@ -1,34 +1,38 @@
# Bombsquad-Ballistica-Modded-Server
-Modded server scripts to host ballistica (Bombsquad) server. Running on BS1.7.19.
+Modded server scripts to host ballistica (BombSquad) server. Running on BS1.7.41 (API 9)
``
-We started working on API 8 , help us to test out and fix bugs
+Migrated from API 7 TO API 9 , this might be unstable and missing some features. Use API 7 from this tag
``
-[API8 BRANCH](https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server/tree/api8)
+[API7 ](https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server/releases/tag/1.7.26)
# Prerequisites
- Basic knowledge of Linux
- A VPS (e.g. [Amazon Web Services](https://aws.amazon.com/), [Microsoft Azure](https://portal.azure.com/))
- Any Linux distribution.
- - It is recommended to use Ubuntu.
-- Python 3.10
+ - It is recommended to use Ubuntu (minimum Ubuntu 22).
+- Python 3.13
- 1 GB free Memory (Recommended 2 GB)
## Getting Started
This assumes you are on Ubuntu or an Ubuntu based distribution.
-Update and install `software-properties-common`
+Install `software-properties-common`
```
-sudo apt update; sudo apt install software-properties-common -y
+sudo apt install software-properties-common -y
```
Add python Deadsnakes PPA
```
sudo add-apt-repository ppa:deadsnakes/ppa
```
-Install Python 3.10
+Install Python 3.13
```
-sudo apt install python3-pip python3.10-dev python3.10-venv
+sudo apt install python3.13 python3.13-dev python3.13-venv python3-pip -y
+```
+Update installed and existing packages
+```
+sudo apt update && sudo apt upgrade
```
Create a tmux session.
```
@@ -36,7 +40,7 @@ tmux new -s 43210
```
Download server files.
```
-git clone https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server
+git clone --depth=1 https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server
cd Bombsquad-Ballistica-Modded-Server
```
Now edit config.yaml in root dir change server name, port, admins, playlist, team name etc..
@@ -44,6 +48,7 @@ Making the server files executable.
```
chmod 777 bombsquad_server
chmod 777 dist/bombsquad_headless
+chmod 777 dist/bombsquad_headless_aarch64
```
Starting the server
```
@@ -85,7 +90,7 @@ Here you can ban players, mute them, or disable their kick votes.
- Allow server owners to join even when server is full by looking owner IP address which was used earlier(don't join by queue).
- Auto kick fake accounts (unsigned/not verified by master server).
- Auto enable/disable public queue when server is full.
-- Auto night mode .
+- Auto night mode.
- Transparent Kickvote , can see who started kick vote for whom.
- Kickvote msg to chat/screen , can choose to show kickvote start msg either as screen message or chat message.
- Players IP Address and Device UUID tracking and banning.
diff --git a/block_banned_ips.py b/block_banned_ips.py
new file mode 100644
index 00000000..39143695
--- /dev/null
+++ b/block_banned_ips.py
@@ -0,0 +1,65 @@
+import urllib.request
+import json
+import subprocess
+import threading
+
+# URL to fetch banned IPs
+BAN_LIST_URL = "https://bcsservers.ballistica.workers.dev/fetchbannedips"
+
+
+def fetch_banned_ips():
+ """Fetch the list of banned IPs from the server using urllib."""
+ try:
+ with urllib.request.urlopen(BAN_LIST_URL) as response:
+ data = response.read().decode('utf-8')
+ return json.loads(data)
+ except urllib.error.URLError as e:
+ print(f"Error fetching banned IPs: {e}")
+ return {}
+
+
+def is_ip_blocked(ip):
+ """Check if the IP is already blocked in iptables."""
+ try:
+ result = subprocess.run(
+ ["iptables", "-L", "-n", "-v"],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ text=True,
+ )
+ return ip in result.stdout
+ except Exception as e:
+ print(f"Error checking iptables for IP {ip}: {e}")
+ return False
+
+
+def block_ip(ip):
+ """Block the given IP for UDP traffic using iptables."""
+ try:
+ subprocess.run(
+ ["iptables", "-A", "INPUT", "-s", ip, "-p", "udp", "-j", "DROP"],
+ check=True,
+ )
+ print(f"Blocked IP: {ip}")
+ except subprocess.CalledProcessError as e:
+ print(f"Error blocking IP {ip}: {e}")
+
+
+def main():
+ """Main function to fetch banned IPs and block them."""
+ banned_ips = fetch_banned_ips()
+ for ip, details in banned_ips.items():
+ if not is_ip_blocked(ip):
+ print(
+ f"Blocking IP: {ip} (Reason: {details.get('reason', 'No reason provided')})")
+ block_ip(ip)
+ else:
+ print(f"IP {ip} is already blocked.")
+
+
+def schedule_main():
+ """Schedule the main function to run every hour."""
+ main()
+ print("Scheduled to run again in 1 hour...")
+ # Schedule to run after 1 hour
+ threading.Timer(3600, schedule_main).start()
diff --git a/bombsquad_server b/bombsquad_server
index 2ab76150..c82f94d8 100644
--- a/bombsquad_server
+++ b/bombsquad_server
@@ -1,105 +1,108 @@
-#!/usr/bin/env -S python3.10 -O
-
+#!/usr/bin/env python3.13
# Released under the MIT License. See LICENSE for details.
#
-"""BallisticaCore server manager."""
+# pylint: disable=too-many-lines
+"""BallisticaKit server manager."""
from __future__ import annotations
-import json
import os
-import signal
-import subprocess
import sys
import time
-import _thread
+import json
+import signal
+import tomllib
+import subprocess
+import platform
from pathlib import Path
from threading import Lock, Thread, current_thread
from typing import TYPE_CHECKING
-from nbstreamreader import NonBlockingStreamReader as NBSR
-
-ERROR_LOGGING=False
-
-
-import os,platform,shutil
-def migrate_to_aarch():
- maps = ["BridgitMash.so","FloatingIsland.so","InTheAir.so"]
- games = ["CanonFight.so","DuelElimination.so","FlappyBird.so","LaserTracer.so","MonkeyClimb.so","OneNightNoStand.so","RealSoccer.so",
- "SquidRace.so","StumbleRace.so","SubwayRun.so","UFOAttackGame.so"]
- features = ["StumbledScoreScreen.so"]
- tools = ["corelib.so"]
- root = os.path.realpath(".")+"/dist/ba_root"
- for map in maps:
- shutil.copy(root+"/mods/aarch64/"+map,root+'/mods/maps/'+map)
- for game in games:
- shutil.copyfile(root+"/mods/aarch64/"+game,root+'/mods/games/'+game)
- for f in features:
- shutil.copyfile(root+"/mods/aarch64/"+f,root+'/mods/features/'+f)
- for t in tools:
- shutil.copyfile(root+"/mods/aarch64/"+t,root+'/mods/tools/'+t)
- with open(".we_are_good","w") as f:
- pass
-# by default we have x86_64 setup
-# if we found aarch64 system copy required files
-if platform.processor() == 'aarch64':
- print("We are on aarch64 system")
- if os.path.exists(".we_are_good"):
- pass
- else:
- migrate_to_aarch()
+
# We make use of the bacommon and efro packages as well as site-packages
-# included with our bundled Ballistica dist, so we need to add those paths
-# before we import them.
+# included with our bundled Ballistica dist, so we need to add those
+# paths before we import them.
sys.path += [
str(Path(Path(__file__).parent, 'dist', 'ba_data', 'python')),
- str(Path(Path(__file__).parent, 'dist', 'ba_data', 'python-site-packages'))
+ str(Path(Path(__file__).parent, 'dist', 'ba_data', 'python-site-packages')),
]
-from bacommon.servermanager import ServerConfig, StartServerModeCommand
-from efro.dataclassio import dataclass_from_dict, dataclass_validate
-from efro.error import CleanError
from efro.terminal import Clr
+from efro.error import CleanError
+from efro.dataclassio import dataclass_from_dict, dataclass_validate
+from bacommon.servermanager import ServerConfig, StartServerModeCommand
if TYPE_CHECKING:
- from typing import Optional, Union
from types import FrameType
from bacommon.servermanager import ServerCommand
-VERSION_STR = '1.3'
-
+VERSION_STR = '1.3.2'
# Version history:
+#
+# 1.3.2
+#
+# - Updated to use Python 3.12.
+#
+# - Server config file is now in toml format instead of yaml.
+#
+# - Server config can now be set to a .json file OR a .toml file.
+# By default it will look for 'config.json' and then 'config.toml'
+# in the same dir as this script.
+#
# 1.3.1
-# Windows binary is now named BallisticaCoreHeadless.exe
+#
+# - Windows binary is now named 'BallisticaKitHeadless.exe'.
+#
# 1.3:
-# Added show_tutorial config option
-# Added team_names config option
-# Added team_colors config option
-# Added playlist_inline config option
+#
+# - Added show_tutorial config option.
+#
+# - Added team_names config option.
+#
+# - Added team_colors config option.
+#
+# - Added playlist_inline config option.
+#
# 1.2:
-# Added optional --help arg
-# Added --config arg for specifying config file and --root for ba_root path
-# Added noninteractive mode and --interactive/--noninteractive args to
-# explicitly enable/disable it (it is autodetected by default)
-# Added explicit control for auto-restart: --no-auto-restart
-# Config file is now reloaded each time server binary is restarted; no more
-# need to bring down server wrapper to pick up changes
-# Now automatically restarts server binary when config file is modified
-# (use --no-config-auto-restart to disable that behavior)
+#
+# - Added optional --help arg.
+#
+# - Added --config arg for specifying config file and --root for
+# ba_root path.
+#
+# - Added noninteractive mode and --interactive/--noninteractive args
+# to explicitly enable/disable it (it is autodetected by default).
+#
+# - Added explicit control for auto-restart: --no-auto-restart.
+#
+# - Config file is now reloaded each time server binary is restarted;
+# no more need to bring down server wrapper to pick up changes.
+#
+# - Now automatically restarts server binary when config file is
+# modified (use --no-config-auto-restart to disable that behavior).
+#
# 1.1.1:
-# Switched config reading to use efro.dataclasses.dataclass_from_dict()
+#
+# - Switched config reading to use
+# efro.dataclasses.dataclass_from_dict().
+#
# 1.1.0:
-# Added shutdown command
-# Changed restart to default to immediate=True
-# Added clean_exit_minutes, unclean_exit_minutes, and idle_exit_minutes
+#
+# - Added shutdown command.
+#
+# - Changed restart to default to immediate=True.
+#
+# - Added clean_exit_minutes, unclean_exit_minutes, and idle_exit_minutes.
+#
# 1.0.0:
-# Initial release
+#
+# - Initial release.
class ServerManagerApp:
- """An app which manages BallisticaCore server execution.
+ """An app which manages BallisticaKit server execution.
Handles configuring, launching, re-launching, and otherwise
- managing BallisticaCore operating in server mode.
+ managing BallisticaKit operating in server mode.
"""
# How many seconds we wait after asking our subprocess to do an immediate
@@ -107,36 +110,37 @@ class ServerManagerApp:
IMMEDIATE_SHUTDOWN_TIME_LIMIT = 5.0
def __init__(self) -> None:
- self._config_path = 'config.yaml'
- self._user_provided_config_path = False
+ self._user_provided_config_path: str | None = None
self._config = ServerConfig()
self._ba_root_path = os.path.abspath('dist/ba_root')
self._interactive = sys.stdin.isatty()
self._wrapper_shutdown_desired = False
self._done = False
- self._subprocess_commands: list[Union[str, ServerCommand]] = []
+ self._subprocess_commands: list[str | ServerCommand] = []
self._subprocess_commands_lock = Lock()
- self._subprocess_force_kill_time: Optional[float] = None
+ self._subprocess_force_kill_time: float | None = None
self._auto_restart = True
self._config_auto_restart = True
- self._config_mtime: Optional[float] = None
- self._last_config_mtime_check_time: Optional[float] = None
+ self._config_mtime: float | None = None
+ self._last_config_mtime_check_time: float | None = None
self._should_report_subprocess_error = False
self._running = False
- self._interpreter_start_time: Optional[float] = None
- self._subprocess: Optional[subprocess.Popen[bytes]] = None
- self._subprocess_launch_time: Optional[float] = None
+ self._interpreter_start_time: float | None = None
+ self._subprocess: subprocess.Popen[bytes] | None = None
+ self._subprocess_launch_time: float | None = None
self._subprocess_sent_config_auto_restart = False
self._subprocess_sent_clean_exit = False
self._subprocess_sent_unclean_exit = False
- self._subprocess_thread: Optional[Thread] = None
- self._subprocess_exited_cleanly: Optional[bool] = None
- self.nbsr = None
+ self._subprocess_thread: Thread | None = None
+ self._subprocess_exited_cleanly: bool | None = None
+ self._did_multi_config_warning = False
+
# This may override the above defaults.
self._parse_command_line_args()
- # Do an initial config-load. If the config is invalid at this point
- # we can cleanly die (we're more lenient later on reloads).
+ # Do an initial config-load. If the config is invalid at this
+ # point we can cleanly die; we're more resilient later on reload
+ # attempts.
self.load_config(strict=True, print_confirmation=False)
@property
@@ -159,14 +163,15 @@ class ServerManagerApp:
dbgstr = 'debug' if __debug__ else 'opt'
print(
- f'{Clr.CYN}{Clr.BLD}Bcs server manager {VERSION_STR}'
+ f'{Clr.CYN}{Clr.BLD}BCS server manager {VERSION_STR}'
f' starting up ({dbgstr} mode)...{Clr.RST}',
- flush=True)
+ flush=True,
+ )
# Python will handle SIGINT for us (as KeyboardInterrupt) but we
- # need to register a SIGTERM handler so we have a chance to clean
- # up our subprocess when someone tells us to die. (and avoid
- # zombie processes)
+ # need to register a SIGTERM handler so we have a chance to
+ # clean up our subprocess when someone tells us to die. (and
+ # avoid zombie processes)
signal.signal(signal.SIGTERM, self._handle_term_signal)
# During a run, we make the assumption that cwd is the dir
@@ -184,10 +189,12 @@ class ServerManagerApp:
assert self._subprocess_thread is not None
if self._subprocess_thread.is_alive():
- print(f'{Clr.CYN}Waiting for subprocess exit...{Clr.RST}',
- flush=True)
+ print(
+ f'{Clr.CYN}Waiting for subprocess exit...{Clr.RST}', flush=True
+ )
- # Mark ourselves as shutting down and wait for the process to wrap up.
+ # Mark ourselves as shutting down and wait for the process to
+ # wrap up.
self._done = True
self._subprocess_thread.join()
@@ -213,15 +220,17 @@ class ServerManagerApp:
# Gracefully bow out if we kill ourself via keyboard.
pass
except SystemExit:
- # We get this from the builtin quit(), our signal handler, etc.
- # Need to catch this so we can clean up, otherwise we'll be
- # left in limbo with our process thread still running.
+ # We get this from the builtin quit(), our signal handler,
+ # etc. Need to catch this so we can clean up, otherwise
+ # we'll be left in limbo with our process thread still
+ # running.
pass
self._postrun()
def _run_interactive(self) -> None:
"""Run the app loop to completion interactively."""
import code
+
self._prerun()
# Print basic usage info for interactive mode.
@@ -229,7 +238,8 @@ class ServerManagerApp:
f"{Clr.CYN}Interactive mode enabled; use the 'mgr' object"
f' to interact with the server.\n'
f"Type 'help(mgr)' for more information.{Clr.RST}",
- flush=True)
+ flush=True,
+ )
context = {'__name__': '__console__', '__doc__': None, 'mgr': self}
@@ -237,20 +247,24 @@ class ServerManagerApp:
self._enable_tab_completion(context)
# Now just sit in an interpreter.
- # TODO: make it possible to use IPython if the user has it available.
+ #
+ # TODO: make it possible to use IPython if the user has it
+ # available.
try:
self._interpreter_start_time = time.time()
code.interact(local=context, banner='', exitmsg='')
except SystemExit:
- # We get this from the builtin quit(), our signal handler, etc.
- # Need to catch this so we can clean up, otherwise we'll be
- # left in limbo with our process thread still running.
+ # We get this from the builtin quit(), our signal handler,
+ # etc. Need to catch this so we can clean up, otherwise
+ # we'll be left in limbo with our process thread still
+ # running.
pass
except BaseException as exc:
print(
f'{Clr.SRED}Unexpected interpreter exception:'
f' {exc} ({type(exc)}){Clr.RST}',
- flush=True)
+ flush=True,
+ )
self._postrun()
@@ -267,54 +281,62 @@ class ServerManagerApp:
self._block_for_command_completion()
def _block_for_command_completion(self) -> None:
- # Ideally we'd block here until the command was run so our prompt would
- # print after it's results. We currently don't get any response from
- # the app so the best we can do is block until our bg thread has sent
- # it. In the future we can perhaps add a proper 'command port'
- # interface for proper blocking two way communication.
+ # Ideally we'd block here until the command was run so our
+ # prompt would print after it's results. We currently don't get
+ # any response from the app so the best we can do is block until
+ # our bg thread has sent it. In the future we can perhaps add a
+ # proper 'command port' interface for proper blocking two way
+ # communication.
while True:
with self._subprocess_commands_lock:
if not self._subprocess_commands:
break
time.sleep(0.1)
- # One last short delay so if we come out *just* as the command is sent
- # we'll hopefully still give it enough time to process/print.
+ # One last short delay so if we come out *just* as the command
+ # is sent we'll hopefully still give it enough time to
+ # process/print.
time.sleep(0.1)
- def screenmessage(self,
- message: str,
- color: Optional[tuple[float, float, float]] = None,
- clients: Optional[list[int]] = None) -> None:
+ def screenmessage(
+ self,
+ message: str,
+ color: tuple[float, float, float] | None = None,
+ clients: list[int] | None = None,
+ ) -> None:
"""Display a screen-message.
This will have no name attached and not show up in chat history.
They will show up in replays, however (unless clients is passed).
"""
from bacommon.servermanager import ScreenMessageCommand
+
self._enqueue_server_command(
- ScreenMessageCommand(message=message, color=color,
- clients=clients))
+ ScreenMessageCommand(message=message, color=color, clients=clients)
+ )
- def chatmessage(self,
- message: str,
- clients: Optional[list[int]] = None) -> None:
+ def chatmessage(
+ self, message: str, clients: list[int] | None = None
+ ) -> None:
"""Send a chat message from the server.
This will have the server's name attached and will be logged
in client chat windows, just like other chat messages.
"""
from bacommon.servermanager import ChatMessageCommand
+
self._enqueue_server_command(
- ChatMessageCommand(message=message, clients=clients))
+ ChatMessageCommand(message=message, clients=clients)
+ )
def clientlist(self) -> None:
"""Print a list of connected clients."""
from bacommon.servermanager import ClientListCommand
+
self._enqueue_server_command(ClientListCommand())
self._block_for_command_completion()
- def kick(self, client_id: int, ban_time: Optional[int] = None) -> None:
+ def kick(self, client_id: int, ban_time: int | None = None) -> None:
"""Kick the client with the provided id.
If ban_time is provided, the client will be banned for that
@@ -323,8 +345,10 @@ class ServerManagerApp:
ban time.
"""
from bacommon.servermanager import KickCommand
+
self._enqueue_server_command(
- KickCommand(client_id=client_id, ban_time=ban_time))
+ KickCommand(client_id=client_id, ban_time=ban_time)
+ )
def restart(self, immediate: bool = True) -> None:
"""Restart the server subprocess.
@@ -334,15 +358,19 @@ class ServerManagerApp:
the next clean transition point (the end of a series, etc).
"""
from bacommon.servermanager import ShutdownCommand, ShutdownReason
+
self._enqueue_server_command(
- ShutdownCommand(reason=ShutdownReason.RESTARTING,
- immediate=immediate))
+ ShutdownCommand(
+ reason=ShutdownReason.RESTARTING, immediate=immediate
+ )
+ )
- # If we're asking for an immediate restart but don't get one within
- # the grace period, bring down the hammer.
+ # If we're asking for an immediate restart but don't get one
+ # within the grace period, bring down the hammer.
if immediate:
self._subprocess_force_kill_time = (
- time.time() + self.IMMEDIATE_SHUTDOWN_TIME_LIMIT)
+ time.time() + self.IMMEDIATE_SHUTDOWN_TIME_LIMIT
+ )
def shutdown(self, immediate: bool = True) -> None:
"""Shut down the server subprocess and exit the wrapper.
@@ -352,18 +380,21 @@ class ServerManagerApp:
the next clean transition point (the end of a series, etc).
"""
from bacommon.servermanager import ShutdownCommand, ShutdownReason
+
self._enqueue_server_command(
- ShutdownCommand(reason=ShutdownReason.NONE, immediate=immediate))
+ ShutdownCommand(reason=ShutdownReason.NONE, immediate=immediate)
+ )
- # An explicit shutdown means we know to bail completely once this
- # subprocess completes.
+ # An explicit shutdown means we know to bail completely once
+ # this subprocess completes.
self._wrapper_shutdown_desired = True
- # If we're asking for an immediate shutdown but don't get one within
- # the grace period, bring down the hammer.
+ # If we're asking for an immediate shutdown but don't get one
+ # within the grace period, bring down the hammer.
if immediate:
self._subprocess_force_kill_time = (
- time.time() + self.IMMEDIATE_SHUTDOWN_TIME_LIMIT)
+ time.time() + self.IMMEDIATE_SHUTDOWN_TIME_LIMIT
+ )
def _parse_command_line_args(self) -> None:
"""Parse command line args."""
@@ -386,29 +417,33 @@ class ServerManagerApp:
f"Supplied path does not exist: '{path}'.")
# We need an abs path because we may be in a different
# cwd currently than we will be during the run.
- self._config_path = os.path.abspath(path)
- self._user_provided_config_path = True
+ self._user_provided_config_path = os.path.abspath(path)
i += 2
elif arg == '--root':
if i + 1 >= argc:
raise CleanError('Expected a path as next arg.')
path = sys.argv[i + 1]
- # Unlike config_path, this one doesn't have to exist now.
- # We do however need an abs path because we may be in a
- # different cwd currently than we will be during the run.
+ # Unlike config_path, this one doesn't have to exist
+ # now. We do however need an abs path because we may be
+ # in a different cwd currently than we will be during
+ # the run.
self._ba_root_path = os.path.abspath(path)
i += 2
elif arg == '--interactive':
if did_set_interactive:
- raise CleanError('interactive/noninteractive can only'
- ' be specified once.')
+ raise CleanError(
+ 'interactive/noninteractive can only'
+ ' be specified once.'
+ )
self._interactive = True
did_set_interactive = True
i += 1
elif arg == '--noninteractive':
if did_set_interactive:
- raise CleanError('interactive/noninteractive can only'
- ' be specified once.')
+ raise CleanError(
+ 'interactive/noninteractive can only'
+ ' be specified once.'
+ )
self._interactive = False
did_set_interactive = True
i += 1
@@ -425,6 +460,7 @@ class ServerManagerApp:
def _par(cls, txt: str) -> str:
"""Spit out a pretty paragraph for our help text."""
import textwrap
+
ind = ' ' * 2
out = textwrap.fill(txt, 80, initial_indent=ind, subsequent_indent=ind)
return f'{out}\n'
@@ -434,50 +470,65 @@ class ServerManagerApp:
"""Print app help."""
filename = os.path.basename(__file__)
out = (
- f'{Clr.BLD}{filename} usage:{Clr.RST}\n' + cls._par(
- 'This script handles configuring, launching, re-launching,'
- ' and otherwise managing BallisticaCore operating'
- ' in server mode. It can be run with no arguments, but'
- ' accepts the following optional ones:') + f'\n'
- f'{Clr.BLD}--help:{Clr.RST}\n'
- f' Show this help.\n'
- f'\n'
- f'{Clr.BLD}--config [path]{Clr.RST}\n' + cls._par(
- 'Set the config file read by the server script. The config'
- ' file contains most options for what kind of game to host.'
- ' It should be in yaml format. Note that yaml is backwards'
- ' compatible with json so you can just write json if you'
- ' want to. If not specified, the script will look for a'
- ' file named \'config.yaml\' in the same directory as the'
- ' script.') + '\n'
- f'{Clr.BLD}--root [path]{Clr.RST}\n' + cls._par(
- 'Set the ballistica root directory. This is where the server'
- ' binary will read and write its caches, state files,'
- ' downloaded assets to, etc. It needs to be a writable'
- ' directory. If not specified, the script will use the'
- ' \'dist/ba_root\' directory relative to itself.') + '\n'
- f'{Clr.BLD}--interactive{Clr.RST}\n'
- f'{Clr.BLD}--noninteractive{Clr.RST}\n' + cls._par(
- 'Specify whether the script should run interactively.'
- ' In interactive mode, the script creates a Python interpreter'
- ' and reads commands from stdin, allowing for live interaction'
- ' with the server. The server script will then exit when '
- 'end-of-file is reached in stdin. Noninteractive mode creates'
- ' no interpreter and is more suited to being run in automated'
- ' scenarios. By default, interactive mode will be used if'
- ' a terminal is detected and noninteractive mode otherwise.') +
- '\n'
- f'{Clr.BLD}--no-auto-restart{Clr.RST}\n' +
- cls._par('Auto-restart is enabled by default, which means the'
- ' server manager will restart the server binary whenever'
- ' it exits (even when uncleanly). Disabling auto-restart'
- ' will cause the server manager to instead exit after a'
- ' single run and also to return error codes if the'
- ' server binary did so.') + '\n'
- f'{Clr.BLD}--no-config-auto-restart{Clr.RST}\n' + cls._par(
- 'By default, when auto-restart is enabled, the server binary'
- ' will be automatically restarted if changes to the server'
- ' config file are detected. This disables that behavior.'))
+ f'{Clr.BLD}{filename} usage:{Clr.RST}\n'
+ + cls._par(
+ 'This script handles configuring, launching, re-launching,'
+ ' and otherwise managing BallisticaKit operating'
+ ' in server mode. It can be run with no arguments, but'
+ ' accepts the following optional ones:'
+ )
+ + f'\n'
+ f'{Clr.BLD}--help:{Clr.RST}\n'
+ f' Show this help.\n'
+ f'\n'
+ f'{Clr.BLD}--config [path]{Clr.RST}\n'
+ + cls._par(
+ 'Set the config file read by the server script. The config'
+ ' file contains most options for what kind of game to host.'
+ ' It should be in toml or json format. If not specified,'
+ ' the script will look for a file named \'config.toml\' or'
+ ' \'config.json\' in the same directory as the script.'
+ )
+ + '\n'
+ f'{Clr.BLD}--root [path]{Clr.RST}\n'
+ + cls._par(
+ 'Set the ballistica root directory. This is where the server'
+ ' binary will read and write its caches, state files,'
+ ' downloaded assets to, etc. It needs to be a writable'
+ ' directory. If not specified, the script will use the'
+ ' \'dist/ba_root\' directory relative to itself.'
+ )
+ + '\n'
+ f'{Clr.BLD}--interactive{Clr.RST}\n'
+ f'{Clr.BLD}--noninteractive{Clr.RST}\n'
+ + cls._par(
+ 'Specify whether the script should run interactively.'
+ ' In interactive mode, the script creates a Python interpreter'
+ ' and reads commands from stdin, allowing for live interaction'
+ ' with the server. The server script will then exit when '
+ 'end-of-file is reached in stdin. Noninteractive mode creates'
+ ' no interpreter and is more suited to being run in automated'
+ ' scenarios. By default, interactive mode will be used if'
+ ' a terminal is detected and noninteractive mode otherwise.'
+ )
+ + '\n'
+ f'{Clr.BLD}--no-auto-restart{Clr.RST}\n'
+ + cls._par(
+ 'Auto-restart is enabled by default, which means the'
+ ' server manager will restart the server binary whenever'
+ ' it exits (even when uncleanly). Disabling auto-restart'
+ ' will cause the server manager to instead exit after a'
+ ' single run and also to return error codes if the'
+ ' server binary did so.'
+ )
+ + '\n'
+ f'{Clr.BLD}--no-config-auto-restart{Clr.RST}\n'
+ + cls._par(
+ 'By default, when auto-restart is enabled, the server binary'
+ ' will be automatically restarted if changes to the server'
+ ' config file are detected. This disables that behavior.'
+ )
+ )
print(out)
def load_config(self, strict: bool, print_confirmation: bool) -> None:
@@ -493,29 +544,35 @@ class ServerManagerApp:
for trynum in range(maxtries):
try:
self._config = self._load_config_from_file(
- print_confirmation=print_confirmation)
+ print_confirmation=print_confirmation
+ )
return
except Exception as exc:
-
+ json_path = os.path.abspath(
+ os.path.join(os.path.dirname(__file__), 'config.json')
+ )
print(f'{Clr.RED}Error loading config file:\n{exc}.{Clr.RST}',
flush=True)
- with open(self._ba_root_path + "/mods/defaults/config.yaml", "r") as infile:
+ with open(self._ba_root_path + "/mods/defaults/config.json", "r") as infile:
default_file = infile.read()
- with open(self._config_path, "w") as outfile:
+ with open(json_path, "w") as outfile:
outfile.write(default_file)
print("config reset done")
+
if trynum == maxtries - 1:
print(
f'{Clr.RED}Max-tries reached; giving up.'
f' Existing config values will be used.{Clr.RST}',
- flush=True)
+ flush=True,
+ )
break
print(
f'{Clr.CYN}Please correct the error.'
f' Will re-attempt load in {retry_seconds}'
- f' seconds. (attempt {trynum + 1} of'
- f' {maxtries - 1}).{Clr.RST}',
- flush=True)
+ f' seconds. (attempt {trynum+1} of'
+ f' {maxtries-1}).{Clr.RST}',
+ flush=True,
+ )
for _j in range(retry_seconds):
# If the app is trying to die, drop what we're doing.
@@ -523,50 +580,82 @@ class ServerManagerApp:
return
time.sleep(1)
- def _load_config_from_file(self, print_confirmation: bool) -> ServerConfig:
+ def _get_config_path(self) -> str:
+
+ if self._user_provided_config_path is not None:
+ return self._user_provided_config_path
+
+ # Otherwise look for config.toml or config.json in the same dir
+ # as our script. Need to work in abs paths since we may chdir when
+ # we start running.
+ toml_path = os.path.abspath(
+ os.path.join(os.path.dirname(__file__), 'config.toml')
+ )
+ toml_exists = os.path.exists(toml_path)
+ json_path = os.path.abspath(
+ os.path.join(os.path.dirname(__file__), 'config.json')
+ )
+ json_exists = os.path.exists(json_path)
+
+ # Warn if both configs are present.
+ if toml_exists and json_exists and not self._did_multi_config_warning:
+ self._did_multi_config_warning = True
+ print(
+ f'{Clr.YLW}Both config.toml and config.json'
+ f' found; will use json.{Clr.RST}',
+ flush=True,
+ )
+ if json_exists:
+ return json_path
+ return toml_path
- out: Optional[ServerConfig] = None
+ def _load_config_from_file(self, print_confirmation: bool) -> ServerConfig:
+ out: ServerConfig | None = None
- if not os.path.exists(self._config_path):
+ config_path = self._get_config_path()
+ if not os.path.exists(config_path):
# Special case:
- # If the user didn't specify a particular config file, allow
- # gracefully falling back to defaults if the default one is
- # missing.
+ #
+ # If the user didn't provide a config path AND the default
+ # config path does not exist, fall back to defaults.
if not self._user_provided_config_path:
if print_confirmation:
print(
f'{Clr.YLW}Default config file not found'
- f' (\'{self._config_path}\'); using default'
- f' settings.{Clr.RST}',
- flush=True)
+ f' (\'{config_path}\'); using default'
+ f' config.{Clr.RST}',
+ flush=True,
+ )
self._config_mtime = None
self._last_config_mtime_check_time = time.time()
return ServerConfig()
# Don't be so lenient if the user pointed us at one though.
- raise RuntimeError(
- f"Config file not found: '{self._config_path}'.")
+ raise RuntimeError(f"Config file not found: '{config_path}'.")
- import yaml
- with open(self._config_path, encoding='utf-8') as infile:
- user_config_raw = yaml.safe_load(infile.read())
+ with open(config_path, encoding='utf-8') as infile:
+ if config_path.endswith('.toml'):
+ user_config_raw = tomllib.loads(infile.read())
+ elif config_path.endswith('.json'):
+ user_config_raw = json.loads(infile.read())
+ else:
+ raise CleanError(
+ f"Invalid config file path '{config_path}';"
+ f" path must end with '.toml' or '.json'."
+ )
- # An empty config file will yield None, and that's ok.
- if user_config_raw is not None:
- out = dataclass_from_dict(ServerConfig, user_config_raw)
+ out = dataclass_from_dict(ServerConfig, user_config_raw)
# Update our known mod-time since we know it exists.
- self._config_mtime = Path(self._config_path).stat().st_mtime
+ self._config_mtime = Path(config_path).stat().st_mtime
self._last_config_mtime_check_time = time.time()
- # Go with defaults if we weren't able to load anything.
- if out is None:
- out = ServerConfig()
-
if print_confirmation:
- print(f'{Clr.CYN}Valid server config file loaded.{Clr.RST}',
- flush=True)
+ print(
+ f'{Clr.CYN}Valid server config file loaded.{Clr.RST}',
+ flush=True,
+ )
return out
def _enable_tab_completion(self, locs: dict) -> None:
@@ -574,6 +663,7 @@ class ServerManagerApp:
try:
import readline
import rlcompleter
+
readline.set_completer(rlcompleter.Completer(locs).complete)
readline.parse_and_bind('tab:complete')
except ImportError:
@@ -585,7 +675,7 @@ class ServerManagerApp:
while not self._done:
self._run_server_cycle()
- def _handle_term_signal(self, sig: int, frame: FrameType) -> None:
+ def _handle_term_signal(self, sig: int, frame: FrameType | None) -> None:
"""Handle signals (will always run in the main thread)."""
del sig, frame # Unused.
sys.exit(1 if self._should_report_subprocess_error else 0)
@@ -594,25 +684,35 @@ class ServerManagerApp:
"""Spin up the server subprocess and run it until exit."""
# pylint: disable=consider-using-with
- # Reload our config, and update our overall behavior based on it.
- # We do non-strict this time to give the user repeated attempts if
- # if they mess up while modifying the config on the fly.
+ # Reload our config, and update our overall behavior based on
+ # it. We do non-strict this time to give the user repeated
+ # attempts if if they mess up while modifying the config on the
+ # fly.
self.load_config(strict=False, print_confirmation=True)
self._prep_subprocess_environment()
- # Launch the binary and grab its stdin;
- # we'll use this to feed it commands.
+ # Launch the binary and grab its stdin; we'll use this to feed
+ # it commands.
self._subprocess_launch_time = time.time()
# Set an environment var so the server process knows its being
- # run under us. This causes it to ignore ctrl-c presses and other
- # slight behavior tweaks. Hmm; should this be an argument instead?
+ # run under us. This causes it to ignore ctrl-c presses and
+ # other slight behavior tweaks. Hmm; should this be an argument
+ # instead?
os.environ['BA_SERVER_WRAPPER_MANAGED'] = '1'
+
+ # Set an environment var to change the device name. Device name
+ # is used while making connection with master server,
+ # cloud-console recognize us with this name.
os.environ['BA_DEVICE_NAME'] = self._config.party_name
+
print(f'{Clr.CYN}Launching server subprocess...{Clr.RST}', flush=True)
- binary_name = ('BallisticaCoreHeadless.exe'
- if os.name == 'nt' else './bombsquad_headless')
+ binary_name = (
+ 'BallisticaKitHeadless.exe'
+ if os.name == 'nt'
+ else './bombsquad_headless'
+ )
if platform.processor() == 'aarch64':
binary_name = './bombsquad_headless_aarch64'
assert self._ba_root_path is not None
@@ -620,51 +720,48 @@ class ServerManagerApp:
# Launch!
try:
- if ERROR_LOGGING:
- self._subprocess = subprocess.Popen(
- [binary_name, '-cfgdir', self._ba_root_path],
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- cwd='dist')
-
- self.nbsr = NBSR(self._subprocess.stdout)
- self.nbsrerr = NBSR(self._subprocess.stderr)
- else:
- self._subprocess = subprocess.Popen(
- [binary_name, '-cfgdir', self._ba_root_path],
- stdin=subprocess.PIPE,
- cwd='dist')
-
+ self._subprocess = subprocess.Popen(
+ [binary_name, '--config-dir', self._ba_root_path],
+ stdin=subprocess.PIPE,
+ cwd='dist',
+ )
except Exception as exc:
self._subprocess_exited_cleanly = False
print(
f'{Clr.RED}Error launching server subprocess: {exc}{Clr.RST}',
- flush=True)
+ flush=True,
+ )
# Do the thing.
try:
self._run_subprocess_until_exit()
-
except Exception as exc:
- print(f'{Clr.RED}Error running server subprocess: {exc}{Clr.RST}',
- flush=True)
+ print(
+ f'{Clr.RED}Error running server subprocess: {exc}{Clr.RST}',
+ flush=True,
+ )
self._kill_subprocess()
assert self._subprocess_exited_cleanly is not None
- # EW: it seems that if we die before the main thread has fully started
- # up the interpreter, its possible that it will not break out of its
- # loop via the usual SystemExit that gets sent when we die.
+ # EW: it seems that if we die before the main thread has fully
+ # started up the interpreter, its possible that it will not
+ # break out of its loop via the usual SystemExit that gets sent
+ # when we die.
if self._interactive:
- while (self._interpreter_start_time is None
- or time.time() - self._interpreter_start_time < 0.5):
+ while (
+ self._interpreter_start_time is None
+ or time.time() - self._interpreter_start_time < 0.5
+ ):
time.sleep(0.1)
# Avoid super fast death loops.
- if (not self._subprocess_exited_cleanly and self._auto_restart
- and not self._done):
+ if (
+ not self._subprocess_exited_cleanly
+ and self._auto_restart
+ and not self._done
+ ):
time.sleep(5.0)
# If they don't want auto-restart, we'll exit the whole wrapper.
@@ -679,10 +776,9 @@ class ServerManagerApp:
# If we want to die completely after this subprocess has ended,
# tell the main thread to die.
if self._wrapper_shutdown_desired:
-
# Only do this if the main thread is not already waiting for
- # us to die; otherwise it can lead to deadlock.
- # (we hang in os.kill while main thread is blocked in Thread.join)
+ # us to die; otherwise it can lead to deadlock. (we hang in
+ # os.kill while main thread is blocked in Thread.join)
if not self._done:
self._done = True
@@ -703,12 +799,15 @@ class ServerManagerApp:
bincfg = {}
# Some of our config values translate directly into the
- # ballisticacore config file; the rest we pass at runtime.
- port = int(os.environ.get('PORT', self._config.port))
- bincfg['Port'] = port
+
+ # ballisticakit config file; the rest we pass at runtime.
+ bincfg['Port'] = int(os.environ.get('PORT', self._config.port))
+
bincfg['Auto Balance Teams'] = self._config.auto_balance_teams
bincfg['Show Tutorial'] = self._config.show_tutorial
+ if self._config.protocol_version is not None:
+ bincfg['SceneV1 Host Protocol'] = self._config.protocol_version
if self._config.team_names is not None:
bincfg['Custom Team Names'] = self._config.team_names
elif 'Custom Team Names' in bincfg:
@@ -737,13 +836,16 @@ class ServerManagerApp:
Must be called from the server process thread.
"""
import pickle
+
assert current_thread() is self._subprocess_thread
assert self._subprocess is not None
assert self._subprocess.stdin is not None
val = repr(pickle.dumps(command))
assert '\n' not in val
- execcode = (f'import ba._servermode;'
- f' ba._servermode._cmd({val})\n').encode()
+ execcode = (
+ f'import baclassic._servermode;'
+ f' baclassic._servermode._cmd({val})\n'
+ ).encode()
self._subprocess.stdin.write(execcode)
self._subprocess.stdin.flush()
@@ -754,32 +856,21 @@ class ServerManagerApp:
assert current_thread() is self._subprocess_thread
assert self._subprocess.stdin is not None
- # Send the initial server config which should kick things off.
- # (but make sure its values are still valid first)
+ # Send the initial server config which should kick things off
+ # (but make sure its values are still valid first).
dataclass_validate(self._config)
self._send_server_command(StartServerModeCommand(self._config))
while True:
-
# If the app is trying to shut down, nope out immediately.
if self._done:
break
- # output=self._subprocess.stdout.readline()
- # print(output)
- if ERROR_LOGGING:
- out = self.nbsr.readline(0.1)
- out2 = self.nbsrerr.readline(0.1)
- if out:
- sys.stdout.write(out.decode("utf-8"))
- _thread.start_new_thread(dump_logs, (out.decode("utf-8"),))
- if out2:
- sys.stdout.write(out2.decode("utf-8"))
- _thread.start_new_thread(dump_logs, (out2.decode("utf-8"),))
+
# Pass along any commands to our process.
with self._subprocess_commands_lock:
for incmd in self._subprocess_commands:
- # If we're passing a raw string to exec, no need to wrap it
- # in any proper structure.
+ # If we're passing a raw string to exec, no need to
+ # wrap it in any proper structure.
if isinstance(incmd, str):
self._subprocess.stdin.write((incmd + '\n').encode())
self._subprocess.stdin.flush()
@@ -790,28 +881,31 @@ class ServerManagerApp:
# Request restarts/shut-downs for various reasons.
self._request_shutdowns_or_restarts()
- # If they want to force-kill our subprocess, simply exit this
- # loop; the cleanup code will kill the process if its still
- # alive.
-
- if (self._subprocess_force_kill_time is not None
- and time.time() > self._subprocess_force_kill_time):
+ # If they want to force-kill our subprocess, simply exit
+ # this loop; the cleanup code will kill the process if its
+ # still alive.
+ if (
+ self._subprocess_force_kill_time is not None
+ and time.time() > self._subprocess_force_kill_time
+ ):
print(
f'{Clr.CYN}Immediate shutdown time limit'
f' ({self.IMMEDIATE_SHUTDOWN_TIME_LIMIT:.1f} seconds)'
f' expired; force-killing subprocess...{Clr.RST}',
- flush=True)
+ flush=True,
+ )
break
# Watch for the server process exiting..
- code: Optional[int] = self._subprocess.poll()
+ code: int | None = self._subprocess.poll()
if code is not None:
clr = Clr.CYN if code == 0 else Clr.RED
print(
f'{clr}Server subprocess exited'
f' with code {code}.{Clr.RST}',
- flush=True)
- self._subprocess_exited_cleanly = (code == 0)
+ flush=True,
+ )
+ self._subprocess_exited_cleanly = code == 0
break
time.sleep(0.25)
@@ -824,62 +918,77 @@ class ServerManagerApp:
minutes_since_launch = (now - self._subprocess_launch_time) / 60.0
# If we're doing auto-restart with config changes, handle that.
- if (self._auto_restart and self._config_auto_restart
- and not self._subprocess_sent_config_auto_restart):
- if (self._last_config_mtime_check_time is None
- or (now - self._last_config_mtime_check_time) > 3.123):
+ if (
+ self._auto_restart
+ and self._config_auto_restart
+ and not self._subprocess_sent_config_auto_restart
+ ):
+ if (
+ self._last_config_mtime_check_time is None
+ or (now - self._last_config_mtime_check_time) > 3.123
+ ):
self._last_config_mtime_check_time = now
- mtime: Optional[float]
- if os.path.isfile(self._config_path):
- mtime = Path(self._config_path).stat().st_mtime
+ mtime: float | None
+ config_path = self._get_config_path()
+ if os.path.isfile(config_path):
+ mtime = Path(config_path).stat().st_mtime
else:
mtime = None
if mtime != self._config_mtime:
print(
f'{Clr.CYN}Config-file change detected;'
f' requesting immediate restart.{Clr.RST}',
- flush=True)
+ flush=True,
+ )
self.restart(immediate=True)
self._subprocess_sent_config_auto_restart = True
- # Attempt clean exit if our clean-exit-time passes.
- # (and enforce a 6 hour max if not provided)
+ # Attempt clean exit if our clean-exit-time passes (and enforce
+ # a 6 hour max if not provided).
clean_exit_minutes = 360.0
if self._config.clean_exit_minutes is not None:
- clean_exit_minutes = min(clean_exit_minutes,
- self._config.clean_exit_minutes)
+ clean_exit_minutes = min(
+ clean_exit_minutes, self._config.clean_exit_minutes
+ )
if clean_exit_minutes is not None:
- if (minutes_since_launch > clean_exit_minutes
- and not self._subprocess_sent_clean_exit):
+ if (
+ minutes_since_launch > clean_exit_minutes
+ and not self._subprocess_sent_clean_exit
+ ):
opname = 'restart' if self._auto_restart else 'shutdown'
print(
f'{Clr.CYN}clean_exit_minutes'
f' ({clean_exit_minutes})'
f' elapsed; requesting soft'
f' {opname}.{Clr.RST}',
- flush=True)
+ flush=True,
+ )
if self._auto_restart:
self.restart(immediate=False)
else:
self.shutdown(immediate=False)
self._subprocess_sent_clean_exit = True
- # Attempt unclean exit if our unclean-exit-time passes.
- # (and enforce a 7 hour max if not provided)
+ # Attempt unclean exit if our unclean-exit-time passes (and
+ # enforce a 7 hour max if not provided).
unclean_exit_minutes = 420.0
if self._config.unclean_exit_minutes is not None:
- unclean_exit_minutes = min(unclean_exit_minutes,
- self._config.unclean_exit_minutes)
+ unclean_exit_minutes = min(
+ unclean_exit_minutes, self._config.unclean_exit_minutes
+ )
if unclean_exit_minutes is not None:
- if (minutes_since_launch > unclean_exit_minutes
- and not self._subprocess_sent_unclean_exit):
+ if (
+ minutes_since_launch > unclean_exit_minutes
+ and not self._subprocess_sent_unclean_exit
+ ):
opname = 'restart' if self._auto_restart else 'shutdown'
print(
f'{Clr.CYN}unclean_exit_minutes'
f' ({unclean_exit_minutes})'
f' elapsed; requesting immediate'
f' {opname}.{Clr.RST}',
- flush=True)
+ flush=True,
+ )
if self._auto_restart:
self.restart(immediate=True)
else:
@@ -903,13 +1012,12 @@ class ServerManagerApp:
print(f'{Clr.CYN}Stopping subprocess...{Clr.RST}', flush=True)
- # First, ask it nicely to die and give it a moment.
- # If that doesn't work, bring down the hammer.
+ # First, ask it nicely to die and give it a moment. If that
+ # doesn't work, bring down the hammer.
self._subprocess.terminate()
try:
self._subprocess.wait(timeout=10)
- self._subprocess_exited_cleanly = (
- self._subprocess.returncode == 0)
+ self._subprocess_exited_cleanly = self._subprocess.returncode == 0
except subprocess.TimeoutExpired:
self._subprocess_exited_cleanly = False
self._subprocess.kill()
@@ -917,26 +1025,16 @@ class ServerManagerApp:
def main() -> None:
- """Run the BallisticaCore server manager."""
+ """Run the BallisticaKit server manager."""
try:
ServerManagerApp().run()
except CleanError as exc:
- # For clean errors, do a simple print and fail; no tracebacks/etc.
- # Any others will bubble up and give us the usual mess.
+ # For clean errors, do a simple print and fail; no
+ # tracebacks/etc. Any others will bubble up and give us the
+ # usual mess.
exc.pretty_print()
sys.exit(1)
-def dump_logs(msg):
- if os.path.isfile('logs.log'):
- size = os.path.getsize('logs.log')
-
- if size > 2000000:
- os.remove('logs.log')
-
- with open("logs.log", "a") as f:
- f.write(msg)
-
-
if __name__ == '__main__':
main()
diff --git a/config.json b/config.json
new file mode 100644
index 00000000..3c0dea94
--- /dev/null
+++ b/config.json
@@ -0,0 +1,44 @@
+{
+ "party_name":"BombSquad Community Server",
+ "party_is_public":true,
+ "authenticate_clients":true,
+ "admins":[
+ "pb-yOuRAccOuNtIdHErE",
+ "pb-aNdMayBeAnotherHeRE"
+ ],
+ "enable_default_kick_voting":true,
+ "port":43210,
+ "max_party_size":6,
+ "session_max_players_override":8,
+ "session_type":"ffa",
+ "playlist_code":12345,
+ "playlist_shuffle":true,
+ "auto_balance_teams":true,
+ "enable_telnet":false,
+ "teams_series_length":7,
+ "ffa_series_length":24,
+ "stats_url":"https://discord.gg/ucyaesh",
+ "clean_exit_minutes":60,
+ "unclean_exit_minutes":90,
+ "idle_exit_minutes":20,
+ "show_tutorial":false,
+ "team_names":[
+ "ladoo",
+ "barfi"
+ ],
+ "team_colors":[
+ [
+ 0.8,
+ 0.0,
+ 0.6
+ ],
+ [
+ 0,
+ 1,
+ 0.8
+ ]
+ ],
+ "enable_queue":true,
+ "protocol_version":35,
+ "player_rejoin_cooldown":10.0
+}
\ No newline at end of file
diff --git a/config.yaml b/config.yaml
deleted file mode 100644
index bfcda9b2..00000000
--- a/config.yaml
+++ /dev/null
@@ -1,134 +0,0 @@
-# To configure your server, create a config.yaml file in the same directory
-# as the ballisticacore_server script. The config_template.yaml file can be
-# copied or renamed as a convenient starting point.
-
-# Uncomment any of these values to override defaults.
-
-# Name of our server in the public parties list.
-party_name: "BombSquad Community Server"
-
-# If true, your party will show up in the global public party list
-# Otherwise it will still be joinable via LAN or connecting by IP address.
-#party_is_public: true
-
-# If true, all connecting clients will be authenticated through the master
-# server to screen for fake account info. Generally this should always
-# be enabled unless you are hosting on a LAN with no internet connection.
-authenticate_clients: true
-
-# IDs of server admins. Server admins are not kickable through the default
-# kick vote system and they are able to kick players without a vote. To get
-# your account id, enter 'getaccountid' in settings->advanced->enter-code.
-admins:
-- pb-yOuRAccOuNtIdHErE
-- pb-aNdMayBeAnotherHeRE
-
-# Whether the default kick-voting system is enabled.
-enable_default_kick_voting: true
-
-# UDP port to host on. Change this to work around firewalls or run multiple
-# servers on one machine.
-# 43210 is the default and the only port that will show up in the LAN
-# browser tab.
-port: 43210
-
-# Max devices in the party. Note that this does *NOT* mean max players.
-# Any device in the party can have more than one player on it if they have
-# multiple controllers. Also, this number currently includes the server so
-# generally make it 1 bigger than you need. Max-players is not currently
-# exposed but I'll try to add that soon.
-max_party_size: 6
-
-# Options here are 'ffa' (free-for-all), 'teams' and 'coop' (cooperative)
-# This value is ignored if you supply a playlist_code (see below).
-#session_type: ffa
-
-# Playlist-code for teams or free-for-all mode sessions.
-# To host your own custom playlists, use the 'share' functionality in the
-# playlist editor in the regular version of the game.
-# This will give you a numeric code you can enter here to host that
-# playlist.
-playlist_code: 412158
-
-# Alternately, you can embed playlist data here instead of using codes.
-# Make sure to set session_type to the correct type for the data here.
-#playlist_inline: []
-
-# Whether to shuffle the playlist or play its games in designated order.
-#playlist_shuffle: true
-
-# If true, keeps team sizes equal by disallowing joining the largest team
-# (teams mode only).
-#auto_balance_teams: true
-
-# The campaign used when in co-op session mode.
-# Do print(ba.app.campaigns) to see available campaign names.
-#coop_campaign: Easy
-
-# The level name within the campaign used in co-op session mode.
-# For campaign name FOO, do print(ba.app.campaigns['FOO'].levels) to see
-# available level names.
-#coop_level: Onslaught Training
-
-# Whether to enable telnet access.
-# IMPORTANT: This option is no longer available, as it was being used
-# for exploits. Live access to the running server is still possible through
-# the mgr.cmd() function in the server script. Run your server through
-# tools such as 'screen' or 'tmux' and you can reconnect to it remotely
-# over a secure ssh connection.
-#enable_telnet: false
-
-# Series length in teams mode (7 == 'best-of-7' series; a team must
-# get 4 wins)
-teams_series_length: 7
-
-# Points to win in free-for-all mode (Points are awarded per game based on
-# performance)
-ffa_series_length: 24
-
-# If you have a custom stats webpage for your server, you can use this
-# to provide a convenient in-game link to it in the server-browser
-# alongside the server name.
-# if ${ACCOUNT} is present in the string, it will be replaced by the
-# currently-signed-in account's id. To fetch info about an account,
-# your back-end server can use the following url:
-# http://bombsquadgame.com/accountquery?id=ACCOUNT_ID_HERE
-stats_url: https://discord.gg/ucyaesh
-
-# If present, the server subprocess will attempt to gracefully exit after
-# this amount of time. A graceful exit can occur at the end of a series
-# or other opportune time. Server-managers set to auto-restart (the
-# default) will then spin up a fresh subprocess. This mechanism can be
-# useful to clear out any memory leaks or other accumulated bad state
-# in the server subprocess.
-#clean_exit_minutes: 60
-
-# If present, the server subprocess will shut down immediately after this
-# amount of time. This can be useful as a fallback for clean_exit_time.
-# The server manager will then spin up a fresh server subprocess if
-# auto-restart is enabled (the default).
-#unclean_exit_minutes: 90
-
-# If present, the server subprocess will shut down immediately if this
-# amount of time passes with no activity from any players. The server
-# manager will then spin up a fresh server subprocess if auto-restart is
-# enabled (the default).
-#idle_exit_minutes: 20
-
-# Should the tutorial be shown at the beginning of games?
-#show_tutorial: false
-
-# Team names (teams mode only).
-team_names:
-- ladoo
-- barfi
-
-# Team colors (teams mode only).
-team_colors:
-- [0.8, 0.0, 0.6]
-- [0, 1, 0.8]
-
-# Whether to enable the queue where players can line up before entering
-# your server. Disabling this can be used as a workaround to deal with
-# queue spamming attacks.
-#enable_queue: true
\ No newline at end of file
diff --git a/dist/ba_data/data/langdata.json b/dist/ba_data/data/langdata.json
index 8da0fc08..42862cf0 100644
--- a/dist/ba_data/data/langdata.json
+++ b/dist/ba_data/data/langdata.json
@@ -3,16 +3,17 @@
"Arabic": "العربية",
"Belarussian": "Беларуская",
"Chinese": "简体中文",
+ "ChineseSimplified": "简体中文",
"ChineseTraditional": "繁體中文",
"Croatian": "Hrvatski",
"Czech": "Čeština",
"Danish": "Dansk",
"Dutch": "Nederlands",
"Esperanto": "Esperanto",
- "Filipino": "Tagalog ",
+ "Filipino": "Wikang Pilipino",
"French": "Français",
"German": "Deutsch",
- "Gibberish": "Gibberish",
+ "Gibberish": "Abuktarika",
"Greek": "Ελληνικά",
"Hindi": "हिंदी",
"Hungarian": "Magyar",
@@ -21,14 +22,19 @@
"Japanese": "日本語",
"Korean": "한국어",
"Malay": "Melayu",
- "Persian": "فارسی",
+ "Persian": "فارسی",
+ "PirateSpeak": "Pirate Speak",
"Polish": "Polski",
"Portuguese": "Português",
+ "PortugueseBrazil": "Português - Brasil",
+ "PortuguesePortugal": "Português - Portugal",
"Romanian": "Română",
"Russian": "Русский",
"Serbian": "Српски",
"Slovak": "Slovenčina ",
"Spanish": "Español",
+ "SpanishLatinAmerica": "Español - Latinoamerica",
+ "SpanishSpain": "Español - España",
"Swedish": "Svenska",
"Tamil": "தமிழ்",
"Thai": "ภาษาไทย",
@@ -38,69 +44,104 @@
"Vietnamese": "Tiếng Việt "
},
"translation_contributors": [
+ "!101Asulil",
"!edMedic💊",
+ "!ggMustaGD1",
+ "!GummyBoiYT",
+ "!nobal",
"!ParkuristTurist!",
+ "!яебалфантуврот!",
"\"9ÅℳЇℜρℜѺƬǀGΞЯ",
+ "\"Unknown\"",
+ "!SlashByte (Mass)",
+ "3alTemp (Temp)",
"/in/dev/",
+ "09332509847",
+ "0Globalsters",
"1.4.139",
+ "10009did",
+ "11",
"123",
"123123123",
+ "1234abcdS",
+ "1Kirito",
+ "1Platinumpatty",
+ "1SpaZ",
"228варенье",
"233",
"26885",
+ "3alTemp",
"43210",
+ "4e6yre4ek",
"5PH3X",
"99",
+ "@bombsquad_mkhuhgjaj",
"@sametsunal",
+ "[<>]",
"_DraXX",
"_Fami",
"Omar a",
"Bruno A.",
+ "Abdullah A.S",
+ "A296",
"aaalligator",
"aadesh",
"Aaron",
"Erik Abbevik",
+ "Abcd",
"Abdo",
"Abduh",
"Abdul",
+ "Abdulaziz",
"Abdulloh",
"Abe",
"Ahmed abed",
+ "Abhay",
"abhi",
"AbhinaY",
"Gifasa abidjahsi",
"Abinav",
"Abir",
+ "ABITDANTON",
+ "Abne",
"Abolfadl",
"Abolfazl",
"Abraham",
"Roman Abramov",
"AC",
"Achref",
+ "ACrazyPenguin",
"adan",
"Adeel (AdeZ {@adez_})",
"Adel",
- "Rio Adi",
+ "AdemYzz",
+ "Rio adi",
"Rayhan Adiansyah",
"Yonas Adiel",
"admin",
"Adonay",
"AdOwn69",
"Adrián",
+ "Aeliux",
"Aely",
"Aenigmus",
"Aether",
+ "AFKNoName",
"Afrizal",
"Aga<3",
"Carlos Mario Agamez",
"ageng",
+ "Agenteby20",
"Dimitris Aggelou",
+ "AGØTI",
"ariyan ahir",
"AHMAD",
"Aufan Ahmad",
- "Ahmed",
+ "ahmed",
"ahmedzabara",
+ "Aikx",
"Collin Ainge",
+ "Ajnaz",
"Akash",
"Akbar",
"Bekir Akdemir",
@@ -108,6 +149,8 @@
"Aki",
"Abdullah Akkan",
"Berk Akkaya",
+ "Akmuhammet",
+ "AkVoN",
"AKYG",
"mohammed al-abri",
"Ali Al-Gattan",
@@ -116,28 +159,39 @@
"Anna Alanis",
"Manuel Alanis",
"alanjijuoo7fudu@gmail.com",
+ "alanjosue",
+ "alayoupy",
"albertojesusvaldesdelrey@gmail.com",
+ "Albrtz",
"Alej0hio",
"Pedro Alejandro",
"Gabrijel Aleksić",
"Alex",
"Alexander",
"Gros Alexandre",
+ "AlexBx",
"Alexey",
"Alexgmihai",
"Alexis",
"Alexistb2904",
"Alexyze",
"Algene123456",
- "ALI",
+ "Algerino",
+ "Alguien_201",
+ "ali",
+ "Mohamed ali",
"Shadiq Ali",
+ "Alievil1",
"alireza",
"alirezaalidokht",
+ "AliSh8787",
"ALISSON",
"Virgile Allard",
"Allinol",
"ahmed alomari",
- "Alonso",
+ "alonso",
+ "Alp",
+ "Alpcik910",
"Alper",
"Alpha",
"AlphaT",
@@ -151,15 +205,21 @@
"Amedeo",
"ameen",
"Kidane Amen-Allah",
+ "Amin",
"amin.ir",
- "Amir",
+ "amir",
+ "amir0799@gmail.com",
"amir22games",
"amir234",
"amir80sas",
"AmirMahdi.D :P",
+ "Amirreza",
+ "amirsaman050",
"Amirul",
"Ange Kevin Amlaman",
+ "AMOGUSS85",
"amr",
+ "AN218",
"Anandchaursiya",
"Anas",
"Anastasija",
@@ -185,6 +245,7 @@
"krish angad",
"Krishna D Angad",
"vân anh",
+ "ANILBABATRPRO",
"Aniol",
"Daniel Felipe Silva dos Anjos",
"Anmol",
@@ -193,22 +254,29 @@
"Antonio",
"Antoniom",
"Lucas Antunes",
+ "AOMAD1987",
"wassim aoufi",
"apis",
"Sagar April",
+ "AquaQw11",
"Fernando Araise",
"arda",
"Hellmann Arias",
"Muhammad Arief",
+ "Arihant",
"Arimaru",
+ "Arimo",
"Arin",
"arjanex",
+ "Armando",
"Arroz",
"ARSHAD",
+ "Arshia",
"ArshiyDLn",
"Artem",
"Valentino Artizzu",
"Arxyma",
+ "Ashes",
"Ashik",
"Ashish",
"AskarBink",
@@ -218,27 +286,34 @@
"Atalanta",
"Atilla",
"Atom",
+ "Attila",
"Audacious7214",
"Aufaghifari",
+ "Aulia",
"Ausiàs",
"autismo",
"Autoskip",
"Ryan Auxil",
"Avamander",
+ "AvianJay",
"Tel Aviv",
"awase2020@gmail.com",
- "sev alaslam Awd",
+ "sev alaslam awd",
"Axel",
+ "Aynursargi",
"ayub",
"masoud azad(fireboy)",
"Md azar",
"Azlan",
"Azoz",
"Burak Karadeniz (Myth B)",
+ "Leonan B.",
"Myth B.",
"B4likeBefore",
"Praveen Babu",
+ "Badmoss",
"Baechu",
+ "bag",
"Balage8",
"BalaguerM",
"Peter Balind",
@@ -250,7 +325,7 @@
"Ryan Bandura",
"Bank",
"Ibrahim Baraka",
- "Kamil Barański",
+ "Kamil Barański (Limak09)",
"Leonan Barcelos",
"Bardiaghasedipour",
"William Barnak",
@@ -267,10 +342,13 @@
"Bato",
"Florian Bauernfeind",
"David BAUMANN",
+ "Bauti",
+ "bautielpro",
"bayanus",
"Wojtek Bałut",
"Hi bbbbbbbbb",
"Eduardo Beascochea",
+ "Keyhan Behzadi",
"Eduan Bekker",
"бравлер Андрей Belarus",
"ben",
@@ -278,48 +356,64 @@
"Bendy",
"Sérgio Benevides",
"Simon Bengtsson",
+ "Beniamino",
"Alfano Beniamino",
"Benjamin",
"Benjamín",
"benjapol",
"Ori bennov",
"BenVectorgames",
+ "Benyamin",
"benybrot96",
+ "BERAT01",
"berkay",
"Silvio Berlusconi",
"Bernardiny",
"Anton Bang Berner",
"Felix Bernhard",
+ "Beroudzin",
+ "Abhishek Bhardwaj",
+ "Bhxyu",
+ "Arthur Bianco",
"Davide Bigotto",
"bilibili@Medic药",
"Bima",
"Biytremni",
"Blackcat2960",
"BlackShadowQ",
+ "Bleed",
"Daniel Block",
"BlueBlur",
+ "bob",
"bob bobber",
+ "Bobr",
+ "Bombay De Bom",
"BomBillo",
"The Bomboler 💣",
"bombsquad",
+ "El Furrito de BombSquad",
+ "Wheezy bombsquad",
"Bombsquadzueira",
"Bomby",
"Zeleni bomby",
- "Alex BONYOMA",
+ "Alex Bonyoma",
"Book",
"Guilherme Borges",
"Lucas Borges",
"Gianfranco Del Borrello",
"Abel Borso",
"Plasma Boson",
- "Cristian Bote",
+ "Cristian Bote \"ZZAZZ\"",
"Cristián Bote",
"botris",
"Botte",
"bouabdellah",
"Antoine Boulanger",
"Thomas Bouwmeester",
+ "Boxan",
"Ali x boy",
+ "boyhero7779",
+ "Hamza Baybars Boyraz",
"Bořivoj",
"Paul braga",
"Sammy Braun",
@@ -327,6 +421,7 @@
"Brendan",
"Federico Brigante",
"Anderson Brito",
+ "Nah bro",
"Broi",
"Brojas",
"Brojasko",
@@ -334,8 +429,12 @@
"Brunoazocar",
"bsam",
"Bsamhero",
- "BSODPK",
+ "Bsodpk",
+ "Bub",
+ "Bubas",
"Marvin Bublitz",
+ "BudaCcm",
+ "Buddypall",
"Vincent R. Buenaventura",
"Buskebam",
"Buto11",
@@ -345,6 +444,7 @@
"Christoffer Bünner",
"mvp aka cactus",
"mvp aka legend (aka cactus) 🌵",
+ "Levi Cadimiel",
"Cadødø",
"Chris Laurence Cagoco",
"Calet",
@@ -356,19 +456,26 @@
"Fabio Cannavacciuolo",
"CANOVER",
"Fedrigo Canpanjoło",
+ "carl",
"Yan Carlos",
"CarlosE.",
"mark Dave a carposo",
"Fabricio de Carvalho",
"Joshua Castañeda",
"Lisandro Castellanos",
+ "Conroy Cat 2011",
"Catjuanda05",
"CatMax",
+ "Cattest",
"Arthur Cazes",
+ "Ceaser",
"CerdoGordo",
"Ceren",
+ "cflagos",
+ "cgaming",
"chang",
"Charlie",
+ "Pradip Chaudhari",
"kalpesh chauhan",
"chausony",
"CheesySquad",
@@ -378,6 +485,7 @@
"Vadim Choi",
"Chris71/Chris71x",
"Hans Christensen",
+ "Christian",
"Attilio Cianci",
"Kajus Cibulskis",
"Mateusz Ciochoń",
@@ -386,17 +494,21 @@
"Jerome Collet",
"probably my. com",
"Comrade",
+ "Blaze Corderz",
"Stefano Corona",
"Corrolot",
"Francisco Law Cortez",
"David Cot",
"Nayib Méndez Coto",
"Dylan cotten",
+ "Coutinho",
"covcheg",
"COVER",
"crac",
"CrazyBear",
+ "CRAZYCHEF",
"Frederick Cretton",
+ "Crispiymini",
"crisroco10",
"Cristhian",
"Cristian",
@@ -406,20 +518,27 @@
"Prashanth CrossFire",
"Cryfter",
"cuddles98",
+ "El famoso cukito",
"cukomus",
"CYCL0YT",
+ "Filipec CZ",
"D",
"D-Mega",
"Dada",
+ "daG0AT",
+ "Daichi",
"Daivaras",
"Dajo6596YT",
"Dakkat",
"Mikkel Damgaard",
+ "DanAlfred (SUBC1PYZH)",
"Danco",
"Dani",
"Daniel",
"Daniel3505",
"DaniesAlex007",
+ "Danilix365",
+ "Daniozo",
"Dančo",
"Iman Darius",
"DarkAnarcy",
@@ -427,27 +546,42 @@
"DarshaN",
"Shibin das",
"Dasto",
+ "Davi",
"David",
"Davide",
"DavidPlayzLol",
- "DavidPlayzloll",
+ "Davidplayzloll",
"DaymanLP",
+ "DD87",
"Ddávid",
"Die or Dead",
"Привет от детей DeadLine",
+ "DEATH",
+ "DEATHSTU/DJSTU",
+ "DEBANNER",
"deepjith",
+ "DEFENDER",
+ "Defiant",
"dekarl",
"deliciouspudding43",
+ "deliplayer",
"delshe",
"Denis",
"Dennis",
"Dennys",
"Alex Derbenew",
+ "Ingegner Devecchi",
+ "Dr : developer",
"df",
+ "DFгульСпачибо",
"Santanu Dhar",
+ "DHRUVIL",
+ "DIAbli",
+ "Diablo",
"Guilherme Dias",
"Diase7en",
"ferbie Dicen",
+ "Diego",
"Diego788",
"DiegoGD",
"DiGGDaGG",
@@ -458,7 +592,9 @@
"Diprone",
"djaber djafer",
"Fadhil djibran",
+ "DJSTU",
"Alexis Dk",
+ "dkod9vZ",
"DKua",
"dlw",
"DMarci",
@@ -466,11 +602,17 @@
"Dmitriy",
"Savchenko Dmitriy",
"Count Su Doku",
+ "Giuseppe Valerio Dominici",
"DominikSikora!",
"Kai Dominique",
"Gerardo Doro",
"DottorMorte",
+ "Doubleknig",
+ "Atakan Doğrul",
+ "Dr",
"Dragomir",
+ "Dragon",
+ "Dreaming",
"Drellsan",
"DrGhast",
"Dron009",
@@ -482,61 +624,94 @@
"Dustin",
"Paul Duvernay",
"Emir İslam Dündar",
+ "Beny (Goofy e-mail)",
"E.R.A.L",
"Ebutahapro07tr",
+ "Ed89631",
+ "Eder",
+ "Vishal from Eric's language edit",
+ "EditYusuFD",
+ "Edrees",
"Edson",
"Glen Edwards",
"Amr Wassiem Eessa",
+ "Eeveelution",
"ef",
+ "EgorZH",
"Ali ehs",
+ "eightyfoahh",
"Eiva",
"EK",
"EKFH",
"avatar por reina del carnaval en la que te lo mando el",
"Rezk ElAdawy",
+ "ElAlienPVZ",
+ "Elbol19",
"ElCatCaesar",
+ "ElCrashBndct173",
+ "ElDemon",
"ElderLink",
"elfree",
"Elian",
+ "Elmakyt",
+ "ELMEX95",
"Elsans320_YT",
+ "Mahmoud elshayeb",
"Elskoser",
"ElVolKo",
"ali emad",
"Ramy Emad",
+ "Emanuel_12",
"Emil",
"Kürti Emil",
+ "55Hamza Emin",
"Muhammed emir",
"Muhammet Emir",
"EmirSametEr",
"emm",
"EnderDust123",
"EnderKay",
+ "Endless_jk",
"EnglandFirst",
"Enrico",
+ "Entakos",
"enzo",
- "Era",
+ "era",
+ "Bueno pero igual era",
+ "Era0S (Spazton)",
+ "EraOS",
+ "Erfan",
+ "Eric-fan",
"Erick",
+ "Erik",
"Erkam",
"Jonas Ernst",
"NO es",
"Shayan Eskandari",
- "Esmael",
+ "esmael",
"Jose espinoza",
"ethanmigueltrinidad",
+ "Eugen",
"ExaYT",
"Exelendary",
"Abdullatif Badinjki ExPeRt 1420",
"ExplosiveDinosaurs.com",
"EXTENDOO",
"Eyder",
+ "Eymen",
+ "F15fahd_lol",
"fa9oly9",
"Fabian",
"Luca Facchinetti",
"Facundo",
"Jakub Fafek",
+ "Fahd",
"Syed Fahrin (Mr.Lemoyne)",
"faizal.faiz.ms@gmail.com",
"Fakih",
+ "A BombSquad Fan",
+ "Eric I'm your number 1 fan",
+ "fancy",
"FanDolz.",
"Faqih",
"Muhammad Faqih ''None''",
@@ -550,12 +725,15 @@
"Shaikh Fazal",
"Fea",
"FearLessCuBer",
+ "Feder-28",
+ "Feder28",
"Federico",
"Fedrigo",
"Marco Fabián Feijoó",
"Fenyx",
"Fernando",
"David Fernández",
+ "Rashell Fernández",
"FerranC",
"FertileChannelHD",
"FightBiscuit",
@@ -567,20 +745,26 @@
"Aldereus Fire",
"Robert Fischer",
"Kai Fleischmann",
+ "FLOKI",
"Iancu Florin",
"FluffyPal",
"FLᎧRᏋᏁTIᏁᎧ",
"Angelo Fontana",
+ "Forcedpood",
"FortKing",
"Freaku",
"Golden Freddy",
"FREÂK",
"Andrey Fridholm",
"FriskTheHuman303",
+ "FRM1235",
"Froshlee14",
+ "FrostyXD",
"FuckIndoDick",
"Lukas Funk",
"Gustavo FunnyGuard28",
+ "fyroove",
+ "fyrooveCZ",
"Erick G",
"Roberto G",
"George G.",
@@ -591,23 +775,31 @@
"João Gabriel",
"Gabriele",
"Nihar Gajare",
+ "GalaxyM4",
"GalaxyNinja2003",
"AP - Pro Gamer",
"Proff Gamer",
"Eduardo Gamer05",
+ "Gamer2809",
"Taufiq Gamera",
"Altangerel Ganbaatar",
"Quentin Gangler",
"RUSLAN ABDUL GANI",
+ "Garou",
"Gaspard",
"krish gator",
"gene.mTs",
"GeoMatHeo",
+ "Gerakl",
"Gerry",
"GG (9.2)",
+ "ggMustaGD0",
+ "! ggMustaGD1",
+ "Mohammad gh",
"Onkar Ghagarum",
"GHAIS",
"Omar Ghali",
+ "Ghost 👿",
"GhOsT_St3p",
"GhostGamer",
"Gian",
@@ -615,10 +807,14 @@
"Gianluca11",
"Aldi gibran",
"Aidan Gil",
+ "Jorge Giménez",
"Noe Marley Ginting",
"Giovalli99",
+ "Devecchi Giovanni",
+ "DEVEGGHI GIOVANNI",
"Giovanny",
"Dc superhero girl",
+ "giuppy",
"Givij",
"Gleb",
"Glu10free",
@@ -627,24 +823,34 @@
"gman_4815",
"God丶烛龙",
"Colin Goeieman",
+ "golmanx",
"박준서(PJS GoodNews)",
"gowthamvelkarthik.k",
"Nicola Grassi",
+ "Dario Greggio",
"Gerrit Grobler",
"Oliver Grosskloss",
+ "gtex",
+ "gtexAndSoby",
"Alexis Guijarro",
"Guilherme",
"Victor Guillemot",
"Guillermo",
+ "GummyBoiYT",
"SHOBHIT GUPTA",
"Gurad",
"Max Guskov",
+ "Gustavo",
"Rachmat Gusti",
"Aditya Gwala",
- "Tódor Gábor",
+ "Tódor Gábor (Joshua)",
"Tymoteusz Górski",
"Thomas Günther",
+ "Hamza Emin GÜRLER",
+ "Paşa Güven",
+ "Muhammad H",
"H.J.N",
+ "h4Nk1oZz",
"Haasaani",
"Hack",
"HackPlayer697",
@@ -653,11 +859,14 @@
"Haidar",
"Joud haidar",
"جود حيدر/joud haidar",
+ "Hajmoein",
"Halox",
"HamCam1015",
"hamed",
+ "Alhasan Hamoud/Alretrox ❤️🔥🖤",
"Zulfikar Hanif",
"Happaphus",
+ "Franschieko Satya Haprabu",
"Hariq",
"harojan",
"Harsh",
@@ -671,6 +880,7 @@
"Florian Haxhijaj",
"Hayate",
"Hayate16",
+ "hcy_2022",
"hehhwushh",
"Lukas Heim",
"Hugues Heitz",
@@ -679,51 +889,77 @@
"Christoffer Helmfridsson",
"Hemra",
"Julian Henkes",
+ "Henq",
"henry",
"Heraltes",
"boy hero",
"bsam hero",
"herosteve22jajs",
+ "Charles hewitt",
+ "Heydeyl",
+ "HeyFang",
"heymaxi",
"HiImBrala",
"Ayra Hikari",
"Hiking",
"Himesh",
+ "Himo",
+ "Himo381",
"Yazan Hinnawi",
"Daffaa Hisyaam",
"Trung Hiếu",
+ "hbi78889999gj b hj",
+ "hj5700",
"Nabil Hm",
"Nguyen Dang Hieu Hoa",
"Minh Hoang",
+ "Phan Le Minh Hoang",
"Robin Hofmann",
"hola",
+ "holasoycuyo",
"Sebasian Varela Holguin",
"Holystone",
"Jeremy Horbul",
- "Hosein",
+ "hosein",
"hoseinا",
+ "HOSSAM",
+ "Ahmed Hossam",
"Phan Lê Minh Hoàng",
+ "Hrach",
+ "Hubert",
"Jorge Isaac Huertero",
"Hussain",
+ "Hassan Samir Hussain",
"Umair Hussain",
"Hussam",
+ "Huy",
+ "HyMr",
+ "HYr",
"Adrian Höfer",
"Davide Iaccarino",
+ "Ian",
"iBearzGaming",
"Iboyindyza",
"Ibrahim",
+ "ForestORIG из IcE",
+ "Iddrejiot",
+ "idiomat738",
"Ignacio",
"IgnUp21",
"Igomen15",
"Igor",
+ "Ihan",
+ "Ihan7",
"IL_SERGIO",
"!YamGila (Syed Ilham)",
"Iliya_bomB",
+ "Iliyafeili",
"illonis",
"Syed Ilham Ilman",
"Ily77788",
"Ilya",
"IlyxaGold",
+ "Imad",
"d imitris",
"Nik ali imran",
"IND_PIYUSH",
@@ -731,31 +967,45 @@
"indieGEARgames",
"Darkness indo",
"Indohuman",
+ "Inicio",
"IniSaya6666",
"inkMedic",
"inkMedic💊",
"InvisibleDude",
"Anestis Ioakimidis",
"Dragomir Ioan",
+ "IorYou4600 (V2)",
"Isa",
+ "IsaacStar ★",
"Israelme03",
"Tobias Dencker Israelsen",
"Kegyes István",
+ "Fritz IT",
"Itamar",
"ivan",
+ "Ivanpinheiro",
"iViietZ",
"MOHD IZWAN",
+ "J3zrel",
"JaaJ",
"Al jabbar",
"Jacek",
+ "Jack",
"Jack556",
+ "Jacob213",
+ "Jahnmi",
"Jhon Jairo",
+ "jakecato1602@gmail.com",
"wahid jamaludin",
+ "Jameszambrana",
+ "jamilgamer",
"Tarun Jangra",
"Aleksandar Janic",
+ "janobaez22",
"Martin Jansson",
"JasimGamer",
- "Jason",
+ "Jasmine (kijiko)",
+ "jason",
"Javvaed",
"Jbo",
"JCIBravo",
@@ -772,10 +1022,14 @@
"Jeulis",
"Jewellbenj",
"jgst2007@gmail.com",
+ "Jhon",
+ "Jhoncat086@gmail.com",
"Zhou Jianchu",
"jimmy",
+ "JimmyYT",
"Jiren",
"jitues",
+ "JJ",
"JM",
"Joan",
"JoaoVitorBF",
@@ -785,9 +1039,13 @@
"Ksteven john",
"Steven john",
"Johnny",
+ "Johnwick",
"joke",
+ "jonas-bonas",
"Jonatas",
+ "Jonathan",
"Jop",
+ "Jor",
"JoseANG3L",
"Joseetion",
"Joseph",
@@ -795,8 +1053,10 @@
"Rudransh Joshi (FireHead)",
"joshuapiper",
"Jossiney",
+ "Juangame65",
"juanramirez",
"Jules",
+ "Junior4pro",
"juse",
"Justine",
"JYLE",
@@ -811,9 +1071,10 @@
"kadaradam",
"Efe Kahraman",
"KalakCZ",
+ "kalenk",
"Adam Kalousek",
"kalpesh",
- "Kalyan",
+ "kalyan",
"Kamal",
"Aiman Aryan Kamarajan",
"Kamil (Limak09)",
@@ -826,11 +1087,19 @@
"Burak Karadeniz(MythB)",
"Daniel Karami",
"Karim",
+ "Karlimero",
+ "shemas - Ebrahim Karram",
"Kasra",
+ "katon",
+ "Kau5hik",
+ "Kaunyt",
"Kaushik",
"KawaiiON",
+ "kazoo081",
+ "kazooicek",
"KD",
"Kejuxs",
+ "Mahmut Keleşyılmaz",
"Mani kelidari",
"Kelly",
"Kelmine",
@@ -845,23 +1114,31 @@
"khalio",
"$RICO$ KhevenMito",
"Khwezi",
+ "Kian",
+ "kiasha",
"kibro",
+ "Kicken07",
"Joop Kiefte",
"killer",
"killer313",
+ "Killerfox...Nima",
"King",
"KingCreeps",
"kinnie",
"kira",
"kirill",
"KirillMasich",
+ "Piotr Kiryk",
"Kittycat41",
+ "Dominic Klein",
"Andrew Kmitto",
"Philipp Koch",
+ "Koentro",
"Kolmat",
"komasio",
"komasio71",
"KomodoRec",
+ "koolych (Николай)",
"Niko Koren",
"Nikolay Korolyov",
"Kostas",
@@ -873,9 +1150,13 @@
"krishAngad",
"krishuroy",
"kroш)",
+ "Mikuláš Krtička",
"Patel krumil",
"Krunal",
+ "Kubixpro1",
+ "kueue",
"Alok Kumar",
+ "Parth Kumar",
"sarath kumar",
"Aapeli Kumpulainen",
"Aldhiza Kurniawan",
@@ -887,10 +1168,15 @@
"Kyle",
"Jan Kölling",
"L_JK",
+ "Laaziz",
+ "Labrador",
+ "labrosggv",
"John Patrick Lachica",
+ "Osama bin ladin",
"laikrai",
"m a lakum",
"Dmitry Lamperujev",
+ "Language",
"K. Larsen",
"Nicklas Larsen",
"Shin Lasung",
@@ -898,12 +1184,20 @@
"Lazered",
"Lazydog",
"Elia Lazzari",
+ "LEANKEAN",
"이지민 (Ji-Min Lee)",
+ "legended",
"Mick Lemmens",
+ "Lemon4ik",
"Leo",
+ "Mr. LeoLeo",
+ "Leonid",
+ "Lepixhd",
"Lester",
+ "Letrixito",
"Szajkajkó Levente",
"Szajkajó Levente",
+ "Levi (Ashes)",
"Johannes Lex",
"Gastón Lezcano",
"Shuaibing Li",
@@ -911,33 +1205,47 @@
"Juan Liao",
"LickyBeeYT",
"Nicola Ligas",
+ "Alef costa lima",
"Limak09",
+ "LimonAga",
"lin",
"Dustin Lin",
"Kyle Lin",
"Linus",
"Linux44313",
+ "LioLioFlo",
+ "Lionel",
+ "Lippu",
+ "Lisavidxxxxxxx5",
"LiteBalt",
"LittleNyanCat",
"Juunhao Liu",
+ "LivezynBR",
+ "Lixar",
"Lizz",
"Lizzetc",
"Lkham",
"Lobinhofs",
"Loex",
"Loko",
+ "LoliPopa",
"Longkencok",
+ "longmouses",
+ "杰瑞 longmouses",
"looooooooou",
"LordHiohi",
"Lordigno",
"lorenzo",
"Lostguybrazil",
+ "Loup",
"mian louw",
"69 lover",
"Jordan Vega Loza",
+ "lshndnglnt",
"Chenging Lu",
"Chengming Lu",
"João Lucas",
+ "Pedro Lucas",
"Simone Luconi",
"Ludicrouswizard",
"satrio ludji",
@@ -947,52 +1255,75 @@
"Luis(GalaxtM4)",
"luislinares",
"luispro25",
+ "Luiz",
"Luka",
"Luke",
"Luke994",
+ "lukerloker",
"Lukman",
"Hermanni Luosujärvi",
"Lurã",
"Luthy",
+ "Luy",
+ "Luytaris",
"Geogre Lyu",
"Be aware that m",
+ "Matias M.",
"M.R.T",
"M5TF4",
"Mac 143338",
"MaceracıMS",
"Samuel Maciel",
"Djawad madi",
+ "MadNightr",
"Mads Beier Madsen",
+ "Magomed",
+ "Magorik",
"Mahan",
"Ondřej Mahdalík",
"mahdi",
"mahdimahabadi",
+ "Mose saef maher",
"Mahmoud",
+ "Mahmoudrabe",
+ "Mahziyar",
"maicol",
"Majestozão",
"Makar",
"Maks1212",
"Malaysian",
+ "Amirali Malekshahi",
"EMILIO MALQUIN",
"MAMAD",
+ "mamali",
+ "Mamax400",
+ "Wagdy mamdouh",
+ "mandarin",
"Mani",
"Manimutharu",
+ "Manmath",
+ "ManmathTheGreat",
"Ahmed Mansy",
"Manu",
+ "Leonardo Manuel",
"Mapk58",
+ "Van Mapper",
"Marcel",
"Marchella",
"Marcin",
"Marco",
"Marcolino",
- "Filip Marek",
+ "filip marek",
"Marcin Marek",
+ "Margarrom",
"Mariel",
"Marin",
"mariuxoGaming",
"Stefan Markovic",
"Marouene",
"Marošsko",
+ "MarshMallon",
+ "Marshmellon",
"martin",
"Philip Martin",
"MartinZG007",
@@ -1004,25 +1335,43 @@
"Mathias",
"Mathieu",
"matias",
+ "Matias26157",
+ "MatiasCW (MatiasMGz)",
+ "MatiasMG",
+ "MatiasMGz",
+ "MatiasOMG",
+ "MatiasOMGz",
"matj1",
"Eduardo de Matos",
"Matteo",
"Matthias",
+ "Nepote Mattia",
+ "MatzE",
"Ihsan Maulana ( @ihsanm27)",
"Muhammad Akbar Maulana",
+ "MAVIS",
"Mavook",
+ "MaximohFox",
+ "MazeMan111",
"Federico Mazzone",
"Andrea Mazzucchelli",
+ "McFer256",
+ "MCW",
"Medic",
"Medic别闹我有药",
+ "Medic药",
"German Medin",
"Martin Medina",
"Mehret Mehanzel",
+ "Mobin Mehdizadeh",
"Mehmet",
"Mehrdad",
"Kevin Mejía",
"Mell",
+ "Melt1ngAis",
+ "Meraj",
"MereCrack",
+ "Merengue",
"Mert",
"Meryu07",
"Meysam",
@@ -1030,17 +1379,23 @@
"Davis Michelle",
"Mick",
"Miguel",
+ "Luiz \"Foxy\" Miguel",
"Miguelterrazas123",
"Mikael",
"mike",
+ "MIKEFOKING",
+ "Mikserol",
"Milaner",
"Milk3n",
"Fabio Milocco",
"mimis",
+ "mimomandi",
"Mina",
"minh123456789thcsvk",
"MinhAn19203",
+ "Michael J. Soto Miranda",
"Azfar Ahmed Mirza",
+ "misael",
"Deepak Mishra",
"Mistetas3002",
"Skramh Miugrik",
@@ -1049,33 +1404,52 @@
"MKG",
"mobin",
"Mobina",
+ "Mochosquad",
+ "Haj moein",
"Moh",
"Mohamadali",
"Mohamadamin",
"Mohamed",
- "Mohammad",
+ "seif mohamed",
+ "mohammad",
+ "Mohammad.cur",
"Mohammad11dembele",
"MOHAMMADERFAN",
"Mohammadhosain",
+ "Mohammadpl",
"Mohammed",
- "MOHAMMEDTALAL1ST",
+ "MohammedTalal1st",
"1n Mohhaamad",
+ "Ali Mohseni",
+ "Shaygan mohsenian",
"Moin",
+ "momo",
+ "pOpsi mOn",
+ "Popsie (or pOpsi mOn)",
+ "Ahmed this money",
"MONIRIE",
- "Carlos Montalvo",
+ "Charles Andrew Montalbo",
+ "carlos montalvo",
"Ederson Moraes",
"Eduardo Moreira",
"Danteo Moriarty",
"Kabir morya",
+ "Morybuzz",
"Moses",
+ "Cauã Moura",
+ "Iasonasss Mourelatos",
"mr",
"mr.Dark",
"Mr.Smoothy",
+ "MR0000000001",
+ "mradio",
+ "mrbebra333",
"MrDaniel715",
"MrGlu10free",
"Mrmaxmeier",
"MrNexis",
"MrS0meone",
+ "MrSaster2024",
"Ivan Ms",
"MSampic",
"Msta",
@@ -1084,6 +1458,8 @@
"Muhammed Muhsin",
"MujtabaFR",
"Muni",
+ "Munizxn",
+ "Mush",
"mustardb",
"Hisham Musthafa",
"Mohammed Musthafa",
@@ -1091,12 +1467,17 @@
"Mwss",
"MYSENIOR",
"mythbrk00@gmail.com",
+ "محمدحسین MZZ",
+ "Mzz85moh",
"Sajti Márk",
"Samuel Mörling",
"Luca Müller",
+ "Nabil",
+ "Omar Nabil",
"nacho",
"Nagaarjun(pongal)",
"Nahuelgomez1607",
+ "Your name",
"Nasser",
"Natasja",
"Nathan",
@@ -1109,10 +1490,14 @@
"nazroy",
"Ndrio°o",
"NecroMeerkat",
+ "nectio",
"Neel",
"Nel",
"Nemeil",
- "Era (Spazton neo)",
+ "E0/Era0S/Spazton neo",
+ "Era (Spazton neo) (e)",
+ "Era0S (Spazton neo)",
+ "Era0S/Spazton neo/E0",
"Mattia Nepote",
"The nerd",
"Gabriel Del Nero",
@@ -1129,12 +1514,15 @@
"Niels",
"Frederik Nielsen",
"Nifujini",
+ "Lorenzo (aka night_skiesRBLX)",
"Nikali2007",
+ "NikeOvSky",
"Nima",
"XU NING",
"طارق محمد رضا سعيد NinjaStarXD",
"nino",
"Nintendero65",
+ "Nithish (Rookie)",
"Nizril",
"Nnubes256",
"Bu nny",
@@ -1143,36 +1531,58 @@
"NofaseCZ",
"Max Noisa",
"Noisb",
+ "NoNameA14171274.",
+ "NoNameC3698241",
"None",
+ "NOOBPEDAR",
+ "NoobPilotPlayz",
"Noobslaya101",
"noorjandle1",
"Petter Nordlander",
+ "Nose",
+ "NoTag",
"NotBrojasAgain",
+ "NotDiegoGD",
"Ntinakos555",
"NullWizard",
"Dhimas Wildan Nz",
"*** Adel NZ. ***",
+ "O.T.S.K.",
+ "Obada55555",
+ "Odhalit",
+ "TORK OGHLAN",
"Ognjen",
+ "ogre19",
"okko",
"Bastián Olea",
"Nikita Oleshko",
- "Omar",
+ "omar",
"OmarBv",
+ "omgxd5",
"On3GaMs",
- "No One",
+ "No one",
+ "oneman",
"Adam Oros",
"Andrés Ortega",
"Zangar Orynbetov",
+ "Oscar",
"Osmanlı2002",
"Osmanys",
+ "Ossd",
+ "otd",
+ "oualiabdou",
"OyUnBoZaN (NEMUTLUTURKUMDİYENE)",
+ "Dmitry P.",
+ "pablo",
"pack",
"PALASH",
+ "Buddy pall",
"Giorgio Palmieri",
"Abhinay Pandey",
"PangpondTH",
"PanKonKezo",
"PantheRoP",
+ "Pappoliver72",
"ParadoxPlayz",
"Gavin Park",
"Parkurist",
@@ -1185,25 +1595,34 @@
"Dominik Pavešić",
"BARLAS PAVLOS-IASON",
"Payu",
+ "PC1003436",
+ "pc100756",
"PC189085",
"PC192082",
"pc192089",
"PC261133",
"PC295933",
"PC432736",
+ "PC607666",
+ "PC912334",
+ "PC965064",
+ "PC979802",
"pebikristia",
"Pedro",
"Jiren/Juan Pedro",
+ "João Pedro",
"Penta :D",
+ "Peppone0071",
"Peque",
"Rode Liliana Miranda Pereira",
"Jura Perić",
"Panumas Perkpin",
"Pero",
+ "persian",
"Khoi Pete",
"Kacper Petryczko",
"pett",
- "Petulakulina",
+ "petulakulina",
"Pez",
"PGIGM",
"Đào Xuân Phi",
@@ -1212,8 +1631,11 @@
"piga",
"Stefano Pigozzi",
"Mario Donato Pilla",
+ "PillTek",
"Pinchidino",
+ "pinguino",
"Danilo \"Logan\" Pirrone",
+ "heorhii pitukh",
"PivotStickfigure12",
"Pixelcube",
"PixelStudio",
@@ -1222,16 +1644,20 @@
"Elian Pj",
"Broi PL",
"Ziomek PL",
+ "George Play's",
"Anestis Plithos",
"Pluisbaard",
"Jaideep Kumar PM",
+ "Pmans",
"podolianyn",
+ "Pofani",
"poggersCat",
"Pong",
+ "Lehlogonolo \"YetNT\" Poole",
"Pooya",
"pouriya",
"Pouya",
- "Pranav",
+ "pranav",
"Luca Preibsch",
"Prem",
"Fabian Prinz",
@@ -1242,16 +1668,26 @@
"psychatrickivi12",
"pszlklismo",
"Pulidomedia.com",
+ "PUNKBR",
"haris purnama",
+ "Deva Puspita",
"GABRIEL PUTRICK",
"Bodnár Péter",
+ "P💊llTek",
+ "药丸科技 | P💊llTek.cn",
+ "Qellow",
+ "qoweawi",
"Gangler Quentin",
+ "Quezz3x",
+ "Qwerty15",
"Qwsa",
"QŴE",
"Anbarasan R",
"efvdtrrgvvfygttty5 5 r",
"Felo Raafat",
"Tim Rabatr",
+ "Vinni The Rabbit",
+ "rabbitboom",
"Radfrom",
"RadicalGamer",
"Radicool",
@@ -1259,6 +1695,9 @@
"raghul",
"khaled rahma",
"Rayhan Rahmats",
+ "RaichuNc2008",
+ "Raiyan",
+ "Babang Raja",
"Ralfreengz",
"1. Ramagister",
"Rostislav RAMAGISTER",
@@ -1267,8 +1706,10 @@
"Rahul Raman",
"Vicente Ramirez",
"ramon",
+ "Ramzy",
"Randlator",
"Random_artz__",
+ "Ranera <3",
"Rares",
"rashid",
"Yudha Febri Rastuama",
@@ -1288,6 +1729,7 @@
"REDEJCR",
"redyan",
"De'Viren Reed",
+ "Ali Rehab",
"Cornelius Reimann",
"releaseHUN",
"renas",
@@ -1308,11 +1750,15 @@
"Ridzuan",
"Samuel Rieger",
"RieJoemar",
+ "RiLa",
+ "Rings3467",
+ "Ringsoul",
"Jeroen Rinzema",
"RioAdir",
"Max Rios",
"Rio枫叶",
"RiPe16",
+ "riphoopfun",
"Rishabh",
"Rivki",
"rizaldy",
@@ -1331,13 +1777,17 @@
"Ronianagranada",
"roninjhie@gmail.com",
"Rori",
+ "Rottlez",
"Mario Roveda",
"Roy",
"Rubanen",
- "Kaj Rumpff",
+ "Joris de Ruiter",
+ "kaj rumpff",
"Dosta Rumson",
"Hong Ruoyong",
"Philip Ruppert",
+ "Language Russia",
+ "RussianLover2008",
"Ryan",
"LiÇViN:Cviatkoú Kanstançin Rygoravič",
"Ricky Joe S.Flores",
@@ -1345,18 +1795,32 @@
"Justin Saephan",
"sahel",
"Abdullah Saim",
+ "Saints557",
+ "sakhayan741",
"Audinta Sakti",
+ "Saldanha",
+ "saleh",
"Bassam bu salh",
"Bsam bu salh",
"M. Rizki Agus Salim",
"Salted",
"Matteo Salvini",
"Salvo04",
+ "SamComeli",
+ "Ali Sameer",
+ "Samen",
+ "samin",
+ "Samir",
+ "Sakude sammeel",
+ "Samsep10l",
+ "Samuel",
"San",
+ "Sanou",
"SaNt0RiNiKits577YT",
"Guilherme Santana",
"Santiago",
"Ivan Santos :)",
+ "santosamerica880@gmail.com",
"Diamond Sanwich",
"SAO_OMH",
"Dimas Saptandi",
@@ -1366,35 +1830,59 @@
"sattar",
"Saverio",
"Jhon Rodel Sayo",
+ "Daniel Schniepp",
"Christiaan Schriel",
"Hendrik Schur",
+ "Scratchyli",
+ "SDIP_FGV",
"SEBASTIAN2059",
"Semen",
+ "semethers",
+ "SENSEI",
+ "JIN SEOWOO",
"Mihai Serbanica",
"Daniel Balam Cabrera Serrano",
"Yefta Aditya Setiawan",
+ "Seyed",
"Sg",
"sgx",
"Black Shadow",
"ShadowQ",
"shafay",
"Manan Shah",
+ "Fares Shaheen",
+ "Shahin",
"shakesm",
+ "Mester Shams 🇮🇷",
"Sharvesh",
"Nalam Shashwath",
+ "A sheep",
+ "A small sheep",
+ "shemas",
"Haige Shi",
"ShockedGaming",
"Shogun",
"Shayan Shokry",
+ "Alonso Sierra",
"Dominik Sikora",
+ "Siltal",
+ "Erick Silva",
"Leonardo Henrique da Silva",
+ "Lucas Silva",
"Sebastian Silva",
+ "silver_volt4",
+ "Aviv Simel",
"Simotoring",
+ "SIRTACOOOOO",
"Pawan Singh sisodiya",
+ "skibidibambam",
"Skick",
+ "SkillPro",
"sks",
"Max Sky",
+ "Slavik❤",
"SlayTaniK",
+ "slcat",
"Igor Slobodchuk",
"Rasim Smaili",
"Nicola Smaniotto",
@@ -1409,6 +1897,8 @@
"SoK",
"SoldierBS",
"Unnamed Solicitude",
+ "Some1",
+ "SorenaPV",
"SPT Sosat",
"Soto",
"spacechase26",
@@ -1417,8 +1907,10 @@
"speddy16",
"Spielfreake (Garke)",
"Spielfream",
+ "Spooc",
"Spy",
"SqdDoom",
+ "Sreejith",
"sss",
"ST",
"Danny Stalman",
@@ -1426,6 +1918,7 @@
"Bartosz Staniszewski",
"Stare",
"StarFighter",
+ "Artem Stasyuk",
"Rz Stazzy",
"Stealives",
"Steffo",
@@ -1438,22 +1931,30 @@
"STPayoube",
"Stratex",
"SYED EPIC STUDIOS",
+ "SUBC1PYZH",
+ "suhail",
"sun.4810",
"Samet Sunal",
"sundar",
"Suprcat",
"Indo sus",
- "Sven",
+ "sven",
"Shannon Sy",
"syaifudib",
"Daniel Sykora",
+ "Sylveon",
+ "SYSTEM-D-WIN",
+ "Syumza",
+ "syxznb",
"Sz™",
"Jorge Luis Sánchez",
+ "Kevin Nicola Ríos Sánchez",
"Daniel Sýkora",
"Aleksandar Tadic",
"Arung Taftazani",
"taha",
"Rasim Eren TAHMAZ",
+ "Tails",
"Juancho Talarga",
"Emre Talha(Alienus)",
"talopl123",
@@ -1461,10 +1962,12 @@
"Kaustubh Tando",
"Kaustubh Tandon",
"Tania",
+ "tank-sman",
"Dmytro Tarasenko",
"Tarma",
"tarun",
"Tauras",
+ "TAWILE",
"tcnuhgv",
"tdho",
"Teals53",
@@ -1480,6 +1983,7 @@
"TestGame1",
"TestGame1👽🔥",
"testwindows8189",
+ "tetee}",
"tgd4",
"Than",
"Thanakorn7215",
@@ -1490,51 +1994,78 @@
"thejoker190101",
"TheLLage",
"TheMikirog",
+ "Thenoroozi",
+ "thenoteasy",
"Theo",
"Thiago_TRZ",
+ "Thiosinaine",
+ "ThirdStar248",
"ThisIsBad",
"Trevon Thrasher",
"Tiberiu",
"Cristian Ticu",
"Robert Tieber",
+ "TieDan",
+ "Tigas",
"TIGEE",
"Tim",
"Tingis2",
"Thura Tint",
"Nishant Tiwari",
"tjkffndeupwfbkh",
+ "Juraj Tlach",
+ "TM-DoDo",
"Toloche",
"Tom",
"Juan Pablo Montoya Tomalá",
+ "Tomasekvata",
"TomasNoobCz",
+ "Tommaso",
"tomo",
"tongtong",
"Top 999",
"Tory",
- "TozeLeal",
+ "tozeleal",
"Trung Hieu Le Tran",
+ "Small Translation",
"Translator",
+ "TrialTemp (3alTemp)",
"Trivago",
"El Trolax",
+ "truong",
+ "Quang Truøng",
"tseringlama",
"Konstantin Tsvetkov",
"Kontantin Tsvetkov",
"Tudikk",
+ "José Tumpay",
+ "Romioza TV",
"Jan Tymll",
"Zacker Tz",
"Zoltán Tóth",
+ "Buğra Türksal",
"uDinnoo",
"Cristian Ugalde",
+ "uhhihhycoo",
"Atchy-Dalama--Ancelly Ulrich",
"Syed Umar",
+ "Sylveon X Umbreon",
+ "Unarium",
"Unknown",
+ "Unlette659",
+ "uoniak",
+ "Cristopher Uriel",
"Uros",
"clarins usap",
+ "Usishshsis",
"utyrrwq",
"Uzinerz",
+ "Uładzisłaŭ",
"Shohrux V",
"Vader",
+ "VadimChoi",
"Valentin",
+ "Valentino",
"Valkan1975",
"Ante Vekić",
"Malte van het Veld",
@@ -1543,16 +2074,25 @@
"Dmitry \"SqdDoom\" Verigo",
"Deepanshu Verma",
"Jop Vernooij",
+ "Veroyatnolevlev",
+ "Veve",
"Via",
+ "Vickey",
"Victor",
"paulo victor",
+ "VieAFKNoName",
"Vigosl",
"vijay",
"vinicius",
"Robin Vinith",
"vinoth",
"Vishal",
+ "VISHUUU",
+ "Vishuuu/Vishal3308",
+ "Vitorinox",
+ "Vixyd_MamaTvoya",
"VoidNumberZero",
+ "Vovchik",
"Voxel",
"Voxel25",
"VTOR",
@@ -1566,11 +2106,14 @@
"Shaiful Nezan Bin Abdul Wahid",
"wahyu",
"Vaibhav Wakchaure",
+ "Wakefield",
"Simon Wang",
"Will Wang",
+ "WeanCZ",
"Tilman Weber",
"webparham",
"Wesley",
+ "Whezzy",
"whitipet",
"wibi9424",
"Wido2000",
@@ -1581,44 +2124,67 @@
"wither",
"Tobias Wohlfarth",
"wojtekpolska",
+ "Wolf",
"Doni Wolf",
"Tommy Wong",
"WonkaWoe",
"Moury ji world",
+ "worldbiomusic",
+ "wsdx233",
"wsltshh",
"Wurstkatze",
"WurstSaft",
+ "WynB",
+ "x7",
"Xavier",
"Francisco Xavier",
"xbarix123897",
"Peque XD",
+ "RompeCachetes XD",
"Xem",
+ "Xetwy21",
+ "Xgyol",
"Xizruh",
"xxonx8",
"Ajeet yadav",
+ "Taha yaghobi",
"yahya",
"Arda Yalın",
"Yamir",
"YannSonic",
"Yantohrmnt401",
+ "Yarikent02",
+ "YarikMajorik",
"Halil Yarkin",
+ "Yaromir",
+ "Yaroslav (Spaz1)",
+ "YaroslavBu",
"amr yasser",
+ "Yatoku",
+ "Yeiberth",
"YellowTractor",
+ "YelowGlow",
"Yasin YILMAZ",
+ "ykkaf",
"Ymgfr",
+ "yo",
"yoksoudraft",
+ "Yones",
"Kenneth Yoneyama",
"yossef",
"youcef",
"Youssef",
+ "ahmed youssef",
"Yousuf",
"Yovan182Sunbreaker",
"Yrtking",
"All Star YT",
"Dark Fgg5 YT",
"Yudhis",
+ "Yugicchi",
"yugo",
"yullian",
+ "YuriBombSquad",
"Yuslendo",
"NEEROOA Muhammad Yusuf",
"Yuuki",
@@ -1629,6 +2195,7 @@
"Z@p€g@m€r",
"Zac",
"Dawn Zac",
+ "zahra",
"Zaidan64GT",
"Zain",
"Zajle",
@@ -1637,11 +2204,18 @@
"Zangar",
"ZaraMax",
"zecharaiah",
+ "ArShAm ZED",
+ "Zeinab1391",
+ "Zen78905tyr",
"Daniele Zennaro",
+ "Zenotaiko",
+ "Zephyro",
+ "zFliws",
"zfuw668",
"Alex Zhao",
"Doge Zhao",
"Riven Zhao",
+ "Liubomyr Zheltova",
"jim ZHOU",
"Mohammad ziar",
"ZioFesteeeer",
@@ -1649,37 +2223,56 @@
"ZkyweR",
"Nagy Zoltán",
"Lukáš Zounek",
+ "ZOUZ",
+ "zPanxo",
"ZpeedTube",
+ "Krivoy Zub",
+ "Zwizard",
+ "zx4571",
"|_Jenqa_|",
"¥¥S.A.N.A¥",
+ "GURLER Çeviri",
+ "Éleftheros",
"Danijel Ćelić",
"Štěpán",
"Cristian Țicu",
"Μπαρλάς Παύλος-Ιάσονας",
"Ανέστης Πλήθος",
+ "Яркин Абдулхалил",
"Роман Абрамо",
"Роман Абрамов",
+ "айтаана",
"Андрей (Krays)",
"Андрій",
+ "опять сахаян бахаян",
+ "сахаян бахаян",
+ "эмиэ сахаян бахаян",
"Богдан",
"опять Вильян",
"Тот самый Вильян",
"Влад",
+ "Віктор",
"Даниил",
"данил",
"дибисяра",
"Дмитрий 228",
"Евгений(Eugene)",
"Артём Зобков (KoLenka)",
+ "Иван",
"Юстин Иглин",
"Игор",
+ "ИльяПро832",
"Кирилл",
+ "саха тылыгар тылбаастаабыт киһи",
"клаудкубес",
"Климов",
"Кирилл Климов",
"Андрей Коваленко",
"куатжан",
+ "сахаян лох",
+ "Марк",
"Ваня Марков",
+ "маталка",
"Драган Милановић",
"Игор Милановић",
"Марко Милановић",
@@ -1687,6 +2280,7 @@
"михаил",
"boba (Бодік) доперекладав Укр мову",
"Арсений Мостовщиков",
+ "ПашаСосиХуй",
"Принцип",
"Пук-пук пук-пук",
"Пупсєль",
@@ -1696,11 +2290,33 @@
"Рома",
"Ромашка :3",
"Кирилл Рябцев",
+ "ААААААА САХАЯН",
+ "айуу айа эмиэ сахаян",
+ "надоел уже этот сахаян",
+ "сахаян да сахаян",
+ "в смысле опять сахаян?",
+ "сахаян тугу да кынара суох",
+ "-конкретно сылайдым",
+ "сахаянтан мин конкретно сылайдым",
+ "ханнык дундук гугл переводчик туттубутуй?",
+ "ТыНяшкаЕслиЧитаешьЭто :>",
+ "улыbHuсь",
+ "Ерасыл Фазылов (Paraxilius)",
"ZEPT\"Александр Фартунов\"",
+ "ФОРЕСТ",
+ "Фортик",
+ "!SW сосут мой член!",
"Эмир",
+ "мин эмиэ",
"Өмүрзаков Эрсултан",
+ "сахаян бүт эрэ",
+ "сахаян уоскуй эрэ",
+ "Forton123 ютубер",
+ "Яромир",
"Ярослав \"Noiseaholic\"",
+ "Б. Ярослав",
"қуатжан",
+ "أيمن أبومايله",
"اا",
"احمدرضا",
"احمد اسامه",
@@ -1714,16 +2330,21 @@
"عبدالرحمن النجم",
"امیرعلی",
"اوتاكوDZ",
+ "ایرانی",
"ایلی",
+ "ایهان",
"بساام",
+ "تستپط",
"جود",
"حسين حساني",
"جود حيدر",
"محمد خالد",
"امیرحسین دهقان",
"امید رضازاده",
+ "كريستيانو رونالدو",
"فاطمه عباس زاده ۸۴",
"فاطمه عباس زاده۸۴",
+ "زينب",
"ستسپ",
"سلطان سروش",
"محمد وائل سلطان",
@@ -1737,14 +2358,17 @@
"علی",
"سيد عمر",
"عيسى",
+ "مجتبی",
"اللهم صل على محمد وآل محمد",
"امیر محمد",
"هادی مرادی",
+ "مملی",
"سعید مهجوری",
"مهدی",
"سید احمد موسوی",
"عادل ن.",
"نریمان",
+ "آرشا نظری",
"عادل نوروزی",
"ه۶۹",
"حسین وفاییفرد",
@@ -1752,12 +2376,15 @@
"١٢٣٤٥",
"٦٤٦٦٤٦٤٦",
"علیرضا پودینه",
+ "۱وقحی.",
"वेदाँश त्यागी",
+ "லோகேஷ்",
"അർഷഖ് ഹസ്സൻ",
"วีรภัทร",
"แมวผงาด(JuniorMeowMeow)",
"๖̶ζ͜͡zephyro",
"ᗪ|乃|丂Я尺卂",
+ "₹alph‽",
"✰ℭØØҜĬ£$✰",
"JPnatu なつ",
"クリーバー",
@@ -1772,32 +2399,41 @@
"南宫銷子()",
"哔哩哔哩@Medic药",
"夏神(后期汉化修正)",
+ "大笨蛋susu",
"小黑猫",
"张帅",
"徐安博",
"志夏",
"志夏。",
"志夏君deron",
+ "扎卡拉Zakara",
+ "月镜",
+ "杰瑞longmouses",
"枫夜",
"毛毛毛大毛",
"炸弹朋友和Medic药",
"熊老三",
"盐焗汽水er",
"神仙",
+ "纳皮猪NapPig.com",
+ "药丸科技|PillTek.cn",
"药药Medic",
"蔚蓝枫叶",
"陈星宇你就是歌姬吧",
"随风飘姚",
+ "鲨鱼俱乐部",
"鲨鱼服·Medic",
"鲲鹏元帅",
"꧁ℤephyro꧂",
"가라사대",
"공팔이",
"권찬근",
+ "김두한",
"김원재",
"넌",
"먹꾸리",
"박건희",
+ "배추",
"김대중 부관참시",
"붐추",
"사람사는 세상",
@@ -1806,8 +2442,11 @@
"일베저장소",
"전감호",
"BombsquadKorea 네이버 카페",
+ "F҉a҉d҉l҉i҉n҉e҉t҉",
"Zona-BombSquad",
+ "༺Leͥgeͣnͫd༻",
"CrazySquad",
- "Stazzy"
+ "Stazzy",
+ "slida"
]
}
diff --git a/dist/ba_data/data/languages/arabic.json b/dist/ba_data/data/languages/arabic.json
index 974917c1..f4d642b2 100644
--- a/dist/ba_data/data/languages/arabic.json
+++ b/dist/ba_data/data/languages/arabic.json
@@ -1,20 +1,22 @@
{
"accountSettingsWindow": {
- "accountNameRules": "لا يمكن لاسماء الحِسابَات أن تحتوي على رموز تعبيرية أو حروف غير ألفبائية",
+ "accountNameRules": "اسماء الحسابات لا يمكن أن تحتوي على رموز تعبير، أو حروف خاصة",
"accountProfileText": "معلومات اللاعبين",
"accountsText": "حسابات",
"achievementProgressText": "${TOTAL} من أصل ${COUNT} إنجازاتك: أنجزت",
- "campaignProgressText": "تقدم الحملة [HARD]:${PROGRESS}",
+ "campaignProgressText": "تقدمك في المعسكر(في الوضع الصعب): ${PROGRESS}",
"changeOncePerSeason": "يمكنك تغييره مرة واحدة في الموسم",
"changeOncePerSeasonError": "يجب عليك الانتظار حتى الموسم القادم لتغيير هذا مجددا (${NUM} أيام )",
+ "createAnAccountText": "اصنع حساب",
"customName": "الاسم المخصص",
- "googlePlayGamesAccountSwitchText": "اذا اردت استخدام حساب غوغل بلاي اخر،\nقم بإستعمال تطبيق غوغل بلاي العاب لتحويله.",
+ "deleteAccountText": "حذف الحساب",
+ "googlePlayGamesAccountSwitchText": "اذا اردت استخدام حساب غوغل بلاي اخر،\nقم بإستعمال تطبيق العاب غوغل بلاي لتحويله.",
"linkAccountsEnterCodeText": "ادخل الرمز",
"linkAccountsGenerateCodeText": "انشئ رمز",
"linkAccountsInfoText": "(مشاركة تقدمك مع الاجهزة الاخرى)",
"linkAccountsInstructionsNewText": "لربط حسابين،- انشئ رمز من الجهاز المراد انشاء الحساب فيه\n- وقم بإدخال الرمز في الجهاز الآخر\n\nالبيانات من الحساب الأول سوف يتم مشاركتها بين الجهازين\n\n من الحسابات كحد أقصى ${COUNT} يمكنك انشاء\n\n تنويه : فقط اربط الحسابات التي تملكها، إذا ربطت حسابك مع الأصدقاء،\n\n .لن يمكنكما اللعب معًا في نفس الوقت",
"linkAccountsInstructionsText": "لربط حسابين, انتج كود على احد الحسابين \nو ادخل هذا الكود على الاخر.\nالتقدم و المخزون سيشتركا.\nيمكنك ربط حتى ${COUNT} حسابات.\n\nكن حذراً; هذا لا يمكن استرجاعه",
- "linkAccountsText": "ربط حساب",
+ "linkAccountsText": "ربط الحسابات",
"linkedAccountsText": ": حساباتي المرتبطة",
"manageAccountText": "إدارة الحساب",
"nameChangeConfirm": "هل تريد تغيير اسم حسابك إلى ${NAME}؟",
@@ -25,25 +27,27 @@
"setAccountNameDesc": "اختر اسم لحسابك\nيمكنك استعمال الاسم من أحد حساباتك المرتبطة\nأو إنشاء اسم فريد.",
"signInInfoText": "،قم بتسجيل دخولك لتجمع بطاقات، وتتحدى اللاعبين حول العالم\n.ولمشاركة تقدمك عبر الأجهزة",
"signInText": "تسجيل الدخول",
+ "signInWithAnEmailAddressText": "سجل الدخول بالبريد الألكتروني",
"signInWithDeviceInfoText": "الحساب التلقائي متوفر فقط على هذا الجهاز",
"signInWithDeviceText": "سجل دخولك بحساب الجهاز",
"signInWithGameCircleText": "Game Circle سجل دخولك بواسطة",
- "signInWithGooglePlayText": "Google Play سجل دخولك عبر",
+ "signInWithGooglePlayText": "Google Play سجل دخولك عبر ",
"signInWithTestAccountInfoText": "(حساب موجود على هاتفك; استخدم حساب الهاتف للمتابعة)",
"signInWithTestAccountText": "تسجيل الدخول بحساب تجريبي",
+ "signInWithText": "تسجيل دخول مع ${SERVICE}",
"signInWithV2InfoText": "حساب يعمل على جميع المنصات",
- "signInWithV2Text": "قم بتسجيل الدخول باستخدام حساب BombSquad",
+ "signInWithV2Text": "قم بتسجيل الدخول باستخدام حساب ${APP_NAME}",
"signOutText": "تسجيل الخروج",
"signingInText": "...جارٍ تسجيل دخولك",
"signingOutText": "...جارٍ تسجيل خروجك",
"testAccountWarningOculusText": "تحذير: انت تقوم بتسجيل الدخول باستخدام حساب تجريبي.\nسيستبدل بحساب حقيقي خلال هذا العام الذي من خلاله\nسوف تقدر على شراء البطاقات ومزايا أخرى.\n\nإلى الان يمكنك الحصول على جميع البطافات في اللعبة.\n(على الرغم من ذلك، قم بالحصول على حساب متقدم مجانا)",
- "ticketsText": "بطاقاتك الحالية:${COUNT}",
- "titleText": "الحساب",
+ "ticketsText": "${COUNT} :عدد روانقك",
+ "titleText": "حسابك",
"unlinkAccountsInstructionsText": "حدد حسابا لإلغاء ربطه",
"unlinkAccountsText": "إلغاء ربط الحسابات",
- "unlinkLegacyV1AccountsText": "إلغاء ربط الحسابات القديمة (V1)",
+ "unlinkLegacyV1AccountsText": "إلغاء ربط الحسابات من الإصدار القديم (V1)",
"v2LinkInstructionsText": "استخدم هذا الارتباط لإنشاء حساب أو تسجيل الدخول.",
- "viaAccount": "(${NAME} عبر الحساب)",
+ "viaAccount": "(وهو ${NAME})",
"youAreSignedInAsText": ": قمت بتسجيل الدخول كـ"
},
"achievementChallengesText": "إنجازات التحديات",
@@ -78,7 +82,7 @@
"Free Loader": {
"descriptionFull": "ابدأ بلعب الوضع الحر للجميع مع لاعبين أو أكثر",
"descriptionFullComplete": "تم بدء لعبة بوضع الحرية للجميع مع لاعِبَيْنْ أو أكثر",
- "name": "الفريق المجاني"
+ "name": "محمل مجاني"
},
"Gold Miner": {
"description": "اقتل 6 خصوم بأستخدام الألغام الأرضيَّة",
@@ -111,7 +115,7 @@
"descriptionComplete": "!سجلت 250 نقطة",
"descriptionFull": "${LEVEL} سجِّل 250 نقطة في",
"descriptionFullComplete": "${LEVEL} لقد سجَّلت 250 نقطة في",
- "name": "معَلِّم ${LEVEL}"
+ "name": "اسطوري!! ${LEVEL}"
},
"Last Stand Wizard": {
"description": "سجل 500 نقطة",
@@ -166,7 +170,7 @@
"description": "فُزْ بدون اي قوى خارقة",
"descriptionComplete": "لقد فزتَ بدون أي قوى خارقة",
"descriptionFull": "بدون اي قوى خارقة${LEVEL} فز في",
- "descriptionFullComplete": "بدون اي قوى خارقة${LEVEL} لقد فزتَ في",
+ "descriptionFullComplete": "بدون اي تعزيزات${LEVEL} لقد فزتَ في",
"name": "دقة القصف"
},
"Pro Boxer": {
@@ -195,7 +199,7 @@
"descriptionComplete": "لقد هزمْتَ كل الموجات",
"descriptionFull": "${LEVEL} اهزم كل الموجات في",
"descriptionFullComplete": "${LEVEL} لقد هزمتَ كل الموجات في",
- "name": "${LEVEL} نصر"
+ "name": "${LEVEL} إنتصار"
},
"Pro Runaround Victory": {
"description": "اكمل كل الموجات",
@@ -237,7 +241,7 @@
"descriptionComplete": "أحرزت 500 نقطة",
"descriptionFull": "${LEVEL} أحرز 500 نقطة في",
"descriptionFullComplete": "${LEVEL} أحرزت 500 نقطة في",
- "name": "${LEVEL} استاذ"
+ "name": "${LEVEL} اسطوري"
},
"Runaround Wizard": {
"description": "أحرز 1000 نقطة",
@@ -255,7 +259,7 @@
"description": "فز بدون أن تموت",
"descriptionComplete": "لقد فُزت بدون ان تموت",
"descriptionFull": "بدون أن تموت ${LEVEL} فز",
- "descriptionFullComplete": "بدون أن يموت ${LEVEL} لقد فزت",
+ "descriptionFullComplete": "بدون أن تموت ${LEVEL} لقد فزت",
"name": "البقاء حيا"
},
"Super Mega Punch": {
@@ -335,19 +339,24 @@
"getMoreGamesText": "الحصول على المزيد من الألعاب",
"titleText": "إضافة لعبة"
},
+ "addToFavoritesText": "الإضافة إلى المفضلات",
+ "addedToFavoritesText": ".إلى المفضلات '${NAME}' تمت إضافة",
+ "allText": "الكل",
"allowText": "السماح",
"alreadySignedInText": "تم تسجيل الدخول من حسابك من جهاز آخر.\n يرجى تبديل الحسابات أو إغلاق اللعبة على الأجهزة الأخرى\n وحاول مرة أخرى.",
"apiVersionErrorText": "خطأ في تحميل الجزء ${NAME}; انه مخصص للإصدار رقم ${VERSION_USED}; يجب استخدام الإصدار ${VERSION_REQUIRED}.",
+ "applyText": "يختار",
+ "areYouSureText": "هل انت متأكد؟",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"ذاتي\" فعله فقط عندما تكون سماعات الأذن موصولة",
"headRelativeVRAudioText": "صوت VR موافق مع حركة الرأس",
- "musicVolumeText": "مستوى الموسيقى",
- "soundVolumeText": "مستوى الموسيقى",
- "soundtrackButtonText": "المقاطع الصوتية",
- "soundtrackDescriptionText": "(اختر موسيقاك الخاصة لتعمل خلال اللعب)",
+ "musicVolumeText": "صوت المعازف",
+ "soundVolumeText": "صوت الأشياء",
+ "soundtrackButtonText": "المقطوعات الصوتية",
+ "soundtrackDescriptionText": "(أضف مقاطع صوتية لتسمعها أثناء لعبك)",
"titleText": "الصوت"
},
- "autoText": "ذاتي الاختيار",
+ "autoText": "تلقائي",
"backText": "للخلف",
"banThisPlayerText": "حظر هاذا الاعب",
"bestOfFinalText": "الافضل في ${COUNT}",
@@ -360,39 +369,49 @@
"boostText": "تقوية",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} تمّ ضبطه بالتطبيق ذاته",
"buttonText": "زر",
- "canWeDebugText": "هل ترغب ان تقوم فرقة القنبلة تلقائيا بالتبليغ عن المشاكل والاخطاء التقنية \nوالفنيه وبعض المعلومات الاساسية الى موفر اللعبة ؟ \n\nهذه البيانات لا تحتوي على اي معلومات شخصيه و هي تساعد على ابقاء\n اللعبه تعمل بشكل سلس و بدون اخطاء.",
+ "canWeDebugText": "هل ترغب ان تقوم ${APP_NAME} تلقائيا بالتبليغ\nعن الأخطاء التقنية، الفنية وبعض المعلومات الاساسية لمطور اللعبة؟\n\nهذه البيانات لا تحتوي على اية معلومات شخصية وهي تساعد\nعلى ابقاء العبة بشكل سلس وبدون أخطاء.",
"cancelText": "إلغاء الأمر",
"cantConfigureDeviceText": "المعذرة، ${DEVICE} لا يمكن تخصيصه",
"challengeEndedText": "هذا التحدي قد انتهى",
- "chatMuteText": "اسكات الدردشة",
- "chatMutedText": "تم اسكات الدردشة",
- "chatUnMuteText": "تحرير الدردشة",
+ "chatMuteText": "كتم المحادثة",
+ "chatMutedText": "المحادثة مكتومة",
+ "chatUnMuteText": "الغ كتم المحادثة",
+ "chests": {
+ "prizeOddsText": "احتمالات الجائزة",
+ "reduceWaitText": "قلل الانتظار",
+ "slotDescriptionText": "هذه الفتحة يمكنها أن تحمل كنزاً.\n\nاحصل على الكنوز عن طريق لعب مستويات في الحملات، الترتب في البطولات، و إكمال الانجازات.",
+ "slotText": "فتحة كنز ${NUM}",
+ "slotsFullWarningText": "تحذير: كل فتحات الكنوز ممتلئة.\nأي كنوز ستحصل عليها في هذه اللعبة سيتم خسارتها.",
+ "unlocksInText": "يُفتح في"
+ },
"choosingPlayerText": "<يختار لاعب>",
+ "claimText": "مطالبة",
+ "codesExplainText": "يتم توفير الرموز من قبل المطور\n.لتحليل مشاكل الحساب وتصحيحها",
"completeThisLevelToProceedText": "يجب أن تكمل هذه المرحلة ليتم الاجراء",
"completionBonusText": "علاوة الاكمال",
"configControllersWindow": {
- "configureControllersText": "ضبط قبضات التحكّم",
+ "configureControllersText": "إعداد وحدات التحكم",
"configureKeyboard2Text": "ضبط لوحة مفاتيح اللاعب الثاني",
- "configureKeyboardText": "ضبط لوحة المفاتيخ",
- "configureMobileText": "أجهزة المحمول كقبضة تحكّم",
- "configureTouchText": "ضبط شاشة اللمس",
+ "configureKeyboardText": "ضبط لوحة المفاتيح",
+ "configureMobileText": "إعداد هاتف كذراع تحكم",
+ "configureTouchText": "إعداد أزرار اللمس",
"ps3Text": "قبضات تحكّم PS3",
- "titleText": "قبضات التحكم",
+ "titleText": "إعداد المُتَحكِمات",
"wiimotesText": "Wiimotes",
"xbox360Text": "يد ألعاب أكس بوكس 360"
},
"configGamepadSelectWindow": {
- "androidNoteText": "ملاحظة: إن دعم قبضات التحكم يتباين تبعاً للجهاز و نظام ال Android",
+ "androidNoteText": "لتعلم: أن وحدات التحكم المدعومة تتباين حسب الجهاز وإصدار الأندرويد.",
"pressAnyButtonText": "اضغط أيّ زر على قبضة التحكّم التي تريد أن تضبطها",
- "titleText": "ضبط قبضات التحكّم"
+ "titleText": "هيئ وحدات التحكم"
},
"configGamepadWindow": {
"advancedText": "خيارات متطوّرة",
"advancedTitleText": "اعداد متقدم ليد الألعاب",
- "analogStickDeadZoneDescriptionText": "(فعّل هذه إذا كانت شخصيّتك 'تنحرف' تحرّر عصى التحكّم)",
+ "analogStickDeadZoneDescriptionText": "(فعّل هذه إذا كانت شخصيّتك 'تنحرف' عندما تحرّر عصا التحكّم)",
"analogStickDeadZoneText": "مجال الموت للعصى التماثلية",
"appliesToAllText": "(تنطبق على جميع قبضات التحكّم من هذا النوع)",
- "autoRecalibrateDescriptionText": "(فعّل هذه إذا كانت شخصيّتك لاتتحرّك بالسرعة العظما)",
+ "autoRecalibrateDescriptionText": "(فعّل هذه إذا كانت شخصيّتك لاتتحرّك بالسرعة العظمى)",
"autoRecalibrateText": "ضبط آلي للعصى التماثلية",
"axisText": "محور",
"clearText": "محو",
@@ -435,26 +454,27 @@
"keyboard2NoteText": "ملاحظة: يمكن لمعظم لوحات المفاتيح تسجيل عدد قليل من ضغطات المفاتيح في\nمرة واحدة، لذلك وجود لاعب لوحة المفاتيح الثانية قد تعمل بشكل أفضل\nإذا كان هناك لوحة مفاتيح منفصلة تعلق لهم لاستخدامها.\nلاحظ أنك ستظل بحاجة إلى تعيين مفاتيح فريدة إلى\nلاعبين اثنين حتى في هذه الحالة."
},
"configTouchscreenWindow": {
- "actionControlScaleText": "مقياس التحكم في العمل",
- "actionsText": "أفعال",
- "buttonsText": "الأزرار",
- "dragControlsText": "< اسحب عناصر التحكم لإعادة وضعها >",
- "joystickText": "عصا التحكم",
- "movementControlScaleText": "مقياس مراقبة الحركة",
- "movementText": "حركة",
- "resetText": "إعادة تعيين",
- "swipeControlsHiddenText": "إخفاء أيقونات السحب",
- "swipeInfoText": "'انتقاد' الضوابط أسلوب تأخذ قليلا التعود على ولكن\nتجعل من السهل للعب دون النظر إلى الضوابط.",
- "swipeText": "مسحة",
- "titleText": "تهيئة شاشة اللمس"
+ "actionControlScaleText": "حجم المُفَعِّل",
+ "actionsText": "المُفعِّل",
+ "buttonsText": "زرّي",
+ "dragControlsText": "{ غير مكان أداتي التحكم بنقرهما وسحبهما حيث تشاء }",
+ "joystickText": "مُدور",
+ "movementControlScaleText": "حجم المُحرِك",
+ "movementText": "المُحرِك",
+ "resetText": "إعادة الأصل",
+ "swipeControlsHiddenText": "اخفِ أزرار التحكم",
+ "swipeInfoText": "اختيار الزر الـ\"مربع\" سيأخذ وقتك للتعود عليه\nإلا أنه يسهل اللعب دون النظر لزر التحكم.",
+ "swipeText": "مربع",
+ "titleText": "إعداد التحكم باللمس"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} يُمكن تعديله في تطبيق إعدادات النظام.",
"configureItNowText": "هل تريد تهيئته الآن؟",
"configureText": "تهيئة",
"connectMobileDevicesWindow": {
"amazonText": "متجر تطبيقات أمازون",
"appStoreText": "المتجر",
- "bestResultsText": "لتحقيق أفضل النتائح ستحتاج اتصال انترنت سريع .. يمكنك \nزيادة السرعة بايقاف الاجهزة الاخرة المتصلة بالشبكة، أو اللعب \nقرب موزع الشبكة، أو الاتصال بمخدم اللعبة باستخدام الكابل \nالمباشر الى الشبكة",
- "explanationText": "لاستخدام الهاتف الذكي أو الكمبيوتر اللوحي باعتبارها وحدة تحكم لاسلكية،\nتثبيت التطبيق \"${REMOTE_APP_NAME}\"عليه. أي عدد من الأجهزة\nيمكن الاتصال لعبة ${APP_NAME}عبر واي-في، وأنه مجاني!",
+ "bestResultsText": "لأداء أفضل يستحسن استعمال شبكة لاسلكية مستقرة ويمكنك زيادة \nاستقرار الشبكة بإطفاء الأجهزة اللاسلكية الأخرى(كالهواتف) واللعب\nقريبًا من موجهك(الراوتر) وكذا توصيل الجهاز المُستَضيف للمُلَاعَبَة\nبسلك إيثرنت متصل بالشبكة(الموجه) لزيادة سرعة الاتصال وتحسينه.",
+ "explanationText": "لاستعمال جوال أو لوحي(تابلت) كذراع تحكم لاسلكي فعليك\nبتثبيت تطبيق \"${REMOTE_APP_NAME}\" على الجهاز المراد استعماله كذراع.\nوهكذا يمكنك توصيل أكثر من جوال/لوحي بـ${APP_NAME} عبر الشبكة اللاسلكية.",
"forAndroidText": "لأجهزة الأندرويد:",
"forIOSText": "لنظام التشغيل أيفون:",
"getItForText": "احصل على ${REMOTE_APP_NAME} لنظام التشغيل يوس في أبل أب ستور\nأو للأندرويد في متجر جوجل بلاي أو الأمازون أبستور",
@@ -491,7 +511,7 @@
"powerRankingPointsToRankedText": "{اجمع} من {المتبقي} النقاط",
"powerRankingText": "ترتيب الطاقة",
"prizesText": "الجوائز",
- "proMultInfoText": "اللاعبين الذين لديهم الترقية ${PRO}\nالحصول على ${PERCENT}٪ بوينت بوست هنا.",
+ "proMultInfoText": "يحصل اللاعبين المشتركين في ${PRO}\nعلى زيادة قدرها ${PERCENT}% في نقاطهم.",
"seeMoreText": "المزيد . . .",
"skipWaitText": "تخطي الإنتظار",
"timeRemainingText": "الوقت المتبقي",
@@ -504,24 +524,24 @@
},
"copyConfirmText": "نسخ إلى اللوحة",
"copyOfText": "${NAME} نسخ",
- "copyText": "ينسخ",
+ "copyText": "نسخ",
"createEditPlayerText": "<اصنع او عدل حساب>",
"createText": "اصنع",
"creditsWindow": {
- "additionalAudioArtIdeasText": "الأصوات الإضافية، الأعمال المبتكرة، والأفكار من قبل ${NAME}",
- "additionalMusicFromText": "المعازف الإضافية من ${NAME}",
+ "additionalAudioArtIdeasText": "${NAME} الأصوات الإضافية، الأعمال المبتكرة، والأفكار من قبل",
+ "additionalMusicFromText": "${NAME} المعازف الإضافية من",
"allMyFamilyText": "كل أصدقائي وعائلتي التي ساعدتني لتجربة اللعبة",
- "codingGraphicsAudioText": "البرمجة، والرسومات، والأصوات انشأها ${NAME}",
+ "codingGraphicsAudioText": "${NAME} البرمجة، والرسومات، والأصوات انشأها",
"languageTranslationsText": "مترجمي اللُّغات",
"legalText": ":الحقوق القانونية",
- "publicDomainMusicViaText": "معازف النطاق العام بواسطة ${NAME}",
- "softwareBasedOnText": "هذه البرمجيات تعتمد على جزء من عمل ${NAME}",
- "songCreditText": "${PERFORMER} تم تأديتها من قبل ${TITLE}\n نشر بواسطة ${PUBLISHER}،توزيع ${ARRANGER}، تم التأليف من قبل ${COMPOSER}\nبتصريح من ${SOURCE}",
+ "publicDomainMusicViaText": "${NAME} معازف النطاق العام بواسطة",
+ "softwareBasedOnText": "${NAME} هذه البرمجيات تعتمد على جزء من عمل",
+ "songCreditText": "${PERFORMER} تم تأديتها من قبل ${TITLE} \n ${PUBLISHER} نشر بواسطة ،${ARRANGER} توزيع ،${COMPOSER} تم التأليف من قبل \n ${SOURCE} بتصريح من",
"soundAndMusicText": "الأصوات والمعازف:",
- "soundsText": "تأثيرات الصوت من: (${SOURCE})",
+ "soundsText": "(${SOURCE}) :تأثيرات الصوت من",
"specialThanksText": "شكر خاص:",
- "thanksEspeciallyToText": "والشكر خاصةً لـ${NAME}",
- "titleText": "فريق عمل ${APP_NAME}",
+ "thanksEspeciallyToText": "${NAME} والشكر خاصةً لـ",
+ "titleText": "مُساهِمي ${APP_NAME}",
"whoeverInventedCoffeeText": "الشخص الذي اخترع القهوة"
},
"currentStandingText": "تصنيفك الحالي هو #${RANK}",
@@ -531,18 +551,18 @@
"debugText": "التصحيح",
"debugWindow": {
"reloadBenchmarkBestResultsText": "ملاحظة: فمن المستحسن أن قمت بتعيين إعدادات-> الرسومات-> القوام إلى 'عالية' أثناء اختبار هذا.",
- "runCPUBenchmarkText": "قياس أداء المعالج",
- "runGPUBenchmarkText": "قياس أداء معالج الرسوميات",
- "runMediaReloadBenchmarkText": "قياس أداء وحدة تحميل الوسائط",
- "runStressTestText": "تشغيل اختبار الإجهاد",
+ "runCPUBenchmarkText": "قس أداء المُعالج المركزي",
+ "runGPUBenchmarkText": "قس أداء معالج الرسوميات",
+ "runMediaReloadBenchmarkText": "قس أداء تحميل المحتوى",
+ "runStressTestText": "شغل الاختبار",
"stressTestPlayerCountText": "عدد اللاعبين",
"stressTestPlaylistDescriptionText": "اختبار الإجهاد قائمة التشغيل",
- "stressTestPlaylistNameText": "اسم قائمة التشغيل",
- "stressTestPlaylistTypeText": "نوع قائمة التشغيل",
- "stressTestRoundDurationText": "مدة الجولة",
- "stressTestTitleText": "اختبار الإجهاد",
- "titleText": "معايير واختبارات الإجهاد",
- "totalReloadTimeText": "إجمالي وقت إعادة التحميل: ${TIME} (راجع سجل للحصول على التفاصيل)"
+ "stressTestPlaylistNameText": "اسم قائمة الألعاب",
+ "stressTestPlaylistTypeText": "نوع قائمة الألعاب",
+ "stressTestRoundDurationText": "مدة الدورة الواحدة",
+ "stressTestTitleText": "محاكاة الضغط والإجهاد",
+ "titleText": "قياس الأداء والإجهاد والتحميل",
+ "totalReloadTimeText": "(راجع السجل للتفاصيل) ${TIME} :إجمال وقت إعادة تحميل الوسائط"
},
"defaultGameListNameText": "الافتراضي ${PLAYMODE} قائمة التشغيل",
"defaultNewGameListNameText": "قائمة تشغيل ${PLAYMODE}",
@@ -550,6 +570,7 @@
"demoText": "عرض",
"denyText": "رفض",
"deprecatedText": "إهمال",
+ "descriptionText": "الوصف",
"desktopResText": "جودة سطح المكتب",
"deviceAccountUpgradeText": "تحذير:\nانت مسجل الدهول بحساب الجهاز (${NAME}).\nحسابات الجهاز (Device) سيتم حذفها في المستقبل.\nقم بالتطوير الى حساب V2 اذا اردت ان تقوم بحفظ تقدمك.",
"difficultyEasyText": "سهل",
@@ -557,9 +578,13 @@
"difficultyHardText": "صعب",
"difficultyHardUnlockOnlyText": "لا يمكن فتح هذا المستوى إلا في الوضع الصعب.\n هل تعتقد أن لديك ما يلزم!؟!؟!",
"directBrowserToURLText": "وجه متصفح الشابكة إلى العنوان التالي:",
- "disableRemoteAppConnectionsText": "تعطيل اتصالات التطبيق عن بعد",
+ "disableRemoteAppConnectionsText": "منع الأجهزة المستعملة لتطبيق الحاكوم من الاتصال",
"disableXInputDescriptionText": "يسمح أكثر من 4 وحدات تحكم ولكن قد لا تعمل كذلك.",
"disableXInputText": "xinput تعطيل",
+ "disabledText": "مُعطّّل",
+ "discardText": "تجاهل",
+ "discordFriendsText": "أتبحث عن رفيق لتلعب معه؟\nإذن عليك بالديسكورد فإنه حيث تجد رفيقًا للعب!",
+ "discordJoinText": "انضم للديسكورد",
"doneText": "تم",
"drawText": "تعادل",
"duplicateText": "مكرر",
@@ -576,57 +601,59 @@
"titleText": "قائمة تشغيل محرر"
},
"editProfileWindow": {
- "accountProfileInfoText": "يحتوي هذا الملف الشخصي الفريد على اسم\nوأيقونة تعتمد على حسابك.\n\n${ICONS}\n\nانشئ ملف شخصي مخصص لاستعمال\nاسماء مختلفة أو أيقونات مخصصة.",
- "accountProfileText": "(ملف تعريف الحساب)",
- "availableText": "الاسم \"${NAME}\" متاح.",
+ "accountProfileInfoText": "يظهر هذا الـمُـعـرِّف اسـم الحـسـاب\nمع شارة تظهر نوع الحساب كهذه:\n\n${ICONS}\n\nانشئ مُعـرِّف جـديـد مـن الـقـائـمـة\nالسابقة لتغيير الاسم وتغيير الشارة.",
+ "accountProfileText": "(مُعرِّف حسابي)",
+ "availableText": ".متاح \"${NAME}\" الاسم",
"characterText": "الشخصية",
- "checkingAvailabilityText": "جار التحقق من التوفر ل \"${NAME}\" ...",
- "colorText": "اللون",
+ "checkingAvailabilityText": "...\"${NAME}\" يُبحث عن توفر الاسم",
+ "colorText": "اللون الجذري",
"getMoreCharactersText": "الحصول على المزيد من الشخصيات ...",
"getMoreIconsText": "الحصول على المزيد من الرموز ...",
- "globalProfileInfoText": "ملفات اللاعب العالمية مصممة لتملك\nاسم عالمي فريد. وأيضًا تتضمن أيقونات مخصصة",
- "globalProfileText": "(ملف شخصي عالمي)",
- "highlightText": "تسليط الضوء",
- "iconText": "أيقونة",
- "localProfileInfoText": "ملامح لاعب المحلي ليس لديهم رموز وأسمائهم\nغير مضمونة لتكون فريدة من نوعها. الترقية إلى ملف شخصي عام\nلحجز اسم فريد وإضافة رمز مخصص.",
- "localProfileText": "(الملف الشخصي المحلي)",
+ "globalProfileInfoText": "تحجز المُعرّفات العالمية اسمًا فريدًا لك عالميًا\nوتـسـمـح لـك بإضــافــة شـارة أعــلـى اسـمـك.",
+ "globalProfileText": "(مُعرّف عالمي)",
+ "highlightText": "اللون الفرعي",
+ "iconText": "الشارة",
+ "localProfileInfoText": "المعرف المحلي هو معرف خاص على جهازك، ولا يخزن في الخوادم،\nحتى أن اسمه لا يكون فريدًا ومحجوزًا. ولا يمكنك إضافة شارات.\nفإن كنت تريد تلك الميزات فاجعل مُعرّفك عالميًا لتحجز اسمًا وتضيف شارة.",
+ "localProfileText": "(مُعَرِّف محلي)",
"nameDescriptionText": "اسم اللاعب",
"nameText": "الاسم",
+ "profileAlreadyExistsText": ".يوجد ملف شخصي بهذا الإسم بالفِعل",
"randomText": "عشوائي",
- "titleEditText": "تعديل الملف الشخصي",
- "titleNewText": "ملف شخصي جديد",
- "unavailableText": "\"${NAME}\" غير متوفر؛ حاول اسم آخر.",
- "upgradeProfileInfoText": "هذا سيحفظ اسم لاعب في جميع أنحاء العالم\nوتسمح لك بتعيين رمز مخصص لها.",
- "upgradeToGlobalProfileText": "الترقية إلى الملف الشخصي العالمي"
+ "titleEditText": "عدل المُعرِّف",
+ "titleNewText": "أنشئ مُعرفًا",
+ "unavailableText": "\"${NAME}\" معرف محجوز، جرب اسمًا آخر.",
+ "upgradeProfileInfoText": "هذا سيحجز اسم المعرف عالميًا\nوسيسمح لك بوضع شارة على المعرف.",
+ "upgradeToGlobalProfileText": "جعل الملف عالميًا"
},
"editSoundtrackWindow": {
"cantDeleteDefaultText": "لا يمكنك حذف الصوت الافتراضي.",
"cantEditDefaultText": "لا يمكن التعديل على تسجيل الصوت الاساسي. قم بنسخه او أنشئ واحدا جديدا",
"cantOverwriteDefaultText": "لا يمكن الكتابة فوق الصوت الافتراضي",
- "cantSaveAlreadyExistsText": "يوجد مقطع صوتي بهذا الاسم من قبل.",
+ "cantSaveAlreadyExistsText": "يوجد مقطع صوتي بهذا الاسم.",
"defaultGameMusicText": "<موسيقى اللعبة الافتراضية>",
"defaultSoundtrackNameText": "الصوت الافتراضي",
- "deleteConfirmText": "حذف الموسيقى التصويرية:\n\n'${NAME}'؟",
- "deleteText": "حذف\nتسجيل صوتي",
- "duplicateText": "مكرر\nتسجيل صوتي",
- "editSoundtrackText": "محرر الموسيقى التصويرية",
- "editText": "تصحيح\nتسجيل صوتي",
+ "deleteConfirmText": "حذف مسار الصوت:\n\n'${NAME}'؟",
+ "deleteText": "احذف\nالمقطع",
+ "duplicateText": "كرر\nالمقطع",
+ "editSoundtrackText": "محرر مسار الصوت",
+ "editText": "غير\nالمقطع",
"fetchingITunesText": "جارٍ جلب قوائم تشغيل تطبيق الموسيقى ...",
"musicVolumeZeroWarning": "تحذير: يتم ضبط مستوى صوت الموسيقى على 0",
"nameText": "اسم",
- "newSoundtrackNameText": "الموسيقى التصويرية ${COUNT}",
+ "newSoundtrackNameText": "${COUNT} مقطعي رقم",
"newSoundtrackText": "موسيقى تصويرية جديدة:",
- "newText": "الجديد\nتسجيل صوتي",
+ "newText": "اضف\nمقطعًا",
"selectAPlaylistText": "حدد قائمة تشغيل",
"selectASourceText": "مصدر الموسيقى",
"testText": "اختبار",
- "titleText": "الموسيقى التصويرية",
+ "titleText": "مسار الصوت",
"useDefaultGameMusicText": "الافتراضي لعبة الموسيقى",
"useITunesPlaylistText": "قائمة تشغيل تطبيق الموسيقى",
"useMusicFileText": "ملف الموسيقى (mp3، الخ)",
"useMusicFolderText": "مجلد ملفات الموسيقى"
},
"editText": "تعديل",
+ "enabledText": "مُفعّل",
"endText": "إنهاء",
"enjoyText": "استمتع",
"epicDescriptionFilterText": "${DESCRIPTION} بحركة ملحمية بطيئة",
@@ -638,6 +665,8 @@
"errorText": "خطا",
"errorUnknownText": "خطا غير معروف",
"exitGameText": "هل تريد الخروج من ${APP_NAME}؟",
+ "expiredAgoText": "تم انتهاء صلاحية ${T} منذ",
+ "expiresInText": "تنتهي صلاحيته في ${T}",
"exportSuccessText": "تم تصدير ${NAME} '.",
"externalStorageText": "تخزين خارجي",
"failText": "فشل",
@@ -648,7 +677,7 @@
"titleFolderText": "اختر مجلد",
"useThisFolderButtonText": "استخدم هاذا المجلد"
},
- "filterText": "مصفاة",
+ "filterText": "البحث",
"finalScoreText": "النتيجة النهائية",
"finalScoresText": "النتيجة النهائية",
"finalTimeText": "الوقت النهائي",
@@ -672,6 +701,8 @@
"duplicateText": "مكرر\nقائمة التشغيل",
"editText": "تصحيح\nقائمة التشغيل",
"newText": "الجديد\nقائمة التشغيل",
+ "pointsToWinText": "نقاط للفوز",
+ "seriesLengthText": "طول السلسلة",
"showTutorialText": "عرض البرنامج التعليمي",
"shuffleGameOrderText": "ترتيب لعبة المراوغة",
"titleText": "تخصيص ${TYPE} قوائم تشغيل"
@@ -682,8 +713,8 @@
"gamesToText": "${WINCOUNT} من الألعاب إلى ${LOSECOUNT}",
"gatherWindow": {
"aboutDescriptionLocalMultiplayerExtraText": "تذكر: يمكن لأي جهاز في الحفلة الحصول علي\nاكثر من لاعب واحد إذا كان لديك ما يكفي من وحدات التحكم.",
- "aboutDescriptionText": "استخدم علامات التبويب هذه لتجميع أحد الحفلات.\n\nتتيح لك الأطراف لعب الألعاب والبطولات\nمع أصدقائك عبر الأجهزة المختلفة.\n\nاستخدم الزر ${PARTY} في أعلى اليسار\nدردشة والتفاعل مع حزبكم.\n(على وحدة تحكم، اضغط ${BUTTON} بينما في القائمة)",
- "aboutText": "حول",
+ "aboutDescriptionText": "استخدم علامات التبويب هذه لتجميع أحد الحفلات.\n\nتتيح لك الأطراف لعب الألعاب والبطولات\nمع أصدقائك عبر الأجهزة المختلفة.\n\nاستخدم الزر ${PARTY} في أعلى اليمين\nدردشة والتفاعل مع حزبكم.\n(على وحدة تحكم، اضغط ${BUTTON} بينما في القائمة)",
+ "aboutText": "الشرح",
"addressFetchErrorText": "<خطأ في جلب العناوين>",
"appInviteMessageText": "أرسل ${NAME} تذاكر ${COUNT} في ${APP_NAME}",
"appInviteSendACodeText": "إرسال لهم رمز",
@@ -696,10 +727,11 @@
"checkingText": "تدقيق...",
"copyCodeConfirmText": "تم نسخ الرمز الى الحافظة",
"copyCodeText": "نسخ الرمز",
- "dedicatedServerInfoText": "للحصول على أفضل النتائج، قم بإعداد خادم مخصص. اطلع على bombsquadgame.com/server لمعرفة كيفية إجراء ذلك.",
+ "dedicatedServerInfoText": ".لتعرف كيف bombsquadgame.com/server لأداء أفضل، استضف المُلَاعَبة بخادم مخصص لذلك. راجع",
+ "descriptionShortText": "استخدم نافذة التجمع لكي تصنع حفلة",
"disconnectClientsText": "سيؤدي هذا إلى فصل المشغل ${COUNT}\nفي حزبكم. هل أنت واثق؟",
"earnTicketsForRecommendingAmountText": "سيتلقى الأصدقاء تذاكر بقيمة ${COUNT} إذا جربو اللعبة\n(وستتلقى ${YOU_COUNT} لكل من يفعل)",
- "earnTicketsForRecommendingText": "مشاركة اللعبة\nلتذاكر مجانية ...",
+ "earnTicketsForRecommendingText": "شارك اللعبة\nمقابل الروانق...",
"emailItText": "البريد الإلكتروني",
"favoritesSaveText": "حفظ كمفضلة",
"favoritesText": "المفضلة",
@@ -709,10 +741,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} تذاكر من ${NAME}",
"friendPromoCodeAwardText": "سوف تتلقى تذاكر ${COUNT} في كل مرة يتم استخدامها.",
"friendPromoCodeExpireText": "ستنتهي صلاحية الشفرة خلال ${EXPIRE_HOURS} ساعة وتعمل فقط للاعبين الجدد.",
- "friendPromoCodeInstructionsText": "لاستخدامها ، افتح ${APP_NAME} وانتقل إلى \"الإعدادات-> متقدم-> إدخال الرمز\".\nانظر bombsquadgame.com للحصول على روابط التحميل لجميع المنصات المدعومة.",
- "friendPromoCodeRedeemLongText": "ويمكن استرداد قيمتها بمبلغ ${MAX_USES} من التذاكر المجانية بقيمة ${COUNT}.",
+ "friendPromoCodeInstructionsText": "لاستخدامها ، افتح ${APP_NAME} وانتقل إلى \"الإعدادات-> متقدم->إرسال المعلومات\".\nانظر bombsquadgame.com للحصول على روابط التحميل لجميع المنصات المدعومة.",
+ "friendPromoCodeRedeemLongText": "شخص كحد أقصى ${MAX_USES} رونقة ويمكن أن إرساله لـ ${COUNT} فهذا الرمز يعطيهم",
"friendPromoCodeRedeemShortText": "ويمكن استبدالها ل ${COUNT} تذاكر في اللعبة.",
- "friendPromoCodeWhereToEnterText": "(في \"الإعدادات -> متقدم -> أدخل الرمز\")",
+ "friendPromoCodeWhereToEnterText": "(في \"الإعدادات -> متقدم -> أرسل المعلومات\")",
"getFriendInviteCodeText": "احصل على كود دعوة من صديق",
"googlePlayDescriptionText": "دعوة لاعبين غوغل بلاي لحزبكم:",
"googlePlayInviteText": "دعوة",
@@ -720,17 +752,17 @@
"googlePlaySeeInvitesText": "راجع الدعوات",
"googlePlayText": "غوغل بلاي",
"googlePlayVersionOnlyText": "(الروبوت / جوجل اللعب الإصدار)",
- "hostPublicPartyDescriptionText": "صنع حفلة عامة",
+ "hostPublicPartyDescriptionText": "استضافة مُلَاعَبَة عامة",
"hostingUnavailableText": "صنع السيرفر غير متوفر",
"inDevelopmentWarningText": "ملحوظة:\n\nاللعب عبر الإنترنت هي ميزة لا تزال تحت التطوير.\nحاليًا، يفضل أن يكون جميع اللاعبين\nمتصلين على نفس شبكة WI-FI.",
"internetText": "انترنت",
- "inviteAFriendText": "الأصدقاء ليس لديهم اللعبة؟ يمكنك دعوتهم إلى\nجربها وسيحصلون على ${COUNT} من التذاكر المجانية.",
- "inviteFriendsText": "دعوة الاصدقاء",
- "joinPublicPartyDescriptionText": "الإنضمام الى سيرفر عام",
+ "inviteAFriendText": "إن كان أصدقاؤك ليست لديهم اللعبة، فادعهم لتجربتها\nرونقة مجانية ${COUNT} وسيحصلون على",
+ "inviteFriendsText": "ادع أصدقائك",
+ "joinPublicPartyDescriptionText": "الانضمام لمُلَاعَبَة عامة",
"localNetworkDescriptionText": "(الإنضمام الى سيرفر بالقرب منك (وايفاي,بلوتوث,الخ",
"localNetworkText": "شبكة محليه",
- "makePartyPrivateText": "اصنع حفلة خاصة",
- "makePartyPublicText": "اصنع حزب بلدي العامة",
+ "makePartyPrivateText": "اجعل المُلَاعَبَة سريّة",
+ "makePartyPublicText": "اجعل المُلَاعَبَة عامة",
"manualAddressText": "العنوان",
"manualConnectText": "الاتصال",
"manualDescriptionText": "الانضمام إلى الحزب عن طريق العنوان:",
@@ -738,12 +770,13 @@
"manualJoinableFromInternetText": "هل أنت مشترك من الإنترنت ؟:",
"manualJoinableNoWithAsteriskText": "لا*",
"manualJoinableYesText": "نعم",
- "manualRouterForwardingText": "* لإصلاح ذلك، حاول تهيئة الموجه لإعادة توجيه منفذ أودب ${PORT} إلى عنوانك المحلي",
+ "manualRouterForwardingText": "لعنوان جهازك UDP من نوع ${PORT} لإصلاح هذه المشكلة وجه المنفذ *",
"manualText": "يدوي",
"manualYourAddressFromInternetText": "عنوانك من الإنترنت:",
"manualYourLocalAddressText": "عنوانك المباشر",
"nearbyText": "الأقرب",
"noConnectionText": "<لا يوجد اتصال>",
+ "noPartiesAddedText": "لا مجموعات مضافة",
"otherVersionsText": "(اصدارات اخرى)",
"partyCodeText": "رمز السيرفر",
"partyInviteAcceptText": "قبول",
@@ -751,34 +784,34 @@
"partyInviteGooglePlayExtraText": "(see the 'Google Play' tab in the 'Gather' window)",
"partyInviteIgnoreText": "موافق",
"partyInviteText": "تمت دعوة ${NAME}\nلك للانضمام إلى حزبهم!",
- "partyNameText": "اسم المجموعة",
+ "partyNameText": "اسم المُلَاعَبَة",
"partyServerRunningText": "سيرفرك يعمل",
- "partySizeText": "حجم المجموعه",
- "partyStatusCheckingText": "جار التحقق من الحالة ...",
- "partyStatusJoinableText": "حزبك الآن غير قابل للانضمام من الإنترنت",
+ "partySizeText": "عدد الأشخاص",
+ "partyStatusCheckingText": "يُتحقق من الفعالية...",
+ "partyStatusJoinableText": "مُلَاعَبَتك ليست عامة ولا يمكن الانضمام لها",
"partyStatusNoConnectionText": "غير قادر على الإتصال بالسيرفر",
- "partyStatusNotJoinableText": "حزبكم ليست قابلة للانضمام من الإنترنت",
- "partyStatusNotPublicText": "حزبكم ليس عام",
- "pingText": "Ping",
+ "partyStatusNotJoinableText": "مُلَاعَبَتك ليست عامة ولا يمكن الانضمام لها",
+ "partyStatusNotPublicText": "مُلَاعَبَتك ليست عامة بعد",
+ "pingText": "الاستجابة",
"portText": "البوابة",
"privatePartyCloudDescriptionText": "السيرفرات الخاصة تعمل على خادم في الهواء؛ لا تحتاج تجهيز الراوتر اودي بي",
"privatePartyHostText": "صنع حفلة خاصة",
"privatePartyJoinText": "دخول حفلة خاصة",
"privateText": "الخاص",
- "publicHostRouterConfigText": "هذا قد يحتاج تجهيز منفذ اودي پي في الراوتر. لعمل اسهل، يمكنك صنع حفلة خاصة",
+ "publicHostRouterConfigText": "انشاء مُلَاعَبَة عامة يتطلب فتح بعض المنافذ في موجِهك(الراوتر). لتسهيل الأمر يمكنك استضافة مُلَاعَبَة سرية دون هذا التعقيد.",
"publicText": "عام",
"requestingAPromoCodeText": "جار طلب رمز ...",
"sendDirectInvitesText": "إرسال دعوات مباشرة",
- "shareThisCodeWithFriendsText": "شارك هذا الرمز مع الأصدقاء:",
+ "shareThisCodeWithFriendsText": "أرسل هذا الرمز لصديقك:",
"showMyAddressText": "عرض عنواني",
"startHostingPaidText": "صنع الحفلة الأن ب ${COST}",
"startHostingText": "صنع الحفل",
"startStopHostingMinutesText": "يمكنك بدأ وايقاف الحفلة مجانا خلال ${MINUTES} من الدقائق",
"stopHostingText": "ايقاف التشغيل",
- "titleText": "متعدد الاعبين",
+ "titleText": "الخوادم",
"wifiDirectDescriptionBottomText": "إذا كانت جميع الأجهزة تحتوي على لوحة \"واي-في مباشر\"، فيجب أن تكون قادرة على استخدامها للعثور عليها\nوالتواصل مع بعضها البعض. مرة واحدة يتم توصيل جميع الأجهزة، يمكنك تشكيل الأطراف\nهنا باستخدام علامة التبويب \"الشبكة المحلية\"، تماما كما هو الحال مع شبكة واي فاي العادية.\n\nللحصول على أفضل النتائج، يجب أن يكون مضيف واي-في ديريكت أيضا مضيف الطرف ${APP_NAME}.",
"wifiDirectDescriptionTopText": "واي فاي المباشر يمكن استخدامها لتوصيل أجهزة الروبوت مباشرة دون\nوالتي تحتاج إلى شبكة واي فاي. هذا يعمل بشكل أفضل على الروبوت 4.2 أو أحدث.\n\nلاستخدامه، افتح إعدادات واي-في وابحث عن \"واي-في ديريكت\" في القائمة.",
- "wifiDirectOpenWiFiSettingsText": "افتح إعدادات واي-في",
+ "wifiDirectOpenWiFiSettingsText": "افتح إعدادات واي-فاي",
"wifiDirectText": "واي فاي مباشر",
"worksBetweenAllPlatformsText": "(يعمل بين جميع المنصات)",
"worksWithGooglePlayDevicesText": "(يعمل مع الأجهزة التي تعمل على جوجل بلاي (أندرويد) نسخة من اللعبة)",
@@ -797,17 +830,23 @@
"ticketPack4Text": "جمبو تذكرة حزمة",
"ticketPack5Text": "ماموث تذكرة حزمة",
"ticketPack6Text": "تذكرة حزمة هائلة",
- "ticketsFromASponsorText": "شاهد اعلانا\nمن التذاكر ${COUNT} للحصول على",
- "ticketsText": "${COUNT} بطاقات",
- "titleText": "أحصل على تذاكر",
+ "ticketsFromASponsorText": "شاهد إعلانًا\nرونقة ${COUNT} لتحصيل",
+ "ticketsText": "رونقة ${COUNT}",
+ "titleText": "احصل على الروانق",
"unavailableLinkAccountText": "عذرا، لا تتوفر عمليات الشراء على هذا النظام الأساسي.\nوكحل بديل، يمكنك ربط هذا الحساب بحساب في\nمنصة أخرى وجعل عمليات الشراء هناك.",
"unavailableTemporarilyText": "هذا غير متوفر حاليا؛ الرجاء معاودة المحاولة في وقت لاحق.",
"unavailableText": "عذرا، هذا غير متوفر.",
"versionTooOldText": "عذرا، هذا الإصدار من اللعبة قديم جدا؛ يرجى تحديث إلى أحدث واحد.",
- "youHaveShortText": "لديك ${COUNT}",
- "youHaveText": "لديك ${COUNT} تذاكر"
+ "youHaveShortText": "${COUNT} تملك",
+ "youHaveText": "عندك ما عدده ${COUNT} رونقة"
+ },
+ "goldPass": {
+ "desc1InfTokensText": "عملة رمزية لا نهائية",
+ "desc2NoAdsText": "لا إعلانات",
+ "desc3ForeverText": "إلى الأبد",
+ "goldPassText": "بطاقة المرور الذهبية"
},
- "googleMultiplayerDiscontinuedText": "عذرًا ، خدمة جوجل متعددة اللاعبين لم تعد متاحة.\n أنا أعمل على بديل بأسرع وقت ممكن.\n حتى ذلك الحين ، يرجى تجربة طريقة اتصال أخرى.\n -إريك",
+ "googleMultiplayerDiscontinuedText": "\nعذرًا ، خدمة جوجل متعددة اللاعبين لم تعد متاحة.\n أنا أعمل على بديل بأسرع وقت ممكن.\n حتى ذلك الحين ، يرجى تجربة طريقة اتصال أخرى.\n -إريك",
"googlePlayPurchasesNotAvailableText": "عمليات شراء جوجل بلاي غير متوفرة.\nقد تحتاج لتحديث تطبيق المتجر.",
"googlePlayServicesNotAvailableText": "غوغل بلاي العاب غير متوفر.\nبعض المزايا لن تكون متوفرة.",
"googlePlayText": "جوجل بلاي",
@@ -815,35 +854,37 @@
"alwaysText": "دائما",
"fullScreenCmdText": "ملء الشاشة (Cmd-F)",
"fullScreenCtrlText": "الشاشه كامله (Ctrl-F)",
+ "fullScreenText": "تكبير الشاشة",
"gammaText": "غاما",
- "highText": "متوسط",
- "higherText": "العالي",
- "lowText": "منخفض",
- "mediumText": "متوسط",
+ "highText": "عالية",
+ "higherText": "أقصى جودة",
+ "lowText": "منخفضة",
+ "maxFPSText": "أعلى معدل إطارات",
+ "mediumText": "متوسطة",
"neverText": "أبدا",
- "resolutionText": "القرار",
- "showFPSText": "اظهار عدد الكدرات في الثانية",
- "texturesText": "القوام",
- "titleText": "الرسومات",
- "tvBorderText": "TV الحدود",
+ "resolutionText": "أبعاد الشاشة",
+ "showFPSText": "أظهر معدل الإطارات",
+ "texturesText": "الأسطح والمواد",
+ "titleText": "جودة المرئيات",
+ "tvBorderText": "تكبير الحواف",
"verticalSyncText": "تزامن عمودي",
- "visualsText": "صور"
+ "visualsText": "التأثيرات والمرئيات"
},
"helpWindow": {
- "bombInfoText": "القنبلة\nأقوى من اللكمات، لكن من\nالممكن أن تؤدي لإيذاء النفس\nلأفضل النتائج، ارمها\nنحو العدو قبل أن ينفذ الفتيل.",
- "canHelpText": "تستطيع مساعدتك ${APP_NAME}.",
- "controllersInfoText": "يمكنك لعب ${APP_NAME} مع أصدقائك عبر الشبكة، أو يمكنكم\nجميعًا اللعب على نفس الجهاز إذا كنت تمتلك أذرع تحكم كافية.\n${APP_NAME} تدعم أنواع متعددة من أذرع التحكم؛ حتى الهواتف يمكن استعمالها\nكذراع تحكم من خلال تطبيق ${REMOTE_APP_NAME}.\nلمزيد من المعلومات اذهب للإعدادات>التحكم.",
- "controllersInfoTextRemoteOnly": "You can play ${APP_NAME} with friends over a network, or you\n can all play on the same device by using phones as\n controllers via the free '${REMOTE_APP_NAME}' app.",
- "controllersText": "التحكم",
- "controlsSubtitleText": "شخصية ${APP_NAME} الخاصة بك تحتوي على العديد من الخصائص أهمها:",
- "controlsText": "وحدات التحكم",
+ "bombInfoText": "[القنبلة]\nيشـعل فتيل القنبلة فـي مخبأتك ويرمـي بأسـك.\nإلا أنـه قد يـقـتلـك أو يـجـرحـك، ولا يرضيك.\nفارم القنبلة قبل الفتيل، تنجو وتقتل من يرديك.\nإذا كنت يا قُنبل مستعدًا، فأهلك أعدائك مستبدًا.",
+ "canHelpText": "ولهذا وُجِدَت ${APP_NAME} لتساعدك.",
+ "controllersInfoText": "العب ${APP_NAME} عبر الشبكة مع أصدقائك، وإلا فيمكنك لعبها محليًا\nبنفس الجهاز مع أصدقائك إذا كان لديك وحدات تحكم كافية(أذرع البلايستيشن مثلًا)\n${APP_NAME} تدعم أغلبهم. بل حتى يمكنك استعمال جهازك الآخر كذراع تحكم\nعبر تحميل تطبيق \"${REMOTE_APP_NAME}\" الموجود في المتجر عليه.\nاطلع على الإعدادات -> المتحكمات للاستزادة.",
+ "controllersInfoTextRemoteOnly": "بالإمكان لعب ${APP_NAME} عبر الشبكة\nأو يمكنكم جميعًا اللعب بنفس الجهاز\nباستعمال تطبيق \"${REMOTE_APP_NAME}\" في المتجر.",
+ "controllersText": "أذرع اللعب",
+ "controlsSubtitleText": "في ${APP_NAME} لا تحتاج المشي على أربع لتفوز، هناك أربع أزرار تغنيك عن هذا وهي:",
+ "controlsText": "المُفعِّلات",
"devicesInfoText": "يمكن تشغيل إصدار فر الذي يبلغ ${APP_NAME} عبر الشبكة\nالنسخة العادية، حتى سوط خارج الهواتف الإضافية، وأقراص،\nوأجهزة الكمبيوتر والحصول على اللعبة الخاصة بك على. بل يمكن أن يكون مفيدا ل\nربط نسخة منتظمة من اللعبة إلى الإصدار فر فقط ل\nالسماح للناس خارج لمشاهدة العمل.",
"devicesText": "الأجهزة",
- "friendsGoodText": "من الرائع أن تحظى بهم. ${APP_NAME} أكثر متعة عندما تلعب مع عدة لاعبين\nواللعبة تدعم اللعب مع 8 لاعبين في وقت واحد، مما يقودنا إلى:",
- "friendsText": "الاصدقاء",
- "jumpInfoText": "القفز\nقم بالقفز لعبور الحفر الصغيرة،\nولرمي الأشياء أبعد،\nوللتعبير عن مشاعر الفرح.",
- "orPunchingSomethingText": ".أو ضرب شيء، ورميه من على الجرف، وتفجيره بالمرة بقنبلة لزجة",
- "pickUpInfoText": "- امسك -\nالاستيلاء على الأعلام، والأعداء، أو أي شيء\nوإلا لا انسحب على الأرض.\nاضغط مرة أخرى لرمي.",
+ "friendsGoodText": "وما أحسن رفقتهم. فإنما تكمن متعة عالم ${APP_NAME} في\nأن تلعب مع صديق، وليس واحد، بل 8، فهم خير عون في قُنبلاء",
+ "friendsText": "أصدقائك",
+ "jumpInfoText": "[الوثبة]\nيستعمل للقفز وتخطي الصعاب.\nولرمي الأشياء لأعلى والمرور.\nوللتـعبير عن الفرحة والسـرور.",
+ "orPunchingSomethingText": "أو لكم شيء، وجعله يهوي من مكانِ سحيق، وألا تخطئه قنابلك بأن تلصق به هذه القنابل وتلاحقه بلا مهرب.",
+ "pickUpInfoText": "[المسكة]\nيمكنك إمساك الأعلام، أو أعاديك، أو\nأي شيء غير ثابت أو مثبت بالأرض\nاضغط الزر مجددًا لإفلات الشيء.",
"powerupBombDescriptionText": "يتيح لك سوط من ثلاث قنابل\nفي صف واحد بدلا من واحد فقط.",
"powerupBombNameText": "قنابل ثلاثية",
"powerupCurseDescriptionText": "أعتقد من الجيد الإبتعاد عن هذا.\nإلا إذا كنت ستقوم بـ..؟",
@@ -864,12 +905,12 @@
"powerupStickyBombsNameText": "قنابل لاصقة",
"powerupsSubtitleText": "وبلا شك، لا توجد لعبة تكتمل بلا قدرات تعزيزية إضافية:",
"powerupsText": "حزم تعزيزية",
- "punchInfoText": "اللكم\nعندما تجري بسرعة\nتعطي اللكمات ضرر أكبر،\nلذا اركض وقم بالدوران كالرجل المجنون.",
- "runInfoText": "الركض\nاضغط مطولًا على أي زر أعلاه لتشغيله، أيضًا بإمكانك استعمال الزر الخلفي لذراع التحكم للركض.\nيُمكنك الركض من الوصول للأماكن بشكل أسرع لكنه يصعب الإستدارة، لذا انتبه من المنحدرات.",
- "someDaysText": "في بعض الأحيان تشعر وكأنك تريد ضرب شيء ما. تفجير شيء ما.",
+ "punchInfoText": "[القبضة]\nبقبضتك يمكنك ضرب ما تشاء، وكلما زاد\nزخم حركتك(بزيادة سرعتك مثلًا) زادت قوتها\nلذا دُر حول نفسك ثم اضرب بيد من حديد.",
+ "runInfoText": "[الركض]\nعلق يدك على أحد الأزرار الأربعة للركض بسرعة. ويمكنك الضغط على أزرار الكتف في أذرع الألعـاب للركض.\nيسرع الركض هروبك من مخاوفك، ووصولك لأرض أحلامك، لكن يصعب توجهك يمنة ويسرة لذا احذر المنحدرات.",
+ "someDaysText": "أحيانًا تشعر برغبة في تفريغ غضبك، أحزانك، والتخلص من مآسيك وهمومك. وتريد تفجير شيء ما.",
"titleText": "${APP_NAME} كيفية لعب",
- "toGetTheMostText": "للحصول على أقصى استفادة من هذه اللعبة، ستحتاج إلى:",
- "welcomeText": "مرحبا بك في ${APP_NAME}!"
+ "toGetTheMostText": "ولتفعل ذلك، ولا تخطئ هدفك، فإنك ستحتاج لما يلي:",
+ "welcomeText": "حللت أهلًا وسهلًا في ${APP_NAME}!"
},
"holdAnyButtonText": "<اضغط على أي زر>",
"holdAnyKeyText": "<اضغط على أي مفتاح>",
@@ -878,14 +919,15 @@
"importPlaylistSuccessText": "تم استيراد ${TYPE} قائمة تشغيل \"${NAME}\"",
"importText": "استيراد",
"importingText": "استيراد ...",
- "inGameClippedNameText": "في اللعبة سوف يكون\n\"${NAME}\"",
+ "inGameClippedNameText": "هذا اسمك في اللعبة\n\"${NAME}\"",
+ "inboxText": "صندوق الوارد",
"installDiskSpaceErrorText": "خطأ: تعذر إكمال التثبيت.\nقد تكون نفذت مساحه التخزين على جهازك.\nامسح بعض المساحة وحاول مرة أخرى.",
"internal": {
"arrowsToExitListText": "اضغط ${LEFT} أو ${RIGHT} للخروج من القائمة",
"buttonText": "زر",
"cantKickHostError": "لا يمكنك طرد المضيف.",
"chatBlockedText": "${NAME} تم حظر الدردشة لمدة ${TIME} ثانية.",
- "connectedToGameText": "انضم '${NAME}'",
+ "connectedToGameText": "\"${NAME}\"انضممت لـ",
"connectedToPartyText": "انضم إلى حفلة ${NAME}!",
"connectingToPartyText": "توصيل...",
"connectionFailedHostAlreadyInPartyText": "فشل الاتصال؛ المضيف في حفله اخرى.",
@@ -919,10 +961,10 @@
"kickIdlePlayersKickedText": "الركل ${NAME} لكونه خاملا.",
"kickIdlePlayersWarning1Text": "سيتم ركل ${NAME} بمبلغ ${COUNT} ثانية إذا ظلت خاملة.",
"kickIdlePlayersWarning2Text": "(يمكنك إيقاف هذا في إعدادات -> متقدم)",
- "leftGameText": "يسار '${NAME}'.",
+ "leftGameText": "غادر '${NAME}'.",
"leftPartyText": "غادر ${NAME} من الحفله.",
"noMusicFilesInFolderText": "المجلد لا يحتوي على ملفات الموسيقى.",
- "playerJoinedPartyText": "انضم ${NAME} إلى الحفله!",
+ "playerJoinedPartyText": "!لمُلَاعَبَتِك ${NAME} دخل",
"playerLeftPartyText": "غادر ${NAME} الحفله.",
"rejectingInviteAlreadyInPartyText": "رفض الدعوة (موجود بالفعل في أحد الحفلات).",
"serverRestartingText": "السيرفر يعاد تشغيله . يرجى إعادة الدخول بعد لحظة ...",
@@ -933,12 +975,14 @@
"timeOutText": "(من المرات في ${TIME} ثانية)",
"touchScreenJoinWarningText": "لقد انضممت مع شاشة اللمس.\nإذا كان هذا خطأ، اضغط 'القائمة-> ترك لعبة' معها.",
"touchScreenText": "شاشة اللمس",
+ "unableToCompleteTryAgainText": "عدم القدرة على إكمال هذا الآن.\nحاول لاحقاً.",
"unableToResolveHostText": "خطأ: غير قادر على حل المضيف.",
"unavailableNoConnectionText": "هذا غير متاح حاليا (لا يوجد اتصال بالإنترنت؟)",
"vrOrientationResetCardboardText": "استخدام هذا لإعادة توجيه فر.\nللعب اللعبة سوف تحتاج إلى وحدة تحكم خارجية.",
"vrOrientationResetText": "فر توجيه إعادة تعيين.",
"willTimeOutText": "(سوف تنقضي المهلة إذا توقفت عن الحركة)"
},
+ "inventoryText": "المخزون",
"jumpBoldText": "اقفز",
"jumpText": "قفز",
"keepText": "احتفظ",
@@ -968,7 +1012,7 @@
"singlePlayerExamplesText": "لاعب واحد / التعاونية أمثلة",
"versusExamplesText": "مقابل أمثلة"
},
- "languageSetText": "اللغة الآن \"${LANGUAGE}\".",
+ "languageSetText": ".لغة للعبة \"${LANGUAGE}\" أصبحت",
"lapNumberText": "جوله ${CURRENT}/${TOTAL}",
"lastGamesText": "(آخر ${COUNT} مباراة)",
"leaderboardsText": "المتصدرين",
@@ -985,8 +1029,11 @@
"seasonEndsMinutesText": "ينتهي الموسم بعد ${NUMBER} من الدقائق.",
"seasonText": "الموسم ${NUMBER}",
"tournamentLeagueText": "يجب أن تصل إلى الدوري ${NAME} للدخول في هذه البطولة.",
- "trophyCountsResetText": "سيتم إعادة تعيين عدد الكوؤس في الموسم المقبل."
+ "trophyCountsResetText": "سيتم إعادة تعيين عدد الكوؤس في الموسم المقبل.",
+ "upToDateBonusDescriptionText": "اللاعبون الذين يستخدمون النسخة الحديثة من اللعبة سوف يحصلون على مكافأة بنسبة تقدر ${PERCENT}% هنا. سمينميني",
+ "upToDateBonusText": "مكافأة محدثة"
},
+ "learnMoreText": "معلومات أكثر",
"levelBestScoresText": "أفضل النقاط على ${LEVEL}",
"levelBestTimesText": "أفضل الأوقات على ${LEVEL}",
"levelIsLockedText": "تم قفل ${LEVEL}.",
@@ -1003,7 +1050,7 @@
"macControllerSubsystemMFiText": "المصممة خصيصا اي او اس / ماك",
"macControllerSubsystemTitleText": "دعم جهاز التحكم",
"mainMenu": {
- "creditsText": "معلومات",
+ "creditsText": "عن قنبلاء",
"demoMenuText": "عرض القائمة",
"endGameText": "نهاية لعبة",
"endTestText": "الاختبار النهائي",
@@ -1024,12 +1071,14 @@
"mapSelectTitleText": "${GAME} خرائط",
"mapText": "خرائط",
"maxConnectionsText": "اتصالات مكتمل",
- "maxPartySizeText": "أقصى حجم للحفلة",
+ "maxPartySizeText": "أقصى عدد للاعبين",
"maxPlayersText": "عدد لاعبين مكتمل",
"merchText": "ميرش!",
"modeArcadeText": "وضع اللهو",
"modeClassicText": "الوضع التقليدي",
"modeDemoText": "الوضع التجريبي",
+ "moreSoonText": "سيأتي أكثر قريباً...",
+ "mostDestroyedPlayerText": "اللاعب الأكثر تضرراً",
"mostValuablePlayerText": "أفضل لاعب",
"mostViolatedPlayerText": "اللاعب الأكثر انتهاكاً",
"mostViolentPlayerText": "أعنف اللاعبين",
@@ -1045,7 +1094,8 @@
"nameSuicideKidFriendlyText": "${NAME} توفي عن طريق الخطأ.",
"nameSuicideText": "${NAME} انتحر.",
"nameText": "اسم",
- "nativeText": "محلي",
+ "nativeText": "الدقة الأساسية",
+ "newExclaimText": "!جديد",
"newPersonalBestText": "أفضل شخصية جديدة!",
"newTestBuildAvailableText": "يتوفر اختبار اختبار أحدث! (${VERSION} بناء ${BUILD}).\nاحصل على ${ADDRESS}",
"newText": "الجديد",
@@ -1056,24 +1106,31 @@
"noContinuesText": "(لا يستمر)",
"noExternalStorageErrorText": "لم يتم العثور على وحدة تخزين خارجية على هذا الجهاز",
"noGameCircleText": "خطأ: لم يتم تسجيل الدخول الئ gamecircle",
+ "noMessagesText": "لا رسائل",
+ "noPluginsInstalledText": "لا إضافات مثبتة",
"noScoresYetText": "لا نقاط حتى الآن.",
+ "noServersFoundText": "لا توجد اي سيرفرات.",
"noThanksText": "لا شكرا",
"noTournamentsInTestBuildText": "تحذير: سيتم تجاهل نقاط البطولات في النسخة التجريبية",
"noValidMapsErrorText": "لا خرائط صالحة وجدت لهذا النوع اللعبة.",
"notEnoughPlayersRemainingText": "لا يكفي اللاعبين المتبقين؛ الخروج وبدء لعبة جديدة.",
"notEnoughPlayersText": "تحتاج على الأقل ${COUNT} لاعبين لبدء هذه اللعبة!",
+ "notEnoughTicketsText": "ليست تذاكر كافية!",
"notNowText": "ليس الآن",
- "notSignedInErrorText": "يجب ان تسجل الدخول لتفعل هذا",
+ "notSignedInErrorText": "سجّل الدخول بحساب للدخول لهذا.",
"notSignedInGooglePlayErrorText": "عليك تسجيل الدخول لجوجل بلاي لتفعل هذا",
- "notSignedInText": "لم تقم بتسجيل الدخول",
+ "notSignedInText": "أنت غير مُسجَّل",
"notUsingAccountText": "ملاحظة: حساب ${SERVICE} متجاهل.\nقم بالتوجه الى 'الحساب -> تسجيل الدخول بواسطة ${SERVICE}' اذا اردت استعماله.",
"nothingIsSelectedErrorText": "لا شئ تم اختياره!",
"numberText": "#${NUMBER}",
"offText": "إيقاف",
- "okText": "حسنا",
+ "okText": "حسناً",
"onText": "تشغيل",
"oneMomentText": "لحظة واحدة...",
"onslaughtRespawnText": "${PLAYER} سيخرج مجددا في الموجة ${WAVE}",
+ "openMeText": "افتحني!",
+ "openNowText": "افتح الآن",
+ "openText": "افتح",
"orText": "${A} أو ${B}",
"otherText": "آخر...",
"outOfText": "(#${RANK} خرج من ${ALL})",
@@ -1084,23 +1141,23 @@
"emptyText": "حفلتك فارغة",
"hostText": "(مضيف)",
"sendText": "إرسال",
- "titleText": "الحفلة الخاصة بك"
+ "titleText": "مُلَاعَبَتُك"
},
"pausedByHostText": "(متوقف مؤقتا من قبل المضيف )",
"perfectWaveText": "المرحله المثالية",
"pickUpText": "إلتقط",
"playModes": {
- "coopText": "اللعب التعاوني",
- "freeForAllText": "الحرية-للجميع",
- "multiTeamText": "فرق متعددة",
- "singlePlayerCoopText": "لعب فردي / لعب تعاوني",
- "teamsText": "فرق"
+ "coopText": "تَعاوُني",
+ "freeForAllText": "فَردانية جماعية",
+ "multiTeamText": "فِرَق",
+ "singlePlayerCoopText": "اللعب ضد الآلة(فرديًا أو تعاونيًا)",
+ "teamsText": "فريقين"
},
- "playText": "لعب",
+ "playText": "أشكال اللعب",
"playWindow": {
- "oneToFourPlayersText": "1-4 لاعبين",
- "titleText": "إلعب",
- "twoToEightPlayersText": "2-8 لاعبين"
+ "oneToFourPlayersText": "١-٤ لاعبين",
+ "titleText": "اِلعب",
+ "twoToEightPlayersText": "٢-٨ لاعبين"
},
"playerCountAbbreviatedText": "${COUNT}p",
"playerDelayedJoinText": "${PLAYER} سيدخل ببداية الجولة القادمة",
@@ -1109,28 +1166,32 @@
"playerLimitReachedText": "حد اللاعب ${COUNT} وصل",
"playerProfilesWindow": {
"cantDeleteAccountProfileText": "لايمكنك حذف حساب الملف الشخصي الخاص بك",
- "deleteButtonText": "حذف\nالملف الشخصي",
- "deleteConfirmText": "حذف '${PROFILE}'?",
- "editButtonText": "تعديل\nالملف الشخصي",
- "explanationText": "(اللاعب المخصص و المباراة لهذا الحساب)",
- "newButtonText": "ملف شخصي\nجديد",
- "titleText": "ملفات اللاعب الشخصي"
+ "deleteButtonText": "احذف\nالمُعرِف",
+ "deleteConfirmText": "؟'${PROFILE}' حذف",
+ "editButtonText": "عدِّل\nالمُعرِّف",
+ "explanationText": "(هذه هي الاسماء والمظاهر التي ستظهر بها للآخرين وتُحفَظ في حسابك)",
+ "newButtonText": "أنشئ\nمُعرِّفًا",
+ "titleText": "مُعرفات اللاعب"
},
"playerText": "لاعب",
"playlistNoValidGamesErrorText": "قائمة التشغيل هذه لا تحتوي على ألعاب مفتوحة صالحة",
"playlistNotFoundText": "لم يتم العثور على قائمة التشغيل",
"playlistText": "قائمة التشغيل",
"playlistsText": "قائمة العب",
- "pleaseRateText": "يرجى اتخاذ لحظة وتقييمه ${APP_NAME} اذا كنت تستمتع بلعبة\nاو كتابة مراجعة فهاذا يوفر معلومات مفيدة ويوفر التطوير\nفي المستقبل\n\n!شكرًا\nاريك—",
- "pleaseWaitText": "الرجاء الانتظار . . .",
+ "pleaseRateText": "أهلًا!\nإن كنت مستمتعًا بلعب ${APP_NAME} فقيمها على المتجر\nفإن ذلك يحسّن اللعبة ويدعم تطويرها بانتشارها ويسعدنا سماع رأيك.\n\nوشكرًا\n-مطور اللعبة إيريك",
+ "pleaseWaitText": "انتظر...",
"pluginClassLoadErrorText": "فشل في تشغيل الاضافة '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "خطأ في بدء الاضافة '${PLUGIN}: ${ERROR}",
+ "pluginSettingsText": "إعدادات الإضافات",
+ "pluginsAutoEnableNewText": "فعِّل الإضافات الجديدة تلقائيًا",
"pluginsDetectedText": "تم العثور على اضافات جديدة. اعد التشغيل لتفعيلها، او قم بتخصيصها في الاعدادات.",
+ "pluginsDisableAllText": "عطِّل كل الإضافات",
+ "pluginsEnableAllText": "فعِّل كل الإضافات",
"pluginsRemovedText": "${NUM} لم تعد الاضافة موجودة.",
- "pluginsText": "اضافات",
+ "pluginsText": "الإضافات والتعديلات",
"practiceText": "تدريب",
"pressAnyButtonPlayAgainText": "اضغط اي زر للعب مجددا...",
- "pressAnyButtonText": "اظغط اي زر للإستمرار...",
+ "pressAnyButtonText": "اضغط أي زر للاستمرار...",
"pressAnyButtonToJoinText": "اضغط اي زر للإنضمام",
"pressAnyKeyButtonPlayAgainText": "اضغط اي زر /اي مفتاح للعب مجددا...",
"pressAnyKeyButtonText": "اضغظ اي مفتاح/زر للإستمرار",
@@ -1155,10 +1216,12 @@
"punchText": "لكمة",
"purchaseForText": "${PRICE} إشتري اللعبة",
"purchaseGameText": "إشتري اللعبة",
+ "purchaseNeverAvailableText": "عذرًا، المشتريات غير متوفرة في هذا الإصدار.\n حاول تسجيل الدخول إلى حسابك على منصة أخرى وإجراء عمليات شراء من هناك.",
+ "purchaseNotAvailableText": "عملية الشراء غير متوفرة",
"purchasingText": "شراء...",
"quitGameText": "خروج ${APP_NAME}?",
"quittingIn5SecondsText": "جار الإقلاع خلال 5 ثوان ...",
- "randomPlayerNamesText": "الأسماء الافتراضية",
+ "randomPlayerNamesText": "سويلم, هوازن, عود الحشى, ليلى, ديجور الليل, سارة, ضرغام, قطر الندى, قُطُز, الحسناء, تميم, السيف المهند, تمر, لؤلؤة, امرؤ القيس, زُهير, عدنان, الأحنف, السُلَيك, عنترة, أمير الصعاليك, سيبويه, عُروة, قُمري, زرزور, قيقب, جليبيب, حنظلة العدا, سكاكر, ياسمين, ملآن, جيّان, سليم, ليان, وردة المحبين, الفاتنة, العذراء, الخنساء, صخرة الوادي, الجوزاء, قُنبُل, صخر, إكليل الجبل, تماضر, تأبط شرًّا, فتّاك, راعية الفتنة, جرير, جسّاس, جميلة بنت جميل, زهران, الطائر الصدوح, الطائر بن لا أحد, غالب, دوحة, ديمة, وردة الوادي, رونقة المحبين, سكرة المحبين, جميلة النساء, المؤنسة, المهرة, الحُلوة, صهيب, فستق, موزة, عين السيح, لؤلؤ, جوهرة, لولو, الجميلة, وردة البستان, العنقاء, الشعرى اليمانية, سنونو شاحب الزور, الكريهة, الدرة المكنونة, سمكة النهر, سمسم, روعة, الدعسوقة, خنفساء, لجين, جيدانة, كلكع بن مُلكلع, سيف الدولة, وسوسة بنت موسوس, ابنة النهر, سُكَامة, سمرقند, زُحلوقة, عبير",
"randomText": "عشوائي",
"rankText": "مرتبة",
"ratingText": "تقييم",
@@ -1178,7 +1241,7 @@
"disconnected": "قطع الاتصال من السيرفر.",
"dpad_fixed": "تم الاصلاح",
"dpad_floating": "يطفو على السطح",
- "dpad_position": "D- الوسادة الموقف",
+ "dpad_position": "D-Pad Position",
"dpad_size": "قياس اللوحة",
"dpad_type": "D- الوسادة نوع",
"enter_an_address": "أدخل عنوانا",
@@ -1193,9 +1256,10 @@
"searching": "جار البحث عن ألعاب بومبسكاد ...",
"searching_caption": "اضغط على اسم لعبة للانضمام إليه.\nتأكد من أنك على نفس شبكة واي فاي مثل اللعبة.",
"start": "بداية",
- "version_mismatch": ".الإصداران لا يتطابقان\nتأكد من أن فرقة القنبلة و فرقة القنبلة للتحكم عن بعد\n.تم تحديثهما لآخر إصدار وحاول مجددًا"
+ "version_mismatch": "رقمي الإصدار لا يتطابقان\nتأكد أن رقم إصدار قُنبلاء وحاكوم قنبلاء\nبنفس رقم الإصدار ثم حاول ثانية."
},
- "removeInGameAdsText": "إلغاء تأمين \"${PRO}\" في المتجر لإزالة الإعلانات داخل اللعبة.",
+ "removeInGameAdsText": ".من المتجر \"${PRO}\"إن أردت التخلص من هذه الإعلانات المزعجة فاشترك في",
+ "removeInGameAdsTokenPurchaseText": "عرض محدود: ادفع اي حزمة نقود لكي تزيل الاعلانات داخل اللعبة.",
"renameText": "إعادة تسمية",
"replayEndText": "نهاية الإعادة",
"replayNameDefaultText": "إعادة اللعبة الأخيرة",
@@ -1216,7 +1280,9 @@
"revertText": "العودة",
"runText": "ركض",
"saveText": "حفظ",
- "scanScriptsErrorText": "حدث خطأ (أخطاء) في مسح النصوص البرمجية ؛ انظر السجل للحصول على التفاصيل.",
+ "scanScriptsErrorText": "حدث خطأ أو أخطاء في مسح النصوص البرمجية. اظر إلى السجل لمعرفة التفاصيل.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${API} apiواخرى يجب تحديثها ل ${PATH} و ${NUM}",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${API} api يجب تحديثها ل ${PATH}",
"scoreChallengesText": "نقاط التحديات",
"scoreListUnavailableText": ".قائمة النقاط غير متاحة",
"scoreText": "نتيجة",
@@ -1227,48 +1293,58 @@
},
"scoreWasText": "(كان ${COUNT})",
"selectText": "اختيار",
+ "sendInfoDescriptionText": "ما سترسله سيرسل معه بيانات التطبيق والجهاز للمطور.\nيُرجى منك كتابة اسمك وسبب الإرسال.",
"seriesWinLine1PlayerText": "الفوز",
"seriesWinLine1TeamText": "الفوز",
"seriesWinLine1Text": "الفوز",
"seriesWinLine2Text": "سلسلة",
"settingsWindow": {
"accountText": "الحساب",
- "advancedText": "المتقدمة",
- "audioText": "صوت",
- "controllersText": "التحكم",
- "graphicsText": "رسوميات",
+ "advancedText": "الإعدادات الأخرى",
+ "audioText": "الأصوات",
+ "controllersText": "المُتَحكِمات",
+ "graphicsText": "المرئيات",
"playerProfilesMovedText": "ملاحظة: انتقلت ملفات تعريف اللاعب إلى نافذة الحساب في القائمة الرئيسية.",
- "titleText": "اعدادات"
+ "titleText": "الإعدادات"
},
"settingsWindowAdvanced": {
- "alwaysUseInternalKeyboardDescriptionText": "(بسيطة، وحدة تحكم ودية على الشاشة لوحة المفاتيح لتحرير النص)",
- "alwaysUseInternalKeyboardText": "استخدم لوحة المفاتيح الداخلية دائما",
- "benchmarksText": "المعايير و الإجهاد الاختبارات",
- "disableCameraGyroscopeMotionText": "تعطيل الكاميرا جيروسكوب الحركة",
+ "alwaysUseInternalKeyboardDescriptionText": "(مُدمَجة ضمن اللعبة، جميلة، ويسهل استعمالها مع الأذرع، ولا تدعم العربية)",
+ "alwaysUseInternalKeyboardText": "استعمل لوحة المفاتيح المدمجة باللعبة",
+ "benchmarksText": "اختبارات الأداء",
+ "devToolsText": "أدوات المطورين",
+ "disableCameraGyroscopeMotionText": "تعطيل حركه الجيروسكوب للكاميرا",
"disableCameraShakeText": "تعطيل اهتزاز الكاميرا",
"disableThisNotice": "(يمكنك تعطيل هذا الإشعار في الإعدادات المتقدمة)",
"enablePackageModsDescriptionText": "(تمكن قدرات التعديل الإضافية ولكن تعطيل شبكة اللعب)",
"enablePackageModsText": "تمكين تعديل الحزمة المحلية",
"enterPromoCodeText": "ادخل الرمز",
- "forTestingText": "ملاحظة: هذه القيم هي فقط للاختبار وسيتم فقدانها عند خروج التطبيق.",
- "helpTranslateText": "هي عبارة عن ترجمة ${APP_NAME}الترجمات غير الإنجليزية ل\nجماعية، إذا أردت المساهمة أو تصحيح الأخطاء اللغوية والإملائية\n!قم بزيارة الرابط أدناه، وشكرًا لكم مقدمًا",
- "kickIdlePlayersText": "طرد اللاعبين غير النشطين",
+ "forTestingText": "اعلم: أن الأرقام التي تعدلها هنا لن تحفظ، وإنما عدل هذه الأرقام لتُجرب",
+ "helpTranslateText": "ترجمات ${APP_NAME} اللاإنجليزية هي اجتهاد مجتمع مترجمي\nكل لغة. فإن كنت تريد المُساهمة في الترجمة وتصحيحها فانقر على\nالزر بالأسفل والذي سيوجهك لرابط الترجمان. هذا وكان سعيكم مشكورًا!",
+ "insecureConnectionsDescriptionText": "غير موصى به، لكن قد يسمح باللعب عبر الإنترنت\nمن البلدان أو الشبكات المقيدة",
+ "insecureConnectionsText": "استخدم الاتصالات غير الآمنة",
+ "kickIdlePlayersText": "اطرد اللاعبين الخاملين",
"kidFriendlyModeText": "وضع الأطفال (يقلل العنف، إلخ)",
- "languageText": "لغة",
- "moddingGuideText": "دليل التعديلات البرمجية",
- "mustRestartText": ".يجب أن تقوم بإعادة تشغيل اللعبة لكي يعمل هذا",
- "netTestingText": "اختبار الشبكة",
- "resetText": "إعادة تعيين",
+ "languageText": "اللغة",
+ "moddingGuideText": "مرشد تصميم الإضافات",
+ "moddingToolsText": "أدوات التعديل",
+ "mustRestartText": "ليعمل هذا أغلق اللعبة وافتحها ثانية.",
+ "netTestingText": "اختبار الشبكة/الاتصال",
+ "resetText": "إعادة للأصل",
+ "sendInfoText": "إرسال بيانات",
"showBombTrajectoriesText": "عرض مسارات القنبلة",
+ "showDemosWhenIdleText": "شغل شروحات اللعب عندما أخمل",
+ "showDeprecatedLoginTypesText": "أظهر أنواع تسجيلات الدخول القديمة",
+ "showDevConsoleButtonText": "أظهر زر فتح طرفية الأوامر",
+ "showInGamePingText": "أظهر سرعة الاتصال أثناء اللعب",
"showPlayerNamesText": "إظهار اسماء اللاعبين",
- "showUserModsText": "عرض مجلد التعديل",
- "titleText": "المتقدمة",
- "translationEditorButtonText": "${APP_NAME} محرر الترجمة",
+ "showUserModsText": "أخبرني بمكان إضافة التعديلات",
+ "titleText": "المزيد",
+ "translationEditorButtonText": "أداة ترجمة ${APP_NAME}",
"translationFetchErrorText": "حالة الترجمة غير متاحة",
- "translationFetchingStatusText": "جار التحقق من حالة الترجمة ...",
- "translationInformMe": "ابلغني عندما تحتاج لغتي للتحديث",
- "translationNoUpdateNeededText": "!اللُّغة العربية حتى الآن محدثة، هنيئًا لك",
- "translationUpdateNeededText": "** !!اللُّغة الحالية بحاجةٍ إلى تحديث **",
+ "translationFetchingStatusText": "يُتحقق من حال الترجمة...",
+ "translationInformMe": "أبلغني برسالة عندما تحتاج العربية لتحديث",
+ "translationNoUpdateNeededText": "العربية محدثة، مرحى يا أخا العرب !",
+ "translationUpdateNeededText": "** العربية بحاجةٍ إلى تحديث لتحسينها **",
"vrTestingText": "تجربة الواقع الإفتراضي"
},
"shareText": "شارك",
@@ -1278,6 +1354,9 @@
"signInWithGameCenterText": "لاستخدام حساب مركز الألعاب،\nسجل الدخول باستخدام تطبيق مركز الألعاب.",
"singleGamePlaylistNameText": "فقط ${GAME}",
"singlePlayerCountText": "1 لاعب",
+ "sizeLargeText": "كبير",
+ "sizeMediumText": "وسط",
+ "sizeSmallText": "صغير",
"soloNameFilterText": "منفردا ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "اختر شخصية",
@@ -1292,7 +1371,7 @@
"Hockey": "الهوكي",
"Keep Away": "ابتعد",
"Marching": "يركض حول",
- "Menu": "القائمة الرئيسية",
+ "Menu": "قائمة اللعبة",
"Onslaught": "هجوم",
"Race": "سباق",
"Scary": "ملك التل",
@@ -1303,25 +1382,26 @@
},
"spaceKeyText": "مسافة",
"statsText": "النتائج",
+ "stopRemindingMeText": "توقف عن تذكيري",
"storagePermissionAccessText": "وهذا يتطلب الوصول إلى التخزين",
"store": {
"alreadyOwnText": "!${NAME}أنت بالفعل تملك",
- "bombSquadProNameText": "للمحترفين ${APP_NAME}",
- "bombSquadProNewDescriptionText": "يزيل الإعلانات في اللعبة والشاشات المزعجة •\nيفتح المزيد من إعدادات اللعبة •\n:يتضمن هذا العرض أيضًا •",
+ "bombSquadProNameText": "${APP_NAME} الذهبية",
+ "bombSquadProNewDescriptionText": "• تفتح الكثير من الإعدادات والأشياء\n• تزيل الإعلانات والإزعاجات\nوستأخذ مع اشتراكك:",
"buyText": "شراء",
"charactersText": "الشخصيات",
"comingSoonText": "قريبا...",
- "extrasText": "إضافات",
+ "extrasText": "أخرى",
"freeBombSquadProText": "فرقة القنبلة الآن أصبحت مجانية، لكن بما أنك اشتريتها\nبطاقات كشكر لك ${COUNT} ستتلقى فرقة القنبلة القنبلة للمحترفين و\n!استمتع بالميزات الجديدة، وشكرًا لدعمك\n-إيريك",
"holidaySpecialText": "خاص بالعطل",
- "howToSwitchCharactersText": "(توجه الى \"${SETTINGS} -> ${PLAYER_PROFILES}\" لتخصيص الشخصيات)",
- "howToUseIconsText": "(إنشاء ملفات تعريف لاعب العالمية (في إطار الحساب) لاستخدام هذه)",
- "howToUseMapsText": "(استخدم هذه الخرائط في فرقك الخاصة / قوائم التشغيل المجانية للجميع)",
- "iconsText": "رموز",
+ "howToSwitchCharactersText": "(${PLAYER_PROFILES} <- ${SETTINGS}لتغيير شخصيتك وتلوينها انتقل لـ)",
+ "howToUseIconsText": "(انشئ مُعرِّف عالمي لإضافة هذه لمظهر مُعرِّفك في الحساب)",
+ "howToUseMapsText": "(يمكنك استعمال هذه الأماكن في قوائم ألعابك التي أنشئتها)",
+ "iconsText": "الشارات",
"loadErrorText": "تعذر تحميل الصفحة.\nتحقق من اتصالك بالإنترنت.",
"loadingText": "جار التحميل",
- "mapsText": "خرائط",
- "miniGamesText": "ألعاب مصغرة",
+ "mapsText": "أماكن",
+ "miniGamesText": "اللُعَيبات",
"oneTimeOnlyText": "(مرة واحدة فقط)",
"purchaseAlreadyInProgressText": "هناك شراء لهذا العنصر قيد التقدم.",
"purchaseConfirmText": "هل تريد شراء ${ITEM}؟",
@@ -1333,23 +1413,25 @@
"saleText": "تخفيض السعر",
"searchText": "بحث",
"teamsFreeForAllGamesText": "فرق / مجانا للجميع الألعاب",
- "totalWorthText": "*** ${TOTAL_WORTH} قيمة! ***",
- "upgradeQuestionText": "ترقية؟",
- "winterSpecialText": "عرض الشتاء",
+ "totalWorthText": "( !${TOTAL_WORTH} ما يعادل )",
+ "upgradeQuestionText": "هلّا اشتركت؟",
+ "winterSpecialText": "معروض الشتاء",
"youOwnThisText": "- انت تملك هذا -"
},
"storeDescriptionText": "لعبة لأكثر من 8 لاعبين!\n\nالعب مع اصدقائك (او الحاسوب) في بطولات من الميني جيمز المتفجرة كــإمساك بالعلم، الهوكي و المعركة البطيئة!\n\nتحكم بسيط و لعب باجهزة تحكم يجعلها سهلة لأكثر من 8 لاعبين ليدخلو المعركة; تستطيع ايضا استعمال اجهزة الهاتف كاجهزة تحكم من خلال التطبيق المجاني 'BombSquad Remote' !\n\nوقت رمي القنابل!\n\nتفقد www.froemling.net/bombsquad للمزيد من المعلومات.",
"storeDescriptions": {
"blowUpYourFriendsText": ".فجر أصدقائك",
"competeInMiniGamesText": "تنافس في الألعاب المصغرة بدءا من السباق للطيران.",
- "customize2Text": "تخصيص الشخصيات، الألعاب المصغرة، وحتى الموسيقى التصويرية.",
+ "customize2Text": "تخصيص الشخصيات، الألعاب المصغرة، وحتى مسارات الصوت.",
"customizeText": "تخصيص الشخصيات وإنشاء قوائم التشغيل الخاصة بك لعبة صغيرة.",
"sportsMoreFunText": "الرياضة أكثر متعة مع المتفجرات.",
"teamUpAgainstComputerText": ".قم بالتعاون كفريق ضد الحاسوب"
},
- "storeText": "متجر",
+ "storeText": "المتجر",
"submitText": "ارسال",
"submittingPromoCodeText": "تقديم الكود ...",
+ "successText": "نجحت!",
+ "supportEmailText": "ايذا لديك اي مشكلة تقنية مع\nالبرنامح, يرجى استخدام البريد إلكتروني للدعم ${EMAIL}.",
"teamNamesColorText": "اسماء/الوان الفرق...",
"telnetAccessGrantedText": "تم تمكين الوصول تلنيت.",
"telnetAccessText": "تم الكشف عن الوصول تلنيت. السماح؟",
@@ -1359,20 +1441,35 @@
"testBuildValidatedText": "اختبار بناء تم التحقق منه؛ استمتع!",
"thankYouText": "شكرا لدعمكم! استمتع باللعبة!!",
"threeKillText": "القتل الثلاثي",
+ "ticketsDescriptionText": "يمكنك استخدام التذاكر لتقوم بإلغاء قفل الشخصيات، الخرائط، الألعاب المصغرة، و اكثر في المتجر.\n\nباستطاعتك العثور على التذاكر في الكنوز التي يتم كسبها في الحملات، البطولات، و الانجازات.",
"timeBonusText": "مكافأة الوقت",
"timeElapsedText": "الوقت المنقضي",
"timeExpiredText": "انتهى الوقت",
- "timeSuffixDaysText": "${COUNT}ي",
- "timeSuffixHoursText": "${COUNT}س",
- "timeSuffixMinutesText": "${COUNT}د",
- "timeSuffixSecondsText": "${COUNT}ث",
+ "timeSuffixDaysText": "ي ${COUNT}",
+ "timeSuffixHoursText": "س ${COUNT}",
+ "timeSuffixMinutesText": "د ${COUNT}",
+ "timeSuffixSecondsText": "ث ${COUNT}",
"tipText": "تلميح",
- "titleText": "فرقة القنبلة",
- "titleVRText": "فرقة القنبلة وا",
+ "titleText": "فرقه القنبله",
+ "titleVRText": "VR فرقه القنبله",
+ "tokens": {
+ "getTokensText": "احصل على التوكنز",
+ "notEnoughTokensText": "!التوكنز غير كافية",
+ "numTokensText": "توكنز ${COUNT}",
+ "openNowDescriptionText": "انت تملك توكينز تكفي\nلفتح هذا الآن - انت لا\nتحتاج للإنتظار",
+ "shinyNewCurrencyText": "عملة فرقة القنبلة اللماعة الجديدة.",
+ "tokenPack1Text": "حزمة التوكن الصغيرة",
+ "tokenPack2Text": "حزمة التوكن المتوسطة",
+ "tokenPack3Text": "حزمة التوكن الكبيرة",
+ "tokenPack4Text": "حزمة التوكن جامبو",
+ "tokensDescriptionText": "التوكنز يمكن استخدامها في عدة أغراض ، وهي تسريع وقت فتح الكنوز و لأغراض و ميزات اخرى في اللعبة و الحساب الشخصي أيضاً.\n\nيمكنك أن تفوز التوكنز في اللعبة أو تشتريهم في حزم. أو تقوم بشراء (البطاقة الذهبية) للحصول على عدد لا نهائي منها.",
+ "youHaveGoldPassText": ".Gold Pass أنت لديك\n.جميع عمليات شراء التوكن مجانية\n!استمتع"
+ },
"topFriendsText": "أفضل الأصدقاء",
"tournamentCheckingStateText": "التحقق من حالة البطولة. أرجو الإنتظار...",
"tournamentEndedText": "انتهت هذه البطولة. وسوف تبدأ واحدة جديدة قريبا.",
"tournamentEntryText": "دخول البطولة",
+ "tournamentFinalStandingsText": "الترتيب النهائي",
"tournamentResultsRecentText": "نتائج البطولة الأخيرة",
"tournamentStandingsText": "ترتيب البطولة",
"tournamentText": "المسابقة",
@@ -1381,32 +1478,32 @@
"tournamentsText": "البطولات",
"translations": {
"characterNames": {
- "Agent Johnson": "العميل جونسون",
+ "Agent Johnson": "جسّاس",
"B-9000": "B-9000",
"Bernard": "بيرنارد",
- "Bones": "هيكل عظمي",
+ "Bones": "المُغضّرف",
"Butch": "بوتش",
"Easter Bunny": "أرنب عيد الفصح",
"Flopsy": "فلوبسي",
- "Frosty": "فروستي",
+ "Frosty": "ثُلجلج",
"Gretel": "جريتل",
"Grumbledorf": "الساحر",
- "Jack Morgan": "جاك مورجان (قرصان)",
- "Kronk": "كرونك",
+ "Jack Morgan": "القُبطان",
+ "Kronk": "صخر",
"Lee": "لي",
"Lucky": "سعيد الحظ",
- "Mel": "ميل",
+ "Mel": "الطبّاخ",
"Middle-Man": "الرجل المتوسط",
"Minimus": "أدنى لا",
- "Pascal": "پاسكال",
- "Pixel": "بيكسل",
+ "Pascal": "بطريق",
+ "Pixel": "سكاكر",
"Sammy Slam": "سامي سلام",
"Santa Claus": "سانتا كلوس",
"Snake Shadow": "نينجا",
"Spaz": "سپاز",
"Taobao Mascot": "ماسكوت تاوباو",
"Todd McBurton": "تود بيرتون",
- "Zoe": "زوي",
+ "Zoe": "فُستُق",
"Zola": "زولا"
},
"coopLevelNames": {
@@ -1428,18 +1525,30 @@
"Uber Onslaught": "هجمة غزيرة",
"Uber Runaround": "جولة جري غزيرة"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} تذاكر",
+ "${C} Tokens": "${C} توكنز",
+ "Chest": "كنز",
+ "L1 Chest": "كنز L1",
+ "L2 Chest": "كنز L2",
+ "L3 Chest": "كنز L3",
+ "L4 Chest": "كنز L4",
+ "L5 Chest": "كنز L5",
+ "L6 Chest": "كنز L6",
+ "Unknown Chest": "كنز غير معروف"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "يكون اختيار واحد لفترة من الوقت للفوز.\nقتل اختيار واحد لتصبح عليه.",
- "Bomb as many targets as you can.": "فجر أكبر عدد من الأهداف على قدر استطاعتك.",
+ "Bomb as many targets as you can.": "ارمِ قنابلك نحو الأهداف.",
"Carry the flag for ${ARG1} seconds.": "حمل العلم مقابل ${ARG1} ثانية.",
"Carry the flag for a set length of time.": "احمل العلم لمدة محددة من الزمن",
"Crush ${ARG1} of your enemies.": "سحق ${ARG1} من أعدائك.",
"Defeat all enemies.": "هزيمة جميع الأعداء.",
- "Dodge the falling bombs.": "تفادى القنابل.",
+ "Dodge the falling bombs.": "تفادى الشُهُب القنبلية من السماء.",
"Final glorious epic slow motion battle to the death.": "آخر معركة ملحمية بطيئة حتى الموت.",
"Gather eggs!": "جمع البيض!",
"Get the flag to the enemy end zone.": "الحصول على العلم إلى المنطقة نهاية العدو.",
- "How fast can you defeat the ninjas?": "كم من الوقت ستحتاج لهزيمة النينجا؟",
+ "How fast can you defeat the ninjas?": "اقض على المقاتلين والرماة بسرعة",
"Kill a set number of enemies to win.": "قتل عدد معين من الأعداء للفوز.",
"Last one standing wins.": "آخر واحد يبقى يفوز.",
"Last remaining alive wins.": "آخر شخص يبقى حياً يفوز",
@@ -1495,13 +1604,13 @@
"Hockey": "الهوكي",
"Keep Away": "ابتعد",
"King of the Hill": "ملك التل",
- "Meteor Shower": "دش النيازك",
+ "Meteor Shower": "مزلج الشُهب",
"Ninja Fight": "قتال النينجا",
"Onslaught": "هجوم",
- "Race": "السباق",
- "Runaround": "يركض حول",
- "Target Practice": "الممارسة المستهدفة",
- "The Last Stand": "الموقف الأخير"
+ "Race": "سباق",
+ "Runaround": "السباق الدوراني",
+ "Target Practice": "مرحله تدريبيه: رمي القنابل",
+ "The Last Stand": "الوقفه الاخيره"
},
"inputDeviceNames": {
"Keyboard": "لوحة المفاتيح",
@@ -1511,40 +1620,46 @@
"Arabic": "العربية",
"Belarussian": "البيلاروسية",
"Chinese": "الصينية المبسطة",
- "ChineseTraditional": "التقليدية الصينية",
+ "ChineseSimplified": "الصين - مبسط",
+ "ChineseTraditional": "الصين - تقليدي",
"Croatian": "الكرواتية",
- "Czech": "تشيكي",
- "Danish": "دانماركي",
- "Dutch": "هولندي",
+ "Czech": "التشيكية",
+ "Danish": "الدنماركية",
+ "Dutch": "الهولندية",
"English": "الإنجليزية",
"Esperanto": "الاسبرانتو",
"Filipino": "الفلبينية",
"Finnish": "اللغة الفنلندية",
"French": "الفرنسية",
"German": "الألمانية",
- "Gibberish": "رطانة",
+ "Gibberish": "الإنجليزية التجريبية",
"Greek": "الإغريقية",
"Hindi": "الهندية",
"Hungarian": "الهنغارية",
"Indonesian": "الأندونيسية",
- "Italian": "الإيطالي",
+ "Italian": "الإيطالية",
"Japanese": "اليابانية",
"Korean": "الكورية",
"Malay": "لغة الملايو",
- "Persian": "اللغة الفارسية",
- "Polish": "البولندي",
+ "Persian": "الفارسية",
+ "PirateSpeak": "لغة القراصنة",
+ "Polish": "البولندية",
"Portuguese": "البرتغالية",
- "Romanian": "روماني",
+ "PortugueseBrazil": "برتغالية - برازيلية",
+ "PortuguesePortugal": "البرتغاليه - البرتغال",
+ "Romanian": "الرومانية",
"Russian": "الروسية",
"Serbian": "الصربية",
"Slovak": "السلوفاكية",
"Spanish": "الإسبانية",
- "Swedish": "اللغة السويدية",
- "Tamil": "اللغةالتاميلية",
- "Thai": "تايلاندي",
- "Turkish": "اللغة التركية",
- "Ukrainian": "الأوكراني",
- "Venetian": "فينيسي",
+ "SpanishLatinAmerica": "اسبانيا - امريكا لاتينا",
+ "SpanishSpain": "الاسبانية - إسبانيا",
+ "Swedish": "السويدية",
+ "Tamil": "التاميلية",
+ "Thai": "التايلاندية",
+ "Turkish": "التركية",
+ "Ukrainian": "الأوكرانية",
+ "Venetian": "البندقية",
"Vietnamese": "الفيتنامية"
},
"leagueNames": {
@@ -1603,6 +1718,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "الغش الكشف عنها. تم تعليق العشرات والجوائز لمدة ${COUNT} من الأيام.",
"Could not establish a secure connection.": "تعذر إنشاء اتصال آمن.",
"Daily maximum reached.": "الحد الأقصى اليومي الذي تم الوصول إليه.",
+ "Daily sign-in reward": "جائزة تسجيل الدخول اليومي",
"Entering tournament...": "جار دخول البطولة ...",
"Invalid code.": "الرمز غير صحيح.",
"Invalid payment; purchase canceled.": "دفعة غير صالحة؛ تم إلغاء الشراء.",
@@ -1612,11 +1728,14 @@
"Item unlocked!": "العنصر غير مقفلة!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "ربط مرفوض. ${ACCOUNT} يحتوي علي\nبيانات كبيرة والتي سيتم فقدانها.\nتستطيع الربط بالامر المعاكس اذا احببت\n(و فقدان بيانات هذا الحساب بالمقابل)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "هل تريد ربط الحساب ${ACCOUNT} بهذا الحساب؟\nسيتم فقد جميع البيانات الموجودة في ${ACCOUNT}.\nهذا لا يمكن التراجع عنها. هل أنت واثق؟",
+ "Longer streaks lead to better rewards.": "الستريك الأطول يقود الى جائزة أفضل",
"Max number of playlists reached.": "تم الوصول إلى أقصى عدد من قوائم التشغيل.",
"Max number of profiles reached.": "تم الوصول إلى أقصى عدد من الملفات الشخصية.",
"Maximum friend code rewards reached.": "تم الوصول إلى الحد الأقصى لمكافآت الرمز الصديق.",
"Message is too long.": "الرسالة طويلة جدا",
+ "New tournament result!": "نتيجة بطولة جديدة!",
"No servers are available. Please try again soon.": "لا توجد خوادم متاحة. من فضلك حاول لاحقا",
+ "No slots available. Free a slot and try again.": "لا يوجد اماكن فارغة متاحة. فرّغ فتحة وحاول مجدداً.",
"Profile \"${NAME}\" upgraded successfully.": "تمت ترقية الملف الشخصي \"${NAME}\" بنجاح.",
"Profile could not be upgraded.": "تعذر ترقية الملف الشخصي.",
"Purchase successful!": "تم الشراء بنجاح!",
@@ -1626,7 +1745,9 @@
"Sorry, this code has already been used.": "عذرا، تم استخدام هذه الشفرة من قبل.",
"Sorry, this code has expired.": "عذرا، انتهت صلاحية هذا الرمز.",
"Sorry, this code only works for new accounts.": "عذرا، لا تعمل هذه الشفرة إلا لحسابات جديدة.",
+ "Sorry, this has expired.": "عذراً، لقد تم انتهاء صلاحية هذا.",
"Still searching for nearby servers; please try again soon.": "يزال البحث عن سيرفرات قريبة; من فضلك كرر المحاولة لاحقا",
+ "Streak: ${NUM} days": "الستريك: ${NUM} الأيام",
"Temporarily unavailable; please try again later.": "غير متاح مؤقتا؛ الرجاء معاودة المحاولة في وقت لاحق.",
"The tournament ended before you finished.": "انتهت البطولة قبل الانتهاء.",
"This account cannot be unlinked for ${NUM} days.": "لا يمكن إلغاء ربط هذا الحساب بمبلغ ${NUM} من الأيام.",
@@ -1637,19 +1758,28 @@
"Tournaments require ${VERSION} or newer": "تتطلب الدورات ${VERSION} أو أحدث",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "هل تريد إلغاء ربط ${ACCOUNT} من هذا الحساب؟\nسيتم إعادة تعيين جميع البيانات على ${ACCOUNT}.\n(باستثناء الإنجازات في بعض الحالات)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "تحذير: تم إصدار شكاوى تتعلق بالقرصنة ضد حسابك.\nسيتم حظر الحسابات التي تم العثور عليها عن طريق القرصنة. يرجى لعب عادل.",
+ "Wait reduced!": "قلل الانتظار!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "تحذير: هذه النسخة من اللعبة تقتصر على بيانات الحساب القديمة؛ قد تظهر بعض الأشياء مفقودة أو قديمة.\nيرجى الترقية إلى إصدار أحدث من اللعبة لرؤية بيانات حسابك الأخيرة.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "هل تريد ربط حساب الجهاز بهذا الحساب؟\n\nحساب الجهاز هو ${ACCOUNT1}\nهذا الحساب هو ${ACCOUNT2}\n\nهذا سيسمح لك للحفاظ على التقدم المحرز الخاص بك.\nتحذير: لا يمكن التراجع عن ذلك!",
"You already own this!": "كنت تملك هذا بالفعل!",
"You can join in ${COUNT} seconds.": "يمكنك الانضمام في ${COUNT} ثانية.",
"You don't have enough tickets for this!": "ليس لديك ما يكفي من تذاكر لهذا!",
"You don't own that.": "أنت لا تملك ذلك.",
"You got ${COUNT} tickets!": "لقد حصلت على تذاكر ${COUNT}!",
+ "You got ${COUNT} tokens!": "لقد حصلت على ${COUNT}توكنز!",
"You got a ${ITEM}!": "لقد حصلت على ${ITEM}!",
+ "You got a chest!": "حصلت على كنز!",
+ "You got an achievement reward!": "لقد حصلت على جائزة إنجاز!",
"You have been promoted to a new league; congratulations!": "لقد تم ترقيتك إلى الدوري الجديد. تهانينا!",
+ "You lost a chest! (All your chest slots were full)": "خسرت كنز! (كل فتحات الكنوز كانت ممتلئة)",
+ "You must update the app to view this.": "يجب عليك تحديث التطبيق لمشاهدة هذا",
"You must update to a newer version of the app to do this.": "يجب تحديث إلى إصدار أحدث من التطبيق للقيام بذلك.",
"You must update to the newest version of the game to do this.": "يجب عليك التحديث إلى الإصدار الأحدث من اللعبة للقيام بذلك.",
"You must wait a few seconds before entering a new code.": "يجب الانتظار بضع ثوان قبل إدخال رمز جديد.",
+ "You placed #${RANK} in a tournament!": "لقد وضعت #${RANK} في بطولة!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "لقد حصلت على الترتيب # ${RANK} في البطولة الأخيرة. شكرا للعب!",
"Your account was rejected. Are you signed in?": "لقد حُذف حسابك.هل قمت بتسجيل دخولك?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "لم يتم تسجيل مشاهداتك للإعلان. خيارات الإعلان سيكون محدود لفترة من الوقت",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "تم تعديل نسختك من اللعبة.\nيرجى إعادة أي تغييرات وإعادة المحاولة.",
"Your friend code was used by ${ACCOUNT}": "تم استخدام رمز صديقك بواسطة ${ACCOUNT}"
},
@@ -1701,9 +1831,9 @@
},
"teamNames": {
"Bad Guys": "الأشرار",
- "Blue": "ازرق",
+ "Blue": "الزُرق",
"Good Guys": "الأخيار",
- "Red": "أحمر"
+ "Red": "الحُمر"
},
"tips": {
"A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "A توقيت تماما تشغيل القفز تدور لكمة يمكن أن تقتل في ضربة واحدة\nوكسب لك مدى الحياة الاحترام من أصدقائك.",
@@ -1741,45 +1871,45 @@
"The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "الرأس هو المنطقة الأكثر ضعفا، لذلك قنبلة لزجة\nإلى نوجين يعني عادة لعبة أكثر.",
"This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "هذا المستوى لا تنتهي أبدا، ولكن على درجة عالية هنا\nسوف كسب لك الاحترام الأبدية في جميع أنحاء العالم.",
"Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "وتستند قوة رمي على الاتجاه الذي عقد.\nلإرم شيء برفق أمامك، لا تحمل أي اتجاه.",
- "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "تعبت من الموسيقى التصويرية؟ استبدالها بنفسك!\nانظر إعدادات-> الصوت-> الموسيقى التصويرية",
- "Try 'Cooking off' bombs for a second or two before throwing them.": "محاولة 'الطبخ قبالة' القنابل لمدة ثانية أو اثنين قبل رمي لهم.",
- "Try tricking enemies into killing eachother or running off cliffs.": "محاولة خداع الأعداء في قتل بعضهم البعض أو الجري المنحدرات.",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "تعبت من الموسيقى اللعبه؟ استبدالها بنفسك!\n ادخل إعدادات-> الصوت-> مسار الصوت",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "جرّب تأخير رمي القنبله لثانية أو ثانيتين قبل رميها.",
+ "Try tricking enemies into killing eachother or running off cliffs.": "حاول خداع الأعداء لجعلهم يقتلون بعضهم البعض أو يسقطون من المنحدرات",
"Use the pick-up button to grab the flag < ${PICKUP} >": "استخدم زر البيك اب للاستيلاء على العلم <${PICKUP}",
- "Whip back and forth to get more distance on your throws..": "سوط ذهابا وإيابا للحصول على مزيد من المسافة على رميات الخاص بك",
- "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "يمكنك 'تهدف' اللكمات الخاصة بك عن طريق الغزل اليسار أو اليمين.\nوهذا مفيد لضرب الأشرار من حواف أو التهديف في الهوكي.",
+ "Whip back and forth to get more distance on your throws..": "تحرّك ذهابًا وإيابًا للرمي لمسافات ابعد",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "يمكنك توجيه ضرباتك عن طريق الدوران إلى اليسار أو اليمين.\nوهذا مفيد لإسقاط الأشرار من الحواف أو لتسجيل الأهداف في رياضة الهوكي.\"",
"You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "يمكنك تحديد وقت إنفجار القنبلة بناءً على لون الشرارة المنبعثة من فتيلها:\nأصفر..برتقالي..أحمر ثم بووم.",
- "You can throw bombs higher if you jump just before throwing.": "يمكنك رمي القنابل أعلى إذا كنت القفز قبل رمي.",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "كنت تأخذ الضرر عندما كنت اجتز رأسك على الأشياء،\nوذلك في محاولة لا اجتز رأسك على الأشياء.",
+ "You can throw bombs higher if you jump just before throwing.": "يمكنك رمي القنابل أعلى إذا كنت تقفز قبل ان ترمي القنابل.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "سوف تتلقي اضرار عندما تضرب راسك بالاشياء،\nفحاول انك تتجنب ضرب راسك في اي شي.",
"Your punches do much more damage if you are running or spinning.": "لكماتك تؤثر بضرر اكبر اذا كنت تجري او تدور"
}
},
- "trophiesRequiredText": "جوائز ${NUMBER} هذا يحتاج على الاقل",
+ "trophiesRequiredText": "من الجوائز ${NUMBER} هذا يحتاج على الاقل",
"trophiesText": "الجوائز",
"trophiesThisSeasonText": "جوائز هذا الموسم",
"tutorial": {
"cpuBenchmarkText": "(CPU تشغيل البرنامج التعليمي بالسرعة المثيرة للسخرية (رئيسيا لتجريب سرعة",
- "phrase01Text": "!مرحبا",
- "phrase02Text": "!${APP_NAME} أهلا بك في",
- "phrase03Text": "إليك بعض النصائح للتحكم بشخصيتك",
- "phrase04Text": "درست فرقة القنبلة كثيرا من الاشياء فيزيائيا ${APP_NAME}**",
- "phrase05Text": "...,على سبيل المثال, عندما تلكم",
- "phrase06Text": "الضرر مبني على سرعة لكماتك",
- "phrase07Text": "${NAME} كما ترى, نحن لا نتحرك لهذا بالكاد نصيب",
- "phrase08Text": "الآن قم بالقفز والدوران لكسب زخم اكثر",
+ "phrase01Text": "!مرحبا صديقي",
+ "phrase02Text": "!${APP_NAME} أهلا و سهلا بك في لعبه",
+ "phrase03Text": "انا هنا لاقدم لك بعض النصائح علشان تتحكم بشخصيتك",
+ "phrase04Text": "في كثير حاجات في لعبه ${APP_NAME} تعتمد ميكانيكيات الفيزياء.",
+ "phrase05Text": "...,و كمثال على كلامي, عندما تلكم",
+ "phrase06Text": "الضرر يكون اقوي على حسب سرعة لكماتك",
+ "phrase07Text": "${NAME} زي ماتشوف ماتحركنا من مكاننا لهذا السبب ضربتنا لم توثر في",
+ "phrase08Text": "الآن قم بالقفز والدوران علشان تكتسب سرعة اكبر",
"phrase09Text": "!آه هذا أفضل",
"phrase10Text": "الجري يساعد ايضا",
- "phrase11Text": "استمر في الضغط على اي زر للجري",
+ "phrase11Text": "استمر في الضغط على اي زر علشان تجري",
"phrase12Text": "للحصول على لكمة رائعة اضافية, جرب الجري و الدوران",
- "phrase13Text": "${NAME} أوبس؛ اعتذر بشأن هذا يا يا صاح",
- "phrase14Text": "${NAME} يمكنك امساك ورمي الاشياء مثل الاعلام .. أو",
- "phrase15Text": "أخيرا, هناك القنابل",
+ "phrase13Text": "${NAME} أوبس؛ اعتذر بشأن هذا يا",
+ "phrase14Text": "${NAME} يمكنك ان تمسك وترمي الاشياء مثل الاعلام .. أو",
+ "phrase15Text": "و الان, بنتحدث عن القنابل",
"phrase16Text": "رمي القنابل يحتاج للتدريب",
- "phrase17Text": "اوو! لم تكن رمية جيدة",
+ "phrase17Text": "اوتش! لم تكن رمية جيدة",
"phrase18Text": "التحرك يساعدك على الرمي ابعد",
"phrase19Text": "القفز يساعدك على الرمي اعلى",
- "phrase20Text": "فجر\"قنابلك لمدى حتى أبعد من ذلك\"",
+ "phrase20Text": "أصب قنابلك لمدى ابعد.",
"phrase21Text": "توقيت القنبلة يمكن أن يكون مخادعا",
- "phrase22Text": "!بووم",
+ "phrase22Text": "دانغ",
"phrase23Text": "جرب امساك القنبلة ليذوب الفتيل لثانية او اثنتين",
"phrase24Text": "مرحى! لقد تم شواؤه بشكل رائع",
"phrase25Text": "حسنا, هذا كل ما في الامر",
@@ -1787,65 +1917,72 @@
"phrase27Text": "إن تذكرت تدريبك.. فستعود حيا",
"phrase28Text": "...حسنا, ربما...",
"phrase29Text": "!حظا سعيدا",
- "randomName1Text": "فريد",
- "randomName2Text": "هاني",
- "randomName3Text": "باسل",
- "randomName4Text": "كيفن",
- "randomName5Text": "جوني",
- "skipConfirmText": "حقا تريد تخطي البرنامج التعليمي؟ إلمس أو اضغط بإستمرار",
- "skipVoteCountText": "تخطي اصوات ${COUNT}/${TOTAL}",
+ "randomName1Text": "بوت1",
+ "randomName2Text": "بوت2",
+ "randomName3Text": "بوت3",
+ "randomName4Text": "بوت4",
+ "randomName5Text": "بوت5",
+ "skipConfirmText": "هل انت متاكد من رغبتك في تخطي البرنامج التعليمي؟ إلمس أو اضغط بإستمرار",
+ "skipVoteCountText": "تصويتات ${COUNT}/${TOTAL}",
"skippingText": "جاري تخطي البرنامج التعليمي....",
"toSkipPressAnythingText": "(إلمس او إضغظ اي شئ لتخطي البرنامج التعليمي)"
},
"twoKillText": "!قتل مزدوج",
- "unavailableText": "غير متوفر",
+ "uiScaleText": "حجم الواجهة",
+ "unavailableText": "غير متاح",
+ "unclaimedPrizesText": "!انت تملك جوائز غير مستلمة",
"unconfiguredControllerDetectedText": ":تم الكشف على يد تحكم غير مهيئة",
"unlockThisInTheStoreText": "هذا يجب ان يفتح في المتجر",
"unlockThisProfilesText": "لإنشاء أكثر من ${NUM} من الملفات الشخصية، تحتاج إلى:",
"unlockThisText": ":لفتح هذا, تحتاج إلى",
+ "unsupportedControllerText": "عذرًا، وحدة التحكم \"${NAME}\" غير مدعومة.",
"unsupportedHardwareText": "عفوا, هذه المعدات غير مدعومة في هذه النسخة من اللعبة",
"upFirstText": ":يصل اولا",
"upNextText": ":${COUNT}التالي في اللعبة",
"updatingAccountText": "تحديث الحساب الخاص بك....",
- "upgradeText": "احصل على ترقية",
+ "upgradeText": "ترقية",
"upgradeToPlayText": "في متجر اللعبة لتلعب هذا \"${PRO}\" اشتري",
"useDefaultText": "استخدام الإفتراضي",
+ "userSystemScriptsCreateText": "User System Scripts انشئ",
+ "userSystemScriptsDeleteText": "User System Scripts احذف",
"usesExternalControllerText": "هذه اللعبة تستخدم يد تحكم خارجية للإدخال",
"usingItunesText": "...استخدام تطبيق الموسيقى للموسيقى التصويرية",
"v2AccountLinkingInfoText": "اذا اردت ربط حسابات V2، قم بالتوجه الى 'ادارة الحساب'.",
- "validatingTestBuildText": "التحقق من صحة البناء",
+ "v2AccountRequiredText": ".طور حسابك و حاول مره ثانيه .V2 هذا يحتاج حساب",
+ "validatingTestBuildText": "التحقق من صحة التحديث...",
+ "viaText": "عبر",
"victoryText": "!النصر",
- "voteDelayText": "ثانية ${NUMBER} لا يمكنك التصويت ثانية حتى",
+ "voteDelayText": "لا يمكنك التصويت مره ثانيه حتي تعبر ${NUMBER} ثانيه",
"voteInProgressText": "التصويت بالفعل في التقدم",
- "votedAlreadyText": "لقد صوت بالفعل",
- "votesNeededText": "صوت مطلوب ${NUMBER}",
+ "votedAlreadyText": "لقد صوتت بالفعل",
+ "votesNeededText": "عدد الاصوات المطلوبه ${NUMBER}",
"vsText": "ضد",
- "waitingForHostText": "(للإستمرار ${HOST} انتظار)",
- "waitingForPlayersText": "...انتظار اللاعيبين للإنضمام",
- "waitingInLineText": "الانتظار في السطر (الطرف ممتلئ) ...",
+ "waitingForHostText": "(للمتابعه ${HOST} منتظرين)",
+ "waitingForPlayersText": "...بانتظار الاعبين للانضمام",
+ "waitingInLineText": "الانتظار في الدور (الغرفه مليانه) ...",
"watchAVideoText": "شاهد فيديو",
"watchAnAdText": "شاهد اعلان",
"watchWindow": {
- "deleteConfirmText": "\"${REPLAY}\"? حذف",
- "deleteReplayButtonText": "حذف\nالإعادة",
- "myReplaysText": "إعاداتي",
- "noReplaySelectedErrorText": "لايوجد إعادة تم اختيارها",
- "playbackSpeedText": "سرعة الاعادة: ${SPEED}",
- "renameReplayButtonText": "إعادة تسمبة \n الإعادة",
+ "deleteConfirmText": "\"${REPLAY}\"? هل انت متاكد من رغبتك بالحذف",
+ "deleteReplayButtonText": "حذف\nالتسجيل",
+ "myReplaysText": "تسجيلاتي",
+ "noReplaySelectedErrorText": "لايوجد تسجيل تم اختيارها",
+ "playbackSpeedText": "سرعة التسجيل: ${SPEED}",
+ "renameReplayButtonText": "إعادة تسمبة \n التسجيل",
"renameReplayText": ":الى \"${REPLAY}\" اعادة تسمية",
- "renameText": "إعادة تسمية",
- "replayDeleteErrorText": "خطا في حذف الإعادة",
- "replayNameText": "اسم الإعادة",
- "replayRenameErrorAlreadyExistsText": "اسم الإعادة موجود بالفعل",
- "replayRenameErrorInvalidName": "لايمكن اعادة تسمية الإعادة; الاسم غير صالح",
- "replayRenameErrorText": "خطا في اعادة تسمية الإعادة",
- "sharedReplaysText": "الإعادة المشاركة",
- "titleText": "شاهد",
- "watchReplayButtonText": "شاهد\nالإعادة"
+ "renameText": "اعاده تسميه",
+ "replayDeleteErrorText": "حصل خطأ اثناء حذف التسجيل",
+ "replayNameText": "اسم التسجيل",
+ "replayRenameErrorAlreadyExistsText": "اسم التسجيل موجود رجاء اكتب اسم اخر",
+ "replayRenameErrorInvalidName": "ماتقدر تسمي التسجيل بسبب; الاسم مش صالح للاستخدام",
+ "replayRenameErrorText": "حصل خطا اثناء تسميه التسجيل",
+ "sharedReplaysText": "مشاركه التسجيل",
+ "titleText": "التسجيلات",
+ "watchReplayButtonText": "شاهد\nالتسجيلات"
},
- "waveText": "موجة",
- "wellSureText": "!حسنا طبعا",
- "whatIsThisText": "ما هذا؟",
+ "waveText": "جوله",
+ "wellSureText": "!حسنا بالطبع",
+ "whatIsThisText": "ايش ذا؟",
"wiimoteLicenseWindow": {
"titleText": "DarwinRemoteحقوق التأليف والنشر ل"
},
@@ -1861,14 +1998,14 @@
"thanksText": "DarwiinRemote شكرا لفريق\nلجعل هذا ممكنا",
"titleText": "wiimote تثبيت"
},
- "winsPlayerText": "${NAME} !يفوز",
- "winsTeamText": "${NAME} !يفوز فريق",
- "winsText": "${NAME} !يفوز",
- "workspaceSyncErrorText": "فشل في مزامنة ${WORKSPACE}. القي نظرة على السجل للتفاصيل.",
- "workspaceSyncReuseText": "لا يمكن مزامنة ${WORKSPACE}. اعادة استخدام النسخة المتزامنة السابقة.",
- "worldScoresUnavailableText": "(النتيجة العالمية غير متوفرة (اتصل بالانترنت",
- "worldsBestScoresText": "افضل نتيجة للعالم",
- "worldsBestTimesText": "افضل اوقات العالم",
+ "winsPlayerText": "${NAME} !انتصر",
+ "winsTeamText": "${NAME} انتصر فريق",
+ "winsText": "${NAME} !انتصر",
+ "workspaceSyncErrorText": "فشل في مزامنة ${WORKSPACE}. القي نظرة على السجل لمزيد من التفاصيل.",
+ "workspaceSyncReuseText": "تعذّر مزامنة ${WORKSPACE}. يتم حالياً استخدام النسخة السابقة التي تم مزامنتها.",
+ "worldScoresUnavailableText": ".النتائج العالمية ليست متاحه",
+ "worldsBestScoresText": "افضل النتائج العالميه",
+ "worldsBestTimesText": "افضل اوقاتك على مستوى عالمي",
"xbox360ControllersWindow": {
"getDriverText": "احصل على تعريف",
"macInstructions2Text": "لاستخدام وحدات تحكم لاسلكيا، سوف تحتاج أيضا المتلقي ذلك\nيأتي مع \"تحكم اكس بوكس 360 اللاسلكية ويندوز\".\nواحد المتلقي يسمح لك لربط ما يصل إلى 4 وحدات تحكم.\n\nهام: لن تعمل أجهزة الاستقبال التابعة لجهة خارجية مع برنامج التشغيل هذا؛\nتأكد من جهاز الاستقبال يقول 'مايكروسوفت' على ذلك، وليس 'الاكس بوكس 360'.\nمايكروسوفت لم تعد تبيع هذه بشكل منفصل، لذلك سوف تحتاج إلى الحصول عليها\nواحد المجمعة مع وحدة تحكم أو البحث إيباي آخر.\n\nإذا وجدت هذا مفيد، يرجى النظر في التبرع ل\nمطور برامج في موقعه.",
@@ -1877,6 +2014,7 @@
"titleText": "استخدام يد تحكم Xbox 360 مع ${APP_NAME}:"
},
"yesAllowText": "!نعم,اسمح",
- "yourBestScoresText": "أفضل نقاطك",
- "yourBestTimesText": "أفضل أوقاتك"
+ "yourBestScoresText": "أفضل نتائجك",
+ "yourBestTimesText": "أفضل أوقاتك",
+ "yourPrizeText": "جائزتك:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/belarussian.json b/dist/ba_data/data/languages/belarussian.json
index ce89a78e..4b4d5c70 100644
--- a/dist/ba_data/data/languages/belarussian.json
+++ b/dist/ba_data/data/languages/belarussian.json
@@ -1,12 +1,15 @@
{
"accountSettingsWindow": {
"accountNameRules": "Імя акаўнта не можа ўтрымліваць эмоджы і іншыя спецыяльныя сымбалі",
- "accountsText": "Акаўнты",
+ "accountsText": "el idioma",
"achievementProgressText": "Дасягненні: ${COUNT} з ${TOTAL}",
"campaignProgressText": "Прагрэс кампаніі (Цяжка): ${PROGRESS}",
"changeOncePerSeason": "Вы можаце змяніць толькі адзін раз за сезон.",
"changeOncePerSeasonError": "Трэба пачакаць наступнага сезона, каб зноў змяніць гэта (${NUM} days)",
+ "createAnAccountText": "Стварыць акаўнт",
"customName": "Зрабіць імя",
+ "deleteAccountText": "Выдаліць уліковы запіс",
+ "googlePlayGamesAccountSwitchText": "Калі вы жадаеце выкарыстоўваць іншы ўліковы запіс Google,\nвыберыце яго ў Google Play Games.",
"linkAccountsEnterCodeText": "Увесцi Код",
"linkAccountsGenerateCodeText": "Стварыць Код",
"linkAccountsInfoText": "(сінхранізацыя гульні паміж рознымі платформамі)",
@@ -14,6 +17,7 @@
"linkAccountsInstructionsText": "Каб звязаць 2 акаўнта, стварыце код на першым\nз іх і увядзіце яго ў другім.\nПрагрэс і пакупкі будуць сінранізаваны.\nВы можаце звязаць да ${COUNT} акаўнтаў.\n\nАсцярожна! Гэта нельга адмяніць!",
"linkAccountsText": "Звязаць Акаўнты",
"linkedAccountsText": "Злучаныя Акаўнты:",
+ "manageAccountText": "Кiраваць акаўнтам",
"nameChangeConfirm": "Змяніць імя акаўнта на ${NAME} ?",
"resetProgressConfirmNoAchievementsText": "Гэта скіне ўвесь ваш кааператыўны прагрэс\nды лакальныя лепшыя вынікі (акрамя білетаў).\nГэты працэс незваротны. Вы ўпэўнены?",
"resetProgressConfirmText": "Гэта скіне ўвесь ваш кааператыўны\nпрагрэс, дасягненні ды лакальныя вынікі\n(акрамя білетаў). Гэты працэс незваротны.\nВы ўпэўнены?",
@@ -22,14 +26,16 @@
"setAccountNameDesc": "Выберыце імя для адлюстравання для вашага ўліковага запісу.\nВы можаце выкарыстоўваць імя ў адным з звязаных\nуліковых запісаў альбо стварыць унікальнае прыстасаванае імя.",
"signInInfoText": "Увайдзіце, каб збіраць квіткі, удзельнічаць у спаборніцтвах \nі сінхранізіраваць прагрэс паміж рознымі прыладамі.",
"signInText": "Увайсці",
+ "signInWithAnEmailAddressText": "Увайсці з дапамогай адраса электроннай пошты",
"signInWithDeviceInfoText": "(толькі аўтаматычны акаўнт даступны для гэтай прылады)",
"signInWithDeviceText": "Увайсці з акаўнта прылады",
"signInWithGameCircleText": "Увайсці з дапамогаю Game Circle",
"signInWithGooglePlayText": "Увайсці з дапамогаю Google Play",
"signInWithTestAccountInfoText": "(акаўнт, які ўжо існуе; спачатку увайдзіце з прылады)",
"signInWithTestAccountText": "Увайсці з тэст-акаўнта",
+ "signInWithText": "Увайдзіце з дапамогай ${SERVICE}",
"signInWithV2InfoText": "(уліковы запіс, які працуе на ўсіх платформах)",
- "signInWithV2Text": "Увайдзіце з уліковым запісам BombSquad",
+ "signInWithV2Text": "Увайдзіце з дапамогай уліковага запісу ${APP_NAME}",
"signOutText": "Выйсці",
"signingInText": "Уваход...",
"signingOutText": "Выхад...",
@@ -40,6 +46,7 @@
"titleText": "Акаўнт",
"unlinkAccountsInstructionsText": "Выберыце ўліковы запіс, каб спыніць сувязь",
"unlinkAccountsText": "Адлучэнне акаунтау",
+ "unlinkLegacyV1AccountsText": "Адключэнне устарэлых уліковых запісаў (V1)",
"v2LinkInstructionsText": "Выкарыстоўвайце гэтую спасылку, каб стварыць уліковы запіс або ўвайсці.",
"viaAccount": "(праз акаунт ${NAME})",
"youAreSignedInAsText": "Вы ўвайшлі як:"
@@ -328,13 +335,19 @@
"achievementsRemainingText": "Дасягенні, Якія Засталіся",
"achievementsText": "Дасягненні",
"achievementsUnavailableForOldSeasonsText": "Прабачце, спецыфіка дасягненняў недаступна для старога сезона.",
+ "activatedText": "${THING} Актыўны",
"addGameWindow": {
"getMoreGamesText": "Атрымаць больш гульняў...",
"titleText": "Дадаць гульню"
},
+ "addToFavoritesText": "Дадаць у абранае",
+ "addedToFavoritesText": "'${NAME}' дададзены ў абранае.",
+ "allText": "Усё",
"allowText": "Дазволіць",
"alreadySignedInText": "Ваш уліковы запіс увайшоў з іншай прылады;\nкалі ласка, пераключыце ўліковыя запісы альбо зачыніце гульню на вашым\nіншыя прылады і паспрабуйце яшчэ раз",
"apiVersionErrorText": "Нельга загрузіць модуль ${NAME}; ён прапануецца для api-версіі ${VERSION_USED}; мы карыстаемся ${VERSION_REQUIRED}.",
+ "applyText": "Ужыць",
+ "areYouSureText": "Вы ўпэўнены",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Аўтаматычна\" працуе толькі калі ўстаўлены навушнікі)",
"headRelativeVRAudioText": "H-R VR Аўдыя",
@@ -356,14 +369,24 @@
"boostText": "Павышэнне",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} наладзіцца сам.",
"buttonText": "Кнопка",
- "canWeDebugText": "Ці жадаеце вы аўтаматычна паведамляць аб багах\nі аварыях распрацоўніку?\n\nГэтыя паведамленні не ўтрымліваюць асабістую інфармацыю\nі дапамагаюць палепшыць гульню.",
+ "canWeDebugText": "Хочаце, каб ${APP_NAME} аўтаматычна паведамляла\nпамылкі, збоі і асноўныя звесткі аб выкарыстанні для распрацоўшчыка?",
"cancelText": "Зачыніць",
"cantConfigureDeviceText": "Прабачце, ${DEVICE} не падтрымліваецца.",
"challengeEndedText": "Спаборніцтва скончылася.",
"chatMuteText": "Адключэнне гуку ў чаце",
"chatMutedText": "Чат адключон",
"chatUnMuteText": "Уключыць гук у чаце",
+ "chests": {
+ "prizeOddsText": "Прызавыя шанцы",
+ "reduceWaitText": "Паменшыць Час",
+ "slotDescriptionText": "Гэтая ячэйка можна храніць куфар.\n\nЗарабляй куфары гуляючы ў узроўні кампаніі, зарабляючы месцы ў турнірах, і робячы дасягнення.",
+ "slotText": "Ячэйка куфара ${NUM}",
+ "slotsFullWarningText": "УВАГА: Усё ячэйкі куфараў поўныя.\nДругія куфары якія вы заробіце будуць страчаны.",
+ "unlocksInText": "Адмыкае ў"
+ },
"choosingPlayerText": "<выбар гульца>",
+ "claimText": "Атрымаць",
+ "codesExplainText": "Коды прадастаўляюцца распрацоўшчыкам\nдыягностыка і выпраўленне праблем з уліковым запісам.",
"completeThisLevelToProceedText": "Вы павінны прайсці гэты\nўзровень, каб працягнуць!",
"completionBonusText": "Бонус за праходжанне",
"configControllersWindow": {
@@ -444,6 +467,7 @@
"swipeText": "змахванне",
"titleText": "Налады Экрана"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} можна наладзіць у праграме \"Сістэмныя налады\".",
"configureItNowText": "Наладзіць гэта зараз?",
"configureText": "Налады",
"connectMobileDevicesWindow": {
@@ -498,6 +522,7 @@
"welcome2Text": "Вы таксама можаце зарабляць білеты многімі з такіх жа\nзаняткаў. Білеты дазваляюць адкрываць новых персанажаў, \nмапы, міні-гульні, удзельнічаць у турнірах і іншае.",
"yourPowerRankingText": "Ваш Узровень:"
},
+ "copyConfirmText": "Капіравана ў буфэр",
"copyOfText": "Копія ${NAME}",
"copyText": "Копія",
"createEditPlayerText": "<Стварыць/Змяніць Гульца>",
@@ -544,7 +569,10 @@
"deleteText": "Выдаліць",
"demoText": "Дэманстрацыя",
"denyText": "Адхіліць",
+ "deprecatedText": "Састарэў",
+ "descriptionText": "Апісанне",
"desktopResText": "Дазвол Экрана",
+ "deviceAccountUpgradeText": "Увага:\nВы ўзайшлі ў акаўнт дэвайса\n(${NAME}).\nАкаўнты дэвайса будуць Выдалены ў будучай абнове.",
"difficultyEasyText": "Лёгка",
"difficultyHardOnlyText": "Толькі на Складаным Узроўні",
"difficultyHardText": "Цяжка",
@@ -553,6 +581,10 @@
"disableRemoteAppConnectionsText": "Адключыць злучэнні з аддаленым дадаткам",
"disableXInputDescriptionText": "Дазваляе больш за 4 кантролераў, але можа таксама не працаваць.",
"disableXInputText": "Адключыць XInput",
+ "disabledText": "Выключана",
+ "discardText": "Адмовіться",
+ "discordFriendsText": "Хочаце шукаць новых людзей для гульні?\nДалучайцеся да нашага Discord і знайдзіце новых сяброў!",
+ "discordJoinText": "Далучайцеся да Discord",
"doneText": "Зроблена",
"drawText": "Нічыя",
"duplicateText": "Дублікат",
@@ -586,6 +618,7 @@
"localProfileText": "(лакальны профіль)",
"nameDescriptionText": "Імя Гульца",
"nameText": "Імя",
+ "profileAlreadyExistsText": "Профіль з такім імем ужо існуе.",
"randomText": "выпадкова",
"titleEditText": "Рэдагаваць Профіль",
"titleNewText": "Новы Профіль",
@@ -621,15 +654,20 @@
"useMusicFolderText": "Тэчка з Музыкай"
},
"editText": "Рэдагаваць",
+ "enabledText": "Уключана",
"endText": "Канец",
"enjoyText": "Поспехаў!",
"epicDescriptionFilterText": "${DESCRIPTION} у эпічным рэжыме.",
"epicNameFilterText": "${NAME} у Эпічным Рэжыме",
"errorAccessDeniedText": "доступ забаронены",
+ "errorDeviceTimeIncorrectText": "Час вашага дэвайса Няверны на ${HOURS} Гадзін.\nГэта можа прывесці да праблем.\nКалі ласка праверце ваш час і зону часа ў устаноўках",
"errorOutOfDiskSpaceText": "не хапае месца на дыске",
+ "errorSecureConnectionFailText": "Нельга Наладзіць бяспечнае падключэнне да інтэрнету. Функцыі інтэренту могуць не працаваць.",
"errorText": "Памылка",
"errorUnknownText": "Невядомая памылка",
"exitGameText": "Зачыніць ${APP_NAME}?",
+ "expiredAgoText": "Сапсаваўся ${T} таму",
+ "expiresInText": "Сапсуецца праз ${T}",
"exportSuccessText": "'${NAME}' экспартуецца.",
"externalStorageText": "Знешняя памяць",
"failText": "Правал",
@@ -664,6 +702,8 @@
"duplicateText": "Прадубляваць\nПлэйліст",
"editText": "Рэдагаваць\nПлэйліст",
"newText": "Новы\nПлэйліст",
+ "pointsToWinText": "Ачкоў Для Перамогі",
+ "seriesLengthText": "Даўжыня Чарады",
"showTutorialText": "Паказаць Туторыял",
"shuffleGameOrderText": "Выпадковы Парадак Гульняў",
"titleText": "Наладзіць ${TYPE} Плэйлісты"
@@ -690,23 +730,24 @@
"copyCodeConfirmText": "Код скапіяваны ў буфер абмену",
"copyCodeText": "Скапіяваць код",
"dedicatedServerInfoText": "Для дасягнення найлепшых вынікаў наладзьце спецыяльны сервер. Гл. Bombsquadgame.com/server, каб даведацца, як.",
+ "descriptionShortText": "Выкарыстайце акно збору каб сабраць групу.",
"disconnectClientsText": "Гэта адлучыць ${COUNT} гульцоў з вашага\nлоббі. Вы ўпэўнены?",
"earnTicketsForRecommendingAmountText": "Сябры атрымаюць ${COUNT} квіткоў, калі яны паспрабуюць гульню\n(вы таксама атрымаеце ${YOU_COUNT} квіткоў за кожнага сябра)",
"earnTicketsForRecommendingText": "Падзяліцеся гульнёй, \nкаб атрымаць квіткі.",
"emailItText": "Паслаць",
"favoritesSaveText": "Захаваць як абранае",
"favoritesText": "Абранае",
- "freeCloudServerAvailableMinutesText": "Наступны бясплатны воблачны сервер будзе абноўлены праз ${MINUTES} мінут",
+ "freeCloudServerAvailableMinutesText": "Наступны дармовы воблачны сервер даступны праз ${MINUTES} хвілін.",
"freeCloudServerAvailableNowText": "Бясплатны воблачны сервер абнавіўся!",
"freeCloudServerNotAvailableText": "Бясплатных воблачных сервераў няма.",
"friendHasSentPromoCodeText": "${COUNT} квіткоў ${APP_NAME} ад ${NAME}",
"friendPromoCodeAwardText": "Вы атрымаеце ${COUNT} квіткоў кожны раз, калі ён будзе выкарыстаны.",
"friendPromoCodeExpireText": "Код дзейнічае ${EXPIRE_HOURS} гадзін(ы) і працуе толькі для новых гульцоў.",
"friendPromoCodeInfoText": "Ён можа быць абменены на ${COUNT} квіткоў.\n\nЗайдзіце ў \"Налады->Дадатковыя->Увесці прома-код\", каб скарыстацца ім.\nНаведайце bombsquadgame.com, каб зладаваць гульню на любую платформу, якая падтрымліваецца.\nГэты код мінае праз ${EXPIRE_HOURS} гадзін(ы)(а) і ён дзейнічае толькі для новых гульцоў.",
- "friendPromoCodeInstructionsText": "Каб выкарыстоўваць яго, адкрыйце ${APP_NAME} і перайдзіце ў раздзел \"Налады-> Дадатковыя-> Увесці код\".\nГлядзіце bombsquadgame.com для спасылкі на загрузку ўсіх падтрымліваемых платформаў.",
+ "friendPromoCodeInstructionsText": "Каб выкарыстаць яго, адкрыйце ${APP_NAME} і перайдзіце ў раздзел \"Налады-> Дадатковыя->Даслаць інфармацыю\".\nГлядзіце bombsquadgame.com каб знайсці спасылкі на спампоўку для ўсіх платформаў, што падтрымліваюцца.",
"friendPromoCodeRedeemLongText": "Ён можа быць абменены на ${COUNT} квіткоў максімум ${MAX_USES} гульцамі.",
"friendPromoCodeRedeemShortText": "Ён можа быць абменены на ${COUNT} квіткоў у гульні.",
- "friendPromoCodeWhereToEnterText": "(у раздзеле \"Налады->Дадатковыя->Увядзіце код\")",
+ "friendPromoCodeWhereToEnterText": "(у раздзеле \"Налады->Дадатковыя->Даслаць інфармацыю\")",
"getFriendInviteCodeText": "Атрымаць Код для Сяброў",
"googlePlayDescriptionText": "Запрасіце гульцоў з Google Play у вашае лоббі.",
"googlePlayInviteText": "Запрасіць",
@@ -738,6 +779,7 @@
"manualYourLocalAddressText": "Ваш лакальны адрас:",
"nearbyText": "Побач",
"noConnectionText": "<няма злучэння>",
+ "noPartiesAddedText": "Партыі не дададзены",
"otherVersionsText": "(іншыя версіі)",
"partyCodeText": "Код вечарыны",
"partyInviteAcceptText": "Згадзіцца",
@@ -768,7 +810,7 @@
"showMyAddressText": "Паказаць мой адрас",
"startHostingPaidText": "Арганізаваць зараз за ${COST}",
"startHostingText": "Арганізаваць",
- "startStopHostingMinutesText": "Вы можаце пачаць і спыніць хостынг бясплатна на працягу наступных ${MINUTES} мінут.",
+ "startStopHostingMinutesText": "Вы можаце запускаць і спыняць хостынг задарма цягам наступных ${MINUTES} хвілін.",
"stopHostingText": "Спыніць хостынг",
"titleText": "Сабраць",
"wifiDirectDescriptionBottomText": "Калі ўсе прылады падтрымліваюць 'Wi-Fi Direct', яны могуць карыстацца ім, каб падключыцца\nадзін да другога. Калі ўсе прылады падключаны, вы можаце ствараць лоббі, карыстаючыся\nўкладкай \"Лакальная сетка\" так жа, як і з звычайнай WiFi сеткай.\n\nДля лепшых вынікаў хост Wi-Fi Direct павінен таксама быць хостам гульні ${APP_NAME}.",
@@ -793,7 +835,7 @@
"ticketPack4Text": "Вельмі Вялікі Пакет Квіткоў",
"ticketPack5Text": "Гіганцкі Пакет Квіткоў",
"ticketPack6Text": "Максімальны Пакет Квіткоў",
- "ticketsFromASponsorText": "Атрымаць ${COUNT} квіткоў\nад спонсара",
+ "ticketsFromASponsorText": "Пагледзце Рэкламу і \nатрымайце ${COUNT} Квіткоў",
"ticketsText": "${COUNT} Квіткоў",
"titleText": "Атрымаць Квіткі",
"unavailableLinkAccountText": "Прабачце, пакупкі недаступныя на гэтай платформе.\nВы можаце злучыць гэты акаўнт з іншым акаўнтам на\nіншайплатформе і рабіць пакупкі на ім.",
@@ -803,16 +845,26 @@
"youHaveShortText": "вы маеце ${COUNT}",
"youHaveText": "вы маеце ${COUNT} квіткоў"
},
+ "goldPass": {
+ "desc1InfTokensText": "Бясконцыя жэтоны.",
+ "desc2NoAdsText": "Без рэкламы.",
+ "desc3ForeverText": "Назаўсёды.",
+ "goldPassText": "Залатой пропуск"
+ },
"googleMultiplayerDiscontinuedText": "Прабачце, мультігульны сервіс Гугл не даступны у гэты час.\nЯ клапачуся над гэтым з усёй скорасцю.\n\nДа таго часу, калі ласка паспрабуйце другое падключэнне",
+ "googlePlayPurchasesNotAvailableText": "Пакупкі ў Google Play недаступныя.\nМагчыма, вам патрэбна абнавіць прыкладанне крамы.",
+ "googlePlayServicesNotAvailableText": "Сэрвісы Google Play недаступныя.\nНекаторыя функцыі прыкладання могуць быць адключаныя.",
"googlePlayText": "Google Play",
"graphicsSettingsWindow": {
"alwaysText": "Заўсёды",
"fullScreenCmdText": "Поўнаэкранны (Сmd-F)",
"fullScreenCtrlText": "Поўнаэкранны (Ctrl-F)",
+ "fullScreenText": "На ўвесь экран",
"gammaText": "Гама",
"highText": "Высокае",
"higherText": "Найвышэйшае",
"lowText": "Нізкае",
+ "maxFPSText": "Самы высокі FPS",
"mediumText": "Сярэдняе",
"neverText": "Ніколі",
"resolutionText": "Дазвол",
@@ -873,6 +925,7 @@
"importText": "імпарт",
"importingText": "Імпартырую...",
"inGameClippedNameText": "У гульне будзе\n\"${NAME}\"",
+ "inboxText": "Уваходныя",
"installDiskSpaceErrorText": "ПАМЫЛКА: Немагчыма закончыць усталёўку.\nХутчэй за ўсё, у вас на прыладзе закончылася \nмесца. Вызваліце нямнога і паспрабуйце яшчэ раз.",
"internal": {
"arrowsToExitListText": "націсніце ${LEFT} ці ${RIGHT}, каб закрыць спіс",
@@ -927,12 +980,14 @@
"timeOutText": "(засталося ${TIME} секунд(ы))",
"touchScreenJoinWarningText": "Вы зайшлі з сэнсарным экранам.\nКалі гэта была памылка, націсніце 'Меню -> Пакінуць Гульню'.",
"touchScreenText": "Сэнсарны Экран",
+ "unableToCompleteTryAgainText": "Немагчыма гэта выпаўніць цяпер.\nПаспрабуйце яшчэ.",
"unableToResolveHostText": "Памылка: немагчыма знайсцi хост.",
"unavailableNoConnectionText": "Зараз гэта недаступна (няма інтэрнэт-злучэння?)",
"vrOrientationResetCardboardText": "Скарыстайцеся гэтым, каб скінуць VR арыентацыю.\nКаб гуляць, вам спатрэбіцца знешні кантролер.",
"vrOrientationResetText": "Скідванне арыентацыі VR.",
"willTimeOutText": "(час скончыцца пры прастоі)"
},
+ "inventoryText": "Інвентар",
"jumpBoldText": "ПРЫГАЙЦЕ!",
"jumpText": "Прыгайце",
"keepText": "Захаваць",
@@ -976,11 +1031,14 @@
"seasonEndedDaysAgoText": "Сезон скончыўся ${NUMBER} дзён таму.",
"seasonEndsDaysText": "Сезон скончыцца праз ${NUMBER} дзён.",
"seasonEndsHoursText": "Сезон скончыцца праз ${NUMBER} гадзін.",
- "seasonEndsMinutesText": "Сезон скончыцца праз ${NUMBER} мінут.",
+ "seasonEndsMinutesText": "Сезон скончыцца праз ${NUMBER} хвілін.",
"seasonText": "Сезон ${NUMBER}",
"tournamentLeagueText": "Вы павінны дасягнуць ${NAME} лігі, каб увайсці ў гэты турнір.",
- "trophyCountsResetText": "Трафейныя ачкі знікнуць у наступным сезоне."
+ "trophyCountsResetText": "Трафейныя ачкі знікнуць у наступным сезоне.",
+ "upToDateBonusDescriptionText": "Гульцы з актуальнай версіяй гульні\n атрымліваюць ${PERCENT}% бонус тут.",
+ "upToDateBonusText": "Актуальны Бонус"
},
+ "learnMoreText": "Прачытайце больше",
"levelBestScoresText": "Лепшыя вынікі на ўзроўні ${LEVEL}",
"levelBestTimesText": "Лепшы час на ўзроўні ${LEVEL}",
"levelFastestTimesText": "Самы хуткі на уроўні ${LEVEL}",
@@ -1002,6 +1060,7 @@
"creditsText": "Падзякі",
"demoMenuText": "Дэма-Меню",
"endGameText": "Скончыць Гульню",
+ "endTestText": "Тэст пакончаны",
"exitGameText": "Зачыніць Гульню",
"exitToMenuText": "Выйсці ў меню?",
"howToPlayText": "Як Гуляць",
@@ -1021,9 +1080,12 @@
"maxConnectionsText": "Максімальная колькасць падключэнняў.",
"maxPartySizeText": "Максімальны памер групы.",
"maxPlayersText": "Максімальная колькасць гульцоў.",
+ "merchText": "Мэрч! (Кастам!)",
"modeArcadeText": "Аркадны рэжым.",
"modeClassicText": "Класічны рэжым.",
"modeDemoText": "Дэмо рэжым",
+ "moreSoonText": "Скора будзе больш...",
+ "mostDestroyedPlayerText": "Самы Пабіты Гулец",
"mostValuablePlayerText": "Самы Карысны Гулец",
"mostViolatedPlayerText": "Самы Збіты Гулец",
"mostViolentPlayerText": "Самы Жорсткі Гулец",
@@ -1040,6 +1102,7 @@
"nameSuicideText": "${NAME} скончыў жыццё самагубствам.",
"nameText": "Імя",
"nativeText": "Родны",
+ "newExclaimText": "Новае!",
"newPersonalBestText": "Новы асабісты рэкорд!",
"newTestBuildAvailableText": "Новая тэставая зборка даступна! (${VERSION} build ${BUILD}).\nАтрымайце яе на ${ADDRESS}",
"newText": "Новы",
@@ -1050,24 +1113,32 @@
"noContinuesText": "(без працягу)",
"noExternalStorageErrorText": "Знешняя памяць не знойдзена",
"noGameCircleText": "Памылка: вы не ўвайшлі ў GameCircle",
+ "noMessagesText": "Няма паведамленняў.",
+ "noPluginsInstalledText": "Убудовы не ўстаноўлены",
"noProfilesErrorText": "У вас няма ніводнага профіля, таму вас будуць называць '${NAME}'.\nЗайдзіце ў \"Налады -> Профілі\", каб стварыць уласны профіль.",
"noScoresYetText": "Вынікаў пакуль няма.",
+ "noServersFoundText": "Серверы не знойдзены.",
"noThanksText": "Не, дзякуй",
"noTournamentsInTestBuildText": "УВАГА: Ацэнкі турніраў з гэтай тэставай зборкі будуць ігнаравацца.",
"noValidMapsErrorText": "Не знойдзена мап для гэтага тыпу гульні.",
"notEnoughPlayersRemainingText": "Засталося вельмі мала гульцоў; пачніце новую гульню.",
"notEnoughPlayersText": "Вам патрэбна не менш за ${COUNT} гульцоў, каб пачаць!",
+ "notEnoughTicketsText": "Не дастаткова квіткоў!",
"notNowText": "Не Зараз",
"notSignedInErrorText": "Вы павінны ўвайсці, каб выканаць гэта.",
"notSignedInGooglePlayErrorText": "Вы павінны ўвайсці з Google Play, каб выканаць гэта.",
"notSignedInText": "не ўвайшлі",
+ "notUsingAccountText": "Заўвага: Ігнараванне улiковага запiсу ${SERVICE}.\nПерайдзіце ў «Уліковы запіс -> Увайсці з дапамогай ${SERVICE}», калі вы жадаеце яго выкарыстоўваць.",
"nothingIsSelectedErrorText": "Нічога не выбрана!",
"numberText": "№${NUMBER}",
"offText": "Выключана",
"okText": "Так",
"onText": "Уключана",
- "oneMomentText": "Адну мінуту...",
+ "oneMomentText": "Адзін момант...",
"onslaughtRespawnText": "${PLAYER} з'явіцца ў ${WAVE} хвалі",
+ "openMeText": "Адчыні Мяне!",
+ "openNowText": "Адчыніць Зараз",
+ "openText": "Адчыніць",
"orText": "${A} ці ${B}",
"otherText": "Іншае...",
"outOfText": "(#${RANK} з ${ALL})",
@@ -1117,7 +1188,14 @@
"playlistsText": "Плэйлісты",
"pleaseRateText": "Калі вам падабаецца ${APP_NAME}, калі ласка, знайдзіце\nчас, каб ацаніць яго ці напісаць водгук. Гэта забя-\nспечвае сувязь і дапамагае развіццю гульні.\n\nДзякуй!\n-Эрык",
"pleaseWaitText": "Калі ласка пачакай...",
- "pluginsDetectedText": "Выяўлены новыя ўбудовы. Уключыце / наладзьце іх у наладах.",
+ "pluginClassLoadErrorText": "Памылка пры загрузцы класа падключанага модулю \"${PLUGIN}\": ${ERROR}",
+ "pluginInitErrorText": "Памылка пры ініцыялізацыі плагіна \"${PLUGIN}\": ${ERROR}",
+ "pluginSettingsText": "Устаноўкі Плагінаў",
+ "pluginsAutoEnableNewText": "Аўтаматычнае ўключэнне новых плагінаў",
+ "pluginsDetectedText": "Выяўлены новыя плагiны. Перазапусціце, каб выкарыстоўваць іх, або наладзьце іх у наладах",
+ "pluginsDisableAllText": "Адключыць усе плагіны",
+ "pluginsEnableAllText": "Выбраць усе плагіны",
+ "pluginsRemovedText": "${NUM} Плагін(аў) Няма.",
"pluginsText": "Убудовы",
"practiceText": "Практыка",
"pressAnyButtonPlayAgainText": "Націсніце любую кнопку, каб перазапусціць...",
@@ -1147,6 +1225,8 @@
"punchText": "Ударыць",
"purchaseForText": "Набыць за ${PRICE}",
"purchaseGameText": "Набыць Гульню",
+ "purchaseNeverAvailableText": "На жаль, пакупкі недаступныя для гэтай зборкі.\nПаспрабуйце ўвайсці ў свой уліковы запіс на іншай платформе і рабіць пакупкі адтуль.",
+ "purchaseNotAvailableText": "Гэта купля не даступная.",
"purchasingText": "Набыццё...",
"quitGameText": "Зачыніць ${APP_NAME}?",
"quittingIn5SecondsText": "Выхад праз 5 секунд...",
@@ -1188,6 +1268,7 @@
"version_mismatch": "Старая версія.\nПераканайцеся, што вы маеце апошнія версіі\nBombSquad і BombSquad Remote."
},
"removeInGameAdsText": "Купіце \"${PRO}\" у магазіне, каб выдаліць рэкламу.",
+ "removeInGameAdsTokenPurchaseText": "ЧАСОВАЯ ПРАПАНОВА: Купіце ЛЮБЫ пакет токенаў, каб выдаліць рэкламу ў гульні.",
"renameText": "Перайменаваць",
"replayEndText": "Закончыць Запіс",
"replayNameDefaultText": "Запіс Апошняй Гульні",
@@ -1208,7 +1289,9 @@
"revertText": "Аднавіць",
"runText": "Бяжаць",
"saveText": "Захаваць",
- "scanScriptsErrorText": "Памылкі пры сканаванні сцэнарыяў; падрабязнасці глядзіце ў логах.",
+ "scanScriptsErrorText": "Памылкі пры сканаванні плагiнаў. Падрабязнасці глядзіце ў логах.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} і ${NUM} іншых модуляў патрэбна абнавіць для API ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} патрэбна абнавіць для API ${API}.",
"scoreChallengesText": "Іншыя Вынікі",
"scoreListUnavailableText": "Вынікі недаступны.",
"scoreText": "Ачкі",
@@ -1219,6 +1302,7 @@
},
"scoreWasText": "(быў ${COUNT})",
"selectText": "Выбраць",
+ "sendInfoDescriptionText": "Адпраўляе інфармацыю пра стан акаўнта і дадатку распрацоўшчыку.\nКалі ласка, пакіньце сваё імя ці прычыну адпраўкі.",
"seriesWinLine1PlayerText": "ПЕРАМАГАЕ Ў",
"seriesWinLine1TeamText": "ПЕРАМАГАЮЦЬ У",
"seriesWinLine1Text": "ПЕРАМАГАЕ Ў",
@@ -1237,6 +1321,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(простая, зручная для кантролера клавіятура для рэдагавання тэксту)",
"alwaysUseInternalKeyboardText": "Заўсёды карыстацца ўбудаванай клавіятурай",
"benchmarksText": "Тэст Прадукцыйнасці і Тэст-Нагрузка",
+ "devToolsText": "Інструменты распрацоўшчыка",
"disableCameraGyroscopeMotionText": "Адключыць рух гіраскопа камеры",
"disableCameraShakeText": "Адключыць устрэсванне камеры",
"disableThisNotice": "(вы можаце адключыць гэта апавяшчэнне ў дадатковых наладах)",
@@ -1245,14 +1330,22 @@
"enterPromoCodeText": "Увесці код",
"forTestingText": "Гэтыя значэнні выкарыстоўваюцца толькі для тэстаў і будуць згублены пры закрыцці гульні.",
"helpTranslateText": "Пераклад ${APP_NAME} з англійскай мовы - намаганне супольнасці\nпадтрымкі. Калі вы жадаеце выправіць пераклад,\nпрайдзіце па спасылцы ніжэй. Дзякуй!",
+ "insecureConnectionsDescriptionText": "не рэкамендуецца, але можа дазволіць онлайн гульню\nз абмежаваных краін або сетак",
+ "insecureConnectionsText": "Выкарыстоўвайце небяспечныя злучэнні",
"kickIdlePlayersText": "Выкідваць гульцоў, якія не дзейнічаюць",
"kidFriendlyModeText": "Дзіцячы Рэжым (менш гвалту і г.д.)",
"languageText": "Мова",
"moddingGuideText": "Кіраўніцтва па Модынгу",
+ "moddingToolsText": "Прылады Для Модынгу",
"mustRestartText": "Вы павінны перазагрузіць гульню, каб прымяніць новыя налады.",
"netTestingText": "Тэсціраванне Сеткі",
"resetText": "Скінуць",
+ "sendInfoText": "Даслаць інфармацыю",
"showBombTrajectoriesText": "Паказваць Траекторыi Бомб",
+ "showDemosWhenIdleText": "Паказваць дэма ў рэжыме чакання",
+ "showDeprecatedLoginTypesText": "Паказаць састарэлыя тыпы ўваходу",
+ "showDevConsoleButtonText": "Паказаць кнопку кансолі распрацоўшчыка",
+ "showInGamePingText": "Паказваць пінг гульні",
"showPlayerNamesText": "Паказваць Імёны Гульцоў",
"showUserModsText": "Паказаць Тэчку З Модамі",
"titleText": "Дадаткова",
@@ -1260,7 +1353,7 @@
"translationFetchErrorText": "статус перакладу недаступны",
"translationFetchingStatusText": "праверка статуса перакладу...",
"translationInformMe": "Паведаміце мне, калі мая мова мае патрэбу ў абнаўленнях",
- "translationNoUpdateNeededText": "гэтая мова абноўлена; ура!",
+ "translationNoUpdateNeededText": "Бягучая мова актуальная; Ура!",
"translationUpdateNeededText": "** гэтая мова патрабуе абнаўлення!! **",
"vrTestingText": "VR Тэстіраванне"
},
@@ -1271,6 +1364,9 @@
"signInWithGameCenterText": "Каб карыстацца акаўнтам Game Centerб\nувайдзіце з дапамогаю прыкладання Game Center.",
"singleGamePlaylistNameText": "Толькі ${GAME}",
"singlePlayerCountText": "1 гулец",
+ "sizeLargeText": "Вялікі",
+ "sizeMediumText": "Сярэдні",
+ "sizeSmallText": "Маленькі",
"soloNameFilterText": "Сола ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Выбар Героя",
@@ -1296,6 +1392,7 @@
},
"spaceKeyText": "прабел",
"statsText": "Статыстыка",
+ "stopRemindingMeText": "Перастаньце нагадваць мне",
"storagePermissionAccessText": "Для гэтага неабходны доступ да сховішча",
"store": {
"alreadyOwnText": "У вас ужо ёсць ${NAME}!",
@@ -1346,6 +1443,8 @@
"storeText": "Крама",
"submitText": "Адправіць",
"submittingPromoCodeText": "Адпраўка кода...",
+ "successText": "Паспяхова!",
+ "supportEmailText": "Калі ў вас узніклі праблемы з\nпрыкладаннем, калі ласка, напішыце ${EMAIL}.",
"teamNamesColorText": "Назвы / колеры каманд ...",
"telnetAccessGrantedText": "Доступ Telnet уключаны.",
"telnetAccessText": "Знойдзены доступ Telnet, дазволіць?",
@@ -1355,24 +1454,40 @@
"testBuildValidatedText": "Тэставая Зборка Праверана; Поспехаў!",
"thankYouText": "Дзякуй за вашу падтрымку! Прыемнай гульні!!",
"threeKillText": "ТРЫ ЗАБОЙСТВЫ!!",
+ "ticketsDescriptionText": "Білеты выкарыстоўвацца каб адкрыць персанажаў, карты, міні-гульні, і больш у краме.\n\nБілеты можна знайсці у куфарах атрыманных праз кампанію, турніры, і дасягненні.",
"timeBonusText": "Бонус Часу",
"timeElapsedText": "Прайшло Часу",
"timeExpiredText": "Час Скончыўся",
"timeSuffixDaysText": "${COUNT} дзён",
"timeSuffixHoursText": "${COUNT} гадзін",
- "timeSuffixMinutesText": "${COUNT} мінут",
+ "timeSuffixMinutesText": "${COUNT} хвілін",
"timeSuffixSecondsText": "${COUNT} секунд",
"tipText": "Парада",
"titleText": "BombSquad",
"titleVRText": "${ARG1}",
+ "tokens": {
+ "getTokensText": "Атрымайце жэтоны",
+ "notEnoughTokensText": "Не дастаткова квіткоў!",
+ "numTokensText": "${COUNT} Жэтоны",
+ "openNowDescriptionText": "У вас дастаткова жэтонаў\nадкрыць гэта зараз - вы не робіце\nтрэба пачакаць.",
+ "shinyNewCurrencyText": "Бліскучая новая валюта BombSquad's.",
+ "tokenPack1Text": "Малы набор жэтонаў",
+ "tokenPack2Text": "Сярэдні пакет жэтонаў",
+ "tokenPack3Text": "Вялікі набор жэтонаў",
+ "tokenPack4Text": "Велізарны набор жэтонаў",
+ "tokensDescriptionText": "Токены выкарыстоўвацца\nкаб паскорыць адчыненне куфараў\nі для іншых асаблівасцей.\n\nВы можаце выйграць токены ў гульні\n або купіць іх у наборах. Або купіць залаты пропуск для бясконцых токенаў і больш не слыхаць аб іх.",
+ "youHaveGoldPassText": "У вас ёсць залаты пропуск.\nУсе пакупкі жэтонаў бясплатныя.\nАтрымлівайце асалоду!"
+ },
"topFriendsText": "Топ Сяброў",
"tournamentCheckingStateText": "Праверка статусу турніра; калі ласка, пачакайце...",
"tournamentEndedText": "Гэты турнір скончыўся. Хутка пачнецца новы.",
"tournamentEntryText": "Уваход у Турнір",
+ "tournamentFinalStandingsText": "Канчатковыя Месцы",
"tournamentResultsRecentText": "Вынікі Нядаўніх Турніраў",
"tournamentStandingsText": "Месцы ў Турніры",
"tournamentText": "Турнір",
"tournamentTimeExpiredText": "Час Турніра Скончыўся",
+ "tournamentsDisabledWorkspaceText": "Турніры адключаныя, калі працоўныя вобласці актыўныя.\nКаб зноў уключыць турніры, адключыце працоўную вобласць і перазапусціце гульню.",
"tournamentsText": "Турніры",
"translations": {
"characterNames": {
@@ -1410,12 +1525,12 @@
"${GAME} Training": "Падрыхтоўка да гульні ${GAME}",
"Infinite ${GAME}": "Бясконцая ${GAME}",
"Infinite Onslaught": "Бясконцая Атака",
- "Infinite Runaround": "Бясконцы Манеўр",
+ "Infinite Runaround": "Бясконцая бегатня",
"Onslaught Training": "Атака: Трэніроўка",
"Pro ${GAME}": "${GAME} Профі",
"Pro Football": "Футбол Профі",
"Pro Onslaught": "Атака Профі",
- "Pro Runaround": "Манёўр Профі",
+ "Pro Runaround": "Бегатня Профі",
"Rookie ${GAME}": "${GAME} Лёгкі",
"Rookie Football": "Футбол Лёгкі",
"Rookie Onslaught": "Атака Лёгкая",
@@ -1423,7 +1538,19 @@
"Uber ${GAME}": "Убер ${GAME}",
"Uber Football": "Убер Футбол",
"Uber Onslaught": "Убер Атака",
- "Uber Runaround": "Убер Манёўр"
+ "Uber Runaround": "Убер Бегатня"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} Білетаў0",
+ "${C} Tokens": "${C} Токенаў",
+ "Chest": "Куфар",
+ "L1 Chest": "Куфар У1",
+ "L2 Chest": "Куфар У2",
+ "L3 Chest": "Куфар У3",
+ "L4 Chest": "Куфар У4",
+ "L5 Chest": "Куфар У5",
+ "L6 Chest": "Куфар У6",
+ "Unknown Chest": "Невядомы Куфар"
},
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Каб перамагчы, стань абраным на некаторы час.\nКаб стаць абраным, забей мінулага абранага.",
@@ -1527,7 +1654,9 @@
"Italian": "Італьянская",
"Japanese": "Японская",
"Korean": "Карэйская",
+ "Malay": "Малаі",
"Persian": "Фарсі",
+ "PirateSpeak": "Пірацкая мова",
"Polish": "Польская",
"Portuguese": "Партугальская",
"Romanian": "Румынская",
@@ -1599,6 +1728,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Заўважана махлярства; ачкі і прызы забаронены на ${COUNT} дзён.",
"Could not establish a secure connection.": "Немагчыма стварыць бяспечнае злучэнне.",
"Daily maximum reached.": "Штодзённы максімум дасягнуты.",
+ "Daily sign-in reward": "Штодзённая ўзнагарода за ўваход",
"Entering tournament...": "Уваход у турнір...",
"Invalid code.": "Няправільны код.",
"Invalid payment; purchase canceled.": "Несапраўдная аплата; купля адменена.",
@@ -1608,11 +1738,14 @@
"Item unlocked!": "Элемент разблакаваны!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "ЗВЯЗАННЕ АДМЕНАВАНА. ${ACCOUNT} змяшчае\nважныя дадзеныя, якія ЎСЕ БУДУЦЬ СТРАЧЭНЫ.\nВы можаце зрабіць спасылку ў адваротным парадку, калі хочаце\n(і замест гэтага страціць дадзеныя ГЭТАГА ўліковага запісу)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Прывязаць уліковы запіс ${ACCOUNT} к гэтаму улiковаму запiсу?\nУсе існуючыя дадзеныя на ${ACCOUNT} будуць страчаны.\nГэта не можа быць адменена. Вы ўпэўнены?",
+ "Longer streaks lead to better rewards.": "Больш працяглыя серыі прыводзяць да лепшых узнагарод.",
"Max number of playlists reached.": "Максімальная колькасць плэйлістаў дасягнута.",
"Max number of profiles reached.": "Максімальная колькасць профіляў дасягнута.",
"Maximum friend code rewards reached.": "Дасягнута максімальная ўзнагарода за код сябра.",
"Message is too long.": "Паведамленне занадта доўгае.",
+ "New tournament result!": "Новы вынік турніру!",
"No servers are available. Please try again soon.": "Няма даступных сервераў. Калі ласка, паспрабуйце яшчэ раз пазней.",
+ "No slots available. Free a slot and try again.": "Няма ячэек. Вызваліце слот і паспрабуйце яшчэ.",
"Profile \"${NAME}\" upgraded successfully.": "Профіль \"${NAME}\" палепшаны паспяхова.",
"Profile could not be upgraded.": "Профіль нельга палепшыць.",
"Purchase successful!": "Аб'ект набыты паспяхова!",
@@ -1622,7 +1755,9 @@
"Sorry, this code has already been used.": "Прабачце, гэты код ужо выкарыстоўваўся.",
"Sorry, this code has expired.": "На жаль, срок дзеяння гэтага кода ўжо скончыўся.",
"Sorry, this code only works for new accounts.": "Прабачце, гэты код працуе толькі на новых акаўнтах.",
+ "Sorry, this has expired.": "Прабачце, гэта сапсавалася.",
"Still searching for nearby servers; please try again soon.": "Працягваецца пошук бліжэйшых сервераў; калі ласка, паспрабуйце яшчэ раз пазней.",
+ "Streak: ${NUM} days": "Серыя: ${NUM} дзён",
"Temporarily unavailable; please try again later.": "Часова недаступны; калі ласка паспрабуйце зноў пазней.",
"The tournament ended before you finished.": "Турнір скончыўся перад тым, як вы закончылі.",
"This account cannot be unlinked for ${NUM} days.": "Немагчыма адлучыць гэты ўліковы запіс на працягу ${NUM} дзён.",
@@ -1633,31 +1768,40 @@
"Tournaments require ${VERSION} or newer": "Для турніраў патрабуецца ${VERSION} або больш позняя версія",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Адключыць ${ACCOUNT} ад гэтага ўліковага запісу?\nУсе дадзеныя на ${ACCOUNT} будуць скіданы.\n(за выключэннем дасягненняў у некаторых выпадках)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "УВАГА: на ваш уліковы запіс паступілі скаргі на ўзлом.\nБудуць забаронены ўліковыя запісы, якія будуць прызнаныя хакерскімі. Калі ласка, гуляйце сумленна.",
+ "Wait reduced!": "Час паменшаны!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Папярэджанне: Гэтая версія гульні абмежаваная старымі дадзенымі ўліковага запісу; некаторыя рэчы могуць адсутнічаць або быць састарэлымі.\nКалі ласка, абнавіце гульню да новай версіі, каб убачыць апошнія дадзеныя вашага ўліковага запісу.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Ці жадаеце вы аб'яднаць ваш акаўнт на прыладзе з гэтым?\n\nВаш акаўнт на прыладзе - ${ACCOUNT1}\nГэты акаўнт - ${ACCOUNT2}\n\nГэта дазволіць вам сінхранізіраваць прагрэс.\nАсцярожна - гэта нельга адмяніць!",
"You already own this!": "Вы ўжо маеце гэта!",
"You can join in ${COUNT} seconds.": "Вы можаце далучыцца праз ${COUNT} секунд.",
"You don't have enough tickets for this!": "У вас не хапае квіткоў!",
"You don't own that.": "Вы не валодаеце гэтым.",
"You got ${COUNT} tickets!": "Вы атрымалі ${COUNT} квіткоў!",
+ "You got ${COUNT} tokens!": "Вы атрымалі ${COUNT} токенаў!",
"You got a ${ITEM}!": "Вы атрымалі ${ITEM}!",
+ "You got a chest!": "Вы атрымалі куфар!",
+ "You got an achievement reward!": "Вы атрымалі узнагароду дасягнення!",
"You have been promoted to a new league; congratulations!": "Вас павысілі і перавялі ў іншую лігу; віншуем!",
+ "You lost a chest! (All your chest slots were full)": "Вы страцілі куфар! (Усе ячэйкі куфараў былі поўныя)",
+ "You must update the app to view this.": "Вы павінны абнавіць праграму, каб праглядзець гэта.",
"You must update to a newer version of the app to do this.": "Вы павінны абнавіць гульню, каб зрабіць гэта.",
"You must update to the newest version of the game to do this.": "Для гэтага неабходна абнавіць да новай версіі гульні.",
"You must wait a few seconds before entering a new code.": "Пачакайце некалькі секунд, перад тым, як уводзіць новы код.",
+ "You placed #${RANK} in a tournament!": "Вы атрымалі #${RANK} месца ў турніры!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Ваш узровень у апошнім турніры: #${RANK}. Дзякуй за гульню!",
"Your account was rejected. Are you signed in?": "Ваш уліковы запіс быў адхілены. Вы ўвайшлі ў сістэму?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Прагляды вашай рэкламы не рэгіструюцца. Некаторы час параметры рэкламы будуць абмежаваныя.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Ваша версія гульні была мадыфікавана.\nКалі ласка, адмяніце ўсе змены і паспрабуйце яшчэ раз.",
"Your friend code was used by ${ACCOUNT}": "${ACCOUNT} выкарыстаў ваш сяброўскі код"
},
"settingNames": {
- "1 Minute": "1 Мінута",
+ "1 Minute": "1 Хвіліна",
"1 Second": "1 Секунда",
- "10 Minutes": "10 Мінут",
- "2 Minutes": "2 мінуты",
+ "10 Minutes": "10 Хвілін",
+ "2 Minutes": "2 Хвіліны",
"2 Seconds": "2 Секунды",
- "20 Minutes": "20 Мінут",
+ "20 Minutes": "20 Хвілін",
"4 Seconds": "4 Секунды",
- "5 Minutes": "5 Мінут",
+ "5 Minutes": "5 Хвілін",
"8 Seconds": "8 секунд",
"Allow Negative Scores": "Дазволiць Адмоўныя Вынікі",
"Balance Total Lives": "Размяркоўваць Здароўе, Якое Засталося",
@@ -1795,11 +1939,14 @@
"toSkipPressAnythingText": "(націсніце, каб прапусціць туторыял)"
},
"twoKillText": "ДВА ЗАБОЙСТВЫ!",
+ "uiScaleText": "Маштаб КІ",
"unavailableText": "недаступна",
+ "unclaimedPrizesText": "У вас незапатрабаваныя прызы!",
"unconfiguredControllerDetectedText": "Невядомы кантролер знойдзены:",
"unlockThisInTheStoreText": "Гэта павінна быць адкрыта ў магазіне.",
"unlockThisProfilesText": "Каб стварыць больш за ${NUM} профіляў, вам трэба:",
"unlockThisText": "Каб адкрыць гэта, вам патрэбна:",
+ "unsupportedControllerText": "На жаль, кантролер \"${NAME}\" не падтрымліваецца.",
"unsupportedHardwareText": "Прабачце, ваша прылада не падтрымлівае гэтую версію гульні.",
"upFirstText": "Спачатку:",
"upNextText": "Далей у гульні ${COUNT}:",
@@ -1807,10 +1954,15 @@
"upgradeText": "Палепшыць",
"upgradeToPlayText": "Адкрыйце \"${PRO}\" у магазіне, каб гуляць у гэта.",
"useDefaultText": "Вярнуць Стандартныя",
+ "userSystemScriptsCreateText": "Стварыць Карыстацкі Сыстэмны Сцэнар",
+ "userSystemScriptsDeleteText": "Выдаліць Карыстацкі Сыстэмны Сцэнар",
"usesExternalControllerText": "Гэта гульня можа выкарыстоўваць знешні кантролер для кіравання.",
"usingItunesText": "Выкарыстанне музычнага прыкладання для саўндтрэка ...",
"usingItunesTurnRepeatAndShuffleOnText": "Калі ласка, праверце, што ператасаванне і паўтор усяго ў iTunes ўключаны. ",
+ "v2AccountLinkingInfoText": "Да прывязкі акаўнту V2, Нажміце 'Кіраваць акаўнтамі'.",
+ "v2AccountRequiredText": "Для гэтага патрабуецца ўліковы запіс V2. Абнавіце свой уліковы запіс і паўтарыце спробу.",
"validatingTestBuildText": "Праверка Тэставай Зборкі...",
+ "viaText": "праз",
"victoryText": "Перамога!",
"voteDelayText": "Вы не можаце пачаць яшчэ адно галасаванне на працягу ${NUMBER} секунд",
"voteInProgressText": "Галасаванне ўжо ідзе.",
@@ -1842,6 +1994,7 @@
},
"waveText": "Хваля",
"wellSureText": "Выдатна!",
+ "whatIsThisText": "Гэта што?",
"wiimoteLicenseWindow": {
"titleText": "DarwiinRemote Copyright"
},
@@ -1860,6 +2013,8 @@
"winsPlayerText": "${NAME} Перамагае!",
"winsTeamText": "${NAME} Перамагаюць!",
"winsText": "${NAME} Перамагае!",
+ "workspaceSyncErrorText": "Памылка сінхранізацыі ${WORKSPACE}. Падрабязнасці глядзіце ў часопісе памылак.",
+ "workspaceSyncReuseText": "Немагчыма сінхранізаваць ${WORKSPACE}. Паўторнае выкарыстанне папярэдняй сінхранізаванай версіі.",
"worldScoresUnavailableText": "Сусветныя вынікі недаступны.",
"worldsBestScoresText": "Лепшыя Сусветныя Вынікі",
"worldsBestTimesText": "Лепшы Сусветны Час",
@@ -1872,5 +2027,6 @@
},
"yesAllowText": "Так, Дазволіць!",
"yourBestScoresText": "Вашыя Лепшыя Вынікі",
- "yourBestTimesText": "Ваш Лепшы Час"
+ "yourBestTimesText": "Ваш Лепшы Час",
+ "yourPrizeText": "Ваш прыз:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/chinese.json b/dist/ba_data/data/languages/chinese.json
index fba406bf..0090eccf 100644
--- a/dist/ba_data/data/languages/chinese.json
+++ b/dist/ba_data/data/languages/chinese.json
@@ -24,16 +24,17 @@
"resetProgressText": "重置游戏进程",
"setAccountName": "设置账户名称",
"setAccountNameDesc": "选择要为您的帐户显示的名称。\n您可以从链接的帐户选择\n或创建唯一的自定义名称。",
- "signInInfoText": "登陆以获取点券, 在线竞赛,\n并在不同设备上同步游戏进程。",
+ "signInInfoText": "登录以获取点券, 在线竞赛,\n并在不同设备上同步游戏进程。",
"signInText": "登陆",
"signInWithDeviceInfoText": "(仅适用于此设备的一个自动账户)",
- "signInWithDeviceText": "用设备账户来登陆",
+ "signInWithDeviceText": "用设备账户来登录",
"signInWithGameCircleText": "使用 Game Circle 登入",
- "signInWithGooglePlayText": "用 Google Play 来登陆",
+ "signInWithGooglePlayText": "用 Google Play 来登录",
"signInWithTestAccountInfoText": "使用设备上的其他网络帐号登录;不建议选择该项",
"signInWithTestAccountText": "用测试账户来登陆",
+ "signInWithText": "使用 ${SERVICE} 登录",
"signInWithV2InfoText": "(账户在所有平台都通用)",
- "signInWithV2Text": "使用炸弹小分队账号登录",
+ "signInWithV2Text": "使用炸队V2账号登录",
"signOutText": "登出",
"signingInText": "登录中...",
"signingOutText": "登出中...",
@@ -42,8 +43,8 @@
"ticketsText": "点券:${COUNT}",
"titleText": "账号",
"unlinkAccountsInstructionsText": "选择要取消关联的帐户",
- "unlinkAccountsText": "取消连结帐户",
- "unlinkLegacyV1AccountsText": "取消连接旧版(V1)账户",
+ "unlinkAccountsText": "取关帐户",
+ "unlinkLegacyV1AccountsText": "取消关联旧版(V1)账户",
"v2LinkInstructionsText": "扫码或使用链接来登录或注册新账户",
"viaAccount": "(不可用名称 ${NAME})",
"youAreLoggedInAsText": "您已登录为",
@@ -64,7 +65,7 @@
"descriptionComplete": "没有使用任何炸弹就获胜了",
"descriptionFull": "在${LEVEL}中不用炸弹获胜",
"descriptionFullComplete": "在${LEVEL}中没用炸弹就获胜了",
- "name": "拳王"
+ "name": "拳皇"
},
"Dual Wielding": {
"descriptionFull": "连接两个控制手柄(硬件或应用)",
@@ -95,7 +96,7 @@
"descriptionComplete": "没有用炸弹或拳头攻击就获胜了",
"descriptionFull": "在${LEVEL}中不用炸弹或拳头攻击就获胜",
"descriptionFullComplete": "在${LEVEL}中没有用炸弹或拳头攻击就获胜了",
- "name": "跑位是关键"
+ "name": "走位是关键"
},
"In Control": {
"descriptionFull": "连接一个控制手柄(硬件或应用)",
@@ -338,6 +339,9 @@
"getMoreGamesText": "获取更多游戏模式…",
"titleText": "添加比赛"
},
+ "addToFavoritesText": "添加到收藏",
+ "addedToFavoritesText": "将'${NAME}'添加到收藏",
+ "allText": "全部",
"allowText": "允许",
"alreadySignedInText": "您的账号已在其他设备登录;\n请切换账号或者退出已登录的设备,\n然后再试一次",
"apiVersionErrorText": "无法加载模组${NAME};它的API版本为 ${VERSION_USED},我们需要 ${VERSION_REQUIRED}.",
@@ -370,6 +374,7 @@
"chatMutedText": "聊天静音",
"chatUnMuteText": "取消屏蔽消息",
"choosingPlayerText": "<选择玩家>",
+ "codesExplainText": "开发者会提供代码来\n诊断和修复账户问题",
"completeThisLevelToProceedText": "你需要先完成这一关",
"completionBonusText": "完成奖励",
"configControllersWindow": {
@@ -450,6 +455,7 @@
"swipeText": "滑动",
"titleText": "触摸屏配置"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} 可以在系统设置中配置捏",
"configureItNowText": "立即配置?",
"configureText": "配置",
"connectMobileDevicesWindow": {
@@ -506,14 +512,14 @@
},
"copyConfirmText": "复制到剪贴板",
"copyOfText": "${NAME} 复制",
- "copyText": "copy",
+ "copyText": "复制",
"createEditPlayerText": "<创建/编辑玩家>",
"createText": "创建",
"creditsWindow": {
"additionalAudioArtIdeasText": "添补音频、初期原图和创意:${NAME}",
"additionalMusicFromText": "添补背景音乐:${NAME}",
"allMyFamilyText": "帮助进行游戏测试的我的所有好友和家人",
- "codingGraphicsAudioText": "编码、图像和音频:${NAME}",
+ "codingGraphicsAudioText": "编程、图形引擎和音频引擎:${NAME}",
"languageTranslationsText": "语言翻译:",
"legalText": "法律:",
"publicDomainMusicViaText": "版权公有音乐:${NAME}",
@@ -552,6 +558,7 @@
"demoText": "演示",
"denyText": "拒绝",
"deprecatedText": "已弃用",
+ "descriptionText": "描述",
"desktopResText": "桌面分辨率",
"deviceAccountUpgradeText": "紧急警告:\n你正在使用本地账户登录! (${NAME})\n此账户会在未来升级中被删除!!\n~如果想保持账号,请升级到v2账户~",
"difficultyEasyText": "简单",
@@ -562,6 +569,9 @@
"disableRemoteAppConnectionsText": "解除手柄应用链接",
"disableXInputDescriptionText": "允许使用4个以上的控制器但可能不会正常工作",
"disableXInputText": "禁用XInput",
+ "disabledText": "禁用",
+ "discordFriendsText": "这是官方Discord群的按钮,但是很可惜中国不许你用Discord\n所以来加鲨鱼QQ群902867245吧(译者注,有问题可改)",
+ "discordJoinText": "我就要加Discord",
"doneText": "完成",
"drawText": "平局",
"duplicateText": "复制",
@@ -579,7 +589,7 @@
"titleText": "列表编辑器"
},
"editProfileWindow": {
- "accountProfileInfoText": "此特殊玩家档案,\n可能含有其中一个图标:\n\n${ICONS}\n\n基于您的登录平台以显示\n相关图标。",
+ "accountProfileInfoText": "此特殊玩家档案,\n可能含有其中一个图标:\n\n${ICONS}\n\n基于您的登录平台以显示\n相关图标。(其中一部分可能已经绝版)",
"accountProfileText": "(账户资料)",
"availableText": "\"${NAME}\"可用。",
"changesNotAffectText": "注意:更改不会影响已经存在的比赛角色",
@@ -596,6 +606,7 @@
"localProfileText": "(本地档案)",
"nameDescriptionText": "角色名称",
"nameText": "名称",
+ "profileAlreadyExistsText": "具有该名称的配置文件已存在",
"randomText": "随机",
"titleEditText": "编辑档案",
"titleNewText": "新建档案",
@@ -631,6 +642,7 @@
"useMusicFolderText": "音乐文件夹"
},
"editText": "修改",
+ "enabledText": "启用",
"endText": "结束",
"enjoyText": "尽情享用吧!",
"epicDescriptionFilterText": "史诗级慢动作 ${DESCRIPTION}。",
@@ -639,20 +651,20 @@
"errorDeviceTimeIncorrectText": "您设备的时间有 ${HOURS} 小时的误差。\n这会导致游戏出现问题。\n请检查您设备的时间和时区设置。",
"errorOutOfDiskSpaceText": "磁盘空间不足",
"errorSecureConnectionFailText": "无法建立安全的云链接,网络可能会连接失败",
- "errorText": "错误",
+ "errorText": "啊呜,好像出错了喵...",
"errorUnknownText": "未知错误",
"exitGameText": "退出${APP_NAME}?",
"exportSuccessText": "退出'${NAME}'",
"externalStorageText": "外部存储器",
"failText": "失败",
- "fatalErrorText": "哎呀,有些档案遗失或损坏了。\n请尝试重新安装游戏,或者\n联系 ${EMAIL} 寻求帮助",
+ "fatalErrorText": "哎呀,有些文件丢失或损坏了喵~\n请尝试重新安装游戏,或者\n联系 ${EMAIL} 寻求帮助",
"fileSelectorWindow": {
"titleFileFolderText": "选择一个文件或文件夹",
"titleFileText": "选择一个文件",
"titleFolderText": "选择一个文件夹",
"useThisFolderButtonText": "使用此文件夹"
},
- "filterText": "过滤器",
+ "filterText": "搜索",
"finalScoreText": "最后得分",
"finalScoresText": "最后得分",
"finalTimeText": "最终时间",
@@ -677,7 +689,9 @@
"editText": "编辑比\n赛列表",
"gameListText": "比赛列表",
"newText": "新建比\n赛列表",
- "showTutorialText": "显示教程",
+ "pointsToWinText": "获胜点数",
+ "seriesLengthText": "列表长度",
+ "showTutorialText": "播放教程",
"shuffleGameOrderText": "随机比赛模式",
"titleText": "自定义${TYPE}列表"
},
@@ -686,8 +700,8 @@
},
"gamesToText": "${WINCOUNT}比${LOSECOUNT}",
"gatherWindow": {
- "aboutDescriptionLocalMultiplayerExtraText": "请记住:如果你有足够多的游戏手柄,\n派对中的任意设备可允许多个玩家同时游戏。",
- "aboutDescriptionText": "使用这些选项卡来组织一场派对。\n\n通过派对,你可以和好友在不同的设备上\n一起玩游戏和比赛。\n\n使用手柄右上角的${PARTY}按钮\n来发起派对聊天和互动。\n(在菜单中时按${BUTTON})",
+ "aboutDescriptionLocalMultiplayerExtraText": "请记住:如果你有足够多的游戏手柄,\n那你就可以让多个玩家用手柄同时游戏。",
+ "aboutDescriptionText": "这个选项卡是用来联机(开派对/房间)的喵~\n\n在派对中,你可以和朋友在不同的设备上\n一起玩游戏和比赛。\n\n点击右上角的${PARTY}按钮\n来发起派对聊天和互动。\n(手柄请在菜单中时按${BUTTON})",
"aboutText": "关于",
"addressFetchErrorText": "<获取地址出错>",
"appInviteInfoText": "邀请好友一起玩BombSquad,新玩家可获得 ${COUNT}免费点券。\n每成功邀请到一位好友,您可获得${YOU_COUNT}点券。",
@@ -715,10 +729,10 @@
"friendHasSentPromoCodeText": "从 ${NAME} 中获取 ${COUNT} 张 ${APP_NAME} 点券",
"friendPromoCodeAwardText": "每使用一次,你可收到${COUNT}张点券。",
"friendPromoCodeExpireText": "代码将在 ${EXPIRE_HOURS} 小时后失效,代码仅适用于新玩家。",
- "friendPromoCodeInstructionsText": "要使用代码,可打开 ${APP_NAME},按\"设置->高级->输入促销代码\"操作。\n所有支持平台的下载链接见 bombsquadgame.com。",
+ "friendPromoCodeInstructionsText": "要使用代码,可打开 ${APP_NAME},按\"设置->高级->输入兑换代码\"操作。\n要下载最新版,请访问www.bombsquad.cn",
"friendPromoCodeRedeemLongText": "达到${MAX_USES}人后,就不可获得${COUNT}免费点券。(防止玩家用来作弊)",
"friendPromoCodeRedeemShortText": "可在游戏中兑换${COUNT}免费点券。",
- "friendPromoCodeWhereToEnterText": "(在\"设置->高级->输入促销代码\"中)",
+ "friendPromoCodeWhereToEnterText": "(在\"设置->高级->输入兑换代码\"中)",
"getFriendInviteCodeText": "获取好友邀请码",
"googlePlayDescriptionText": "邀请Google Play玩家来加入你的派对",
"googlePlayInviteText": "邀请",
@@ -730,10 +744,10 @@
"hostingUnavailableText": "主机不可用",
"inDevelopmentWarningText": "注意:\n\n联网模式是一项新的并且还在开发特性,\n目前强烈建议所有玩家在同一个\n无线局域网下游戏。",
"internetText": "在线游戏",
- "inviteAFriendText": "好友还未加入该游戏?邀请他们\n一起玩,新玩家可获得${COUNT}张免费点券。",
+ "inviteAFriendText": "你的朋友还没下载?邀请他们\n一起玩,新玩家可获得${COUNT}张免费点券。",
"inviteFriendsText": "邀请朋友",
"joinPublicPartyDescriptionText": "加入一个公开派对",
- "localNetworkDescriptionText": "加入一个局域网派对(通过wifi,蓝牙,etc等)",
+ "localNetworkDescriptionText": "加入一个局域网派对(通过wifi,蓝牙等各种方式)",
"localNetworkText": "本地网络",
"makePartyPrivateText": "将我的派对变成私人派对",
"makePartyPublicText": "将我的派对变成公开派对",
@@ -744,12 +758,13 @@
"manualJoinableFromInternetText": "是否可从互联网连接?:",
"manualJoinableNoWithAsteriskText": "否*",
"manualJoinableYesText": "是",
- "manualRouterForwardingText": "* 若要解决此问题,请尝试将您的路由器设置为将UDP端口${PORT}转发到你的本地地址(地址一般是192.168.*.1)",
+ "manualRouterForwardingText": "* 若要解决此问题,请尝试将您的路由器设置为将UDP端口${PORT}转发到你的本地地址(地址一般是192.168.*.*)",
"manualText": "手动",
"manualYourAddressFromInternetText": "互联网地址:",
"manualYourLocalAddressText": "本地地址:",
"nearbyText": "附近",
"noConnectionText": "<无连接>",
+ "noPartiesAddedText": "没有加入派对",
"otherVersionsText": "(其他版本)",
"partyCodeText": "派对代码",
"partyInviteAcceptText": "接受",
@@ -767,7 +782,7 @@
"partyStatusNotPublicText": "你的派对是私人的",
"pingText": "延迟",
"portText": "端口",
- "privatePartyCloudDescriptionText": "私有方在专用的云服务器上运行;无需路由器配置",
+ "privatePartyCloudDescriptionText": "私人服务器在官方的云服务器上运行;无需路由器配置",
"privatePartyHostText": "创建一个私人派对",
"privatePartyJoinText": "加入一个公开派对",
"privateText": "私人",
@@ -781,14 +796,14 @@
"startHostingText": "创建",
"startStopHostingMinutesText": "你还可以使用${MINUTES}分钟的免费服务器",
"stopHostingText": "停止主机",
- "titleText": "多人游戏",
+ "titleText": "在线游戏",
"wifiDirectDescriptionBottomText": "如果所有设备都设有 Wi-Fi Direct 面板,那他们应该可以使用通过它来找到彼此,\n然后相互连接。一旦所有设备都相互连接上了,你就可以通过“本地网络”选项卡\n在此组织派对,常规的无线局域网也是一样。\n\n如要取得最佳效果,Wi-Fi Direct 创建者也应是${APP_NAME} 派对的创建者",
"wifiDirectDescriptionTopText": "无需无线网络即可直接\n通过Wi-Fi Direct连接安卓设备。对于安装了Android 4.2或更高版本操作系统的设备效果更好。\n\n要使用该功能,可打开无线网络连接设置,然后在菜单中寻找'Wi-Fi Direct'。",
"wifiDirectOpenWiFiSettingsText": "打开无线网络连接设置",
"wifiDirectText": "Wi-Fi Direct",
"worksBetweenAllPlatformsText": "(所有平台之间运作)",
"worksWithGooglePlayDevicesText": "(适用于运行Google Play(安卓)版游戏的设备)",
- "youHaveBeenSentAPromoCodeText": "您已送出一个 ${APP_NAME} 促销代码:"
+ "youHaveBeenSentAPromoCodeText": "您已送出一个 ${APP_NAME} 兑换代码:"
},
"getTicketsWindow": {
"freeText": "免费!",
@@ -822,38 +837,40 @@
"alwaysText": "总是",
"fullScreenCmdText": "全屏显示(Cmd+F)",
"fullScreenCtrlText": "全屏(Ctrl-F)",
+ "fullScreenText": "全屏",
"gammaText": "Gamma",
"highText": "高",
"higherText": "极高",
"lowText": "低",
+ "maxFPSText": "最高帧数",
"mediumText": "中",
"neverText": "关",
"resolutionText": "分辨率",
- "showFPSText": "显示FPS",
+ "showFPSText": "显示FPS帧数",
"texturesText": "材质质量",
"titleText": "图像质量",
- "tvBorderText": "电视边缘",
+ "tvBorderText": "大广角",
"verticalSyncText": "垂直同步",
"visualsText": "视觉"
},
"helpWindow": {
"bombInfoText": "炸弹\n比拳头伤害高,但也能把自己送上西天。\n给你个建议:等引线快烧完的时候\n再把炸弹扔向敌人。",
- "canHelpText": "${APP_NAME}可以帮助。",
+ "canHelpText": "${APP_NAME}小帮助可以帮你快速入门!",
"controllersInfoText": "你可以和好友在同一网络下玩${APP_NAME},或者\n如果你有足够多的手柄,那也可以在同一个设备上游戏。\n${APP_NAME}支持各种选择;你甚至可以通过免费的'${REMOTE_APP_NAME}'\n用手机作为游戏手柄。\n更多信息,请参见设置->手柄。",
- "controllersInfoTextRemoteOnly": "你可以通过网络与你的朋友们一起游玩${APP_NAME}\n或者你可以使用${REMOTE_APP_NAME}\n它会将你的手机作为手柄在同一个设备上与你的朋友一起游玩",
+ "controllersInfoTextRemoteOnly": "你可以通过局域网与你的朋友们一起游玩${APP_NAME}\n或者你可以使用${REMOTE_APP_NAME}\n它会将你的手机作为手柄在同一个设备上与你的朋友一起游玩",
"controllersText": "手柄",
- "controlsSubtitleText": "你的友好的${APP_NAME}角色具有几个基本动作:",
+ "controlsSubtitleText": "${APP_NAME}的角色基本操作如下:",
"controlsText": "控制键",
"devicesInfoText": "VR版${APP_NAME}可与\n普通版本联网游戏,所以掏出你所有的手机、平板电脑\n和电脑,大玩一场吧。你甚至还可以将\n普通版本的游戏连接至VR版,\n让游戏外的人也能看你玩。",
"devicesText": "设备",
- "friendsGoodText": "这对你而言都是好事。和三五好友一起玩${APP_NAME}最有趣了,\n最多可以支持8个玩家一起玩,进入",
+ "friendsGoodText": "哎,一个人玩?那咋行!${APP_NAME}就是要人多才好玩嘛~\n最多支持8人同时游戏,如果你有魔法可以改掉限制喵~快拉你的小伙伴一起玩吧",
"friendsText": "好友",
- "jumpInfoText": "跳跃\n跳跃可以跳过较窄的缝隙,\n或是把炸弹扔的更远,\n或是表达你难以掩盖的喜悦之情。",
- "orPunchingSomethingText": "或用拳猛击敌人,将它砸下悬崖,然后在它下落的途中用粘性炸弹炸掉它。",
- "pickUpInfoText": "拾起\n你可以拾起旗子,敌人,\n还有所有没固定在地上的东西,\n然后,再扔出去吧。",
+ "jumpInfoText": "跳跃\n跳跃可以跳过小沟,\n或是把炸弹扔得更远,\n或是表达你难以掩盖的喜悦之情。",
+ "orPunchingSomethingText": "还可以用拳头攻击,或者把敌人举起来然后丢下去,或者更多好玩的...",
+ "pickUpInfoText": "拾起\n你可以拾起旗子,敌人,\n还有所有没固定在地上的东西,\n然后,再扔出去吧~",
"powerupBombDescriptionText": "将炸弹最大投掷数量\n由一个提升为三个",
"powerupBombNameText": "三连炸弹",
- "powerupCurseDescriptionText": "你可能想要避开这些。\n…或者你想试试看?",
+ "powerupCurseDescriptionText": "最好不要接触它。\n...或者你想试试?",
"powerupCurseNameText": "诅咒",
"powerupHealthDescriptionText": "完全回血!\n想不到吧!",
"powerupHealthNameText": "医疗包",
@@ -872,8 +889,8 @@
"powerupsSubtitleText": "当然,没有道具的游戏很难通关:",
"powerupsText": "道具",
"punchInfoText": "拳击\n跑得越快,拳击的伤害\n越高。所以像疯子一样\n旋转跳跃吧!",
- "runInfoText": "冲刺\n按任意键冲刺,如果你用手柄操作将会容易许多。\n冲刺跑的虽快,但会造成转向困难。且冲且珍惜。",
- "someDaysText": "有些时候你只是想挥拳猛击某些东西,或把什么东西给炸飞。",
+ "runInfoText": "冲刺\n按住四个键中的一个即可冲刺,如果你用手柄可以将扳机设置为跑\n冲刺跑的虽快,但会造成转向困难。且冲且珍惜()",
+ "someDaysText": "当你想攻击别人时,你可以用各种炸弹",
"titleText": "${APP_NAME}帮助",
"toGetTheMostText": "要想最痛快地玩这个游戏,你需要:",
"welcomeText": "欢迎来到${APP_NAME}!"
@@ -891,7 +908,7 @@
"arrowsToExitListText": "按${LEFT}或${RIGHT}退出列表",
"buttonText": "按钮",
"cantKickHostError": "你不能踢房主啊喂!",
- "chatBlockedText": "玩家 ${NAME} 被禁言 ${TIME} 秒.",
+ "chatBlockedText": "玩家 ${NAME} 被禁言 ${TIME} 秒,有话慢点说",
"connectedToGameText": "加入 '${NAME}'",
"connectedToPartyText": "加入${NAME}的房间!",
"connectingToPartyText": "正在连接...",
@@ -899,7 +916,7 @@
"connectionFailedPartyFullText": "连接出错:房间满员了…",
"connectionFailedText": "连接失败。",
"connectionFailedVersionMismatchText": "连接失败;创建者正在运行不同版本的游戏。\n请确保你们都安装了最新版本,然后再试一次。",
- "connectionRejectedText": "连接被拒绝。",
+ "connectionRejectedText": "连接被拒绝,你有可能被踢了",
"controllerConnectedText": "${CONTROLLER}已连接。",
"controllerDetectedText": "检测到1个手柄。",
"controllerDisconnectedText": "${CONTROLLER}断开连接。",
@@ -934,14 +951,14 @@
"rejectingInviteAlreadyInPartyText": "拒绝邀请(已经在派对中)。",
"serverRestartingText": "服务器自动重启中,请重新加入..",
"serverShuttingDownText": "服务器正在关机…",
- "signInErrorText": "登陆出错啦~",
+ "signInErrorText": "登录出错啦~",
"signInNoConnectionText": "哎呀,无法登陆。(网络连接有故障?)",
"telnetAccessDeniedText": "错误:用户未得到telnet访问授权。",
"timeOutText": "(将在${TIME}秒内超出时限)",
"touchScreenJoinWarningText": "您已以触摸屏方式加入。\n如果这是一个错误,点击“菜单->离开游戏菜单”。",
"touchScreenText": "触摸屏",
- "unableToResolveHostText": "错误:房主有问题",
- "unavailableNoConnectionText": "哎呀,这个用不了呢(网络连接故障?)",
+ "unableToResolveHostText": "错误:请输入正确的地址",
+ "unavailableNoConnectionText": "哎呀,这个用不了呢(请等待连接主服务器)",
"vrOrientationResetCardboardText": "重置VR定位。\n您需使用外部手柄来玩该游戏。",
"vrOrientationResetText": "VR定位重置。",
"willTimeOutText": "(若空闲则会超出时限)"
@@ -963,7 +980,7 @@
"kickVoteStartedText": "踢出${NAME}的投票已被发起",
"kickVoteText": "投票踢出玩家",
"kickVotingDisabledText": "投票踢出已被禁用.",
- "kickWithChatText": "在聊天框中输入 ${YES} 来同意,输入 ${NO} 来拒绝(输入2来弃权)",
+ "kickWithChatText": "在聊天框中输入 ${YES} 来同意,输入 ${NO} 来拒绝",
"killsTallyText": "${COUNT}次击杀",
"killsText": "击杀数",
"kioskWindow": {
@@ -1018,10 +1035,10 @@
"endTestText": "结束测试",
"exitGameText": "退出",
"exitToMenuText": "退出到菜单",
- "howToPlayText": "帮助",
+ "howToPlayText": "小帮助",
"justPlayerText": "(仅${NAME})",
"leaveGameText": "离开游戏",
- "leavePartyConfirmText": "确实要离开吗?",
+ "leavePartyConfirmText": "你确定要离开?",
"leavePartyText": "离开派对",
"quitText": "离开游戏",
"resumeText": "回到游戏",
@@ -1033,7 +1050,7 @@
"mapSelectTitleText": "${GAME}地图",
"mapText": "地图",
"maxConnectionsText": "最大连接数",
- "maxPartySizeText": "最大派对规模",
+ "maxPartySizeText": "最大派对人数",
"maxPlayersText": "最多人数",
"merchText": "来买周边吧~",
"modeArcadeText": "街机模式",
@@ -1047,7 +1064,7 @@
"multiPlayerCountText": "${COUNT}名玩家",
"mustInviteFriendsText": "注意:你必须在“${GATHER}”面板中邀请好友,\n或连接多个\n手柄,和好友一起游戏。",
"nameBetrayedText": "${NAME}背叛了${VICTIM}",
- "nameDiedText": "${NAME}挂了。",
+ "nameDiedText": "${NAME}寄了",
"nameKilledText": "${NAME}把${VICTIM}杀了",
"nameNotEmptyText": "名字不能为空",
"nameScoresText": "${NAME}得分咯!",
@@ -1056,7 +1073,7 @@
"nameText": "名称",
"nativeText": "本机",
"newPersonalBestText": "新个人记录!",
- "newTestBuildAvailableText": "更新的测试版可供下载了!(${VERSION}生成${BUILD})。\n到${ADDRESS}获取",
+ "newTestBuildAvailableText": "更新的测试版可供下载了!(${VERSION} build${BUILD})。\n到${ADDRESS}获取吧!",
"newText": "新建",
"newVersionAvailableText": "更新版本的 ${APP_NAME} 可供下载了! 版本号(${VERSION})",
"nextAchievementsText": "下一个成就:",
@@ -1065,8 +1082,10 @@
"noContinuesText": "(无可继续)",
"noExternalStorageErrorText": "该设备上未发现外部存储器",
"noGameCircleText": "错误:未登入GameCircle",
+ "noPluginsInstalledText": "没有安装插件",
"noProfilesErrorText": "您没有玩家档案,所以还得忍受“${NAME}”这个名字。\n进入设置->玩家档案,为自己创建档案。",
"noScoresYetText": "还未有得分记录。",
+ "noServersFoundText": "未找到服务器",
"noThanksText": "不,谢谢",
"noTournamentsInTestBuildText": "温馨提示:测试版的锦标赛分数不能计入锦标赛哦!",
"noValidMapsErrorText": "该比赛类型中未发现有效地图。",
@@ -1137,8 +1156,8 @@
"pleaseRateText": "如果你喜欢 ${APP_NAME},请考虑花一点时间\n来评价一下它或为它写一篇评论。这将为我们提供\n有用的反馈建议,为游戏的未来开发给予支持。\n\n感谢您!\n-eric",
"pleaseWaitText": "请稍等...",
"pluginClassLoadErrorText": "加载'${PLUGIN}'插件时出错了耶: ${ERROR}",
- "pluginInitErrorText": "初始化'${PLUGIN}'插件失败了啦: ${ERROR}",
- "pluginSettingsText": "插件设置喵",
+ "pluginInitErrorText": "初始化'${PLUGIN}'插件失败了: ${ERROR}",
+ "pluginSettingsText": "插件设置",
"pluginsAutoEnableNewText": "自动启用新插件",
"pluginsDetectedText": "新插件安装成功,请重启游戏或在设置中设置它们~",
"pluginsDisableAllText": "禁用所有插件",
@@ -1176,7 +1195,7 @@
"purchasingText": "正在购买…",
"quitGameText": "退出${APP_NAME}?",
"quittingIn5SecondsText": "在5秒后退出...",
- "randomPlayerNamesText": "企鹅王,企鹅骑士团成员,王♂の传人,挨揍使我快乐,ChineseBomber,一拳超人,二营长の意大利炮,野渡无人舟自横,马克斯,雪糕,炸鸡翅,手柄玩家18子,寻找宝藏的海盗,炸弹投手,炸弹不是糖果,我是对面的,万有引力,鸟语花香,狗年大吉,小狗狗,大狗子,二狗子,三狗子,四狗子,五狗子,高质量人类,吴签,菜虚困,劈我瓜是吧,是我dio哒,亚达哟,王雷卖鱼,蕉♂个朋友,小猪配齐,摇摆羊,可莉,胡桃,钟离,七七,刻晴,甘雨,巴巴托斯,温迪,旅行者,绿坝娘,哔哩哔哩,别闹我有药",
+ "randomPlayerNamesText": "企鹅王,企鹅骑士团成员,王♂の传人,挨揍使我快乐,ChineseBomber,一拳超人,二营长の意大利炮,野渡无人舟自横,马克斯,雪糕,炸鸡翅,手柄玩家18子,寻找宝藏的海盗,炸弹投手,炸弹不是糖果,我是对面的,万有引力,鸟语花香,兔年大吉,小狗狗,大狗子,二狗子,三狗子,四狗子,五狗子,高质量人类,吴签,菜虚困,劈我瓜是吧,是我dio哒,亚达哟,王雷卖鱼,蕉♂个朋友,小猪配齐,陈星宇批发商,蒙飞批发商,蒙腾批发商,渴望被怜爱的弱受杰瑞,汤姆猫,小灰机,炸弹大队队长,炸弹教主",
"randomText": "随机",
"rankText": "排行",
"ratingText": "排名",
@@ -1234,7 +1253,9 @@
"revertText": "还原",
"runText": "运行",
"saveText": "保存",
- "scanScriptsErrorText": "扫描脚本存在一个或多个错误;查看错误日志来了解详情。",
+ "scanScriptsErrorText": "检查Mod文件时发现错误,报错见炸队日志文件喵",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} 和 ${NUM} 个模组需要升级到API${API}才能使用喵~",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} 需要升级到API${API}才能使用喵~",
"scoreChallengesText": "得分挑战",
"scoreListUnavailableText": "得分列表不可用。",
"scoreText": "得分",
@@ -1245,10 +1266,11 @@
},
"scoreWasText": "(是${COUNT})",
"selectText": "选择",
- "seriesWinLine1PlayerText": "赢得",
- "seriesWinLine1TeamText": "赢得",
- "seriesWinLine1Text": "赢得",
- "seriesWinLine2Text": "系列!",
+ "sendInfoDescriptionText": "向开发者发送账户和应用状态信息\n清附上您的姓名和寄送原因",
+ "seriesWinLine1PlayerText": "获得",
+ "seriesWinLine1TeamText": "获得",
+ "seriesWinLine1Text": "获得",
+ "seriesWinLine2Text": "冠军!",
"settingsWindow": {
"accountText": "账户",
"advancedText": "高级",
@@ -1268,27 +1290,31 @@
"disableThisNotice": "(可在高级设置中关闭此通知)",
"enablePackageModsDescriptionText": "(启用额外的模组功能,但是禁用多人模式)",
"enablePackageModsText": "启用本地程序包修改",
- "enterPromoCodeText": "输入促销代码",
+ "enterPromoCodeText": "输入兑换代码喵~",
"forTestingText": "注意:这些数值仅用于测试,并会在应用程序退出时丢失。",
- "helpTranslateText": "${APP_NAME}的非英语翻译是社区\n共同努力的成果。如果您希望参与翻译或对其提出更正,\n请点击以下链接。先行感谢!",
+ "helpTranslateText": "${APP_NAME}有中文汉化是咱们社区\n共同努力的成果。如果您希望参与翻译或对其提出更正,\n请点击这个按钮。十分感谢!",
"kickIdlePlayersText": "踢掉空闲玩家",
"kidFriendlyModeText": "儿童友好模式(低暴力等)",
"languageText": "语言",
- "moddingGuideText": "修改指南",
+ "moddingGuideText": "Mod文档",
+ "moddingToolsText": "Mod工具",
"mustRestartText": "您必须重启游戏来使之生效",
"netTestingText": "网络测试",
"resetText": "恢复默认值",
+ "sendInfoText": "发送消息",
"showBombTrajectoriesText": "显示炸弹轨迹",
+ "showDemosWhenIdleText": "当游戏空闲时播放演示画面",
+ "showDevConsoleButtonText": "显示开发者控制台按钮",
"showInGamePingText": "显示游戏延迟",
"showPlayerNamesText": "显示玩家名字",
- "showUserModsText": "显示修改文件夹",
+ "showUserModsText": "显示Mod文件夹",
"titleText": "高级",
"translationEditorButtonText": "${APP_NAME}翻译编辑器",
"translationFetchErrorText": "翻译状态不可用",
- "translationFetchingStatusText": "检查翻译进度…",
- "translationInformMe": "所选语言可更新时请通知我!",
- "translationNoUpdateNeededText": "当前语言是最新的;呜呼!",
- "translationUpdateNeededText": "**当前语言需要更新!! **",
+ "translationFetchingStatusText": "正在检查翻译进度喵…",
+ "translationInformMe": "中文需要更新翻译时请通知我!",
+ "translationNoUpdateNeededText": "当前语言是最新的;喵呜!",
+ "translationUpdateNeededText": "**当前语言需要更新!!**",
"vrTestingText": "VR测试"
},
"shareText": "分享",
@@ -1298,6 +1324,9 @@
"signInWithGameCenterText": "使用游戏中心\n应用程序登录。",
"singleGamePlaylistNameText": "仅${GAME}",
"singlePlayerCountText": "一个玩家",
+ "sizeLargeText": "大",
+ "sizeMediumText": "中",
+ "sizeSmallText": "小",
"soloNameFilterText": "单挑模式 ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "角色选择",
@@ -1334,7 +1363,7 @@
"charactersText": "人物",
"comingSoonText": "敬请期待……",
"extrasText": "额外部分",
- "freeBombSquadProText": "BombSquad现在是免费的,由于最初您是通过购买所得,您将获得\nBombSquad专业版升级和${COUNT}点券,以表感谢。\n尽享全新功能,同时感谢您的支持!\n-Eric",
+ "freeBombSquadProText": "炸弹小分队现在是免费的,由于最初您是通过购买所得,您将获得\n炸弹小分队专业版升级和${COUNT}点券,以表感谢。\n尽享全新功能,同时感谢您的支持!\n-Eric",
"gameUpgradesText": "游戏升级",
"holidaySpecialText": "假期特献",
"howToSwitchCharactersText": "(进入\"${SETTINGS} -> ${PLAYER_PROFILES}\"指定和自定义人物)",
@@ -1361,18 +1390,20 @@
"winterSpecialText": "冬季特献",
"youOwnThisText": "- 您已拥有 -"
},
- "storeDescriptionText": "8人派对游戏尽显疯狂!\n\n在爆炸类迷你游戏中炸飞您的好友(或电脑),如夺旗战、冰球战及史诗级慢动作死亡竞赛!\n\n简单的控制和广泛的手柄支持可轻松允许多达8人参与游戏;您甚至可以通过免费的“BombSquad Remote”应用将您的移动设备作为手柄使用!\n\n投射炸弹!\n\n更多信息,请登录www.froemling.net/bombsquad。",
+ "storeDescriptionText": "8人派对游戏疯狂乱炸!\n\n在迷你型爆炸游戏炸飞你的基友(或机器人),如夺旗战、冰球战及史诗级慢动作死亡竞赛!\n\n控制简单,操作便捷,可轻松支持多达8人同时游戏;您甚至可以通过免费的“炸弹小分队手柄”应用将您的手机作为手柄使用!\n\n炸死他们吧hiahiahia!\n\n更多信息,请打开www.froemling.net/bombsquad。",
"storeDescriptions": {
- "blowUpYourFriendsText": "炸飞你的好友。",
- "competeInMiniGamesText": "在从竞速到飞行的迷你游戏中一较高下。",
- "customize2Text": "自定义角色、迷你游戏,甚至是背景音乐。",
- "customizeText": "自定义角色并创建自己的迷你游戏播放列表。",
- "sportsMoreFunText": "加入炸药后运动变得更加有趣。",
- "teamUpAgainstComputerText": "组队对抗电脑程序。"
+ "blowUpYourFriendsText": "炸飞你的朋友们",
+ "competeInMiniGamesText": "在竞速游戏、飞行游戏中一决高下吧",
+ "customize2Text": "支持自定义角色、游戏玩法,甚至背景音乐",
+ "customizeText": "选择角色并创建自己的游戏关卡吧",
+ "sportsMoreFunText": "加入炸药后游戏会变得更嗨皮。",
+ "teamUpAgainstComputerText": "或者和机器人PK"
},
"storeText": "商店",
"submitText": "提交",
"submittingPromoCodeText": "正在提交代码...",
+ "successText": "成功",
+ "supportEmailText": "如果你在APP遇到任何问题\n请发邮件到${EMAIL}",
"teamNamesColorText": "团队名称/颜色。。。",
"telnetAccessGrantedText": "Telnet访问已启用。",
"telnetAccessText": "检测到Telnet访问;是否允许?",
@@ -1629,26 +1660,26 @@
"Entering tournament...": "进入锦标赛……",
"Invalid code.": "代码无效。",
"Invalid payment; purchase canceled.": "不可用的付款方式:交易取消",
- "Invalid promo code.": "促销代码无效。",
+ "Invalid promo code.": "诶呀,代码好像无效了捏~",
"Invalid purchase.": "购买无效。",
- "Invalid tournament entry; score will be ignored.": "错误的联赛资料,分数会被忽略。",
+ "Invalid tournament entry; score will be ignored.": "由于你的联赛资料错误,分数会被忽略...",
"Item unlocked!": "项目已解除锁定!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "连接账号行为取消。${ACCOUNT} 含有\n重要数据可能会丢失。\n如果你想要的话,你可以反向链接账号。\n(那样就会丢失这个账号的数据)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "将帐户${ACCOUNT}关联到此帐户吗?\n${ACCOUNT}将共享数据。\n此操作不能撤销。",
"Max number of playlists reached.": "已达到最大列表数目。",
"Max number of profiles reached.": "已达到最大档案数目。",
"Maximum friend code rewards reached.": "邀请码奖励达到上限",
- "Message is too long.": "消息太长.",
+ "Message is too long.": "诶呀,消息有点长捏~有话慢慢说",
"No servers are available. Please try again soon.": "当前没有空余的服务器,请稍后再试",
"Profile \"${NAME}\" upgraded successfully.": "${NAME}档案升级成功。",
"Profile could not be upgraded.": "档案不可升级。",
"Purchase successful!": "购买成功!",
- "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "登录领取${COUNT}点券。\n明日再来领取${TOMORROW_COUNT}。",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "今日登录获得${COUNT}点券\n明日再来领取${TOMORROW_COUNT}点券",
"Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "此版本的游戏不再支持服务器功能;\n请更新到较新版本。",
"Sorry, there are no uses remaining on this code.": "对不起,此代码已经无法继续使用了。",
"Sorry, this code has already been used.": "对不起,此代码已被使用。",
"Sorry, this code has expired.": "对不起,此代码已失效。",
- "Sorry, this code only works for new accounts.": "对不起,此代码仅适用于新账户。",
+ "Sorry, this code only works for new accounts.": "此代码只能新用户使用啊喂!你是新用户嘛",
"Still searching for nearby servers; please try again soon.": "正在搜索附近的服务器,请稍后再试",
"Temporarily unavailable; please try again later.": "目前暂不可用;请稍候再试!",
"The tournament ended before you finished.": "本次锦标赛在你完成之前结束。",
@@ -1658,23 +1689,23 @@
"This requires version ${VERSION} or newer.": "这需要版本${VERSION}或更高版本。",
"Tournaments disabled due to rooted device.": "该设备已禁用比赛。",
"Tournaments require ${VERSION} or newer": "比赛需要${VERSION}或更高版本",
- "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "从此帐户取消 ${ACCOUNT} 的连结?\n${ACCOUNT}上的所有数据将被重置。\n(在某些情况下除成就外)",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "从此帐户取消 ${ACCOUNT} 的关联?\n${ACCOUNT}上的所有数据将被重置。\n(在某些情况下除成就外)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "警告:针对您的帐户发出黑客投诉。\n被盗用的帐户将被禁止。请公平竞技。",
- "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "是否将您的设备帐户链接到此?\n\n您的设备账户为${ACCOUNT1}\n此帐户为${ACCOUNT2}\n\n您可保存现有进度。\n警告: 此操作不可撤消!",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "是否将您的设备帐户关联到此?\n\n您的设备账户为${ACCOUNT1}\n此帐户为${ACCOUNT2}\n\n您可保存现有进度。\n警告: 此操作不可撤消!",
"You already own this!": "你已拥有了!",
"You can join in ${COUNT} seconds.": "你在${COUNT} 秒后可以加入",
"You don't have enough tickets for this!": "你的点券不足!",
- "You don't own that.": "你尚未拥有",
+ "You don't own that.": "你没有真正购买它呢..(也许你正在用破解版)",
"You got ${COUNT} tickets!": "你获得了${COUNT}点券!",
"You got a ${ITEM}!": "你获得了一个${ITEM}!",
- "You have been promoted to a new league; congratulations!": "你已被升级至一个全新联赛;恭喜!",
+ "You have been promoted to a new league; congratulations!": "你已被升级至一个新联赛等级;恭喜!",
"You must update to a newer version of the app to do this.": "你必须升级到最新版本才可以",
"You must update to the newest version of the game to do this.": "你必须更新到最新版来做到这一点。",
"You must wait a few seconds before entering a new code.": "你必须在输入新代码前稍等几秒。",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "你在上一场锦标赛中排名#${RANK}。多谢玩赏本游戏!",
"Your account was rejected. Are you signed in?": "您的账号被拒绝。您是否已登录?",
- "Your copy of the game has been modified.\nPlease revert any changes and try again.": "你的游戏副本已被更改。\n请恢复任何更改并重试。",
- "Your friend code was used by ${ACCOUNT}": "${ACCOUNT}已使用您的好友代码"
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "你的游戏似乎不是原版。\n请删除Mod并使用官方最新版再重试。",
+ "Your friend code was used by ${ACCOUNT}": "${ACCOUNT}使用了你的分享代码了哦~"
},
"settingNames": {
"1 Minute": "1分钟",
@@ -1709,7 +1740,7 @@
"None": "无",
"Normal": "正常",
"Pro Mode": "专业模式",
- "Respawn Times": "重生時長",
+ "Respawn Times": "复活时间",
"Score to Win": "得分取胜",
"Short": "短",
"Shorter": "更短",
@@ -1731,21 +1762,21 @@
"tips": {
"A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "一记完美、及时的“跑跳旋转拳”可一次性击杀敌人,并\n助你一生享有好友的尊重。",
"Always remember to floss.": "地面上的辅助线可能会有用。",
- "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "使用首选名称和外观,而非采用随机形式\n来为自己和好友创建玩家档案。",
- "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "诅咒之盒把你变成了一个定时炸弹。\n唯一的解决方法是迅速抢占一个生命值包。",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "请不要总是使用系统提供的随机档案,\n你可以在账户-玩家档案里创建自己的档案喵~",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "诅咒之盒把你变成了一个定时炸弹。\n唯一的解决方法是迅速抢到医疗包。",
"Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "尽管长相不同,所有人物的技能是相同的,\n所以只需随意挑选一个与你最相似的。",
"Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "不要因为拥有能量盾牌而狂妄自大;你仍然可能使自己坠入悬崖。",
- "Don't run all the time. Really. You will fall off cliffs.": "不要总是奔跑。真的。你可能会坠入悬崖。",
- "Don't spin for too long; you'll become dizzy and fall.": "不要旋转得太久,不然你会眩晕并摔倒。",
+ "Don't run all the time. Really. You will fall off cliffs.": "不要一直奔跑,真的,你可能会坠入悬崖。",
+ "Don't spin for too long; you'll become dizzy and fall.": "不要旋转得太久,不然你会傻乎乎地眩晕并摔倒。",
"Hold any button to run. (Trigger buttons work well if you have them)": "按住任意按钮来奔跑。(如果你有的话,扳机按钮将会很有用)",
- "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "按住任意按钮来奔跑。你将会更快地抵达一些地方,\n但是转弯效果并不好,所以当心悬崖。",
- "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "寒冰炸弹并非很厉害,但它们能够冻结\n任何被击中者,使他们极易粉碎。",
- "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "如果有人将你提起,出拳攻击他们,他们便会放手。\n这在现实生活中同样有效。",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "按住任意按钮来奔跑,比普通行走的速度会快得多。\n但是奔跑时不太好转弯,所以当心摔下悬崖。",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "冰冻炸弹伤害并不高,但它们能够冻结\n被伤到的人,然后他们身体会变得脆弱(一碰就碎)",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "如果有人把你抓起来了,出拳攻击他们,他们便会放手。\n这在现实生活中同样有效。",
"If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "如果您缺控制器,可以在手机安装「${REMOTE_APP_NAME}」\n然后手机就可以当作控制器啦~",
"If you are short on controllers, install the 'BombSquad Remote' app\non your iOS or Android devices to use them as controllers.": "如果你没有手柄,请在你的iOS或Android设备上安装\n“BombSquad Remote”应用程序,并将它们作为手柄使用。",
- "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "如果一个黏黏弹将你困住,你应该四处跳动并转圈。你可能\n将炸弹抖落,或如果没有其他办法,你最后的时刻将是有趣的。",
- "If you kill an enemy in one hit you get double points for it.": "如果你一击杀死一个敌人,你将获得双倍积分。",
- "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "如果你捡到一个诅咒之盒,你唯一的生存希望是\n在接下来的几秒内找到一个加血包。",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "如果一个黏黏弹将你困住,你应该四处跳动并转圈。炸弹\n可能被抖落,或如果没有其他办法,你最后的时刻将是有趣的。",
+ "If you kill an enemy in one hit you get double points for it.": "如果你一击杀死一个敌人,你将获得双倍分数。",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "如果你捡到一个诅咒之盒,你唯一的生存希望是\n在接下来的几秒内找到一个医疗包。",
"If you stay in one place, you're toast. Run and dodge to survive..": "如果你停留在一个地方,你就完了。为了生存而奔跑和躲避……",
"If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "如果众多玩家进进出出,在设置下打开“自动踢出闲置玩家”,以防\n任何玩家忘记离开游戏。",
"If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "如果你的设备过热,或者你想要节省电池电量,\n则在设置->图形中调低“视觉效果”或“分辨率”",
@@ -1756,13 +1787,13 @@
"Jump just as you're throwing to get bombs up to the highest levels.": "就像你试图将炸弹扔到最高点那样跳起来。",
"Land-mines are a good way to stop speedy enemies.": "地雷是阻止高速敌人的一个很好的方式。",
"Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "很多东西都可以捡起来并投掷,包括其他玩家。将你的\n敌人抛下悬崖可能是一个有效的且情感上可获得满足的策略。",
- "No, you can't get up on the ledge. You have to throw bombs.": "不,你不能在岩脊上起身。你必须要投掷炸弹。",
+ "No, you can't get up on the ledge. You have to throw bombs.": "不,你不能跳上塔台去。你必须要用炸弹炸死塔台上的人。",
"Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "玩家可在大多数游戏中途加入或离开,\n同时,你也可以在百忙中插上或拔出手柄。",
- "Practice using your momentum to throw bombs more accurately.": "练习借助你的力量更准确地投掷炸弹。",
+ "Practice using your momentum to throw bombs more accurately.": "多加练习,你的炸弹技能会变得更精准",
"Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "拳头跑得越快,拳击的伤害越高,\n所以请成为飞奔的拳击手吧。",
"Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "在投掷炸弹之前来回跑动,\n以“鞭打”炸弹,并将其投掷更远。",
"Take out a group of enemies by\nsetting off a bomb near a TNT box.": "在TNT炸药箱附近引爆\n一个炸弹来消灭一群敌人。",
- "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "头部是最脆弱的区域,所以一个黏黏弹\n接触头部通常便意味着游戏结束。",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "头部是最脆弱的区域,所以一个黏黏弹\n接触头部通常便意味着一个生命的结束。",
"This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "这一关卡永远不会结束,但是更高的得分将\n助你赢得全世界永恒的尊重。",
"Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "投掷力量取决于你所保持的方向。\n如要向前方轻轻投掷某物,不要保持在任何方向。",
"Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "更换背景音乐?更换成你自己音乐吧!\n参见设置->音频->背景音乐",
@@ -1822,11 +1853,13 @@
"toSkipPressAnythingText": "(点击或按下任何按钮以跳过教程)"
},
"twoKillText": "双杀!",
+ "uiScaleText": "UI缩放",
"unavailableText": "不可用",
"unconfiguredControllerDetectedText": "检测到未配置的手柄:",
"unlockThisInTheStoreText": "这必须在商店中解锁。",
"unlockThisProfilesText": "如需创建超过 ${NUM} 个玩家档案,你需要",
"unlockThisText": "你需要这些来解锁",
+ "unsupportedControllerText": "抱歉,游戏不兼容你的控制器\"${NAME}\"",
"unsupportedHardwareText": "抱歉,此版本的游戏不支持该硬件。",
"upFirstText": "进入第一局:",
"upNextText": "进入比赛${COUNT}第二局:",
@@ -1834,11 +1867,14 @@
"upgradeText": "升级",
"upgradeToPlayText": "在游戏商店中解锁\"${PRO}\",以体验该游戏。",
"useDefaultText": "使用默认值",
+ "userSystemScriptsCreateText": "创建用户系统脚本",
+ "userSystemScriptsDeleteText": "删除用户系统脚本",
"usesExternalControllerText": "该游戏使用外部手柄进行输入。",
"usingItunesText": "使用音乐应用设置背景音乐……",
"usingItunesTurnRepeatAndShuffleOnText": "请确认iTunes中随机播放已开启且重复全部歌曲。",
- "v2AccountLinkingInfoText": "要连接V2账户,请点击“管理账户”~",
+ "v2AccountLinkingInfoText": "要关联V2账户,请点击“管理账户”喵~",
"validatingTestBuildText": "测试版验证中……",
+ "viaText": "渠道账户:",
"victoryText": "胜利!",
"voteDelayText": "${NUMBER} 秒内你不能发起另一个投票",
"voteInProgressText": "已经有一个投票在进行中了",
diff --git a/dist/ba_data/data/languages/chinesesimplified.json b/dist/ba_data/data/languages/chinesesimplified.json
new file mode 100644
index 00000000..ac9781f0
--- /dev/null
+++ b/dist/ba_data/data/languages/chinesesimplified.json
@@ -0,0 +1,1980 @@
+{
+ "accountSettingsWindow": {
+ "accountNameRules": "账户名称不能包含Emoji表情符号或其他特殊符号!",
+ "accountsText": "账户",
+ "achievementProgressText": "完成了${TOTAL}个成就中的${COUNT}个",
+ "campaignProgressText": "战役进程 [困难] :${PROGRESS}",
+ "changeOncePerSeason": "在每个赛季中你只能更改它一次。",
+ "changeOncePerSeasonError": "你需要等到下个赛季才能对它再次更改 (还有${NUM}天)",
+ "createAnAccountText": "创建一个帐户",
+ "customName": "玩家姓名",
+ "deleteAccountText": "删除账户",
+ "googlePlayGamesAccountSwitchText": "如果你想登录另一个不同的谷歌账户,\n请使用 \"Play 游戏\" 来操作~",
+ "linkAccountsEnterCodeText": "输入代码",
+ "linkAccountsGenerateCodeText": "生成代码",
+ "linkAccountsInfoText": "(在不同的平台上同步游戏进程)",
+ "linkAccountsInstructionsNewText": "要关联两个帐户,首先,你需要在你第一个设备点“生成代码”\n,然后,你需要在第二个设备点“输入代码”输入第一个设备生成的代码。\n两个帐户数据将被两者共享。\n\n您最多可以关联${COUNT}个帐户。\n(包括自己的账户)\n\n重要提示:最好只关联自己的账户;\n如果你与朋友的账户关联了,那么\n你们将不能同时游玩线上模式。",
+ "linkAccountsText": "关联账户",
+ "linkedAccountsText": "已关联的账户:",
+ "manageAccountText": "管理账户",
+ "nameChangeConfirm": "是否更改账户名称为${NAME}?",
+ "resetProgressConfirmNoAchievementsText": "如果这样做,会重置你的单机模式的进程和\n本地的高分记录(不包括你的点券),\n还不能恢复,你确定吗?",
+ "resetProgressConfirmText": "如果这样做,会重置你的单机模式的进程,\n成就和本地的高分记录\n(不包括你的点券),还不能\n恢复,你确定吗?",
+ "resetProgressText": "重置游戏进程",
+ "setAccountName": "设置账户名称",
+ "setAccountNameDesc": "选择要为您的帐户显示的名称。\n您可以从链接的帐户选择\n或创建唯一的自定义名称。",
+ "signInInfoText": "登录以获取点券, 在线竞赛,\n并在不同设备上同步游戏进程。",
+ "signInText": "登录",
+ "signInWithAnEmailAddressText": "用邮箱注册",
+ "signInWithDeviceInfoText": "(仅适用于此设备的一个自动账户)",
+ "signInWithDeviceText": "用设备账户来登录",
+ "signInWithText": "使用 ${SERVICE} 登录",
+ "signInWithV2InfoText": "(账户在所有平台都通用)",
+ "signInWithV2Text": "使用${APP_NAME}渠道账号登录",
+ "signOutText": "登出",
+ "signingInText": "登录中...",
+ "signingOutText": "登出中...",
+ "ticketsText": "点券:${COUNT}",
+ "titleText": "账户",
+ "unlinkAccountsInstructionsText": "选择要取消关联的帐户",
+ "unlinkAccountsText": "取消关联账户",
+ "unlinkLegacyV1AccountsText": "取消关联旧版(V1)账户",
+ "v2LinkInstructionsText": "扫码或使用链接来登录或注册新账户",
+ "viaAccount": "(不可用名称 ${NAME})",
+ "youAreSignedInAsText": "你已登录为:"
+ },
+ "achievementChallengesText": "成就挑战",
+ "achievementText": "成就",
+ "achievements": {
+ "Boom Goes the Dynamite": {
+ "description": "用 TNT 炸死三个坏蛋",
+ "descriptionComplete": "用 TNT 炸死了三个坏蛋",
+ "descriptionFull": "在${LEVEL}中用TNT炸死三个坏蛋",
+ "descriptionFullComplete": "在${LEVEL}中用 TNT 炸死了三个坏蛋",
+ "name": "发威吧!TNT!"
+ },
+ "Boxer": {
+ "description": "不使用任何炸弹获得胜利",
+ "descriptionComplete": "没有使用任何炸弹就获胜了",
+ "descriptionFull": "在${LEVEL}中不用炸弹获胜",
+ "descriptionFullComplete": "在${LEVEL}中没用炸弹就获胜了",
+ "name": "拳皇"
+ },
+ "Dual Wielding": {
+ "descriptionFull": "连接两个控制手柄(硬件或应用)",
+ "descriptionFullComplete": "已经连接两个控制手柄(硬件或应用)",
+ "name": "成双成对"
+ },
+ "Flawless Victory": {
+ "description": "毫发无损地获胜",
+ "descriptionComplete": "毫发无损地获胜了",
+ "descriptionFull": "在${LEVEL}中毫发无损地获胜",
+ "descriptionFullComplete": "在${LEVEL}中毫发无损地获胜了",
+ "name": "完美获胜"
+ },
+ "Free Loader": {
+ "descriptionFull": "开始一个“混战模式”游戏(2+玩家)",
+ "descriptionFullComplete": "已经开始一个“混战模式”游戏(2+玩家)",
+ "name": "揩油的人"
+ },
+ "Gold Miner": {
+ "description": "用地雷杀死6个坏蛋",
+ "descriptionComplete": "用地雷杀死了6个坏蛋",
+ "descriptionFull": "在${LEVEL}中用地雷杀死6个坏蛋",
+ "descriptionFullComplete": "在${LEVEL}中用地雷杀死了6个坏蛋",
+ "name": "地雷专家"
+ },
+ "Got the Moves": {
+ "description": "不用炸弹或拳头攻击就获胜",
+ "descriptionComplete": "没有用炸弹或拳头攻击就获胜了",
+ "descriptionFull": "在${LEVEL}中不用炸弹或拳头攻击就获胜",
+ "descriptionFullComplete": "在${LEVEL}中没有用炸弹或拳头攻击就获胜了",
+ "name": "走位是关键"
+ },
+ "In Control": {
+ "descriptionFull": "连接一个控制手柄(硬件或应用)",
+ "descriptionFullComplete": "已经连接一个控制手柄(硬件或应用)",
+ "name": "掌控之中"
+ },
+ "Last Stand God": {
+ "description": "得1000分",
+ "descriptionComplete": "得了1000分",
+ "descriptionFull": "在${LEVEL}中获得1000分",
+ "descriptionFullComplete": "在${LEVEL}中获得了1000分",
+ "name": "${LEVEL}之神"
+ },
+ "Last Stand Master": {
+ "description": "得250分",
+ "descriptionComplete": "得了250分",
+ "descriptionFull": "在${LEVEL}中获得250分",
+ "descriptionFullComplete": "在${LEVEL}中获得了250分",
+ "name": "${LEVEL}的大师"
+ },
+ "Last Stand Wizard": {
+ "description": "得了500分",
+ "descriptionComplete": "得了500分",
+ "descriptionFull": "在${LEVEL}中获得500分",
+ "descriptionFullComplete": "在${LEVEL}中获得了500分",
+ "name": "${LEVEL}的行家"
+ },
+ "Mine Games": {
+ "description": "用地雷炸死3个坏蛋",
+ "descriptionComplete": "用地雷炸死了3个坏蛋",
+ "descriptionFull": "在${LEVEL}中用地雷炸死3个坏蛋",
+ "descriptionFullComplete": "在${LEVEL}中用地雷炸死了3个坏蛋",
+ "name": "地雷战"
+ },
+ "Off You Go Then": {
+ "description": "把3个坏蛋扔出地图",
+ "descriptionComplete": "把3个坏蛋扔出地图",
+ "descriptionFull": "在${LEVEL}中把3个坏蛋扔出地图",
+ "descriptionFullComplete": "在${LEVEL}中把3个坏蛋扔出地图",
+ "name": "现在到你了"
+ },
+ "Onslaught God": {
+ "description": "得5000分",
+ "descriptionComplete": "得了5000分",
+ "descriptionFull": "在${LEVEL}中获得5000分",
+ "descriptionFullComplete": "在${LEVEL}中获得了5000分",
+ "name": "${LEVEL}之神"
+ },
+ "Onslaught Master": {
+ "description": "得500分",
+ "descriptionComplete": "得了500分",
+ "descriptionFull": "在${LEVEL}中得500分",
+ "descriptionFullComplete": "在${LEVEL} 中得到500分",
+ "name": "${LEVEL} 专家"
+ },
+ "Onslaught Training Victory": {
+ "description": "打败所有敌人",
+ "descriptionComplete": "打败了所有敌人",
+ "descriptionFull": "在${LEVEL} 上打败所有敌人",
+ "descriptionFullComplete": "在${LEVEL} 上打败了所有敌人",
+ "name": "${LEVEL} 胜利"
+ },
+ "Onslaught Wizard": {
+ "description": "得1000分",
+ "descriptionComplete": "得了1000分",
+ "descriptionFull": "在${LEVEL} 中得1000分",
+ "descriptionFullComplete": "在${LEVEL} 中得到了1000分",
+ "name": "${LEVEL} 之圣"
+ },
+ "Precision Bombing": {
+ "description": "无道具获胜",
+ "descriptionComplete": "无道具获胜了",
+ "descriptionFull": "在${LEVEL} 中无道具获胜",
+ "descriptionFullComplete": "在${LEVEL} 中无道具获胜了",
+ "name": "精确爆炸"
+ },
+ "Pro Boxer": {
+ "description": "不用任何炸弹就取胜",
+ "descriptionComplete": "不用任何炸弹就取胜了",
+ "descriptionFull": "在${LEVEL} 中不用炸弹就取胜",
+ "descriptionFullComplete": "在${LEVEL} 中不用炸弹就取胜了",
+ "name": "专业拳击手"
+ },
+ "Pro Football Shutout": {
+ "description": "完爆坏人队(不让坏人队得分)",
+ "descriptionComplete": "完爆了坏人队(不让坏人队得分)",
+ "descriptionFull": "在${LEVEL} 中完爆坏人队(不让坏人队得分)",
+ "descriptionFullComplete": "在${LEVEL} 中完爆了坏人队(不让坏人队得分)",
+ "name": "无懈可击的${LEVEL}"
+ },
+ "Pro Football Victory": {
+ "description": "赢得比赛",
+ "descriptionComplete": "赢得了比赛",
+ "descriptionFull": "赢得${LEVEL}",
+ "descriptionFullComplete": "赢得了${LEVEL}",
+ "name": "${LEVEL} 获胜"
+ },
+ "Pro Onslaught Victory": {
+ "description": "打败所有敌人",
+ "descriptionComplete": "打败了所有敌人",
+ "descriptionFull": "在${LEVEL} 中打败所有坏蛋",
+ "descriptionFullComplete": "在${LEVEL} 中打败了所有坏蛋",
+ "name": "${LEVEL} 获胜"
+ },
+ "Pro Runaround Victory": {
+ "description": "打败所有敌人",
+ "descriptionComplete": "打败了所有敌人",
+ "descriptionFull": "在${LEVEL} 中打败所有坏蛋",
+ "descriptionFullComplete": "在${LEVEL} 中打败了所有坏蛋",
+ "name": "${LEVEL} 取胜"
+ },
+ "Rookie Football Shutout": {
+ "description": "完爆坏人队(不让坏人队得分)",
+ "descriptionComplete": "完爆了坏人队",
+ "descriptionFull": "在${LEVEL} 中完爆坏人队",
+ "descriptionFullComplete": "在${LEVEL} 中完爆了坏人队",
+ "name": "${LEVEL} 完胜"
+ },
+ "Rookie Football Victory": {
+ "description": "赢得比赛",
+ "descriptionComplete": "赢得了比赛",
+ "descriptionFull": "赢得${LEVEL}",
+ "descriptionFullComplete": "赢得了${LEVEL}",
+ "name": "${LEVEL} 获胜"
+ },
+ "Rookie Onslaught Victory": {
+ "description": "打败所有敌人",
+ "descriptionComplete": "打败了所有敌人",
+ "descriptionFull": "在${LEVEL} 中打败所有坏蛋",
+ "descriptionFullComplete": "在${LEVEL} 中打败了所有坏蛋",
+ "name": "${LEVEL} 获胜"
+ },
+ "Runaround God": {
+ "description": "得2000分",
+ "descriptionComplete": "得了2000分",
+ "descriptionFull": "在${LEVEL} 中得到2000分",
+ "descriptionFullComplete": "在${LEVEL} 中得到了2000分",
+ "name": "${LEVEL} 之神"
+ },
+ "Runaround Master": {
+ "description": "得500分",
+ "descriptionComplete": "得了500分",
+ "descriptionFull": "在${LEVEL} 中得到500分",
+ "descriptionFullComplete": "在${LEVEL} 中得到了500分",
+ "name": "${LEVEL} 大师"
+ },
+ "Runaround Wizard": {
+ "description": "得1000分",
+ "descriptionComplete": "得了1000分",
+ "descriptionFull": "在${LEVEL} 得到1000分",
+ "descriptionFullComplete": "在${LEVEL} 中得到了1000分",
+ "name": "${LEVEL} 之圣"
+ },
+ "Sharing is Caring": {
+ "descriptionFull": "成功和一个朋友分享游戏",
+ "descriptionFullComplete": "已经成功和一个朋友分享游戏",
+ "name": "独享不如分享"
+ },
+ "Stayin' Alive": {
+ "description": "一直活着赢得比赛",
+ "descriptionComplete": "一直活着赢得了比赛",
+ "descriptionFull": "在${LEVEL} 中不死赢得比赛",
+ "descriptionFullComplete": "在${LEVEL} 中不死赢得了比赛",
+ "name": "不死之身"
+ },
+ "Super Mega Punch": {
+ "description": "一拳造成100%的伤害",
+ "descriptionComplete": "一拳造成了100%的伤害",
+ "descriptionFull": "一拳造成了100%的伤害",
+ "descriptionFullComplete": "在${LEVEL}中一拳造成了100%的伤害",
+ "name": "无敌大拳头"
+ },
+ "Super Punch": {
+ "description": "一拳造成50%的伤害",
+ "descriptionComplete": "一拳造成了50%的伤害",
+ "descriptionFull": "在${LEVEL}中一拳造成了50%的伤害",
+ "descriptionFullComplete": "在${LEVEL}中一拳造成50%的伤害",
+ "name": "大拳头"
+ },
+ "TNT Terror": {
+ "description": "用TNT炸死6个坏蛋",
+ "descriptionComplete": "用TNT炸死了6个坏蛋",
+ "descriptionFull": "在${LEVEL}中用TNT炸死6个坏蛋",
+ "descriptionFullComplete": "在${LEVEL}中用TNT炸死了6个坏蛋",
+ "name": "恐怖TNT"
+ },
+ "Team Player": {
+ "descriptionFull": "开始一个“团队”游戏(4+玩家)",
+ "descriptionFullComplete": "已经开始一个“团队”游戏(4+玩家)",
+ "name": "团队玩家"
+ },
+ "The Great Wall": {
+ "description": "阻止所有坏蛋通过",
+ "descriptionComplete": "阻止了所有坏蛋",
+ "descriptionFull": "在${LEVEL}中阻止所有坏蛋通过",
+ "descriptionFullComplete": "在${LEVEL}中阻止了所有坏蛋",
+ "name": "铜墙铁壁"
+ },
+ "The Wall": {
+ "description": "阻止所有坏蛋通过",
+ "descriptionComplete": "阻止了所有的坏蛋",
+ "descriptionFull": "在${LEVEL}中阻止所有坏蛋通过",
+ "descriptionFullComplete": "在${LEVEL}中阻止了所有的坏蛋",
+ "name": "铜墙铁壁"
+ },
+ "Uber Football Shutout": {
+ "description": "不失分赢得比赛",
+ "descriptionComplete": "不失分赢得了比赛",
+ "descriptionFull": "在${LEVEL} 中不失分赢得比赛",
+ "descriptionFullComplete": "在${LEVEL} 中不失分赢得了比赛",
+ "name": "${LEVEL} 完胜"
+ },
+ "Uber Football Victory": {
+ "description": "赢得比赛",
+ "descriptionComplete": "赢得比赛",
+ "descriptionFull": "在${LEVEL}中获胜",
+ "descriptionFullComplete": "在${LEVEL}中获胜",
+ "name": "${LEVEL} 获胜"
+ },
+ "Uber Onslaught Victory": {
+ "description": "防御所有坏蛋",
+ "descriptionComplete": "防御了所有坏蛋",
+ "descriptionFull": "在 ${LEVEL} 中防御所有坏蛋",
+ "descriptionFullComplete": "在 ${LEVEL} 中防御了所有坏蛋",
+ "name": "${LEVEL} 获胜"
+ },
+ "Uber Runaround Victory": {
+ "description": "打败所有敌人",
+ "descriptionComplete": "打败了所有敌人",
+ "descriptionFull": "在 ${LEVEL} 中打败所有敌人",
+ "descriptionFullComplete": "在 ${LEVEL} 中打败了所有敌人",
+ "name": "${LEVEL} 获胜"
+ }
+ },
+ "achievementsRemainingText": "未完成成就:",
+ "achievementsText": "成就",
+ "achievementsUnavailableForOldSeasonsText": "抱歉,往届的成就细节不可用。",
+ "activatedText": "${THING} 已激活",
+ "addGameWindow": {
+ "getMoreGamesText": "获取更多游戏模式…",
+ "titleText": "添加比赛"
+ },
+ "addToFavoritesText": "添加到收藏",
+ "addedToFavoritesText": "将'${NAME}'添加到收藏",
+ "allText": "全部",
+ "allowText": "允许",
+ "alreadySignedInText": "您的账号已在其他设备登录;\n请切换账号或者退出已登录的设备,\n然后再试一次",
+ "apiVersionErrorText": "无法加载模组${NAME};它的API版本为 ${VERSION_USED},我们需要 ${VERSION_REQUIRED}.",
+ "applyText": "应用",
+ "areYouSureText": "你确定吗?",
+ "audioSettingsWindow": {
+ "headRelativeVRAudioInfoText": "(“自动”仅在插入耳机时有效)",
+ "headRelativeVRAudioText": "头部相对VR音频",
+ "musicVolumeText": "音乐音量",
+ "soundVolumeText": "音效音量",
+ "soundtrackButtonText": "自定义背景音乐",
+ "soundtrackDescriptionText": "导入自定义背景音乐",
+ "titleText": "声音"
+ },
+ "autoText": "自动",
+ "backText": "返回",
+ "banThisPlayerText": "禁掉该玩家",
+ "bestOfFinalText": "${COUNT}局决胜制最后得分",
+ "bestOfSeriesText": "${COUNT}决胜制:",
+ "bestRankText": "您的最佳是 #${RANK}",
+ "bestRatingText": "您的最高评价是 ${RATING}",
+ "bombBoldText": "炸弹",
+ "bombText": "炸弹",
+ "boostText": "加速",
+ "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME}在该应用程序自身中设置。",
+ "buttonText": "按钮",
+ "canWeDebugText": "当${APP_NAME}出现错误或崩溃时\n我们能否收集错误信息并上报给件开发者?\n\n这样有助于开发者修复bug并完善功能\n同时我们承诺,上报的信息不会包含你的个人信息",
+ "cancelText": "取消",
+ "cantConfigureDeviceText": "抱歉,${DEVICE}不可配置。",
+ "challengeEndedText": "此挑战已经结束。",
+ "chatMuteText": "屏蔽消息",
+ "chatMutedText": "聊天静音",
+ "chatUnMuteText": "取消屏蔽消息",
+ "chests": {
+ "prizeOddsText": "奖品概率",
+ "reduceWaitText": "减少开箱时间",
+ "slotDescriptionText": "这个空位可用于存放宝箱。\n\n通过完成战役关卡、\n在锦标赛中获得名次以及达成成就,\n即可获得宝箱。",
+ "slotText": "宝箱槽位 ${NUM}",
+ "slotsFullWarningText": "警告:宝箱槽位已满!\n本局游戏内获得的所有宝箱将无法保存。",
+ "unlocksInText": "解锁"
+ },
+ "choosingPlayerText": "<选择玩家>",
+ "claimText": "领取",
+ "codesExplainText": "开发者会提供代码来\n诊断和修复账户问题",
+ "completeThisLevelToProceedText": "你需要先完成这一关",
+ "completionBonusText": "完成奖励",
+ "configControllersWindow": {
+ "configureControllersText": "手柄配置",
+ "configureKeyboard2Text": "键盘设置 P2",
+ "configureKeyboardText": "键盘配置",
+ "configureMobileText": "用移动设备作为控制器",
+ "configureTouchText": "触摸屏配置",
+ "ps3Text": "PS3手柄",
+ "titleText": "手柄",
+ "wiimotesText": "Wii手柄",
+ "xbox360Text": "Xbox360手柄"
+ },
+ "configGamepadSelectWindow": {
+ "androidNoteText": "注意:是否支持手柄取决于您的设备和系统版本。",
+ "pressAnyButtonText": "按手柄上的任意按钮\n 您想要配置...",
+ "titleText": "手柄配置"
+ },
+ "configGamepadWindow": {
+ "advancedText": "高级",
+ "advancedTitleText": "高级控制器设置",
+ "analogStickDeadZoneDescriptionText": "(释放摇杆角色出现“漂移”情况时调高)",
+ "analogStickDeadZoneText": "模拟摇杆盲区",
+ "appliesToAllText": "(适用于所有该类型手柄)",
+ "autoRecalibrateDescriptionText": "(角色未全速移动时有效)",
+ "autoRecalibrateText": "自动校准模拟摇杆",
+ "axisText": "轴",
+ "clearText": "清除",
+ "dpadText": "方向键",
+ "extraStartButtonText": "额外启动按钮",
+ "ifNothingHappensTryAnalogText": "如无反应,请尝试分配至模拟摇杆。",
+ "ifNothingHappensTryDpadText": "如无反应,请尝试分配至方向键。",
+ "ignoreCompletelyDescriptionText": "(避免这个控制器影响游戏或菜单)",
+ "ignoreCompletelyText": "已完全忽略",
+ "ignoredButton1Text": "已忽略 按键1",
+ "ignoredButton2Text": "已忽略 按键2",
+ "ignoredButton3Text": "已忽略 按键3",
+ "ignoredButton4Text": "已忽略 按键4",
+ "ignoredButtonDescriptionText": "(用于防止“主页”或“同步”按钮影响用户界面)",
+ "pressAnyAnalogTriggerText": "按任意模拟扳机...",
+ "pressAnyButtonOrDpadText": "按任意键或方向键...",
+ "pressAnyButtonText": "按任意键",
+ "pressLeftRightText": "按左或右",
+ "pressUpDownText": "按上或下",
+ "runButton1Text": "跑 按键1",
+ "runButton2Text": "跑 按键2",
+ "runTrigger1Text": "跑 扳机1",
+ "runTrigger2Text": "跑 扳机2",
+ "runTriggerDescriptionText": "(模拟扳机可实现变速奔跑)",
+ "secondHalfText": "用于设置显示为单一手柄的\n二合一手柄设备的\n第二部分。",
+ "secondaryEnableText": "启用",
+ "secondaryText": "从属手柄",
+ "startButtonActivatesDefaultDescriptionText": "(如果启动按钮更倾向为“菜单”按钮,则关闭此功能)",
+ "startButtonActivatesDefaultText": "启动按钮激活默认部件",
+ "titleText": "手柄设置",
+ "twoInOneSetupText": "二合一手柄设置",
+ "uiOnlyDescriptionText": "(阻止这个控制器加入游戏)",
+ "uiOnlyText": "限制菜单应用",
+ "unassignedButtonsRunText": "全部未分配按钮 跑",
+ "unsetText": "<未设置>",
+ "vrReorientButtonText": "虚拟按钮调整"
+ },
+ "configKeyboardWindow": {
+ "configuringText": "配置${DEVICE}",
+ "keyboard2NoteText": "注:大多数键盘一次只能同时按几个按键,\n所以如果玩家另接一个单独的键盘,\n则两个键盘可帮助他们更好地玩游戏。\n请注意,即使在这种情况下,您也仍需\n为两个玩家分配独特的按键。"
+ },
+ "configTouchscreenWindow": {
+ "actionControlScaleText": "动作键大小",
+ "actionsText": "动作",
+ "buttonsText": "按钮",
+ "dragControlsText": "<拖动手柄重新定位他们>",
+ "joystickText": "游戏摇杆",
+ "movementControlScaleText": "移动键大小",
+ "movementText": "移动",
+ "resetText": "重置",
+ "swipeControlsHiddenText": "隐藏滑动图标",
+ "swipeInfoText": "“滑动”式手柄是需要花点时间来适应的,但\n能不看手柄上的控制键玩游戏会更轻松。",
+ "swipeText": "滑动",
+ "titleText": "触摸屏配置"
+ },
+ "configureDeviceInSystemSettingsText": "${DEVICE} 可以在系统设置中配置捏",
+ "configureItNowText": "现在立即配置吗?",
+ "configureText": "配置",
+ "connectMobileDevicesWindow": {
+ "amazonText": "亚马逊应用商店",
+ "appStoreText": "App Store",
+ "bestResultsText": "低延迟无线网可助你取得最佳成绩。要想降低无线网延迟,\n你可以关闭其他无线设备,\n或者在无线路由器附近玩,\n再或者将游戏主机连接以太网。",
+ "explanationText": "如果想把智能手机或平板设备作为控制器,请安装\n“${REMOTE_APP_NAME}”。通过无线网络,最多可\n以支持8个设备同时连接。最酷的是,这完全免费!",
+ "forAndroidText": "安卓",
+ "forIOSText": "iOS",
+ "getItForText": "iOS 用户可从App Store 获取 ${REMOTE_APP_NAME}\nAndroid 用户可以通过Google Play(中国无法正常获取)或者亚马逊应用商店(中国用户推荐使用)获取",
+ "googlePlayText": "Google Play",
+ "titleText": "把移动设备用作为游戏手柄"
+ },
+ "continuePurchaseText": "花 ${PRICE}继续?",
+ "continueText": "继续",
+ "controlsText": "控制键",
+ "coopSelectWindow": {
+ "activenessAllTimeInfoText": "不提供所有时间的排名。",
+ "activenessInfoText": "倍数随玩游戏天数增加,\n随未玩游戏天数减少。",
+ "activityText": "活动",
+ "campaignText": "比赛",
+ "challengesInfoText": "获取完成迷你游戏的奖励。\n\n每完成一项挑战\n奖励和难度都会增加,\n每挑战失败或放弃挑战一次,奖励和难度都会降低。",
+ "challengesText": "挑战",
+ "currentBestText": "当前最高分",
+ "customText": "自定义",
+ "entryFeeText": "参赛",
+ "forfeitConfirmText": "要放弃挑战吗?",
+ "forfeitNotAllowedYetText": "尚不能放弃此挑战。",
+ "forfeitText": "放弃",
+ "multipliersText": "倍数",
+ "nextChallengeText": "下一挑战",
+ "nextPlayText": "下一次游戏",
+ "ofTotalTimeText": "${TOTAL}",
+ "playNowText": "立即开玩",
+ "pointsText": "分",
+ "powerRankingFinishedSeasonUnrankedText": "(已结束赛季,未排名)",
+ "powerRankingNotInTopText": "(${NUMBER}名以外)",
+ "powerRankingPointsEqualsText": "${NUMBER}分",
+ "powerRankingPointsMultText": "(x ${NUMBER} 分)",
+ "powerRankingPointsText": "${NUMBER} 分",
+ "powerRankingPointsToRankedText": "(${CURRENT}分 已获得 共${REMAINING}分)",
+ "powerRankingText": "能力排位",
+ "prizesText": "奖励",
+ "proMultInfoText": "${PRO}升级的玩家\n获得${PERCENT}%的得分提速。",
+ "seeMoreText": "更多……",
+ "skipWaitText": "跳过等待",
+ "timeRemainingText": "剩余时间",
+ "toRankedText": "排名",
+ "totalText": "总计",
+ "tournamentInfoText": "与联赛中的其他玩家\n争夺高分。\n\n锦标赛时间结束时\n高分玩家将赢得奖励。",
+ "welcome1Text": "欢迎来到${LEAGUE}。你可以通过\n在锦标赛中赚取星级、达成成就及\n赢得冠军来提升你的联赛排名。",
+ "welcome2Text": "你还可参加很多相同活动来赢取点券。\n点券可用于解锁新的角色、地图和\n迷你游戏,或进入锦标赛,或更多用途",
+ "yourPowerRankingText": "你的能力排位:"
+ },
+ "copyConfirmText": "复制到剪贴板",
+ "copyOfText": "${NAME} 复制",
+ "copyText": "复制",
+ "createEditPlayerText": "<创建/编辑玩家>",
+ "createText": "创建",
+ "creditsWindow": {
+ "additionalAudioArtIdeasText": "添补音频、初期原图和创意:${NAME}",
+ "additionalMusicFromText": "添补背景音乐:${NAME}",
+ "allMyFamilyText": "帮助进行游戏测试的我的所有好友和家人",
+ "codingGraphicsAudioText": "编程、图形引擎和音频引擎:${NAME}",
+ "languageTranslationsText": "语言翻译:",
+ "legalText": "法律:",
+ "publicDomainMusicViaText": "版权公有音乐:${NAME}",
+ "softwareBasedOnText": "该软件部分基于${NAME}的工作",
+ "songCreditText": "${TITLE}演唱:${PERFORMER}\n作曲:${COMPOSER},改编:${ARRANGER},发行:${PUBLISHER},\n由${SOURCE}提供",
+ "soundAndMusicText": "音乐和音效",
+ "soundsText": "音乐(${SOURCE}):",
+ "specialThanksText": "特别感谢",
+ "thanksEspeciallyToText": "尤其感谢 ${NAME}",
+ "titleText": "${APP_NAME}制作团队",
+ "whoeverInventedCoffeeText": "发明咖啡的人"
+ },
+ "currentStandingText": "您目前的排名是#${RANK}",
+ "customizeText": "自定义...",
+ "deathsTallyText": "${COUNT}次死亡",
+ "deathsText": "死亡",
+ "debugText": "调试",
+ "debugWindow": {
+ "reloadBenchmarkBestResultsText": "注意:建议您在调试阶段将设置->画面->纹理设置为“高”。",
+ "runCPUBenchmarkText": "运行CPU基准程序",
+ "runGPUBenchmarkText": "运行GPU基准程序",
+ "runMediaReloadBenchmarkText": "运行媒体重载基准程序",
+ "runStressTestText": "运行压力测试",
+ "stressTestPlayerCountText": "玩家计数",
+ "stressTestPlaylistDescriptionText": "压力测试列表",
+ "stressTestPlaylistNameText": "列表名称",
+ "stressTestPlaylistTypeText": "列表类型",
+ "stressTestRoundDurationText": "回合时长",
+ "stressTestTitleText": "压力测试",
+ "titleText": "基准程序和压力测试",
+ "totalReloadTimeText": "总计重载时间:${TIME}(详见日志)"
+ },
+ "defaultGameListNameText": "默认${PLAYMODE}列表",
+ "defaultNewGameListNameText": "我的${PLAYMODE}列表",
+ "deleteText": "删除",
+ "demoText": "演示",
+ "denyText": "拒绝",
+ "deprecatedText": "已弃用",
+ "descriptionText": "内容",
+ "desktopResText": "桌面分辨率",
+ "deviceAccountUpgradeText": "紧急警告:\n你正在使用本地账户登录! (${NAME})\n此账户会在未来升级中被删除!!\n~如果想保持账号,请升级到v2账户~",
+ "difficultyEasyText": "简单",
+ "difficultyHardOnlyText": "仅限困难模式",
+ "difficultyHardText": "困难",
+ "difficultyHardUnlockOnlyText": "该关卡只可解锁在困难模式下解锁。\n你认为自己拥有夺冠的实力吗!?!?",
+ "directBrowserToURLText": "请打开网页浏览器访问以下链接:",
+ "disableRemoteAppConnectionsText": "禁止炸队手柄应用连接",
+ "disableXInputDescriptionText": "允许使用4个以上的控制器但可能不会正常工作",
+ "disableXInputText": "禁用XInput",
+ "disabledText": "禁用",
+ "discardText": "Discard",
+ "discordFriendsText": "想要结交新朋友一起玩吗?\n来加入我们的Discord吧!",
+ "discordJoinText": "加入Discord",
+ "doneText": "完成",
+ "drawText": "平局",
+ "duplicateText": "复制",
+ "editGameListWindow": {
+ "addGameText": "添加\n比赛",
+ "cantOverwriteDefaultText": "不可以覆盖默认的比赛列表!",
+ "cantSaveAlreadyExistsText": "已存在与此名字相同的比赛列表!",
+ "cantSaveEmptyListText": "不可以保存空白的比赛列表!",
+ "editGameText": "编辑\n比赛",
+ "listNameText": "比赛列表名称",
+ "nameText": "名称",
+ "removeGameText": "删除\n比赛",
+ "saveText": "保存",
+ "titleText": "列表编辑器"
+ },
+ "editProfileWindow": {
+ "accountProfileInfoText": "此特殊玩家档案,\n可能含有其中一个图标:\n\n${ICONS}\n\n基于您的登录平台以显示\n相关图标。(其中一部分可能已经绝版)",
+ "accountProfileText": "(账户资料)",
+ "availableText": "\"${NAME}\"可用。",
+ "characterText": "角色",
+ "checkingAvailabilityText": "正在检查\"${NAME}\"是否可用…",
+ "colorText": "颜色",
+ "getMoreCharactersText": "获取更多角色...",
+ "getMoreIconsText": "获取更多图标...",
+ "globalProfileInfoText": "全球玩家档案可使玩家拥有全世界唯一的名称。\n档案也包括自定义图标。",
+ "globalProfileText": "(全球档案)",
+ "highlightText": "副颜色",
+ "iconText": "图标",
+ "localProfileInfoText": "本地玩家档案不含图标,且玩家名称不具唯一性。\n升级至全球档案,以拥有唯一的游戏名称,并添加自定义图标。\n#警告:切勿使用随机到的名称,被使用的可能性极大。",
+ "localProfileText": "(本地档案)",
+ "nameDescriptionText": "角色名称",
+ "nameText": "名称",
+ "profileAlreadyExistsText": "具有该名称的配置文件已存在",
+ "randomText": "随机",
+ "titleEditText": "编辑档案",
+ "titleNewText": "新建档案",
+ "unavailableText": "\"${NAME}\"不可用;请尝试另一名称。",
+ "upgradeProfileInfoText": "这可在全球范围内保存您的玩家名称,\n并可让您为自己的名称分配一个自定义图标。",
+ "upgradeToGlobalProfileText": "升级至全球档案"
+ },
+ "editSoundtrackWindow": {
+ "cantDeleteDefaultText": "不能删除默认的背景音乐。",
+ "cantEditDefaultText": "不能编辑默认的背景音乐。请备份或是新建一个背景音乐列表。",
+ "cantOverwriteDefaultText": "不可以覆盖默认的背景音乐",
+ "cantSaveAlreadyExistsText": "这个名字的背景音乐已经存在!",
+ "defaultGameMusicText": "<默认游戏音乐>",
+ "defaultSoundtrackNameText": "默认自定义背景音乐",
+ "deleteConfirmText": "删除自定义背景音乐:\n\n'${NAME}'?",
+ "deleteText": "删除自定义\n背景音乐",
+ "duplicateText": "备份自定义\n背景音乐",
+ "editSoundtrackText": "自定义背景音乐编辑器",
+ "editText": "编辑自定义\n背景音乐",
+ "fetchingITunesText": "正在获得音乐应用播放列表",
+ "musicVolumeZeroWarning": "注意:现在音量为0",
+ "nameText": "名称",
+ "newSoundtrackNameText": "我的背景音乐${COUNT}",
+ "newSoundtrackText": "新的背景音乐:",
+ "newText": "创建背\n景音乐",
+ "selectAPlaylistText": "选择一个列表",
+ "selectASourceText": "音乐来源",
+ "testText": "测试",
+ "titleText": "自定义背景音乐",
+ "useDefaultGameMusicText": "默认游戏音乐",
+ "useITunesPlaylistText": "音乐应用播放列表",
+ "useMusicFileText": "音乐文件(mp3文件等)",
+ "useMusicFolderText": "音乐文件夹"
+ },
+ "editText": "修改",
+ "enabledText": "启用",
+ "endText": "结束",
+ "enjoyText": "尽情享用吧!",
+ "epicDescriptionFilterText": "史诗级慢动作的 ${DESCRIPTION}。",
+ "epicNameFilterText": "史诗级 ${NAME}",
+ "errorAccessDeniedText": "访问被拒绝",
+ "errorDeviceTimeIncorrectText": "您设备的时间有 ${HOURS} 小时的误差。\n这会导致游戏出现问题。\n请检查您设备的时间和时区设置。",
+ "errorOutOfDiskSpaceText": "存储空间不足,无法保存游戏进度",
+ "errorSecureConnectionFailText": "无法建立安全的云链接,网络可能会连接失败",
+ "errorText": "啊呜,好像出错了喵...",
+ "errorUnknownText": "未知错误",
+ "exitGameText": "退出${APP_NAME}?",
+ "expiredAgoText": "${T} 前已过期",
+ "expiresInText": "${T} 后过期",
+ "exportSuccessText": "退出'${NAME}'",
+ "externalStorageText": "外部存储器",
+ "failText": "失败",
+ "fatalErrorText": "哎呀,有些文件丢失或损坏了喵~\n请尝试重装游戏,或者\n联系 ${EMAIL} 寻求帮助喵~",
+ "fileSelectorWindow": {
+ "titleFileFolderText": "选择一个文件或文件夹",
+ "titleFileText": "选择一个文件",
+ "titleFolderText": "选择一个文件夹",
+ "useThisFolderButtonText": "使用此文件夹"
+ },
+ "filterText": "搜索",
+ "finalScoreText": "最后得分",
+ "finalScoresText": "最后得分",
+ "finalTimeText": "最终时间",
+ "finishingInstallText": "安装即将完成...",
+ "fireTVRemoteWarningText": "* 为获得更好的游戏体验,请使用\n游戏手柄或在您的手机和\n平板电脑上安装\n'${REMOTE_APP_NAME}'。",
+ "firstToFinalText": "${COUNT}局自由混战赛最后得分",
+ "firstToSeriesText": "${COUNT}局自由混战赛",
+ "fiveKillText": "五连杀!!!",
+ "flawlessWaveText": "完美的一波!",
+ "fourKillText": "四连杀!!!",
+ "friendScoresUnavailableText": "无法查看好友的得分。",
+ "gameLeadersText": "最高得分玩家数:${COUNT}",
+ "gameListWindow": {
+ "cantDeleteDefaultText": "您不能删除默认的比赛列表!",
+ "cantEditDefaultText": "不能编辑默认的比赛列表!复制或者新建一个。",
+ "cantShareDefaultText": "你不能分享默认列表",
+ "deleteConfirmText": "是否删除“${LIST}”?",
+ "deleteText": "删除\n比赛列表",
+ "duplicateText": "复制\n比赛列表",
+ "editText": "编辑\n比赛列表",
+ "newText": "新建\n比赛列表",
+ "pointsToWinText": "获胜点数",
+ "seriesLengthText": "列表长度",
+ "showTutorialText": "展示游戏基本教程",
+ "shuffleGameOrderText": "随机比赛模式",
+ "titleText": "自定义${TYPE}列表"
+ },
+ "gameSettingsWindow": {
+ "addGameText": "添加比赛"
+ },
+ "gamesToText": "${WINCOUNT}比${LOSECOUNT}",
+ "gatherWindow": {
+ "aboutDescriptionLocalMultiplayerExtraText": "请记住:如果你有足够多的游戏手柄,\n那你就可以让多个玩家用手柄同时游戏。",
+ "aboutDescriptionText": "这个选项卡是用来联机(开派对/房间)的喵~\n\n在派对中,你可以和朋友在不同的设备上\n一起玩游戏和比赛的喵~\n\n点击右上角的${PARTY}按钮\n来发起派对聊天和互动喵~\n(手柄请在菜单中时按${BUTTON}喵~)",
+ "aboutText": "关于",
+ "addressFetchErrorText": "<获取地址出错>",
+ "appInviteMessageText": "${NAME} 在${APP_NAME}中送给了您${COUNT} 点券",
+ "appInviteSendACodeText": "向他们发送一个代码",
+ "appInviteTitleText": "${APP_NAME} App 邀请码",
+ "bluetoothAndroidSupportText": "(适用于任何支持蓝牙功能的安卓设备)",
+ "bluetoothDescriptionText": "通过蓝牙来创建或加入比赛",
+ "bluetoothHostText": "通过蓝牙来创建游戏",
+ "bluetoothJoinText": "通过蓝牙来加入游戏",
+ "bluetoothText": "蓝牙",
+ "checkingText": "检查中...",
+ "copyCodeConfirmText": "代码已复制到粘贴板。",
+ "copyCodeText": "复制代码",
+ "dedicatedServerInfoText": "建立一个专用服务器来获得最佳效果,详情见 bombsquadgame.com/server 哦!",
+ "descriptionShortText": "使用多人游戏窗口来组建派对。",
+ "disconnectClientsText": "这将使派对中的${COUNT}位玩家\n断开连接。是否确定?",
+ "earnTicketsForRecommendingAmountText": "如果您的朋友们玩了这款游戏,他们将会收到 ${COUNT} 点券\n(每个畅游的朋友将让你收到 ${YOU_COUNT}点券)",
+ "earnTicketsForRecommendingText": "分享游戏来\n获取免费点券...",
+ "emailItText": "通过电子邮件发送",
+ "favoritesSaveText": "另存为收藏",
+ "favoritesText": "收藏",
+ "freeCloudServerAvailableMinutesText": "下一次免费云服务器将在 ${MINUTES} 分钟后可用。",
+ "freeCloudServerAvailableNowText": "当前免费云服务器可用!",
+ "freeCloudServerNotAvailableText": "无免费云服务器可用。",
+ "friendHasSentPromoCodeText": "从 ${NAME} 中获取 ${COUNT} 张 ${APP_NAME} 点券",
+ "friendPromoCodeAwardText": "每使用一次,你可收到${COUNT}张点券。",
+ "friendPromoCodeExpireText": "代码将在 ${EXPIRE_HOURS} 小时后失效,代码仅适用于新玩家。",
+ "friendPromoCodeInstructionsText": "请前往${APP_NAME}的“设置->高级->兑换礼包码”来兑换;\n要下载最新版,请访问www.bombsquad.cn(仅限中国大陆)",
+ "friendPromoCodeRedeemLongText": "达到${MAX_USES}人后,就不可获得${COUNT}免费点券。(防止玩家用来作弊)",
+ "friendPromoCodeRedeemShortText": "可在游戏中兑换${COUNT}免费点券。",
+ "friendPromoCodeWhereToEnterText": "(新用户可前往\"设置->高级->兑换礼包码\"中兑换)",
+ "getFriendInviteCodeText": "获取好友邀请码",
+ "googlePlayDescriptionText": "邀请Google Play玩家来加入你的派对",
+ "googlePlayInviteText": "邀请",
+ "googlePlayReInviteText": "如果你发出一个新邀请,\n则你的派对中的${COUNT}位Google Play玩家将断开连接。\n在发出的新邀请中再次邀请他们,让他们重回派对。",
+ "googlePlaySeeInvitesText": "查看邀请",
+ "googlePlayText": "Google Play",
+ "googlePlayVersionOnlyText": "(仅针对 Google Play 设备)",
+ "hostPublicPartyDescriptionText": "创建一个公开派对",
+ "hostingUnavailableText": "主机不可用",
+ "inDevelopmentWarningText": "注意:\n\n联网模式是一项新的并且还在开发特性,\n目前强烈建议所有玩家在同一个\n无线局域网下游戏。",
+ "internetText": "在线游戏",
+ "inviteAFriendText": "你的朋友还没下载?邀请他们\n一起玩,新玩家可获得${COUNT}张免费点券。",
+ "inviteFriendsText": "邀请朋友",
+ "joinPublicPartyDescriptionText": "加入一个公开派对",
+ "localNetworkDescriptionText": "加入一个局域网派对(通过wifi,蓝牙等各种方式)",
+ "localNetworkText": "本地网络",
+ "makePartyPrivateText": "将我的派对变成私人派对",
+ "makePartyPublicText": "将我的派对变成公开派对",
+ "manualAddressText": "地址",
+ "manualConnectText": "连接",
+ "manualDescriptionText": "加入派对,地址:",
+ "manualJoinSectionText": "使用地址加入",
+ "manualJoinableFromInternetText": "是否可从互联网连接?:",
+ "manualJoinableNoWithAsteriskText": "否*",
+ "manualJoinableYesText": "是",
+ "manualRouterForwardingText": "* 若要解决此问题,请尝试将您的路由器设置为将UDP端口${PORT}转发到你的本地地址(地址一般是192.168.*.*)",
+ "manualText": "手动",
+ "manualYourAddressFromInternetText": "互联网地址:",
+ "manualYourLocalAddressText": "本地地址:",
+ "nearbyText": "附近",
+ "noConnectionText": "<无连接>",
+ "noPartiesAddedText": "没有加入派对",
+ "otherVersionsText": "(其他版本)",
+ "partyCodeText": "派对代码",
+ "partyInviteAcceptText": "接受",
+ "partyInviteDeclineText": "拒绝",
+ "partyInviteIgnoreText": "忽略",
+ "partyInviteText": "${NAME}已邀请\n你加入他们的派对!",
+ "partyNameText": "派对名称",
+ "partyServerRunningText": "您的派对服务器正在运行。",
+ "partySizeText": "派对规模大小",
+ "partyStatusCheckingText": "检查中",
+ "partyStatusJoinableText": "你的派对现在可以从互联网上加入了",
+ "partyStatusNoConnectionText": "无法连接到服务器",
+ "partyStatusNotJoinableText": "你的派对不能从互联网上加入",
+ "partyStatusNotPublicText": "你的派对是私人的",
+ "pingText": "延迟",
+ "portText": "端口",
+ "privatePartyCloudDescriptionText": "私人服务器在官方的云服务器上运行;无需路由器配置",
+ "privatePartyHostText": "创建一个私人派对",
+ "privatePartyJoinText": "加入一个公开派对",
+ "privateText": "私人",
+ "publicHostRouterConfigText": "这可能需要配置路由器进行端口转发,为了更简单的选择,请使用私人派对",
+ "publicText": "公共",
+ "requestingAPromoCodeText": "正在请求代码…",
+ "sendDirectInvitesText": "直接邀请",
+ "shareThisCodeWithFriendsText": "与好友分享此代码:",
+ "showMyAddressText": "显示我的地址",
+ "startHostingPaidText": "创建需花费 ${COST}",
+ "startHostingText": "创建",
+ "startStopHostingMinutesText": "你还可以使用${MINUTES}分钟的免费服务器",
+ "stopHostingText": "停止主机",
+ "titleText": "多人游戏",
+ "wifiDirectDescriptionBottomText": "如果所有设备都设有 Wi-Fi Direct 面板,那他们应该可以使用通过它来找到彼此,\n然后相互连接。一旦所有设备都相互连接上了,你就可以通过“本地网络”选项卡\n在此组织派对,常规的无线局域网也是一样。\n\n如要取得最佳效果,Wi-Fi Direct 创建者也应是${APP_NAME} 派对的创建者",
+ "wifiDirectDescriptionTopText": "无需无线网络即可直接\n通过Wi-Fi Direct连接安卓设备。对于安装了Android 4.2或更高版本操作系统的设备效果更好。\n\n要使用该功能,可打开无线网络连接设置,然后在菜单中寻找'Wi-Fi Direct'。",
+ "wifiDirectOpenWiFiSettingsText": "打开无线网络连接设置",
+ "wifiDirectText": "Wi-Fi Direct",
+ "worksBetweenAllPlatformsText": "(所有平台之间运作)",
+ "youHaveBeenSentAPromoCodeText": "您已送出一个 ${APP_NAME} 兑换代码:"
+ },
+ "getTicketsWindow": {
+ "freeText": "免费!",
+ "freeTicketsText": "免费点券",
+ "inProgressText": "一个交易正在进行;请稍后再试。",
+ "purchasesRestoredText": "购买恢复。",
+ "receivedTicketsText": "获得${COUNT}点券!",
+ "restorePurchasesText": "恢复购买",
+ "ticketPack1Text": "小型点券包",
+ "ticketPack2Text": "中等点券包",
+ "ticketPack3Text": "大型点券包",
+ "ticketPack4Text": "巨型点券包",
+ "ticketPack5Text": "猛犸象点券包",
+ "ticketPack6Text": "终极点券包",
+ "ticketsFromASponsorText": "观看广告\n白嫖${COUNT}个点券",
+ "ticketsText": "${COUNT}点券",
+ "titleText": "获得点券",
+ "unavailableLinkAccountText": "对不起,该平台上不可进行购买。\n您可将此帐户链接到另一个\n平台,以进行购买。",
+ "unavailableTemporarilyText": "该选项当前不可用;请稍后再试。",
+ "unavailableText": "对不起,该选项不可用。",
+ "versionTooOldText": "对不起,这个版本的游戏太旧了;请更新到新版本。",
+ "youHaveShortText": "您拥有${COUNT}",
+ "youHaveText": "你拥有${COUNT}点券"
+ },
+ "goldPass": {
+ "desc1InfTokensText": "✨取之不尽的炸弹币",
+ "desc2NoAdsText": "❌移除广告",
+ "desc3ForeverText": "✅一次购买终身使用",
+ "goldPassText": "超级通行证"
+ },
+ "googlePlayPurchasesNotAvailableText": "Google商店购买不可用!\n请安装谷歌框架或更新Google服务。",
+ "googlePlayServicesNotAvailableText": "Google Play服务不可用\n某些功能可能会被禁用",
+ "googlePlayText": "Google Play",
+ "graphicsSettingsWindow": {
+ "alwaysText": "总是",
+ "fullScreenCmdText": "全屏显示(Cmd+F)",
+ "fullScreenCtrlText": "全屏(Ctrl-F)",
+ "fullScreenText": "全屏",
+ "gammaText": "Gamma",
+ "highText": "高",
+ "higherText": "极高",
+ "lowText": "低",
+ "maxFPSText": "最大帧数限制",
+ "mediumText": "中",
+ "neverText": "关",
+ "resolutionText": "分辨率",
+ "showFPSText": "显示帧数",
+ "texturesText": "材质质量",
+ "titleText": "图像质量",
+ "tvBorderText": "UI缩进",
+ "verticalSyncText": "垂直同步",
+ "visualsText": "视觉"
+ },
+ "helpWindow": {
+ "bombInfoText": "炸弹\n比拳头伤害高,但也能把自己送上西天。\n给你个建议:等引线快烧完的时候\n再把炸弹扔向敌人。",
+ "canHelpText": "${APP_NAME}小帮助可以帮你快速入门!",
+ "controllersInfoText": "你可以和好友在同一网络下玩${APP_NAME},或者\n如果你有足够多的手柄,那也可以在同一个设备上游戏。\n${APP_NAME}支持各种选择;你甚至可以通过免费的'${REMOTE_APP_NAME}'\n用手机作为游戏手柄。\n更多信息,请参见设置->手柄。",
+ "controllersInfoTextRemoteOnly": "你可以通过局域网与你的朋友们一起游玩${APP_NAME}\n或者你可以使用${REMOTE_APP_NAME}\n它会将你的手机作为手柄在同一个设备上与你的朋友一起游玩",
+ "controllersText": "手柄",
+ "controlsSubtitleText": "${APP_NAME}的角色基本操作如下:",
+ "controlsText": "控制键",
+ "devicesInfoText": "VR版${APP_NAME}可与\n普通版本联网游戏,所以掏出你所有的手机、平板电脑\n和电脑,大玩一场吧。你甚至还可以将\n普通版本的游戏连接至VR版,\n让游戏外的人也能看你玩。",
+ "devicesText": "设备",
+ "friendsGoodText": "哎,一个人玩?那咋行!${APP_NAME}就是要人多才好玩嘛~\n最多支持8人同时游戏,如果你有魔法可以改掉限制喵~快拉你的小伙伴一起玩吧",
+ "friendsText": "好友",
+ "jumpInfoText": "跳跃\n跳跃可以跳过鸿沟,\n或是把炸弹扔得更远,\n或是表达你难以掩盖的喜悦之情。",
+ "orPunchingSomethingText": "还可以用拳头攻击,或者把敌人举起来然后丢下去,或者更多好玩的...",
+ "pickUpInfoText": "拾起\n你可以拾起旗子,敌人,\n还有所有没固定在地上的东西,\n然后,再扔出去吧~",
+ "powerupBombDescriptionText": "将炸弹最大投掷数量\n三个愿望,一次满足",
+ "powerupBombNameText": "三连炸弹",
+ "powerupCurseDescriptionText": "最好不要接触它。\n...或者你想试试?",
+ "powerupCurseNameText": "诅咒",
+ "powerupHealthDescriptionText": "完全回血!\n想不到吧!",
+ "powerupHealthNameText": "医疗包",
+ "powerupIceBombsDescriptionText": "威力比普通炸弹小,但\n能将你的敌人冻住,\n让它们变成妙脆角!(或者你也可以",
+ "powerupIceBombsNameText": "冰冻弹",
+ "powerupImpactBombsDescriptionText": "威力比普通炸弹稍弱,但碰到外物后\n就会爆炸。(你扔出去后,再多碰一下就会...",
+ "powerupImpactBombsNameText": "触感弹",
+ "powerupLandMinesDescriptionText": "大特价,一包3个。居家旅行,防守阵地的不二选择,\n还可以阻止那些跑的飞快的敌人。\n或者你可以扔出去再打一下??",
+ "powerupLandMinesNameText": "地雷",
+ "powerupPunchDescriptionText": "让您变成专业拳击手\n更高!更快!更强!200%!",
+ "powerupPunchNameText": "拳击手套",
+ "powerupShieldDescriptionText": "能吸收一些伤害,关键时刻\n可能会有用。(记住,时间是敌人)",
+ "powerupShieldNameText": "能量护盾",
+ "powerupStickyBombsDescriptionText": "黏在任何碰到的东西上,然后\n就等着看烟花吧。(其实用力能甩飞...",
+ "powerupStickyBombsNameText": "黏黏炸弹",
+ "powerupsSubtitleText": "当然,没有道具的游戏很难通关:",
+ "powerupsText": "道具",
+ "punchInfoText": "拳击\n跑得越快,拳击的伤害\n越高。所以像疯子一样\n旋转跳跃吧!",
+ "runInfoText": "冲刺\n按住四个键中的一个即可冲刺,如果你用手柄可以将扳机设置为跑\n冲刺跑的虽快,但会造成转向困难。且冲且珍惜()",
+ "someDaysText": "当你想攻击别人时,你可以用各种炸弹",
+ "titleText": "${APP_NAME}帮助",
+ "toGetTheMostText": "要想最痛快地玩这个游戏,你需要:",
+ "welcomeText": "欢迎来到${APP_NAME}!"
+ },
+ "holdAnyButtonText": "<按住任意按钮>",
+ "holdAnyKeyText": "<按住任何键>",
+ "hostIsNavigatingMenusText": "- ${HOST}像皇帝一样控制主菜单 -",
+ "importPlaylistCodeInstructionsText": "用代码来导入列表",
+ "importPlaylistSuccessText": "成功导入${TYPE}列表 '${NAME}'",
+ "importText": "导入",
+ "importingText": "导入中",
+ "inGameClippedNameText": "名字会是\n\"${NAME}\"",
+ "inboxText": "收件箱",
+ "installDiskSpaceErrorText": "错误:无法完成安装。\n您的设备可能是空间不足。\n腾出一些空间,然后重试。",
+ "internal": {
+ "arrowsToExitListText": "按${LEFT}或${RIGHT}退出列表",
+ "buttonText": "按钮",
+ "cantKickHostError": "你不能踢房主啊喂!",
+ "chatBlockedText": "玩家 ${NAME} 被禁言 ${TIME} 秒,有话慢点说",
+ "connectedToGameText": "加入 '${NAME}'",
+ "connectedToPartyText": "加入${NAME}的房间!",
+ "connectingToPartyText": "正在连接...",
+ "connectionFailedHostAlreadyInPartyText": "连接失败;创建者正在另一派对中。",
+ "connectionFailedPartyFullText": "连接出错:房间满员了…",
+ "connectionFailedText": "连接失败。",
+ "connectionFailedVersionMismatchText": "连接失败;创建者正在运行不同版本的游戏。\n请确保你们都安装了最新版本,然后再试一次。",
+ "connectionRejectedText": "连接被拒绝。",
+ "controllerConnectedText": "${CONTROLLER}已连接。",
+ "controllerDetectedText": "检测到1个手柄。",
+ "controllerDisconnectedText": "${CONTROLLER}断开连接。",
+ "controllerDisconnectedTryAgainText": "${CONTROLLER}断开连接。请尝试重新连接。",
+ "controllerForMenusOnlyText": "此控制器无法在游戏中使用",
+ "controllerReconnectedText": "${CONTROLLER}重新连接。",
+ "controllersConnectedText": "已连接${COUNT}个手柄。",
+ "controllersDetectedText": "检测到${COUNT}个手柄。",
+ "controllersDisconnectedText": "${COUNT}个手柄断开连接。",
+ "corruptFileText": "检测到已损坏的文件。请尝试重新安装,或发送电子邮件至${EMAIL}",
+ "errorPlayingMusicText": "播放音乐错误:${MUSIC}",
+ "errorResettingAchievementsText": "无法重置在线成就;请稍后再试。",
+ "hasMenuControlText": "${NAME}目前拥有菜单的控制权限。",
+ "incompatibleNewerVersionHostText": "房主运行着最新版本游戏。\n请更新您的游戏版本然后重试。",
+ "incompatibleVersionHostText": "创建者正在运行不同版本的游戏。\n请确保你们都安装了最新版本,然后再试一次。",
+ "incompatibleVersionPlayerText": "${NAME}正在运行不同版本的游戏。\n请确保你们都安装了最新版本,然后再试一次。",
+ "invalidAddressErrorText": "错误:无效的地址。",
+ "invalidNameErrorText": "错误:无效的名字",
+ "invalidPortErrorText": "错误:无效端口",
+ "invitationSentText": "已发出邀请。",
+ "invitationsSentText": "已发出${COUNT}个邀请。",
+ "joinedPartyInstructionsText": "有人加入了你的派对\n去“开始战斗”中开始一场游戏吧",
+ "keyboardText": "键盘",
+ "kickIdlePlayersKickedText": "${NAME}空闲,将其踢出。",
+ "kickIdlePlayersWarning1Text": "如果${NAME}仍然空闲,则将在${COUNT}秒后被踢出。",
+ "kickIdlePlayersWarning2Text": "(您可以在设置 ->高级中将其关闭)",
+ "leftGameText": "离开 '${NAME}'.",
+ "leftPartyText": "离开${NAME}的游戏",
+ "noMusicFilesInFolderText": "文件夹内没有音乐文件。",
+ "playerJoinedPartyText": "${NAME}加入了游戏!",
+ "playerLeftPartyText": "${NAME}离开了游戏。",
+ "rejectingInviteAlreadyInPartyText": "拒绝邀请(已经在派对中)。",
+ "serverRestartingText": "服务器自动重启中,请重新加入..",
+ "serverShuttingDownText": "服务器正在关机…",
+ "signInErrorText": "登录出错啦~",
+ "signInNoConnectionText": "哎呀,无法登录。(网络连接有故障?)",
+ "telnetAccessDeniedText": "错误:用户未得到telnet访问授权。",
+ "timeOutText": "(将在${TIME}秒内超出时限)",
+ "touchScreenJoinWarningText": "您已以触摸屏方式加入。\n如果这是一个错误,点击“菜单->离开游戏菜单”。",
+ "touchScreenText": "触摸屏",
+ "unableToCompleteTryAgainText": "现在无法完成。\n请重试。",
+ "unableToResolveHostText": "错误:请输入正确的地址",
+ "unavailableNoConnectionText": "哎呀,这个用不了呢(请等待连接主服务器)",
+ "vrOrientationResetCardboardText": "点击手机屏幕,重置VR定位。\n您需使用外部手柄来玩VR版炸弹小分队。",
+ "vrOrientationResetText": "VR定位重置。",
+ "willTimeOutText": "(若空闲则会超出时限)"
+ },
+ "inventoryText": "库存",
+ "jumpBoldText": "跳",
+ "jumpText": "跳",
+ "keepText": "举起",
+ "keepTheseSettingsText": "要保留您的新设置吗?",
+ "keyboardChangeInstructionsText": "双击空格以更改控制器",
+ "keyboardNoOthersAvailableText": "无其他可用的控制器",
+ "keyboardSwitchText": "切换控制器为\"${NAME}\"",
+ "kickOccurredText": "踢出 ${NAME}",
+ "kickQuestionText": "你们说要不要踢 ${NAME}? 呢…",
+ "kickText": "踢出",
+ "kickVoteCantKickAdminsText": "无法踢出管理员.",
+ "kickVoteCantKickSelfText": "您不能踢出您自己.",
+ "kickVoteFailedNotEnoughVotersText": "没有足够玩家投票",
+ "kickVoteFailedText": "踢出玩家投票未成功",
+ "kickVoteStartedText": "踢出${NAME}的投票已被发起",
+ "kickVoteText": "投票踢出玩家",
+ "kickVotingDisabledText": "投票踢出已被禁用.",
+ "kickWithChatText": "在聊天框中输入 ${YES} 来同意,输入 ${NO} 来拒绝",
+ "killsTallyText": "${COUNT}次击杀",
+ "killsText": "击杀数",
+ "kioskWindow": {
+ "easyText": "简单",
+ "epicModeText": "史诗模式",
+ "fullMenuText": "完整菜单",
+ "hardText": "困难",
+ "mediumText": "中等",
+ "singlePlayerExamplesText": "单人游戏/合作模式样例",
+ "versusExamplesText": "对战模式样例"
+ },
+ "languageSetText": "现在的语言是 \"${LANGUAGE}\"。",
+ "lapNumberText": "圈数:${CURRENT}/${TOTAL}",
+ "lastGamesText": "(最后${COUNT}局比赛)",
+ "leaderboardsText": "排行榜",
+ "league": {
+ "allTimeText": "所有时间",
+ "currentSeasonText": "当前赛季(${NUMBER})",
+ "leagueFullText": "${NAME}联赛",
+ "leagueRankText": "联赛排名",
+ "leagueText": "联赛",
+ "rankInLeagueText": "#${RANK}、${NAME}联赛${SUFFIX}",
+ "seasonEndedDaysAgoText": "赛季已于${NUMBER}天前结束。",
+ "seasonEndsDaysText": "赛季将于${NUMBER}天后结束。",
+ "seasonEndsHoursText": "赛季将于${NUMBER}小时后结束。",
+ "seasonEndsMinutesText": "赛季将于${NUMBER}分钟后结束。",
+ "seasonText": "第${NUMBER}赛季",
+ "tournamentLeagueText": "你一定要到${NAME}联赛参加这项赛事。",
+ "trophyCountsResetText": "奖杯计数将在下个赛季重置。",
+ "upToDateBonusDescriptionText": "运行最新版本的\n游戏在此处获得 ${PERCENT}% 奖金。",
+ "upToDateBonusText": "最新奖金"
+ },
+ "learnMoreText": "更多信息",
+ "levelBestScoresText": "在 ${LEVEL}中的最佳成绩",
+ "levelBestTimesText": "在 ${LEVEL}中的最佳时间",
+ "levelIsLockedText": "${LEVEL}处于锁定状态。",
+ "levelMustBeCompletedFirstText": "必须先完成${LEVEL}。",
+ "levelText": "${NUMBER}关卡",
+ "levelUnlockedText": "关卡解锁!",
+ "livesBonusText": "生命奖励",
+ "loadingText": "载入中",
+ "loadingTryAgainText": "加载中请稍后再试",
+ "macControllerSubsystemBothText": "均可(不推荐)",
+ "macControllerSubsystemClassicText": "经典",
+ "macControllerSubsystemDescriptionText": "(如果你的手柄无法工作,请尝试更改此项)",
+ "macControllerSubsystemMFiNoteText": "已检测到 Made-for-iOS/Mac 手柄;\n你需要在 设置->手柄 中启用该设备",
+ "macControllerSubsystemMFiText": "Made-for-iOS/Mac",
+ "macControllerSubsystemTitleText": "手柄支持",
+ "mainMenu": {
+ "creditsText": "制作团队",
+ "demoMenuText": "演示菜单",
+ "endGameText": "结束",
+ "endTestText": "结束测试",
+ "exitGameText": "退出",
+ "exitToMenuText": "退出到菜单",
+ "howToPlayText": "小帮助",
+ "justPlayerText": "(仅${NAME})",
+ "leaveGameText": "离开游戏",
+ "leavePartyConfirmText": "你确定要离开?",
+ "leavePartyText": "离开派对",
+ "quitText": "离开游戏",
+ "resumeText": "回到游戏",
+ "settingsText": "设置"
+ },
+ "makeItSoText": "应用",
+ "mapSelectGetMoreMapsText": "获取更多地图…",
+ "mapSelectText": "选择…",
+ "mapSelectTitleText": "${GAME}地图",
+ "mapText": "地图",
+ "maxConnectionsText": "最大连接数",
+ "maxPartySizeText": "最大派对人数",
+ "maxPlayersText": "最多人数",
+ "merchText": "来买周边吧~",
+ "modeArcadeText": "街机模式",
+ "modeClassicText": "经典模式",
+ "modeDemoText": "演示模式",
+ "moreSoonText": "更多内容即将推出...",
+ "mostDestroyedPlayerText": "被摧毁次数最多的球员",
+ "mostValuablePlayerText": "最具价值玩家",
+ "mostViolatedPlayerText": "最遭暴力玩家",
+ "mostViolentPlayerText": "最暴力玩家",
+ "moveText": "移动",
+ "multiKillText": "${COUNT}连杀!!",
+ "multiPlayerCountText": "${COUNT}名玩家",
+ "mustInviteFriendsText": "注意:你必须在“${GATHER}”面板中邀请好友,\n或连接多个\n手柄,和好友一起游戏。",
+ "nameBetrayedText": "${NAME}背叛了${VICTIM}",
+ "nameDiedText": "${NAME}寄了",
+ "nameKilledText": "${NAME}把${VICTIM}杀了",
+ "nameNotEmptyText": "名字不能为空",
+ "nameScoresText": "${NAME}得分咯!",
+ "nameSuicideKidFriendlyText": "${NAME}意外挂了。",
+ "nameSuicideText": "${NAME}自杀了。",
+ "nameText": "名称",
+ "nativeText": "本机",
+ "newExclaimText": "新品上新!",
+ "newPersonalBestText": "新个人记录!",
+ "newTestBuildAvailableText": "更新的测试版可供下载了!(${VERSION} build${BUILD})。\n到${ADDRESS}获取吧!",
+ "newText": "新建",
+ "newVersionAvailableText": "更新版本的 ${APP_NAME} 可供下载了! 版本号(${VERSION})",
+ "nextAchievementsText": "下一个成就:",
+ "nextLevelText": "下一关",
+ "noAchievementsRemainingText": "- '无'",
+ "noContinuesText": "(无可继续)",
+ "noExternalStorageErrorText": "该设备上未发现外部存储器",
+ "noGameCircleText": "错误:未登入GameCircle",
+ "noMessagesText": "无信息",
+ "noPluginsInstalledText": "没有安装插件",
+ "noScoresYetText": "还未有得分记录。",
+ "noServersFoundText": "未找到服务器",
+ "noThanksText": "不,谢谢",
+ "noTournamentsInTestBuildText": "温馨提示:测试版的锦标赛分数不能计入锦标赛哦!",
+ "noValidMapsErrorText": "该比赛类型中未发现有效地图。",
+ "notEnoughPlayersRemainingText": "剩余玩家不足,退出并开始新游戏。",
+ "notEnoughPlayersText": "你需要至少${COUNT}名玩家来开始这场比赛!",
+ "notEnoughTicketsText": "门票不够!",
+ "notNowText": "不是现在",
+ "notSignedInErrorText": "您必须登录到您的帐户。",
+ "notSignedInGooglePlayErrorText": "您必须通过Google Play登录。",
+ "notSignedInText": "(未登录)",
+ "notUsingAccountText": "注意:已忽略${SERVICE}账户的自动登录\n如果你想用它登录,前往“账户->使用${SERVICE}登录”~",
+ "nothingIsSelectedErrorText": "未选择任何内容!",
+ "numberText": "#${NUMBER}",
+ "offText": "关",
+ "okText": "好的",
+ "onText": "开",
+ "oneMomentText": "请稍候...",
+ "onslaughtRespawnText": "${PLAYER}将于第${WAVE}波后复活",
+ "openMeText": "打开我!",
+ "openNowText": "立即打开",
+ "openText": "打开",
+ "orText": "${A}或${B}",
+ "otherText": "其他。。。",
+ "outOfText": "(在${ALL}名玩家中位列#${RANK})",
+ "ownFlagAtYourBaseWarning": "你的旗帜必须在\n你自己的基地上才能得分!",
+ "partyWindow": {
+ "chatMessageText": "聊天消息",
+ "emptyText": "你的派对为空",
+ "hostText": "(创建者)",
+ "sendText": "发送",
+ "titleText": "你的派对"
+ },
+ "pausedByHostText": "(创建者已暂停)",
+ "perfectWaveText": "完美的一波!",
+ "pickUpText": "捡起",
+ "playModes": {
+ "coopText": "合作",
+ "freeForAllText": "混战模式",
+ "multiTeamText": "多团队",
+ "singlePlayerCoopText": "单人游戏/合作模式",
+ "teamsText": "团队对抗"
+ },
+ "playText": "开始战斗",
+ "playWindow": {
+ "oneToFourPlayersText": "适合1~4名玩家",
+ "titleText": "开始战斗",
+ "twoToEightPlayersText": "适合2~8名玩家"
+ },
+ "playerCountAbbreviatedText": "${COUNT}名玩家",
+ "playerDelayedJoinText": "${PLAYER}将在下一回合开始时进入。",
+ "playerInfoText": "玩家资料",
+ "playerLeftText": "${PLAYER}离开了游戏。",
+ "playerLimitReachedText": "已达到${COUNT}名玩家上限;其他玩家不允许加入。",
+ "playerProfilesWindow": {
+ "cantDeleteAccountProfileText": "您无法删除您的帐户资料。",
+ "deleteButtonText": "删除\n档案",
+ "deleteConfirmText": "删除'${PROFILE}'?",
+ "editButtonText": "编辑\n档案",
+ "explanationText": "(为这个账号定制玩家名称和外观)",
+ "newButtonText": "创建\n档案",
+ "titleText": "玩家档案"
+ },
+ "playerText": "玩家",
+ "playlistNoValidGamesErrorText": "此列表未包含有效的已解锁游戏。",
+ "playlistNotFoundText": "找不到列表",
+ "playlistText": "列表",
+ "playlistsText": "列表",
+ "pleaseRateText": "如果你喜欢 ${APP_NAME},请考虑花一点时间\n来评价一下它或为它写一篇评论。这将为我们提供\n有用的反馈建议,为游戏的未来开发给予支持。\n\n感谢您!\n-eric",
+ "pleaseWaitText": "请稍等...",
+ "pluginClassLoadErrorText": "加载'${PLUGIN}'插件时出错了耶: ${ERROR}",
+ "pluginInitErrorText": "初始化'${PLUGIN}'插件失败了: ${ERROR}",
+ "pluginSettingsText": "插件设置",
+ "pluginsAutoEnableNewText": "自动启用新插件",
+ "pluginsDetectedText": "新插件安装成功,请重启游戏或在设置中设置它们~",
+ "pluginsDisableAllText": "禁用所有插件",
+ "pluginsEnableAllText": "启用所有插件",
+ "pluginsRemovedText": "有${NUM}个插件被删除了...",
+ "pluginsText": "插件",
+ "practiceText": "练习",
+ "pressAnyButtonPlayAgainText": "按任意按钮再玩一次...",
+ "pressAnyButtonText": "按任意按钮继续...",
+ "pressAnyButtonToJoinText": "按任意按钮加入...",
+ "pressAnyKeyButtonPlayAgainText": "按任意键/按钮再玩一次...",
+ "pressAnyKeyButtonText": "按任意键/按钮继续......",
+ "pressAnyKeyText": "按任意键...",
+ "pressJumpToFlyText": "** 按连续跳跃以腾空 **",
+ "pressPunchToJoinText": "按下“出拳”来加入",
+ "pressToOverrideCharacterText": "按${BUTTONS}更换您的角色",
+ "pressToSelectProfileText": "按${BUTTONS}选择一个玩家",
+ "pressToSelectTeamText": "按下${BUTTONS}来选择一支队伍",
+ "promoCodeWindow": {
+ "codeText": "代码",
+ "enterText": "输入"
+ },
+ "promoSubmitErrorText": "提交代码时出错; 检查您的互联网连接",
+ "ps3ControllersWindow": {
+ "macInstructionsText": "关闭PS3背面的电源开关,确保\n您的 Mac 上启用了蓝牙,然后通过USB连接线将您的手柄连接到\n您的 Mac 上使其配对。之后,您\n就可以使用该手柄上的主页按钮以有线(USB)或无线(蓝牙)模式\n将其连接到您的 Mac 上。\n\n在一些 Mac 上配对时可能会提示您输入蓝牙设备的密码。\n在此情况下,请参阅一下教程或搜索百度或Bing寻求帮助。\n\n\n\n\n无线连接的PS3手柄应该出现在\n Mac 上的“系统偏好设置”>“蓝牙”(MacOS Ventura以前适用)或“系统设置”>“蓝牙”(MacOS Ventura及以上适用)\n中的设备列表中。当您想要再次用你的PS3使用它们时,\n您可能需要关闭蓝牙或从该列表中移除它们。\n\n另外,请确保它们在未使用状态下时与蓝牙断开连接,以免其电池持续消耗。\n\nApple 宣称一台 Mac 最多可连接7个蓝牙设备,\n但通常情况下只能连接3至4个蓝牙设备,请视实际情况而定。",
+ "ouyaInstructionsText": "若要通过OUYA使用PS3手柄,仅需使用USB连接线\n将其连接配对。这样做可能会使您的其他手柄断开连接,因此\n您应该重新启动您的OUYA,然后拔下USB连接线。\n\n然后,你应该能够使用手柄的主页按钮\n以无线模式将其连接。结束游戏后,按住主页按钮\n10秒钟,以关闭手柄;否则,手柄将持续处于启动状态\n并消耗电池。",
+ "pairingTutorialText": "配对教程视频",
+ "titleText": "使用 PS3 手柄玩 ${APP_NAME}:"
+ },
+ "punchBoldText": "拳击",
+ "punchText": "拳击",
+ "purchaseForText": "购买花费${PRICE}",
+ "purchaseGameText": "购买游戏",
+ "purchaseNeverAvailableText": "抱歉,此账户无法进行购买\n请使用其他平台的账户进行购买",
+ "purchaseNotAvailableText": "此交易不可用",
+ "purchasingText": "正在购买…",
+ "quitGameText": "退出${APP_NAME}?",
+ "quittingIn5SecondsText": "在5秒后退出...",
+ "randomPlayerNamesText": "企鹅王,企鹅骑士团成员,王♂の传人,挨揍使我快乐,一拳超人,二营长の意大利炮,雪糕,炸鸡翅,手柄玩家18子,寻找宝藏的海盗,炸弹投手,炸弹不是糖果,我是对面的,万有引力,鸟语花香,兔年大吉,小狗狗,大狗子,二狗子,三狗子,四狗子,五狗子,亚达哟,小猪配齐,汤姆猫,小灰机,炸弹大队队长,炸弹教主",
+ "randomText": "随机",
+ "rankText": "排行",
+ "ratingText": "排名",
+ "reachWave2Text": "进入第2波才可排名。",
+ "readyText": "准备",
+ "recentText": "最近",
+ "remoteAppInfoShortText": "与家人或者朋友们一起玩${APP_NAME}是非常有趣的!\n您可以连接一个或多个硬件控制器\n或者在手机、平板上安装${REMOTE_APP_NAME}APP程序\n把他们当做控制器使用。",
+ "remote_app": {
+ "app_name": "炸弹小分队手柄",
+ "app_name_short": "炸弹小分队手柄",
+ "button_position": "按钮位置",
+ "button_size": "按钮尺寸",
+ "cant_resolve_host": "无法解析主机。",
+ "capturing": "捕捉中…",
+ "connected": "已连接。",
+ "description": "使用手机或平板电脑作为炸弹小分队游戏手柄。\n一台电视或平板电脑上可同时连接8台设备,体验史诗级多人模式的疯狂游戏。",
+ "disconnected": "服务器断开连接",
+ "dpad_fixed": "固定",
+ "dpad_floating": "浮动",
+ "dpad_position": "方向键位置",
+ "dpad_size": "方向键尺寸",
+ "dpad_type": "方向键类型",
+ "enter_an_address": "输入地址",
+ "game_full": "游戏连接已满或不接受更多连接。",
+ "game_shut_down": "游戏关闭。",
+ "hardware_buttons": "硬件按钮",
+ "join_by_address": "通过地址…加入",
+ "lag": "延迟:${SECONDS}秒",
+ "reset": "恢复默认值",
+ "run1": "运行 1",
+ "run2": "运行 2",
+ "searching": "正在搜索炸弹小分队游戏…",
+ "searching_caption": "点击游戏名,进入游戏。\n确保和游戏处于相同的wifi网络下。",
+ "start": "开始",
+ "version_mismatch": "版本不匹配。\n确定 炸弹小分队 和 BombSquad Remote\n 为最新版本后,重新尝试。"
+ },
+ "removeInGameAdsText": "在商店中解锁\"${PRO}\",以删除游戏中的广告。",
+ "removeInGameAdsTokenPurchaseText": "限时优惠:购买任何代币包以删除游戏内广告。",
+ "renameText": "重命名",
+ "replayEndText": "结束回放",
+ "replayNameDefaultText": "终场游戏回放",
+ "replayReadErrorText": "读取回放文件时出错。",
+ "replayRenameWarningText": "如果想保存回放文件,则以游戏来命名\"${REPLAY}\";否则文件将被覆盖。",
+ "replayVersionErrorText": "抱歉,该回放由不同版本的游戏制成,\n不能使用。",
+ "replayWatchText": "观看回放",
+ "replayWriteErrorText": "写入回放文件时出错。",
+ "replaysText": "回放",
+ "reportPlayerExplanationText": "利用此电子邮箱举报作弊、 不当言语或其他不良行为。\n请描述如下信息:",
+ "reportThisPlayerCheatingText": "作弊",
+ "reportThisPlayerLanguageText": "不当言语",
+ "reportThisPlayerReasonText": "举报内容是?",
+ "reportThisPlayerText": "举报该玩家",
+ "requestingText": "正在请求...",
+ "restartText": "重新启动",
+ "retryText": "请重试",
+ "revertText": "还原",
+ "runText": "运行",
+ "saveText": "保存",
+ "scanScriptsErrorText": "检查Mod文件时发现错误,报错见炸队日志文件喵",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} 和 ${NUM} 个模组需要升级到API${API}才能使用喵~",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} 需要升级到API${API}才能使用喵~",
+ "scoreChallengesText": "得分挑战",
+ "scoreListUnavailableText": "得分列表不可用。",
+ "scoreText": "得分",
+ "scoreUnits": {
+ "millisecondsText": "毫秒",
+ "pointsText": "分",
+ "secondsText": "秒"
+ },
+ "scoreWasText": "(是${COUNT})",
+ "selectText": "选择",
+ "sendInfoDescriptionText": "在这里输入你想反馈给开发者的话...(记得附上姓名和原因)\n也可以输入礼包码来兑换礼包(专业版或者点券啥的)",
+ "seriesWinLine1PlayerText": "获得",
+ "seriesWinLine1TeamText": "获得",
+ "seriesWinLine1Text": "获得",
+ "seriesWinLine2Text": "冠军!",
+ "settingsWindow": {
+ "accountText": "账户",
+ "advancedText": "高级",
+ "audioText": "音效",
+ "controllersText": "控制器",
+ "graphicsText": "图像",
+ "playerProfilesMovedText": "注意:玩家档案已移至主菜单的「账号」窗口下",
+ "titleText": "设置"
+ },
+ "settingsWindowAdvanced": {
+ "alwaysUseInternalKeyboardDescriptionText": "(一款简单、控制方便的用于英文文本编辑的屏幕键盘(打中文想都不要想))",
+ "alwaysUseInternalKeyboardText": "始终使用内置键盘",
+ "benchmarksText": "基准与压力测试",
+ "devToolsText": "开发工具",
+ "disableCameraGyroscopeMotionText": "禁用相机陀螺仪运动",
+ "disableCameraShakeText": "禁用相机抖动",
+ "disableThisNotice": "(可在高级设置中关闭此通知)",
+ "enterPromoCodeText": "输入兑换代码",
+ "forTestingText": "注意:这些数值仅用于测试,并会在应用程序退出时丢失。",
+ "helpTranslateText": "${APP_NAME}有中文汉化是咱们社区\n共同努力的成果。如果您希望参与翻译或对其提出更正,\n请点击这个按钮。十分感谢!",
+ "insecureConnectionsDescriptionText": "不推荐,但(也许会)允许\n受限国家/网络的线上游玩",
+ "insecureConnectionsText": "使用非私密链接",
+ "kickIdlePlayersText": "踢掉空闲玩家",
+ "kidFriendlyModeText": "低龄段友好模式(低暴力等)",
+ "languageText": "语言",
+ "moddingGuideText": "Mod文档",
+ "moddingToolsText": "Mod工具",
+ "mustRestartText": "必须重启游戏后生效喵",
+ "netTestingText": "网络测试",
+ "resetText": "恢复默认值",
+ "sendInfoText": "功能反馈/兑换礼包码",
+ "showBombTrajectoriesText": "显示炸弹轨迹",
+ "showDemosWhenIdleText": "当游戏空闲时播放演示画面",
+ "showDeprecatedLoginTypesText": "显示不推荐的登录类型",
+ "showDevConsoleButtonText": "显示开发者控制台按钮",
+ "showInGamePingText": "显示游戏延迟",
+ "showPlayerNamesText": "显示玩家名字",
+ "showUserModsText": "显示Mod文件夹",
+ "titleText": "高级",
+ "translationEditorButtonText": "${APP_NAME}翻译编辑器",
+ "translationFetchErrorText": "翻译状态不可用",
+ "translationFetchingStatusText": "正在检查翻译进度…",
+ "translationInformMe": "中文需要更新翻译时请通知我!",
+ "translationNoUpdateNeededText": "当前语言是最新的;喵呜!",
+ "translationUpdateNeededText": "**当前语言需要更新!!**",
+ "vrTestingText": "VR测试"
+ },
+ "shareText": "分享",
+ "sharingText": "分享",
+ "showText": "显示",
+ "signInForPromoCodeText": "您必须登录到一个帐户, 代码才能生效",
+ "singleGamePlaylistNameText": "仅${GAME}",
+ "singlePlayerCountText": "一个玩家",
+ "sizeLargeText": "大",
+ "sizeMediumText": "中",
+ "sizeSmallText": "小",
+ "soloNameFilterText": "单挑模式 ${NAME}",
+ "soundtrackTypeNames": {
+ "CharSelect": "角色选择",
+ "Chosen One": "选定模式",
+ "Epic": "史诗模式游戏",
+ "Epic Race": "史诗级竞赛",
+ "FlagCatcher": "夺旗战",
+ "Flying": "快乐山区",
+ "Football": "运旗战",
+ "ForwardMarch": "突袭战",
+ "GrandRomp": "征服战",
+ "Hockey": "冰球战",
+ "Keep Away": "抓旗战",
+ "Marching": "塔防战",
+ "Menu": "主菜单",
+ "Onslaught": "冲锋战",
+ "Race": "竞赛",
+ "Scary": "山丘之王",
+ "Scores": "得分屏幕",
+ "Survival": "消除战",
+ "ToTheDeath": "死亡竞赛",
+ "Victory": "最终得分屏幕"
+ },
+ "spaceKeyText": "空格",
+ "statsText": "详情",
+ "stopRemindingMeText": "别再提醒我",
+ "storagePermissionAccessText": "需要存储权限",
+ "store": {
+ "alreadyOwnText": "您已拥有${NAME}!",
+ "bombSquadProNameText": "${APP_NAME}专业版",
+ "bombSquadProNewDescriptionText": "• 移除游戏内广告和烦人页面\n• 解锁更多的游戏设置\n• 另外还包括:",
+ "buyText": "购买",
+ "charactersText": "人物",
+ "comingSoonText": "敬请期待……",
+ "extrasText": "额外部分",
+ "holidaySpecialText": "假期特献",
+ "howToSwitchCharactersText": "(进入\"${SETTINGS} -> ${PLAYER_PROFILES}\"指定和自定义人物)",
+ "howToUseIconsText": "(升级全球档案以使用图标)",
+ "howToUseMapsText": "(在团队/混战游戏中使用这些地图)",
+ "iconsText": "图标",
+ "loadErrorText": "无法加载页面。\n请检查您的网络连接。",
+ "loadingText": "加载中",
+ "mapsText": "地图",
+ "miniGamesText": "迷你游戏",
+ "oneTimeOnlyText": "(仅一次)",
+ "purchaseAlreadyInProgressText": "该物品的购买已在进行中。",
+ "purchaseConfirmText": "购买${ITEM}?",
+ "purchaseNotValidError": "购买无效。\n如果这是一个错误,请联系${EMAIL}。",
+ "purchaseText": "购买",
+ "saleBundleText": "捆绑销售!",
+ "saleExclaimText": "出售!",
+ "salePercentText": "(${PERCENT}%折扣)",
+ "saleText": "特卖",
+ "searchText": "搜索",
+ "teamsFreeForAllGamesText": "团队/混战游戏",
+ "totalWorthText": "*** 价值${TOTAL_WORTH}! ***",
+ "upgradeQuestionText": "升级专业版吗?",
+ "winterSpecialText": "冬季特献",
+ "youOwnThisText": "- 您已拥有 -"
+ },
+ "storeDescriptionText": "8人派对游戏疯狂乱炸!\n\n在迷你型爆炸游戏炸飞你的基友(或机器人),如夺旗战、冰球战及史诗级慢动作死亡竞赛!\n\n控制简单,操作便捷,可轻松支持多达8人同时游戏;您甚至可以通过免费的“炸弹小分队手柄”应用将您的手机作为手柄使用!\n\n炸死他们吧。\n\n更多信息,请打开www.froemling.net/bombsquad。",
+ "storeDescriptions": {
+ "blowUpYourFriendsText": "炸飞你的朋友们",
+ "competeInMiniGamesText": "在竞速游戏、飞行游戏中一决高下吧",
+ "customize2Text": "支持自定义角色、游戏玩法,甚至背景音乐",
+ "customizeText": "选择角色并创建自己的游戏关卡吧",
+ "sportsMoreFunText": "加入炸药后游戏会变得更嗨皮。",
+ "teamUpAgainstComputerText": "或者和机器人PK"
+ },
+ "storeText": "商店",
+ "submitText": "提交",
+ "submittingPromoCodeText": "正在提交代码...",
+ "successText": "成功",
+ "supportEmailText": "如果你在APP遇到任何问题\n请发邮件到${EMAIL}",
+ "teamNamesColorText": "团队名称/颜色。。。",
+ "telnetAccessGrantedText": "Telnet访问已启用。",
+ "telnetAccessText": "检测到Telnet访问;是否允许?",
+ "testBuildErrorText": "该测试版已失效;请检查是否存在新版本。",
+ "testBuildText": "测试版",
+ "testBuildValidateErrorText": "无法验证测试版。(无网络连接?)",
+ "testBuildValidatedText": "测试版已通过验证;尽请享用!",
+ "thankYouText": "感谢您的支持!尽情享受游戏!!",
+ "threeKillText": "三杀!!",
+ "ticketsDescriptionText": "门票可用于解锁商店中的角色、\n地图、迷你游戏等。\n\n门票可以在通过活动、\n锦标赛和成就赢得的箱子里找到。",
+ "timeBonusText": "时间奖励",
+ "timeElapsedText": "时间耗尽",
+ "timeExpiredText": "时间结束",
+ "timeSuffixDaysText": "${COUNT}天",
+ "timeSuffixHoursText": "${COUNT}时",
+ "timeSuffixMinutesText": "${COUNT}分",
+ "timeSuffixSecondsText": "${COUNT}秒",
+ "tipText": "提示",
+ "titleText": "炸弹小分队",
+ "titleVRText": "炸弹小分队 VR",
+ "tokens": {
+ "getTokensText": "购买炸弹币",
+ "notEnoughTokensText": "炸弹币不足哦",
+ "numTokensText": "${COUNT}个炸弹币",
+ "openNowDescriptionText": "您现在有足够的代币来\n打开它 - 您不需要\n等待。",
+ "shinyNewCurrencyText": "炸队的新型货币喵喵喵",
+ "tokenPack1Text": "小型炸币包",
+ "tokenPack2Text": "中型炸币包",
+ "tokenPack3Text": "大型炸币包",
+ "tokenPack4Text": "超大炸币包",
+ "tokensDescriptionText": "代币用于加速胸部解锁以及其他游戏和帐户功能。\n您可以在游戏中赢得代币,\n\n也可以打包购买。\n或者购买无限代币的Gold Pass,\n再也不会听说它们了。",
+ "youHaveGoldPassText": "你获得了黄金通行证\n所有花销全部免费啦!\n感谢你游玩本游戏!"
+ },
+ "topFriendsText": "最佳好友",
+ "tournamentCheckingStateText": "检查锦标赛状态;请稍候……",
+ "tournamentEndedText": "本次锦标赛已经结束。一场新的锦标赛即将开始。",
+ "tournamentEntryText": "锦标赛入口",
+ "tournamentFinalStandingsText": "最终排名",
+ "tournamentResultsRecentText": "最近锦标赛结果",
+ "tournamentStandingsText": "锦标赛积分榜",
+ "tournamentText": "锦标赛",
+ "tournamentTimeExpiredText": "锦标赛时间结束",
+ "tournamentsDisabledWorkspaceText": "工作区启用时无法参加锦标赛!\n关闭工作区,才能进入锦标赛。",
+ "tournamentsText": "锦标赛",
+ "translations": {
+ "characterNames": {
+ "Agent Johnson": "约翰逊特工",
+ "B-9000": "B-9000",
+ "Bernard": "伯纳德",
+ "Bones": "骷髅",
+ "Butch": "牛仔邦奇",
+ "Easter Bunny": "复活兔",
+ "Flopsy": "萌兔耷拉",
+ "Frosty": "冰冰",
+ "Gretel": "格蕾特",
+ "Grumbledorf": "男巫",
+ "Jack Morgan": "杰克摩根",
+ "Kronk": "克罗克",
+ "Lee": "李",
+ "Lucky": "幸运儿",
+ "Mel": "梅尔",
+ "Middle-Man": "平衡之尊",
+ "Minimus": "迷你姆斯",
+ "Pascal": "巴斯卡",
+ "Pixel": "精灵",
+ "Sammy Slam": "萨米斯拉姆",
+ "Santa Claus": "圣诞老人",
+ "Snake Shadow": "蛇影",
+ "Spaz": "斯巴子",
+ "Taobao Mascot": "淘公仔",
+ "Todd McBurton": "托德马克波顿",
+ "Zoe": "佐伊",
+ "Zola": "佐拉"
+ },
+ "coopLevelNames": {
+ "${GAME} Training": "${GAME}训练",
+ "Infinite ${GAME}": "无限${GAME}",
+ "Infinite Onslaught": "无限冲锋战",
+ "Infinite Runaround": "无限塔防战",
+ "Onslaught Training": "冲锋训练",
+ "Pro ${GAME}": "专业${GAME}",
+ "Pro Football": "专业橄榄球赛",
+ "Pro Onslaught": "专业冲锋战",
+ "Pro Runaround": "专业塔防战",
+ "Rookie ${GAME}": "新手${GAME}",
+ "Rookie Football": "新手橄榄球赛",
+ "Rookie Onslaught": "新手冲锋战",
+ "The Last Stand": "最终杀敌战",
+ "Uber ${GAME}": "高级${GAME}",
+ "Uber Football": "高级橄榄球赛",
+ "Uber Onslaught": "高级冲锋战",
+ "Uber Runaround": "高级塔防战"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} 门票",
+ "${C} Tokens": "${C} 门票",
+ "Chest": "宝箱",
+ "L1 Chest": "一级宝箱",
+ "L2 Chest": "二级宝箱",
+ "L3 Chest": "三级宝箱",
+ "L4 Chest": "四级宝箱",
+ "L5 Chest": "五级宝箱",
+ "L6 Chest": "六级宝箱",
+ "Unknown Chest": "???宝箱"
+ },
+ "gameDescriptions": {
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "在一定时间内取代选定目标进而获得胜利。\n杀死选定目标并取而代之。",
+ "Bomb as many targets as you can.": "尽可能多地炸毁目标。",
+ "Carry the flag for ${ARG1} seconds.": "扛旗${ARG1}秒。",
+ "Carry the flag for a set length of time.": "在设定时长内扛旗。",
+ "Crush ${ARG1} of your enemies.": "粉碎${ARG1}敌人。",
+ "Defeat all enemies.": "打败所有的敌人。",
+ "Dodge the falling bombs.": "躲避下落的炸弹。",
+ "Final glorious epic slow motion battle to the death.": "在最后的荣耀史诗级慢动作大战中战斗至死。",
+ "Gather eggs!": "收集蛋吧!",
+ "Get the flag to the enemy end zone.": "扛旗进入敌人达阵区。",
+ "How fast can you defeat the ninjas?": "你能多快地打败忍者?",
+ "Kill a set number of enemies to win.": "杀死一定数量的敌人来获得胜利。",
+ "Last one standing wins.": "最终杀敌者获胜。",
+ "Last remaining alive wins.": "最终幸存者获胜。",
+ "Last team standing wins.": "最终杀敌团队获胜。",
+ "Prevent enemies from reaching the exit.": "阻止敌人到达出口。",
+ "Reach the enemy flag to score.": "触碰敌人的旗帜来得分。",
+ "Return the enemy flag to score.": "交回敌人的旗帜来得分。",
+ "Run ${ARG1} laps.": "跑${ARG1}圈。",
+ "Run ${ARG1} laps. Your entire team has to finish.": "跑${ARG1}圈。你的整个团队都得完成。",
+ "Run 1 lap.": "跑1圈。",
+ "Run 1 lap. Your entire team has to finish.": "跑1圈。你的整个团队都得完成。",
+ "Run real fast!": "快速奔跑!",
+ "Score ${ARG1} goals.": "${ARG1}进球得分。",
+ "Score ${ARG1} touchdowns.": "${ARG1}触地得分。",
+ "Score a goal.": "一次进球得分。",
+ "Score a touchdown.": "一次触地得分。",
+ "Score some goals.": "多次进球得分。",
+ "Secure all ${ARG1} flags.": "固定所有的${ARG1}旗帜。",
+ "Secure all flags on the map to win.": "固定地图上的所有旗帜来获得胜利。",
+ "Secure the flag for ${ARG1} seconds.": "固定旗帜${ARG1}秒。",
+ "Secure the flag for a set length of time.": "在设定时长内固定旗帜。",
+ "Steal the enemy flag ${ARG1} times.": "窃取敌人的旗帜${ARG1}次。",
+ "Steal the enemy flag.": "窃取敌人的旗帜。",
+ "There can be only one.": "仅单玩家可被选定。",
+ "Touch the enemy flag ${ARG1} times.": "触碰敌人的旗帜${ARG1}次。",
+ "Touch the enemy flag.": "触碰敌人的旗帜。",
+ "carry the flag for ${ARG1} seconds": "扛旗${ARG1}秒",
+ "kill ${ARG1} enemies": "杀死${ARG1}敌人",
+ "last one standing wins": "最终杀敌者获胜",
+ "last team standing wins": "最终杀敌团队获胜",
+ "return ${ARG1} flags": "交回${ARG1}旗帜",
+ "return 1 flag": "交回1面旗帜",
+ "run ${ARG1} laps": "跑${ARG1}圈",
+ "run 1 lap": "跑1圈",
+ "score ${ARG1} goals": "${ARG1}进球得分",
+ "score ${ARG1} touchdowns": "${ARG1}触地得分",
+ "score a goal": "一次进球得分",
+ "score a touchdown": "一次触地得分",
+ "secure all ${ARG1} flags": "固定所有的${ARG1}旗帜",
+ "secure the flag for ${ARG1} seconds": "固定旗帜${ARG1}秒",
+ "touch ${ARG1} flags": "触碰${ARG1}旗帜",
+ "touch 1 flag": "触碰1面旗帜"
+ },
+ "gameNames": {
+ "Assault": "突袭战",
+ "Capture the Flag": "夺旗战",
+ "Chosen One": "选定模式",
+ "Conquest": "征服战",
+ "Death Match": "死亡竞赛",
+ "Easter Egg Hunt": "彩蛋猎人",
+ "Elimination": "消除战",
+ "Football": "运旗战",
+ "Hockey": "冰球战",
+ "Keep Away": "抓旗战",
+ "King of the Hill": "山丘之王",
+ "Meteor Shower": "流星战",
+ "Ninja Fight": "忍者大战",
+ "Onslaught": "冲锋战",
+ "Race": "竞速赛",
+ "Runaround": "塔防战",
+ "Target Practice": "目标训练",
+ "The Last Stand": "最终杀敌战"
+ },
+ "inputDeviceNames": {
+ "Keyboard": "键盘",
+ "Keyboard P2": "键盘P2"
+ },
+ "languages": {
+ "Arabic": "阿拉伯语",
+ "Belarussian": "白俄罗斯语",
+ "Chinese": "简体中文",
+ "ChineseSimplified": "简体中文",
+ "ChineseTraditional": "繁体中文",
+ "Croatian": "克罗地亚语",
+ "Czech": "捷克语",
+ "Danish": "丹麦语",
+ "Dutch": "荷兰语",
+ "English": "英语",
+ "Esperanto": "世界语",
+ "Filipino": "菲律宾语",
+ "Finnish": "芬兰语",
+ "French": "法语",
+ "German": "德语",
+ "Gibberish": "胡言乱语 - 用于测试",
+ "Greek": "希腊语",
+ "Hindi": "印度语",
+ "Hungarian": "匈牙利语",
+ "Indonesian": "印尼语",
+ "Italian": "意大利语",
+ "Japanese": "日本语",
+ "Korean": "朝鲜语",
+ "Malay": "马来语",
+ "Persian": "波斯文",
+ "PirateSpeak": "海盗语",
+ "Polish": "波兰语",
+ "Portuguese": "葡萄牙语",
+ "PortugueseBrazil": "葡萄牙语 - 巴西",
+ "PortuguesePortugal": "葡萄牙语 - 葡萄牙",
+ "Romanian": "罗马尼亚语",
+ "Russian": "俄语",
+ "Serbian": "塞尔维亚语",
+ "Slovak": "斯洛伐克语",
+ "Spanish": "西班牙语",
+ "SpanishLatinAmerica": "西班牙语 - 拉丁美洲",
+ "SpanishSpain": "西班牙语 - 西班牙",
+ "Swedish": "瑞典语",
+ "Tamil": "泰米尔语",
+ "Thai": "泰语",
+ "Turkish": "土耳其语",
+ "Ukrainian": "乌克兰语",
+ "Venetian": "威尼斯语",
+ "Vietnamese": "越南语"
+ },
+ "leagueNames": {
+ "Bronze": "铜牌联赛",
+ "Diamond": "钻石联赛",
+ "Gold": "金牌联赛",
+ "Silver": "银牌联赛"
+ },
+ "mapsNames": {
+ "Big G": "大G地图",
+ "Bridgit": "小桥地图",
+ "Courtyard": "庭院地图",
+ "Crag Castle": "岩城地图",
+ "Doom Shroom": "末日蘑菇地图",
+ "Football Stadium": "橄榄球场",
+ "Happy Thoughts": "快乐想法",
+ "Hockey Stadium": "曲棍球场地图",
+ "Lake Frigid": "寒湖地图",
+ "Monkey Face": "猴面地图",
+ "Rampage": "狂暴地图",
+ "Roundabout": "塔防地图",
+ "Step Right Up": "攻击地图",
+ "The Pad": "平板地图",
+ "Tip Top": "顶点地图",
+ "Tower D": "塔防地图",
+ "Zigzag": "蜿蜒地图"
+ },
+ "playlistNames": {
+ "Just Epic": "仅限史诗级",
+ "Just Sports": "仅限运动类"
+ },
+ "scoreNames": {
+ "Flags": "旗帜",
+ "Goals": "进球",
+ "Score": "得分",
+ "Survived": "幸存",
+ "Time": "时间",
+ "Time Held": "保持时间"
+ },
+ "serverResponses": {
+ "A code has already been used on this account.": "该账户已使用代码。",
+ "A reward has already been given for that address.": "您已经领取过该奖励了",
+ "Account linking successful!": "账号连接成功!",
+ "Account unlinking successful!": "取消关联账户成功!",
+ "Accounts are already linked.": "账号已经连接。",
+ "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "广告加载失败。\n请验证你的游戏版本为官方最新版。",
+ "An error has occurred; (${ERROR})": "出现了一个错误; (${ERROR})",
+ "An error has occurred; please contact support. (${ERROR})": "出现了一个错误,请联系官方获取支持.(${ERROR})",
+ "An error has occurred; please contact support@froemling.net.": "发生了一个错误,请联系 support@froemling.net。",
+ "An error has occurred; please try again later.": "发生了一个错误, 请稍候再试",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "确定要链接这些账户?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\n此操作不可撤销!",
+ "BombSquad Pro unlocked!": "炸弹小分队专业版已解锁!",
+ "Can't link 2 accounts of this type.": "无法连接2个这种账号。",
+ "Can't link 2 diamond league accounts.": "无法连接两个钻石联赛账号。",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "无法连接,会超过上限 ${COUNT} 个账号。",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": "发现作弊行为;得分及奖励在${COUNT}天内暂停。",
+ "Could not establish a secure connection.": "无法建立安全连接。",
+ "Daily maximum reached.": "已达今日上限。",
+ "Daily sign-in reward": "每日登录奖励",
+ "Entering tournament...": "进入锦标赛……",
+ "Invalid code.": "代码无效。",
+ "Invalid payment; purchase canceled.": "不可用的付款方式:交易取消",
+ "Invalid promo code.": "诶呀,代码好像无效了捏~",
+ "Invalid purchase.": "购买无效。",
+ "Invalid tournament entry; score will be ignored.": "由于你的联赛资料错误,分数会被忽略...",
+ "Item unlocked!": "项目已解除锁定!",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "连接账号行为取消。${ACCOUNT} 含有\n重要数据可能会丢失。\n如果你想要的话,你可以反向链接账号。\n(那样就会丢失这个账号的数据)",
+ "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "将帐户${ACCOUNT}关联到此帐户吗?\n${ACCOUNT}将共享数据。\n此操作不能撤销。",
+ "Longer streaks lead to better rewards.": "连续每日登录会获得更好的奖励",
+ "Max number of playlists reached.": "已达到最大列表数目。",
+ "Max number of profiles reached.": "已达到最大档案数目。",
+ "Maximum friend code rewards reached.": "邀请码奖励达到上限",
+ "Message is too long.": "诶呀,消息有点长捏~有话慢慢说",
+ "New tournament result!": "新的比赛结果!",
+ "No servers are available. Please try again soon.": "当前没有空余的服务器,请稍后再试",
+ "No slots available. Free a slot and try again.": "没有可用插槽。释放一个插槽并重试。",
+ "Profile \"${NAME}\" upgraded successfully.": "${NAME}档案升级成功。",
+ "Profile could not be upgraded.": "档案不可升级。",
+ "Purchase successful!": "购买成功!",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "今日登录获得${COUNT}点券\n明日再来领取${TOMORROW_COUNT}点券",
+ "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "此版本的游戏不再支持服务器功能;\n请更新到较新版本。",
+ "Sorry, there are no uses remaining on this code.": "对不起,此代码已经无法继续使用了。",
+ "Sorry, this code has already been used.": "对不起,此代码已被使用。",
+ "Sorry, this code has expired.": "对不起,此代码已失效。",
+ "Sorry, this code only works for new accounts.": "此代码只能新用户使用啊喂!你是新用户嘛",
+ "Sorry, this has expired.": "抱歉,已过期。",
+ "Still searching for nearby servers; please try again soon.": "正在搜索附近的服务器,请稍后再试",
+ "Streak: ${NUM} days": "已连续登录${NUM}天",
+ "Temporarily unavailable; please try again later.": "目前暂不可用;请稍候再试!",
+ "The tournament ended before you finished.": "本次锦标赛在你完成之前结束。",
+ "This account cannot be unlinked for ${NUM} days.": "此帐户无法在${NUM}天内取消关联。",
+ "This code cannot be used on the account that created it.": "此代码不可在创建其的账户上使用。",
+ "This is currently unavailable; please try again later.": "当前不可用:请稍后再试",
+ "This requires version ${VERSION} or newer.": "这需要版本${VERSION}或更高版本。",
+ "Tournaments disabled due to rooted device.": "此设备已Root或遭到未经授权的修改,已禁用锦标赛。",
+ "Tournaments require ${VERSION} or newer": "比赛需要${VERSION}或更高版本",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "从此帐户取消 ${ACCOUNT} 的关联?\n${ACCOUNT}上的所有数据将被重置。\n(在某些情况下除成就外)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "警告:针对您的帐户发出黑客投诉。\n被盗用的帐户将被禁止。请公平竞技。",
+ "Wait reduced!": "等待减少!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "警告:此版本的游戏仅限于旧帐户数据;内容可能缺失或过时。\n请升级到较新版本的游戏以查看您的最新帐户数据。",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "是否将您的设备帐户关联到此?\n\n您的设备账户为${ACCOUNT1}\n此帐户为${ACCOUNT2}\n\n您可保存现有进度。\n警告: 此操作不可撤消!",
+ "You already own this!": "你已拥有了!",
+ "You can join in ${COUNT} seconds.": "你在${COUNT} 秒后可以加入",
+ "You don't have enough tickets for this!": "你的点券不足!",
+ "You don't own that.": "你没有真正购买它呢..",
+ "You got ${COUNT} tickets!": "你获得了${COUNT}点券!",
+ "You got ${COUNT} tokens!": "您获得了${COUNT}代币!",
+ "You got a ${ITEM}!": "你获得了一个${ITEM}!",
+ "You got a chest!": "你有获得了一个宝箱!",
+ "You got an achievement reward!": "你获得了成就奖励!",
+ "You have been promoted to a new league; congratulations!": "你已被升级至一个新联赛等级;恭喜!",
+ "You lost a chest! (All your chest slots were full)": "你丢了一个宝箱!(你所有的宝箱槽都已满)",
+ "You must update the app to view this.": "您必须更新应用程序才能查看此内容",
+ "You must update to a newer version of the app to do this.": "你必须升级到最新版本才可以",
+ "You must update to the newest version of the game to do this.": "你必须更新到最新版来做到这一点。",
+ "You must wait a few seconds before entering a new code.": "你必须在输入新代码前稍等几秒。",
+ "You placed #${RANK} in a tournament!": "您在锦标赛中排名 #${RANK}!",
+ "You ranked #${RANK} in the last tournament. Thanks for playing!": "你在上一场锦标赛中排名#${RANK}。多谢玩赏本游戏!",
+ "Your account was rejected. Are you signed in?": "您的账号被拒绝。您是否已登录?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "广告观看数据有误,暂时无法继续观看广告",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "你的游戏已被修改。\n请撤销修改并使用官方最新版再重试。",
+ "Your friend code was used by ${ACCOUNT}": "${ACCOUNT}使用了你的分享代码了哦~"
+ },
+ "settingNames": {
+ "1 Minute": "1分钟",
+ "1 Second": "1秒钟",
+ "10 Minutes": "10分钟",
+ "2 Minutes": "2分钟",
+ "2 Seconds": "2秒钟",
+ "20 Minutes": "20分钟",
+ "4 Seconds": "4秒钟",
+ "5 Minutes": "5分钟",
+ "8 Seconds": "8秒钟",
+ "Allow Negative Scores": "允许负分",
+ "Balance Total Lives": "平衡总生命",
+ "Bomb Spawning": "生成炸弹",
+ "Chosen One Gets Gloves": "选定目标获取手套",
+ "Chosen One Gets Shield": "选定目标获取盾牌",
+ "Chosen One Time": "选定模式时间",
+ "Enable Impact Bombs": "启用冲击炸弹",
+ "Enable Triple Bombs": "启用三连炸弹",
+ "Entire Team Must Finish": "整个队伍必须一起通过(一人跑路全队遭殃)",
+ "Epic Mode": "史诗模式",
+ "Flag Idle Return Time": "旗帜闲置返回时间",
+ "Flag Touch Return Time": "旗帜触碰返回时间",
+ "Hold Time": "保持时间",
+ "Kills to Win Per Player": "每一玩家取胜击杀数",
+ "Laps": "圈数",
+ "Lives Per Player": "每一玩家生命",
+ "Long": "长",
+ "Longer": "更长",
+ "Mine Spawning": "地雷增生",
+ "No Mines": "无地雷",
+ "None": "无",
+ "Normal": "正常",
+ "Pro Mode": "专业模式",
+ "Respawn Times": "复活时间",
+ "Score to Win": "得分取胜",
+ "Short": "短",
+ "Shorter": "更短",
+ "Solo Mode": "单人模式",
+ "Target Count": "目标计数",
+ "Time Limit": "时限"
+ },
+ "statements": {
+ "${TEAM} is disqualified because ${PLAYER} left": "${TEAM}被踢,因为 ${PLAYER}离开了(补药开全队通过)",
+ "Killing ${NAME} for skipping part of the track!": "杀死跳过部分赛道的${NAME}!",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "警告 ${NAME}: 超幅 / 散播按钮 将使你被踢出。补药用连点啊!"
+ },
+ "teamNames": {
+ "Bad Guys": "坏人队",
+ "Blue": "蓝队",
+ "Good Guys": "好人队",
+ "Red": "红队"
+ },
+ "tips": {
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "一记完美、及时的“跑跳旋转拳”可一次性击杀敌人,并\n助你一生享有好友的尊重。",
+ "Always remember to floss.": "地面上的辅助线可能会有用。",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "请不要总是使用系统提供的随机档案,\n你可以在账户-玩家档案里创建自己的档案喵~",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "诅咒之盒把你变成了一个定时炸弹。\n唯一的解决方法是迅速抢到医疗包。",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "尽管长相不同,所有人物的技能是相同的,\n所以只需随意挑选一个与你最相似的。",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "不要因为拥有能量盾牌而狂妄自大;你仍然可能使自己坠入悬崖。",
+ "Don't run all the time. Really. You will fall off cliffs.": "不要一直奔跑,真的,你可能会坠入悬崖。",
+ "Don't spin for too long; you'll become dizzy and fall.": "不要旋转得太久,不然你会傻乎乎地眩晕并摔倒。",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "按住任意按钮来奔跑。(如果你有的话,扳机按钮将会很有用)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "按住任意按钮来奔跑,比普通行走的速度会快得多。\n但是奔跑时不太好转弯,所以当心摔下悬崖。",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "冰冻炸弹伤害并不高,但它们能够冻结\n被伤到的人,然后他们身体会变得脆弱(一碰就碎)",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "如果有人把你抓起来了,出拳攻击他们,他们便会放手。\n这在现实生活中同样有效。",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "如果您缺控制器,可以在手机安装「${REMOTE_APP_NAME}」\n然后手机就可以当作控制器啦~",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "如果一个黏黏弹将你困住,你应该四处跳动并转圈。炸弹\n可能被抖落,或如果没有其他办法,你最后的时刻将是有趣的。",
+ "If you kill an enemy in one hit you get double points for it.": "如果你一击杀死一个敌人,你将获得双倍分数。",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "如果你捡到一个诅咒之盒,你唯一的生存希望是\n在接下来的几秒内找到一个医疗包。",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "如果你停留在一个地方,你就完了。为了生存而奔跑和躲避……",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "如果众多玩家进进出出,在设置下打开“自动踢出闲置玩家”,以防\n任何玩家忘记离开游戏。",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "如果你的设备过热,或者你想要节省电池电量,\n则在设置->图形中调低“视觉效果”或“分辨率”",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "如果你的帧速率不稳定,请尝试在游戏的\n图形设置中调低分辨率或视觉效果。",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "在夺旗战中,你的旗帜必须位于你的基地才能得分,如果对方\n团队即将得分,窃取他们的旗帜是一个不错的阻止方法。",
+ "In hockey, you'll maintain more speed if you turn gradually.": "在冰球战中,逐渐转向将使你保持更快的速度。",
+ "It's easier to win with a friend or two helping.": "在拥有一名好友或两个帮扶的情况下更易获胜。",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "就像你试图将炸弹扔到最高点那样跳起来。",
+ "Land-mines are a good way to stop speedy enemies.": "地雷是阻止高速敌人的一个很好的方式。",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "很多东西都可以捡起来并投掷,包括其他玩家。将你的\n敌人抛下悬崖可能是一个有效的且情感上可获得满足的策略。",
+ "No, you can't get up on the ledge. You have to throw bombs.": "不,你不能跳上塔台去。你必须要用炸弹炸死塔台上的人。",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "玩家可在大多数游戏中途加入或离开,\n同时,你也可以在百忙中插上或拔出手柄。",
+ "Practice using your momentum to throw bombs more accurately.": "多加练习,你的炸弹技能会变得更精准",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "拳头跑得越快,拳击的伤害越高,\n所以请成为飞奔的拳击手吧。",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "在投掷炸弹之前来回跑动,\n以“鞭打”炸弹,并将其投掷更远。",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "在TNT炸药箱附近引爆\n一个炸弹来消灭一群敌人。",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "头部是最脆弱的区域,所以一个黏黏弹\n接触头部通常便意味着一个生命的结束。",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "这一关卡永远不会结束,但是更高的得分将\n助你赢得全世界永恒的尊重。",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "投掷力量取决于你所保持的方向。\n如要向前方轻轻投掷某物,不要保持在任何方向。",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "更换背景音乐?更换成你自己音乐吧!\n参见设置->音频->背景音乐",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "尝试在投掷之前将炸弹“爆燃”一秒或两秒。",
+ "Try tricking enemies into killing eachother or running off cliffs.": "试图诱使敌人互相厮杀或坠入悬崖。",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "使用拾取按钮来抢夺旗帜< ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "来回鞭打以投掷更远距离……",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "你可以通过左转或右转“瞄准”出拳。\n这有利于将坏人击倒出边界或在冰球战中得分。",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "你可以根据导火线火花的颜色判断炸弹什么时候爆炸:\n黄色……橙色……红色……嘭。",
+ "You can throw bombs higher if you jump just before throwing.": "如果投弹前跳起,你将投掷更远。",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "当你用头部重击物体时将受到伤害,\n所以尽量不要用头部重击物体。",
+ "Your punches do much more damage if you are running or spinning.": "如果你奔跑或旋转,拳击的伤害将更高。"
+ }
+ },
+ "trophiesRequiredText": "你必须要有至少 ${NUMBER} 个奖杯",
+ "trophiesText": "奖杯",
+ "trophiesThisSeasonText": "本赛季奖杯",
+ "tutorial": {
+ "cpuBenchmarkText": "以惊人的速度运行教程(主要用于测试CPU速度)",
+ "phrase01Text": "嗨,您好!",
+ "phrase02Text": "欢迎来到${APP_NAME}!",
+ "phrase03Text": "以下是用于控制你的角色的一些技巧:",
+ "phrase04Text": "${APP_NAME}的很多方面是以物理为基础的。",
+ "phrase05Text": "例如,当你出拳时,",
+ "phrase06Text": "伤害程度取决于你拳头的速度。",
+ "phrase07Text": "看到没?如果我们不动,这样几乎不会伤害${NAME}。",
+ "phrase08Text": "现在,让我们跳跃并旋转起来,以获得更快的速度。",
+ "phrase09Text": "啊,这样好多了。",
+ "phrase10Text": "奔跑也会发挥作用。",
+ "phrase11Text": "按住任意按钮来奔跑。",
+ "phrase12Text": "想成为一拳超人,可以尝试边跑边旋转。",
+ "phrase13Text": "啊;真抱歉啊,${NAME}。(狗头)",
+ "phrase14Text": "你可以捡起并投掷物体,如旗帜或${NAME}。",
+ "phrase15Text": "最后,还有炸弹。",
+ "phrase16Text": "投掷炸弹需要练习。",
+ "phrase17Text": "大家不要学我这样丢...",
+ "phrase18Text": "跑起来有助你投掷得更远。",
+ "phrase19Text": "跳跃有助你投掷得更高。",
+ "phrase20Text": "“鞭打”你的炸弹以抛出更远的距离。",
+ "phrase21Text": "你还要卡准时机丢出炸弹。",
+ "phrase22Text": "我靠。",
+ "phrase23Text": "可以让火线先燃烧一秒或两秒。",
+ "phrase24Text": "好耶!差点秒杀~",
+ "phrase25Text": "好了,教程先到这里吧。",
+ "phrase26Text": "先尝试一波吧,老铁!",
+ "phrase27Text": "记住刚刚的教程,你会活着回来的!",
+ "phrase28Text": "......好吧,也许...",
+ "phrase29Text": "祝好运!",
+ "randomName1Text": "弗雷德",
+ "randomName2Text": "哈里",
+ "randomName3Text": "比尔",
+ "randomName4Text": "查克",
+ "randomName5Text": "菲尔",
+ "skipConfirmText": "确定跳过教程?点击或按下按钮以确认。(注意你不用跟着点!)",
+ "skipVoteCountText": "${COUNT}/${TOTAL}跳过投票",
+ "skippingText": "跳过教程……",
+ "toSkipPressAnythingText": "(点击或按下任何按钮以跳过教程)"
+ },
+ "twoKillText": "双杀!",
+ "uiScaleText": "UI缩放",
+ "unavailableText": "不可用",
+ "unclaimedPrizesText": "您还有未领取的奖品!",
+ "unconfiguredControllerDetectedText": "检测到未配置的手柄:",
+ "unlockThisInTheStoreText": "这必须在商店中解锁。",
+ "unlockThisProfilesText": "如需创建超过 ${NUM} 个玩家档案,你需要",
+ "unlockThisText": "你需要这些来解锁",
+ "unsupportedControllerText": "抱歉,游戏不兼容你的控制器\"${NAME}\"",
+ "unsupportedHardwareText": "抱歉,此版本的游戏不支持该硬件。",
+ "upFirstText": "进入第一局:",
+ "upNextText": "进入比赛${COUNT}第二局:",
+ "updatingAccountText": "更新您的帐户……",
+ "upgradeText": "升级",
+ "upgradeToPlayText": "在游戏商店中解锁\"${PRO}\",以体验该游戏。",
+ "useDefaultText": "使用默认值",
+ "userSystemScriptsCreateText": "创建并启用外挂载内核代码(会禁用锦标赛)",
+ "userSystemScriptsDeleteText": "停用并删除外挂载内核代码(对内核的更改将被删除!)",
+ "usesExternalControllerText": "该游戏使用外部手柄进行输入。",
+ "usingItunesText": "使用音乐应用设置背景音乐……",
+ "v2AccountLinkingInfoText": "要关联V2账户,请点击“管理账户”喵~",
+ "v2AccountRequiredText": "仅V2账户支持此功能,请先升级账户",
+ "validatingTestBuildText": "测试版验证中……",
+ "viaText": "渠道账户:",
+ "victoryText": "胜利!",
+ "voteDelayText": "${NUMBER} 秒内你不能发起另一个投票",
+ "voteInProgressText": "已经有一个投票在进行中了",
+ "votedAlreadyText": "你已经投过票啦!",
+ "votesNeededText": "通过需要 ${NUMBER} 个投票",
+ "vsText": "vs.",
+ "waitingForHostText": "(请等待${HOST}继续游戏)",
+ "waitingForPlayersText": "等待玩家的加入……",
+ "waitingInLineText": "正在排队等候(人满为患)...",
+ "watchAVideoText": "看一个小广告视频",
+ "watchAnAdText": "观看广告",
+ "watchWindow": {
+ "deleteConfirmText": "删除\"${REPLAY}\"?",
+ "deleteReplayButtonText": "删除\n回放",
+ "myReplaysText": "我的回放",
+ "noReplaySelectedErrorText": "未选择回放",
+ "playbackSpeedText": "回放速度: ${SPEED}",
+ "renameReplayButtonText": "重命名\n录像",
+ "renameReplayText": "重命名\"${REPLAY}\"至:",
+ "renameText": "重命名",
+ "replayDeleteErrorText": "删除回放错误。",
+ "replayNameText": "回放名称",
+ "replayRenameErrorAlreadyExistsText": "该名称的回放已经存在。",
+ "replayRenameErrorInvalidName": "无法重命名回放;名称无效。",
+ "replayRenameErrorText": "重命名回放错误。",
+ "sharedReplaysText": "共享回放",
+ "titleText": "观看回放",
+ "watchReplayButtonText": "观看\n回放"
+ },
+ "waveText": "波",
+ "wellSureText": "确定!",
+ "whatIsThisText": "这啥玩意??",
+ "winsPlayerText": "${NAME}获胜!",
+ "winsTeamText": "${NAME}获胜!",
+ "winsText": "${NAME}获胜!",
+ "workspaceSyncErrorText": "同步${WORKSPACE}出错了啦,详情见日志文件",
+ "workspaceSyncReuseText": "同步${WORKSPACE}时出错,正在使用以前同步的数据....",
+ "worldScoresUnavailableText": "全球得分不可用。",
+ "worldsBestScoresText": "全球最高得分",
+ "worldsBestTimesText": "全球最佳时间",
+ "yesAllowText": "是的,允许!",
+ "yourBestScoresText": "你的最高得分",
+ "yourBestTimesText": "你的最佳时刻",
+ "yourPrizeText": "您的奖品:"
+}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/chinesetraditional.json b/dist/ba_data/data/languages/chinesetraditional.json
index 5c26f30b..3393f3a7 100644
--- a/dist/ba_data/data/languages/chinesetraditional.json
+++ b/dist/ba_data/data/languages/chinesetraditional.json
@@ -6,7 +6,9 @@
"campaignProgressText": "戰役進度[困難]: ${PROGRESS}",
"changeOncePerSeason": "每一賽季只有一次更改機會",
"changeOncePerSeasonError": "您必須等${NUM}天到下個賽季改變此選項",
+ "createAnAccountText": "建立一個帳戶",
"customName": "自定義名稱",
+ "deleteAccountText": "刪除帳戶",
"googlePlayGamesAccountSwitchText": "如果您想使用其他 Google 帳戶,\n使用 Google Play 遊戲應用程序進行切換。",
"linkAccountsEnterCodeText": "輸入代碼",
"linkAccountsGenerateCodeText": "生成代碼",
@@ -23,14 +25,16 @@
"setAccountNameDesc": "選擇你要為你帳號使用的遊戲內名稱。\n你直接使用你其中一個已連結的賬戶的名稱或\n創造一個獨特的自定義名稱。",
"signInInfoText": "登入得以收集票卷,完成線上\n和與其他裝置共享進度",
"signInText": "登入",
+ "signInWithAnEmailAddressText": "以電郵登入",
"signInWithDeviceInfoText": "一個這裝置現有的自動帳號",
"signInWithDeviceText": "使用設備賬戶登入",
"signInWithGameCircleText": "使用Game Circle登入",
"signInWithGooglePlayText": "用play商店登入",
"signInWithTestAccountInfoText": "(舊有的帳號登入方式;使用後來的創設的帳號)",
"signInWithTestAccountText": "用測試帳號登入",
+ "signInWithText": "通過${SERVICE}登錄",
"signInWithV2InfoText": "(可用於所有平臺的賬戶)",
- "signInWithV2Text": "使用Bombsquad賬戶登入",
+ "signInWithV2Text": "以${APP_NAME}登入",
"signOutText": "登出",
"signingInText": "登入中…",
"signingOutText": "登出中…",
@@ -332,9 +336,14 @@
"getMoreGamesText": "獲取更多比賽模式",
"titleText": "新增比賽"
},
+ "addToFavoritesText": "添加到收藏",
+ "addedToFavoritesText": "已將'${NAME}'添加到收藏",
+ "allText": "全部",
"allowText": "允許",
"alreadySignedInText": "你的賬號已在其他設備上登錄\n請退出其他設備的登錄\n然後重試",
"apiVersionErrorText": "無法加載模塊${NAME},它的API版本為${VERSION_USED},我們需要${VERSION_REQUIRED}。",
+ "applyText": "套用",
+ "areYouSureText": "確定?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(“自動”僅在插入耳機時有效)",
"headRelativeVRAudioText": "頭戴式VR音頻",
@@ -356,14 +365,24 @@
"boostText": "加速",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME}是在应用本身中配置的。",
"buttonText": "按鈕",
- "canWeDebugText": "你想要炸彈小分隊自動報告\n錯誤信息給開發人員嗎?\n\n信息中不包含個人信息\n可用於遊戲更加穩定",
+ "canWeDebugText": "你想要${APP_NAME}自動報告\n錯誤信息給開發人員嗎?\n\n信息中不包含個人信息\n可用於遊戲更加穩定",
"cancelText": "取消",
"cantConfigureDeviceText": "抱歉,${DEVICE}不可配置",
"challengeEndedText": "此比賽挑戰已結束",
"chatMuteText": "屏蔽消息",
"chatMutedText": "屏蔽聊天信息",
"chatUnMuteText": "取消屏蔽消息",
+ "chests": {
+ "prizeOddsText": "中獎機率",
+ "reduceWaitText": "減少等待",
+ "slotDescriptionText": "這個插槽可以容納一個箱子。\n\n透過玩戰役關卡贏取寶箱,\n參加比賽,並完成\n成就。",
+ "slotText": "寶箱槽 ${NUM}",
+ "slotsFullWarningText": "警告:您的所有寶箱槽都已滿。\n您在本遊戲中獲得的所有寶箱都將遺失。",
+ "unlocksInText": "解鎖"
+ },
"choosingPlayerText": "<選擇玩家>",
+ "claimText": "宣稱",
+ "codesExplainText": "代碼由開發者提供\n以診斷及改正帳戶問題。",
"completeThisLevelToProceedText": "你需要先完成\n這一關",
"completionBonusText": "完成獎勵",
"configControllersWindow": {
@@ -444,6 +463,7 @@
"swipeText": "滑動",
"titleText": "觸屏操作設置"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE}可以於系統設定中配置",
"configureItNowText": "立即配置?",
"configureText": "配置",
"connectMobileDevicesWindow": {
@@ -464,7 +484,7 @@
"activenessAllTimeInfoText": "不提供所有時間的排名",
"activenessInfoText": "倍數隨著遊戲天數增加\n隨著離線天數減少",
"activityText": "活動",
- "campaignText": "比賽",
+ "campaignText": "徵戰",
"challengesInfoText": "獲得完成迷你遊戲的獎勵\n\n每完成一項挑戰\n獎勵和難度就會隨之增加\n每挑戰失敗或放棄一次,獎勵和難度就會隨之下降",
"challengesText": "挑戰",
"currentBestText": "當前最高分",
@@ -546,6 +566,7 @@
"demoText": "演示",
"denyText": "拒絕",
"deprecatedText": "棄用",
+ "descriptionText": "簡介",
"desktopResText": "桌面分辨率",
"deviceAccountUpgradeText": "警告:\n您已使用設備帳戶(${NAME})登錄。\n設備帳戶將在未來的更新中刪除。\n如果您想保留賬戶,請升級到 V2 帳戶。",
"difficultyEasyText": "簡單",
@@ -556,6 +577,10 @@
"disableRemoteAppConnectionsText": "取消Remote應用連接",
"disableXInputDescriptionText": "允許使用四個以上的控制器,但可能不會正常工作",
"disableXInputText": "禁用XInput",
+ "disabledText": "禁用",
+ "discardText": "丟棄",
+ "discordFriendsText": "想要尋找新的朋友一起遊玩嗎?\n快來加入我們的Discord社區發現新夥伴!",
+ "discordJoinText": "加入Discord社區",
"doneText": "完成",
"drawText": "平局",
"duplicateText": "複製",
@@ -588,6 +613,7 @@
"localProfileText": "(本地檔案)",
"nameDescriptionText": "玩家名稱",
"nameText": "名稱",
+ "profileAlreadyExistsText": "同樣名稱的使用者已存在!",
"randomText": "隨機",
"titleEditText": "編輯檔案",
"titleNewText": "新建檔案",
@@ -623,6 +649,7 @@
"useMusicFolderText": "音樂文件夾"
},
"editText": "修改",
+ "enabledText": "啓用",
"endText": "結束",
"enjoyText": "盡情享用吧",
"epicDescriptionFilterText": "史詩級慢動作${DESCRIPTION}",
@@ -634,6 +661,8 @@
"errorText": "錯誤",
"errorUnknownText": "未知錯誤",
"exitGameText": "退出${APP_NAME}?",
+ "expiredAgoText": "${T} 前已過期",
+ "expiresInText": "${T} 後過期",
"exportSuccessText": "退出'${NAME}'",
"externalStorageText": "外部存儲器",
"failText": "失敗",
@@ -668,6 +697,8 @@
"duplicateText": "複製\n比賽列表",
"editText": "編輯\n比賽列表",
"newText": "新建\n比賽列表",
+ "pointsToWinText": "勝利分數",
+ "seriesLengthText": "遊戲長度",
"showTutorialText": "顯示新手教程",
"shuffleGameOrderText": "隨機比賽模式",
"titleText": "自定義${TYPE}列表"
@@ -693,6 +724,7 @@
"copyCodeConfirmText": "代碼已複製進剪切板",
"copyCodeText": "複製此代碼",
"dedicatedServerInfoText": "建立一個伺服器來獲取最佳效果,詳情見bombsquadgame.com/server",
+ "descriptionShortText": "使用「多人遊戲」視窗來創造多人遊戲。",
"disconnectClientsText": "這將使派對中的${COUNT}位玩家斷開連接\n確定這麼做嗎?",
"earnTicketsForRecommendingAmountText": "如果您的朋友們玩了這款遊戲,它們將會受到${COUNT}點券\n(每個遊玩的朋友會使你獲取${YOU_COUNT}點券)",
"earnTicketsForRecommendingText": "分享遊戲來\n獲取免費點券...",
@@ -705,10 +737,10 @@
"friendHasSentPromoCodeText": "從${NAME}中獲取到${COUNT}個${APP_NAME}點券",
"friendPromoCodeAwardText": "每使用一次,你就會收到${COUNT}張點券",
"friendPromoCodeExpireText": "此代碼將在${EXPIRE_HOURS}小時後失效,該代碼只對新玩家有效",
- "friendPromoCodeInstructionsText": "要使用此代碼,可打開${APP_NAME}。通過“設置->高級設置->輸入促銷代碼”操作\n所有支持平台的下載鏈接可見bombsquadgame.com",
+ "friendPromoCodeInstructionsText": "要使用此代碼,可打開${APP_NAME}。通過“設置->高級設置->傳送資料”操作\n所有支持平台的下載鏈接可見bombsquadgame.com",
"friendPromoCodeRedeemLongText": "達到${MAX_USES}人後就不能獲得${COUNT}免費點券(防止玩家作弊)",
"friendPromoCodeRedeemShortText": "可在遊戲中兌換${COUNT}免費點券",
- "friendPromoCodeWhereToEnterText": "(在“設置->高級設置->輸入促銷代碼”中)",
+ "friendPromoCodeWhereToEnterText": "(在 設置->高級設置->傳送資料 中)",
"getFriendInviteCodeText": "獲取好友邀請碼",
"googlePlayDescriptionText": "通過Google Play邀請玩家進入你的派對",
"googlePlayInviteText": "邀請",
@@ -740,6 +772,7 @@
"manualYourLocalAddressText": "本地地址:",
"nearbyText": "附近",
"noConnectionText": "<無連接>",
+ "noPartiesAddedText": "未添加派對",
"otherVersionsText": "(其他版本)",
"partyCodeText": "派對代碼",
"partyInviteAcceptText": "接受",
@@ -803,6 +836,12 @@
"youHaveShortText": "你擁有 ${COUNT}",
"youHaveText": "你擁有 ${COUNT}點券"
},
+ "goldPass": {
+ "desc1InfTokensText": "無限代幣",
+ "desc2NoAdsText": "零廣告",
+ "desc3ForeverText": "直到永遠。",
+ "goldPassText": "黃金通行證"
+ },
"googleMultiplayerDiscontinuedText": "抱歉,Google的多人遊戲服務不再可用。\n我將盡快更換新的替代服務。\n在此之前,請嘗試其他連接方法。\n-Eric",
"googlePlayPurchasesNotAvailableText": "Google Play購買不可用\n你可能需要更新你的Google Play商店組件",
"googlePlayServicesNotAvailableText": "Google play當前不可用\n一些功能將會被禁用",
@@ -811,10 +850,12 @@
"alwaysText": "總是",
"fullScreenCmdText": "全屏顯示Cmd-F",
"fullScreenCtrlText": "全屏顯示(Ctrl-F)",
+ "fullScreenText": "全屏",
"gammaText": "Gamma",
"highText": "高",
"higherText": "最高",
"lowText": "低",
+ "maxFPSText": "幀速上限",
"mediumText": "中",
"neverText": "關",
"resolutionText": "分辨率",
@@ -875,6 +916,7 @@
"importText": "導入",
"importingText": "導入中...",
"inGameClippedNameText": "名字會是\n\"${NAME}\"",
+ "inboxText": "收件匣",
"installDiskSpaceErrorText": "錯誤:無法完成安裝\n你的設備磁盤空間不足\n請釋放一些空間後重試",
"internal": {
"arrowsToExitListText": "按${LEFT} 或 ${RIGHT} 退出列表",
@@ -929,12 +971,14 @@
"timeOutText": "(將在${TIME} 秒後超出時限)",
"touchScreenJoinWarningText": "你已以觸摸屏的方式加入\n如果這是一個錯誤,請手動退出遊戲",
"touchScreenText": "觸摸屏",
+ "unableToCompleteTryAgainText": "現在無法完成此操作\n請稍後再試",
"unableToResolveHostText": "錯誤:創建者網絡環境有問題",
"unavailableNoConnectionText": "網絡連接故障",
"vrOrientationResetCardboardText": "重置VR定位\n您需要用外部手柄來進行遊戲",
"vrOrientationResetText": "VR定位重置",
"willTimeOutText": "(若掛機則會超出時限)"
},
+ "inventoryText": "庫存",
"jumpBoldText": "跳",
"jumpText": "跳",
"keepText": "舉起",
@@ -981,8 +1025,11 @@
"seasonEndsMinutesText": "賽季將於${NUMBER}分鐘後結束",
"seasonText": "第${NUMBER}賽季",
"tournamentLeagueText": "你一定要到${NAME}聯賽後才能參加此賽事",
- "trophyCountsResetText": "獎杯計數將於下個賽季重置"
+ "trophyCountsResetText": "獎杯計數將於下個賽季重置",
+ "upToDateBonusDescriptionText": "請使用最新遊戲版本\n來獲得${PERCENT}%額外賠率",
+ "upToDateBonusText": "最新版賠率"
},
+ "learnMoreText": "更多資訊...",
"levelBestScoresText": "在${LEVEL}中的最高成績",
"levelBestTimesText": "在${LEVEL}中的最佳時間",
"levelIsLockedText": "${LEVEL}正在鎖定狀態",
@@ -1026,6 +1073,8 @@
"modeArcadeText": "街機模式",
"modeClassicText": "經典模式",
"modeDemoText": "演示模式",
+ "moreSoonText": "更多內容即將推出...",
+ "mostDestroyedPlayerText": "被摧毀次數最多的球員",
"mostValuablePlayerText": "最有價值的玩家",
"mostViolatedPlayerText": "最遭受暴力的玩家",
"mostViolentPlayerText": "最暴力的玩家",
@@ -1042,6 +1091,7 @@
"nameSuicideText": "${NAME}自殺了.",
"nameText": "名稱",
"nativeText": "本機",
+ "newExclaimText": "全新!",
"newPersonalBestText": "新個人最佳!",
"newTestBuildAvailableText": "更新的測試版可供下載了! (${VERSION} 升級至 ${BUILD}).\n到${ADDRESS}獲取測試版",
"newText": "新建",
@@ -1052,12 +1102,16 @@
"noContinuesText": "(無可繼續)",
"noExternalStorageErrorText": "該設備未發現外部存儲器",
"noGameCircleText": "錯誤:未登錄GameCircle",
+ "noMessagesText": "沒有消息.",
+ "noPluginsInstalledText": "未安裝插件",
"noScoresYetText": "沒有得分記錄",
+ "noServersFoundText": "未找到服務器",
"noThanksText": "不,謝謝",
"noTournamentsInTestBuildText": "注意:此測試版本的比賽分數將會被作廢",
"noValidMapsErrorText": "沒有發現該比賽類型的有效地圖",
"notEnoughPlayersRemainingText": "剩餘玩家不足,退出並開始新遊戲",
"notEnoughPlayersText": "至少需要${COUNT}名玩家來開始遊戲",
+ "notEnoughTicketsText": "票不夠了!",
"notNowText": "不是現在",
"notSignedInErrorText": "你必須登入來進行該操作.",
"notSignedInGooglePlayErrorText": "您必須通過Google Play登錄",
@@ -1070,6 +1124,9 @@
"onText": "開",
"oneMomentText": "請等待",
"onslaughtRespawnText": "${PLAYER}將於${WAVE}波復活",
+ "openMeText": "打開我!",
+ "openNowText": "即時打開",
+ "openText": "打開",
"orText": "${A} 或 ${B}",
"otherText": "其他",
"outOfText": "(在${ALL}名玩家中位列#${RANK})",
@@ -1121,7 +1178,11 @@
"pleaseWaitText": "請稍等....",
"pluginClassLoadErrorText": "加載插件類'${PLUGIN}'時出錯:${ERROR}",
"pluginInitErrorText": "初始化插件'${PLUGIN}'時出錯:${ERROR}",
+ "pluginSettingsText": "插件設置",
+ "pluginsAutoEnableNewText": "自動啟用新插件",
"pluginsDetectedText": "檢測到新插件。重新啓動以激活,或在設置中配置這些插件",
+ "pluginsDisableAllText": "禁用所有插件",
+ "pluginsEnableAllText": "啟用所有插件",
"pluginsRemovedText": "${NUM}個插件已丟失",
"pluginsText": "外掛程式",
"practiceText": "練習",
@@ -1151,10 +1212,12 @@
"punchText": "拳擊",
"purchaseForText": "購買花費 ${PRICE}",
"purchaseGameText": "購買遊戲",
+ "purchaseNeverAvailableText": "抱歉, 此版本並不支援遊戲購物。\n請於另一個平台上登入你的帳號,並於該處進行購買。",
+ "purchaseNotAvailableText": "此產品目前缺貨。。。",
"purchasingText": "正在購買...",
"quitGameText": "退出 ${APP_NAME}?",
"quittingIn5SecondsText": "將於5秒後退出...",
- "randomPlayerNamesText": "Reol,爆破鬼才,ZACK,炸蛋小分隊,隊友摧毀者,炸彈吞噬者,TNT的朋友,冰凍使者,田所浩二,拳擊高手,創世神,炸彈人,機械狂人,大發明家,吹噓海盜,末日預言者",
+ "randomPlayerNamesText": "爆破鬼才,ZACK,炸蛋小分隊,隊友摧毀者,炸彈吞噬者,TNT的朋友,冰凍使者,拳擊高手,創世神,炸彈人,機械狂人,大發明家,吹噓海盜,末日預言者",
"randomText": "隨機",
"rankText": "排行",
"ratingText": "排名",
@@ -1192,6 +1255,7 @@
"version_mismatch": "版本不匹配\n確保Bombsquad與Bombsquad手柄都是\n最新版本後重試"
},
"removeInGameAdsText": "在商店中解鎖\"${PRO}\",以刪除遊戲中的廣告",
+ "removeInGameAdsTokenPurchaseText": "!!限時優惠!! 購買任何代幣包以移除廣告",
"renameText": "重命名",
"replayEndText": "結束回放",
"replayNameDefaultText": "終場遊戲回放",
@@ -1212,7 +1276,9 @@
"revertText": "還原",
"runText": "運行",
"saveText": "保存",
- "scanScriptsErrorText": "掃描腳本時存在錯誤,查看錯誤日誌來了解詳情",
+ "scanScriptsErrorText": "錯誤掃描腳本。 有關詳細信息,請參閱日誌。",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} 和 ${NUM} 個其他模塊需要針對 api ${API} 進行更新。",
+ "scanScriptsSingleModuleNeedsUpdatesText": "需要為 api ${API} 更新 ${PATH}。",
"scoreChallengesText": "得分挑戰",
"scoreListUnavailableText": "得分列表不可用",
"scoreText": "得分",
@@ -1223,6 +1289,7 @@
},
"scoreWasText": "(是 ${COUNT})",
"selectText": "選擇",
+ "sendInfoDescriptionText": "把帳戶狀態以及遊戲狀態資料給予開發者。\n必須包括你的名稱,以及傳送資料理由。",
"seriesWinLine1PlayerText": "贏得",
"seriesWinLine1TeamText": "贏得",
"seriesWinLine1Text": "贏得",
@@ -1240,6 +1307,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(注意:遊戲內置輸入法只能讓輸入英文字符和部分符號)",
"alwaysUseInternalKeyboardText": "使用遊戲內置輸入法",
"benchmarksText": "基準/壓力測試",
+ "devToolsText": "開發工具",
"disableCameraGyroscopeMotionText": "禁用陀螺儀畫面抖動",
"disableCameraShakeText": "禁止畫面抖動",
"disableThisNotice": "(可在高級設置中關閉此通知)",
@@ -1248,14 +1316,22 @@
"enterPromoCodeText": "輸入促銷代碼",
"forTestingText": "注意:這些數值僅用於測試,並會在退出遊戲後重置",
"helpTranslateText": "${APP_NAME}的非英語翻譯是其他玩家\n共同努力的成果,如果你希望參與遊戲文本翻譯或修正\n請點擊以下連接。感謝大家對遊戲翻譯提出的貢獻",
+ "insecureConnectionsDescriptionText": "可以開放來自受限制國家或互聯網的網上遊玩\n因安全隱憂並不建議使用",
+ "insecureConnectionsText": "使用公開網絡連接",
"kickIdlePlayersText": "自動踢出掛機玩家",
"kidFriendlyModeText": "兒童模式(低暴力等)",
"languageText": "語言",
"moddingGuideText": "修改指南",
+ "moddingToolsText": "改裝工具",
"mustRestartText": "你必須重啟遊戲才能生效",
"netTestingText": "網絡連接測試",
"resetText": "恢復默認",
+ "sendInfoText": "傳送資料",
"showBombTrajectoriesText": "顯示炸彈軌跡",
+ "showDemosWhenIdleText": "掛機時展示遊戲示範",
+ "showDeprecatedLoginTypesText": "展示廢舊的登入選項",
+ "showDevConsoleButtonText": "顯示開發控制臺按鈕",
+ "showInGamePingText": "顯示遊戲內延遲",
"showPlayerNamesText": "顯示玩家名稱",
"showUserModsText": "顯示MOD安裝文件夾",
"titleText": "高級設置",
@@ -1263,7 +1339,7 @@
"translationFetchErrorText": "翻譯狀態不可用",
"translationFetchingStatusText": "檢查翻譯進度...",
"translationInformMe": "我的語言翻譯可更新時通知我",
- "translationNoUpdateNeededText": "當前語言翻譯文本是最新的",
+ "translationNoUpdateNeededText": "當前語言翻譯文本是最新的!帥呀!",
"translationUpdateNeededText": "**當前語言翻譯文本需要更新**",
"vrTestingText": "VR 調試"
},
@@ -1274,6 +1350,9 @@
"signInWithGameCenterText": "使用Game Center\n來登錄",
"singleGamePlaylistNameText": "僅 ${GAME}",
"singlePlayerCountText": "1 玩家",
+ "sizeLargeText": "大",
+ "sizeMediumText": "中",
+ "sizeSmallText": "小",
"soloNameFilterText": "單挑模式 ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "角色選擇",
@@ -1299,6 +1378,7 @@
},
"spaceKeyText": "空格",
"statsText": "統計",
+ "stopRemindingMeText": "別再提醒我了",
"storagePermissionAccessText": "需要存儲權限",
"store": {
"alreadyOwnText": "您已擁有${NAME}!",
@@ -1334,7 +1414,7 @@
"winterSpecialText": "冬季特售",
"youOwnThisText": "-您已擁有-"
},
- "storeDescriptionText": "8人派对游戏尽显疯狂!\n\n在爆炸类迷你游戏中炸飞您的好友(或电脑),如夺旗战、冰球战及史诗级慢动作死亡竞赛!\n\n简单的控制和广泛的手柄支持可轻松允许多达8人参与游戏;您甚至可以通过免费的“BombSquad Remote”应用将您的移动设备作为手柄使用!\n\n投射炸弹!\n\n更多信息,请登录www.froemling.net/bombsquad。",
+ "storeDescriptionText": "瘋狂的8人派對遊戲!!!\n\n在錦標賽或大小遊戲中(包括但不限於奪旗,冰球,慢動作的死亡競賽)用炸彈炸毁你的朋友(或人機)吧!\n\n簡易的控制模式以及廣泛的控制器支援令召集8個人變得相當容易;甚至可以用 BombSquad Remote 手機程式來用手機作為控制器!\n\n爆炸就是藝術!!\n\n更多資訊請查看www.froemling.net/bombsquad",
"storeDescriptions": {
"blowUpYourFriendsText": "炸飛你的朋友",
"competeInMiniGamesText": "在從競速到飛行的迷你遊戲中一決高下",
@@ -1346,6 +1426,8 @@
"storeText": "商店",
"submitText": "提交",
"submittingPromoCodeText": "正在提交代碼...",
+ "successText": "大功告成!",
+ "supportEmailText": "如果您在使用應用中遇到任何問題,\n請發送郵件至${EMAIL}.",
"teamNamesColorText": "團隊名稱/顏色...",
"telnetAccessGrantedText": "Telnet訪問以啟用",
"telnetAccessText": "檢測到Telnet訪問,是否允許?",
@@ -1355,6 +1437,7 @@
"testBuildValidatedText": "測試版已通過驗證,盡情享用",
"thankYouText": "感謝你的支持!盡情享受遊戲!",
"threeKillText": "三殺!!",
+ "ticketsDescriptionText": "點券可以解鎖新角色,新遊戲,新地圖\n以及更多在商店找到的東西\n\n你可以透過贏取寶箱來獲得更多點券\n( 方法包括:徵戰、錦標賽、成就)",
"timeBonusText": "時間獎勵",
"timeElapsedText": "時間耗盡",
"timeExpiredText": "時間結束",
@@ -1363,12 +1446,26 @@
"timeSuffixMinutesText": "${COUNT}分",
"timeSuffixSecondsText": "${COUNT}秒",
"tipText": "提示",
- "titleText": "BombSquad",
+ "titleText": "炸彈小分隊",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "獲得代幣...",
+ "notEnoughTokensText": "代幣不足!",
+ "numTokensText": "${COUNT}代幣",
+ "openNowDescriptionText": "您有足夠的代幣\n現在打開這個 - 你不\n需要等待。",
+ "shinyNewCurrencyText": "炸彈小分隊 閃亮亮 的全新遊戲幣!!",
+ "tokenPack1Text": "50代幣",
+ "tokenPack2Text": "500代幣",
+ "tokenPack3Text": "1200代幣",
+ "tokenPack4Text": "2600代幣",
+ "tokensDescriptionText": "代幣能夠加速寶箱解鎖\n或其他遊戲及帳戶有關功能\n\n你可以於遊戲中贏取代幣或\n購買代幣包\n另外亦可以購買黃金通行證以得到無限代幣",
+ "youHaveGoldPassText": "你有黃金通行證\n所有費用已豁免\n盡情享用!!"
+ },
"topFriendsText": "最佳好友",
"tournamentCheckingStateText": "檢查錦標賽狀態中,請稍後...",
"tournamentEndedText": "此錦標賽已結束。新的錦標賽已開始",
"tournamentEntryText": "錦標賽入口",
+ "tournamentFinalStandingsText": "最終排名",
"tournamentResultsRecentText": "最近錦標賽結果",
"tournamentStandingsText": "錦標賽積分榜",
"tournamentText": "錦標賽",
@@ -1424,6 +1521,18 @@
"Uber Onslaught": "高級衝鋒戰",
"Uber Runaround": "高級塔防戰"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C}點券",
+ "${C} Tokens": "${C}代幣",
+ "Chest": "寶箱",
+ "L1 Chest": "壹等寶箱",
+ "L2 Chest": "貳等寶箱",
+ "L3 Chest": "參等寶箱",
+ "L4 Chest": "肆等寶箱",
+ "L5 Chest": "伍等寶箱",
+ "L6 Chest": "陸等寶箱",
+ "Unknown Chest": "寶箱等級: 不明!"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "在一定時間內取代選定目標進而取得勝利\n殺死選定目標並取而代之",
"Bomb as many targets as you can.": "盡可能多的摧毀炸毀",
@@ -1528,6 +1637,7 @@
"Korean": "朝鮮語",
"Malay": "馬來語",
"Persian": "波斯文",
+ "PirateSpeak": "海盜口語",
"Polish": "波蘭語",
"Portuguese": "葡萄牙語",
"Romanian": "羅馬尼亞語",
@@ -1550,23 +1660,23 @@
"Silver": "銀牌"
},
"mapsNames": {
- "Big G": "大G",
- "Bridgit": "小橋",
+ "Big G": "大G賽道",
+ "Bridgit": "布里吉特橋",
"Courtyard": "庭院",
- "Crag Castle": "岩城",
- "Doom Shroom": "蘑菇雲",
+ "Crag Castle": "雙子岩城",
+ "Doom Shroom": "末日蘑菇谷",
"Football Stadium": "橄欖球場",
- "Happy Thoughts": "飛行地帶",
+ "Happy Thoughts": "快樂仙境",
"Hockey Stadium": "冰球場",
- "Lake Frigid": "寒湖",
+ "Lake Frigid": "冰湖賽道",
"Monkey Face": "猴面",
- "Rampage": "狂暴",
- "Roundabout": "塔防",
- "Step Right Up": "攻擊",
- "The Pad": "平板",
- "Tip Top": "頂點",
- "Tower D": "塔防",
- "Zigzag": "蜿蜒"
+ "Rampage": "狂暴擂台",
+ "Roundabout": "馬蹄木塔",
+ "Step Right Up": "對立戰地",
+ "The Pad": "平板高塔",
+ "Tip Top": "頂峰據點",
+ "Tower D": "D氏城堡",
+ "Zigzag": "蜿蜒地帶"
},
"playlistNames": {
"Just Epic": "僅限史詩級",
@@ -1599,6 +1709,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "發現賬號作弊行為;得分及獎勵在${COUNT}天內暫停",
"Could not establish a secure connection.": "無法建立安全連接",
"Daily maximum reached.": "已達今日上限",
+ "Daily sign-in reward": "每天登入獎勵",
"Entering tournament...": "進入錦標賽...",
"Invalid code.": "代碼無效",
"Invalid payment; purchase canceled.": "不可用的付款方式:交易取消",
@@ -1608,11 +1719,14 @@
"Item unlocked!": "項目已解除綁定",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "連接賬號行為取消,${ACCOUNT}含有\n的重要數據可能會丟失\n如果想要關聯的話,你可以反向鏈接賬號\n(最好用自己的賬號進行關聯)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "確定將${ACCOUNT}關聯到此賬戶嗎\n${ACCOUNT}將共享數據\n可在30天后取消",
+ "Longer streaks lead to better rewards.": "連勝越長,獎勵越好",
"Max number of playlists reached.": "已達到最大列表數",
"Max number of profiles reached.": "已達到最大檔案數",
"Maximum friend code rewards reached.": "邀請碼獎勵達到上限",
"Message is too long.": "消息過長",
+ "New tournament result!": "新的比賽結果!",
"No servers are available. Please try again soon.": "當前沒有空餘的伺服器,請稍後再試",
+ "No slots available. Free a slot and try again.": "沒有可用空位。釋放一個插槽並重試。",
"Profile \"${NAME}\" upgraded successfully.": "\"${NAME}\"檔案升級成功",
"Profile could not be upgraded.": "檔案不可升級",
"Purchase successful!": "購買成功",
@@ -1622,7 +1736,9 @@
"Sorry, this code has already been used.": "對不起,此代碼已被使用",
"Sorry, this code has expired.": "對不起,此代碼已失效",
"Sorry, this code only works for new accounts.": "對不起,此代碼僅適用於新用戶",
+ "Sorry, this has expired.": "抱歉,此物品已經過期。",
"Still searching for nearby servers; please try again soon.": "正在查詢附近的伺服器,請稍後再試",
+ "Streak: ${NUM} days": "連勝: ${NUM}天",
"Temporarily unavailable; please try again later.": "目前暫不可用,請稍後再試",
"The tournament ended before you finished.": "本次錦標賽將於在你完成之前結束了",
"This account cannot be unlinked for ${NUM} days.": "此賬戶在${NUM}天內無法取消關聯",
@@ -1633,19 +1749,28 @@
"Tournaments require ${VERSION} or newer": "比賽需要${VERSION}或更高的版本",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "從此賬戶上取消${ACCOUNT}的關聯?\n${ACCOUNT}上的數據將會被重置\n(在某些情況下成就除外)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "警告:針對你的賬戶發出黑客控訴\n被盜用的賬戶將被禁止。請公平競技",
+ "Wait reduced!": "等待減少!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "警告:本版本遊戲僅限舊帳號資料;東西可能會遺失或過時。\n請升級到較新版本的遊戲才能查看您最新的帳戶資料。",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "是否經你的賬戶連接到此?\n\n你的賬戶為${ACCOUNT1}\n此賬戶為${ACCOUNT2}\n\n你可以保存現有進度\n警告:此操作可在30天后取消",
"You already own this!": "你已擁有這個",
"You can join in ${COUNT} seconds.": "你可以在${COUNT}秒後加入",
"You don't have enough tickets for this!": "你的點券不足",
"You don't own that.": "你尚未擁有",
"You got ${COUNT} tickets!": "你獲得了${COUNT}點券",
+ "You got ${COUNT} tokens!": "你獲得了${COUNT}代幣",
"You got a ${ITEM}!": "你獲得了一個${ITEM}!",
+ "You got a chest!": "你獲得了一個寶箱!",
+ "You got an achievement reward!": "你獲得了一個成就獎項!",
"You have been promoted to a new league; congratulations!": "你已經被升級至一個全新的聯賽:恭喜",
+ "You lost a chest! (All your chest slots were full)": "你失去了一個箱子! (您的所有寶箱槽都已滿)",
+ "You must update the app to view this.": "您必須更新應用程式才能查看此內容",
"You must update to a newer version of the app to do this.": "你必須先更新遊戲才能這麼做",
"You must update to the newest version of the game to do this.": "你必須更新到最新版本才可以執行此操作",
"You must wait a few seconds before entering a new code.": "你必須要在輸入新代碼前等待一會",
+ "You placed #${RANK} in a tournament!": "你於錦標賽中得到第${RANK}名!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "你在上一場錦標賽中排名#${RANK},繼續加油",
"Your account was rejected. Are you signed in?": "你的髒號被拒絕,您是否已登陸?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "您的廣告瀏覽量未記錄。 廣告選項將在一段時間內受到限制。",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "您的遊戲副本已更改\n請恢復任何更改並重試",
"Your friend code was used by ${ACCOUNT}": "${ACCOUNT}已使用您的促銷代碼"
},
@@ -1702,51 +1827,51 @@
"Red": "紅隊"
},
"tips": {
- "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "一记完美、及时的“跑跳旋转拳”可一次性击杀敌人,并\n助你一生享有好友的尊重。",
- "Always remember to floss.": "地面上的辅助线可能会有用。",
- "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "使用首选名称和外观,而非采用随机形式\n来为自己和好友创建玩家档案。",
- "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "诅咒之盒把你变成了一个定时炸弹。\n唯一的解决方法是迅速抢占一个生命值包。",
- "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "尽管长相不同,所有人物的技能是相同的,\n所以只需随意挑选一个与你最相似的。",
- "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "不要因为拥有能量盾牌而狂妄自大;你仍然可能使自己坠入悬崖。",
- "Don't run all the time. Really. You will fall off cliffs.": "不要总是奔跑。真的。你可能会坠入悬崖。",
- "Don't spin for too long; you'll become dizzy and fall.": "不要旋转得太久,不然你会眩晕并摔倒。",
- "Hold any button to run. (Trigger buttons work well if you have them)": "按住任意按钮来奔跑。(如果你有的话,扳机按钮将会很有用)",
- "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "按住任意按钮来奔跑。你将会更快地抵达一些地方,\n但是转弯效果并不好,所以当心悬崖。",
- "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "寒冰炸弹并非很厉害,但它们能够冻结\n任何被击中者,使他们极易粉碎。",
- "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "如果有人将你提起,出拳攻击他们,他们便会放手。\n这在现实生活中同样有效。",
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "及時進行跑跳旋轉會打出完美的必殺拳,\n效率高, 而且會令你的朋友尊重你一世。",
+ "Always remember to floss.": "好孩子早晚刷牙,並且要善用牙線。",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "為自己與朋友製作玩家檔案並使用自己的愛稱及外貌,\n相對於隨機名稱更為易辨認。",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "詛咒之盒把你變成了一個定時炸彈。\n唯一的解決方法是迅速搶佔一個急救包。",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "儘管長相不同,所有人物的技能是相同的\n所以只需隨意挑選一個與你最相似的。",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "不要因為擁有能量盾牌而狂妄自大;你仍然可能使自己墜入懸崖。",
+ "Don't run all the time. Really. You will fall off cliffs.": "不要總是奔跑。真的。你可能會墜入懸崖。",
+ "Don't spin for too long; you'll become dizzy and fall.": "不要旋轉得太久,不然你會眩暈並摔倒。",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "按住任意按鈕來奔跑。(如果你有的話,扳機按鈕將會很有用)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "按住任意按鈕來奔跑。你將會更快地抵達一些地方,\n但是轉彎效果並不好,所以當心懸崖。",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "冰彈傷害力較低,但具有凍結效果\n被擊中者會無法動彈並變得極易粉碎。",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "如果有人將你捉住,出拳攻擊他們,他們便會放手。\n這在現實生活中同樣奏效。",
"If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "如果您缺控制器,在手機上安裝「${REMOTE_APP_NAME}」\n並用手機當控制器。",
- "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "如果一个黏黏弹将你困住,你应该四处跳动并转圈。你可能\n将炸弹抖落,或如果没有其他办法,你最后的时刻将是有趣的。",
- "If you kill an enemy in one hit you get double points for it.": "如果你一击杀死一个敌人,你将获得双倍积分。",
- "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "如果你捡到一个诅咒之盒,你唯一的生存希望是\n在接下来的几秒内找到一个生命值提升器。",
- "If you stay in one place, you're toast. Run and dodge to survive..": "如果你停留在一个地方,你就完了。为了生存而奔跑和躲避……",
- "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "如果众多玩家进进出出,在设置下打开“自动踢出闲置玩家”,以防\n任何玩家忘记离开游戏。",
- "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "如果你的设备过热,或者你想要节省电池电量,\n则在设置->图形中调低“视觉效果”或“分辨率”",
- "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "如果你的帧速率不稳定,请尝试在游戏的\n图形设置中调低分辨率或视觉效果。",
- "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "在夺旗战中,你的旗帜必须位于你的基地才能得分,如果对方\n团队即将得分,窃取他们的旗帜是一个不错的阻止方法。",
- "In hockey, you'll maintain more speed if you turn gradually.": "在冰球战中,逐渐转向将使你保持更快的速度。",
- "It's easier to win with a friend or two helping.": "在拥有一名好友或两个帮扶的情况下更易获胜",
- "Jump just as you're throwing to get bombs up to the highest levels.": "就像你试图将炸弹扔到最高点那样跳起来。",
- "Land-mines are a good way to stop speedy enemies.": "地雷是阻止高速敌人的一个很好的方式。",
- "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "很多东西都可以捡起来并投掷,包括其他玩家。将你的\n敌人抛下悬崖可能是一个有效的且情感上可获得满足的策略。",
- "No, you can't get up on the ledge. You have to throw bombs.": "不,你不能在岩脊上起身。你必须要投掷炸弹",
- "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "玩家可在大多数游戏中途加入或离开,\n同时,你也可以在百忙中插上或拔出手柄。",
- "Practice using your momentum to throw bombs more accurately.": "练习借助你的力量更准确地投掷炸弹。",
- "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "拳头跑得越快,拳击的伤害越高,\n所以请成为飞奔的拳击手吧。",
- "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "在投掷炸弹之前来回跑动,\n以“鞭打”炸弹,并将其投掷更远。",
- "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "在TNT炸药箱附近引爆\n一个炸弹来消灭一群敌人。",
- "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "头部是最脆弱的区域,所以一个黏黏弹\n接触头部通常便意味着游戏结束。",
- "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "这一关卡永远不会结束,但是更高的得分将\n助你赢得全世界永恒的尊重。",
- "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "投掷力量取决于你所保持的方向。\n如要向前方轻轻投掷某物,不要保持在任何方向。",
- "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "更换背景音乐?更换成你自己音乐吧!\n参见设置->音频->背景音乐",
- "Try 'Cooking off' bombs for a second or two before throwing them.": "尝试在投掷之前将炸弹“爆燃”一秒或两秒。",
- "Try tricking enemies into killing eachother or running off cliffs.": "试图诱使敌人互相厮杀或坠入悬崖。",
- "Use the pick-up button to grab the flag < ${PICKUP} >": "使用拾取按钮来抢夺旗帜< ${PICKUP} >",
- "Whip back and forth to get more distance on your throws..": "来回鞭打以投掷更远距离……",
- "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "你可以通过左转或右转“瞄准”出拳。\n这有利于将坏人击倒出边界或在冰球战中得分。",
- "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "你可以根据导火线火花的颜色判断炸弹什么时候爆炸:\n黄色……橙色……红色……嘭。",
- "You can throw bombs higher if you jump just before throwing.": "如果投弹前跳起,你将投掷更远。",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "当你用头部重击物体时将受到伤害,\n所以尽量不要用头部重击物体。",
- "Your punches do much more damage if you are running or spinning.": "如果你奔跑或旋转,拳击的伤害将更高。"
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "如果一個黏黏彈將你困住,你應該四處跳動並轉圈。你\n有機會將炸彈抖落,或如果沒有其他辦法,你最後的時刻將是有趣的。",
+ "If you kill an enemy in one hit you get double points for it.": "如果你一擊秒殺一個敵人,你將獲得雙倍積分。",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "如果你撿到一個詛咒之盒,你唯一的生存希望是\n在接下來的幾秒內找到一個生命值提升器。",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "如果你停留在一個地方,你就完了。為了生存而奔跑和躲避……",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "如果眾多玩家進進出出,在設置下打開“自動踢出閒置玩家”,\n以防任何玩家忘記離開遊戲。",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "如果你的設備過熱,或者你想要節省電池電量,\n則在設置->圖形中調低“視覺效果”或“分辨率”",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "如果你的幀速率不穩定,請嘗試在遊戲的\n圖形設置中調低分辨率或視覺效果。",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "在奪旗戰中,你的旗幟必須位於你的基地才能得分,\n如果敵隊即將得分,竊取他們的旗幟是一個不錯的阻止方法。",
+ "In hockey, you'll maintain more speed if you turn gradually.": "在冰球戰中,逐漸轉向將使你保持更快的速度。",
+ "It's easier to win with a friend or two helping.": "在擁有一名好友或兩個幫扶的情況下更易獲勝",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "就像你試圖將炸彈扔到最高點那樣跳起來。",
+ "Land-mines are a good way to stop speedy enemies.": "地雷是阻止高速敵人的一個很好的方式。",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "很多東西都可以撿起來並投擲,包括其他玩家。將你的\n敵人拋下懸崖可能是一個有效的且情感上可獲得滿足的策略。",
+ "No, you can't get up on the ledge. You have to throw bombs.": "不,你不能在攀上岩脊。你必須要投擲炸彈",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "玩家可在大多數遊戲中途加入或離開,\n同時,你也可以在百忙中插上或拔出手柄。",
+ "Practice using your momentum to throw bombs more accurately.": "練習借助你的力量更準確地投擲炸彈。",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "拳頭跑得越快,拳擊的傷害越高,\n所以請成為飛奔的拳擊手吧。",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "在投擲炸彈之前來回跑動,\n以“鞭打”炸彈,並將其投擲更遠。",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "在TNT炸藥箱附近引爆\n一個炸彈來消滅一群敵人。",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "頭部是最脆弱的區域,所以一個黏黏彈\n接觸頭部通常便意味著遊戲結束。",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "這一關卡永遠不會結束,但是更高的\n得分將助你贏得永世之敬畏。",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "投擲力量取決於你所保持的方向。\n如要向前方輕輕投擲某物,不要保持在任何方向。",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "不喜歡預設的音樂? 換成自己的音樂吧! \n參見 設置->音頻->背景音樂",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "嘗試在投擲之前將炸彈“爆燃”一秒或兩秒。",
+ "Try tricking enemies into killing eachother or running off cliffs.": "試圖誘使敵人互相殘殺或墜入懸崖。",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "使用拾取按鈕來搶奪旗幟< ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "來回鞭打以投擲更遠距離……",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "你可以通過左轉或右轉“瞄准”出拳。\n這有利於將壞人擊倒出邊界或在冰球戰中得分。",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "你可你可以根據導火線火花的顏色判斷炸彈什麼時候爆炸:\n黃色……橙色……紅色……嘭。",
+ "You can throw bombs higher if you jump just before throwing.": "如果投彈前跳起,你將投擲更遠。",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "當你用頭部重擊物體時將受到傷害,\n所以盡量不要用頭部重擊物體。",
+ "Your punches do much more damage if you are running or spinning.": "如果你奔跑或旋轉,拳擊的傷害將更高。"
}
},
"trophiesRequiredText": "你至少要擁有${NUMBER}個獎杯",
@@ -1755,50 +1880,53 @@
"tutorial": {
"cpuBenchmarkText": "以驚人的速度來運行遊戲教程(用於測試CPU上限)",
"phrase01Text": "嘿,夥計",
- "phrase02Text": "歡迎來到${APP_NAME}!",
- "phrase03Text": "以下適用於此遊戲的一些技巧",
- "phrase04Text": "${APP_NAME}在很多情況下還是很物理的",
+ "phrase02Text": "歡迎遊玩${APP_NAME}!",
+ "phrase03Text": "以下有一些適用於此遊戲的技巧:",
+ "phrase04Text": "${APP_NAME}在很多情況下是相當講求物理學的。",
"phrase05Text": "比如,當你出拳時",
"phrase06Text": "拳頭的傷害取決於你它的速度",
- "phrase07Text": "看到了嗎,如果我們不動,這樣幾乎不會造成傷害${NAME}",
+ "phrase07Text": "看到了嗎?如果我們動也不動,我們幾乎無法傷害${NAME}。",
"phrase08Text": "現在,讓我們跳躍並旋轉起來,以獲得更快的速度",
- "phrase09Text": "啊,這樣就好多了",
+ "phrase09Text": "啊,這樣就好多了。",
"phrase10Text": "奔跑也會發揮作用",
"phrase11Text": "按住任意按鈕來奔跑",
"phrase12Text": "如果要完成一個很棒的出拳,請持續奔跑和旋轉",
- "phrase13Text": "humm 關於${NAME}我很抱歉",
+ "phrase13Text": "抱歉囉${NAME}, 犧牲是需要的。",
"phrase14Text": "你可以撿起投擲物品,如炸彈、旗幟或${NAME}",
- "phrase15Text": "最後還有炸彈",
+ "phrase15Text": "最後,當然有炸彈",
"phrase16Text": "投擲炸彈需要練習",
- "phrase17Text": "ahh這一次貌似並不漂亮",
+ "phrase17Text": "哎呀,這一次貌似並不漂亮",
"phrase18Text": "移動有助於你投擲的更遠",
"phrase19Text": "跳躍有助於你投擲的更高",
"phrase20Text": "甩炸彈會讓你把炸彈投擲到更遠的位置",
"phrase21Text": "把握好時間可能會十分困難",
- "phrase22Text": "¿",
+ "phrase22Text": "我呸。",
"phrase23Text": "嘗試將導火線控制的更加精準",
- "phrase24Text": "OHHHHH爆炸就是藝術",
- "phrase25Text": "OK已經很不錯了",
- "phrase26Text": "現在去完成你的任務吧,兄弟",
- "phrase27Text": "記住你的訓練,你會活著回來的",
- "phrase28Text": "也許...是吧",
- "phrase29Text": "祝你好運",
- "randomName1Text": "Fred",
- "randomName2Text": "Harry",
- "randomName3Text": "Bill",
- "randomName4Text": "Chuck",
- "randomName5Text": "Phil",
+ "phrase24Text": "OHHHHH爆炸就是藝術!!!",
+ "phrase25Text": "OK, 教程來到這裏差不多了。",
+ "phrase26Text": "現在去完成你的任務吧,兄弟!",
+ "phrase27Text": "記住你的訓練,你會活著回來的!",
+ "phrase28Text": "應該會...吧",
+ "phrase29Text": "祝你好運 :)",
+ "randomName1Text": "弗雷迪",
+ "randomName2Text": "哈利",
+ "randomName3Text": "比爾",
+ "randomName4Text": "查克",
+ "randomName5Text": "菲利浦",
"skipConfirmText": "確定要跳過教程?再次按下按鈕來確定",
"skipVoteCountText": "${COUNT}/${TOTAL} 跳過投票",
"skippingText": "跳過教程...",
"toSkipPressAnythingText": "(按下任意鍵來跳過教程)"
},
"twoKillText": "雙殺!",
+ "uiScaleText": "介面大小",
"unavailableText": "不可用",
+ "unclaimedPrizesText": "您有無人領會的獎品!",
"unconfiguredControllerDetectedText": "檢測到未配置的手柄",
"unlockThisInTheStoreText": "這必須從商店解鎖",
"unlockThisProfilesText": "如需創建超過${NUM}個檔案,你需要",
"unlockThisText": "你需要這些來解鎖",
+ "unsupportedControllerText": "抱歉,不支持控制器\"${NAME}\"",
"unsupportedHardwareText": "抱歉,此版本的遊戲不支持該硬件",
"upFirstText": "進入第一局",
"upNextText": "進入比賽${COUNT}第二局",
@@ -1806,10 +1934,14 @@
"upgradeText": "升級",
"upgradeToPlayText": "你必須在商店裡解鎖${PRO}以體驗此內容",
"useDefaultText": "使用默認值",
+ "userSystemScriptsCreateText": "創建用家自訂程式碼",
+ "userSystemScriptsDeleteText": "拆除用家自訂程式碼",
"usesExternalControllerText": "該遊戲使用外部手柄進行接入",
"usingItunesText": "使用音樂軟件設置背景音樂...",
"v2AccountLinkingInfoText": "要鏈接 V2 帳戶,請使用“管理帳戶”按鈕。",
+ "v2AccountRequiredText": "此需要V2帳戶。請更新帳戶後再試。",
"validatingTestBuildText": "測試版驗證中",
+ "viaText": "其他賬戶",
"victoryText": "勝利!",
"voteDelayText": "你不能在${NUMBER}內發起一個新的投票",
"voteInProgressText": "已經有一個投票正在進行中了",
@@ -1874,5 +2006,6 @@
},
"yesAllowText": "是的,允許!",
"yourBestScoresText": "最佳分數",
- "yourBestTimesText": "最佳時間"
+ "yourBestTimesText": "最佳時間",
+ "yourPrizeText": "獎勵:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/croatian.json b/dist/ba_data/data/languages/croatian.json
index e88c2e14..287e5129 100644
--- a/dist/ba_data/data/languages/croatian.json
+++ b/dist/ba_data/data/languages/croatian.json
@@ -7,7 +7,10 @@
"campaignProgressText": "Napredak kampanje[Teško]: ${PROGRESS}",
"changeOncePerSeason": "Ovo možeš promjeniti samo jednom po sezoni.",
"changeOncePerSeasonError": "Moraš pričekati sljedeču sezonu da promjeniš ovo(${NUM} days)",
+ "createAnAccountText": "Napravi racun",
"customName": "Prilagođeno ime",
+ "deleteAccountText": "Izbriši račun",
+ "googlePlayGamesAccountSwitchText": "Ako želite koristiti drugi Google račun,\nidite u aplikaciju Google Play Igre za promijeniti račun.",
"linkAccountsEnterCodeText": "Unesi kod",
"linkAccountsGenerateCodeText": "Stvori kod",
"linkAccountsInfoText": "(podijeli napredak na svim platformama)",
@@ -15,6 +18,7 @@
"linkAccountsInstructionsText": "Da povežeš dva profila, stvori kod na \njednomod njih i unesi ga na drugom.\nNapredak i sve kupljeno bit će kombinirano.\nMožeš povezati najviše ${COUNT} profila.",
"linkAccountsText": "Poveži profile",
"linkedAccountsText": "Povezani računi:",
+ "manageAccountText": "Kontroliraj Račun",
"nameChangeConfirm": "Promjeni svoje ime u ${NAME}?",
"resetProgressConfirmNoAchievementsText": "Ovo će poništiti tvoj napredak u timskom modu i\ntvoje najbolje rezultate (ali ne i tvoje kupone).\nNemaš mogućnost povratka. Jesi li siguran?",
"resetProgressConfirmText": "Ovo će poništiti tvoj napredak u timskom modu,\npostignuća, i vaše najbolje rezultate\n(ali ne i tvoje kupone). Nemaš mogućnost\npovratka. Jesi li siguran?",
@@ -23,6 +27,7 @@
"setAccountNameDesc": "Odaberi koje ime da se prikaže za tvoj račun.\nMožeš koristiti ime jednog od tvojih povezanih računa\nili kreirati vlastito prilagođeno ime.",
"signInInfoText": "Prijavi se da možeš dobivati kupone, natjecati\nse online, i dijeliti napredak između uređaja.",
"signInText": "Prijavi se",
+ "signInWithAnEmailAddressText": "Uloguj se sa email adresom",
"signInWithDeviceInfoText": "(automatski profil dostupan samo na ovom uređaju)",
"signInWithDeviceText": "Prijavi se sa profilom uređaja",
"signInWithGameCircleText": "Prijavi se sa Game Circle",
@@ -41,6 +46,7 @@
"titleText": "Račun",
"unlinkAccountsInstructionsText": "Odaberi račun za prekid veze.",
"unlinkAccountsText": "Prekini vezu računa",
+ "unlinkLegacyV1AccountsText": "Odveži Stare (V1) Račune",
"v2LinkInstructionsText": "Koristite ovu vezu za kreiranje računa ili prijavu.",
"viaAccount": "(Preko ${NAME} računa)",
"youAreSignedInAsText": "Prijavljeni ste kao:"
@@ -334,9 +340,12 @@
"getMoreGamesText": "Još igara...",
"titleText": "Dodaj igru"
},
+ "addToFavoritesText": "Dodaj u omiljene",
+ "allText": "Sve",
"allowText": "Dopusti",
"alreadySignedInText": "Tvoj akaunt je prijavljen sa drugog uredjaja;\nmolimo promenite akaunt ili zatvori igru na\ntvom drugom uredjaju i probaj opet.",
"apiVersionErrorText": "Nemoguće je učitati modul ${NAME}; napravljen je za ${VERSION_USED} verziju aplikacije; potrebna je verzija ${VERSION_REQUIRED}.",
+ "areYouSureText": "Dali si siguran?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Automatski\" omogućuje ovo samo kad su slušalice priključene)",
"headRelativeVRAudioText": "VR relativni zvuk",
@@ -366,6 +375,9 @@
"chatMuteText": "Stišaj Chat",
"chatMutedText": "Chat Stišan",
"chatUnMuteText": "Upali Chat",
+ "chests": {
+ "reduceWaitText": "Skrati cekanje"
+ },
"choosingPlayerText": "",
"completeThisLevelToProceedText": "Moraš završiti ovu\nrazinu da nastaviš!",
"completionBonusText": "Završni bonus",
@@ -501,6 +513,7 @@
"welcome2Text": "Možeš zarađivati kupone raznim aktivnostima.\nKupone možeš koristiti za otključavanje novih likova, mapa, i\nigara, ulaženje u turnire, i puno više.",
"yourPowerRankingText": "Tvoja pozicija"
},
+ "copyConfirmText": "Kopirano na međuspremnik.",
"copyOfText": "Kopija ${NAME}",
"copyText": "Kopirati",
"createEditPlayerText": "",
@@ -547,7 +560,10 @@
"deleteText": "Izbriši",
"demoText": "Demo",
"denyText": "Odbij",
+ "deprecatedText": "Zastareno",
+ "descriptionText": "Diskripcija",
"desktopResText": "Desktop rezolucija",
+ "deviceAccountUpgradeText": "Upozorenje:\nPrijavljeni ste s uređajnim računom\n(${NAME}).\nUređajni računi će biti izbrisani u budućem ažuriranju.",
"difficultyEasyText": "Lagano",
"difficultyHardOnlyText": "Samo u teškom modu",
"difficultyHardText": "Teško",
@@ -556,6 +572,8 @@
"disableRemoteAppConnectionsText": "Isključi konekciju Remote-aplikacije",
"disableXInputDescriptionText": "Dozvoljava više od 4 kontrolera ali možda neće raditi dobro.",
"disableXInputText": "Isključi XInput",
+ "disabledText": "Deaktiviraj",
+ "discordJoinText": "Pridruzi se diskordu",
"doneText": "Gotovo",
"drawText": "Neriješeno",
"duplicateText": "Dupliciraj",
@@ -589,6 +607,7 @@
"localProfileText": "(Lokalni profil)",
"nameDescriptionText": "Ime Igrača",
"nameText": "Ime",
+ "profileAlreadyExistsText": "Profil sa tim imenom već postoji",
"randomText": "nasumično",
"titleEditText": "Uredi Profil",
"titleNewText": "Novi Profil",
@@ -624,12 +643,15 @@
"useMusicFolderText": "Mapa s Glazbenim Datotekama"
},
"editText": "Izmjeni",
+ "enabledText": "Aktiviraj",
"endText": "Kraj",
"enjoyText": "Uživaj",
"epicDescriptionFilterText": "${DESCRIPTION} U epskom usporenom filmu.",
"epicNameFilterText": "${NAME} (epski mod)",
"errorAccessDeniedText": "pristup zabranjen",
+ "errorDeviceTimeIncorrectText": "Vrijeme vašeg uređaja je krivo za ${HOURS} sati.\nOvo će stvarati probleme.\nMolimo provjerite vaše postavke vremena i vremenske zone.",
"errorOutOfDiskSpaceText": "nema prostora na disku",
+ "errorSecureConnectionFailText": "Nije moguće uspostaviti sigurnu vezu; internetska funkcionalnost može ne uspjeti.",
"errorText": "Greška",
"errorUnknownText": "nepoznata greška",
"exitGameText": "Izlaz iz ${APP_NAME}?",
@@ -739,6 +761,7 @@
"manualYourLocalAddressText": "Tvoja lokalna adresa:",
"nearbyText": "Blizu",
"noConnectionText": "",
+ "noPartiesAddedText": "Nema zurki dodanih",
"otherVersionsText": "(druge verzije)",
"partyCodeText": "Grupna šifra",
"partyInviteAcceptText": "Prihvati",
@@ -794,7 +817,7 @@
"ticketPack4Text": "Jumbo paket kupona",
"ticketPack5Text": "Mamutski paket kupona",
"ticketPack6Text": "Ultimativni paket kupona",
- "ticketsFromASponsorText": "Dobij ${COUNT} kupona\nod sponzora",
+ "ticketsFromASponsorText": "Pogledaj reklamu\nza ${COUNT} kupona",
"ticketsText": "${COUNT} kupona",
"titleText": "Zaradi kupone",
"unavailableLinkAccountText": "Nažalost, kupovina nije dostupna na ovoj platformi.\nKao zaobilazno rješenje, možete povezati račun s računom na \ndrugoj platformi i tamo nastaviti kupovinu.",
@@ -804,12 +827,21 @@
"youHaveShortText": "imaš ${COUNT}",
"youHaveText": "imaš ${COUNT} kupona"
},
+ "goldPass": {
+ "desc1InfTokensText": "Beskonacno tokena",
+ "desc2NoAdsText": "Nema reklama",
+ "desc3ForeverText": "Zauvjek.",
+ "goldPassText": "Zlatna propusnica"
+ },
"googleMultiplayerDiscontinuedText": "Oprostite, Google Play Games servis za partije u igrama više ne postoji.\nTrenutno radim na zamjeni što je brže moguće.\nTo tada, priključujte se u partije na druge načine.\n-Eric",
+ "googlePlayPurchasesNotAvailableText": "Google Play kupnje nisu dostupne.\nMožda ćete trebati ažurirati svoju trgovinu aplikacija.",
+ "googlePlayServicesNotAvailableText": "Google Play Services nije dostupan.\nNeke funkcionalnosti aplikacije mogu biti isključene.",
"googlePlayText": "Google Play",
"graphicsSettingsWindow": {
"alwaysText": "Uvijek",
"fullScreenCmdText": "Cijeli ekran (Cmd-F)",
"fullScreenCtrlText": "Cijeli ekran (Ctrl-F)",
+ "fullScreenText": "Puni zaslon",
"gammaText": "Svjetlina(Gamma)",
"highText": "Visoko",
"higherText": "Više",
@@ -1003,6 +1035,7 @@
"creditsText": "Zasluge",
"demoMenuText": "Demo izbornik",
"endGameText": "Kraj igre",
+ "endTestText": "Završi Test",
"exitGameText": "Izlaz iz igre",
"exitToMenuText": "Povratak u izbornik?",
"howToPlayText": "Kako igrati",
@@ -1022,6 +1055,7 @@
"maxConnectionsText": "Maksimalna konekcija",
"maxPartySizeText": "Maksimum veličine žurke",
"maxPlayersText": "Maksimum igrača",
+ "merchText": "Roba!",
"modeArcadeText": "Arkadni Mod",
"modeClassicText": "Klasični Mod",
"modeDemoText": "Demo Mod",
@@ -1051,17 +1085,21 @@
"noContinuesText": "(bez nastavaka)",
"noExternalStorageErrorText": "Vanjska pohrana nije pronađena",
"noGameCircleText": "Greška: nisi prijavljen u GameCircle",
+ "noMessagesText": "Nema poruka.",
"noProfilesErrorText": "Nemaš profila igrača, pa ti je samo ime '${NAME}' na raspolaganju. \nPođi pod Postavke->Profili igrača da sebi napraviš profil. ",
"noScoresYetText": "Još nema rezultata.",
+ "noServersFoundText": "Nema nađenih servera.",
"noThanksText": "Ne hvala",
"noTournamentsInTestBuildText": "UPOZORENJE: Turnirski bodovi od ove test gradnje će biti ignorirani.",
"noValidMapsErrorText": "Nijedna ispravna mapa nije pronađena za ovu igru.",
"notEnoughPlayersRemainingText": "Nije ostalo dovoljno igrača; iziđi i započni novu igru.",
"notEnoughPlayersText": "Trebaš najmanje ${COUNT} igrača da započneš ovu igru!",
+ "notEnoughTicketsText": "Nemaš dovoljno kupona!",
"notNowText": "Ne sad",
"notSignedInErrorText": "Moraš se prijaviti da uradiš ovo.",
"notSignedInGooglePlayErrorText": "Moraš se ulogovati preko Google pleja da uradiš ovo.",
"notSignedInText": "nisi prijavljen",
+ "notUsingAccountText": "Bilješka: ignoriranje ${SERVICE} račun.\nIdite u 'Račun -> Prijavite se s ${SERVICE} ako ga želite koristiti.",
"nothingIsSelectedErrorText": "Ništa nije odabrano!",
"numberText": "#${NUMBER}",
"offText": "Isključeno",
@@ -1069,6 +1107,9 @@
"onText": "Uključeno",
"oneMomentText": "Jedan trenutak...",
"onslaughtRespawnText": "${PLAYER} će se ponovno pojaviti u naletu ${WAVE}",
+ "openMeText": "Otvori me!",
+ "openNowText": "Otvori sada",
+ "openText": "Otvori",
"orText": "${A} ili ${B}",
"otherText": "Drugo...",
"outOfText": "(#${RANK} od ${ALL})",
@@ -1120,7 +1161,11 @@
"pleaseWaitText": "Molimo sačekajte...",
"pluginClassLoadErrorText": "Pogreška učitavanja dodatka klase '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Pogreška iniciranja dodatka '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Postavke Dodataka",
+ "pluginsAutoEnableNewText": "Automatski Uključi Nove Dodatke",
"pluginsDetectedText": "Novi dodatak(ci) detektiran(i) Resetiraj da ih ukljućiš ili ih konfiguriraj u postavkima",
+ "pluginsDisableAllText": "Isključi Sve Dodatke",
+ "pluginsEnableAllText": "Uključi Sve Dodatke",
"pluginsRemovedText": "${NUM} dodatak/ci više nisu pronađeni.",
"pluginsText": "Dodatci",
"practiceText": "Vježba",
@@ -1212,7 +1257,7 @@
"revertText": "Poništi",
"runText": "Trk",
"saveText": "Spremi",
- "scanScriptsErrorText": "Greška(e) skeniranja skripra; provjerite dnevnik za detalje.",
+ "scanScriptsErrorText": "Greška(e) skeniranja skripta. Provjerite dnevnik za detalje",
"scoreChallengesText": "Izazovi za rezultat",
"scoreListUnavailableText": "Lista s rezultatima nedostupna.",
"scoreText": "Rezultat",
@@ -1257,6 +1302,7 @@
"netTestingText": "Testiranje mreže",
"resetText": "Poništi",
"showBombTrajectoriesText": "Pokaži putanju bombe",
+ "showInGamePingText": "Prikaži Ping",
"showPlayerNamesText": "Pokaži imena igrača",
"showUserModsText": "Pokaži mapu za modove",
"titleText": "Napredno",
@@ -1369,14 +1415,20 @@
"tipText": "Savjet",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Nabavi tokene",
+ "notEnoughTokensText": "Nemas dovoljno tokena!"
+ },
"topFriendsText": "Prijatelji s najboljim rezultatima",
"tournamentCheckingStateText": "Provjeravam stanje turnira; molim pričekaj...",
"tournamentEndedText": "Ovaj turnir je završio. Novi će započeti ubrzo.",
"tournamentEntryText": "Kotizacija",
+ "tournamentFinalStandingsText": "Finalna rijesenja",
"tournamentResultsRecentText": "Nedavni Rezultati turnira",
"tournamentStandingsText": "Poredak",
"tournamentText": "Turnir",
"tournamentTimeExpiredText": "Vrijeme turnira je isteklo",
+ "tournamentsDisabledWorkspaceText": "Turnamenti su deaktivirani kad su radni prostori upaljeni.\nDa re-aktiviraš turnamente, ugasi svoj radni prostor i resetiraj.",
"tournamentsText": "Turniri",
"translations": {
"characterNames": {
@@ -1529,6 +1581,7 @@
"Italian": "Talijanski",
"Japanese": "Japanski",
"Korean": "Korejski",
+ "Malay": "Malajski",
"Persian": "Perzijski",
"Polish": "Poljski",
"Portuguese": "Portugalski",
@@ -1614,6 +1667,7 @@
"Max number of profiles reached.": "Max broj dosegao profila.",
"Maximum friend code rewards reached.": "Maksimalne nagrade od prijateljskih kodova dostignute.",
"Message is too long.": "Poruka je prevelika.",
+ "New tournament result!": "Novi rezultat turnira!",
"No servers are available. Please try again soon.": "Nema dostupnih servera. Pokušajte opet kasnije.",
"Profile \"${NAME}\" upgraded successfully.": "Profil \"${NAME}\" uspjesno upgrajdovan",
"Profile could not be upgraded.": "Profil se ne može ažurirati.",
@@ -1812,6 +1866,7 @@
"usesExternalControllerText": "Ova igra koristi vanjski kontroler za kretanje.",
"usingItunesText": "Koristim glazbenu aplikaciju za glazbenu listu...",
"usingItunesTurnRepeatAndShuffleOnText": "Molim provjeri da je opcija shuffle uključena, a opcija repeat postavljena na SVE na iTunes. ",
+ "v2AccountLinkingInfoText": "Za povezivanje V2 računa, korist 'Upravlaj računima' botun",
"validatingTestBuildText": "Potvrđujem testnu verziju...",
"victoryText": "Pobjeda!",
"voteDelayText": "Nemožeš započeti još jedno glasanje ${NUMBER} sekundi",
@@ -1844,19 +1899,20 @@
},
"waveText": "Nalet",
"wellSureText": "Sigurno!",
+ "whatIsThisText": "Što je ovo?",
"wiimoteLicenseWindow": {
"titleText": "DarwiinRemote Copyright"
},
"wiimoteListenWindow": {
- "listeningText": "Tražim Wiimote-ove...",
- "pressText": "Pritisni Wiimote tipke 1 i 2 istovremeno.",
- "pressText2": "Na novijim Wiimote-ovima s ugrađenim Motion Plus-om, umjesto njih pritisni crvenu 'sync' tipku na poleđini."
+ "listeningText": "Tražim Wiimote-ove... ",
+ "pressText": "Pritisni Wiimote tipke 1 i 2 istovremeno. ",
+ "pressText2": "Na novijim Wiimote-ovima s ugrađenim Motion Plus-om, umjesto njih pritisni crvenu 'sync' tipku na poleđini. "
},
"wiimoteSetupWindow": {
"copyrightText": "DarwiinRemote Copyright",
"listenText": "Traži",
"macInstructionsText": "Provjeri da je tvoj Wii isključen, a Bluetooth uključen\nna tvome Macu, pa pritisni 'Traži'. Podrška za Wiimote-ove\nmože biti malo nestabilna, pa ćeš možda morati pokušati nekoliko puta\nprije nego što uspostaviš vezu.\n\nBluetooth bi trebao podržati do 7 povezanih uređaja,\nmada bi tvoja udaljenost mogla varirati.\n\nBombSquad podržava originalne Wiimote-ove, Nunchuk-ove,\ni Classic Controller.\nNoviji Wii Remote Plus sada radi,\nali ne s dodacima.",
- "thanksText": "Hvala DarwiinRemote timu\nšto je ovo omogućio.",
+ "thanksText": "Hvala DarwiinRemote timu\nšto je ovo omogućio. ",
"titleText": "Podešavanje Wiimote-ova"
},
"winsPlayerText": "${NAME} pobjeđuje!",
@@ -1870,7 +1926,7 @@
"xbox360ControllersWindow": {
"getDriverText": "Nabavi driver",
"macInstructions2Text": "Da možeš koristiti kontrolere bežično, trebat ćeš i reciever koji\ndolazi u 'Xbox 360 Wireless Controller for Windows' paketu.\nJedan reciever omogućuje ti da povežeš do 4 kontrolera.\n\nVažno: recieveri trećih strana neće raditi s ovim driverom; \nprovjeri da na tvom recieveru piše 'Microsoft', a ne 'XBOX 360'.\nMicrosoft ih više ne prodaje odvojeno, pa ćeš morati nabaviti\njednoga u paketu s kontrolerom ili potraži na ebayu.\n\nAko ti je ovo bilo korisno, molim te razmisli o donaciji\nprogrameru drivera na njegovoj stranici.",
- "macInstructionsText": "Da možeš koristiti Xbox 360 kontrolere, morat ćeš instalirati\nMac driver dostupan na poveznici ispod. \nRadi i sa žičnim i s bežičnim kontrolerima.",
+ "macInstructionsText": "Da možeš koristiti Xbox 360 kontrolere, morat ćeš instalirati\nMac driver dostupan na poveznici ispod. \nRadi i sa žičnim i s bežičnim kontrolerima. ",
"ouyaInstructionsText": "Za korištenje žičnih Xbox 360 kontrolera s BombSquadom, jednostavno\nih uključi u USB ulaz tvog uređaja. Možeš koristiti USB hub\nda priključiš više kontrolera.\n\nZa korištenje bežičnih kontrolera trebat ćeš bežični reciever, \nkoji je dostupan kao dio \"Xbox 360 wireless Controller for Windows\" \npaketa ili u slobodnoj prodaji. Svaki se reciever priključuje u USB ulaz i\nomogućuje ti da povežeš do 4 bežična kontrolera.",
"titleText": "Korišćenje Xbox 360 kontrolera sa $(APP_NAME)"
},
diff --git a/dist/ba_data/data/languages/czech.json b/dist/ba_data/data/languages/czech.json
index f7cdb15d..0979ac5e 100644
--- a/dist/ba_data/data/languages/czech.json
+++ b/dist/ba_data/data/languages/czech.json
@@ -1,13 +1,15 @@
{
"accountSettingsWindow": {
- "accountNameRules": "Jména účtů nemůžou obsahovat smajlíky ani jiné speciální znaky",
+ "accountNameRules": "Jména účtů nemůžou obsahovat emoji ani jiné speciální znaky",
"accountProfileText": "(Aktuální profil)",
"accountsText": "Účty",
- "achievementProgressText": "Achievementy: ${COUNT}/${TOTAL}",
- "campaignProgressText": "Postup Kampaně [Těžká]: ${PROGRESS}",
+ "achievementProgressText": "Trofeje: ${COUNT}/${TOTAL}",
+ "campaignProgressText": "Postup kampaně [Těžká]: ${PROGRESS}",
"changeOncePerSeason": "Lze změnit pouze jednou za sezónu.",
"changeOncePerSeasonError": "Chcete-li toto změnit znovu, musíte počkat na další sezónu (${NUM} days)",
- "customName": "Vlastní Jméno",
+ "createAnAccountText": "Založit účet",
+ "customName": "Vlastní jméno",
+ "deleteAccountText": "Smazat Účet",
"googlePlayGamesAccountSwitchText": "Pokud chcete použít jiný Google účet,\npoužijte pro změnu aplikaci Google Play Hry.",
"linkAccountsEnterCodeText": "Vložit kód",
"linkAccountsGenerateCodeText": "Generovat kód",
@@ -16,24 +18,26 @@
"linkAccountsInstructionsText": "Pokud chcete propojit účty, na jednom z nich generujte kód\na na druhém tento kód zadejte.\nPostup a inventář bude zkombinován.\nMůžete propojit až ${COUNT} účtů.\n\nDŮLEŽITÉ: PROPOJUJTE POUZE ÚČTY KTERÉ JSOU VAŠE!\nPOKUD PROPOJÍTE ÚČTY S KAMARÁDEM, NEBUDETE MOCI\nHRÁT OBA VE STEJNÝ ČAS!\n\nDobře si to rozmyslete; Tuto akci nelze vrátit zpět!",
"linkAccountsText": "Propojit účty",
"linkedAccountsText": "Propojené účty:",
- "manageAccountText": "Spravovat Účet",
+ "manageAccountText": "Spravovat účet",
"nameChangeConfirm": "Přejete si změnit jméno účtu na ${NAME}?",
"notLoggedInText": "",
- "resetProgressConfirmNoAchievementsText": "Jste si jistí, že to chcete udělat?\nTímto NENÁVRATNĚ resetujete veškerý postup Co-op\na lokální nejlepší výsledky (ale kupóny vám zůstanou).",
- "resetProgressConfirmText": "Jste si jistí, že to chcete udělat?\nTímto NENÁVRATNĚ resetujete veškerý postup Co-Op,\nachievementy a lokální nejlepší výsledky.\n(ale kupóny vám zůstanou)",
- "resetProgressText": "Resetovat Postup",
+ "resetProgressConfirmNoAchievementsText": "Toto resetuje váš postup v Co-op\na lokální rekordy (ale ne vaše kupóny).\nToto je nenávratné. Jste si jisti?",
+ "resetProgressConfirmText": "Toto resetuje váš postup v Co-op,\ntrofeje a lokální rekordy (ale ne vaše kupóny).\nToto je nenávratné. Jste si jisti?",
+ "resetProgressText": "Resetovat postup",
"setAccountName": "Nastavit jméno účtu",
"setAccountNameDesc": "Vyberte si jméno pro váš účet.\nMůžete použít jedno ze svých již\npoužitých nebo si vytvořit nové.",
- "signInInfoText": "Přihlašte se, abyste mohli sbírat kupóny, soupeřit online,\na sdílet postup mezi zařízeními.",
+ "signInInfoText": "Přihlašte se, abyste mohli sbírat kupóny, soupeřit online\na sdílet postup mezi zařízeními.",
"signInText": "Přihlásit",
+ "signInWithAnEmailAddressText": "Přihlášení s emailem",
"signInWithDeviceInfoText": "(automaticky vytvořený účet dostupný pouze na tomto zařízení)",
"signInWithDeviceText": "Přihlásit se s účtem zařízení",
- "signInWithGameCircleText": "Přihlásit se s ,,Game circle\"",
+ "signInWithGameCircleText": "Přihlásit se s přes Game Circle",
"signInWithGooglePlayText": "Přihlásit se přes Google Play",
"signInWithTestAccountInfoText": "(zastaralý typ účtu; použije raději účet zařízení)",
"signInWithTestAccountText": "Přihlásit se s testovacím účtem",
+ "signInWithText": "Přihlásit se s ${SERVICE}",
"signInWithV2InfoText": "(účet který funguje na všech platformách)",
- "signInWithV2Text": "Přihlášení s BombSquad účtem",
+ "signInWithV2Text": "Přihlášení s ${APP_NAME} účtem",
"signOutText": "Odhlásit se",
"signingInText": "Přihlašuji se...",
"signingOutText": "Odhlašuji se...",
@@ -44,14 +48,14 @@
"titleText": "Profil",
"unlinkAccountsInstructionsText": "Zvolte účet k odpojení",
"unlinkAccountsText": "Odpojit účty",
- "unlinkLegacyV1AccountsText": "na rozdíl od starších účtů (V1).",
+ "unlinkLegacyV1AccountsText": "Odpojit zastaralé (V1) účty",
"v2LinkInstructionsText": "Použijte tento odkaz pro vytvoření účtu nebo přihlášení.",
"viaAccount": "(přes účet ${NAME})",
"youAreLoggedInAsText": "Jste přihlášen jako:",
- "youAreSignedInAsText": "Jste přihlášen jako:"
+ "youAreSignedInAsText": "Jste přihlášeni jako:"
},
- "achievementChallengesText": "Ocenění Výzev",
- "achievementText": "Úspěch",
+ "achievementChallengesText": "Trofeje Výzev",
+ "achievementText": "Trofej",
"achievements": {
"Boom Goes the Dynamite": {
"description": "Zabijte 3 padouchy pomocí TNT",
@@ -68,20 +72,20 @@
"name": "Boxer"
},
"Dual Wielding": {
- "descriptionFull": "Připojte alespoň 2 ovladače (Hardware nebo aplikaci)",
- "descriptionFullComplete": "Připojeno alespoň 2 ovladače (hardware/aplikaci)",
+ "descriptionFull": "Připojte alespoň 2 ovladače (fyzické nebo aplikaci)",
+ "descriptionFullComplete": "Připojeny alespoň 2 ovladače (fyzické/aplikace)",
"name": "Ovladačový maniak"
},
"Flawless Victory": {
- "description": "Vyhrajte aniž byste byly zasaženi",
- "descriptionComplete": "Vyhráli jste aniž byste byly zasaženi",
+ "description": "Vyhrajte, aniž byste byli zasaženi",
+ "descriptionComplete": "Vyhráli jste, aniž byste byli zasaženi",
"descriptionFull": "Vyhrajte ${LEVEL} aniž byste byli zasaženi",
"descriptionFullComplete": "Vyhráli jste ${LEVEL} aniž byste byli zasaženi",
"name": "Bezvadná Výhra"
},
"Free Loader": {
- "descriptionFull": "Začněte hru ,,všichni proti všem\" s alespoň 2 hráči",
- "descriptionFullComplete": "Začali jste ,,všichni proti všem\" hru s více jak 2 hráči",
+ "descriptionFull": "Začněte hru Všichni Proti Všem s alespoň 2 hráči",
+ "descriptionFullComplete": "Začali jste hru Všichni Proti Všem s více jak 2 hráči",
"name": "Všichni proti všem!!!"
},
"Gold Miner": {
@@ -99,8 +103,8 @@
"name": "Naučit se kroky"
},
"In Control": {
- "descriptionFull": "Připojte ovladač (hardware/aplikaci)",
- "descriptionFullComplete": "Připojen ovladač (hardware/aplikaci)",
+ "descriptionFull": "Připojte ovladač (fyzický/aplikace)",
+ "descriptionFullComplete": "Připojen ovladač (fyzický/aplikace)",
"name": "Ve spojení"
},
"Last Stand God": {
@@ -125,18 +129,18 @@
"name": "${LEVEL} Kouzelník"
},
"Mine Games": {
- "description": "Zabij 3 padouchy pomocí min",
+ "description": "Zabijte 3 padouchy pomocí min",
"descriptionComplete": "Zabili jste 3 padouchy pomocí min",
- "descriptionFull": "Zabij 3 padouchy pomocí min v ${LEVEL}",
+ "descriptionFull": "Zabijte 3 padouchy pomocí min v ${LEVEL}",
"descriptionFullComplete": "Zabili jste 3 padouchy pomocí min v ${LEVEL}",
"name": "Minové hry"
},
"Off You Go Then": {
- "description": "Vyhoď 3 padouchy pryč z mapy",
+ "description": "Vyhoďte 3 padouchy pryč z mapy",
"descriptionComplete": "Vyhodili jste 3 padouchy pryč z mapy",
"descriptionFull": "Vyhoďte 3 padouchy pryč z mapy v ${LEVEL}",
"descriptionFullComplete": "Vyhodili jste 3 padouchy pryč z mapy v ${LEVEL}",
- "name": "Je čas, aby jsi odešel"
+ "name": "Je na čase abys odešel"
},
"Onslaught God": {
"description": "Získejte 5000 bodů",
@@ -181,10 +185,10 @@
"name": "Profi Boxer"
},
"Pro Football Shutout": {
- "description": "Vyhrajte aniž by padouši skórovali",
- "descriptionComplete": "Vyhráli jste aniž by padouši skórovali",
- "descriptionFull": "Vyhrajte ${LEVEL} aniž by padouši skórovali",
- "descriptionFullComplete": "Vyhráli jste ${LEVEL} aniž by padouši skórovali",
+ "description": "Vyhrajte, aniž by padouši skórovali",
+ "descriptionComplete": "Vyhráli jste, aniž by padouši skórovali",
+ "descriptionFull": "Vyhrajte ${LEVEL}, aniž by padouši skórovali",
+ "descriptionFullComplete": "Vyhráli jste ${LEVEL}, aniž by padouši skórovali",
"name": "${LEVEL} Bezchybná výhra"
},
"Pro Football Victory": {
@@ -209,10 +213,10 @@
"name": "${LEVEL} Výhra"
},
"Rookie Football Shutout": {
- "description": "Vyhrajte aniž by padouši skórovali",
- "descriptionComplete": "Vyhráli jste aniž by padouši skórovali",
- "descriptionFull": "Vyhrajte ${LEVEL} aniž by padouši skórovali",
- "descriptionFullComplete": "Vyhráli jste ${LEVEL} aniž by padouši skórovali",
+ "description": "Vyhrajte, aniž by padouši skórovali",
+ "descriptionComplete": "Vyhráli jste, aniž by padouši skórovali",
+ "descriptionFull": "Vyhrajte ${LEVEL}, aniž by padouši skórovali",
+ "descriptionFullComplete": "Vyhráli jste ${LEVEL}, aniž by padouši skórovali",
"name": "${LEVEL} Bezchybná výhra"
},
"Rookie Football Victory": {
@@ -251,7 +255,7 @@
"name": "${LEVEL} Kouzelník"
},
"Sharing is Caring": {
- "descriptionFull": "Úspěšně sdílet hru s přítelem",
+ "descriptionFull": "Úspěšně sdílejte hru s přítelem",
"descriptionFullComplete": "Úspěšně sdílena hra s přítelem",
"name": "Sdílení je laskavé"
},
@@ -285,7 +289,7 @@
},
"Team Player": {
"descriptionFull": "Začněte týmovou hru s 4+ hráči",
- "descriptionFullComplete": "Začali jste Týmovou hru s 4+ hráči",
+ "descriptionFullComplete": "Začali jste týmovou hru s 4+ hráči",
"name": "Týmový hráč"
},
"The Great Wall": {
@@ -303,10 +307,10 @@
"name": "Zeď"
},
"Uber Football Shutout": {
- "description": "Vyhrajte bez toho, aby padouši skórovali",
- "descriptionComplete": "Vyhráli jste bez toho, aby padouši skórovali",
- "descriptionFull": "Vyhrajte ${LEVEL} bez toho, aby padouši skórovali",
- "descriptionFullComplete": "Vyhráli jste ${LEVEL} bez toho, aby padouchové skórovali",
+ "description": "Vyhrajte, aniž by padouši skórovali",
+ "descriptionComplete": "Vyhráli jste, aniž by padouši skórovali",
+ "descriptionFull": "Vyhrajte ${LEVEL}, aniž by padouši skórovali",
+ "descriptionFullComplete": "Vyhráli jste ${LEVEL}, aniž by padouši skórovali",
"name": "${LEVEL} Bezchybná výhra"
},
"Uber Football Victory": {
@@ -331,21 +335,26 @@
"name": "${LEVEL} Vítězství"
}
},
- "achievementsRemainingText": "Achievementů Zbývá:",
- "achievementsText": "Achievementy",
- "achievementsUnavailableForOldSeasonsText": "Promiňte, ale detaily úspěchu nejsou pro starší sezóny zpřístupněny.",
+ "achievementsRemainingText": "Zbývající Trofeje:",
+ "achievementsText": "Trofeje",
+ "achievementsUnavailableForOldSeasonsText": "Omlouváme se, ale detaily trofeje nejsou pro starší sezóny dostupné.",
"activatedText": "${THING} aktivováno.",
"addGameWindow": {
- "getMoreGamesText": "Získat Více Her...",
- "titleText": "Přidat Hru"
+ "getMoreGamesText": "Získat více her...",
+ "titleText": "Přidat hru"
},
+ "addToFavoritesText": "Přidáno do Oblíbených",
+ "addedToFavoritesText": "Přidáno '${NAME}' do Oblíbených.",
+ "allText": "Vše",
"allowText": "Povolit",
- "alreadySignedInText": "Tento účet je používán v jiném zařízení;\npřepněte účet nebo v druhém zařízení hru zavřete, \npoté to zkuste znova.",
- "apiVersionErrorText": "Nelze načíst modul ${NAME}; je vytvořen pro verzi api ${VERSION_USED}; je potřeba ${VERSION_REQUIRED}.",
+ "alreadySignedInText": "Tento účet je používán v jiném zařízení;\npřepněte prosím účet nebo v druhém\nzařízení hru zavřete, poté to zkuste znova.",
+ "apiVersionErrorText": "Nelze načíst modul ${NAME}; je vytvořen pro API verze ${VERSION_USED}; je potřeba ${VERSION_REQUIRED}.",
+ "applyText": "Použít",
+ "areYouSureText": "Jste si jistí?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" zapněte pouze když jsou připojeny sluchátka)",
"headRelativeVRAudioText": "Head-Relative VR Audio",
- "musicVolumeText": "Hlasitost Hudby",
+ "musicVolumeText": "Hlasitost hudby",
"soundVolumeText": "Hlasitost Zvuků",
"soundtrackButtonText": "Soundtracky",
"soundtrackDescriptionText": "(přiřaďte vaši vlastní hudbu, která bude hrát při hraní)",
@@ -353,9 +362,9 @@
},
"autoText": "Automaticky",
"backText": "Zpět",
- "banThisPlayerText": "Znemožnit hráči přístup do hry",
- "bestOfFinalText": "Nejlepší z ${COUNT} Finální",
- "bestOfSeriesText": "Nejlepší z ${COUNT} sérií",
+ "banThisPlayerText": "Zabanovat hráče",
+ "bestOfFinalText": "Nejlepší z ${COUNT} - výsledky",
+ "bestOfSeriesText": "Nejlepší z ${COUNT} her",
"bestRankText": "Váš nejlepší je #${RANK}",
"bestRatingText": "Vaše nejlepší hodnocení je ${RATING}",
"betaErrorText": "Tato beta-verze již není aktivní; prosím podívejte se na novější verze",
@@ -366,40 +375,50 @@
"boostText": "Zrychlit",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} je nastaven v aplikaci sám.",
"buttonText": "tlačitko",
- "canWeDebugText": "Chtěli byste, aby BombSquad automaticky hlásil \nchyby a základní info o používání, vývojáři?\n\nTato data neobsahují žádné osobní informace a napomáhají,\naby hra běžela hladce a bez chyb.",
+ "canWeDebugText": "Chtěli byste, aby ${APP_NAME} automaticky hlásil \nchyby, pády a základní info o používání vývojáři?\n\nTato data neobsahují žádné osobní informace a napomáhají,\naby hra běžela hladce a bez chyb.",
"cancelText": "Zrušit",
"cantConfigureDeviceText": "Omlouváme se, ale ${DEVICE} není nastavitelné",
- "challengeEndedText": "Tato výzva již byla ukončena.",
+ "challengeEndedText": "Tato výzva již skončila.",
"chatMuteText": "Ztlumit Chat",
"chatMutedText": "Chat ztlumen",
"chatUnMuteText": "Obnovit chat",
+ "chests": {
+ "prizeOddsText": "Šance na výhru",
+ "reduceWaitText": "Zkrať čekání",
+ "slotDescriptionText": "Toto je místo pro truhlu.\n\nTruhly lze získat hraním kampaně,\numístěním v turnajích a získáním\ntrofejí.",
+ "slotText": "Místo pro truhlu ${NUM}",
+ "slotsFullWarningText": "VAROVÁNÍ: Všechna místa pro truhly jsou obsazená.\nV této hře ztrácíte možnost získat další truhlu.",
+ "unlocksInText": "Otevře se Za"
+ },
"choosingPlayerText": "",
- "completeThisLevelToProceedText": "Musíte dokončit\ntento level abyste mohli pokračovat!",
+ "claimText": "Získat",
+ "codesExplainText": "Kódy jsou zřizovány vývojářem za účelem\ndiagnózy a opravy problémů s účty.",
+ "completeThisLevelToProceedText": "Musíte dokončit\ntento level, abyste mohli pokračovat!",
"completionBonusText": "Bonus za dokončení",
"configControllersWindow": {
- "configureControllersText": "Nastavit Ovladače",
- "configureKeyboard2Text": "Nastavit Klávesnici P2",
- "configureKeyboardText": "Nastavit Klávesnici",
- "configureMobileText": "Mobilní Zařízení jako Ovladače",
- "configureTouchText": "Nastavit Dotykovou obrazovku",
+ "configureControllersText": "Nastavit ovladače",
+ "configureKeyboard2Text": "Nastavit klávesnici P2",
+ "configureKeyboardText": "Nastavit klávesnici",
+ "configureMobileText": "Mobilní zařízení jako ovladače",
+ "configureTouchText": "Nastavit dotykovou obrazovku",
"ps3Text": "PS3 Ovladače",
"titleText": "Ovladače",
"wiimotesText": "Wiimote ovladače",
"xbox360Text": "Xbox 360 Ovladače"
},
"configGamepadSelectWindow": {
- "androidNoteText": "Poznámka: podpora ovladače závisí na zařízení a verzi Androidu",
+ "androidNoteText": "Poznámka: podpora ovladačů závisí na zařízení a verzi Androidu",
"pressAnyButtonText": "Stiskněte libovolné tlačítko na ovladači,\n který chcete nastavovat...",
- "titleText": "Nastavit Ovladače"
+ "titleText": "Nastavit ovladače"
},
"configGamepadWindow": {
"advancedText": "Pokročilé",
- "advancedTitleText": "Pokročilé Nastavení Ovladače",
- "analogStickDeadZoneDescriptionText": "(zapněte tohle, jestliže Vaše postava 'klouže' po uvolnění páčky)",
- "analogStickDeadZoneText": "Mrtvá Zóna Analogové Páčky",
+ "advancedTitleText": "Pokročilé nastavení ovladače",
+ "analogStickDeadZoneDescriptionText": "(zvyšte, jestliže se Vaše postava pohybuje i po uvolnění páčky)",
+ "analogStickDeadZoneText": "Mrtvá zóna analogové páčky",
"appliesToAllText": "(nastaví na všechny ovladače tohoto typu)",
- "autoRecalibrateDescriptionText": "(zapněte to, jestliže se Vaše postava nepohybuje plnou rychlostí)",
- "autoRecalibrateText": "Automaticky Rekalibrovat Analogovou Páčku",
+ "autoRecalibrateDescriptionText": "(zapněte, jestliže se Vaše postava nepohybuje plnou rychlostí)",
+ "autoRecalibrateText": "Automaticky rekalibrovat analogovou páčku",
"axisText": "osa",
"clearText": "smazat",
"dpadText": "dpad",
@@ -408,76 +427,77 @@
"ifNothingHappensTryDpadText": "Jestliže se nic neděje, zkuste místo toho přiřadit d-pad.",
"ignoreCompletelyDescriptionText": "(zabránit tomuto ovladači ovlivnit buď hru nebo nabídku)",
"ignoreCompletelyText": "Ignorovat úplně",
- "ignoredButton1Text": "Ignorované Tlačítko 1",
- "ignoredButton2Text": "Ignorované Tlačítko 2",
- "ignoredButton3Text": "Ignorované Tlačítko 3",
+ "ignoredButton1Text": "Ignorované tlačítko 1",
+ "ignoredButton2Text": "Ignorované tlačítko 2",
+ "ignoredButton3Text": "Ignorované tlačítko 3",
"ignoredButton4Text": "Ignorováno tlačítko 4",
- "ignoredButtonDescriptionText": "(použijte tohle pro zabránění tlačítkům 'home' nebo 'synchronizace' ovlivnění UI)",
+ "ignoredButtonDescriptionText": "(použijte pro zabránění tlačítkům 'home' nebo 'synchronizace' ovlivňovat nabídky)",
"pressAnyAnalogTriggerText": "Stiskněte libovolný analogový spínač...",
"pressAnyButtonOrDpadText": "Stistkněte libovolné tlačítko nebo dpad...",
"pressAnyButtonText": "Stiskněte libovolné tlačítko...",
"pressLeftRightText": "Stistkněte doleva nebo doprava...",
"pressUpDownText": "Stiskněte nahoru nebo dolů...",
- "runButton1Text": "Tlačítko Běh 1",
- "runButton2Text": "Tlačítko Běh 2",
- "runTrigger1Text": "Přepnutí Běhu 1",
- "runTrigger2Text": "Přepnutí Běhu 2",
- "runTriggerDescriptionText": "(analogové spínače Vám dovolí běhat v různých rychlostech)",
- "secondHalfText": "Použijte tohle k nastavení druhé poloviny\n2 ovladačů v 1 zařízení, které se zobrazuje\njako jedno zařízení",
+ "runButton1Text": "Přepnutí běhu 1",
+ "runButton2Text": "Přepnutí běhu 2",
+ "runTrigger1Text": "Spínač běhu 1",
+ "runTrigger2Text": "Spínač běhu 2",
+ "runTriggerDescriptionText": "(analogové spínače Vám dovolí běžet v různých rychlostech)",
+ "secondHalfText": "Použijte k nastavení druhé poloviny ovladačů,\nkteré používají dva samostatné ovladače jako\njedno zařízení.",
"secondaryEnableText": "Zapnout",
- "secondaryText": "Druhý Ovladač",
- "startButtonActivatesDefaultDescriptionText": "(vypněte, jestliže Vaše start tlačítko je spíše 'menu' tlačítko)",
- "startButtonActivatesDefaultText": "Start Tlačítko Aktivuje Základní Widget",
- "titleText": "Nastavení Ovladače",
- "twoInOneSetupText": "2-v-1 Ovladač Nastavení",
+ "secondaryText": "Druhý ovladač",
+ "startButtonActivatesDefaultDescriptionText": "(vypněte, jestliže Vaše start tlačítko je se chová spíš jako 'menu' tlačítko)",
+ "startButtonActivatesDefaultText": "Start tlačítko aktivuje základní widget",
+ "titleText": "Nastavení ovladače",
+ "twoInOneSetupText": "Nastavení ovladače 2-v-1",
"uiOnlyDescriptionText": "(zabránit ovladači k připojení do hry)",
- "uiOnlyText": "Omezeno k použití menu",
- "unassignedButtonsRunText": "Všechna Nenastavená Tlačítka Běh",
+ "uiOnlyText": "Omezit k použití nabídek",
+ "unassignedButtonsRunText": "Všechna nenastavená tlačítka pro běh",
"unsetText": "",
- "vrReorientButtonText": "Reorientovat VR tlačítko"
+ "vrReorientButtonText": "Tlačítko pro VR reorientaci"
},
"configKeyboardWindow": {
"configuringText": "Nastavuji ${DEVICE}",
- "keyboard2NoteText": "Poznámka: většina klávesnic může registrovat jen pár stisklých\nkláves najednou, takže pro druhého hráče na klávesnici může být\nvýhodnější, když má druhou, vlastní klávesnici, kterou bude používat.\nOvšem,i v tomto případě, je stejně potřeba nastavit \nkaždému jiné klávesy."
+ "keyboard2NoteText": "Poznámka: většina klávesnic může registrovat jen pár stisklých\nkláves najednou, takže pro druhého hráče na klávesnici může být\nvýhodnější, když má druhou, vlastní klávesnici, kterou bude používat.\nOvšem i v tomto případě je potřeba nastavit \nkaždému jiné klávesy."
},
"configTouchscreenWindow": {
- "actionControlScaleText": "Velikost Ovládacího Prvku",
- "actionsText": "Ovládací Prvky",
+ "actionControlScaleText": "Velikost ovládacího prvku",
+ "actionsText": "Ovládací prvky",
"buttonsText": "tlačítka",
"dragControlsText": "< posouvejte ovládacími prvky pro změnu jejich pozice >",
"joystickText": "joystick",
- "movementControlScaleText": "Velikost Ovládacího Prvku pro Pohyb",
+ "movementControlScaleText": "Velikost ovládacího prvku pro pohyb",
"movementText": "Pohyb",
"resetText": "Resetovat",
- "swipeControlsHiddenText": "Skrýt Přejížděcí Ikony",
- "swipeInfoText": "Na 'Přejížděcí' styl ovládání se trochu déle zvyká, ale\nje s ním jednodužší hrát bez koukání se na tlačítka.",
+ "swipeControlsHiddenText": "Skrýt přejížděcí ikony",
+ "swipeInfoText": "Na „Přejížděcí“ styl ovládání se trochu déle zvyká, ale\nje s ním jednodužší hrát bez koukání se na tlačítka.",
"swipeText": "přejíždění",
- "titleText": "Nastavit Dotykovou Obrazovku"
+ "titleText": "Nastavit dotykovou obrazovku"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} může být nakonfigurováno v Nastavení Systému",
"configureItNowText": "Nastavit teď?",
"configureText": "Nastavit",
"connectMobileDevicesWindow": {
"amazonText": "Amazon Appstore",
"appStoreText": "App Store",
- "bestResultsText": "Pro nejlepší výsledky budete potřebovat wifi síť bez lagů.\nLagy na wifi můžete snížit vypnutím některých bezdrátových zařízení,\nhraním blízko Vašeho routeru, a připojením hostitele hry přímo\ndo sítě přes ethernet.",
- "explanationText": "Pro použití chytrého telefonu nebo tabletu jako bezdrátový ovladač,nainstalujte si aplikaci ${REMOTE_APP_NAME}.\nLibovolný počet zařízení může by připojeno do hry ${APP_NAME}\npřipojeno přes síť Wi-Fi , a je to zdarma !!",
+ "bestResultsText": "Pro nejlepší výsledky budete potřebovat WiFi síť bez lagů.\nLagy na WiFi můžete snížit vypnutím některých bezdrátových zařízení,\nhraním blízko Vašeho routeru, a připojením hostitele hry přímo\ndo sítě přes Ethernet.",
+ "explanationText": "Pro použití chytrého telefonu nebo tabletu jako bezdrátový\novladač si nainstalujte aplikaci ${REMOTE_APP_NAME}.\nDo hry ${APP_NAME} se s ní může připojit neomezený počet zařízení, a je to zdarma!",
"forAndroidText": "pro Android:",
"forIOSText": "pro iOS:",
- "getItForText": "Získejte ${REMOTE_APP_NAME} pro I OS v App Store,\nnebo pro Android v Google play nebo v Amazon appstore",
+ "getItForText": "Získejte ${REMOTE_APP_NAME} pro iOS v App Store,\nnebo pro Android v Google play nebo v Amazon Appstore",
"googlePlayText": "Google Play",
- "titleText": "Použití Mobilních Zařízení jako Ovladačů"
+ "titleText": "Použití mobilních zařízení jako ovladačů"
},
"continuePurchaseText": "Pokračovat za ${PRICE}?",
"continueText": "Pokračovat",
"controlsText": "Ovládání",
"coopSelectWindow": {
"activenessAllTimeInfoText": "Nepočítá se do celkového žebříčku.",
- "activenessInfoText": "Tento násobič se zvyšuje ve dnech kdy hrajete,\na snižuje ve dnech, kdy ne.",
+ "activenessInfoText": "Tento násobič se zvyšuje ve dnech, kdy hrajete,\na snižuje ve dnech, kdy ne.",
"activityText": "Aktivita",
"campaignText": "Kampaň",
"challengesInfoText": "Vyhrajte ceny za dokončování mini-her.\n\nCeny a obtížnost úrovní se zvyšují vždy,\njakmile je výzva dokončena a snižují se vždy\njakmile výzva vyprší nebo je zahozena.",
"challengesText": "Výzvy",
- "currentBestText": "Aktuální Nejepší",
+ "currentBestText": "Aktuální nejepší",
"customText": "Speciální mapy",
"entryFeeText": "Vstupné",
"forfeitConfirmText": "Chcete zahodit tuto výzvu?",
@@ -491,179 +511,188 @@
"pointsText": "Body",
"powerRankingFinishedSeasonUnrankedText": "(sezóna ukončena bez hodnocení)",
"powerRankingNotInTopText": "(nejste v top ${NUMBER})",
- "powerRankingPointsEqualsText": "= ${NUMBER}bodů",
- "powerRankingPointsMultText": "(x ${NUMBER})",
+ "powerRankingPointsEqualsText": "= ${NUMBER} bodů",
+ "powerRankingPointsMultText": "(x ${NUMBER} bodů)",
"powerRankingPointsText": "${NUMBER} bodů",
"powerRankingPointsToRankedText": "(${CURRENT} z ${REMAINING} bodů)",
"powerRankingText": "Hodnocení",
"prizesText": "Ceny",
"proMultInfoText": "Hráči s upgradem ${PRO}\nobdrží ${PERCENT}% bonus k bodům.",
- "seeMoreText": "Zobrazit více...",
+ "seeMoreText": "Více...",
"skipWaitText": "Přeskočit čekání",
- "timeRemainingText": "Zbývající Čas",
+ "timeRemainingText": "Zbývající čas",
"toRankedText": "Pro hodnocení",
- "totalText": "Celkem",
+ "totalText": "celkem",
"tournamentInfoText": "Soutěžte s vysokým skóre\ns ostatními hráči ve Vaší lize.\n\nCeny jsou uělovány hráčům, kteří mají\nnejvíce bodů po ukončení turnaje.",
- "welcome1Text": "Vítejte v ${LEAGUE}. Pozici v lize\nmůžete vylepšit pomocí hvězdných hodnocení,\nplněním achievementů a vyhráváním trofejí v turnajích.",
+ "welcome1Text": "Vítejte v ${LEAGUE}. Pozici v lize\nmůžete zvýšit získáním hvězdných hodnocení,\nzískávýním trofejí a vyhráváním pohárů v turnajích.",
"welcome2Text": "Také můžete získávat kupóny z mnoha aktivit.\nMohou být použity pro odemykání nových postav, map,\nmini-her, pro vstup do turnajů, a dalších.",
"yourPowerRankingText": "Vaše pozice:"
},
"copyConfirmText": "Zkopírováno do schránky.",
"copyOfText": "${NAME} Kopie",
"copyText": "Kopírovat",
- "createEditPlayerText": "",
+ "createEditPlayerText": "",
"createText": "Vytvořit",
"creditsWindow": {
- "additionalAudioArtIdeasText": "Dodatečné Audio, První Artworky, a nápady od ${NAME}",
+ "additionalAudioArtIdeasText": "Dodatečné audio, první artworky a nápady od ${NAME}",
"additionalMusicFromText": "Dodatečná hudba od ${NAME}",
"allMyFamilyText": "Všem mým přátelům a rodině, kteří pomohli testovat hratelnost",
- "codingGraphicsAudioText": "Kódování, Grafika, a Audio od ${NAME}",
+ "codingGraphicsAudioText": "Kódování, grafika, a audio od ${NAME}",
"languageTranslationsText": "Překladatelé:",
"legalText": "Práva:",
- "publicDomainMusicViaText": "Public-domain hudba přes ${NAME}",
+ "publicDomainMusicViaText": "Hudba ve veřejné doméně od ${NAME}",
"softwareBasedOnText": "Tento software je založen na části práce ${NAME}",
"songCreditText": "${TITLE} od ${PERFORMER}\nSložil ${COMPOSER}, Aranžér ${ARRANGER}, Publikoval ${PUBLISHER},\nS laskavým svolením ${SOURCE}",
- "soundAndMusicText": "Zvuky & Hudba",
+ "soundAndMusicText": "Zvuky & hudba",
"soundsText": "Zvuky (${SOURCE}):",
- "specialThanksText": "Zvláštní Poděkování:",
+ "specialThanksText": "Zvláštní poděkování:",
"thanksEspeciallyToText": "Děkuji zejména ${NAME}",
"titleText": "Tvůrci ${APP_NAME}",
"whoeverInventedCoffeeText": "Tomu, kdo vynalezl kávu"
},
"currentStandingText": "Vaše momentální umístění je #${RANK}",
"customizeText": "Přizpůsobit...",
- "deathsTallyText": "${COUNT} - počet smrtí",
+ "deathsTallyText": "${COUNT} smrtí",
"deathsText": "Smrti",
"debugText": "ladění",
"debugWindow": {
- "reloadBenchmarkBestResultsText": "Poznámka: je doporučené nastavit Nastavení->Grafika>Textury na \"Vysoká\" při tomto testování.",
- "runCPUBenchmarkText": "Spustit CPU Benchmark",
- "runGPUBenchmarkText": "Spustit GPU Benchmark",
- "runMediaReloadBenchmarkText": "Spustit Media-Reload Benchmark",
+ "reloadBenchmarkBestResultsText": "Poznámka: je doporučené nastavit při tomto testování Nastavení->Grafika>Textury na „Vysoká“.",
+ "runCPUBenchmarkText": "Spustit CPU benchmark",
+ "runGPUBenchmarkText": "Spustit GPU benchmark",
+ "runMediaReloadBenchmarkText": "Spustit Media-Reload benchmark",
"runStressTestText": "Spustit test výdrže",
- "stressTestPlayerCountText": "Počet Hráčů",
- "stressTestPlaylistDescriptionText": "Playlist Testu Výdrže",
- "stressTestPlaylistNameText": "Název Playlistu",
- "stressTestPlaylistTypeText": "Typ Playlistu",
- "stressTestRoundDurationText": "Délka Trvání Kola",
- "stressTestTitleText": "Test Výdrže",
- "titleText": "Benchmarky & Testy Výdrže",
- "totalReloadTimeText": "Celkový čas znovunačtení: ${TIME} (koukněte do logu pro detaily)"
+ "stressTestPlayerCountText": "Počet hráčů",
+ "stressTestPlaylistDescriptionText": "Playlist testu výdrže",
+ "stressTestPlaylistNameText": "Název playlistu",
+ "stressTestPlaylistTypeText": "Typ playlistu",
+ "stressTestRoundDurationText": "Délka trvání kola",
+ "stressTestTitleText": "Test výdrže",
+ "titleText": "Benchmarky & testy výdrže",
+ "totalReloadTimeText": "Celkový čas znovunačtení: ${TIME} (nahlédněte do logu pro detaily)"
},
- "defaultGameListNameText": "Výchozí ${PLAYMODE} Playlist",
- "defaultNewGameListNameText": "Můj ${PLAYMODE} Playlist",
- "deleteText": "Vymaž",
+ "defaultGameListNameText": "Výchozí ${PLAYMODE} playlist",
+ "defaultNewGameListNameText": "Můj ${PLAYMODE} playlist",
+ "deleteText": "Smazat",
"demoText": "Demo",
"denyText": "Zakázat",
"deprecatedText": "Zastaralé",
- "desktopResText": "Rozlišení Plochy",
- "deviceAccountUpgradeText": "Varování:\nJste přihlášeni na účet dostupný pouze na tomto zařízení\n(${NAME}).\nTyto účty budou v příští aktualizaci odstraněny.",
+ "descriptionText": "Popisek",
+ "desktopResText": "Rozlišení plochy",
+ "deviceAccountUpgradeText": "Varování:\nJste přihlášeni na účet dostupný pouze na tomto zařízení (${NAME}).\nTyto účty budou v nastávající aktualizaci odstraněny.\nPřejděte na účet V2, chcete-li si ponechat Váš postup.",
"difficultyEasyText": "Lehká",
- "difficultyHardOnlyText": "Pouze Těžký Mód",
+ "difficultyHardOnlyText": "Pouze těžký mód",
"difficultyHardText": "Těžká",
"difficultyHardUnlockOnlyText": "Tento level může být odemčen pouze v těžkém módu.\nMyslíte si snad, že na to máte?",
"directBrowserToURLText": "Naveďte prosím svůj webový prohlížeč na následující adresu:",
- "disableRemoteAppConnectionsText": "Zablokovat přístup Ovladačům-z-aplikace",
- "disableXInputDescriptionText": "Povolí více než 4 ovladače ale nemusí fungovat dobře.",
+ "disableRemoteAppConnectionsText": "Zablokovat přístup ovladačům v aplikaci",
+ "disableXInputDescriptionText": "Povolí více než 4 ovladače, ale nemusí fungovat tak dobře.",
"disableXInputText": "Vypnout XInput",
+ "disabledText": "Zakázáno",
+ "discardText": "Zbavit se",
+ "discordFriendsText": "Chcete najít nové lidi na hraní?\nPřipojte se k našemu Discordu a najděte nové přátele!",
+ "discordJoinText": "Připoj se k Discordu",
"doneText": "Hotovo",
"drawText": "Remíza",
"duplicateText": "Duplikovat",
"editGameListWindow": {
"addGameText": "Přidat\nHru",
- "cantOverwriteDefaultText": "Nemohu přepsat výchozí playlist!",
- "cantSaveAlreadyExistsText": "Playlist s tímto jménem už existuje!",
- "cantSaveEmptyListText": "Nemohu uložit prázdný playlist!",
+ "cantOverwriteDefaultText": "Nelze přepsat výchozí playlist!",
+ "cantSaveAlreadyExistsText": "Playlist s tímto jménem již existuje!",
+ "cantSaveEmptyListText": "Nelze uložit prázdný playlist!",
"editGameText": "Upravit\nHru",
- "listNameText": "Název Playlistu",
+ "listNameText": "Název playlistu",
"nameText": "Jméno",
"removeGameText": "Odstranit\nHru",
"saveText": "Uložit seznam",
- "titleText": "Editor Playlistů"
+ "titleText": "Editor playlistů"
},
"editProfileWindow": {
"accountProfileInfoText": "Toto je speciální profil se jménem\na ikonou založenou na Vašem účtě.\n\n${ICONS}\n\nVytvořte si vlastní profily pro použití\nrůzných jmen či vlastních ikon.",
"accountProfileText": "(profil účtu)",
- "availableText": "Jméno \"${NAME}\" je dostupné.",
+ "availableText": "Jméno „${NAME}“ je dostupné.",
"changesNotAffectText": "Poznámka: změny neovlivní postavy, které jsou již ve hře",
"characterText": "postava",
- "checkingAvailabilityText": "Kontrola dostupnosti jména \"${NAME}\"...",
+ "checkingAvailabilityText": "Kontrola dostupnosti jména „${NAME}“...",
"colorText": "barva",
- "getMoreCharactersText": "Získat Více Postav...",
- "getMoreIconsText": "Získat Více Ikon...",
+ "getMoreCharactersText": "Získat více postav...",
+ "getMoreIconsText": "Získat více ikon...",
"globalProfileInfoText": "U globálních herních profilů je garantováno, že Vaše\njméno bude na celém světě unikátní. Včetně vlastních ikon.",
"globalProfileText": "(globální profil)",
"highlightText": "zvýraznění",
"iconText": "ikona",
- "localProfileInfoText": "Lokální herní profily nemají žádné ikony a u jejich jmen \nnelze garantovat jejich unikátnost. Přeměnou na globální profil\nsi zajistíte unikátní uživatelské jméno a možnost přidat vlatní ikonu.",
- "localProfileText": "(local profile)",
+ "localProfileInfoText": "Lokální herní profily nemají žádné ikony a u jejich jmen\nnelze garantovat jejich unikátnost. Převedením na globální profil\nsi zajistíte unikátní uživatelské jméno a možnost přidat vlatní ikonu.",
+ "localProfileText": "(lokální profil)",
"nameDescriptionText": "Přezdívka",
"nameText": "Jméno",
+ "profileAlreadyExistsText": "Profil s tímto jménem již existuje.",
"randomText": "náhodně",
- "titleEditText": "Upravit Profil",
- "titleNewText": "Nový Profil",
- "unavailableText": "jméno \"${NAME}\" není dostupné; zkuste jiné.",
+ "titleEditText": "Upravit profil",
+ "titleNewText": "Nový profil",
+ "unavailableText": "Jméno „${NAME}“ není dostupné; zkuste jiné.",
"upgradeProfileInfoText": "Toto rezervuje Vaše uživatelské jméno celosvětově,\na povolí Vám k němu přiřadit vlastní ikonu.",
"upgradeToGlobalProfileText": "Přeměnit na Globální profil"
},
"editSoundtrackWindow": {
"cantDeleteDefaultText": "Nemůžete odstranit výchozí soundtrack.",
- "cantEditDefaultText": "Nelze upravit výchozí soundtrack. Zduplikujte jej nebo vytvořte nový.",
+ "cantEditDefaultText": "Nelze upravit výchozí soundtrack. Duplikujte jej nebo vytvořte nový.",
"cantEditWhileConnectedOrInReplayText": "Nelze upravovat soundtracky, když jste připojení k partě nebo při záznamu.",
"cantOverwriteDefaultText": "Nelze přepsat výchozí soundtrack",
- "cantSaveAlreadyExistsText": "Soundtrack s tímto jménem už existuje!",
+ "cantSaveAlreadyExistsText": "Soundtrack s tímto jménem již existuje!",
"defaultGameMusicText": "",
- "defaultSoundtrackNameText": "Výchozí Soundtrack",
- "deleteConfirmText": "Odstranit Soundtrack:\n\n'${NAME}'?",
- "deleteText": "Odstranit\nSoundtrack",
- "duplicateText": "Duplikovat\nSoundtrack",
- "editSoundtrackText": "Editor Soundtracků",
- "editText": "Upravit\nSoundtrack",
- "fetchingITunesText": "získávám Music App playlisty...",
+ "defaultSoundtrackNameText": "Výchozí soundtrack",
+ "deleteConfirmText": "Odstranit soundtrack:\n\n„${NAME}“?",
+ "deleteText": "Odstranit\nsoundtrack",
+ "duplicateText": "Duplikovat\nsoundtrack",
+ "editSoundtrackText": "Editor soundtracků",
+ "editText": "Upravit\nsoundtrack",
+ "fetchingITunesText": "získávám playlisty z aplikace hudby...",
"musicVolumeZeroWarning": "Varování: hlasitost hudby je nastavena na 0",
"nameText": "Název",
- "newSoundtrackNameText": "Můj Soundtrack ${COUNT}",
- "newSoundtrackText": "Nový Soundtrack:",
- "newText": "Nový\nSoundtrack",
- "selectAPlaylistText": "Vybrat Playlist",
- "selectASourceText": "Zdroj Hudby",
+ "newSoundtrackNameText": "Můj soundtrack ${COUNT}",
+ "newSoundtrackText": "Nový soundtrack:",
+ "newText": "Nový\nsoundtrack",
+ "selectAPlaylistText": "Vybrat playlist",
+ "selectASourceText": "Zdroj hudby",
"testText": "test",
"titleText": "Soundtracky",
- "useDefaultGameMusicText": "Výchozí Herní Hudba",
- "useITunesPlaylistText": "Music App Playlist",
- "useMusicFileText": "Hudební Soubor (mp3, atd.)",
- "useMusicFolderText": "Složka s Hudebními Soubory"
+ "useDefaultGameMusicText": "Výchozí herní hudba",
+ "useITunesPlaylistText": "Playlist z apliace hudby",
+ "useMusicFileText": "Soubor hudby (mp3, atd.)",
+ "useMusicFolderText": "Složka se sooubory hudby"
},
"editText": "Upravit",
+ "enabledText": "Povoleno",
"endText": "Konec",
- "enjoyText": "Užij si to!",
- "epicDescriptionFilterText": "${DESCRIPTION} V epickém slow motionu",
- "epicNameFilterText": "Epické ${NAME}",
+ "enjoyText": "Užívejte!",
+ "epicDescriptionFilterText": "${DESCRIPTION} V epickém zpomaleném záběru.",
+ "epicNameFilterText": "Epické: ${NAME}",
"errorAccessDeniedText": "přístup zamítnut",
- "errorDeviceTimeIncorrectText": "Čas vašeho zařízení je špatně o ${HOURS} h.\nTo pravděpodobně způsobí problémy.\nProsím zkontrolujte nastavení času a časového pásma.",
+ "errorDeviceTimeIncorrectText": "Čas vašeho zařízení je špatně o ${HOURS}h.\nTo Vám pravděpodobně způsobí problémy.\nProsím zkontrolujte nastavení času a časového pásma.",
"errorOutOfDiskSpaceText": "není místo na disku",
- "errorSecureConnectionFailText": "Unable to establish secure cloud connection; network functionality may fail.",
+ "errorSecureConnectionFailText": "Nelze vytvořit zabezpečené připojení ke cloudu, síťové služby nemusí fungovat.",
"errorText": "Chyba",
"errorUnknownText": "neznámá chyba",
- "exitGameText": "Ukončit ${APP_NAME} ???",
- "exportSuccessText": "'${NAME}' úspěšně exportován.",
- "externalStorageText": "Externí Úložiště",
- "failText": "Fail",
- "fatalErrorText": "Ajaj, něco chybí nebo se něco rozbilo.\nZkuste reinstalovat BombSquad\nnebo kontaktujte ${EMAIL} pro pomoc.",
+ "exitGameText": "Ukončit ${APP_NAME}?",
+ "expiredAgoText": "Vypršel před ${T}",
+ "expiresInText": "Vyprší za ${T}",
+ "exportSuccessText": "„${NAME}“ úspěšně exportován.",
+ "externalStorageText": "Externí úložiště",
+ "failText": "Neúspěch",
+ "fatalErrorText": "Jejda; něco chybí nebo se rozbilo.\nZkuste aplikaci reinstalovat\nnebo kontaktujte ${EMAIL} pro pomoc.",
"fileSelectorWindow": {
- "titleFileFolderText": "Vyberte Soubor nebo Složku",
- "titleFileText": "Vybrat Soubor",
- "titleFolderText": "Vybrat Složku",
- "useThisFolderButtonText": "Použít Tuto Složku"
+ "titleFileFolderText": "Vyberte soubor nebo složku",
+ "titleFileText": "Vybrat soubor",
+ "titleFolderText": "Vybrat složku",
+ "useThisFolderButtonText": "Použít tuto složku"
},
"filterText": "Filtr",
- "finalScoreText": "Konečné Skóre",
- "finalScoresText": "Konečné Výsledky",
- "finalTimeText": "Konečný Čas",
+ "finalScoreText": "Konečné skóre",
+ "finalScoresText": "Konečné výsledky",
+ "finalTimeText": "Konečný čas",
"finishingInstallText": "Dokončuji instalaci; chvilí strpení...",
"fireTVRemoteWarningText": "* Pro lepší zkušenosti použijte \novladač nebo nainstalujte aplikaci \n${REMOTE_APP_NAME} na Váš\ntelefon nebo tablet.",
- "firstToFinalText": "První-do-${COUNT} Finále",
- "firstToSeriesText": "První-do-${COUNT} Série",
+ "firstToFinalText": "První do ${COUNT} bodů - výsledky",
+ "firstToSeriesText": "První do ${COUNT} bodů",
"fiveKillText": "PĚT ZABITÍ!!!",
"flawlessWaveText": "Dokonalá vlna!",
"fourKillText": "ČTYŘI ZABITÍ!!!",
@@ -673,30 +702,32 @@
"gameLeadersText": "Nejlepší hráči - ${COUNT}. hra",
"gameListWindow": {
"cantDeleteDefaultText": "Nemůžete odstranit výchozí playlist.",
- "cantEditDefaultText": "Nelze upravit výchozí playlist! Duplikujte ho nebo vytvořte nový.",
+ "cantEditDefaultText": "Nelze upravit výchozí playlist! Duplikujte jej nebo vytvořte nový.",
"cantShareDefaultText": "Nemůžete sdílet výchozí playlist.",
- "deleteConfirmText": "Odstranit \"${LIST}\" ?",
- "deleteText": "Odstranit\nPlaylist",
- "duplicateText": "Duplikovat\nPlaylist",
- "editText": "Upravit\nPlaylist",
- "newText": "Nový\nPlaylist",
- "showTutorialText": "Zobrazit Tutorial",
+ "deleteConfirmText": "Odstranit „${LIST}“?",
+ "deleteText": "Odstranit\nplaylist",
+ "duplicateText": "Duplikovat\nplaylist",
+ "editText": "Upravit\nplaylist",
+ "newText": "Nový\nplaylist",
+ "pointsToWinText": "Bodů Do Výhry",
+ "seriesLengthText": "Délka Série",
+ "showTutorialText": "Zobrazit návod",
"shuffleGameOrderText": "Náhodné seřazení her",
- "titleText": "Přizpůsobit ${TYPE} Playlisty"
+ "titleText": "Přizpůsobit ${TYPE} playlisty"
},
"gameSettingsWindow": {
- "addGameText": "Přidat Hru"
+ "addGameText": "Přidat hru"
},
- "gamesToText": "${WINCOUNT} Her k ${LOSECOUNT}",
+ "gamesToText": "${WINCOUNT} her k ${LOSECOUNT}",
"gatherWindow": {
"aboutDescriptionLocalMultiplayerExtraText": "Pamatujte: jakékoli zařízení v partě může mít více\nnež jednoho hráče, když máte dostatek ovladačů.",
- "aboutDescriptionText": "Použijte tyto záložky pro vytvoření party.\n\nHra s partou vám umožní hrát turnaje\ns Vašimi přáteli mezi různými zařízeními.\n\nPoužijte ${PARTY} Tlačítko v pravo nahoře\npro chat a interakci s Vaší partou.\n(na ovladači stiskněte tlačítko ${BUTTON}, když jste v menu)",
+ "aboutDescriptionText": "Použijte tyto záložky pro vytvoření Party.\n\nHra v Partě Vám umožní hrát turnaje\ns Vašimi přáteli mezi různými zařízeními.\n\nPoužijte tlačítko ${PARTY} vpravo nahoře\npro chat a interakci s Vaší Partou.\n(na ovladači stiskněte tlačítko ${BUTTON}, když jste v menu)",
"aboutText": "Použití",
"addressFetchErrorText": "",
"appInviteInfoText": "Pozvěte přátele ke hraní BombSquad a získají\n${COUNT} kupónů zdarma. Vy získáte ${YOU_COUNT} kupónů\nza každého kdo hru vyzkouší.",
- "appInviteMessageText": "${NAME} Vám poslal ${COUNT} kupónů v ${APP_NAME}",
+ "appInviteMessageText": "${NAME} Vám posílá ${COUNT} kupónů v ${APP_NAME}",
"appInviteSendACodeText": "Odeslat jim kód",
- "appInviteTitleText": "Pozvat ke hraní ${APP_NAME}",
+ "appInviteTitleText": "Pozvat ke hraní ${APP_NAME}",
"bluetoothAndroidSupportText": "(funguje s jakýmkoli Android zařízením podporujícím Bluetooth)",
"bluetoothDescriptionText": "Hostovat/Připojit se k partě přes Bluetooth:",
"bluetoothHostText": "Hostovat přes Bluetooth",
@@ -705,8 +736,9 @@
"checkingText": "zjišťuji...",
"copyCodeConfirmText": "Kód zkopírován do schránky",
"copyCodeText": "Zkopírovat kód",
- "dedicatedServerInfoText": "Pro dosažení nejlepších výsledků nastavte dedikovaný server. Viz bombsquadgame.com/server přečti si to.",
- "disconnectClientsText": "Tímto se odpojí ${COUNT} hráč/ů\nve Vaší partě. Jste si jistí?",
+ "dedicatedServerInfoText": "Pro dosažení nejlepších výsledků nastavte dedikovaný server.\nZjistěte více na bombsquadgame.com/server",
+ "descriptionShortText": "K založení party použijte okno Klubovna.",
+ "disconnectClientsText": "Tímto se odpojí ${COUNT} hráč/ů\nve Vaší partě. Jste si jisti?",
"earnTicketsForRecommendingAmountText": "Přátelé získají ${COUNT} tiketů když zkusí tuto hru\n(a ty získáš ${YOU_COUNT} za každého, kdo to udělá)",
"earnTicketsForRecommendingText": "Sdílet hru\nza kupóny zdarma...",
"emailItText": "Odeslat emailem",
@@ -718,63 +750,64 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} kupónů od ${NAME}",
"friendPromoCodeAwardText": "Získáte ${COUNT} kupónů pokaždé, jakmile je použit.",
"friendPromoCodeExpireText": "Kód vyprší za ${EXPIRE_HOURS} hodin a je funkční pouze pro nové hráče.",
- "friendPromoCodeInstructionsText": "Pro použití otevřete ${APP_NAME} a jděte do ,,Nastavení->Pokročilé->Vložit kód\"\nPodívejte se na bombsquadgame.com na odkazy k stažení na všechny podporované platformy.",
- "friendPromoCodeRedeemLongText": "Může z něj být získáno ${COUNT} kupónů zdarma, až pro ${MAX_USES} lidí.",
+ "friendPromoCodeInstructionsText": "Pro použití otevřete ${APP_NAME} a jděte do „Nastavení->Pokročilé->Poslat info“\nNa bombsquadgame.com na odkazy k stažení na všechny podporované platformy.",
+ "friendPromoCodeRedeemLongText": "Může z něj být získáno ${COUNT} kupónů zdarma až ${MAX_USES} lidmi.",
"friendPromoCodeRedeemShortText": "Může být použit pro získání ${COUNT} kupónů do hry.",
- "friendPromoCodeWhereToEnterText": "(v \"Nastavení->Pokročilé->Vložit Kód\")",
+ "friendPromoCodeWhereToEnterText": "(v „Nastavení->Pokročilé->Poslat info“)",
"getFriendInviteCodeText": "Získat kód pro pozvání přátel",
"googlePlayDescriptionText": "Pozvěte Google Play hráče do vaší Party:",
"googlePlayInviteText": "Pozvat",
- "googlePlayReInviteText": "Máte v partě ${COUNT} Google Play hráčů.\nTi budou odpojeni, pokud odešlete novou pozvánku.\nPozvěte je také, aby se připojili zpět.",
- "googlePlaySeeInvitesText": "Zobrazit Pozvánky",
+ "googlePlayReInviteText": "Máte v partě ${COUNT} Google Play hráčů.\nTi budou odpojeni, pokud odešlete novou pozvánku.\nPozvěte je také, aby se mohli připojit zpět.",
+ "googlePlaySeeInvitesText": "Zobrazit pozvánky",
"googlePlayText": "Google Play",
"googlePlayVersionOnlyText": "(Android / Google play verze)",
- "hostPublicPartyDescriptionText": "Hostovat veřejnou party",
+ "hostPublicPartyDescriptionText": "Hostovat veřejnou Partu",
"hostingUnavailableText": "Hostování není dostupné",
"inDevelopmentWarningText": "Poznámka:\n\nSíťová hra je nová a stále se rozvíjející funkce.\nAktualně je vysoce doporučeno, aby všichni hráči\nbyli na stejné Wi-Fi síti.",
"internetText": "Internet",
- "inviteAFriendText": "Že vaši přátelé ještě tuto hru nehrají? Pozvěte je,\naby ji vyzkoušeli, a získají ${COUNT} kupónů zdarma.",
+ "inviteAFriendText": "Vaši přátelé tuto hru ještě nehrají? Pozvěte je,\naby ji vyzkoušeli, a získají ${COUNT} kupónů zdarma.",
"inviteFriendsText": "Pozvat přátele",
- "joinPublicPartyDescriptionText": "Připojit se k veřejné skupině",
- "localNetworkDescriptionText": "Připojit se k partě (LAN, Bluetooth, atd.)",
+ "joinPublicPartyDescriptionText": "Připojit se k veřejné Partě",
+ "localNetworkDescriptionText": "Připojit se k Partě (LAN, Bluetooth, atd.)",
"localNetworkText": "Lokální síť",
- "makePartyPrivateText": "Publikovat mojí Party",
- "makePartyPublicText": "Publikovat mojí Party",
+ "makePartyPrivateText": "Skrýt moji Partu",
+ "makePartyPublicText": "Publikovat moji Partu",
"manualAddressText": "Adresa",
"manualConnectText": "Připojit",
- "manualDescriptionText": "Připojit se k partě pomocí adresy:",
+ "manualDescriptionText": "Připojit se k Partě pomocí adresy:",
"manualJoinSectionText": "Připojit k adrese",
"manualJoinableFromInternetText": "Jste připojitelní přes internet?:",
"manualJoinableNoWithAsteriskText": "NE*",
"manualJoinableYesText": "ANO",
- "manualRouterForwardingText": "*aby to mohlo fungovat, zkuste nastavit forward UDP portu ${PORT} ve vašem routeru, na vaší lokální adresu",
+ "manualRouterForwardingText": "*aby to fungovalo, zkuste nastavit router tak, aby přesměrovával UDP port ${PORT} na Vaši lokální adresu",
"manualText": "Ručně",
"manualYourAddressFromInternetText": "Vaše adresa z internetu:",
"manualYourLocalAddressText": "Vaše lokální adresa:",
- "nearbyText": "Blízké",
+ "nearbyText": "Lokální",
"noConnectionText": "<žádné připojení>",
+ "noPartiesAddedText": "Nebyly přidány žádné strany",
"otherVersionsText": "(ostatní verze)",
- "partyCodeText": "Kód party",
+ "partyCodeText": "Kód Party",
"partyInviteAcceptText": "Potvrdit",
"partyInviteDeclineText": "Zamítnout",
- "partyInviteGooglePlayExtraText": "(koukněte se do 'Google Play' záložky v okně 'Klubovna')",
+ "partyInviteGooglePlayExtraText": "(koukněte se do „Google Play“ záložky v okně „Klubovna“)",
"partyInviteIgnoreText": "Ignorovat",
- "partyInviteText": "${NAME} Vás pozval\nk připojení se k jeho partě!",
+ "partyInviteText": "${NAME} Vás zve\nk připojení do jeho Pary!",
"partyNameText": "Název Party",
- "partyServerRunningText": "Server vaší party běží",
- "partySizeText": "velikost party",
- "partyStatusCheckingText": "Zjištiji stav...",
- "partyStatusJoinableText": "Nyní se k vaší Party může kdokoli přidat",
+ "partyServerRunningText": "Server vaší Party běží",
+ "partySizeText": "velikost Party",
+ "partyStatusCheckingText": "zjištiji stav...",
+ "partyStatusJoinableText": "vaše Parta je nyní přístupná na internetu",
"partyStatusNoConnectionText": "Připojení k serveru selhalo",
- "partyStatusNotJoinableText": "K vaší Party se nikdo nemůže přidat z internetu",
- "partyStatusNotPublicText": "Vaše párty není veřejná",
+ "partyStatusNotJoinableText": "vaše Parta není přístupná na internetu",
+ "partyStatusNotPublicText": "vaše Parta není veřejná",
"pingText": "ping",
"portText": "Port",
- "privatePartyCloudDescriptionText": "Privátní parta běží na dedikovaných serverech; není potřeba nastavovat router.",
- "privatePartyHostText": "Hostovat privátní partu",
- "privatePartyJoinText": "Připojit se k privátní partě",
- "privateText": "Privátní",
- "publicHostRouterConfigText": "Může vyžadovat konfiguraci přesměrování portů na vašem routeru. Pro snadnější volbu, hostujte privátní partu.",
+ "privatePartyCloudDescriptionText": "Privátní Party běží na dedikovaných serverech; není potřeba nastavovat router.",
+ "privatePartyHostText": "Hostovat soukromou Partu",
+ "privatePartyJoinText": "Připojit se k soukromé Partě",
+ "privateText": "Soukromé",
+ "publicHostRouterConfigText": "Může vyžadovat nastavení přesměrování portů na vašem routeru. Pro snadnější volbu hostujte soukromou Partu.",
"publicText": "Veřejné",
"requestingAPromoCodeText": "Získávám kód...",
"sendDirectInvitesText": "Odeslat přímou pozvánku",
@@ -785,97 +818,105 @@
"startStopHostingMinutesText": "Můžete začít a ukončit bezplatné hostování na dalších ${MINUTES} minut.",
"stopHostingText": "Ukončit hostování",
"titleText": "Klubovna",
- "wifiDirectDescriptionBottomText": "Jestližem mají všechna zařízení funkci 'Wi-Fi Direct', je možné ji použít k nalezení\na připojení k sobě navzájem. Jakmile jsou všichni jednou propojeni, můžou tvořit party\npomocí záložky 'Lokální síť', prostě tak, jako kdyby byli v normální Wi-Fi síti.\n\nPro nejlepší výsledky by měl být hostitel Wi-Fi Direct zároveň hostitel ${APP_NAME} party.",
- "wifiDirectDescriptionTopText": "Wi-Fi Direct může být použit pro propojení zařízení Android přímo,\nbez potřeby Wi-Fi sítě. Nejlépe to funguje na Android 4.2 a novějších.\n\nPro použítí, otevřete Wi-Fi nastavení, a podívejte se v menu po 'Wi-Fi Direct'.",
+ "wifiDirectDescriptionBottomText": "Jestližem mají všechna zařízení funkci „Wi-Fi Direct“, je možné ji použít k nalezení\na připojení k sobě navzájem. Jakmile jsou všichni jednou propojeni, můžou vytvořit Partu pomocí záložky „Lokální síť“ tak, jako kdyby byli v normální Wi-Fi síti.\n\nPro nejlepší výsledky by měl být hostitel Wi-Fi Direct zároveň hostitel ${APP_NAME} Party.",
+ "wifiDirectDescriptionTopText": "Wi-Fi Direct může být použit pro propojení zařízení Android přímo,\nbez potřeby Wi-Fi sítě. Nejlépe to funguje na Android 4.2 a novějších.\n\nPro použítí, otevřete Wi-Fi nastavení, a podívejte se v menu po „Wi-Fi Direct“.",
"wifiDirectOpenWiFiSettingsText": "Otevřít nastavení Wi-Fi",
"wifiDirectText": "Wi-Fi Direct",
"worksBetweenAllPlatformsText": "(funguje mezi všemi platformami)",
"worksWithGooglePlayDevicesText": "(funguje se zařízeními které mají Google Play (android) verzi hry)",
- "youHaveBeenSentAPromoCodeText": "Byl vám odeslán ${APP_NAME} promo kód:"
+ "youHaveBeenSentAPromoCodeText": "Byl Vám odeslán ${APP_NAME} promo kód:"
},
"getTicketsWindow": {
"freeText": "ZDARMA!",
- "freeTicketsText": "Kupóny Zdarma!",
- "inProgressText": "Probíhá transakce; Prosím zkuste to za chvíli.",
+ "freeTicketsText": "Kupóny zdarma!",
+ "inProgressText": "Probíhá transakce; zkuste to prosím za chvíli.",
"purchasesRestoredText": "Transakce obnoveny",
"receivedTicketsText": "Obdrženo ${COUNT} kupónů!",
"restorePurchasesText": "Obnovit nákupy",
"ticketDoublerText": "Zdvojnásobovač Kupónů",
- "ticketPack1Text": "Malý Balíček Kupónů",
- "ticketPack2Text": "Střední Balíček Kupónů",
- "ticketPack3Text": "Velký Balíček Kupónů",
- "ticketPack4Text": "Sloní Balíček Kupónů",
- "ticketPack5Text": "Mamutí Balíček Kupónů!",
- "ticketPack6Text": "Ultimátní Balíček Kupónů",
- "ticketsFromASponsorText": "Zhlédni reklamu \nza ${COUNT} tiketů",
- "ticketsText": "${COUNT} Kupónů",
- "titleText": "Získat Kupóny",
- "unavailableLinkAccountText": "Omlouváme se, ale nákupy nejsou na této platformě možné.\nJako řešení je, že můžete si tento účet propojit s jiným\nna jiné platformě a uskutečnit nákup tam.",
- "unavailableTemporarilyText": "Momentálně nedostupné; Zkuste to prosím později",
- "unavailableText": "Omlouváme se, ale není dostupné",
- "versionTooOldText": "Omlouváme se, ale tato verze hry je moc stará; aktualizujte prosím na novější",
- "youHaveShortText": "Máš ${COUNT}",
+ "ticketPack1Text": "Malý balíček kupónů",
+ "ticketPack2Text": "Střední balíček kupónů",
+ "ticketPack3Text": "Velký balíček kupónů",
+ "ticketPack4Text": "Sloní balíček kupónů",
+ "ticketPack5Text": "Mamutí balíček kupónů",
+ "ticketPack6Text": "Ultimátní balíček kupónů",
+ "ticketsFromASponsorText": "Zhlédni reklamu \nza ${COUNT} kupónů",
+ "ticketsText": "${COUNT} kupónů",
+ "titleText": "Získat kupóny",
+ "unavailableLinkAccountText": "Omlouváme se, ale nákupy nejsou na této platformě možné.\nJako řešení si můžete tento účet propojit s jiným\nna jiné platformě a uskutečnit nákup tam.",
+ "unavailableTemporarilyText": "Momentálně nedostupné; zkuste to prosím později",
+ "unavailableText": "Omlouváme se, toto není dostupné",
+ "versionTooOldText": "Omlouváme se, ale tato verze hry je moc stará; aktualizujte prosím na novější.",
+ "youHaveShortText": "Máte ${COUNT}",
"youHaveText": "Máte ${COUNT} kupónů"
},
- "googleMultiplayerDiscontinuedText": "Litujeme, služba pro více hráčů Google již není k dispozici.\n Pracuji na výměně co nejrychleji.\n Do té doby zkuste jiný způsob připojení.\n -Eric",
- "googlePlayPurchasesNotAvailableText": "Nákupy na Google Play nejsou k dispozici.\nMožná budete muset aktualizovat obchod play.",
- "googlePlayServicesNotAvailableText": "Služby Google play nejsou dostupné.\nNěkteré funkce mohou být zakázány.",
+ "goldPass": {
+ "desc1InfTokensText": "Nekonečně tokenů.",
+ "desc2NoAdsText": "Žádné reklamy.",
+ "desc3ForeverText": "Navždy.",
+ "goldPassText": "Gold Pass"
+ },
+ "googleMultiplayerDiscontinuedText": "Omlouvám se, služba pro více hráčů Google již není k dispozici.\nPracuji co nejrychleji na výměně.\nDo té doby zkuste jiný způsob připojení.\n- Eric",
+ "googlePlayPurchasesNotAvailableText": "Nákupy na Google Play nejsou k dispozici.\nMožná budete muset aktualizovat Obchod Play.",
+ "googlePlayServicesNotAvailableText": "Služby Google Play nejsou dostupné.\nNěkteré funkce mohou být zakázány.",
"googlePlayText": "Google Play",
"graphicsSettingsWindow": {
"alwaysText": "Vždy",
"fullScreenCmdText": "Celá obrazovka (Cmd-F)",
"fullScreenCtrlText": "Celá obrazovka (Ctrl-F)",
+ "fullScreenText": "Na celou obrazovku",
"gammaText": "Gamma",
- "highText": "Velká",
- "higherText": "Větší",
- "lowText": "Malá",
+ "highText": "Vysoká",
+ "higherText": "Vyšší",
+ "lowText": "Nízká",
+ "maxFPSText": "Maximální FPS",
"mediumText": "Střední",
"neverText": "Nikdy",
"resolutionText": "Rozlišení",
"showFPSText": "Zobrazit FPS",
"texturesText": "Textury",
"titleText": "Grafika",
- "tvBorderText": "TV Rámeček",
- "verticalSyncText": "Vertikální Synchronizace",
+ "tvBorderText": "TV rámeček",
+ "verticalSyncText": "Vertikální synchronizace",
"visualsText": "Kvalita zobrazení"
},
"helpWindow": {
- "bombInfoText": "- Bomba -\nSilnější než pěsti, ale\nmůže dojít k sebe-zraněním.\nNejlepší bude, když hodíte bombu\nna nepřítele dříve, než vyprší její čas.",
+ "bombInfoText": "- Bomba -\nSilnější než pěsti, ale\nmůžete si s nimi ublížit.\nNejlepší bude, když bombu hodíte\nna nepřítele dříve, než vyprší její odpočet.",
"canHelpText": "${APP_NAME} může pomoci.",
- "controllersInfoText": "Můžete hrát ${APP_NAME} s přáteli přes síť nebo můžete, pokud máte\ndostatek ovladačů, hrát všichni na stejném zařízení. ${APP_NAME}\njich podporuje nepřeberné množství. Navíc můžete použít svoje telefony\njako ovladače pomocí aplikace '${REMOTE_APP_NAME}', která\nje zdarma. Podívejte se do Nastavení->Ovladače pro více informací.",
- "controllersInfoTextRemoteOnly": "Hrajte ${APP_NAME} s přáteli přes internet \nnebo všichni na jednom zařízení za pomoci \nGamepadů nebo mobilní aplikace '${REMOTE_APP_NAME}'",
+ "controllersInfoText": "${APP_NAME} můžete hrát s přáteli přes síť nebo, pokud máte\ndostatek ovladačů, můžete hrát všichni na stejném zařízení.\n${APP_NAME} jich podporuje nepřeberné množství, navíc můžete použít telefony\njako ovladače pomocí aplikace „${REMOTE_APP_NAME}“, která je zdarma. \nPodívejte se do Nastavení->Ovladače pro více informací.",
+ "controllersInfoTextRemoteOnly": "Hrajte ${APP_NAME} s přáteli přes internet \nnebo všichni na jednom zařízení za pomoci \novladačů nebo mobilní aplikace „${REMOTE_APP_NAME}“",
"controllersText": "Ovladače",
"controlsSubtitleText": "Vaše přátelská ${APP_NAME} postava má pár základních schopností:",
"controlsText": "Ovládání",
- "devicesInfoText": "VR verze ${APP_NAME} může být hrána přes síť s normální\nverzí. Tak vyndejte telefony, tablety a počítače co máte\nnavíc a zapněte svou hru. Propojení normální verze k VR\nverzi může být užitečné kvůli povolení pozorování akce\nlidem zvenčí.",
+ "devicesInfoText": "VR verze ${APP_NAME} může být hrána přes síť s normální\nverzí, tak vytáhněte telefony, tablety a počítače co máte\nnavíc a zapněte svou hru. Propojení normální verze k VR\nverzi může být užitečné kvůli povolení pozorování akce\nlidmi zvenčí.",
"devicesText": "Zařízení",
"friendsGoodText": "Je dobré je mít. ${APP_NAME} je největší zábava s více hráči\na podporuje jich až 8 najednou, což nás přivádí k:",
"friendsText": "Přátelé",
"jumpInfoText": "- Skok -\nSkákejte přes malé mezery,\nházejte věci výše nebo si skočte\njen tak z radosti.",
- "orPunchingSomethingText": "Nebo do něčeho udeřit, hodit to z útesu nebo to odpálit lepivou bombou",
- "pickUpInfoText": "- Zvedání -\nBrát vlajky, nepřátele, nebo cokoli\njiného nepřibitého k zemi.\nStiskněte znovu pro házení.",
- "powerupBombDescriptionText": "Dovolí vám vyhodit tři bomby\nza sebou místo pouhé jedné.",
- "powerupBombNameText": "Trojité-Bomby",
- "powerupCurseDescriptionText": "Pravděpodobně se jim chcete vyhnout.\n ...nebo nechcete?",
+ "orPunchingSomethingText": "Nebo něco udeřit, shodit to z útesu a ještě tomu přištědřit lepící bombu, zatímco to padá.",
+ "pickUpInfoText": "- Zvedání -\nBerte vlajky, nepřátele, nebo cokoli\njiného nepřibitého k zemi.\nStiskněte znovu pro hození.",
+ "powerupBombDescriptionText": "Dovolí Vám vyhodit tři bomby\nza sebou místo pouhé jedné.",
+ "powerupBombNameText": "Trojité bomby",
+ "powerupCurseDescriptionText": "Pravděpodobně se jim chcete vyhnout.\n...nebo nechcete?",
"powerupCurseNameText": "Prokletí",
- "powerupHealthDescriptionText": "Obnoví veškeré zdraví\nO tom se Vám ani nesnilo.",
+ "powerupHealthDescriptionText": "Obnoví veškeré Vaše zdraví.\nTo by Vás v životě nenapadlo.",
"powerupHealthNameText": "Lékárnička",
- "powerupIceBombsDescriptionText": "Slabší než normální bomby,\ntvé nepřátele však zmrazí\na učiní je křehkými.",
- "powerupIceBombsNameText": "Ledové-Bomby",
+ "powerupIceBombsDescriptionText": "Slabší než normální bomby,\nVaše nepřátele však zmrazí\na učiní je křehkými.",
+ "powerupIceBombsNameText": "Ledové bomby",
"powerupImpactBombsDescriptionText": "Trochu slabší než normální bomby,\nale explodují při nárazu.",
- "powerupImpactBombsNameText": "Nárazové-Bomby",
+ "powerupImpactBombsNameText": "Nárazové bomby",
"powerupLandMinesDescriptionText": "Jsou v balíčku po 3;\nUžitečné pro základní obranu\nnebo zastavování rychlých nepřátel",
- "powerupLandMinesNameText": "Pozemní-Miny",
- "powerupPunchDescriptionText": "Udělá tvé pěsti tvrdšími,\nrychlejšími, lepšími, silnějšími.",
- "powerupPunchNameText": "Boxovací-Rukavice",
- "powerupShieldDescriptionText": "Absorbuje trochu zranění,\ntakže Vám se nic moc nestane.",
- "powerupShieldNameText": "Energetický-Štít",
- "powerupStickyBombsDescriptionText": "Přilepí se k čemukoli co trefí.\nZábava zaručena.",
- "powerupStickyBombsNameText": "Lepící-Bomby",
+ "powerupLandMinesNameText": "Nášlapné miny",
+ "powerupPunchDescriptionText": "Udělá Vaše pěsti tvrdší,\nrychlejší, lepší, silnější.",
+ "powerupPunchNameText": "Boxovací rukavice",
+ "powerupShieldDescriptionText": "Absorbuje trochu zranění,\naby se Vám nic moc nestalo.",
+ "powerupShieldNameText": "Energetický štít",
+ "powerupStickyBombsDescriptionText": "Přilepí se k čemukoli, co trefí.\nZábava zaručena.",
+ "powerupStickyBombsNameText": "Lepící bomby",
"powerupsSubtitleText": "Samozřejmě, žádná hra není hotová bez bonusů:",
"powerupsText": "Bonusy",
"punchInfoText": "- Pěsti -\nPěsti zraní více,\nkdyž se rychle pohybují.\nTakže běhejte a točte se jako šílenci.",
- "runInfoText": "- Sprint -\nDržením libovolného tlačítka sprintujte. Pokud máte ovladač tak fungují i ostatní tlačítka.\nSprintování Vás značně zrychlí ale ztíží vám pohyb, takže si dávejte pozor na okraje mapy.",
+ "runInfoText": "- Sprint -\nDržením libovolného tlačítka sprintujte. Pokud máte ovladač, fungují i ostatní tlačítka.\nSprintování Vás značně zrychlí, ale ztíží Vám pohyb, takže si dávejte pozor na okraje mapy.",
"someDaysText": "Některé dny prostě cítíte, že potřebujete něco praštit. Nebo něco vyhodit do vzduchu.",
"titleText": "${APP_NAME} Nápověda",
"toGetTheMostText": "Abyste si hru nejvíce užili, budete potřebovat:",
@@ -883,110 +924,113 @@
},
"holdAnyButtonText": "",
"holdAnyKeyText": "",
- "hostIsNavigatingMenusText": "- ${HOST} obsluhuje menu like a boss -",
- "importPlaylistCodeInstructionsText": "Použijte následující kó pro importování kdekoliv jinde:",
- "importPlaylistSuccessText": "Úspěšně importován ${TYPE} playlist „'${NAME}'“",
+ "hostIsNavigatingMenusText": "- ${HOST} ovládá nabídky jako největší borec -",
+ "importPlaylistCodeInstructionsText": "Použijte následující kód pro importování kdekoliv jinde:",
+ "importPlaylistSuccessText": "Úspěšně importován ${TYPE} playlist „${NAME}“",
"importText": "Importovat",
"importingText": "Probíhá importování...",
- "inGameClippedNameText": "Ve hře bude vidět jako\n\"${NAME}\"",
- "installDiskSpaceErrorText": "CHYBA: Není možné dokončit instalaci.\nMožná nemáte dostatek volného místa na Vašem zařízení.\nUvolněte nějaké místo, a zkuste to znovu.",
+ "inGameClippedNameText": "Ve hře bude vidět jako\n„${NAME}“",
+ "inboxText": "Pošta",
+ "installDiskSpaceErrorText": "CHYBA: Není možné dokončit instalaci.\nMožná nemáte dostatek volného místa na Vašem zařízení.\nUvolněte nějaké místo a zkuste to znovu.",
"internal": {
"arrowsToExitListText": "stiskněte ${LEFT} nebo ${RIGHT} pro opuštění seznamu",
"buttonText": "tlačítko",
- "cantKickHostError": "Nemůžete kopat hostitele.",
- "chatBlockedText": "${NAME} chat je blokován na ${TIME} sekund.",
- "connectedToGameText": "Připojen '${NAME}'",
- "connectedToPartyText": "Připojen k ${NAME} partě!",
+ "cantKickHostError": "Nelze vykopnout hostitele.",
+ "chatBlockedText": "${NAME} je umlčen na ${TIME} sekund.",
+ "connectedToGameText": "Připojen „${NAME}“",
+ "connectedToPartyText": "Připojen k Partě ${NAME}!",
"connectingToPartyText": "Připojuji...",
- "connectionFailedHostAlreadyInPartyText": "Připojení selhalo; Hostitel je v jiné partě.",
- "connectionFailedPartyFullText": "Připojení se nezdařilo; parta je plná.",
+ "connectionFailedHostAlreadyInPartyText": "Připojení selhalo; hostitel je v jiné Partě.",
+ "connectionFailedPartyFullText": "Připojení selhalo; Parta je plná.",
"connectionFailedText": "Připojení selhalo.",
- "connectionFailedVersionMismatchText": "Připojení selhalo; Hostitel používá jinou verzi hry.\nUjistěte se, že máte oba aktualizovanou verzi, a zkuste to znovu.",
+ "connectionFailedVersionMismatchText": "Připojení selhalo; hostitel používá jinou verzi hry.\nUjistěte se, že máte oba aktualizovanou verzi a zkuste to znovu.",
"connectionRejectedText": "Připojení odmítnuto.",
"controllerConnectedText": "${CONTROLLER} připojen.",
"controllerDetectedText": "1 nalezený ovladač.",
"controllerDisconnectedText": "${CONTROLLER} odpojen.",
- "controllerDisconnectedTryAgainText": "${CONTROLLER} odpojen. Prosím, zkuste ho připojit znovu.",
+ "controllerDisconnectedTryAgainText": "${CONTROLLER} odpojen. Zkuste ho prosím připojit znovu.",
"controllerForMenusOnlyText": "Tento ovladač nemůže být použit pro hraní; pouze k ovládání v nabídce",
"controllerReconnectedText": "${CONTROLLER} znovu připojen.",
- "controllersConnectedText": "${COUNT} - ovladačů připojeno.",
- "controllersDetectedText": "${COUNT} - ovladačů nalezeno.",
- "controllersDisconnectedText": "${COUNT} - ovladačů odpojeno.",
- "corruptFileText": "Nalezen jeden nebo více poškozených souborů. Zkuste prosím reinstalaci, nebo napište email na ${EMAIL}",
+ "controllersConnectedText": "Připojeny ovladače: ${COUNT}.",
+ "controllersDetectedText": "Nalezeny ovladače: ${COUNT}.",
+ "controllersDisconnectedText": "Odpojeny ovladače: ${COUNT}.",
+ "corruptFileText": "Nalezen jeden nebo více poškozených souborů. Zkuste prosím reinstalovat nebo napište na ${EMAIL}",
"errorPlayingMusicText": "Chyba při přehrávání hudby: ${MUSIC}",
- "errorResettingAchievementsText": "Nebylo možné resetovat online achievementy; zkuste to prosím znovu později",
+ "errorResettingAchievementsText": "Nebylo možné resetovat online Trofeje; zkuste to prosím znovu později",
"hasMenuControlText": "${NAME} ovládá menu.",
- "incompatibleNewerVersionHostText": "Hostitel serveru má novější verzi než vy, \npro připojení hru aktualizujte.",
- "incompatibleVersionHostText": "Hostitel používá jinou verzi hry.\nUjistěte se, že oba používáte aktualizovanou verzi, a zkuste to znovu",
- "incompatibleVersionPlayerText": "${NAME} používá jinou verzi hry.\nUjistěte se, že oba použváte aktualizovanou verzi, a zkuste to znovu.",
+ "incompatibleNewerVersionHostText": "Hostitel má novější verzi hry.\nAktualizujte na nejnovější verzi a zkuste to znovu.",
+ "incompatibleVersionHostText": "Hostitel má jinou verzi hry.\nUjistěte se, že oba používáte aktualizovanou verzi, a zkuste to znovu.",
+ "incompatibleVersionPlayerText": "${NAME} má jinou verzi hry.\nUjistěte se, že oba používáte aktualizovanou verzi, a zkuste to znovu.",
"invalidAddressErrorText": "Chyba: Neplatná adresa.",
"invalidNameErrorText": "Chyba: Neplatné jméno.",
"invalidPortErrorText": "Chyba: neplatný port.",
"invitationSentText": "Pozvánka odeslána.",
- "invitationsSentText": "${COUNT} - pozvánek odesláno.",
- "joinedPartyInstructionsText": "Někdo se připojil do tvojí party. \nStiskni 'Hrát' pro start hry",
+ "invitationsSentText": "Odesláno pozvánek: ${COUNT}.",
+ "joinedPartyInstructionsText": "Někdo se připojil do Vaší Party. \nStiskněte „Hrát“ pro spuštění hry.",
"keyboardText": "Klávesnice",
- "kickIdlePlayersKickedText": "${NAME} vyhozen kvůli neaktivitě.",
- "kickIdlePlayersWarning1Text": "${NAME} bude vyhozen do ${COUNT} sekund, pokud bude stále neaktivní.",
+ "kickIdlePlayersKickedText": "Vyhazuji ${NAME} kvůli neaktivitě.",
+ "kickIdlePlayersWarning1Text": "Vyhazuji ${NAME} za ${COUNT} sekund, bude-li stále neaktivní.",
"kickIdlePlayersWarning2Text": "(můžete to vypnout v Nastavení -> Pokročilé)",
- "leftGameText": "Odpojen '${NAME}'.",
- "leftPartyText": "Opustili jste ${NAME} partu.",
+ "leftGameText": "Opouštíte „${NAME}“.",
+ "leftPartyText": "Opustili jste Partu ${NAME}.",
"noMusicFilesInFolderText": "Složka neobsahuje žádnou hudbu.",
- "playerJoinedPartyText": "${NAME} se připojil do party!",
- "playerLeftPartyText": "${NAME} opustil partu.",
- "rejectingInviteAlreadyInPartyText": "Odmítnutí pozvánky (už jste v partě).",
+ "playerJoinedPartyText": "${NAME} se připojuje do Party!",
+ "playerLeftPartyText": "${NAME} opouští partu.",
+ "rejectingInviteAlreadyInPartyText": "Odmítám pozvánku (již jste v Partě).",
"serverRestartingText": "Server se restartuje. Vraťte se za chvíli...",
"serverShuttingDownText": "Server se vypíná...",
"signInErrorText": "Chyba přihlašování.",
- "signInNoConnectionText": "Přihlášení selhalo. (žádné internetové připojení)",
- "telnetAccessDeniedText": "CHYBA: uživatel nemá povolený přístup k telnetu.",
+ "signInNoConnectionText": "Přihlášení selhalo. (žádné internetové připojení?)",
+ "telnetAccessDeniedText": "CHYBA: uživatel nepřidělil přístup k telnetu.",
"timeOutText": "(vyprší za ${TIME} sekund)",
- "touchScreenJoinWarningText": "Připojili jste se s dotykovou obrazovkou.\nJestli je to chyba, klepněte na 'Menu->Opustit hru'.",
- "touchScreenText": "Dotyková Obrazovka",
- "unableToResolveHostText": "Chyba: Nezdařilo se spojit s hostitelem (IP adresa možná neexistuje)",
- "unavailableNoConnectionText": "Toto je momentálně nedostupné (bez internetového připojení?)",
- "vrOrientationResetCardboardText": "Použitjte toto pro reset orientace VR.\nPro hraní hry budete potřebovat externí ovladač.",
- "vrOrientationResetText": "VR resetování orientace.",
- "willTimeOutText": "(vyprší čas, když je neaktivní)"
+ "touchScreenJoinWarningText": "Připojili jste se s dotykovou obrazovkou.\nJestli je toto omylem, klepněte na Menu->Opustit hru.",
+ "touchScreenText": "Dotyková obrazovka",
+ "unableToCompleteTryAgainText": "Toto nebylo možné nyní dokončit.\nZkuste to prosím znovu.",
+ "unableToResolveHostText": "Chyba: Nezdařilo se spojit s hostitelem",
+ "unavailableNoConnectionText": "Toto je momentálně nedostupné (žádné internetové připojení?)",
+ "vrOrientationResetCardboardText": "Použitjte pro reset orientace ve VR.\nPro hraní hry budete potřebovat externí ovladač.",
+ "vrOrientationResetText": "VR orientace resetována.",
+ "willTimeOutText": "(vyprší, když je neaktivní)"
},
+ "inventoryText": "Inventář",
"jumpBoldText": "SKOK",
"jumpText": "Skok",
"keepText": "Zachovat",
"keepTheseSettingsText": "Zachovat tato nastavení?",
- "keyboardChangeInstructionsText": "Dvakrát stiskni mezerník pro změnu klávesnice.",
+ "keyboardChangeInstructionsText": "Dvakrát stiskněte mezerník pro změnu klávesnice.",
"keyboardNoOthersAvailableText": "Žádné další klávesnice nejsou dostupné.",
- "keyboardSwitchText": "Změna klávesnice na \"${NAME}\".",
+ "keyboardSwitchText": "Změna klávesnice na „${NAME}“.",
"kickOccurredText": "${NAME} byl vykopnut.",
"kickQuestionText": "Kopnout ${NAME}?",
- "kickText": "kop",
- "kickVoteCantKickAdminsText": "Admin nemůže být vyhozen.",
- "kickVoteCantKickSelfText": "Nemůžeš vyhodit sám sebe.",
+ "kickText": "Vykopnout",
+ "kickVoteCantKickAdminsText": "Admin nemůže být vykopnut.",
+ "kickVoteCantKickSelfText": "Nemůžeš vykopnout sám sebe.",
"kickVoteFailedNotEnoughVotersText": "Není dostatek hráčů pro hlasování.",
- "kickVoteFailedText": "Kopací-hlasování se nezdařilo.",
+ "kickVoteFailedText": "Kopací hlasování se nezdařilo.",
"kickVoteStartedText": "Kopací hlasování bylo zahájeno pro ${NAME}.",
- "kickVoteText": "Hlasovat pro Kopnutí",
+ "kickVoteText": "Hlasovat pro kopnutí",
"kickVotingDisabledText": "Hlasování pro vyhození je vypnuto.",
- "kickWithChatText": "Typ ${YES} v chatu pro ano a ${NO} pro ne.",
+ "kickWithChatText": "Napiš ${YES} v chatu pro ano nebo ${NO} pro ne.",
"killsTallyText": "${COUNT} zabití",
"killsText": "Zabití",
"kioskWindow": {
"easyText": "Lehké",
- "epicModeText": "Epický Mód",
- "fullMenuText": "Celé Menu",
+ "epicModeText": "Epický mód",
+ "fullMenuText": "Celé menu",
"hardText": "Těžké",
"mediumText": "Střední",
- "singlePlayerExamplesText": "Sólo Hra / Co-op Ukázky",
- "versusExamplesText": "Versus Ukázky"
+ "singlePlayerExamplesText": "Sólo hra / Co-op ukázky",
+ "versusExamplesText": "Versus ukázky"
},
- "languageSetText": "Jazyk je nastaven na \"${LANGUAGE}\".",
+ "languageSetText": "Jazyk je nastaven na „${LANGUAGE}“.",
"lapNumberText": "Kolo ${CURRENT}/${TOTAL}",
"lastGamesText": "(posledních ${COUNT} her)",
"leaderboardsText": "Žebříčky",
"league": {
"allTimeText": "Celkově",
- "currentSeasonText": "Tato Sezóna (${NUMBER})",
+ "currentSeasonText": "Tato sezóna (${NUMBER})",
"leagueFullText": "${NAME} Liga",
- "leagueRankText": "Liga - Umístění",
+ "leagueRankText": "Liga - umístění",
"leagueText": "Liga",
"rankInLeagueText": "#${RANK}, ${NAME} Liga${SUFFIX}",
"seasonEndedDaysAgoText": "Sezóna ukončena před ${NUMBER} dny.",
@@ -995,8 +1039,11 @@
"seasonEndsMinutesText": "Sezóna končí za ${NUMBER} minut.",
"seasonText": "Sezóna ${NUMBER}",
"tournamentLeagueText": "Musíte být v lize ${NAME}, abyste se mohli zúčastnit tohoto turnaje.",
- "trophyCountsResetText": "Počet trofejí se vymaže příští sezónu."
+ "trophyCountsResetText": "Počet pohárů se resetuje příští sezónu.",
+ "upToDateBonusDescriptionText": "Hráči, kteří hrají aktuální verzi této\nhry získají ${PERCENT}% bonus.",
+ "upToDateBonusText": "Aktualizační bonus"
},
+ "learnMoreText": "Zjistit Více",
"levelBestScoresText": "Nejlepší skóre na ${LEVEL}",
"levelBestTimesText": "Nejlepší čas na ${LEVEL}",
"levelFastestTimesText": "Nejrychleji v ${LEVEL}",
@@ -1008,24 +1055,24 @@
"livesBonusText": "Bonus života",
"loadingText": "načítám",
"loadingTryAgainText": "Načítání; zkuste to znovu za chvíli...",
- "macControllerSubsystemBothText": "Obojí (může způsobovat chyby)",
+ "macControllerSubsystemBothText": "Obojí (nedoporučeno)",
"macControllerSubsystemClassicText": "Klasický",
- "macControllerSubsystemDescriptionText": "(zkus toto změnit pokud vám blbnou ovladače)",
- "macControllerSubsystemMFiNoteText": "Ddetekován IOS/Mac ovladač;\nPokud jej chcete použít, povolte je v Nastvení > Ovladače",
+ "macControllerSubsystemDescriptionText": "(zkuste toto změnit pokud Vám nefungují ovladače)",
+ "macControllerSubsystemMFiNoteText": "Ddetekován iOS/Mac ovladač;\nPokud jej chcete použít, povolte je v Nastvení->Ovladače",
"macControllerSubsystemMFiText": "iOS/Mac ovladače",
- "macControllerSubsystemTitleText": "Podporované ovladače",
+ "macControllerSubsystemTitleText": "Podpora ovladačů",
"mainMenu": {
"creditsText": "Tvůrci",
"demoMenuText": "Demo menu",
- "endGameText": "Konec Hry",
- "endTestText": "Konec Testu",
- "exitGameText": "Ukončit Hru",
+ "endGameText": "Konec hry",
+ "endTestText": "Konec testu",
+ "exitGameText": "Ukončit hru",
"exitToMenuText": "Vrátit se do menu?",
"howToPlayText": "Jak hrát",
"justPlayerText": "(Jen ${NAME})",
- "leaveGameText": "Opustit Hru",
- "leavePartyConfirmText": "Opravdu opustit partu?",
- "leavePartyText": "Opustit partu",
+ "leaveGameText": "Opustit hru",
+ "leavePartyConfirmText": "Opravdu opustit Partu?",
+ "leavePartyText": "Opustit Partu",
"quitText": "Konec",
"resumeText": "Pokračovat",
"settingsText": "Nastavení"
@@ -1036,50 +1083,57 @@
"mapSelectTitleText": "${GAME} Mapy",
"mapText": "Mapa",
"maxConnectionsText": "Max připojitelných hráčů",
- "maxPartySizeText": "Maximální velikost party",
+ "maxPartySizeText": "Maximální velikost Party",
"maxPlayersText": "Max hráčů",
- "merchText": "Pro fanoušky!",
+ "merchText": "Merch!",
"modeArcadeText": "Arkádový mód",
"modeClassicText": "Klasický mód",
"modeDemoText": "Ukázkový mód",
+ "moreSoonText": "Další již brzy ...",
+ "mostDestroyedPlayerText": "Nejvíce rozdrcený hráč",
"mostValuablePlayerText": "Nejcennější hráč",
"mostViolatedPlayerText": "Nejvíce obětovaný hráč",
- "mostViolentPlayerText": "Nejvíce násilný hráč",
+ "mostViolentPlayerText": "Nejnásilnější hráč",
"moveText": "Pohyb",
"multiKillText": "${COUNT}-ZABITÍ!!!",
- "multiPlayerCountText": "${COUNT} - počet hráčů",
- "mustInviteFriendsText": "Poznámka: Musíte pozvat přátele\npomocí tlačítka \"${GATHER}\", nebo\npžipojit ovladače pro hraní s více hráči.",
- "nameBetrayedText": "${NAME} zradil ${VICTIM}",
- "nameDiedText": "${NAME} zemřel.",
- "nameKilledText": "${NAME} zabil ${VICTIM}.",
+ "multiPlayerCountText": "Počet hráčů: ${COUNT}",
+ "mustInviteFriendsText": "Poznámka: Musíte pozvat přátele\npomocí tlačítka „${GATHER}“, nebo\npžipojit ovladače pro hraní s více hráči.",
+ "nameBetrayedText": "${NAME} podráží ${VICTIM}",
+ "nameDiedText": "${NAME} umírá.",
+ "nameKilledText": "${NAME} zajíbí ${VICTIM}.",
"nameNotEmptyText": "Jméno nemůže být prázdné!",
- "nameScoresText": "${NAME} Skóruje!",
- "nameSuicideKidFriendlyText": "${NAME} zemřel nešťastnou náhodou.",
- "nameSuicideText": "${NAME} spáchal sebevraždu.",
+ "nameScoresText": "${NAME} skóruje!",
+ "nameSuicideKidFriendlyText": "${NAME} umírá nešťastnou náhodou.",
+ "nameSuicideText": "${NAME} páchá sebevraždu.",
"nameText": "Jméno",
"nativeText": "Nativní",
+ "newExclaimText": "Nově!",
"newPersonalBestText": "Nový osobní rekord!",
"newTestBuildAvailableText": "Novější testovací build je dostupný! (${VERSION} build ${BUILD}).\nZískejte ho na ${ADDRESS}",
"newText": "Nový",
"newVersionAvailableText": "Je dostupná novější verze ${APP_NAME}! (${VERSION})",
"nextAchievementsText": "Další ocenění:",
- "nextLevelText": "Další Level",
+ "nextLevelText": "Další level",
"noAchievementsRemainingText": "- žádný",
"noContinuesText": "(bez pokračování)",
"noExternalStorageErrorText": "Žádné externí úložiště nebylo na tomto zařízení nalezeno",
"noGameCircleText": "Chyba: nejste přihlášeni do Game Circle",
+ "noMessagesText": "Žádné zprávy.",
+ "noPluginsInstalledText": "Nenainstalovány žádné pluginy",
"noProfilesErrorText": "Nemáte žádné herní profily, takže Vám bylo podstrčeno jméno '${NAME}'.\nJděte do Nastavení->Herní Profily pro vytvoření svého profilu.",
"noScoresYetText": "Zatím žádné výsledky.",
- "noThanksText": "Ne, Děkuji",
- "noTournamentsInTestBuildText": "VAROVÁNÍ: Skore z turnajů z tohoto účtu budou ignorována.",
+ "noServersFoundText": "Nenalezeny žádné servery.",
+ "noThanksText": "Ne, děkuji",
+ "noTournamentsInTestBuildText": "VAROVÁNÍ: Skóre z turnajů z tohoto testovacího buildu budou ignorovány.",
"noValidMapsErrorText": "Nebyly nalezeny žádné platné mapy pro tento typ hry.",
- "notEnoughPlayersRemainingText": "Nezbývá dostatek hráčů; ukončete a zapněte novou hru",
+ "notEnoughPlayersRemainingText": "Zbývá nedostatečný počet hráčů; ukončete a začněte novou hru",
"notEnoughPlayersText": "Potřebujete nejméně ${COUNT} hráčů pro spuštění této hry!",
- "notNowText": "Teď Ne",
+ "notEnoughTicketsText": "Nedostatek ticketů!",
+ "notNowText": "Teď ne",
"notSignedInErrorText": "Pro tuto akci se musíte přihlásit",
"notSignedInGooglePlayErrorText": "Pro tuto akci se musíte přihlásit přes Google Play",
"notSignedInText": "nepřihlášen",
- "notUsingAccountText": "Poznámka: nevyužívaný ${SERVICE} account.\nJděte do 'Účet -> Přihlásit se službou ${SERVICE}' pokud chcete účet používat.",
+ "notUsingAccountText": "Poznámka: ignoruji ${SERVICE} account.\nJděte do Účet -> Přihlásit se službou ${SERVICE} pokud chcete účet používat.",
"nothingIsSelectedErrorText": "Nic není vybráno!",
"numberText": "#${NUMBER}",
"offText": "Vyp",
@@ -1087,25 +1141,28 @@
"onText": "Zap",
"oneMomentText": "Chvilku strpení...",
"onslaughtRespawnText": "${PLAYER} se oživí ve vlně ${WAVE}",
+ "openMeText": "Otevři Mě!",
+ "openNowText": "Otevřte hned",
+ "openText": "Otevřít",
"orText": "${A} nebo ${B}",
"otherText": "Ostatní...",
"outOfText": "(#${RANK} z ${ALL})",
- "ownFlagAtYourBaseWarning": "Vaše vlajka musí být\nna vaší základně, abyste mohli skórovat!",
+ "ownFlagAtYourBaseWarning": "Vaše vlajka musí být na Vaší\nzákladně, abyste mohli skórovat!",
"packageModsEnabledErrorText": "Hra po síti není povolena pokud jsou zapnuty lokální-balíčky-modů (Koukněte se do Nastavení->Pokročilé)",
"partyWindow": {
"chatMessageText": "Zpráva do chatu",
- "emptyText": "Vaše parta nemá žádného člena",
+ "emptyText": "Vaše Parta nemá žádného člena",
"hostText": "(hostitel)",
"sendText": "Odeslat",
"titleText": "Vaše Parta"
},
"pausedByHostText": "(pozastaveno hostitelem)",
- "perfectWaveText": "Perfektní Vlna!",
+ "perfectWaveText": "Perfektní vlna!",
"pickUpText": "Zvednout",
"playModes": {
"coopText": "Co-op",
- "freeForAllText": "Všichni-proti-Všem",
- "multiTeamText": "Multi-Team",
+ "freeForAllText": "Všichni proti Všem",
+ "multiTeamText": "Multi Týmy",
"singlePlayerCoopText": "Pro jednoho hráče / Co-op",
"teamsText": "Týmy"
},
@@ -1115,31 +1172,35 @@
"titleText": "Hrát",
"twoToEightPlayersText": "2-8 hráčů"
},
- "playerCountAbbreviatedText": "${COUNT}p",
+ "playerCountAbbreviatedText": "${COUNT} hr.",
"playerDelayedJoinText": "${PLAYER} vstoupí na začátku dalšího kola.",
"playerInfoText": "Info o hráči",
- "playerLeftText": "${PLAYER} opustil hru.",
- "playerLimitReachedText": "Limit hráčů (${COUNT}) byl dosažen; žádní ostatní připojovaní nejsou povoleni.",
+ "playerLeftText": "${PLAYER} opouští hru.",
+ "playerLimitReachedText": "Limit hráčů (${COUNT}) byl dosažen; nová připojení nejsou povolena.",
"playerLimitReachedUnlockProText": "Upgradujte v obchodě na \"${PRO}\", abyste mohli hrát s více než ${COUNT} hráči.",
"playerProfilesWindow": {
"cantDeleteAccountProfileText": "Nemůžete odstranit Váš profil s účtem.",
- "deleteButtonText": "Odstranit\nProfil",
- "deleteConfirmText": "Odstranit '${PROFILE}'?",
- "editButtonText": "Upravit\nProfil",
+ "deleteButtonText": "Odstranit\nprofil",
+ "deleteConfirmText": "Odstranit „${PROFILE}“?",
+ "editButtonText": "Upravit\nprofil",
"explanationText": "(různé přezdívky a vzhledy pro hráče na tomto účtu)",
- "newButtonText": "Nový\nProfil",
- "titleText": "Herní Profily"
+ "newButtonText": "Nový\nprofil",
+ "titleText": "Herní profily"
},
"playerText": "Hráč",
"playlistNoValidGamesErrorText": "Tento playlist neobsahuje žádné platné odemčené hry.",
"playlistNotFoundText": "playlist nenalezen",
"playlistText": "Playlist",
"playlistsText": "Playlisty",
- "pleaseRateText": "Jestliže Vás ${APP_NAME} baví, zvažte prosím, jestli si nechcete udělat\nchvilku na ohodnocení nebo napsání recenze. Poskytuje to užitečnou\nzpětnou vazbu a pomáhá podporovat budoucí vývoj.\n\nDíky!\n-eric",
- "pleaseWaitText": "Prosím čekejte...",
- "pluginClassLoadErrorText": "Chyba při načítání třídy pluginu '${PLUGIN}': ${ERROR}",
- "pluginInitErrorText": "Chyba při inicializaci pluginu '${PLUGIN}': ${ERROR}",
+ "pleaseRateText": "Jestliže Vás ${APP_NAME} baví, zvažte prosím, jestli si nechcete udělat\nchvilku na ohodnocení nebo napsání recenze. Poskytuje to užitečnou\nzpětnou vazbu a pomáhá podporovat budoucí vývoj.\n\nDíky!\n- Eric",
+ "pleaseWaitText": "Chvilku strpení...",
+ "pluginClassLoadErrorText": "Chyba při načítání třídy pluginu „${PLUGIN}“: ${ERROR}",
+ "pluginInitErrorText": "Chyba při inicializaci pluginu „${PLUGIN}“: ${ERROR}",
+ "pluginSettingsText": "Nastavení pluginů",
+ "pluginsAutoEnableNewText": "Automaticky povolit nové pluginy",
"pluginsDetectedText": "Nové plugin(y) nalezeny. Pro aktivaci restartujte, nebo konfigurujte v nastavení.",
+ "pluginsDisableAllText": "Zakázat všechny pluginy",
+ "pluginsEnableAllText": "Povolit všechny pluginy",
"pluginsRemovedText": "${NUM} plugin(y) nenalezeny.",
"pluginsText": "Pluginy",
"practiceText": "Cvičení",
@@ -1149,10 +1210,10 @@
"pressAnyKeyButtonPlayAgainText": "Stiskněte libovolnou klávesu/tlačítko pro opakování hry...",
"pressAnyKeyButtonText": "Stiskněte libovolnou klávesu/tlačítko pro pokračování...",
"pressAnyKeyText": "Stiskněte libovolnou klávesu...",
- "pressJumpToFlyText": "** Stiskněte opakovaně skok pro létání **",
+ "pressJumpToFlyText": "** Opakovaně stiskněte skok pro létání **",
"pressPunchToJoinText": "stiskněte PRAŠTIT pro připojení...",
"pressToOverrideCharacterText": "stiskněte ${BUTTONS} pro nahrazení vaší postavy",
- "pressToSelectProfileText": "Stiskněte ${BUTTONS} pro zvolení hráče",
+ "pressToSelectProfileText": "stiskněte ${BUTTONS} pro zvolení hráče",
"pressToSelectTeamText": "stiskněte ${BUTTONS} pro vybrání týmu",
"promoCodeWindow": {
"codeText": "Kód",
@@ -1161,26 +1222,28 @@
},
"promoSubmitErrorText": "Chyba při odesílání kódu; zkontrolujte internetové připojení",
"ps3ControllersWindow": {
- "macInstructionsText": "Vypněte na zadní straně své PS3, ujistěte se, že\nje na Vašem Mac zaplý Bluetooth, a poté připojte Váš ovladač\nk vašemu Mac přes USB kabel, abyste je mohli spárovat. Odteď\nmůžete použít na ovladači tlačítko home (domů) pro připojení k Vašemu\nMacu ať už v kabelovém (USB) nebo bezdrátovém (Bluetooth) módu.\n\nNa některých Mac zařízeních můžete být při párování vyzváni k zadání passcode.\nJestliže se tohle stane, podívejte se na následující tutorial, nebo zkuste hledat na google.\n\n\n\n\nOvladače PS3, připojené bezdrátově, by se měly zobrazit v seznamu v\nSystémová nastavení->Bluetooth. Možná je budete potřebovat odstranit, pokud \nje budete chtít znovu použít s Vaším PS3.\n\nTaké se ujistěte, že je odpojíte od Bluetooth když nejsou používané,\nprotože jinak se jejich baterie budou stále vybíjet.\n\nBluetooth by měl zvládnout až 7 připojených zařízení,\nale to se může lišit.",
- "ouyaInstructionsText": "Pro použití ovladače s Vaším OUYA, ho prostě jednou připojte přes USB kabel\nkvůli spárování. Ovšem při tomto kroku se mohou odpojit ostatní ovladače,\ntakže byste měli restartovat Vaši OUYA a odpojit USB kabel.\n\nOdteď budete schopni použít tlačítko HOME na ovladači k jeho připojení\nbezdrátově. Poté co dohrajete, držte tlačítko HOME 10 sekund, aby se\novladač vypl; jinak může zůstat zaplý\na vybíjet baterie.",
+ "macInstructionsText": "Vypněte na zadní straně své PS3, ujistěte se, že je na Vašem Macu\nzapnutý Bluetooth a poté připojte Váš ovladač k vašemu Macu přes USB kabel, \nabyste je mohli spárovat. Odteď můžete použít na ovladači tlačítko home (domů)\npro připojení k Vašemu Macu ať už v kabelovém (USB) nebo bezdrátovém (Bluetooth) módu.\n\nNa některých Macích můžete být při párování vyzváni k zadání hesla.\nJestliže se tohle stane, podívejte se na následující tutorial, nebo zkuste hledat na internetu.\n\n\n\n\nOvladače PS3 připojené bezdrátově by se měly zobrazit v seznamu v\nSystémová nastavení->Bluetooth. Možná je budete muset odstranit, pokud \nje budete chtít znovu použít s Vaším PS3.\n\nTaké se ujistěte, že je odpojíte od Bluetooth když nejsou používané, jinak se jejich baterie budou nadále vybíjet.\n\nBluetooth by měl zvládnout až 7 připojených zařízení, ale to se může lišit.",
+ "ouyaInstructionsText": "Pro použití PS3 ovladače s Vaší OUYA ho prostě jednou připojte přes USB kabel pro spárování. Při tomto kroku se mohou odpojit ostatní ovladače,\ntakže byste měli restartovat Vaši OUYA a odpojit USB kabel.\n\nOdteď budete mít možnost použít tlačítko HOME na ovladači k jeho bezdrátovému připojení. Poté co dohrajete, držte tlačítko HOME 10 sekund, aby se\novladač vypl; jinak se jeho baterie budou nadále vybíjet.",
"pairingTutorialText": "video tutorial o párování",
"titleText": "Používání PS3 Ovladače s ${APP_NAME}:"
},
"punchBoldText": "PRAŠTIT",
"punchText": "Praštit",
"purchaseForText": "Koupit za ${PRICE}",
- "purchaseGameText": "Koupit Hru",
+ "purchaseGameText": "Zakoupit hru",
+ "purchaseNeverAvailableText": "Bohužel, transakce nejsou dostupné na této sestavě.\nZkuste přihlásit svůj účet na jiné platformě a na ní provést nákup.",
+ "purchaseNotAvailableText": "Tento nákup není dostupný.",
"purchasingText": "Probíhá transakce...",
"quitGameText": "Ukončit ${APP_NAME}?",
"quittingIn5SecondsText": "Ukončuji za 5 sekund...",
- "randomPlayerNamesText": "DEFAULT_NAMES",
+ "randomPlayerNamesText": "Jenda, Kuba, Saša, Péťa, Pepa, Kája, Pája, Klára, Monča, Dita, Máša, David, Mirek, Jana, Hanka, Vítek, Lenka, Áďa, Franta, DEFAULT_NAMES",
"randomText": "Náhodně",
"rankText": "Rank",
"ratingText": "Hodnocení",
"reachWave2Text": "Pro hodnocení se dostaňte do vlny 2.",
"readyText": "připraven",
"recentText": "Poslední",
- "remoteAppInfoShortText": "${APP_NAME} je zábavnější hrát s rodinou & přáteli.\nPřipoj jedno nebo více hardwerových ovladačů nebo \nnainstaluj ${REMOTE_APP_NAME} na telefon nebo tablet \nk jejich použití jako ovladač.",
+ "remoteAppInfoShortText": "${APP_NAME} je zábavnější hrát s rodinou & přáteli.\nPřipojte jeden nebo více fyzických ovladačů nebo \nnainstalujte ${REMOTE_APP_NAME} na telefon nebo tablet \nk jejich použití jako ovladač.",
"remote_app": {
"app_name": "BombSquad Ovladač",
"app_name_short": "BSOvladač",
@@ -1189,35 +1252,36 @@
"cant_resolve_host": "Hostitel nebyl nalezen.",
"capturing": "Zachytávám...",
"connected": "Připojen.",
- "description": "Použijte Váš telefon či tablet jako ovladač pro BombSquad.\nNajednou lze připojit až 8 zařízení k lokálnímu multiplayerovému šílenství na televizi či tabletu.",
+ "description": "Použijte Váš telefon či tablet jako ovladač pro BombSquad.\nNajednou lze připojit až 8 zařízení k epickému lokálnímu multiplayerovému šílenství na televizi či tabletu.",
"disconnected": "Odpojen serverem.",
"dpad_fixed": "statický",
"dpad_floating": "plovoucí",
- "dpad_position": "Pozice D-Pad",
- "dpad_size": "Velikost D-Pad",
- "dpad_type": "Typ D-Pad",
+ "dpad_position": "Pozice D-Padu",
+ "dpad_size": "Velikost D-Padu",
+ "dpad_type": "Typ D-Padu",
"enter_an_address": "Zadejte adresu",
"game_full": "Hra je již zaplněna hráči nebo nepřijímá připojení.",
"game_shut_down": "Hra byla vypnuta.",
"hardware_buttons": "Hardwarová tlačítka",
"join_by_address": "Připojit se k adrese...",
"lag": "Prodleva: ${SECONDS} sekund",
- "reset": "Navrátit základní",
+ "reset": "Navrátit výchozí",
"run1": "Běh 1",
"run2": "Běh 2",
"searching": "Probíhá hledání aktivních her BombSquad...",
- "searching_caption": "Pro připojení se dotkněte jména hry.\nUjistěte se, že jste na stejné síti wifi.",
+ "searching_caption": "Pro připojení se dotkněte jména hry.\nUjistěte se, že jste na stejné síti WiFi.",
"start": "Start",
"version_mismatch": "Neshoda verzí.\nUjistěte se, že BombSquad a BombSquad Ovladač\njsou aktualizované na poslední verzi, a zkuste to znovu."
},
- "removeInGameAdsText": "Odemkněte \"${PRO}\" v obchodě pro odstranění reklam ve hře.",
+ "removeInGameAdsText": "Odemkněte „${PRO}“ v obchodě pro odstranění reklam ve hře.",
+ "removeInGameAdsTokenPurchaseText": "LIMITOVANÁ NABÍDKA: Zakoupením JAKÉHOKOLI balíčku tokenů odstraníte reklamy.",
"renameText": "Přejmenovat",
"replayEndText": "Ukončit Záznam",
"replayNameDefaultText": "Záznam Poslední Hry",
"replayReadErrorText": "Chyba při čtení souboru záznamu.",
- "replayRenameWarningText": "Přejmenujte \"${REPLAY}\" po odehrané hře, pokud ho chcete zachovat; jinak bude přepsán",
+ "replayRenameWarningText": "Přejmenujte „${REPLAY}“ po odehrané hře, pokud ho chcete zachovat; jinak bude přepsán.",
"replayVersionErrorText": "Omlouváme se, ale tento záznam byl vytvořen\nv jiné verzi hry a nemůže být přehrán.",
- "replayWatchText": "Podívat se na Záznam",
+ "replayWatchText": "Podívat se na záznam",
"replayWriteErrorText": "Chyba při zápisu souboru záznamu.",
"replaysText": "Záznamy",
"reportPlayerExplanationText": "Použijte tento email pro nahlášení podvádění, nevhodného vyjadřování či jiného špatného chování.\nProsím popište níže:",
@@ -1231,7 +1295,9 @@
"revertText": "Navrátit",
"runText": "Běh",
"saveText": "Uložit",
- "scanScriptsErrorText": "Chyba při skenování skriptů; shlédni záznam pro více informací.",
+ "scanScriptsErrorText": "Chyba při skenování skriptů. Shlédni záznam pro více informací.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} a ${NUM} dalších modulů musí být aktualizováno pro API ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} musí být aktualizován pro API ${API}.",
"scoreChallengesText": "Skóre Výzev",
"scoreListUnavailableText": "Seznam skóre nedostupný",
"scoreText": "Skóre",
@@ -1242,6 +1308,7 @@
},
"scoreWasText": "(předchozí ${COUNT})",
"selectText": "Zvolit",
+ "sendInfoDescriptionText": "Pošle informace stavu aplikace a účtu vývojářovi.\nProsím zahrňte své jméno nebo důvod k poslání.",
"seriesWinLine1PlayerText": "VYHRÁVÁ",
"seriesWinLine1TeamText": "VYHRÁVÁ",
"seriesWinLine1Text": "VYHRÁVÁ",
@@ -1257,9 +1324,10 @@
"titleText": "Nastavení"
},
"settingsWindowAdvanced": {
- "alwaysUseInternalKeyboardDescriptionText": "(jednoduchá, ovládáním přátelská, klávesnice na obrazovce pro úpravu textu)",
- "alwaysUseInternalKeyboardText": "Vždy Použít Interní klávesnici",
- "benchmarksText": "Benchmarky a Testy výdrže",
+ "alwaysUseInternalKeyboardDescriptionText": "(jednoduchá, ovládáním přátelská klávesnice na obrazovce pro úpravu textu)",
+ "alwaysUseInternalKeyboardText": "Vždy použít interní klávesnici",
+ "benchmarksText": "Benchmarky a testy výdrže",
+ "devToolsText": "Nástroje pro Vývojáře",
"disableCameraGyroscopeMotionText": "Vypnout gyroskopický pohyb kamery",
"disableCameraShakeText": "Vypnout otřes kamery",
"disableThisNotice": "(můžete si toto oznámení vypnout v pokročilých nastaveních)",
@@ -1268,23 +1336,31 @@
"enterPromoCodeText": "Zadat kód",
"forTestingText": "Poznámka: Tyto hodnoty sou pouze pro test. Obnoví se po restartu.",
"helpTranslateText": "Jiné než anglické verze ${APP_NAME} jsou komunitně\npodporovanou záležitostí. Pokud byste chtěli přidat\nnebo opravit překlad, následujte odkaz níže. Předem děkujeme!",
- "kickIdlePlayersText": "Vyhazovat Neaktivní Hráče",
- "kidFriendlyModeText": "Dětský Mód (sníženo násilí, atd.)",
+ "insecureConnectionsDescriptionText": "není doporučeno, ale může povolit online hru\n v zakázaných zemích nebo sítích",
+ "insecureConnectionsText": "Použít nezabezpečené připojení",
+ "kickIdlePlayersText": "Vykopnout neaktivní hráče",
+ "kidFriendlyModeText": "Dětský mód (snížené násilí, atd.)",
"languageText": "Jazyk",
"moddingGuideText": "Příručka módů",
+ "moddingToolsText": "Modovací možnosti",
"mustRestartText": "Musíte restartovat hru, aby se změny projevily.",
- "netTestingText": "Testování Sítě",
+ "netTestingText": "Testování sítě",
"resetText": "Obnovit",
- "showBombTrajectoriesText": "Ukázat trajektorii bomb",
- "showPlayerNamesText": "Jména hráčů",
- "showUserModsText": "Zobrazit Složku s Módy",
+ "sendInfoText": "Poslat info",
+ "showBombTrajectoriesText": "Ukazovat trajektorii bomb",
+ "showDemosWhenIdleText": "Zobrazit demo při nečinnosti",
+ "showDeprecatedLoginTypesText": "Zobrazit zastaralé způsoby přihlášení",
+ "showDevConsoleButtonText": "Zobrazit tlačítko vývojářské konzole",
+ "showInGamePingText": "Zobrazit herní ping",
+ "showPlayerNamesText": "Ukazovat jména hráčů",
+ "showUserModsText": "Zobrazit složku s módy",
"titleText": "Pokročilé",
- "translationEditorButtonText": "${APP_NAME} Editor Překladu",
+ "translationEditorButtonText": "${APP_NAME} editor překladu",
"translationFetchErrorText": "stav překladu nedostupný",
"translationFetchingStatusText": "zjišťuji stav překladu...",
"translationInformMe": "Oznamte mi když bude můj jazyk potřebovat aktualizaci",
- "translationNoUpdateNeededText": "tento jazyk je aktuální; woohoo!",
- "translationUpdateNeededText": "** jazyk potřebuje aktualizovat!! **",
+ "translationNoUpdateNeededText": "Tento jazyk je aktuální; hurá! :)",
+ "translationUpdateNeededText": "** Jazyk potřebuje aktualizovat!! **",
"vrTestingText": "VR Test"
},
"shareText": "Sdílet",
@@ -1293,33 +1369,37 @@
"signInForPromoCodeText": "Musíte se přihlásit k účtu, aby mohly kódy fungovat.",
"signInWithGameCenterText": "Pro použití účtu Game Center se přihlaste\ns pomocí aplikace Game Center.",
"singleGamePlaylistNameText": "Jen ${GAME}",
- "singlePlayerCountText": "1 Hráč",
+ "singlePlayerCountText": "1 hráč",
+ "sizeLargeText": "Velký",
+ "sizeMediumText": "Středně velký",
+ "sizeSmallText": "Malý",
"soloNameFilterText": "Sólo ${NAME}",
"soundtrackTypeNames": {
- "CharSelect": "Vybírání Postavy",
+ "CharSelect": "Vybírání postavy",
"Chosen One": "Vyvolený",
- "Epic": "Hry v Epickém Módu",
+ "Epic": "Hry v Epickém módu",
"Epic Race": "Epický závod",
"FlagCatcher": "Seberte vlajku",
- "Flying": "Veselé Myšlenky",
+ "Flying": "Veselé myšlenky",
"Football": "Ragby",
"ForwardMarch": "Přepadení",
"GrandRomp": "Dobývání",
"Hockey": "Hokej",
- "Keep Away": "Držte se Dál",
+ "Keep Away": "Držte se stranou",
"Marching": "Obrana",
"Menu": "Hlavní menu",
"Onslaught": "Útok",
"Race": "Závod",
- "Scary": "Král Kopce",
- "Scores": "Obrazovka Skóre",
- "Survival": "Zneškodnění",
- "ToTheDeath": "Zápas Smrti",
- "Victory": "Obrazovka Konečného Skóre"
+ "Scary": "Král kopce",
+ "Scores": "Obrazovka skóre",
+ "Survival": "Eliminace",
+ "ToTheDeath": "Zápas smrti",
+ "Victory": "Obrazovka konečného skóre"
},
"spaceKeyText": "mezera",
"statsText": "Statistiky",
- "storagePermissionAccessText": "Tohle vyžaduje přístup k úložišti",
+ "stopRemindingMeText": "Dále Nepřipomínat",
+ "storagePermissionAccessText": "Toto vyžaduje přístup k úložišti",
"store": {
"alreadyOwnText": "Už vlastníš ${NAME}!",
"bombSquadProDescriptionText": "• Zdvojnásobuje kupóny získané za achievementy\n• Odstraňuje reklamy ve hře\n• Obsahuje ${COUNT} bonusových kupónů\n• +${PERCENT}% bonus ke skóre ligy\n• Odemyká '${INF_ONSLAUGHT}' a \n '${INF_RUNAROUND}' co-op mapy",
@@ -1330,34 +1410,34 @@
"charactersText": "Postavy",
"comingSoonText": "Již brzy...",
"extrasText": "Bonusy",
- "freeBombSquadProText": "BombSquad je nyní zdarma, ale pokud jste si ho dříve zakoupili,\ndostáváte BombSquad Pro upgrade a ${COUNT} kupónů jako poděkování.\nUžijte si nové možnosti a děkujeme za vaši podporu!\n-Eric",
+ "freeBombSquadProText": "BombSquad je nyní zdarma, ale pokud jste si ho dříve zakoupili,\ndostáváte BombSquad Pro upgrade a ${COUNT} kupónů jako poděkování.\nUžijte si nové možnosti a díky za podporu!\n- Eric",
"gameUpgradesText": "Vylepšení hry",
- "holidaySpecialText": "Vánoční speciál",
- "howToSwitchCharactersText": "(jděte do \"${SETTINGS} -> ${PLAYER_PROFILES}\" k použití nebo úpravě postav)",
+ "holidaySpecialText": "Sváteční Speciál",
+ "howToSwitchCharactersText": "(jděte do ${SETTINGS} -> ${PLAYER_PROFILES} k použití nebo úpravě postav)",
"howToUseIconsText": "(vytvořte si globální herní účet (v okně účtů) abyste je mohli použít)",
- "howToUseMapsText": "(použijte tyto mapy ve vlastních týmových/všichni-proti-všem seznamech)",
+ "howToUseMapsText": "(použijte tyto mapy ve vlastních týmových/všichni proti všem seznamech)",
"iconsText": "Ikony",
- "loadErrorText": "Nelze načíst.\nZkontrolujte připojení.",
+ "loadErrorText": "Nelze načíst stránku.\nZkontrolujte připojení k internetu.",
"loadingText": "Načítání...",
"mapsText": "Mapy",
"miniGamesText": "MiniHry",
"oneTimeOnlyText": "(pouze jednou)",
"purchaseAlreadyInProgressText": "Koupě této položky již probíhá.",
"purchaseConfirmText": "Zakoupit ${ITEM}?",
- "purchaseNotValidError": "Nákup je neplatný.\nKontaktuje ${EMAIL} pokuď je to chyba.",
+ "purchaseNotValidError": "Nákup je neplatný.\nKontaktuje ${EMAIL} jedná-li se o omyl.",
"purchaseText": "Zakoupit",
"saleBundleText": "Balíček ve slevě!",
"saleExclaimText": "Sleva!",
"salePercentText": "(o ${PERCENT}% levnější)",
"saleText": "VÝPRODEJ",
"searchText": "Hledat",
- "teamsFreeForAllGamesText": "Týmy / Všichni-proti-Všem Hry",
+ "teamsFreeForAllGamesText": "Týmové / Všichni proti Všem Hry",
"totalWorthText": "***JEDNOTLIVĚ STOJÍ ${TOTAL_WORTH}! ***",
"upgradeQuestionText": "Aktivovat?",
- "winterSpecialText": "Zimní Speciál",
+ "winterSpecialText": "Zimní speciál",
"youOwnThisText": "- již vlastníte -"
},
- "storeDescriptionText": "Šílená Hra s Osmi Hráči v Partě!\n\nVyhoďte do vzduchu své přátele (nebo počítač) v turnaji explozivních miniher jako je třeba Seber Vlajku, Bomber-Hokej, a Epický-Slow-Motion-Zápas-Smrti!\n\nJednoduché ovládání a široká podpora ovladačů tvoří jednoduchou vlastnost připojit až 8 lidí do akce; a také můžete použít své mobilní zařízení jako ovladače přes aplikaci 'BombSquad Remote', která je zdarma!\n\nOdhoďte Bomby\n\nPro více informací navštivte stránku www.froemling.net/bombsquad",
+ "storeDescriptionText": "Šílenství pro osm hráčů!\n\nVyhoďte do vzduchu své přátele (nebo počítač) v turnaji bombastických miniher jako třeba Seberte vlajku, Bomber hokej, nebo Zápas smrti v Epickém zpomaleném záběru!\n\nJednoduché ovládání a široká podpora ovladačů umožňují do akce zapojit až 8 lidí; a také můžete použít své mobilní zařízení jako ovladače přes aplikaci „BombSquad Remote“, která je zdarma!\n\nBombám zdar!\n\nPro více informací navštivte stránku www.froemling.net/bombsquad",
"storeDescriptions": {
"blowUpYourFriendsText": "Vyhoďte přátele do vzduchu.",
"competeInMiniGamesText": "Utkejte se v minihrách od závodění po létání.",
@@ -1369,18 +1449,21 @@
"storeText": "Obchod",
"submitText": "Odeslat",
"submittingPromoCodeText": "Odesílám kód...",
- "teamNamesColorText": "Týmové Jména/Barvy...",
+ "successText": "Úspěch!",
+ "supportEmailText": "Pokud máte jakékoliv problémy s aplikací, prosím \nnapište na email ${EMAIL}.",
+ "teamNamesColorText": "Jména/Barvy týmů...",
"telnetAccessGrantedText": "Přístup k telnetu zapnut.",
"telnetAccessText": "Detekován přístup k telnetu; povolit?",
"testBuildErrorText": "Tento testovací build již není dlouho aktivní; podívejte se prosím po nové verzi.",
- "testBuildText": "Testovací Build",
+ "testBuildText": "Testovací build",
"testBuildValidateErrorText": "Nebylo možné ověřit testovací build. (žádné internetové připojení?)",
- "testBuildValidatedText": "Testovací Build Ověřen; Užívejte!",
+ "testBuildValidatedText": "Testovací build Ověřen; Užívejte!",
"thankYouText": "Děkujeme Vám za podporu! Užijte si hru!!",
"threeKillText": "TŘI ZABITÍ!!!",
- "timeBonusText": "Časový Bonus",
- "timeElapsedText": "Uplynulý Čas",
- "timeExpiredText": "Čas Vypršel",
+ "ticketsDescriptionText": "Kupóny mohou být použity na odemykání postav,\nmap, miniher a mnoho dalšího v obchodě.\n\nKupóny lze nalézt v truhlách vyhraných díky\nkampaním, turnajům a trofejím.",
+ "timeBonusText": "Časový bonus",
+ "timeElapsedText": "Uplynulý čas",
+ "timeExpiredText": "Čas vypršel",
"timeSuffixDaysText": "${COUNT}d",
"timeSuffixHoursText": "${COUNT}h",
"timeSuffixMinutesText": "${COUNT}m",
@@ -1388,11 +1471,25 @@
"tipText": "Tip",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
- "topFriendsText": "Nejlepší Přátelé",
- "tournamentCheckingStateText": "Zjišťuji stav turnaje; Počkejte prosím...",
+ "tokens": {
+ "getTokensText": "Získat Tokeny",
+ "notEnoughTokensText": "Nedostatek tokenů!",
+ "numTokensText": "${COUNT} Tokenů",
+ "openNowDescriptionText": "Máte dostatek tokenů na \nOtevření nyní - Netřeba\nčekat.",
+ "shinyNewCurrencyText": "Nová blištivá měna BombSquadu.",
+ "tokenPack1Text": "Malý Tokenový Balíček",
+ "tokenPack2Text": "Střední Tokenový Balíček",
+ "tokenPack3Text": "Velký Tokenový Balíček",
+ "tokenPack4Text": "Obrovský Tokenový Balíček",
+ "tokensDescriptionText": "Tokeny se používají na urychlení odemykání\ntruhel a na další funkce hry a účtu.\n\nTokeny můžete vyhrát ve hře nebo si je zakoupit\nv balíčcích. Nebo si můžete koupit Gold Pass pro\nnekonečný počet tokenů a nemusíte se o ně starat.",
+ "youHaveGoldPassText": "Vlastníte Gold Pass.\nVšechny nákupy za tokeny jsou zdarma.\nUžívejte!"
+ },
+ "topFriendsText": "Nejlepší přátelé",
+ "tournamentCheckingStateText": "Zjišťuji stav turnaje; chvilku strpení...",
"tournamentEndedText": "Tento turnaj již skončil. Brzy ale začne další.",
"tournamentEntryText": "Vstup do turnaje",
- "tournamentResultsRecentText": "Vysledky predchozich turnaju",
+ "tournamentFinalStandingsText": "Konečné umístění",
+ "tournamentResultsRecentText": "Výsledky předchozích turnajů",
"tournamentStandingsText": "Pořadí v turnaji",
"tournamentText": "Turnaj",
"tournamentTimeExpiredText": "Čas turnaje vypršel",
@@ -1447,16 +1544,28 @@
"Uber Onslaught": "Útok - Megatěžké",
"Uber Runaround": "Obrana - Megatěžká"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Ticketů",
+ "${C} Tokens": "${C} Tokenů",
+ "Chest": "Truhla",
+ "L1 Chest": "Truhla L1",
+ "L2 Chest": "Truhla L2",
+ "L3 Chest": "Truhla L3",
+ "L4 Chest": "Truhla L4",
+ "L5 Chest": "Truhla L5",
+ "L6 Chest": "Truhla L6",
+ "Unknown Chest": "Neznámá truhla"
+ },
"gameDescriptions": {
- "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Staňte se vyvoleným po dlouhý čas, abyste vyhráli.\nZabijte vyvoleného, abyste se jím stali.",
- "Bomb as many targets as you can.": "Vybombardujte tolik cílů, kolik dokážete.",
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Buďte vyvoleným dostatečně dlouho, abyste vyhráli.\nZabijte vyvoleného, abyste se jím stali.",
+ "Bomb as many targets as you can.": "Odpalte tolik cílů, kolik dokážete.",
"Carry the flag for ${ARG1} seconds.": "Držte vlajku po dobu ${ARG1} sekund.",
"Carry the flag for a set length of time.": "Držte vlajku po nastavený čas.",
"Crush ${ARG1} of your enemies.": "Rozdrťte ${ARG1} Vašich nepřátel.",
- "Defeat all enemies.": "Porazte všechny nepřátele",
+ "Defeat all enemies.": "Porazte všechny nepřátele.",
"Dodge the falling bombs.": "Vyhněte se padajícím bombám.",
- "Final glorious epic slow motion battle to the death.": "Finální úžasný epický slow motion souboj na smrt.",
- "Gather eggs!": "Sbírání vajec!",
+ "Final glorious epic slow motion battle to the death.": "Ultimátní krutopřísný epický zpomalený souboj na smrt.",
+ "Gather eggs!": "Sbírejte velikonoční vajíčka!",
"Get the flag to the enemy end zone.": "Dostaňte vlajku na nepřátelskou koncovou zónu.",
"How fast can you defeat the ninjas?": "Jak rychle dokážete porazit ninja bojovníky?",
"Kill a set number of enemies to win.": "Zabijte určený počet nepřátel, abyste vyhráli.",
@@ -1464,8 +1573,8 @@
"Last remaining alive wins.": "Poslední zbývající živý vyhrává.",
"Last team standing wins.": "Poslední vzdorující tým vyhrává.",
"Prevent enemies from reaching the exit.": "Zabraňte nepřátelům dostat se na konec.",
- "Reach the enemy flag to score.": "Dostaňte nepřátelskou vlajku, abyste skórovali.",
- "Return the enemy flag to score.": "Vraťe nepřátelskou vlajku pro skórování.",
+ "Reach the enemy flag to score.": "Dotkněte se nepřátelské vlajky, abyste skórovali.",
+ "Return the enemy flag to score.": "Přineste nepřátelskou vlajku pro skórování.",
"Run ${ARG1} laps.": "Uběhněte ${ARG1} kol/a.",
"Run ${ARG1} laps. Your entire team has to finish.": "Uběhněte ${ARG1} kol. Celý Váš tým musí dokončit.",
"Run 1 lap.": "Uběhněte 1 kolo.",
@@ -1482,15 +1591,15 @@
"Secure the flag for a set length of time.": "Zajistěte vlajku po určený čas.",
"Steal the enemy flag ${ARG1} times.": "Ukradněte ${ARG1}x nepřátelskou vlajku.",
"Steal the enemy flag.": "Ukradněte nepřátelskou vlajku.",
- "There can be only one.": "Tady může být jen jedna.",
+ "There can be only one.": "Tady může být jen jeden.",
"Touch the enemy flag ${ARG1} times.": "Dotkněte se ${ARG1}x nepřátelské vlajky.",
"Touch the enemy flag.": "Dotkněte se nepřátelské vlajky.",
- "carry the flag for ${ARG1} seconds": "Držte vlajku po dobu ${ARG1} sekund",
+ "carry the flag for ${ARG1} seconds": "držte vlajku po dobu ${ARG1} sekund",
"kill ${ARG1} enemies": "zabijte ${ARG1} nepřátel",
"last one standing wins": "poslední vzdorující vyhrává",
"last team standing wins": "poslední vzdorující tým vyhrává",
- "return ${ARG1} flags": "vraťte ${ARG1} vlajek",
- "return 1 flag": "vraťte 1 vlajku",
+ "return ${ARG1} flags": "přineste ${ARG1} vlajek",
+ "return 1 flag": "přineste 1 vlajku",
"run ${ARG1} laps": "uběhněte ${ARG1} kol/a",
"run 1 lap": "uběhněte 1 kolo",
"score ${ARG1} goals": "dejte góly - ${ARG1}",
@@ -1504,22 +1613,22 @@
},
"gameNames": {
"Assault": "Přepadení",
- "Capture the Flag": "Seberte Vlajku",
+ "Capture the Flag": "Seberte vlajku",
"Chosen One": "Vyvolený",
"Conquest": "Dobývání",
- "Death Match": "Zápas Smrti",
- "Easter Egg Hunt": "Lovení velikonočních vajíček",
- "Elimination": "Zneškodnění",
+ "Death Match": "Zápas smrti",
+ "Easter Egg Hunt": "Lovení vajíček",
+ "Elimination": "Eliminace",
"Football": "Ragby",
"Hockey": "Hokej",
- "Keep Away": "Držte se Dál",
- "King of the Hill": "Král Kopce",
- "Meteor Shower": "Smršť Meteoritů",
+ "Keep Away": "Držte se stranou",
+ "King of the Hill": "Král kopce",
+ "Meteor Shower": "Smršť meteoritů",
"Ninja Fight": "Souboj Ninja bojovníků",
"Onslaught": "Útok",
"Race": "Závod",
"Runaround": "Obrana",
- "Target Practice": "Trénování Cílů",
+ "Target Practice": "Odpalování terčů",
"The Last Stand": "Poslední vzdor"
},
"inputDeviceNames": {
@@ -1527,7 +1636,7 @@
"Keyboard P2": "Klávesnice P2"
},
"languages": {
- "Arabic": "Arabsky",
+ "Arabic": "Arabština",
"Belarussian": "Běloruština",
"Chinese": "Zjednodušená Čínština",
"ChineseTraditional": "Tradiční Čínština",
@@ -1551,6 +1660,7 @@
"Korean": "Korejština",
"Malay": "Malajština",
"Persian": "Perština",
+ "PirateSpeak": "Řeč pirátů",
"Polish": "Polština",
"Portuguese": "Portugalština",
"Romanian": "Rumunština",
@@ -1560,7 +1670,7 @@
"Spanish": "Španělština",
"Swedish": "Švédština",
"Tamil": "Tamiština",
- "Thai": "Thaiština",
+ "Thai": "Thajština",
"Turkish": "Turečtina",
"Ukrainian": "Ukrajinština",
"Venetian": "Benátština",
@@ -1576,24 +1686,24 @@
"Big G": "Velké G",
"Bridgit": "Mostík",
"Courtyard": "Nádvoří",
- "Crag Castle": "Skalní Hrad",
- "Doom Shroom": "Houba Zkázy",
- "Football Stadium": "Ragby Stadion",
- "Happy Thoughts": "Veselé Myšlenky",
- "Hockey Stadium": "Hokejový Stadion",
- "Lake Frigid": "Jezero Zmrzlík",
- "Monkey Face": "Opičí Tvář",
+ "Crag Castle": "Skalní hrad",
+ "Doom Shroom": "Houba zkázy",
+ "Football Stadium": "Ragby stadion",
+ "Happy Thoughts": "Veselé myšlenky",
+ "Hockey Stadium": "Hokejový stadion",
+ "Lake Frigid": "Jezero zmrzlík",
+ "Monkey Face": "Opičí tvář",
"Rampage": "Zuřivost",
- "Roundabout": "Kruhový Objezd",
+ "Roundabout": "Kruhový objezd",
"Step Right Up": "Zmatené schody",
"The Pad": "Podložka",
- "Tip Top": "Tip Ťop",
+ "Tip Top": "Tip ťop",
"Tower D": "Věž D",
"Zigzag": "Cikcak"
},
"playlistNames": {
- "Just Epic": "Jen Epické",
- "Just Sports": "Jen Sporty"
+ "Just Epic": "Jen epické",
+ "Just Sports": "Jen sporty"
},
"scoreNames": {
"Flags": "Vlajky",
@@ -1601,7 +1711,7 @@
"Score": "Skóre",
"Survived": "Přežil",
"Time": "Čas",
- "Time Held": "Čas Držen"
+ "Time Held": "Čas držení"
},
"serverResponses": {
"A code has already been used on this account.": "Kód již byl pro tento účet použit.",
@@ -1609,19 +1719,20 @@
"Account linking successful!": "Spojení účtu úspěšné!",
"Account unlinking successful!": "Účet úspěšně odpojen!",
"Accounts are already linked.": "Účty jsou již spojeny.",
- "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Zhlédnutí reklamy nebylo ověřeno.\nProsím ujistěte se, že máte oficiální a updatovanou hru.",
+ "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Zhlédnutí reklamy nebylo ověřeno.\nUjistěte se prosím, že máte oficiální a aktualizovanou hru.",
"An error has occurred; (${ERROR})": "Nastala chyba; (${ERROR})",
"An error has occurred; please contact support. (${ERROR})": "Nastala chyba; kontaktujete prosím podporu. (${ERROR})",
- "An error has occurred; please contact support@froemling.net.": "Stala se chyba; prosím kontaktujte support@froemling.net.",
- "An error has occurred; please try again later.": "Vyskytla se chyba; prosím zkuste to znova za chvilku",
+ "An error has occurred; please contact support@froemling.net.": "Nastala chyba; prosím kontaktujte support@froemling.net.",
+ "An error has occurred; please try again later.": "Nastala chyba; prosím zkuste to znova za chvilku",
"Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Jste si jisti, že chcete propojit tyto účty?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nTuto akci nelze vrátit zpět!",
"BombSquad Pro unlocked!": "BombSquad Pro odemčen!",
- "Can't link 2 accounts of this type.": "Nelze spojit 2 účty tohodle typu.",
+ "Can't link 2 accounts of this type.": "Nelze spojit 2 účty tohoto typu.",
"Can't link 2 diamond league accounts.": "Nelze spojit 2 účty diamantové ligy.",
"Can't link; would surpass maximum of ${COUNT} linked accounts.": "Nelze propojit; převýšily maximum ${COUNT} propojených účtů.",
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Detekováno podvádění; skóre a ceny pozastaveny na ${COUNT} dní",
"Could not establish a secure connection.": "Nelze navázat bezpečné připojení.",
"Daily maximum reached.": "Dosaženo denní maximum.",
+ "Daily sign-in reward": "Denní odměna za přihlášení",
"Entering tournament...": "Vstupujete do turnaje...",
"Invalid code.": "Neplatný kód.",
"Invalid payment; purchase canceled.": "Neplatná platební maetoda; platba zrušena.",
@@ -1629,94 +1740,108 @@
"Invalid purchase.": "Neplatná koupě.",
"Invalid tournament entry; score will be ignored.": "Neplatný turnaj; skóre bude ignorováno.",
"Item unlocked!": "Položka odemčena!",
- "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "Propojení zamítnuto. ${ACCOUNT} obsahuje\nznačné data, které by byly ZCELA ZTRACENY.\nPokud chcete, můžete připojit účet v opačném\npořadí (a ztratit tak data TOHOTO účtu)",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "PROPOJENÍ ZAMÍTNUTO. ${ACCOUNT} obsahuje\nznačná data, která by byla ZCELA ZTRACENA.\nPokud chcete, můžete připojit účet v opačném\npořadí (a ztratit tak data TOHOTO účtu)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Chcete spojit účet ${ACCOUNT} s tímto účtem?\nVšechna data na účtě ${ACCOUNT} budou smazána.\nTuto akci nelze navrátit zpět. Jste si jisti?",
- "Max number of playlists reached.": "Dosazano maximalniho počtu výpisů",
+ "Longer streaks lead to better rewards.": "Delší série přihláśení vede k lepším odměnám.",
+ "Max number of playlists reached.": "Dosazano maximalniho počtu playlistů",
"Max number of profiles reached.": "Dosaženo maximalního počtu profilů",
- "Maximum friend code rewards reached.": "Kamarádova maximální výhra na kódu.",
+ "Maximum friend code rewards reached.": "Dosaženo maximum odměn za kódy přátel.",
"Message is too long.": "Zpráva je příliš dlouhá.",
+ "New tournament result!": "Nový výsledek turnaje!",
"No servers are available. Please try again soon.": "Žádné servery nejsou nyní dostupné. Zkuste to prosím později.",
- "Profile \"${NAME}\" upgraded successfully.": "Profil \"${NAME}\" byl úspěšně přeměněn.",
- "Profile could not be upgraded.": "Profil nelze přeměnit.",
- "Purchase successful!": "Koupě se zdařila!",
+ "No slots available. Free a slot and try again.": "Všechna místa obsazená. Uvolněte místo a zkuste to znovu.",
+ "Profile \"${NAME}\" upgraded successfully.": "Profil „${NAME}“ byl úspěšně povýšen.",
+ "Profile could not be upgraded.": "Profil nelze povýšit.",
+ "Purchase successful!": "Nákup úspěšný!",
"Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Získali jste ${COUNT} kupónů za přihlášení.\nVraťte se zítra, abyste jich obdrželi ${TOMORROW_COUNT}.",
- "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "Server běží na novější verzi a tu vaši nepodporuje,\naktualizujte hru pro připojení.",
- "Sorry, there are no uses remaining on this code.": "Omlouváme se, ale již zde nejsou žádné zbývající použití pro tento kód.",
+ "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "Funkce serveru již nejsou podporovány v této verzi hry;\nAktualizujte prosím na novější verzi.",
+ "Sorry, there are no uses remaining on this code.": "Omlouváme se, ale již zde nejsou žádná zbývající použití pro tento kód.",
"Sorry, this code has already been used.": "Omlouváme se, ale tento kód již byl použit.",
"Sorry, this code has expired.": "Omlouváme se, ale platnost tohoto kódu vypršela.",
"Sorry, this code only works for new accounts.": "Omlouváme se, ale tento kód je platný pouze pro nové účty.",
- "Still searching for nearby servers; please try again soon.": "Stále se vyhledávají lokální servery; Prosím zkuste to později.",
- "Temporarily unavailable; please try again later.": "Dočasně nedostupné; zkuste to později.",
- "The tournament ended before you finished.": "Turnaj skončil než jste ho dokončili.",
+ "Sorry, this has expired.": "Promiň, vypršela platnost.",
+ "Still searching for nearby servers; please try again soon.": "Stále se vyhledávají lokální servery; zkuste to prosím později.",
+ "Streak: ${NUM} days": "Série: ${NUM} dní",
+ "Temporarily unavailable; please try again later.": "Dočasně nedostupné; zkuste to prosím později.",
+ "The tournament ended before you finished.": "Turnaj skončil než jste ho stihli dokončit.",
"This account cannot be unlinked for ${NUM} days.": "Tento účet nelze odpojit po dobu ${NUM} dnů.",
"This code cannot be used on the account that created it.": "Tento kód nemůže být použit na účtu, na kterém byl vytvořen.",
- "This is currently unavailable; please try again later.": "Tato možnost je momentálně nedostupná; prosím zkuste to později.",
+ "This is currently unavailable; please try again later.": "Tato možnost je momentálně nedostupná; zkuste to prosím později.",
"This requires version ${VERSION} or newer.": "Toto vyžaduje verzi ${VERSION} nebo vyšší.",
- "Tournaments disabled due to rooted device.": "Turnaje nedostupné na zařízeních s rootem.",
+ "Tournaments disabled due to rooted device.": "Turnaje jsou nedostupné na zařízeních s rootem.",
"Tournaments require ${VERSION} or newer": "Turnaje vyžadují ${VERSION} nebo novější",
- "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Odpojit ${ACCOUNT} od tohoto účtu?\nVeškerá data na účtě ${ACCOUNT} se resetují.\n(výjimka jsou v některých případech úspěchy)",
- "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "VAROVÁNÍ: Byla proti vám vznešena obvinění z podvádění ve hře.\nÚčty o kterých se prokáže že používají ulehčující módy budou smazány, hrajte prosím férově.",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Odpojit ${ACCOUNT} od tohoto účtu?\nVeškerá data na účtě ${ACCOUNT} se resetují.\n(výjimka jsou v některých případech Trofeje)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "VAROVÁNÍ: Byla proti Vám vznesena obvinění z podvádění ve hře.\nÚčty, o kterých se prokáže, že používají hacky, budou zabanovány. Hrajte prosím férově.",
+ "Wait reduced!": "Čekání zkráceno!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Upozornění: Tato verze hry je omezená starými daty účtu; některé věcy mohou chybět nebo jsou zastaralé.\nProsím aktualizujte si hru na nejnovější verzi,aby jste viděli nejnovější data na svém účtu.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Přejete si propojit Váš účet zařízení k tomuto?\n\nÚčet vašeho zařízení je ${ACCOUNT1}\nTento účet je ${ACCOUNT2}\n\nTato akce Vám umožní zachovat si stávající postup.\nVarování: Nelze vrátit zpět!",
"You already own this!": "Toto již vlastníte!",
"You can join in ${COUNT} seconds.": "Připojit se můžete až za ${COUNT} sek.",
- "You don't have enough tickets for this!": "Na toto bohužel nemáte dostatek kupónů!",
- "You don't own that.": "Nevlastníte tuto věc.",
- "You got ${COUNT} tickets!": "Získal jste ${COUNT} kupónů!",
- "You got a ${ITEM}!": "Získaly jste ${ITEM}!",
+ "You don't have enough tickets for this!": "Na toto nemáte dostatek kupónů!",
+ "You don't own that.": "Toto nevlastníte.",
+ "You got ${COUNT} tickets!": "Získali jste ${COUNT} kupónů!",
+ "You got ${COUNT} tokens!": "Máš ${COUNT} tokenů!",
+ "You got a ${ITEM}!": "Získali jste ${ITEM}!",
+ "You got a chest!": "Získal jste truhlu!",
+ "You got an achievement reward!": "Dostali jste odměnu za trofej!",
"You have been promoted to a new league; congratulations!": "Byli jste povýšeni do další ligy; gratulujeme!",
- "You must update to a newer version of the app to do this.": "Musíš updatovat na novější verzi aplikace k udělání tohodle.",
+ "You lost a chest! (All your chest slots were full)": "Ztratil jste truhlu! (Všechna místa byla obsazena)",
+ "You must update the app to view this.": "Pro zobrazení aktualizujte aplikaci.",
+ "You must update to a newer version of the app to do this.": "Musíte aktualizovat na novější verzi aplikace k udělání tohoto.",
"You must update to the newest version of the game to do this.": "Vaše verze hry tuto akci nepodporuje, aktualizujte hru na nejnovější verzi.",
"You must wait a few seconds before entering a new code.": "Před zadáním nového kódu počkejte pár sekund.",
- "You ranked #${RANK} in the last tournament. Thanks for playing!": "V posledním turnaji jste se umístil na #${RANK} pozici. Děkujeme!",
- "Your account was rejected. Are you signed in?": "Váš účet byl odmítnut. Jste přihlášen?",
+ "You placed #${RANK} in a tournament!": "V turnaji jste byl #${RANK}!",
+ "You ranked #${RANK} in the last tournament. Thanks for playing!": "V posledním turnaji jste se umístili na #${RANK} pozici. Děkujeme za hraní!",
+ "Your account was rejected. Are you signed in?": "Váš účet byl odmítnut. Jste přihlášeni?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Nezaznamenali jsme sledování reklamy. Nastavení reklamy budou chvíli omezené.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Vaše kopie hry byla pozměněna.\nVraťte prosím všechny změny a zkuste to znovu.",
"Your friend code was used by ${ACCOUNT}": "Váš kód pro přátele byl použit hráčem ${ACCOUNT}"
},
"settingNames": {
- "1 Minute": "1 Minuta",
- "1 Second": "1 Sekunda",
- "10 Minutes": "10 Minut",
- "2 Minutes": "2 Minuty",
- "2 Seconds": "2 Sekundy",
- "20 Minutes": "20 Minut",
- "4 Seconds": "4 Sekundy",
- "5 Minutes": "5 Minut",
- "8 Seconds": "8 Sekund",
+ "1 Minute": "1 minuta",
+ "1 Second": "1 sekunda",
+ "10 Minutes": "10 minut",
+ "2 Minutes": "2 minuty",
+ "2 Seconds": "2 sekundy",
+ "20 Minutes": "20 minut",
+ "4 Seconds": "4 sekundy",
+ "5 Minutes": "5 minut",
+ "8 Seconds": "8 sekund",
"Allow Negative Scores": "Povolit negativní skóre",
- "Balance Total Lives": "Rovnovážný Počet Životů",
- "Bomb Spawning": "Objevení bomby",
- "Chosen One Gets Gloves": "Vyvolený získal rukavice",
- "Chosen One Gets Shield": "Vyvolený získal štít",
- "Chosen One Time": "Čas Vyvoleného",
- "Enable Impact Bombs": "Zapnout Nárazové Bomby",
- "Enable Triple Bombs": "Zapnout Trojité Bomby",
- "Entire Team Must Finish": "Celý tým musí skončit",
- "Epic Mode": "Epický Mód",
- "Flag Idle Return Time": "Čas Návratu Neaktivní Vlajky",
- "Flag Touch Return Time": "Čas Návratu Dotknuté Vlajky",
- "Hold Time": "Čas Držení",
- "Kills to Win Per Player": "Počet Zabití pro vítězství",
+ "Balance Total Lives": "Rovnovážný počet životů",
+ "Bomb Spawning": "Vytváření bomb",
+ "Chosen One Gets Gloves": "Vyvolený získá rukavice",
+ "Chosen One Gets Shield": "Vyvolený získá štít",
+ "Chosen One Time": "Čas Vyvoleného k výhře",
+ "Enable Impact Bombs": "Povolit Nárazové Bomby",
+ "Enable Triple Bombs": "Povolit Trojité Bomby",
+ "Entire Team Must Finish": "Celý tým musí dokončit",
+ "Epic Mode": "Epický mód",
+ "Flag Idle Return Time": "Čas návratu neaktivní vlajky",
+ "Flag Touch Return Time": "Čas návratu dotknuté vlajky",
+ "Hold Time": "Čas držení",
+ "Kills to Win Per Player": "Počet zabití pro vítězství",
"Laps": "Kola",
- "Lives Per Player": "Životy na Hráče",
+ "Lives Per Player": "Životy na hráče",
"Long": "Dlouhý",
"Longer": "Delší",
- "Mine Spawning": "Přidávání Min",
- "No Mines": "Bez Min",
+ "Mine Spawning": "Přidávání min",
+ "No Mines": "Bez min",
"None": "Žádný",
"Normal": "Normální",
- "Pro Mode": "Pro(fi) mód",
- "Respawn Times": "Časy Znovuzrození",
- "Score to Win": "Skóre pro Výhru",
+ "Pro Mode": "Profi mód",
+ "Respawn Times": "Čas znovuzrození",
+ "Score to Win": "Skóre pro pýhru",
"Short": "Krátký",
"Shorter": "Kratší",
- "Solo Mode": "Sólo Mód",
+ "Solo Mode": "Sólo mód",
"Target Count": "Počet cílů",
- "Time Limit": "Časový Limit"
+ "Time Limit": "Časový limit"
},
"statements": {
- "${TEAM} is disqualified because ${PLAYER} left": "Diskvalifikuji ${TEAM} tým protože ${PLAYER} opustil hru.",
- "Killing ${NAME} for skipping part of the track!": "Zabíjím ${NAME} kvůli přeskočení části tratě!",
- "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Varování pro ${NAME}: Turbo / spamování tlačítek tě vyhodí"
+ "${TEAM} is disqualified because ${PLAYER} left": "Diskvalifikuji tým ${TEAM}, protože ${PLAYER} opouští hru.",
+ "Killing ${NAME} for skipping part of the track!": "Zabíjím ${NAME} za přeskočení části tratě!",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Varování pro ${NAME}: turbo / spamování tlačítek tě vyhodí"
},
"teamNames": {
"Bad Guys": "Padouši",
@@ -1725,144 +1850,151 @@
"Red": "Červený"
},
"tips": {
- "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Perfektně načasovaný Běh-výskok-otočka-úder může zabít na jednu ránu\na zajistit vám doživotní respekt od vašich přátel.",
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Perfektně načasovaný rozběh, výskok, otočka a úder může zabít nepřítelena\njednu ránu a zajistit Vám doživotní respekt od vašich přátel.",
"Always remember to floss.": "Nikdy nezapomeňte na zubní nit.",
"Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Vytvořte herní profily pro Vás i Vaše přátele s Vašimi\npreferovanými jmény a vzhledy místo používání náhodně generovaných.",
- "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Prokletí vás změní v časovanou bombu.\nJediná protilátka je rychle sebrat lékárničku.",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Prokletí vás změní v časovanou bombu.\nJediná záchrana je rychle sebrat lékárničku.",
"Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Kromě vzhledu mají všechny postavy stejné vlastnosti\ntakže si prostě vyberte toho, který se Vám nejvíc podobá.",
"Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Radši s tím štítem nebuďte moc namyšlení; pořád můžete vypadnout pryč z mapy.",
"Don't run all the time. Really. You will fall off cliffs.": "Nepobíhejte pořád. Vážně. Vypadnete z mapy.",
- "Don't spin for too long; you'll become dizzy and fall.": "Netoč se moc dlouho, bude ti špatně.",
- "Hold any button to run. (Trigger buttons work well if you have them)": "Pro sprint držte jakékoliv tlačítko.(Pokuď máte ovladač, fungují i ostatní tlačítka)",
- "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Držte jakékoliv tlačítko pro sprint. Budete rychlejší.¨\nAle dávejte si pozor na okraje mapy.",
- "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Ledové Bomby nejsou moc silné, ale zmrazí vše, \nčeho se dotknou, a zanechají je náchylné k rozbití.",
- "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Pokuď vás někdo chytne, udeřte ho a on vás pustí.\nTak to funguje i v reálném životě.",
- "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Pokud jste krátký na řadičích, nainstalujte '${REMOTE_APP_NAME}' app \nna svých mobilních zařízení k jejich použití jako regulátorů.",
+ "Don't spin for too long; you'll become dizzy and fall.": "Netočte se moc dlouho, bude Vám špatně.",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Pro sprint držte jakékoliv tlačítko. (spouště fungují skvěle pokud je máte)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Držte jakékoliv tlačítko pro sprint. Budete rychlejší.\nDávejte si ale pozor na okraje mapy.",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Ledové bomby nejsou moc silné, ale zmrazí vše, \nčeho se dotknou, a zanechají to náchylné k rozbití.",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Pokuď vás někdo chytne, udeřte ho a on vás pustí.\nTento trik funguje i v reálném životě.",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Pokud nemáte dost ovladačů, nainstalujte „${REMOTE_APP_NAME}“ \nna své mobilní zařízení a použijte ho jako ovladač.",
"If you are short on controllers, install the 'BombSquad Remote' app\non your iOS or Android devices to use them as controllers.": "Pokuď nemáte ovladač, nainstalujte si aplikaci 'BombSquad Remote'\nna vaše druhé zařízení a používejte ho jako ovladač.",
- "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Když se k Vám přilepí Lepivá Bomba, skákejte jako diví a točte se v kruzích.\nMožná setřesete bombu, nebo, když už nic jiného, budou Vaše poslední chvilky zajímavé.",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Když se na Vás přilepí Lepivá bomba, skákejte a točte se v kruzích. Možná\nbombu setřesete, nebo budou alespoň Vaše poslední chvilky vtipné.",
"If you kill an enemy in one hit you get double points for it.": "Pokuď někoho zabijete na jednu ránu, dostanete dvojnásobek bodů.",
- "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Pokud seberete prokletí, vaší jedinou nadějí na přežití\nje, v následujících pár sekundách, najít lékárničku.",
- "If you stay in one place, you're toast. Run and dodge to survive..": "Pokuď budete stát na místě, bude z vás toust. Běhejte a uhýbejte abyste přežili..",
- "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Jestliže máte hodně hráčů, kteří přichází a odchází, zapněte 'automatické vyhazování neaktivních hráčů'\nv nastavení, pro případ, že někdo zapomene opustit hru.",
- "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Pokud se vaše zařízení zahřívá nebo byste chtěli šetřit baterii,\nsnižte kvalitu \"Detailů\" nebo \"Rozlišení\" v Nastavení->Grafika",
- "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Pokud se vám začne sekat obraz, zkuste si snížit\n\"Rozlišení\" nebo \"Detaily\" v Nastavení->Grafika",
- "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "V Seberte Vlajku, Vaše vlajka musí být na vaší základně, abyste mohli skórovat.\nJestliže chce druhý tým skórovat, krádež jejich vlajky může být dobrý způsob jejich zastavení.",
- "In hockey, you'll maintain more speed if you turn gradually.": "V Hokeji získáte větší rychlost, když se budete točit pomalu.",
- "It's easier to win with a friend or two helping.": "Je jednodušší vyhrát když vám pomáhají přátelé.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Pokud seberete prokletí, vaší jedinou nadějí na přežití je\nv následujících pár sekundách najít lékárničku.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "Pokuď budete stát na místě, bude z Vás brzy pečínka. Běhejte a uhýbejte, abyste přežili...",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Jestliže máte hodně hráčů, kteří přichází a odchází, zapněte „automatické vyhazování neaktivních hráčů“ v nastavení, pro případ, že někdo zapomene opustit hru.",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Pokud se Vaše zařízení zahřívá nebo byste chtěli šetřit baterii,\nsnižte kvalitu „Detailů“ nebo „Rozlišení“ v Nastavení->Grafika",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Pokud se Vám začne sekat obraz, snižte kvalitu „Detailů“ nebo „Rozlišení“ v Nastavení->Grafika",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "V Seberte vlajku musí být Vaše vlajka na Vaší základně, abyste mohli skórovat.\nJestliže chce druhý tým skórovat, krádež jejich vlajky může být dobrý způsob, jak je zastavit.",
+ "In hockey, you'll maintain more speed if you turn gradually.": "V Hokeji si udržíte vyšší rychlost, když se budete točit pozvolna.",
+ "It's easier to win with a friend or two helping.": "Je jednodušší vyhrát, když Vám pomáhají přátelé.",
"Jump just as you're throwing to get bombs up to the highest levels.": "Když během házení bomby vyskočité, bomby doletí výš a dál.",
"Land-mines are a good way to stop speedy enemies.": "Miny jsou dobré na zastavení rychlých padouchů.",
- "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Spousty věcí může být sebráno a hozeno, včetně ostatních hráčů.\nVrhání Vašich nepřátel z útesu může být efektivní a emočně naplňující strategií.",
- "No, you can't get up on the ledge. You have to throw bombs.": "Ne, nemůžete lézt po římsách. Musíte házet bomby.",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Spousta věcí může být sebrána a hozena, včetně ostatních hráčů.\nVrhání Vašich nepřátel z útesu může být efektivní a emočně naplňující strategií.",
+ "No, you can't get up on the ledge. You have to throw bombs.": "Ne, na ty římsy nevylezete. Musíte házet bomby.",
"Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Hráči se mohou připojit a odpojit i v průběhu hry\na také lze během hry připojovat a odpojovat ovladače.",
- "Practice using your momentum to throw bombs more accurately.": "Vyzkoušejte si přesnější házení bomb za použití Vaší kinetické energie.",
+ "Practice using your momentum to throw bombs more accurately.": "Nacvičte si použití vlastní rychlosti, abyste házeli přesněji.",
"Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Čím rychleji se pohybujete, tím větší zranění Vaše pěsti vytvoří,\ntakže zkoušejte běhat, skákat, a točit se jako šílenec.",
"Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Běhejte tam a zpět před odhozením bomby,\nabyste se rozmáchli a odhodili ji dále.",
- "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Zabijte víc padouchů tím že\ndáte bombu hned vedle TNT.",
- "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "Hlava je nezranitelnější část, takže Lepivá Bomba\nna hlavě většinou končí koncem hry.",
- "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Tento level nikdy nezkončí, ale zdejší vysoké skóre\nnaučí hráče respektovat Vás po celém světě.",
- "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Síla hodu je založena na směru který držíte.\nPro jemné odhození něčeho přímo před Vás, nedržte žádný směr.",
- "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Unavuje vás SoundTrack? Nastavte si svůj vlastní!\nNastavení->Zvuk->Soundtrack",
- "Try 'Cooking off' bombs for a second or two before throwing them.": "Zkuste bomby chvilku držet před tím než je hodíte.",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Zabijte víc padouchů tím, že\nodpálíte bombu hned vedle TNT.",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "Hlava je nezranitelnější část, takže Lepivá bomba\nna kebuli většinou znamená konec.",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Tento level nikdy neskončí, ale vysoké skóre\nVám získá věčný respekt po celém světě.",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Síla hodu je založena na směru, který držíte.\nPro jemné odhození něčeho přímo před Vás, nedržte žádný směr.",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Unavuje vás soundtrack? Nastavte si svůj vlastní!\nNastavení->Zvuk->Soundtrack",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Zkuste bomby chvilku držet před tím, než je hodíte.",
"Try tricking enemies into killing eachother or running off cliffs.": "Obelstěte padouchy, aby se zabili navzájem nebo vypadli pryč z mapy.",
- "Use the pick-up button to grab the flag < ${PICKUP} >": "Na sebrání vlajky použijte < ${PICKUP} >",
- "Whip back and forth to get more distance on your throws..": "Švihněte sebou dozadu a dopředu abyste bombu dohodily dál..",
- "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Můžete 'mířit' svoje údery točením se doleva nebo doprava.\nJe to užitečné pro shazování padouchů z hran nebo skórování v hokeji.",
- "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Můžete usoudit kdy se bomba chystá vybouchnout podle\nbarvy jisker z její rozbušky: žlutá..oranžová..červená..BUM.",
- "You can throw bombs higher if you jump just before throwing.": "Můžete bomby házet výš když vyskočíte těsně před hodem.",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Když se o něco bouchnete hlavou.. můžete se zranit\ntak bych to být Vámi nezkoušel.",
- "Your punches do much more damage if you are running or spinning.": "Pokuď se točíte nebo běžíte tak vaše údery budou silnější."
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "Pro sebrání vlajky použijte < ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "Švihněte sebou dozadu a dopředu, abyste bombu dohodili dál...",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Můžete „mířit“ svoje údery točením se doleva nebo doprava.\nJe to užitečné pro shazování padouchů z hran nebo skórování v hokeji.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Můžete usoudit, kdy se bomba chystá vybouchnout podle\nbarvy jisker z její rozbušky: žlutá... oranžová... červená... BUM.",
+ "You can throw bombs higher if you jump just before throwing.": "Můžete bomby házet výš, když vyskočíte těsně před hodem.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Zraníte se, pokud hlavou do něčeho narazíte,\ntak bych to být Vámi nezkoušel.",
+ "Your punches do much more damage if you are running or spinning.": "Pokuď se točíte nebo běžíte, jsou vaše údery silnější."
}
},
- "trophiesRequiredText": "To vyžaduje minimálně ${NUMBER} trofeje.",
- "trophiesText": "- Trofeje",
- "trophiesThisSeasonText": "Trofeje tuto sezónu",
+ "trophiesRequiredText": "To vyžaduje minimálně ${NUMBER} pohárů.",
+ "trophiesText": "Poháry",
+ "trophiesThisSeasonText": "Poháry tuto sezónu",
"tutorial": {
- "cpuBenchmarkText": "Spuštění tutorialu ve směšné rychlosti (testuje hlavně rychlost CPU)",
- "phrase01Text": "Ahoj, ty tam!",
- "phrase02Text": "Vítejte v ${APP_NAME}u!",
- "phrase03Text": "Tady máte pár tipů jak ovládat postavu:",
- "phrase04Text": "Většina věcí v ${APP_NAME}u je založena na fyzice.",
+ "cpuBenchmarkText": "Spuštění návodu ve směšné rychlosti (testuje hlavně rychlost CPU)",
+ "phrase01Text": "Zdravíčko!",
+ "phrase02Text": "Vítejte v ${APP_NAME}!",
+ "phrase03Text": "Tady máte pár tipů, jak ovládat postavu:",
+ "phrase04Text": "Většina věcí v ${APP_NAME} je založena na fyzice.",
"phrase05Text": "Například, když někoho udeříte,...",
- "phrase06Text": "..záleží na tom jak rychlá je vaše pěst.",
- "phrase07Text": "Vidíte? Nehýbal jsem se, takže to ${NAME}e sotva bolelo.",
+ "phrase06Text": "..záleží na tom jak rychlá je Vaše pěst.",
+ "phrase07Text": "Vidíte? Nehýbal jsem se, takže to ${NAME}a sotva bolelo.",
"phrase08Text": "Teď výskok a otočka pro větší rychlost.",
- "phrase09Text": "Ha, to je lepší.",
+ "phrase09Text": "Ha, to už je lepší.",
"phrase10Text": "Běh taky pomáhá.",
- "phrase11Text": "Pro běh držte JAKÉKOLIV tlačítko.",
- "phrase12Text": "Pro super údery, zkuste běh a otočku.",
- "phrase13Text": "Ježiš, to jsem nechtěl ${NAME}i.",
- "phrase14Text": "Některé věci můžete chytit a hodit. Třeba vlajky.. nebo ${NAME}e.",
- "phrase15Text": "A to nejlepší, jsou tu bomby.",
+ "phrase11Text": "Pro běh držte libovolné tlačítko.",
+ "phrase12Text": "Pro super silné údery zkuste běh a otočku.",
+ "phrase13Text": "Jejda; promiň mi to, ${NAME}e.",
+ "phrase14Text": "Některé věci můžete chytit a hodit. Třeba vlajky... nebo ${NAME}e.",
+ "phrase15Text": "A nakonec tu jsou bomby.",
"phrase16Text": "Naučit se házet bomby zabere čas.",
"phrase17Text": "Jau! To nebyl moc dobrý hod.",
- "phrase18Text": "Pohyb vám pomůže dohodit dál.",
- "phrase19Text": "Skákání vám pomůže házet výš.",
+ "phrase18Text": "Pohyb Vám pomůže dohodit dál.",
+ "phrase19Text": "Skákání Vám pomůže házet výš.",
"phrase20Text": "Pro ještě větší vzdálenost zkuste malou otočku.",
"phrase21Text": "Správné načasovaní je dost užitečné.",
- "phrase22Text": "Krucipísek.",
+ "phrase22Text": "Sakra.",
"phrase23Text": "Zkuste si s hodem počkat vteřinku nebo dvě.",
"phrase24Text": "Hurá! Dokonale načasováno.",
- "phrase25Text": "Nu, to bude asi všechno.",
- "phrase26Text": "Teď běž, tygře!!!",
- "phrase27Text": "Pamatuj na trénink, a určitě se vrátíš živý!",
- "phrase28Text": "...teda, možná...",
+ "phrase25Text": "No, to bude asi všechno.",
+ "phrase26Text": "A teď se do nich pusťte, divochu!",
+ "phrase27Text": "Pamatujte na trénink, a určitě se vrátíte naživu!",
+ "phrase28Text": "...no, snad...",
"phrase29Text": "Přeji hodně štěstí!",
- "randomName1Text": "Lukáš",
- "randomName2Text": "Marek",
- "randomName3Text": "Daniel",
+ "randomName1Text": "Filip",
+ "randomName2Text": "Jindra",
+ "randomName3Text": "Martin",
"randomName4Text": "Matěj",
"randomName5Text": "Pepa",
- "skipConfirmText": "Opravdu chcete přeskočit Tutorial? Klikněte pro potvrzení.",
+ "skipConfirmText": "Opravdu chcete přeskočit návod? Klikněte pro potvrzení.",
"skipVoteCountText": "${COUNT}/${TOTAL} přeskočení",
- "skippingText": "Přeskakuji Tutorial...",
- "toSkipPressAnythingText": "(Stistkni cokoli pro přeskočení Tutorialu)"
+ "skippingText": "Přeskakuji návod...",
+ "toSkipPressAnythingText": "(stiskněte cokoliv pro přeskočení návodu)"
},
"twoKillText": "DVĚ ZABITÍ!!!",
+ "uiScaleText": "Velikost UI",
"unavailableText": "Nedostupné",
+ "unclaimedPrizesText": "Máte Nevyzvednuté Odměny!",
"unconfiguredControllerDetectedText": "Zaznamenán nenakonfigurovaný ovladač:",
"unlockThisInTheStoreText": "Toto musí být nejdříve odemknuto v obchodě.",
- "unlockThisProfilesText": "Pro vytvoření více než ${NUM} profilů, potřebuješ:",
- "unlockThisText": "Pro odemknutí tohoto je zapotřebí:",
+ "unlockThisProfilesText": "Pro vytvoření více než ${NUM} profilů, potřebujete:",
+ "unlockThisText": "Pro odemknutí tohoto potřebujete:",
+ "unsupportedControllerText": "Je mi líto, ovladač \"${NAME}\" není podporován.",
"unsupportedHardwareText": "Omlouváme se, ale tento hardware není porporován tímto buildem hry.",
"upFirstText": "První:",
"upNextText": "Další, ${COUNT}. hra bude:",
"updatingAccountText": "Aktualizuji Váš účet...",
"upgradeText": "Přeměnit",
- "upgradeToPlayText": "Upgradujte na \"${PRO}\" v herním obchodě, abyste toto mohli hrát.",
- "useDefaultText": "Použít Výchozí",
+ "upgradeToPlayText": "Upgradujte na „${PRO}“ v herním obchodě, abyste toto mohli hrát.",
+ "useDefaultText": "Použít výchozí",
+ "userSystemScriptsCreateText": "Vytvořit Uživatelská Systémová Skripta",
+ "userSystemScriptsDeleteText": "Smazat Uživatelská Systémová Skripta",
"usesExternalControllerText": "Tato hra používá jako vstup externí ovladač.",
- "usingItunesText": "Používám Music App pro soundtrack",
+ "usingItunesText": "Používám aplikaci hudby pro soundtrack...",
"usingItunesTurnRepeatAndShuffleOnText": "Ujistěte se prosím, že je zaplý shuffle, a opakovat VŠE v iTunes,",
- "v2AccountLinkingInfoText": "Pro propojení V2 účtů, stiskněte tlačítko 'Spravovat Účet'",
- "validatingTestBuildText": "Ověřuji Testovací Build...",
- "victoryText": "Vítězství!!!",
+ "v2AccountLinkingInfoText": "Pro propojení V2 účtů stiskněte tlačítko „Spravovat účet“",
+ "v2AccountRequiredText": "Toto vyžaduje V2 účet. Upgradujte svůj účet a zkuste to znovu.",
+ "validatingTestBuildText": "Ověřuji testovací build...",
+ "viaText": "skrze",
+ "victoryText": "Vítězství!",
"voteDelayText": "Nelze spustit další hlas za ${NUMBER} sekund",
"voteInProgressText": "Hlasování již probíhá.",
- "votedAlreadyText": "Již jste hlasoval",
+ "votedAlreadyText": "Již jste hlasovali",
"votesNeededText": "${NUMBER} hlasů potřebných",
"vsText": "vs.",
"waitingForHostText": "(čeká se na ${HOST})",
- "waitingForPlayersText": "Čeká se na jiného hráče...",
- "waitingInLineText": "Čekání ve frontě (parta plná)",
- "watchAVideoText": "Zkoukni reklamu",
- "watchAnAdText": "Zkouknout Reklamu",
+ "waitingForPlayersText": "čeká se na připojení hráčů...",
+ "waitingInLineText": "Čekání ve frontě (Parta je plná)",
+ "watchAVideoText": "Zkouknout video",
+ "watchAnAdText": "Zkouknout reklamu",
"watchWindow": {
- "deleteConfirmText": "Vymazat \"${REPLAY}\"?",
- "deleteReplayButtonText": "Vymazat\nZáznam",
+ "deleteConfirmText": "Vymazat „${REPLAY}“?",
+ "deleteReplayButtonText": "Vymazat\nzáznam",
"myReplaysText": "Moje záznamy",
"noReplaySelectedErrorText": "Nevybrán žádný záznam",
"playbackSpeedText": "Rychlost přehrávání: ${SPEED}",
- "renameReplayButtonText": "Přejmenovat\nZáznam",
- "renameReplayText": "Přejmenovat \"${REPLAY}\" na:",
+ "renameReplayButtonText": "Přejmenovat\nzáznam",
+ "renameReplayText": "Přejmenovat „${REPLAY}“ na:",
"renameText": "Přejmenovat",
"replayDeleteErrorText": "Chyba při mazání záznamu.",
- "replayNameText": "Jméno Záznamu",
+ "replayNameText": "Jméno záznamu",
"replayRenameErrorAlreadyExistsText": "Záznam s tímto jménem již existuje.",
- "replayRenameErrorInvalidName": "Nelze přejmenovat; chybné jméno.",
+ "replayRenameErrorInvalidName": "Nelze přejmenovat; nelatné jméno.",
"replayRenameErrorText": "Chyba při přejmenování záznamu.",
- "sharedReplaysText": "Sdílené Záznamy",
+ "sharedReplaysText": "Sdílené záznamy",
"titleText": "Záznamy",
- "watchReplayButtonText": "Shlédnout\nZáznam"
+ "watchReplayButtonText": "Shlédnout\nzáznam"
},
"waveText": "Vlna",
"wellSureText": "Nuže dobrá!",
@@ -1871,33 +2003,34 @@
"titleText": "DarwiinRemote Copyright"
},
"wiimoteListenWindow": {
- "listeningText": "Hledám Wiimotes...",
- "pressText": "Stiskněte současně Tlačítka Wiimote 1 a 2.",
- "pressText2": "Na novějších Wiimote ovladačích s vestavěným Motion Plus stiskněte červené 'synchroznizační' tlačítko v zadní části."
+ "listeningText": "Hledám Wiimote ovladače...",
+ "pressText": "Stiskněte současně tlačítka Wiimote 1 a 2.",
+ "pressText2": "Na novějších Wiimote ovladačích s vestavěným Motion Plus stiskněte červené synchroznizační tlačítko v zadní části."
},
"wiimoteSetupWindow": {
"copyrightText": "DarwiinRemote Copyright",
"listenText": "Poslouchat",
- "macInstructionsText": "Ujistěte se, že je Vaše Wii vyplé a Bluetooth je na vašem\nMac zařízení zaplý, a poté stistkněte 'Poslouchat'. Podpora\nWiimote může být trochu horší, a možná bude potřeba to párkrát\nzkusit, než se Vám podaří ho připojit.\n\nZařízení Bluetooth dokáže mít připojených až 7 zařízení,\nale to se může lišit\n\nBombSquad podporuje originální Wiimote, Nunchuk,\na klasický ovladač\nNovější Wii Remote Plus nyní funguje také,\nale bez přídavků.",
- "thanksText": "Děkujeme týmu DarwiinRemote,\nže tohle uskutečnili.",
+ "macInstructionsText": "Ujistěte se, že je Vaše Wii vypnuté a Bluetooth je na vašem\nMacu zapnutý, a poté stistkněte 'Poslouchat'. Podpora\nWiimote může být trochu horší, a možná to bude potřeba párkrát\nzkusit, než se Vám ho podaří připojit.\n\nBluetooth by měl zvládnout až 7 připojených zařízení,\nale to se může lišit.\n\nBombSquad podporuje originální Wiimote, Nunčak,\na Classic Controller.\nNovější Wii Remote Plus nyní funguje také,\nale bez příslušenství.",
+ "thanksText": "Děkujeme týmu DarwiinRemote,\nže toto umožnil.",
"titleText": "Nastavení Wiimote"
},
- "winsPlayerText": "${NAME} Vyhrál!",
- "winsTeamText": "${NAME} Vyhrál!",
- "winsText": "${NAME} Vyhrál!",
+ "winsPlayerText": "${NAME} Vítězí!",
+ "winsTeamText": "${NAME} Vítězí!",
+ "winsText": "${NAME} Vítězí!",
"workspaceSyncErrorText": "Chyba synchronizace ${WORKSPACE}. Podrobnosti v logu.",
- "workspaceSyncReuseText": "Nelze synchronizovat ${WORKSPACE}. Opětovné použití předchozí synchronizované verze.",
+ "workspaceSyncReuseText": "Nelze synchronizovat ${WORKSPACE}. Používám předchozí synchronizovanou verzi.",
"worldScoresUnavailableText": "Světové skóre nepřístupné.",
"worldsBestScoresText": "Světové nejlepší skóre",
"worldsBestTimesText": "Světové nejlepší časy",
"xbox360ControllersWindow": {
"getDriverText": "Získat Driver",
- "macInstructions2Text": "Pro bezdrátové použití ovladače také potřebujete příjmač, který\nje součástí 'Xbox 360 Wireless Controller for Windows'.\nJeden příjmač dovoluje připojit až 4 zařízení.\n\nDůležité: příjmače třetích stran s tímto driverem nebudou fungovat;\nujistěte se, že je na Vašem příjmači 'Microsoft' a ne 'XBOX 360'.\nMicrosoft už tyto příjmače neprodává samostatně, takže budete muset\njeden koupit s ovladačem dohromady, nebo hledat na ebay.\n\nJestliže je pro Vás toto užitečné, zvažte prosím přispění \ntvůrci driveru na jeho stránce.",
- "macInstructionsText": "Pro použití ovladače Xbox 360, potřebujete nainstalovat\nMac Driver který naleznete na odkazu napsaném níže.\nFunguje s drátovou i s bezdrátovou verzí ovladače.",
- "ouyaInstructionsText": "Pro použití kabelových Xbox 360 ovladačů pro BombSquad, je jednoduše\npřipojte do USB portu vašeho zařízení. Můžete použít USB hub\npro připojení více ovladačů.\n\nPro použití bezdrátových ovladačů budete potřebovat bezdrátový příjmač,\ndostupný jako součást \"Xbox 360 wirelles Controller for Windows\"\nbalíčku nebo prodávaného samostatně. Každý příjmač zapojíte do USB portu\na každý z nich Vám dovolí připojit až 4 bezdrátové ovladače.",
- "titleText": "Hrát ${APP_NAME} s ovladačem Xbox 360:"
+ "macInstructions2Text": "Pro bezdrátové použití ovladače také potřebujete příjmač, který\nje součástí Xbox 360 bezdrátového ovladače pro Windows.\nJeden příjmač umožňuje připojit až 4 zařízení.\n\nDůležité: Příjmače třetích stran s tímto driverem nebudou fungovat;\nujistěte se, že je na Vašem příjmači „Microsoft“ a ne „XBOX 360“.\nMicrosoft už tyto příjmače neprodává samostatně, takže jej budete\nmuset koupit s ovladačem dohromady, nebo hledat na eBay.\n\nJestliže je pro Vás toto užitečné, zvažte prosím přispění \ntvůrci driveru na jeho stránce.",
+ "macInstructionsText": "Pro použití ovladače Xbox 360 musíte nainstalovat\nMac Driver, který naleznete na odkazu níže.\nFunguje s drátovou i s bezdrátovou verzí ovladače.",
+ "ouyaInstructionsText": "Pro použití kabelových Xbox 360 ovladačů s BombSquad je jednoduše\npřipojte do USB portu vašeho zařízení. Můžete použít USB hub\npro připojení více ovladačů.\n\nPro použití bezdrátových ovladačů budete potřebovat bezdrátový příjmač,\ndostupný jako součást balíčku „Xbox 360 bezdrátového ovladače pro Windows“\nnebo prodávaný samostatně. Každý příjmač zapojíte do USB portu\na každý z nich Vám dovolí připojit až 4 bezdrátové ovladače.",
+ "titleText": "Použidí ovladačů Xbox 360 s ${APP_NAME}:"
},
- "yesAllowText": "Ano, Povolit!",
+ "yesAllowText": "Ano, povolit!",
"yourBestScoresText": "Vaše nejlepší skóre",
- "yourBestTimesText": "Váš nejlepší čas"
+ "yourBestTimesText": "Váš nejlepší čas",
+ "yourPrizeText": "Vaše cena:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/danish.json b/dist/ba_data/data/languages/danish.json
index 0a31603c..69542308 100644
--- a/dist/ba_data/data/languages/danish.json
+++ b/dist/ba_data/data/languages/danish.json
@@ -1616,7 +1616,7 @@
"macInstructions2TextScale": 0.76,
"macInstructionsText": "For at bruge Xbox 360-controllere skal du installere en\nMacdriver, der er tilgængelig i linket herunder.\nDet virker både med controllere med og uden ledninger.",
"macInstructionsTextScale": 0.8,
- "ouyaInstructionsText": "For at bruge Xbox 360-controllere til BombSquad, tilslut dem din enheds USB-port.\nDu kan bruge en USB-hub\ntil at forbinde flere controllere. \n\nFor at bruge trådløse controllere skal du bruge en trådløs modtager,\ntilgængelig som en del af \"Xbox 360 wireless Controller for Windows\"-\npakken eller solgt seperat. Hver modtager puttes ind i en USB port\nog tillader dig at forbinde op til 4 trådløse controllers.",
+ "ouyaInstructionsText": "For at bruge Xbox 360-controllere til BombSquad, tilslut dem din enheds USB-port.\nDu kan bruge en USB-hub\ntil at forbinde flere controllere. \n\nFor at bruge trådløse controllere skal du bruge en trådløs modtager,\ntilgængelig som en del af \"Xbox 360 wireless Controller for Windows\"-\npakken eller solgt seperat. Hver modtager puttes ind i en USB port\nog tillader dig at forbinde op til 4 trådløse controllers. ",
"ouyaInstructionsTextScale": 0.8,
"titleText": "Hvordan man bruger Xbox 360-controllere med BombSquad:"
},
diff --git a/dist/ba_data/data/languages/dutch.json b/dist/ba_data/data/languages/dutch.json
index a706cfcb..e63784a5 100644
--- a/dist/ba_data/data/languages/dutch.json
+++ b/dist/ba_data/data/languages/dutch.json
@@ -7,8 +7,11 @@
"campaignProgressText": "Campagne Voortgang [Moeilijk]: ${PROGRESS}",
"changeOncePerSeason": "U kunt dit maar een keer per seizoen wijzigen.",
"changeOncePerSeasonError": "U moet wachten tot het volgende seizoen om dit te veranderen (${NUM} dagen)",
+ "createAnAccountText": "Maak een account",
"customName": "Aangepaste naam",
+ "deleteAccountText": "Verwijder Account",
"deviceSpecificAccountText": "U gebruikt nu het apparaat-specifieke account: ${NAME}",
+ "googlePlayGamesAccountSwitchText": "Als je een ander Google-account \nwilt gebruiken, gebruik dan de Google Play Games-app om over te schakelen.",
"linkAccountsEnterCodeText": "Voer Code In",
"linkAccountsGenerateCodeText": "Genereer Code",
"linkAccountsInfoText": "(deel voortgang over verschillende platformen)",
@@ -16,6 +19,7 @@
"linkAccountsInstructionsText": "Om twee accounts te koppelen, genereer je bij een\ndaar van een code die je invult bij de ander.\nVoortgang en inventaris worden dan samengevoegd.\nJe kan maximaal ${COUNT} accounts koppelen.\n\nBELANGRIJK: Koppel alleen accounts die jij bezit!\nAls je accounts van vrienden koppelt kan je niet \nmeer tegelijkertijd spelen!\n\nOok: Dit kan momenteel niet ongedaan gemaakt worden, dus pas op!",
"linkAccountsText": "Koppel Accounts",
"linkedAccountsText": "Verbonden Accounts:",
+ "manageAccountText": "Beheer account",
"nameChangeConfirm": "Verander je account naam naar ${NAME}?",
"notLoggedInText": "",
"resetProgressConfirmNoAchievementsText": "Dit reset uw co-op campagne voortgang en\nlokale high-scores (maar niet uw tickets).\nDit kan niet ongedaan worden gemaakt. Weet u het zeker?",
@@ -24,15 +28,17 @@
"setAccountName": "Stel account naam in",
"setAccountNameDesc": "Selecteer de naam om weer te geven voor uw account.\nU kan de naam gebruiken van een van de verbonden accounts\nof maak een unieke naam aan.",
"signInInfoText": "Log in om tickets te verzamelen, online te concurreren,\nen om je voortgang te delen tussen apparaten.",
- "signInText": "Log In",
+ "signInText": "Inloggen",
+ "signInWithAnEmailAddressText": "Inloggen met e-mailadres",
"signInWithDeviceInfoText": "(een automatisch account is alleen beschikbaar op dit apparaat)",
- "signInWithDeviceText": "Log in met apparaat account",
+ "signInWithDeviceText": "Inloggen met apparaat account",
"signInWithGameCircleText": "Log in met Game Circle",
"signInWithGooglePlayText": "Log in met Google Play",
"signInWithTestAccountInfoText": "(oudere account type; gebruik device account gaat door)",
"signInWithTestAccountText": "Log in met test account",
+ "signInWithText": "Inloggen met ${SERVICE}",
"signInWithV2InfoText": "(een account dat op alle platforms werkt)",
- "signInWithV2Text": "Inloggen met een BombSquad rekening",
+ "signInWithV2Text": "Inloggen met een ${APP_NAME} account",
"signOutText": "Log Uit",
"signingInText": "Inloggen...",
"signingOutText": "Uitloggen...",
@@ -43,6 +49,7 @@
"titleText": "Profiel",
"unlinkAccountsInstructionsText": "Selecteer een account om los te koppelen.",
"unlinkAccountsText": "Koppel accounts los.",
+ "unlinkLegacyV1AccountsText": "Ontkoppel oude (V1) accounts",
"v2LinkInstructionsText": "Gebruik deze link om een account aan te maken of in te loggen.",
"viaAccount": "(via account ${NAME})",
"youAreLoggedInAsText": "Je bent ingelogd als:",
@@ -332,13 +339,19 @@
"achievementsRemainingText": "Resterende Prestaties:",
"achievementsText": "Prestaties",
"achievementsUnavailableForOldSeasonsText": "Sorry, prestatie gegevens voor oude seizoenen zijn niet beschikbaar.",
+ "activatedText": "${THING} geactiveerd.",
"addGameWindow": {
"getMoreGamesText": "Verkrijg Meer Spellen...",
"titleText": "Voeg Game toe"
},
+ "addToFavoritesText": "Toevoegen aan favorieten",
+ "addedToFavoritesText": "'${NAME}' toegevoegd aan Favorieten.",
+ "allText": "Alle",
"allowText": "Toestaan",
"alreadySignedInText": "Uw account is al ingelogd op een ander apparaat;\nVerander van account of sluit het spel op uw andere\napparaten en probeer het opnieuw.",
"apiVersionErrorText": "Kan module ${NAME} niet laden; deze gebruikt api-versie ${VERSION_USED}; benodigd is ${VERSION_REQUIRED}.",
+ "applyText": "Toepassen",
+ "areYouSureText": "Weet je het zeker?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" activeert dit alleen als een koptelefoon is aangesloten)",
"headRelativeVRAudioText": "Hoofd-Relatieve VR Geluid",
@@ -363,14 +376,24 @@
"boostText": "Boost",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} is geconfigureerd in de app zelf.",
"buttonText": "knop",
- "canWeDebugText": "Wilt u dat BombSquad automatisch bugs, crashes,\nen basisgebruik info naar de ontwikkelaar rapporteert?\n\nDeze gegevens bevatten geen persoonlijke informatie\nen helpen om het spel soepel en bug-vrij te houden.",
+ "canWeDebugText": "Wilt u dat ${APP_NAME} automatisch bugs, crashes,\nen basisgebruik info naar de ontwikkelaar rapporteert?\n\nDeze gegevens bevatten geen persoonlijke informatie\nen helpen om het spel soepel en bug-vrij te houden.",
"cancelText": "Annuleer",
"cantConfigureDeviceText": "Sorry, $ {DEVICE} niet configureerbaar.",
"challengeEndedText": "Deze uitdaging is beëindigd.",
"chatMuteText": "Chat negeren",
"chatMutedText": "berichten gedempt",
"chatUnMuteText": "maak de chat ongedaan",
+ "chests": {
+ "prizeOddsText": "Prijs Kansen",
+ "reduceWaitText": "Verminder Wachttijd",
+ "slotDescriptionText": "Hier is plek voor een schatkist.\n\nVerdien schatkisten door campagnelevels te spelen,\nje te plaatsen in toernooien en met het voltooien\nvan prestaties.",
+ "slotText": "Schatkist plaats ${NUM}",
+ "slotsFullWarningText": "WAARSCHUWING: Al je schatkist plaatsen zijn vol.\nElke schatkist die je dit spel nog verdient, gaat verloren.",
+ "unlocksInText": "Ontgrendeld Over"
+ },
"choosingPlayerText": "",
+ "claimText": "Claim",
+ "codesExplainText": "Codes worden door de \nontwikkelaar verstrekt om accountproblemen te diagnosticeren en te corrigeren.",
"completeThisLevelToProceedText": "U moet dit level voltooien\nom door te gaan!",
"completionBonusText": "Voltooiing Bonus",
"configControllersWindow": {
@@ -454,6 +477,7 @@
"titleText": "Configureer Touchscreen",
"touchControlsScaleText": "Touch Besturing Schalen"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} kan worden geconfigureerd in de Systeeminstellingen-app.",
"configureItNowText": "Nu configureren?",
"configureText": "Configureren",
"connectMobileDevicesWindow": {
@@ -509,6 +533,7 @@
"welcome2Text": "U kunt ook tickets verdienen van veel van dezelfde activiteiten.\nTickets kunnen gebruikt worden om mee te doen aan toernooien,\nvoor het vrijspelen van nieuwe karakters, speelvelden, mini-spellen en meer.",
"yourPowerRankingText": "Uw Macht Klassement:"
},
+ "copyConfirmText": "Gekopieerd naar het klembord.",
"copyOfText": "${NAME} Kopie",
"copyText": "Kopiëren",
"copyrightText": "© 2013 Eric Froemling",
@@ -562,7 +587,10 @@
"deleteText": "Verwijder",
"demoText": "demonstratie",
"denyText": "Weigeren",
+ "deprecatedText": "Verouderd",
+ "descriptionText": "Beschrijving",
"desktopResText": "Bureaublad Resolutie",
+ "deviceAccountUpgradeText": "Waarschuwing: u bent ingelogd met een apparaataccount (${NAME}). \nApparaataccounts worden in een toekomstige update verwijderd. \nUpgrade naar een V2-account als u uw voortgang wilt \nbehouden.",
"difficultyEasyText": "Makkelijk",
"difficultyHardOnlyText": "Alleen moeilijk",
"difficultyHardText": "Moeilijk",
@@ -571,6 +599,10 @@
"disableRemoteAppConnectionsText": "Schakel Afstandsbediening-App connecties uit",
"disableXInputDescriptionText": "Staat meer dan 4 controllers toe, maar werkt misschien niet helemaal goed.",
"disableXInputText": "Schakel XInput uit",
+ "disabledText": "Gehandicapt",
+ "discardText": "Gooi weg",
+ "discordFriendsText": "Wil je op zoek naar nieuwe mensen om mee te spelen? \nSluit je aan bij onze Discord en vind nieuwe vrienden!",
+ "discordJoinText": "Sluit je aan bij de onenigheid",
"doneText": "Klaar",
"drawText": "Gelijk",
"duplicateText": "Kopieer",
@@ -605,6 +637,7 @@
"localProfileText": "(lokaal profiel)",
"nameDescriptionText": "Speler Naam",
"nameText": "Naam",
+ "profileAlreadyExistsText": "Een profiel met dat naam bestaat al.",
"randomText": "willekeurig",
"titleEditText": "Profiel Aanpassen",
"titleNewText": "Nieuw Profiel",
@@ -644,15 +677,20 @@
"useMusicFolderText": "Map met Muziek Bestanden"
},
"editText": "Bewerk",
+ "enabledText": "Ingeschakeld",
"endText": "Einde",
"enjoyText": "Geniet!",
"epicDescriptionFilterText": "${DESCRIPTION} In epische slow motion.",
"epicNameFilterText": "Epische ${NAME}",
"errorAccessDeniedText": "toegang geweigerd",
+ "errorDeviceTimeIncorrectText": "De tijd van je apparaat is ${HOURS} uur \nonjuist. Dit zal waarschijnlijk problemen \nveroorzaken. Controleer uw tijd- en tijdzone-instellingen.",
"errorOutOfDiskSpaceText": "schuifruimte vol",
+ "errorSecureConnectionFailText": "Kan geen veilige cloudverbinding tot stand brengen; netwerkfunctionaliteit kan mislukken.",
"errorText": "Fout",
"errorUnknownText": "onbekende fout",
"exitGameText": "${APP_NAME} Verlaten?",
+ "expiredAgoText": "${T} geleden verlopen",
+ "expiresInText": "Verloopt over ${T}",
"exportSuccessText": "'${NAME}' geëxporteerd.",
"externalStorageText": "Externe Opslag",
"failText": "Faal",
@@ -689,6 +727,8 @@
"editText": "Bewerk\nSpeellijst",
"gameListText": "Spellen Lijst",
"newText": "Nieuwe\nSpeellijst",
+ "pointsToWinText": "Punten om te winnen",
+ "seriesLengthText": "Series lengte",
"showTutorialText": "Uitleg Weergeven",
"shuffleGameOrderText": "Willekeurige Spel Volgorde",
"titleText": "Pas ${TYPE} Speellijst aan"
@@ -717,6 +757,7 @@
"copyCodeConfirmText": "Code gekopieerd naar klembord",
"copyCodeText": "Kopieer Code",
"dedicatedServerInfoText": "Voor het beste resultaat, zet dan een dedicated server op. Zie bombsquadgame.com/server om te leren hoe.",
+ "descriptionShortText": "Gebruik het Verzamel venster om een partij samen te stellen",
"disconnectClientsText": "Hierdoor verbreekt de verbinding met ${COUNT} spelers(s)\nvan uw partij. Weet u het zeker?",
"earnTicketsForRecommendingAmountText": "Vrienden ontvangen ${COUNT} tickets als ze het spel proberen\n(en jij ontvangt ${YOU_COUNT} voor elke vriend die dit doet)",
"earnTicketsForRecommendingText": "Deel de game \nVoor gratis tickets...",
@@ -729,10 +770,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} tickets van ${NAME}",
"friendPromoCodeAwardText": "Je krijgt ${COUNT} tickets elke keer het is gebruikt.",
"friendPromoCodeExpireText": "Deze code zal vervallen in ${EXPIRE_HOURS} uren en werkt alleen met nieuwe spelers.",
- "friendPromoCodeInstructionsText": "Om het te gebruiken, open je ${APP_NAME} en ga je naar 'Instellingen-> Geavanceerd-> Voer code in'.\nZie bombsquadgame.com voor downloadlinks voor alle ondersteunde platforms.",
+ "friendPromoCodeInstructionsText": "Om het te gebruiken, open je ${APP_NAME} en ga je naar 'Instellingen-> Geavanceerd-> Stuur info'.\nZie bombsquadgame.com voor downloadlinks voor alle ondersteunde platforms.",
"friendPromoCodeRedeemLongText": "Het kan ingewisseld worden voor ${COUNT} gratis tickets met tot en met ${MAX_USES} mensen.",
"friendPromoCodeRedeemShortText": "Het kan ingewisseld worden voor ${COUNT} in het spel",
- "friendPromoCodeWhereToEnterText": "(in \"Instellingen-> Geavanceerd-> Voer code in\")",
+ "friendPromoCodeWhereToEnterText": "(in \"Instellingen-> Geavanceerd-> Stuur info\")",
"getFriendInviteCodeText": "Krijg een uitnodigingscode",
"googlePlayDescriptionText": "Nodig Google Play spelers uit voor uw partij:",
"googlePlayInviteText": "Uitnodigen",
@@ -764,6 +805,7 @@
"manualYourLocalAddressText": "Uw lokale adres:",
"nearbyText": "Dichtbij",
"noConnectionText": "",
+ "noPartiesAddedText": "Geen partijen toegevoegd",
"otherVersionsText": "(andere versies)",
"partyCodeText": "Partijcode",
"partyInviteAcceptText": "Accepteren",
@@ -837,16 +879,26 @@
"youHaveShortText": "Je hebt ${COUNT}",
"youHaveText": "U heeft ${COUNT} tickets"
},
+ "goldPass": {
+ "desc1InfTokensText": "Oneindig tokens.",
+ "desc2NoAdsText": "Geen reclame.",
+ "desc3ForeverText": "Voor altijd.",
+ "goldPassText": "Goud pas"
+ },
"googleMultiplayerDiscontinuedText": "Sorry, de Google Play multi-player functie is nu even niet beschikbaar. \nIk werk hard aan een vervanger. \nProbeer nu alsjeblieft een andere connectie mogelijkheid.\n-Eric",
+ "googlePlayPurchasesNotAvailableText": "Google Play-aankopen zijn niet beschikbaar. \nMogelijk moet u uw winkel-app updaten.",
+ "googlePlayServicesNotAvailableText": "Google Play-services zijn niet beschikbaar. \nSommige app-functionaliteit is mogelijk uitgeschakeld.",
"googlePlayText": "Google Play",
"graphicsSettingsWindow": {
"alwaysText": "Altijd",
"fullScreenCmdText": "Volledig scherm (Cmd-F)",
"fullScreenCtrlText": "Volledig scherm (Cmd-F)",
+ "fullScreenText": "Volledig scherm",
"gammaText": "Gamma",
"highText": "Hoog",
"higherText": "Hoger",
"lowText": "Laag",
+ "maxFPSText": "Maximale FPS",
"mediumText": "Gemiddeld",
"neverText": "Nooit",
"resolutionText": "Resolutie",
@@ -858,7 +910,7 @@
"visualsText": "Visuele"
},
"helpWindow": {
- "bombInfoText": "- Bom -\nSterker dan slagen, maar kan\nresulteren in ernstige zelfverwonding.\nVoor het beste resultaat, gooi richting\nvijand voordat lont op raakt.",
+ "bombInfoText": "- Bom -\nSterker dan slaan, maar kan\nresulteren in ernstige zelfverwonding.\nVoor het beste resultaat, gooi richting\nvijand voordat de lont op raakt.",
"canHelpText": "${APP_NAME} kan helpen.",
"controllersInfoText": "U kan ${APP_NAME} spelen met vrienden via een netwerk, of u\nkan het allemaal op hetzelfde apparaat spelen als u genoeg controllers hebt.\n${APP_NAME} ondersteunt er een verscheidenheid van; u kunt zelfs uw telefoons\nals controller gebruiken met de gratis '${REMOTE_APP_NAME}' app.\nZie Instellingen->Controllers voor meer info.",
"controllersInfoTextFantasia": "Een speler kan de afstandbediening gebruiken als controller,\nmaar gamepads zijn sterk aanbevolen. Je kunt ook mobiele-apparaten\ngebruiken als controllers via de gratis 'Bombsquad Remote' app.\nZie 'Controllers' onder 'Instellingen' voor meer info.",
@@ -874,7 +926,7 @@
"friendsText": "Vrienden",
"jumpInfoText": "- Springen -\nSpring over kleine openingen,\nom dingen hoger te gooien, en om\ngevoelens van vreugde uit te drukken.",
"orPunchingSomethingText": "Of iets slaan, van een klif gooien, en op de weg naar beneden opblazen met een kleverige bom.",
- "pickUpInfoText": "- Op Pakken -\nPak vlaggen, vijanden, of iets\nanders niet vastgeschroefd aan de\ngrond. Druk opnieuw om te gooien.",
+ "pickUpInfoText": "- Op Pakken -\nPak vlaggen, vijanden, of iets\nanders dat niet vast zit aan de\ngrond. Druk opnieuw om te gooien.",
"powerupBombDescriptionText": "Laat u drie bommen opzwepen\nachter elkaar in plaats van maar een.",
"powerupBombNameText": "Drievoudige-Bommen",
"powerupCurseDescriptionText": "Waarschijnlijk wilt u deze te vermijden.\n ...of toch niet?",
@@ -910,6 +962,7 @@
"importText": "Importeer",
"importingText": "Aan het importeren...",
"inGameClippedNameText": "zal in-game worden\n\"${NAME}\"",
+ "inboxText": "Inbox",
"installDiskSpaceErrorText": "FOUT: Niet in staat om de installatie te voltooien.\nHet kan zijn dat er gaan ruimte meer is op uw apparaat.\nMaak wat vrij en probeer opnieuw.",
"internal": {
"arrowsToExitListText": "druk ${LEFT} of ${RIGHT} om de lijst te verlaten",
@@ -966,12 +1019,14 @@
"touchScreenJoinWarningText": "U doet mee met een aanraakscherm.\nAls dit een vergissing was, druk er mee op 'Menu->Verlaat Spel'.",
"touchScreenText": "TouchScreen",
"trialText": "proefperiode",
+ "unableToCompleteTryAgainText": "Voltooien op dit moment mislukt.\nProbeer het later nog eens.",
"unableToResolveHostText": "Error: kan de host niet resolven.",
"unavailableNoConnectionText": "Dit is momenteel niet beschikbaar (geen internet verbinding?)",
"vrOrientationResetCardboardText": "Hiermee reset je de VR oriëntatie.\nOm het spel te spelen heb je een externe controller nodig.",
"vrOrientationResetText": "VR oriëntatie reset.",
"willTimeOutText": "(totdat u inactief bent)"
},
+ "inventoryText": "Inventaris",
"jumpBoldText": "SPRING",
"jumpText": "Spring",
"keepText": "houd",
@@ -1018,8 +1073,11 @@
"seasonEndsMinutesText": "Seizoen eindigt in ${NUMBER} minuten.",
"seasonText": "Seizoen ${NUMBER}",
"tournamentLeagueText": "Haal de ${NAME} competitie om aan dit toernooi mee te doen.",
- "trophyCountsResetText": "Trofee telling reset in het volgende seizoen."
+ "trophyCountsResetText": "Trofee telling reset in het volgende seizoen.",
+ "upToDateBonusDescriptionText": "Spelers met een recente versie van het\nspel krijgen hier een ${PERCENT}% bonus.",
+ "upToDateBonusText": "Up-To-Date Bonus"
},
+ "learnMoreText": "Meer informatie",
"levelBestScoresText": "Beste scores voor ${LEVEL}",
"levelBestTimesText": "Beste tijden voor ${LEVEL}",
"levelFastestTimesText": "Snelste tijden in ${LEVEL}",
@@ -1041,6 +1099,7 @@
"creditsText": "Credits",
"demoMenuText": "Voorbeeld Menu",
"endGameText": "Beëindig Spel",
+ "endTestText": "Einde proef",
"exitGameText": "Verlaat Spel",
"exitToMenuText": "Verlaat naar menu?",
"howToPlayText": "Hoe te Spelen",
@@ -1061,9 +1120,12 @@
"maxConnectionsText": "Max Connecties",
"maxPartySizeText": "Max Partij Grootte",
"maxPlayersText": "Max Spelers",
+ "merchText": "Koopwaar!",
"modeArcadeText": "Speelhal Modus",
"modeClassicText": "Klassieke Modus",
"modeDemoText": "Demo Modus",
+ "moreSoonText": "Binnenkort meer...",
+ "mostDestroyedPlayerText": "Meest Vernietigde Speler",
"mostValuablePlayerText": "Meest Waardevolle Speler",
"mostViolatedPlayerText": "Meest Geschonden Speler",
"mostViolentPlayerText": "Meest Gewelddadige Speler",
@@ -1080,6 +1142,7 @@
"nameSuicideText": "${NAME} pleegde zelfmoord.",
"nameText": "Naam",
"nativeText": "van apparaat",
+ "newExclaimText": "Nieuw!",
"newPersonalBestText": "Nieuw persoonlijk record!",
"newTestBuildAvailableText": "Er is een nieuwere testversie beschikbaar! (${VERSION} build ${BUILD}).\nDownload hier ${ADDRESS}",
"newText": "Nieuw",
@@ -1091,17 +1154,22 @@
"noExternalStorageErrorText": "Geen externe opslag gevonden op dit apparaat",
"noGameCircleText": "Fout: niet aangemeld bij GameCircle",
"noJoinCoopMidwayText": "Je kan niet halverwegen inspringen bij coöperatieve spellen.",
+ "noMessagesText": "Geen berichten.",
+ "noPluginsInstalledText": "Geen plug-ins geïnstalleerd",
"noProfilesErrorText": "U heeeft geen speler profielen, dus zit u vast aan '${NAME}'.\nGa naar Instellingen->Speler Profielen om een profiel te maken voor uzelf.",
"noScoresYetText": "Nog geen scores.",
+ "noServersFoundText": "Geen servers gevonden.",
"noThanksText": "Nee Bedankt",
"noTournamentsInTestBuildText": "PAS OP: De punten van deze test tournament worden niet meegerekend.",
"noValidMapsErrorText": "Geen geldige gebieden gevonden voor dit speltype.",
"notEnoughPlayersRemainingText": "Niet genoeg spelers over; stop en start een nieuw spel.",
"notEnoughPlayersText": "U heeft minstens ${COUNT} spelers nodig om dit spel te starten!",
+ "notEnoughTicketsText": "Onvoldoende tickets!",
"notNowText": "Niet Nu",
"notSignedInErrorText": "Je moet inloggen om dit te doen.",
"notSignedInGooglePlayErrorText": "Je moet ingelogd zijn met Google Play om dit te doen.",
"notSignedInText": "niet ingelogd",
+ "notUsingAccountText": "Opmerking: ${SERVICE}-account negeren. \nGa naar 'Account -> Inloggen met ${SERVICE}' als je hier gebruik van wilt maken.",
"nothingIsSelectedErrorText": "Er is niks geselecteerd!",
"numberText": "#${NUMBER}",
"offText": "Uit",
@@ -1109,6 +1177,9 @@
"onText": "Aan",
"oneMomentText": "Een Moment..",
"onslaughtRespawnText": "${PLAYER} zal respawnen in golf ${WAVE}",
+ "openMeText": "Maak Mij Open!",
+ "openNowText": "Nu Openen",
+ "openText": "Openen",
"orText": "${A} of ${B}",
"otherText": "Andere ...",
"outOfText": "(#${RANK} van de ${ALL})",
@@ -1163,7 +1234,14 @@
"playlistsText": "Speellijsten",
"pleaseRateText": "Als u geniet van ${APP_NAME}, zou u dan een moment willen\nnemen om een waardering te geven of recensie te schrijven.\nDit geeft ons nuttige feedback voor toekomstige ontwikkelingen.\n\nBedankt!\n-eric",
"pleaseWaitText": "Even geduld...",
+ "pluginClassLoadErrorText": "Fout bij het laden van plug-inklasse '${PLUGIN}': ${ERROR}",
+ "pluginInitErrorText": "Fout bij het starten van plug-in '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Plugin-instellingen",
+ "pluginsAutoEnableNewText": "Schakel nieuwe plug-ins automatisch in",
"pluginsDetectedText": "Nieuw contact gedecteerd. Schakel in/configureer in de instellingen.",
+ "pluginsDisableAllText": "Schakel alle plug-ins uit",
+ "pluginsEnableAllText": "Schakel alle plug-ins in",
+ "pluginsRemovedText": "${NUM} plug-in(s) niet meer gevonden.",
"pluginsText": "Contacten",
"practiceText": "Oefenen",
"pressAnyButtonPlayAgainText": "Druk een knop om opnieuw te spelen...",
@@ -1195,6 +1273,8 @@
"punchText": "Slaan",
"purchaseForText": "Koop voor ${PRICE}",
"purchaseGameText": "Koop Spel",
+ "purchaseNeverAvailableText": "Sorry, aankopen zijn niet beschikbaar voor deze build.\nProbeer in te loggen op uw account op een ander platform en daar aankopen te doen.",
+ "purchaseNotAvailableText": "Deze aankoop is niet beschikbaar.",
"purchasingText": "Aanschaffen...",
"quitGameText": "${APP_NAME} Verlaten?",
"quittingIn5SecondsText": "Sluiten in 5 seconden...",
@@ -1237,6 +1317,7 @@
"version_mismatch": "Versie ongelijk.\nZorg er voor dat BombSquad en BombSquad Afstandsbediening\nde nieuwste versie zijn en probeer het opnieuw."
},
"removeInGameAdsText": "Koop \"${PRO}\" in de winkel om de in-game advertenties te verwijderen.",
+ "removeInGameAdsTokenPurchaseText": "TIJDELIJK AANBOD: Koop een willekeurig token paket om de in-game advertenties te verwijderen.",
"renameText": "Hernoemen",
"replayEndText": "Stop Herhaling",
"replayNameDefaultText": "Herhaling Laatste Spel",
@@ -1259,6 +1340,8 @@
"runText": "Ren",
"saveText": "Opslaan",
"scanScriptsErrorText": "Fout(en) bij inlezen scripts; zie log voor details.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} en ${NUM} andere module(s) moeten worden bijgewerkt voor api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} moet worden bijgewerkt voor API ${API}.",
"scoreChallengesText": "Score Uitdagingen",
"scoreListUnavailableText": "Score lijst niet beschikbaar.",
"scoreText": "Score",
@@ -1269,6 +1352,7 @@
},
"scoreWasText": "(was ${COUNT})",
"selectText": "Selecteren",
+ "sendInfoDescriptionText": "Stuurt account en app status info naar de developer. \nVergeet niet je naam of reden voor het sturen.",
"seriesWinLine1PlayerText": "WINT DE",
"seriesWinLine1TeamText": "WINT DE",
"seriesWinLine1Text": "WINT DE",
@@ -1285,9 +1369,10 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(een simpele, controller-vriendelijke toetsenbord op het scherm voor tekstbewerking)",
- "alwaysUseInternalKeyboardText": "Gebruik altijd Interne Toetsenbord",
+ "alwaysUseInternalKeyboardText": "Gebruik altijd interne toetsenbord",
"benchmarksText": "Maatstaven en Stress-Testen",
- "disableCameraGyroscopeMotionText": "Schakel de Camera Gyroscoop beweging uit",
+ "devToolsText": "Dev Tools",
+ "disableCameraGyroscopeMotionText": "Schakel de camera gyroscoop beweging uit",
"disableCameraShakeText": "Schakel schuddende camera uit",
"disableThisNotice": "(U kunt deze melding uitschakelen in de geavanceerde instellingen)",
"enablePackageModsDescriptionText": "(Geeft extra aanpassingsmogelijkheden maar deactiveert net-spel)",
@@ -1296,15 +1381,23 @@
"forTestingText": "Let op: deze waarden zijn alleen voor testen en zullen verloren gaan als de app gesloten wordt.",
"helpTranslateText": "${APP_NAME}'s niet-Engelse vertalingen is een gezamenlijke\ninspanning van de gemeenschap. Als u daar aan wilt bijdragen of een vertaling\nwilt corrigeren, klik dan op de link hieronder. Bij voorbaat dank!",
"helpTranslateTextScale": 1.0,
- "kickIdlePlayersText": "Verstoot Afwezige Spelers",
+ "insecureConnectionsDescriptionText": "niet aanbevolen, maar zou online spelen kunnen toestaan\nvanuit beperkte landen en netwerken",
+ "insecureConnectionsText": "Gebruik onveilige connecties",
+ "kickIdlePlayersText": "Verstoot afwezige spelers",
"kidFriendlyModeText": "Kind Vriendelijke Modus (minder geweld, etc.)",
"languageText": "Taal",
"languageTextScale": 1.0,
"moddingGuideText": "Aanpasgids",
+ "moddingToolsText": "Modding Tools",
"mustRestartText": "U moet het spel herstarten voordat dit effect heeft.",
"netTestingText": "Netwerk Testen",
"resetText": "Reset",
+ "sendInfoText": "Stuur Informatie",
"showBombTrajectoriesText": "Baan van de bom weergeven",
+ "showDemosWhenIdleText": "Toon demo's wanneer je inactief gaat",
+ "showDeprecatedLoginTypesText": "Laat vervallen login types zien",
+ "showDevConsoleButtonText": "Toon dev-consoleknop",
+ "showInGamePingText": "Toon in-game ping",
"showPlayerNamesText": "Toon Namen Spelers",
"showUserModsText": "Toon Aanpassingen Map",
"titleText": "Geavanceerd",
@@ -1313,7 +1406,7 @@
"translationFetchingStatusText": "vertaalstatus controleren...",
"translationInformMe": "Meld het wanneer mijn taal updates nodig heeft.",
"translationNoUpdateNeededText": "De huidige taal is up to date; woohoo!",
- "translationUpdateNeededText": "** de huidige taal heeft updates nodig!! **",
+ "translationUpdateNeededText": "** De huidige taal heeft updates nodig!! **",
"vrTestingText": "VR Testen"
},
"shareText": "Deel",
@@ -1323,6 +1416,9 @@
"signInWithGameCenterText": "Om een Game Center account te gebruiken,\nlogt u in bij de Game Center app.",
"singleGamePlaylistNameText": "Alleen ${GAME}",
"singlePlayerCountText": "1 speler",
+ "sizeLargeText": "Groot",
+ "sizeMediumText": "Medium",
+ "sizeSmallText": "Klein",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Karakter selectie",
@@ -1348,6 +1444,7 @@
},
"spaceKeyText": "spatie",
"statsText": "stats",
+ "stopRemindingMeText": "Niet Meer Herinneren",
"storagePermissionAccessText": "Dit vereist toegang tot opslag",
"store": {
"alreadyOwnText": "U bent al de eigenaar van ${NAME}!",
@@ -1399,6 +1496,8 @@
"storeText": "Winkel",
"submitText": "Voorleggen",
"submittingPromoCodeText": "Code verzenden ...",
+ "successText": "Succes!",
+ "supportEmailText": "Als u problemen ondervindt met de app, \nkunt u een e-mail sturen naar ${EMAIL}.",
"teamNamesColorText": "Teamnamen / kleuren ...",
"teamsText": "Teams",
"telnetAccessGrantedText": "Telnet toegang ingeschakeld.",
@@ -1409,6 +1508,7 @@
"testBuildValidatedText": "Test Versie Gevalideerd; Veel Plezier!",
"thankYouText": "Bedankt voor uw ondersteuning! Veel plezier met het spel!!",
"threeKillText": "DRIEDUBBELE DOOD!!",
+ "ticketsDescriptionText": "Tickets kunnen worden gebruikt om in de winkel karakters, \nspeelvelden, mini-spellen en meer beschikbaar te maken.\n\nTickets kunnen in schatkisten worden gevonden,\ndie je kan winnen in campagnes, toernooien en prestaties.",
"timeBonusText": "Tijd Bonus",
"timeElapsedText": "Tijd Verstreken",
"timeExpiredText": "Tijd Verstreken",
@@ -1419,14 +1519,29 @@
"tipText": "Tip",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Krijg Tokens",
+ "notEnoughTokensText": "Niet genoeg tokens!",
+ "numTokensText": "${COUNT} Tokens",
+ "openNowDescriptionText": "Je hebt voldoende tokens\nom nu te openen - je hoeft\nNiet te wachten.",
+ "shinyNewCurrencyText": "BombSquad's glimmende nieuwe valuta.",
+ "tokenPack1Text": "Klein Token Pakje",
+ "tokenPack2Text": "Middelgroot Token Pakje",
+ "tokenPack3Text": "Grote Token Pak",
+ "tokenPack4Text": "Jumbo Token Pak",
+ "tokensDescriptionText": "Tokens worden gebruikt om schatkisten sneller te openen\nen voor andere spel- en account opties.\n\nJe kan tokens winnen in het spel of kopen\nin pakketten. Of koop een Gouden Pas voor een oneindig\naantal tokens en om nooit meer van ze te horen.",
+ "youHaveGoldPassText": "Je hebt een Gouden Pas.\nAlle token aankopen zijn gratis.\nGeniet!"
+ },
"topFriendsText": "Top Vrienden",
"tournamentCheckingStateText": "Toernooi status nakijken; even geduld aub...",
"tournamentEndedText": "Dit toernooi is beëindigd. Er zal snel een nieuwe beginnen.",
"tournamentEntryText": "Toernooi Inschrijving",
+ "tournamentFinalStandingsText": "Eindstand",
"tournamentResultsRecentText": "Recente Toernooi Uitslagen",
"tournamentStandingsText": "Toernooi Stand",
"tournamentText": "Toernooi",
"tournamentTimeExpiredText": "Toernooi Tijd Verlopen",
+ "tournamentsDisabledWorkspaceText": "Toernooien zijn uitgeschakeld als werkruimten actief zijn. \nOm toernooien opnieuw in te schakelen, schakelt u uw werkruimte uit en start u opnieuw op.",
"tournamentsText": "Toernooien",
"translations": {
"characterNames": {
@@ -1495,6 +1610,18 @@
"Uber Onslaught": "Uber Afslachting",
"Uber Runaround": "Uber Omlopen"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Tickets",
+ "${C} Tokens": "${C} Tokens",
+ "Chest": "Schatkist",
+ "L1 Chest": "L1 Schatkist",
+ "L2 Chest": "L2 Schatkist",
+ "L3 Chest": "L3 Schatkist",
+ "L4 Chest": "L4 Schatkist",
+ "L5 Chest": "L5 Schatkist",
+ "L6 Chest": "L6 Schatkist",
+ "Unknown Chest": "Onbekende Schatkist"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Ben de uitverkorene voor een bepaalde tijd om te winnen.\nDood de uitverkorene om het te worden.",
"Bomb as many targets as you can.": "Bombardeer zo veel mogelijk doelwitten als u kan.",
@@ -1578,7 +1705,7 @@
"languages": {
"Arabic": "Arabisch",
"Belarussian": "Belarusian",
- "Chinese": "Vereenvoudigd Chinees",
+ "Chinese": "Vereenvoudigd Chinees ",
"ChineseTraditional": "Traditioneel Chinees",
"Croatian": "Kroatisch",
"Czech": "Tsjechisch",
@@ -1598,7 +1725,9 @@
"Italian": "Italiaans",
"Japanese": "Japans",
"Korean": "Koreaans",
+ "Malay": "Maleis",
"Persian": "Perzisch",
+ "PirateSpeak": "Piraat Praat",
"Polish": "Pools",
"Portuguese": "Portugees",
"Romanian": "Roemeens",
@@ -1673,6 +1802,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Valsspelen ontdekt; scores en prijzen geschorst voor ${COUNT} dagen.",
"Could not establish a secure connection.": "Kon geen beveiligde verbinding tot stand brengen.",
"Daily maximum reached.": "Dagelijkse maximum bekijkt.",
+ "Daily sign-in reward": "Dagelijkse inlog beloning",
"Entering tournament...": "Toernooi betreden...",
"Invalid code.": "Ongeldige code.",
"Invalid payment; purchase canceled.": "Ongeldige betaling; aankoop geannuleerd.",
@@ -1682,11 +1812,14 @@
"Item unlocked!": "item ontgrendeld!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "LINKENDE ONTKENNING. ${ACCOUNT} bevat\nsignificante gegevens die ALLES ZIJN VERLOREN.\nJe kunt in omgekeerde volgorde linken als je wilt\n(en verlies de gegevens van DIT account in plaats daarvan)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Verbind account ${ACCOUNT} aan dit account?\nAlle bestaande data op ${ACCOUNT} zal verloren gaan.\nDit kan niet ongedaan worden gemaakt. Weet je het zeker?",
+ "Longer streaks lead to better rewards.": "Langere reeksen leiden tot betere beloningen.",
"Max number of playlists reached.": "Maximaal aantal speellijsten bereikt.",
"Max number of profiles reached.": "Maximaal aantal profielen bereikt.",
"Maximum friend code rewards reached.": "Maximum vriend code beloning behaald",
"Message is too long.": "Bericht is te lang.",
+ "New tournament result!": "Nieuwe toernooi uitslag!",
"No servers are available. Please try again soon.": "Er zijn geen servers beschikbaar. Probeer het binnenkort opnieuw.",
+ "No slots available. Free a slot and try again.": "Geen plaatsen beschikbaar. Maak er een vrij en probeer opnieuw.",
"Profile \"${NAME}\" upgraded successfully.": "Profiel \"${NAME}\" is succesvol opgewaardeerd.",
"Profile could not be upgraded.": "Profiel kon niet worden opgewaardeerd.",
"Purchase successful!": "Aankoop succesvol!",
@@ -1696,7 +1829,9 @@
"Sorry, this code has already been used.": "Sorry, deze code is al gebruikt.",
"Sorry, this code has expired.": "Sorry, deze code is verlopen.",
"Sorry, this code only works for new accounts.": "Sorry, deze code werkt alleen op nieuwe accounts.",
+ "Sorry, this has expired.": "Sorry, dit is verlopen.",
"Still searching for nearby servers; please try again soon.": "Nog steeds op zoek naar servers in de buurt; probeer het snel opnieuw.",
+ "Streak: ${NUM} days": "Reeks: ${NUM} dagen",
"Temporarily unavailable; please try again later.": "Tijdelijk niet beschikbaar; probeer het later opnieuw.",
"The tournament ended before you finished.": "Het toernooi eindigde voordat u klaar was.",
"This account cannot be unlinked for ${NUM} days.": "Dit account kan gedurende ${NUM} dagen niet worden ontkoppeld.",
@@ -1707,19 +1842,28 @@
"Tournaments require ${VERSION} or newer": "toernooi vereist ${VERSION} of nieuwer",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Koppel ${ACCOUNT} los van dit account?\nAlle gegevens over ${ACCOUNT} worden opnieuw ingesteld.\n(behalve voor prestaties in sommige gevallen)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "WAARSCHUWING: klachten over hacking zijn afgegeven tegen uw account.\nAccounts die hacken blijken te zijn, worden verbannen. Speel alsjeblieft eerlijk.",
+ "Wait reduced!": "Wachttijd verminderd!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Waarschuwing: Deze versie van het spel is beperkt tot oude accountgegevens; gegevens kunnen ontbreken of verouderd lijken.\nUpgrade naar een nieuwere versie van het spel om je meest recente accountgegevens te bekijken.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Wilt u uw apparaat account hieraan koppelen?\n\nUw apparaat account is ${ACCOUNT1}\nDit account is ${ACCOUNT2}\n\nDit zal u toelaten om uw bestaande vooruitgang te houden.\nWaarschuwing: dit kan niet ongedaan gemaakt worden!",
"You already own this!": "U bezit dit al!",
"You can join in ${COUNT} seconds.": "Je kan meedoen in ${COUNT} seconden.",
"You don't have enough tickets for this!": "U heeft hier niet genoeg tickets voor!",
"You don't own that.": "Je bezit dat niet.",
- "You got ${COUNT} tickets!": "U krijgt ${COUNT} tickets!",
- "You got a ${ITEM}!": "U hebt een ${ITEM}!",
+ "You got ${COUNT} tickets!": "Je krijgt ${COUNT} tickets!",
+ "You got ${COUNT} tokens!": "Je krijgt ${COUNT} tokens!",
+ "You got a ${ITEM}!": "Je krijgt een ${ITEM}!",
+ "You got a chest!": "Je hebt een schatkist!",
+ "You got an achievement reward!": "Je krijgt een prestatie beloning!",
"You have been promoted to a new league; congratulations!": "U bent gepromoveerd naar een nieuwe competitie; gefeliciteerd!",
+ "You lost a chest! (All your chest slots were full)": "Je bent een schatkist verloren! (Alle plaatsen waren vol)",
+ "You must update the app to view this.": "Je moet de app updaten om dit te bekijken.",
"You must update to a newer version of the app to do this.": "Om dit te kunnen doen moet u de app updaten naar een nieuwere versie.",
"You must update to the newest version of the game to do this.": "Je moet dit bijwerken naar de nieuwste versie van het spel.",
"You must wait a few seconds before entering a new code.": "U moet een paar seconden wachten voordat een nieuwe code ingevoerd kan worden.",
+ "You placed #${RANK} in a tournament!": "Je hebt plaats #${RANK} in een toernooi!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "U eindigde op rang #${RANK} in het laatste toernooi. Bedankt voor het spelen!",
"Your account was rejected. Are you signed in?": "Je account is geweigerd. Ben je ingelogd?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Je bekeken advertenties worden niet geregistreerd. Advertentie opties worden voorlopig beperkt.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Uw versie van het spel is aangepast.\nMaakt de veranderingen ongedaan en probeer het opnieuw.",
"Your friend code was used by ${ACCOUNT}": "Uw Vriend code is gebruikt door ${ACCOUNT}"
},
@@ -1873,11 +2017,14 @@
"toSkipPressAnythingText": "(tik of druk op iets om de les over te slaan)"
},
"twoKillText": "TWEE VLIEGEN IN 1 KLAP!",
+ "uiScaleText": "UI-Schaal",
"unavailableText": "niet beschikbaar",
+ "unclaimedPrizesText": "Je hebt niet-opgehaalde prijzen!",
"unconfiguredControllerDetectedText": "Niet geconfigureerde controller ontdekt:",
"unlockThisInTheStoreText": "Hiervoor moet een aankoop gedaan worden in de winkel.",
"unlockThisProfilesText": "Om meer dan ${NUM} profielen te maken heb je nodig:",
"unlockThisText": "Om dit te ontgrendelen, moet u:",
+ "unsupportedControllerText": "Sorry, controller \"${NAME}\" wordt niet ondersteund.",
"unsupportedHardwareText": "Sorry, deze hardware wordt niet ondersteunt door deze versie van het spel.",
"upFirstText": "Als eerste:",
"upNextText": "Daarna volgt in potje ${COUNT}:",
@@ -1885,11 +2032,16 @@
"upgradeText": "Opwaarderen",
"upgradeToPlayText": "Ontgrendel \"${PRO}\" in de winkel binnen het spel om dit te spelen.",
"useDefaultText": "Gebruik Standaard",
+ "userSystemScriptsCreateText": "Maak Gebruiker Systeem Scripts",
+ "userSystemScriptsDeleteText": "Verwijder Gebruiker Systeem Scripts",
"usesExternalControllerText": "Dit spel maakt gebruik van een externe controller als input.",
"usingItunesText": "De muziek app wordt gebruikt voor de muziek...",
"usingItunesTurnRepeatAndShuffleOnText": "Zorg er er voor dat shuffle AAN staat en herhalen op ALLES staat in iTunes.",
+ "v2AccountLinkingInfoText": "Om V2-accounts te koppelen, gebruikt u de knop 'Account beheren'.",
+ "v2AccountRequiredText": "Dit vereist een V2 account, upgrade uw account en probeer opnieuw.",
"validatingBetaText": "Beta wordt Gevalideerd...",
"validatingTestBuildText": "Valideren Test Versie...",
+ "viaText": "via",
"victoryText": "Overwinning!",
"voteDelayText": "Je kan geen andere stemming starten voor ${NUMBER} seconden",
"voteInProgressText": "Er is al een stemming bezig.",
@@ -1922,6 +2074,7 @@
},
"waveText": "Ronde",
"wellSureText": "Maar Natuurlijk!",
+ "whatIsThisText": "Wat is dit?",
"wiimoteLicenseWindow": {
"licenseTextScale": 0.62,
"titleText": "DarwiinRemote Copyright"
@@ -1946,6 +2099,8 @@
"winsPlayerText": "${NAME} Wint!",
"winsTeamText": "${NAME} Wint!",
"winsText": "${NAME} Wint!",
+ "workspaceSyncErrorText": "Fout bij synchroniseren van ${WORKSPACE}. Zie logboek voor details.",
+ "workspaceSyncReuseText": "Kan ${WORKSPACE} niet synchroniseren. Hergebruik van de vorige gesynchroniseerde versie.",
"worldScoresUnavailableText": "Wereldwijde scores niet beschikbaar.",
"worldsBestScoresText": "'s Werelds Beste Scores",
"worldsBestTimesText": "'s Werelds Beste Tijden",
@@ -1961,5 +2116,6 @@
},
"yesAllowText": "Ja, Toestaan!",
"yourBestScoresText": "Uw Beste Scores",
- "yourBestTimesText": "Uw Beste Tijden"
+ "yourBestTimesText": "Uw Beste Tijden",
+ "yourPrizeText": "Jouw prijs:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/english.json b/dist/ba_data/data/languages/english.json
index 33b42dea..685e0556 100644
--- a/dist/ba_data/data/languages/english.json
+++ b/dist/ba_data/data/languages/english.json
@@ -6,7 +6,9 @@
"campaignProgressText": "Campaign Progress [Hard]: ${PROGRESS}",
"changeOncePerSeason": "You can only change this once per season.",
"changeOncePerSeasonError": "You must wait until next season to change this again (${NUM} days)",
+ "createAnAccountText": "Create an Account",
"customName": "Custom Name",
+ "deleteAccountText": "Delete Account",
"googlePlayGamesAccountSwitchText": "If you want to use a different Google account,\nuse the Google Play Games app to switch.",
"linkAccountsEnterCodeText": "Enter Code",
"linkAccountsGenerateCodeText": "Generate Code",
@@ -23,14 +25,12 @@
"setAccountNameDesc": "Select the name to display for your account.\nYou can use the name from one of your linked\naccounts or create a unique custom name.",
"signInInfoText": "Sign in to collect tickets, compete online,\nand share progress across devices.",
"signInText": "Sign In",
+ "signInWithAnEmailAddressText": "Sign in with an email address",
"signInWithDeviceInfoText": "(an automatic account only available from this device)",
"signInWithDeviceText": "Sign in with device account",
- "signInWithGameCircleText": "Sign in with Game Circle",
- "signInWithGooglePlayText": "Sign in with Google Play",
- "signInWithTestAccountInfoText": "(legacy account type; use device accounts going forward)",
- "signInWithTestAccountText": "Sign in with test account",
+ "signInWithText": "Sign in with ${SERVICE}",
"signInWithV2InfoText": "(an account that works on all platforms)",
- "signInWithV2Text": "Sign in with a BombSquad account",
+ "signInWithV2Text": "Sign in with a ${APP_NAME} account",
"signOutText": "Sign Out",
"signingInText": "Signing in...",
"signingOutText": "Signing out...",
@@ -332,9 +332,14 @@
"getMoreGamesText": "Get More Games...",
"titleText": "Add Game"
},
+ "addToFavoritesText": "Add to Favorites",
+ "addedToFavoritesText": "Added '${NAME}' to Favorites.",
+ "allText": "All",
"allowText": "Allow",
"alreadySignedInText": "Your account is signed in from another device;\nplease switch accounts or close the game on your\nother devices and try again.",
"apiVersionErrorText": "Can't load module ${NAME}; it targets api-version ${VERSION_USED}; we require ${VERSION_REQUIRED}.",
+ "applyText": "Apply",
+ "areYouSureText": "Are you sure?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" enables this only when headphones are plugged in)",
"headRelativeVRAudioText": "Head-Relative VR Audio",
@@ -357,14 +362,24 @@
"boostText": "Boost",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} is configured in the app itself.",
"buttonText": "button",
- "canWeDebugText": "Would you like BombSquad to automatically report\nbugs, crashes, and basic usage info to the developer?\n\nThis data contains no personal information and helps\nkeep the game running smoothly and bug-free.\n",
+ "canWeDebugText": "Would you like ${APP_NAME} to automatically report\nbugs, crashes, and basic usage info to the developer?\n\nThis data contains no personal information and helps\nkeep the game running smoothly and bug-free.\n",
"cancelText": "Cancel",
"cantConfigureDeviceText": "Sorry, ${DEVICE} is not configurable.",
"challengeEndedText": "This challenge has ended.",
"chatMuteText": "Mute Chat",
"chatMutedText": "Chat Muted",
"chatUnMuteText": "Unmute Chat",
+ "chests": {
+ "prizeOddsText": "Prize Odds",
+ "reduceWaitText": "Reduce Wait",
+ "slotDescriptionText": "This slot can hold a chest.\n\nEarn chests by playing campaign levels,\nplacing in tournaments, and completing\nachievements.",
+ "slotText": "Chest Slot ${NUM}",
+ "slotsFullWarningText": "WARNING: All your chest slots are full.\nAny chests you earn this game will be lost.",
+ "unlocksInText": "Unlocks In"
+ },
"choosingPlayerText": "",
+ "claimText": "Claim",
+ "codesExplainText": "Codes are provided by the developer to\ndiagnose and correct account issues.",
"completeThisLevelToProceedText": "You must complete\nthis level to proceed!",
"completionBonusText": "Completion Bonus",
"configControllersWindow": {
@@ -445,6 +460,7 @@
"swipeText": "swipe",
"titleText": "Configure Touchscreen"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} can be configured in the System Settings app.",
"configureItNowText": "Configure it now?",
"configureText": "Configure",
"connectMobileDevicesWindow": {
@@ -548,6 +564,7 @@
"demoText": "Demo",
"denyText": "Deny",
"deprecatedText": "Deprecated",
+ "descriptionText": "Description",
"desktopResText": "Desktop Res",
"deviceAccountUpgradeText": "Warning:\nYou are signed in with a device account (${NAME}).\nDevice accounts will be removed in a future update.\nUpgrade to a V2 Account if you want to keep your progress.",
"difficultyEasyText": "Easy",
@@ -558,6 +575,10 @@
"disableRemoteAppConnectionsText": "Disable Remote-App Connections",
"disableXInputDescriptionText": "Allows more than 4 controllers but may not work as well.",
"disableXInputText": "Disable XInput",
+ "disabledText": "Disabled",
+ "discardText": "Discard",
+ "discordFriendsText": "Want to look for new people to play with?\nJoin our Discord and find new friends!",
+ "discordJoinText": "Join the Discord",
"doneText": "Done",
"drawText": "Draw",
"duplicateText": "Duplicate",
@@ -590,6 +611,7 @@
"localProfileText": "(local profile)",
"nameDescriptionText": "Player Name",
"nameText": "Name",
+ "profileAlreadyExistsText": "A profile with that name already exists.",
"randomText": "random",
"titleEditText": "Edit Profile",
"titleNewText": "New Profile",
@@ -625,6 +647,7 @@
"useMusicFolderText": "Folder of Music Files"
},
"editText": "Edit",
+ "enabledText": "Enabled",
"endText": "End",
"enjoyText": "Enjoy!",
"epicDescriptionFilterText": "${DESCRIPTION} In epic slow motion.",
@@ -636,6 +659,8 @@
"errorText": "Error",
"errorUnknownText": "unknown error",
"exitGameText": "Exit ${APP_NAME}?",
+ "expiredAgoText": "Expired ${T} ago",
+ "expiresInText": "Expires in ${T}",
"exportSuccessText": "'${NAME}' exported.",
"externalStorageText": "External Storage",
"failText": "Fail",
@@ -658,8 +683,6 @@
"flawlessWaveText": "Flawless Wave!",
"fourKillText": "QUAD KILL!!!",
"friendScoresUnavailableText": "Friend scores unavailable.",
- "gameCenterText": "GameCenter",
- "gameCircleText": "GameCircle",
"gameLeadersText": "Game ${COUNT} Leaders",
"gameListWindow": {
"cantDeleteDefaultText": "You can't delete the default playlist.",
@@ -670,6 +693,8 @@
"duplicateText": "Duplicate\nPlaylist",
"editText": "Edit\nPlaylist",
"newText": "New\nPlaylist",
+ "pointsToWinText": "Points To Win",
+ "seriesLengthText": "Series Length",
"showTutorialText": "Show Tutorial",
"shuffleGameOrderText": "Shuffle Game Order",
"titleText": "Customize ${TYPE} Playlists"
@@ -695,6 +720,7 @@
"copyCodeConfirmText": "Code copied to clipboard.",
"copyCodeText": "Copy Code",
"dedicatedServerInfoText": "For best results, set up a dedicated server. See bombsquadgame.com/server to learn how.",
+ "descriptionShortText": "Use the gather window to assemble a party.",
"disconnectClientsText": "This will disconnect the ${COUNT} player(s)\nin your party. Are you sure?",
"earnTicketsForRecommendingAmountText": "Friends will receive ${COUNT} tickets if they try the game\n(and you will receive ${YOU_COUNT} for each who does)",
"earnTicketsForRecommendingText": "Share the game\nfor free tickets...",
@@ -707,10 +733,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} tickets from ${NAME}",
"friendPromoCodeAwardText": "You will receive ${COUNT} tickets each time it is used.",
"friendPromoCodeExpireText": "The code will expire in ${EXPIRE_HOURS} hours and only works for new players.",
- "friendPromoCodeInstructionsText": "To use it, open ${APP_NAME} and go to \"Settings->Advanced->Enter Code\".\nSee bombsquadgame.com for download links for all supported platforms.",
+ "friendPromoCodeInstructionsText": "To use it, open ${APP_NAME} and go to \"Settings->Advanced->Send Info\".\nSee bombsquadgame.com for download links for all supported platforms.",
"friendPromoCodeRedeemLongText": "It can be redeemed for ${COUNT} free tickets by up to ${MAX_USES} people.",
"friendPromoCodeRedeemShortText": "It can be redeemed for ${COUNT} tickets in the game.",
- "friendPromoCodeWhereToEnterText": "(in \"Settings->Advanced->Enter Code\")",
+ "friendPromoCodeWhereToEnterText": "(in \"Settings->Advanced->Send Info\")",
"getFriendInviteCodeText": "Get Friend Invite Code",
"googlePlayDescriptionText": "Invite Google Play players to your party:",
"googlePlayInviteText": "Invite",
@@ -742,11 +768,11 @@
"manualYourLocalAddressText": "Your local address:",
"nearbyText": "Nearby",
"noConnectionText": "",
+ "noPartiesAddedText": "No Parties Added",
"otherVersionsText": "(other versions)",
"partyCodeText": "Party Code",
"partyInviteAcceptText": "Accept",
"partyInviteDeclineText": "Decline",
- "partyInviteGooglePlayExtraText": "(see the 'Google Play' tab in the 'Gather' window)",
"partyInviteIgnoreText": "Ignore",
"partyInviteText": "${NAME} has invited\nyou to join their party!",
"partyNameText": "Party Name",
@@ -779,7 +805,6 @@
"wifiDirectOpenWiFiSettingsText": "Open Wi-Fi Settings",
"wifiDirectText": "Wi-Fi Direct",
"worksBetweenAllPlatformsText": "(works between all platforms)",
- "worksWithGooglePlayDevicesText": "(works with devices running the Google Play (android) version of the game)",
"youHaveBeenSentAPromoCodeText": "You have been sent a ${APP_NAME} promo code:"
},
"getTicketsWindow": {
@@ -805,7 +830,12 @@
"youHaveShortText": "you have ${COUNT}",
"youHaveText": "you have ${COUNT} tickets"
},
- "googleMultiplayerDiscontinuedText": "Sorry, Google’s multiplayer service is no longer available.\nI am working on a replacement as fast as possible.\nUntil then, please try another connection method.\n-Eric",
+ "goldPass": {
+ "desc1InfTokensText": "Infinite tokens.",
+ "desc2NoAdsText": "No ads.",
+ "desc3ForeverText": "Forever.",
+ "goldPassText": "Gold Pass"
+ },
"googlePlayPurchasesNotAvailableText": "Google Play purchases are not available.\nYou may need to update your store app.",
"googlePlayServicesNotAvailableText": "Google Play Services is not available.\nSome app functionality may be disabled.",
"googlePlayText": "Google Play",
@@ -813,10 +843,12 @@
"alwaysText": "Always",
"fullScreenCmdText": "Fullscreen (Cmd-F)",
"fullScreenCtrlText": "Fullscreen (Ctrl-F)",
+ "fullScreenText": "Fullscreen",
"gammaText": "Gamma",
"highText": "High",
"higherText": "Higher",
"lowText": "Low",
+ "maxFPSText": "Max FPS",
"mediumText": "Medium",
"neverText": "Never",
"resolutionText": "Resolution",
@@ -885,6 +917,7 @@
"importText": "Import",
"importingText": "Importing...",
"inGameClippedNameText": "in-game will be\n\"${NAME}\"",
+ "inboxText": "Inbox",
"installDiskSpaceErrorText": "ERROR: Unable to complete the install.\nYou may be out of space on your device.\nClear some space and try again.",
"internal": {
"arrowsToExitListText": "press ${LEFT} or ${RIGHT} to exit list",
@@ -939,12 +972,14 @@
"timeOutText": "(times out in ${TIME} seconds)",
"touchScreenJoinWarningText": "You have joined with the touchscreen.\nIf this was a mistake, tap 'Menu->Leave Game' with it.",
"touchScreenText": "TouchScreen",
+ "unableToCompleteTryAgainText": "Unable to complete this right now.\nPlease try again.",
"unableToResolveHostText": "Error: unable to resolve host.",
"unavailableNoConnectionText": "This is currently unavailable (no internet connection?)",
"vrOrientationResetCardboardText": "Use this to reset the VR orientation.\nTo play the game you'll need an external controller.",
"vrOrientationResetText": "VR orientation reset.",
"willTimeOutText": "(will time out if idle)"
},
+ "inventoryText": "Inventory",
"jumpBoldText": "JUMP",
"jumpText": "Jump",
"keepText": "Keep",
@@ -991,8 +1026,11 @@
"seasonEndsMinutesText": "Season ends in ${NUMBER} minutes.",
"seasonText": "Season ${NUMBER}",
"tournamentLeagueText": "You must reach ${NAME} league to enter this tournament.",
- "trophyCountsResetText": "Trophy counts will reset next season."
+ "trophyCountsResetText": "Trophy counts will reset next season.",
+ "upToDateBonusDescriptionText": "Players running a recent version of the\ngame receive a ${PERCENT}% bonus here.",
+ "upToDateBonusText": "Up-To-Date Bonus"
},
+ "learnMoreText": "Learn More",
"levelBestScoresText": "Best scores on ${LEVEL}",
"levelBestTimesText": "Best times on ${LEVEL}",
"levelIsLockedText": "${LEVEL} is locked.",
@@ -1036,6 +1074,8 @@
"modeArcadeText": "Arcade Mode",
"modeClassicText": "Classic Mode",
"modeDemoText": "Demo Mode",
+ "moreSoonText": "More coming soon...",
+ "mostDestroyedPlayerText": "Most Destroyed Player",
"mostValuablePlayerText": "Most Valuable Player",
"mostViolatedPlayerText": "Most Violated Player",
"mostViolentPlayerText": "Most Violent Player",
@@ -1052,6 +1092,7 @@
"nameSuicideText": "${NAME} committed suicide.",
"nameText": "Name",
"nativeText": "Native",
+ "newExclaimText": "New!",
"newPersonalBestText": "New personal best!",
"newTestBuildAvailableText": "A newer test build is available! (${VERSION} build ${BUILD}).\nGet it at ${ADDRESS}",
"newText": "New",
@@ -1062,12 +1103,16 @@
"noContinuesText": "(no continues)",
"noExternalStorageErrorText": "No external storage found on this device",
"noGameCircleText": "Error: not logged into GameCircle",
+ "noMessagesText": "No messages.",
+ "noPluginsInstalledText": "No Plugins Installed",
"noScoresYetText": "No scores yet.",
+ "noServersFoundText": "No servers found.",
"noThanksText": "No Thanks",
"noTournamentsInTestBuildText": "WARNING: Tournament scores from this test build will be ignored.",
"noValidMapsErrorText": "No valid maps found for this game type.",
"notEnoughPlayersRemainingText": "Not enough players remaining; exit and start a new game.",
"notEnoughPlayersText": "You need at least ${COUNT} players to start this game!",
+ "notEnoughTicketsText": "Not enough tickets!",
"notNowText": "Not Now",
"notSignedInErrorText": "You must sign in to do this.",
"notSignedInGooglePlayErrorText": "You must sign in with Google Play to do this.",
@@ -1080,6 +1125,9 @@
"onText": "On",
"oneMomentText": "One Moment...",
"onslaughtRespawnText": "${PLAYER} will respawn in wave ${WAVE}",
+ "openMeText": "Open Me!",
+ "openNowText": "Open Now",
+ "openText": "Open",
"orText": "${A} or ${B}",
"otherText": "Other...",
"outOfText": "(#${RANK} out of ${ALL})",
@@ -1166,6 +1214,8 @@
"punchText": "Punch",
"purchaseForText": "Purchase for ${PRICE}",
"purchaseGameText": "Purchase Game",
+ "purchaseNeverAvailableText": "Sorry, purchases are not available on this build.\nTry signing into your account on another platform and making purchases from there.",
+ "purchaseNotAvailableText": "This purchase is not available.",
"purchasingText": "Purchasing...",
"quitGameText": "Quit ${APP_NAME}?",
"quittingIn5SecondsText": "Quitting in 5 seconds...",
@@ -1207,6 +1257,7 @@
"version_mismatch": "Version mismatch.\nMake sure BombSquad and BombSquad Remote\nare the latest versions and try again."
},
"removeInGameAdsText": "Unlock \"${PRO}\" in the store to remove in-game ads.",
+ "removeInGameAdsTokenPurchaseText": "LIMITED TIME OFFER: Purchase ANY token pack to remove in-game ads.",
"renameText": "Rename",
"replayEndText": "End Replay",
"replayNameDefaultText": "Last Game Replay",
@@ -1227,7 +1278,9 @@
"revertText": "Revert",
"runText": "Run",
"saveText": "Save",
- "scanScriptsErrorText": "Error(s) scanning scripts; see log for details.",
+ "scanScriptsErrorText": "Error(s) scanning scripts. See log for details.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} and ${NUM} other module(s) need to be updated for api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} needs to be updated for api ${API}.",
"scoreChallengesText": "Score Challenges",
"scoreListUnavailableText": "Score list unavailable.",
"scoreText": "Score",
@@ -1238,6 +1291,7 @@
},
"scoreWasText": "(was ${COUNT})",
"selectText": "Select",
+ "sendInfoDescriptionText": "Sends account and app state info to the developer.\nPlease include your name or reason for sending.",
"seriesWinLine1PlayerText": "WINS THE",
"seriesWinLine1TeamText": "WINS THE",
"seriesWinLine1Text": "WINS THE",
@@ -1253,23 +1307,31 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(a simple, controller-friendly on-screen keyboard for text editing)",
- "alwaysUseInternalKeyboardText": "Always Use Internal Keyboard",
+ "alwaysUseInternalKeyboardText": "Always use internal keyboard",
"benchmarksText": "Benchmarks & Stress-Tests",
- "disableCameraGyroscopeMotionText": "Disable Camera Gyroscope Motion",
- "disableCameraShakeText": "Disable Camera Shake",
+ "devToolsText": "Dev Tools",
+ "disableCameraGyroscopeMotionText": "Disable camera gyroscope motion",
+ "disableCameraShakeText": "Disable camera shake",
"disableThisNotice": "(you can disable this notice in advanced settings)",
"enterPromoCodeText": "Enter Code",
"forTestingText": "Note: these values are only for testing and will be lost when the app exits.",
"helpTranslateText": "${APP_NAME}'s non-English translations are a community\nsupported effort. If you'd like to contribute or correct\na translation, follow the link below. Thanks in advance!",
- "kickIdlePlayersText": "Kick Idle Players",
+ "insecureConnectionsDescriptionText": "not recommended, but may allow online play\nfrom restricted countries or networks",
+ "insecureConnectionsText": "Use insecure connections",
+ "kickIdlePlayersText": "Kick idle players",
"kidFriendlyModeText": "Kid-Friendly Mode (reduced violence, etc)",
"languageText": "Language",
"moddingGuideText": "Modding Guide",
+ "moddingToolsText": "Modding Tools",
"mustRestartText": "You must restart the game for this to take effect.",
"netTestingText": "Network Testing",
"resetText": "Reset",
+ "sendInfoText": "Send Info",
"showBombTrajectoriesText": "Show Bomb Trajectories",
- "showInGamePingText": "Show In-Game Ping",
+ "showDemosWhenIdleText": "Show demos when idle",
+ "showDeprecatedLoginTypesText": "Show deprecated login types",
+ "showDevConsoleButtonText": "Show dev console button",
+ "showInGamePingText": "Show in-game ping",
"showPlayerNamesText": "Show Player Names",
"showUserModsText": "Show Mods Folder",
"titleText": "Advanced",
@@ -1277,17 +1339,19 @@
"translationFetchErrorText": "translation status unavailable",
"translationFetchingStatusText": "checking translation status...",
"translationInformMe": "Inform me when my language needs updates",
- "translationNoUpdateNeededText": "the current language is up to date; woohoo!",
- "translationUpdateNeededText": "** the current language needs updates!! **",
+ "translationNoUpdateNeededText": "The current language is up to date; woohoo!",
+ "translationUpdateNeededText": "** The current language needs updates!! **",
"vrTestingText": "VR Testing"
},
"shareText": "Share",
"sharingText": "Sharing...",
"showText": "Show",
"signInForPromoCodeText": "You must sign in to an account for codes to take effect.",
- "signInWithGameCenterText": "To use a Game Center account,\nsign in with the Game Center app.",
"singleGamePlaylistNameText": "Just ${GAME}",
"singlePlayerCountText": "1 player",
+ "sizeLargeText": "Large",
+ "sizeMediumText": "Medium",
+ "sizeSmallText": "Small",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Character Selection",
@@ -1313,6 +1377,7 @@
},
"spaceKeyText": "space",
"statsText": "Stats",
+ "stopRemindingMeText": "Stop Reminding Me",
"storagePermissionAccessText": "This requires storage access",
"store": {
"alreadyOwnText": "You already own ${NAME}!",
@@ -1322,7 +1387,6 @@
"charactersText": "Characters",
"comingSoonText": "Coming Soon...",
"extrasText": "Extras",
- "freeBombSquadProText": "BombSquad is now free, but since you originally purchased it you are\nreceiving the BombSquad Pro upgrade and ${COUNT} tickets as a thank-you.\nEnjoy the new features, and thank you for your support!\n-Eric",
"holidaySpecialText": "Holiday Special",
"howToSwitchCharactersText": "(go to \"${SETTINGS} -> ${PLAYER_PROFILES}\" to assign & customize characters)",
"howToUseIconsText": "(create global player profiles (in the account window) to use these)",
@@ -1360,6 +1424,8 @@
"storeText": "Store",
"submitText": "Submit",
"submittingPromoCodeText": "Submitting Code...",
+ "successText": "Success!",
+ "supportEmailText": "If you are experiencing any problems with the\napp, please email ${EMAIL}.",
"teamNamesColorText": "Team Names/Colors...",
"telnetAccessGrantedText": "Telnet access enabled.",
"telnetAccessText": "Telnet access detected; allow?",
@@ -1369,6 +1435,7 @@
"testBuildValidatedText": "Test Build Validated; Enjoy!",
"thankYouText": "Thank you for your support! Enjoy the game!!",
"threeKillText": "TRIPLE KILL!!",
+ "ticketsDescriptionText": "Tickets can be used to unlock characters,\nmaps, minigames, and more in the store.\n\nTickets can be found in chests won through\ncampaigns, tournaments, and achievements.",
"timeBonusText": "Time Bonus",
"timeElapsedText": "Time Elapsed",
"timeExpiredText": "Time Expired",
@@ -1379,10 +1446,24 @@
"tipText": "Tip",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Get Tokens",
+ "notEnoughTokensText": "Not enough tokens!",
+ "numTokensText": "${COUNT} Tokens",
+ "openNowDescriptionText": "You have enough tokens to\nopen this now - you don't\nneed to wait.",
+ "shinyNewCurrencyText": "BombSquad's shiny new currency.",
+ "tokenPack1Text": "Small Token Pack",
+ "tokenPack2Text": "Medium Token Pack",
+ "tokenPack3Text": "Large Token Pack",
+ "tokenPack4Text": "Jumbo Token Pack",
+ "tokensDescriptionText": "Tokens are used to speed up chest unlocks\nand for other game and account features.\n\nYou can win tokens in the game or buy them\nin packs. Or buy a Gold Pass for infinite\ntokens and never hear about them again.",
+ "youHaveGoldPassText": "You have a Gold Pass.\nAll token purchases are free.\nEnjoy!"
+ },
"topFriendsText": "Top Friends",
"tournamentCheckingStateText": "Checking tournament state; please wait...",
"tournamentEndedText": "This tournament has ended. A new one will start soon.",
"tournamentEntryText": "Tournament Entry",
+ "tournamentFinalStandingsText": "Final Standings",
"tournamentResultsRecentText": "Recent Tournament Results",
"tournamentStandingsText": "Tournament Standings",
"tournamentText": "Tournament",
@@ -1438,6 +1519,18 @@
"Uber Onslaught": null,
"Uber Runaround": null
},
+ "displayItemNames": {
+ "${C} Tickets": null,
+ "${C} Tokens": null,
+ "Chest": null,
+ "L1 Chest": null,
+ "L2 Chest": null,
+ "L3 Chest": null,
+ "L4 Chest": null,
+ "L5 Chest": null,
+ "L6 Chest": null,
+ "Unknown Chest": null
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": null,
"Bomb as many targets as you can.": null,
@@ -1520,8 +1613,8 @@
"languages": {
"Arabic": null,
"Belarussian": null,
- "Chinese": "Chinese Simplified",
- "ChineseTraditional": "Chinese Traditional",
+ "ChineseSimplified": "Chinese - Simplified",
+ "ChineseTraditional": "Chinese - Traditional",
"Croatian": null,
"Czech": null,
"Danish": null,
@@ -1542,13 +1635,16 @@
"Korean": null,
"Malay": null,
"Persian": null,
+ "PirateSpeak": "Pirate Speak",
"Polish": null,
- "Portuguese": null,
+ "PortugueseBrazil": "Portuguese - Brazil",
+ "PortuguesePortugal": "Portuguese - Portugal",
"Romanian": null,
"Russian": null,
"Serbian": null,
"Slovak": null,
- "Spanish": null,
+ "SpanishLatinAmerica": "Spanish - Latin America",
+ "SpanishSpain": "Spanish - Spain",
"Swedish": null,
"Tamil": null,
"Thai": null,
@@ -1613,6 +1709,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": null,
"Could not establish a secure connection.": null,
"Daily maximum reached.": null,
+ "Daily sign-in reward": null,
"Entering tournament...": null,
"Invalid code.": null,
"Invalid payment; purchase canceled.": null,
@@ -1622,11 +1719,14 @@
"Item unlocked!": null,
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": null,
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": null,
+ "Longer streaks lead to better rewards.": null,
"Max number of playlists reached.": null,
"Max number of profiles reached.": null,
"Maximum friend code rewards reached.": null,
"Message is too long.": null,
+ "New tournament result!": null,
"No servers are available. Please try again soon.": null,
+ "No slots available. Free a slot and try again.": null,
"Profile \"${NAME}\" upgraded successfully.": null,
"Profile could not be upgraded.": null,
"Purchase successful!": null,
@@ -1636,7 +1736,9 @@
"Sorry, this code has already been used.": null,
"Sorry, this code has expired.": null,
"Sorry, this code only works for new accounts.": null,
+ "Sorry, this has expired.": null,
"Still searching for nearby servers; please try again soon.": null,
+ "Streak: ${NUM} days": null,
"Temporarily unavailable; please try again later.": null,
"The tournament ended before you finished.": null,
"This account cannot be unlinked for ${NUM} days.": null,
@@ -1647,19 +1749,28 @@
"Tournaments require ${VERSION} or newer": null,
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": null,
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": null,
+ "Wait reduced!": null,
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": null,
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": null,
"You already own this!": null,
"You can join in ${COUNT} seconds.": null,
"You don't have enough tickets for this!": null,
"You don't own that.": null,
"You got ${COUNT} tickets!": null,
+ "You got ${COUNT} tokens!": null,
"You got a ${ITEM}!": null,
+ "You got a chest!": null,
+ "You got an achievement reward!": null,
"You have been promoted to a new league; congratulations!": null,
+ "You lost a chest! (All your chest slots were full)": null,
+ "You must update the app to view this.": null,
"You must update to a newer version of the app to do this.": null,
"You must update to the newest version of the game to do this.": null,
"You must wait a few seconds before entering a new code.": null,
+ "You placed #${RANK} in a tournament!": null,
"You ranked #${RANK} in the last tournament. Thanks for playing!": null,
"Your account was rejected. Are you signed in?": null,
+ "Your ad views are not registering. Ad options will be limited for a while.": null,
"Your copy of the game has been modified.\nPlease revert any changes and try again.": null,
"Your friend code was used by ${ACCOUNT}": null
},
@@ -1808,11 +1919,14 @@
"toSkipPressAnythingText": "(tap or press anything to skip tutorial)"
},
"twoKillText": "DOUBLE KILL!",
+ "uiScaleText": "UI Scale",
"unavailableText": "unavailable",
+ "unclaimedPrizesText": "You have unclaimed prizes!",
"unconfiguredControllerDetectedText": "Unconfigured controller detected:",
"unlockThisInTheStoreText": "This must be unlocked in the store.",
"unlockThisProfilesText": "To create more than ${NUM} profiles, you need:",
"unlockThisText": "To unlock this, you need:",
+ "unsupportedControllerText": "Sorry, controller \"${NAME}\" is not supported.",
"unsupportedHardwareText": "Sorry, this hardware is not supported by this build of the game.",
"upFirstText": "Up first:",
"upNextText": "Up next in game ${COUNT}:",
@@ -1820,10 +1934,14 @@
"upgradeText": "Upgrade",
"upgradeToPlayText": "Unlock \"${PRO}\" in the in-game store to play this.",
"useDefaultText": "Use Default",
+ "userSystemScriptsCreateText": "Create User System Scripts",
+ "userSystemScriptsDeleteText": "Delete User System Scripts",
"usesExternalControllerText": "This game uses an external controller for input.",
"usingItunesText": "Using Music App for soundtrack...",
"v2AccountLinkingInfoText": "To link V2 accounts, use the 'Manage Account' button.",
+ "v2AccountRequiredText": "This requires a V2 account. Upgrade your account and try again.",
"validatingTestBuildText": "Validating Test Build...",
+ "viaText": "via",
"victoryText": "Victory!",
"voteDelayText": "You can't start another vote for ${NUMBER} seconds",
"voteInProgressText": "A vote is already in progress.",
@@ -1856,21 +1974,6 @@
"waveText": "Wave",
"wellSureText": "Well Sure!",
"whatIsThisText": "What is this?",
- "wiimoteLicenseWindow": {
- "titleText": "DarwiinRemote Copyright"
- },
- "wiimoteListenWindow": {
- "listeningText": "Listening For Wiimotes...",
- "pressText": "Press Wiimote buttons 1 and 2 simultaneously.\n",
- "pressText2": "On newer Wiimotes with Motion Plus built in, press the red 'sync' button on the back instead."
- },
- "wiimoteSetupWindow": {
- "copyrightText": "DarwiinRemote Copyright",
- "listenText": "Listen",
- "macInstructionsText": "Make sure your Wii is off and Bluetooth is enabled\non your Mac, then press 'Listen'. Wiimote support can\nbe a bit flaky, so you may have to try a few times\nbefore you get a connection.\n\nBluetooth should handle up to 7 connected devices,\nthough your mileage may vary.\n\nBombSquad supports the original Wiimotes, Nunchuks,\nand the Classic Controller.\nThe newer Wii Remote Plus now works too\nbut not with attachments.",
- "thanksText": "Thanks to the DarwiinRemote team\nFor making this possible.\n",
- "titleText": "Wiimote Setup"
- },
"winsPlayerText": "${NAME} Wins!",
"winsTeamText": "${NAME} Wins!",
"winsText": "${NAME} Wins!",
@@ -1879,15 +1982,8 @@
"worldScoresUnavailableText": "World scores unavailable.",
"worldsBestScoresText": "World's Best Scores",
"worldsBestTimesText": "World's Best Times",
- "xbox360ControllersWindow": {
- "getDriverText": "Get Driver",
- "macInstructions2Text": "To use controllers wirelessly, you'll also need the receiver that\ncomes with the 'Xbox 360 Wireless Controller for Windows'.\nOne receiver allows you to connect up to 4 controllers.\n\nImportant: 3rd-party receivers will not work with this driver;\nmake sure your receiver says 'Microsoft' on it, not 'XBOX 360'.\nMicrosoft no longer sells these separately, so you'll need to get\nthe one bundled with the controller or else search ebay.\n\nIf you find this useful, please consider a donation to the\ndriver developer at his site.",
- "macInstructionsText": "To use Xbox 360 controllers, you'll need to install\nthe Mac driver available at the link below.\nIt works with both wired and wireless controllers.",
- "macInstructionsTextScale": 0.8,
- "ouyaInstructionsText": "To use wired Xbox 360 controllers with BombSquad, simply\nplug them into your device's USB port. You can use a USB hub\nto connect multiple controllers.\n\nTo use wireless controllers you'll need a wireless receiver,\navailable as part of the \"Xbox 360 wireless Controller for Windows\"\npackage or sold separately. Each receiver plugs into a USB port and\nallows you to connect up to 4 wireless controllers.",
- "titleText": "Using Xbox 360 Controllers with ${APP_NAME}:"
- },
"yesAllowText": "Yes, Allow!",
"yourBestScoresText": "Your Best Scores",
- "yourBestTimesText": "Your Best Times"
+ "yourBestTimesText": "Your Best Times",
+ "yourPrizeText": "Your prize:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/filipino.json b/dist/ba_data/data/languages/filipino.json
index 1b7d4e80..73a28afb 100644
--- a/dist/ba_data/data/languages/filipino.json
+++ b/dist/ba_data/data/languages/filipino.json
@@ -1,76 +1,80 @@
{
"accountSettingsWindow": {
- "accountNameRules": "Marapat na ang pangalan ng account na iyon ay walang mga special characters o mga emoji",
+ "accountNameRules": "Ang pangalan ay hindi dapat naglalaman ng emoji o ano mang uri ng simbolo",
"accountsText": "Mga Account",
"achievementProgressText": "Mga Nakamtan: ${COUNT} sa ${TOTAL}",
- "campaignProgressText": "Ang Progreso sa Laro [Mahirap]: ${PROGRESS}",
- "changeOncePerSeason": "Mapapalit mo lang ito isa-isa kada season",
- "changeOncePerSeasonError": "Kailangan mo muna maghintay ng susunod na season para mapalitan ito. (${NUM} araw)",
- "customName": "Custom na Pangalan",
- "googlePlayGamesAccountSwitchText": "Kung gusto mong gamitin ang iba ninyong Google Account,\nGumamit ka ng Google Play Games app upang maipalit.",
- "linkAccountsEnterCodeText": "Ilagay ang Code",
- "linkAccountsGenerateCodeText": "Gumawa ng Code",
- "linkAccountsInfoText": "(ibahagi ang pag-usad sa iba't ibang platform)",
- "linkAccountsInstructionsNewText": "Para maiugnay ang dalawang accounts, gumawa ka ng code sa una at ilagay \nyung code sa pangalawa. Data na galing sa pangalawang account ay \nmaibabahagi sa dalawa.\n(Data na nasa unang account ay mawawala)\n\nMaari kang magugnay ng hangang ${COUNT} accounts.\n\nIMPORTANTE: Iugnay lamang ang iyong mga accounts, \ndahil kapag iuugnay mo sa kaibigan mo ang iyong \naccount,hindi kayo makakapaglaro ng sabay.",
+ "campaignProgressText": "Ang Progreso sa Kampanya [Mahirap]: ${PROGRESS}",
+ "changeOncePerSeason": "Mapapalit mo lang ito isang beses kada season",
+ "changeOncePerSeasonError": "Kailangan mo muna maghintay ng susunod na panahon para mapalitan ito. (${NUM} na araw)",
+ "createAnAccountText": "Gumawa ng account",
+ "customName": "Sariling Pangalan",
+ "deleteAccountText": "Burahin ang Account",
+ "googlePlayGamesAccountSwitchText": "Kung gusto mong gamitin ang iba ninyong Google Account, \nkailangan mo gamitin ang Google Play Games app upang maipalit ito.",
+ "linkAccountsEnterCodeText": "Ilagay ang Kowd",
+ "linkAccountsGenerateCodeText": "Gumawa ng Kowd",
+ "linkAccountsInfoText": "(ibahagi ang pag-usad sa ibang mga platform)",
+ "linkAccountsInstructionsNewText": "Para maiugnay ang dalawang account, gumawa ng kowd sa una at ilagay \nyung kowd sa pangalawa. Ang mga datos na galing sa pangalawang account ay \nmaibabahagi sa dalawa.\n(Ang datos na nasa unang account ay mawawala)\n\nMaari kang mag-link ng hanggang ${COUNT} na account.\n\nIMPORTANTE: Iugnay lamang ang iyong mga account na may-ari mo, \ndahil kapag iuugnay mo sa kaibigan mo ang iyong \naccount,hindi kayo makakapaglaro ng sabay.",
"linkAccountsInstructionsText": "Para mag-ugnay ng dalawang account, gumawa ng code\nsa isa at ilagay ang code na iyon sa kabila.\nAng iyong pag-usad at imbentaryo ay pagsasamahin.\nMaaari mong i-ugnay hanggang sa ${COUNT} accounts.\n\nBabala lang; hindi na ito maibabalik!",
- "linkAccountsText": "Iugnay ang mga Account",
- "linkedAccountsText": "Naka-ugnay na mga Account",
- "manageAccountText": "I-Manage ang Account",
- "nameChangeConfirm": "Baguhin ang pangalan ng iyong account sa ${NAME}?",
- "resetProgressConfirmNoAchievementsText": "Ibabalik nito sa dati ang iyong pag-usad,\nat lokal na mga high-score (pwera sa ticket).\nHindi na ito maibabalik pa. Ipagpatuloy pa rin?",
- "resetProgressConfirmText": "Ibabalik nito sa dati ang iyong pag-usad,\nmga nakamtan, at lokal na mga high-score\n(pwera sa ticket). Hindi na ito maibabalik\npa. Ipagpatuloy pa rin?",
- "resetProgressText": "I-reset ang Progreso",
- "setAccountName": "I-set ang Account name",
+ "linkAccountsText": "Ilink ang mga Account",
+ "linkedAccountsText": "Naka-link na mga Account",
+ "manageAccountText": "Mamahalahin ang Account",
+ "nameChangeConfirm": "Ipalitan ang pangalan ng iyong account sa ${NAME}?",
+ "resetProgressConfirmNoAchievementsText": "Ibabalik nito sa dati ang iyong pag-usad,\nat lokal na mga iskor (parehas lamang ang bilang ng iyong tiket).\nHindi ito maibabalik. Ipagpatuloy pa rin?",
+ "resetProgressConfirmText": "Maaaring maulit ang iyong pag-usad,\nmga nakamtan, at lokal na mga matataas na iskor\n(ngunit Hindi ang mga tiket). Hindi na ito maibabalik sa dati\nulit. Ipagpatuloy pa rin?",
+ "resetProgressText": "Ulitin ang Progreso",
+ "setAccountName": "Itakda ang Pangalan ng Account",
"setAccountNameDesc": "Piliin ang pangalan na ipapakita para sa iyong account.\nMaaari mong gamitin ang pangalan mula sa isa sa iyong mga naka-link \nna account o lumikha ng isang natatanging pasadyang pangalan.",
- "signInInfoText": "Magsign-in para kumolekta ng mga ticket, makipagkompetensya online,\nat makabahagi ng pag-usad sa iba't ibang mga device.",
- "signInText": "Mag-sign in",
- "signInWithDeviceInfoText": "(isang automatic account na magagamit lamang sa device na ito)",
- "signInWithDeviceText": "Mag-sign in gamit ang device",
- "signInWithGameCircleText": "Magsign-in gamit ang Game Circle",
- "signInWithGooglePlayText": "Magsign-in gamit ang Google Play",
+ "signInInfoText": "Pumasok o gumawa nang account para kumolekta ng mga ticket, makipagkompetensya online,\nat makabahagi ng pag-usad sa iba't ibang mga device.",
+ "signInText": "Pumasok sa account",
+ "signInWithAnEmailAddressText": "Pumasok gamit ang email address",
+ "signInWithDeviceInfoText": "(kusang account na ginagamit lamang sa device na ito.)",
+ "signInWithDeviceText": "Pumasok gamit ang device account",
+ "signInWithGameCircleText": "Pumasok sa account gamit ang Game Circle",
+ "signInWithGooglePlayText": "Pumasok sa account gamit ang Google Play",
"signInWithTestAccountInfoText": "(uri ng legacy account; gamitin ang mga account ng device na pasulong)",
- "signInWithTestAccountText": "Magsign in gamit ang test account",
- "signInWithV2InfoText": "(ang account na gumagana sa lahat na platforms)",
- "signInWithV2Text": "Mag sign in gamit ang BombSquad account",
- "signOutText": "Mag-sign out",
- "signingInText": "Nagsasign-in...",
- "signingOutText": "Nagsasign-out...",
- "ticketsText": "Mga ticket: ${COUNT}",
- "titleText": "Account",
- "unlinkAccountsInstructionsText": "Pumili ng account na i-uunlink",
- "unlinkAccountsText": "I-unlink ang mga accounts",
- "unlinkLegacyV1AccountsText": "I-unlink ang mga Legacy (V1) Account",
- "v2LinkInstructionsText": "Gamitin ang link na ito para gumawa ng account o mag sign in.",
- "viaAccount": "(sa pamamagitan ng account ${NAME})",
- "youAreSignedInAsText": "Nakasign-in ka bilang:"
+ "signInWithTestAccountText": "Pumasok gamit ang test account",
+ "signInWithText": "Pumasok gamit ang ${SERVICE}",
+ "signInWithV2InfoText": "(ang account na pwede gamitin sa lahat ng plataporma)",
+ "signInWithV2Text": "Pumasok gamit ang ${APP_NAME} account",
+ "signOutText": "Umalis",
+ "signingInText": "Pumapasok sa account...",
+ "signingOutText": "Umaalis sa account...",
+ "ticketsText": "Mga tiket: ${COUNT}",
+ "titleText": "Manlalaro",
+ "unlinkAccountsInstructionsText": "Pumili ng account na tatanggalin dito.",
+ "unlinkAccountsText": "Tanggalin ang mga account",
+ "unlinkLegacyV1AccountsText": "Tanggalin ang mga Legacy (V1) na mga Account",
+ "v2LinkInstructionsText": "Gamitin ang link na ito para gumawa ng account o pumasok sa account.",
+ "viaAccount": "(sa pamamagitan ng ${NAME})",
+ "youAreSignedInAsText": "Nakapasok bilang:"
},
- "achievementChallengesText": "Mga nakamit",
- "achievementText": "Mga Nakamtan",
+ "achievementChallengesText": "Mga Hamon sa Pagkamit",
+ "achievementText": "Nakamtan",
"achievements": {
"Boom Goes the Dynamite": {
- "description": "Mapasabog ang 3 kalaban gamit ang TNT",
- "descriptionComplete": "Napasabog ang 3 kalaban gamit ang TNT",
- "descriptionFull": "Mapasabog ang 3 kalaban gamit ang TNT sa ${LEVEL}",
- "descriptionFullComplete": "Napasabog ang 3 kalabangamit ang TNT sa ${LEVEL}",
- "name": "Sabog ang Sabi ng Dinamita"
+ "description": "Pasabugin ang mga 3 kalaban gamit ang TNT",
+ "descriptionComplete": "Pinasabog ang mga 3 kalaban gamit ang TNT",
+ "descriptionFull": "Sabugin ang mga 3 kalaban gamit ang TNT ${LEVEL}",
+ "descriptionFullComplete": "Napasabog ang 3 kalaban gamit ang TNT sa ${LEVEL}",
+ "name": "Sabog Ang Pinagsasabog"
},
"Boxer": {
- "description": "Manalo sa laro ng hindi gumagamit ng bomba",
- "descriptionComplete": "Nanalo sa laro ng hindi gumagamit ng bomba",
- "descriptionFull": "Tapusin ang ${LEVEL} na walang gamit na bomba",
- "descriptionFullComplete": "Natapos ang ${LEVEL} na himdi gumagamit ng bomba",
+ "description": "Manalo sa laro nang hindi gumagamit ng mga bomba",
+ "descriptionComplete": "Manalo sa laro ng hindi gumagamit ng bomba",
+ "descriptionFull": "Tapusin ang ${LEVEL} habang hindi gumagamit nang bomba",
+ "descriptionFullComplete": "Natapos ang ${LEVEL} habang hindi gumagamit nang bomba",
"name": "Boksingero"
},
"Dual Wielding": {
- "descriptionFull": "Ikonekta ang 2 controllers (hardware o app)",
- "descriptionFullComplete": "Konektado ang 2 controllers (hardware o app)",
- "name": "Dalawang Nangalaro"
+ "descriptionFull": "Ikonekta ang dalawang mga controllers (hardware o app)",
+ "descriptionFullComplete": "Nakonektado na ang 2 controllers (hardware o app)",
+ "name": "Dalawang Hawak"
},
"Flawless Victory": {
- "description": "Manalo nang hindi natatamaan",
- "descriptionComplete": "Nanalo nang hindi natamaan",
- "descriptionFull": "Manalo sa ${LEVEL} nang hindi makakakuha ng hit",
- "descriptionFullComplete": "Nanalo sa ${LEVEL} nang hindi nakakakuha ng hit",
+ "description": "Manalo nang hindi natatamaan ng kalaban",
+ "descriptionComplete": "Nanalo nang hindi natamaan ng kalaban",
+ "descriptionFull": "Manalo sa ${LEVEL} nang hindi matatamaan",
+ "descriptionFullComplete": "Nanalo sa ${LEVEL} nang hindi natatamaan",
"name": "‘Di Mintis Na Pagtagumpay"
},
"Free Loader": {
@@ -79,11 +83,11 @@
"name": "Manggagamit"
},
"Gold Miner": {
- "description": "Pumatay Ng 6 na kalaban gamit ang mga land-mine",
+ "description": "Magpamatay ka ng 6 na kalaban gamit ang mga land-mine",
"descriptionComplete": "Pumatay ng 6 na kalaban gamit ang mga land-mine",
"descriptionFull": "Pumatay ng 6 na kalaban gamit ang mga land -mine sa ${LEVEL}",
"descriptionFullComplete": "Nakapatay ng 6 na kalaban gamit ang mga land-mine sa ${LEVEL}",
- "name": "Minahang Lagayan"
+ "name": "Minahang Ginto"
},
"Got the Moves": {
"description": "Manalo ng ‘di sumusuntok o gumagamit ng mga bomba",
@@ -95,7 +99,7 @@
"In Control": {
"descriptionFull": "Magconnect ng controller (hardware o app)",
"descriptionFullComplete": "Nagconnect ng controller (hardware o app)",
- "name": "Kumokontrol"
+ "name": "Nasa-kontrol"
},
"Last Stand God": {
"description": "Maka-iskor ng 1000 na puntos",
@@ -189,17 +193,17 @@
"name": "Kampeon ng ${LEVEL}"
},
"Pro Onslaught Victory": {
- "description": "Matalo lahat ng mga kaway",
- "descriptionComplete": "Natalo lahat ng mga kaway",
- "descriptionFull": "Matalo lahat ng mga kaway sa ${LEVEL}",
- "descriptionFullComplete": "Natalo lahat ng mga kaway sa ${LEVEL}",
+ "description": "Matalo lahat ng mga yugto",
+ "descriptionComplete": "Natalo mo ang lahat ng mga lebel",
+ "descriptionFull": "Matalo lahat ng mga yugto sa ${LEVEL}",
+ "descriptionFullComplete": "Natalo mo ang lahat ng mga yugto sa ${LEVEL}",
"name": "Kampeon ng ${LEVEL}"
},
"Pro Runaround Victory": {
- "description": "Tapusin lahat ng mga kaway",
- "descriptionComplete": "Natapos lahat ng mga kaway",
- "descriptionFull": "Tapusin ang lahat ng mg kaway sa ${LEVEL}",
- "descriptionFullComplete": "Tinapos lahat ng mga kaway sa ${LEVEL}",
+ "description": "Tapusin lahat ng mga yugto",
+ "descriptionComplete": "Natapos lahat ng mga yugto",
+ "descriptionFull": "Tapusin ang lahat ng mg yugto sa ${LEVEL}",
+ "descriptionFullComplete": "Tinapos lahat ng mga yugto sa ${LEVEL}",
"name": "Kampeon ng ${LEVEL}"
},
"Rookie Football Shutout": {
@@ -217,10 +221,10 @@
"name": "Nanalo sa ${LEVEL}"
},
"Rookie Onslaught Victory": {
- "description": "Italo lahat ang mga kaway",
- "descriptionComplete": "Natalo lahat ang mga kaway",
- "descriptionFull": "Italo lahat ang mga kaway sa ${LEVEL}",
- "descriptionFullComplete": "Natalo lahat ng mga kaway sa ${LEVEL}",
+ "description": "Italo lahat ang mga yugto",
+ "descriptionComplete": "Natalo mo lahat ang mga yugto",
+ "descriptionFull": "Italo lahat ang mga yugto sa ${LEVEL}",
+ "descriptionFullComplete": "Natalo mo lahat ng mga yugto sa ${LEVEL}",
"name": "Nanalo sa ${LEVEL}"
},
"Runaround God": {
@@ -232,7 +236,7 @@
},
"Runaround Master": {
"description": "Pumuntos ng 500",
- "descriptionComplete": "Nakapuntos ng 500",
+ "descriptionComplete": "Naka 500 na iskor",
"descriptionFull": "Pumuntos ng 500 sa ${LEVEL}",
"descriptionFullComplete": "Nakakuha ng 500 puntos sa ${LEVEL}",
"name": "Pinuno ng ${LEVEL}"
@@ -254,28 +258,28 @@
"descriptionComplete": "Nanalo nang hindi namatay",
"descriptionFull": "Nanalo ${LEVEL} nang hindi namatay",
"descriptionFullComplete": "Nanalo sa ${LEVEL} nang hindi namatay",
- "name": "Manatiling Buhay"
+ "name": "Buhay Pa!"
},
"Super Mega Punch": {
"description": "Magdulot ng 100% damage sa isang suntok",
"descriptionComplete": "Nagdulot ng 100% damage sa isang suntok",
"descriptionFull": "Magdulot ng 100% damage ng isang suntok sa ${LEVEL}",
"descriptionFullComplete": "Nagdulot ng 100% damage sa isang suntok sa ${LEVEL}",
- "name": "Sobrang Mega Na Suntok"
+ "name": "Pinakakirot Na Suntok"
},
"Super Punch": {
"description": "Magdulot ng 50% damage sa isang suntok",
"descriptionComplete": "Nagdulot ng 50% damage sa isang suntok",
"descriptionFull": "Magdulot ng 50% damage sa isang suntok sa ${LEVEL}",
"descriptionFullComplete": "Nagdulot ng 50% damage sa isang suntok sa ${LEVEL}",
- "name": "Sobrang Suntok"
+ "name": "Masakit Na Suntok"
},
"TNT Terror": {
"description": "Pumatay ng 6 na kalaban gamit ang TNT",
"descriptionComplete": "Pinatay ng 6 na kalaban gamit ang TNT",
"descriptionFull": "Pumatay ng 6 na kalaban gamit ang TNT sa ${LEVEL}",
"descriptionFullComplete": "Pinatay ng 6 na kalaban gamit ang TNT sa ${LEVEL}",
- "name": "Takutan ng TNT"
+ "name": "Kaguluhan ng TNT"
},
"Team Player": {
"descriptionFull": "Magsimula ng laro na mayroong 4+ na manlalaro",
@@ -283,7 +287,7 @@
"name": "Manlalaro Ng Koponan"
},
"The Great Wall": {
- "description": "Itigil ang bawat kalaban",
+ "description": "Patayin ang lahat ng kalaban",
"descriptionComplete": "Pinigilan ang bawat kalaban",
"descriptionFull": "Itigil ang bawat kalaban sa ${LEVEL}",
"descriptionFullComplete": "Pinigilan ang bawat kalaban sa ${LEVEL}",
@@ -306,49 +310,54 @@
"Uber Football Victory": {
"description": "Ipanalo ang laro",
"descriptionComplete": "Nanalo ang laro",
- "descriptionFull": "I-panalo ang laro sa ${LEVEL}",
+ "descriptionFull": "Ipanalo ang laro sa ${LEVEL}",
"descriptionFullComplete": "Manalo ang laro sa ${LEVEL}",
"name": "${LEVEL} Natagumpay"
},
"Uber Onslaught Victory": {
- "description": "Talunin ang lahat na mga kaway",
- "descriptionComplete": "Natalo ang lahat na mga kaway",
- "descriptionFull": "Talunin ang lahat na mga kaway sa ${LEVEL}",
- "descriptionFullComplete": "Natalo ang lahat na mga kaway sa ${LEVEL}",
+ "description": "Talunin ang lahat na mga yugto",
+ "descriptionComplete": "Natalo ang lahat na mga yugto",
+ "descriptionFull": "Talunin ang lahat na mga yugto sa ${LEVEL}",
+ "descriptionFullComplete": "Natalo ang lahat na mga yugto sa ${LEVEL}",
"name": "Nanalo sa ${LEVEL}"
},
"Uber Runaround Victory": {
- "description": "Tapusin ang lahat na kaway",
- "descriptionComplete": "Natapos ang lahat na mga kaway",
- "descriptionFull": "Tapusin ang lahat na mga kaway sa ${LEVEL}",
- "descriptionFullComplete": "Natapos ang lahat na mga kaway sa ${LEVEL}",
+ "description": "Tapusin ang lahat na yugto",
+ "descriptionComplete": "Natapos ang lahat na mga yugto",
+ "descriptionFull": "Tapusin ang lahat na mga yugto sa ${LEVEL}",
+ "descriptionFullComplete": "Natapos ang lahat na mga yugto sa ${LEVEL}",
"name": "${LEVEL} Natagumpay"
}
},
"achievementsRemainingText": "Ang Mga Natitirang Nakamtan:",
- "achievementsText": "Achievements",
- "achievementsUnavailableForOldSeasonsText": "Pasensya na, hindi available ang mga detalye ng achievements para sa mga lumang seasons.",
+ "achievementsText": "Mga Nakamtan",
+ "achievementsUnavailableForOldSeasonsText": "Pasensya na, hindi maibalik ang mga detalye ng achievements para sa mga lumang seasons.",
"activatedText": "Na-aktibo ang ${THING}.",
"addGameWindow": {
- "getMoreGamesText": "Kukuha ng higit pang mga laro…",
+ "getMoreGamesText": "Kumuha ng Higit pang mga Laro…",
"titleText": "Magdagdag Ng Laro"
},
- "allowText": "Payagan",
+ "addToFavoritesText": "Ilagay sa Mga Paborito",
+ "addedToFavoritesText": "Nakalagay na ang '${NAME}' sa Mga Paborito.",
+ "allText": "Lahat",
+ "allowText": "Payagin",
"alreadySignedInText": "Ang iyong account ay naka-sign in mula sa isa pang device;\nMangyaring lumipat ng mga accounts o isara ang laro sa iyong\niba pang mga device at subukan muli.",
"apiVersionErrorText": "Hindi ma-load ang module ${NAME}; naka-target ang api-version ${VERSION_USED}; kailangan namin ${VERSION_REQUIRED}",
+ "applyText": "Gamitin",
+ "areYouSureText": "Sigurado ka ba?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(Lalabas ang “Auto” ng ito kapag nakasaksak ang headphones)",
"headRelativeVRAudioText": "Head-Relative VR Audio",
- "musicVolumeText": "Volume ng Musika",
+ "musicVolumeText": "Lakas ng Musika",
"soundVolumeText": "Lakas ng Tunog",
"soundtrackButtonText": "Mga Soundtrack",
- "soundtrackDescriptionText": "(I-assign ang iyong sariling musika para magtugtug kapag naglalaro)",
- "titleText": "Audio"
+ "soundtrackDescriptionText": "(Maglagay ang iyong sariling musika na maitugtog habang naglalaro)",
+ "titleText": "Tugtugan"
},
"autoText": "Auto",
"backText": "Bumalik",
- "banThisPlayerText": "I-ban ang Manlalarong Ito",
- "bestOfFinalText": "Pinakamahusay-sa-${COUNT} Final",
+ "banThisPlayerText": "Bawalin ang Manlalarong Ito",
+ "bestOfFinalText": "Wakas ng Pinakamahusay-sa-${COUNT}",
"bestOfSeriesText": "Pinakamahusay sa ${COUNT} series:",
"bestOfUseFirstToInstead": 0,
"bestRankText": "Ang iyong pinakamahusay ay #${RANK}",
@@ -358,15 +367,25 @@
"boostText": "Palakasin",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} naka-configure ito sa mismong app.",
"buttonText": "pindutan",
- "canWeDebugText": "Gusto mo ba na ang BombSquad ay automatic na mag report ng\nbugs, crashes, at mga basic usage na info na i-sent sa developer?\n\nHindi ito naglalaman ng mga personal information at makatulong ito\npara ang laro ay gumagana at bug-free.",
+ "canWeDebugText": "Gusto mo ba na ang ${APP_NAME} ay automatic na mag report ng\nbugs, crashes, at mga basic usage na info na i-sent sa developer?\n\nHindi ito naglalaman ng mga personal information at makatulong ito\npara ang laro ay gumagana at bug-free.",
"cancelText": "Kanselahin",
"cantConfigureDeviceText": "Pasensya na, ang ${DEVICE} na ito ay hindi ma-configure.",
"challengeEndedText": "Natapos na ang challenge na ito.",
- "chatMuteText": "I-mute ang Chat",
+ "chatMuteText": "Tahimikin Ang Chat Mo",
"chatMutedText": "Na-mute ang Chat",
- "chatUnMuteText": "I-unmute ang Chat",
+ "chatUnMuteText": "Ipaganahin Mo Na ang Chat",
+ "chests": {
+ "prizeOddsText": "Premyong Panumbasan",
+ "reduceWaitText": "Magbawas ng Oras",
+ "slotDescriptionText": "Ito'y pinaglalaman ng mga baul.\n\nMagtipon ng mga baul sa pamamagitan \nng paglalaro ng kampanya, paligsahan, \nat pagkuha ng mga nakamtan.",
+ "slotText": "Puwang ng Baul ${NUM}",
+ "slotsFullWarningText": "BABALA: Lahat ng mga patlang ng baul ay puno na. \nAng mga baul na natanggap sa ngayon ay mawawala.",
+ "unlocksInText": "Magbubukas sa loob ng"
+ },
"choosingPlayerText": "",
- "completeThisLevelToProceedText": "I complete mo muna\nang level na ito bago ka mag-proceed!",
+ "claimText": "Ikunin",
+ "codesExplainText": "Binigay ng isang taong gumagawa ng larong ito ang mga kowd \npara kilalanin at maitama ang mga problema sa account.",
+ "completeThisLevelToProceedText": "Tapusin mo muna\nang antas na ito bago tumuloy!",
"completionBonusText": "Bonus sa Pagkumpleto nito:",
"configControllersWindow": {
"configureControllersText": "I-configure ang mga Controller",
@@ -377,7 +396,7 @@
"ps3Text": "PS3 Controllers",
"titleText": "Mga Controller",
"wiimotesText": "Wiimotes",
- "xbox360Text": "Xbox 360 Controllers"
+ "xbox360Text": "Controllers ng Xbox 360"
},
"configGamepadSelectWindow": {
"androidNoteText": "Tandaan: nag-iiba-iba ang suporta sa controller sa mga devices at bersyon ng Andriod.",
@@ -385,25 +404,25 @@
"titleText": "I-configure ang mga Controller"
},
"configGamepadWindow": {
- "advancedText": "Advanced",
- "advancedTitleText": "Advanced na Setup ng Controller",
+ "advancedText": "Mga Iba Pa",
+ "advancedTitleText": "Iba Pang Setup ng Controller",
"analogStickDeadZoneDescriptionText": "(itaas ito kapag ang iyong karakter ay nag ‘d-drift’ kapag binitawan mo ang stick)",
"analogStickDeadZoneText": "Analog Stick Dead Zone",
"appliesToAllText": "(nalalapat sa lahat ng controller ng ganitong uri)",
"autoRecalibrateDescriptionText": "(paganahin ito kung ang iyong karakter ay hindi gumagalaw ng buong bilis)",
"autoRecalibrateText": "Auto-Recalibrate Analog Stick",
"axisText": "aksis",
- "clearText": "alisin",
- "dpadText": "dpad",
+ "clearText": "ibura",
+ "dpadText": "DPAD",
"extraStartButtonText": "Extra na Start Button",
"ifNothingHappensTryAnalogText": "Kapag walang gumagana, i-try na i-assign sa analog stick.",
"ifNothingHappensTryDpadText": "Kapag hindi gumana, i-try na i-assign sa d-pad.",
"ignoreCompletelyDescriptionText": "(pigilan ang controller na ito na maapektuhan ang alinman sa laro o mga menu)",
"ignoreCompletelyText": "Huwag Pansinin",
- "ignoredButton1Text": "Pindutan Na ‘Di Pansinin 1",
- "ignoredButton2Text": "Pindutan Na ‘Di Pansinin 2",
- "ignoredButton3Text": "Pindutan Na ‘Di Pansinin 3",
- "ignoredButton4Text": "Pindutan Na ‘Di Pansinin 4",
+ "ignoredButton1Text": "Pindutan Na ‘Di Pinansin 1",
+ "ignoredButton2Text": "Pindutan Na ‘Di Pinansin 2",
+ "ignoredButton3Text": "Pindutan Na ‘Di Pinansin 3",
+ "ignoredButton4Text": "Pindutan Na ‘Di Pinansin 4",
"ignoredButtonDescriptionText": "(gamitin ito para ma-prevent ang ‘home’ o ‘sync’ buttons na nakakaapekto sa UI)",
"pressAnyAnalogTriggerText": "Pindutin ang anumang analog trigger…",
"pressAnyButtonOrDpadText": "Pindutin ang anumang pindutan o dpad…",
@@ -419,7 +438,7 @@
"secondaryEnableText": "Paganahin",
"secondaryText": "Pangalawang Controller",
"startButtonActivatesDefaultDescriptionText": "(i-off ito kung ang iyong start button ay higit pa sa isang ‘menu’ button)",
- "startButtonActivatesDefaultText": "Start Button Activates Defualt Widget",
+ "startButtonActivatesDefaultText": "Ang Pindutang Pagsisimulahin Ay Binubukas Ang Default Widget",
"titleText": "Setup ng Controller",
"twoInOneSetupText": "2-in-1 na Setup ng Controller",
"uiOnlyDescriptionText": "(pigilan ang controller na ito mula sa aktwal na pagsali sa isang laro)",
@@ -446,12 +465,14 @@
"swipeText": "mag-swipe",
"titleText": "I-configure ang Touchscreen"
},
+ "configureDeviceInSystemSettingsText": "Ang ${DEVICE} ay pwede ma-configure sa System Settings app.",
"configureItNowText": "I-configure ngayon?",
"configureText": "Configure",
"connectMobileDevicesWindow": {
"amazonText": "Amazon Appstore",
"appStoreText": "App Store",
- "bestResultsText": "Para sa pinakamahusay na mga resulta, kakailanganin mo ng isang lag-free na wifi network. Kaya mo\nbawasan ang wifi lag sa pamamagitan ng pag-off ng iba pang mga wireless na device, sa pamamagitan ng\nnaglalaro malapit sa iyong wifi router, at sa pamamagitan ng pagkonekta sa\ndirektang host ng laro sa network sa pamamagitan ng ethernet.",
+ "bestResultsScale": 0.6,
+ "bestResultsText": "Para sa pinakamahusay na mga resulta, kakailanganin mo ng isang lag-free na wifi network. Kaya mo\nbawasan ang wifi lag sa pamamagitan ng pag-off ng iba pang mga wireless na device, sa pamamagitan ng\nnaglalaro malapit sa iyong wifi router, at sa pamamagitan ng pagkonekta sa\ndirektang pinaghanda ng laro sa network sa pamamagitan ng ethernet.",
"explanationText": "Para gumamit ng smart-phone o tablet bilang wireless controller,\ni-install ang \"${REMOTE_APP_NAME}\" na app dito. Anumang bilang ng mga device\nmaaaring kumonekta sa isang larong ${APP_NAME} sa Wi-Fi, at libre ito!",
"forAndroidText": "para sa Andriod:",
"forIOSText": "para sa iOS:",
@@ -467,11 +488,11 @@
"activenessInfoText": "Ang multiplier na ito ay tumataas sa mga araw kung kailan ka\nmaglaro at bumaba sa mga araw na hindi mo ginagawa.",
"activityText": "Aktibidad",
"campaignText": "Kampanya",
- "challengesInfoText": "Makakuha ng mga premyo para sa pagkumpleto ng mga mini-game.\n\nAng mga premyo at antas ng kahirapan ay tumataas\nsa bawat oras na ang isang hamon ay nakumpleto at\nbumaba kapag ang isa ay nag-expire o na-forfeit.",
+ "challengesInfoText": "Makakuha ng mga premyo para sa pagkumpleto ng mga mini-game.\n\nAng mga premyo at antas ng kahirapan ay tumataas\nsa bawat oras na ang isang hamon ay nakumpleto at\nbumaba kapag ang isa ay nawala na o naparusa.",
"challengesText": "Mga Challenges",
"currentBestText": "Kasalukuyang Pinakamahusay",
"customText": "Kustom",
- "entryFeeText": "Pasok",
+ "entryFeeText": "Pumasok",
"forfeitConfirmText": "Isuko ang hamon na ito?",
"forfeitNotAllowedYetText": "Ang hamon na ito ay hindi pa maaaring mawala.",
"forfeitText": "Forfeit",
@@ -494,8 +515,8 @@
"skipWaitText": "Lagktawang Paghintay",
"timeRemainingText": "Natitirang Oras",
"toRankedText": "Sagad Sa Ranggo",
- "totalText": "kabuuan",
- "tournamentInfoText": "Makipagkumpitensya para sa matataas na marka sa\nibang mga manlalaro sa iyong liga.\n\nAng mga premyo ay iginagawad sa pinakamataas na iskor\nmga manlalaro kapag nag-expire ang oras ng tournament.",
+ "totalText": "kabuuhan",
+ "tournamentInfoText": "Makipagkumpitensya para sa matataas na marka sa\nibang mga manlalaro sa iyong liga.\n\nAng mga premyo ay iginagawad sa pinakamataas na iskor\nmga manlalaro kapag natapos ang oras ng tournament.",
"welcome1Text": "Maligayang pagdating sa ${LEAGUE}. Maaari mong pagbutihin ang iyong\nranggo ng liga sa pamamagitan ng pagkamit ng mga star rating, pagkumpleto\nmga tagumpay, at panalong tropeo sa mga paligsahan.",
"welcome2Text": "Maaari ka ring makakuha ng mga tiket mula sa marami sa parehong mga aktibidad.\nMaaaring gamitin ang mga tiket para i-unlock ang mga bagong character, mapa, at\nmini-games, para makapasok sa mga tournament, at higit pa.",
"yourPowerRankingText": "Iyong Power Ranking:"
@@ -503,27 +524,27 @@
"copyConfirmText": "Nakopya sa clipboard.",
"copyOfText": "Kopya ng ${NAME}",
"copyText": "I-kopya",
- "createEditPlayerText": "",
+ "createEditPlayerText": "",
"createText": "Gumawa",
"creditsWindow": {
- "additionalAudioArtIdeasText": "Adisyonal Audio, Agang Artwork, Ideya ni ${NAME}",
- "additionalMusicFromText": "Adisyonal musika galing kay ${NAME}",
+ "additionalAudioArtIdeasText": "Adisyonal na Pagtugtugin, Sining Pang-aga, at Pagharaya ni ${NAME}",
+ "additionalMusicFromText": "Adisyonal musika galing sa ${NAME}",
"allMyFamilyText": "Lahat sa aking kaibigan at pamilya ko na tumulong sa play test",
- "codingGraphicsAudioText": "Coding, Graphics, at Audio ni ${NAME}",
+ "codingGraphicsAudioText": "Pagkukudigo, Paggrapikan, at Pagtugtugin ni ${NAME}",
"languageTranslationsText": "Pagsasalin Ng Wika:",
"legalText": "Ligal:",
"publicDomainMusicViaText": "Public-domain music mula sa ${NAME}",
"softwareBasedOnText": "Ang software na ito ay batay sa bahagi ng gawain ng ${NAME}",
- "songCreditText": "${TITLE} Ginawa ni ${PERFORMER}\nBinubuo ni ${COMPOSER}, Inayos ni ${ARRANGER}, Na-publish ni ${PUBLISHER},\nSa kagandahang-loob ng ${SOURCE}",
+ "songCreditText": "${TITLE} Pinagbigkas ng ${PERFORMER}\nBinubuo ni ${COMPOSER}, Inayos ni ${ARRANGER}, Inilathala ng ${PUBLISHER},\nSa kagandahang-loob ng ${SOURCE}",
"soundAndMusicText": "Tunog at Musika",
"soundsText": "Mga Tunog (${SOURCE}):",
"specialThanksText": "Espesyal Na Pasasalamat:",
- "thanksEspeciallyToText": "Salamat, lalo na kay ${NAME}",
- "titleText": "${APP_NAME} Mga Kredito",
+ "thanksEspeciallyToText": "Salamat, lalo na ang ${NAME}",
+ "titleText": "${APP_NAME} Karangalan",
"whoeverInventedCoffeeText": "At ang sino man na nag-imbento ng kape"
},
"currentStandingText": "Ang kasalukuyang tayo mo ay #${RANK}",
- "customizeText": "I-customize...",
+ "customizeText": "Ayusin...",
"deathsTallyText": "${COUNT} pagkamatay",
"deathsText": "Pagkamatay",
"debugText": "debug",
@@ -540,76 +561,82 @@
"stressTestRoundDurationText": "Pagtagal Ng Round",
"stressTestTitleText": "Stress Test",
"titleText": "Benchmarks at Stress Test",
- "totalReloadTimeText": "Kabuuang reload time: ${TIME} (tingnan Ang log para sa mga detalye)"
+ "totalReloadTimeText": "Kabuuhang reload time: ${TIME} (tingnan Ang log para sa mga detalye)"
},
- "defaultGameListNameText": "Default ${PLAYMODE} Playlist",
- "defaultNewGameListNameText": "Ang aking ${PLAYMODE} Playlist",
+ "defaultGameListNameText": "Orihinal Na Laruhang Pang-${PLAYMODE}",
+ "defaultNewGameListNameText": "Ang Aking Laruhang Pang-${PLAYMODE}",
"deleteText": "Tanggalin",
"demoText": "Demo",
- "denyText": "Tanggihan",
+ "denyText": "Tanggihin",
"deprecatedText": "Hindi Na Uso",
+ "descriptionText": "Paglalarawan",
"desktopResText": "Desktop Res",
- "deviceAccountUpgradeText": "Babala:\nNaka-sign in ka gamit ang isang device account (${NAME}).\nMawawala na yan sa kinakabukasang update.\nMag-upgrade sa isang V2 Account kung gusto mong panatilihin ang iyong pag-unlad.",
+ "deviceAccountUpgradeText": "Babala:\nNaka-sign in ka gamit ang isang device account (${NAME}).\nMawawala na yan sa kinakabukasang pagbabago.\nMag-upgrade sa isang V2 Account kung gusto mong panatilihin ang iyong pag-unlad.",
"difficultyEasyText": "Madali",
"difficultyHardOnlyText": "Mahirap Na Mode Lang",
"difficultyHardText": "Mahirap",
- "difficultyHardUnlockOnlyText": "Itong level na ito ay naka-unlock sa Mahirap na mode lang.\nSa tingin mo ba mayroong ano ang kinakailangan!?!?!",
+ "difficultyHardUnlockOnlyText": "Itong level na ito ay maibukas sa Mahirap na mode lamang.\nSa tingin mo ba mayroong ka nang kinakailangan!?!?!",
"directBrowserToURLText": "Mangyaring idirekta Ang isang web-browser sa sumusunod na URL:",
- "disableRemoteAppConnectionsText": "I-disable Ang Mga Remote-App Na Konekyson",
+ "disableRemoteAppConnectionsText": "Itigil Ang Koneksyon Ng Mga Remote-App",
"disableXInputDescriptionText": "Pumayag ng higit sa 4 na controllers ngunit maaaring hindi mabuti ang kalagay",
"disableXInputText": "Disable XInput",
- "doneText": "Tapos",
+ "disabledText": "Naka-disabled",
+ "discardText": "Iwaksi",
+ "discordFriendsText": "Gusto mong may kalaro kang mga tao na gusto mo?\nSumali sa aming Discord server at hanapin mo ang kaibiganin mo!",
+ "discordJoinText": "Sumali sa Discord",
+ "doneText": "Tapusin",
"drawText": "Patas",
- "duplicateText": "I-duplicate",
+ "duplicateText": "Duplikaduhin",
"editGameListWindow": {
"addGameText": "Idagdag na\nLaro",
"cantOverwriteDefaultText": "Hindi ma-overwrite ang default playlist!",
- "cantSaveAlreadyExistsText": "Isang playlist na may ganyang pangalan na!",
+ "cantSaveAlreadyExistsText": "Mayroon nang isang playlist na may ganyang pangalan!",
"cantSaveEmptyListText": "Hindi ma-save ang walang laman na playlist!",
- "editGameText": "I-Edit ang\nLaro",
+ "editGameText": "Ayusin ang\nLaro",
"listNameText": "Pangalan Ng Playlist",
"nameText": "Pangalan",
"removeGameText": "Tanggalin ang\nLaro",
"saveText": "I-save Ang Listahan",
- "titleText": "Editor Ng Playlist"
+ "titleText": "Pag-ayusan Ng Playlist"
},
"editProfileWindow": {
- "accountProfileInfoText": "Itong espesyal na profile ay may\npangalan at icon batay sa iyong account.\n\n${ICONS}\n\nGumawa ng custom na profile para gamitin ng \nmagkaibang pangalan o custom icons.",
+ "accountProfileInfoText": "Itong espesyal na karakter ay may\npangalan at tatak batay sa iyong account.\n\n\n${ICONS}\n\nGumawa ng sariling karakter para magamit ang iibang pangalan o tatak.",
"accountProfileText": "(account profile)",
- "availableText": "Ang pangalang \"${NAME}” na ito ay maari mong gamitin pang-icon",
+ "availableText": "Ang pangalang \"${NAME}” na ito ay maaari mong gamitin pang-tatak",
"characterText": "karakter",
- "checkingAvailabilityText": "Titignan ko kung maaari mo gamitin ang \"${NAME}\"...",
+ "checkingAvailabilityText": "Titignan kung maaari mo gamitin ang \"${NAME}\"...",
"colorText": "kulay",
- "getMoreCharactersText": "Kumuha Ka Pang Mga Karakter...",
- "getMoreIconsText": "Kumuha Ka Pang Mga Icons...",
- "globalProfileInfoText": "Golbal player profiles ay garantisadong magkaroon ng unique na pangalan worldwide.\nNa-include nila rin ang custom icons.",
- "globalProfileText": "(global na profile)",
- "highlightText": "highlight",
- "iconText": "Mga icon",
- "localProfileInfoText": "Ang mga profile Ng lokal na manlalaro ay walang mga icon at ang kanilang mga \npangalan ay hindi garantisadong unique. I-upgrade para maging isang global \nprofile at ma-reserve ng isang unique na pangalan at ma-add ng custom icon.",
- "localProfileText": "(lokal na profile)",
+ "getMoreCharactersText": "Bumili ng Higit pang mga Karakter...",
+ "getMoreIconsText": "Bumili ng Higit pang Tatak...",
+ "globalProfileInfoText": "Ang mga karakter ng manlalaro na panglahatan ay garantisadong magkaroon \nng magkaiba na pangalan sa buong mundo. Mayroon din silang ibang tatak.",
+ "globalProfileText": "(karakter para sa mundo)",
+ "highlightText": "Pangalawang Kulay",
+ "iconText": "tatak",
+ "localProfileInfoText": "Ang mga karakter ng lokal na manlalaro ay wala silang tatak at ang kanilang \nmga pangalan ay hindi garantisadong pambihira. Idakila iyong pinakasikat\n na karakter at ang sariling pambihirang pangalan at tatak para sa buong mundo.",
+ "localProfileText": "(lokal na karakter)",
"nameDescriptionText": "Pangalan Ng Manlalaro",
"nameText": "Pangalan",
- "randomText": "random",
- "titleEditText": "I-Edit Ang Profile",
+ "profileAlreadyExistsText": "Mayroon nang isang manlalaro na may ganyang pangalan.",
+ "randomText": "basta-basta",
+ "titleEditText": "Ayusin Ang Profile",
"titleNewText": "Bagong Profile",
- "unavailableText": "hindi available ang \"${NAME}\"; sumubok ng ibang pangalan",
- "upgradeProfileInfoText": "Irereserba nito ang pangalan ng iyong manlalaro sa buong mundo\nat nagbibigay-daan sa iyong magtalaga ng custom na icon dito.",
- "upgradeToGlobalProfileText": "Upgrade sa Global na Profile"
+ "unavailableText": "Meron na o Hindi wasto ang \"${NAME}\" na ito; subukin ang ibang pangalan.",
+ "upgradeProfileInfoText": "Irereserba nito ang pangalan ng iyong manlalaro sa buong mundo\nat nagbibigay-daan sa iyong magtalaga ng ibang tatak dito.",
+ "upgradeToGlobalProfileText": "Taasin sa Global na Profile"
},
"editSoundtrackWindow": {
"cantDeleteDefaultText": "Hindi mo maitanggal Ang default soundtrack",
- "cantEditDefaultText": "Hindi ma-edit ang default soundtrack. I-duplicate mo o gumawa Ng bago",
- "cantOverwriteDefaultText": "Hindi ma-overwrite ang default soundtrack",
- "cantSaveAlreadyExistsText": "Isang soundtrack na may ganyang pangalan na!",
- "defaultGameMusicText": "",
- "defaultSoundtrackNameText": "Default na Soundtrack",
+ "cantEditDefaultText": "Hindi pwede ayusin ang orihinal soundtrack.Kopyahin mo nalang o gumawa ng bago",
+ "cantOverwriteDefaultText": "Hindi maibahin ang orihinal na soundtrack",
+ "cantSaveAlreadyExistsText": "May isang soundtrack na may ganyang pangalan na!",
+ "defaultGameMusicText": "",
+ "defaultSoundtrackNameText": "Orihinal na Soundtrack",
"deleteConfirmText": "Itanggal Ang Soundtrack:\n\n'${NAME}'?",
"deleteText": "I-delete Ang\nSoundtrack",
- "duplicateText": "I-duplicate Ang\nSoundtrack",
- "editSoundtrackText": "Editor Ng Soundtrack",
- "editText": "I-edit Ang\nSoundtrack",
- "fetchingITunesText": "kumuha ng Music App playlists...",
+ "duplicateText": "Duplikaduhin Ang\nSoundtrack",
+ "editSoundtrackText": "Ayusan Ng Soundtrack",
+ "editText": "Ayusin Ang\nSoundtrack",
+ "fetchingITunesText": "kumuha ng playlist ng Music App...",
"musicVolumeZeroWarning": "Paunawa: Ang volume ng musika ay nakatakda sa 0",
"nameText": "Pangalan",
"newSoundtrackNameText": "Ang Aking Soundtrack ${COUNT}",
@@ -624,11 +651,12 @@
"useMusicFileText": "File Ng Musika (mp3, etc)",
"useMusicFolderText": "Folder Ng Mga File Ng Musika"
},
- "editText": "I-edit",
+ "editText": "Ayusin",
+ "enabledText": "Nakagana",
"endText": "Itigil",
- "enjoyText": "Ikasiya!",
- "epicDescriptionFilterText": "${DESCRIPTION} sa isang epic na slow motion.",
- "epicNameFilterText": "Epikong ${NAME}",
+ "enjoyText": "Ikasaya!",
+ "epicDescriptionFilterText": "${DESCRIPTION} sa isang dakilang pabagal na galaw.",
+ "epicNameFilterText": "Dakilang ${NAME}",
"errorAccessDeniedText": "walang pahintulot",
"errorDeviceTimeIncorrectText": "Ang oras ng iyong device ay di tama nang ${HOURS} na oras.\nIto ay malamang na magdulot ng mga iba’t ibang problema.\nPakisuri ang mga setting ng iyong oras at time-zone.",
"errorOutOfDiskSpaceText": "Wala sa puwang ng disk",
@@ -636,6 +664,8 @@
"errorText": "Error",
"errorUnknownText": "error na ‘di malaman",
"exitGameText": "Exit mula sa ${APP_NAME}?",
+ "expiredAgoText": "Tinapos na noong ${T}",
+ "expiresInText": "Magtatapos sa ${T}",
"exportSuccessText": "Na-export ang '${NAME}'.",
"externalStorageText": "External na Storage",
"failText": "Bigo",
@@ -647,85 +677,88 @@
"useThisFolderButtonText": "Gamitin Ang Folder Na Ito"
},
"filterText": "Salain",
- "finalScoreText": "Huling Marka",
- "finalScoresText": "Huling Mga Marka",
- "finalTimeText": "Huling Oras",
- "finishingInstallText": "Pagtatapos ng pag-install; sandali lang...",
+ "finalScoreText": "Wakas Na Marka",
+ "finalScoresText": "Wakas Ng Mga Marka",
+ "finalTimeText": "Wakas Na Oras",
+ "finishingInstallText": "Tumatapos ang paglalagay; sandali lang po...",
"fireTVRemoteWarningText": "* Para sa isang mas mahusay na karanasan, gamitin\nGame Controllers o i-install ang\n'${REMOTE_APP_NAME}' app sa iyong\nmga telepono at tablet.",
- "firstToFinalText": "Una-sa-${COUNT} Wakas",
+ "firstToFinalText": "Wakas sa Unang Makakuha ng ${COUNT} Puntos",
"firstToSeriesText": "Una-sa-${COUNT} Panunuran",
"fiveKillText": "LIMANG PAGPATAY!!!",
- "flawlessWaveText": "Walang Kapintasan na Kaway!",
+ "flawlessWaveText": "Hindi Nasaktan!",
"fourKillText": "APAT NA PAGPATAY!!!",
- "friendScoresUnavailableText": "Hindi available ang marka ng kaibigan",
+ "friendScoresUnavailableText": "Walang maipakita ang marka ng kaibigan",
"gameCenterText": "GameCenter",
"gameCircleText": "GameCircle",
"gameLeadersText": "Mga Pinuno Ng Pang-${COUNT} na Laro",
"gameListWindow": {
"cantDeleteDefaultText": "Hindi pwedeng itanggal ang default na playlist.",
- "cantEditDefaultText": "Hindi ma-edit ang default playlist! I-duplicate mo o gumawa ng bago.",
+ "cantEditDefaultText": "Hindi pwede ayusin ang orihinal na playlist! Ipakopya mo o gumawa ng bago.",
"cantShareDefaultText": "Hindi pwede ma-share ang default na playlist.",
"deleteConfirmText": "Tanggalin ang \"${LIST}\"?",
"deleteText": "Tanggalin ang\nPlaylist",
- "duplicateText": "I-duplicate ang\nPlaylist",
- "editText": "I-edit ang\nPlaylist",
+ "duplicateText": "Dalawahin ang\nPlaylist",
+ "editText": "Ayusin ang\nPlaylist",
"newText": "Gumawa ng\nPlaylist",
+ "pointsToWinText": "Puntos Upang Maitupad",
+ "seriesLengthText": "Haba ng Serye",
"showTutorialText": "Ipakita Ang Tutorial",
- "shuffleGameOrderText": "I-shuffle Ang Kaayusan Ng Laro",
- "titleText": "I-customize Ang ${TYPE} Playlists"
+ "shuffleGameOrderText": "Paghalu-haluin Ang Kaayusan Ng Laro",
+ "titleText": "Ayusin Ang Playlist ng ${TYPE}"
},
"gameSettingsWindow": {
- "addGameText": "Maglagay ng Laro"
+ "addGameText": "Magdagdag ng Laro"
},
- "gamesToText": "${WINCOUNT} na laro sa ${LOSECOUNT}",
+ "gamesToText": "${WINCOUNT} na laro kontra sa ${LOSECOUNT}",
"gatherWindow": {
- "aboutDescriptionLocalMultiplayerExtraText": "Tandaan: anumang device sa isang party ay maaaring magkaroon ng higit pa\nkaysa sa isang manlalaro kung mayroon kang sapat na mga controller.",
+ "aboutDescriptionLocalMultiplayerExtraText": "Tandaan: anumang device sa isang partido ay maaaring magkaroon ng higit pa\nkaysa sa isang manlalaro kung mayroon kang sapat na mga controller.",
"aboutDescriptionText": "Gamitin ang mga tab na ito para mag-assemble ng party.\n\nPwede kang maglaro at mag paligsahan kasama ang iyong mga kaibigan sa \niba't ibang device sa pamamagitan ng “Party”.\n\nGamitin ang pindutin na ${PARTY} sa kanang tuktok upang\nmakipag-chat at makipag-ugnayan sa iyong partido.\n(sa isang controller, pindutin ang ${BUTTON} habang nasa isang menu)",
"aboutText": "Tungkulin",
- "addressFetchErrorText": "",
+ "addressFetchErrorText": "",
"appInviteMessageText": "Pinadalhan ka ni ${NAME} ng ${COUNT} ticket sa ${APP_NAME}",
- "appInviteSendACodeText": "Mag-send ka sa Kanila ng Code",
- "appInviteTitleText": "${APP_NAME} App Invite",
+ "appInviteSendACodeText": "Padalhan Ng Kowd",
+ "appInviteTitleText": "Paanyaya sa ${APP_NAME}",
"bluetoothAndroidSupportText": "(gumagana sa anumang Android device na mayroong Bluetooth)",
- "bluetoothDescriptionText": "Mag-host/sumali sa isang party sa pamamagitan ng Bluetooth:",
- "bluetoothHostText": "Mag-host gamit ang Bluetooth",
+ "bluetoothDescriptionText": "Maghanda/sumali sa isang partido sa pamamagitan ng Bluetooth:",
+ "bluetoothHostText": "Maghanda gamit ang Bluetooth",
"bluetoothJoinText": "Sumali gamit ang Bluetooth",
"bluetoothText": "Bluetooth",
- "checkingText": "nag-checking…",
- "copyCodeConfirmText": "Nakopya ang code sa clipboard.",
- "copyCodeText": "I-kopya ang Code",
+ "checkingText": "sinusuri...",
+ "copyCodeConfirmText": "Nakopya na ang kowd sa clipboard.",
+ "copyCodeText": "Kopyahin ang kowd",
"dedicatedServerInfoText": "Para sa pinakamahusay na mga resulta, mag-set up ng nakalaang server. Tingnan ang bombsquadgame.com/server para malaman kung paano.",
- "disconnectClientsText": "Ididiskonekta nito ang ${COUNT} (mga) manlalaro\nsa iyong party. Sigurado ka ba?",
+ "descriptionShortText": "Ipamahala ang panig \"Sumama\" upang magtipun-tipon ng isang partido.",
+ "disconnectClientsText": "Ididiskonekta nito ang ${COUNT} (mga) manlalaro\nsa iyong partido. Sigurado ka ba?",
"earnTicketsForRecommendingAmountText": "Makakatanggap ang mga kaibigan ng ${COUNT} na tiket kung susubukan nila ang laro\n(at makakatanggap ka ng ${YOU_COUNT} para sa bawat gagawa)",
- "earnTicketsForRecommendingText": "I-share ang laro\npara makatanggap ng libreng tickets…",
+ "earnTicketsForRecommendingText": "Ibahagi ang laro\npara makatanggap ng mga libreng tiket…",
"emailItText": "I-email",
- "favoritesSaveText": "I-save bilang paborito",
+ "favoritesSaveText": "Ipunin Bilang Paborito",
"favoritesText": "Mga Paborito",
- "freeCloudServerAvailableMinutesText": "Available ang susunod na libreng cloud server sa loob ng ${MINUTES} (na) minuto.",
+ "freeCloudServerAvailableMinutesText": "Mayroon ang susunod na libreng cloud server sa loob ng ${MINUTES} (na) minuto.",
"freeCloudServerAvailableNowText": "Mayroong libreng cloud server!",
- "freeCloudServerNotAvailableText": "Walang available na libreng cloud server.",
+ "freeCloudServerNotAvailableText": "Walang libreng cloud server sa ngayon.",
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} na mga tiket mula sa ${NAME}",
"friendPromoCodeAwardText": "Makakatanggap ka ng ${COUNT} na tiket sa tuwing ito ay gagamitin.",
- "friendPromoCodeExpireText": "Mag-e-expire ang code sa loob ng ${EXPIRE_HOURS} na oras at gagana lang para sa mga bagong manlalaro.",
- "friendPromoCodeInstructionsText": "Upang gamitin ito, buksan ang ${APP_NAME} at pumunta sa \"Mga Setting->Advanced->Ilagay ang Code\".\nTingnan ang bombsquadgame.com para sa mga link sa pag-download para sa lahat ng sinusuportahang platform.",
+ "friendPromoCodeExpireText": "Mawawalan-bisa ang kowd sa loob ng ${EXPIRE_HOURS} na oras at gagana lang para sa mga bagong manlalaro.",
+ "friendPromoCodeInstructionsText": "Upang gamitin ito, buksan ang ${APP_NAME} at pumunta sa \"Mga Setting->Mga Iba Pa->Ilagay ang Impormasyon\".\nTingnan ang bombsquadgame.com para sa mga link sa pag-download para sa lahat ng sinusuportahang platform.",
"friendPromoCodeRedeemLongText": "Maaari itong ma-redem ng ${COUNT} na libreng tiket ng hanggang ${MAX_USES} na tao.",
"friendPromoCodeRedeemShortText": "Maaari itong ma-redem ng ${COUNT} na tiket sa larong ito.",
- "friendPromoCodeWhereToEnterText": "(sa \"Settings->Advanced->Ilagay Ang Code\")",
- "getFriendInviteCodeText": "Kumuha ng imbitasyon ng code ng kaibigan",
+ "friendPromoCodeWhereToEnterText": "(sa \"Settings->Mga Iba Pa->Ilagay Ang Impormasyon\")",
+ "getFriendInviteCodeText": "Kumuha ng imbitasyon ng kowd ng kaibigan",
"googlePlayDescriptionText": "Mag-imbita ng mga manlalaro ng Google Play sa iyong party:",
"googlePlayInviteText": "Mag-imbita",
"googlePlayReInviteText": "Mayroong ${COUNT} (mga) Google Play na manlalaro sa iyong party \nna madidiskonekta kung magsisimula ka ng bagong imbitasyon.\nIsama sila sa bagong imbitasyon para maibalik mo sila.",
"googlePlaySeeInvitesText": "Ipakita Ang Mga Imbitasyon",
"googlePlayText": "Google Play",
"googlePlayVersionOnlyText": "(Bersyon ng Android / Google Play)",
- "hostPublicPartyDescriptionText": "Mag-host ng Pampublikong Party",
- "hostingUnavailableText": "Hindi Available Ang Pagho-host",
+ "hostPublicPartyDescriptionText": "Maghanda ng Pampublikong Party",
+ "hostingUnavailableText": "Bawal Muna Ang Paghandahin",
"inDevelopmentWarningText": "Note:\n\nAng Network Play ay bago at patuloy na umuunlad na feature.\nSa ngayon, Ito'y lubos na inirerekomenda na ang lahat ng \nmga manlalaro ay nasa parehong Wi-Fi network.",
"internetText": "Internet",
"inviteAFriendText": "Walang laro ang mga kaibigan mo nito? Mag-imbita mo sila \npara sila'y subukan maglaro ito at makakatanggap sila ng ${COUNT} libreng tiket.",
"inviteFriendsText": "Mag-imbita ng mga kaibigan",
"joinPublicPartyDescriptionText": "Sumali sa isang Pampublikong Party",
- "localNetworkDescriptionText": "Sumali sa malapit na party (LAN, Bluetooth, etc.)",
+ "localNetworkDescriptionText": "Sumali sa Partidong Malapit Sa'yo! (LAN, Bluetooth, atbp.)",
"localNetworkText": "Lokal na Network",
"makePartyPrivateText": "Gawing Pribado Ang Party Ko",
"makePartyPublicText": "Gawing Publiko Ang Party Ko",
@@ -742,12 +775,13 @@
"manualYourLocalAddressText": "Iyong lokal na address:",
"nearbyText": "Malapit",
"noConnectionText": "",
+ "noPartiesAddedText": "Walang Nadagdag na mga Partido",
"otherVersionsText": "",
- "partyCodeText": "Code ng Partido",
+ "partyCodeText": "Kowd ng Partido",
"partyInviteAcceptText": "Tanggapin",
"partyInviteDeclineText": "Tanggihan",
"partyInviteGooglePlayExtraText": "(tingnan ang 'Google Play' tab sa 'Sumama' window)",
- "partyInviteIgnoreText": "Ignorahin",
+ "partyInviteIgnoreText": "Pabayaan",
"partyInviteText": "Inimbitahan ka ni ${NAME} \nna sumali sa kanilang party",
"partyNameText": "Pangalan Ng Partido",
"partyServerRunningText": "Tumatakbo ang iyong party server.",
@@ -765,9 +799,9 @@
"privateText": "Pribado",
"publicHostRouterConfigText": "Maaaring mangailangan nito ng pag-configure ng port-forwarding sa iyong router. Para sa mas madaling opsyon, mag-host ng pribadong party.",
"publicText": "Publiko",
- "requestingAPromoCodeText": "Humihiling ng code...",
+ "requestingAPromoCodeText": "Humihiling ng kowd...",
"sendDirectInvitesText": "I-send ng direktang imbitasyon",
- "shareThisCodeWithFriendsText": "Ibahagi ang code na ito sa iyong mga kaibigan:",
+ "shareThisCodeWithFriendsText": "Ibahagi ang kowd nito sa iyong mga kaibigan:",
"showMyAddressText": "Ipakita Ang Address Ko",
"startHostingPaidText": "Mag-host ngayon ng ${COST}",
"startHostingText": "Host",
@@ -780,7 +814,7 @@
"wifiDirectText": "Wi-Fi Direct",
"worksBetweenAllPlatformsText": "(ito’y gumagana sa pagitan ng lahat ng mga platform)",
"worksWithGooglePlayDevicesText": "(ito’y gumagana sa mga devices na tumatakbo ang bersyon ng Google Play (android) ng larong ito)",
- "youHaveBeenSentAPromoCodeText": "Pinadalhan ka ng promo code na ${APP_NAME}:"
+ "youHaveBeenSentAPromoCodeText": "Pinadalhan ka ng promo kowd ng ${APP_NAME}:"
},
"getTicketsWindow": {
"freeText": "LIBRE!",
@@ -798,25 +832,33 @@
"ticketsFromASponsorText": "Manood ng Ad\npara makuha ang ${COUNT} na tiket",
"ticketsText": "${COUNT} Tiket",
"titleText": "Kumuha Ng Tiket",
- "unavailableLinkAccountText": "Pasensya na, hindi available ang pagbili sa platform na ito.\nBilang isang solusyon, maaari mong i-link ang account na ito sa isang account na nasa\nisa pang platform at bumili doon.",
- "unavailableTemporarilyText": "Hindi available ito. Subukang muli mamaya.",
+ "unavailableLinkAccountText": "Pasensya na, bawal ang pagbili sa platform na ito.\nBilang isang solusyon, maaari mong i-link ang account na ito sa isang account na nasa\nisa pang platform at bumili doon.",
+ "unavailableTemporarilyText": "Bawal muna ito; subukang muli mamaya.",
"unavailableText": "Pasensya na, hindi ito available.",
- "versionTooOldText": "Pasensya na, ang bersyon ng laro na ito ay masyadong luma; mangyaring mag-update sa isang mas bagong bersyon.",
+ "versionTooOldText": "Pasensya na, ang bersyon ng laro na ito ay masyadong luma; mangyaring ibaguhin sa isang pang mas mabagong bersyon.",
"youHaveShortText": "mayroon kang ${COUNT}",
"youHaveText": "mayroon kang ${COUNT} na tiket"
},
+ "goldPass": {
+ "desc1InfTokensText": "Walang hanggang Sagisag",
+ "desc2NoAdsText": "Walang mga ad.",
+ "desc3ForeverText": "Magpakailanman.",
+ "goldPassText": "Gintong Pahintulot"
+ },
"googleMultiplayerDiscontinuedText": "Pasensya na, hindi na available ang multiplayer na serbisyo ng Google.\nGumagawa ako ng kapalit sa lalong madaling panahon.\nHanggang doon, mangyaring sumubok ng ibang paraan ng koneksyon.\n-Eric",
- "googlePlayPurchasesNotAvailableText": "Hindi puwede ang mga pagbili sa Google Play nito.\nMaaaring kailanganin mong i-update ang iyong store app.",
- "googlePlayServicesNotAvailableText": "Hindi available ang Google Play Services sa ngayon.\n‘Di magagana ang takbo ng ilang mga app.",
+ "googlePlayPurchasesNotAvailableText": "Hindi puwede ang mga pagbili sa Google Play nito.\nMaaaring kailanganin mong ibaguhin ang iyong store app.",
+ "googlePlayServicesNotAvailableText": "Hindi pwede ang Google Play Services sa ngayon.\n‘Di magagana ang takbo ng ilang mga app.",
"googlePlayText": "Google Play",
"graphicsSettingsWindow": {
"alwaysText": "Palagi",
"fullScreenCmdText": "Fullscreen (Cmd-F)",
"fullScreenCtrlText": "Fullscreen (Ctrl-F)",
+ "fullScreenText": "Fullscreen",
"gammaText": "Gama",
"highText": "Mataas",
"higherText": "Napakataas",
"lowText": "Mababa",
+ "maxFPSText": "Pinakamataas na FPS",
"mediumText": "Katamtaman",
"neverText": "Wala",
"resolutionText": "Resolusyon",
@@ -828,9 +870,9 @@
"visualsText": "Biswal"
},
"helpWindow": {
- "bombInfoText": "- Bomba -\nMas malakas pa sa suntok, pero\nmaaaring magresulta sa matinding pananakit sa sarili.\nPara sa pinakamahusay na mga resulta, itapon patungo\nkalaban bago maubos ang fuse.",
+ "bombInfoText": "- Bomba -\nMas malakas pa sa suntok, ngunit\nmaaaring magresulta sa matinding pananakit sa sarili.\nPara sa pinakamahusay na mga resulta, ihagis mo patungo sa\nkalaban bago ito'y sumabog.",
"bombInfoTextScale": 0.5,
- "canHelpText": "Makakatulong ang ${APP_NAME}.",
+ "canHelpText": "Makakatulong ang ${APP_NAME} para sa iyo.",
"controllersInfoText": "Maaari mong laruin ang ${APP_NAME} kasama ng mga kaibigan sa isang network, o ikaw\nlahat ay maaaring maglaro sa parehong device kung mayroon kang sapat na mga controller.\nSinusuportahan ng ${APP_NAME} ang iba't ibang mga ito; maaari ka ring gumamit ng mga telepono\nbilang mga controller sa pamamagitan ng libreng '${REMOTE_APP_NAME}' app.\nTingnan ang Mga Setting->Controller para sa higit pang impormasyon.",
"controllersInfoTextRemoteOnly": "Maaari mong laruin ang ${APP_NAME} kasama ng mga kaibigan sa isang network, o ikaw\nlahat ay maaaring maglaro sa parehong device sa pamamagitan ng paggamit ng mga phones bilang\nmga controller sa pamamagitan ng libreng '${REMOTE_APP_NAME}' app.",
"controllersText": "Mga Controllers",
@@ -842,44 +884,46 @@
"friendsText": "Mga Kaibigan",
"jumpInfoText": "-Tumalon-\nTumalon upang tumawid sa maliliit na puwang,\nupang ihagis ang mga bagay na mas mataas, at\nupang ipahayag ang damdamin ng kagalakan.",
"jumpInfoTextScale": 0.5,
- "orPunchingSomethingText": "O sumuntok ng isang bagay, itinapon ito sa isang bangin, at pinasabog ito habang pababa gamit ang isang malagkit na bomba.",
+ "orPunchingSomethingText": "O sumuntok ng isang bagay, maghagis sa isang bangin, at pinasabog habang pababa gamit ang isang malagkit na bomba.",
"pickUpInfoText": "- Pulutin -\nKunin ang mga flag, mga kaaway, o anumang bagay\nkung hindi ay hindi naka-bold sa lupa.\nPindutin muli upang ihagis.",
"pickUpInfoTextScale": 0.5,
"powerupBombDescriptionText": "Payagan kang maglabas ng tatlong bomba\nsa isang hilera sa halip na isa lamang.",
"powerupBombNameText": "Tatlong-Bomba",
"powerupCurseDescriptionText": "Malamang na gusto mong iwasan ang mga ganito.\n ...o sige lang?",
"powerupCurseNameText": "Sumpa",
- "powerupHealthDescriptionText": "Ibangon ka sa buong kalusugan.\nHindi mo naisip nito.",
- "powerupHealthNameText": "Medikal-Pakete",
- "powerupIceBombsDescriptionText": "Mas mahina kaysa sa mga normal na bomba\nngunit nagyelo ang iyong mga kalaban\nat partikular na mabasag.",
+ "powerupHealthDescriptionText": "Ibangon ka sa mapunong kalusugan.\nNaasahan mo naman.",
+ "powerupHealthNameText": "Pakete-Medikal",
+ "powerupIceBombsDescriptionText": "Mas mahina kaysa sa mga bombang karaniwan\nngunit nagyelo ang iyong mga kalaban\nat partikular na mabasag sila.",
"powerupIceBombsNameText": "Bombang-Yelo",
"powerupImpactBombsDescriptionText": "Medyo mahina kaysa sa regular\nbomba, ngunit sumasabog ito kapag nabagsak.",
- "powerupImpactBombsNameText": "Gatilyong-Bomba",
- "powerupLandMinesDescriptionText": "Ang mga ito ay dumating sa mga pakete ng 3;\nKapaki-pakinabang para sa base defense o\npaghinto ng mabilis na mga kalaban.",
+ "powerupImpactBombsNameText": "Bombang-Gatilyo",
+ "powerupLandMinesDescriptionText": "Ito ay naglalaman sa dami ng 3;\nKapaki-pakinabang para sa pagdepensa o\npaghinto ng mga mabibilis na kalaban.",
"powerupLandMinesNameText": "Mina",
"powerupPunchDescriptionText": "Ang iyong mga suntok ay mas mahirap,\nmas mabilis, mas mahusay, at mas malakas.",
- "powerupPunchNameText": "Boxing-Gloves",
- "powerupShieldDescriptionText": "Pumigil na pagsakit\nkaya hindi mo kailangan.",
+ "powerupPunchNameText": "Guwantes",
+ "powerupShieldDescriptionText": "Pumigil na pagsakit\nPara mas guminhawa.",
"powerupShieldNameText": "Enrhiyang-Kalasag",
"powerupStickyBombsDescriptionText": "Dumikit sa anumang matamaan nila.\nIto’y naging pagtawanan.",
- "powerupStickyBombsNameText": "Malagkit-Bomba",
- "powerupsSubtitleText": "Siyempre, walang larong kumpleto pag walang powerups:",
+ "powerupStickyBombsNameText": "Bombang-Malagkit",
+ "powerupsSubtitleText": "Siyempre, 'di kumpleto ang laro kapag walang mga powerups:",
"powerupsText": "Powerups",
"punchInfoText": "- Suntok -\nAng mga suntok ay mas nakakasakit\nmas mabilis ang paggalaw ng iyong mga kamay, kaya\ntumakbo at umiikot na parang baliw.",
- "runInfoText": "- Takbo -\nPindutin ang ANY button para tumakbo. Ang mga trigger o mga button sa balikat ay gumagana nang maayos kung mayroon ka ng mga ito.\nAng pagtakbo ay nagpapabilis sa iyo ng mga lugar ngunit nahihirapan kang lumiko, kaya mag-ingat sa mga bangin.",
+ "punchInfoTextScale": 0.4,
+ "runInfoText": "- Takbo -\nPindutin ang KAHIT ANUMANG button para tumakbo. Ang mga trigger o mga gilid na button ay gumagana nang maayos kung mayroon ka ng mga ito.\nAng pagtakbo ay nagpapabilis sa iyo ng mga lugar ngunit nahihirapan kang lumiko, kaya mag-ingat sa mga bangin.",
"someDaysText": "May mga araw na parang gusto mong sumuntok ng kung ano. O nagpapasabog ng isang bagay.",
"titleText": "Tulong ng ${APP_NAME}",
- "toGetTheMostText": "Upang masulit ang larong ito, kakailanganin mo:",
+ "toGetTheMostText": "Upang masulit ang larong ito, kakailanganin mo ng:",
"welcomeText": "Maligayang Pagdating sa ${APP_NAME}"
},
"holdAnyButtonText": "",
"holdAnyKeyText": "",
"hostIsNavigatingMenusText": "- Ang ${HOST} ay nagna-navigate sa mga menu tulad ng isang boss -",
- "importPlaylistCodeInstructionsText": "Gamitin ang sumusunod na code upang i-import ang playlist na ito sa ibang lugar:",
+ "importPlaylistCodeInstructionsText": "Gamitin ang sumusunod na kowd upang i-import ang playlist na ito sa ibang lugar:",
"importPlaylistSuccessText": "Na-import na ${TYPE} na playlist '${NAME}'",
"importText": "I-Import",
"importingText": "Nag-Iimport…",
"inGameClippedNameText": "Sa in-game ay naging\n\"${NAME}\"",
+ "inboxText": "Inbaks",
"installDiskSpaceErrorText": "ERROR: Hindi makumpleto ang pag-install.\nMaaaring wala ka nang espasyo sa iyong device.\nMag-clear ng ilang espasyo at subukang muli.",
"internal": {
"arrowsToExitListText": "pindutin ang ${LEFT} o ${RIGHT} upang mawala sa listahan",
@@ -890,7 +934,7 @@
"connectedToPartyText": "Sumali sa party ni ${NAME}!",
"connectingToPartyText": "Nagdudugtong….",
"connectionFailedHostAlreadyInPartyText": "Nabigo ang koneksyon; nasa ibang party ang host.",
- "connectionFailedPartyFullText": "Nabigo ang koneksyon; puno na ang party.",
+ "connectionFailedPartyFullText": "Nabigo ang koneksyon; puno na po.",
"connectionFailedText": "Nabigo ang koneksyon.",
"connectionFailedVersionMismatchText": "Nabigo ang koneksyon; nagpapatakbo ang host ng ibang bersyon ng laro.\nTiyaking pareho kayong napapanahon at subukang muli sumali.",
"connectionRejectedText": "Tinanggihan ang koneksyon.",
@@ -907,7 +951,7 @@
"errorPlayingMusicText": "Error sa paglalaro ng musika: ${MUSIC}",
"errorResettingAchievementsText": "Hindi ma-reset ang mga online na achievements; Subukang muli mamaya.",
"hasMenuControlText": "Si ${NAME} lang ay may kontrol sa menu.",
- "incompatibleNewerVersionHostText": "Ang host ay nagpapatakbo ng mas bagong bersyon ng laro.\nMag-update sa pinakabagong bersyon at subukang muli.",
+ "incompatibleNewerVersionHostText": "Ang punong-abala ay nagpapatakbo ng mas mabagong bersyon ng laro.\nMagbago sa pinakabagong bersyon at subukang muli.",
"incompatibleVersionHostText": "Ang host ay nagpapatakbo ng ibang bersyon ng laro.\nTiyaking pareho kayong napapanahong bersyon at subukang muli.",
"incompatibleVersionPlayerText": "Ang ${NAME} ay nagpapatakbo ng ibang bersyon ng laro.\nTiyaking pareho kayong napapanahong bersyon at subukang muli.",
"invalidAddressErrorText": "Error: di-wastong address.",
@@ -917,29 +961,31 @@
"invitationsSentText": "${COUNT} (na) imbitasyon ang napadala.",
"joinedPartyInstructionsText": "May sumali sa iyong partido.\nPumunta sa 'Maglaro' para magsimula ng laro.",
"keyboardText": "Keyboard",
- "kickIdlePlayersKickedText": "na-kicked si ${NAME} dahil sa pagiging idle.",
- "kickIdlePlayersWarning1Text": "I-kikick si ${NAME} sa loob ng ${COUNT} (na) segundo kung idle pa rin.",
- "kickIdlePlayersWarning2Text": "(maaari mong i-off ito sa Mga Setting -> Advanced)",
+ "kickIdlePlayersKickedText": "nalayas si ${NAME} dahil hindi gumagalaw.",
+ "kickIdlePlayersWarning1Text": "Lalayas si ${NAME} sa loob ng ${COUNT} (na) segundo kung hindi pa rin gumagalaw.",
+ "kickIdlePlayersWarning2Text": "(maaari mong isara ito sa \"Mga Setting\" -> \"Mga Iba Pa\")",
"leftGameText": "Umalis ka sa '${NAME}'.",
"leftPartyText": "Umalis ka sa party ni ${NAME}.",
"noMusicFilesInFolderText": "Walang mga file ng musika ang folder.",
"playerJoinedPartyText": "Sumali si ${NAME} sa party mo!",
"playerLeftPartyText": "Umalis si ${NAME} sa party mo.",
- "rejectingInviteAlreadyInPartyText": "Pagtanggi sa imbitasyon (nasa isang party na).",
- "serverRestartingText": "Nagre-restart ang server. Mangyaring sumali muli sa isang saglit…",
+ "rejectingInviteAlreadyInPartyText": "Natanggi ang imbitasyon (nasa isang party ka na).",
+ "serverRestartingText": "Umuulit ang server. Mangyaring sumali muli sa isang saglit…",
"serverShuttingDownText": "Nagsasara ang server...",
- "signInErrorText": "Error sa pag-sign in.",
+ "signInErrorText": "May problema sa pagpasok sa account.",
"signInNoConnectionText": "Hindi makapag-sign in. (walang koneksyon ang Wi-Fi mo?)",
"telnetAccessDeniedText": "ERROR: ang user ay hindi nagbigay ng access sa telnet.",
"timeOutText": "(time out sa ${TIME} segundo)",
"touchScreenJoinWarningText": "Sumali ka gamit ang touchscreen.\nKung ito ay isang pagkakamali, i-tap ang 'Menu->Umalis sa Laro' kasama nito.",
"touchScreenText": "TouchScreen",
+ "unableToCompleteTryAgainText": "Hindi maaaring maitapos ito sa ngayon.\nMaaaring mo ulitin.",
"unableToResolveHostText": "Error: hindi malutas ang host.",
"unavailableNoConnectionText": "Ito’y kasalukuyang hindi magagamit (walang koneksyon sa internet?)",
"vrOrientationResetCardboardText": "Gamitin ito upang i-reset ang oryentasyon ng VR.\nUpang maglaro ng laro kakailanganin mo ng isang panlabas na controller.",
"vrOrientationResetText": "Pag-reset ng oryentasyon ng VR.",
"willTimeOutText": "(magta-time out kung idle)"
},
+ "inventoryText": "Imbentaryo",
"jumpBoldText": "TALON",
"jumpText": "Talon",
"keepText": "Panatilihin",
@@ -947,22 +993,22 @@
"keyboardChangeInstructionsText": "I-double press space para mapalitan ang mga keyboard.",
"keyboardNoOthersAvailableText": "Walang ibang mga keyboard na magagamit.",
"keyboardSwitchText": "Nagpapalit ng keyboard sa \"${NAME}\".",
- "kickOccurredText": "na-kicked si ${NAME}",
- "kickQuestionText": "I-Kick si ${NAME}?",
- "kickText": "I-Kick",
- "kickVoteCantKickAdminsText": "Hindi ma-kick ang mga admin.",
- "kickVoteCantKickSelfText": "Hindi mo ma-kick ng sarili mo.",
- "kickVoteFailedNotEnoughVotersText": "Hindi marami ang mga manlalaro para sa isang boto.",
- "kickVoteFailedText": "Nabigo ang kick-vote.",
- "kickVoteStartedText": "Sinimulan na ang isang kick vote para kay ${NAME}.",
- "kickVoteText": "Bumoto sa Pagki-kick",
+ "kickOccurredText": "Napalayas si ${NAME} dito.",
+ "kickQuestionText": "Palayasin si ${NAME}?",
+ "kickText": "Palayasin",
+ "kickVoteCantKickAdminsText": "Hindi pwedeng palayasin ang Mga Ninuno dito.",
+ "kickVoteCantKickSelfText": "Hindi mo mailayas ang iyong sarili.",
+ "kickVoteFailedNotEnoughVotersText": "Konti ang mga naglalaro upang magbutuhan.",
+ "kickVoteFailedText": "Hindi maipalayas mula sa pagbutuhan.",
+ "kickVoteStartedText": "Sinimulan ang butuhan upang palayasin dito si ${NAME}.",
+ "kickVoteText": "Bumoto para Ipalayas",
"kickVotingDisabledText": "Naka-disable ang kick voting.",
- "kickWithChatText": "I-type ang ${YES} sa chat para sa oo at ${NO} para sa hindi.",
- "killsTallyText": "${COUNT} ang pinatay",
+ "kickWithChatText": "Pindutin ang ${YES} sa iyong puwang salitahan kung oo at ${NO} kung hindi.",
+ "killsTallyText": "${COUNT} pinatay",
"killsText": "Pinatay",
"kioskWindow": {
"easyText": "Madali",
- "epicModeText": "Mode na Epic",
+ "epicModeText": "Dakilang Paraan",
"fullMenuText": "Buong Menu",
"hardText": "Mahirap",
"mediumText": "Katamtaman",
@@ -971,8 +1017,8 @@
},
"languageSetText": "Ang wika ay \"${LANGUAGE}\" sa ngayon.",
"lapNumberText": "Ikot ${CURRENT}/${TOTAL}",
- "lastGamesText": "(huling ${COUNT} na laro)",
- "leaderboardsText": "Mga Leaderboard",
+ "lastGamesText": "(sa huling ${COUNT} na laro)",
+ "leaderboardsText": "Ranggo Ng Mga Pasimuno",
"league": {
"allTimeText": "Lahat Ng Oras",
"currentSeasonText": "Kasalukuyang Season (${NUMBER})",
@@ -980,14 +1026,17 @@
"leagueRankText": "Ranggo ng Liga",
"leagueText": "Liga",
"rankInLeagueText": "#${RANK}, ${NAME} ${SUFFIX} na Liga",
- "seasonEndedDaysAgoText": "Natapos ang season noing ${NUMBER} na araw.",
+ "seasonEndedDaysAgoText": "Tumapos na ang season noong ${NUMBER} na araw.",
"seasonEndsDaysText": "Matatapos ang season sa ${NUMBER} (na) araw.",
- "seasonEndsHoursText": "Matatapos ang season sa ${NUMBER} (na) oras.",
+ "seasonEndsHoursText": "Matatapos ang season na ito sa ${NUMBER} (na) oras.",
"seasonEndsMinutesText": "Matatapos ang season sa ${NUMBER} (na) minuto.",
"seasonText": "Ika-${NUMBER} na season",
"tournamentLeagueText": "Dapat mong maabot ang liga ng ${NAME} upang makapasok sa paligsahan na ito.",
- "trophyCountsResetText": "Ire-reset ang mga bilang ng tropeo sa susunod na season."
+ "trophyCountsResetText": "Ire-reset ang mga bilang ng tropeo sa susunod na season.",
+ "upToDateBonusDescriptionText": "Ang mga naglalaro ng mas bagong bersyon ng laro \nna ito ay tatanggap ng ${PERCENT}% na abono rito.",
+ "upToDateBonusText": "Abono sa Makabago"
},
+ "learnMoreText": "Alamin",
"levelBestScoresText": "Pinakamahusay na mga iskor sa ${LEVEL}",
"levelBestTimesText": "Pinakamahusay na lahat sa ${LEVEL}",
"levelIsLockedText": "Naka-lock ang ${LEVEL}.",
@@ -1004,7 +1053,7 @@
"macControllerSubsystemMFiText": "Made-for-iOS/Mac",
"macControllerSubsystemTitleText": "Suporta sa Controller",
"mainMenu": {
- "creditsText": "Mga Kredito",
+ "creditsText": "Karangalan",
"demoMenuText": "Demo na Menu",
"endGameText": "Itigil ang Laro",
"endTestText": "Itigil ang Test",
@@ -1019,7 +1068,7 @@
"resumeText": "Ipatuloy",
"settingsText": "Mga Setting"
},
- "makeItSoText": "Gawin itong Kaya",
+ "makeItSoText": "Gawin mo syang parag ganyan",
"mapSelectGetMoreMapsText": "Kumuha ng Higit pang Mapa...",
"mapSelectText": "Pumili…",
"mapSelectTitleText": "Mapa ng ${GAME}",
@@ -1031,6 +1080,8 @@
"modeArcadeText": "Arcade na Mode",
"modeClassicText": "Klasikong Mode",
"modeDemoText": "Mode na Demo",
+ "moreSoonText": "Marami pang darating...",
+ "mostDestroyedPlayerText": "Pinakanapinsalang Manlalaro",
"mostValuablePlayerText": "Pinakamalupit sa lahat",
"mostViolatedPlayerText": "Pinakanakawawa sa lahat",
"mostViolentPlayerText": "Pinakamadugo sa lahat",
@@ -1038,31 +1089,36 @@
"multiKillText": "${COUNT}-PAGPATAY!!!",
"multiPlayerCountText": "${COUNT} na manlalaro",
"mustInviteFriendsText": "Tandaan: dapat kang mag-imbita ng mga kaibigan\nang panel na \"${GATHER}\" o i-attach\nmga controller para maglaro ng multiplayer.",
- "nameBetrayedText": "${VICTIM} ay pinagtaksilan ni ${NAME}.",
+ "nameBetrayedText": "Pinagtaksilan ni ${NAME} si ${VICTIM}",
"nameDiedText": "${NAME} ay namatay.",
- "nameKilledText": "${VICTIM} ay pinatay ni ${NAME}.",
+ "nameKilledText": "Pinatay ni ${NAME} si ${VICTIM}",
"nameNotEmptyText": "Hindi pwede ang walang pangalan!",
- "nameScoresText": "${NAME} Naka-score!",
+ "nameScoresText": "Nakaiskor si ${NAME}!",
"nameSuicideKidFriendlyText": "Hindi sinasadyang namatay si ${NAME}.",
"nameSuicideText": "Nagpakamatay si ${NAME}.",
"nameText": "Pangalan",
"nativeText": "Natural",
+ "newExclaimText": "Bagong-bago!",
"newPersonalBestText": "Bagong personal na pinakamahusay!",
"newTestBuildAvailableText": "Available ang isang mas bagong pagsubok na build! (${VERSION} build ${BUILD}).\nKunin ito sa ${ADDRESS}",
- "newText": "Bago",
+ "newText": "Gumawa ng Bago",
"newVersionAvailableText": "Available ang isang mas bagong bersyon ng ${APP_NAME}! (${VERSION})",
"nextAchievementsText": "Mga Susunod na Nakamit:",
- "nextLevelText": "Mga Susunod na Level",
+ "nextLevelText": "Susunod na Antas",
"noAchievementsRemainingText": "- wala",
- "noContinuesText": "(hindi i-continue)",
+ "noContinuesText": "(walang tuluyan)",
"noExternalStorageErrorText": "Walang nakitang external na storage sa device na ito",
"noGameCircleText": "Error: hindi naka-log in sa GameCircle",
+ "noMessagesText": "Walang mga message.",
+ "noPluginsInstalledText": "Hindi Nakabit ang mga Plugin",
"noScoresYetText": "Wala pang score.",
+ "noServersFoundText": "Walang nahanap na servers.",
"noThanksText": "Salamat Nalang",
"noTournamentsInTestBuildText": "BABALA: Babalewalain ang mga score sa tournament mula sa test build na ito.",
"noValidMapsErrorText": "Walang nakitang valid na mapa para sa ganitong uri ng laro.",
"notEnoughPlayersRemainingText": "Hindi marami na manlalaro ang natitira; umalis at magsimula ng bagong laro.",
"notEnoughPlayersText": "Kailangan mo ng atleast ${COUNT} na manlalaro upang simulan ang larong ito!",
+ "notEnoughTicketsText": "Kulang ang iyong bilang ng tiket!",
"notNowText": "Hindi muna ngayon",
"notSignedInErrorText": "Dapat kang mag-sign in para magawa ito.",
"notSignedInGooglePlayErrorText": "Dapat kang mag-sign in gamit ang Google Play para magawa ito.",
@@ -1070,15 +1126,18 @@
"notUsingAccountText": "Note: hindi pinapansin ang account ng ${SERVICE}.\nPumunta sa 'Account -> Mag-sign in gamit ang ‘${SERVICE}' kung gusto mo itong gamitin.",
"nothingIsSelectedErrorText": "Walang napili!",
"numberText": "#${NUMBER}",
- "offText": "Naka-Off",
+ "offText": "Nakasara",
"okText": "Ok lang",
- "onText": "Naka-On",
+ "onText": "Nakabuksan",
"oneMomentText": "Saglit lang…",
- "onslaughtRespawnText": "Ang ${PLAYER} ay respawn sa wave na ${WAVE}",
+ "onslaughtRespawnText": "Ang ${PLAYER} ay respawn sa ika-${WAVE} na yugto",
+ "openMeText": "Buksan Mo 'Ko!",
+ "openNowText": "Ibuksan Ngayon",
+ "openText": "Ibuksan",
"orText": "${A} o ${B}",
"otherText": "Iba Pa…",
"outOfText": "(#${RANK} sa ${ALL})",
- "ownFlagAtYourBaseWarning": "Ang iyong sariling watawat ay dapat na\nsa iyong base upang makapuntos!",
+ "ownFlagAtYourBaseWarning": "Ang iyong sariling watawat ay dapat na\nsa lagayan nito upang makapuntos!",
"packageModsEnabledErrorText": "Ang network-play ay hindi pinapayagan habang ang local-package-mods ay pinagana (tingnan ang Mga Setting->Advanced)",
"partyWindow": {
"chatMessageText": "Mensahe",
@@ -1088,14 +1147,14 @@
"titleText": "Iyong Party"
},
"pausedByHostText": "(naka-pause ng host)",
- "perfectWaveText": "Perpekto na Kaway!",
+ "perfectWaveText": "Perpekto!",
"pickUpText": "Pulutin",
"playModes": {
"coopText": "Kooperatiba",
"freeForAllText": "Awayang Rambulan",
"multiTeamText": "Maraming Team",
"singlePlayerCoopText": "Nag-iisa / Kooperatiba",
- "teamsText": "Mga Teams"
+ "teamsText": "Kampihan"
},
"playText": "Maglaro",
"playWindow": {
@@ -1104,48 +1163,52 @@
"twoToEightPlayersText": "2-8 na manlalaro"
},
"playerCountAbbreviatedText": "${COUNT}p",
- "playerDelayedJoinText": "Papasok si ${PLAYER} sa simula ng susunod na round.",
+ "playerDelayedJoinText": "Papasok si ${PLAYER} sa simula ng susunod na laro.",
"playerInfoText": "Impormasyon ng Manlalaro",
"playerLeftText": "Umalis si ${PLAYER} sa laro.",
- "playerLimitReachedText": "Naabot na ang limitasyon ng manlalaro na ${COUNT}; hindi pinapayagan ang mga ibang sumali.",
+ "playerLimitReachedText": "Naabot na ang limitasyon ng manlalaro na ${COUNT}; hindi pinapayagan ang mga ibang manlalaro sumali.",
"playerProfilesWindow": {
- "cantDeleteAccountProfileText": "Hindi mo matatanggal ang profile ng iyong account.",
+ "cantDeleteAccountProfileText": "Hindi mo matatanggal ang karakter ng iyong account.",
"deleteButtonText": "Itangal ang\nProfile",
"deleteConfirmText": "Itangal si ‘${PROFILE}’?",
- "editButtonText": "I-edit ang\nProfile",
+ "editButtonText": "Ayusin ang\nProfile",
"explanationText": "(mga pangalan at hitsura ng custom na manlalaro para sa account na ito)",
"newButtonText": "Gumawa ng\nProfile",
- "titleText": "Profile ng Manlalaro"
+ "titleText": "Karakter ng Manlalaro"
},
"playerText": "Manlalaro",
- "playlistNoValidGamesErrorText": "Ang playlist na ito ay hindi naglalaman ng mga wastong naka-unlock na laro.",
+ "playlistNoValidGamesErrorText": "Ang playlist na ito ay hindi naglalaman ng mga wastong 'di maibukas na laro.",
"playlistNotFoundText": "hindi nahanap ang playlist",
"playlistText": "Playlist",
"playlistsText": "Mga Playlist",
- "pleaseRateText": "Kung nae-enjoy mo ang ${APP_NAME}, mangyaring isaalang-alang ang \npagkuha na sandali lang at i-rate ito o pagsulat ng isang pagsusuri. Nagbibigay ito ngkapaki-pakinabang na feedback at \ntumutulong sa pagsuporta sa pag-unlad sa hinaharap.\n\nsalamat!\n-eric",
+ "pleaseRateText": "Kung nasasaya ka sa larong ${APP_NAME} na ito, mangyaring isaalang-alang\numisip sa isang sandali at i-grado ito o sumulat ng isang pagsusuri. Nagbibigay ito ng kapaki-pakinabang na puna at\ntumutulong ito sa pagsuporta sa aming pag-uunlad sa hinaharap.\n\nsalamat po!\n-eric",
"pleaseWaitText": "Hintay lang…",
"pluginClassLoadErrorText": "Error sa paglo-load ang '${PLUGIN}' na klaseng plugin : ${ERROR}",
"pluginInitErrorText": "Error sa pagsisimula ang '${PLUGIN}' na plugin: ${ERROR}",
+ "pluginSettingsText": "Settings ng mga Plugin",
+ "pluginsAutoEnableNewText": "Paganahin ang Bagong Plugins",
"pluginsDetectedText": "May nakitang bagong (mga) plugin. I-restart para i-activate ang mga ito, o i-configure ang mga ito sa mga setting.",
+ "pluginsDisableAllText": "Salantahin ang mga Plugin",
+ "pluginsEnableAllText": "Paganahin Lahat ng mga Plugin",
"pluginsRemovedText": "Hindi na nahanapan ang ${NUM} ng (mga) plugin.",
"pluginsText": "Mga Plugin",
- "practiceText": "Pagsasagawa",
+ "practiceText": "Sanayan",
"pressAnyButtonPlayAgainText": "Pindutin ang anumang button para maglaro muli...",
"pressAnyButtonText": "Pindutin ang anumang button para magpatuloy...",
"pressAnyButtonToJoinText": "pindutin ang anumang button para sumali...",
"pressAnyKeyButtonPlayAgainText": "Pindutin ang anumang key/button para maglaro muli...",
"pressAnyKeyButtonText": "Pindutin ang anumang key/button para magpatuloy...",
"pressAnyKeyText": "Pindutin ang anumang key…",
- "pressJumpToFlyText": "** Pindutin ang tumalon nang paulit-ulit upang lumipad **",
+ "pressJumpToFlyText": "** Pindutin ang pindutang \"tumalon\" nang paulit-ulit upang lumipad **",
"pressPunchToJoinText": "Pindutin ang SUNTOK para sumali...",
- "pressToOverrideCharacterText": "pindutin ang ${BUTTONS} upang i-override ang iyong karakter",
+ "pressToOverrideCharacterText": "pindutin ang ${BUTTONS} upang mapalitan ang iyong itsura ng karakter",
"pressToSelectProfileText": "pindutin ang ${BUTTONS} upang pumili ng manlalaro",
"pressToSelectTeamText": "pindutin ang ${BUTTONS} para pumili ng team",
"promoCodeWindow": {
- "codeText": "Code",
+ "codeText": "Kowd",
"enterText": "I-enter"
},
- "promoSubmitErrorText": "Error sa pagsusumite ng code; suriin ang iyong koneksyon ng internet",
+ "promoSubmitErrorText": "Error sa pagsusumite ng kowd; suriin ang iyong koneksyon sa internet",
"ps3ControllersWindow": {
"macInstructionsText": "I-off ang power sa likod ng iyong PS3, siguraduhin\nNaka-enable ang Bluetooth sa iyong Mac, pagkatapos ay ikonekta ang iyong controller\nsa iyong Mac sa pamamagitan ng USB cable upang ipares ang dalawa. Mula noon, ikaw\nmaaaring gamitin ang home button ng controller para ikonekta ito sa iyong Mac\nsa alinman sa wired (USB) o wireless (Bluetooth) mode.\n\nSa ilang mga Mac maaari kang ma-prompt para sa isang passcode kapag nagpapares.\nKung mangyari ito, tingnan ang sumusunod na tutorial o google para sa tulong.\n\n\n\n\nDapat lumabas sa device ang mga PS3 controller na nakakonekta nang wireless\nlistahan sa System Preferences->Bluetooth. Maaaring kailanganin mong alisin ang mga ito\nmula sa listahang iyon kapag gusto mong gamitin muli ang mga ito sa iyong PS3.\n\nTiyakin din na idiskonekta ang mga ito sa Bluetooth kapag hindi naka-in\ngamitin o ang kanilang mga baterya ay patuloy na mauubos.\n\nDapat hawakan ng Bluetooth ang hanggang 7 konektadong device,\nkahit na ang iyong mileage ay maaaring mag-iba.",
"ouyaInstructionsText": "Para gumamit ng PS3 controller sa iyong OUYA, ikonekta lang ito gamit ang USB cable\nisang beses upang ipares ito. Ang paggawa nito ay maaaring madiskonekta ang iyong iba pang mga controller, kaya\ndapat mong i-restart ang iyong OUYA at i-unplug ang USB cable.\n\nMula noon, magagamit mo na ang HOME button ng controller para\nikonekta ito nang wireless. Kapag tapos ka nang maglaro, pindutin nang matagal ang HOME button\npara sa 10 segundo upang i-off ang controller; kung hindi, maaari itong manatili sa\nat mga basurang baterya.",
@@ -1154,8 +1217,10 @@
},
"punchBoldText": "SUNTOK",
"punchText": "Suntok",
- "purchaseForText": "Ibili para sa ${PRICE}",
+ "purchaseForText": "Ipagbili ng ${PRICE}",
"purchaseGameText": "Ibili ang laro",
+ "purchaseNeverAvailableText": "Pasensya na, ang pagbibili rito ay ipinagbawal sa pangangatawan na ito.\nSubukang pumasok sa iyong account sa ibang plataporma at bumili doon",
+ "purchaseNotAvailableText": "Hindi mo maaaring bumili ito.",
"purchasingText": "Nagbabayad...",
"quitGameText": "Ihinto ang ${APP_NAME}?",
"quittingIn5SecondsText": "Humihinto sa loob ng 5 segundo...",
@@ -1163,7 +1228,7 @@
"randomText": "Random",
"rankText": "Ranggo",
"ratingText": "Marka",
- "reachWave2Text": "Abutin ang kaway 2 para ma-ranggo.",
+ "reachWave2Text": "Abutin ang ika-2 yugto para ma-ranggo.",
"readyText": "nakahanda",
"recentText": "Makabago",
"remoteAppInfoShortText": "Ang ${APP_NAME} ay pinakanakakatuwa kapag nilalaro kasama ng pamilya at mga kaibigan.\nIkonekta ang isa o higit pang mga controller ng hardware o i-install ang\n${REMOTE_APP_NAME} app sa mga phone o tablet upang magamit ang mga ito\nbilang mga controllers.",
@@ -1174,8 +1239,8 @@
"button_size": "Laki ng Pindutan",
"cant_resolve_host": "Hindi malutas ang host.",
"capturing": "Kumukuha…",
- "connected": "Konektdo.",
- "description": "Gamitin ang iyong mga phone o tablet bilang controller sa BombSquad.\nHanggang 8 device ang maaaring kumonekta nang sabay-sabay para sa epic na lokal na multiplayer na kabaliwan sa isang TV o tablet",
+ "connected": "Nakakonek.",
+ "description": "Gamitin ang iyong mga phone o tablet bilang controller sa BombSquad.\nHanggang 8 device ang maaaring kumonekta nang sabay-sabay para sa maringal na lokal na multiplayer na kabaliwan sa isang TV o tablet",
"disconnected": "Nadiskonekta ng server.",
"dpad_fixed": "nakapirmi",
"dpad_floating": "lumulutang",
@@ -1183,12 +1248,12 @@
"dpad_size": "Laki ng D-Pad",
"dpad_type": "Uri ng D-Pad",
"enter_an_address": "Maglagay ng Address",
- "game_full": "Ang laro ay puno na o hindi tumatanggap ng mga koneksyon.",
+ "game_full": "Ang laro ay alinman puno na o hindi tumatanggap ng mga koneksyon.",
"game_shut_down": "Nagsara ang laro.",
"hardware_buttons": "Mga Pindutan ng Hardware",
"join_by_address": "Sumali sa pamamagitan ng Address...",
"lag": "Lag: ${SECONDS} na segundo",
- "reset": "I-reset sa default",
+ "reset": "Ibalik sa Orihinal",
"run1": "Takbo 1",
"run2": "Takbo 2",
"searching": "Naghahanap ng mga laro sa BombSquad...",
@@ -1197,114 +1262,131 @@
"version_mismatch": "Hindi tugma ang bersyon.\nTiyaking BombSquad at BombSquad Remote\nay ang mga pinakabagong bersyon at subukang muli."
},
"removeInGameAdsText": "I-unlock ang \"${PRO}\" sa tindahan upang alisin ang mga in-game na ad.",
+ "removeInGameAdsTokenPurchaseText": "TAKDANG PAGHAHANDOG:Bumili ng KAHIT ANONG paketeng sagisag para mawala ang mga in-game ads.",
"renameText": "I-palitan",
"replayEndText": "Itigil Ang Replay",
"replayNameDefaultText": "Replay ng Huling Laro",
- "replayReadErrorText": "Error sa pagbabasa ng replay file.",
+ "replayReadErrorText": "May kamalian sa pagbabasa ng replay file.",
"replayRenameWarningText": "Palitan ang pangalan ng \"${REPLAY}\" pagkatapos ng isang laro kung gusto mong panatilihin ito; kung hindi, ito ay mapapatungan.",
"replayVersionErrorText": "Pasensya na, ginawa ang replay na ito sa ibang paraang\nbersyon ng laro at hindi magagamit.",
"replayWatchText": "Panoorin ang replay",
- "replayWriteErrorText": "Error sa pagsulat ng replay file.",
+ "replayWriteErrorText": "May kamalian sa pagsulat ng replay file.",
"replaysText": "Mga Replay",
"reportPlayerExplanationText": "Gamitin ang email na ito upang mag-ulat ng pagdaya, hindi naaangkop na pananalita, o iba pang masamang gawin.\nPakilarawan sa ibaba:",
- "reportThisPlayerCheatingText": "Pagdaya",
+ "reportThisPlayerCheatingText": "Dumadaya",
"reportThisPlayerLanguageText": "Hindi Angkop na Salita",
- "reportThisPlayerReasonText": "Ano ang gusto mong iulat?",
- "reportThisPlayerText": "Iulat ang Manlalaro na Ito",
- "requestingText": "Humihiling",
- "restartText": "I-restart",
- "retryText": "I-retry",
+ "reportThisPlayerReasonText": "Anong dahilan upang sumumbong?",
+ "reportThisPlayerText": "Isumbong ang Manlalaro na Ito",
+ "requestingText": "Humihiling...",
+ "restartText": "Umulit",
+ "retryText": "Ulitin",
"revertText": "Ibalik",
- "runText": "Takbo",
- "saveText": "I-save",
- "scanScriptsErrorText": "(Mga) error sa pag-scan ng mga script; tingnan ang log para sa mga detalye.",
- "scoreChallengesText": "Mga Hamon sa Iskor",
- "scoreListUnavailableText": "Hindi available ang listahan ng iskor",
+ "runText": "Tumakbo",
+ "saveText": "Panatilihin",
+ "scanScriptsErrorText": "(Mga) kamalian sa pag-scan ng mga script; Tignan ang log para sa mga detalye.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "Kailangan maibago para sa API ${API} ang ${PATH} at mga ${NUM} na iba pang modules.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "Kailangan maibago para sa api ${API} ang ${PATH}.",
+ "scoreChallengesText": "Mga Hamon Para sa Iskor",
+ "scoreListUnavailableText": "Hindi maipakita ang listahan ng iskor",
"scoreText": "Iskor",
"scoreUnits": {
"millisecondsText": "Milisegundo",
"pointsText": "Puntos",
"secondsText": "Segundo"
},
- "scoreWasText": "(ay nasa ${COUNT})",
- "selectText": "Piliin",
+ "scoreWasText": "(nagmula sa ${COUNT})",
+ "selectText": "Pilihin",
+ "sendInfoDescriptionText": "Napapadala ang iyong account at impormasyon sa lagay ng app sa mga gumagawa ng larong ito.\nPakiusap na ilagay ang iyong pangalan o ang dahilan ng pagpapadala nito.",
"seriesWinLine1PlayerText": "ANG NANALO SA",
"seriesWinLine1TeamText": "ANG NANALO SA",
"seriesWinLine1Text": "ANG NANALO SA",
- "seriesWinLine2Text": "SERYE!",
+ "seriesWinLine2Text": "SERYE NITO!",
"settingsWindow": {
"accountText": "Account",
- "advancedText": "Advanced",
- "audioText": "Audio",
+ "advancedText": "Mga Iba Pa",
+ "audioText": "Tugtugan",
"controllersText": "Mga Controller",
"graphicsText": "Grapika",
- "playerProfilesMovedText": "Tandaan: Ang mga Profile ng Manlalaro ay inilipat sa Account window sa pangunahing menu.",
+ "playerProfilesMovedText": "Paunawa: Ang mga Karakter ng Manlalaro ay inilipat na sa salaan ng mga account sa pangunahing menu.",
"titleText": "Mga Setting"
},
"settingsWindowAdvanced": {
- "alwaysUseInternalKeyboardDescriptionText": "(isang simpleng, controller-friendly na on-screen na keyboard para sa pag-edit ng teksto)",
- "alwaysUseInternalKeyboardText": "Laging Gumamit ng Panloob na Keyboard",
- "benchmarksText": "Mga Benchmark at Stress-Test",
- "disableCameraGyroscopeMotionText": "I-disable ang Camera Gyroscope Motion",
- "disableCameraShakeText": "Huwag paganahin ang Camera Shake",
- "disableThisNotice": "(maaari mong i-disable ang notice na ito sa mga advanced na setting)",
+ "alwaysUseInternalKeyboardDescriptionText": "(isang simpleng keyboard na nasa loob lamang ng larong ito para sa pagasasaayos ng teksto)",
+ "alwaysUseInternalKeyboardText": "Laging gumamit ang keyboard na panloob",
+ "benchmarksText": "Mga Benchmark at Pagsusuri sa Pagdiin",
+ "devToolsText": "Kagamitan sa Paggawa",
+ "disableCameraGyroscopeMotionText": "Itigil ang mosyong dyayroskop ng larawan",
+ "disableCameraShakeText": "Huwag paganahin ang alog ng larawan",
+ "disableThisNotice": "(maaari mong ipatigil ang paunawa na ito sa setting \"Mga Iba Pa\")",
"enablePackageModsDescriptionText": "(nagpapagana ng mga karagdagang kakayahan sa pag-modding ngunit hindi pinapagana ang net-play)",
"enablePackageModsText": "Paganahin ang Lokal na Package Mods",
- "enterPromoCodeText": "Ilagay ang Code",
- "forTestingText": "Tandaan: ang mga value na ito ay para lamang sa pagsubok at mawawala kapag lumabas ang app.",
- "helpTranslateText": "Ang mga pagsasalin na hindi Ingles ng ${APP_NAME} ay isang komunidad\nsuportadong pagsisikap. Kung gusto mong mag-ambag o magtama\nisang pagsasalin, sundan ang link sa ibaba. Salamat!",
- "kickIdlePlayersText": "I-kick Ang Mga Idle na Manlalaro",
- "kidFriendlyModeText": "Kid-Friendly Mode (binawasan ang karahasan, atbp)",
+ "enterPromoCodeText": "Ilagay ang Kowd",
+ "forTestingText": "Tandaan: ang mga value na ito ay para lamang sa pagsusuri at mawawala ito kapag umalis ka sa larong ito.",
+ "helpTranslateText": "Ang mga pagsasalin na bukod sa Ingles ng ${APP_NAME} ay isang pagsisikap na \nsuporta ng komunidad dito sa larong ito. Kung gusto mong mag-ambag o magtama \nng isa o higit pang pagsasalin, sundan ang link sa ibaba. Salamat po muli!",
+ "insecureConnectionsDescriptionText": "Hindi ito irerekomenda, ngunit pwede maglaro nang online \nmula sa ibang bansa o network na limitado.",
+ "insecureConnectionsText": "Gumamit ng koneksyong walang seguridad",
+ "kickIdlePlayersText": "Ipalayas ang mga manlalarong hindi gumagalaw",
+ "kidFriendlyModeText": "Pamamaraang Pambata (walang tinding karahasan, atbp)",
"languageText": "Wika",
- "moddingGuideText": "Gabay sa Modding",
- "mustRestartText": "Dapat mong i-restart ang laro para magka-epekto ito.",
+ "moddingGuideText": "Gabay sa Pagbabago (Mod)",
+ "moddingToolsText": "Kagamitan sa Pag-mod",
+ "mustRestartText": "Ulitin mo ang larong ito upang gumana ang kalalabasan nito.",
"netTestingText": "Pagsusuri ng Network",
- "resetText": "I-reset",
- "showBombTrajectoriesText": "Ipakita ang Mga Trajectory ng Bomba",
- "showPlayerNamesText": "Ipakita ang Mga Pangalan ng Manlalaro",
- "showUserModsText": "Ipakita ang Mods Folder",
+ "resetText": "Ulitin",
+ "sendInfoText": "Ipadala ang Impormasyon",
+ "showBombTrajectoriesText": "Ipakita Kung Saan Lalapag ang Bomba",
+ "showDemosWhenIdleText": "Ipakita ang demo habang nakatigil",
+ "showDeprecatedLoginTypesText": "Ipakita ang mga natakwil na uri ng pagpasok sa account",
+ "showDevConsoleButtonText": "Ipakita ang pindutan ng dev console",
+ "showInGamePingText": "Ipakita ang leytensi habang naglalaro",
+ "showPlayerNamesText": "Ipakita ang Pangalan ng Mga Manlalaro",
+ "showUserModsText": "Ipakita ang Paniklop ng Mga Mod",
"titleText": "Advanced",
- "translationEditorButtonText": "Editor ng Wika ng ${APP_NAME}.",
- "translationFetchErrorText": "hindi available ang katayuan ng wika",
- "translationFetchingStatusText": "sinusuri ang status ng lengguwahe…",
- "translationInformMe": "Ipaalam sa akin kapag ang aking wika ay nangangailangan ng mga update",
- "translationNoUpdateNeededText": "ang kasalukuyang wika ay makabago; woohoo!",
- "translationUpdateNeededText": "** ang kasalukuyang wika ay nangangailangan ng mga update!! **",
+ "translationEditorButtonText": "Pag-ayusan ng Wika sa ${APP_NAME}.",
+ "translationFetchErrorText": "Hindi maipakita ang kalagayan ng wikang ito.",
+ "translationFetchingStatusText": "sinusuri ang kalagayan ng lengguwahe…",
+ "translationInformMe": "Ipaalam sa akin kapag ang aking wika ay nangangailangan ng pagbabago",
+ "translationNoUpdateNeededText": "Ang kasalukuyang wika ay makabago na muli; yehey!",
+ "translationUpdateNeededText": "** Ang kasalukuyang wika ay nangangailangan ng pagbabago!! **",
"vrTestingText": "Testing ng VR"
},
"shareText": "I-share",
"sharingText": "Nagbabahagi….",
"showText": "Ipakita",
- "signInForPromoCodeText": "Dapat kang mag-sign in sa isang account para magkabisa ang mga code.",
+ "signInForPromoCodeText": "Dapat kang mag-sign in sa isang account para magkabisa ang mga kowd.",
"signInWithGameCenterText": "Para gumamit ng Game Center account,\nmag-sign in gamit ang Game Center app.",
"singleGamePlaylistNameText": "${GAME} lang",
"singlePlayerCountText": "1 manlalaro",
- "soloNameFilterText": "Solo na ${NAME}",
+ "sizeLargeText": "Malaki",
+ "sizeMediumText": "Sakto lang",
+ "sizeSmallText": "Maliit",
+ "soloNameFilterText": "Pinag-iisang ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Pagpili ng Karakter",
- "Chosen One": "Napili ng Isa",
- "Epic": "Larong Epic na Mode",
- "Epic Race": "Epic na Takbuan",
- "FlagCatcher": "Kunin ang Bandila",
- "Flying": "Masayang Isip",
+ "Chosen One": "Ang Piniling Isa",
+ "Epic": "Larong Madakila",
+ "Epic Race": "Dakilang Takbuhan",
+ "FlagCatcher": "Agawang Bandila",
+ "Flying": "Isipang Masaya",
"Football": "Rugbi",
- "ForwardMarch": "Pag-atake",
+ "ForwardMarch": "Dadaluhungin",
"GrandRomp": "Pagsakop",
- "Hockey": "Hockey",
- "Keep Away": "Layuan Mo",
+ "Hockey": "Haki",
+ "Keep Away": "Hawakang Bandila",
"Marching": "Bantayan",
"Menu": "Pangunahing Menu",
"Onslaught": "Pagsalakay",
- "Race": "Takbuan",
+ "Race": "Takbuhan",
"Scary": "Hari Ng Burol",
- "Scores": "Screen Ng Iskor",
- "Survival": "Kaligtasan",
+ "Scores": "Salaan Ng Iskor",
+ "Survival": "Pagbabawasan",
"ToTheDeath": "Laban Ng Kamatayan",
- "Victory": "Final Na Screen Ng Iskor"
+ "Victory": "Wakas Na Salaan Ng Iskor"
},
"spaceKeyText": "space",
"statsText": "Katayuan",
- "storagePermissionAccessText": "Nangangailangan ito ng access sa storage",
+ "stopRemindingMeText": "Itigil ang paalala",
+ "storagePermissionAccessText": "Nangangailangan ito ng pagpasok sa storage",
"store": {
"alreadyOwnText": "Nabili mo na ang ${NAME}!",
"bombSquadProNameText": "${APP_NAME} Pro",
@@ -1314,21 +1396,21 @@
"comingSoonText": "Abangan...",
"extrasText": "Padagdag",
"freeBombSquadProText": "Ang BombSquad ay libre na ngayon, ngunit dahil ikaw ang orihinal na bumili nito, ikaw na\npagtanggap ng BombSquad Pro upgrade at ${COUNT} na mga tiket bilang pasasalamat.\nTangkilikin ang mga bagong feature, at salamat sa iyong suporta!\n-Eric",
- "holidaySpecialText": "Espesyal Na Holiday",
- "howToSwitchCharactersText": "(pumunta sa \"${SETTINGS} -> ${PLAYER_PROFILES}\" para magtalaga at mag-customize ng mga character)",
- "howToUseIconsText": "(gumawa ng mga global profile ng manlalaro (sa window ng account) para magamit ang mga ito)",
+ "holidaySpecialText": "Espesyal Ng Holiday",
+ "howToSwitchCharactersText": "(pumunta sa \"${SETTINGS} -> ${PLAYER_PROFILES}\" para magtalaga at maiba ng mga karakter)",
+ "howToUseIconsText": "(gumawa ng karakter ng mga manlalaro (sa salaan ng mga account) para magamit ang mga ito)",
"howToUseMapsText": "(gamitin ang mga mapa na ito sa sarili mong Mga Team/Rambulan na mga playlist)",
- "iconsText": "Mga Icon",
+ "iconsText": "Mga Tatak",
"loadErrorText": "Hindi ma-load ang page.\nSuriin ang iyong koneksyon sa internet.",
"loadingText": "Saglit lang…",
"mapsText": "Mga Mapa",
- "miniGamesText": "Mga MiniGames",
- "oneTimeOnlyText": "(isang beses lamang)",
+ "miniGamesText": "Mga Lalaruhin",
+ "oneTimeOnlyText": "(isang beses lang)",
"purchaseAlreadyInProgressText": "Ang isang nabilhin ng item na ito ay isinasagawa na.",
- "purchaseConfirmText": "Ibili ang ${ITEM}?",
+ "purchaseConfirmText": "Bilhin ang ${ITEM} na ito?",
"purchaseNotValidError": "Hindi wasto ang nabilhin.\nMakipag-ugnayan kay ${EMAIL} kung ito ay isang error.",
"purchaseText": "Bilhin",
- "saleBundleText": "Diskwento ng Bundle!",
+ "saleBundleText": "Diskwento ng Balutan!",
"saleExclaimText": "Diskwento!",
"salePercentText": "(${PERCENT}% diskwento)",
"saleText": "BAWAS",
@@ -1346,49 +1428,66 @@
"customize2Text": "I-customize ang mga character, mini-game, at maging ang mga soundtrack.",
"customizeText": "I-customize ang mga character at gumawa ng sarili mong mga mini-game playlist.",
"sportsMoreFunText": "Mas masaya ang sports na may pampasabog.",
- "teamUpAgainstComputerText": "Makipagtulungan laban sa computer."
+ "teamUpAgainstComputerText": "Makipagtulungan laban sa kumukusa."
},
"storeText": "Tindahan",
"submitText": "Ipasa",
- "submittingPromoCodeText": "Nagsusumite ng Code...",
- "teamNamesColorText": "Mga Pangalan/Kulay ng Team…",
+ "submittingPromoCodeText": "Pinapasa ang Kowd...",
+ "successText": "Matagumpay!",
+ "supportEmailText": "Pag may problema sa app, \npaki-email ang ${EMAIL}.",
+ "teamNamesColorText": "Mga Pangalan/Kulay ng Kampihan…",
"telnetAccessGrantedText": "Pinagana ang pag-access sa Telnet..",
"telnetAccessText": "Natuklasan ang pag-access sa Telnet; payagan?",
"testBuildErrorText": "Ang test build na ito ay hindi na aktibo; mangyaring suriin para sa isang bagong bersyon.",
"testBuildText": "Test Build",
- "testBuildValidateErrorText": "Hindi ma-validate ang test build. (walang koneksyon sa internet?)",
- "testBuildValidatedText": "Na-validate ang Test Build; Tamasahin!",
- "thankYouText": "Salamat sa iyong suporta! Tangkilikin ang laro!!",
+ "testBuildValidateErrorText": "Hindi nawasto ang test build. (walang koneksyon sa internet?)",
+ "testBuildValidatedText": "Napawasto ang Test Build; Tamasahin!",
+ "thankYouText": "Salamat po sa iyong pagsuporta! Tangkilikin ang laro na ito!!",
"threeKillText": "TRIPLENG PAGPATAY!!",
- "timeBonusText": "Bonus Ng Oras",
+ "ticketsDescriptionText": "Ang tiket ay magagamit upang magamit ang mga karakter, \nmapa, lalaruhin, at iba pa sa tindahan.\n\nAng tiket ay maaaring mahanap sa mga baul mula sa pagtagumpay \nsa kampanya, paligsahan, at mga makamtan.",
+ "timeBonusText": "Sigla sa Oras",
"timeElapsedText": "Oras Na Lumipas",
- "timeExpiredText": "Nag-expire Na Ang Oras!",
+ "timeExpiredText": "Lagpas Na!",
"timeSuffixDaysText": "${COUNT}d",
"timeSuffixHoursText": "${COUNT}h",
"timeSuffixMinutesText": "${COUNT}m",
"timeSuffixSecondsText": "${COUNT}s",
- "tipText": "Tip",
+ "tipText": "Isang Payo",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
- "topFriendsText": "Pangunahing Kaibigan",
+ "tokens": {
+ "getTokensText": "Bumili Ng Mga Sagisag",
+ "notEnoughTokensText": "Hindi sapat ang iyong mga sagisag para rito!",
+ "numTokensText": "${COUNT} Mga Sagisag",
+ "openNowDescriptionText": "May sapat kang token para \nmabuksan mo na ito ngayon – \nhindi mo na kailangang maghintay.",
+ "shinyNewCurrencyText": "Isang makintab na bagong pera ng BombSquad.",
+ "tokenPack1Text": "Maliit-Paketeng Sagisag",
+ "tokenPack2Text": "Katamtamang Paketeng Sagisag",
+ "tokenPack3Text": "Malaking Paketeng Sagisag",
+ "tokenPack4Text": "Pinakamalaking Paketeng Sagisag",
+ "tokensDescriptionText": "Ang Sagisag ay ginagamit upang bumilis ang pagbuksan ng \nmga baul at para sa ibang katangiang ng account at larong ito.\n\nMaaari kang manalo ng mga sagisag \nsa mga laruhin o bumili ang mga pakete nito. \nO kaya bumili ng \"Gintong Pahintulot\" upang mawalang-hanggan",
+ "youHaveGoldPassText": "Mayroon ka nang Gintong Pahintulot.\nLahat ng mga pagbili ng mga Sagisag ay libre na.\nIkasaya mo na!"
+ },
+ "topFriendsText": "Pinakamataas sa mga Kaibigan",
"tournamentCheckingStateText": "Sinusuri ang estado ng paligsahan; pakihintay...",
"tournamentEndedText": "Natapos na ang paligsahan na ito. Magsisimula ng bago mamaya.",
"tournamentEntryText": "Pagpasok sa Paligsahan",
+ "tournamentFinalStandingsText": "Pinaka-tapos na Standing",
"tournamentResultsRecentText": "Mga Resulta ng Kamakailang Paligsahan",
- "tournamentStandingsText": "Mga Paninindigan sa Paligsahan",
+ "tournamentStandingsText": "Mga Puwesto sa Paligsahan",
"tournamentText": "Paligsahan",
- "tournamentTimeExpiredText": "Na-expire Na Ang Oras Ng Paligsahan",
- "tournamentsDisabledWorkspaceText": "Naka-disable ang mga paligsahan kapag aktibo ang mga workspace. \nHuwag munang paganahin muli ang iyong workspace at i-restart upang makipaglaro sa paligsahan.",
+ "tournamentTimeExpiredText": "Natapos Na Ang Oras Ng Paligsahan Na Ito",
+ "tournamentsDisabledWorkspaceText": "Hindi ka pwede maglaro ng mga paligsahan kapag aktibo ang mga workspace. \nIsara muna ang iyong workspace at ulitin ang larong ito upang makipaglaro sa paligsahan.",
"tournamentsText": "Mga Paligsahan",
"translations": {
"characterNames": {
"Agent Johnson": "Ahente Johnson",
- "B-9000": "B-9000",
+ "B-9000": "Makina-9000",
"Bernard": "Oso",
- "Bones": "Buto",
+ "Bones": "Kalansay",
"Butch": "Bakero",
"Easter Bunny": "Kuneho",
- "Flopsy": "Malambot",
+ "Flopsy": "Magalaw",
"Frosty": "Taong Niyebe",
"Gretel": "Mag-aawit Na Manananggal",
"Grumbledorf": "Manggagaway",
@@ -1404,7 +1503,7 @@
"Sammy Slam": "Mambubuno",
"Santa Claus": "Santa Klaus",
"Snake Shadow": "Aninong Balatkayo",
- "Spaz": "Kawal",
+ "Spaz": "Mandirigma",
"Taobao Mascot": "Taobao Maskot",
"Todd McBurton": "Todd McBurton",
"Zoe": "Dalagang Bombero",
@@ -1420,7 +1519,7 @@
"Pro Football": "Batidong Rugbi",
"Pro Onslaught": "Batidong Pagsalakay",
"Pro Runaround": "Batidong Bantayan",
- "Rookie ${GAME}": "Bagitong ${GAME}",
+ "Rookie ${GAME}": "Pang bago na ${GAME}",
"Rookie Football": "Bagitong Rugbi",
"Rookie Onslaught": "Bagitog Pagsalakay",
"The Last Stand": "Ang Huling Labanan",
@@ -1429,29 +1528,41 @@
"Uber Onslaught": "Kasukdulang Pagsalakay",
"Uber Runaround": "Kasukdulang Bantayan"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Tickets",
+ "${C} Tokens": "${C} Tokens",
+ "Chest": "Chest",
+ "L1 Chest": "L1 Chest",
+ "L2 Chest": "L2 Chest",
+ "L3 Chest": "L3 Chest",
+ "L4 Chest": "L4 Chest",
+ "L5 Chest": "L5 Chest",
+ "L6 Chest": "L6 Chest",
+ "Unknown Chest": "Hindi kilala na chest"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Maging ang napili ng tiyak na oras para manalo.\nPatayin ang napili para maging isa nito.",
- "Bomb as many targets as you can.": "Bomba ng maraming target hangga't maaari mo.",
+ "Bomb as many targets as you can.": "Bombahin ang maraming patamaan hangga't maaari mo.",
"Carry the flag for ${ARG1} seconds.": "Hawakan ang bandila sa loob ng ${ARG1} segundo.",
"Carry the flag for a set length of time.": "Hawakan ang bandila para sa isang nakatakdang haba ng oras.",
"Crush ${ARG1} of your enemies.": "Patayin ang ${ARG1} ng iyong mga kalaban",
- "Defeat all enemies.": "Talunin ang lahat ng iyong mga kalaban",
- "Dodge the falling bombs.": "Umiwas sa mga bumabagsak na bomba.",
- "Final glorious epic slow motion battle to the death.": "Huling maluwalhating epic slow motion na labanan hanggang kamatayan.",
+ "Defeat all enemies.": "Talunin ang lahat ng mga kalaban.",
+ "Dodge the falling bombs.": "Iwasan ang bumabagsak na bomba.",
+ "Final glorious epic slow motion battle to the death.": "Ito na ang huling maluwalhating na labanan sa isang dakilang pabagalang galaw hanggang sa kamatayan.",
"Gather eggs!": "Ipunin ng mga itlog!",
- "Get the flag to the enemy end zone.": "Kunin ang bandila sa end zone ng kalaban.",
+ "Get the flag to the enemy end zone.": "Hawakin ang bandila patungo sa dulong lugar ng kalaban.",
"How fast can you defeat the ninjas?": "Gaano kabilis mo matatalo ang mga ninja?",
"Kill a set number of enemies to win.": "Pumatay ng isang set na bilang ng mga kalaban upang manalo.",
- "Last one standing wins.": "Kung sino ang huling nakatayo ang siyang mananalo.",
+ "Last one standing wins.": "Kung sino ang huling nabuhay ang siyang mananalo.",
"Last remaining alive wins.": "Kung sino ang huling natitirang buhay ang siyang mananalo.",
"Last team standing wins.": "Kung sino ang huling katayuan ng koponan ang siyang mananalo",
"Prevent enemies from reaching the exit.": "Pigilan ang mga kalaban na makarating at makalabas sa labasan.",
- "Reach the enemy flag to score.": "Abutin ang bandila ng kalaban upang maka-iskor.",
+ "Reach the enemy flag to score.": "Ihawak ang bandila ng kalaban upang maka-iskor.",
"Return the enemy flag to score.": "Ibalik ang watawat ng kalaban upang maka-iskor.",
"Run ${ARG1} laps.": "Tumakbo ng ${ARG1} ikot",
"Run ${ARG1} laps. Your entire team has to finish.": "Tumakbo ng {ARG1} ikot. Kailangang matapos ang iyong buong team na ito.",
"Run 1 lap.": "Tumakbo ng 1 ikot.",
- "Run 1 lap. Your entire team has to finish.": "Tumakbo ng 1 ikot. Kailangang matapos ang iyong buong team na ito.",
+ "Run 1 lap. Your entire team has to finish.": "Tumakbo ng 1 ikot. Kailangang matapos ang iyong buong grupo.",
"Run real fast!": "Tumakbo ng mabilis!",
"Score ${ARG1} goals.": "Makaiskor ng ${ARG1} gol.",
"Score ${ARG1} touchdowns.": "Makaiskor ng ${ARG1} touchdowns.",
@@ -1469,8 +1580,8 @@
"Touch the enemy flag.": "Humawak sa bandera ng iyong kalaban.",
"carry the flag for ${ARG1} seconds": "Hawakan ang bandila ng ${ARG1} segundo",
"kill ${ARG1} enemies": "patayin ang ${ARG1} na mga kalaban.",
- "last one standing wins": "kung sino ang huling nakatayo ang siyang mananalo",
- "last team standing wins": "kung sino ang huling katayuan ng team ang siyang mananalo",
+ "last one standing wins": "kung sino ang huling nabuhay ang siyang mananalo",
+ "last team standing wins": "ang huling grupong buhay ay mananalo",
"return ${ARG1} flags": "Magnakaw ng ${ARG1} na mga bandera",
"return 1 flag": "ibalik ang 1 bandila",
"run ${ARG1} laps": "Tumakbo ng ${ARG1} ikot",
@@ -1485,68 +1596,74 @@
"touch 1 flag": "humawak ng 1 bandila"
},
"gameNames": {
- "Assault": "Pag-atake",
- "Capture the Flag": "Kunin ang Bandila",
- "Chosen One": "Napili ang Isa",
+ "Assault": "Dadaluhungin",
+ "Capture the Flag": "Agawang Bandila",
+ "Chosen One": "Ang Piniling Isa",
"Conquest": "Pagsakop",
"Death Match": "Laban ng Kamatayan",
"Easter Egg Hunt": "Paghahanap ng mga Easter Egg",
- "Elimination": "Kaligtasan",
- "Football": "Rugbi",
+ "Elimination": "Pagbabawasan",
+ "Football": "Putbol",
"Hockey": "Hockey",
- "Keep Away": "Layuan Mo",
+ "Keep Away": "Hawakang Bandila",
"King of the Hill": "Hari ng Burol",
"Meteor Shower": "Ulan ng mga Bulalakaw",
"Ninja Fight": "Labanan ng mga Ninja",
"Onslaught": "Pagsalakay",
- "Race": "Takbuan",
+ "Race": "Takbuhan",
"Runaround": "Bantayan",
"Target Practice": "Pagsasanay ng Patamaan",
"The Last Stand": "Ang Huling Labanan"
},
"inputDeviceNames": {
"Keyboard": "Keyboard",
- "Keyboard P2": "Keyboard F2"
+ "Keyboard P2": "Keyboard P2"
},
"languages": {
- "Arabic": "Arabe",
- "Belarussian": "Belaruso",
- "Chinese": "Tsino",
- "ChineseTraditional": "Tsinong Tradisyonal",
- "Croatian": "Kroatyano",
- "Czech": "Tsek",
- "Danish": "Makadenmark",
- "Dutch": "Olandes",
- "English": "Ingles",
- "Esperanto": "Esperanto",
- "Filipino": "Tagalog",
- "Finnish": "Finnish",
- "French": "Pranses",
- "German": "Aleman",
- "Gibberish": "Walang Kwentang Linguahe",
- "Greek": "Griyego",
- "Hindi": "Indiyano",
- "Hungarian": "Hanggaryan",
- "Indonesian": "Indonesiyo",
- "Italian": "Italiyano",
- "Japanese": "Nippongo",
- "Korean": "Koreano",
- "Malay": "Malay",
- "Persian": "Persyano",
- "Polish": "Polish",
- "Portuguese": "Portuges",
- "Romanian": "Rumano",
- "Russian": "Ruso",
- "Serbian": "Serbyan",
- "Slovak": "Eslobako",
- "Spanish": "Espanyol",
- "Swedish": "Suweko",
- "Tamil": "Tamil",
- "Thai": "Siyam",
- "Turkish": "Turko",
- "Ukrainian": "Ukranyo",
- "Venetian": "Benesiya",
- "Vietnamese": "Byetnam"
+ "Arabic": "Wikang Arabik",
+ "Belarussian": "Wikang Belaruso",
+ "Chinese": "Wikang Tsino ",
+ "ChineseSimplified": "Wikang Tsino - Pangkaraniwan",
+ "ChineseTraditional": "Wikang Tsino - Tradisyonal",
+ "Croatian": "Wikang Kroatyano",
+ "Czech": "Wikang Tsek",
+ "Danish": "Wikang Denmark",
+ "Dutch": "Wikang Olandes",
+ "English": "Wikang Ingles",
+ "Esperanto": "Wikang Esperanto",
+ "Filipino": "Wikang Pilipino",
+ "Finnish": "Wikang Finnish",
+ "French": "Wikang Pranses",
+ "German": "Wikang Alemanya",
+ "Gibberish": "Pagyayapyap",
+ "Greek": "Wikang Griyego",
+ "Hindi": "Wikang Indiyano",
+ "Hungarian": "Wikang Hanggaryan",
+ "Indonesian": "Wikang Indonesiyo",
+ "Italian": "Wikang Italiyano",
+ "Japanese": "Wikang Hapon",
+ "Korean": "Wikang Koreano",
+ "Malay": "Wikang Malay",
+ "Persian": "Wikang Persyano",
+ "PirateSpeak": "Salitang Pirata",
+ "Polish": "Wikang Polish",
+ "Portuguese": "Wikang Portuges",
+ "PortugueseBrazil": "Wikang Portuges - Brasil",
+ "PortuguesePortugal": "Wikang Portuges - Portugal",
+ "Romanian": "Wikang Rumano",
+ "Russian": "Wikang Ruso",
+ "Serbian": "Wikang Serbyan",
+ "Slovak": "Wikang Eslobako",
+ "Spanish": "Wikang Espanyol",
+ "SpanishLatinAmerica": "Wikang Espanyol - Amerikanong Latino",
+ "SpanishSpain": "Wikang Espanyol - Espanya",
+ "Swedish": "Wikang Suweko",
+ "Tamil": "Wikang Tamil",
+ "Thai": "Wikang Thai",
+ "Turkish": "Wikang Turko",
+ "Ukrainian": "Wikang Ukranyo",
+ "Venetian": "Wikang Benesiya",
+ "Vietnamese": "Wikang Byetnam"
},
"leagueNames": {
"Bronze": "Tanso",
@@ -1557,15 +1674,15 @@
"mapsNames": {
"Big G": "Malaking G",
"Bridgit": "Tawiring Tulay",
- "Courtyard": "Looban Patyo",
+ "Courtyard": "Loobang Patyo",
"Crag Castle": "Kastilyong Bangin",
"Doom Shroom": "Itim na Kabute",
"Football Stadium": "Istadyum",
- "Happy Thoughts": "Masayang Isip",
+ "Happy Thoughts": "Isipang Masaya",
"Hockey Stadium": "Istadyum ng Hockey",
- "Lake Frigid": "Yelong Lawa",
+ "Lake Frigid": "Lawang Yelo",
"Monkey Face": "Mukha ng Unggoy",
- "Rampage": "Mandaluhong",
+ "Rampage": "Dalawang Dahilig",
"Roundabout": "Paliguy-ligoy",
"Step Right Up": "Hakbang Pataas",
"The Pad": "Ang Pad",
@@ -1574,8 +1691,8 @@
"Zigzag": "Sigsag"
},
"playlistNames": {
- "Just Epic": "Epic Lang",
- "Just Sports": "Shorts Lang"
+ "Just Epic": "Mga Madakila",
+ "Just Sports": "Sports Lang"
},
"scoreNames": {
"Flags": "Watawat",
@@ -1586,7 +1703,7 @@
"Time Held": "Oras na Gaganapin"
},
"serverResponses": {
- "A code has already been used on this account.": "Nagamit na ang isang code sa account na ito.",
+ "A code has already been used on this account.": "Nagamit na ang isang kowd sa account na ito.",
"A reward has already been given for that address.": "Naibigay na ang reward para sa address na iyon.",
"Account linking successful!": "Matagumpay ang pag-link ng account!",
"Account unlinking successful!": "Matagumpay ang pag-unlink ng account!",
@@ -1604,30 +1721,36 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Natukoy ang pagdadaya; nasuspinde ang mga iskor at premyo sa loob ng ${COUNT} (na) araw.",
"Could not establish a secure connection.": "Hindi makapagtatag ng secure na koneksyon.",
"Daily maximum reached.": "Naabot na ang pang-araw-araw ng request.",
+ "Daily sign-in reward": "Pangaraw-araw na gantimpala",
"Entering tournament...": "Papasok sa paligsahan…",
- "Invalid code.": "Di-wastong code.",
+ "Invalid code.": "Di-wasto ang kowd.",
"Invalid payment; purchase canceled.": "Di-wastong pagbabayad; kinansela ang pagbili.",
- "Invalid promo code.": "Di-wastong promo code.",
+ "Invalid promo code.": "Di-wasto ang promo kowd.",
"Invalid purchase.": "Di-wastong bilihin",
"Invalid tournament entry; score will be ignored.": "Di-wastong entry sa paligsahan; hindi papansinin ang mga iskor.",
"Item unlocked!": "Na-unlock ang aytem!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "TINANGGI ANG PAG-LINK. ang ${ACCOUNT} na ito\nay may makabuluhang data na maaaring MAWAWALA LAHAT.\nMaaari kang mag-link sa kabaligtaran na pagkakasunud-sunod kung gusto mo\n(at sa halip ay mawala ang data ng account na ITO)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "I-link ang account na ${ACCOUNT} sa account na ito?\nMawawala ang lahat ng umiiral na data sa ${ACCOUNT}.\nHindi na ito maaaring bawiin. Sigurado ka ba?",
+ "Longer streaks lead to better rewards.": "sunod-sunod mong buksan ang larong ito, mas malaking gantimpala.",
"Max number of playlists reached.": "Naabot na ang maximum na bilang ng mga playlist.",
"Max number of profiles reached.": "Naabot na ang maximum na bilang ng mga profile.",
- "Maximum friend code rewards reached.": "Naabot ang maximum na mga reward sa code ng kaibigan.",
+ "Maximum friend code rewards reached.": "Naabot ang maximum na mga reward sa kowd ng kaibigan.",
"Message is too long.": "Ang mensahe ay napakahaba.",
+ "New tournament result!": "Mga bagong resulta ng tournament!",
"No servers are available. Please try again soon.": "Walang makakuha na mga server. Pakisubukang muli sa lalong madaling oras.",
+ "No slots available. Free a slot and try again.": "Walang magagamit na mga puwang. Magbakante ng slot at subukang muli.",
"Profile \"${NAME}\" upgraded successfully.": "Matagumpay na na-upgrade ang profile na \"${NAME}\".",
"Profile could not be upgraded.": "Hindi ma-upgrade ang profile.",
"Purchase successful!": "Matagumpay ang pagbili!",
"Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Nakatanggap ng ${COUNT} na tiket para sa pag-sign in.\nBumalik bukas para makatanggap ng ${TOMORROW_COUNT}.",
"Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "Hindi na sinusuportahan ang functionality ng server sa bersyong ito ng laro;\nMangyaring mag-update sa isang mas bagong bersyon.",
- "Sorry, there are no uses remaining on this code.": "Pasensya na, wala nang natitirang gamit sa code na ito.",
- "Sorry, this code has already been used.": "Pasensya na, nagamit na ang code na ito.",
- "Sorry, this code has expired.": "Pasensya na, nag-expire na ang code na ito.",
- "Sorry, this code only works for new accounts.": "Pasensya na, gumagana lang ang code na ito para sa mga bagong account.",
+ "Sorry, there are no uses remaining on this code.": "Pasensya na, hindi na magagamit ang kowd na ito.",
+ "Sorry, this code has already been used.": "Pasensya na, nagamit na ang kowd na ito.",
+ "Sorry, this code has expired.": "Pasensya na, nag-expire na ang kowd na ito.",
+ "Sorry, this code only works for new accounts.": "Pasensya na, gumagana lang ang kowd na ito para sa mga bagong account.",
+ "Sorry, this has expired.": "Pasensya na, ito ay na-expire.",
"Still searching for nearby servers; please try again soon.": "Naghahanap pa rin ng mga kalapit na server; mangyaring subukan muli sa lalong madaling oras.",
+ "Streak: ${NUM} days": "Pagsunod-sunod: ${NUM} na araw",
"Temporarily unavailable; please try again later.": "Pansamantalang hindi magagamit; Subukang muli mamaya.",
"The tournament ended before you finished.": "Natapos ang tournament bago ka natapos.",
"This account cannot be unlinked for ${NUM} days.": "Ang account na ito ay hindi maaaring i-unlink sa loob ng ${NUM} (na) araw.",
@@ -1638,19 +1761,28 @@
"Tournaments require ${VERSION} or newer": "Ang mga paligsahan ay nangangailangan ng ${VERSION} o mas bago",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "I-unlink ang ${ACCOUNT} mula sa account na ito?\nIre-reset ang lahat ng data sa ${ACCOUNT}.\n(maliban sa mga nakamit sa ilang pagkakataon)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "BABALA: ang mga reklamo ng pag-hack ay inilabas laban sa iyong account.\nIpagbabawal ang mga account na makikitang nagha-hack. Mangyaring maglaro ng patas.",
+ "Wait reduced!": "Nabawasan ang hintay!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Babala: Ang bersyon ng larong ito ay nakatakda sa lumang data; mayroong pagkawala o kupas ang nasa larawan.\nPakiusap na mapalitan ng bagong bersyon ang laro na ito upang matanawin ang kasalukuyang data.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Gusto mo bang i-link ang iyong device account sa isang ito?\n\nAng iyong device account ay ${ACCOUNT1}\nAng account na ito ay ${ACCOUNT2}\n\nPapayagan ka nitong panatilihin ang iyong progress.\nBabala: hindi na ito maaaring bawiin!",
"You already own this!": "Nabili mo na ito!",
"You can join in ${COUNT} seconds.": "Makakasali ka sa loob ng ${COUNT} segundo.",
"You don't have enough tickets for this!": "Hindi sapat ang tickets mo para dito!",
"You don't own that.": "Hindi sayo iyan.",
"You got ${COUNT} tickets!": "Nakakuha ka ng ${COUNT} tickets!",
+ "You got ${COUNT} tokens!": "May nakuha ka na ${COUNT} tokens!",
"You got a ${ITEM}!": "Nakakuha ka ng ${ITEM}!",
+ "You got a chest!": "Mayroon na ka chest!",
+ "You got an achievement reward!": "May bago kang gantimpala sa tagumpay!",
"You have been promoted to a new league; congratulations!": "Na-promote ka sa isang bagong liga; congrats!",
- "You must update to a newer version of the app to do this.": "Dapat kang mag-update sa mas bagong bersyon ng app para magawa ito.",
- "You must update to the newest version of the game to do this.": "Dapat kang mag-update sa pinakabagong bersyon ng laro upang magawa ito.",
+ "You lost a chest! (All your chest slots were full)": "May nawalan ka na chest! (Lahat ng chest slot mo ay puno)",
+ "You must update the app to view this.": "Kailangan mong baguhin muna ang bersyon ng app na ito upang maitignan ito.",
+ "You must update to a newer version of the app to do this.": "Kailangang magbago sa mas mabagong bersyon ng app para magawa ito.",
+ "You must update to the newest version of the game to do this.": "Kailangang magbago sa pinakabagong bersyon ng laro upang magawa ito.",
"You must wait a few seconds before entering a new code.": "Dapat kang maghintay ng ilang segundo bago maglagay ng bagong code.",
- "You ranked #${RANK} in the last tournament. Thanks for playing!": "Ikaw ay niraranggo ng #${RANK} sa huling paligsahan. Salamat sa paglalaro!",
+ "You placed #${RANK} in a tournament!": "Nag place ka ng #${RANK} sa paligsahan!",
+ "You ranked #${RANK} in the last tournament. Thanks for playing!": "Ikaw ay niraranggo ng #${RANK} sa huling paligsahan. Salamat po sa paglalaro!",
"Your account was rejected. Are you signed in?": "Tinanggihan ang iyong account. Naka-sign in ka ba?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Ang bilang ng iyong pagnood ng adbertismo ay hindi napaoarehistro. Ang iyong opsyon sa pagnood ay saglit na limitado.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Ang iyong kopya ng laro ay na-modified.\nMangyaring ibalik ang anumang mga pagbabago at subukang muli.",
"Your friend code was used by ${ACCOUNT}": "Ang code ng iyong kaibigan ay ginamit ng ${ACCOUNT}"
},
@@ -1665,9 +1797,9 @@
"5 Minutes": "5 minuto",
"8 Seconds": "8 segundo",
"Allow Negative Scores": "Payagan ang Mga Negatibong Iskor",
- "Balance Total Lives": "Balansehin ang Kabuuang Buhay",
+ "Balance Total Lives": "Balansehin ang Kabuuhang Buhay",
"Bomb Spawning": "Paglitaw ng Bomba",
- "Chosen One Gets Gloves": "Ang Isa Sa Napili Ay Makukuha Ng Gloves",
+ "Chosen One Gets Gloves": "Ang Isa Sa Napili Ay Makukuha Mga Guwantes",
"Chosen One Gets Shield": "Ang Isa Sa Napili Ay Makukuha Ng Kalasag",
"Chosen One Time": "Oras Ng Isa Sa Napili",
"Enable Impact Bombs": "I-enable Ang Mga Gatilyong Bomba",
@@ -1707,51 +1839,51 @@
"Red": "Pula"
},
"tips": {
- "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Ang isang perpektong naka-time na takbo-talon-ikot-suntok ay maaaring makapatay sa isang hit\nat magkaroon ka ng panghabambuhay na paggalang mula sa iyong mga kaibigan.",
- "Always remember to floss.": "Laging tandaan na mag-floss.",
- "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Gumawa ng mga profile ng player para sa iyong sarili at sa iyong mga kaibigan\nang iyong mga gustong pangalan at hitsura sa halip na gumamit ng mga random.",
- "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Ginagawa ka ng sumpa sa isang ticking time na bomba.\nAng tanging lunas ay ang mabilisang kumuha ng health-pack.",
- "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Sa kabila ng kanilang hitsura, lahat ng kakayahan ng mga karakter ay magkapareho,\nkaya pumili lang kung alin ang pinakahawig mo.",
- "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Huwag masyadong maangas sa enerhiya na kalasag na iyon; ihahagis ka nila sa isang platform",
- "Don't run all the time. Really. You will fall off cliffs.": "Huwag tumakbo sa lahat ng oras. Talaga. Mahuhulog ka sa platform",
- "Don't spin for too long; you'll become dizzy and fall.": "Huwag paikutin nang masyadong mahaba; mahihilo ka at mahulog.",
- "Hold any button to run. (Trigger buttons work well if you have them)": "Pindutin ang anumang pindutan upang tumakbo. (Mahusay na gumagana ang mga pindutan ng pag-trigger kung mayroon ka nito)",
- "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Pindutin nang matagal ang anumang button para tumakbo. Mas mabilis kang makakakuha ng mga lugar\nngunit hindi lumiko nang mahusay, kaya mag-ingat sa matalim na mga gilid",
- "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Ang mga bomba ng yelo ay hindi masyadong malakas, ngunit nagyeyelo\nkung sino man ang kanilang natamaan, na nag-yelo sa kanila na madaling masira.",
- "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Kung may napulot sa iyo, suntukin mo siya at bibitaw siya.\nGumagana rin ito sa totoong buhay.",
- "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Kung kulang ka sa mga controller, i-install ang '${REMOTE_APP_NAME}' app\nsa iyong mga mobile device upang gamitin ang mga ito bilang mga controller.",
- "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Kung nakadikit sa iyo ang isang malagkit na bomba, tumalon at paikutin. Baka \ni-alis mo ang bomba, o kung wala na ang iyong mga huling sandali ay nakakaaliw.",
- "If you kill an enemy in one hit you get double points for it.": "Kung pumatay ka ng isang kalaban sa isang hit makakakuha ka ng dobleng puntos para dito.",
- "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Kung nakatanggap ka ng sumpa, ang tanging pag-asa mo para mabuhay ay\nmaghanap ng health powerup sa susunod na ilang segundo.",
- "If you stay in one place, you're toast. Run and dodge to survive..": "Kung manatili ka sa isang lugar, toasted ka. Tumakbo at umigtad para mabuhay..",
- "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Kung marami kang manlalaro na dumarating at pupunta, i-on ang 'auto-kick-ng-idle-na-manlalaro’\nsa ilalim ng mga setting kung sakaling may makakalimutang umalis sa laro.",
- "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Kung masyadong mainit ang iyong device o gusto mong makatipid ng baterya,\ni-down ang \"Biswal” o \"Resolusyon\" sa Mga Setting->Grapika",
- "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Kung hindi mabuti ang iyong framerate, subukang ibaba ang resolusyon\no mga biswal sa mga setting ng grapika ng laro.",
- "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "Sa Kunin-ang-Bandila, ang iyong sariling bandila ay dapat nasa iyong base para makaiskor, Kung ang isa\nang team ay malapit nang makapuntos, ang pagnanakaw ng kanilang bandila ay maaaring maging isang magandang paraan upang pigilan sila.",
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Ang isang perpektong oras na takbo-talon-ikot-suntok ay maaaring makapatay sa isang tama\nat magkaroon ka ng panghabambuhay na paggalang mula sa iyong mga kaibigan.",
+ "Always remember to floss.": "Laban-laban lang!",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Gumawa ng mga karakter para sa iyong sarili at sa mga kaibigan mo na\nmayroong kanyang-kanyang pangalan at itsura kaysa ano-ano ang pinagpilian mo.",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Ang \"Sumpa\" ay ginagawa kang isang masasaboh na bomba.\nAng tanging lunas ay ang mabilisang kumuha ng health-pack.",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Sa kabila ng kanilang hitsura, lahat ng kakayahan ng mga karakter ay magkaparehas lamang,\nkaya pumili lang kung alin ang pinakahawig mo.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Huwag masyadong maangas sa paggalaw na mayroon kang enerhiyang kalasag; pwede ka pa rin nilang ihagis mula sa isang plataporma.",
+ "Don't run all the time. Really. You will fall off cliffs.": "Talagang huwag tumakbo sa lahat ng oras. Mahuhulog ka.",
+ "Don't spin for too long; you'll become dizzy and fall.": "Huwag paikutin Ang iyong sarili nang masyadong matagal; mahihilo at matumba ka.",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Pindutin ang anumang pindutan upang tumakbo. (Mahusay na gumagana gamit ang mga pindutang kalabitan kung mayroon ka nito)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Pindutin nang matagal ang anumang pindutan para tumakbo. Mas mabilis kang makarating\nngunit hindi lumiko nang mahusay, kaya mag-ingat sa matalim na mga gilid",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Ang mga Bombang Yelo ay hindi masyadong malakas, ngunit makatigil at magyeyelo\nkung sino man ang kanilang natamaan na madaling maisira.",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Kung ikaw ay nahawak, suntukin mo at bibitaw siya.\nNatunay ito sa totoong buhay.",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Kung kulang ka sa mga controller, gamitin ang '${REMOTE_APP_NAME}'\nsa iyong mga gadyet upang gamitin ang mga ito bilang mga controller.",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Kung nakadikit sa iyo ang isang Bombang Malagkit, tumalon at umikot ka. Baka\nmaialis mo ang bomba mula sa iyong sarili, dili kaya'y nakakaaliw Ang iyong huling sandali.",
+ "If you kill an enemy in one hit you get double points for it.": "Kapag pumatay ka ng isang kalaban sa isang tama lamang, makakakuha ka ng dobleng puntos.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Kung 'di mo sinadyang nakuha ng Sumpa, ang tanging pag-asa mo para mabuhay ay\nmaghanap ng Medikal-Pakete sa susunod na 5 segundo.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "Kung manatili ka sa isang lugar, wala ka na. Tumakbo at umigtad para mabuhay..",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Kung marami kang manlalaro na dumarating at pupunta, buksan ang 'Ipalayas ang manlalarong hindi gumagalaw’\nsa ilalim ng mga setting kung sakaling may makakalimutang umalis sa laro.",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Kung masyadong mainit ang iyong device o gusto mong makatipid ng baterya,\nhanggahan ang \"Biswal” o \"Resolusyon\" sa Mga Setting->Grapika",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Kung hindi mabuti ang iyong framerate, subukang ibaba ang resolusyon\no mga biswal sa grapika, mga setting.",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "Sa Kunin-ang-Bandila, ang iyong sariling bandila ay dapat nasa iyong istasyon para makaiskor, Kung ang isa\nang team ay malapit nang makapuntos, ang pagnanakaw ng kanilang bandila ay maaaring maging isang paraan upang pigilan ang iyon.",
"In hockey, you'll maintain more speed if you turn gradually.": "Sa hockey, mapapanatili mo ang higit na bilis kung unti-unti kang lumiko.",
"It's easier to win with a friend or two helping.": "mas madaling manalo sa tulong ng isa o dalawang kaibigan.",
- "Jump just as you're throwing to get bombs up to the highest levels.": "Tumalon habang humagis upang makakuha ng mga bomba hanggang sa pinakamataas na antas.",
- "Land-mines are a good way to stop speedy enemies.": "Ang mga mina ay isang mahusay na paraan upang pigilan ang mabilis na mga kalaban.",
- "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Maraming bagay ang maaaring kunin at ihagis, kabilang ang iba pang mga manlalaro. Paghahagis\nang iyong mga kalaban mula sa mga gilid ay maaaring maging isang epektibo at emosyonal na diskarte.",
- "No, you can't get up on the ledge. You have to throw bombs.": "Hindi, hindi ka makakabangon sa pag-ungos. Kailangan mong maghagis ng bomba.",
- "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Maaaring sumali at umalis ang mga manlalaro sa gitna ng karamihan ng mga laro,\nat maaari mo ring isaksak at i-unplug ang mga controller nang mabilis.",
- "Practice using your momentum to throw bombs more accurately.": "Magsanay gamit ang iyong momentum para maghagis ng mga bomba nang mas tumpak.",
- "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Ang mga suntok ay mas nagdudulot ng saktan sa mas mabilis na paggalaw ng iyong mga kamay,\nkaya subukang tumakbo, tumalon, at umiikot na parang baliw.",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "Tumalon habang humagis ng mga bomba upang makarating ito sa pinakamataas na antas.",
+ "Land-mines are a good way to stop speedy enemies.": "Ang mga mina ay isang mahusay na paraan upang pigilan ang mabilis na mga kalaban.",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Maraming bagay ang maaaring kunin at ihagis, kabilang ang iba pang mga manlalaro. Paghahagis\nang iyong mga kalaban mula sa talampas ay maaaring maging isang epektibo at emosyonal na pagdiskarte.",
+ "No, you can't get up on the ledge. You have to throw bombs.": "Hindi ka makakahawak sa ungos. Kailangan mong maghagis ng bomba.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Maaaring sumali at umalis ang mga manlalaro sa gitna ng karamihan ng mga laro,\nat maaari mo ring isaksak at magpatanggal ang mga controller nang mabilis.",
+ "Practice using your momentum to throw bombs more accurately.": "Magsanay gamit ang iyong pag-udyok para maghagis ng mga bomba nang mas wasto.",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Ang mga suntok ay mas nagdudulot ng pagsaktan sa mas mabilis na paggalaw ng iyong mga kamay,\nkaya subukang tumakbo, tumalon, at umiikot na parang baliw.",
"Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Patakbong pabalik-balik bago maghagis ng bomba\nupang ‘ma-ikot’ ito at ihagis ito nang mas malayo.",
- "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Ilabas ang isang grupo ng mga kalaban sa pamamagitan ng\nnaglalagay ng bomba malapit sa isang TNT box.",
- "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "Ang ulo ay ang pinaka-mahina na lugar, kaya isang malagkit-bomba \nna lumapag sa ulo mo ay game-over na.",
- "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Ang level na ito ay hindi kailanman nagtatapos, ngunit isang mataas na iskor dito\nbibigyan ka ng walang hanggang paggalang sa buong mundo.",
- "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Ang lakas ng paghagis ay batay sa direksyon na iyong hinahawakan.\nUpang ihagis ang isang bagay nang malumanay sa harap mo, huwag humawak sa anumang direksyon.",
- "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Pagod na sa mga soundtrack? Palitan nito ng iyong sarili!\nTingnan ang Mga Setting->Audio->Soundtrack",
- "Try 'Cooking off' bombs for a second or two before throwing them.": "Try mo ‘I-timing” ang mga bomba sa isang segundo o dalawa bag mo ihagis.",
- "Try tricking enemies into killing eachother or running off cliffs.": "Subukang linlangin ang mga kalaban sa pagpatay sa isa't isa o pahulog sa mga gilid.",
- "Use the pick-up button to grab the flag < ${PICKUP} >": "Gamitin ang pick-up button para kunin ang bandera < ${PICKUP} >",
- "Whip back and forth to get more distance on your throws..": "Paikut-ikot upang makakuha ng higit na distansya sa iyong mga paghagis..",
- "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Maaari mong 'itutok' ang iyong mga suntok sa pamamagitan ng pag-ikot pakaliwa o pakanan.\nIto ay kapaki-pakinabang para sa pagtanggal ng mga kalaban sa mga gilid o pag-iskor sa hockey.",
- "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Maaari mong hatulan kung kailan sasabog ang isang bomba batay sa\nkulay ng sparks mula sa fuse nito: Dilaw..Kahel..Pula..SABOG.",
- "You can throw bombs higher if you jump just before throwing.": "Maaari kang maghagis ng mga bomba nang mas mataas kung tumalon ka bago ihagis.",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Pwede kang masaktan kapag natamaan mo ang iyong ulo sa mga bagay,\nkaya't subukang huwag ipilit ang iyong ulo sa iyan.",
- "Your punches do much more damage if you are running or spinning.": "Ang iyong mga suntok ay nagdudulot ng higit na damage kung ikaw ay tumatakbo o umiikot."
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Magpatay ang isang grupo ng mga kalaban sa pamamagitan ng\npagsabog ng bomba malapit sa isang kahong TNT.",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "Ang ulo ay ang pinakamatalban na parte, kaya isang Bombang Malagkit \nna lumapag sa ulo mo ay dedma ka na.",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Ang anyas na ito ay hindi kailanman nagtatapos, ngunit isang mataas na iskor dito\nbibigyan ka ng walang hanggang paggalang mula sa buong mundo.",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Ang lakas ng paghagis ay batay sa direksyon na iyong hinahawakan.\nUpang ihagis ang isang bagay nang malumanay sa harap mo, huwag maitungo sa anumang direksyon.",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Pagod na sa mga soundtrack? Palitan nito ng iyong sarili!\nTignan ang Mga Setting->Tugtugan->Mga Soundtrack",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Try mo \"Itiisin” ang mga bomba sa isang segundo o dalawa bago mo ihagis.",
+ "Try tricking enemies into killing eachother or running off cliffs.": "Subukang linlangin ang mga kalaban sa pagsuntok sa isa't isa o pahulog sa mga gilid.",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "Gamitin ang pindutang \"Pulutin\" para makunin ang bandera < ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "Paikut-ikot upang makakuha ng higit pang distansya sa iyong mga paghagis..",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Maaari mong 'itutok' ang iyong mga suntok sa pamamagitan ng pagtungo pakaliwa o pakanan.\nIto ay kapaki-pakinabang para sa pagtama sa mga kalaban sa mga gilid o pag-iskor sa hockey.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Maaari mong hatulan kung kailan sasabog ang isang bomba batay sa\nkulay ng tilamsik mula sa bungad nito: Dilaw..Kahel..Pula..BOOM.",
+ "You can throw bombs higher if you jump just before throwing.": "Maaari kang maihagis ng mga bomba nang mas mataas kung tumalon ka bago ihagis.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Pwede kang masaktan kapag natamaan mo ang iyong ulo sa mga bagay,\nkaya't subukang huwag matama ang iyong ulo sa iyan.",
+ "Your punches do much more damage if you are running or spinning.": "Ang iyong mga suntok ay nagdudulot ng higit pang saktan kung ikaw ay tumatakbo o umiikot."
}
},
"trophiesRequiredText": "Nangangailangan ito ng ${NUMBER} na trophies.",
@@ -1759,32 +1891,32 @@
"trophiesThisSeasonText": "Mga Tropeo Ngayong Season",
"tutorial": {
"cpuBenchmarkText": "Pagpapatakbo ng tutorial sa nakakatawang bilis (pangunahing test sa bilis ng CPU)",
- "phrase01Text": "Kamusta!",
+ "phrase01Text": "Kumusta!",
"phrase02Text": "Maligayang pagdating sa ${APP_NAME}!",
- "phrase03Text": "Narito ang ilang mga tip para sa pagkontrol ng iyong karakter:",
+ "phrase03Text": "Narito ang ilang mga paunawa para sa pagkontrol ng iyong karakter:",
"phrase04Text": "Maraming bagay sa ${APP_NAME} ang nakabatay sa PISIKA",
"phrase05Text": "Halimbawa, kapag sumuntok ka,..",
- "phrase06Text": "..binase ang damage sa bilis ng mga kamay mo.",
+ "phrase06Text": "..nakabatay ang sakit sa bilis ng mga kamay mo.",
"phrase07Text": "Kita mo? Hindi kami gumagalaw, kaya halos hindi nasaktan si ${NAME}",
"phrase08Text": "Ngayon, tumalon at umikot tayo upang makakuha ng higit na bilis.",
- "phrase09Text": "Ayan, mas maganda",
+ "phrase09Text": "Ayan, mas maayos.",
"phrase10Text": "Ang pagtakbo ay nakakatulong din.",
"phrase11Text": "Pindutin nang matagal ang KAHIT ANONG pindutan para tumakbo.",
- "phrase12Text": "Para sa sobrang kahanga-hangang mga suntok, subukang tumakbo AT umikot.",
- "phrase13Text": "Oops; pasensya na ${NAME}.",
- "phrase14Text": "Maaari mong kunin at ihagis ang mga bagay tulad ng mga bandera.. o si ${NAME}.",
- "phrase15Text": "Sa huli, meron pampasabog",
- "phrase16Text": "Ang paghagis ng bomba ay kailangan may practice",
- "phrase17Text": "Aray! Hindi napakahusay na hagis.",
- "phrase18Text": "Ang paggalaw ay nakakatulong sa iyo na ihagis ng mas malayo.",
- "phrase19Text": "Ang pagtalon tumutulong para matapon mo na masmataas",
- "phrase20Text": "Ikot at ihagis ang iyong mga bomba para sa mas mahabang paghagis.",
- "phrase21Text": "Ang pagtiming sa bomba ay pwedeng tricky",
+ "phrase12Text": "Para sa sobrang kumikirot na mga suntok, subukang tumakbo AT umikot.",
+ "phrase13Text": "Pasensya na pala, ${NAME}.",
+ "phrase14Text": "Maaari mong kunin at ihagis ang mga bagay tulad ng mga bandila.. o si ${NAME}.",
+ "phrase15Text": "Sa huli, meron pampasabog o bomba.",
+ "phrase16Text": "Nangangailangang sanayin ang paghagis ng bomba.",
+ "phrase17Text": "Aray! Hindi maayos na hagis.",
+ "phrase18Text": "Ang paggalaw ay nakakatulong maihagis ng mas malayo.",
+ "phrase19Text": "Ang pagtalon ay tumutulong para maihagis mo na masmataas",
+ "phrase20Text": "Umikot at ihagis ang iyong mga bomba para sa mas mahabang paghagis.",
+ "phrase21Text": "Pwede kang malito sa pagtiyempo ng iyong bomba.",
"phrase22Text": "Aba.",
- "phrase23Text": "Subukang “i-timing” fuse para sa isang segundo o dalawa.",
- "phrase24Text": "Yay! Magaling na gawa.",
+ "phrase23Text": "Subukang “ipagtiyempo” ang bomba sa isang segundo o dalawa.",
+ "phrase24Text": "Yay! Lutong-luto!",
"phrase25Text": "Well, hanggang doon lang.",
- "phrase26Text": "Ngayon kunin mo sila, tigre!",
+ "phrase26Text": "Ngayon,talunin mo na sila!",
"phrase27Text": "Alalahanin ang iyong pagsasanay, at babalik KANG buhay!",
"phrase28Text": "...siguro...",
"phrase29Text": "Paalam!",
@@ -1793,28 +1925,35 @@
"randomName3Text": "Stephen",
"randomName4Text": "Joshua",
"randomName5Text": "Villar",
- "skipConfirmText": "Sure ka ba na i-skip ang tutorial? Tap o pindutin para ma i-confirm.",
+ "skipConfirmText": "Sigurado ka ba na laktawin ang tutorial? I-tap o pindutin para sigurado ka.",
"skipVoteCountText": "${COUNT}/${TOTAL} boto na gustong laktawan",
- "skippingText": "Nilalaktawan ang tutorial",
+ "skippingText": "Nilalaktawan ang tutorial...",
"toSkipPressAnythingText": "(i-tap o pindutin ang anuman para laktawan ang tutorial)"
},
"twoKillText": "DOBLENG PAGPATAY!!",
- "unavailableText": "hindi available",
+ "uiScaleText": "Sukat Ng UI",
+ "unavailableText": "hindi pwede",
+ "unclaimedPrizesText": "May mga premyo ka pang hindi nakukuha!",
"unconfiguredControllerDetectedText": "Naktuklas ang hindi naka-configure na controller:",
"unlockThisInTheStoreText": "Ito ay dapat na naka-unlock sa tindahan.",
"unlockThisProfilesText": "Upang lumikha ng higit sa ${NUM} na mga profile, kailangan mo:",
"unlockThisText": "Upang i-unlock ito, kailangan mo ng:",
+ "unsupportedControllerText": "Pasensya na, ang pangalan na \"${NAME}\" ay hindi naipataguyod.",
"unsupportedHardwareText": "Pasensya na, ang hardware na ito ay hindi suportado ng build na ito ng laro.",
"upFirstText": "Bumangon muna:",
"upNextText": "Susunod sa larong ${COUNT}:",
- "updatingAccountText": "Ina-update ang iyong account...",
+ "updatingAccountText": "Pinababago ang iyong account...",
"upgradeText": "I-upgrade",
"upgradeToPlayText": "I-unlock ang \"${PRO}\" sa in-game store upang i-play ito.",
"useDefaultText": "Gamitin ang default",
+ "userSystemScriptsCreateText": "lumikha ng mga script ng system ng gumagamit",
+ "userSystemScriptsDeleteText": "tanggalin ang mga script ng system ng gumagamit",
"usesExternalControllerText": "Gumagamit ang larong ito ng external na controller para sa input.",
"usingItunesText": "Paggamit ng Music App para sa soundtrack...",
"v2AccountLinkingInfoText": "Upang ma-link ang mga V2 account mo, dumeretso ka sa “I-Manage ang Account“.",
+ "v2AccountRequiredText": "Kailangan Ang iyong V2 account para rito. Itaas ang grado ng iyong account at ulitin.",
"validatingTestBuildText": "Pinapatunayan ang Test Build...",
+ "viaText": "via",
"victoryText": "Panalo!",
"voteDelayText": "Hindi ka makapagsimula ng bagong botohan sa ${NUMBER} segundo",
"voteInProgressText": "Ang pagboboto ay isinasagawa na.",
@@ -1844,11 +1983,11 @@
"titleText": "Manood",
"watchReplayButtonText": "Ipanood ang\nReplay"
},
- "waveText": "Kaway",
+ "waveText": "Yugtong",
"wellSureText": "Oo Syempre!",
"whatIsThisText": "Ano ito?",
"wiimoteLicenseWindow": {
- "titleText": "Copyright ni DarwiinRemote"
+ "titleText": "Copyright ng DarwiinRemote"
},
"wiimoteListenWindow": {
"listeningText": "Nakikinig sa Wiimote...",
@@ -1856,20 +1995,20 @@
"pressText2": "Sa mas bagong Wiimotes na may built in na Motion Plus, pindutin na lang ang pulang 'sync' na button sa likod."
},
"wiimoteSetupWindow": {
- "copyrightText": "Copyright ni DarwinRemote",
+ "copyrightText": "Copyright ni DarwinRemote ",
"listenText": "Makinig",
"macInstructionsText": "Tiyaking naka-off ang iyong Wii at naka-enable ang Bluetooth\nsa iyong Mac, pagkatapos ay pindutin ang 'Makinig'. Maaari ang suporta ng Wiimote\nmaging medyo patumpik-tumpik, kaya maaaring kailanganin mong subukan ng ilang beses\nbago ka magkaroon ng koneksyon.\n\nDapat hawakan ng Bluetooth ang hanggang 7 konektadong device,\nkahit na ang iyong mileage ay maaaring mag-iba.\n\nSinusuportahan ng BombSquad ang orihinal na Wiimotes, Nunchuks,\nat ang Klasikong Controller.\nGumagana na rin ang mas bagong Wii Remote Plus\nngunit hindi sa mga kalakip.",
"thanksText": "Salamat sa DarwiinRemote team\nPara maging posible ito.",
- "titleText": "Pag-setup ng Wiimote"
+ "titleText": "Pag-setup ng Wiimote "
},
"winsPlayerText": "Nanalo si ${NAME}!",
"winsTeamText": "Nanalo ang ${NAME}!",
"winsText": "${NAME} Nanalo!",
"workspaceSyncErrorText": "Error sa pag-sync ng ${WORKSPACE}. Tingnan ang log para sa mga detalye.",
"workspaceSyncReuseText": "Hindi ma-sync ang ${WORKSPACE}. Muling paggamit ng nakaraang naka-sync na bersyon.",
- "worldScoresUnavailableText": "Ang scores sa buong mundo ay hindi pa handa",
- "worldsBestScoresText": "Pinakamahusay na Iskor ng Mundo",
- "worldsBestTimesText": "Oras ng Pinakamahusay sa Mundo",
+ "worldScoresUnavailableText": "Hindi makuha ang mga pandaigdigang iskor.",
+ "worldsBestScoresText": "Pinakamahusay na Iskor sa Mundo",
+ "worldsBestTimesText": "Oras ng Pinakamabilis sa Mundo",
"xbox360ControllersWindow": {
"getDriverText": "Kunin ang Driver",
"macInstructions2Text": "Upang gumamit ng mga controller nang wireless, kakailanganin mo rin ang receiver na iyon\nay kasama ang 'Xbox 360 Wireless Controller para sa Windows'.\nPinapayagan ka ng isang receiver na kumonekta hanggang sa 4 na controllers.\n\nMahalaga: Ang mga 3rd-party na receiver ay hindi gagana sa driver na ito;\ntiyaking 'Microsoft' ang nakasulat dito sa iyong receiver, hindi 'XBOX 360'.\nHindi na ibinebenta ng Microsoft ang mga ito nang hiwalay, kaya kakailanganin mong makuha\nyung naka-bundle sa controller or else search ebay.\n\nKung sa tingin mo ay kapaki-pakinabang ito, mangyaring isaalang-alang ang isang donasyon sa\ndeveloper ng driver sa kanilang site.",
@@ -1879,5 +2018,6 @@
},
"yesAllowText": "Sige!",
"yourBestScoresText": "Pinakamataas Mong Iskor",
- "yourBestTimesText": "Pinakamabilis Mong Oras"
+ "yourBestTimesText": "Pinakamabilis Mong Oras",
+ "yourPrizeText": "Premyo mo:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/french.json b/dist/ba_data/data/languages/french.json
index 873fadfb..4e10f0f5 100644
--- a/dist/ba_data/data/languages/french.json
+++ b/dist/ba_data/data/languages/french.json
@@ -7,7 +7,9 @@
"campaignProgressText": "Progression de la campagne [Difficile]: ${PROGRESS}",
"changeOncePerSeason": "Vous ne pouvez changer cela qu'une fois par saison.",
"changeOncePerSeasonError": "Vous devez attendre la prochaine saison pour le modifier à nouveau (${NUM} jours)",
+ "createAnAccountText": "Créer un compte",
"customName": "Nom personnalisé",
+ "deleteAccountText": "Supprimer le compte",
"googlePlayGamesAccountSwitchText": "Si vous voulez utiliser un autre compte Google, \nutilisez l'application Google Play Games pour le changer.",
"linkAccountsEnterCodeText": "Entrer code",
"linkAccountsGenerateCodeText": "Générez votre code",
@@ -26,14 +28,16 @@
"setAccountNameDesc": "Sélectionnez le nom à afficher pour votre compte.\nVous pouvez utiliser le nom d'un de vos comptes\n associés ou créer un nom personnalisé unique.",
"signInInfoText": "Connectez-vous pour gagner des tickets, participer aux tournois en ligne,\net partager votre progression entre plusieurs appareils.",
"signInText": "Connexion",
+ "signInWithAnEmailAddressText": "Connectez-vous avec une adresse e-mail",
"signInWithDeviceInfoText": "(un compte généré automatiquement utilisable seulement sur cet appareil)",
"signInWithDeviceText": "Connectez-vous avec le compte de cet appareil",
"signInWithGameCircleText": "Connectez-vous avec Game Circle",
"signInWithGooglePlayText": "Connectez-vous avec Google Play",
"signInWithTestAccountInfoText": "(ancien compte; utilisez les comptes de cet appareil pour les prochaines fois)",
"signInWithTestAccountText": "Connectez-vous avec un compte test",
+ "signInWithText": "Connectez-vous avec ${SERVICE}",
"signInWithV2InfoText": "(un compte qui fonctionne sur toutes les plateformes)",
- "signInWithV2Text": "Connectez-vous avec un compte Bombsquad",
+ "signInWithV2Text": "Connectez-vous avec un compte ${APP_NAME}",
"signOutText": "Se déconnecter",
"signingInText": "Connexion...",
"signingOutText": "Déconnexion...",
@@ -339,9 +343,14 @@
"getMoreGamesText": "Obtenir plus de jeux...",
"titleText": "Ajouter un Jeu"
},
+ "addToFavoritesText": "Ajouter aux favoris",
+ "addedToFavoritesText": "'${NAME}' a été ajouté aux favoris.",
+ "allText": "Tous",
"allowText": "Autoriser",
"alreadySignedInText": "Votre compte est connecté sur un autre appareil;\nveuillez changer de compte ou fermez le jeu sur \nles autres appareils et réessayez.",
"apiVersionErrorText": "Impossible de charger le jeu ${NAME}; sa version api est ${VERSION_USED}; nous demandons la version ${VERSION_REQUIRED}.",
+ "applyText": "Appliquer",
+ "areYouSureText": "Êtes-vous sûr ?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" s'active seulement quand un casque est branché)",
"headRelativeVRAudioText": "Son à position relative (RV)",
@@ -367,14 +376,24 @@
"boostText": "Accroître",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} est configuré dans sa propre application.",
"buttonText": "bouton",
- "canWeDebugText": "Voulez-vous que BombSquad envoie automatiquement un rapport des bugs, \ncrashs et certaines informations relatives au jeu au développeur?\n\nCes rapports ne contiendront aucune information personnelle \net aideront à maintenir un jeu sans bugs ni ralentissements.",
+ "canWeDebugText": "Voulez-vous que ${APP_NAME} envoie automatiquement un rapport des bugs, \ncrashs et certaines informations relatives au jeu au développeur?\n\nCes rapports ne contiendront aucune information personnelle \net aideront à maintenir un jeu sans bugs ni ralentissements.",
"cancelText": "Annuler",
"cantConfigureDeviceText": "Désolé, ${DEVICE} ne peut pas être configuré.",
"challengeEndedText": "Ce défi est terminé.",
"chatMuteText": "Tchat muet",
"chatMutedText": "Tchat muet",
"chatUnMuteText": "Réactiver tchat",
+ "chests": {
+ "prizeOddsText": "Chances de prix",
+ "reduceWaitText": "Réduire l'attente",
+ "slotDescriptionText": "Cet emplacement peut contenir un coffre.\n\nGagnez des coffres en jouant à des niveaux\nde campagne, en participant à des tournois\net en terminant les succès.",
+ "slotText": "Coffre n° ${NUM}",
+ "slotsFullWarningText": "ATTENTION: tous vos coffres sont pleins.\nLes coffres gagnés dans ce jeu seront perdus.",
+ "unlocksInText": "Se débloque dans"
+ },
"choosingPlayerText": "",
+ "claimText": "Réclamer",
+ "codesExplainText": "Les codes sont fournis par le développeur pour \ndiagnostiquer et corriger les problèmes de compte.",
"completeThisLevelToProceedText": "Vous devez compléter ce \nniveau pour continuer!",
"completionBonusText": "Bonus de fin",
"configControllersWindow": {
@@ -458,6 +477,7 @@
"titleText": "Configurer l'Écran Tactile",
"touchControlsScaleText": "Taille des boutons tactiles"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} peut être configuré dans Paramètres Système.",
"configureItNowText": "Configurer maintenant?",
"configureText": "Configurer",
"connectMobileDevicesWindow": {
@@ -568,6 +588,7 @@
"demoText": "Démo",
"denyText": "Refuser",
"deprecatedText": "Obsolète",
+ "descriptionText": "Description",
"desktopResText": "Résolution de l'Ordinateur",
"deviceAccountUpgradeText": "Avertissement:\nVous etes connecté avec un compte d'appareil (${NAME}).\nLes comptes d'appareils seront enlevés dans une future mise à jour.\nMettez à jour vers un compte V2 si vous voulez garder votre progression.",
"difficultyEasyText": "Facile",
@@ -578,6 +599,10 @@
"disableRemoteAppConnectionsText": "Désactiver les connexions d'applications-manettes",
"disableXInputDescriptionText": "Permet plus que 4 manettes mais risque de malfonctionner.",
"disableXInputText": "Désactiver XInput",
+ "disabledText": "Désactivé",
+ "discardText": "Rejeter",
+ "discordFriendsText": "Vous voulez chercher de nouvelles personnes avec qui jouer ? \nRejoignez notre Discord et trouvez de nouveaux amis !",
+ "discordJoinText": "Rejoignez le Discord",
"doneText": "Terminé",
"drawText": "Égalité",
"duplicateText": "Dupliquer",
@@ -612,6 +637,7 @@
"localProfileText": "(profil local)",
"nameDescriptionText": "Nom du Joueur",
"nameText": "Nom",
+ "profileAlreadyExistsText": "Un profile avec ce nom existe deja",
"randomText": "aléatoire",
"titleEditText": "Éditer ce Profil",
"titleNewText": "Nouveau Profil",
@@ -651,6 +677,7 @@
"useMusicFolderText": "Dossier de Fichiers Musicaux"
},
"editText": "Éditer",
+ "enabledText": "Activé",
"endText": "Terminé",
"enjoyText": "Amusez-vous Bien!",
"epicDescriptionFilterText": "${DESCRIPTION} Dans un \"slow-motion\" épique.",
@@ -662,6 +689,8 @@
"errorText": "Erreur",
"errorUnknownText": "erreur inconnue",
"exitGameText": "Quitter ${APP_NAME}?",
+ "expiredAgoText": "Expiré il y a ${T}",
+ "expiresInText": "Expire dans ${T}",
"exportSuccessText": "'${NAME}' exporté.",
"externalStorageText": "Stockage Externe",
"failText": "Échec",
@@ -698,6 +727,8 @@
"editText": "Modifier\nLa Playlist",
"gameListText": "Liste de jeu",
"newText": "Nouvelle\nPlaylist",
+ "pointsToWinText": "Point pour gagner",
+ "seriesLengthText": "Longueur de la série",
"showTutorialText": "Voir le Tutoriel",
"shuffleGameOrderText": "Mélanger l'ordre des jeux",
"titleText": "Personnaliser les Playlists ${TYPE}"
@@ -726,6 +757,7 @@
"copyCodeConfirmText": "Le code a bien été copié dans le presse-papier.",
"copyCodeText": "Copier le code",
"dedicatedServerInfoText": "Pour un meilleur résultat, créez un server dédié. Voir bombsquadgame.com/server pour plus d'infos.",
+ "descriptionShortText": "Utilisez la fenêtre de regroupement pour constituer un groupe.",
"disconnectClientsText": "Ceci déconnectera le(s) ${COUNT} joueur(s)\nde votre partie. Êtes-vous sûr?",
"earnTicketsForRecommendingAmountText": "Vos amis recevront ${COUNT} tickets si ils essayent le jeu\n(et vous recevrez ${YOU_COUNT} pour chacun d'entre eux qui le feront)",
"earnTicketsForRecommendingText": "Partagez le jeu pour \ndes tickets gratuits...",
@@ -738,10 +770,10 @@
"friendHasSentPromoCodeText": "${COUNT} tickets ${APP_NAME} de la part de ${NAME}",
"friendPromoCodeAwardText": "Vous recevrez ${COUNT} tickets à chaque fois qu'il sera utilisé.",
"friendPromoCodeExpireText": "Ce code expirera dans ${EXPIRE_HOURS} heures et ne fonctionne que pour les nouveaux joueurs.",
- "friendPromoCodeInstructionsText": "Pour l'utiliser, ouvrez ${APP_NAME} puis aller dans \"Paramètres->Avancé->Entrer code\".\nAllez sur bombsquadgame.com pour les liens de téléchargement pour toutes les plateformes supportées.",
+ "friendPromoCodeInstructionsText": "Pour l'utiliser, ouvrez ${APP_NAME} puis allez dans \"Paramètres -> Avancé -> Entrer code\".\nAllez sur bombsquadgame.com pour les liens de téléchargement pour toutes les plateformes supportées.",
"friendPromoCodeRedeemLongText": "Peut être utilisé pour ${COUNT} tickets gratuits jusqu'à ${MAX_USES} personnes maximum.",
"friendPromoCodeRedeemShortText": "Il peut-être utilisé pour ${COUNT} tickets dans le jeu.",
- "friendPromoCodeWhereToEnterText": "(dans \"Paramètres->Avancé->Entrer code\")",
+ "friendPromoCodeWhereToEnterText": "(dans \"Paramètres -> Avancé -> Envoyer information\")",
"getFriendInviteCodeText": "Obtenir un Code pour Inviter mes Amis",
"googlePlayDescriptionText": "Invitez des joueurs Google Play à votre partie:",
"googlePlayInviteText": "Inviter",
@@ -773,6 +805,7 @@
"manualYourLocalAddressText": "Votre adresse locale:",
"nearbyText": "Proche",
"noConnectionText": "",
+ "noPartiesAddedText": "Aucune partie ajoutée",
"otherVersionsText": "(autres versions)",
"partyCodeText": "Code de la partie",
"partyInviteAcceptText": "Accepter",
@@ -846,6 +879,12 @@
"youHaveShortText": "vous avez ${COUNT}",
"youHaveText": "vous avez ${COUNT} tickets"
},
+ "goldPass": {
+ "desc1InfTokensText": "Jetons infini.",
+ "desc2NoAdsText": "Aucune publicités.",
+ "desc3ForeverText": "Pour toujours.",
+ "goldPassText": "Pass d'or"
+ },
"googleMultiplayerDiscontinuedText": "Désolé, le service multijoueur de Google n'est plus disponible.\nJe travaille sur un moyen de le remplacer aussi vite que possible.\nEn attendant, veuillez essayer une nouvelle méthode de connexion.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Les achats Google Play ne sont pas disponibles.\nVous avez peut-être besoin de mettre à jour votre Google play",
"googlePlayServicesNotAvailableText": "Les services Google Play sont indisponibles.\nCertaines fonctions de l'application peuvent être désactivées.",
@@ -854,10 +893,12 @@
"alwaysText": "Toujours",
"fullScreenCmdText": "Plein Écran (Cmd-F)",
"fullScreenCtrlText": "Plein Écran (Ctrl-F)",
+ "fullScreenText": "plein écran",
"gammaText": "Gamma",
"highText": "Élevé",
"higherText": "Très élevé",
"lowText": "Bas",
+ "maxFPSText": "FPS maximum",
"mediumText": "Moyen",
"neverText": "Jamais",
"resolutionText": "Résolution",
@@ -931,6 +972,7 @@
"importText": "Importer",
"importingText": "Importation...",
"inGameClippedNameText": "dans le jeu sera\n\"${NAME}\"",
+ "inboxText": "Messages",
"installDiskSpaceErrorText": "ERREUR: Incapable de compléter l'installation.\nL'appareil manque paut-être d'espace.\nLibérez de l'espace et ressayez.",
"internal": {
"arrowsToExitListText": "appuyez sur ${LEFT} ou ${RIGHT} pour quitter la liste",
@@ -987,12 +1029,14 @@
"touchScreenJoinWarningText": "Vous avez joint avec l'écran tactile.\nSi c'était une erreur, touchez 'Menu->Quitter le Jeu'.",
"touchScreenText": "Écran Tactile",
"trialText": "test",
+ "unableToCompleteTryAgainText": "Impossible de terminer l'opération.\nRéessayez plus tard.",
"unableToResolveHostText": "Erreur: impossible de résoudre l'hôte.",
"unavailableNoConnectionText": "Pas disponible à l'instant (pas de connexion internet?)",
"vrOrientationResetCardboardText": "Utilisez ceci pour réinitialiser l'orientation RV.\nPour jouer au jeu vous aurez besoin d'un contrôleur externe.",
"vrOrientationResetText": "Réinitialiser l'orientation RV.",
"willTimeOutText": "(expirera si inactive)"
},
+ "inventoryText": "Inventaire",
"jumpBoldText": "SAUT",
"jumpText": "Saut",
"keepText": "Garder",
@@ -1039,8 +1083,11 @@
"seasonEndsMinutesText": "La saison se termine dans ${NUMBER} minutes.",
"seasonText": "Saison ${NUMBER}",
"tournamentLeagueText": "Vous devez atteindre la ligue ${NAME} pour participer à ce tournoi.",
- "trophyCountsResetText": "Les trophées seront remis à zéro la saison suivante."
+ "trophyCountsResetText": "Les trophées seront remis à zéro la saison suivante.",
+ "upToDateBonusDescriptionText": "Les joueurs qui utilisent une version récente\ndu jeu reçoivent un bonus de ${PERCENT}%.",
+ "upToDateBonusText": "à jour = bonus"
},
+ "learnMoreText": "En savoir plus",
"levelBestScoresText": "Meilleurs scores dans ${LEVEL}",
"levelBestTimesText": "Meilleurs temps dans ${LEVEL}",
"levelFastestTimesText": "Meilleurs temps en ${LEVEL}",
@@ -1087,6 +1134,8 @@
"modeArcadeText": "Mode Arcade",
"modeClassicText": "Mode classique",
"modeDemoText": "Mode Demo",
+ "moreSoonText": "Plus à venir bientôt...",
+ "mostDestroyedPlayerText": "Joueur le plus détruit",
"mostValuablePlayerText": "Meilleur joueur",
"mostViolatedPlayerText": "Joueur le plus violenté",
"mostViolentPlayerText": "Joueur le plus violent",
@@ -1103,6 +1152,7 @@
"nameSuicideText": "${NAME} s'est suicidé.",
"nameText": "Nom",
"nativeText": "Native",
+ "newExclaimText": "Nouveau !",
"newPersonalBestText": "Nouveau record personnel!",
"newTestBuildAvailableText": "Une nouvelle version test est disponible ! (${VERSION} ${BUILD}).\nObtenez à ${ADDRESS}",
"newText": "Nouveau",
@@ -1114,13 +1164,17 @@
"noExternalStorageErrorText": "Aucun stockage externe a été trouvé pour cet appareil",
"noGameCircleText": "Erreur: vous n'êtes pas connecté au GameCircle",
"noJoinCoopMidwayText": "Vous ne pouvez pas rejoindre une partie co-cop en plein milieu.",
+ "noMessagesText": "Aucun message.",
+ "noPluginsInstalledText": "Aucun Plug-in installé",
"noProfilesErrorText": "Vous avez aucun profil de joueur, vous êtes donc coincés avec '${NAME}'.\nAllez à Paramètres->Profils des Joueurs pour vous créer un profil.",
"noScoresYetText": "Aucun score pour le moment.",
+ "noServersFoundText": "Aucun serveur trouvé.",
"noThanksText": "Non Merci",
"noTournamentsInTestBuildText": "AVERTISSEMENT: les scores de tournoi de cette version de test seront ignorés.",
"noValidMapsErrorText": "Aucune carte valide a été trouvée pour ce type de jeu.",
"notEnoughPlayersRemainingText": "Pas assez de joueurs restant; quittez et commencez un nouveau jeu.",
"notEnoughPlayersText": "Vous avez besoin d'au moins ${COUNT} joueurs pour commencer ce jeu!",
+ "notEnoughTicketsText": "Pas assez de tickets!",
"notNowText": "Pas maintenant",
"notSignedInErrorText": "Vous devez vous connecter pour faire ceci.",
"notSignedInGooglePlayErrorText": "Vous devez vous connecter avec Google Play pour faire ceci.",
@@ -1133,6 +1187,9 @@
"onText": "Activé",
"oneMomentText": "Juste un moment...",
"onslaughtRespawnText": "${PLAYER} réapparaîtra à la vague ${WAVE}",
+ "openMeText": "Ouvrez-moi !",
+ "openNowText": "Ouvrir mnt",
+ "openText": "Ouvrir",
"orText": "${A} ou ${B}",
"otherText": "Autre...",
"outOfText": "(#${RANK} sur ${ALL})",
@@ -1189,7 +1246,11 @@
"pleaseWaitText": "Veuillez patienter...",
"pluginClassLoadErrorText": "Une erreur est survenue en chargeant la classe de plugins '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Une erreur est survenue en démarrant le plugin '${PLUGIN}' : ${ERROR}",
+ "pluginSettingsText": "Paramètres Des Plugins",
+ "pluginsAutoEnableNewText": "Activer Automatiquement Les Nouveaux Plugins",
"pluginsDetectedText": "Nouveaux plugins détectés. Redémarrez l'application pour les activer, ou configurez-les dans les paramètres.",
+ "pluginsDisableAllText": "Désactiver Tous Les Plugins",
+ "pluginsEnableAllText": "Activer Tous Les Plugins",
"pluginsRemovedText": "${NUM} plugin(s) ne sont plus disponibles.",
"pluginsText": "Plugins",
"practiceText": "Entraînement",
@@ -1222,6 +1283,8 @@
"punchText": "Frapper",
"purchaseForText": "Achetez pour ${PRICE}",
"purchaseGameText": "Acheter le Jeu",
+ "purchaseNeverAvailableText": "Désolé, les achats son indisponible sur cette version.\nEssayez de vous connecter à votre compte sur un autre appareil et effectuer un achat depuis ce dernier.",
+ "purchaseNotAvailableText": "Cet achat est indisponible.",
"purchasingText": "Achat en cours...",
"quitGameText": "Quitter ${APP_NAME}?",
"quittingIn5SecondsText": "Le jeu fermera dans 5 secondes...",
@@ -1264,6 +1327,7 @@
"version_mismatch": "Mauvaise version.\nVérifiez que BombSquad et BombSquad Remote \nsont mis à jour et réessayez."
},
"removeInGameAdsText": "Débloquez \"${PRO}\" dans le magasin pour enlever les annonces.",
+ "removeInGameAdsTokenPurchaseText": "OFFRE À DURÉE LIMITÉE: achetez UN pack de jetons pour retirer les pubs.",
"renameText": "Renommer",
"replayEndText": "Terminer la Reprise",
"replayNameDefaultText": "Reprise du Match Précédent",
@@ -1285,7 +1349,9 @@
"runBoldText": "COURIR",
"runText": "Courir",
"saveText": "Sauvegarder",
- "scanScriptsErrorText": "Erreur(s) dans les scripts; voir journal pour détails.",
+ "scanScriptsErrorText": "Erreur(s) dans les scripts. Consulter le journal pour plus de détails.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} et ${NUM} autre(s) module(s) doivent être mis à jour pour l'API ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} doit être mis à jour pour l'API ${API}.",
"scoreChallengesText": "Défis de Score",
"scoreListUnavailableText": "Liste des scores indisponible.",
"scoreText": "Score",
@@ -1296,6 +1362,7 @@
},
"scoreWasText": "(A été ${COUNT})",
"selectText": "Sélectionner",
+ "sendInfoDescriptionText": "Envoyez des informations sur l'état du compte et de l'application au développeur.\nVeuillez inclure votre nom ou la raison de l'envoi.",
"seriesWinLine1PlayerText": "A GAGNÉ LA",
"seriesWinLine1TeamText": "A GAGNÉ LA",
"seriesWinLine1Text": "A GAGNÉ",
@@ -1315,22 +1382,31 @@
"alwaysUseInternalKeyboardDescriptionText": "(un simple clavier sur l'écran pour taper du texte)",
"alwaysUseInternalKeyboardText": "Toujours utiliser le clavier interne",
"benchmarksText": "Benchmarks et Tests de Stress",
+ "devToolsText": "Outils de développeur",
"disableCameraGyroscopeMotionText": "Désactiver le mouvement de gyroscope de la caméra",
- "disableCameraShakeText": "Désactiver le tremblement de la camera",
+ "disableCameraShakeText": "Désactiver le tremblement de la caméra",
"disableThisNotice": "(vous pouvez désactiver cette notification dans les paramètres avancés)",
"enablePackageModsDescriptionText": "(activer plusieurs capabilités des mods mais désactiver le jeu en réseau)",
"enablePackageModsText": "Activer les Packages Mods Locaux",
"enterPromoCodeText": "Entrez code",
"forTestingText": "Note: ces valeurs sont exclusivement pour les tests et seront perdus à la fermeture de l'application.",
"helpTranslateText": "Les traductions de ${APP_NAME} proviennent des efforts de \nla communauté. Si vous voulez contribuer ou corriger une \ntraduction, suivez le lien ci-dessous. Merci d'avance!",
+ "insecureConnectionsDescriptionText": "Non recommandé, mais peut permettre le jeu en ligne \ndepuis des pays ou des réseaux restreints.",
+ "insecureConnectionsText": "Utilisez des connexions non sécurisées",
"kickIdlePlayersText": "Déconnecter les joueurs inactifs",
"kidFriendlyModeText": "Mode Enfant-Gentil (moins de violence, etc)",
- "languageText": "Langage",
+ "languageText": "Langue",
"moddingGuideText": "Guide pour Modder",
+ "moddingToolsText": "Outils de mod",
"mustRestartText": "Vous devez redémarrer le jeu pour que les changements prennent effet.",
"netTestingText": "Tester Votre Réseau",
"resetText": "Réinitialiser",
+ "sendInfoText": "Envoyer des informations",
"showBombTrajectoriesText": "Montrer les trajectoires de bombe",
+ "showDemosWhenIdleText": "Afficher les démonstrations en cas d'inactivité",
+ "showDeprecatedLoginTypesText": "Afficher les types de connexions obsolètes",
+ "showDevConsoleButtonText": "Afficher le bouton de la console de développeur",
+ "showInGamePingText": "Afficher la latence en jeu",
"showPlayerNamesText": "Montrer les Noms des Joueurs",
"showUserModsText": "Montrer le Dossier des Mods",
"titleText": "Avancé",
@@ -1338,8 +1414,8 @@
"translationFetchErrorText": "statut de la traduction indisponible",
"translationFetchingStatusText": "vérification du statut de la traduction...",
"translationInformMe": "M'avertir quand ma langue a besoin de mises à jour",
- "translationNoUpdateNeededText": "ce langage est à jour; woohoo!",
- "translationUpdateNeededText": "** ce langage à besoin des modifications!! **",
+ "translationNoUpdateNeededText": "Cette langue est à jour; youpi !",
+ "translationUpdateNeededText": "** Cette langue a besoin de modification ! **",
"vrTestingText": "Test de la RV"
},
"shareText": "Partager",
@@ -1349,6 +1425,9 @@
"signInWithGameCenterText": "Pour l'utilisation d'un compte Game \nCenter, connectez-vous avec l'application Game Center.",
"singleGamePlaylistNameText": "Seulement ${GAME}",
"singlePlayerCountText": "1 joueur",
+ "sizeLargeText": "Large",
+ "sizeMediumText": "Moyen",
+ "sizeSmallText": "Petit",
"soloNameFilterText": "${NAME} Solo",
"soundtrackTypeNames": {
"CharSelect": "Sélection du Personnage",
@@ -1374,6 +1453,7 @@
},
"spaceKeyText": "espace",
"statsText": "Stats",
+ "stopRemindingMeText": "Ne plus me le rappeler",
"storagePermissionAccessText": "Cette action a besoin de l'accès au stockage",
"store": {
"alreadyOwnText": "Vous avez déja acheté ${NAME}!",
@@ -1425,6 +1505,8 @@
"storeText": "Magasin",
"submitText": "Soumettre",
"submittingPromoCodeText": "Envoi du code...",
+ "successText": "Succès!",
+ "supportEmailText": "Si vous rencontrez des problèmes avec \nl'application, veuillez envoyer un e-mail à ${EMAIL}.",
"teamNamesColorText": "Noms d'équipe/Couleurs...",
"teamsText": "Équipes",
"telnetAccessGrantedText": "L'accès Telnet est activé.",
@@ -1435,6 +1517,7 @@
"testBuildValidatedText": "Version Test Validée; Amusez-Vous!",
"thankYouText": "Merci pour votre soutien! Amusez-vous!!",
"threeKillText": "TRIPLE MEURTRE!!!",
+ "ticketsDescriptionText": "Utilisez les tickets pour débloquer des personnages,\ncartes, mini-jeux, et d'autres dans la boutique.\n\nTrouvez les tickets dans des coffres gagnés grâce aux\ncampagnes, tournois et succès.",
"timeBonusText": "Bonus de Temps",
"timeElapsedText": "Temps Passé",
"timeExpiredText": "Temps Expiré",
@@ -1445,10 +1528,24 @@
"tipText": "Conseil",
"titleText": "BombSquad",
"titleVRText": "RV BombSquad",
+ "tokens": {
+ "getTokensText": "Obtenir des jetons",
+ "notEnoughTokensText": "Vous n'avez pas assez de jetons !",
+ "numTokensText": "${COUNT} Jetons",
+ "openNowDescriptionText": "Vous avez assez de jetons pour\nouvrir ceci maintenant - vous n’avez\npas besoin d’attendre.",
+ "shinyNewCurrencyText": "La nouvelle monnaie brillante de BombSquad.",
+ "tokenPack1Text": "Petit paquet de jeton",
+ "tokenPack2Text": "Paquet de jeton moyen",
+ "tokenPack3Text": "Grand paquet de jeton",
+ "tokenPack4Text": "Paquet géant de jeton",
+ "tokensDescriptionText": "Les jetons permettent d'accélérer le déblocage des coffres\net pour d'autres fonctionnalités du jeu et du compte.\n\nVous pouvez gagner des jetons dans le jeu ou les acheter\nen packs. Ou achetez un Pass Or pour des jetons infinis\net n'en entendez plus jamais parler.",
+ "youHaveGoldPassText": "Vous avez un pass d'or.\nTout les achats de jeton sont gratuit.\nProfitez-en !"
+ },
"topFriendsText": "Les amis les mieux classés",
"tournamentCheckingStateText": "Vérification de l'état du tournoi; attendez SVP...",
"tournamentEndedText": "Ce tournoi est terminé. Un nouveau commencera bientôt.",
"tournamentEntryText": "Inscription au Tournoi",
+ "tournamentFinalStandingsText": "Classement final",
"tournamentResultsRecentText": "Résultats des Tournois Récents",
"tournamentStandingsText": "Classements du Tournoi",
"tournamentText": "Tournoi",
@@ -1522,6 +1619,18 @@
"Uber Onslaught": "Bousculade Uber",
"Uber Runaround": "Défense du portail Uber"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Tickets",
+ "${C} Tokens": "${C} Jetons",
+ "Chest": "Coffre",
+ "L1 Chest": "Coffre N1",
+ "L2 Chest": "Coffre N2",
+ "L3 Chest": "Coffre N3",
+ "L4 Chest": "Coffre N4",
+ "L5 Chest": "Coffre N5",
+ "L6 Chest": "Coffre N6",
+ "Unknown Chest": "Coffre inconnu"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Restez l'élu pendant un certain temps pour gagner.\nTuez l'élu pour devenir l'élu.",
"Bomb as many targets as you can.": "Bombardez autant de cibles que vous pouvez.",
@@ -1627,6 +1736,7 @@
"Korean": "Coréen",
"Malay": "Malais",
"Persian": "Persan",
+ "PirateSpeak": "Parole de pirate",
"Polish": "Polonais",
"Portuguese": "Portugais",
"Romanian": "Roumain",
@@ -1701,6 +1811,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Tricherie détectée, scores et prix suspendus pour ${COUNT} jours.",
"Could not establish a secure connection.": "Impossible d'établir une connexion sécurisé.",
"Daily maximum reached.": "Limite quotidienne atteinte.",
+ "Daily sign-in reward": "Décompense de connexion quotidienne",
"Entering tournament...": "Accès au tournoi...",
"Invalid code.": "Code invalide.",
"Invalid payment; purchase canceled.": "Payement invalide. Achat annulé.",
@@ -1710,11 +1821,14 @@
"Item unlocked!": "Article débloqué!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "LIEN REFUSÉ. ${ACCOUNT} contient des\ndonnées importantes qui seraient perdus.\nVous pouvez lier dans l'ordre inverse si vous le souhaitez\n(et perdre les données de CE compte à la place)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Lier le compte ${ACCOUNT} à ce compte?\nToutes les données existantes sur ${ACCOUNT} seront perdues.\nCela ne peut pas être annulé. Vous en êtes sûr",
+ "Longer streaks lead to better rewards.": "Des séquences plus longues mènent à de meilleures récompenses.",
"Max number of playlists reached.": "Nombre maximum de playlists atteint.",
"Max number of profiles reached.": "Nombre maximum de profils atteint.",
"Maximum friend code rewards reached.": "Maximum récompenses de code ami atteint.",
"Message is too long.": "Message trop long.",
+ "New tournament result!": "Nouveau résultat du tournoi!",
"No servers are available. Please try again soon.": "Aucun serveur disponible. S'il vous plaît réessayez plus tard.",
+ "No slots available. Free a slot and try again.": "Aucun emplacement libre. Libérez-en un et réessayez.",
"Profile \"${NAME}\" upgraded successfully.": "Le profil \"${NAME}\" à été mis à jour.",
"Profile could not be upgraded.": "Le profil ne peut pas être mis à jour.",
"Purchase successful!": "Achat réussi!",
@@ -1724,7 +1838,9 @@
"Sorry, this code has already been used.": "Désolé, ce code a déjà été utilisé.",
"Sorry, this code has expired.": "Désolé, ce code a expiré.",
"Sorry, this code only works for new accounts.": "Désolé, ce code fonctionne seulement pour les nouveaux comptes.",
+ "Sorry, this has expired.": "Désolé, il a expiré.",
"Still searching for nearby servers; please try again soon.": "Recherche de serveurs à proximité en cours; s'il vous plaît réessayez plus tard.",
+ "Streak: ${NUM} days": "Série : ${NUM} jours",
"Temporarily unavailable; please try again later.": "Temporairement indisponible; veuillez réessayer plus tard.",
"The tournament ended before you finished.": "Le tournoi s'est terminé avant que vous finissiez.",
"This account cannot be unlinked for ${NUM} days.": "Ce compte ne peux pas être dissocié pendant ${NUM} jours.",
@@ -1735,19 +1851,28 @@
"Tournaments require ${VERSION} or newer": "Les tournois nécessitent ${VERSION} ou plus récent",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Dissocier ${ACCOUNT} de ce compte?\nToutes les données sur ${ACCOUNT} seront réinitialisées.\n(à l'exception des achèvements dans certains cas)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ATTENTION: des plaintes de piratage/tricherie ont été émises contre votre compte.\nLes comptes piratés sont interdits et bannis. S'il vous plaît, jouez fair play",
+ "Wait reduced!": "Attente réduite!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Attention : Cette version du jeu est limitée aux anciennes données de compte ; des éléments pourraient manquer ou être obsolètes.\nVeuillez mettre le jeu à jour dans une version plus récente pour voir vos dernières données de compte.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Voulez-vous lier votre compte d'appareil à celui-ci?\n\nVotre compte d'appareil est ${ACCOUNT1}\nCe compte est ${ACCOUNT2}\n\nCeci vous permet de garder votre progression.\nAttention: ceci est permanent!",
"You already own this!": "Vous possédez déjà ceci!",
"You can join in ${COUNT} seconds.": "Vous pouvez rejoindre dans ${COUNT} secondes.",
"You don't have enough tickets for this!": "Vous n'avez pas assez de tickets pour ça!",
"You don't own that.": "Cela ne vous appartient pas!",
"You got ${COUNT} tickets!": "Vous avez reçu ${COUNT} tickets!",
+ "You got ${COUNT} tokens!": "Vous obtenez ${COUNT} jetons!",
"You got a ${ITEM}!": "Vous avez reçu un ${ITEM}!",
+ "You got a chest!": "Tu as un coffre!",
+ "You got an achievement reward!": "Vous recevez une récompense de succès!",
"You have been promoted to a new league; congratulations!": "Vous avez été promu à une ligue supérieure; félicitations!",
+ "You lost a chest! (All your chest slots were full)": "Vous perdez un coffre! (Tous vos coffres étaient pleins)",
+ "You must update the app to view this.": "Mettez à jour l'app pour voir ceci.",
"You must update to a newer version of the app to do this.": "L'app doit être mise à jour pour faire ceci.",
"You must update to the newest version of the game to do this.": "Vous devez mettre à jour vers une version plus récente pour faire ça.",
"You must wait a few seconds before entering a new code.": "Vous devez attendre quelques secondes avant d'entrer un nouveau code.",
+ "You placed #${RANK} in a tournament!": "Vous avez placé #${RANK} dans un tournoi!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Vous avez été classé #${RANK} au dernier tournoi. Merci d'avoir participé!",
"Your account was rejected. Are you signed in?": "Votre compte a été rejeté. Êtes-vous connecté?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Vos vues pubs ne sont pas enregistrées. Les options pubs seront limitées pendant un temps.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Votre copie du jeu a été modifié.\nRéinitialisez tous changements et réessayez.",
"Your friend code was used by ${ACCOUNT}": "Votre code d'ami a été utilisé par ${ACCOUNT}"
},
@@ -1901,11 +2026,14 @@
"toSkipPressAnythingText": "(appuyez n'importe où pour passer le tutoriel)"
},
"twoKillText": "DOUBLE MEURTRE!",
+ "uiScaleText": "Échelle UI",
"unavailableText": "indisponible",
+ "unclaimedPrizesText": "Vous avez des prix non réclamés !",
"unconfiguredControllerDetectedText": "Contrôleur non-configuré détecté:",
"unlockThisInTheStoreText": "Cela doit être débloqué dans le magasin.",
"unlockThisProfilesText": "Pour créer plus de ${NUM} profiles, vous avez besoin de:",
"unlockThisText": "Pour débloquer ceci, vous avez besoin:",
+ "unsupportedControllerText": "Désolé, contrôleur \"${NAME}\" pas pris en charge.",
"unsupportedHardwareText": "Désolé, ce hardware n'est pas supporté par cette version du jeu.",
"upFirstText": "En premier:",
"upNextText": "Le jeu ${COUNT} sera:",
@@ -1913,12 +2041,16 @@
"upgradeText": "Mise à jour",
"upgradeToPlayText": "Débloquez \"${PRO}\" dans le magasin pour jouer ceci.",
"useDefaultText": "Utilisez le Défaut",
+ "userSystemScriptsCreateText": "Créer un script système d'utilisateur",
+ "userSystemScriptsDeleteText": "Script système de suppression d'utilisateur",
"usesExternalControllerText": "Ce jeu utilise un contrôleur externe pour l'input.",
"usingItunesText": "Utilisez Music App pour la bande-son...",
"usingItunesTurnRepeatAndShuffleOnText": "Vérifiez que 'Lecture Aléatoire'='ACTIF' et 'Reprise'='TOUT' dans iTunes.",
"v2AccountLinkingInfoText": "Pour lier des comptes V2, utilisez le bouton 'Gérer compte'.",
+ "v2AccountRequiredText": "Ceci requière un compte V2. Veuillez mettre à jour votre compte et essayez à nouveau.",
"validatingBetaText": "Validation de la beta...",
"validatingTestBuildText": "Validation de la Version Test...",
+ "viaText": "via",
"victoryText": "Victoire!",
"voteDelayText": "Vous ne pouvez commencer un autre vote que dans ${NUMBER} secondes",
"voteInProgressText": "Un vote est déjà en cours.",
@@ -1985,5 +2117,6 @@
},
"yesAllowText": "Oui, Autoriser!",
"yourBestScoresText": "Vos meilleurs scores",
- "yourBestTimesText": "Vos meilleurs temps"
+ "yourBestTimesText": "Vos meilleurs temps",
+ "yourPrizeText": "Votre prix:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/german.json b/dist/ba_data/data/languages/german.json
index 34bb04d0..e58facc8 100644
--- a/dist/ba_data/data/languages/german.json
+++ b/dist/ba_data/data/languages/german.json
@@ -1,13 +1,15 @@
{
"accountSettingsWindow": {
- "accountNameRules": "Der Konto Name darf kein Emoji oder andere spezielle Buchstaben enthalten.",
+ "accountNameRules": "Der Konto Name kann keine Emojis oder andere spezielle Zeichen enthalten",
"accountProfileText": "Benutzerprofil",
- "accountsText": "Konten",
+ "accountsText": "Accounts",
"achievementProgressText": "Erfolge: ${COUNT} von ${TOTAL}",
"campaignProgressText": "Kampagnen Fortschritt [Schwer]: ${PROGRESS}",
"changeOncePerSeason": "Du kannst dies nur einmal pro Saison ändern.",
- "changeOncePerSeasonError": "Du musst warten bis du das wieder in der nächsten Saison ändern kannst. (${NUM} Tage)",
+ "changeOncePerSeasonError": "Du musst warten auf die nächste Saison warten um dies zu ändern. (${NUM} Tage)",
+ "createAnAccountText": "Konto erstellen",
"customName": "Benutzerdefinierter Name",
+ "deleteAccountText": "Account löschen",
"googlePlayGamesAccountSwitchText": "Wenn Sie ein anderes Google-Konto verwenden möchten,\nVerwenden Sie die Google Play Games-App, um zu wechseln.",
"linkAccountsEnterCodeText": "Code eingeben",
"linkAccountsGenerateCodeText": "Code generieren",
@@ -26,14 +28,16 @@
"setAccountNameDesc": "Wählen Sie den Namen aus, der für Ihr Konto angezeigt werden soll.\nSie können den Namen von einem Ihrer verlinkten\nKonten benutzen oder erstellen Sie einen einzigartigen benutzerdefinierten Name.",
"signInInfoText": "Melde dich an, um deinen Fortschritt in der Cloud zu speichern,\nTickets zu verdienen und an Turnieren teilzunehmen.",
"signInText": "Anmelden",
+ "signInWithAnEmailAddressText": "Gib eine E-Mail Adresse an.",
"signInWithDeviceInfoText": "(ein automatisches Konto, das du nur auf diesem Gerät benutzen kannst)",
"signInWithDeviceText": "Mit Gerät-Konto einloggen",
"signInWithGameCircleText": "Mit Game Circle einloggen",
"signInWithGooglePlayText": "Mit Google Play anmelden",
"signInWithTestAccountInfoText": "(veraltete Kontoart, benutze Geräte-Kontos)",
"signInWithTestAccountText": "Mit Testkonto einloggen",
+ "signInWithText": "Gib es an mit${SERVICE}",
"signInWithV2InfoText": "(Ein Account der auf allen Plattformen funktioniert)",
- "signInWithV2Text": "Einloggen mit einem BombSquad Account",
+ "signInWithV2Text": "Einloggen mit einem ${APP_NAME} Account",
"signOutText": "Abmelden",
"signingInText": "Anmelden...",
"signingOutText": "Abmelden...",
@@ -340,9 +344,14 @@
"titleText": "Spiel hinzufügen",
"titleTextScale": 1.0
},
+ "addToFavoritesText": "Zu Favoriten hinzufügen",
+ "addedToFavoritesText": "'${NAME}' zu Favoriten hinzugefügt.",
+ "allText": "Alle",
"allowText": "Erlauben",
"alreadySignedInText": "Dein Account wird schon von einem anderen Gerät verwendet;\nbitte wechsle den Account oder schließe das Spiel auf\ndeinem anderen Gerät und versuche es nochmal.",
"apiVersionErrorText": "Das Modul ${NAME} kann nicht geladen werden. Es benutzt API-Version ${VERSION_USED}, aber wir brauchen ${VERSION_REQUIRED}.",
+ "applyText": "Anwenden",
+ "areYouSureText": "Bist du dir sicher?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" erlaubt das nur, wenn Kopfhörer angeschlossen sind)",
"headRelativeVRAudioText": "Kopf-Orientiertes VR Audio",
@@ -367,14 +376,24 @@
"boostText": "Boost",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} ist in der App konfiguriert.",
"buttonText": "Taste",
- "canWeDebugText": "Möchtest du, dass BombSquad automatisch Fehler, Abstürze\nund Benutzeraktivitäten an den Entwickler sendet?\n\nDiese Daten enthalten keinerlei persönliche Informationen\nund helfen, das Spiel reibungslos und fehlerfrei zu erhalten.",
+ "canWeDebugText": "Möchtest du, dass ${APP_NAME} automatisch Fehler, Abstürze\nund Benutzeraktivitäten an den Entwickler sendet?\n\nDiese Daten enthalten keinerlei persönliche Informationen\nund helfen, das Spiel reibungslos und fehlerfrei zu erhalten.",
"cancelText": "Abbrechen",
"cantConfigureDeviceText": "Entschuldigung, ${DEVICE} ist nicht konfigurierbar.",
"challengeEndedText": "Diese Herausforderung ist beendet.",
"chatMuteText": "Chat stummschalten",
"chatMutedText": "Chat stumm",
"chatUnMuteText": "Chat aktivieren",
+ "chests": {
+ "prizeOddsText": "Preis Chancen",
+ "reduceWaitText": "Wartezeit verkürzen",
+ "slotDescriptionText": "Hier könnte eine Truhe sein.\n\nVerdiene Truhen, indem du Kampagnenlevels spielst,\nin Turnieren gewinnst und durch das Erreichen von \nErfolgen.",
+ "slotText": "Truhen Slot ${NUM}",
+ "slotsFullWarningText": "WARNUNG: Alle Ihre Truhenplätze sind voll.\nAlle Truhen, die du in diesem Spiel verdienst, sind verloren.",
+ "unlocksInText": "Freigeschaltet In"
+ },
"choosingPlayerText": "",
+ "claimText": "Beanspruchen",
+ "codesExplainText": "Die Codes werden verwaltet von dem Entwickler,\nDieser diagnostiziert und korrigiert Kontenprobleme.",
"completeThisLevelToProceedText": "Du musst dieses Level\nabschließen um fortzufahren!",
"completionBonusText": "Bewältigungsbonus",
"configControllersWindow": {
@@ -464,6 +483,7 @@
"titleText": "Touchscreen einstellen",
"touchControlsScaleText": "Touch Steuerung Skalierung"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} kann in der System Settings App eingestellt werden.",
"configureItNowText": "Konfiguriere es jetzt?",
"configureText": "Konfigurieren",
"connectMobileDevicesWindow": {
@@ -509,7 +529,7 @@
"powerRankingPointsToRankedText": "(${CURRENT} von ${REMAINING} pkte)",
"powerRankingText": "Power Rang",
"prizesText": "Preise",
- "proMultInfoText": "Spieler mit dem ${PRO} Upgrade\nbekommen zu ${PERCENT}% mehr Punkte hier.",
+ "proMultInfoText": "Spieler mit dem ${PRO} Upgrade\nbekommen ${PERCENT}% Bonuspunkte.",
"seeMoreText": "Sieh weitere...",
"skipWaitText": "Überspringen",
"timeRemainingText": "Übrige Zeit",
@@ -577,6 +597,7 @@
"demoText": "Demo",
"denyText": "Verweigern",
"deprecatedText": "Veraltet",
+ "descriptionText": "Beschreibung",
"desktopResText": "Desktop Auflösung",
"deviceAccountUpgradeText": "Achtung:\nDu bist mit einem Gerät-Konto angemeldet (${NAME}).\nGerät-Konten werden in einem kommendem Update entfernt.\nVerbessere zu einem V2 Konto, wenn du deinen Fortschritt behalten willst.",
"difficultyEasyText": "Leicht",
@@ -587,6 +608,10 @@
"disableRemoteAppConnectionsText": "Remote-App Verbindungen verbieten",
"disableXInputDescriptionText": "Erlaubt mehr als 4 Controller aber kann schlechter funktionieren.",
"disableXInputText": "XInput deaktivieren",
+ "disabledText": "Deaktiviert",
+ "discardText": "Verwerfen",
+ "discordFriendsText": "Suchst du neue Leute mit denen du spielen kannst? Trete unserem Discord bei und finde neue Freunde!",
+ "discordJoinText": "Treten Sie Discord bei",
"doneText": "Fertig",
"drawText": "Unentschieden",
"duplicateText": "dublizieren",
@@ -621,6 +646,7 @@
"localProfileText": "Lokales Profil",
"nameDescriptionText": "Spielername",
"nameText": "Name",
+ "profileAlreadyExistsText": "Ein Profil mit diesem Namen existiert schon.",
"randomText": "zufällig",
"titleEditText": "Profil bearbeiten",
"titleNewText": "Neues Profil",
@@ -660,6 +686,7 @@
"useMusicFolderText": "Ordner mit Musikdateien"
},
"editText": "bearbeiten",
+ "enabledText": "Atkiviert",
"endText": "Ende",
"enjoyText": "Viel Spaß!",
"epicDescriptionFilterText": "${DESCRIPTION} In epischer Zeitlupe.",
@@ -671,6 +698,8 @@
"errorText": "Fehler",
"errorUnknownText": "unbekannter Fehler",
"exitGameText": "${APP_NAME} verlassen?",
+ "expiredAgoText": "Seit ${T} ausgelaufen",
+ "expiresInText": "Läuft aus in ${T}",
"exportSuccessText": "'${NAME}' exportiert.",
"externalStorageText": "externer Datenspeicher",
"failText": "Fehlgeschlagen",
@@ -707,6 +736,8 @@
"editText": "Playlist\nbearbeiten",
"gameListText": "Spieleliste",
"newText": "Neue\nPlaylist",
+ "pointsToWinText": "Punkte um zu Gewinnen",
+ "seriesLengthText": "Serienlänge",
"showTutorialText": "Tutorial anzeigen",
"shuffleGameOrderText": "Zufällige Spielreihenfolge",
"titleText": "${TYPE}-Playlists bearbeiten"
@@ -735,6 +766,7 @@
"copyCodeConfirmText": "Veranstalten Sie eine private Party",
"copyCodeText": "Code kopieren",
"dedicatedServerInfoText": "Das beste Ergebnis wird mit einem dedizierten Server erreicht. Auf bombsquadgame.com/server steht wie es geht.",
+ "descriptionShortText": "Nutz das Party Fenster um eine Party zu kreieren.",
"disconnectClientsText": "Dadurch werden die ${COUNT} Spieler in Ihrer\nParty getrennt. Sind Sie sicher ?",
"earnTicketsForRecommendingAmountText": "Freunde bekommen ${COUNT} Tickets, wenn sie das Spiel ausprobieren.\n(Du bekommst ${YOU_COUNT} für jeden, der es tut.)",
"earnTicketsForRecommendingText": "Empfehle das Spiel an Freunde \nund ihr bekommt beide Tickets.",
@@ -748,10 +780,10 @@
"friendPromoCodeAwardText": "Du bekommst ${COUNT} Tickets bei jeder Verwendung.",
"friendPromoCodeExpireText": "Der Code wird in ${EXPIRE_HOURS} Stunden ungültig und funktioniert nur für neue Spieler.",
"friendPromoCodeInfoText": "Kann für ${COUNT} Tickets eingelöst werden.\n\nGehe zu \"Einstellungen -> Erweitert -> Gutscheincode eingeben\" im Spiel um den Code einzulösen.\nBesuche bombsquadgame.com um das Spiel für alle unterstützten Platformen herunterzuladen.\nDieser Code wird in ${EXPIRE_HOURS} Stunden ungültig und kann nur von neuen Spielern eingelöst werden.",
- "friendPromoCodeInstructionsText": "Um ihn einzulösen, öffne ${APP_NAME} und gehe zu \"Einstellungen->Erweitert->Gutscheincode eingeben\".\nAuf bombsquadgame.com findest du Links zum Download für alle unterstützten Plattformen.",
+ "friendPromoCodeInstructionsText": "Um ihn einzulösen,öffne ${APP_NAME} und gehe zu \"Einstellungen->erweitert-Information senden\".Auf bombsquad.com findest du Links zum Download für alle unterstützen\n Plattformen.",
"friendPromoCodeRedeemLongText": "Er kann für ${COUNT} kostenlose Tickets von bis zu ${MAX_USES} Personen eingelöst werden.",
"friendPromoCodeRedeemShortText": "Es kann im Spiel für ${COUNT} eingelöst werden.",
- "friendPromoCodeWhereToEnterText": "(in \"Einstellungen->Erweitert->Gutscheincode eingeben\")",
+ "friendPromoCodeWhereToEnterText": "(In \"Einstellungen->erweitert->Informationen senden\")",
"getFriendInviteCodeText": "Bekomme einen Einladungscode für Freunde",
"googlePlayDescriptionText": "Lade Google Play Freunde zu deiner Party ein:",
"googlePlayInviteText": "Einladen",
@@ -783,6 +815,7 @@
"manualYourLocalAddressText": "Deine Lokale Adresse",
"nearbyText": "In der Nähe",
"noConnectionText": "",
+ "noPartiesAddedText": "Keine Partys ergänzt",
"otherVersionsText": "(andere Versionen)",
"partyCodeText": "Party Code",
"partyInviteAcceptText": "Akzeptieren",
@@ -855,6 +888,12 @@
"youHaveShortText": "Du hast ${COUNT}",
"youHaveText": "Du hast ${COUNT} Tickets"
},
+ "goldPass": {
+ "desc1InfTokensText": "Unendliche Token.",
+ "desc2NoAdsText": "Keine Werbung.",
+ "desc3ForeverText": "Dauerhaft.",
+ "goldPassText": "Gold Pass"
+ },
"googleMultiplayerDiscontinuedText": "Sorry, Googles Multiplayerservice ist nicht länger verfügbar.\nIch arbeite so schnell wie möglich an einem Ersatz.\nBis dahin, versuche bitte eine andere Verbindungsmethode.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Google Play-Käufe sind nicht verfügbar.\nMöglicherweise müssen Sie Ihre Store-App aktualisieren.",
"googlePlayServicesNotAvailableText": "Google Play-Dienste sind nicht verfügbar.\nEinige App-Funktionen sind möglicherweise deaktiviert.",
@@ -864,10 +903,12 @@
"autoText": "Automatisch",
"fullScreenCmdText": "Vollbildmodus (Cmd-F)",
"fullScreenCtrlText": "Vollbildmodus (Strg-F)",
+ "fullScreenText": "Vollbild",
"gammaText": "Gamma",
"highText": "Hoch",
"higherText": "Höher",
"lowText": "Niedrig",
+ "maxFPSText": "Max FPS",
"mediumText": "Mittel",
"neverText": "Niemals",
"resolutionText": "Auflösung",
@@ -949,6 +990,7 @@
"importText": "Importieren",
"importingText": "Wird importiert...",
"inGameClippedNameText": "Im Spiel angezeigter Name wird \n\"${NAME}\"",
+ "inboxText": "Nachrichten",
"installDiskSpaceErrorText": "ERROR: Installation wurde nicht abgeschlossen.\nEs ist nicht genug Speicherplatz verfügbar.\nVersuche es erneut, nachdem genügend Speicher freigegeben wurde.",
"internal": {
"arrowsToExitListText": "drücke ${LEFT} oder ${RIGHT}, um die Liste zu verlassen",
@@ -1005,12 +1047,14 @@
"touchScreenJoinWarningText": "Du bist mit dem Touchscreen beigetreten.\nWenn das ein Versehen war, drücke 'Menü->Spiel Beenden' damit.",
"touchScreenText": "TouchScreen",
"trialText": "Testversion",
+ "unableToCompleteTryAgainText": "Diese Aktion ist gerade nicht möglich. \nBitte versuche es später erneut",
"unableToResolveHostText": "Fehler: Verbindung zum Host konnte nicht aufgelöst werden.",
"unavailableNoConnectionText": "Zurzeit nicht verfügbar. (Keine Internetverbindung?)",
"vrOrientationResetCardboardText": "Benutze dies,um die VR orientierung zurückzusetzen.\nUm das Spiel spielen zu können, brauchst du einen externen controller.",
"vrOrientationResetText": "Kalibriere VR Orientierung.",
"willTimeOutText": "(wird unterbrochen, wenn keine Eingabe)"
},
+ "inventoryText": "Inventar",
"jumpBoldText": "SPRING",
"jumpText": "Spring",
"keepText": "Halten",
@@ -1057,8 +1101,11 @@
"seasonEndsMinutesText": "Die Saison endet in ${NUMBER} Minuten.",
"seasonText": "Saison ${NUMBER}",
"tournamentLeagueText": "Du musst die ${NAME} Liga erreichen um dieses Turnier zu spielen.",
- "trophyCountsResetText": "Die Trophäenzahl wird nächste Season zurückgesetzt."
+ "trophyCountsResetText": "Die Trophäenzahl wird nächste Season zurückgesetzt.",
+ "upToDateBonusDescriptionText": "Spiele mit den neuesten Bombsquad Version \nerhalten hier einen ${PERCENT}%igen Bonus.",
+ "upToDateBonusText": "Aktuell-Bonus"
},
+ "learnMoreText": "Erfahre mehr",
"levelBestScoresText": "Bestes Ergebnis bei ${LEVEL}",
"levelBestTimesText": "Beste Zeiten bei ${LEVEL}",
"levelFastestTimesText": "Schnellste Zeit auf ${LEVEL}",
@@ -1105,6 +1152,8 @@
"modeArcadeText": "Arcade-Modus",
"modeClassicText": "Klassischer Modus",
"modeDemoText": "Demo Modus",
+ "moreSoonText": "Mehr ist in Arbeit...",
+ "mostDestroyedPlayerText": "Meist zerstörter Spieler",
"mostValuablePlayerText": "Wertvollster Spieler",
"mostViolatedPlayerText": "Meist getöteter Spieler",
"mostViolentPlayerText": "Brutalster Spieler",
@@ -1121,6 +1170,7 @@
"nameSuicideText": "${NAME} begeht Selbstmord.",
"nameText": "Name",
"nativeText": "Native Einstellung",
+ "newExclaimText": "Neu!",
"newPersonalBestText": "Neuer persönlicher Rekord!",
"newTestBuildAvailableText": "Ein neuerer Test-Build ist erhältlich (${VERSION} Build ${BUILD}).\nZu holen auf ${ADDRESS}",
"newText": "Neu",
@@ -1132,13 +1182,17 @@
"noExternalStorageErrorText": "Kein externer Datenspeicher auf dem Gerät gefunden",
"noGameCircleText": "Fehler: nicht in GameCircle eingeloggt",
"noJoinCoopMidwayText": "Koop-Spiele können nicht während des Spiels betreten werden.",
+ "noMessagesText": "Keine Nachrichten.",
+ "noPluginsInstalledText": "Keine Plugins installiert",
"noProfilesErrorText": "Du hast kein Spielerprofil, deshalb ist dein Name \"${NAME}\".\nGehe zu Einstellungen->Spielerprofile um ein Profil anzulegen.",
"noScoresYetText": "Noch kein Punktestand.",
+ "noServersFoundText": "Keine Server gefunden.",
"noThanksText": "Nein Danke",
"noTournamentsInTestBuildText": "WARNUNG: Turnierpunkte von dieser Testversion werden ignoriert.",
"noValidMapsErrorText": "Keine gültigen Karten für diesen Spieltyp gefunden.",
"notEnoughPlayersRemainingText": "Nicht genug Spieler übrig; Spiel verlassen oder neues Spiel starten.",
"notEnoughPlayersText": "Du benötigst mindestens ${COUNT} Spieler, um dieses Spiel zu starten.",
+ "notEnoughTicketsText": "Nicht genügend Tickets!",
"notNowText": "Nicht jetzt",
"notSignedInErrorText": "Du musst dich hierfür einloggen.",
"notSignedInGooglePlayErrorText": "Hierfür musst du dich mit Google Play anmelden",
@@ -1151,6 +1205,9 @@
"onText": "An",
"oneMomentText": "Einen Moment...",
"onslaughtRespawnText": "${PLAYER} steigt in Welle ${WAVE} wieder ein",
+ "openMeText": "Öffne mich!",
+ "openNowText": "Jetzt öffnen",
+ "openText": "Öffnen",
"orText": "${A} oder ${B}",
"otherText": "Sonstiges...",
"outOfText": "(#${RANK} von ${ALL})",
@@ -1246,6 +1303,8 @@
"punchText": "Schlagen",
"purchaseForText": "Für ${PRICE} kaufen",
"purchaseGameText": "Spiel kaufen",
+ "purchaseNeverAvailableText": "Sorry, Einkäufe sind auf dieser Plattform nicht möglich.\nLog dich in einen anderen Account einer anderen Plattform ein, und versuche dies von dort aus erneut.",
+ "purchaseNotAvailableText": "Dieser Einkauf ist nicht möglich.",
"purchasingText": "Bezahlt...",
"quitGameText": "${APP_NAME} beenden?",
"quittingIn5SecondsText": "Verlasse das Spiel in 5 Sekunden...",
@@ -1288,6 +1347,7 @@
"version_mismatch": "Versionskonflikt.\nVersuch es mit den aktuellen Versionen von\nBombSquad und BombSquad Remote noch einmal."
},
"removeInGameAdsText": "Schalte \"${PRO}\" im Store frei, um Werbung zu entfernen.",
+ "removeInGameAdsTokenPurchaseText": "FÜR LIMITIERTE ZEIT: kaufe IRGENDEIN Token Pack und die Werbungen werden entfernt.",
"renameText": "Name ändern",
"replayEndText": "Wiederholung beenden",
"replayNameDefaultText": "Letztes Spiel ansehen",
@@ -1308,7 +1368,9 @@
"revertText": "Zurücksetzen",
"runText": "Rennen",
"saveText": "Speichern",
- "scanScriptsErrorText": "Fehler beim scannen der Skripts; sehe Protokoll für Details.",
+ "scanScriptsErrorText": "Fehler beim Scannen der Skripts; siehe Protokoll für Details.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} und ${NUM} weitere(s) Modul(e) muss an API ${API} angepasst werden.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} muss an API ${API} angepasst werden.",
"scoreChallengesText": "Punkte Herausforderungen",
"scoreListUnavailableText": "Bestenliste ist nicht verfügbar",
"scoreText": "Punkte",
@@ -1319,6 +1381,7 @@
},
"scoreWasText": "(war ${COUNT})",
"selectText": "Auswählen",
+ "sendInfoDescriptionText": "Senden Sie Konto- und App-informationen zum Entwickler.\nBitte ergänzen Sie Ihren Namen und den Grund des Sendens",
"seriesWinLine1PlayerText": "GEWINNT DIE",
"seriesWinLine1Scale": 0.65,
"seriesWinLine1TeamText": "GEWINNT DIE",
@@ -1340,24 +1403,32 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(Eine einfache, Controller-freundliche Bildschirmtastatur für Texte)",
- "alwaysUseInternalKeyboardText": "Immer interne Tastatur benutzen",
+ "alwaysUseInternalKeyboardText": "Immer die interne Tastatur benutzen",
"benchmarksText": "Benchmarks & Stress-Tests",
+ "devToolsText": "Entwicklungswerkzeuge",
"disableCameraGyroscopeMotionText": "Deaktivieren Sie die Kamera-Gyroskop-Bewegung",
- "disableCameraShakeText": "Deaktivieren Sie Camera Shake",
+ "disableCameraShakeText": "Deaktivieren Sie Kamera-Bewegungen.",
"disableThisNotice": "(Du kannst diese Notiz in den erweiterten Einstellungen ändern.)",
"enablePackageModsDescriptionText": "(Aktiviert installierte Mods aber deaktiviert den Mehrspielermodus)",
"enablePackageModsText": "Local Package Mods aktivieren",
"enterPromoCodeText": "Gutscheincode eingeben",
"forTestingText": "Wichtig: Diese Werte sind nur für Tests und werden später wieder zurückgesetzt.",
"helpTranslateText": "${APP_NAME}'s Übersetzungen sind der Community zu\nverdanken. Wenn du eine Übersetzung hinzufügen oder \nverbessern willst, folge dem Link unten. Danke im Voraus!",
+ "insecureConnectionsDescriptionText": "nicht empfohlen, kann dir jedoch die Online Play Funktion\nin eingeschränkten Ländern ermöglichen",
+ "insecureConnectionsText": "Instabile Verbindungen verwenden",
"kickIdlePlayersText": "Inaktive Spieler verbannen",
"kidFriendlyModeText": "Kinderfreundlicher Modus (Reduzierte Gewalt, etc.)",
"languageText": "Sprache",
"moddingGuideText": "Modding Anleitung",
+ "moddingToolsText": "Modding Werkzeuge",
"mustRestartText": "Das Spiel muss neugestartet werden um die Änderungen wirksam zu machen.",
"netTestingText": "Netzwerk Tests",
"resetText": "Zurücksetzen",
+ "sendInfoText": "Information senden",
"showBombTrajectoriesText": "Zeige die Bomben-Flugbahn",
+ "showDemosWhenIdleText": "Zeigen sie Abstimmungen, when sie inaktiv sind",
+ "showDeprecatedLoginTypesText": "Zeigen sie Login-Möglichkeiten",
+ "showDevConsoleButtonText": "Zeigen sie den Konsolen-Knopf",
"showInGamePingText": "Zeige Ping im Spiel",
"showPlayerNamesText": "Zeige Spielernamen",
"showUserModsText": "Zeige Mods-Ordner",
@@ -1366,8 +1437,8 @@
"translationFetchErrorText": "Übersetzungsstatus nicht verfügbar....",
"translationFetchingStatusText": "prüfe Übersetzungsstatus...",
"translationInformMe": "Informiere mich, wenn meine Sprache Updates benötigt.",
- "translationNoUpdateNeededText": "Die ausgewählte Sprache ist aktuell; Juhuuu!",
- "translationUpdateNeededText": "** die ausgewählte Sprache ist nicht aktuell!! **",
+ "translationNoUpdateNeededText": "Die aktuelle Sprache ist auf dem neuesten Stand; Juhuuu!",
+ "translationUpdateNeededText": "** Die ausgewählte Sprache benötigt Updates!! **",
"vrTestingText": "VR Tests"
},
"shareText": "Teilen",
@@ -1377,6 +1448,9 @@
"signInWithGameCenterText": "Nutze die Game Center app,\num dich anzumelden.",
"singleGamePlaylistNameText": "Nur ${GAME}",
"singlePlayerCountText": "1 Spieler",
+ "sizeLargeText": "Groß",
+ "sizeMediumText": "Mittel",
+ "sizeSmallText": "Klein",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Charakterauswahl",
@@ -1402,6 +1476,7 @@
},
"spaceKeyText": "Leer",
"statsText": "Statistiken",
+ "stopRemindingMeText": "Nicht mehr erinnern",
"storagePermissionAccessText": "Dies benötigt Zugriff auf deinen Speicher",
"store": {
"alreadyOwnText": "Du besitzt bereits ${NAME}!",
@@ -1453,6 +1528,8 @@
"storeText": "Laden",
"submitText": "Bestätigen",
"submittingPromoCodeText": "Code wird übertragen...",
+ "successText": "Erfolg!",
+ "supportEmailText": "Wenn du irgendwelche Probleme mit der App hast, \nKontaktiere bitte den Entwickler ${EMAIL}",
"teamNamesColorText": "Team Namen/Farben...",
"teamsText": "Teams",
"telnetAccessGrantedText": "Telnet Zugang aktiviert.",
@@ -1463,6 +1540,7 @@
"testBuildValidatedText": "Testversion ist gültig; Viel Spaß!",
"thankYouText": "Vielen Dank für deine Hilfe und viel Spaß!!",
"threeKillText": "DREIFACH KILL!!",
+ "ticketsDescriptionText": "Tickets können zum Freischalten von Charakteren\nKarten, Minispiele und mehr im Shop freizuschalten.\n\nTickets können in Truhen gefunden werden, die durch\nKampagnen, Turnieren und Erfolge gewonnen werden.",
"timeBonusText": "Zeitbonus",
"timeElapsedText": "Vergangene Zeit",
"timeExpiredText": "Zeit abgelaufen!",
@@ -1473,10 +1551,24 @@
"tipText": "Tipp",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Hole Token",
+ "notEnoughTokensText": "Nicht genug Token!",
+ "numTokensText": "${COUNT} Token",
+ "openNowDescriptionText": "Du hast genug Münzen\num jetzt zu öffnen - du brauchst nicht \nzu warten.",
+ "shinyNewCurrencyText": "Bombsquad's neue glänzende Währung.",
+ "tokenPack1Text": "Kleines Token Paket",
+ "tokenPack2Text": "Mittleres Token Paket",
+ "tokenPack3Text": "Großes Token Paket",
+ "tokenPack4Text": "Riesen Token Paket",
+ "tokensDescriptionText": "Token werden verwendet, um die Freischaltung von Truhen zu beschleunigen\nund für andere Spiel- und Kontofunktionen.\n\nDu kannst Token im Spiel gewinnen oder sie\nin Paketen kaufen. Oder kaufe einen Gold Pass\nfür unendlich viele.",
+ "youHaveGoldPassText": "Du hast den Gold Pass.\nAlle Token-Einkäufe sind kostenlos.\nViel Spaß!"
+ },
"topFriendsText": "Top Freunde",
"tournamentCheckingStateText": "Überprüfe Turnier Status; Bitte warten...",
"tournamentEndedText": "Dieses Turnier ist zu Ende. Ein Neues startet bald.",
"tournamentEntryText": "Turnier beitreten",
+ "tournamentFinalStandingsText": "Endstand",
"tournamentResultsRecentText": "Neueste Turnierergebnisse",
"tournamentStandingsText": "Tournier Tabelle",
"tournamentText": "Turnier",
@@ -1550,6 +1642,18 @@
"Uber Onslaught": "Unmöglich heftiger Angriff",
"Uber Runaround": "Unmöglich an der Nase herumführen"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Tickets",
+ "${C} Tokens": "${C} Tokens",
+ "Chest": "Truhe",
+ "L1 Chest": "L1 Truhe",
+ "L2 Chest": "L2 Truhe",
+ "L3 Chest": "L3 Truhe",
+ "L4 Chest": "L4 Truhe",
+ "L5 Chest": "L5 Truhe",
+ "L6 Chest": "L6 Truhe",
+ "Unknown Chest": "Unbekannte Truhe"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Sei eine Zeit lang der Auserwählte, um zu gewinnen.\nTöte ihn, um selbst zum Auserwählten zu werden.",
"Bomb as many targets as you can.": "Zerbombe so viele Ziele wie Du kannst.",
@@ -1655,6 +1759,7 @@
"Korean": "Koreanisch",
"Malay": "Malaiisch",
"Persian": "Persisch",
+ "PirateSpeak": "Piratensprache",
"Polish": "Polnisch",
"Portuguese": "Portugiesisch",
"Romanian": "Rumänisch",
@@ -1729,6 +1834,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Cheating erkannt; deine Punkte und Preise sind für ${COUNT} Tage gesperrt.",
"Could not establish a secure connection.": "Konnte keine sichere Verbindung herstellen.",
"Daily maximum reached.": "Tageslimit erreicht.",
+ "Daily sign-in reward": "Tägliche Login Belohnung",
"Entering tournament...": "Trete Turnier bei...",
"Invalid code.": "Ungültiger Code",
"Invalid payment; purchase canceled.": "Ungültige Zahlung; Einkauf abgebrochen.",
@@ -1738,11 +1844,14 @@
"Item unlocked!": "Gegenstand freigeschaltet!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "VERLINKUNG VERWEIGERT. ${ACCOUNT} beinhaltet\nwichtige Daten, die ALLE VERLOREN wären.\nDu kannst andersherum verlinken, wenn du willst\n(Du würdest stattdessen DIESE Account-Daten verlieren)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Den Account ${ACCOUNT} mit diesem Account verknüpfen?\nJeglicher Fortschritt des Accounts ${ACCOUNT} wird verloren gehen!\nDies kann nicht rückgängig gemacht werden! Fortfahren?",
+ "Longer streaks lead to better rewards.": "Je länger die Streaks, desto besser die Belohnung.",
"Max number of playlists reached.": "Max Anzahl von Wiedergabelisten erreicht.",
"Max number of profiles reached.": "Max Anzahl der Profile erreicht.",
"Maximum friend code rewards reached.": "Maximale Anzahl an Einladungsbelohnungen erreicht.",
"Message is too long.": "Nachricht ist zu lang.",
+ "New tournament result!": "Neues Turnier Ergebnis!",
"No servers are available. Please try again soon.": "Keine Server verfügbar. Schau nachher noch einmal vorbei.",
+ "No slots available. Free a slot and try again.": "Keine Slots mehr verfügbar. Mach einen Slot frei und versuche es noch einmal",
"Profile \"${NAME}\" upgraded successfully.": "Profil \"${NAME}\" erfolgreich aktualisiert.",
"Profile could not be upgraded.": "Profil konnte nicht aktualisiert werden.",
"Purchase successful!": "Einkauf erfolgreich!",
@@ -1752,7 +1861,9 @@
"Sorry, this code has already been used.": "Tut uns leid, dieser Code wurde bereits eingelöst.",
"Sorry, this code has expired.": "Tut uns leid, dieser Code ist nicht mehr gültig.",
"Sorry, this code only works for new accounts.": "Tut uns leid, dieser Code kann nur mit einem neuen Account eingelöst werden.",
+ "Sorry, this has expired.": "Sorry, das ist abgelaufen.",
"Still searching for nearby servers; please try again soon.": "Suche immernoch nach Servern in der Nähe; schau nachher noch einmal vorbei.",
+ "Streak: ${NUM} days": "Streak: ${NUM} Tage",
"Temporarily unavailable; please try again later.": "Vorübergehend nicht verfügbar. Bitte versuche es später noch einmal.",
"The tournament ended before you finished.": "Das Turnier endete bevor du ins Ziel kamst.",
"This account cannot be unlinked for ${NUM} days.": "Dieser Account kann nicht für ${NUM} Tage entknüpft werden.",
@@ -1763,19 +1874,28 @@
"Tournaments require ${VERSION} or newer": "Turniere benötigen Version ${VERSION} oder neuer",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Den Account ${ACCOUNT} von diesem Account entknüpfen?\nJeglicher Fortschritt auf ${ACCOUNT} wird zurückgesetzt.\n(außer Erfolge in manchen Fällen)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "Beschwerden von Hacking sind für deinen Account aufgetreten.\nAccount, welche des Hackings verdächtigt werden, werden gesperrt. Bitte spiele gerecht.",
+ "Wait reduced!": "Wartezeit verkürzt!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Warnung: Diese Version des Spiels verwendet veraltete Kontodaten. Einige Inhalte könnten fehlen oder nicht aktuell sein.\nBitte aktualisiere auf eine neuere Version, um deine aktuellen Kontodaten anzuzeigen.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Willst du deinen Gerät-Account mit diesem Account verlinken?\n\nDein Gerät-Account: ${ACCOUNT1}\nDieser Account: ${ACCOUNT2}\n\nDies wird dir ermöglichen, deinen Fortschritt zu behalten.\nAchtung: Du kannst es nicht rückgängig machen!",
"You already own this!": "Du besitzt es bereits!",
"You can join in ${COUNT} seconds.": "Du kannst in ${COUNT} Sekunden beitreten",
"You don't have enough tickets for this!": "Du hast nicht genug Tickets dafür!",
"You don't own that.": "Du besitzt das nicht.",
"You got ${COUNT} tickets!": "Du hast ${COUNT} Tickets!",
+ "You got ${COUNT} tokens!": "Du hast ${COUNT} Token bekommen!",
"You got a ${ITEM}!": "Du kriegst ein ${ITEM}!",
+ "You got a chest!": "Du hast eine Truhe bekommen!",
+ "You got an achievement reward!": "Du hast eine Belohnung für einen Erfolg erhalten!",
"You have been promoted to a new league; congratulations!": "Du bist eine Liga aufgestiegen; Glückwunsch!",
+ "You lost a chest! (All your chest slots were full)": "Du hast eine Truhe verloren! (Alle Truhen Slots waren besetzt)",
+ "You must update the app to view this.": "Aktualisiere die App um es anzuzeigen.",
"You must update to a newer version of the app to do this.": "Du musst deine Version updaten, um dies zu tun.",
"You must update to the newest version of the game to do this.": "Du musst zur neusten Version des Spiels updaten um dies zu tun.",
"You must wait a few seconds before entering a new code.": "Du musst ein wenig warten bevor du einen neuen Code eingeben kannst.",
+ "You placed #${RANK} in a tournament!": "Du bist #${RANK} in einem Turnier geworden!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Du hast den #${RANK} Platz im letzten Turnier erreicht. Danke fürs Spielen!",
"Your account was rejected. Are you signed in?": "Dein Account wurde abgelehnt. Bist du eingeloggt?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Deine Anzeigenaufrufe werden derzeit nicht erfasst. Die Auswahl an Anzeigenoptionen ist vorübergehend eingeschränkt.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Die Kopie dieses Spiels wurde modifiziert.\nÄnderungen rückgängig machen & neu versuchen.",
"Your friend code was used by ${ACCOUNT}": "Dein Freundschafts-Code wurde von ${ACCOUNT} verwendet."
},
@@ -1929,11 +2049,14 @@
"toSkipPressAnythingText": "(beliebige Taste drücken um Tutorial zu überspringen)"
},
"twoKillText": "DOPPEL KILL!",
+ "uiScaleText": "UI Wert",
"unavailableText": "nicht verfügbar",
+ "unclaimedPrizesText": "Es warten noch Belohnungen auf dich!",
"unconfiguredControllerDetectedText": "Unkonfigurierter Controller erkannt:",
"unlockThisInTheStoreText": "Das muss im Store freigeschaltet werden.",
"unlockThisProfilesText": "Um mehr als ${NUM} Profile zu erstellen, brauchst du:",
"unlockThisText": "Um das zu entsperren brauchst du:",
+ "unsupportedControllerText": "Der Controller \"${NAME}\" wird nicht unterstützt",
"unsupportedHardwareText": "Entschuldigung, diese Hardware wird nicht unterstützt.",
"upFirstText": "Zuerst:",
"upNextText": "Als Nächstes in Spiel ${COUNT}:",
@@ -1941,12 +2064,16 @@
"upgradeText": "Verbessern",
"upgradeToPlayText": "Upgrade auf \"${PRO}\" im Store um das zu Spielen.",
"useDefaultText": "Standard benutzen",
+ "userSystemScriptsCreateText": "Erschaffen Sie Benutzer-System-Scripts",
+ "userSystemScriptsDeleteText": "Löschen Sie Benutzer-System-Scripts",
"usesExternalControllerText": "Das Spiel nutzt einen externen Controller für die Eingaben.",
"usingItunesText": "benutze Musik-App für Hintergrundmusik...",
"usingItunesTurnRepeatAndShuffleOnText": "Stelle sicher, dass iTunes ZUFÄLLIG wiedergibt und ALLE wiederholt.",
"v2AccountLinkingInfoText": "Um V2 Kontos zu verknüpfen, benutze den 'Konto Verwalten' Knopf.",
+ "v2AccountRequiredText": "Dazu wird ein V2 Account benötigt. Upgrade dein Account und versuche es erneut.",
"validatingBetaText": "Verifizieren der Beta...",
"validatingTestBuildText": "Bestätige Testversion...",
+ "viaText": "über",
"victoryText": "Sieg!",
"voteDelayText": "Die nächste Abstimmung kann erst in ${NUMBER} Sekunden gestartet werden.",
"voteInProgressText": "Es wird bereits eine Abstimmung durchgeführt.",
@@ -2022,5 +2149,6 @@
},
"yesAllowText": "Ja, erlauben!",
"yourBestScoresText": "Deine besten Punktzahlen",
- "yourBestTimesText": "Deine besten Zeiten"
+ "yourBestTimesText": "Deine besten Zeiten",
+ "yourPrizeText": "Deine Belohnung:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/gibberish.json b/dist/ba_data/data/languages/gibberish.json
index 3968829f..0481f76e 100644
--- a/dist/ba_data/data/languages/gibberish.json
+++ b/dist/ba_data/data/languages/gibberish.json
@@ -1,14 +1,16 @@
{
"accountRejectedText": "You ac woefije obj acwoew. Aj cowier wore cs?",
"accountSettingsWindow": {
- "accountNameRules": "Acoief coej. c woejf. cwoef ocoweofwjfj c wjefowfowef wocjowefffz",
+ "accountNameRules": "Acoief coej. woejf. cwoef ocoweofwjfj c wjefowfowef wocjowedffz",
"accountProfileText": "(acczntl prfflzlf)",
"accountsText": "Acctntzz",
"achievementProgressText": "Achilfjasdflz: ${COUNT} ouzt of ${TOTAL}",
"campaignProgressText": "Cmapghan Progflzl: ${PROGRESS}",
"changeOncePerSeason": "owe c wow chofu wefwoefjwofjowcowfwf.",
"changeOncePerSeasonError": "You cows ow woefj woifjwo ec oweo fowijf owiejf (${NUM} cowefwe)",
+ "createAnAccountText": "Crjoiew an Acoiejfdf",
"customName": "Cow oj wojNaoa",
+ "deleteAccountText": "Delft Cosdfsdf",
"deviceSpecificAccountText": "Crrlzfjowf uznfl a divwfo-zpijfwo ancnfo ${NAME}",
"googlePlayGamesAccountSwitchText": "If cows objc aw;eoifjw efoGoogl coweijwoejr,\nOc wore aero two cw oerjwoer jo gw spoeor.",
"linkAccountsEnterCodeText": "Enrlr Cfdsz",
@@ -28,14 +30,16 @@
"setAccountNameDesc": "Selcow f cjwo ot afoa fw jcpaoewj fwocowefj.\nYou wolf wc. weowyc oawe awoefm mcapowefi \ncoat aocjweo towirowmcowiefownr.",
"signInInfoText": "Sgn inz tz strz yr prograrzz inz\nthz cld, rnzr tckrz, rnz",
"signInText": "Sggnz Inz",
+ "signInWithAnEmailAddressText": "Sif c woe w oo wefwioje ofiewj dfjdf",
"signInWithDeviceInfoText": "(an coiwjfow fcoa cowj efj woj cowij eofjwoj foijs aofij )",
"signInWithDeviceText": "Sngi foicj oj de voa cwoiejfw",
"signInWithGameCircleText": "Sgn in gh Gm Cirflc",
"signInWithGooglePlayText": "Snf ocj weo fGOofl Plfl",
"signInWithTestAccountInfoText": "(lgjo cac cojef ot; oeco doic w eofjw oero )",
"signInWithTestAccountText": "Sjc weo fwtjwoefj cowefwf",
+ "signInWithText": "Sign fit cweof ${SERVICE}",
"signInWithV2InfoText": "(an zofj c woof woke wo Eire wf ofjjowg)",
- "signInWithV2Text": "Sngo cow erwoj CBombSOudds acorjds.",
+ "signInWithV2Text": "Sngo cow erwoj ${APP_NAME} acorjds.",
"signOutText": "Sgngz Ozt",
"signingInText": "Sgngngn infz..",
"signingOutText": "Sngning ozt..",
@@ -342,9 +346,14 @@
"titleText": "Ádzd Gámzé",
"titleTextScale": 1.01
},
+ "addToFavoritesText": "Add owej owjwffwfwe",
+ "addedToFavoritesText": "Added '${NAME}' for cow jowdif.",
+ "allText": "Alcllwerf",
"allowText": "Alzéow",
"alreadySignedInText": "Yr co wcowief woeijo wife ewf;\norc woeful oj ceofjwoejfowief\nocjwoef weofwocijweofw.",
"apiVersionErrorText": "Cznt lzdz mdls ${NAME}; zt tarng faptr ${VERSION_USED}; wz rojafoqrz ${VERSION_REQUIRED}.",
+ "applyText": "Appcfwf",
+ "areYouSureText": "A foe fwocijwe?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Aztoz\" enablez thz onlzl when hedifphz arnz plzzdd inz)",
"headRelativeVRAudioText": "Hzad Rlztefijv VRZ Azdjfozl",
@@ -369,14 +378,25 @@
"boostText": "Bfzesf",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} ís cónfigúred ín thé ápp itszlf.",
"buttonText": "béttzn",
- "canWeDebugText": "Woíld yoí lúké BombZqíád to áítomátúcálly réport\nbígz, crázhéz, ánd bázúc ízágé únfo to thé dévélopér?\n\nThúz dátá contáúnz no pérzonál únformátúon ánd hélpz\nkéép thé gámé rínnúng zmoothly ánd bíg-fréép.",
+ "canWeDebugText": "Woíld yoí lúké ${APP_NAME} to áítomátúcálly réport\nbígz, crázhéz, ánd bázúc ízágé únfo to thé dévélopér?\n\nThúz dátá contáúnz no pérzonál únformátúon ánd hélpz\nkéép thé gámé rínnúng zmoothly ánd bíg-fréép.",
"cancelText": "Czéanczel",
"cantConfigureDeviceText": "Sórry, ${DEVICE} ús nút cónfígúrzble.",
"challengeEndedText": "Thzl cowfo jan fa eofnwoefnw.",
"chatMuteText": "Mmof wChad",
"chatMutedText": "Chad mamba",
"chatUnMuteText": "Unobiaje Chafb",
+ "chests": {
+ "levelChestText": "LR${NUM} Czfjwer",
+ "prizeOddsText": "Pzoierj Odfsds",
+ "reduceWaitText": "Roijwoef Wjwore",
+ "slotDescriptionText": "THowi fwoeifj wo pwoejr s.\n\nWOewr c woej fjpwoe ow erja otjfpoweijr,\nocjwpeo. cowiej rrhpag, and pco wejrwpot\ncaowej cowiers.",
+ "slotText": "Chsof sdlfjoef ${NUM}",
+ "slotsFullWarningText": "WARNINEF: All owe fwoe fowior ;woeffufll.\nAOcn weow eroapoghwpeoi we. owejpwoejowe.",
+ "unlocksInText": "Ucowefij If"
+ },
"choosingPlayerText": "",
+ "claimText": "Clwefijwe",
+ "codesExplainText": "Cody wc woeir wcpwep oijwoeifj\nwoe wefjwe ofiwjeocijwoerer.",
"completeThisLevelToProceedText": "Yóz múst cómplítz\nthís lével tú próceed!",
"completionBonusText": "Cúmplezión Búnís",
"configControllersWindow": {
@@ -466,6 +486,7 @@
"titleText": "Cónfígúre Tóuchszreen",
"touchControlsScaleText": "Tóuch Cóntróls Scále"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} otic w ejowei fajowe cjwoei woeirj dfwf.",
"configureItNowText": "Cónfígzre ít nów?",
"configureText": "Cónfúgzre",
"connectMobileDevicesWindow": {
@@ -579,6 +600,7 @@
"demoText": "Dmfwef",
"denyText": "Dénziy",
"deprecatedText": "Dowefowicjwer",
+ "descriptionText": "Djcowiejfwdf",
"desktopResText": "Dzlflfjz Rzflz",
"deviceAccountUpgradeText": "Wowierj:\nWofiwj c weojfw duo wdjfo weir are(${NAME}).\nDowjc weowje r ofjowei fjwoeodjfowdofijwodfjf.\nUpeworwe coweoijwV2 ocwoe roweijroidjjfj owejowejd.",
"difficultyEasyText": "Ezrz",
@@ -589,6 +611,10 @@
"disableRemoteAppConnectionsText": "Disojf c woij ewof-app cowjf woejwe",
"disableXInputDescriptionText": "Allow mor wow ejo4 cow oeicjwo cobu oaf woejfowie jowrj",
"disableXInputText": "Dio cow eofwije",
+ "disabledText": "Dfewfczfwef",
+ "discardText": "Dfwecwer",
+ "discordFriendsText": "Weor owe fwjeowi cow fowijfowjdfdf?\nJJowjef c jewel dODIj c jdjfosijfdfs!",
+ "discordJoinText": "JWeoj wc c wwdofijsd",
"doneText": "Dónz",
"drawText": "Drawz",
"duplicateText": "DSFcoiwjef",
@@ -601,8 +627,10 @@
"gameListText": "Gámé Lzúst",
"listNameText": "Plzljlfz Nmflf",
"nameText": "Néáme",
+ "pointsToWinText": "JWP er OWejrd",
"removeGameText": "Rzmóve\nGzmze",
"saveText": "Sézve Lzést",
+ "seriesLengthText": "S oere cowejrd",
"titleText": "Plzltls Edirtzlr"
},
"editProfileWindow": {
@@ -623,6 +651,7 @@
"localProfileText": "(lcllf proriocf)",
"nameDescriptionText": "Pléyzr Náme",
"nameText": "Núme",
+ "profileAlreadyExistsText": "We c weir wet fj c where jggafjw fweworer jdfdf.",
"randomText": "rándzm",
"titleEditText": "Edít Prófílze",
"titleNewText": "Néw Prófílze",
@@ -662,6 +691,7 @@
"useMusicFolderText": "Fldlzr ofz Mzlfic Flzlz"
},
"editText": "Edf",
+ "enabledText": "Efweecwef",
"endText": "Enzf",
"enjoyText": "Enfjofjw!",
"epicDescriptionFilterText": "${DESCRIPTION} Ín ípic slúw mztíon.",
@@ -673,6 +703,8 @@
"errorText": "Errórz",
"errorUnknownText": "unknznlz errzzz",
"exitGameText": "$Excej ${APP_NAME}",
+ "expiredAgoText": "Expiofwef ${T} awoifje",
+ "expiresInText": "Expoijfwe f in ${T}",
"exportSuccessText": "'${NAME}' woejpcj",
"externalStorageText": "Extzljrzl Stjrfjzfgz",
"failText": "Fáilz",
@@ -709,6 +741,8 @@
"editText": "Ezltjf\nPlaflfzlz",
"gameListText": "Gzéme Lízt",
"newText": "Núw\nPlzlrlrzl",
+ "pointsToWinText": "Peer c word fdjfw",
+ "seriesLengthText": "Soft cwojerr",
"showTutorialText": "Shzwlf Trltlrjlzjf",
"shuffleGameOrderText": "Shúfflze Gáme Oéder",
"titleText": "Cmtlajrz ${TYPE} Plzlsfwz"
@@ -738,6 +772,7 @@
"copyCodeText": "Cpoef Cwfdf",
"copyConfirmText": "COpic for cowejwdf.",
"dedicatedServerInfoText": "For code wocj woiejfowiejf, loci joweijf owiejfw. Se eocwj efowiejo wcoweijf woeifowoco er.",
+ "descriptionShortText": "Us fow cower. gowf pwoij df odfj g pawor aryh cowier.",
"disconnectClientsText": "Thz wlzl dicntjf thz ${COUNT} pljflaf (s)\ninc yrrz prthra. Arz yrz fsrru?",
"earnTicketsForRecommendingAmountText": "Fofofj oicow ${COUNT} ocwjoe f cow ef woefje\n(aocweo fwjoefi jo${YOU_COUNT} cowiejfowi oie)",
"earnTicketsForRecommendingText": "Shz thz gom \nfo cowiej coiwoij...",
@@ -754,7 +789,7 @@
"friendPromoCodeInstructionsText": "To Us ocj , ofijwe ${APP_NAME} oafn aco\"segoingaf- aocij weoifjwoe fowiejoijcowijcoiwjef.\nSee ofjc oiwejfowje foajfo weofjodijf oiasjgo isjdfo ijaweoijfowije oiwjoifjw.",
"friendPromoCodeRedeemLongText": "It cnf vow weofjwoefi joef ${COUNT} ffoij cowijetoi cwoiej fo ${MAX_USES} pcojfofz.",
"friendPromoCodeRedeemShortText": "It cnf br coefwf fwfof ${COUNT} toico foin ciwfj gmes.",
- "friendPromoCodeWhereToEnterText": "(inz \"Settdfings->Adwefwced->Eftcer Codze\")",
+ "friendPromoCodeWhereToEnterText": "(inz \"Settdfings->Adwefwced->Eftcder Codze\")",
"getFriendInviteCodeText": "Gz Frjor Infivo Cdz",
"googlePlayDescriptionText": "Invlt Gglglz Plzlz plzlfer tz yzr prtaryz:",
"googlePlayInviteText": "Invtlzz",
@@ -787,6 +822,7 @@
"manualYourLocalAddressText": "Yrrz lcl addratrz:",
"nearbyText": "Woiwjefd",
"noConnectionText": "",
+ "noPartiesAddedText": "Not cower wo cowdj fwd",
"otherVersionsText": "(otco verosfjso)",
"partyCodeText": "Prewjr Cdfew",
"partyInviteAcceptText": "Acczlfp",
@@ -861,6 +897,12 @@
"youHaveShortText": "you hv f ${COUNT}",
"youHaveText": "yz hv ${COUNT} tickrrz"
},
+ "goldPass": {
+ "desc1InfTokensText": "Infowef oTjwof.",
+ "desc2NoAdsText": "Nz Weft",
+ "desc3ForeverText": "Fejrwoijfz.",
+ "goldPassText": "Goose Ppzif"
+ },
"googleMultiplayerDiscontinuedText": "Sowoer Gojf wel wouwen weoioc long wf won.\nI wow oe wefwjr pif g wfpawouja c oeij fw ocjaoiejowr.\nUntil. cowier oa j fapefij cpoypt ao coonnec awoiery.\n-Ercff",
"googlePlayPurchasesNotAvailableText": "Weofiiwj woe woerd wieofjwe\ncome foe rj eofiaj cpwoe jrowjer..dd",
"googlePlayServicesNotAvailableText": "GOowf cpw ef A coweij woerj.\nWomb woof cape wgwoijc we coowiejrerdss.",
@@ -870,10 +912,12 @@
"autoText": "Aúto",
"fullScreenCmdText": "Fúllézreen (Cmd-F)",
"fullScreenCtrlText": "Fúlzcréen (Ctrl-F)",
+ "fullScreenText": "Ffjoefzlefw",
"gammaText": "Gámza",
"highText": "Hígh",
"higherText": "Híghrz",
"lowText": "Lózw",
+ "maxFPSText": "Mxf cWEf",
"mediumText": "Mzdíum",
"neverText": "Névzer",
"resolutionText": "Résólution",
@@ -955,6 +999,7 @@
"importText": "Icwefwe",
"importingText": "Imcowiew..",
"inGameClippedNameText": "ic weof owef\n\"${NAME}\"",
+ "inboxText": "Iboiwjef",
"installDiskSpaceErrorText": "ERROR: Unzlbj ao ppc pwef oj oinosjs.\nYos may aoefo wocw oeitjoidosdfdve.\nCjfewf wocjdo spac ando ro gaing.",
"internal": {
"arrowsToExitListText": "préss ${LEFT} ór ${RIGHT} tó exút lzst",
@@ -1011,12 +1056,14 @@
"touchScreenJoinWarningText": "Yz hv jofndsf woijt iafh doctoucohdsf.\nIf oth dfawas do oasdf osdft mwne owijf oadsjf.",
"touchScreenText": "TóuchScrzén",
"trialText": "tríál",
+ "unableToCompleteTryAgainText": "Unweojw cowe rwpor oijwe fwoer noww.\nPlze fow cowe gagainf.",
"unableToResolveHostText": "Error: cow e fwjeociwjeorir.",
"unavailableNoConnectionText": "Tho fiw ficj woiejf paowejf (no itnwotower connecotjs?)",
"vrOrientationResetCardboardText": "Us this to weoojeif co VR owfjow ego\nTz pc we fwotj oa ocw eoowf eo awoifoacoincwr.",
"vrOrientationResetText": "VR ooiwjfowif rnefz.",
"willTimeOutText": "(wzlf tmz oat if idle)"
},
+ "inventoryText": "Inoejowfjwf",
"jumpBoldText": "JZMP",
"jumpText": "Júmp",
"keepText": "Kéepz",
@@ -1064,8 +1111,11 @@
"seasonEndsMinutesText": "Seaonf woeo cowi fj${NUMBER} mcoinwefoij.",
"seasonText": "Seocwofj ${NUMBER}",
"tournamentLeagueText": "Yzz mff erwr ${NAME} leg foic woefin woef oeijfwfew.",
- "trophyCountsResetText": "Trphy cofo wuecw owef owioiafowf."
+ "trophyCountsResetText": "Trphy cofo wuecw owef owioiafowf.",
+ "upToDateBonusDescriptionText": "Plwefj cowe fowc woer weoirjo\nc woejf weowerj r ${PERCENT}% ocw edfh.",
+ "upToDateBonusText": "Up-Ff-Odfjw DbJfdjs."
},
+ "learnMoreText": "Loweifj cowe",
"levelBestScoresText": "Bsfwo cowiejo ef${LEVEL}",
"levelBestTimesText": "Best wfm coi ${LEVEL}",
"levelFastestTimesText": "Fztjst tmzf on ${LEVEL}",
@@ -1112,6 +1162,8 @@
"modeArcadeText": "Aroc Mofwfz",
"modeClassicText": "Cjwofej mDofd",
"modeDemoText": "Dfwocij Mmdff",
+ "moreSoonText": "Morew owjeo zoonwf...",
+ "mostDestroyedPlayerText": "Mowe Sfewo f Cpwowjef",
"mostValuablePlayerText": "Móst Válúablz Pláyér",
"mostViolatedPlayerText": "Móst Víoláted Pláyer",
"mostViolentPlayerText": "Móst Víolznt Pláyér",
@@ -1128,6 +1180,7 @@
"nameSuicideText": "${NAME} cómmittéd súizide.",
"nameText": "Noiwjfe",
"nativeText": "Nztvvz",
+ "newExclaimText": "Nwefw1!",
"newPersonalBestText": "Néw pérsónzl bést!",
"newTestBuildAvailableText": "A nwlf tat blfjl is aviflflzblz! (${VERSION} blzd ${BUILD}).\nGzt iz tat ${ADDRESS}",
"newText": "Ncw",
@@ -1139,13 +1192,17 @@
"noExternalStorageErrorText": "Nz xtenrlf stlfsdf fnff onf thz dfvfojfzz",
"noGameCircleText": "Errór: nút lúggzd íntó Góme Cúrclz",
"noJoinCoopMidwayText": "Có-óp gúmzs cán't bz jóinzd mídwáy.",
+ "noMessagesText": "No wwoej wced",
+ "noPluginsInstalledText": "No Plugiwue sowiej fwdf",
"noProfilesErrorText": "Yoú hávz nó pláyerz prófilzs, só yóu're stzck wíth '${NAME}'.\nGó tz Sétzings->Pláyerz Prófiles tú mzke yóurszlf á prófile.",
"noScoresYetText": "Nz scrrlz ytz.",
+ "noServersFoundText": "Neo c who wj wo eij.",
"noThanksText": "Nó Thánkz",
"noTournamentsInTestBuildText": "WOREwr: WOTo cwoefw coif wefiidfjdf cow ekfwoejowijerwdifwdf.",
"noValidMapsErrorText": "Nó válíd máps fóund fúr thzs gáme typz.",
"notEnoughPlayersRemainingText": "Nt zefwnoef plrjr rmeinging; exit anfo iwfj owjf oj ga emga;",
"notEnoughPlayersText": "Yf nfdf a taflew ${COUNT} pfo wotj wofijow afo game!",
+ "notEnoughTicketsText": "Not Fowej Tickewerwe!",
"notNowText": "Nót Núw",
"notSignedInErrorText": "Yz mst bz snginf intof yrrz accnt tz dz thzz.",
"notSignedInGooglePlayErrorText": "Ym fij cow fj wo cowe toiw jcoj ojwoefj owi.",
@@ -1158,6 +1215,9 @@
"onText": "Ón",
"oneMomentText": "One Mmcowmerz..",
"onslaughtRespawnText": "${PLAYER} wúll réspawn das wávz ${WAVE}",
+ "openMeText": "Opwef cMF",
+ "openNowText": "Opzef Nweer",
+ "openText": "Opwefw",
"orText": "${A} orz ${B}",
"otherText": "Ofowiejf....",
"outOfText": "(#${RANK} oút ófz ${ALL})",
@@ -1253,6 +1313,8 @@
"punchText": "Púzch",
"purchaseForText": "Púrcháse fúrz ${PRICE}",
"purchaseGameText": "Púrchúze Gáme",
+ "purchaseNeverAvailableText": "Some f , zf w owe f;woef fjsdgoiwejf sldfjsdjfsdf.\nGJ who woe roe rwhe gpwepgoi elf. dfoifj g;weoi jwo. fwjgw theorieorjdsd f woof wdofjf.",
+ "purchaseNotAvailableText": "Thief o c;weo weoifj weft odin other.",
"purchasingText": "Prjrcjfz...",
"quitGameText": "Qcoifj ${APP_NAME}",
"quittingIn5SecondsText": "Quéttzng ín 5 sécznds...",
@@ -1296,6 +1358,7 @@
"version_mismatch": "Veroi jmoiowoejf\nMkac aot co boaisoijero caoioisd fjaoer\nadc ot oacouweotu vowe ron aga."
},
"removeInGameAdsText": "Unlkjfj \"${PRO}\" in cowj wje of wejfoiwfoo oifoiwjef.",
+ "removeInGameAdsTokenPurchaseText": "LWEFJOE COJW EREFW: Pruwo cwoi Ao fogjwe cwoe reowj owie ain-gm woafj owwrds.",
"renameText": "Rzngmlz",
"replayEndText": "Enz Rpllz",
"replayNameDefaultText": "Lzts Gmzl Rplzlz",
@@ -1318,6 +1381,8 @@
"runText": "Rúun",
"saveText": "Sávez",
"scanScriptsErrorText": "Error(w) frolic weir ro; cj weowje ici woeijwer.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} dfsf ${NUM} w woeifjw fwjef webd weoifjwoef ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} fwejfwjef weoifjwefffefwwef ${API}.",
"scoreChallengesText": "Scóre Chálléngúz",
"scoreListUnavailableText": "Sczerl lzst unvnslfljblz.",
"scoreText": "Szóre",
@@ -1328,6 +1393,7 @@
},
"scoreWasText": "(wús ${COUNT})",
"selectText": "Slézcz",
+ "sendInfoDescriptionText": "Snff ac c woof wc owei. jf;woef; a gwoiefj.\ncc c woe cw Rowe orijwg gwpofij wpeoifjwefd.",
"seriesWinLine1PlayerText": "WZNNPLL THZ",
"seriesWinLine1Scale": 0.65,
"seriesWinLine1TeamText": "WNZTTTM THZ",
@@ -1351,6 +1417,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(a smpd a, condofia efjwefoajewofoiaj;s a sodifj a;osdfjoitest f)",
"alwaysUseInternalKeyboardText": "Alzlt usl Intenralf kyBerz",
"benchmarksText": "Bnchmkwr & Staf-Tsfsfz",
+ "devToolsText": "Dow Aocjwe",
"disableCameraGyroscopeMotion": "Disa fe come won aweGowyeo CMosndf",
"disableCameraGyroscopeMotionText": "Dislike og wefo cwei oweiaMowerdns",
"disableCameraShakeText": "SDi Cmanan Blobofs",
@@ -1360,14 +1427,21 @@
"enterPromoCodeText": "Eznter Cdzs",
"forTestingText": "Ntz: thz vlarj farz olflf rzz tsffcn anz wllz bz llfsf whnzl thzz app exrtzz.",
"helpTranslateText": "${APP_NAME} lngalsdf transaldflksdfj arz fjocdmaosdf\nsprnarted effrztzs. Ifsdf oud'fu likzz to cmdfoasdf corectsf\na sd fjafdsoijdf, flfowefj thz fljlnkdd blzljf. Thansdlfn in andncas!",
+ "insecureConnectionsDescriptionText": "now come fowdifjowdf ckwdf , c,woer\no woef owiefjw f cpawp a;oiweroijdf",
+ "insecureConnectionsText": "Sefu cwoe co wi cwodijfdfd",
"kickIdlePlayersText": "Kzkck Idlzlf Plzjrs",
"kidFriendlyModeText": "Krz-Frjijglfz-Mzdz (rdfjifz voioifjf, fz)",
"languageText": "Lnglfjslfd",
"moddingGuideText": "Mddzng Gdufnzsd",
+ "moddingToolsText": "Meowed eFwefwf",
"mustRestartText": "Yz msg restar thz gmm fof this tk ttk effectsz.",
"netTestingText": "Ntwkrz Tsstcg",
"resetText": "Rsttz",
+ "sendInfoText": "Show cowdf",
"showBombTrajectoriesText": "Shzlz Bomf Tfwoejcwoefz",
+ "showDemosWhenIdleText": "Sho cwoefj c wdofdfjdfwf",
+ "showDeprecatedLoginTypesText": "Show woe fjwoc woejoweo fwef",
+ "showDevConsoleButtonText": "Sho c weroiw c wo cwoije fwois",
"showInGamePingText": "Shoe o co fowl Png",
"showPlayerNamesText": "SHzlfjl Plzlrr Nmzlzlls",
"showUserModsText": "Shzl Mdsz Fldlrz",
@@ -1387,6 +1461,9 @@
"signInWithGameCenterText": "To loci wo gamg wofiw efoiwjef.\ncoaej goajb oaj Game foc etapp.",
"singleGamePlaylistNameText": "Jzff ${GAME}",
"singlePlayerCountText": "1 pláyzr",
+ "sizeLargeText": "Lwfefwdf",
+ "sizeMediumText": "MFwefwf",
+ "sizeSmallText": "WSDfjwf",
"soloNameFilterText": "${NAME} Sólzo",
"soundtrackTypeNames": {
"CharSelect": "Czárazter Sélection",
@@ -1412,6 +1489,7 @@
},
"spaceKeyText": "spzz",
"statsText": "Sfawfwf",
+ "stopRemindingMeText": "Stoij fPRo wwcoe Pfm",
"storagePermissionAccessText": "Tho cowefj woiejowefw.",
"store": {
"alreadyOwnText": "Yorz alrlfzl wozl ${NAME}!",
@@ -1463,6 +1541,8 @@
"storeText": "Stzlrle",
"submitText": "Scowiejfwef",
"submittingPromoCodeText": "Subjfoif Cdssz...",
+ "successText": "Sensded!",
+ "supportEmailText": "IF wc weoif joweij c woeifjowiejorwer\nc who we fweofiwjefo ${EMAIL}.",
"teamNamesColorText": "Tmcoj Conor/ Coarle...",
"teamsText": "Tééáémés",
"telnetAccessGrantedText": "Tzélnt acczzss énazledz.",
@@ -1473,6 +1553,7 @@
"testBuildValidatedText": "Tst Bjldf Vlaldkfsf; Enjzjf!",
"thankYouText": "Thánk yóu fór yóur súppórt! Enjóy thé gáme!!",
"threeKillText": "TRÍPLZ KÚLL!!",
+ "ticketsDescriptionText": "Towfjwef cowej rocw eoi woujcoiwu eor, gowbof\nocowo wper ewrjwefow fowije ostrooiwjeofwrs.\n\nToco weo jweori weotwocoiw eowijoer oiwejf\nCow eower gpaogj woef owjefapef wigowijeo iw we.",
"timeBonusText": "Tíme Bónús",
"timeElapsedText": "Tíme Elápszd",
"timeExpiredText": "Tzmz Exprireizdd",
@@ -1483,10 +1564,24 @@
"tipText": "Tízp",
"titleText": "Bmbmsqdz",
"titleVRText": "BomboFjof VR",
+ "tokens": {
+ "getTokensText": "Gje Cowjerr",
+ "notEnoughTokensText": "Nt come. fowijodifj!",
+ "numTokensText": "${COUNT} Tlwefjwf",
+ "openNowDescriptionText": "Yowu cw oeo we ofiwjeroj\ncow eoowe rwo oweifuwef\now w oeijrer.",
+ "shinyNewCurrencyText": "Boiwfw wet fwoeifj wofz ofwroru.",
+ "tokenPack1Text": "Smeow Tlwkf Pcer",
+ "tokenPack2Text": "Mfowefj howei roweirdf",
+ "tokenPack3Text": "Lwofiw lw wore doijfdf",
+ "tokenPack4Text": "JWfowji howei oweirjdf",
+ "tokensDescriptionText": "Towefjw cowe rowjf. fa;weof wegogowijeoiwjf\nfow ef cowiej roweir gjpgoj fw eojrweio ga;oijw\n\nYoucwe orwe c weowherapogpouggj foiwejow\nagpo cpaowerp.. Thgapoeiwjj cowejrhghapjzoejf\nwoicw eo wor apojpcowieo g gjeiwroeijds.",
+ "youHaveGoldPassText": "You who owe rowjfosijdf.\nAlf wo cwoerpwer rwoer f.\nCwjodi!"
+ },
"topFriendsText": "Tóp Fríendz",
"tournamentCheckingStateText": "Chkfjfowef oitwof oweifja oef pawoej owef...",
"tournamentEndedText": "This foil jefoi weoa echo sd. An ewoifj wo oowifjowe soon.",
"tournamentEntryText": "Tnofjwfe oecowiejw",
+ "tournamentFinalStandingsText": "Fiowefj Stdfijwef",
"tournamentResultsRecentText": "Rcnet Touaofius aRamalsdf.",
"tournamentStandingsText": "Tzewfjwoij Stndfalfjz",
"tournamentText": "Tanfowijfowef",
@@ -1526,6 +1621,22 @@
"Zoe": "Zob",
"Zola": "Zlefw"
},
+ "chestNames": {
+ "Chest": "Czjofwf",
+ "L1": "LZ1",
+ "L1 Chest": "LX1 CHzer",
+ "L2": "LZ2",
+ "L2 Chest": "LX2 CHzer",
+ "L3": "LZ3",
+ "L3 Chest": "LX3 CHzer",
+ "L4": "LZ4",
+ "L4 Chest": "LX4 CHzer",
+ "L5": "LZ5",
+ "L5 Chest": "LX5 CHzer",
+ "L6": "LZ6",
+ "L6 Chest": "LX6 CHzer",
+ "Unknown Chest": "Ucwoejrwer Cjoefwijf"
+ },
"coopIconNames": {
"Infinite\nOnslaught": "Infíníte\nÓnsláught",
"Infinite\nRunaround": "Ínfíníte\nRúnaróúnd",
@@ -1561,6 +1672,18 @@
"Uber Onslaught": "Ubzr Onzláught",
"Uber Runaround": "Ubúr Runáround"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Towfijwezz",
+ "${C} Tokens": "${C} Tjowefjdfzzz",
+ "Chest": "Cjoziejr",
+ "L1 Chest": "LZ1 Cohwerd",
+ "L2 Chest": "LZ2 Cjzoerr",
+ "L3 Chest": "LZ3 Coijewr",
+ "L4 Chest": "LZ4 Cheowrd",
+ "L5 Chest": "LZ5 Coewer",
+ "L6 Chest": "LZ6 Cowiejrer",
+ "Unknown Chest": "Unoweijr Coizjerer"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Bé thé chósen ónz fór a léngth éf tíme tó wzn.\nKzll thé chósen óne tz bécome út.",
"Bomb as many targets as you can.": "Bmb ojwe fo cj woef weoijcoj ofz.",
@@ -1644,39 +1767,45 @@
"languages": {
"Arabic": "Aroijwe",
"Belarussian": "Blfrurzfozz",
- "Chinese": "Choifwef Soimcwoef",
- "ChineseTraditional": "Cheifwoefjw Trwwefsdfs",
+ "Chinese": "Chweoifwej - Sompefwe",
+ "ChineseSimplified": "CHowef - Smpfoewfdf",
+ "ChineseTraditional": "Choweijwer - Transitiondsf",
"Croatian": "Crrlzlrrs",
"Czech": "Czffef",
- "Danish": "Dnishsdl",
+ "Danish": "Dnailöş",
"Dutch": "Dtchjdflz",
- "English": "Englfjlzjsh",
+ "English": "Enfizikik",
"Esperanto": "Esprorjjzlz",
"Filipino": "Fefjwoeifj",
"Finnish": "Fnnizhsh",
- "French": "Frnzhfhn",
- "German": "Grmmzndn",
- "Gibberish": "Gibberish",
+ "French": "Froktury",
+ "German": "Deutgwiz",
+ "Gibberish": "Abuktarika",
"Greek": "Gaofwef",
- "Hindi": "Hfjofz",
+ "Hindi": "Panokallas",
"Hungarian": "Hngjgozf",
"Indonesian": "Inofiqdson",
"Italian": "Itzllfjssnn",
- "Japanese": "Jpndjsjzes",
+ "Japanese": "Capnokas",
"Korean": "Kornesnzn",
"Malay": "FJwoerjjdf",
"Persian": "Psdfsdf",
+ "PirateSpeak": "Pirafw ef ocOSIf",
"Polish": "Pzlishz",
"Portuguese": "Portuguenejs",
+ "PortugueseBrazil": "Powerower - Brfoisjfewfd",
+ "PortuguesePortugal": "Porwofweuf - Poweijfdffz",
"Romanian": "Rmrfoijfzf",
"Russian": "Rzznrsn",
"Serbian": "Socowiejf",
- "Slovak": "Slihdtbjoy",
- "Spanish": "Snsdnsh",
+ "Slovak": "Zokkis",
+ "Spanish": "Snaddies",
+ "SpanishLatinAmerica": "Spoweijwe. - Ljf foewfij oAmweroijd",
+ "SpanishSpain": "Spwoefj - Zpfwjefdf",
"Swedish": "Swdiiszh",
"Tamil": "Tmfiewf",
"Thai": "Thzff",
- "Turkish": "Twfoijwef",
+ "Turkish": "Turiyako",
"Ukrainian": "Ukckwef",
"Venetian": "Vwvowefdf",
"Vietnamese": "Vjefowiewer"
@@ -1730,17 +1859,19 @@
"Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "And foci wej fowif ijcowjer.\nPle eocj w jocose fowl jeowijeo few fj cijwoiejr. fofofifjow e ciweocywe.",
"An error has occurred; (${ERROR})": "An cow fc woof wcef; (${ERROR})",
"An error has occurred; please contact support. (${ERROR})": "An cowed c woefj wcoi woof weiojrwe rj goije ${ERROR})",
- "An error has occurred; please contact support@froemling.net.": "An f oco ao ocio wj ; pocj oco woei fsuupo co co ifoiwnet",
+ "An error has occurred; please contact support@froemling.net.": "An f oco ao ocio wj ; pocj oco woei fsuupo co co ifoiwnet support@froemling.net gwizing patüköç.",
"An error has occurred; please try again later.": "An cowjef win woes owe p apowejrowjers.",
"Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Ac woef oi eowic woiej fowije foijcwe?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nTHci weo woi efoiw ojo ij!!",
"BombSquad Pro unlocked!": "Boijfdfsjef pon occoijfs!",
"Can't link 2 accounts of this type.": "Cnoj' oi n aoco i ot oaifftz.",
"Can't link 2 diamond league accounts.": "Cnoi' oin koci o2 doi co fla cairjrs.",
- "Can't link; would surpass maximum of ${COUNT} linked accounts.": "Cn't coi oi; could up vo io ${COUNT} oi c ioicoicuors.",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "Cn't coi oi; could up vo io möaksokato ${COUNT} oi c ioicoicuors.",
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Chowcj eof weoc jco; oe jwoeijf wojcwjeowfj woejf o${COUNT} dzf.",
"Could not establish a secure connection.": "Cjfoi cn ooi a tac c oweocoicoinr.",
- "Daily maximum reached.": "Dfilaf mciwfjiwf rechced.",
+ "Daily maximum reached.": "Dfilaf möaksokato ravhgedök.",
+ "Daily sign-in reward": "Dilse Sf wcowe owOSDfwrd",
"Entering tournament...": "Ernwoefijweo jfowjefw...",
+ "Higher streaks lead to better rewards.": "Hfweo lstor fljit f ob oijtow rewrds.",
"Invalid code.": "Invflijf cddz.",
"Invalid payment; purchase canceled.": "Info ejcwpeopwer; purwup cowefjwef.",
"Invalid promo code.": "Ivnfjfo pmpwf cdffz.",
@@ -1749,11 +1880,14 @@
"Item unlocked!": "Iwerw cowefjwoeijwer!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "LINKING FOFJWEF. ${ACCOUNT} o iwjof\nowe oijwe c woeoijwf oAL FJOEJI OCJW.\nYou off leojwoer wcowe foiwjefojweoiwf\n(a c owfw oefjTHIS c weoojw oesf)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Lcjwe fwofj o ${ACCOUNT} to cowejfweof?\nAll wefoiwejtthosjic w ${ACCOUNT} cowiejf tjsl.\nThis wefowondot onsof. Aojr tyocu wsure?",
- "Max number of playlists reached.": "Mx nfmow oijeplyalfaf rcnoahfd.",
- "Max number of profiles reached.": "Mc fjpasdofj c owiejfowe oiwjefsd.",
- "Maximum friend code rewards reached.": "Cmwoe oc wo Ego wel jacoweij weer.",
+ "Longer streaks lead to better rewards.": "LFowe jewoi ewr c weorj eowr efoiwjersr",
+ "Max number of playlists reached.": "Möaks nfmow oijeplyalfaf rcnoahfd.",
+ "Max number of profiles reached.": "Möks fresadora c owiejfowe rafgexed.",
+ "Maximum friend code rewards reached.": "Cmwoe oc wo Ego wel jacoweij weer möaksiöas.",
"Message is too long.": "CMew ociwje owe el.",
+ "New tournament result!": "Nwef toaiwjowcw orursllsst!",
"No servers are available. Please try again soon.": "Ns seroiejwc wefjwoe wj. Ple wer wfwef ewfowes.",
+ "No slots available. Free a slot and try again.": "Nz sliejfwo capoejw f. Fizi cowie rw gjwoe woerdd.",
"Profile \"${NAME}\" upgraded successfully.": "Profjojf \"${NAME}\" oupfuap coj woijsfsf.",
"Profile could not be upgraded.": "Profojfo coild onot foj bupfrade.",
"Purchase successful!": "Pcjofj scwcserfflz!",
@@ -1763,7 +1897,9 @@
"Sorry, this code has already been used.": "Srrc, thiz codds has aoiwjre bndd usdd.",
"Sorry, this code has expired.": "Sorrro, thi cowf ahs arowjers.",
"Sorry, this code only works for new accounts.": "Srror, this cod ojfowf work for know accarrn.",
+ "Sorry, this has expired.": "Sorrr, wot wf coijwoe rjexpirrd.",
"Still searching for nearby servers; please try again soon.": "Stjowf sera cj focnwoeir eserevers; pell cutlery a gao cốn.",
+ "Streak: ${NUM} days": "Srowefj ${NUM} wsdfdsf",
"Temporarily unavailable; please try again later.": "Tmwoef wf oucwof wf; cowejf awoj cwoijers.",
"The tournament ended before you finished.": "Thf weoijw oeij aoejf aowejf owjeof aiwjeofjwef.",
"This account cannot be unlinked for ${NUM} days.": "Th ow co ref w owjoso o ${NUM} dyafsoef.",
@@ -1774,19 +1910,28 @@
"Tournaments require ${VERSION} or newer": "Toijfw qojwce ${VERSION} or wcoiwej",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Uncljwf ${ACCOUNT} cowed wthosijf?\nAll cowejt ocjiwf ${ACCOUNT} cowiest dois.\n(expo fowefj etwohoa tand Costers)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "WARNOEF: com owe fw epfojwe. cj weo fjwefo wejfo wef jocij eowiefwef.\nCoaj owe fwefjwoo oweoifwoe fj ewrj woc. Ppel fwo c worywwr.",
+ "Wait reduced!": "Woer rowicjowijer!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Weofwief: T wof weio ocwe gipwoej. gowef apf wiefhp woiefpf weof wociwjeoirower odfowfjowjfdf.\nOW fw ef wejotiewt hgpgoregpw98g4g f wocow eij agoiweo g ghgpw gpwoepoipatajfwe owefwef.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Wocj weo ocj woiej fowj ofj aioj ojt;oi df joijwotijs?\n\nYoc uweof c owej owijf ${ACCOUNT1}\nThoci wef coj woeijf ${ACCOUNT2}\n\nThoc jweo owej fow cwi efod odo focwoe.\nWocj fo : cwo c weof odo fauoino!",
"You already own this!": "Yz fwowefoi coiweno fjoz!",
"You can join in ${COUNT} seconds.": "You won cowier fwoef ${COUNT} coiwejf.",
"You don't have enough tickets for this!": "Yz dfoiwf ahv weoj fwoitjoicker fz thzz!",
"You don't own that.": "You loci jeff jwoefwe.",
- "You got ${COUNT} tickets!": "Y zfowej f${COUNT{ ticeofjwe!",
+ "You got ${COUNT} tickets!": "Y zfowej f${COUNT} ticeofjwe!",
+ "You got ${COUNT} tokens!": "You got ${COUNT} tokewfjwf!",
"You got a ${ITEM}!": "Yzz gtzz z ${ITEM}!",
+ "You got a chest!": "Yor foiwje rgo c chserser!!!",
+ "You got an achievement reward!": "You cowe owf woef weg;oai cower jower!",
"You have been promoted to a new league; congratulations!": "Yf co efoj woef woecj owejfoiwef lfj ; congaroiwjf woes!",
+ "You lost a chest! (All your chest slots were full)": "Ycowe wo sowfweo ! (ALlco weofi wf o; cwoer orul)",
+ "You must update the app to view this.": "Yowu cow woef jwowo ejwe;oij wofjwoed.",
"You must update to a newer version of the app to do this.": "Yz mocu upc oig owc owt oc o ca; ;apc oi oj ;oj.",
"You must update to the newest version of the game to do this.": "Yocwe fweoowo weotjosij;ow. woeower weroso taotoautats.",
"You must wait a few seconds before entering a new code.": "Yzz msfgt wt a fz cwcfwf bfrrzz entef wcnfz cdszz.",
+ "You placed #${RANK} in a tournament!": "Yozu c wpefo wef j #${RANK} oci wef wocwj otjwerd.",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Yz wf ooiwef #${RANK} ofijwe oijw oijef . Thansf afpaflalay!",
"Your account was rejected. Are you signed in?": "Yoew cowcjwe woe woeiowirwo eirjw co weoijfow ej?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Ywer f wefi wue fiwe ifwiuehriweurhd, Abd fiwe fiwheigiweir hfsdfdsf,",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Yr coijw epowf oief oaefoiwfowjef\nPlejasefoaw efojw oefjwoejo aciowejrow.",
"Your friend code was used by ${ACCOUNT}": "Yrrj cof owf owcjowj fwoafeof ${ACCOUNT}"
},
@@ -1813,12 +1958,12 @@
"Flag Idle Return Time": "Flág Ídle Rétúrn Tímz",
"Flag Touch Return Time": "Flág Tzch Rétúrn Tímz",
"Hold Time": "Hólz Tímz",
- "Kills to Win Per Player": "Kílls tó Wín Pér Plzáyer",
- "Laps": "Lápz",
+ "Kills to Win Per Player": "Gebertzerto tórku Wenn Piérko Plzáyer",
+ "Laps": "Ląkzl",
"Lives Per Player": "Lívz Pérz Pláyrr",
"Long": "Lónggz",
"Longer": "Lóngrzz",
- "Mine Spawning": "Míne Spáwning",
+ "Mine Spawning": "Mõvn okmalako",
"No Mines": "Nz Mfjfnzl",
"None": "Núnz",
"Normal": "Nórmzll",
@@ -1837,10 +1982,10 @@
"Warning to ${NAME}: turbo / button-spamming knocks you out.": "Wjocief cwf ${NAME}: jojwo / ocjo efoiwefj wcoweok owerjoijdof."
},
"teamNames": {
- "Bad Guys": "Bázd Gúyzs",
+ "Bad Guys": "Juardz gùårdz'n",
"Blue": "Blzúe",
- "Good Guys": "Gzóod Gúys",
- "Red": "Réd"
+ "Good Guys": "Gzóod Gùårdz'n",
+ "Red": "Vegco"
},
"tips": {
"A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Á perfectly timed running-jumping-zpin-punch cán kill in á zingle hit\nánd eárn yóu lifelóng rezpect fróm yóur friendz.",
@@ -1940,11 +2085,14 @@
"toSkipPressAnythingText": "(tpz rz pzrzl anthfljzf tz skpfz tuzfjrlrrz)"
},
"twoKillText": "DÓÚBLZ KÍLL!",
+ "uiScaleText": "SUFwfef",
"unavailableText": "unavlfldsfjlbz",
+ "unclaimedPrizesText": "You c weo inp xo fowe fwiejrpdof!",
"unconfiguredControllerDetectedText": "Uncónfzgúred cúntrzllír dítzctíd:",
"unlockThisInTheStoreText": "Thz mf voi eunlcoef owef joiefsfrwe.",
"unlockThisProfilesText": "To cowier co we ${NUM} pcoer, cow oicoj:",
"unlockThisText": "Tz ncowifj ocje, ycon fneeds:",
+ "unsupportedControllerText": "Sorwfw, contorlwef \"${NAME}\" oweifj wcjwoeir.",
"unsupportedHardwareText": "Srrz, thz hardwrz isz nt spprted bz thz vejerelr dlzl gmpzz.",
"upFirstText": "Uzp férzt:",
"upNextText": "Úp nézt ín gámz ${COUNT}:",
@@ -1952,12 +2100,16 @@
"upgradeText": "Upgrorz",
"upgradeToPlayText": "Upgglf tz \"${PRO}\" iz j wojcwoef paljf zs.",
"useDefaultText": "Uzl Dflfjtzlz",
+ "userSystemScriptsCreateText": "Cwjof come rw dfoodwijfdf",
+ "userSystemScriptsDeleteText": "Down wc old. owiejf odfdf",
"usesExternalControllerText": "Thz gjf coiwjef oif owicoiwefj owejf owejoojof",
"usingItunesText": "Ufwefw Mfwoef co ef srnweoicjowe...",
"usingItunesTurnRepeatAndShuffleOnText": "Plzelz mkdk srzlc shfflds isON anz andpreld is ALZ unz iTunes",
"v2AccountLinkingInfoText": "To ljeowirj V2 sojowe, use fo 'Mnawefw Acoiwo' bons.",
+ "v2AccountRequiredText": "Thaw cw eo iwefio V2 Oicwe j. PC wepfo woj welag Wofiwj iowjoejfdffd.",
"validatingBetaText": "Válúdztíng Bztá...",
"validatingTestBuildText": "Vldfjdfoi jtese-bsdfasfd...",
+ "viaText": "sdf",
"victoryText": "Vúctzry!",
"voteDelayText": "You caecowe oefo wocj woeiwo ${NUMBER} wocijwoef.",
"voteInProgressText": "A voiajf coiwje fwooeio wcwer.",
@@ -1998,7 +2150,7 @@
},
"wiimoteListenWindow": {
"listeningText": "Líszéngng Fúr Wíímztes...",
- "pressText": "Prész Wíimzte bóttzns 1 azd 2 símultáneoúsly.",
+ "pressText": "Prész Wíimzte bóttzns 1 azd 2 símultáneoúsly.\n",
"pressText2": "Onz néwer Wiímótes wíth Moóión Plús búilt ón, przss thé réd 'sync' búttón ón thé bzck ónstzad.",
"pressText2Scale": 0.55,
"pressTextScale": 1.0
@@ -2009,7 +2161,7 @@
"listenText": "Lústzn",
"macInstructionsText": "Makú zurú your Wáá áz off and Bluútooth áz únablúd\non your Mac, thún prúzz 'Láztún'. Wáámotú zupport can\nbú a bát flaky, zo you may havú to try a fúw támúz\nbúforú you gút a connúctáon.\n\nBluútooth zhould handlú up to 7 connúctúd dúvácúz,\nthough your málúagú may vary.\n\nBombZquad zupportz thú orágánal Wáámotúz, Nunchukz,\nand thú Clazzác Controllúr.\nThú núwúr Wáá Rúmotú Pluz now workz too\nbut not wáth attachmúntz.",
"macInstructionsTextScale": 0.7,
- "thanksText": "Thznks té thz DérwiinRémote táam\nFúr máking thés pzsséble.",
+ "thanksText": "Thznks té thz DérwiinRémote táam\nFúr máking thés pzsséble.\n",
"thanksTextScale": 0.8,
"titleText": "Wzimóte Sztúp"
},
@@ -2035,5 +2187,6 @@
},
"yesAllowText": "Yús, Allúwz!",
"yourBestScoresText": "Yózr Bést Scúrzszz",
- "yourBestTimesText": "Yózr Bést Tímés"
+ "yourBestTimesText": "Yózr Bést Tímés",
+ "yourPrizeText": "Yowe ppwefdzz:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/greek.json b/dist/ba_data/data/languages/greek.json
index decc2bb3..f473ff81 100644
--- a/dist/ba_data/data/languages/greek.json
+++ b/dist/ba_data/data/languages/greek.json
@@ -6,7 +6,9 @@
"campaignProgressText": "Πρόοδος Ιστορίας [Δύσκολο]: ${PROGRESS}",
"changeOncePerSeason": "Μπορείτε να το αλλάξετε μόνο μία φορά ανά σεζόν.",
"changeOncePerSeasonError": "Πρέπει να περιμένετε μέχρι την επόμενη σεζόν για να το αλλάξετε ξανά (${NUM} days)",
+ "createAnAccountText": "Δημιουργήστε έναν Λογαριασμό",
"customName": "Προσαρμοσμένο Όνομα",
+ "deleteAccountText": "Διαγραφή λογαριασμού",
"googlePlayGamesAccountSwitchText": "Αν θέλετε να χρησιμοποιείσετε έναν διφορετικό λογαριασμό Google,\nχρησιμοποιείστε την εφαρμογή Google Play Games γιανα αλλάξετε.",
"linkAccountsEnterCodeText": "Εισάγετε Κωδικό",
"linkAccountsGenerateCodeText": "Δημιουργήστε Κωδικό",
@@ -24,14 +26,16 @@
"setAccountNameDesc": "Επιλέξτε το όνομα που θα φαίνεται στο λογαριασμό σας. Μπορείτε\nνα χρησιμοποιήσετε το όνομα ενός από τους δεσμευμένους σας\nλογαριασμούς ή να δημιουργήσετε ένα μοναδικό, προσαρμοσμένο όνομα.",
"signInInfoText": "Συνδεθείτε για να συλλέξετε εισητήρια, να συναγωνιστείτε στο διαδίκτυο\nκαι να μοιραστείτε τη πρόοδο σας ανάμεσα σε διάφορες συσκευές.",
"signInText": "Σύνδεση",
+ "signInWithAnEmailAddressText": "Συνδεθείτε με μία διεύθυνση email",
"signInWithDeviceInfoText": "(ένας λογαριασμός μονάχα διαθέσιμος από αυτή τη συσκευή)",
"signInWithDeviceText": "Σύνδεση με λογαριασμό συσκευής",
"signInWithGameCircleText": "Σύνδεση με Game Circle",
"signInWithGooglePlayText": "Σύνδεση με Google Play",
"signInWithTestAccountInfoText": "(προσωρινός λογαριασμός. Δημιουργήστε λογαριασμό συσκευής για συνέχιση προόδου)",
"signInWithTestAccountText": "Σύνδεση με δοκιμαστικό λογαριασμό",
+ "signInWithText": "Σύνδεση μέσω ${SERVICE}",
"signInWithV2InfoText": "ένας λογαριασμός που λειτουργεί σε όλες τις πλατφορμες",
- "signInWithV2Text": "Συνδεθείτε με ένα λογαριασμό BombSquad",
+ "signInWithV2Text": "Συνδεθείτε με έναν λογαριασμό ${APP_NAME}",
"signOutText": "Αποσύνδεση",
"signingInText": "Σύνδεση...",
"signingOutText": "Αποσύνδεση...",
@@ -39,6 +43,7 @@
"titleText": "Λογαριασμός",
"unlinkAccountsInstructionsText": "Επιλέξτε έναν λογαριασμό για αποδέσμευση",
"unlinkAccountsText": "Αποδέσμευση Λογαριασμών",
+ "unlinkLegacyV1AccountsText": "Αποδέσμευση Παλιών (V1) Λογαριασμών",
"v2LinkInstructionsText": "Χρησημοποιήστε αυτόν τον σύνδεσμο για να δημιουργήσετε έναν λογαριασμό ή για να συνδεθείτε.",
"viaAccount": "(μέσω λογαριασμού ${NAME})",
"youAreSignedInAsText": "Είστε συνδεδεμένοι ως:"
@@ -332,9 +337,14 @@
"getMoreGamesText": "Περισσότερα Παιχνίδια...",
"titleText": "Προσθήκη Παιχνιδιού"
},
+ "addToFavoritesText": "Προσθήκη στα αγαπημένα",
+ "addedToFavoritesText": "Προστέθηκε το '${NAME}' στα αγαπημένα.",
+ "allText": "Όλα",
"allowText": "Να Επιτρέπεται",
"alreadySignedInText": "Ο λογαριασμός σας είναι συνδεδεμένος από άλλη συσκευή.\nΠαρακαλώ, άλλαξε το λογαριασμό σας ή απενεργοποίησε \nτο παιχνίδι από τις άλλες συσκευες σας και ξαναπροσπάθηστε.",
"apiVersionErrorText": "Can't load module ${NAME}; it targets api-version ${VERSION_USED}; we require ${VERSION_REQUIRED}.",
+ "applyText": "Εφαρμογή",
+ "areYouSureText": "Είστε σίγουροι;",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(Το \"Αυτόματο\" ενεργοποιεί αυτό μόνο όταν έχουν συνδεθεί ακουστικά)",
"headRelativeVRAudioText": "Ρυθμίσεις σχετικές με VR ακουστικά",
@@ -356,14 +366,24 @@
"boostText": "Ώθηση",
"bsRemoteConfigureInAppText": "Το ${REMOTE_APP_NAME} είναι οριστικοποιημένο στην εφαρμογή από μόνο του.",
"buttonText": "κουμπί",
- "canWeDebugText": "Θα θέλατε το BombSquad να στέλνει αυτόματη αναφορά σφαλμάτων,\nκατάρρευσης, και πληροφορίες βασικής χρήσης στο δημιουργό του;\n\nΤα δεδομένα δε περιέχουν προσωπικές σας πληροφορίες και\nβοηθούν το παιχνίδι να τρέχει ομαλά χωρίς σφάλματα.",
+ "canWeDebugText": "Θα θέλατε το ${APP_NAME} να στέλνει αυτόματη αναφορά σφαλμάτων,\nκατάρρευσης, και πληροφορίες βασικής χρήσης στο δημιουργό του;\n\nΤα δεδομένα δε περιέχουν προσωπικές σας πληροφορίες και\nβοηθούν το παιχνίδι να τρέχει ομαλά χωρίς σφάλματα.",
"cancelText": "Άκυρο",
"cantConfigureDeviceText": "Συγνώμη, η συσκευή ${DEVICE} είναι μη οριστικοποιήσιμη.",
"challengeEndedText": "Αυτή η πρόκληση έχει τελειώσει.",
"chatMuteText": "Σίγαση Συζήτησης",
"chatMutedText": "Συζήτηση σε Σίγαση",
"chatUnMuteText": "Απενεργοποίηση Σίγασης",
+ "chests": {
+ "prizeOddsText": "Πιθανότητες βραβείων",
+ "reduceWaitText": "Μείωστε την παραμονή",
+ "slotDescriptionText": "Αυτή η θέση μπορεί να κρατήσει ένα σεντούκι.\n\nΝικήστε σεντούκια παίζοντας επίπεδα ιστορίας,\nσυμμετέχοντας σε τουρνουά, και ολοκληρώνοντας\nεπιτεύγματα.",
+ "slotText": "Θέση σεντουκιού ${NUM}",
+ "slotsFullWarningText": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Όλες οι θέσεις σεντουκιών σας είναι γεμάτες.\nΟποιαδήποτε σεντούκια κερδίσετε σε αυτό το παιχνίδι θα χαθούν.",
+ "unlocksInText": "Ξεκλειδώνεται Σε"
+ },
"choosingPlayerText": "<επιλογή παίκτη>",
+ "claimText": "Διεκδήκηση",
+ "codesExplainText": "Οι κωδικοί παρέχονται από τον δημιουργό για τη\nδιάγνωση και την επιδιόρθωση προβλημάτων λογαριασμού.",
"completeThisLevelToProceedText": "Πρέπει να ολοκληρώσετε αυτό\nτο επίπεδο για να προχωρήσετε!",
"completionBonusText": "Μπόνους Ολοκλήρωσης",
"configControllersWindow": {
@@ -444,6 +464,7 @@
"swipeText": "swipe",
"titleText": "Οριστικοποίηση Οθόνης Αφής"
},
+ "configureDeviceInSystemSettingsText": "Η συσκευή ${DEVICE} μπορεί να προσαρμοστεί απο τις ρυθμίσεις της συσκευής σας.",
"configureItNowText": "Οριστικοποίηση τώρα;",
"configureText": "Οριστικοποίηση",
"connectMobileDevicesWindow": {
@@ -547,6 +568,7 @@
"demoText": "Επίδειξη",
"denyText": "Απαγόρευση",
"deprecatedText": "Καταργήθηκε",
+ "descriptionText": "Περιγραφή",
"desktopResText": "Ανάλυση Σταθερού Η/Υ",
"deviceAccountUpgradeText": "Προσοχή:\nΧρησιμοποιειτέ ένα λογαριασμό συσκευής(${NAME}).\nΟι λογαριασμοί συσκευών θα αφαιρεθούν σε μέλλουσα ενημέρωση.\nΑναβαθμίστε σε ένα λογαριασμό V2 αν θέλετε να διατηρήσετε την πρόοδο σας.",
"difficultyEasyText": "Εύκολο",
@@ -557,6 +579,10 @@
"disableRemoteAppConnectionsText": "Απενεργοποίηση Συνδέσεων Ασύρματης Εφαρμογής",
"disableXInputDescriptionText": "Επιτρέπει περισσότερα από 4 χειριστήρια αλλά μπορεί να μη λειτουργήσει.",
"disableXInputText": "Απενεργοποίηση XIinput",
+ "disabledText": "Απενεργοποιημένο",
+ "discardText": "Απόρριψη",
+ "discordFriendsText": "Θέλετε να βρείτε νέους φίλους για να παίξετε;\nΜπείτε στο Discord μας και βρείτε νέους φίλους!",
+ "discordJoinText": "Μπείτε στο Discord",
"doneText": "Έγινε",
"drawText": "Ισοπαλία",
"duplicateText": "Διπλοτυπία",
@@ -589,6 +615,7 @@
"localProfileText": "(τοπικό προφίλ)",
"nameDescriptionText": "Όνομα Παίκτη",
"nameText": "Όνομα",
+ "profileAlreadyExistsText": "Υπάρχει ήδη προφίλ με αυτό το όνομα.",
"randomText": "τυχαίο",
"titleEditText": "Επεξεργασία Προφίλ",
"titleNewText": "Νέο Προφίλ",
@@ -624,6 +651,7 @@
"useMusicFolderText": "Φάκελος Αρχείων Μουσικής"
},
"editText": "Επεξεργασία",
+ "enabledText": "Ενεργοποιημένο",
"endText": "Τέλος",
"enjoyText": "Απολαύστε!",
"epicDescriptionFilterText": "${DESCRIPTION} Σε επικά αργή κίνηση.",
@@ -635,6 +663,8 @@
"errorText": "Σφάλμα",
"errorUnknownText": "άγνωστο σφάλμα",
"exitGameText": "Έξοδος από το ${APP_NAME};",
+ "expiredAgoText": "Έληξε πριν από ${T}",
+ "expiresInText": "Λήγει σε ${T}",
"exportSuccessText": "Έγινε εξαγωγή του στοιχείου '${NAME}'.",
"externalStorageText": "Εξωτερικός Αποθηκευτικός Χώρος",
"failText": "Αποτυχία",
@@ -669,6 +699,8 @@
"duplicateText": "Διπλοτυπία\nΛίστας",
"editText": "Επεξεργασία\nΛίστας",
"newText": "Νέα\nΛίστα",
+ "pointsToWinText": "Πόντοι Έως Νίκη",
+ "seriesLengthText": "Μήκος Σειράς",
"showTutorialText": "Προβολή Εκπαιδευτικού Βίντεο",
"shuffleGameOrderText": "Ανακάτεμα Ουράς Παιχνιδιών",
"titleText": "Προσαρμογή Λίστων Παιχνιδιών ${TYPE}"
@@ -694,6 +726,7 @@
"copyCodeConfirmText": "Ο κωδικός αντιγράφηκε στο πρόχειρο.",
"copyCodeText": "Αντιγράψτε τον κωδικό",
"dedicatedServerInfoText": "Για καλύτερα αποτελέσματα, οργανώστε έναν σταθερό διακομιστή. Βλέπε bombsquadgame.com/server.",
+ "descriptionShortText": "Χρησιμοποιήστε το παράθυρο συγκέντρωσης για να φτιάξετε ένα πάρτυ.",
"disconnectClientsText": "Συνεχίζοντας θα αποσυνδεθούν ${COUNT} παίκης/ες\nαπο τη συγκέντρωσή σας. Είστε σίγουροι?",
"earnTicketsForRecommendingAmountText": "Οι φίλοι σας θα λάβουν ${COUNT} εισητήρια αν δοκιμάσουν το παιχνίδι\n(και εσείς θα λάβετε ${YOU_COUNT} για τον καθένα)",
"earnTicketsForRecommendingText": "Μοιραστείτε το παιχνίδι\nγια δωρεάν εισητήρια...",
@@ -706,10 +739,10 @@
"friendHasSentPromoCodeText": "${COUNT} εισητήρια ${APP_NAME} από ${NAME}",
"friendPromoCodeAwardText": "Θα λάμβάνετε από ${COUNT} εισητήρια για κάθε χρήση.",
"friendPromoCodeExpireText": "Αυτός ο κωδικός λήγει σε ${EXPIRE_HOURS} ώρες και λειτουργεί μόνο για νέα μέλη.",
- "friendPromoCodeInstructionsText": "Για να το αξιοποιήσετε, ανοίξτε το ${APP_NAME} και ακολουθήστε το \"Ρυθμίσεις->Σύνθετες->Εισαγωγή Κωδικού\".\nΒλέπε bombsquadgame.com για συνδέσμους της εφαρμογής σε όλες τις υποστηριζόμενες πλατφόρμες.",
+ "friendPromoCodeInstructionsText": "Για να το αξιοποιήσετε, ανοίξτε το ${APP_NAME} και ακολουθήστε το \"Ρυθμίσεις->Σύνθετες->Αποστολή Πληροφοριών\".\nΒλέπε bombsquadgame.com για συνδέσμους της εφαρμογής σε όλες τις υποστηριζόμενες πλατφόρμες.",
"friendPromoCodeRedeemLongText": "Μπορεί να εξαργυρωθεί για ${COUNT} δωρεάν εισητήρια από έως ${MAX_USES} άτομα.",
"friendPromoCodeRedeemShortText": "Μπορεί να εξαργυρωθεί για ${COUNT} εισητήρια στο παιχνίδι.",
- "friendPromoCodeWhereToEnterText": "(στο \"Ρυθμίσεις->Σύνθετες->Εισαγωγή Κωδικού\")",
+ "friendPromoCodeWhereToEnterText": "(στο \"Ρυθμίσεις->Σύνθετες->Αποστολή Πληροφοριών\")",
"getFriendInviteCodeText": "Αποκτήστε Κωδικό Πρόσκλησης Φίλων",
"googlePlayDescriptionText": "Προσκάλεσε Google Play παίκτες στη συγκέντρωσή σας:",
"googlePlayInviteText": "Πρόσκληση",
@@ -741,6 +774,7 @@
"manualYourLocalAddressText": "Η τοπική σας διεύθυνση:",
"nearbyText": "Κοντινά",
"noConnectionText": "<εκτός σύνδεσης>",
+ "noPartiesAddedText": "Δεν Προστέθηκαν Πάρτι",
"otherVersionsText": "(άλλες εκδόσεις)",
"partyCodeText": "Κωδικός Party",
"partyInviteAcceptText": "Αποδοχή",
@@ -804,6 +838,12 @@
"youHaveShortText": "έχετε ${COUNT}",
"youHaveText": "έχετε ${COUNT} εισιτήρια"
},
+ "goldPass": {
+ "desc1InfTokensText": "Άπειρα κέρματα.",
+ "desc2NoAdsText": "Καθόλου διαφημίσεις.",
+ "desc3ForeverText": "Για πάντα.",
+ "goldPassText": "Χρυσό Πάσο"
+ },
"googleMultiplayerDiscontinuedText": "Συγνώμη, φαίνεται πως η υπηρεσία πολλών παικτών της Google δεν είναι πλέον διαθέσιμη.\nΠροσπαθώ να βρω αντικατάσταση όσο πιο γρήγορα γίνεται.\nΜέχρι τότε, παρακαλώ δοκιμάστε άλλο τρόπο σύνδεσης.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Οι αγορές Google Play δεν είναι διαθέσιμες.\nΜπορεί να χρειάζεται να ενημερώσετε την εφαρμογή σας.",
"googlePlayServicesNotAvailableText": "Οι υπηρεσίες Google Play δεν είναι διαθέσιμες.\nΚάποιες λειτουργείες μπορεί να είναι απενεργοποιμένες.",
@@ -812,10 +852,12 @@
"alwaysText": "Πάντα",
"fullScreenCmdText": "Πλήρης Οθόνη (Cmd-F)",
"fullScreenCtrlText": "Πλήρης Οθόνη (Ctrl-F)",
+ "fullScreenText": "Πλήρης Οθόνη",
"gammaText": "Gamma",
"highText": "Υψηλό",
"higherText": "Υψηλότερο",
"lowText": "Χαμηλό",
+ "maxFPSText": "Όριο FPS",
"mediumText": "Μέτριο",
"neverText": "Ποτέ",
"resolutionText": "Ανάλυση",
@@ -880,6 +922,7 @@
"importText": "Εισαγωγή",
"importingText": "Εισαγωγή...",
"inGameClippedNameText": "θα εμφανίζεται ως\n\"${NAME}\"",
+ "inboxText": "Εισερχόμενα",
"installDiskSpaceErrorText": "ΣΦΑΛΜΑ: Αδύνατη η ολοκλήρωση της εγκατάστασης.\nΕνδέχεται να ξεμείνατε από αποθηκευτικό χώρο στη\nσυσκεύη. Αδειάστε λίγο χώρο και ξαναπροσπαθήστε.",
"internal": {
"arrowsToExitListText": "πατήστε ${LEFT} ή ${RIGHT} για έξοδο από τη λίστα",
@@ -934,12 +977,14 @@
"timeOutText": "(ο χρόνος λήγει σε ${TIME} δευτερόλεπτα)",
"touchScreenJoinWarningText": "Έχετε ενταχθεί με την οθόνη αφής.\nΑν συνέβη καταλάθος πατήστε με αυτή στο 'Μενού->Έξοδος Παιχνιδιού'.",
"touchScreenText": "Οθόνη Αφής",
+ "unableToCompleteTryAgainText": "Δεν μπορεί να ολοκληρωθεί αυτό τώρα.\nΠαρακαλώ προσαπθήστε ξανά.",
"unableToResolveHostText": "Σφάλμα: αδύνατη η επίλυση του οικοδεσπότη.",
"unavailableNoConnectionText": "Αυτό είναι προς το παρόν μη διαθέσιμο (χωρίς πρόσβαση στο διαδίκτυο;)",
"vrOrientationResetCardboardText": "Χρησιμοποιήστε το για την επαναφορά το προσανατολισμού VR.\nΓια να παίξετε το παιχνίδι θα χρειαστείτε ένα εξωτερικό χειριστήριο.",
"vrOrientationResetText": "Έγινε επαναφορά του VR προσανατολισμού.",
"willTimeOutText": "(θα σταματήσει αν παραμείνει αδρανής)"
},
+ "inventoryText": "Αποθήκη",
"jumpBoldText": "ΑΛΜΑ",
"jumpText": "Άλμα",
"keepText": "Κράτησέ τες",
@@ -986,8 +1031,11 @@
"seasonEndsMinutesText": "Η σεζόν λήγει σε ${NUMBER} λεπτά.",
"seasonText": "Σεζόν ${NUMBER}",
"tournamentLeagueText": "Πρέπει να φτάσετε στην κατηγορία ${NAME} για να συμμετάσχετε σε αυτό το τουρνουά.",
- "trophyCountsResetText": "Ο αριθμός των βραβείων θα υποστεί επαναφορά στην επόμενη σεζόν."
+ "trophyCountsResetText": "Ο αριθμός των βραβείων θα υποστεί επαναφορά στην επόμενη σεζόν.",
+ "upToDateBonusDescriptionText": "Οι παίκτες που τρέχουν μία πρόσφατη έκδοση του παιχνιδιού\nλαμβάνουν ένα μπόνους ${PERCENT}% εδώ.",
+ "upToDateBonusText": "Μπόνους εκσυγχρονισμού"
},
+ "learnMoreText": "Μάθετε Περισσότερα",
"levelBestScoresText": "Οι υψηλότερες βαθμολογίες στο επίπεδο ${LEVEL}",
"levelBestTimesText": "Οι καλύτεροι χρόνοι στο επίπεδο ${LEVEL}",
"levelIsLockedText": "Το επίπεδο ${LEVEL} είναι κλειδωμένο.",
@@ -1027,9 +1075,12 @@
"maxConnectionsText": "Μέγιστος Αριθμός Συνδέσεων",
"maxPartySizeText": "Μέγιστος Αριθμός Συγκέντρωσης",
"maxPlayersText": "Μέγιστος Αριθμός Παικτών",
+ "merchText": "Εμπόρευμα!",
"modeArcadeText": "Λειτουργία \"Arcade\"",
"modeClassicText": "Κλασσική λειτουργία",
"modeDemoText": "Δοκιμαστική λειτουργία",
+ "moreSoonText": "Περισσότερα έρχονται σύντομα...",
+ "mostDestroyedPlayerText": "Πιο Κατεστραμμένος",
"mostValuablePlayerText": "Πολυτιμότερος Παίκτης",
"mostViolatedPlayerText": "Πιο Ξυλοδαρμένος Παίκτης",
"mostViolentPlayerText": "Πιο Βίαιος Παίκτης",
@@ -1056,7 +1107,9 @@
"noContinuesText": "(χωρίς \"Συνέχιση\")",
"noExternalStorageErrorText": "Δεν βρέθηκε εξωτερικός αποθηκευτικός χώρος σε αυτή τη συσκευή",
"noGameCircleText": "Σφάλμα: δεν έχετε συνδεθεί στο GameCircle",
+ "noPluginsInstalledText": "Καθόλου Πρόσθετα Εγκατεστημένα",
"noScoresYetText": "Δεν υπάρχουν βαθμολογίες ακόμη.",
+ "noServersFoundText": "Δεν βρέθηκαν διακομηστές.",
"noThanksText": "Όχι Ευχαριστώ",
"noTournamentsInTestBuildText": "ΠΡΟΣΟΧΗ: Τα σκορ του τουρνουά από αυτή τη δοκιμαστική έκδοση θα αγνοηθούν.",
"noValidMapsErrorText": "Δεν βρέθηκαν έγκυροι χάρτες γι' αυτόν τον τύπο παιχνιδιού.",
@@ -1125,7 +1178,11 @@
"pleaseWaitText": "Παρακαλώ περιμένετε...",
"pluginClassLoadErrorText": "Σφάλμα φορτώνοντας πρόσθετο '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Σφάλμα επερξεγάζοντας πρόσθετο '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "συνδέω Ρυθμίσεις",
+ "pluginsAutoEnableNewText": "Αυτόματη ενεργοποίηση νέων προσθηκών",
"pluginsDetectedText": "Νέα πρόσθετο/α εντοπίστηκαν. Επανεκκινήστε την εφαρμογή για να τα ενεργοποιήσετε, ή διαμορφώστε τα στις ρυθμίσεις.",
+ "pluginsDisableAllText": "Απενεργοποίηση όλων των προσθηκών",
+ "pluginsEnableAllText": "Ενεργοποίηση όλων των προσθέτων",
"pluginsRemovedText": "${NUM} πρόσθετο/α δεν εντοπίζονται πια.",
"pluginsText": "Πρόσθετα",
"practiceText": "Πρακτική",
@@ -1218,7 +1275,9 @@
"revertText": "Επαναφορά",
"runText": "Τρέξιμο",
"saveText": "Αποθήκευση",
- "scanScriptsErrorText": "Σφάλματα σάρωσης σάρωσης; δείτε το αρχείο καταγραφής για λεπτομέρειες.",
+ "scanScriptsErrorText": "Σφάλμα(α) κατά τη σάρωση σεναρίων. Δείτε το αρχείο καταγραφής για λεπτομέρειες.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} και ${NUM} άλλη(ες) λειτουργείες χρειάζεται(ονται) για το api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "Το ${PATH} χρειάζεται να αναβαθμιστεί για το api ${API}",
"scoreChallengesText": "Προκλήσεις Βαθμολογίας",
"scoreListUnavailableText": "Λίστα βαθμολογίας μη διαθέσιμη.",
"scoreText": "Βαθμολογία",
@@ -1229,6 +1288,7 @@
},
"scoreWasText": "(ήταν ${COUNT})",
"selectText": "Επιλογή",
+ "sendInfoDescriptionText": "Στέλνει πληροφορίες λογαριασμού και κατάστασης εφαρμογής στον δημιουργό.\nΠαρακαλούμε να συμπεριλάβετε το όνομά σας ή την αιτία αποστολής.",
"seriesWinLine1PlayerText": "ΚΕΡΔΙΣΕ ΤΗ",
"seriesWinLine1TeamText": "ΚΕΡΔΙΣΕ ΤΗ",
"seriesWinLine1Text": "ΚΕΡΔΙΣΕ ΤΗ",
@@ -1244,8 +1304,9 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(ένα απλό, φιλικό με τα χειριστήρια πληκτρολόγιο οθόνης για επεξεργασία κειμένου)",
- "alwaysUseInternalKeyboardText": "Πάντα να Χρησιμοποιείται το Εσωτερικό Πληκτρολόγιο",
+ "alwaysUseInternalKeyboardText": "Πάντα να χρησιμοποιείται το εσωτερικό πληκτρολόγιο",
"benchmarksText": "Έλεγχοι Απόδοσης & Κόπωσης",
+ "devToolsText": "Εργαλεία Δημιουργού",
"disableCameraGyroscopeMotionText": "Απενεργοποιήστε γυροσκοπική κίνηση της κάμερας",
"disableCameraShakeText": "Απενεργοποιήστε το κούνημα της κάμερας",
"disableThisNotice": "(μπορείτε να απενεργοποιήσετε αυτή τήν ειδοποίηση στις σύνθετες ρυθμίσεις)",
@@ -1254,14 +1315,20 @@
"enterPromoCodeText": "Εισαγωγή Κωδικού",
"forTestingText": "Σημείωση: αυτές οι τιμές είναι μονάχα για έλεγχο και θα χαθούν όταν πραγματοποιηθεί έξοδος από την εφαρμογή.",
"helpTranslateText": "Οι μη Αγγλικές μεταφράσεις του ${APP_NAME} είναι υποστιριζόμενες\nαπό την κοινότητα. Αν θα θέλατε να συνεισφέρετε ή να διορθώσετε μια\nμετάφραση ακολουθήστε τον παρακάτω σύνδεσμο. Ευχαριστώ προκαταβολικά!",
- "kickIdlePlayersText": "Αποβολή Άπραγων Παικτών",
+ "kickIdlePlayersText": "Αποβολή άπραγων παικτών",
"kidFriendlyModeText": "Λειτουργία για Παιδιά (μειωμένη βία, κτλ)",
"languageText": "Γλώσσα",
"moddingGuideText": "Οδηγός Τροποποίησης",
+ "moddingToolsText": "Εργαλεία Τροποποίησης",
"mustRestartText": "Για να λειτουργήσει, πρέπει να επανεκκινήσετε το παιχνίδι.",
"netTestingText": "Έλεγχος Δικτύου",
"resetText": "Επαναφορά",
+ "sendInfoText": "Αποστολή πληροφοριών",
"showBombTrajectoriesText": "Εμφάνιση Πορείας Βόμβας",
+ "showDemosWhenIdleText": "Προβολή ντέμο σε αδράνεια",
+ "showDeprecatedLoginTypesText": "Εμφάνιση καταργημένων τύπων εισόδου",
+ "showDevConsoleButtonText": "Εμφάνιση κουμπιού κονσόλας προγραμματιστών",
+ "showInGamePingText": "Εμφάνιση καθυστέρησης εντός-παιχνιδιού",
"showPlayerNamesText": "Προβολή Ονομάτων Παικτών",
"showUserModsText": "Προβολή Φακέλου Πακέτων Τροποποίησης",
"titleText": "Σύνθετες",
@@ -1269,8 +1336,8 @@
"translationFetchErrorText": "κατάσταση μεταφράσεων μη διαθέσιμη",
"translationFetchingStatusText": "έλεγχος κατάστασης μεταφράσεων...",
"translationInformMe": "Πληροφόρησέ με όταν η γλώσσα μου χρειάζεται ενημερώσεις",
- "translationNoUpdateNeededText": "η συγγεκριμμένη γλώσσα είναι ενημερωμένη, γιούπι!",
- "translationUpdateNeededText": "** η συγκεκριμένη γλώσσα χρειάζεται ενημερώσεις!! **",
+ "translationNoUpdateNeededText": "Η συγκεκριμένη γλώσσα είναι ενημερωμένη, γιούπι!",
+ "translationUpdateNeededText": "** Η συγκεκριμένη γλώσσα χρειάζεται ενημερώσεις!! **",
"vrTestingText": "Έλεγχος VR"
},
"shareText": "Κοινοποίηση",
@@ -1280,6 +1347,9 @@
"signInWithGameCenterText": "Για να χρησιμοποιήσετε έναν λογαριασμό Game Center,\nσυνδεθείτε σε αυτόν με την εφαρμογή Game Center.",
"singleGamePlaylistNameText": "Μόνο ${GAME}",
"singlePlayerCountText": "1 παίκτης",
+ "sizeLargeText": "Μεγάλο",
+ "sizeMediumText": "Μέτριο",
+ "sizeSmallText": "Μικρό",
"soloNameFilterText": "Σόλο ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Επιλογή Χαρακτήρα",
@@ -1352,6 +1422,8 @@
"storeText": "Κατάστημα",
"submitText": "Υποβολή",
"submittingPromoCodeText": "Υποβολή Κωδικού...",
+ "successText": "Επιτυχία!",
+ "supportEmailText": "Εάν αντιμετωπίζετε προβλήματα με την εφαρμογή, παρακαλώ να στείλετε e-mail \nστο ${EMAIL}",
"teamNamesColorText": "Ονόματα/Χρώμματα Ομάδων...",
"telnetAccessGrantedText": "Πρόσβαση telnet ενεργοποιημένη.",
"telnetAccessText": "Πρόσβαση telnet εντοπίστηκε. Να επιτρέπεται;",
@@ -1532,6 +1604,7 @@
"Italian": "Ιταλικά",
"Japanese": "Ιαπωνέζικα",
"Korean": "Κορεάτικα",
+ "Malay": "Μαλεσιακά",
"Persian": "Πέρσικα",
"Polish": "Πολωνικά",
"Portuguese": "Πορτογαλικά",
@@ -1799,11 +1872,13 @@
"toSkipPressAnythingText": "(πατήστε ή πιέστε οτιδήποτε για να παραλείψετε το εκπαιδευτικό βίντεο)"
},
"twoKillText": "ΔΙΠΛΟΣ ΦΟΝΟΣ!",
+ "uiScaleText": "Κλίμακα UI",
"unavailableText": "μη διαθέσιμο",
"unconfiguredControllerDetectedText": "Εντοπίστηκε μη διαμορφωμένο χειριστήριο:",
"unlockThisInTheStoreText": "Αυτό πρέπει να ξεκλειδωθεί στο κατάστημα.",
"unlockThisProfilesText": "Για να δημιουργήσετε περισσότερα από ${NUM} προφίλ, χρειάζεστε:",
"unlockThisText": "Για να το ξεκλειδώσετε, χρειάζεστε:",
+ "unsupportedControllerText": "Συγνώμη, το χειρηστήριο \"${NAME}\" δεν υποστηρίζεται.",
"unsupportedHardwareText": "Συγνώμη, αυτό το υλισμικό δεν υποστηρίζεται από αυτή την έκδοση του παιχνιδιού.",
"upFirstText": "Για αρχή:",
"upNextText": "Στη συνέχεια, παιχνίδι ${COUNT}:",
@@ -1811,10 +1886,13 @@
"upgradeText": "Αναβάθμιση",
"upgradeToPlayText": "Ξεκλειδώστε το \"${PRO}\" στο κατάστημα του παιχνιδιού για να μπορείτε να το παίξετε.",
"useDefaultText": "Χρήση Προκαθορισμένων",
+ "userSystemScriptsCreateText": "Δημιουργία Κωδικών Συστήματος Χρήστη",
+ "userSystemScriptsDeleteText": "Διαγραφή Κωδικών Συστήματος Χρήστη",
"usesExternalControllerText": "Αυτό το παιχνίδι χρησιμοποιεί ένα εξωτερικό χειριστήριο για είσοδο.",
"usingItunesText": "Χρήση εφαρμογής μουσικής για ηχητική υπόκρουση...",
"v2AccountLinkingInfoText": "Για να δεσμεύσετε λογαριασμούς V2, χρησιμοιποιήστε το κουμπί 'Διαχείριση Λογαριασμού'.",
"validatingTestBuildText": "Επικύρωση Δοκιμαστικής Έκδοσης...",
+ "viaText": "μέσω",
"victoryText": "Νίκη!",
"voteDelayText": "Δεν μπορείτε να ξαναξεκινήσετε ψηφοφορία για ${NUMBER} δευτ.",
"voteInProgressText": "Μια ψηφοφορία βρίσκεται ήδη σε εξέλιξη.",
diff --git a/dist/ba_data/data/languages/hindi.json b/dist/ba_data/data/languages/hindi.json
index 1fdbcf80..3bfa7d40 100644
--- a/dist/ba_data/data/languages/hindi.json
+++ b/dist/ba_data/data/languages/hindi.json
@@ -7,7 +7,9 @@
"campaignProgressText": "अभियान प्रगति [कठिन]: ${PROGRESS}",
"changeOncePerSeason": "आप केवल प्रति सीजन इसे एक बार बदल सकते हैं।",
"changeOncePerSeasonError": "आपको इसे फिर से बदलने के लिए अगले सीज़न तक इंतजार करना होगा (${NUM} दिन)",
+ "createAnAccountText": "खाता बनाएं",
"customName": "अनुकूल नाम",
+ "deleteAccountText": "खाता हटा दो",
"googlePlayGamesAccountSwitchText": "अगर आप किसी भिन्न Google खाते का उपयोग करना चाहते हैं,\n स्विच करने के लिए Google Play गेम्स ऐप का उपयोग करें।",
"linkAccountsEnterCodeText": "कोड डालीए",
"linkAccountsGenerateCodeText": "काेड उत्पन्न करे",
@@ -25,14 +27,16 @@
"setAccountNameDesc": "अपने खाते के लिए प्रदर्शित करने के लिए नाम चुनें। \nआप अपने लिंक किए गए किसी एक से नाम का उपयोग कर सकते हैं \nखातों या अनन्य कस्टम नाम बनाएं",
"signInInfoText": "सभी यंत्रों पर अपनी प्रगति को संग्रहीत करने के लिए, \nटिकट कमाने, टूर्नामेंट में प्रतिस्पर्धा करने के लिए साइन इन करें |",
"signInText": "साइन इन",
+ "signInWithAnEmailAddressText": "ईमेल पते से साइन इन करें",
"signInWithDeviceInfoText": "(एक स्वचालित खता जिसका सिर्फ इस यंत्र से प्रयोग किया जा सकता है)",
"signInWithDeviceText": "इस डिवाइस के साथ साइन इन करें",
"signInWithGameCircleText": "Game circle के साथ प्रवेश करे",
"signInWithGooglePlayText": "गूगल प्ले से साईन ईन करे",
"signInWithTestAccountInfoText": "(पुराना खाते का प्ररूप; आगे के लिए यंत्र खाते का प्रयोग करें)",
"signInWithTestAccountText": "परीक्षण के खाते से साइन इन करें",
+ "signInWithText": "${SERVICE} से साइन इन करे।",
"signInWithV2InfoText": "(एक खाता जो सभी प्लेटफार्मों पर काम करता है)",
- "signInWithV2Text": "BombSquad खाते से साइन इन करें",
+ "signInWithV2Text": "${APP_NAME} खाते से साइन इन करें",
"signOutText": "साइन आउट",
"signingInText": "साइन इन हो रहा है...",
"signingOutText": "साइन आउट हो रहा है...",
@@ -43,9 +47,10 @@
"titleText": "खाता",
"unlinkAccountsInstructionsText": "अनलिंक करने के लिए एक खाता चुनें",
"unlinkAccountsText": "खाते अनलिंक करें",
+ "unlinkLegacyV1AccountsText": "लैगेसी (V1) खाते को एनलिंक करे",
"v2LinkInstructionsText": "खाता बनाने या साइन इन करने के लिए इस लिंक का उपयोग करें।",
"viaAccount": "(खाता ${NAME} के माध्यम से)",
- "youAreSignedInAsText": "आप इस खाते से साइनड इन हो: "
+ "youAreSignedInAsText": "आप इस खाते से साइनड इन हो:"
},
"achievementChallengesText": "उपलब्धि की चुनौतियां",
"achievementText": "उपलब्धि",
@@ -336,9 +341,14 @@
"getMoreGamesText": "और गेम्स कि जानकारी पायें",
"titleText": "गेम जोड़ें"
},
+ "addToFavoritesText": "पसंदीदा में जोड़े।",
+ "addedToFavoritesText": "'${NAME}' को पसंदीदा में जोड़ा गया हैं।",
+ "allText": "सभी",
"allowText": "अनुमति दें",
"alreadySignedInText": "आपका खाता किसी अन्य डिवाइस से साइन किया गया है; \nकृपया खातों को स्विच करें या अपने गेम को अन्य डिवाइस \nपर बंद करें और फिर से प्रयास करें",
"apiVersionErrorText": "${NAME} मौड्यूल लोड नहीं हो पाया ; यह एपीआई - संस्करण ${VERSION_USED} पे काम करने का प्रयास कर रहा है ; हमें संस्करण ${VERSION_REQUIRED} चाहिए |",
+ "applyText": "अवदेना करे",
+ "areYouSureText": "क्या आप निश्चित हो",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"स्वयं\" इसे तभी शुरू करेगा जब हैडफ़ोन लगें हों)",
"headRelativeVRAudioText": "सर के सापेक्ष वीआर ध्वनि",
@@ -360,14 +370,24 @@
"boostText": "प्रोत्साहन",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} को एप्लीकेशन के अन्दर से ही कॉन्फ़िगर करें |",
"buttonText": "बटन",
- "canWeDebugText": "क्या आप बोम्ब-स्क्वाड को अपने आप खराबियों व \nआधारभूत उपयोग कि जानकारी भेजना चाहते हैं ? \n\nइस जानकारी में कुछ भी व्यक्तिगत नहीं होता है व \nयह गेम को सुचारू रूप से बिना खराबियों के चलने में सहायता करता है |",
+ "canWeDebugText": "क्या आप ${APP_NAME} को अपने आप खराबियों व \nआधारभूत उपयोग कि जानकारी भेजना चाहते हैं ? \n\nइस जानकारी में कुछ भी व्यक्तिगत नहीं होता है व \nयह गेम को सुचारू रूप से बिना खराबियों के चलने में सहायता करता है |",
"cancelText": "रद्द करें",
"cantConfigureDeviceText": "माफ़ करें ${DEVICE} कांफिग्युरेब्ल नहीं है |",
"challengeEndedText": "यह चुनौती समाप्त हो चूकि हैं",
"chatMuteText": "बातचीत मौन करें",
"chatMutedText": "बातचीत मौन हो गई है",
"chatUnMuteText": "बातचीत दोबारा शुरू करें",
+ "chests": {
+ "prizeOddsText": "पुरस्कार की संभावना",
+ "reduceWaitText": "इंतज़ार कम करें",
+ "slotDescriptionText": "यह स्लॉट एक संदूक रख सकता है।\n\nअभियान स्तर खेलकर चेस्ट अर्जित करें,\nटूर्नामेंट में जगह बनाना, और पूरा करना\nउपलब्धियाँ.",
+ "slotText": "चेस्ट स्लॉट ${NUM}",
+ "slotsFullWarningText": "चेतावनी: आपके सभी चेस्ट स्लॉट भरे हुए हैं।\nइस गेम में आप जो भी चेस्ट अर्जित करेंगे वह खो जाएगा।",
+ "unlocksInText": "में अनलॉक करता है"
+ },
"choosingPlayerText": "<खिलाड़ी चुना जा रहा है>",
+ "claimText": "दावा",
+ "codesExplainText": "खाता समस्याओं के निदान और सुधार के लिए डेवलपर \nद्वारा कोड प्रदान किए जाते हैं ।",
"completeThisLevelToProceedText": "आपको यह पड़ाव पार करना पड़ेगा आगे बढ़ने के लिए !",
"completionBonusText": "पूर्णता पुरस्कार",
"configControllersWindow": {
@@ -448,6 +468,7 @@
"swipeText": "स्वाइप",
"titleText": "टच स्क्रीन को कॉन्फ़िगर करें"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} को सिस्टम सेटिंग्स एप में कंफीगर कर सकते हैं।",
"configureItNowText": "अभी कॉन्फ़िगर करें ?",
"configureText": "कॉन्फ़िगर",
"connectMobileDevicesWindow": {
@@ -459,7 +480,7 @@
"forIOSText": "आई-ओ-एस के लिए:",
"getItForText": "${REMOTE_APP_NAME} पायें आई-ओ-एस के लिए एप्पल एप्लीकेशन भंडार से \nव एंड्राइड के लिए गूगल प्ले भंडार या अमेज़न एप्लीकेशन भंडार से |",
"googlePlayText": "गूगल प्ले स्टोर",
- "titleText": "मोबाइल यंत्र का नियंत्रक के रूप में प्रयोग करते हुए: "
+ "titleText": "मोबाइल यंत्र का नियंत्रक के रूप में प्रयोग करते हुए:"
},
"continuePurchaseText": "${PRICE} के खर्चे पर जारी रखें ?",
"continueText": "जारी रखें",
@@ -550,6 +571,7 @@
"demoText": "डेमो",
"denyText": "अस्वीकृत करें",
"deprecatedText": "पदावनत",
+ "descriptionText": "डीसकरिपषण",
"desktopResText": "डेस्कटॉप रेज़ोल्यूशन",
"deviceAccountUpgradeText": "चेतावनी:\n आप डिवाइस खाते (${NAME}) से साइन इन हैं।\n डिवाइस खातों को भविष्य के अपडेट में हटा दिया जाएगा।\n यदि आप अपनी प्रगति को बनाए रखना चाहते हैं तो V2 खाते में अपग्रेड करें।",
"difficultyEasyText": "आसन",
@@ -560,6 +582,10 @@
"disableRemoteAppConnectionsText": "रिमोट के ऐप्प कनेक्शन्स को बंद करे",
"disableXInputDescriptionText": "4 नियंत्रकों से अधिक की अनुमति देता है लेकिन साथ ही साथ काम नहीं कर सकते",
"disableXInputText": "Xinput अक्षम करें",
+ "disabledText": "डिसेबल्ड",
+ "discardText": "खारिज करना",
+ "discordFriendsText": "क्या आप खेलने के लिए नए लोगों की तलाश करना चाहते हैं? \n हमारे डिस्कोर्ड में शामिल हों और नए दोस्त खोजें!",
+ "discordJoinText": "डिस्कोर्ड में शामिल हों",
"doneText": "हो गया",
"drawText": "बराबर",
"duplicateText": "प्रतिलिपि",
@@ -593,6 +619,7 @@
"localProfileText": "(स्थानिक पार्श्वचित्र)",
"nameDescriptionText": "खिलाड़ी का नाम",
"nameText": "नाम",
+ "profileAlreadyExistsText": "खाता इस नाम से पहेले ही बन चूका है",
"randomText": "यादृच्छिक",
"titleEditText": "पार्श्वचित्र को संपादित करें",
"titleNewText": "नया पार्श्वचित्र बनायें",
@@ -628,6 +655,7 @@
"useMusicFolderText": "गाने कि फाइल्स का फोल्डर"
},
"editText": "संपादित करें",
+ "enabledText": "इनेब्ल",
"endText": "समाप्त",
"enjoyText": "मज़ा लें !",
"epicDescriptionFilterText": "${DESCRIPTION} उत्कृष्ट धीमे गति में।",
@@ -639,6 +667,8 @@
"errorText": "त्रुटी",
"errorUnknownText": "अज्ञात त्रुटी",
"exitGameText": "${APP_NAME} से निकास करें ?",
+ "expiredAgoText": "${T} पहले समाप्त हो गया",
+ "expiresInText": "${T} में समाप्त होता है",
"exportSuccessText": "'${NAME}' निर्यात हुआ",
"externalStorageText": "बाहरी संचयन",
"failText": "असफल",
@@ -660,7 +690,7 @@
"fiveKillText": "पांच हत्या !!!",
"flawlessWaveText": "त्रुटिरहित लहर !",
"fourKillText": "चार हत्या !!!",
- "friendScoresUnavailableText": "दोस्तों के अंक उनुप्लाब्ध हैं ",
+ "friendScoresUnavailableText": "दोस्तों के अंक उनुप्लाब्ध हैं",
"gameCenterText": "गेम-सेण्टर",
"gameCircleText": "गेम-सर्किल",
"gameLeadersText": "गेम ${COUNT} के सरदार",
@@ -673,6 +703,8 @@
"duplicateText": "प्लेलिस्ट कि \nछवि बनायें",
"editText": "प्लेलिस्ट को \nसंपादित करें",
"newText": "नयी \nप्लेलिस्ट",
+ "pointsToWinText": "पौइनटस जीतने के लिए",
+ "seriesLengthText": "श्रृंखला की लंबाई",
"showTutorialText": "ट्युटोरियल दिखाएँ",
"shuffleGameOrderText": "गेम के क्रमांक को मिलाएं",
"titleText": "${TYPE} प्लेलिस्ट को अपने हिसाब से बदलें"
@@ -683,7 +715,7 @@
"gamesToText": "${WINCOUNT} जीते और ${LOSECOUNT} हारे",
"gatherWindow": {
"aboutDescriptionLocalMultiplayerExtraText": "ध्यान रखें: किसी भी यंत्र पे एक से ज्यादा खिलाड़ी हो सकते हैं \nअगर आपके पास पर्याप्त नियंत्रक हैं",
- "aboutDescriptionText": "पार्टी इकट्ठा करने के लिए इन टैब्स का प्रयोग करें | \n\nपार्टी में आप गेम व \nप्रतियोगिता अपने दोस्तों के साथ \nअलग यंत्रो पे भी खेल सकते हैं | \n\nऊपरी-दायें हाथ कोने में उपस्थित ${PARTY} बटन का प्रयोग करके \nआप अपनी पार्टी से बात कर सकते हैं | (नियंत्रक पे ${BUTTON} दबाएँ मेनू में) ",
+ "aboutDescriptionText": "पार्टी इकट्ठा करने के लिए इन टैब्स का प्रयोग करें | \n\nपार्टी में आप गेम व \nप्रतियोगिता अपने दोस्तों के साथ \nअलग यंत्रो पे भी खेल सकते हैं | \n\nऊपरी-दायें हाथ कोने में उपस्थित ${PARTY} बटन का प्रयोग करके \nआप अपनी पार्टी से बात कर सकते हैं | (नियंत्रक पे ${BUTTON} दबाएँ मेनू में)",
"aboutText": "इसके बारे में",
"addressFetchErrorText": "<पता पाने में त्रुटी>",
"appInviteInfoText": "दोस्तों को बोम्ब-स्क्वाड खेलने के लिए आमंत्रित करें\nऔर आपको ${COUNT} टिकेट मुफ्त मिलेंगे | हर\nदोस्त के आपको ${YOU_COUNT} टिकेट मिलेंगे |",
@@ -699,6 +731,7 @@
"copyCodeConfirmText": "कोड को क्लिपबोर्ड पर कॉपी किया गया है",
"copyCodeText": "कोड को कॉपी करें",
"dedicatedServerInfoText": "श्रेष्ठ परिणामों के लिए, एक समर्पित सर्वर सेट करें. कैसे जानने के लिए bombsquadgame.com/server देखें.",
+ "descriptionShortText": "किसी पार्टी को इकट्ठा करने के लिए एकत्रित विंडो का उपयोग करें।",
"disconnectClientsText": "यह आपके पार्टी में ${COUNT} \nखिलाड़ियों का सम्बन्ध तोड़ देगा",
"earnTicketsForRecommendingAmountText": "यदि वे गेम को आज़माते हैं तो दोस्तों को ${COUNT} \nटिकट मिलेंगे (और आप प्रत्येक के लिए ${YOU_COUNT} प्राप्त करेंगे)",
"earnTicketsForRecommendingText": "मुफ्त के टिकेट \nके लिए गेम को बाटें...",
@@ -711,10 +744,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} टिकेट मिले ${NAME} से",
"friendPromoCodeAwardText": "आपको ${COUNT} टिकेट मिलेंगे हर बार इसका प्रयोग किया जाता है",
"friendPromoCodeExpireText": "आपका कोड सिर्क नयें खिलाड़ियों के लिए चलेगा और ${EXPIRE_HOURS} घंटों के बाद काम करना बंद कर देगा",
- "friendPromoCodeInstructionsText": "इसका प्रयोग करने के लिए, ${APP_NAME} खोले और फिर \"सेटिंग->उन्नत सेटिंग->कोड डालें\" में जाएँ \nअधिक जानकारी के लिए bombsquadgame.com व डाउनलोड करने के लिए पे जाएँ |",
+ "friendPromoCodeInstructionsText": "इसका उपयोग करने के लिए, ${APP_NAME} खोलें और \"सेटिंग्स->उन्नत->जानकारी भेजें\" पर जाएँ।\nसभी समर्थित प्लेटफ़ॉर्म के लिए डाउनलोड लिंक के लिए bombsquadgame.com देखें।",
"friendPromoCodeRedeemLongText": "यह ${COUNT} मुफ्त के टिकेट के लिए प्रयोग किया जा सकता है अधकतम ${MAX_USES} लोगों के द्वारा |",
"friendPromoCodeRedeemShortText": "यह ${COUNT} मुफ्त के टिकेट के लिए प्रयोग किया जा सकता है गेम के अन्दर |",
- "friendPromoCodeWhereToEnterText": "(\"सेटिंग->उन्नत सेटिंग->कोड डालें\" में जाएँ )",
+ "friendPromoCodeWhereToEnterText": "(\"सेटिंग्स->उन्नत->जानकारी भेजें\" में)",
"getFriendInviteCodeText": "दोस्त आमंत्रण कोड पायें",
"googlePlayDescriptionText": "गूगल प्ले के खिलाड़ियों को अपनी पार्टी में आमंत्रण दें:",
"googlePlayInviteText": "आमंत्रण दें",
@@ -746,6 +779,7 @@
"manualYourLocalAddressText": "आपका स्थानीय पता:",
"nearbyText": "आस/पास",
"noConnectionText": "<कोई कनेक्शन नहीं है>",
+ "noPartiesAddedText": "कोई दल नहीं जोड़ा गया",
"otherVersionsText": "(कोई और संस्करण)",
"partyCodeText": "दल कोड",
"partyInviteAcceptText": "स्वीकार करें",
@@ -810,6 +844,12 @@
"youHaveShortText": "आपके पास ${COUNT} हैं",
"youHaveText": "आपके पास ${COUNT} टिकेट हैं"
},
+ "goldPass": {
+ "desc1InfTokensText": "अनगिनत टोकन.",
+ "desc2NoAdsText": "कोई विज्ञापन नहीं.",
+ "desc3ForeverText": "हमेशा के लिए.",
+ "goldPassText": "गोल्ड पास"
+ },
"googleMultiplayerDiscontinuedText": "क्षमा करें, गूगल की एक साथ खेलने की सेवा अब उपलब्ध नहीं है। \nमैं जितनी जल्दी हो सके एक प्रतिस्थापन पर काम कर रहा हूं।\nतब तक, कृपया दूसरी जुडने की विधि आज़माएँ। \n-Eric",
"googlePlayPurchasesNotAvailableText": "गूगल प्ले से ख़रीदारी उपलब्ध नहीं हैं।\nआपको अपना स्टोर ऐप अपडेट करना पड़ सकता है।",
"googlePlayServicesNotAvailableText": "गूगल प्ले सर्विसेज उपलब्ध नहीं है।\nऐप की कुछ कार्यक्षमता अक्षम हो सकती है।",
@@ -818,10 +858,12 @@
"alwaysText": "हमेशा",
"fullScreenCmdText": "संपूर्ण स्क्रीन में चलायें (सी-एम्-डी + ऍफ़)",
"fullScreenCtrlText": "संपूर्ण स्क्रीन में चलायें (सी-टी-आर-एल + ऍफ़)",
+ "fullScreenText": "पूर्ण स्क्रीन",
"gammaText": "चमक",
"highText": "ज्यादा",
"higherText": "और ज्यादा",
"lowText": "कम",
+ "maxFPSText": "अधिकतम एफ.पी.एस.",
"mediumText": "ठीक ठाक",
"neverText": "कभी नहीं",
"resolutionText": "रेज़ोल्यूशन",
@@ -882,6 +924,7 @@
"importText": "आयात करें",
"importingText": "आयात कर रहा है...",
"inGameClippedNameText": "खेल में होगा \n\"${NAME}\"",
+ "inboxText": "इनबॉक्स",
"installDiskSpaceErrorText": "त्रुटी: इनस्टॉल ख़तम नहीं कर पाया | \nआपके यंत्र पे जगह ख़तम हो सकती है | \nजगह खली कर के फिर से प्रयास करें |",
"internal": {
"arrowsToExitListText": "सूचि से बाहर निकलने केलिए ${LEFT} या ${RIGHT} दबाएँ",
@@ -936,12 +979,14 @@
"timeOutText": "(समय ख़तम होने में ${TIME} सेकंड)",
"touchScreenJoinWarningText": "आपने टच स्क्रीन से जोड़ा है | \nअगर यह गलती से हुआ है तो 'मेनू -> गेम छोड़ें' से बाहर निकल जाएँ |",
"touchScreenText": "टच स्क्रीन",
+ "unableToCompleteTryAgainText": "इसे अभी पूरा करने में असमर्थ।\nकृपया पुन: प्रयास करें।",
"unableToResolveHostText": "त्रुटि: होस्ट को हल करने में असमर्थ हैं।",
"unavailableNoConnectionText": "यह अभी उपलब्ध नहीं है | (इन्टरनेट कनेक्शन है ना ?)",
"vrOrientationResetCardboardText": "वी-आर अनुस्थापन रिसेट करने के लिए इसका प्रयोग करें | \nगेम खेलने के लिए आपको एक बाहरी नियंत्रक चाहिए होगा |",
"vrOrientationResetText": "वी-आर अनुस्थापन रिसेट",
"willTimeOutText": "(समय ख़तम हो जायेगा अगर आलसी रहेंगे)"
},
+ "inventoryText": "भंडार",
"jumpBoldText": "कूदें",
"jumpText": "कूदें",
"keepText": "रखें",
@@ -988,8 +1033,11 @@
"seasonEndsMinutesText": "सीज़न ख़तम होगा ${NUMBER} मिनटों में |",
"seasonText": "सीज़न संख्या ${NUMBER}",
"tournamentLeagueText": "इस प्रतियोगिता में हिस्सा लेने के लिए आपको ${NAME} संघ तक पहले पहुंचना होगा",
- "trophyCountsResetText": "ट्रॉफी कि संख्या अगले सीज़न में रिसेट हो जायेगी"
+ "trophyCountsResetText": "ट्रॉफी कि संख्या अगले सीज़न में रिसेट हो जायेगी",
+ "upToDateBonusDescriptionText": "खिलाड़ी इसका नवीनतम संस्करण चला रहे हैं\nगेम को यहां ${PERCENT}% बोनस प्राप्त होता है।",
+ "upToDateBonusText": "नवीनतम बोनस"
},
+ "learnMoreText": "और अधिक जानें",
"levelBestScoresText": "${LEVEL} पर सर्वश्रेष्ठ स्कोर",
"levelBestTimesText": "${LEVEL} पर सबसे अच्छे समय",
"levelFastestTimesText": "सबसे तेज़ ${LEVEL} स्तर पे",
@@ -1031,9 +1079,12 @@
"maxConnectionsText": "अधिकतम कनेक्शन",
"maxPartySizeText": "अधिकतम पार्टी का आकार",
"maxPlayersText": "अधिकतम खिलाड़ी",
+ "merchText": "मर्च!",
"modeArcadeText": "आर्केड मोड",
"modeClassicText": "क्लासिक मोड",
"modeDemoText": "डेमो मोड",
+ "moreSoonText": "और अधिक जल्द ही आ रहा है...",
+ "mostDestroyedPlayerText": "सर्वाधिक नष्ट खिलाड़ी",
"mostValuablePlayerText": "सबसे ज्यादा कीमती खिलाड़ी",
"mostViolatedPlayerText": "सबसे ज्यादा उल्लंघित खिलाड़ी",
"mostViolentPlayerText": "सबसे ज्यादा हिंसात्मक खिलाड़ी",
@@ -1050,6 +1101,7 @@
"nameSuicideText": "${NAME} ने आत्म-हत्या कर ली |",
"nameText": "नाम",
"nativeText": "मूलभूत",
+ "newExclaimText": "ताज़ा!",
"newPersonalBestText": "नया निजी उत्तम अंक !",
"newTestBuildAvailableText": "एक नया परीक्षा का संस्करण उपलब्ध है ! \n(${VERSION} बिल्ड ${BUILD}). इसे ${ADDRESS} से पायें |",
"newText": "नया",
@@ -1060,13 +1112,17 @@
"noContinuesText": "(कोई जारी रखना नहीं)",
"noExternalStorageErrorText": "कोई बाहरी संचयन करने कि जगह नहीं मिली",
"noGameCircleText": "त्रुटी: गेम-सर्किल में लॉग-इन नहीं हैं |",
+ "noMessagesText": "कोई संदेश नहीं.",
+ "noPluginsInstalledText": "कोई प्लगइन इंस्टॉल नहीं है",
"noProfilesErrorText": "आपकी कोई खिलाड़ी पार्श्वचित्र नहीं है, इसलिए आप '${NAME}' नाम के साथ फंसे हैं |\nसेटिंग -> खिलाड़ी पार्श्वचित्र में जाके अपने लिए पार्श्वचित्र बनायें |",
"noScoresYetText": "अभी तक कोई स्कोर नहीं है |",
+ "noServersFoundText": "कोई सरवर्स नहीं मिलें।",
"noThanksText": "नहीं धन्यवाद",
"noTournamentsInTestBuildText": "चेतावनी: इस टेस्ट बिल्ड से खेलकूद-प्रतियोगिता के खेल के अंकों को नजरअंदाज कर दिया जाएगा।",
"noValidMapsErrorText": "इस गेम ढंग के लिए कोई नक्शा नहीं मिला",
"notEnoughPlayersRemainingText": "पर्याप्त खिलाड़ी बाकी नहीं हैं; बंद कर के नया गेम शुरू करें |",
"notEnoughPlayersText": "आपको कम से कम ${COUNT} खिलाड़ी चाहिए गेम शुरू करने के लिए !",
+ "notEnoughTicketsText": "पर्याप्त टिकट नहीं!",
"notNowText": "अभी नहीं",
"notSignedInErrorText": "यह करने के लिए आपको अपने खाते में साइन इन करना पड़ेगा",
"notSignedInGooglePlayErrorText": "आपको गूगल प्ले से साइन इन करना पड़ेगा यह करने के लिए |",
@@ -1079,6 +1135,9 @@
"onText": "चालू करें",
"oneMomentText": "एक क्षण...",
"onslaughtRespawnText": "${PLAYER} फिर से जिन्दा होगा लहर ${WAVE} में",
+ "openMeText": "मुझे खोलो!",
+ "openNowText": "अभी खोलें",
+ "openText": "खुला",
"orText": "${A} या ${B}",
"otherText": "अन्य",
"outOfText": "(${ALL} में से #${RANK})",
@@ -1130,7 +1189,11 @@
"pleaseWaitText": "कृपया प्रतीक्षा करें...",
"pluginClassLoadErrorText": "प्लगइन क्लास '${PLUGIN}' लोड करने में त्रुटि: ${ERROR}",
"pluginInitErrorText": "प्लगइन '${PLUGIN}' शुरुआत करने में त्रुटि: ${ERROR}",
+ "pluginSettingsText": "प्लगइन सेटिंग्स",
+ "pluginsAutoEnableNewText": "ऑटो सक्षम नया प्लगइन",
"pluginsDetectedText": "नए प्लगइन्स पता चले। उन्हें सक्रिय करने के लिए पुनरारंभ करें, या उन्हें सेटिंग्स में कॉन्फ़िगर करें।",
+ "pluginsDisableAllText": "सभी प्लगइन्स को अक्षम करें",
+ "pluginsEnableAllText": "सभी प्लगइन्स सक्षम करें",
"pluginsRemovedText": "${NUM} प्लगइन्स अब नहीं मिले।",
"pluginsText": "प्लगइन्स",
"practiceText": "अभ्यास",
@@ -1161,10 +1224,12 @@
"punchText": "मुक्का",
"purchaseForText": "${PRICE} के भाव पे खरीदें",
"purchaseGameText": "गेम खरीदें",
+ "purchaseNeverAvailableText": "क्षमा करें, इस बिल्ड पर खरीदारी उपलब्ध नहीं है।\nकिसी अन्य प्लेटफ़ॉर्म पर अपने खाते में साइन इन करने और वहां से खरीदारी करने का प्रयास करें।",
+ "purchaseNotAvailableText": "यह ख़रीदना संभव नहीं है|",
"purchasingText": "खरीद रहे हैं...",
"quitGameText": "${APP_NAME} को बंद कर दें ?",
"quittingIn5SecondsText": "५ सेकंड में बंद कर रहे हैं...",
- "randomPlayerNamesText": "किशोर, यश, ख्याति, शालिनी, आदित्य, उमेस, निश्चिंत, भाविक, रिशव, तुषार, राहुल, अमोल, मिशेल, प्रियंका, कल्याण, रियान, दिविज, हरी, आदर्श, कौस्तुभ, ज़ोया, सीनू, प्रतीक, ज़ारा, रुक्सार, शकील, पूजा, शबनम, शेरा, चेतन, समीर, टोनी, अजय, आकाश, पंकज, आरती, शबाना, मुमताज़, शुभम, शिवम्, लकेव, सचिन, दीपक, अक्षय, अर्जुन, किशन, राधा, विश्वनाथ, शालू, विमल, शिवा, पप्पू, नरेंद्र, आज़म, अनमोल, काजल, संध्या, दिनेश, प्रिंस, आनंद, अज़हर, पवन, अभिषेक, विवेक",
+ "randomPlayerNamesText": "किशोर, यश, ख्याति, शालिनी, आदित्य, उमेस, निश्चिंत, भाविक, रिशव, तुषार, राहुल, अमोल, मिशेल, प्रियंका, कल्याण, रियान, दिविज, हरी, आदर्श, कौस्तुभ, ज़ोया, सीनू, प्रतीक, ज़ारा, रुक्सार, शकील, पूजा, शबनम, शेरा, चेतन, समीर, टोनी, अजय, आकाश, पंकज, आरती, शबाना, मुमताज़, शुभम, शिवम्, लकेव, सचिन, दीपक, अक्षय, अर्जुन, किशन, राधा, विश्वनाथ, शालू, विमल, शिवा, पप्पू, नरेंद्र, आज़म, अनमोल, काजल, संध्या, दिनेश, प्रिंस, आनंद, अज़हर, पवन, अभिषेक, विवेक, बेवन",
"randomText": "अनियमित",
"rankText": "पद",
"ratingText": "मूल्यांकन",
@@ -1202,6 +1267,7 @@
"version_mismatch": "संस्करण मेल नहीं खा रहे हैं | \nयह सुनिश्चित कर लें कि बोम्ब-स्क्वाड गेम और \nरिमोट पर नवीनतम संस्करण है और पुनः प्रयास करें |"
},
"removeInGameAdsText": "${PRO} को भंडार में खरीदें गेम के बीच आने वाले एड्स को हटाने के लिए |",
+ "removeInGameAdsTokenPurchaseText": "सीमित समय की पेशकश: इन-गेम विज्ञापनों को हटाने के लिए कोई भी टोकन पैक खरीदें।",
"renameText": "नाम बदलें",
"replayEndText": "रीप्ले बंद करें",
"replayNameDefaultText": "आखिरी गेम का रीप्ले",
@@ -1222,7 +1288,9 @@
"revertText": "पूर्व स्तिथि में लायें",
"runText": "दोडें",
"saveText": "सुरक्षित करें",
- "scanScriptsErrorText": "स्क्रिप्ट्स को स्कैन करने में त्रुटि; विवरण के लिए लॉग देखें।",
+ "scanScriptsErrorText": "स्क्रिप्ट्स स्कैन करने में गलती; विवरण के लिए लॉग देखें।",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} और ${NUM} अन्य मॉड्यूल को ए.पी.आई. ${API} के लिए अद्यतन करने की आवश्यकता है।",
+ "scanScriptsSingleModuleNeedsUpdatesText": "एपीआई ${API} के लिए ${PATH} को अद्यतन करने की आवश्यकता है।",
"scoreChallengesText": "अंकों कि चुनौतियाँ",
"scoreListUnavailableText": "अंकों कि सूचि अभी उपस्थित नहीं है",
"scoreText": "अंक",
@@ -1233,6 +1301,7 @@
},
"scoreWasText": "(${COUNT} था)",
"selectText": "चुनें",
+ "sendInfoDescriptionText": "अकाउंट और एप हालत की इनफो डेवलापर को बेजती है\nबेजने के अपना नाम और कारण बताईए",
"seriesWinLine1PlayerText": "विजयी",
"seriesWinLine1TeamText": "विजयी",
"seriesWinLine1Text": "विजयी",
@@ -1250,6 +1319,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(एक साधारण, नियंत्रक से आसानी इ प्रयोग हो जाने वाला कीबोर्ड)",
"alwaysUseInternalKeyboardText": "हमेशा गेम के कीबोर्ड का प्रयोग करें",
"benchmarksText": "बेंचमार्क व तनाव परीक्षण",
+ "devToolsText": "देव उपकरण",
"disableCameraGyroscopeMotionText": "कैमरा गायरोस्कोप गतिवान बंद करे",
"disableCameraShakeText": "कैमरा की हलचल बंद करे",
"disableThisNotice": "(आप उन्नत सेटिंग में इस नोटिस को अक्षम कर सकते हैं)",
@@ -1258,14 +1328,22 @@
"enterPromoCodeText": "कोड डालें",
"forTestingText": "टिपण्णी: यह संख्याएं सिर्फ परीक्षण के लिए हैं, और एप्लीकेशन के बंद होने पर खो जायेंगी |",
"helpTranslateText": "${APP_NAME} के अनुवाद एक सामुदायिक प्रयास का परिणाम हैं | \nअगर आप इसमें अपना योगदान देना चाहते हैं \nया कुछ ठीक करना चाहते हैं तो निचे दी गयी लिंक को देखें | धन्यवाद !",
+ "insecureConnectionsDescriptionText": "अनुशंसित नहीं है,\nलेकिन प्रतिबंधित देशों या नेटवर्कों से ऑनलाइन खिलाड़ियों को अनुमति दे सकता है है",
+ "insecureConnectionsText": "असुरक्षित कनेक्शन का उपयोग करें",
"kickIdlePlayersText": "निष्क्रिय खिलाडियों को बाहर निकाल दें",
"kidFriendlyModeText": "बच्चों के अनुकूल करें (कम हिंसा, आदि)",
"languageText": "भाषा",
"moddingGuideText": "परिवर्तन करने कि गाइड",
+ "moddingToolsText": "मोडी़ग टूलस",
"mustRestartText": "इसके लागू होने के लिए आपको गेम को पुनः शुरू करना पड़ेगा |",
"netTestingText": "नेटवर्क पर परीक्षण",
"resetText": "रीसेट",
+ "sendInfoText": "खबर बेजिए",
"showBombTrajectoriesText": "बोम्ब का पथ दिखाएँ",
+ "showDemosWhenIdleText": "निष्क्रिय होने पर डेमो दिखाएं",
+ "showDeprecatedLoginTypesText": "अप्रचलित लॉगिन प्रकार दिखाएँ",
+ "showDevConsoleButtonText": "डेव कंसोल बटन दिखाएँ",
+ "showInGamePingText": "गेम पिंग में दिखाएं",
"showPlayerNamesText": "खिलाड़ी का नाम दिखाएँ",
"showUserModsText": "परिवर्तनों का फोल्डर दिखाएँ",
"titleText": "उन्नत",
@@ -1284,6 +1362,9 @@
"signInWithGameCenterText": "गेम केंद्र खाते का उपयोग करने के लिए, \nगेम सेंटर एप के साथ साइन इन करें।",
"singleGamePlaylistNameText": "केवल ${GAME}",
"singlePlayerCountText": "1 खिलाड़ी",
+ "sizeLargeText": "बडा",
+ "sizeMediumText": "बराबर",
+ "sizeSmallText": "चोटा",
"soloNameFilterText": "अकेले ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "कैरेक्टर का चयन",
@@ -1309,6 +1390,7 @@
},
"spaceKeyText": "स्पेस",
"statsText": "स्टैट्स",
+ "stopRemindingMeText": "मुझे याद दिलाना बंद करो",
"storagePermissionAccessText": "इसमें संग्रहण एक्सेस की आवश्यकता है",
"store": {
"alreadyOwnText": "आपके पास ${NAME} पहले से ही है!",
@@ -1318,7 +1400,7 @@
"charactersText": "पात्र",
"comingSoonText": "जल्द आ रहा है...",
"extrasText": "अतिरिक्त",
- "freeBombSquadProText": "बम्ब्सक्वाड अब नि:शुल्क है, लेकिन जब से आपने मूल रूप से इसे खरीदा था \nतब आप हैं बम्ब्सक्वाड प्रो उन्नयन और ${COUNT} टिकट आपको धन्यवाद के रूप में दिए जा रहे हैं। \nनई सुविधाओं का आनंद लें, और अपने समर्थन के लिए धन्यवाद! \n-एरिक",
+ "freeBombSquadProText": "बम्ब्सक्वाड अब नि:शुल्क है, लेकिन जब से आपने मूल रूप से इसे खरीदा था \nतब आप हैं बम्ब्सक्वाड प्रो उन्नयन और ${COUNT} टिकट आपको धन्यवाद के रूप में दिए जा रहे हैं। \nनई सुविधाओं का आनंद लें, और अपने समर्थन के लिए धन्यवाद! \n-एरिक ",
"holidaySpecialText": "छुट्टी विशेष",
"howToSwitchCharactersText": "(पात्र असाइन और कस्टमाइज़ करने के लिए जाएं \"${SETTINGS} -> ${PLAYER_PROFILES}\" पर)",
"howToUseIconsText": "(इन का उपयोग करने के लिए वैश्विक खिलाड़ी प्रोफाइल (खाता विंडो में) बनाएं)",
@@ -1356,6 +1438,8 @@
"storeText": "दुकान",
"submitText": "जमा करें",
"submittingPromoCodeText": "संहिता जमा कर रहा है ...",
+ "successText": "सफल!",
+ "supportEmailText": "यदि आप किसी भी समस्या का सामना कर रहे हैं ऐप, \nकृपया ईमेल करें ${EMAIL}।",
"teamNamesColorText": "टीम के नाम / रंग ...",
"telnetAccessGrantedText": "टेलनेट एक्सेस सक्षम है",
"telnetAccessText": "टेलनेट पहुंच का पता चला; अनुमति देते हैं?",
@@ -1365,6 +1449,7 @@
"testBuildValidatedText": "परीक्षण निर्माण मान्य; आनंद लें!",
"thankYouText": "आपके सहयोग के लिए धन्यवाद! खेल का लुफ्त उठाओ!!",
"threeKillText": "तिहरा हत्या!!",
+ "ticketsDescriptionText": "टिकटों का उपयोग पात्रों को अनलॉक करने के लिए किया जा सकता है,\nस्टोर में मानचित्र, मिनीगेम्स और बहुत कुछ।\n\nटिकट जीते गए चेस्ट में पाए जा सकते हैं\nअभियान, टूर्नामेंट और उपलब्धियाँ।",
"timeBonusText": "समय बोनस",
"timeElapsedText": "समय बीता",
"timeExpiredText": "समय समाप्त",
@@ -1375,10 +1460,24 @@
"tipText": "टिप",
"titleText": "बमस्क्वाड",
"titleVRText": "बमस्क्वाड व.र.",
+ "tokens": {
+ "getTokensText": "टोकन ले",
+ "notEnoughTokensText": "पर्याप्त टोकन नहीं है!",
+ "numTokensText": "${COUNT} टोकन",
+ "openNowDescriptionText": "आपके पास पर्याप्त टोकन हैं\nइसे अभी खोलें - आप ऐसा नहीं करेंगे\nइंतजार करने की जरूरत है.",
+ "shinyNewCurrencyText": "बॉम्बस्क्वाड की चमकदार नई मुद्रा।",
+ "tokenPack1Text": "छोटा टोकन पैक",
+ "tokenPack2Text": "मध्यम टोकन पैक",
+ "tokenPack3Text": "बड़ा टोकन पैक",
+ "tokenPack4Text": "जंबो टोकन पैक",
+ "tokensDescriptionText": "चेस्ट अनलॉक को तेज़ करने के लिए टोकन का उपयोग किया जाता है\nऔर अन्य गेम और खाता सुविधाओं के लिए।\n\nआप गेम में टोकन जीत सकते हैं या उन्हें खरीद सकते हैं\nपैक्स में. या अनंत के लिए एक गोल्ड पास खरीदें\nटोकन और उनके बारे में फिर कभी नहीं सुनना।",
+ "youHaveGoldPassText": "आपके पास गोल्ड पास है।\nसभी टोकन खरीद निःशुल्क हैं।\nआनंद ले!"
+ },
"topFriendsText": "अच्छे दोस्त",
"tournamentCheckingStateText": "प्रतियोगिता की जांच हो रही है; कृपया प्रतीक्षा करें...",
"tournamentEndedText": "यह प्रतियोगिता समाप्त हो गया है। एक नया जल्द ही शुरू होगा।",
"tournamentEntryText": "प्रतियोगिता प्रवेश",
+ "tournamentFinalStandingsText": "अंतिम स्थिति",
"tournamentResultsRecentText": "हालिया प्रतियोगिता परिणाम",
"tournamentStandingsText": "प्रतियोगिता स्टैंडिंग्स",
"tournamentText": "प्रतियोगिता",
@@ -1434,6 +1533,18 @@
"Uber Onslaught": "महा हमला",
"Uber Runaround": "महा रनराउंड"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} टिकट",
+ "${C} Tokens": "${C} टोकन",
+ "Chest": "छाती",
+ "L1 Chest": "एल1 छाती",
+ "L2 Chest": "एल2 छाती",
+ "L3 Chest": "एल3 छाती",
+ "L4 Chest": "एल4 छाती",
+ "L5 Chest": "एल5 छाती",
+ "L6 Chest": "एल6 छाती",
+ "Unknown Chest": "अज्ञात छाती"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "जीतने के लिए लंबे समय तक चुने गए व्यक्ति बनें। \nइसे चुनने के लिए चुने हुए को मार डालो।",
"Bomb as many targets as you can.": "जितना संभव हो उतने लक्ष्य पर बम मारें ।",
@@ -1536,7 +1647,9 @@
"Italian": "इतालवी",
"Japanese": "जापानी",
"Korean": "कोरियाई",
+ "Malay": "मलय",
"Persian": "फ़ारसी",
+ "PirateSpeak": "डाकू भाषा",
"Polish": "पोलिश",
"Portuguese": "पुर्तगाली",
"Romanian": "रोमानियाई",
@@ -1608,6 +1721,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "धोखाधड़ी का पता चला; स्कोर और पुरस्कार ${COUNT} दिनों के लिए निलंबित कर दिए गए हैं।",
"Could not establish a secure connection.": "एक सुरक्षित कनेक्शन स्थापित नहीं कर सका।",
"Daily maximum reached.": "दैनिक अधिकतम पहुंच गया।",
+ "Daily sign-in reward": "दैनिक साइन-इन इनाम",
"Entering tournament...": "टूर्नामेंट में प्रवेश ...",
"Invalid code.": "अमान्य कोड।",
"Invalid payment; purchase canceled.": "अमान्य भुगतान; खरीद रद्द।",
@@ -1617,11 +1731,14 @@
"Item unlocked!": "सामग्री अनलॉक!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "जुड़ाव अस्वीकृत। ${ACCOUNT} में महत्वपूर्ण डेटा शामिल है \nजो सभी खो जाएंगे। यदि आप चाहते हैं \nतो आप विपरीत क्रम में लिंक कर सकते हैं \n(और इसके बजाय इस खाते का डेटा खो दें)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "इस खाते में ${ACCOUNT} खाता लिंक करें? \n${ACCOUNT} पर मौजूद सभी डेटा खो जाएंगे। \nइसे असंपादित नहीं किया जा सकता है। क्या आपको यकीन है?",
+ "Longer streaks lead to better rewards.": "लंबी स्ट्रीक्स से बेहतर पुरस्कार मिलते हैं।",
"Max number of playlists reached.": "प्लेलिस्ट की अधिकतम संख्या तक पहुंच गई।",
"Max number of profiles reached.": "प्रोफाइल की अधिकतम संख्या तक पहुंच गया।",
"Maximum friend code rewards reached.": "अधिकतम मित्र कोड पुरस्कार पहुंचे।",
"Message is too long.": "संदेश बहुत लंबा है।",
+ "New tournament result!": "नया टूर्नामेंट परिणाम!",
"No servers are available. Please try again soon.": "कोई सर्वर उपलब्ध नहीं हैं। कृपया शीघ्र ही पुन: प्रयास करें।",
+ "No slots available. Free a slot and try again.": "कोई स्लॉट उपलब्ध नहीं है. एक स्लॉट खाली करें और पुनः प्रयास करें।",
"Profile \"${NAME}\" upgraded successfully.": "प्रोफाइल \"${NAME}\" सफलतापूर्वक अपग्रेड किया गया।",
"Profile could not be upgraded.": "प्रोफ़ाइल को अपग्रेड नहीं किया जा सका।",
"Purchase successful!": "खरीद सफल!",
@@ -1631,7 +1748,9 @@
"Sorry, this code has already been used.": "क्षमा करें, यह कोड पहले ही इस्तेमाल हो चुका है।",
"Sorry, this code has expired.": "क्षमा करें, यह कोड समाप्त हो गया है।",
"Sorry, this code only works for new accounts.": "क्षमा करें, यह कोड केवल नए खातों के लिए काम करता है।",
+ "Sorry, this has expired.": "क्षमा करें, इसकी समय सीमा समाप्त हो गई है.",
"Still searching for nearby servers; please try again soon.": "अभी भी आस-पास के सर्वर खोज रहे हैं; कृपया जल्द ही पुन: प्रयास करें।",
+ "Streak: ${NUM} days": "स्ट्रीक: ${NUM} दिन",
"Temporarily unavailable; please try again later.": "अस्थाई रूप से अनुपलब्ध; बाद में पुन: प्रयास करें।",
"The tournament ended before you finished.": "टूर्नामेंट समाप्त होने से पहले समाप्त हो गया।",
"This account cannot be unlinked for ${NUM} days.": "यह खाता ${NUM} दिनों के लिए अनलिंक नहीं किया जा सकता है।",
@@ -1642,19 +1761,28 @@
"Tournaments require ${VERSION} or newer": "टूर्नामेंटों को ${VERSION} या नए की आवश्यकता होती है",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "इस खाते से ${ACCOUNT} अनलिंक करें? ${ACCOUNT} \nपर मौजूद सभी डेटा रीसेट हो जाएंगे। \n(कुछ मामलों में उपलब्धियों को छोड़कर)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "चेतावनी: आपके खाते के खिलाफ हैकिंग की शिकायतें जारी की गई हैं। \nहैकिंग के लिए पाए गए खातों पर प्रतिबंध लगा दिया जाएगा। कृपया ईमानदार से खेलें।",
+ "Wait reduced!": "इंतज़ार कम हुआ!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "चेतावनी: गेम का यह संस्करण पुराने खाता डेटा तक सीमित है; चीज़ें गुम या पुरानी लग सकती हैं।\nकृपया अपना नवीनतम खाता डेटा देखने के लिए गेम के नए संस्करण में अपग्रेड करें।",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "क्या आप अपने डिवाइस खाते को इस से लिंक करना चाहते हैं? \n\nआपका डिवाइस खाता ${ACCOUNT1} है \nयह खाता ${ACCOUNT2} है \n\nयह आपको अपनी मौजूदा प्रगति को रखने की अनुमति देगा। \nचेतावनी: इसे पूर्ववत नहीं किया जा सकता है",
"You already own this!": "आप पहले से ही इसे खरीद चुके है!",
"You can join in ${COUNT} seconds.": "आप ${COUNT} सेकंड में शामिल हो सकते हैं।",
"You don't have enough tickets for this!": "आपके पास इसके लिए पर्याप्त टिकट नहीं हैं!",
"You don't own that.": "आप उसका स्वामित्व नहीं रखते हैं।",
"You got ${COUNT} tickets!": "आपको ${COUNT} टिकट मिल गए हैं!",
+ "You got ${COUNT} tokens!": "आपको ${COUNT} टोकन मिल गए!",
"You got a ${ITEM}!": "आपको ${ITEM} मिला है!",
+ "You got a chest!": "तुम्हें एक संदूक मिल गया!",
+ "You got an achievement reward!": "आपको एक उपलब्धि पुरस्कार मिला!",
"You have been promoted to a new league; congratulations!": "आपको एक नए लीग में पदोन्नत किया गया है; बधाई!",
+ "You lost a chest! (All your chest slots were full)": "आपने एक संदूक खो दिया! (आपके सभी चेस्ट स्लॉट भरे हुए थे)",
+ "You must update the app to view this.": "इसे देखने के लिए आपको ऐप को अपडेट करना होगा।",
"You must update to a newer version of the app to do this.": "ऐसा करने के लिए आपको ऐप के एक नए संस्करण में अपडेट करना होगा।",
"You must update to the newest version of the game to do this.": "ऐसा करने के लिए आपको गेम के नवीनतम संस्करण में अपडेट करना होगा।",
"You must wait a few seconds before entering a new code.": "नया कोड दर्ज करने से पहले आपको कुछ सेकंड इंतजार करना होगा।",
+ "You placed #${RANK} in a tournament!": "आपने एक टूर्नामेंट में #${RANK} रखा!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "आपने पिछले टूर्नामेंट में #${RANK} रैंक किया था। खेलने के लिए शुक्रिया!",
"Your account was rejected. Are you signed in?": "आपका खाता अस्वीकृत कर दिया गया है। क्या आप हस्ताक्षरित हैं?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "आपके विज्ञापन दृश्य पंजीकृत नहीं हो रहे हैं. विज्ञापन विकल्प कुछ समय के लिए सीमित रहेंगे।",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "खेल की आपकी प्रति संशोधित कर दी गई है। \nकृपया किसी भी बदलाव को वापस करें और पुनः प्रयास करें।",
"Your friend code was used by ${ACCOUNT}": "आपका मित्र कोड ${ACCOUNT} द्वारा उपयोग किया गया था"
},
@@ -1803,11 +1931,14 @@
"toSkipPressAnythingText": "(शिक्षण छोड़ने के लिए कुछ भी स्पर्श करे या दबाएं)"
},
"twoKillText": "दोहरी हत्या",
+ "uiScaleText": "यू आई सकेल",
"unavailableText": "उपलब्ध नहीं",
+ "unclaimedPrizesText": "आपके पास लावारिस पुरस्कार हैं!",
"unconfiguredControllerDetectedText": "बिना विन्यास वाले नियंत्रक का पता चला:",
"unlockThisInTheStoreText": "यह स्टोर में अनलॉक होना चाहिए।",
"unlockThisProfilesText": "${NUM} प्रोफ़ाइल बनाने के लिए, आपको इसकी आवश्यकता है:",
"unlockThisText": "इसे अनलॉक करने के लिए, आपको इसकी आवश्यकता है:",
+ "unsupportedControllerText": "क्षमा करें, नियंत्रक \"${NAME}\" समर्थित नहीं है।",
"unsupportedHardwareText": "क्षमा करें, यह हार्डवेयर गेम के इस निर्माण द्वारा समर्थित नहीं है।",
"upFirstText": "सर्व प्रथम",
"upNextText": "गेम ${COUNT} में अगला:",
@@ -1815,10 +1946,14 @@
"upgradeText": "अभ्युत्थान",
"upgradeToPlayText": "इन-गेम स्टोर में इसे चलाने के लिए \"${PRO}\" अनलॉक करें।",
"useDefaultText": "पूर्व निर्धारित उपयोग करें",
+ "userSystemScriptsCreateText": "डसतमालक सिस्टम सृइपट बनाईए",
+ "userSystemScriptsDeleteText": "डीलीइट यूजर्स सिस्टम सिकरीपट",
"usesExternalControllerText": "यह गेम इनपुट के लिए बाहरी नियंत्रक का उपयोग करता है।",
"usingItunesText": "गाने के लिए संगीत ऐप का उपयोग कर रहे है ...",
"v2AccountLinkingInfoText": "V2 खातों को लिंक करने के लिए, 'खाता प्रबंधित करें' बटन का उपयोग करें।",
+ "v2AccountRequiredText": "इसके लिए V2 खाते की आवश्यकता है। अपना खाता अपग्रेड करें और पुनः प्रयास करें।",
"validatingTestBuildText": "परीक्षण निर्माण मान्य ...",
+ "viaText": "के जरिए",
"victoryText": "विजय!",
"voteDelayText": "आप ${NUMBER} सेकंड के लिए एक और वोट शुरू नहीं कर सकते हैं",
"voteInProgressText": "एक वोट पहले ही प्रगति पर है।",
@@ -1884,5 +2019,6 @@
},
"yesAllowText": "हाँ, आज्ञा दें",
"yourBestScoresText": "आपका बेस्ट स्कोर।",
- "yourBestTimesText": "आपका सर्वोत्तम समय"
+ "yourBestTimesText": "आपका सर्वोत्तम समय",
+ "yourPrizeText": "आपका पुरस्कार:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/hungarian.json b/dist/ba_data/data/languages/hungarian.json
index 769c7edc..a6c94364 100644
--- a/dist/ba_data/data/languages/hungarian.json
+++ b/dist/ba_data/data/languages/hungarian.json
@@ -3,16 +3,19 @@
"accountNameRules": "A fiók neve nem tartalmazhat emojikat és más speciális karaktereket",
"accountProfileText": "(Felhasználó profilok)",
"accountsText": "Fiókok",
- "achievementProgressText": "Eredmènyek: ${COUNT} a(z) ${TOTAL}-ból/ből.",
+ "achievementProgressText": "Eredmények: ${COUNT} a(z) ${TOTAL}-ból/ből.",
"campaignProgressText": "Kampány haladás(nehéz mód): ${PROGRESS}",
"changeOncePerSeason": "Ebben a szezonban ezt csak egyszer változtathatod meg.",
"changeOncePerSeasonError": "Várj a következő szezonig, hogy ezt megint megváltoztasd (${NUM} nap)",
+ "createAnAccountText": "Fiók létrehozása",
"customName": "Egyedi név",
+ "deleteAccountText": "Fiók Törlése",
"deviceSpecificAccountText": "Csak erről az eszközről lehet elérni ezt a profilt: ${NAME}",
+ "googlePlayGamesAccountSwitchText": "Ha másik Google fiókot használnál, használd a Google Játékok alkalmazást.",
"linkAccountsEnterCodeText": "Írd Be A Kódot",
"linkAccountsGenerateCodeText": "Kód Generálása",
"linkAccountsInfoText": "(vidd át előrehaladásodat akár több eszközre is)",
- "linkAccountsInstructionsNewText": "Két fiók összekapcsolásához először hozzon létre egy kódot\nés írja be a második kódot. Adatok a\na második számlát majd megosztják egymással.\n(Az első fiókból származó adatok elveszhetnek)\n\nÖsszesen akár ${COUNT} fiókot is összekapcsolhat.\n\nFONTOS: csak az Ön tulajdonában lévő fiókokat kapcsolja össze;\nHa kapcsolatba lépsz a barátok fiókjaival, akkor nem fogsz\negyszerre tud online játszani.",
+ "linkAccountsInstructionsNewText": "Két fiók összekapcsolásához az első fiókon hozz létre egy kódot\nés írd be a második fiókba. Az adatok a\na második fiókon majd megosztják egymással.\n(Az első fiókból származó adatok elvesznek)\n\nÖsszesen akár ${COUNT} fiókot is összekapcsolhat.\n\nFONTOS:\nCsak a tulajdonodban lévő fiókokat kapcsold össze;\nHa összekapcsolsz egyet az egyik barátodéval, nem fogtok tudni egyszerre online játszani.",
"linkAccountsInstructionsText": "Hogy párosíts két profilt, generálj egy kódot\naz egyiken majd írd be a kapott kódot a másikon.\nAz előrehaladás és a megvásárolt dolgok is párosításra kerülnek .\nÖsszesen ${COUNT} profilt tudsz összehangolni.\n\nFONTOS:Csak olyan profilt csatlakoztass ami a tiéd!\nHogyha profilt csatlakoztatsz a barátaiddal\nakkor nem fogsz tudni játszani azonos időben!\n\nLégy óvatos!Ezt a lépést nem lehet visszavonni!",
"linkAccountsText": "Profilok Párosítása",
"linkedAccountsText": "Párosított Profilok:",
@@ -21,18 +24,20 @@
"resetProgressConfirmNoAchievementsText": "Ez visszaállítja a co-op haladásodat és \nhelyi legmagasabb pontszámaidat (de a jegyeidet nem). \nEz nem vissza vonható. Biztos vagy benne?",
"resetProgressConfirmText": "Ez visszaállítja a co-op haladásodat,\nteljesítményeidet és helyi legmagasabb pontszámaidat\n(de a jegyeidet nem). Ez nem vissza vonható.\nBiztos vagy benne?",
"resetProgressText": "Haladás visszaállítása",
- "setAccountName": "Állítsa be a fiók nevét",
+ "setAccountName": "Állítsd be a fiók nevét",
"setAccountNameDesc": "Válassza ki a megjeleníteni kívánt fiók nevét.\nHasználhatja a nevét az egyik kapcsoltól\nfiókokat, vagy egyedi egyedi nevet hozhat létre.",
"signInInfoText": "Lépj be, hogy tudj jegyeket gyűjteni, online versenyezni\nés elérni az eredményeidet akár több eszközről is.",
"signInText": "Bejelentkezés",
- "signInWithDeviceInfoText": "(Autómatikus fiók csak ezen az eszközön elérhető)",
+ "signInWithAnEmailAddressText": "Jelentkezz be egy email címmel",
+ "signInWithDeviceInfoText": "(Automatikus fiók csak ezen az eszközön elérhető)",
"signInWithDeviceText": "Bejelentkezés az eszköz felhasználójával.",
"signInWithGameCircleText": "Lépj be a Game Circle fiókodba",
"signInWithGooglePlayText": "Belépés Google fiókkal",
"signInWithTestAccountInfoText": "(Egy régi típusú felhasználó; Mostantól a készülék felhasználóját használd.)",
"signInWithTestAccountText": "Bejelentkezés teszt felhasználóval",
+ "signInWithText": "Bejelentkezés ${SERVICE}-(v)al /-(v)el",
"signInWithV2InfoText": "(egy fiók, amely minden platformon működik)",
- "signInWithV2Text": "Jelentkezzen be BombSquad fiókkal",
+ "signInWithV2Text": "Jelentkezzen be egy ${APP_NAME} fiókkal",
"signOutText": "Kijelentkezés",
"signingInText": "Bejelentkezés...",
"signingOutText": "Kijelentkezés...",
@@ -43,9 +48,10 @@
"titleText": "Felhasználó",
"unlinkAccountsInstructionsText": "Válassz ki egy fiókot a leválasztáshoz",
"unlinkAccountsText": "Fiókok leválasztása",
- "v2LinkInstructionsText": "Használja ezt a linket fiók létrehozásához vagy bejelentkezéshez.",
- "viaAccount": "(számlán keresztül ${NAME})",
- "youAreSignedInAsText": "Be vagy jelentkezve, mint:"
+ "unlinkLegacyV1AccountsText": "(V1) fiókok lecsatolása",
+ "v2LinkInstructionsText": "Használd ezt a linket fiók létrehozásához vagy bejelentkezéshez.",
+ "viaAccount": "(${NAME} fiókon keresztül )",
+ "youAreSignedInAsText": "Eként vagy bejelentkezve:"
},
"achievementChallengesText": "Teljesítmény kihívások",
"achievementText": "Teljesítmény",
@@ -55,7 +61,7 @@
"descriptionComplete": "Megöltél 3 rosszfiút TNT-vel",
"descriptionFull": "Ölj meg 3 rosszfiút TNT-vel a(z) ${LEVEL}-n",
"descriptionFullComplete": "Megöltél 3 rosszfiút TNT-vel a(z) ${LEVEL}-n",
- "name": "Bumm Megy a Dinamit"
+ "name": "Bumm! Megy a Dinamit"
},
"Boxer": {
"description": "Nyerj bombák használata nélkül",
@@ -65,7 +71,7 @@
"name": "Boxoló"
},
"Dual Wielding": {
- "descriptionFull": "Csatlakoztass 2 kontrollert(hardvert vagy applikáció)",
+ "descriptionFull": "Csatlakoztass 2 kontrollert (hardvert vagy applikációt)",
"descriptionFullComplete": "2 kontroller csatlakoztatva (hardver vagy applikáció)",
"name": "Dupla Hadonászás"
},
@@ -187,7 +193,7 @@
"Pro Football Victory": {
"description": "Nyerd meg a játékot",
"descriptionComplete": "Megnyerted a játékot",
- "descriptionFull": "Nyerdmeg a játékot a(z) ${LEVEL} pályán",
+ "descriptionFull": "Nyerd meg a játékot a(z) ${LEVEL} pályán",
"descriptionFullComplete": "Megnyerted a játékot a(z) ${LEVEL} pályán",
"name": "${LEVEL} Győzelem"
},
@@ -254,7 +260,7 @@
},
"Stayin' Alive": {
"description": "Nyerj halál nélkül",
- "descriptionComplete": "Nyerj anélkül hogy meghalnál.",
+ "descriptionComplete": "Nyertél anélkül, hogy meghalnál.",
"descriptionFull": "Nyerd meg a ${LEVEL} pályát halál nélkül",
"descriptionFullComplete": "${LEVEL} pálya megnyerve halál nélkül",
"name": "Maradj életben!"
@@ -336,9 +342,14 @@
"getMoreGamesText": "Több Játékmód...",
"titleText": "Játék Hozzáadása"
},
+ "addToFavoritesText": "Hozzáadás a kedvencekhez",
+ "addedToFavoritesText": "'${NAME}' hozzáadva a kedvencekhez.",
+ "allText": "Minden",
"allowText": "Engedélyezés",
"alreadySignedInText": "A fiókoddal be vagy jelentkezve egy másik eszközről;\nkérlek cserélj fiókot vagy zárd be a játékot \na másik eszközön és próbáld újra",
"apiVersionErrorText": "Nem lehet betölteni a ${NAME} modult jelenlegi verzió:${VERSION_USED}; szükséges verió:${VERSION_REQUIRED}.",
+ "applyText": "Alkalmaz",
+ "areYouSureText": "Biztos vagy benne?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Automatikus\" csak akkor érhető el ha csatlakoztatva van egy fejhallgató)",
"headRelativeVRAudioText": "Head-Relative hangzás",
@@ -360,14 +371,23 @@
"boostText": "Boost",
"bsRemoteConfigureInAppText": "A(z) ${REMOTE_APP_NAME} a saját alkalmazásában konfigurálódik.",
"buttonText": "Gomb",
- "canWeDebugText": "Szeretnéd, ha a BombSquad automatikusan jelentené a hibákat, \ncrash-eléseket, és általános használati infókat a fejlesztőknek?\n\nEz az adat nem tartalmaz személyes információkat és segít\na játék sima és hibamentes futásának megtartásában.",
+ "canWeDebugText": "Szeretné, ha a(z) ${APP_NAME} automatikusan bejelentené a hibákat, \nösszeomlásokat és alapvető használati információkat a fejlesztőnek?\n\nEzek az adatok nem tartalmaznak személyes adatokat és segítséget nyújtanak\nhogy a játék zökkenőmentesen és hibamentesen működjön.",
"cancelText": "Mégse",
"cantConfigureDeviceText": "Bocs, ${DEVICE} nem beállítható.",
"challengeEndedText": "Ez a kihívás már végét ért.",
"chatMuteText": "Chat némítása",
"chatMutedText": "Chat némítva",
"chatUnMuteText": "Chat némítás feloldása",
+ "chests": {
+ "prizeOddsText": "A nyeremények lehetnek:",
+ "reduceWaitText": "Idő csökkentése",
+ "slotDescriptionText": "Ez a retesz egy láda tárolására alkalmas.\n\nLádákat szerezhetsz a kampány pályákról, \nversenyekről és \nmérföldkövek eléréséért.",
+ "slotText": "${NUM}. Láda rekesz",
+ "slotsFullWarningText": "Figyelem! A láda tartó reteszeid tele vannak. \nBármilyen láda, amit ebben a játékban szerzel, el fog veszni."
+ },
"choosingPlayerText": "",
+ "claimText": "Begyűjtés",
+ "codesExplainText": "A kódokkal diagnosztizálni és javítani tudod az esetlegesen felmerülő,\n fiókoddal kapcsolatos problémákat.",
"completeThisLevelToProceedText": "Teljesítened kell ezt\na szintet a folytatáshoz!",
"completionBonusText": "Befejezési Bónusz",
"configControllersWindow": {
@@ -435,7 +455,7 @@
"keyboard2NoteText": "A legtöbb billentyűzet csak pár gombnyomást érzékel egyszerre,\nszóval jobb ha használtok két játékos esetén jobb, \nhogy ha egy második billentyűzetet is használtok.\nFontos, hogy ebben az esetben is be kell állítani \naz egyéni vezérlést."
},
"configTouchscreenWindow": {
- "actionControlScaleText": "Akció Panel Átmérőja",
+ "actionControlScaleText": "Akció Panel Átmérője",
"actionsText": "Akciók",
"buttonsText": "gombok",
"dragControlsText": "",
@@ -448,6 +468,7 @@
"swipeText": "nyilak",
"titleText": "Érintőképernyő Konfigurálása"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} konfigurálását a rendszerbeállításokban tudod megtenni",
"configureItNowText": "Most Konfigurálod?",
"configureText": "Konfigurálás",
"connectMobileDevicesWindow": {
@@ -549,7 +570,10 @@
"deleteText": "Törlés",
"demoText": "Demo",
"denyText": "Megtagad",
+ "deprecatedText": "Elavult",
+ "descriptionText": "Leírás",
"desktopResText": "Asztali Felbontás",
+ "deviceAccountUpgradeText": "Hé!\nEgy eszközfiókkal vagy bejelentkezve (${NAME}). \nEgy jövőbeli frissítésben az ezeket az eszközfiókokat eltávolítjuk.\nFejleszd fiókod V2-es fiókra ha meg szeretnéd tartani a haladásod és a többi cuccaidat.",
"difficultyEasyText": "Könnyű",
"difficultyHardOnlyText": "Csak Nehéz Mód",
"difficultyHardText": "Nehéz",
@@ -558,6 +582,10 @@
"disableRemoteAppConnectionsText": "Irányító Alkalmazások Letiltása",
"disableXInputDescriptionText": "Engedélyezi ,hogy 4-nél több kontroller is csatlakozhasson ,viszont nem biztos a hibátlan működés.",
"disableXInputText": "XInput kikapcsolása",
+ "disabledText": "Kikapcsolva",
+ "discardText": "Elvetés",
+ "discordFriendsText": "Szeretnél barátokat találni?\nCsatlakozz a Discord szerverünkre!",
+ "discordJoinText": "Csatlakozás a discord szerverre",
"doneText": "Elvégezve",
"drawText": "Döntetlen",
"duplicateText": "Másolás",
@@ -582,7 +610,7 @@
"checkingAvailabilityText": "\"${NAME}\" név ellenőrzése...",
"colorText": "szín",
"getMoreCharactersText": "Több Karakter Szerzése...",
- "getMoreIconsText": "Szerezz több ikont...",
+ "getMoreIconsText": "Több ikon szerzése...",
"globalProfileInfoText": "A teljes körű játékos profilok garantálják az egyedi \nnevet a játékban, és feloldják az ikonokat is.",
"globalProfileText": "(teljes körű profil)",
"highlightText": "fénypont",
@@ -591,6 +619,7 @@
"localProfileText": "(alkalmi profil)",
"nameDescriptionText": "Játékos Név",
"nameText": "Név",
+ "profileAlreadyExistsText": "Egy ugyan ilyen nevű profil már létezik!",
"randomText": "véletlen",
"titleEditText": "Profil Szerkesztése",
"titleNewText": "Új Profil",
@@ -600,7 +629,7 @@
},
"editSoundtrackWindow": {
"cantDeleteDefaultText": "Nem törölheted az alap betétdalt.",
- "cantEditDefaultText": "Nem lehet szerkeszteni az alap betétdalt. Duplázd meg vagy csinálj egy újat.",
+ "cantEditDefaultText": "Nem lehet szerkeszteni az alap betétdalt. Duplikáld, vagy csinálj egy újat.",
"cantOverwriteDefaultText": "Nem lehet felülírni az alap betétdalt",
"cantSaveAlreadyExistsText": "Egy betétdal már létezik ilyen névvel!",
"defaultGameMusicText": "",
@@ -626,17 +655,20 @@
"useMusicFolderText": "Zene Fájlok Mappája"
},
"editText": "Szerkesztés",
+ "enabledText": "Bekapcsolva",
"endText": "Befejezés",
"enjoyText": "Jó Játékot!",
- "epicDescriptionFilterText": "${DESCRIPTION} A hatalmas lassú mozgásban",
- "epicNameFilterText": "Hatalmas ${NAME}",
+ "epicDescriptionFilterText": "${DESCRIPTION} Az epikus lassú mozgásban",
+ "epicNameFilterText": "Epikus ${NAME}",
"errorAccessDeniedText": "hozzáférés megtagadva",
- "errorDeviceTimeIncorrectText": "Az eszközöd rossz időt mutat ennyi órával:${HOURS}.\nEz okozhat problémákat is.\nKérjük ellenőrizze az időt és idő-zónát a beállításokban.",
+ "errorDeviceTimeIncorrectText": "Az eszközöd rossz időt mutat ennyi órával:${HOURS}.\nEz okozhat problémákat is.\nKérjük ellenőrizd az időt és idő-zónát a beállításokban.",
"errorOutOfDiskSpaceText": "Kifogyott a szabadhelyből",
"errorSecureConnectionFailText": "Nem lehet kapcsolatot létrehozni a biztonságos felhővel;Az internet funkcionálása talán elbukik.",
"errorText": "Hiba",
"errorUnknownText": "ismeretlen hiba",
"exitGameText": "Kilépsz a ${APP_NAME}-ból?",
+ "expiredAgoText": "Lejárt: ${T} óta",
+ "expiresInText": "Lejár ${T} múlva",
"exportSuccessText": "'${NAME}' áthelyezve.",
"externalStorageText": "Külső Tárhely",
"failText": "Bukta",
@@ -671,6 +703,8 @@
"duplicateText": "Lista\nMásolása",
"editText": "Lista\nSzerkesztése",
"newText": "Új\nLista",
+ "pointsToWinText": "Pont nyerésig",
+ "seriesLengthText": "Sorozat hossza",
"showTutorialText": "Oktató végignézése",
"shuffleGameOrderText": "Játék Rendelés Megkeverése",
"titleText": "Szabd személyre a ${TYPE} Lejátszási listát"
@@ -697,6 +731,7 @@
"copyCodeConfirmText": "Vágólapra másolva.",
"copyCodeText": "Kód másolása",
"dedicatedServerInfoText": "A legjobb eredményért, csinálj dedikált szerver.Útmutató:bombsquadgame.com/server",
+ "descriptionShortText": "A \"Toborzás\" ablakban összeállíthatsz egy csapatot.",
"disconnectClientsText": "Ez le fogja csatlakoztatni a ${COUNT} játékost\na társaságodból. Biztos vagy benne?",
"earnTicketsForRecommendingAmountText": "A barátaid kapni fognak ${COUNT} jegyet ha kipróbálják a játékot\n(és te is kapni fogsz ${YOU_COUNT} jegyet minden barátok általi kipróbálás után)",
"earnTicketsForRecommendingText": "Terjeszd a játékot\ningyenes jegyekért...",
@@ -710,7 +745,7 @@
"friendPromoCodeAwardText": "${COUNT} jegyet fogsz kapni minden egyes használásnál.",
"friendPromoCodeExpireText": "Ez a kód ${EXPIRE_HOURS} óra múlva lejár és csak új játékosok használhatják.",
"friendPromoCodeInfoText": "Ez a kód ${COUNT} jegyet ér.\n\nMenj a \"Beállítások->Haladó->Promóciós Kód Beírása\" a játékban, hogy aktiváld.\nLátogasd meg a bombsquadgame.com nevű weboldalt, a letöltési linkek eléréséhez.\nEz a kód csak ${EXPIRE_HOURS} óráig érvényes és csak új játékosok számára elérhető.",
- "friendPromoCodeInstructionsText": "Hogy használhasd, nyisd meg a ${APP_NAME}-ot, menj a \"Beállítások->Haladó>Promóciós Kód Beírása\" menüpontba.\nÍrd be a kódod majd kattints a \"Küldés\" gombra. Látogasd meg a bombsquadgame.com weboldalt letöltési linkekért, és a támogatott eszközök listájáért.",
+ "friendPromoCodeInstructionsText": "A használatához nyissa meg a ${APP_NAME} alkalmazást, és lépjen a \"Beállítások->Speciális->Információ küldése\" menüpontra.\nA bombsquadgame.com oldalon megtalálja az összes támogatott platform letöltési linkjét.",
"friendPromoCodeRedeemLongText": "${COUNT} jegyet ér és maximum ${MAX_USES} ember használhatja.",
"friendPromoCodeRedeemShortText": "${COUNT} jegyet ér a játékon belül.",
"friendPromoCodeWhereToEnterText": "(itt \"Beállítások->Haladó->Promóciós Kód Beírása\")",
@@ -745,6 +780,7 @@
"manualYourLocalAddressText": "Lokális IP címed:",
"nearbyText": "Közeli játékok",
"noConnectionText": "",
+ "noPartiesAddedText": "Nincsenek hozzáadva játékok",
"otherVersionsText": "(másik verziók)",
"partyCodeText": "Party kód",
"partyInviteAcceptText": "Elfogad",
@@ -812,6 +848,12 @@
"youHaveShortText": "${COUNT} jegyed van",
"youHaveText": "Neked ${COUNT} jegyed van."
},
+ "goldPass": {
+ "desc1InfTokensText": "Végtelen token.",
+ "desc2NoAdsText": "Nincsenek reklámok.",
+ "desc3ForeverText": "Örökké.",
+ "goldPassText": "Arany Pass."
+ },
"googleMultiplayerDiscontinuedText": "Bocsánat, A Google-nek a többjátékos szervisze többé nem elérhető.\nÉn most egy cserén dolgozok.\nAddig, Kérlek Válasz egy Másik Kapcsolódási lehetőséget.\n-Eric",
"googlePlayPurchasesNotAvailableText": "A Google Play vásárlások nem elérhetőek.\nTalán frissíteni kell a vásárló alakalmazásod",
"googlePlayServicesNotAvailableText": "A Google Play Szolgáltatások nem elérhetőek.\nNéhány része a játéknak talán le vannak tiltva",
@@ -820,10 +862,12 @@
"alwaysText": "Mindig",
"fullScreenCmdText": "Teljes képernyő (Cmd-F)",
"fullScreenCtrlText": "Teljes képernyő (Ctrl-F)",
+ "fullScreenText": "Teljes képernyő",
"gammaText": "Gamma",
"highText": "Magas",
"higherText": "Magasabb",
"lowText": "Alacsony",
+ "maxFPSText": "Maximum FPS:",
"mediumText": "Közepes",
"neverText": "Soha",
"resolutionText": "Felbontás",
@@ -849,17 +893,17 @@
"jumpInfoText": "- Ugrás -\nUgorj keresztül kis hasadásokon,\nhogy távolabbra dobj dolgokat, és\nhogy sürgesd az öröm érzetét.",
"orPunchingSomethingText": "Vagy megütni valamit, ledobni egy hegyről, és felrobbantani a lefele úton egy ragadós bombával.",
"pickUpInfoText": "- Felvétel -\nRagadd meg a zászlót, ellenfelet,\nvagy akármi mást ami nincs rögzítve.\nNyomd meg még egyszer az eldobáshoz.",
- "powerupBombDescriptionText": "Hagyja, hogy egyszerre három\nbombát is el tudj dobni.",
+ "powerupBombDescriptionText": "Ettől három bombát\nis el fogsz tudni dobni.",
"powerupBombNameText": "Tripla-Bomba",
"powerupCurseDescriptionText": "Talán ezeket elakarod kerülni.\n...vagy nem?",
"powerupCurseNameText": "Átok",
"powerupHealthDescriptionText": "Helyreállítja a teljes egészségedet.\nSose gondoltad volna.",
"powerupHealthNameText": "Gyógyító-Csomag",
- "powerupIceBombsDescriptionText": "Gyengébb mint a normál bombák,\nde hülten hagyja ellenfeleidet\nés különösen törékenyen.",
+ "powerupIceBombsDescriptionText": "Gyengébbek mint a normál bombák,\nde hülten hagyja ellenfeleidet.\nÉs különösen törékenyen!",
"powerupIceBombsNameText": "Jég-Bombák",
- "powerupImpactBombsDescriptionText": "Némileg gyengébb, mint az eredeti\nbombák, de becsapódásra robannak.",
+ "powerupImpactBombsDescriptionText": "Némileg gyengébbek, mint a normál\nbombák, de becsapódásra robannak.",
"powerupImpactBombsNameText": "Ravasz-Bombák",
- "powerupLandMinesDescriptionText": "Ezek 3-asával jönnek egy csomagba;\nHasznos a bázis védelemre vagy\na gyors ellenfelek megállítására.",
+ "powerupLandMinesDescriptionText": "Ezek 3-asával jönnek egy csomagban;\nHasznos a bázis védelemre vagy\na gyors ellenfelek megállítására.",
"powerupLandMinesNameText": "Taposó-akna",
"powerupPunchDescriptionText": "Felerősíti, gyorsítja, jobbá,\nés keményebbé teszi ütéseidet.",
"powerupPunchNameText": "Box-Kesztyűk",
@@ -884,6 +928,7 @@
"importText": "Importálás",
"importingText": "Bemásolás...",
"inGameClippedNameText": "játékbeli alak:\n\"${NAME}\"",
+ "inboxText": "Bejövő",
"installDiskSpaceErrorText": "Hiba: Nem lehet teljesíteni a telepítést.\nTalán kifogytál a szabadhelyből az eszközödön.\nTakaríts egy kis helyet, és próbáld újra.",
"internal": {
"arrowsToExitListText": "nyomj ${LEFT}-t vagy ${RIGHT}-t a lista bezárásához",
@@ -938,12 +983,14 @@
"timeOutText": "(Kifagyás ${TIME} másodpercen belül)",
"touchScreenJoinWarningText": "Az érintőképernyővel csatlakoztál.\nHa ez egy hiba, akkor menj ide: Menü->Játék Elhagyása.",
"touchScreenText": "Érintőképernyő",
+ "unableToCompleteTryAgainText": "Nem sikerült.\nKérlek próbáld újra.",
"unableToResolveHostText": "Hiba: a host nem elérhető.",
"unavailableNoConnectionText": "Ez a funkció nem elérhető (Nincs internet kapcsolat?).",
"vrOrientationResetCardboardText": "Használd ezt, hogy visszaállíts a VR orientációkat.\nHogy játszhass csatlakoztatnod kell egy kontrollert.",
"vrOrientationResetText": "VR orientáció újraindítása.",
"willTimeOutText": "(lejár az idő, ha tétlen)"
},
+ "inventoryText": "Eszköztár",
"jumpBoldText": "UGORJ",
"jumpText": "Ugorj",
"keepText": "Tartsd",
@@ -966,7 +1013,7 @@
"killsText": "Ölések",
"kioskWindow": {
"easyText": "Könnyű",
- "epicModeText": "Hatalmas mód",
+ "epicModeText": "Epikus mód",
"fullMenuText": "Teljes menü",
"hardText": "Nehéz",
"mediumText": "Közepes",
@@ -990,8 +1037,11 @@
"seasonEndsMinutesText": "Szezonból hátralévő idő:${NUMBER} perc.",
"seasonText": "Szezon ${NUMBER}",
"tournamentLeagueText": "Hogy ebbe a tornába be tudj nevezni,el kell érned ezt a ligát:${NAME}",
- "trophyCountsResetText": "A trófeák a következő szezonban lenullázódnak."
+ "trophyCountsResetText": "A trófeák a következő szezonban lenullázódnak.",
+ "upToDateBonusDescriptionText": "Ha legújabb verzióval játszol,\n${PERCENT}%-os bónuszt kapsz.",
+ "upToDateBonusText": "\"Legújabb verzió\" bónusz"
},
+ "learnMoreText": "Tudj meg többet",
"levelBestScoresText": "Legjobb eredmények a ${LEVEL}-es szinten.",
"levelBestTimesText": "Legjobb időeredmények a ${LEVEL}-es szinten",
"levelFastestTimesText": "Legjobb idők a ${LEVEL}-n",
@@ -1033,9 +1083,12 @@
"maxConnectionsText": "Max. Eszközök",
"maxPartySizeText": "Maximum Parti Méret",
"maxPlayersText": "Max. Játékosok",
+ "merchText": "Termékek!",
"modeArcadeText": "Árkád mód",
"modeClassicText": "Klasszikus mód",
"modeDemoText": "Demó mód",
+ "moreSoonText": "Nemsokára több tartalom érkezik!",
+ "mostDestroyedPlayerText": "Legtöbbször megsemmisített játékos",
"mostValuablePlayerText": "Legértékesebb Játékos",
"mostViolatedPlayerText": "Legtöbbször Megölt Játékos",
"mostViolentPlayerText": "Legerőszakosabb Játékos",
@@ -1052,6 +1105,7 @@
"nameSuicideText": "${NAME} öngyilkosságot követett el.",
"nameText": "Név",
"nativeText": "Eredeti",
+ "newExclaimText": "Új!",
"newPersonalBestText": "Új személyi rekord!",
"newTestBuildAvailableText": "Egy újabb teszt szerkezet elérhető! (${VERSION} build ${BUILD}).\nSzerezd meg a ${ADDRESS}-n",
"newText": "Új",
@@ -1062,17 +1116,22 @@
"noContinuesText": "(újraéledés nélkül)",
"noExternalStorageErrorText": "Nincs megtalálható külső tárhely ezen az eszközön",
"noGameCircleText": "Hiba: nincs bejelentkezve egy JátékKörbe",
+ "noMessagesText": "Nincsenek üzenetek.",
+ "noPluginsInstalledText": "Nincsenek hozzáadva pluginok",
"noProfilesErrorText": "Nincs játékos profilod, tehát te most '${NAME}'-val nyomulsz.\nMenj a Beállítások->Játékos Profilok-ba hogy csinálj magadnak egy profilt-",
"noScoresYetText": "Nincs még pontod.",
+ "noServersFoundText": "Nem találhatók szerverek",
"noThanksText": "Nem Köszönöm",
"noTournamentsInTestBuildText": "FIGYELEM: A tournament pontok ebből a teszt épitésből ki lesznek hagyva.",
"noValidMapsErrorText": "Nem található pálya ehhez a játéktípushoz.",
"notEnoughPlayersRemainingText": "Nincs elég játékos. Lépj ki és kezdj egy új játékot.",
"notEnoughPlayersText": "A játék elindításához, minimum ${COUNT} játékos szükséges!",
+ "notEnoughTicketsText": "Nincs elég jegyed!",
"notNowText": "Most Nem",
"notSignedInErrorText": "Be kell jelentkezned a művelethez.",
"notSignedInGooglePlayErrorText": "Be kell jelentkezned Google Play-el a művelethez.",
"notSignedInText": "nem vagy bejelentkezve",
+ "notUsingAccountText": "Megjegyzés: a ${SERVICE} fiók figyelmen kívül hagyása.\n Ha használni szeretné, lépjen a \"Fiók -> Bejelentkezés a ${SERVICE} segítségével\".",
"nothingIsSelectedErrorText": "Nem választottál ki semmit!",
"numberText": "#${NUMBER}",
"offText": "Ki",
@@ -1080,6 +1139,9 @@
"onText": "Be",
"oneMomentText": "Egy pillanat...",
"onslaughtRespawnText": "${PLAYER} újraéled a következő körben (${WAVE})",
+ "openMeText": "Nyiss ki!",
+ "openNowText": "Azonnali kinyitás",
+ "openText": "Kinyitás",
"orText": "${A} vagy ${B}",
"otherText": "Egyéb...",
"outOfText": "(#${RANK} a ${ALL}-ból/-ből)",
@@ -1131,7 +1193,11 @@
"pleaseWaitText": "Kérljek várj...",
"pluginClassLoadErrorText": "Nem sikerült egy hoozáadást betölteni '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Nem sikerült elkezdeni az egyik hozzáadást '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Plugin beállítások",
+ "pluginsAutoEnableNewText": "Új Pluginok auto. bekapcs.",
"pluginsDetectedText": "Új hozzáadások érzékelve. Indítsa újra az alkalmazást az aktiváláshoz, vagy szerkesztés őket a beállításokban",
+ "pluginsDisableAllText": "Összes plugin kikapcsolása",
+ "pluginsEnableAllText": "Összes plugin bekapcsolása",
"pluginsRemovedText": "${NUM} hozzáadás(ok) mostmár nem találhatóak",
"pluginsText": "Pluginok",
"practiceText": "Gyakorlás",
@@ -1162,6 +1228,8 @@
"punchText": "Ütés",
"purchaseForText": "Megvétel ennyiért:${PRICE}",
"purchaseGameText": "Játék megvásárlása",
+ "purchaseNeverAvailableText": "Sajnos ezen a builden nem lehet vásárolni.\n Próbáljon meg bejelentkezni fiókjába egy másik platformon, és onnan vásárolni.",
+ "purchaseNotAvailableText": "Ez a vásárlás nem elérhető.",
"purchasingText": "Vásárlás folyamatban...",
"quitGameText": "Kilépsz a ${APP_NAME}-ból?",
"quittingIn5SecondsText": "Kilépés 5 másodpercen belül...",
@@ -1203,6 +1271,7 @@
"version_mismatch": "Verzió hiba.\nLégy biztos abban hogy a BombSqad Irányító\na legújabb verzióval rendelkezik, és próbáld újra."
},
"removeInGameAdsText": "Old fel a \"${PRO}\"-t az áruházból hogy eltávolítsd a játékbeli reklámokat.",
+ "removeInGameAdsTokenPurchaseText": "Korlátozott idejű ajánlat: Vásárold meg bármelyik token csomagot, hogy eltávolítsd a reklámokat.",
"renameText": "Átnevezés",
"replayEndText": "Visszajátszás Befejezése",
"replayNameDefaultText": "Utolsó Játék visszajátszás",
@@ -1223,7 +1292,9 @@
"revertText": "Visszateker",
"runText": "Futás",
"saveText": "Mentés",
- "scanScriptsErrorText": "Hiba a szkriptek szkennelésében; részletek a naplóban.",
+ "scanScriptsErrorText": "Hiba a szkriptek szkennelésében. részletek a naplóban.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} és ${NUM} modult api ${API}-ra kell frissítened, hogy működjenek",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH}-t api ${API}-ra kell frissítened hogy működjenek.",
"scoreChallengesText": "Pontszám Kihívások",
"scoreListUnavailableText": "A pontszám lista nem elérhető.",
"scoreText": "Pont",
@@ -1234,6 +1305,7 @@
},
"scoreWasText": "(${COUNT} volt)",
"selectText": "Válassz",
+ "sendInfoDescriptionText": "Fiók- és alkalmazásállapot-információkat küld el a fejlesztőnek.\nKérjük, adja meg a nevét vagy a küldés okát.",
"seriesWinLine1PlayerText": "NYERTE MEG A",
"seriesWinLine1TeamText": "NYERTE MEG A",
"seriesWinLine1Text": "NYERTE MEG A",
@@ -1250,24 +1322,33 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(kontroller barát billentyűzet a szöveg szerkesztéséhez)",
- "alwaysUseInternalKeyboardText": "Használjon Belső Billentyűzetet",
+ "alwaysUseInternalKeyboardText": "Mindig Használjon Belső Billentyűzetet",
"benchmarksText": "Teljesítmény és Stressz Teszt",
- "disableCameraGyroscopeMotionText": "Kamera Gyroscope kikapcsolása",
- "disableCameraShakeText": "Kamera rázást Kikapcsolni",
+ "devToolsText": "Fejlesztői Eszközök",
+ "disableCameraGyroscopeMotionText": "Kamera Giroszkóp mozgás kikapcsolása",
+ "disableCameraShakeText": "Kamera rázás kikapcsolása",
"disableThisNotice": "(kikapcsolhatod ezt a beállítások menüben)",
"enablePackageModsDescriptionText": "(engedélyez a plusz helyeket a modoknak, viszont letiltja a hálózati játékot)",
"enablePackageModsText": "Helyi Modok Engedélyezése ",
"enterPromoCodeText": "Kód beírása",
"forTestingText": "Megj.:ezek az értékek csak tesztek és az alkalmazás bezárásával együtt törlődnek.",
"helpTranslateText": "A ${APP_NAME} nem Angol fordításait a közösség végzi.\nHa szeretnél fordítani vagy hibát javítani akkor \nhasználd ezt a linket. Előre is köszönöm!",
- "kickIdlePlayersText": "Tétlen Játékosok Kirúgása",
+ "insecureConnectionsDescriptionText": "nem ajánlott, de engedélyezheti az online játékot \nkorlátozott országokból vagy hálózatokból",
+ "insecureConnectionsText": "Nem biztonságos kapcsolatok használata",
+ "kickIdlePlayersText": "Rúgd a tétlen játékosokat",
"kidFriendlyModeText": "Gyerekbarát Mód (erőszak csökkentése,stb.)",
"languageText": "Nyelv",
"moddingGuideText": "Modolási Útmutató",
+ "moddingToolsText": "Moddolási eszközök",
"mustRestartText": "Újra kell indítanod a játékot a módosítások érvénybe lépéséhez.",
"netTestingText": "Hálózat Tesztelése",
"resetText": "Visszaállítás",
+ "sendInfoText": "Kűldj Infót",
"showBombTrajectoriesText": "Bomba Pályájának Mutatása",
+ "showDemosWhenIdleText": "Demók megjelenítése üresjáratban",
+ "showDeprecatedLoginTypesText": "Elavult bejelentkezési típúsok megjelenítése",
+ "showDevConsoleButtonText": "A fejlesztői konzol gomb megjelenítése",
+ "showInGamePingText": "A játékon belüli ping megjelenítése",
"showPlayerNamesText": "Játékos Név Mutatása",
"showUserModsText": "Mod Mappák Mutatása",
"titleText": "Haladó",
@@ -1275,8 +1356,8 @@
"translationFetchErrorText": "fordítási státusz elérhetetlen",
"translationFetchingStatusText": "Fordítási státusz ellenőrzése...",
"translationInformMe": "Értesítsen, ha a nyelvem fordítását frissíteni kell",
- "translationNoUpdateNeededText": "A jelenlegi nyelv naprakész; woohoo!",
- "translationUpdateNeededText": "**a jelenlegi nyelv frissítésre szorul!!**",
+ "translationNoUpdateNeededText": "Az aktuális nyelv naprakész; woohoo!",
+ "translationUpdateNeededText": "** A jelenlegi nyelv frissítésre szorul!! **",
"vrTestingText": "VR Tesztelése"
},
"shareText": "Megosztás",
@@ -1286,12 +1367,15 @@
"signInWithGameCenterText": "Hogy használd a Játék Központ felhasználódat\njelentkezz be a Játék Központban.",
"singleGamePlaylistNameText": "Csak ${GAME}",
"singlePlayerCountText": "1 játékos",
+ "sizeLargeText": "Óriás",
+ "sizeMediumText": "Közepes",
+ "sizeSmallText": "Kicsi",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Karakter Választás",
"Chosen One": "A kiválasztott",
- "Epic": "Hatalmas Módú Játékok",
- "Epic Race": "Hatalmas Verseny",
+ "Epic": "Epikus Módú Játékok",
+ "Epic Race": "Epikus Verseny",
"FlagCatcher": "Szerezd meg a Zászlót",
"Flying": "Boldog Gondolatok",
"Football": "Football",
@@ -1361,6 +1445,8 @@
"storeText": "Bolt",
"submitText": "Érvényesítsd",
"submittingPromoCodeText": "Promóciós Kód Érvényesítése...",
+ "successText": "Siker!",
+ "supportEmailText": "Ha bármi problémát észlesz a játékkal, kérlek írd meg az alábbi e-mailen:\n${EMAIL}",
"teamNamesColorText": "Csapatnevek/csapatszínek...",
"telnetAccessGrantedText": "Telnet hozzáférés engedélyezve.",
"telnetAccessText": "Telnet hozzáférés észlelve. Engedélyezed?",
@@ -1370,6 +1456,7 @@
"testBuildValidatedText": "A Teszt Verzió Naprakész;Élvezd!",
"thankYouText": "Köszi a támogatást. Jó játékot!",
"threeKillText": "TRIPLA ÖLÉS!",
+ "ticketsDescriptionText": "A jegyekkel karaktereket,\npályákat,\nés minijátékokat tudsz feloldani. \n\nJegyekhez a ládákból tudsz jutni.",
"timeBonusText": "Idő Bónusz",
"timeElapsedText": "Eltelt Idő",
"timeExpiredText": "Lejárt az idő",
@@ -1380,10 +1467,23 @@
"tipText": "Tipp",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Szerezz Tokeneket",
+ "notEnoughTokensText": "Nincs elég tokened!",
+ "numTokensText": "${COUNT} Tokenek",
+ "shinyNewCurrencyText": "BombSquad fényes új fizetőeszköze.",
+ "tokenPack1Text": "Kicsi Token Csomag",
+ "tokenPack2Text": "Közepes Token Csomag",
+ "tokenPack3Text": "Nagy Token Csomag",
+ "tokenPack4Text": "Óriás Token Csomag",
+ "tokensDescriptionText": "A tokenekkel a ládák \nkinyitási idejét rövidítheted le,\nés még néhány más dolgot\ntudsz velük csinálni.\n\nTokeneket nyerni, vagy vásárolni is tudsz.",
+ "youHaveGoldPassText": "Megvan az Arany Pass.\nMinden token vásárlás ingyenes.\nÉlvezd!"
+ },
"topFriendsText": "Top Barátok",
"tournamentCheckingStateText": "Torna állapotának ellenőrzése;Kérlek várj...",
"tournamentEndedText": "Ez a torna befejeződött.Az új torna hamarosan kezdődik.",
"tournamentEntryText": "Belépés a Tornába",
+ "tournamentFinalStandingsText": "Végleges állás",
"tournamentResultsRecentText": "Legutóbbi Tornában elért helyezésed",
"tournamentStandingsText": "Torna Állása",
"tournamentText": "Bajnokság",
@@ -1439,6 +1539,18 @@
"Uber Onslaught": "Über Támadás",
"Uber Runaround": "Über Szaladgálás"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} jegy",
+ "${C} Tokens": "${C} token",
+ "Chest": "Láda",
+ "L1 Chest": "1-es szintű láda",
+ "L2 Chest": "2-es szintű láda",
+ "L3 Chest": "3-as szintű láda",
+ "L4 Chest": "4-es szintű láda",
+ "L5 Chest": "5-ös szintű láda",
+ "L6 Chest": "6-os szintű láda",
+ "Unknown Chest": "Ismeretlen láda"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Légy a kiválasztott egy ideig hogy nyerj.\nÖld meg a kiválasztottat, hogy te légy az.",
"Bomb as many targets as you can.": "Bombázz annyi célpontot, amennyit csak tudsz.",
@@ -1447,7 +1559,7 @@
"Crush ${ARG1} of your enemies.": "Zúzz szét ${ARG1}-t az ellenségeidből.",
"Defeat all enemies.": "Győzz le minden ellenséget.",
"Dodge the falling bombs.": "Térj ki minden hulló bomba elől.",
- "Final glorious epic slow motion battle to the death.": "A végső dicső hatalmas lassú mozgásos csata a halálig.",
+ "Final glorious epic slow motion battle to the death.": "A végső dicső epikus csata a halálig.",
"Gather eggs!": "Gyűjts tojásokat!",
"Get the flag to the enemy end zone.": "Juttasd el a zászlót az ellenséges zóna végére.",
"How fast can you defeat the ninjas?": "Milyen gyorsan győzöd le a ninja-kat?",
@@ -1541,7 +1653,9 @@
"Italian": "Olasz",
"Japanese": "Japán",
"Korean": "Koreai",
+ "Malay": "Maláj",
"Persian": "Perzsa",
+ "PirateSpeak": "Kalóznyelv",
"Polish": "Lengyel",
"Portuguese": "Portugál",
"Romanian": "Román",
@@ -1583,7 +1697,7 @@
"Zigzag": "Zigzag"
},
"playlistNames": {
- "Just Epic": "Csak Hatalmas",
+ "Just Epic": "Csak Epikus",
"Just Sports": "Csak Sportok"
},
"scoreNames": {
@@ -1613,6 +1727,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Csalás észlelve; a pontok és nyeremények felfüggesztve ${COUNT} napig.",
"Could not establish a secure connection.": "Nem lehet megbízható kapcsolatot létesíteni.",
"Daily maximum reached.": "Napi maximum elérve.",
+ "Daily sign-in reward": "Napi belépésért járó jutalom",
"Entering tournament...": "Belépés a tornába...",
"Invalid code.": "Hibás kód.",
"Invalid payment; purchase canceled.": "Érvénytelen fizetési mód; fizetés visszavonva.",
@@ -1622,11 +1737,14 @@
"Item unlocked!": "Elem feloldva!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "KAPCSOLAT FENNTARTVA. ${ACCOUNT} tartalmaz\njelentős adatok, amelyek MINDEN elvesznének.\nÖsszekapcsolhatja az ellenkező sorrendben, ha szeretné\n(és ehelyett elveszíti a fiók adatait)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Összekötöd a/az ${ACCOUNT} fiókot ehhez a fiókhoz?\nMinden létező adat a/az ${ACCOUNT} fiókon elveszik.\nEzt nem tudod majd visszavonni. Biztos vagy benne?",
+ "Longer streaks lead to better rewards.": "Naponta egyre jobb jutalmakat kapsz.",
"Max number of playlists reached.": "Maximum listaszám elérve.",
"Max number of profiles reached.": "Maximum profilszám elérve.",
"Maximum friend code rewards reached.": "Maximum barát kód elérve.",
"Message is too long.": "Az üzenet túl hosszú.",
+ "New tournament result!": "Új verseny eredmény!",
"No servers are available. Please try again soon.": "A szerverek nem elérhetőek. Kérlek próbáld újra később.",
+ "No slots available. Free a slot and try again.": "Nincs több rekesz. Szabadíts fel egyet, és próbáld újra",
"Profile \"${NAME}\" upgraded successfully.": "A \"${NAME}\" profil teljes körűvé fejlesztve.",
"Profile could not be upgraded.": "A profilt nem lehet frissíteni.",
"Purchase successful!": "Vásárlás sikeres!",
@@ -1636,7 +1754,9 @@
"Sorry, this code has already been used.": "Ezt a kódot már használták.",
"Sorry, this code has expired.": "Ez a kód már lejárt.",
"Sorry, this code only works for new accounts.": "Ezt a kódot csak új játékosok használhatják.",
+ "Sorry, this has expired.": "Bocsi, ez már lejárt.",
"Still searching for nearby servers; please try again soon.": "Keresés közeli szerverek iránt...",
+ "Streak: ${NUM} days": "${NUM} napos széria",
"Temporarily unavailable; please try again later.": "Jelenleg elérhetetlen; kérlek próbáld újra később.",
"The tournament ended before you finished.": "A torna lezárult mielőtt te befejezted volna.",
"This account cannot be unlinked for ${NUM} days.": "Ezt a fiókot nem tudod leválasztani ${NUM} napig.",
@@ -1647,19 +1767,27 @@
"Tournaments require ${VERSION} or newer": "A versenyhez ${VERSION} verzió vagy újabb szükséges.",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Leválasztod ${ACCOUNT} erről a fiókról?\nAz összes adat innen: ${ACCOUNT} törölve lesz. \n(Kivéve a mérföldkövek egyes esetekben)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "FIGYELMEZTETÉS: fiókod ellen panaszok érkeztek csalásért.\nA csaláson kapott fiókok tiltva lesznek. Kérlek játsz tisztességesen.",
+ "Wait reduced!": "Várakozási idő csökkentve!",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Szeretnéd hogy a készülék felhasználója ez legyen?\n\nA készülék mostani felhasználója: ${ACCOUNT1}\nEz a felhasználó: ${ACCOUNT2}\n\nEz megtartja a mostani teljesítményed.\nVigyázat: ez nem visszavonható!",
"You already own this!": "Már birtoklod ezt!",
"You can join in ${COUNT} seconds.": "Beléphetsz ${COUNT} másodperc múlva.",
"You don't have enough tickets for this!": "Nincs elég jegyed a vásárláshoz!",
"You don't own that.": "Te nem rendelkezel ezzel.",
"You got ${COUNT} tickets!": "Kaptál ${COUNT} jegyet!",
+ "You got ${COUNT} tokens!": "${COUNT} tokened van.",
"You got a ${ITEM}!": "Kaptál egy ${ITEM}-t!",
+ "You got a chest!": "Kaptál egy ládát!",
+ "You got an achievement reward!": "Jutalmat kaptál a teljesítményedért!",
"You have been promoted to a new league; congratulations!": "Feljutottál egy új ligába; Gratulálunk!",
+ "You lost a chest! (All your chest slots were full)": "Elvesztettél egy ládát! (minden ládatartó rekeszed tele van)",
+ "You must update the app to view this.": "Frissítsd az alkalmazást, hogy ezt megnézhesd.",
"You must update to a newer version of the app to do this.": "Frissítened kell a játékot az újabb verzióra, hogy megtehesd ezt.",
"You must update to the newest version of the game to do this.": "Frissítened kell a játék legújabb verziójára hogy ezt meg tudd tenni.",
"You must wait a few seconds before entering a new code.": "Várnod kell pár másodpercet egy új kód beírásához.",
+ "You placed #${RANK} in a tournament!": "#${RANK}-dik/ik lettél a versenyen!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Az előző tornában elért helyezésed:#${RANK}.Köszönjük a játékot!",
"Your account was rejected. Are you signed in?": "Fiókod elutasítva. Be vagy jelentkezve?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "A hirdetésmegtekintések nem regisztrálódnak. A hirdetési lehetőségek egy ideig korlátozottak lesznek.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "A játékod módosítva lett.\nÁllíts vissza minden módosítást és próbáld újra.",
"Your friend code was used by ${ACCOUNT}": "A promóciós kódod használva volt ${ACCOUNT} által"
},
@@ -1682,7 +1810,7 @@
"Enable Impact Bombs": "Ragadós Bomba engedélyezve",
"Enable Triple Bombs": "Háromszoros Bomba engedélyezve",
"Entire Team Must Finish": "Az Egész csapatnak be kell érnie",
- "Epic Mode": "Hatalmas Mód",
+ "Epic Mode": "Epikus Mód",
"Flag Idle Return Time": "Zászló Tétlen Visszatérés Idő",
"Flag Touch Return Time": "Zászló Érintés Visszatérési Idő",
"Hold Time": "Kitartási Idő",
@@ -1775,18 +1903,18 @@
"phrase04Text": "Sok tárgy a ${APP_NAME}-ban FIZIKÁRA alapszik.",
"phrase05Text": "Például, ha ütsz...",
"phrase06Text": "..a sérülés az őkleid gyorsaságán múlik.",
- "phrase07Text": "Látod? Nem mozdultunk, szóval ez alig sebezte meg ${NAME}-t.",
+ "phrase07Text": "Látod? Nem mozdultunk, szóval ez alig sebezte meg ${NAME}et.",
"phrase08Text": "Most ugorjunk és pörögjünk hogy sebességre tegyünk szert.",
"phrase09Text": "Áh, így jobb.",
"phrase10Text": "A futás is segít.",
- "phrase11Text": "Tartsd lenyomva AKÀRMELYIK gombot a futáshoz.",
+ "phrase11Text": "Tartsd lenyomva AKÁRMELYIK gombot a futáshoz.",
"phrase12Text": "Extra-király ütésért, próbálj futni és pörögni.",
"phrase13Text": "Hopsz; bocs ezért ${NAME}",
- "phrase14Text": "Feltudsz venni és eldobni dolgokat, csak úgy mint a zászlót... vagy ${NAME}-t.",
- "phrase15Text": "Végül, van bomba.",
+ "phrase14Text": "Fel tudsz venni és eldobni dolgokat, csak úgy mint a zászlót... vagy ${NAME}ot.",
+ "phrase15Text": "Végül, van a bomba.",
"phrase16Text": "A bomba dobás gyakorlatot vesz igénybe.",
- "phrase17Text": "Áú! Nem nagyon jódobás!",
- "phrase18Text": "Mozgás segít távolabbra dobni.",
+ "phrase17Text": "Áú! Nem valami jó dobás!",
+ "phrase18Text": "A mozgás segít távolabbra dobni.",
"phrase19Text": "Az ugrás segít magasabbra dobni.",
"phrase20Text": "\"Ostorozz\" a bombáddal, hogy még messzebbre is dobd.",
"phrase21Text": "Beidőzíteni a bombádat, trükkös lehet.",
@@ -1794,7 +1922,7 @@
"phrase23Text": "Próbáld meg \"kisütni\" a kanócot egy vagy két másodpercre.",
"phrase24Text": "Hurrá! Jól megsült.",
"phrase25Text": "Jólvan, ez csak erről szól.",
- "phrase26Text": "Kapd el őket, tigris!",
+ "phrase26Text": "Kapd el őket, te vadállat!",
"phrase27Text": "Emlékezz az edzésedre, és élve jössz vissza!",
"phrase28Text": "...jah, talán...",
"phrase29Text": "Sok szerencsét!",
@@ -1809,11 +1937,13 @@
"toSkipPressAnythingText": "(tapints vagy nyomj meg akármit az oktató átlépéséhez)"
},
"twoKillText": "DUPLA ÖLÉS!",
+ "uiScaleText": "UI skála",
"unavailableText": "elérhetetlen",
"unconfiguredControllerDetectedText": "Konfigurált vezérlő felismerve:",
"unlockThisInTheStoreText": "Ennek feloldva kell lennie az áruházban.",
"unlockThisProfilesText": "Hogy készíts több mint ${NUM} profilt, kelleni fog:",
"unlockThisText": "Hogy ezt felold, szükséged van ezekre:",
+ "unsupportedControllerText": "Bocsi, de a(z) \"${NAME}\" nevű kontroller nem támogatott",
"unsupportedHardwareText": "Bocs, ez a hárdver nem támogatott a játék ezen szerkezete által.",
"upFirstText": "Elsőként:",
"upNextText": "A következő a ${COUNT}. játékban:",
@@ -1821,10 +1951,15 @@
"upgradeText": "Frissítés",
"upgradeToPlayText": "Old fel a \"${PRO}\"-t az áruházba, hogy játszhass ezzel.",
"useDefaultText": "Alapértelmezett Használata",
+ "userSystemScriptsCreateText": "Felhasználói rendszer-scriptek létrehozása",
+ "userSystemScriptsDeleteText": "Felhasználói rendszer-scriptek törlése",
"usesExternalControllerText": "Ez a játék egy külső vezérlőt használ bemenet gyanánt.",
- "usingItunesText": "Itunes használása a zenéhez...",
+ "usingItunesText": "Itunes használata a zenéhez...",
"usingItunesTurnRepeatAndShuffleOnText": "Kérlek bizonyosodj meg arról, hogy a keverés BE van kapcsolva és az ismétlés MINDEN-re van állítva az iTunes-on.",
+ "v2AccountLinkingInfoText": "Hogy V2-es fiókot kapcsolj, menj a 'fiók kezelése' gombra.",
+ "v2AccountRequiredText": "Ehhez V2 fiókra van szükség. Fejleszd a fiókodat és próbáld meg újra.",
"validatingTestBuildText": "Teszt Szerkezet Érvényesítése...",
+ "viaText": "via",
"victoryText": "Győzelem!",
"voteDelayText": "Még nem indíthatsz szavazást újabb ${NUMBER} másodpercig",
"voteInProgressText": "Már egy szavazás folyamatban van...",
@@ -1856,6 +1991,7 @@
},
"waveText": "Hullám",
"wellSureText": "Rendben!",
+ "whatIsThisText": "Ez meg micsoda?",
"wiimoteLicenseWindow": {
"titleText": "DarwiinRemote Szerzői jog"
},
@@ -1876,7 +2012,7 @@
"winsText": "${NAME} nyert!",
"workspaceSyncErrorText": "Nem sikerült szinkronizálni a következő munkaterületet: ${WORKSPACE}. Nézd a naplót további adatokért.",
"workspaceSyncReuseText": "Nem lehet szinkronizálni a következő munkaterületet: ${WORKSPACE}. Előző munkaterület lesz használatban.",
- "worldScoresUnavailableText": "Világ eredmények elérhetetlenek",
+ "worldScoresUnavailableText": "A globális eredmények elérhetetlenek",
"worldsBestScoresText": "Világ legjobb eredményei",
"worldsBestTimesText": "Világ legjobb idejei",
"xbox360ControllersWindow": {
@@ -1887,6 +2023,7 @@
"titleText": "Xbox 360 kontroller használata a ${APP_NAME}-ban:"
},
"yesAllowText": "Igen, Engedélyez!",
- "yourBestScoresText": "Te legjobb pontjaid",
- "yourBestTimesText": "Te legjobb időid"
+ "yourBestScoresText": "A legjobb pontjaid",
+ "yourBestTimesText": "A legjobb időid",
+ "yourPrizeText": "A jutalmad:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/indonesian.json b/dist/ba_data/data/languages/indonesian.json
index 2d188245..85220b4e 100644
--- a/dist/ba_data/data/languages/indonesian.json
+++ b/dist/ba_data/data/languages/indonesian.json
@@ -1,13 +1,15 @@
{
"accountSettingsWindow": {
- "accountNameRules": "Emoji atau karakter spesial lainnya tidak dapat digunakan untuk nama akun",
+ "accountNameRules": "Nama akun tidak boleh berisi emoji atau karakter khusus lainnya",
"accountProfileText": "(profil akun)",
"accountsText": "Akun",
- "achievementProgressText": "Penghargaan: ${COUNT} dari ${TOTAL}",
+ "achievementProgressText": "Pencapaian: ${COUNT} dari ${TOTAL}",
"campaignProgressText": "Kemajuan Ekspedisi [Sulit]: ${PROGRESS}",
"changeOncePerSeason": "Kamu hanya dapat mengganti ini sekali per musim.",
"changeOncePerSeasonError": "Kamu harus menunggu sampai musim berikutnya untuk menggantinya lagi (${NUM} hari)",
+ "createAnAccountText": "Buat akun",
"customName": "Nama Khusus",
+ "deleteAccountText": "Hapus Akun",
"googlePlayGamesAccountSwitchText": "Jika kamu ingin menggunakan akun Google yang lain,\ngunakan aplikasi Google Play Games untuk mengganti.",
"linkAccountsEnterCodeText": "Masukkan kode",
"linkAccountsGenerateCodeText": "Buat Kode",
@@ -18,28 +20,30 @@
"linkedAccountsText": "Akun yang Tertaut:",
"manageAccountText": "Manajemen Akun",
"nameChangeConfirm": "Ganti namamu menjadi ${NAME}?",
- "resetProgressConfirmNoAchievementsText": "Tindakan ini akan mengatur ulang kemajuan co-op dan\nskor tertinggi Kamu (kecuali tiket).\nTidak dapat dibatalkan. Apakah Kamu yakin?",
- "resetProgressConfirmText": "Ini akan mengatur ulang kemajuan co-op,\npencapaian, dan skor tertinggi Kamu\n(kecuali tiket). Ini tidak dapat\ndibatalkan. Kamu yakin?",
- "resetProgressText": "Atur Ulang kemajuan",
+ "resetProgressConfirmNoAchievementsText": "Tindakan ini akan mengatur ulang kemajuan co-op dan\nskor tertinggi kamu (kecuali tiketmu).\nIni tidak dapat dibatalkan. Apakah kamu yakin?",
+ "resetProgressConfirmText": "Ini akan mengatur ulang kemajuan co-op,\npencapaian, dan skor tertinggi kamu\n(kecuali tiketmu). Ini tidak dapat\ndibatalkan. Apakah kamu yakin?",
+ "resetProgressText": "Atur Ulang Kemajuan",
"setAccountName": "Pasang Nama Akun",
- "setAccountNameDesc": "Pilih nama yang ditampilkan untuk akun Kamu.\nGunakan nama dari akun yang tersambung atau\nbuatlah nama khusus baru.",
- "signInInfoText": "Masuk untuk mendapatkan tiket, bermain daring,\ndan membagikan kemajuan permaian antar perangkat.",
+ "setAccountNameDesc": "Pilih nama yang ditampilkan untuk akun kamu.\nGunakan nama dari akun yang tersambung atau\nbuatlah nama khusus baru.",
+ "signInInfoText": "Masuk untuk mengumpulkan tiket, berkompetisi online,\ndan berbagi kemajuan di seluruh perangkat.",
"signInText": "Masuk",
+ "signInWithAnEmailAddressText": "Masuk dengan alamat email",
"signInWithDeviceInfoText": "(akun otomatis hanya tersedia untuk perangkat ini)",
"signInWithDeviceText": "Masuk menggunakan akun perangkat",
"signInWithGameCircleText": "Masuk dengan LingkarPermainan",
"signInWithGooglePlayText": "Masuk menggunakan Google Play",
"signInWithTestAccountInfoText": "(akun tipe lama; gunakan akun device untuk kedepannya)",
"signInWithTestAccountText": "Masuk menggunakan akun percobaan",
- "signInWithV2InfoText": "(Akun yang berfungsi di semua akun)",
- "signInWithV2Text": "Daftar dengan akun bombsquad",
+ "signInWithText": "Masuk dengan ${SERVICE}",
+ "signInWithV2InfoText": "(akun yang berfungsi di semua akun)",
+ "signInWithV2Text": "Daftar dengan akun ${APP_NAME}",
"signOutText": "Keluar",
"signingInText": "Sedang masuk...",
"signingOutText": "Sedang keluar...",
"ticketsText": "Tiket:${COUNT}",
"titleText": "Akun",
"unlinkAccountsInstructionsText": "Pilih akun yang akan diputuskan.",
- "unlinkAccountsText": "Memutus Akun.",
+ "unlinkAccountsText": "Putuskan Akun",
"unlinkLegacyV1AccountsText": "Putuskan tautan Akun lama (V1)",
"v2LinkInstructionsText": "Gunakan tautan ini untuk membuat akun atau masuk.",
"viaAccount": "(melalui akun ${NAME})",
@@ -63,13 +67,13 @@
"name": "Petinju"
},
"Dual Wielding": {
- "descriptionFull": "hubungkan 2 pengontrol (perangkat keras atau aplikasi)",
- "descriptionFullComplete": "2 pengontrol terhubung (perangkat keras atau aplikasi)",
+ "descriptionFull": "Hubungkan 2 pengontrol (perangkat keras atau aplikasi)",
+ "descriptionFullComplete": "2 Pengontrol terhubung (perangkat keras atau aplikasi)",
"name": "Dua Tangan"
},
"Flawless Victory": {
"description": "Menangkan pertandingan tanpa terkena serangan",
- "descriptionComplete": "Menang Tanpa terkena Serangan",
+ "descriptionComplete": "Menang tanpa terkena serangan",
"descriptionFull": "Menangkan ${LEVEL} tanpa terkena serangan",
"descriptionFullComplete": "Memenangkan ${LEVEL} tanpa terkena serangan",
"name": "Kemenangan Mutlak"
@@ -91,11 +95,11 @@
"descriptionComplete": "Memenangkan pertandingan tanpa memukul dan bom",
"descriptionFull": "Menangkan ${LEVEL} tanpa memukul dan tanpa menggunakan bom",
"descriptionFullComplete": "Memenangkan ${LEVEL} tanpa memukul dan tanpa bom",
- "name": "Got the Moves"
+ "name": "Mendapatkan Pergerakan"
},
"In Control": {
"descriptionFull": "hubungkan pengontrol (perangkat keras atau aplikasi)",
- "descriptionFullComplete": "pengontrol terhubung (perangkat keras atau aplikasi)",
+ "descriptionFullComplete": "Pengontrol terhubung (perangkat keras atau aplikasi)",
"name": "Terkendali"
},
"Last Stand God": {
@@ -162,17 +166,17 @@
"name": "Penyihir ${LEVEL}"
},
"Precision Bombing": {
- "description": "Menang tanpa mengambil kekuatan tambahan",
- "descriptionComplete": "Memenangkan permainan tanpa mengambil kekuatan tambahan",
- "descriptionFull": "Menangkan ${LEVEL} tanpa mengambil power-up",
- "descriptionFullComplete": "Memenangkan ${LEVEL} tanpa mengambil power-up",
+ "description": "Menang tanpa kotak bonus",
+ "descriptionComplete": "Menangkan permainan tanpa mengambil kotak bonus",
+ "descriptionFull": "Menang ${LEVEL} tanpa mengambil kotak bonus",
+ "descriptionFullComplete": "Menangkan ${LEVEL} tanpa mengambil kotak bonus",
"name": "Pengebom Jitu"
},
"Pro Boxer": {
"description": "Menang tanpa menggunakan bom",
- "descriptionComplete": "Menang tanpa menggunakan bom",
- "descriptionFull": "Menangkan ${LEVEL} tanpa menggunakan bom",
- "descriptionFullComplete": "Memenangkan ${LEVEL} tanpa menggunakan bom",
+ "descriptionComplete": "Menangkan permainan tanpa menggunakan bom",
+ "descriptionFull": "Selesaikan ${LEVEL} tanpa menggunakan bom",
+ "descriptionFullComplete": "Selesaikan ${LEVEL} tanpa menggunakan bom",
"name": "Petinju Handal"
},
"Pro Football Shutout": {
@@ -229,7 +233,7 @@
"descriptionComplete": "Mencetak skor 2000 poin",
"descriptionFull": "Cetak skor 2000 poin pada ${LEVEL}",
"descriptionFullComplete": "Mencetak skor 2000 poin pada ${LEVEL}",
- "name": "Rajanya ${LEVEL}"
+ "name": "Dewanya ${LEVEL}"
},
"Runaround Master": {
"description": "Cetak skor 500 poin",
@@ -248,27 +252,27 @@
"Sharing is Caring": {
"descriptionFull": "Berhasil berbagi permainan dengan teman",
"descriptionFullComplete": "Berhasil berbagi permainan dengan teman",
- "name": "Berbagi adalah Peduli"
+ "name": "Berbagi berarti Peduli"
},
"Stayin' Alive": {
- "description": "Menangkan permainan tanpa mati",
- "descriptionComplete": "Memenangkan permainan tanpa mati",
- "descriptionFull": "Menangkan ${LEVEL} tanpa mati",
- "descriptionFullComplete": "Memenangkan ${LEVEL} tanpa mati",
+ "description": "Menang tanpa mati",
+ "descriptionComplete": "Menangkan permainan tanpa mati",
+ "descriptionFull": "Menang ${LEVEL} tanpa mati",
+ "descriptionFullComplete": "Menangkan ${LEVEL} tanpa mati",
"name": "Bertahan Hidup"
},
"Super Mega Punch": {
- "description": "Buat 100% damage dengan satu pukulan",
- "descriptionComplete": "Membuat 100% damage dengan satu pukulan",
- "descriptionFull": "Buat 100% damage dengan satu pukulan pada ${LEVEL}",
- "descriptionFullComplete": "Membuat 100% damage dengan satu pukulan pada ${LEVEL}",
+ "description": "Buat 100% kerusakan dengan satu pukulan",
+ "descriptionComplete": "Membuat 100% kerusakan dengan satu pukulan",
+ "descriptionFull": "Buat 100% kerusakan dengan satu pukulan pada ${LEVEL}",
+ "descriptionFullComplete": "Membuat 100% kerusakan dengan satu pukulan pada ${LEVEL}",
"name": "Tinjuan Mega Super"
},
"Super Punch": {
- "description": "Buat 50% damage dengan satu pukulan",
- "descriptionComplete": "Membuat 50% damage dengan satu pukulan",
- "descriptionFull": "Buat 50% damage dengan satu pukulan pada ${LEVEL}",
- "descriptionFullComplete": "Membuat 50% damage dengan satu pukulan pada ${LEVEL}",
+ "description": "Buat 50% kerusakan dengan satu pukulan",
+ "descriptionComplete": "Membuat 50% kerusakan dengan satu pukulan",
+ "descriptionFull": "Buat 50% kerusakan dengan satu pukulan pada ${LEVEL}",
+ "descriptionFullComplete": "Membuat 50% kerusakan dengan satu pukulan pada ${LEVEL}",
"name": "Tinjuan Super"
},
"TNT Terror": {
@@ -281,7 +285,7 @@
"Team Player": {
"descriptionFull": "Mulai permainan tim dengan 4+ pemain",
"descriptionFullComplete": "Memulai permainan tim dengan 4+ pemain",
- "name": "Pemain tim"
+ "name": "Pemain Tim"
},
"The Great Wall": {
"description": "Hentikan semua musuh",
@@ -299,9 +303,9 @@
},
"Uber Football Shutout": {
"description": "Menang tanpa memperbolehkan musuh mencetak skor",
- "descriptionComplete": "Menang tanpa memperbolehkan musuh mencetak skor",
- "descriptionFull": "Menangkan ${LEVEL} tanpa memperbolehkan musuh mencetak skor",
- "descriptionFullComplete": "Memenangkan ${LEVEL} tanpa memperbolehkan musuh mencetak skor",
+ "descriptionComplete": "Menangkan tanpa memperbolehkan musuh mencetak skor",
+ "descriptionFull": "Menang ${LEVEL} tanpa memperbolehkan musuh mencetak skor",
+ "descriptionFullComplete": "Menangkan ${LEVEL} tanpa memperbolehkan musuh mencetak skor",
"name": "${LEVEL} Beres"
},
"Uber Football Victory": {
@@ -326,24 +330,29 @@
"name": "Juara ${LEVEL}"
}
},
- "achievementsRemainingText": "Achievement Tersisa:",
- "achievementsText": "Achievement",
- "achievementsUnavailableForOldSeasonsText": "Maaf, spesifik achievement tidak tersedia untuk musim lama.",
- "activatedText": "${THING} telah aktif",
+ "achievementsRemainingText": "Pencapaian Tersisa:",
+ "achievementsText": "Pencapaian",
+ "achievementsUnavailableForOldSeasonsText": "Maaf, pencapaian spesifik tidak tersedia untuk musim lama.",
+ "activatedText": "${THING} telah aktif.",
"addGameWindow": {
- "getMoreGamesText": "Game Lain...",
- "titleText": "Tambah Game"
+ "getMoreGamesText": "Dapatkan Permainan Lain...",
+ "titleText": "Tambah Permainan"
},
+ "addToFavoritesText": "Tambahkan ke Favorit",
+ "addedToFavoritesText": "Tambah '${NAME}' ke dalam Favorit.",
+ "allText": "Semua",
"allowText": "Izinkan",
"alreadySignedInText": "Akunmu telah masuk di perangkat lain;\nSilakan beralih akun atau menutup permainanmu \ndi perangkat lain dan coba lagi.",
"apiVersionErrorText": "Modul ${NAME} gagal dimuat; Menarget api-version ${VERSION_USED}; kami membutuhkan ${VERSION_REQUIRED}.",
+ "applyText": "Terapkan",
+ "areYouSureText": "Apakah kamu yakin?",
"audioSettingsWindow": {
- "headRelativeVRAudioInfoText": "(\"Auto\" nyalakan ini hanya jika menggunakan headphone)",
+ "headRelativeVRAudioInfoText": "(\"Otomatis\" nyalakan ini hanya jika menggunakan headphone)",
"headRelativeVRAudioText": "VR Audio Head-Relative",
"musicVolumeText": "Volume Musik",
"soundVolumeText": "Volume Suara",
"soundtrackButtonText": "Pengiring lagu",
- "soundtrackDescriptionText": "(masukkan musik Kamu untuk diputar saat permainan)",
+ "soundtrackDescriptionText": "(masukkan musik kamu untuk diputar saat permainan)",
"titleText": "Audio"
},
"autoText": "Otomatis",
@@ -351,28 +360,39 @@
"banThisPlayerText": "Melarang Pemain Ini",
"bestOfFinalText": "Terbaik dari ${COUNT} Final",
"bestOfSeriesText": "Terbaik dari ${COUNT}:",
+ "bestOfUseFirstToInstead": 0,
"bestRankText": "Urutan terbaikmu #${RANK}",
- "bestRatingText": "Rating terbaikmu ${RATING}",
+ "bestRatingText": "Nilai terbaikmu ${RATING}",
"bombBoldText": "BOM",
"bombText": "Bom",
"boostText": "Dorongan",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} dikonfigurasi di aplikasinya sendiri.",
"buttonText": "tombol",
- "canWeDebugText": "Bolehkah BombSquad mengirim informasi kerusakan\ndan info penggunaan ke pengembang secara otomatis? \n\nData pribadi tidak akan dikirim dan\nmembantu game berjalan lebih baik.",
+ "canWeDebugText": "Bolehkah ${APP_NAME} untuk\nsecara otomatis melaporkan\nbug, kerusakan, dan\ninfo penggunaan dasar\nkepada pengembang?",
"cancelText": "Batal",
"cantConfigureDeviceText": "Maaf, ${DEVICE} tidak dapat dikonfigurasi.",
- "challengeEndedText": "Tantangan selesai",
- "chatMuteText": "Abaikan Percakapan",
- "chatMutedText": "Percakapan Diabaikan",
- "chatUnMuteText": "Menampilkan kembali percakapan",
+ "challengeEndedText": "Tantangan selesai.",
+ "chatMuteText": "Bisukan Percakapan",
+ "chatMutedText": "Percakapan Dibisukan",
+ "chatUnMuteText": "Tampilkan kembali percakapan",
+ "chests": {
+ "prizeOddsText": "Peluang Hadiah",
+ "reduceWaitText": "Kurangi Menunggu",
+ "slotDescriptionText": "Slot ini dapat menahan peti.\n\nDapatkan peti dengan memainkan level kampanye,\njuara di turnamen, dan menyelesaikan\npencapaian.",
+ "slotText": "Slot Peti ${NUM}",
+ "slotsFullWarningText": "PERINGATAN: Semua slot petimu penuh.\nPeti apa pun yang kamu peroleh dalam permainan ini akan hilang.",
+ "unlocksInText": "Terbuka dalam"
+ },
"choosingPlayerText": "",
- "completeThisLevelToProceedText": "Kamu harus menyelesaikan\nlevel ini untuk dapat lanjut!",
- "completionBonusText": "Bonus Kelengkapan",
+ "claimText": "Klaim",
+ "codesExplainText": "Kode telah disediakan oleh pengembang\nuntuk didiagnosa dan memperbaiki isu akun.",
+ "completeThisLevelToProceedText": "Kamu harus menyelesaikan\nlevel ini untuk melanjutkan!",
+ "completionBonusText": "Bonus Penyelesaian",
"configControllersWindow": {
"configureControllersText": "Atur Pengontrol",
"configureKeyboard2Text": "Atur Keyboard Player 2",
"configureKeyboardText": "Atur Keyboard",
- "configureMobileText": "Perangkat ponsel sebagai pengontrol",
+ "configureMobileText": "Perangkat Ponsel sebagai Pengontrol",
"configureTouchText": "Atur Kontrol Layar",
"ps3Text": "Pengontrol PS3",
"titleText": "Pengontrol",
@@ -380,78 +400,79 @@
"xbox360Text": "Pengontrol Xbox 360"
},
"configGamepadSelectWindow": {
- "androidNoteText": "Catatan: pengontrol dapat digunakan berdasarkan versi Android Kamu.",
- "pressAnyButtonText": "Tekan tombol kontroller yang\n ingin Kamu atur,,,",
+ "androidNoteText": "Catatan: pengontrol yang didukung bervariasi berdasarkan perangkat dan versi Android.",
+ "pressAnyButtonText": "Tekan tombol apapun di pengontrol\n yang ingin kamu atur...",
"titleText": "Konfigurasi Pengontrol"
},
"configGamepadWindow": {
"advancedText": "Lanjutan",
"advancedTitleText": "Pengaturan Pengontrol Lanjutan",
- "analogStickDeadZoneDescriptionText": "(nyalakan ini jika karaktermu ngedrift saat kamu melepaskan analog stik)",
- "analogStickDeadZoneText": "Analog Stick Zona Mati",
- "appliesToAllText": "(Berlakukan ke semua kontrol tipe ini)",
+ "analogStickDeadZoneDescriptionText": "(nyalakan ini jika karaktermu ngedrift saat kamu melepaskan stik analog)",
+ "analogStickDeadZoneText": "Stik Analog Zona Mati",
+ "appliesToAllText": "(terapkan ke semua pengontrol tipe ini)",
"autoRecalibrateDescriptionText": "(nyalakan ini jika karaktermu tidak bergerak dengan kecepatan penuh)",
- "autoRecalibrateText": "Otomatis kalibrasi kembali stik analog",
+ "autoRecalibrateText": "Otomatis Kalibrasi Stik Analog",
"axisText": "axis",
"clearText": "hapus",
"dpadText": "dpad",
- "extraStartButtonText": "Tambahan tombol start",
- "ifNothingHappensTryAnalogText": "Jika tidak terjadi apa-apa,coba berlakukan stik analog langsung",
- "ifNothingHappensTryDpadText": "Jika tidak terjadi apa-apa,coba berlakukan ke d-pad langsung",
- "ignoreCompletelyDescriptionText": "Cegah pengontrol ini untuk mempengaruhi game atau menu",
+ "extraStartButtonText": "Tambahan Tombol Start",
+ "ifNothingHappensTryAnalogText": "Jika tidak terjadi apa-apa, coba tetapkan ke stik analog.",
+ "ifNothingHappensTryDpadText": "Jika tidak terjadi apa-apa, coba tetapkan ke d-pad.",
+ "ignoreCompletelyDescriptionText": "(cegah pengontrol ini untuk mempengaruhi game atau menu)",
"ignoreCompletelyText": "Abaikan Sepenuhnya",
- "ignoredButton1Text": "Abaikan tombol 1",
- "ignoredButton2Text": "Abaikan tombol 2",
- "ignoredButton3Text": "Abaikan tombol 3",
- "ignoredButton4Text": "Abaikan tombol 4",
- "ignoredButtonDescriptionText": "(Gunakan ini untuk mencegah tombol 'home' atau 'sync' yang mempengaruhi UI)",
- "pressAnyAnalogTriggerText": "Tekan Tombol analog....",
- "pressAnyButtonOrDpadText": "Tekan Tombol dpad",
+ "ignoredButton1Text": "Abaikan Tombol 1",
+ "ignoredButton2Text": "Abaikan Tombol 2",
+ "ignoredButton3Text": "Abaikan Tombol 3",
+ "ignoredButton4Text": "Abaikan Tombol 4",
+ "ignoredButtonDescriptionText": "(gunakan ini untuk mencegah tombol 'home' atau 'sync' dari mempengaruhi UI)",
+ "pressAnyAnalogTriggerText": "Tekan tombol analog....",
+ "pressAnyButtonOrDpadText": "Tekan tombol dpad",
"pressAnyButtonText": "Tekan tombol",
- "pressLeftRightText": "Tekan Tombol kiri atau kanan",
+ "pressLeftRightText": "Tekan tombol kiri atau kanan",
"pressUpDownText": "Tekan tombol atas atau bawah..",
- "runButton1Text": "Jalankan tombol 1",
- "runButton2Text": "Jalankan tombol 2",
- "runTrigger1Text": "Jalankan pelatuk 1",
- "runTrigger2Text": "Jalankan pelatuk 2",
- "runTriggerDescriptionText": "(Analog memungkinkan kamu untuk lari pada berbagai kecepatan)",
- "secondHalfText": "Gunakan ini untuk pengontrol kedua dari\n2-pengontrol-dalam-1 alat yang\nditunjukan sebagai pengontrol tunggal",
+ "runButton1Text": "Jalankan Tombol 1",
+ "runButton2Text": "Jalankan Tombol 2",
+ "runTrigger1Text": "Jalankan Pelatuk 1",
+ "runTrigger2Text": "Jalankan Pelatuk 2",
+ "runTriggerDescriptionText": "(analog memungkinkan kamu untuk lari pada berbagai kecepatan)",
+ "secondHalfText": "Gunakan ini untuk pengontrol kedua dari\n2-pengontrol-dalam-1 alat yang\nditunjukkan sebagai pengontrol tunggal.",
"secondaryEnableText": "Aktifkan",
- "secondaryText": "Pengontrol kedua",
- "startButtonActivatesDefaultDescriptionText": "(Matikan jika tombol start Kamu lebih dari tombol 'menu')",
- "startButtonActivatesDefaultText": "Tombol start mengaktifkan widget biasanya",
+ "secondaryText": "Pengontrol Sekunder",
+ "startButtonActivatesDefaultDescriptionText": "(matikan jika tombol start kamu lebih dari tombol 'menu')",
+ "startButtonActivatesDefaultText": "Tombol Start Mengaktifkan Widget Asal",
"titleText": "Pengaturan Pengontrol",
"twoInOneSetupText": "Pengaturan Pengontrol 2-dalam-1",
- "uiOnlyDescriptionText": "(Cegah kontrol ini dari mengikuti permainan yang asli)",
- "uiOnlyText": "Batas untuk menu guna",
- "unassignedButtonsRunText": "Tidak berlakukan semua tombol lari",
+ "uiOnlyDescriptionText": "(cegah pengontrol ini dari bergabung sebuah permainan sebenarnya)",
+ "uiOnlyText": "Batas untuk Guna Menu",
+ "unassignedButtonsRunText": "Tidak Berlakukan Semua Tombol Lari",
"unsetText": "",
- "vrReorientButtonText": "Tombol reorientasi VR"
+ "vrReorientButtonText": "Tombol Reorientasi VR"
},
"configKeyboardWindow": {
- "configuringText": "Mengaturi ${DEVICE}",
- "keyboard2NoteText": "Catatan: beberapa keyboard hanya dapat memasukan beberapa tombol yang ditekan pada satu waktu,\njadi memiliki keyboard pemain kedua mungkin bekerja lebih baik\njika ada pemisah keyboard yang terpasang untuk digunakan\nPerlu dicatat bahwa Kamu masih butuh memasukan tombol unik untuk\nkedua pemain di kasus ini"
+ "configuringText": "Mengatur ${DEVICE}",
+ "keyboard2NoteText": "Catatan: beberapa keyboard hanya dapat memasukan beberapa tombol yang ditekan pada satu waktu,\njadi memiliki keyboard pemain kedua mungkin bekerja lebih baik\njika ada pemisah keyboard yang terpasang untuk digunakan.\nPerlu dicatat bahwa kamu masih butuh memasukkan tombol unik untuk\nkedua pemain di kasus ini"
},
"configTouchscreenWindow": {
- "actionControlScaleText": "Ukuran kontrol aksi",
+ "actionControlScaleText": "Skala Kontrol Aksi",
"actionsText": "Aksi",
"buttonsText": "tombol",
"dragControlsText": "< geser kontrol untuk memposisikannya >",
- "joystickText": "joystick",
- "movementControlScaleText": "Skala kontrol penggerak",
+ "joystickText": "joystik",
+ "movementControlScaleText": "Skala Kontrol Penggerak",
"movementText": "Pergerakan",
- "resetText": "Kembalikan ke awal",
- "swipeControlsHiddenText": "Sembunyikan ikon geser",
- "swipeInfoText": "Model kontrol 'geser' membutuhkan penggunaan sedikit \nnamun membuat mudah untuk bermain tanpa melihat pengontrol",
+ "resetText": "Ulangi",
+ "swipeControlsHiddenText": "Sembunyikan Ikon Geser",
+ "swipeInfoText": "Gaya kontrol 'geser' butuh sedikit terbiasa namun \nmembuat mudah untuk bermain tanpa melihat pengontrol.",
"swipeText": "geser",
- "titleText": "Atur layar sentuh"
+ "titleText": "Atur Layar Sentuh"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} dapat dikonfigurasikan pada aplikasi Pengaturan Sistem.",
"configureItNowText": "Atur sekarang?",
"configureText": "Konfigurasi",
"connectMobileDevicesWindow": {
"amazonText": "Amazon Appstore",
- "appStoreText": "App store",
- "bestResultsText": "Untuk hasil yang lebih baik, Kamu membutuhkan jaringan Wi-Fi yang bebas lag.\nKamu dapat menurunkan lag Wi-Fi dengan cara mematikan alat wireless lainnya,\ndengan bermain dekat dengan router Wi-Fi dan dengan menyambungkan ke host\ngame langsung ke jaringan via ethernet",
+ "appStoreText": "App Store",
+ "bestResultsText": "Untuk hasil yang lebih baik, kamu membutuhkan jaringan Wi-Fi yang bebas lag.\nKamu dapat menurunkan lag Wi-Fi dengan cara mematikan perangkat nirkabel lainnya,\ndengan bermain dekat dengan router Wi-Fi dan dengan menyambungkan ke host\ngame langsung ke jaringan via ethernet.",
"explanationText": "Untuk menggunakan smartphone atau tablet sebagai pengontrol,\npasang \"${REMOTE_APP_NAME}\" app. Alat apapun dapat tersambung ke\n${APP_NAME} game melalui Wi-Fi, dan ini gratis!",
"forAndroidText": "Untuk Android:",
"forIOSText": "Untuk iOS:",
@@ -464,40 +485,40 @@
"controlsText": "Kontrol",
"coopSelectWindow": {
"activenessAllTimeInfoText": "Ini akan tidak berlaku ke ranking semua waktu.",
- "activenessInfoText": "Kelipatan ini naik di hari ketika Kamu bermain\ndan turun di haru ketika Kamu tidak bermain",
+ "activenessInfoText": "Kelipatan ini naik di hari ketika kamu bermain\ndan turun di hari ketika kamu tidak bermain",
"activityText": "Aktivitas",
- "campaignText": "Ekspedisi",
- "challengesInfoText": "Dapatkan hadiah dengan menyelesaikan mini games\n\nHadiah dan tingkat kesulitan level bertambah\nsaat tantangan terselesaikan \ndan berkurang jika waktu habis atau menyerah",
+ "campaignText": "Kampanye",
+ "challengesInfoText": "Dapatkan hadiah dengan menyelesaikan mini games.\n\nHadiah dan tingkat kesulitan level bertambah\nsetiap kali tantangan terselesaikan dan\nberkurang jika waktu habis atau menyerah.",
"challengesText": "Tantangan",
- "currentBestText": "Terbaik saat ini",
+ "currentBestText": "Terbaik Saat Ini",
"customText": "Kustom",
"entryFeeText": "Masuk",
- "forfeitConfirmText": "Kehilangan tantangan ini??",
- "forfeitNotAllowedYetText": "Tantangan ini belum dapat hiang",
- "forfeitText": "Kehilangan",
+ "forfeitConfirmText": "Menyerah tantangan ini?",
+ "forfeitNotAllowedYetText": "Tantangan ini belum dapat menyerah.",
+ "forfeitText": "Menyerah",
"multipliersText": "Kelipatan",
- "nextChallengeText": "Tantangan berikutnya",
- "nextPlayText": "Permainan berikutnya",
- "ofTotalTimeText": "Dari ${TOTAL}",
- "playNowText": "Main sekarang",
+ "nextChallengeText": "Tantangan Berikut",
+ "nextPlayText": "Permainan Berikut",
+ "ofTotalTimeText": "dari ${TOTAL}",
+ "playNowText": "Main Sekarang",
"pointsText": "Poin",
- "powerRankingFinishedSeasonUnrankedText": "(Sesi berakhir tidak terangking)",
+ "powerRankingFinishedSeasonUnrankedText": "(musim berakhir tak berperingkat)",
"powerRankingNotInTopText": "(tidak di atas ${NUMBER})",
"powerRankingPointsEqualsText": "= ${NUMBER} poin",
"powerRankingPointsMultText": "(x ${NUMBER} poin)",
"powerRankingPointsText": "${NUMBER} poin",
"powerRankingPointsToRankedText": "(${CURRENT} dari ${REMAINING} poin)",
- "powerRankingText": "Rangking power",
+ "powerRankingText": "Peringkat Kekuatan",
"prizesText": "Hadiah",
- "proMultInfoText": "Pemain dengan peningkatan ${PRO}\nmendapatkan sebuah ${PERCENT}% poin tambahan disini.",
+ "proMultInfoText": "Pemain dengan peningkatan ${PRO}\nmendapatkan sebuah ${PERCENT}% poin tambahan di sini.",
"seeMoreText": "Lebih...",
"skipWaitText": "Lewati Tunggu",
- "timeRemainingText": "Waktu tersisa",
- "toRankedText": "untuk Peringkat",
+ "timeRemainingText": "Waktu Tersisa",
+ "toRankedText": "Ke Peringkat",
"totalText": "Total",
- "tournamentInfoText": "Bersaing untuk skor tinggi dengan\npemain lain di liga Kamu.\n\nHadiah diberikan ke atas\npapan skor",
- "welcome1Text": "Selamat datang di ${LEAGUE}.Kamu dapat tingkatkan \nranking liga dengan dapatkan peringkat berlian, selesaikan \npenghargaan dan menenangkan piala di turnamen",
- "welcome2Text": "Kamu juga dapat mendapatkan tiket dari aktivitas yang sama.\nTiket dapat digunakan untuk membuka karakter baru, peta, dan\nmini games,untuk masuk liga, dan lainnya",
+ "tournamentInfoText": "Bersaing untuk skor tinggi dengan\npemain lain di liga kamu.\n\nHadiah diberikan pada pemain skor\ntertinggi ketika waktu turnamen berakhir.",
+ "welcome1Text": "Selamat datang di ${LEAGUE}. Kamu dapat meningkatkan \nperingkat liga dengan mendapatkan nilai berlian, selesaikan \npencapaian, dan menenangkan piala di turnamen.",
+ "welcome2Text": "Kamu juga bisa mendapatkan tiket dari aktivitas yang sama.\nTiket dapat digunakan untuk membuka karakter baru, peta, dan\nmini-games, untuk masuk turnamen, dan lainnya.",
"yourPowerRankingText": "Peringkat Kekuatan Kamu:"
},
"copyConfirmText": "Tersalin ke papan klip.",
@@ -506,13 +527,13 @@
"createEditPlayerText": "",
"createText": "Buat",
"creditsWindow": {
- "additionalAudioArtIdeasText": "Audio tambahan,Early Artwork, dan ide dari ${NAME}",
- "additionalMusicFromText": "Musik Tambahan Dari ${NAME}",
- "allMyFamilyText": "Semua teman saya dan keluarga saya yang menolong untuk memainkan test",
- "codingGraphicsAudioText": "Koding, Grafik, Dan audio dari ${NAME}",
- "languageTranslationsText": "Penerjemah bahasa:",
+ "additionalAudioArtIdeasText": "Audio Tambahan, Karya Seni Awal, dan Ide oleh ${NAME}",
+ "additionalMusicFromText": "Musik tambahan dari ${NAME}",
+ "allMyFamilyText": "Semua teman saya dan keluarga saya yang menolong untuk coba memainkan",
+ "codingGraphicsAudioText": "Koding, Grafik, Dan Audio oleh ${NAME}",
+ "languageTranslationsText": "Penerjemah Bahasa:",
"legalText": "Legal:",
- "publicDomainMusicViaText": "Musik publik dominan via ${NAME}",
+ "publicDomainMusicViaText": "Musik Domain Publik via ${NAME}",
"softwareBasedOnText": "Software ini berasal dari bagian kerja dari ${NAME}",
"songCreditText": "${TITLE} Dimainkan oleh ${PERFORMER}\nKomposisi oleh ${COMPOSER}, Aransemen oleh ${ARRANGER}, Publikasi oleh ${PUBLISHER},\nSumber dari ${SOURCE}",
"soundAndMusicText": "Suara & Musik:",
@@ -532,9 +553,9 @@
"runCPUBenchmarkText": "Menjalankan CPU Benchmark",
"runGPUBenchmarkText": "Jalankan GPU Benchmark",
"runMediaReloadBenchmarkText": "Menjalankan Media-Reload Benchmark",
- "runStressTestText": "Menjalankan test stress",
+ "runStressTestText": "Menjalankan uji stres",
"stressTestPlayerCountText": "Jumlah Pemain",
- "stressTestPlaylistDescriptionText": "Daftar Putar Stres Tes",
+ "stressTestPlaylistDescriptionText": "Daftar Putar Uji Stres",
"stressTestPlaylistNameText": "Nama Daftar Putar",
"stressTestPlaylistTypeText": "Tipe Daftar Putar",
"stressTestRoundDurationText": "Durasi Permainan",
@@ -548,22 +569,27 @@
"demoText": "Demo",
"denyText": "Tolak",
"deprecatedText": "Usang",
+ "descriptionText": "Keterangan",
"desktopResText": "Resolusi Desktop",
"deviceAccountUpgradeText": "Peringatan:\nKamu masuk dengan akun perangkat (${NAME}).\nAkun perangkat akan dihilangkan pada pembaharuan yg akan datang.\nTingkatkan ke akun V2 jika kamu ingin pertahankan kemajuanmu.",
"difficultyEasyText": "Mudah",
"difficultyHardOnlyText": "Khusus Mode Sulit",
"difficultyHardText": "Sulit",
- "difficultyHardUnlockOnlyText": "Level ekspedisi ini khusus untuk mode sulit. \nKamu pikir kamu bisa!?!?!",
- "directBrowserToURLText": "dimohon langsung ke web-browser untuk URL:",
+ "difficultyHardUnlockOnlyText": "Level ini hanya dapat dibuka di mode sulit. \nKamu pikir kamu bisa!?!?!",
+ "directBrowserToURLText": "Mohon langsung ke web-browser untuk URL:",
"disableRemoteAppConnectionsText": "Matikan Koneksi App-Remot",
- "disableXInputDescriptionText": "Izinkan lebih dari 4 pengontrol tapi mungkin agak lemot.",
+ "disableXInputDescriptionText": "Izinkan lebih dari 4 pengontrol tapi mungkin tidak bekerja dengan baik.",
"disableXInputText": "Blokir XInput",
+ "disabledText": "Dimatikan",
+ "discardText": "Buang",
+ "discordFriendsText": "Ingin mencari teman baru untuk bermain?\nGabung ke Discord kami dan temukan teman baru!",
+ "discordJoinText": "Gabung ke Discord",
"doneText": "Selesai",
"drawText": "Seri",
"duplicateText": "Duplikat",
"editGameListWindow": {
"addGameText": "Tambah\nPermainan",
- "cantOverwriteDefaultText": "Tidak dapat mengubah daftar putar asal!",
+ "cantOverwriteDefaultText": "Tidak dapat menimpa daftar putar asal!",
"cantSaveAlreadyExistsText": "Daftar Putar dengan nama ini sudah ada!",
"cantSaveEmptyListText": "Tidak dapat menyimpan daftar putar kosong!",
"editGameText": "Ubah\nPermainan",
@@ -574,42 +600,43 @@
"titleText": "Penyusun Daftar Putar"
},
"editProfileWindow": {
- "accountProfileInfoText": "Profil spesial ini mengikuti nama\ndan ikon sesuai akun Kamu.\n\n${ICONS}\n\nBuat profil lain untuk menggunakan\nnama dan ikon yang berbeda.",
- "accountProfileText": "(Profil Akun)",
+ "accountProfileInfoText": "Profil spesial ini mengikuti nama\ndan ikon sesuai akun kamu.\n\n${ICONS}\n\nBuat profil lain untuk menggunakan\nnama dan ikon yang berbeda.",
+ "accountProfileText": "(profil akun)",
"availableText": "Nama ini \"${NAME}\" tersedia.",
- "characterText": "Karakter",
- "checkingAvailabilityText": "Memeriksa Ketersediaan \"${NAME}\"...",
+ "characterText": "karakter",
+ "checkingAvailabilityText": "Memeriksa ketersediaan \"${NAME}\"...",
"colorText": "warna",
- "getMoreCharactersText": "Dapatkan karakter lain...",
- "getMoreIconsText": "Dapatkan ikon lain...",
+ "getMoreCharactersText": "Dapatkan Karakter Lain...",
+ "getMoreIconsText": "Dapatkan Ikon Lain...",
"globalProfileInfoText": "Profil pemain global dijamin untuk memiliki nama unik\ndi seluruh dunia. Termasuk juga ikon lain.",
- "globalProfileText": "(Profil Global)",
+ "globalProfileText": "(profil global)",
"highlightText": "highlight",
"iconText": "ikon",
"localProfileInfoText": "Profile lokal tidak mempunyai ikon dan nama \ntidak terjamin unik. Tingkatkan ke profil global \nuntuk mendapatkan nama unik dan dapat menambahkan ikon kustom.",
- "localProfileText": "(Profil lokal)",
+ "localProfileText": "(profil lokal)",
"nameDescriptionText": "Nama Pemain",
"nameText": "Nama",
- "randomText": "Acak",
+ "profileAlreadyExistsText": "Profil dengan nama tersebut sudah ada.",
+ "randomText": "acak",
"titleEditText": "Ubah Profil",
"titleNewText": "Profil Baru",
"unavailableText": "\"${NAME}\" tidak tersedia; coba nama lain.",
- "upgradeProfileInfoText": "Ini akan jadi nama Kamu dalam game ini\ndan memungkinkan Kamu untuk menetapkan ikon kustom.",
+ "upgradeProfileInfoText": "Ini akan jadi nama kamu dalam game ini\ndan memungkinkan kamu untuk menetapkan ikon kustom.",
"upgradeToGlobalProfileText": "Tingkatkan ke Profil Global"
},
"editSoundtrackWindow": {
"cantDeleteDefaultText": "Kamu tidak dapat menghapus soundtrack asal.",
"cantEditDefaultText": "Tidak dapat mengubah soundtrack asal. Gandakan atau buat soundtrack baru.",
- "cantOverwriteDefaultText": "tidak dapat menimpa soundtrack asal",
- "cantSaveAlreadyExistsText": "Soundtrack dengan nama ini telah digunakan!",
+ "cantOverwriteDefaultText": "Tidak dapat menimpa soundtrack asal",
+ "cantSaveAlreadyExistsText": "Soundtrack dengan nama itu telah ada!",
"defaultGameMusicText": "",
"defaultSoundtrackNameText": "Soundtrack Asal",
"deleteConfirmText": "Hapus Soundtrack:\n\n'${NAME}'?",
"deleteText": "Hapus\nSoundtrack",
- "duplicateText": "Gandakan\nSoundtrack",
- "editSoundtrackText": "Pengaturan Soundtrack",
+ "duplicateText": "Duplikat\nSoundtrack",
+ "editSoundtrackText": "Editor Soundtrack",
"editText": "Ubah\nSoundtrack",
- "fetchingITunesText": "Mengambil playlist Music App...",
+ "fetchingITunesText": "mengambil daftar putar Apl. Musik...",
"musicVolumeZeroWarning": "Perhatian: suara musik menjadi 0",
"nameText": "Nama",
"newSoundtrackNameText": "Soundtrack saya ${COUNT}",
@@ -621,25 +648,28 @@
"titleText": "Soundtrack",
"useDefaultGameMusicText": "Musik Game Asal",
"useITunesPlaylistText": "Daftar Putar Apl. Musik",
- "useMusicFileText": "Data Musik (mp3, dll)",
- "useMusicFolderText": "berkas dari Data Musik"
+ "useMusicFileText": "File Musik (mp3, dll)",
+ "useMusicFolderText": "Berkas dari File Musik"
},
"editText": "Edit",
+ "enabledText": "Dinyalakan",
"endText": "Akhiri",
"enjoyText": "Nikmati!",
"epicDescriptionFilterText": "${DESCRIPTION} dalam slow-motion yang epik.",
"epicNameFilterText": "${NAME} Epik",
"errorAccessDeniedText": "akses ditolak",
- "errorDeviceTimeIncorrectText": "Waktu di perangkatmu berbeda ${HOURS} jam.\nIni akan menyebabkan masalah.\nSilahkan cek pengaturan jam dan zona waktu anda.",
+ "errorDeviceTimeIncorrectText": "Waktu di perangkatmu berbeda ${HOURS} jam.\nIni akan menyebabkan masalah.\nSilahkan cek pengaturan jam dan zona waktu kamu.",
"errorOutOfDiskSpaceText": "media penyimpanan tidak cukup",
"errorSecureConnectionFailText": "Tidak bisa mendirikan koneksi aman; fungsi jaringan mungkin gagal.",
"errorText": "Kesalahan!",
"errorUnknownText": "kesalahan tak teridentifikasi",
"exitGameText": "Keluar dari ${APP_NAME}?",
- "exportSuccessText": "'${NAME}' TEREXPORT",
+ "expiredAgoText": "Kadaluarsa ${T} yang lalu",
+ "expiresInText": "Kadaluarsa dalam ${T}",
+ "exportSuccessText": "'${NAME}' terekspor.",
"externalStorageText": "Penyimpanan Eksternal",
"failText": "Gagal",
- "fatalErrorText": "O-ow, sesuatu hilang atau rusak. \nCoba install ulang BombSquad atau kontak\n${EMAIL} untuk bantuan.",
+ "fatalErrorText": "O-ow, sesuatu hilang atau rusak.\nCoba pasang ulang BombSquad atau hubungi\n${EMAIL} untuk bantuan.",
"fileSelectorWindow": {
"titleFileFolderText": "Pilih File atau Folder",
"titleFileText": "Ambil File",
@@ -647,56 +677,59 @@
"useThisFolderButtonText": "Gunakan Folder"
},
"filterText": "Filter",
- "finalScoreText": "Skor Final",
- "finalScoresText": "Skor Final",
- "finalTimeText": "Waktu Final",
- "finishingInstallText": "Selesai menginstall, tunggu sebentar...",
- "fireTVRemoteWarningText": "* Untuk mempermudah, gunakan\npengontrol permainan atau pasang\naplikasi '${REMOTE_APP_NAME}'\ndi HP atau tabletmu.",
- "firstToFinalText": "Final Pertama Mencapai ${COUNT}",
- "firstToSeriesText": "Pertama Mencapai ${COUNT}",
+ "finalScoreText": "Skor Akhir",
+ "finalScoresText": "Skor Akhir",
+ "finalTimeText": "Waktu Akhir",
+ "finishingInstallText": "Selesai memasang; tunggu sebentar...",
+ "fireTVRemoteWarningText": "* Untuk pengalaman lebih baik, gunakan\npengontrol permainan atau pasang\naplikasi '${REMOTE_APP_NAME}'\ndi HP dan tabletmu.",
+ "firstToFinalText": "Pertama Mencapai ${COUNT} Akhir",
+ "firstToSeriesText": "Pertama Mencapai ${COUNT} Seri",
"fiveKillText": "MATI LIMA!!",
"flawlessWaveText": "Gelombang Mulus!",
"fourKillText": "MATI EMPAT!!",
"friendScoresUnavailableText": "Skor teman tidak tersedia.",
"gameCenterText": "PusatGame",
"gameCircleText": "LingkaranGame",
- "gameLeadersText": "Pemimpin Game ${COUNT}",
+ "gameLeadersText": "Pemimpin ${COUNT} Permainan",
"gameListWindow": {
"cantDeleteDefaultText": "Kamu tidak dapat menghapus daftar putar asal.",
"cantEditDefaultText": "Tidak dapat mengubah Daftar Putar asal! Gandakan atau buat baru.",
- "cantShareDefaultText": "Kamu tidak dapat bagikan playlist semula",
+ "cantShareDefaultText": "Kamu tidak dapat bagikan playlist semula.",
"deleteConfirmText": "Hapus \"${LIST}\"?",
"deleteText": "Hapus\nDaftar Putar",
- "duplicateText": "Gandakan\nDaftar Putar",
+ "duplicateText": "Duplikat\nDaftar Putar",
"editText": "Ubah\nDaftar Putar",
"newText": "Buat\nDaftar Putar",
+ "pointsToWinText": "Poin Untuk Menang",
+ "seriesLengthText": "Panjang Seri",
"showTutorialText": "Lihat Panduan",
"shuffleGameOrderText": "Acak Urutan Game",
"titleText": "Ubah ${TYPE} Daftar Putar"
},
"gameSettingsWindow": {
- "addGameText": "Tambah Game"
+ "addGameText": "Tambah Permainan"
},
- "gamesToText": "${WINCOUNT} menang lawan ${LOSECOUNT} menang",
+ "gamesToText": "${WINCOUNT} menang lawan ${LOSECOUNT}",
"gatherWindow": {
- "aboutDescriptionLocalMultiplayerExtraText": "Catatan: tiap perangkat dapat punya lebih dari\nsatu pemain jika memang ada pengontrol yang cukup.",
- "aboutDescriptionText": "Gunakan tab ini untuk mengadakan acara.\n\nDengan adanya acara, Kamu dapat bermain\ndengan teman di perangkat yang berbeda.\n\nGunakan tombol ${PARTY} di kanan atas\nuntuk chat dan berinteraksi di acara. \n(pada pengontrol, tekan ${BUTTON} saat di menu)",
- "aboutText": "Perihal",
+ "aboutDescriptionLocalMultiplayerExtraText": "Ingat: tiap perangkat dalam acara dapat punya lebih\ndari satu pemain jika memang ada pengontrol yang cukup.",
+ "aboutDescriptionText": "Gunakan tab ini untuk mengadakan acara.\n\nDengan adanya acara, kamu dapat bermain\ndengan teman di perangkat yang berbeda.\n\nGunakan tombol ${PARTY} di kanan atas\nuntuk chat dan berinteraksi di acara. \n(pada pengontrol, tekan ${BUTTON} saat di menu)",
+ "aboutText": "Tentang",
"addressFetchErrorText": "",
"appInviteMessageText": "${NAME} mengirim ${COUNT} tiket ke ${APP_NAME}",
"appInviteSendACodeText": "Kirimkan Kode",
"appInviteTitleText": "Undangan Aplikasi ${APP_NAME}",
- "bluetoothAndroidSupportText": "(bekerja dengan semua Android yang punya Bluetooth)",
+ "bluetoothAndroidSupportText": "(bekerja dengan semua Android yang mendukung Bluetooth)",
"bluetoothDescriptionText": "Buat/ikut acara lewat Bluetooth:",
- "bluetoothHostText": "Adakan acara!",
- "bluetoothJoinText": "Ikut acara!",
+ "bluetoothHostText": "Adakan acara lewat Bluetooth",
+ "bluetoothJoinText": "Ikut acara lewat Bluetooth",
"bluetoothText": "Bluetooth",
"checkingText": "memeriksa...",
"copyCodeConfirmText": "Kode disalin ke papan klip.",
"copyCodeText": "Salin Kode",
- "dedicatedServerInfoText": "Untuk hasil terbaik, buatlah server yang bagus. Lihat bombsquadgame.com/server untuk membuatnya",
+ "dedicatedServerInfoText": "Untuk hasil terbaik, buatlah server khusus. Lihat bombsquadgame.com/server untuk mempelajari caranya.",
+ "descriptionShortText": "Gunakan jendela bersama untuk mengadakan pesta.",
"disconnectClientsText": "Ini akan memutuskan sambungan ${COUNT} pemain\ndi acaramu. Apa kamu yakin?",
- "earnTicketsForRecommendingAmountText": "Teman Kamu akan mendapatkan ${COUNT} tiket jika mereka memainkan game ini\n(dan Kamu akan mendapatkan ${YOU_COUNT} untuk setiap mereka memainkan game ini)",
+ "earnTicketsForRecommendingAmountText": "Teman akan mendapatkan ${COUNT} tiket jika mereka memainkan game ini\n(dan kamu akan mendapatkan ${YOU_COUNT} untuk setiap mereka yang bermain)",
"earnTicketsForRecommendingText": "Bagikan permainan\nuntuk tiket gratis...",
"emailItText": "Lewat Surel",
"favoritesSaveText": "Simpan Sebagai Favorit",
@@ -707,41 +740,42 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} tiket dari ${NAME}",
"friendPromoCodeAwardText": "Kamu akan mendapatkan ${COUNT} tiket setiap kode ini digunakan.",
"friendPromoCodeExpireText": "kode ini akan berakhir dalam ${EXPIRE_HOURS} jam dan hanya berlaku untuk pemain baru.",
- "friendPromoCodeInstructionsText": "Untuk menggunakannya, buka ${APP_NAME} dan buka \"Pengaturan-> Lanjutan-> Masukkan Kode\".\nLihat bombsquadgame.com untuk tautan unduhan untuk semua platform yang didukung.",
- "friendPromoCodeRedeemLongText": "ini dapat digunakan untuk ${COUNT} tiket gratis hingga batas maksimal ${MAX_USES} orang.",
- "friendPromoCodeRedeemShortText": "ini dapat digunkanan untuk mendapatkan ${COUNT} tiket.",
- "friendPromoCodeWhereToEnterText": "(di \"Pengaturan-> Lanjutan-> Masukkan Kode\")",
+ "friendPromoCodeInstructionsText": "Untuk menggunakan, buka ${APP_NAME} dan pergi ke \"Pengaturan->Lanjutan->Kirim Info\".\nKunjungi bombsquadgame.com untuk link unduhan untuk semua platform yang didukung.",
+ "friendPromoCodeRedeemLongText": "Ini dapat ditukarkan untuk ${COUNT} tiket gratis hingga batas maksimal ${MAX_USES} orang.",
+ "friendPromoCodeRedeemShortText": "Ini dapat ditukarkan untuk ${COUNT} tiket dalam permainan.",
+ "friendPromoCodeWhereToEnterText": "(di \"Pengaturan->Lanjutan->Kirim Info\")",
"getFriendInviteCodeText": "Dapatkan Kode Undangan Teman",
"googlePlayDescriptionText": "Undang pemain Google Play ke acaramu:",
"googlePlayInviteText": "Undang",
- "googlePlayReInviteText": "Ada ${COUNT} pemain Google Play di acaramu\nyang akan terputus jika Kamu undang ulang. \nJangan lupa masukan mereka ke undangan.",
+ "googlePlayReInviteText": "Ada ${COUNT} pemain Google Play di acaramu\nyang akan terputus jika kamu undang ulang. \nMasukkan mereka ke undangan baru untuk mengundang mereka lagi.",
"googlePlaySeeInvitesText": "Lihat Undangan",
"googlePlayText": "Google Play",
"googlePlayVersionOnlyText": "(versi Android / Google Play)",
- "hostPublicPartyDescriptionText": "Selenggarakan Acara Publik",
+ "hostPublicPartyDescriptionText": "Buat Acara Publik",
"hostingUnavailableText": "Hosting Tidak Tersedia",
- "inDevelopmentWarningText": "Catatan:\n\nBermain dalam jaringan masih baru dan dalam\nperkembangan. Sementara, sangat disarankan para\npemain ada di jaringan Wi-Fi yang sama.",
+ "inDevelopmentWarningText": "Catatan:\n\nBermain dalam jaringan masih baru dan dalam\npengembangan. Untuk sekarang, sangat disarankan para\npemain ada di jaringan Wi-Fi yang sama.",
"internetText": "Internet",
- "inviteAFriendText": "Teman Kamu belum memainkan ini? undang mereka sekarang\ndan mereka akan mendapatkan ${COUNT} tiket gratis.",
+ "inviteAFriendText": "Temanmu belum memiliki permainan? Undang mereka untuk\nmencoba dan mereka akan mendapatkan ${COUNT} tiket gratis.",
"inviteFriendsText": "Undang Teman",
"joinPublicPartyDescriptionText": "Gabung dengan Acara Publik",
"localNetworkDescriptionText": "Bergabunglah dengan Acara Terdekat (LAN, Bluetooth, dll.)",
"localNetworkText": "Jaringan Lokal",
- "makePartyPrivateText": "Buat acaraku pribadi",
- "makePartyPublicText": "Buat acaraku publik",
+ "makePartyPrivateText": "Buat Acaraku Pribadi",
+ "makePartyPublicText": "Buat Acaraku Publik",
"manualAddressText": "Alamat",
"manualConnectText": "Hubungkan",
"manualDescriptionText": "Ikut acara di alamat:",
"manualJoinSectionText": "Gabung Berdasarkan Alamat",
- "manualJoinableFromInternetText": "Apakah Kamu dapat bergabung internet?:",
+ "manualJoinableFromInternetText": "Apakah kamu dapat bergabung dari internet?:",
"manualJoinableNoWithAsteriskText": "TIDAK*",
"manualJoinableYesText": "YA",
- "manualRouterForwardingText": "*untuk memperbaiki, coba dengan mengkonfigurasi router ke UDP port ${PORT} ke alamat lokal Kamu",
+ "manualRouterForwardingText": "*untuk memperbaiki, coba dengan mengkonfigurasi router forward ke UDP port ${PORT} ke alamat lokal kamu",
"manualText": "Manual",
- "manualYourAddressFromInternetText": "Alamat Kamu dari internet:",
- "manualYourLocalAddressText": "Alamat lokal Kamu:",
- "nearbyText": "Dekat",
+ "manualYourAddressFromInternetText": "Alamat kamu dari internet:",
+ "manualYourLocalAddressText": "Alamat lokal kamu:",
+ "nearbyText": "Terdekat",
"noConnectionText": "",
+ "noPartiesAddedText": "Tidak ada Acara yang Ditambahkan",
"otherVersionsText": "(Versi lain)",
"partyCodeText": "Kode Acara",
"partyInviteAcceptText": "Terima",
@@ -749,15 +783,15 @@
"partyInviteGooglePlayExtraText": "(Lihat tab 'Google Play' di jendela 'Berkumpul')",
"partyInviteIgnoreText": "Abaikan",
"partyInviteText": "${NAME} mengundangmu\nke acaranya!",
- "partyNameText": "Nama acara",
+ "partyNameText": "Nama Acara",
"partyServerRunningText": "Server acara Anda sedang berjalan.",
"partySizeText": "ukuran acara",
"partyStatusCheckingText": "memeriksa status...",
"partyStatusJoinableText": "sekarang orang lain dapat gabung ke acaramu dari internet",
- "partyStatusNoConnectionText": "Tidak dapat terhubung ke server",
- "partyStatusNotJoinableText": "orang lain gak dapat gabung ke acaramu lewat internet",
+ "partyStatusNoConnectionText": "tidak dapat terhubung ke server",
+ "partyStatusNotJoinableText": "orang lain tidak dapat gabung ke acaramu lewat internet",
"partyStatusNotPublicText": "acaramu bukan acara publik",
- "pingText": "Ping",
+ "pingText": "ping",
"portText": "Port",
"privatePartyCloudDescriptionText": "Acara pribadi dijalankan di server cloud khusus; tidak diperlukan konfigurasi router.",
"privatePartyHostText": "Adakan Acara Pribadi",
@@ -767,20 +801,20 @@
"publicText": "Publik",
"requestingAPromoCodeText": "Memesan Kode...",
"sendDirectInvitesText": "Kirim Undangan",
- "shareThisCodeWithFriendsText": "Bagikan kode ini ke teman-teman mu!",
+ "shareThisCodeWithFriendsText": "Bagikan kode ini ke teman-teman mu:",
"showMyAddressText": "Tunjukkan Alamatku",
"startHostingPaidText": "Host Sekarang Dengan ${COST}",
"startHostingText": "Host",
"startStopHostingMinutesText": "Anda dapat memulai dan menghentikan hosting gratis untuk ${MINUTES} menit berikutnya.",
"stopHostingText": "Hentikan Hosting",
"titleText": "Gabung",
- "wifiDirectDescriptionBottomText": "Jika semua perangkat punya tab 'Wi-Fi Direct', maka seharusnya semua dapat saling\nkoneksi. Ketika sudah konek semua, buat team\ndi tab 'Jaringan Lokal', seperti Wi-Fi biasa.\n\nUntuk hasil maksimal, host Wi-Fi Direct juga harus sebagai host team di ${APP_NAME}.",
- "wifiDirectDescriptionTopText": "Wi-Fi Direct dapat digunakan untuk koneksi Android tanpa hotspot.\nBekerja paling bagus pada Android 4.2 lebih.\n\nUntuk itu, buka Pengaturan Wi-Fi dan pilih 'Wi-Fi Direct' di menu.",
+ "wifiDirectDescriptionBottomText": "Jika semua perangkat punya 'Wi-Fi Direct' panel, mereka seharusnya bisa menggunakannya\nuntuk mencari dan terhubung satu sama lain. Ketika semua perangkat telah terhubung, kamu dapat\nbuat acara di sini menggunakan tab 'Jaringan Lokal', sama seperti dengan jaringan Wi-Fi biasa.\n\nUntuk hasil maksimal, host Wi-Fi Direct juga harus sebagai host acara di ${APP_NAME}.",
+ "wifiDirectDescriptionTopText": "Wi-Fi Direct dapat digunakan untuk koneksi Android tanpa hotspot.\nBekerja paling bagus pada Android 4.2 atau lebih baru.\n\nUntuk itu, buka Pengaturan Wi-Fi dan pilih 'Wi-Fi Direct' di menu.",
"wifiDirectOpenWiFiSettingsText": "Buka Pengaturan Wi-Fi",
"wifiDirectText": "Wi-Fi Direct",
"worksBetweenAllPlatformsText": "(bekerja antar platform)",
- "worksWithGooglePlayDevicesText": "(bekerja antar perangkat yang menggunakan versi Android)",
- "youHaveBeenSentAPromoCodeText": "Kamu telah mengirim sebuah kode promo ${APP_NAME}!"
+ "worksWithGooglePlayDevicesText": "(bekerja antar perangkat yang menggunakan versi Android) ",
+ "youHaveBeenSentAPromoCodeText": "Kamu telah mengirim sebuah ${APP_NAME} kode promo:"
},
"getTicketsWindow": {
"freeText": "Gratis!",
@@ -796,27 +830,35 @@
"ticketPack5Text": "Paket Tiket Raksasa",
"ticketPack6Text": "Paket Tiket Berlimpah",
"ticketsFromASponsorText": "Tonton iklan\nuntuk ${COUNT} tiket",
- "ticketsText": "${COUNT} tiket",
+ "ticketsText": "${COUNT} Tiket",
"titleText": "Dapatkan Tiket",
"unavailableLinkAccountText": "Maaf, pembelian tidak dapat dilakukan di perangkat ini.\nsebagai antisipasi, kamu dapat menautkan akun ini ke perangkat\nlain dan melakukan pembelian di sana.",
- "unavailableTemporarilyText": "mohon maaf, saat ini layanan tidak tersedia; mohon dicoba lagi lain waktu.",
+ "unavailableTemporarilyText": "Mohon maaf, saat ini layanan tidak tersedia; mohon dicoba lagi lain waktu.",
"unavailableText": "Maaf, tidak tersedia.",
"versionTooOldText": "Maaf, versi permainan ini terlalu usang; silahkan perbaharui dengan yang terbaru.",
"youHaveShortText": "kamu memiliki ${COUNT}",
"youHaveText": "kamu memiliki ${COUNT} tiket"
},
+ "goldPass": {
+ "desc1InfTokensText": "Token tidak terbatas.",
+ "desc2NoAdsText": "Tidak ada iklan.",
+ "desc3ForeverText": "Selamanya.",
+ "goldPassText": "Tiket Emas"
+ },
"googleMultiplayerDiscontinuedText": "Maaf, Google's multiplayer service tidak lagi tersedia.\nSaya sedang bekerja pada penggantian secepat mungkin.\nHingga saat itu, silakan coba metode koneksi lainnya.\n-Eric",
- "googlePlayPurchasesNotAvailableText": "Pembayaran Google Play tidak tersedia.\nMungkin perlu memperbaharui Playstore anda.",
+ "googlePlayPurchasesNotAvailableText": "Pembayaran Google Play tidak tersedia.\nKamu perlu memperbaharui apl. Store mu.",
"googlePlayServicesNotAvailableText": "Layanan Google Play tidak tersedia.\nBeberapa fungsi dari aplikasi mungkin padam.",
"googlePlayText": "Google Play",
"graphicsSettingsWindow": {
"alwaysText": "Selalu",
"fullScreenCmdText": "Layar Penuh (Cmd-F)",
"fullScreenCtrlText": "Layar Penuh (Ctrl+F)",
+ "fullScreenText": "Layar Penuh",
"gammaText": "Gamma",
"highText": "Tinggi",
"higherText": "Tertinggi",
"lowText": "Rendah",
+ "maxFPSText": "FPS Maks",
"mediumText": "Sedang",
"neverText": "Tak Pernah",
"resolutionText": "Resolusi",
@@ -828,42 +870,43 @@
"visualsText": "Visual"
},
"helpWindow": {
- "bombInfoText": "- Bomb -\nLebih kuat dari Tinju, tapi\ndapat menjadi bom bunuh diri.\nCoba untuk melempar sebelum\nsumbu akan habis.",
- "canHelpText": "${APP_NAME} Solusinya!",
- "controllersInfoText": "Kamu dapat bermain ${APP_NAME} dengan temanmu melalui sebuah\nJaringan, atau kamu dapat bermain dalam perangkat yang sama\njika kamu memiliki kontrol yang cukup. ${APP_NAME} menyediakan\npengontrol digital melalui aplikasi '${REMOTE_APP_NAME}'.\nlihat di Pengaturan -> Kontrol untuk info lebih lanjut.",
- "controllersInfoTextRemoteOnly": "Anda bisa bermain ${APP_NAME} bersama dengan teman melalui jaringan, \natau kalian semua bisa bermain di perangkat yang sama dengan menggunakan ponsel sebagai pengontrol melalui aplikasi \n'${REMOTE_APP_NAME}' gratis.",
- "controllersText": "Kontrol",
- "controlsSubtitleText": "karakter ${APP_NAME} Memiliki beberapa gerakan dasar:",
+ "bombInfoText": "- Bomb -\nLebih kuat dari Tinju, tapi\ndapat menjadi bom bunuh diri.\nCoba untuk melempar sebelum\nsumbunya habis.",
+ "bombInfoTextScale": 0.5,
+ "canHelpText": "${APP_NAME} dapat menolong!",
+ "controllersInfoText": "Kamu dapat bermain ${APP_NAME} dengan temanmu melalui sebuah jaringan, atau kamu \ndapat bermain dalam perangkat yang sama jika kamu memiliki pengontrol yang cukup.\n${APP_NAME} mendukung berbagai macam pengontrol; kamu bahkan dapat menggunakan ponsel \nsebagai pengontrol melalui apl. gratis '${REMOTE_APP_NAME}'.\nLihat di Pengaturan->Pengontrol untuk info lebih lanjut.",
+ "controllersInfoTextRemoteOnly": "Kamu bisa bermain ${APP_NAME} bersama dengan teman melalui jaringan, atau kalian\nsemua bisa bermain di perangkat yang sama dengan menggunakan ponsel sebagai \npengontrol melalui aplikasi '${REMOTE_APP_NAME}' gratis.",
+ "controllersText": "Pengontrol",
+ "controlsSubtitleText": "Karakter bersahabatmu ${APP_NAME} memiliki beberapa gerakan dasar:",
"controlsText": "Kontrol",
- "devicesInfoText": "Versi VR dari ${APP_NAME} dapat dimainkan lewat jaringan dengan\nversi reguler. Jadi siapkan ponsel, Tablet atau Komputermu\ndan Mainkan Game ini! Fitur ini juga dapat menjadi menyenangkan\ndengan cara mengizinkan orang lain melihat permainan Kamu saat\nmenggunakan VR!",
+ "devicesInfoText": "Versi VR dari ${APP_NAME} dapat dimainkan lewat jaringan dengan\nversi reguler. Jadi siapkan ponsel, Tablet, dan Komputermu\ndan mainkan game ini. Fitur ini juga dapat menjadi menyenangkan\ndengan cara mengizinkan orang lain melihat permainan kamu saat\nmenggunakan VR!",
"devicesText": "Perangkat",
- "friendsGoodText": "Sangat diperlukan. ${APP_NAME} Sangat menyenangkan dengan beberapa\npemain (maksimal 8 pemain) dalam sekali permainan.",
+ "friendsGoodText": "Sangat diperlukan. ${APP_NAME} sangat menyenangkan dengan beberapa\npemain (maksimal 8 pemain) dalam sekali permainan.",
"friendsText": "Teman",
- "jumpInfoText": "- Lompat -\nLompat untuk melewati gundukan,\nmelempar lebih jauh, dan\nmengekspresikan kebehagiaan Kamu.",
+ "jumpInfoText": "- Lompat -\nLompat untuk melewati celah,\nmelempar lebih jauh, dan\nmengekspresikan kebehagiaan kamu.",
"orPunchingSomethingText": "Atau menghajar sesuatu, melemparnya ke Jurang, dan meledakannya dengan beberapa bom mematikan.",
"pickUpInfoText": "- Angkat -\nMengangkat Bendera, Musuh, atau\napapun yang tidak melekat di tanah.\nTekan sekali lagi untuk melempar.",
- "powerupBombDescriptionText": "Memberikan Kamu 3 bom sekaligus.\nLebih baik dari pada 1.",
+ "powerupBombDescriptionText": "Memberikan kamu 3 bom sekaligus\nlebih baik dari pada satu.",
"powerupBombNameText": "Bomb Beruntun",
"powerupCurseDescriptionText": "Hindari ini segera jika kamu \ntidak ingin mati!",
"powerupCurseNameText": "Kutukan",
- "powerupHealthDescriptionText": "Mengembalikan darah Kamu\nseperti semula.",
+ "powerupHealthDescriptionText": "Mengembalikan darah kamu\nseperti semula.",
"powerupHealthNameText": "Kotak Medis",
- "powerupIceBombsDescriptionText": "Lebih lemah dari bom biasa\ntapi membuat musuh Kamu beku,\npanik, gelisah, dan rapuh.",
+ "powerupIceBombsDescriptionText": "Lebih lemah dari bom biasa\ntapi membuat musuh kamu beku,\ndan rapuh.",
"powerupIceBombsNameText": "Bom Beku",
"powerupImpactBombsDescriptionText": "Sedikit lebih lemah dari bom\nbiasa, tapi akan meledak saat terbentur.",
"powerupImpactBombsNameText": "Bom Pemicu",
- "powerupLandMinesDescriptionText": "berisi 3 paket; berguna untuk\nbertahan atau menghentikan\nlangkah musuhmu.",
+ "powerupLandMinesDescriptionText": "Berisi 3 paket; Berguna untuk\nbertahan atau menghentikan\nlangkah musuhmu.",
"powerupLandMinesNameText": "Ranjau",
"powerupPunchDescriptionText": "Membuat tinjumu lebih kuat,\nlebih cepat, bahkan lebih baik.",
"powerupPunchNameText": "Sarung Tinju",
- "powerupShieldDescriptionText": "menahan beberapa serangan\nsehingga darah Kamu tidak berkurang.",
+ "powerupShieldDescriptionText": "Menahan beberapa serangan\nsehingga darah kamu tidak berkurang.",
"powerupShieldNameText": "Energi Pelindung",
"powerupStickyBombsDescriptionText": "Lengket ke apapun yang tersentuh.\nSungguh Menjijikkan.",
"powerupStickyBombsNameText": "Bom Lengket",
"powerupsSubtitleText": "Jelas sekali, tidak ada game yang bakal seru tanpa Kekuatan Tambahan:",
"powerupsText": "Kekuatan Tambahan",
- "punchInfoText": "- Tinju -\nTinju lebih merusak saat\nKamu bergerak cepat. Jadi lari\ndan berputarlah seperti orang gila.",
- "runInfoText": "- Lari -\nSEMUA tombol dapat digunakan untuk lari. Kecuali tombol pusar Kamu, haha. Lari\ndapat membuat Kamu cepat tapi sulit untuk berbelok, jadi hati-hati dengan jurang.",
+ "punchInfoText": "- Tinju -\nTinju lebih merusak saat\nkamu bergerak cepat. Jadi lari\ndan berputarlah seperti orang gila.",
+ "runInfoText": "- Lari -\nSEMUA tombol dapat digunakan untuk lari. Lari dapat membuat kamu cepat tapi\nsulit untuk berbelok, jadi hati-hati dengan jurang.",
"someDaysText": "Terkadang, kamu ingin sekali menghajar sesuatu atau menghancurkan sesuatu.",
"titleText": "Bantuan ${APP_NAME}",
"toGetTheMostText": "Untuk menikmati game ini, kamu perlu menyiapkan:",
@@ -872,71 +915,74 @@
"holdAnyButtonText": "",
"holdAnyKeyText": "",
"hostIsNavigatingMenusText": "- ${HOST} sedang merenung untuk memilih menu -",
- "importPlaylistCodeInstructionsText": "Masukan kode untuk mengimpor playlist :",
+ "importPlaylistCodeInstructionsText": "Masukan kode untuk mengimpor daftar putar:",
"importPlaylistSuccessText": "Terimpor ${TYPE} daftar putar '${NAME}'",
"importText": "Impor",
"importingText": "Mengimpor...",
"inGameClippedNameText": "dalam game akan\n\"${NAME}\"",
- "installDiskSpaceErrorText": "ERROR: Gagal menginstall. \nMungkin penyimpanan Kamu terlalu penuh. \nMohon hapus beberapa file dan coba lagi.",
+ "inboxText": "Kotak Masuk",
+ "installDiskSpaceErrorText": "KESALAHAN: Gagal memasang. \nMungkin penyimpanan kamu terlalu penuh. \nMohon hapus beberapa file dan coba lagi.",
"internal": {
"arrowsToExitListText": "tekan ${LEFT} atau ${RIGHT} untuk keluar",
- "buttonText": "Tombol",
- "cantKickHostError": "Kamu tak dapat mengeluarkan host",
+ "buttonText": "tombol",
+ "cantKickHostError": "Kamu tak dapat mengeluarkan host.",
"chatBlockedText": "${NAME} di blokir chatnya selama ${TIME} detik.",
"connectedToGameText": "'${NAME}' Bergabung",
"connectedToPartyText": "Bergabung ke team ${NAME}!",
"connectingToPartyText": "Menyambung...",
- "connectionFailedHostAlreadyInPartyText": "Sambungan Gagal, Host sedang dalam team lain.",
+ "connectionFailedHostAlreadyInPartyText": "Sambungan gagal; host sedang dalam team lain.",
"connectionFailedPartyFullText": "Koneksi gagal; acara sudah penuh",
"connectionFailedText": "Gagal Menghubungkan.",
- "connectionFailedVersionMismatchText": "Gagal menghubungkan; Host sedang menjalankan versi lain dari game ini.\nPastikan kamu memperbarui game lalu coba lagi.",
+ "connectionFailedVersionMismatchText": "Gagal menghubungkan; host sedang menjalankan versi lain dari game ini.\nPastikan kalian berdua sudah memperbaharui lalu coba lagi.",
"connectionRejectedText": "Sambungan ditolak.",
"controllerConnectedText": "${CONTROLLER} tersambung.",
"controllerDetectedText": "1 pengontrol terdeteksi.",
"controllerDisconnectedText": "${CONTROLLER} terputus.",
"controllerDisconnectedTryAgainText": "${CONTROLLER} terputus. Silahkan menghubungkan kembali.",
- "controllerForMenusOnlyText": "Pengontrol ini tidak dapat digunakan untuk bermain, hanya untuk memilih menu.",
+ "controllerForMenusOnlyText": "Pengontrol ini tidak dapat digunakan untuk bermain; hanya untuk memilih menu.",
"controllerReconnectedText": "${CONTROLLER} terhubung kembali.",
"controllersConnectedText": "${COUNT} pengontrol terhubung.",
"controllersDetectedText": "${COUNT} pengontrol terdeteksi.",
"controllersDisconnectedText": "${COUNT} pengontrol terputus.",
- "corruptFileText": "Data rusak terdeteksi. dimohon untuk pasang ulang, atau kirimkan surel ke ${EMAIL}",
+ "corruptFileText": "Data rusak terdeteksi. Mohon untuk pasang ulang, atau kirimkan surel ke ${EMAIL}",
"errorPlayingMusicText": "Gagal memutar musik: ${MUSIC}",
- "errorResettingAchievementsText": "Tidak dapat mengulang Online Achievments; dimohon coba lagi.",
+ "errorResettingAchievementsText": "Tidak dapat mengulang pencapaian online; mohon coba lagi lain waktu.",
"hasMenuControlText": "${NAME} mempunyai kendali menu.",
"incompatibleNewerVersionHostText": "Host menggunakan versi baru dari game ini\nSilakan perbarui dan coba lagi",
- "incompatibleVersionHostText": "Host berjalan dengan versi yang berbeda dengan game.\nPastikan Kamu up-to-date dan coba lagi",
+ "incompatibleVersionHostText": "Host berjalan dengan versi yang berbeda dengan game.\nPastikan kalian berdua memperbaharui dan coba lagi.",
"incompatibleVersionPlayerText": "${NAME} menjalankan versi game yang berbeda.\nPastikan versi game kalian sama dan coba lagi.",
- "invalidAddressErrorText": "Error: alamat tidak jelas.",
- "invalidNameErrorText": "Error: nama tidak jelas.",
- "invalidPortErrorText": "Error: port tidak jelas.",
+ "invalidAddressErrorText": "Kesalahan: alamat tidak jelas.",
+ "invalidNameErrorText": "Kesalahan: nama tidak jelas.",
+ "invalidPortErrorText": "Kesalahan: port tidak jelas.",
"invitationSentText": "Undangan terkirim.",
"invitationsSentText": "${COUNT} undangan terkirim.",
"joinedPartyInstructionsText": "Seseorang bergabung di acaramu.\nTekan 'Main' untuk mulai permainan.",
"keyboardText": "Keyboard",
- "kickIdlePlayersKickedText": "Mengeluarkan ${NAME} karena diam.",
- "kickIdlePlayersWarning1Text": "${NAME} akan dikeluarkan dalam ${COUNT} detik jika masih diam.",
- "kickIdlePlayersWarning2Text": "(Kamu dapat mematikan ini di Pengaturan -> Lanjutan)",
+ "kickIdlePlayersKickedText": "Mengeluarkan ${NAME} karena nganggur.",
+ "kickIdlePlayersWarning1Text": "${NAME} akan dikeluarkan dalam ${COUNT} detik jika masih nganggur.",
+ "kickIdlePlayersWarning2Text": "(kamu dapat mematikan ini di Pengaturan -> Lanjutan)",
"leftGameText": "Keluar '${NAME}'.",
"leftPartyText": "Keluar dari acara ${NAME}'",
"noMusicFilesInFolderText": "Folder tidak memiliki file musik.",
"playerJoinedPartyText": "${NAME} bergabung ke acara!",
"playerLeftPartyText": "${NAME} keluar dari acara.",
"rejectingInviteAlreadyInPartyText": "Membatalkan undangan (sudah ada di acara).",
- "serverRestartingText": "Memulai ulang. Silakan masuk dalam beberapa saat lagi",
+ "serverRestartingText": "Server memulai ulang. Silahkan gabung dalam beberapa saat lagi...",
"serverShuttingDownText": "Server sedang menutup...",
- "signInErrorText": "Gagal masuk",
+ "signInErrorText": "Gagal masuk.",
"signInNoConnectionText": "Gagal masuk. (apa jaringanmu tidak terkoneksi internet?)",
- "telnetAccessDeniedText": "ERROR: pengguna tidak mengizinkan akses telnet.",
+ "telnetAccessDeniedText": "KESALAHAN: pengguna tidak mengizinkan akses telnet.",
"timeOutText": "(waktu akan habis dalam ${TIME} detik lagi)",
- "touchScreenJoinWarningText": "Kamu telah bergabung dengan layar sentuh.\nJika ini kesalahan. tekan 'Menu->Mode Penonton' saja",
+ "touchScreenJoinWarningText": "Kamu telah bergabung dengan layar sentuh.\nJika ini kesalahan, tekan 'Menu->Tinggalkan Permainan' dengan itu.",
"touchScreenText": "Layar Sentuh",
- "unableToResolveHostText": "Error:Tidak dapat menyambung pada server",
+ "unableToCompleteTryAgainText": "Tidak dapat menyelesaikannya saat ini.\nSilakan coba lagi.",
+ "unableToResolveHostText": "Kesalahan: tidak dapat menyambung pada server.",
"unavailableNoConnectionText": "Maaf, layanan tidak tersedia (apa jaringanmu tidak terkoneksi internet?)",
- "vrOrientationResetCardboardText": "Gunakan ini untuk mengulang orientasi VR.\nUntuk memainkan game ini Kamu harus mempunyai kontroller eksternal.",
- "vrOrientationResetText": "Atur ulang orientasi VR",
- "willTimeOutText": "(waktu habis jika diam)"
+ "vrOrientationResetCardboardText": "Gunakan ini untuk mengulang orientasi VR.\nUntuk memainkan game ini kamu harus mempunyai pengontrol eksternal.",
+ "vrOrientationResetText": "Atur ulang orientasi VR.",
+ "willTimeOutText": "(waktu habis jika nganggur)"
},
+ "inventoryText": "Inventaris",
"jumpBoldText": "LOMPAT",
"jumpText": "Lompat",
"keepText": "Simpan",
@@ -947,13 +993,13 @@
"kickOccurredText": "${NAME} dikeluarkan.",
"kickQuestionText": "Keluarkan ${NAME}?",
"kickText": "Keluarkan",
- "kickVoteCantKickAdminsText": "Admin tidak dapat dikeluarkan",
- "kickVoteCantKickSelfText": "Kamu tidak dapat mengeluarkan dirimu sendiri",
+ "kickVoteCantKickAdminsText": "Admin tidak dapat dikeluarkan.",
+ "kickVoteCantKickSelfText": "Kamu tidak dapat mengeluarkan dirimu sendiri.",
"kickVoteFailedNotEnoughVotersText": "Tidak cukup pemain untuk pengambilan suara.",
- "kickVoteFailedText": "Pengambilan suara untuk mengeluarkan pemain gagal",
+ "kickVoteFailedText": "Pengambilan suara untuk mengeluarkan pemain gagal.",
"kickVoteStartedText": "Pengambilan suara untuk mengeluarkan ${NAME} sudah dimulai.",
- "kickVoteText": "Tentukan suara untuk mengeluarkan",
- "kickVotingDisabledText": "Pengambilan suara untuk mengeluarkan pemain di nonaktifkan",
+ "kickVoteText": "Tentukan Suara untuk Mengeluarkan",
+ "kickVotingDisabledText": "Pengambilan suara untuk mengeluarkan pemain di nonaktifkan.",
"kickWithChatText": "Ketik ${YES} di kolom obrolan jika setuju dan ${NO} jika tidak setuju.",
"killsTallyText": "${COUNT} pembunuhan",
"killsText": "Pembunuhan",
@@ -963,12 +1009,12 @@
"fullMenuText": "Semua Menu",
"hardText": "Sulit",
"mediumText": "Sedang",
- "singlePlayerExamplesText": "Coontoh Main Sendiri / Berteman",
+ "singlePlayerExamplesText": "Satu Pemain / Contoh Mabar",
"versusExamplesText": "Contoh Versus"
},
- "languageSetText": "Bahasa yang sedang digunakan adalah \"${LANGUAGE}\".",
+ "languageSetText": "Bahasa saat ini adalah \"${LANGUAGE}\".",
"lapNumberText": "Putaran ${CURRENT}/${TOTAL}",
- "lastGamesText": "(${COUNT} game terakhir)",
+ "lastGamesText": "(${COUNT} permainan terakhir)",
"leaderboardsText": "Papan Juara",
"league": {
"allTimeText": "Keseluruhan",
@@ -977,28 +1023,31 @@
"leagueRankText": "Peringkat Liga",
"leagueText": "Liga",
"rankInLeagueText": "#${RANK}, ${NAME} Liga${SUFFIX}",
- "seasonEndedDaysAgoText": "Musim berakhir ${NUMBER} hari yang lalu",
- "seasonEndsDaysText": "Musim berakhir ${NUMBER} hari lagi",
- "seasonEndsHoursText": "Musim berakhir ${NUMBER} jam lagi",
+ "seasonEndedDaysAgoText": "Musim berakhir ${NUMBER} hari yang lalu.",
+ "seasonEndsDaysText": "Musim berakhir ${NUMBER} hari lagi.",
+ "seasonEndsHoursText": "Musim berakhir ${NUMBER} jam lagi.",
"seasonEndsMinutesText": "Musim berakhir ${NUMBER} menit lagi",
"seasonText": "Musim ${NUMBER}",
- "tournamentLeagueText": "Kamu harus berada di liga ${NAME} untuk memasukinya",
- "trophyCountsResetText": "Hitungan trofimu akan diulang di musim berikutnya"
+ "tournamentLeagueText": "Kamu harus berada di liga ${NAME} untuk memasuki turnamen ini.",
+ "trophyCountsResetText": "Hitungan trofimu akan diulang di musim berikutnya.",
+ "upToDateBonusDescriptionText": "Pemain yang menjalankan versi terbaru\npermainan menerima bonus ${PERCENT}% di sini.",
+ "upToDateBonusText": "Bonus Terkini"
},
+ "learnMoreText": "Pelajari Lebih Lanjut",
"levelBestScoresText": "Skor terbaik di ${LEVEL}",
"levelBestTimesText": "Waktu terbaik di ${LEVEL}",
"levelFastestTimesText": "Waktu tercepat pada ${LEVEL}",
"levelHighestScoresText": "Skor tertinggi pada ${LEVEL}",
- "levelIsLockedText": "${LEVEL} terbuka.",
- "levelMustBeCompletedFirstText": "Selesaikan ${LEVEL} dulu.",
+ "levelIsLockedText": "${LEVEL} terkunci.",
+ "levelMustBeCompletedFirstText": "Selesaikan ${LEVEL} terlebih dahulu.",
"levelText": "Level ${NUMBER}",
"levelUnlockedText": "Level Terbuka!",
"livesBonusText": "Nyawa Tambahan",
"loadingText": "memuat",
- "loadingTryAgainText": "Memuat; Coba lagi nanti.. sabar ya..",
+ "loadingTryAgainText": "Memuat; coba lagi dalam beberapa saat...",
"macControllerSubsystemBothText": "Keduanya (Tidak direkomendasikan)",
"macControllerSubsystemClassicText": "Klasik",
- "macControllerSubsystemDescriptionText": "Coba ubah ini jika pengontrol Kamu tidak bekerja",
+ "macControllerSubsystemDescriptionText": "(coba ubah ini jika pengontrol kamu tidak bekerja)",
"macControllerSubsystemMFiNoteText": "Pengontrol yang dibuat-untuk-ios/Mac terdeteksi;\nKamu mungkin ingin mengaktifkanya melalui Pengaturan -> Pengontrol",
"macControllerSubsystemMFiText": "Dibuat-untuk-iOS/Mac",
"macControllerSubsystemTitleText": "Dukungan pengontrol",
@@ -1006,63 +1055,70 @@
"creditsText": "Kredit",
"demoMenuText": "Menu Demo",
"endGameText": "Akhiri Permainan",
- "endTestText": "Akhiri Pengetesan",
+ "endTestText": "Akhiri Uji Coba",
"exitGameText": "Keluar dari Permainan",
- "exitToMenuText": "Ke Menu?",
+ "exitToMenuText": "Keluar ke Menu?",
"howToPlayText": "Cara bermain",
"justPlayerText": "(Hanya ${NAME})",
- "leaveGameText": "Mode Penonton",
- "leavePartyConfirmText": "Yakin Ingin Keluar?",
- "leavePartyText": "Keluar",
+ "leaveGameText": "Keluar Permainan",
+ "leavePartyConfirmText": "Yakin keluar dari acara?",
+ "leavePartyText": "Keluar Acara",
"quitText": "Berhenti",
"resumeText": "Lanjutkan",
"settingsText": "Pengaturan"
},
"makeItSoText": "Jadilah Demikian",
- "mapSelectGetMoreMapsText": "Arena Lainnya",
- "mapSelectText": "Pilih",
- "mapSelectTitleText": "Arena ${GAME}",
- "mapText": "Arena",
+ "mapSelectGetMoreMapsText": "Dapatkan Peta Lainnya...",
+ "mapSelectText": "Pilih...",
+ "mapSelectTitleText": "Peta ${GAME}",
+ "mapText": "Peta",
"maxConnectionsText": "Koneksi maksimal",
"maxPartySizeText": "Besar Ukuran Maksimal",
"maxPlayersText": "Jumlah Pemain Maksimal",
"merchText": "Merchandise!",
- "modeArcadeText": "Mode Arcade",
+ "modeArcadeText": "Mode Arkade",
"modeClassicText": "Mode Klasik",
"modeDemoText": "Mode Demo",
+ "moreSoonText": "Akan segera hadir lebih banyak..",
+ "mostDestroyedPlayerText": "Banyak Pemain Dihancurkan",
"mostValuablePlayerText": "Pemain Terunggul",
"mostViolatedPlayerText": "Pemain Teraniaya",
"mostViolentPlayerText": "Pemain Terkejam",
"moveText": "Gerak",
- "multiKillText": "${COUNT} MATI!!",
+ "multiKillText": "${COUNT} MATI!!!",
"multiPlayerCountText": "${COUNT} pemain",
- "mustInviteFriendsText": "CATATAN: kamu harus mengundang teman di\nopsi \"${GATHER}\" atau pasang\npengontrol untuk bermain di mode multi-pemain",
- "nameBetrayedText": "${NAME} membunuh rekannya ${VICTIM}",
+ "mustInviteFriendsText": "Catatan: kamu harus mengundang teman di\nopsi \"${GATHER}\" panel atau pasang\npengontrol untuk bermain di mode multi-pemain.",
+ "nameBetrayedText": "${NAME} membunuh rekannya ${VICTIM}.",
"nameDiedText": "${NAME} meninggal.",
- "nameKilledText": "${NAME} membunuh ${VICTIM}",
- "nameNotEmptyText": "Nama harus diisi!",
- "nameScoresText": "${NAME} mencetak poin!",
+ "nameKilledText": "${NAME} membunuh ${VICTIM}.",
+ "nameNotEmptyText": "Nama tidak boleh kosong!",
+ "nameScoresText": "${NAME} Mencetak Poin!",
"nameSuicideKidFriendlyText": "${NAME} meninggal tiba-tiba.",
"nameSuicideText": "${NAME} bunuh diri.",
"nameText": "Nama",
"nativeText": "Asli",
+ "newExclaimText": "Baru!",
"newPersonalBestText": "Rekor Pribadi Baru!",
- "newTestBuildAvailableText": "Uji coba baru tersedia! (${VERSION} bangun ${BUILD}).\nDapatkan di ${ADDRESS}",
+ "newTestBuildAvailableText": "Uji coba baru tersedia! (${VERSION} build ${BUILD}).\nDapatkan di ${ADDRESS}",
"newText": "Baru",
- "newVersionAvailableText": "Versi ${APP_NAME} terbaru tersedia",
- "nextAchievementsText": "Pencapaian berikutnya:",
+ "newVersionAvailableText": "Versi ${APP_NAME} terbaru tersedia! (${VERSION})",
+ "nextAchievementsText": "Pencapaian Berikutnya:",
"nextLevelText": "Level Berikutnya",
"noAchievementsRemainingText": "- tidak ada",
"noContinuesText": "(tidak dapat melanjutkan)",
- "noExternalStorageErrorText": "Tidak ada penyimpanan eksternal",
+ "noExternalStorageErrorText": "Tidak ada penyimpanan eksternal di perangkat ini",
"noGameCircleText": "Kesalahan: tidak masuk ke LingkaranGame",
+ "noMessagesText": "Tidak ada pesan.",
+ "noPluginsInstalledText": "Tidak ada plugin yang terpasang",
"noProfilesErrorText": "Kamu tidak punya profil pemain, jadi '${NAME}' dipakai. \nMasuk Pengaturan->Profil Pemain untuk membuat profil. ",
"noScoresYetText": "Belum ada skor.",
+ "noServersFoundText": "Server tidak ditemukan.",
"noThanksText": "Tidak, Terima kasih",
- "noTournamentsInTestBuildText": "PERHATIAN: Skor turnamen dari build tes ini akan di abaikan",
- "noValidMapsErrorText": "Tidak ada arena valid untuk game ini.",
+ "noTournamentsInTestBuildText": "PERINGATAN: Skor turnamen dari build uji coba ini akan di abaikan.",
+ "noValidMapsErrorText": "Tidak ada peta valid untuk tipe permainan ini.",
"notEnoughPlayersRemainingText": "Tidak ada pemain tersisa; keluar dan main ulang.",
"notEnoughPlayersText": "Kamu butuh sedikitnya ${COUNT} pemain untuk memulai permainan!",
+ "notEnoughTicketsText": "Tiket tidak cukup!",
"notNowText": "Jangan Sekarang",
"notSignedInErrorText": "Kamu harus masuk untuk lakukan ini.",
"notSignedInGooglePlayErrorText": "Kamu harus masuk pakai Google Play untuk lakukan ini.",
@@ -1075,26 +1131,29 @@
"onText": "Nyala",
"oneMomentText": "Sebentar...",
"onslaughtRespawnText": "${PLAYER} akan bangkit pada gelombang ${WAVE}",
+ "openMeText": "Buka Aku!",
+ "openNowText": "Buka Sekarang",
+ "openText": "Buka",
"orText": "${A} atau ${B}",
"otherText": "Lainnya...",
"outOfText": "(#${RANK} dari ${ALL})",
- "ownFlagAtYourBaseWarning": "Benderamu harus\nberada di basismu!",
+ "ownFlagAtYourBaseWarning": "Benderamu harus\nberada di basismu untuk mencetak skor!",
"packageModsEnabledErrorText": "Game yang melalui jaringan tidak diperbolehkan ketika mod-paket-lokal diaktifkan (lihat Pengaturan->Lanjutan) ",
"partyWindow": {
"chatMessageText": "Pesan Obrolan",
- "emptyText": "acaramu kosong",
- "hostText": "(pembuat)",
+ "emptyText": "Acaramu kosong",
+ "hostText": "(pemilik)",
"sendText": "Kirim",
- "titleText": "acaramu"
+ "titleText": "Acaramu"
},
"pausedByHostText": "(terhenti oleh pemilik)",
"perfectWaveText": "Gelombang Sempurna!",
"pickUpText": "Ambil",
"playModes": {
- "coopText": "Koloni",
- "freeForAllText": "Saling bunuh",
+ "coopText": "Mabar",
+ "freeForAllText": "Bebas-untuk-Semua",
"multiTeamText": "Multi-Tim",
- "singlePlayerCoopText": "Pemain Tunggal / Lawan komputer",
+ "singlePlayerCoopText": "Pemain Tunggal / Mabar",
"teamsText": "Tim"
},
"playText": "Main",
@@ -1106,7 +1165,7 @@
"playerCountAbbreviatedText": "${COUNT}p",
"playerDelayedJoinText": "${PLAYER} akan masuk pada ronde berikutnya.",
"playerInfoText": "Info Pemain",
- "playerLeftText": "${PLAYER} meninggalkan game.",
+ "playerLeftText": "${PLAYER} meninggalkan permainan.",
"playerLimitReachedText": "Batas pemain ${COUNT} tercapai; tidak dapat bergabung lagi.",
"playerProfilesWindow": {
"cantDeleteAccountProfileText": "Kamu tidak dapat menghapus akun profilmu.",
@@ -1118,19 +1177,19 @@
"titleText": "Profil Pemain"
},
"playerText": "Pemain",
- "playlistNoValidGamesErrorText": "Playlist ini mempunyai game terbuka yang tidak valid.",
- "playlistNotFoundText": "Daftar Putar tidak ditemukan",
+ "playlistNoValidGamesErrorText": "Daftar putar ini berisi permainan terbuka yang tidak valid.",
+ "playlistNotFoundText": "daftar Putar tidak ditemukan",
"playlistText": "Daftar Putar",
"playlistsText": "Daftar Putar",
- "pleaseRateText": "Jika Kamu menyukai ${APP_NAME}, yuk luangkan waktu sejenak untuk menilai dan membubuhkan komentar. Ini akan membantu kami untuk menyempurnakan permainan yang akan datang.\n\nterima kasih!\n-eric",
+ "pleaseRateText": "Jika kamu menyukai ${APP_NAME}, yuk luangkan waktu sejenak \nuntuk menilai atau membubuhkan komentar. Ini akan membantu \nkami menyempurnakan dan mendukung permainan dalam pengembangan ke depannya.\n\nterima kasih!\n-eric",
"pleaseWaitText": "Mohon tunggu...",
- "pluginClassLoadErrorText": "Error saat memuat class plugin '${PLUGIN}':${ERROR}",
- "pluginInitErrorText": "Error saat menjalankan plugin '${PLUGIN}': ${ERROR}",
+ "pluginClassLoadErrorText": "Kesalahan saat memuat class plugin '${PLUGIN}': ${ERROR}",
+ "pluginInitErrorText": "Kesalahan saat menjalankan plugin '${PLUGIN}': ${ERROR}",
"pluginSettingsText": "Pengaturan Plugin",
"pluginsAutoEnableNewText": "Otomatis nyalakan Plugin",
- "pluginsDetectedText": "Plugin baru terdeteksi. Mulai ulang game untuk mengaktifkan pluginnya, atau mengaturnya di pengaturan.",
- "pluginsDisableAllText": "Matikan semua Plugin",
- "pluginsEnableAllText": "Nyalakan semua Plugin",
+ "pluginsDetectedText": "Plugin baru terdeteksi. Mulai ulang untuk mengaktifkan pluginnya, atau mengaturnya di pengaturan.",
+ "pluginsDisableAllText": "Matikan Semua Plugin",
+ "pluginsEnableAllText": "Nyalakan Semua Plugin",
"pluginsRemovedText": "${NUM} plugin tidak lagi ditemukan.",
"pluginsText": "Plugin",
"practiceText": "Latihan",
@@ -1142,24 +1201,28 @@
"pressAnyKeyText": "Tekan apa saja...",
"pressJumpToFlyText": "** Tekan tombol lompat terus menerus untuk terbang **",
"pressPunchToJoinText": "tekan PUKUL untuk bergabung..",
- "pressToOverrideCharacterText": "tekan ${BUTTONS} untuk menimpa karaktermu.",
+ "pressToOverrideCharacterText": "tekan ${BUTTONS} untuk menimpa karaktermu",
"pressToSelectProfileText": "tekan ${BUTTONS} untuk memilih pemain",
"pressToSelectTeamText": "tekan ${BUTTONS} untuk memilih tim",
"promoCodeWindow": {
"codeText": "Kode",
"enterText": "Masuk"
},
- "promoSubmitErrorText": "Kesalahan saat mengirim kode; periksa koneksi internet Kamu",
+ "promoSubmitErrorText": "Kesalahan saat mengirim kode; periksa koneksi internetmu",
"ps3ControllersWindow": {
- "macInstructionsText": "Matikan daya pada bagian belakang PS3-mu, pastikan\nBluetooth aktif pada Mac-mu, lalu hubungkan kontrollermu\nke Mac-mu dengan kabel USB untuk memasangkannya. Sekarang, Kamu\ndapat menggunakan kontrollermu dengan kabel USB atau Bluetooth.\n\nPada beberapa perangkat Mac, Kamu mungkin akan dimintai kata sandi ketika memasangkannya.\nJika ini terjadi, lihat beberapa petunjuk atau gunakan google untuk meminta bantuan.\n\n\n\n\n\nKontroller PS3 yang terhubung dengan jaringan akan terlihat pada daftar perangkat\ndalam System Preferences->Bluetooth. Kamu mungkin harus menghapusnya\ndalam daftar tersebut ketika Kamu ingin menggunakan kontroller PS3mu kembali.\n\nDan pastikan untuk memutuskannya dari Bluetooth ketika sedang tidak\ndigunakan atau baterainya akan secara otomatis terkuras.\n\nBluetooth biasanya menangani sampai 7 perangkat yang terhubung,\nmeski jarak tempuhmu berbeda.",
- "ouyaInstructionsText": "Untuk menggunakan kontroller PS3mu dengan OUYA, hubungkan saja dengan kabel USB\nsekali untuk memasangkannya. Melakukan ini akan memutuskan kontrollermu yang lain, jadi\nKamu harus mengulang OUYA-mu dan cabut kabel USB.\n\nSekarang Kamu seharusnya dapat menggunakan kontrollermu untuk\nmenghubungkannya dengan jaringan. Ketika Kamu sudah selesai bermain, tekan tombol HOME\nselama 10 detik untuk mematikan kontroller; jika itu tetap menyala\nmaka bateraimu akan terkuras habis.",
+ "macInstructionsText": "Matikan daya pada bagian belakang PS3-mu, pastikan\nBluetooth aktif pada Mac-mu, lalu hubungkan kontrollermu\nke Mac-mu dengan kabel USB untuk memasangkannya. Sekarang, kamu\ndapat menggunakan kontrollermu dengan kabel USB atau Bluetooth.\n\nPada beberapa perangkat Mac, kamu mungkin akan dimintai kata sandi ketika memasangkannya.\nJika ini terjadi, lihat beberapa petunjuk atau gunakan google untuk meminta bantuan.\n\n\n\n\n\nKontroller PS3 yang terhubung dengan jaringan akan terlihat pada daftar perangkat\ndalam System Preferences->Bluetooth. Kamu mungkin harus menghapusnya\ndalam daftar tersebut ketika kamu ingin menggunakan kontroller PS3mu kembali.\n\nDan pastikan untuk memutuskannya dari Bluetooth ketika sedang tidak\ndigunakan atau baterainya akan secara otomatis terkuras.\n\nBluetooth biasanya menangani sampai 7 perangkat yang terhubung,\nmeski jarak tempuhmu berbeda.",
+ "macInstructionsTextScale": 0.7,
+ "ouyaInstructionsText": "Untuk menggunakan kontroller PS3mu dengan OUYA, hubungkan saja dengan kabel USB\nsekali untuk memasangkannya. Melakukan ini akan memutuskan pengontrol yang lain, jadi\nKamu harus mengulang OUYA-mu dan cabut kabel USB.\n\nSekarang kamu seharusnya dapat menggunakan pengontrol untuk\nmenghubungkannya dengan jaringan. Ketika kamu sudah selesai bermain, tekan tombol HOME\nselama 10 detik untuk mematikan pengontrol; jika itu tetap menyala\nmaka bateraimu akan terkuras habis.",
+ "ouyaInstructionsTextScale": 0.7,
"pairingTutorialText": "memasangkan video petunjuk",
- "titleText": "Menggunakan Kontroller PS3 dengan ${APP_NAME}:"
+ "titleText": "Menggunakan Pengontrol PS3 dengan ${APP_NAME}:"
},
"punchBoldText": "PUKUL",
"punchText": "Pukul",
"purchaseForText": "Membeli dengan ${PRICE}",
"purchaseGameText": "Membeli Game",
+ "purchaseNeverAvailableText": "Maaf, pembelian tidak tersedia pada versi ini.\nCoba masuk ke akun kamu di platform lain dan lakukan pembelian dari sana.",
+ "purchaseNotAvailableText": "Pembelian ini tidak tersedia.",
"purchasingText": "Membeli...",
"quitGameText": "Keluar ${APP_NAME}?",
"quittingIn5SecondsText": "Keluar dalam 5 detik...",
@@ -1167,10 +1230,10 @@
"randomText": "Acak",
"rankText": "Peringkat",
"ratingText": "Nilai",
- "reachWave2Text": "Raih gelombang 2 untuk dapat peringkat",
- "readyText": "Siap",
+ "reachWave2Text": "Raih gelombang 2 untuk dapat peringkat.",
+ "readyText": "siap",
"recentText": "Terbaru",
- "remoteAppInfoShortText": "${APP_NAME} akan menyenangkan ketika dimainkan dengan keluarga & teman.\nHubungkan satu atau lebih kontroller atau install app\n${REMOTE_APP_NAME} pada ponsel atau tablet untuk menggunakannya\nsebagai kontroller.",
+ "remoteAppInfoShortText": "${APP_NAME} akan menyenangkan ketika dimainkan dengan keluarga & teman.\nHubungkan satu atau lebih pengontrol atau pasang apl.\n${REMOTE_APP_NAME} pada ponsel atau tablet untuk menggunakannya\nsebagai pengontrol.",
"remote_app": {
"app_name": "Remot BombSquad",
"app_name_short": "RemotBS",
@@ -1180,7 +1243,7 @@
"capturing": "Menangkap…",
"connected": "Terhubung.",
"description": "Gunakan ponsel atau tabletmu sebagai pengontrol BombSquad.\nLebih dari 8 perangkat dapat terhubung sekaligus untuk keseruan multipemain lokal yang epik di sebuah TV atau tablet",
- "disconnected": "Diputus server",
+ "disconnected": "Diputus oleh server.",
"dpad_fixed": "tetap",
"dpad_floating": "mengambang",
"dpad_position": "Posisi D-Pad",
@@ -1188,7 +1251,7 @@
"dpad_type": "Tipe D-Pad",
"enter_an_address": "Masukkan Alamat",
"game_full": "Permainan sudah penuh atau tidak menerima koneksi.",
- "game_shut_down": "Permainan sudah berakhir",
+ "game_shut_down": "Permainan sudah berakhir.",
"hardware_buttons": "Tombol Perangkat keras",
"join_by_address": "Masuk pakai Alamat...",
"lag": "Lag: ${SECONDS} detik",
@@ -1196,32 +1259,35 @@
"run1": "Lari 1",
"run2": "Lari 2",
"searching": "Mencari BombSquad...",
- "searching_caption": "Ketuk nama permainan yang kamu inginkan.\nPastikan Kamu berada di jaringan wifi yang sama dengan permainan tersebut.",
+ "searching_caption": "Ketuk nama permainan yang kamu ingin bergabung.\nPastikan kamu berada di jaringan wifi yang sama dengan permainan tersebut.",
"start": "Mulai",
"version_mismatch": "Versi tidak sama.\nPastikan kamu menggunakan BombSquad dan Remot BombSquad\ndengan versi terbaru dan coba lagi."
},
- "removeInGameAdsText": "Buka \"${PRO}\" di toko untuk menghilangkan iklan game",
+ "removeInGameAdsText": "Buka \"${PRO}\" di toko untuk menghilangkan iklan game.",
+ "removeInGameAdsTokenPurchaseText": "PENAWARAN WAKTU TERBATAS: Beli paket token APAPUN untuk menghapus iklan dalam game.",
"renameText": "Mengubah Nama",
"replayEndText": "Akhiri Replay",
- "replayNameDefaultText": "Replay Game Terakhir",
- "replayReadErrorText": "Error membaca file replay.",
- "replayRenameWarningText": "Ubah nama \"${REPLAY}\" setelah game jika Kamu ingin menyimpannya; jika tidak itu akan ditimpa.",
- "replayVersionErrorText": "Maaf, replay ini dibuat dalam\nversi game yang berbeda dan tidak dapat digunakan",
+ "replayNameDefaultText": "Replay Permainan Terakhir",
+ "replayReadErrorText": "Kesalahan membaca file replay.",
+ "replayRenameWarningText": "Ubah nama \"${REPLAY}\" setelah permainan jika kamu ingin menyimpannya; jika tidak itu akan ditimpa.",
+ "replayVersionErrorText": "Maaf, replay ini dibuat dalam\nversi game yang berbeda dan tidak dapat digunakan.",
"replayWatchText": "Nonton Replay",
- "replayWriteErrorText": "Error menulis file replay",
+ "replayWriteErrorText": "Kesalahan menulis file replay.",
"replaysText": "Replay",
"reportPlayerExplanationText": "Gunakan alamat surel ini untuk melaporkan tindakan curang, kata-kata yang tidak pantas, atau kelakuan buruk lainnya.\nTolong jelaskan dibawah ini:",
"reportThisPlayerCheatingText": "Curang",
"reportThisPlayerLanguageText": "Bahasa Yang Tidak Pantas",
- "reportThisPlayerReasonText": "Apa yang ingin Kamu laporkan?",
- "reportThisPlayerText": "Laporkan pemain ini",
+ "reportThisPlayerReasonText": "Apa yang ingin kamu laporkan?",
+ "reportThisPlayerText": "Laporkan Pemain Ini",
"requestingText": "Meminta...",
"restartText": "Ulangi",
"retryText": "Ulangi",
"revertText": "Kembali",
"runText": "Lari",
"saveText": "Simpan",
- "scanScriptsErrorText": "Galat saat memindai skrip; lihat log untuk detailnya.",
+ "scanScriptsErrorText": "Kesalahan saat memindai skrip. Lihat log untuk detailnya.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} dan ${NUM} modul lain perlu di perbaharui untuk api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} perlu di perbaharui untuk api ${API}.",
"scoreChallengesText": "Tantangan Skor",
"scoreListUnavailableText": "Daftar skor tidak ada",
"scoreText": "Skor",
@@ -1232,6 +1298,7 @@
},
"scoreWasText": "(adalah ${COUNT})",
"selectText": "Pilih",
+ "sendInfoDescriptionText": "Mengirimkan informasi akun dan status aplikasi ke pengembang.\nHarap sertakan nama atau alasan pengiriman Anda.",
"seriesWinLine1PlayerText": "MEMENANGKAN",
"seriesWinLine1TeamText": "MEMENANGKAN",
"seriesWinLine1Text": "MEMENANGKAN",
@@ -1247,35 +1314,43 @@
"titleText": "Pengaturan"
},
"settingsWindowAdvanced": {
- "alwaysUseInternalKeyboardDescriptionText": "(keyboard dari BombSquad)",
- "alwaysUseInternalKeyboardText": "Gunakan Keyboard Internal",
- "benchmarksText": "Tes Stres dan Benchmark",
- "disableCameraGyroscopeMotionText": "Nonaktikan Gerakkan Kamera Giroskop",
- "disableCameraShakeText": "Nonaktifkan Gerakkan Kamera",
- "disableThisNotice": "(Kamu dapat matikan peringatan ini di pengaturan tambahan)",
+ "alwaysUseInternalKeyboardDescriptionText": "(simpel, bersahabat dengan pengontrol keyboard pada layar untuk mengubah teks)",
+ "alwaysUseInternalKeyboardText": "Selalu gunakan keyboard internal",
+ "benchmarksText": "Uji Coba Stres & Benchmark",
+ "devToolsText": "Alat Pengembang",
+ "disableCameraGyroscopeMotionText": "Nonaktifkan gerakan giroskop kamera",
+ "disableCameraShakeText": "Nonaktifkan goyangan kamera",
+ "disableThisNotice": "(kamu dapat matikan peringatan ini di pengaturan tambahan)",
"enablePackageModsDescriptionText": "(menyalakan kapabilitas modding ekstra menyebabkan kamu tidak dapat bermain di internet)",
"enablePackageModsText": "Izinkan Paket Mod Lokal",
"enterPromoCodeText": "Masukkan Kode",
- "forTestingText": "NB: jumlah ini hanya untuk tes dan akan hilang saat keluar",
- "helpTranslateText": "Terjemahan ${APP_NAME} selain Bahasa Inggris adalah bantuan \nkomunitas. Jika Kamu ingin membantu atau mengoreksi berkas\nterjemahan, silahkan masuk ke situs berikut. Terima kasih!",
- "kickIdlePlayersText": "Keluarkan Pemain Diam",
+ "forTestingText": "NB: jumlah ini hanya untuk uji coba dan akan hilang saat aplikasi keluar.",
+ "helpTranslateText": "Terjemahan ${APP_NAME} selain Bahasa Inggris adalah bantuan \nkomunitas. Jika kamu ingin membantu atau mengoreksi berkas\nterjemahan, silahkan masuk ke situs berikut. Terima kasih!",
+ "insecureConnectionsDescriptionText": "tidak disarankan, tapi memungkinkan bermain daring\ndalam negara atau jaringan yang dibatasi",
+ "insecureConnectionsText": "Gunakan koneksi tidak aman",
+ "kickIdlePlayersText": "Mengeluarkan pemain yang menganggur",
"kidFriendlyModeText": "Mode Dibawah Umur (kekerasan rendah, dll)",
"languageText": "Bahasa",
"moddingGuideText": "Cara Me-Modding",
+ "moddingToolsText": "Alat Modding",
"mustRestartText": "Kamu harus memulai ulang permainan untuk menerapkan perubahan.",
- "netTestingText": "Tes Jaringan",
- "resetText": "Atur ulang",
+ "netTestingText": "Uji Coba Jaringan",
+ "resetText": "Atur Ulang",
+ "sendInfoText": "Kirim Info",
"showBombTrajectoriesText": "Lihat Lintasan Bom",
- "showInGamePingText": "Tampilkan Ping dalam permainan",
+ "showDemosWhenIdleText": "Tampilkan demo saat menganggur",
+ "showDeprecatedLoginTypesText": "Tampilkan jenis login yang tidak digunakan lagi",
+ "showDevConsoleButtonText": "Tampilkan tombol konsol pengembang",
+ "showInGamePingText": "Tampilkan ping dalam permainan",
"showPlayerNamesText": "Tunjukkan Nama Pemain",
"showUserModsText": "Lihat Folder Mod",
"titleText": "Lanjutan",
"translationEditorButtonText": "Penyunting Translasi ${APP_NAME}",
- "translationFetchErrorText": "status translasi tidak tersedia.",
+ "translationFetchErrorText": "status terjemahan tidak tersedia.",
"translationFetchingStatusText": "memeriksa status terjemahan...",
- "translationInformMe": "Beritahu saya jika bahasa yang saya gunakan harus diperbarui",
- "translationNoUpdateNeededText": "Bahasa saat ini sudah yang terbaru; woohoo!",
- "translationUpdateNeededText": "** bahasa ini perlu diperbaharui! **",
+ "translationInformMe": "Beritahu saya jika bahasa yang saya gunakan harus diperbaharui",
+ "translationNoUpdateNeededText": "Bahasa saat ini adalah yang terkini; Woohoo!",
+ "translationUpdateNeededText": "** Bahasa saat ini perlu diperbaharui!! **",
"vrTestingText": "Percobaan VR"
},
"shareText": "Bagikan",
@@ -1285,6 +1360,9 @@
"signInWithGameCenterText": "Untuk menggunakan akun Game Center,\nmasuk ke Game Center dahulu.",
"singleGamePlaylistNameText": "Hanya ${GAME}",
"singlePlayerCountText": "1 pemain",
+ "sizeLargeText": "Besar",
+ "sizeMediumText": "Sedang",
+ "sizeSmallText": "Kecil",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Pemilihan Karakter",
@@ -1298,7 +1376,7 @@
"GrandRomp": "Penaklukan",
"Hockey": "Hoki",
"Keep Away": "Menjauh",
- "Marching": "Bolak-Balik",
+ "Marching": "Berlarian",
"Menu": "Menu Utama",
"Onslaught": "Pembantaian",
"Race": "Balapan",
@@ -1310,6 +1388,7 @@
},
"spaceKeyText": "spasi",
"statsText": "Statistik",
+ "stopRemindingMeText": "Berhenti mengingatkan ku",
"storagePermissionAccessText": "Ini membutuhkan akses penyimpanan",
"store": {
"alreadyOwnText": "Kamu sudah punya ${NAME}!",
@@ -1321,8 +1400,8 @@
"extrasText": "Extra",
"freeBombSquadProText": "BombSquad sekarang gratis, karena dulu Kamu membelinya\nKamu mendapat tingkatan BombSquad Pro dan ${COUNT} tiket sebagai ucapan terima kasih.\nNikmati fitur barunya, dan terima kasih atas dukungannya!\n-Eric",
"holidaySpecialText": "Spesial Liburan",
- "howToSwitchCharactersText": "pergi ke \"${SETTINGS} -> ${PLAYER_PROFILES}\" untuk mengubah karakter",
- "howToUseIconsText": "(Buatlah profil pemain global (dalam jendela akun) untuk menggunakan ini)",
+ "howToSwitchCharactersText": "(pergi ke \"${SETTINGS} -> ${PLAYER_PROFILES}\" untuk mengubah karakter)",
+ "howToUseIconsText": "(buatlah profil pemain global (dalam jendela akun) untuk menggunakan ini)",
"howToUseMapsText": "(gunakan peta ini di tim/daftar putar bebasmu)",
"iconsText": "Simbol",
"loadErrorText": "Tidak dapat memuat halaman.\nCek koneksi internetmu.",
@@ -1332,7 +1411,7 @@
"oneTimeOnlyText": "(sekali saja)",
"purchaseAlreadyInProgressText": "Pembelian barang ini sedang dalam proses.",
"purchaseConfirmText": "Beli ${ITEM}?",
- "purchaseNotValidError": "Pembelian tidak valid.\nHubungi ${EMAIL} jika ini adalah error.",
+ "purchaseNotValidError": "Pembelian tidak valid.\nHubungi ${EMAIL} jika ini adalah kesalahan.",
"purchaseText": "Membeli",
"saleBundleText": "Paket Promo!",
"saleExclaimText": "Dijual!",
@@ -1343,9 +1422,9 @@
"totalWorthText": "*** ${TOTAL_WORTH} nilai! ***",
"upgradeQuestionText": "Tingkatkan?",
"winterSpecialText": "Spesial Musim Dingin",
- "youOwnThisText": "- Kamu sudah memiliki ini -"
+ "youOwnThisText": "- kamu sudah memiliki ini -"
},
- "storeDescriptionText": "Permainan dengan 8 pemain!\n\nLedakkan temanmu (atau komputer) dalam turnamen ledakkan seperti Ambil-Bendera, Bom-Hoki, dan Pertarungan-Mematikan-Epik-Gerakkan-Lambat\n\nDukungan pengontrol Sederhana dan pengontrol luas membuatnya mudah untuk 8 orang untuk beraksi; Kamu juga dapat menggunakan perangkat ponselmu sebagai pengontrol dengan aplikasi ‘BombSquad Remote’!\n\nAwas Bom!\n\nKunjungi www.froemling.net/bombsquad untuk informasi lebih lanjut.",
+ "storeDescriptionText": "Permainan dengan 8 pemain!\n\nLedakkan temanmu (atau komputer) dalam turnamen ledakkan seperti Ambil-Bendera, Bom-Hoki, dan Pertarungan-Mematikan-Epik-Gerakkan-Lambat\n\nDukungan pengontrol Sederhana dan pengontrol luas membuatnya mudah untuk 8 orang untuk beraksi; kamu juga dapat menggunakan perangkat ponselmu sebagai pengontrol dengan aplikasi ‘BombSquad Remote’!\n\nAwas Bom!\n\nKunjungi www.froemling.net/bombsquad untuk informasi lebih lanjut.",
"storeDescriptions": {
"blowUpYourFriendsText": "Meledakkan temanmu.",
"competeInMiniGamesText": "Bersaing dalam mini-game mulai dari balapan sampai terbang.",
@@ -1357,34 +1436,51 @@
"storeText": "Toko",
"submitText": "Serahkan",
"submittingPromoCodeText": "Menyerahkan Kode ...",
- "teamNamesColorText": "Nama Tim / Warna ...",
+ "successText": "Sukses!",
+ "supportEmailText": "Jika kamu mengalami masalah apa pun pada\naplikasi, mohon segera kirim email ${EMAIL}.",
+ "teamNamesColorText": "Nama Tim / Warna...",
"telnetAccessGrantedText": "Akses telnet aktif.",
"telnetAccessText": "Akses telnet terdekteksi; izinkan?",
"testBuildErrorText": "Percobaan ini tidak aktif lagi; tolong cek versi barunya.",
"testBuildText": "Percobaan",
- "testBuildValidateErrorText": "Tidak dapat mengesahkan percobaan. (Tidak tersedia koneksi internet?)",
+ "testBuildValidateErrorText": "Tidak dapat mengesahkan percobaan. (tak tersedia koneksi internet?)",
"testBuildValidatedText": "Percobaan Sah; Nikmati!",
- "thankYouText": "Terima kasih atas dukungan mu! Nikmati gamenya!!",
- "threeKillText": "KEJAM ! 3 TERBUNUH",
+ "thankYouText": "Terima kasih atas dukunganmu! Nikmati permainannya!!",
+ "threeKillText": "3 TERBUNUH!!",
+ "ticketsDescriptionText": "Tiket dapat digunakan untuk membuka kunci karakter,\npeta, minigame, dan lainnya di toko.\n\nTiket dapat ditemukan di peti yang dimenangkan\nkampanye, turnamen, dan prestasi.",
"timeBonusText": "Bonus Waktu",
"timeElapsedText": "Waktu Berlalu",
- "timeExpiredText": "Berakhir",
+ "timeExpiredText": "Waktu Berakhir",
"timeSuffixDaysText": "${COUNT}h",
"timeSuffixHoursText": "${COUNT}j",
"timeSuffixMinutesText": "${COUNT}m",
"timeSuffixSecondsText": "${COUNT}d",
"tipText": "Petunjuk",
- "titleText": "BomSquad",
+ "titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Dapatkan Token",
+ "notEnoughTokensText": "Token tidak cukup!",
+ "numTokensText": "${COUNT} Token",
+ "openNowDescriptionText": "Kamu punya token yang\nCukup untuk membukanya \n-Kamu tidak perlu menunggu.",
+ "shinyNewCurrencyText": "Mata uang baru BombSquad yang berkilauan.",
+ "tokenPack1Text": "Token Kemasan Kecil",
+ "tokenPack2Text": "Token Kemasan Sedang",
+ "tokenPack3Text": "Token Kemasan Besar",
+ "tokenPack4Text": "Token Kemasan Jumbo",
+ "tokensDescriptionText": "Token digunakan untuk mempercepat pembukaan peti\ndan untuk fitur game dan akun lainnya.\n\nAnda dapat memenangkan token dalam game atau membelinya dalam kemasan.\nAtau beli Tiket Emas tanpa batas token\ndan tidak pernah mendengarnya lagi.",
+ "youHaveGoldPassText": "Kamu mempunyai Tiket Emas.\nSemua pembelian token gratis.\nSelamat menikmati!"
+ },
"topFriendsText": "Teman Terbaik",
"tournamentCheckingStateText": "Memeriksa keadaan turnamen; harap tunggu...",
- "tournamentEndedText": "Turnamen sudah berakhir. Turnamen yang baru akan mulai segera.",
+ "tournamentEndedText": "Turnamen sudah berakhir. Turnamen yang baru akan segera dimulai.",
"tournamentEntryText": "Biaya Masuk Turnamen",
+ "tournamentFinalStandingsText": "Klasemen Akhir",
"tournamentResultsRecentText": "Hasil Turnamen Terbaru",
"tournamentStandingsText": "Hasil Terbaik Turnamen",
"tournamentText": "Turnamen",
"tournamentTimeExpiredText": "Waktu Turnamen Berakhir",
- "tournamentsDisabledWorkspaceText": "Turnamen telah dinonaktifkan saat workspace(plugin/mod) aktif.\nUntuk mengaktifkan turnamen kembali, nonaktifkan dulu workspace anda dan mulai ulang gamenya.",
+ "tournamentsDisabledWorkspaceText": "Turnamen telah dinonaktifkan saat workspace(plugin/mod) aktif.\nUntuk mengaktifkan turnamen kembali, nonaktifkan dulu workspace kamu dan mulai ulang.",
"tournamentsText": "Turnamen",
"translations": {
"characterNames": {
@@ -1413,7 +1509,7 @@
"Spaz": "Spaz",
"Taobao Mascot": "Maskot Taobao",
"Todd": "Todd",
- "Todd McBurton": "Rambo",
+ "Todd McBurton": "Todd McBurton",
"Xara": "Xara",
"Zoe": "Zoe",
"Zola": "Zola"
@@ -1422,9 +1518,9 @@
"${GAME} Training": "Latihan ${GAME}",
"Infinite ${GAME}": "${GAME} Tanpa Batas",
"Infinite Onslaught": "Pembantaian Tanpa Batas",
- "Infinite Runaround": "Penjaga Tanpa Batas",
+ "Infinite Runaround": "Berlarian Tanpa Batas",
"Onslaught Training": "Latihan Pembantaian",
- "Pro ${GAME}": "${GAME} Profesional",
+ "Pro ${GAME}": "${GAME} Ahli",
"Pro Football": "Rugby Ahli",
"Pro Onslaught": "Pembantaian Ahli",
"Pro Runaround": "Penjaga Ahli",
@@ -1432,10 +1528,22 @@
"Rookie Football": "Rugby Pemula",
"Rookie Onslaught": "Pembantaian Pemula",
"The Last Stand": "Usaha Terakhir",
- "Uber ${GAME}": "${GAME} Master",
+ "Uber ${GAME}": "${GAME} Uber",
"Uber Football": "Rugby Uber",
"Uber Onslaught": "Pembantaian Uber",
- "Uber Runaround": "Master Penjaga"
+ "Uber Runaround": "Penjaga Uber"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} Tiket",
+ "${C} Tokens": "${C} Token",
+ "Chest": "Peti",
+ "L1 Chest": "Peti Level 1",
+ "L2 Chest": "Peti Level 2",
+ "L3 Chest": "Peti Level 3",
+ "L4 Chest": "Peti Level 4",
+ "L5 Chest": "Peti Level 5",
+ "L6 Chest": "Peti Level 6",
+ "Unknown Chest": "Peti Misterius"
},
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Jadilah 'yang terpilih' dalam waktu yang ditentukan.\nBunuh 'yang terpilih' untuk menjadi 'yang terpilih'.",
@@ -1448,26 +1556,26 @@
"Final glorious epic slow motion battle to the death.": "Pertarungan slow motion epik hingga kematian menjemput.",
"Gather eggs!": "Kumpulkan telur!",
"Get the flag to the enemy end zone.": "Bawa bendera sampai ujung lapangan.",
- "How fast can you defeat the ninjas?": "Secepat apa kamu bisa mengalahkan para ninja?",
+ "How fast can you defeat the ninjas?": "Secepat apa kamu bisa kalahkan para ninja?",
"Kill a set number of enemies to win.": "Hancurkan sejumlah musuh.",
"Last one standing wins.": "Terakhir hidup menang.",
"Last remaining alive wins.": "Terakhir hidup menang.",
- "Last team standing wins.": "Habisi tim lawan.",
+ "Last team standing wins.": "Tim terakhir hidup menang.",
"Prevent enemies from reaching the exit.": "Tahan musuh jangan sampai finish.",
"Reach the enemy flag to score.": "Sentuh bendera lawan untuk skor.",
- "Return the enemy flag to score.": "Kembalikan bendera musuh untuk menskor.",
+ "Return the enemy flag to score.": "Kembalikan bendera musuh untuk mencetak skor.",
"Run ${ARG1} laps.": "Lari ${ARG1} putaran.",
"Run ${ARG1} laps. Your entire team has to finish.": "Lari ${ARG1} putaran. Seluruh tim harus mencapai finish.",
"Run 1 lap.": "Lari 1 putaran.",
"Run 1 lap. Your entire team has to finish.": "Lari 1 putaran. Seluruh tim harus mencapai finish.",
- "Run real fast!": "Lari! Ada Anjing!",
+ "Run real fast!": "Lari dengan cepat!",
"Score ${ARG1} goals.": "Masukan ${ARG1} gol.",
"Score ${ARG1} touchdowns.": "Cetak ${ARG1} touchdown.",
"Score a goal.": "Cetak 1 Gol.",
"Score a touchdown.": "Cetak 1 touchdown.",
"Score some goals.": "Cetak beberapa gol.",
"Secure all ${ARG1} flags.": "Amankan ${ARG1} bendera.",
- "Secure all flags on the map to win.": "Amankan semua bendera di arena untuk menang.",
+ "Secure all flags on the map to win.": "Amankan semua bendera di peta untuk menang.",
"Secure the flag for ${ARG1} seconds.": "Amankan bendera selama ${ARG1} detik.",
"Secure the flag for a set length of time.": "Amankan bendera selama waktu yang ditentukan.",
"Steal the enemy flag ${ARG1} times.": "Curi bendera musuh ${ARG1} kali.",
@@ -1476,9 +1584,9 @@
"Touch the enemy flag ${ARG1} times.": "Sentuh bendera musuh ${ARG1} kali.",
"Touch the enemy flag.": "Sentuh bendera musuh.",
"carry the flag for ${ARG1} seconds": "bawa bendera selama ${ARG1} detik",
- "kill ${ARG1} enemies": "Bunuh ${ARG1} musuh.",
+ "kill ${ARG1} enemies": "bunuh ${ARG1} musuh",
"last one standing wins": "terakhir hidup menang",
- "last team standing wins": "habisi tim lawan",
+ "last team standing wins": "tim terakhir hidup menang",
"return ${ARG1} flags": "kembalikan ${ARG1} bendera",
"return 1 flag": "kembalikan 1 bendera",
"run ${ARG1} laps": "lari ${ARG1} putaran",
@@ -1498,7 +1606,7 @@
"Chosen One": "Yang Terpilih",
"Conquest": "Penguasaan",
"Death Match": "Pertarungan Kematian",
- "Easter Egg Hunt": "Memburu Easter Egg",
+ "Easter Egg Hunt": "Memburu Telur Paskah",
"Elimination": "Eliminasi",
"Football": "Rugby",
"Hockey": "Hoki",
@@ -1507,8 +1615,8 @@
"Meteor Shower": "Hujan Meteor",
"Ninja Fight": "Perang Ninja",
"Onslaught": "Pembantaian",
- "Race": "Balap Liar",
- "Runaround": "Jangan Kabur",
+ "Race": "Balapan",
+ "Runaround": "Berlarian",
"Target Practice": "Sasaran Tembak",
"The Last Stand": "Penyintas Terakhir"
},
@@ -1519,8 +1627,8 @@
"languages": {
"Arabic": "Arab",
"Belarussian": "Belarusia",
- "Chinese": "Mandarin (disederhanakan)",
- "ChineseTraditional": "Cina tradisional",
+ "Chinese": "Mandarin (disederhanakan) ",
+ "ChineseTraditional": "Mandarin Tradisional",
"Croatian": "Kroasia",
"Czech": "Ceko",
"Danish": "Denmark",
@@ -1541,6 +1649,7 @@
"Korean": "Korea",
"Malay": "Bahasa Malaysia",
"Persian": "Persia",
+ "PirateSpeak": "Omongan Bajak Laut",
"Polish": "Polandia",
"Portuguese": "Portugis",
"Romanian": "Romania",
@@ -1566,7 +1675,7 @@
"Big G": "G Besar",
"Bridgit": "Jembatan",
"Courtyard": "Tempat Pengadilan",
- "Crag Castle": "Kastil karang",
+ "Crag Castle": "Kastil Karang",
"Doom Shroom": "Jamur Gelap",
"Football Stadium": "Stadion Rugby",
"Happy Thoughts": "Pikiran Bahagia",
@@ -1594,72 +1703,87 @@
"Time Held": "Lama Kuasa"
},
"serverResponses": {
- "A code has already been used on this account.": "Sebuah kode sudah digunakan pada aku ini.",
+ "A code has already been used on this account.": "Sebuah kode sudah digunakan pada akun ini.",
"A reward has already been given for that address.": "Hadiah telah diberikan ke alamat tersebut.",
"Account linking successful!": "Berhasil menghubungkan akun!",
"Account unlinking successful!": "Pemutusan akun berhasil!",
"Accounts are already linked.": "Akun sudah dihubungkan.",
- "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Menonton iklan tidak dapat diverifikasi.\nPastikan Anda menjalankan versi game yang resmi dan terbaru.",
+ "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Menonton iklan tidak dapat diverifikasi.\nPastikan kamu menjalankan versi game yang resmi dan terbaru.",
"An error has occurred; (${ERROR})": "Sebuah kesalahan telah terjadi; (${ERROR})",
"An error has occurred; please contact support. (${ERROR})": "Sebuah kesalahan telah terjadi; tolong hubungi dukungan. (${ERROR})",
- "An error has occurred; please contact support@froemling.net.": "Sebuah error telah terjadi; tolong hubungi support@froemling.net.",
- "An error has occurred; please try again later.": "Sebuah error telah terjadi; mohon coba lagi nanti.",
+ "An error has occurred; please contact support@froemling.net.": "Sebuah kesalahan telah terjadi; tolong hubungi support@froemling.net.",
+ "An error has occurred; please try again later.": "Sebuah kesalahan telah terjadi; mohon coba lagi nanti.",
"Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Kamu yakin ingin menghubungkan akun ini?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nIni tidak dapat ditunda!",
"BombSquad Pro unlocked!": "BombSquad Pro terbuka!",
- "Can't link 2 accounts of this type.": "Tidak dapat menghubungkan 2 tipe akun ini.",
+ "Can't link 2 accounts of this type.": "Tidak dapat menghubungkan 2 akun dari tipe ini.",
"Can't link 2 diamond league accounts.": "Tidak dapat menghubungkan 2 akun liga berlian.",
"Can't link; would surpass maximum of ${COUNT} linked accounts.": "Tidak dapat menghubungkan; akan melampaui batas maksimum ${COUNT} akun yang dihubungkan.",
- "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Kecurangan terdeteksi; skor dan hadiah ditahan selama ${COUNT} hari",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Kecurangan terdeteksi; skor dan hadiah ditahan selama ${COUNT} hari.",
"Could not establish a secure connection.": "Tidak dapat menyeimbangkan koneksi yang aman.",
"Daily maximum reached.": "Batas maksimal tercapai.",
+ "Daily sign-in reward": "Hadiah masuk harian",
"Entering tournament...": "Memasuki turnamen...",
- "Invalid code.": "Kode Salah",
+ "Invalid code.": "Kode salah.",
"Invalid payment; purchase canceled.": "Pembayaran tidak valid; pembelian dibatalkan.",
- "Invalid promo code.": "Promo kode salah.",
+ "Invalid promo code.": "Kode promo salah.",
"Invalid purchase.": "Pembelian tidak valid.",
"Invalid tournament entry; score will be ignored.": "Masukkan turnamen tidak valid; skor akan diabaikan.",
"Item unlocked!": "Item dibuka!",
- "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "PENAUTAN DITOLAK. ${ACCOUNT} berisi\ndata penting yang SEMUANYA AKAN HILANG.\nKamu dapat menautkannya dalam urutan yang berlawanan jika Kamu mau\n(dan kehilangan data akun INI sebagai gantinya)",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "PENAUTAN DITOLAK. ${ACCOUNT} berisi\ndata penting yang SEMUANYA AKAN HILANG.\nKamu dapat menautkannya dalam urutan yang berlawanan jika kamu mau\n(dan kehilangan data akun INI sebagai gantinya)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Menghubungkan akun ${ACCOUNT} ke akun ini?\nSemua data yang ada di ${ACCOUNT} akan hilang.\nIni tidak dapat dibatalkan. Apa kamu yakin?",
+ "Longer streaks lead to better rewards.": "Kemenangan yang lebih panjang akan menghasilkan hadiah yang lebih baik.",
"Max number of playlists reached.": "Batas maksimum daftar putar tercapai.",
"Max number of profiles reached.": "Batas maksimum profil tercapai.",
"Maximum friend code rewards reached.": "Batas maksimum hadiah kode teman tercapai.",
"Message is too long.": "Pesan terlalu panjang.",
- "No servers are available. Please try again soon.": "Tidak ada server yang Tersedia. silakan coba lagi nanti",
+ "New tournament result!": "Hasil turnamen baru!",
+ "No servers are available. Please try again soon.": "Tidak ada server yang tersedia. Silahkan coba lagi nanti.",
+ "No slots available. Free a slot and try again.": "Tidak ada slot tersedia. Kosongkan slot dan coba lagi.",
"Profile \"${NAME}\" upgraded successfully.": "Profil \"${NAME}\" berhasil ditingkatkan.",
- "Profile could not be upgraded.": "Profile tidak dapat di tingkatkan.",
+ "Profile could not be upgraded.": "Profil tidak dapat di tingkatkan.",
"Purchase successful!": "Pembelian sukses!",
"Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Menerima ${COUNT} tiket untuk masuk.\nSilahkan kembali besok untuk menerima ${TOMORROW_COUNT}.",
"Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "Server tidak lagi mendukung permainan dengan versi ini;\nSilahkan perbarui ke versi yang lebih baru.",
"Sorry, there are no uses remaining on this code.": "Maaf, kode ini tidak dapat dipakai lagi",
- "Sorry, this code has already been used.": "Maaf,kode ini sudah digunakan",
+ "Sorry, this code has already been used.": "Maaf, kode ini sudah digunakan.",
"Sorry, this code has expired.": "Maaf, kode ini sudah kadaluarsa.",
"Sorry, this code only works for new accounts.": "Maaf, kode ini hanya berlaku untuk akun baru.",
- "Still searching for nearby servers; please try again soon.": "Masih mencari server terdekat; silahkan coba lagi nanti",
- "Temporarily unavailable; please try again later.": "Sedang tidak ada; mohon coba lagi nanti.",
- "The tournament ended before you finished.": "Turnamen berakhir sebelum Kamu selesai.",
+ "Sorry, this has expired.": "Maaf, ini sudah kadaluarsa.",
+ "Still searching for nearby servers; please try again soon.": "Masih mencari server terdekat; silahkan coba lagi nanti.",
+ "Streak: ${NUM} days": "Beruntun: ${NUM} hari",
+ "Temporarily unavailable; please try again later.": "Sementara tidak tersedia; mohon coba lagi nanti.",
+ "The tournament ended before you finished.": "Turnamen berakhir sebelum kamu selesai.",
"This account cannot be unlinked for ${NUM} days.": "Akun ini tidak dapat diputuskan untuk ${NUM} hari.",
"This code cannot be used on the account that created it.": "Kode ini tidak dapat dipakai di akun yang membuatnya.",
- "This is currently unavailable; please try again later.": "Ini saat ini tidak tersedia; silahkan coba lagi nanti.",
- "This requires version ${VERSION} or newer.": "Ini membutuhkan versi ${VERSION} atau versi yang baru.",
- "Tournaments disabled due to rooted device.": "Turnamen dinonaktifkan karena perangkat yang di-rooting.",
+ "This is currently unavailable; please try again later.": "Saat ini tidak tersedia; silahkan coba lagi nanti.",
+ "This requires version ${VERSION} or newer.": "Ini membutuhkan versi ${VERSION} atau yang lebih baru.",
+ "Tournaments disabled due to rooted device.": "Turnamen dinonaktifkan karena perangkat telah di-rooting.",
"Tournaments require ${VERSION} or newer": "Turnamen membutuhkan ${VERSION} atau lebih baru",
- "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Memutus ${ACCOUNT} dari akun ini?\nSemua data dari ${ACCOUNT} akan disetel ulang.\n(kecuali penghargaan di beberapa kasus)",
- "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "PERINGATAN: keluhan tentang kecurangan telah diajukan terhadap akun Kamu.\nAkun yang ditemukan curang akan dilarang. Silakan bermain adil.",
- "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Apakah Kamu mau menghubungkan akun perangkatmu dengan yang ini>\n\nAkun perangkatmu adalah ${ACCOUNT1}\nAkun ini adalah ${ACCOUNT2}\n\nIni akan mengizinkanmu untuk menyimpan datamu.\nPeringatan: ini tidak dapat dibatalkan!",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Memutus ${ACCOUNT} dari akun ini?\nSemua data dari ${ACCOUNT} akan disetel ulang.\n(kecuali untuk pencapaian di beberapa kasus)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "PERINGATAN: keluhan tentang kecurangan telah diajukan terhadap akun kamu.\nAkun yang ditemukan curang akan dilarang. Mohon bermain adil.",
+ "Wait reduced!": "Waktu menunggu dikurangi!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Peringatan: Versi game ini terbatas hanya ke data akun lama; beberapa hal mungkin tidak ada atau terlihat jadul.\nMohon untuk perbarui ke versi terbaru untuk melihat data baru akunmu.",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Apakah kamu mau menghubungkan akun perangkatmu dengan yang ini?\n\nAkun perangkatmu adalah ${ACCOUNT1}\nAkun ini adalah ${ACCOUNT2}\n\nIni akan mengizinkanmu untuk menyimpan kemajuanmu.\nPeringatan: ini tidak dapat dibatalkan!",
"You already own this!": "Kamu sudah mempunyai ini!",
- "You can join in ${COUNT} seconds.": "Kamu dapat bergabung lagi pada ${COUNT} detik",
+ "You can join in ${COUNT} seconds.": "Kamu dapat bergabung lagi pada ${COUNT} detik.",
"You don't have enough tickets for this!": "Kamu tidak mempunyai cukup tiket untuk ini!",
"You don't own that.": "Kamu tidak memiliki itu.",
"You got ${COUNT} tickets!": "Kamu dapat ${COUNT} tiket!",
+ "You got ${COUNT} tokens!": "Kamu dapat ${COUNT} token!",
"You got a ${ITEM}!": "Kamu dapat ${ITEM}!",
+ "You got a chest!": "Kamu dapat peti!",
+ "You got an achievement reward!": "Kamu dapat hadiah pencapaian!",
"You have been promoted to a new league; congratulations!": "Kamu dipromosikan ke liga yang baru; selamat!",
- "You must update to a newer version of the app to do this.": "Kamu harus perbarui app ke versi yang baru untuk melakukan ini.",
+ "You lost a chest! (All your chest slots were full)": "Kamu kehilangan peti! (Semua slot petimu penuh)",
+ "You must update the app to view this.": "Kamu harus perbarui aplikasi agar dapat melihat ini.",
+ "You must update to a newer version of the app to do this.": "Kamu harus perbarui apl. ke versi yang baru untuk melakukan ini.",
"You must update to the newest version of the game to do this.": "Kamu harus memperbaharui ke versi permainan yang lebih baru untuk melakukan ini.",
"You must wait a few seconds before entering a new code.": "Kamu harus menunggu beberapa detik sebelum memasukkan kode yang baru.",
+ "You placed #${RANK} in a tournament!": "Kamu berada di peringkat #${RANK} pada turnamen!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Kamu peringkat ke #${RANK} pada turnament terakhir. Terima kasih sudah bermain!",
- "Your account was rejected. Are you signed in?": "Akunmu ditolak. Apakah Kamu terdaftar?",
- "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Salinan gamemu telah dimodifikasi.\nMohon kembalikan perubahan apapun dan coba lagi.",
+ "Your account was rejected. Are you signed in?": "Akunmu ditolak. Apakah kamu terdaftar?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Penayang iklan kamu tidak ter-registrasi. Opsi iklan mungkin terbatas untuk sementara waktu.",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Salinan permainan kamu telah dimodifikasi.\nMohon kembalikan perubahan apapun dan coba lagi.",
"Your friend code was used by ${ACCOUNT}": "Kode temanmu digunakan oleh ${ACCOUNT}"
},
"settingNames": {
@@ -1675,38 +1799,38 @@
"Allow Negative Scores": "Izinkan Skor Bernilai Negatif",
"Balance Total Lives": "Total Nyawa Seimbang",
"Bomb Spawning": "Bom Muncul",
- "Chosen One Gets Gloves": "Yang Terpilih Mendapat Sarung Tinju",
- "Chosen One Gets Shield": "Terpilih akan mendapatkan perisai",
- "Chosen One Time": "Waktu Yang Terpilih",
- "Enable Impact Bombs": "Izinkan Dampak Bom",
+ "Chosen One Gets Gloves": "Yang Terpilih Mendapatkan Sarung Tinju",
+ "Chosen One Gets Shield": "Yang Terpilih Mendapatkan Perisai",
+ "Chosen One Time": "Waktu Terpilih",
+ "Enable Impact Bombs": "Izinkan Bom Bentur",
"Enable Triple Bombs": "Izinkan Bom Beruntun",
- "Entire Team Must Finish": "Seluruh Tim Harus Melewati Finish",
+ "Entire Team Must Finish": "Seluruh Tim Harus Mencapai Finish",
"Epic Mode": "Mode Epik",
- "Flag Idle Return Time": "Waktu Bendera Diam Kembali",
+ "Flag Idle Return Time": "Waktu Bendera Nganggur Kembali",
"Flag Touch Return Time": "Waktu Bendera Sentuh Kembali",
"Hold Time": "Waktu Tunggu",
"Kills to Win Per Player": "Pembunuhan untuk Para Pemain",
- "Laps": "Lap",
+ "Laps": "Putaran",
"Lives Per Player": "Nyawa Tiap Pemain",
"Long": "Lama",
"Longer": "Lama Sekali",
"Mine Spawning": "Ranjau Muncul",
"No Mines": "Tidak Ada Ranjau",
"None": "Tak Satupun",
- "Normal": "Sedang",
+ "Normal": "Normal",
"Pro Mode": "Mode Ahli",
- "Respawn Times": "Jeda Hingga Kembali",
- "Score to Win": "Skor menang",
+ "Respawn Times": "Muncul Kembali Hingga",
+ "Score to Win": "Skor Menang",
"Short": "Pendek",
- "Shorter": "Pendek sekali",
- "Solo Mode": "Mode Solo",
+ "Shorter": "Pendek Sekali",
+ "Solo Mode": "Mode Tunggal",
"Target Count": "Jumlah Target",
- "Time Limit": "Batas waktu"
+ "Time Limit": "Batas Waktu"
},
"statements": {
"${TEAM} is disqualified because ${PLAYER} left": "${TEAM} didiskualifikasi karena ${PLAYER} meninggalkan permainan",
- "Killing ${NAME} for skipping part of the track!": "Membunuh ${NAME} Karena melewati bagian permainan ini!",
- "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Peringatan ke ${NAME}: turbo / tombol-spamming menjatuhkan Kamu."
+ "Killing ${NAME} for skipping part of the track!": "Membunuh ${NAME} karena melewati bagian permainan ini!",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Peringatan ke ${NAME}: turbo / spam tombol menjatuhkanmu."
},
"teamNames": {
"Bad Guys": "Si Jahat",
@@ -1715,50 +1839,50 @@
"Red": "Merah"
},
"tips": {
- "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Lari-lompat-putar-dan pukul yang sempurna dan pada waktu yang tepat dapat\nmembunuh hanya dengan sekali serangan dan dapatkan penghargaan dari temanmu.",
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Lari-lompat-putar-dan pukul yang sempurna dan pada waktu yang tepat dapat\nmembunuh hanya dengan sekali serangan dan dapatkan kehormatan dari temanmu.",
"Always remember to floss.": "Selalu ingat untuk buang air.",
"Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Buat profil pemain untuk teman dan dirimu sendiri dengan\nnama dan penampilan yang kamu sukai daripada menggunakan yang acak.",
"Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Kotak Terkutuk membuatmu menjadi bom waktu.\nSatu-satunya obat adalah mencari kotak medis.",
"Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Selain penampilannya, semua kemampuan karakter sama,\npilih saja yang cocok untukmu.",
- "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Jangan terlalu sombong dengan perisai energi; Kamu masih dapat dibuang ke dalam jurang.",
- "Don't run all the time. Really. You will fall off cliffs.": "Jangan selalu berlari atau Kamu akan jatuh ke jurang.",
- "Don't spin for too long; you'll become dizzy and fall.": "Jangan putar terlalu lama; kamu akan pusing dan jatuh.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Jangan terlalu sombong dengan perisai energi; kamu masih dapat dibuang ke dalam jurang.",
+ "Don't run all the time. Really. You will fall off cliffs.": "Jangan selalu berlari. Beneran nih. Kamu akan jatuh ke jurang.",
+ "Don't spin for too long; you'll become dizzy and fall.": "Jangan berputar terlalu lama; kamu akan pusing dan jatuh.",
"Hold any button to run. (Trigger buttons work well if you have them)": "Tahan tombol apa saja untuk lari.",
"Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Tahan tombol apa saja untuk lari. Kamu akan menjadi lebih cepat\ntapi tidak dapat berbelok dengan lancar, hati-hati dengan jurang.",
"Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Bom es tidak cukup kuat, tetapi mereka membekukan\napapun yang mereka kena dan membuat orang mudah dihancurkan.",
"If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Jika seseorang mengangkatmu, pukul dia dan dia akan melepaskanmu.\nIni bekerja didunia nyata juga.",
- "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Jika Kamu tidak mempunyai kontroller, pasang app '${REMOTE_APP_NAME}\npada perangkat handphonemu untuk menggunakannya sebagai kontroller.",
- "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "",
- "If you kill an enemy in one hit you get double points for it.": "Jika Kamu membunuh musuh dengan sekali serangan maka Kamu akan mendapat poin ganda.",
- "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Jika Kamu mengambil kutukan, satu-satunya harapanmu untuk hidup adalah\nmenemukan kotak medis dalam 5 detik.",
- "If you stay in one place, you're toast. Run and dodge to survive..": "Jika Kamu berdiam diri saja, maka Kamu akan tamat. Lari dan menghindar untuk tetap hidup..",
- "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Jika Kamu mendapatkan banyak pemain yang masuk dan bergabung dalam permainan, aktifkan 'keluarkan pemain diam'\npada pengaturan untuk jaga-jaga jika seseorang lupa meninggalkan permainan.",
- "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Jika perangkatmu mulai panas atau Kamu mau menghemat baterai,\nturunkan \"Visual\" atau \"Resolusi\" pada Pengaturan->Grafis",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Jika Kamu tidak mempunyai pengontrol, pasang apl. '${REMOTE_APP_NAME}\npada perangkat hand phonemu untuk menggunakannya sebagai pengontrol.",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Jika bomb lengket menempel padamu, coba melompat-lompat dan berputar secara melingkar. Kamu mungkin\ndapat menyingkirkan bomb itu, atau tidak, momen terakhirmu akan menghibur.",
+ "If you kill an enemy in one hit you get double points for it.": "Jika kamu membunuh musuh dengan sekali serangan maka kamu akan mendapat poin ganda.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Jika kamu mengambil kutukan, satu-satunya harapanmu untuk hidup adalah\nmenemukan kotak medis dalam 5 detik.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "Jika kamu berdiam diri, maka kamu akan tamat. Lari dan menghindar untuk tetap hidup..",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Jika kamu mendapatkan banyak pemain yang masuk dan bergabung dalam permainan, aktifkan 'otomatis keluarkan pemain nganggur'\npada pengaturan untuk jaga-jaga jika seseorang lupa meninggalkan permainan.",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Jika perangkatmu mulai panas atau kamu mau menghemat baterai,\nturunkan \"Visual\" atau \"Resolusi\" pada Pengaturan->Grafis",
"If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Jika framerate-mu lemah, coba turunkan resolusi\natau visual dalam pengaturan grafis permainan.",
"In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "Dalam Ambil-Benderanya, benderamu sendiri harus ada pada bentengmu untuk mencetak skor, jika tim lain\nakan mencetak skor, mengambil benderanya adalah cara yang bagus untuk menghentikannnya.",
- "In hockey, you'll maintain more speed if you turn gradually.": "Dalam hoki, Kamu dapat mempertahankan kecepatanmu jika Kamu berbelok secara bertahap.",
+ "In hockey, you'll maintain more speed if you turn gradually.": "Dalam hoki, kamu dapat mempertahankan kecepatanmu jika kamu berbelok secara bertahap.",
"It's easier to win with a friend or two helping.": "Lebih mudah menang jika dibantu teman.",
"Jump just as you're throwing to get bombs up to the highest levels.": "Lompat sambil melempar bom untuk membuat bom melambung tinggi.",
"Land-mines are a good way to stop speedy enemies.": "Ranjau adalah cara yang bagus untuk menghentikan musuh yang cepat.",
"Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Banyak hal yang dapat diambil dan dilempar, termasuk pemain lain. Membuang\nmusuhmu ke jurang akan lebih efektif.",
"No, you can't get up on the ledge. You have to throw bombs.": "Tidak, Kamu tidak dapat melewati pembatas. Kamu harus melempar bom.",
- "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Pemain dapat masuk dan keluar ditengah-tengah permainan,\ndan Kamu juga dapat menyambung dan memutuskan kontroller.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Pemain dapat masuk dan keluar ditengah-tengah permainan,\ndan kamu juga dapat menyambung dan memutuskan pengontrol.",
"Practice using your momentum to throw bombs more accurately.": "Latihan menggunakan momentum-mu untuk melempar bom lebih akurat.",
- "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Pukulan mendapatkan lebih banyak serangan ketika Kamu\nberlari, melompat, dan berputar.",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Pukulan mendapatkan lebih banyak serangan ketika kamu\nberlari, melompat, dan berputar.",
"Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Lari maju mundur untuk melempar bom\nsangat jauh.",
"Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Hancurkan sekumpulan musuh dengan\nmemasang TNT dan meledakkannya dengan bom.",
"The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "Kepala adalah tempat yang paling rapuh, jadi menempelkannya dengan bom-lengket\nakan membuat musuhmu \"GAME OVER\".",
"This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Level ini tidak akan pernah berakhir, tetapi skor\nakan membuat semua takjub didunia ini.",
- "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Kekuatan lemparan tergantung dimana Kamu melempar.\nJika Kamu ingin melempar lebih lembut, jangan terlalu banyak bergerak.",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Kekuatan lemparan tergantung dimana kamu melempar.\nJika kamu ingin melempar lebih lembut, jangan terlalu banyak bergerak.",
"Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Bosan dengan soundtrack lama? Ganti dengan milikmu sendiri!\nLihat Pengaturan->Suara->Soundtrack",
- "Try 'Cooking off' bombs for a second or two before throwing them.": "Cobalah menunggu sumbu bom-mu mati lalu lempar.",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Cobalah menunggu sumbu bom-mu terbakar beberapa detik lalu lempar.",
"Try tricking enemies into killing eachother or running off cliffs.": "Cobalah menipu musuhmu dengan membuatnya saling membunuh atau lari ke jurang.",
"Use the pick-up button to grab the flag < ${PICKUP} >": "Gunakkan tombol ambil untuk mengambil bendera < ${PICKUP} >",
"Whip back and forth to get more distance on your throws..": "Jalan maju mundur untuk melempar lebih jauh..",
"You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Kamu dapat 'mengarahkan' tinjuanmu dengan memutar ke kiri atau ke kanan.\nIni berguna untuk memukul musuh di tepian atau membuat gol di permainan hoki.",
"You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Kamu dapat memperkirakan bom yang akan meledak dengan melihat warna percikan bom itu sendiri:\nKuning..Jingga..Merah..DUARRR.",
"You can throw bombs higher if you jump just before throwing.": "Kamu dapat melempar bom lebih tinggi jika kamu melompat sebelum melemparnya.",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Kamu akan kesakitan jika kamu menabrakan kepalamu ke benda lain,\nJadi,Jangan tabrakan kepalamu ke benda lain.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Kamu akan kesakitan jika kamu menabrakkan kepalamu ke benda lain,\nJadi, jangan tabrakan kepalamu ke benda lain.",
"Your punches do much more damage if you are running or spinning.": "Pukulanmu akan lebih sakit jika kamu lari atau berputar-putar."
}
},
@@ -1766,52 +1890,55 @@
"trophiesText": "Piala",
"trophiesThisSeasonText": "Piala Musim Ini",
"tutorial": {
- "cpuBenchmarkText": "Proses tutorial dengan kecepatan super cepat(CPU test)",
- "phrase01Text": "Hai, apa kabar?",
+ "cpuBenchmarkText": "Proses tutorial dengan kecepatan super cepat (terutama uji coba kecepatan CPU)",
+ "phrase01Text": "Hai, apa kabar?",
"phrase02Text": "Selamat Datang di ${APP_NAME}",
"phrase03Text": "Ada sedikit tips untuk mengontrol karaktermu:",
- "phrase04Text": "Banyak hal di ${APP_NAME} yang didasarkan pada FISIKA",
- "phrase05Text": "Misalnya, ketika kamu meninju....",
- "phrase06Text": "... kecepatan lenganmu memengaruhi tinjuanmu.",
- "phrase07Text": "Lihat? Kamu hanya diam, jadi ${NAME} hanya kegelian",
- "phrase08Text": "Sekarang, cobalah lompat sembari berputar supaya lebih cepat.",
- "phrase09Text": "Hmm, lebih baik",
- "phrase10Text": "Berlari juga membantu",
+ "phrase04Text": "Banyak hal di ${APP_NAME} yang didasarkan pada hukum FISIKA",
+ "phrase05Text": "Misalnya, ketika kamu meninju....",
+ "phrase06Text": "..kekuatan tinjuan-mu itu berdasarkan kecepatan ayunan lenganmu.",
+ "phrase07Text": "Tuh kan? Dia ngga gerak, si ${NAME} cuma kegelian.",
+ "phrase08Text": "Sekarang, coba lompat sambil berputar untuk dapat kecepatan lebih.",
+ "phrase09Text": "Nah, lebih nikmat.",
+ "phrase10Text": "Berlari juga membantu.",
"phrase11Text": "Tahan tombol APA SAJA untuk berlari.",
"phrase12Text": "Untuk tinjuan super maut, cobalah lari dan berputar.",
- "phrase13Text": "Ups, maaf ya ${NAME}!",
- "phrase14Text": "Kamu dapat mengangkat lalu melempar barang, bendera, atau mungkin.... ${NAME}",
+ "phrase13Text": "Ups, maaf ya ${NAME}.",
+ "phrase14Text": "Kamu dapat mengangkat dan melempar barang, bendera, bahkan.. Si ${NAME}",
"phrase15Text": "Yang terakhir, BOM.",
"phrase16Text": "Melempar bom butuh latihan.",
- "phrase17Text": "Eh! Lemparanmu sangat buruk!",
- "phrase18Text": "Lempar bom sambil lari juga membantu.",
- "phrase19Text": "Lompat membuat lemparanmu makin tinggi.",
+ "phrase17Text": "Ouch! Lemparanmu payah.",
+ "phrase18Text": "Lempar bom sambil jalan juga membantu.",
+ "phrase19Text": "Melompat membuat lemparanmu makin tinggi.",
"phrase20Text": "Lempar sambil berputar untuk lemparan terjauh.",
- "phrase21Text": "Mengatur waktu bom dapat jadi sulit.",
+ "phrase21Text": "Prediksi waktu bom itu cukup sulit.",
"phrase22Text": "Yah, meleset",
"phrase23Text": "Tunggu bom hingga matang, lalu lempar.",
- "phrase24Text": "Horee! Kerja Bagus.",
- "phrase25Text": "Yap, sepertinya itu saja.",
+ "phrase24Text": "Yay! Kerja Bagus.",
+ "phrase25Text": "Yap, kayaknya itu aja.",
"phrase26Text": "Hantam mereka, Joe!",
- "phrase27Text": "Ingat latihanmu, agar kamu dapat kembali hidup-hidup!",
- "phrase28Text": "... em, mungkin sih...",
- "phrase29Text": "Semoga beruntung kawan !",
+ "phrase27Text": "Ingat latihanmu, supaya kamu DAPAT kembali hidup-hidup!",
+ "phrase28Text": "...ehm, mungkin sih...",
+ "phrase29Text": "Semoga beruntung kawan!",
"randomName1Text": "Ucup",
"randomName2Text": "Asep",
"randomName3Text": "Galang",
- "randomName4Text": "Suci",
- "randomName5Text": "Aldi",
+ "randomName4Text": "Udin",
+ "randomName5Text": "Agus",
"skipConfirmText": "Yakin ingin melompati pembelajaran? Tekan apa saja untuk konfirmasi.",
- "skipVoteCountText": "${COUNT} dari ${TOTAL} suara untuk melewati pembelajaran",
- "skippingText": "Melewati pembelajaran...",
+ "skipVoteCountText": "${COUNT} dari ${TOTAL} suara untuk melewati latihan",
+ "skippingText": "melewati latihan...",
"toSkipPressAnythingText": "(tekan apa saja untuk melompati pembelajaran)"
},
"twoKillText": "PEMBUNUHAN GANDA!",
+ "uiScaleText": "Skala UI",
"unavailableText": "tidak tersedia",
+ "unclaimedPrizesText": "Kamu punya hadiah yang belum diterima!",
"unconfiguredControllerDetectedText": "Pengontrol belum terkonfigurasi terdeteksi:",
"unlockThisInTheStoreText": "Tersedia di toko terdekat.",
- "unlockThisProfilesText": "Untuk membuat lebih dari ${NUM} profil, Kamu memerlukan:",
- "unlockThisText": "Untuk buka ini,kamu membutuhkan:",
+ "unlockThisProfilesText": "Untuk membuat lebih dari ${NUM} profil, kamu membutuhkan:",
+ "unlockThisText": "Untuk buka ini, kamu membutuhkan:",
+ "unsupportedControllerText": "Maaf, pengontrol \"${NAME}\" tidak didukung.",
"unsupportedHardwareText": "Maaf, perangkat ini tidak mendukung build permainan ini.",
"upFirstText": "Game pertama:",
"upNextText": "${COUNT} game berikutnya:",
@@ -1819,11 +1946,15 @@
"upgradeText": "Tingkatkan",
"upgradeToPlayText": "Buka \"${PRO}\" di toko game untuk bermain.",
"useDefaultText": "Gunakan Default",
+ "userSystemScriptsCreateText": "Buat Skrip Sistem Pengguna",
+ "userSystemScriptsDeleteText": "Hapus Skrip Sistem Pengguna",
"usesExternalControllerText": "Game ini menggunakan pengontrol external untuk input.",
"usingItunesText": "Menggunakan soundtrack dari aplikasi Musik",
"usingItunesTurnRepeatAndShuffleOnText": "Tolong pastikan lagu diacak dan diulang di iTunes. ",
"v2AccountLinkingInfoText": "Untuk menautkan akun V2, gunakan tombol 'Manajemen Akun'.",
- "validatingTestBuildText": "Memvalidasi Bangunan Tes...",
+ "v2AccountRequiredText": "Membutuhkan akun V2. Upgrade akunmu dan coba lagi.",
+ "validatingTestBuildText": "Memvalidasi Tes Build...",
+ "viaText": "melalui",
"victoryText": "Menang!",
"voteDelayText": "Kamu tidak dapat memulai pemilihan suara dalam ${NUMBER} detik",
"voteInProgressText": "Pemilihan suara sedang dalam proses.",
@@ -1840,17 +1971,17 @@
"deleteReplayButtonText": "Hapus\nReplay",
"myReplaysText": "Replayku",
"noReplaySelectedErrorText": "Tidak Ada Replay Terpilih",
- "playbackSpeedText": "Kecepatan Putar Ulang: ${SPEED}",
- "renameReplayButtonText": "Ganti\nNama",
- "renameReplayText": "Mengubah nama\"${REPLAY}\" ke",
+ "playbackSpeedText": "Kecepatan Pemutaran: ${SPEED}",
+ "renameReplayButtonText": "Ganti Nama\nReplay",
+ "renameReplayText": "Mengubah nama \"${REPLAY}\" menjadi:",
"renameText": "Ganti Nama",
- "replayDeleteErrorText": "Galat menghapus replay",
- "replayNameText": "Nama Replay",
- "replayRenameErrorAlreadyExistsText": "Replay dengan nama yang sudah ada",
- "replayRenameErrorInvalidName": "Tidak dapat menganti nama replay; nama invailid",
- "replayRenameErrorText": "Error mengganti nama replay",
- "sharedReplaysText": "Replay dibagikan",
- "titleText": "Nonton",
+ "replayDeleteErrorText": "Kesalahan menghapus replay.",
+ "replayNameText": "Nama Rekaman",
+ "replayRenameErrorAlreadyExistsText": "Rekaman dengan nama tersebut sudah ada",
+ "replayRenameErrorInvalidName": "Tidak dapat mengganti nama rekaman; nama tidak valid",
+ "replayRenameErrorText": "Error mengganti nama rekaman",
+ "sharedReplaysText": "Replay Yang Dibagikan",
+ "titleText": "Tonton",
"watchReplayButtonText": "Lihat\nReplay"
},
"waveText": "Gelombang",
@@ -1874,10 +2005,10 @@
"winsPlayerText": "${NAME} Menang!",
"winsTeamText": "${NAME} Menang!",
"winsText": "${NAME} Menang!",
- "workspaceSyncErrorText": "Menyinkronkan ke ${WORKSPACE} error. Lihat log untuk lebih detailnya.",
+ "workspaceSyncErrorText": "Kesalahan menyinkronkan ke ${WORKSPACE}. Lihat log untuk lebih detailnya.",
"workspaceSyncReuseText": "Tidak bisa menyinkronkan ${WORKSPACE}. Menggunakan kembali versi sinkronan sebelumnya.",
"worldScoresUnavailableText": "Skor Dunia tidak tersedia.",
- "worldsBestScoresText": "Nilai Terbaik Dunia",
+ "worldsBestScoresText": "Nilai Publik Terbaik",
"worldsBestTimesText": "Waktu Terbaik Dunia",
"xbox360ControllersWindow": {
"getDriverText": "Dapatkan Driver",
@@ -1888,6 +2019,7 @@
"titleText": "Menggunakan pengontrol Xbox 360 dengan ${APP_NAME}:"
},
"yesAllowText": "Ya, Izinkan!",
- "yourBestScoresText": "Skor terbaikmu",
- "yourBestTimesText": "Waktu Terbaikmu"
+ "yourBestScoresText": "Skor Terbaikmu",
+ "yourBestTimesText": "Waktu Terbaikmu",
+ "yourPrizeText": "Hadiahmu:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/italian.json b/dist/ba_data/data/languages/italian.json
index 0361c7f7..af0d014b 100644
--- a/dist/ba_data/data/languages/italian.json
+++ b/dist/ba_data/data/languages/italian.json
@@ -7,7 +7,9 @@
"campaignProgressText": "Progresso Campagna [Difficile]: ${PROGRESS}",
"changeOncePerSeason": "Puoi cambiare questa cosa solo una volta a stagione.",
"changeOncePerSeasonError": "Devi aspettare la prossima stagione per apportare delle modifiche (${NUM} days)",
+ "createAnAccountText": "Crea un'Account",
"customName": "Nome Personalizzato",
+ "deleteAccountText": "Elimina Account",
"deviceSpecificAccountText": "Stai usando un account automaticamente generato: ${NAME}",
"googlePlayGamesAccountSwitchText": "Se desideri utilizzare un'altro account Google,\nutilizza l'app Google Play Games.",
"linkAccountsEnterCodeText": "Inserisci il codice",
@@ -17,24 +19,26 @@
"linkAccountsInstructionsText": "Per collegare due account, crea un codice su uno\ndei dispositivi e inserisci quel codice negli altri. \nProgressi e inventario verranno combinati.\nPuoi collegare fino a ${COUNT} account.\n\nIMPORTANTE: Collega solo account che possiedi!\nSe colleghi un account con un tuo amico non potrete\ngiocare allo stesso momento!\n \nInoltre: questa operazione non può essere annullata, quindi stai attento!",
"linkAccountsText": "Collega account",
"linkedAccountsText": "Account Collegati:",
- "manageAccountText": "Gestisci account",
+ "manageAccountText": "Gestisci Account",
"nameChangeConfirm": "Confermi di voler modificare il tuo nome in ${NAME}?",
"notLoggedInText": "",
- "resetProgressConfirmNoAchievementsText": "Stai per cancellare i tuoi progressi in\nmodalità cooperativa, i tuoi obbiettivi, i tuoi punteggi\nlocali (ma non i tuoi biglietti). \n\nL'operazione è irreversibile: continuare?",
+ "resetProgressConfirmNoAchievementsText": "Stai per cancellare i tuoi progressi in modalità cooperativa,\ni tuoi obiettivi ed i tuoi punteggi locali (ma non i tuoi biglietti). \nL'operazione è irreversibile: continuare?",
"resetProgressConfirmText": "Stai per cancellare i tuoi progressi in\nmodalità cooperativa, i tuoi punteggi\nlocali e i tuoi obiettivi (ma non i tuoi biglietti).\nL'operazione è irreversibile: continuare?",
"resetProgressText": "Cancella Progressi",
"setAccountName": "Inserisci un nome utente",
"setAccountNameDesc": "Seleziona quale nome visualizzare per il tuo account.\nPuoi usare quel nome per uno dei tuoi account collegati,\noppure creare un unico nome personalizzato.",
"signInInfoText": "Accedi per raccogliere biglietti, competere online,\ne condividere i progressi tra i vari dispositivi.",
"signInText": "Accedi",
+ "signInWithAnEmailAddressText": "Accedi con un indirizzo email",
"signInWithDeviceInfoText": "(Un solo account automatico è disponibile per questo dispositivo)",
"signInWithDeviceText": "Accedi con l'account del dispositivo",
"signInWithGameCircleText": "Accedi con Game Circle",
"signInWithGooglePlayText": "Accedi con Google Play",
"signInWithTestAccountInfoText": "(tipo di account obsoleto; usa gli account dispositivo d'ora in poi)",
"signInWithTestAccountText": "Accedi con un account di prova",
+ "signInWithText": "Accedi con ${SERVICE}",
"signInWithV2InfoText": "(un account che funziona su tutte le piattaforme)",
- "signInWithV2Text": "Effettua l'accesso con un account di BombSquad",
+ "signInWithV2Text": "Accedi con un account ${APP_NAME}",
"signOutText": "Esci",
"signingInText": "Accesso in corso...",
"signingOutText": "Uscita in corso...",
@@ -45,7 +49,7 @@
"titleText": "Account",
"unlinkAccountsInstructionsText": "Seleziona un account da scollegare",
"unlinkAccountsText": "Scollega Account",
- "unlinkLegacyV1AccountsText": "Desvincular cuentas heredadas (V1)",
+ "unlinkLegacyV1AccountsText": "Scollega gli account legacy (V1)",
"v2LinkInstructionsText": "Usa questo link per creare un account o accedere.",
"viaAccount": "(tramite ${NAME})",
"youAreLoggedInAsText": "Accesso effettuato come:",
@@ -334,15 +338,20 @@
},
"achievementsRemainingText": "Trofei rimasti:",
"achievementsText": "Trofei",
- "achievementsUnavailableForOldSeasonsText": "Mi dispiace, ma gli obbiettivi non sono disponibili per le stagioni vecchie.",
+ "achievementsUnavailableForOldSeasonsText": "Mi dispiace, ma gli obiettivi non sono disponibili per le stagioni vecchie.",
"activatedText": "${THING} attivato.",
"addGameWindow": {
"getMoreGamesText": "Ottieni Giochi...",
"titleText": "Aggiungi Partita"
},
+ "addToFavoritesText": "Aggiungi ai Preferiti",
+ "addedToFavoritesText": "'${NAME}' aggiunto ai Preferiti",
+ "allText": "Tutto",
"allowText": "Consenti",
"alreadySignedInText": "Il tuo account è collegato da un altro dispositivo;\ncambia account o chiudi il gioco nel tuo altro\ndispositivo e riprova.",
"apiVersionErrorText": "Impossibile caricare il modulo ${NAME}; sono installate le API versione ${VERSION_USED}; è richiesta la ${VERSION_REQUIRED}.",
+ "applyText": "Applica",
+ "areYouSureText": "Vuoi davvero procedere?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" abilitalo solo quando sono connesse delle cuffie)",
"headRelativeVRAudioText": "Audio VR Head-Relative",
@@ -367,14 +376,24 @@
"boostText": "Potenziamento",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} è configurato nell'app stessa.",
"buttonText": "pulsante",
- "canWeDebugText": "Vorresti che BombSquad segnalasse automaticamente bug, errori\ne informazioni sull'utilizzo direttamente allo sviluppatore?\n\nQuesti dati non contengono informazioni personali e aiutano a \nmantenere il gioco privo di bug e rallentamenti.",
+ "canWeDebugText": "Vorresti che ${APP_NAME} segnalasse automaticamente bug, errori\ne informazioni sull'utilizzo direttamente allo sviluppatore?\n\nQuesti dati non contengono informazioni personali e aiutano a \nmantenere il gioco privo di bug e rallentamenti.",
"cancelText": "Annulla",
"cantConfigureDeviceText": "Spiacente, ${DEVICE} non è configurabile.",
"challengeEndedText": "Questa sfida è finita.",
"chatMuteText": "Silenzia Chat",
"chatMutedText": "Chat Silenziata",
"chatUnMuteText": "Smuta Chat",
+ "chests": {
+ "prizeOddsText": "Possibilità di vincita",
+ "reduceWaitText": "Diminiusci Attesa",
+ "slotDescriptionText": "Questo spazio può tenere un forziere.\n\nOttieni casse giocando livelli nella campagna,\nclassificandoti nei tornei, e completando\nobiettivi.",
+ "slotText": "Slot Forziere ${NUM}",
+ "slotsFullWarningText": "ATTENZIONE: Tutti gli spazi per casse sono pieni.\nLe casse che otterrai in questa partita saranno perse.",
+ "unlocksInText": "Si Sblocca Tra"
+ },
"choosingPlayerText": "",
+ "claimText": "Ottieni",
+ "codesExplainText": "i codici sono forniti dallo sviluppatore per\nscoprire e correggere problemi all'account.",
"completeThisLevelToProceedText": "Devi completare questo\nlivello per procedere!",
"completionBonusText": "Competizione bonus",
"configControllersWindow": {
@@ -458,6 +477,7 @@
"titleText": "Configura il Touchscreen",
"touchControlsScaleText": "Scala dei Comandi Touch"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} può essere configurato nelle Impostazioni di Sistema.",
"configureItNowText": "Configurarlo adesso?",
"configureText": "Configura",
"connectMobileDevicesWindow": {
@@ -509,7 +529,7 @@
"toRankedText": "Al prossimo livello",
"totalText": "Totale",
"tournamentInfoText": "Competi per punteggi alti con\naltri giocatori della tua lega.\n\nI premi sono assegnati ai giocatori con\ni punteggi più alti quando il tempo del torneo scade.",
- "welcome1Text": "Benvenuto in ${LEAGUE}. Puoi migliorare il tuo\n livello lega guadagnando stelle, completando\n obbiettivi, e vincendo i trofei.",
+ "welcome1Text": "Benvenuto in ${LEAGUE}. Puoi migliorare il tuo\n livello lega guadagnando stelle, completando\n obiettivi, e vincendo i trofei.",
"welcome2Text": "Puoi anche guadagnare biglietti con molte attività simili.\nI biglietti possono essere usato per sbloccare nuovi capitoli, mappe e\nmini-giochi, per entrare nei tornei ed altro.",
"yourPowerRankingText": "La tua posizione assoluta"
},
@@ -568,6 +588,7 @@
"demoText": "Demo",
"denyText": "Nega",
"deprecatedText": "Deprecato",
+ "descriptionText": "Descrizione",
"desktopResText": "Risoluzione Nativa",
"deviceAccountUpgradeText": "Attenzione:\nHai effettuato l'accesso con un profilo dispositivo (${NAME}$).\nI profili dispositivi verranno rimossi in un aggiornamento futuro.\nAggiornati ad un profilo V2 se desideri mantenere i tuoi progressi.",
"difficultyEasyText": "Facile",
@@ -578,6 +599,10 @@
"disableRemoteAppConnectionsText": "Disattiva connessione remota all'app",
"disableXInputDescriptionText": "Permette l'uso di più di 4 pulsantiere, ma potrebbe anche non funzionare.",
"disableXInputText": "Disabilita XInput",
+ "disabledText": "DISABILITATO",
+ "discardText": "Butta",
+ "discordFriendsText": "Cerchi altri con cui giocare?\nEntra nel nostro server Discord e fatti nuovi amici!",
+ "discordJoinText": "Entra nel server Discord",
"doneText": "Fatto",
"drawText": "Pareggio",
"duplicateText": "Duplicato",
@@ -585,7 +610,7 @@
"addGameText": "Aggiungi\nGioco",
"cantOverwriteDefaultText": "Non puoi sovrascrivere la scaletta predefinita!",
"cantSaveAlreadyExistsText": "Una scaletta con quel nome esiste già!",
- "cantSaveEmptyListText": "Non puoi salvare una scaletta vuota!",
+ "cantSaveEmptyListText": "Non puoi salvare una playlist vuota!",
"editGameText": "Modifica\nGioco",
"gameListText": "Serie di Partite",
"listNameText": "Nome Scaletta",
@@ -612,6 +637,7 @@
"localProfileText": "(profilo locale)",
"nameDescriptionText": "Nome del giocatore",
"nameText": "Nome",
+ "profileAlreadyExistsText": "Esiste già un profilo con quel nome.",
"randomText": "casuale",
"titleEditText": "Modifica Profilo",
"titleNewText": "Nuovo Profilo",
@@ -651,6 +677,7 @@
"useMusicFolderText": "Cartella di Musica"
},
"editText": "Modifica",
+ "enabledText": "Abilitato",
"endText": "Fine",
"enjoyText": "Buon Divertimento!",
"epicDescriptionFilterText": "${DESCRIPTION} a rallentatore leggendario.",
@@ -662,6 +689,8 @@
"errorText": "Errore",
"errorUnknownText": "errore sconosciuto",
"exitGameText": "Uscire da ${APP_NAME}?",
+ "expiredAgoText": "Scaduta ${T} fa",
+ "expiresInText": "Scade tra ${T}",
"exportSuccessText": "'${NAME}' esportato",
"externalStorageText": "Memoria Esterna",
"failText": "Perso",
@@ -698,6 +727,8 @@
"editText": "Modifica\nScaletta",
"gameListText": "Lista delle serie di partite",
"newText": "Nuova\nScaletta",
+ "pointsToWinText": "Punti Per Vincere",
+ "seriesLengthText": "Durata Serie",
"showTutorialText": "Mostra Guida",
"shuffleGameOrderText": "Ordine Partite Casuale",
"titleText": "Personalizza Scalette ${TYPE}"
@@ -726,6 +757,7 @@
"copyCodeConfirmText": "Codice copiato negli appunti!",
"copyCodeText": "Copia il codice",
"dedicatedServerInfoText": "Per risultati migliori, crea un server dedicato. Vedi bombsquadgame.com/server per scoprire come.",
+ "descriptionShortText": "Utilizza la finestra raduna per creare un party.",
"disconnectClientsText": "Questo disconnetterà ${COUNT} giocatore/i\nnel tuo gruppo. Sei sicuro?",
"earnTicketsForRecommendingAmountText": "I tuoi amici riceveranno ${COUNT} biglietti se proveranno il gioco\n(anche tu riceverai ${YOU_COUNT} biglietti per ogni amico che lo farà)",
"earnTicketsForRecommendingText": "Condividi il gioco\nper biglietti gratis...",
@@ -738,10 +770,10 @@
"friendHasSentPromoCodeText": "${COUNT} biglietti di ${APP_NAME} da ${NAME}",
"friendPromoCodeAwardText": "Riceverai ${COUNT} biglietti ogni volta che viene usato.",
"friendPromoCodeExpireText": "Questo codice scadrà in ${EXPIRE_HOURS} ore e funziona soltanto per nuovi giocatori.",
- "friendPromoCodeInstructionsText": "Per usarlo, apri ${APP_NAME} e vai su \"Impostazioni->Avanzate->Inserisci Codice\".\nVisita bombsquadgame.com per i link di download per tutte le versioni supportate.",
+ "friendPromoCodeInstructionsText": "Per usarlo, apri ${APP_NAME} e vai su \"Impostazioni->Avanzate->Invia Informazioni\".\nVisita bombsquadgame.com per i link di download per tutte le versioni supportate.",
"friendPromoCodeRedeemLongText": "Puó essere utilizzato per ${COUNT} biglietti gratis per un massimo di ${MAX_USES} persone.",
"friendPromoCodeRedeemShortText": "Puó essere utilizzato per ${COUNT} biglietti nel gioco.",
- "friendPromoCodeWhereToEnterText": "(in \"Impostazioni->Avanzate->Inserisci Codice\")",
+ "friendPromoCodeWhereToEnterText": "(in \"Impostazioni->Avanzate->Invia Informazioni\")",
"getFriendInviteCodeText": "Ottieni un Codice di Invito",
"googlePlayDescriptionText": "Invita giocatori Google Play nel tuo gruppo:",
"googlePlayInviteText": "Invita",
@@ -773,11 +805,12 @@
"manualYourLocalAddressText": "Indirizzo locale:",
"nearbyText": "Locale",
"noConnectionText": "",
+ "noPartiesAddedText": "Nessun Party Aggiunto",
"otherVersionsText": "(altre versioni)",
"partyCodeText": "Codice del Party",
"partyInviteAcceptText": "Accetta",
"partyInviteDeclineText": "Rifiuta",
- "partyInviteGooglePlayExtraText": "(vedi la scheda 'Google Play' nella finestra 'Raduna')",
+ "partyInviteGooglePlayExtraText": "(vedi la scheda 'Google Play' nella finestra 'Raduna') ",
"partyInviteIgnoreText": "Ignora",
"partyInviteText": "${NAME} ti ha invitato\nad unirsi al suo party!",
"partyNameText": "Nome Party",
@@ -844,6 +877,12 @@
"youHaveShortText": "Hai ${COUNT}",
"youHaveText": "Hai ${COUNT} biglietti"
},
+ "goldPass": {
+ "desc1InfTokensText": "Gettoni infiniti.",
+ "desc2NoAdsText": "Niente pubblicità.",
+ "desc3ForeverText": "Per sempre.",
+ "goldPassText": "Pass d'Oro"
+ },
"googleMultiplayerDiscontinuedText": "Mi dispiace, il servizio multiplayer di Google non è più disponibile.\nSto lavorando per sostituirlo il più velocemente possibile.\nFino a quando non troverò una soluzione, prova un altro metodo per connetterti.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Gli acquisti Google Play non sono disponibili.\nPotresti dover aggiornare lo store.",
"googlePlayServicesNotAvailableText": "Google Play Services non è disponibile.\nAlcune funzionalità dell'app saranno disattivate.",
@@ -853,16 +892,18 @@
"autoText": "Automatico",
"fullScreenCmdText": "Schermo intero (Cmd-F)",
"fullScreenCtrlText": "Schermo intero (Ctrl-F)",
+ "fullScreenText": "Schermo intero",
"gammaText": "Gamma",
"highText": "Alto",
"higherText": "Più alto",
"lowText": "Basso",
+ "maxFPSText": "FPS massimi",
"mediumText": "Medio",
"neverText": "Mai",
"resolutionText": "Risoluzione",
"showFPSText": "Mostra FPS",
"texturesText": "Textures",
- "titleText": "Grafiche",
+ "titleText": "Grafica",
"tvBorderText": "Bordo della TV",
"verticalSyncText": "Sincronizzazione verticale",
"visualsText": "Visuali"
@@ -920,6 +961,7 @@
"importText": "Importa",
"importingText": "Importando...",
"inGameClippedNameText": "Nel gioco ci sarà\n\"${NAME}\"",
+ "inboxText": "Posta",
"installDiskSpaceErrorText": "ERRORE: Impossibile completare l'installazione. \nPotresti aver esaurito lo spazio sul tuo dispositivo. \nLibera un po' di spazio e prova di nuovo.",
"internal": {
"arrowsToExitListText": "Premi ${LEFT} o ${RIGHT} per uscire dalla serie",
@@ -976,12 +1018,14 @@
"touchScreenJoinWarningText": "Ti sei unito al gioco con il touchscreen.\nSe è stato un errore, premi 'Menu->Lascia Gioco'.",
"touchScreenText": "TouchScreen",
"trialText": "prova",
+ "unableToCompleteTryAgainText": "Impossibile completare ciò al momento.\nPerfavore riprovare.",
"unableToResolveHostText": "Errore: impossibile connettersi all'host",
"unavailableNoConnectionText": "Non è al momento disponibile (dipende dalla tua connessione?)",
"vrOrientationResetCardboardText": "Usa questo per ripristinare l'orientamento del VR.\nPer giocare avrai bisogno di un controller esterno.",
"vrOrientationResetText": "Ripristina orientamento VR.",
"willTimeOutText": "(se inattivo potrai riprendere il controllo)"
},
+ "inventoryText": "Inventario",
"jumpBoldText": "SALTO",
"jumpText": "Salta",
"keepText": "Mantieni",
@@ -1028,8 +1072,11 @@
"seasonEndsMinutesText": "La stagione finisce tra ${NUMBER} minuti.",
"seasonText": "Stagione ${NUMBER}",
"tournamentLeagueText": "Devi raggiungere la lega ${NAME} per partecipare a questo torneo.",
- "trophyCountsResetText": "Il numero dei trofei verra azzerato la prossima stagione."
+ "trophyCountsResetText": "Il numero dei trofei verra azzerato la prossima stagione.",
+ "upToDateBonusDescriptionText": "I giocatori che utilizzano una versione recente del\ngioco otterranno un bonus del ${PERCENT}% qui.",
+ "upToDateBonusText": "Bonus Aggiornato"
},
+ "learnMoreText": "Scopri di più",
"levelBestScoresText": "Miglior punteggio in ${LEVEL}",
"levelBestTimesText": "Miglior tempo in ${LEVEL}",
"levelFastestTimesText": "Tempo migliore su ${LEVEL}",
@@ -1072,10 +1119,12 @@
"maxConnectionsText": "Connessioni massime",
"maxPartySizeText": "Dimensione massima gruppo",
"maxPlayersText": "Giocatori massimi",
- "merchText": "Mercancía!",
+ "merchText": "Magliette!",
"modeArcadeText": "Modalità Arcade",
"modeClassicText": "Modalità Classica",
"modeDemoText": "Modalità Demo",
+ "moreSoonText": "Di più in arrivo...",
+ "mostDestroyedPlayerText": "Giocatore più distrutto",
"mostValuablePlayerText": "Giocatore Più Bravo",
"mostViolatedPlayerText": "Giocatore Più Ucciso",
"mostViolentPlayerText": "Giocatore Più Violento",
@@ -1092,6 +1141,7 @@
"nameSuicideText": "${NAME} si è suicidato.",
"nameText": "Nome",
"nativeText": "Nativa",
+ "newExclaimText": "Novità!",
"newPersonalBestText": "Nuovo record personale!",
"newTestBuildAvailableText": "Una nuova versione beta è disponibile (${VERSION} build ${BUILD}).\nScaricala da ${ADDRESS}",
"newText": "Nuovo",
@@ -1103,13 +1153,17 @@
"noExternalStorageErrorText": "Nessun archiviatore esterno trovato su questo dispositivo",
"noGameCircleText": "Errore: non hai effettuato il login su GameCircle",
"noJoinCoopMidwayText": "Non puoi entrare in una partita cooperativa già iniziata.",
+ "noMessagesText": "Nessun messaggio.",
+ "noPluginsInstalledText": "Nessun Plugin Installato",
"noProfilesErrorText": "Non hai un profilo giocatore, quindi sei bloccato con '${NAME}'.\nVai su Impostazioni > Profili giocatore per creare un profilo personale.",
"noScoresYetText": "Ancora nessun punteggio.",
+ "noServersFoundText": "Nessun server individuato.",
"noThanksText": "No Grazie",
"noTournamentsInTestBuildText": "I punteggi del torneo di questo test build verranno ignorati",
"noValidMapsErrorText": "Non sono state trovate mappe valide per questo tipo di gioco.",
"notEnoughPlayersRemainingText": "Non ci sono più abbastanza giocatori: esci e inizia un'altra partita.",
"notEnoughPlayersText": "Hai bisogno di almeno ${COUNT} giocatori per iniziare questa partita!",
+ "notEnoughTicketsText": "Non hai abbastanza biglietti fra",
"notNowText": "Non ora",
"notSignedInErrorText": "Per fare questo, devi accedere.",
"notSignedInGooglePlayErrorText": "Per fare questo devi accedere a Google Play.",
@@ -1122,6 +1176,9 @@
"onText": "Attiva",
"oneMomentText": "Un Momento...",
"onslaughtRespawnText": "${PLAYER} ritornerà all'ondata ${WAVE}",
+ "openMeText": "Aprimi!",
+ "openNowText": "Apri Ora",
+ "openText": "Apri",
"orText": "${A} o ${B}",
"otherText": "Altro",
"outOfText": "(#${RANK} su ${ALL})",
@@ -1178,7 +1235,11 @@
"pleaseWaitText": "Attendi...",
"pluginClassLoadErrorText": "Errore nel caricamento di plugin classe '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Errore inizializzazione plugin '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Impostazioni plugin",
+ "pluginsAutoEnableNewText": "Auto abilitazione nuovi plugins",
"pluginsDetectedText": "nuovo/i plugin rilevato. Riavvia per attivarli, o configurali nelle impostazioni.",
+ "pluginsDisableAllText": "Disabilita tutti i plugins",
+ "pluginsEnableAllText": "Abilita tutti i plugins",
"pluginsRemovedText": "${NUM} plugin non trovati.",
"pluginsText": "Plugin",
"practiceText": "Allenamento",
@@ -1211,6 +1272,8 @@
"punchText": "Pugno",
"purchaseForText": "Acquista per ${PRICE}",
"purchaseGameText": "Acquista il gioco",
+ "purchaseNeverAvailableText": "Purtroppo, gli acquisti non sono disponibili su questa versione.\nProva ad accedere al tuo account su un'altra piattaforma e fare gli acquisti lì.",
+ "purchaseNotAvailableText": "Non disponibile per l'acquisto.",
"purchasingText": "Acquisto in corso...",
"quitGameText": "Uscire da ${APP_NAME}?",
"quittingIn5SecondsText": "Uscendo in 5 secondi...",
@@ -1253,6 +1316,7 @@
"version_mismatch": "Incompatibilità di versione.\nAssicurati che BombSquad e BombSquad Remote\nsiano alla stessa versione e riprova."
},
"removeInGameAdsText": "Sblocca \"${PRO}\" nel negozio per rimuovere le pubblicità.",
+ "removeInGameAdsTokenPurchaseText": "PER UN TEMPO LIMITATO: Acquista QUALSIASI pacco di gettoni per rimuovere la pubblicità.",
"renameText": "Rinomina",
"replayEndText": "Fine Replay",
"replayNameDefaultText": "Replay Ultima Partita",
@@ -1273,7 +1337,9 @@
"revertText": "Ritorna",
"runText": "Corri",
"saveText": "Salva",
- "scanScriptsErrorText": "Errore/i nella lettura degli script, guardare il log per i dettagli.",
+ "scanScriptsErrorText": "Errore/i nella lettura degli script. guardare il log per i dettagli.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} e ${NUM} altri moduli necessitano di essere aggiornati per la api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} necessita di essere aggiornato per la api ${API}.",
"scoreChallengesText": "Punteggi sfida",
"scoreListUnavailableText": "Lista punteggi non disponibile.",
"scoreText": "Punteggio",
@@ -1284,6 +1350,7 @@
},
"scoreWasText": "(era ${COUNT})",
"selectText": "Seleziona",
+ "sendInfoDescriptionText": "Invia le informazioni sullo stato dell'account e dell'applicazione allo sviluppatore.\nPrego di includere il proprio nome o il motivo dell'invio.",
"seriesWinLine1PlayerText": "VINCE LA",
"seriesWinLine1TeamText": "VINCE LA",
"seriesWinLine1Text": "VINCE LA",
@@ -1300,24 +1367,33 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(una semplice tastiera sullo schermo per editare testi)",
- "alwaysUseInternalKeyboardText": "Usa Sempre La Tastiera Interna",
+ "alwaysUseInternalKeyboardText": "Usa sempre la tastiera interna",
"benchmarksText": "Benchmarks & Prove Di Stress",
+ "devToolsText": "Strumenti di Sviluppo",
"disableCameraGyroscopeMotionText": "Disabilita il movimento della visuale tramite giroscopio",
"disableCameraShakeText": "Disabilita il tremolio della visuale",
- "disableThisNotice": "(puoi disattivare questo messaggio su Impostazioni>Avanzate)",
+ "disableThisNotice": "(puoi disattivare questo messaggio su Impostazioni > Avanzate)",
"enablePackageModsDescriptionText": "(abilita la possibilità di modding aggiuntivo ma disabilita il gioco in rete)",
"enablePackageModsText": "Abilita Mod Dei Pacchetti Locali",
"enterPromoCodeText": "Inserisci il Codice",
"forTestingText": "Note: questi valori sono solo di prova e saranno cancellati uscendo dalla app.",
"helpTranslateText": "Le traduzioni di ${APP_NAME} sono un contributo\ndella comunità. Se vuoi contribuire o correggere una\ntraduzione, segui il link qui sotto. Grazie in anticipo!",
+ "insecureConnectionsDescriptionText": "non è consigliato, ma potrebbe consentire\ndi giocare online da regioni o reti protette",
+ "insecureConnectionsText": "Usa connessioni non sicure",
"kickIdlePlayersText": "Caccia i giocatori inattivi",
"kidFriendlyModeText": "Modalità per bambini (violenza ridotta e altro)",
"languageText": "Lingua",
"moddingGuideText": "Manuale di personalizzazione",
+ "moddingToolsText": "Strumenti di Modding",
"mustRestartText": "Devi riavviare il gioco per apportare questa modifica.",
"netTestingText": "Collaudo Rete",
"resetText": "Reset",
+ "sendInfoText": "Invia Informazioni",
"showBombTrajectoriesText": "Mostra le traiettorie delle bombe",
+ "showDemosWhenIdleText": "Mostra demo quando inattivo",
+ "showDeprecatedLoginTypesText": "Mostra metodi di login obsoleti",
+ "showDevConsoleButtonText": "Mostra tasto console sviluppatore",
+ "showInGamePingText": "Mostra il ping in gioco",
"showPlayerNamesText": "Mostra i nomi dei giocatori",
"showUserModsText": "Apri cartella personalizzazioni",
"titleText": "Avanzato",
@@ -1325,8 +1401,8 @@
"translationFetchErrorText": "stato traduzione non disponibile",
"translationFetchingStatusText": "controllo stato traduzione...",
"translationInformMe": "Informami quando la mia lingua ha bisogno di aggiornamenti",
- "translationNoUpdateNeededText": "la traduzione italiana è completa; woohoo!",
- "translationUpdateNeededText": "** ci sono testi da tradurre!! **",
+ "translationNoUpdateNeededText": "La traduzione italiana è completa; woohoo!",
+ "translationUpdateNeededText": "** Ci sono testi da tradurre!! **",
"vrTestingText": "Collaudo VR"
},
"shareText": "Condividi",
@@ -1336,6 +1412,9 @@
"signInWithGameCenterText": "Per utilizzare un account Game Center,\naccedi utilizzando l'app Game Center.",
"singleGamePlaylistNameText": "Solo ${GAME}",
"singlePlayerCountText": "Un giocatore",
+ "sizeLargeText": "Grande",
+ "sizeMediumText": "Medio",
+ "sizeSmallText": "Piccolo",
"soloNameFilterText": "${NAME} Testa a Testa",
"soundtrackTypeNames": {
"CharSelect": "Selezione del personaggio",
@@ -1361,6 +1440,7 @@
},
"spaceKeyText": "spazio",
"statsText": "statistiche",
+ "stopRemindingMeText": "Non Ricordarmelo Più",
"storagePermissionAccessText": "Richiede l'accesso alla memoria locale",
"store": {
"alreadyOwnText": "Hai già acquistato ${NAME}!",
@@ -1412,6 +1492,8 @@
"storeText": "Negozio",
"submitText": "Inoltra",
"submittingPromoCodeText": "Inoltrando il Codice...",
+ "successText": "Fatto!",
+ "supportEmailText": "Se riscontri problemi con l'app,\nper favore scrivi a ${EMAIL}.",
"teamNamesColorText": "Colore/Nome Team",
"teamsText": "Squadre",
"telnetAccessGrantedText": "Accesso a telnet abilitato",
@@ -1422,6 +1504,7 @@
"testBuildValidatedText": "Build Di Prova Validata; Divertiti!",
"thankYouText": "Grazie per il supporto! Goditi il gioco!!",
"threeKillText": "TRIPLA UCCISIONE!!",
+ "ticketsDescriptionText": "I Biglietti si usano per sbloccare personaggi,\nmappe, minigiochi, ed altro nel negozio.\n\nI Biglietti si possono trovare nei forzieri e vincere\nnelle campagne, nei tornei, e con gli obiettivi trofeo.",
"timeBonusText": "Bonus Tempo",
"timeElapsedText": "Tempo trascorso",
"timeExpiredText": "Tempo Scaduto",
@@ -1432,10 +1515,24 @@
"tipText": "Consiglio",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Ottieni Gettoni",
+ "notEnoughTokensText": "Non hai abbastanza gettoni!",
+ "numTokensText": "${COUNT} Gettoni",
+ "openNowDescriptionText": "Hai gettoni sufficienti\nper aprire ora - non\nserve aspettare.",
+ "shinyNewCurrencyText": "La nuovissima valuta di BombSquad.",
+ "tokenPack1Text": "Pacco di Gettoni Mini",
+ "tokenPack2Text": "Pacco di Gettoni Medio",
+ "tokenPack3Text": "Pacco di Gettoni Grande",
+ "tokenPack4Text": "Pacco di Gettoni Enorme",
+ "tokensDescriptionText": "I gettoni si usano per accelerare lo sblocco dei forzieri\ne per altri acquisti di gioco o legati all'account.\n\nPuoi vincere gettoni nel gioco, o acquistali\ndai pacchetti. Oppure acquista un Pass Oro per ottenere\ngettoni infiniti senza più preoccupazioni.",
+ "youHaveGoldPassText": "Hai un Pass d'Oro.\nTutti gli acquisti di gettoni sono gratuiti.\nDivertiti!"
+ },
"topFriendsText": "Gli amici migliori",
"tournamentCheckingStateText": "Controllo stato torneo in corso; attendere...",
"tournamentEndedText": "Questo torneo è finito. Ne partirà un altro a breve.",
"tournamentEntryText": "Partecipa al Torneo",
+ "tournamentFinalStandingsText": "Posizioni Finali",
"tournamentResultsRecentText": "Risultati recenti del torneo",
"tournamentStandingsText": "Classifica del torneo",
"tournamentText": "Torneo",
@@ -1509,6 +1606,18 @@
"Uber Onslaught": "Assalto Ultra",
"Uber Runaround": "Girotondo Ultra"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Biglietti",
+ "${C} Tokens": "${C} Gettoni",
+ "Chest": "Forziere",
+ "L1 Chest": "Forziere Lv.1",
+ "L2 Chest": "Forziere Lv.2",
+ "L3 Chest": "Forziere Lv.3",
+ "L4 Chest": "Forziere Lv.4",
+ "L5 Chest": "Forziere Lv.5",
+ "L6 Chest": "Forziere Lv.6",
+ "Unknown Chest": "Forziere Ignoto"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Per vincere, sii il prescelto per un determinato tempo.\nUccidi il prescelto per diventarlo.",
"Bomb as many targets as you can.": "Bombarda più bersagli che puoi.",
@@ -1614,6 +1723,7 @@
"Korean": "Koreano",
"Malay": "Malese",
"Persian": "Persiano",
+ "PirateSpeak": "Piratese",
"Polish": "Polacco",
"Portuguese": "Portoghese",
"Romanian": "Rumeno",
@@ -1688,6 +1798,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Individuato imbroglio: punteggi e premi sospesi per ${COUNT} giorni.",
"Could not establish a secure connection.": "Impossibile stabilire una connessione sicura.",
"Daily maximum reached.": "Limite massimo giornaliero raggiunto.",
+ "Daily sign-in reward": "Premio d'accesso giornaliero",
"Entering tournament...": "Entrando nel torneo...",
"Invalid code.": "Codice non valido.",
"Invalid payment; purchase canceled.": "Pagamento non valido; acquisto annullato.",
@@ -1697,21 +1808,26 @@
"Item unlocked!": "Oggetto sbloccato!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "Collegamento rifiutato. ${ACCOUNT} contiene\ndati importanti che verranno TUTTI PERSI.\nPuoi collegarlo nell'ordine opposto se preferisci\n(e perdere i dati di QUESTO account)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Vuoi davvero collegare l'account ${ACCOUNT} a questo account?\nTutti i dati presenti in ${ACCOUNT} andranno persi.\nLa procedura non può essere annullata. Sei sicuro?",
+ "Longer streaks lead to better rewards.": "Le sequenze lunghe danno premi migliori.",
"Max number of playlists reached.": "Numero massimo di playlist raggiunto.",
"Max number of profiles reached.": "Numero massimo di profili raggiunto.",
"Maximum friend code rewards reached.": "Numero massimo di richieste d'amicizia inviate",
"Message is too long.": "Il messaggio è troppo lungo.",
+ "New tournament result!": "Nuovi risultati del torneo!",
"No servers are available. Please try again soon.": "Nessun server disponibile,prova più tardi.",
+ "No slots available. Free a slot and try again.": "Nessuno slot disponibile. Liberane uno e riprova.",
"Profile \"${NAME}\" upgraded successfully.": "Il profilo \"${NAME}\" è stato aggiornato con successo.",
"Profile could not be upgraded.": "Il profilo non è potuto essere aggiornato.",
"Purchase successful!": "Acquistato con successo!",
- "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Ricevi ${COUNT} biglietti accedendo.\nTorna domani per ricevere ${TOMORROW_COUNT}.",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Ricevi ${COUNT} biglietti accedendo.\nTorna domani per riceverne ${TOMORROW_COUNT}.",
"Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "La funzionalità server non è più supportata in questa versione del gioco;\nAggiornalo ad una nuova versione.",
"Sorry, there are no uses remaining on this code.": "Spiacente, non ci sono altri utilizzi rimasti su questo codice.",
"Sorry, this code has already been used.": "Spiacente, questo codice è già stato usato.",
"Sorry, this code has expired.": "Spiacente, questo codice è scaduto.",
"Sorry, this code only works for new accounts.": "Spiacente, questo codice funziona solo per nuovi account.",
+ "Sorry, this has expired.": "Spiacente, è scaduto.",
"Still searching for nearby servers; please try again soon.": "Continuo a cercare dei server.Per favore prova più tardi.",
+ "Streak: ${NUM} days": "Sequenza: ${NUM} giorni",
"Temporarily unavailable; please try again later.": "Al momento non disponibile; prova più tardi.",
"The tournament ended before you finished.": "Il torneo è terminato prima che tu abbia finito.",
"This account cannot be unlinked for ${NUM} days.": "Questo account non può essere scollegato per ${NUM} giorni.",
@@ -1722,19 +1838,28 @@
"Tournaments require ${VERSION} or newer": "I tornei richiedono ${VERSION} o superiore",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Scollegare l'account ${ACCOUNT} da questo account?\nTutti i dati su ${ACCOUNT} andranno cancellati.\n(eccetto per i trofei in alcuni casi)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ATTENZIONE: tentativi di hacking sono stati segnalati per il tuo account.\nGli account scoperti in tentativi di hacking saranno bannati. Gioca pulito.",
+ "Wait reduced!": "Tempo d'attesa ridotto!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Attenzione: Questa versione del gioco può accedere solo a vecchi dati account; potrebbero mancare o non essere aggiornati.\nPassa ad una versione più recente del gioco per visualizzare gli ultimi dati account.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Vuoi collegare il tuo account di dispositivo a questo?\n\nIl tuo account di dispositivo è ${ACCOUNT1}\nQuesto account è ${ACCOUNT2}\n\nQuesta operazione ti permetterà di conservare i tuoi progressi esistenti.\nAttenzione: l'operazione non può essere annullata!",
"You already own this!": "È già tuo!",
"You can join in ${COUNT} seconds.": "Potrai entrare in ${COUNT} secondi",
"You don't have enough tickets for this!": "Non hai abbastanza biglietti per questo!",
"You don't own that.": "Non lo possiedi",
"You got ${COUNT} tickets!": "Hai ${COUNT} biglietti!",
+ "You got ${COUNT} tokens!": "Hai ottenuto ${COUNT} gettoni!",
"You got a ${ITEM}!": "Hai ricevuto un ${ITEM}!",
+ "You got a chest!": "Hai ottenuto un forziere!",
+ "You got an achievement reward!": "Hai ottenuto un premio da un trofeo!",
"You have been promoted to a new league; congratulations!": "Sei stato promosso a una nuova lega, Congratulazioni!",
+ "You lost a chest! (All your chest slots were full)": "Hai perso un forziere! (I tuoi slot forziere erano pieni)",
+ "You must update the app to view this.": "Aggiorna l'app per visualizzare.",
"You must update to a newer version of the app to do this.": "Devi aggiornare a una versione nuova dell'app per poter fare questo.",
"You must update to the newest version of the game to do this.": "Devi aggiornare ad una nuova versione del gioco per fare ciò.",
"You must wait a few seconds before entering a new code.": "Devi aspettare qualche secondo prima di inserire un nuovo codice.",
+ "You placed #${RANK} in a tournament!": "Hai raggiunto #${RANK}° posto in un torneo!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Sei il numero ${RANK} dell'ultimo torneo. Grazie per aver giocato!",
"Your account was rejected. Are you signed in?": "Il tuo account è stato rifiutato. Sei già iscritto?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Le visualizzazioni dei tuoi annunci non vengono registrate. Le opzioni degli annunci saranno limitate per un po'.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "La tua copia del gioco è stata modificata.\nPer favore, annulla le modifiche e riprova.",
"Your friend code was used by ${ACCOUNT}": "Il tuo codice amico è stato usato da ${ACCOUNT}"
},
@@ -1776,7 +1901,7 @@
"Short": "Breve",
"Shorter": "Più breve",
"Solo Mode": "Modalità Testa a Testa",
- "Target Count": "Numero dì obbiettivi",
+ "Target Count": "Numero dì obiettivi",
"Time Limit": "Tempo limite"
},
"statements": {
@@ -1888,11 +2013,14 @@
"toSkipPressAnythingText": "(tocca o premi qualsiasi pulsante per saltare la guida)"
},
"twoKillText": "DOPPIA UCCISIONE!",
+ "uiScaleText": "Dimensione Interfaccia",
"unavailableText": "non disponibile",
+ "unclaimedPrizesText": "Hai premi da riscattare!",
"unconfiguredControllerDetectedText": "Rilevato controller non configurato:",
"unlockThisInTheStoreText": "Deve essere sbloccato nel negozio",
"unlockThisProfilesText": "Per creare più di ${NUM} profili, ti serve:",
"unlockThisText": "Per sbloccare questo, hai bisogno di:",
+ "unsupportedControllerText": "Spiacente, il controller \"${NAME}\" non è supportato.",
"unsupportedHardwareText": "Purtroppo, questo hardware non è supportato da questa versione del gioco.",
"upFirstText": "Per primo:",
"upNextText": "Fra poco nel ${COUNT}:",
@@ -1900,12 +2028,16 @@
"upgradeText": "Aggiorna",
"upgradeToPlayText": "Sblocca \"${PRO}\" nel negozio in-game per poter giocare a questo.",
"useDefaultText": "Usa Predefinito",
+ "userSystemScriptsCreateText": "Crea Script di Sistema Utente",
+ "userSystemScriptsDeleteText": "Elimina Script di Sistema Utente",
"usesExternalControllerText": "Questo gioco utilizza un controller esterno come input.",
"usingItunesText": "Sto usando una app musicale per la colonna sonora...",
"usingItunesTurnRepeatAndShuffleOnText": "Per favore, assicurati che la riproduzione casuale sia ATTIVA e che la ripetizione sia su TUTTO su iTunes.",
"v2AccountLinkingInfoText": "Per collegare degli account V2, usa il tasto 'Gestisci Account'.",
+ "v2AccountRequiredText": "Questo richiede un account V2. Aggiorna il tuo account e riprova.",
"validatingBetaText": "Sto convalidando la beta...",
"validatingTestBuildText": "Convalida Build Di Prova...",
+ "viaText": "utilizzando",
"victoryText": "Vittoria!",
"voteDelayText": "Non puoi cominciare un'altra votazione per ${NUMBER} secondi",
"voteInProgressText": "C'è già una votazione in corso.",
@@ -1927,7 +2059,7 @@
"renameReplayButtonText": "Rinomina\nReplay",
"renameReplayText": "Rinomina \"${REPLAY}\" in:",
"renameText": "Rinomina",
- "replayDeleteErrorText": "Errore cancellazione replay.",
+ "replayDeleteErrorText": "Errore eliminazione del replay.",
"replayNameText": "Nome Replay",
"replayRenameErrorAlreadyExistsText": "Esiste già un replay con questo nome.",
"replayRenameErrorInvalidName": "Impossibile rinominare replay; nome invalido.",
@@ -1981,5 +2113,6 @@
},
"yesAllowText": "Sì, permetti!",
"yourBestScoresText": "I tuoi punteggi migliori",
- "yourBestTimesText": "I tuoi tempi migliori"
+ "yourBestTimesText": "I tuoi tempi migliori",
+ "yourPrizeText": "Il tuo premio:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/korean.json b/dist/ba_data/data/languages/korean.json
index 81b7c5aa..760d0d18 100644
--- a/dist/ba_data/data/languages/korean.json
+++ b/dist/ba_data/data/languages/korean.json
@@ -7,7 +7,9 @@
"campaignProgressText": "캠페인 진행 상황 [어려움]: ${PROGRESS}",
"changeOncePerSeason": "한 시즌마다 바꿀수 있습니다.",
"changeOncePerSeasonError": "다음 시즌으로 바뀔때까지 (${NUM} 일)기다려야 계정 이름을 바꿀수 있습니다.",
+ "createAnAccountText": "계정 만들기",
"customName": "이름 맞춤설정",
+ "deleteAccountText": "계정 삭제",
"googlePlayGamesAccountSwitchText": "다른 Google 계정을 전환하려면,\nGoogle Play 앱을 사용하세요",
"linkAccountsEnterCodeText": "코드 입력",
"linkAccountsGenerateCodeText": "코드 생성",
@@ -25,14 +27,16 @@
"setAccountNameDesc": "당신 계정에 보여질 이름을 선택해주시오.\n연동된 계정 중 하나에서 이름을 사용하거나,\n또는 자기만의 독창적인 이름을 만들어서 사용할 수 있습니다.",
"signInInfoText": "로그인해서 티켓을 수집하고 온라인으로 겨루며\n여러 기기에서 진행 상황을 공유하세요.",
"signInText": "로그인",
+ "signInWithAnEmailAddressText": "이메일 주소로 로그인",
"signInWithDeviceInfoText": "(자동 계정은 이 기기에서만 이용할 수 있습니다)",
"signInWithDeviceText": "기기 계정으로 로그인",
"signInWithGameCircleText": "Game Circle로 로그인",
"signInWithGooglePlayText": "Google Play로 로그인",
"signInWithTestAccountInfoText": "(이전 계정 유형, 앞의 기기 계정을 이용하세요)",
"signInWithTestAccountText": "테스트 계정으로 로그인",
+ "signInWithText": "${SERVICE}로 로그인하기",
"signInWithV2InfoText": "(모든 플랫폼에서 작동하는 계정입니다)",
- "signInWithV2Text": "BombSquad 계정으로 로그인",
+ "signInWithV2Text": "${APP_NAME} 계정으로 로그인",
"signOutText": "로그아웃",
"signingInText": "로그인 중...",
"signingOutText": "로그아웃 중...",
@@ -335,9 +339,14 @@
"getMoreGamesText": "다른 게임 보기...",
"titleText": "게임 추가"
},
+ "addToFavoritesText": "즐겨찾기에 추가하기",
+ "addedToFavoritesText": "즐겨찾기에 '${NAME}'을 추가했습니다.",
+ "allText": "모두",
"allowText": "허용",
"alreadySignedInText": "귀하의 계정은 다른 기기에서 로그인되었습니다. \n계정을 전환하거나 다른 기기에서 게임을 종료하고 \n다시 시도하십시오.",
"apiVersionErrorText": "${NAME} 모듈을 불러올 수 없습니다; ${VERSION_USED} api 버전입니다; ${VERSION_REQUIRED} 버전이 필요합니다.",
+ "applyText": "적용",
+ "areYouSureText": "정말?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(헤드폰이 연결된 때에만 '자동'이 이 옵션을 활성화합니다)",
"headRelativeVRAudioText": "머리 비례 VR 오디오",
@@ -359,14 +368,23 @@
"boostText": "증가",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME}(은)는 앱 자체에 구성되어 있습니다.",
"buttonText": "버튼",
- "canWeDebugText": "BombSquad가 버그, 충돌 및 기본 사용 정보를\n자동으로 개발자에게 신고하도록 하시겠습니까?\n\n이 데이터에 개인 정보는 포함되지 않으며 게임이\n버그 없이 원활하게 실행되도록 하는 데 도움이 됩니다.",
+ "canWeDebugText": "${APP_NAME}가 버그, 충돌 및 기본 사용 정보를\n자동으로 개발자에게 신고하도록 하시겠습니까?\n\n이 데이터에 개인 정보는 포함되지 않으며 게임이\n버그 없이 원활하게 실행되도록 하는 데 도움이 됩니다.",
"cancelText": "취소",
"cantConfigureDeviceText": "죄송합니다만 ${DEVICE}(은)는 구성할 수 없습니다.",
"challengeEndedText": "이 챌린지는 종료되었습니다.",
"chatMuteText": "채팅 음소거",
"chatMutedText": "채팅 음소거됨.",
"chatUnMuteText": "채팅 음소거 해제",
+ "chests": {
+ "prizeOddsText": "상금 확률",
+ "reduceWaitText": "대기 시간 단축",
+ "slotDescriptionText": "이 슬롯은 상자를 보관할 수 있습니다.\n\n캠페인 레벨을 플레이하고,\n토너먼트에서 순위를 매기고,\n업적을 달성하여 상자를 획득하세요.",
+ "slotText": "상자 슬롯 ${NUM}",
+ "slotsFullWarningText": "경고: 모든 상자 슬롯이 찼습니다.\n이 게임에서 획득한 상자는 모두 사라지게 됩니다."
+ },
"choosingPlayerText": "<플레이어 선택>",
+ "claimText": "청구",
+ "codesExplainText": "계정 문제를 진단하고 수정하기 위해\n개발자가 코드를 제공합니다.",
"completeThisLevelToProceedText": "계속 진행하려면 이 레벨을\n완료해야 합니다!",
"completionBonusText": "완료 보너스",
"configControllersWindow": {
@@ -447,6 +465,7 @@
"swipeText": "스와이프",
"titleText": "터치스크린 구성"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE}는 시스템 설정 앱에서 구성할 수 있습니다.",
"configureItNowText": "지금 구성하시겠습니까?",
"configureText": "구성",
"connectMobileDevicesWindow": {
@@ -549,6 +568,7 @@
"demoText": "체험판",
"denyText": "거부",
"deprecatedText": "더 이상 사용되지 않음",
+ "descriptionText": "설명",
"desktopResText": "데스크톱 해상도",
"deviceAccountUpgradeText": "경고:\n 기기 계정(${NAME})으로 로그인하셨습니다.\n 기기 계정은 향후 업데이트에서 제거되기에\n 진행 상황을 유지하려면 V2 계정으로 업그레이드하세요.",
"difficultyEasyText": "쉬움",
@@ -559,6 +579,10 @@
"disableRemoteAppConnectionsText": "리모트 앱 연결 비활성화",
"disableXInputDescriptionText": "4개 이상의 컨트롤러를 허용하지만 아마 잘 작동하지 않을 것입니다.",
"disableXInputText": "엑스인풋 컨트롤러 비활성화",
+ "disabledText": "비활성화만",
+ "discardText": "버리기",
+ "discordFriendsText": "함께 플레이할 새로운 친구를 찾고 싶으신가요?\n디스코드에 가입하여 새로운 친구를 찾아보세요!",
+ "discordJoinText": "디스코드 가입",
"doneText": "완료",
"drawText": "무승부",
"duplicateText": "복사",
@@ -591,6 +615,7 @@
"localProfileText": "(로컬 프로필)",
"nameDescriptionText": "플레이어 이름",
"nameText": "이름",
+ "profileAlreadyExistsText": "해당 이름을 가진 프로필이 이미 존재합니다.",
"randomText": "무작위",
"titleEditText": "프로필 편집",
"titleNewText": "새 프로필",
@@ -626,6 +651,7 @@
"useMusicFolderText": "음악 파일 폴더"
},
"editText": "편집",
+ "enabledText": "활성화만",
"endText": "종료",
"enjoyText": "즐기세요!",
"epicDescriptionFilterText": "(에픽 슬로 모션) ${DESCRIPTION}.",
@@ -637,6 +663,8 @@
"errorText": "오류",
"errorUnknownText": "알 수 없는 오류",
"exitGameText": "${APP_NAME}를 종료하시겠습니까?",
+ "expiredAgoText": "만료 ${T} 전",
+ "expiresInText": "${T} 남았습니다.",
"exportSuccessText": "'${NAME}' 를 내보냈습니다.",
"externalStorageText": "외부 저장소",
"failText": "실패",
@@ -671,6 +699,8 @@
"duplicateText": "플레이 목록\n복사",
"editText": "플레이 목록\n편집",
"newText": "새\n플레이 목록",
+ "pointsToWinText": "승리 포인트",
+ "seriesLengthText": "시리즈 길이",
"showTutorialText": "튜토리얼 보기",
"shuffleGameOrderText": "게임 순서 섞기",
"titleText": "${TYPE} 플레이 목록 커스터마이징"
@@ -696,6 +726,7 @@
"copyCodeConfirmText": "코드가 클립보드에 복사되었습니다.",
"copyCodeText": "코드 복사",
"dedicatedServerInfoText": "최선의 결과를 위해 전용 서버를 구축하세요. 자세한 사항은 bombsquadgame.com/server를 참조해주십시오.",
+ "descriptionShortText": "파티 모집 창을 이용해 파티를 구성하세요.",
"disconnectClientsText": "파티 내의 플레이어 ${COUNT}명의 연결이\n끊어집니다. 괜찮습니까?",
"earnTicketsForRecommendingAmountText": "친구들은 게임을 시도하면 티켓 ${COUNT}장을 받습니다\n(귀하는 각각의 친구에 대해서 ${YOU_COUNT}장을 받습니다)",
"earnTicketsForRecommendingText": "게임을 공유하고\n무료 티켓을 받으세요...",
@@ -708,10 +739,10 @@
"friendHasSentPromoCodeText": "${NAME} 님이 ${APP_NAME} 티켓 ${COUNT}장을 보냄",
"friendPromoCodeAwardText": "코드가 사용될 때마다 귀하는 티켓 ${COUNT}장을 받습니다.",
"friendPromoCodeExpireText": "이 코드는 ${EXPIRE_HOURS}시간 후 만료되며 신규 플레이어에게만 적용됩니다.",
- "friendPromoCodeInstructionsText": "사용하려면 ${APP_NAME} 앱을 열고 '설정->고급->코드 입력'으로 이동합니다.\n지원되는 모든 플랫폼의 다운로드 링크는 bombsquadgame.com에서 확인하세요.",
+ "friendPromoCodeInstructionsText": "사용하려면 ${APP_NAME}을 열고 \"설정->고급->정보 보내기\"로 이동합니다.\n지원되는 모든 플랫폼의 다운로드 링크는 bombsquadgame.com을 참조하세요.",
"friendPromoCodeRedeemLongText": "최대 ${MAX_USES}명의 사람이 무료 티켓 ${COUNT}장과 교환할 수 있습니다.",
"friendPromoCodeRedeemShortText": "게임에서 티켓 ${COUNT}장과 교환할 수 있습니다.",
- "friendPromoCodeWhereToEnterText": "('설정->고급->코드 입력')",
+ "friendPromoCodeWhereToEnterText": "(\"설정->고급->정보 보내기\")",
"getFriendInviteCodeText": "친구 초대 코드 받기",
"googlePlayDescriptionText": "Google Play 플레이어들을 파티에 초대하세요.",
"googlePlayInviteText": "초대",
@@ -743,6 +774,7 @@
"manualYourLocalAddressText": "귀하의 로컬 주소:",
"nearbyText": "근처",
"noConnectionText": "<연결 없음>",
+ "noPartiesAddedText": "추가한 파티 없음",
"otherVersionsText": "(다른 버전)",
"partyCodeText": "파티 코드",
"partyInviteAcceptText": "수락",
@@ -806,6 +838,12 @@
"youHaveShortText": "티켓 보유량: ${COUNT}",
"youHaveText": "보유량: ${COUNT} 티켓"
},
+ "goldPass": {
+ "desc1InfTokensText": "무한한 토큰.",
+ "desc2NoAdsText": "광고 없음.",
+ "desc3ForeverText": "영원히.",
+ "goldPassText": "골든 패스"
+ },
"googleMultiplayerDiscontinuedText": "죄송하지만, 구글의 멀티플레이어 서비스는 더이상 이용할수가 없어요.\n지금 대체제에 가능한 빨리 작업중이에요.\n그 때까지는, 다른 접속 방법을 사용해주세요.\n-Eric",
"googlePlayPurchasesNotAvailableText": "구매가 되지 않았습니다.\n아마 스토어 앱을 업데이트 해야 합니다.",
"googlePlayServicesNotAvailableText": "Google Play 서비스를 사용할 수 없습니다.\n 일부 앱 기능이 비활성화될 수 있습니다.",
@@ -814,10 +852,12 @@
"alwaysText": "언제나",
"fullScreenCmdText": "전체 화면 (Cmd-F)",
"fullScreenCtrlText": "전체 화면 (Ctrl-F)",
+ "fullScreenText": "전체화면",
"gammaText": "감마",
"highText": "높음",
"higherText": "매우 높음",
"lowText": "낮음",
+ "maxFPSText": "최대 FPS",
"mediumText": "중간",
"neverText": "안 함",
"resolutionText": "해상도",
@@ -878,6 +918,7 @@
"importText": "불러오기",
"importingText": "불러오는 중...",
"inGameClippedNameText": "게임 내에서는 다음과 같이 보여질 것입니다.\n\"${NAME}\"",
+ "inboxText": "받은 편지함",
"installDiskSpaceErrorText": "오류: 설치를 완료할 수 없습니다.\n기기에 공간이 부족한 것 같습니다.\n공간을 확보한 후 다시 시도해보세요.",
"internal": {
"arrowsToExitListText": "목록에서 나가려면 ${LEFT} 또는 ${RIGHT}를 누르세요",
@@ -932,12 +973,14 @@
"timeOutText": "(${TIME}초 후 시간 초과)",
"touchScreenJoinWarningText": "터치스크린을 이용해 가입했습니다.\n실수로 그러신 경우 '메뉴->게임 나가기'를 누르세요.",
"touchScreenText": "터치스크린",
+ "unableToCompleteTryAgainText": "지금은 완료할 수 없습니다.\n다시 시도해 주세요.",
"unableToResolveHostText": "오류: 호스트를 확인할 수 없습니다.",
"unavailableNoConnectionText": "이 기능은 현재 이용할 수 없습니다 (인터넷에 연결되지 않았습니까?)",
"vrOrientationResetCardboardText": "이것을 이용해 VR 방향을 재설정합니다.\n게임을 플레이하려면 외부 컨트롤러가 필요합니다.",
"vrOrientationResetText": "VR 방향이 재설정되었습니다.",
"willTimeOutText": "(부재 중이면 시간 초과가 됩니다)"
},
+ "inventoryText": "인벤토리",
"jumpBoldText": "점프",
"jumpText": "점프",
"keepText": "유지",
@@ -984,8 +1027,11 @@
"seasonEndsMinutesText": "시즌은 ${NUMBER}분 후 종료됩니다.",
"seasonText": "시즌 ${NUMBER}",
"tournamentLeagueText": "이 토너먼트에 참가하려면 ${NAME} 리그에 도달해야 합니다.",
- "trophyCountsResetText": "트로피 수는 다음 시즌에 초기화됩니다."
+ "trophyCountsResetText": "트로피 수는 다음 시즌에 초기화됩니다.",
+ "upToDateBonusDescriptionText": "최신 버전의 게임을 실행하면 플레이어는 여기에서 \n${PERCENT}%의 보너스를 받습니다.",
+ "upToDateBonusText": "최신 보너스"
},
+ "learnMoreText": "더 알아보기",
"levelBestScoresText": "${LEVEL}의 최고 점수",
"levelBestTimesText": "${LEVEL}의 최고 시간",
"levelIsLockedText": "${LEVEL}(은)는 잠겼습니다.",
@@ -1029,6 +1075,8 @@
"modeArcadeText": "아케이드 모드",
"modeClassicText": "클래식 모드",
"modeDemoText": "데모 모드",
+ "moreSoonText": "더 많은 내용이 곧 다가옵니다...",
+ "mostDestroyedPlayerText": "가장 많이 파괴된 플레이어",
"mostValuablePlayerText": "가장 뛰어난 플레이어",
"mostViolatedPlayerText": "가장 비참한 플레이어",
"mostViolentPlayerText": "가장 난폭한 플레이어",
@@ -1045,6 +1093,7 @@
"nameSuicideText": "${NAME} 님이 자살했습니다.",
"nameText": "이름",
"nativeText": "기본",
+ "newExclaimText": "신규!",
"newPersonalBestText": "새 개인 최고 기록!",
"newTestBuildAvailableText": "새 테스트 빌드가 나왔습니다! (${VERSION} 빌드 ${BUILD}).\n${ADDRESS}에서 다운로드 하세요",
"newText": "새",
@@ -1055,12 +1104,16 @@
"noContinuesText": "(계속 없음)",
"noExternalStorageErrorText": "이 기기에서 외부 저장소를 찾지 못했습니다.",
"noGameCircleText": "오류: GameCircle에 로그인되지 않았습니다",
+ "noMessagesText": "메시지 없음.",
+ "noPluginsInstalledText": "설치된 플러그인 없음",
"noScoresYetText": "아직 점수 없음.",
+ "noServersFoundText": "서버를 찾을수 없음.",
"noThanksText": "아니요",
"noTournamentsInTestBuildText": "경고: 이 테스트 빌드의 토너먼트 점수는 기록되지 않습니다.",
"noValidMapsErrorText": "이 게임 유형에 유효한 지도를 찾지 못했습니다.",
"notEnoughPlayersRemainingText": "남은 플레이어가 충분하지 않습니다. 게임을 종료한 후 새로 시작하세요.",
"notEnoughPlayersText": "이 게임을 시작하려면 ${COUNT}명 이상의 플레이어가 필요합니다!",
+ "notEnoughTicketsText": "티켓이 부족합니다!",
"notNowText": "다음에",
"notSignedInErrorText": "이 작업을 하려면 로그인해야 합니다.",
"notSignedInGooglePlayErrorText": "이 작업을 하려면 Google Play로 로그인해야 합니다.",
@@ -1073,6 +1126,9 @@
"onText": "켬",
"oneMomentText": "잠시만요...",
"onslaughtRespawnText": "${PLAYER} 님은 ${WAVE} 웨이브에서 부활합니다",
+ "openMeText": "나를 열어줘!",
+ "openNowText": "당장 열기",
+ "openText": "열기",
"orText": "${A} 또는 ${B}",
"otherText": "기타...",
"outOfText": "(#${RANK} / ${ALL})",
@@ -1124,7 +1180,11 @@
"pleaseWaitText": "잠시만 기다려 주십시오...",
"pluginClassLoadErrorText": "플러그인(${PLUGIN})을 불러오는 도중에 오류가 생겼습니다. 오류 : ${ERROR}",
"pluginInitErrorText": "플러그인(${PLUGIN})을 실행하는 도중에 오류가 생겼습니다. 오류 : ${ERROR}",
+ "pluginSettingsText": "플러그인 설정",
+ "pluginsAutoEnableNewText": "새 플러그인 자동 적용",
"pluginsDetectedText": "새로운 플러그인이 감지되었습니다. 게임을 재시작 하거나 설정을 바꿔 주십시오.",
+ "pluginsDisableAllText": "모든 플러그인 해제하기",
+ "pluginsEnableAllText": "모든 플러그인 적용하기",
"pluginsRemovedText": "${NUM} 플러그인을 더 이상 찾을 수 없습니다.",
"pluginsText": "플러그인",
"practiceText": "연습",
@@ -1154,6 +1214,8 @@
"punchText": "펀치",
"purchaseForText": "${PRICE}에 구입",
"purchaseGameText": "게임 구입",
+ "purchaseNeverAvailableText": "죄송합니다. 이 빌드에서는 구매가 불가능합니다.\n다른 플랫폼에서 계정에 로그인하여 해당 플랫폼에서 구매를 시도해 보세요.",
+ "purchaseNotAvailableText": "해당 구매는 불가능합니다.",
"purchasingText": "구입 중...",
"quitGameText": "${APP_NAME}를 종료하시겠습니까?",
"quittingIn5SecondsText": "5초 후 종료됩니다...",
@@ -1195,6 +1257,7 @@
"version_mismatch": "버전이 일치하지 않습니다.\nBombSquad 및 BombSquad Remote가\n최신 버전인지 확인한 후 다시 시도하세요."
},
"removeInGameAdsText": "게임 내 광고를 제거하려면 상점에서 \"${PRO}\"를 잠금 해제하세요.",
+ "removeInGameAdsTokenPurchaseText": "기간 한정 특가: 토큰 팩을 구매하면 게임 내 광고를 제거할 수 있습니다.",
"renameText": "이름 바꾸기",
"replayEndText": "다시 보기 종료",
"replayNameDefaultText": "마지막 게임 다시 보기",
@@ -1215,7 +1278,9 @@
"revertText": "되돌리기",
"runText": "달리기",
"saveText": "저장",
- "scanScriptsErrorText": "스크립트를 검색하는 중 오류가 발생했습니다. 자세한 내용은 로그를 참조하십시오.",
+ "scanScriptsErrorText": "스크립트(들)을 검색하는 중 오류가 발생하였습니다. 자세한 내용은 로그를 확인하십시오.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} 및 ${NUM}개의 기타 모듈을 ${API} API에 대해 업데이트를 해야 합니다.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH}는 api ${API}에 대해 업데이트해야 합니다.",
"scoreChallengesText": "점수 챌린지",
"scoreListUnavailableText": "점수 목록을 이용할 수 없습니다.",
"scoreText": "점수",
@@ -1226,8 +1291,9 @@
},
"scoreWasText": "(이전: ${COUNT})",
"selectText": "선택",
+ "sendInfoDescriptionText": "계정 및 앱 상태 정보를 개발자에게 전송합니다.\n이름이나 전송 이유를 포함하세요.",
"seriesWinLine1PlayerText": "님이 시리즈에서",
- "seriesWinLine1TeamText": "님이 시리즈에서",
+ "seriesWinLine1TeamText": "팀이 시리즈에서",
"seriesWinLine1Text": "님이 시리즈에서",
"seriesWinLine2Text": "승리했습니다!",
"settingsWindow": {
@@ -1243,6 +1309,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(간편하고 사용하기 쉬운 텍스트 편집용 온스크린 키보드)",
"alwaysUseInternalKeyboardText": "언제나 내부 키보드를 사용함",
"benchmarksText": "벤치마크 및 스트레스 테스트",
+ "devToolsText": "개발자 도구",
"disableCameraGyroscopeMotionText": "시야 자이로스코프 동작 비활성 하기",
"disableCameraShakeText": "화면 진동 비활성하기",
"disableThisNotice": "(고급설정에서 이 알림을 중지 할 수 있습니다)",
@@ -1251,14 +1318,22 @@
"enterPromoCodeText": "코드 입력",
"forTestingText": "참고: 이 값들은 테스트용으로 앱을 종료하면 없어집니다.",
"helpTranslateText": "${APP_NAME}의 비영어권 번역은 커뮤니티에서 지원된\n결과입니다. 공헌하거나 번역을 교정하고 싶으면\n아래 링크를 이용하세요. 감사합니다!",
+ "insecureConnectionsDescriptionText": "권장하지는 않지만, 제한된 국가 또는 네트워크에서 온라인 플레이\n를 허용할 수 있습니다.",
+ "insecureConnectionsText": "보안이 취약한 연결 사용",
"kickIdlePlayersText": "부재 중 플레이어 추방",
"kidFriendlyModeText": "어린이 보호 모드 (폭력 순화 등)",
"languageText": "언어",
"moddingGuideText": "모딩 가이드",
+ "moddingToolsText": "모딩 도구",
"mustRestartText": "이 설정이 적용되려면 게임을 다시 시작해야 합니다.",
"netTestingText": "네트워크 테스트",
"resetText": "재설정",
+ "sendInfoText": "정보 보내기",
"showBombTrajectoriesText": "폭탄 궤적 표시",
+ "showDemosWhenIdleText": "유휴 상태일 때 데모 표시",
+ "showDeprecatedLoginTypesText": "더 이상 사용되지 않는 로그인 유형 표시",
+ "showDevConsoleButtonText": "개발자 콘솔 버튼 보이기",
+ "showInGamePingText": "인게임 핑 보이기",
"showPlayerNamesText": "플레이어 이름 표시",
"showUserModsText": "모드 폴더 표시",
"titleText": "고급",
@@ -1277,15 +1352,18 @@
"signInWithGameCenterText": "Game Center 계정을 이용하려면\nGame Center 앱으로 로그인하세요.",
"singleGamePlaylistNameText": "${GAME}만",
"singlePlayerCountText": "1 플레이어",
+ "sizeLargeText": "대형",
+ "sizeMediumText": "중간",
+ "sizeSmallText": "작음",
"soloNameFilterText": "솔로 ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "캐릭터 선택",
"Chosen One": "선택된 자",
- "Epic": "에픽 모드 게임",
+ "Epic": "에픽 모드 게임들",
"Epic Race": "에픽 레이스",
- "FlagCatcher": "깃발 탈환",
+ "FlagCatcher": "깃발 잡기",
"Flying": "행복한 생각",
- "Football": "축구",
+ "Football": "미식 축구",
"ForwardMarch": "전진",
"GrandRomp": "정복",
"Hockey": "하키",
@@ -1294,7 +1372,7 @@
"Menu": "메인 메뉴",
"Onslaught": "맹습",
"Race": "레이스",
- "Scary": "킹 오브 더 힐",
+ "Scary": "언덕의 왕",
"Scores": "점수 화면",
"Survival": "제거",
"ToTheDeath": "데스 매치",
@@ -1350,6 +1428,8 @@
"storeText": "상점",
"submitText": "제출",
"submittingPromoCodeText": "코드 제출 중...",
+ "successText": "성공!",
+ "supportEmailText": "만약 앱에서 문제를 겪고있을경우,\n${EMAIL}로 연락해주세요",
"teamNamesColorText": "팀 이름/색상...",
"telnetAccessGrantedText": "텔넷 액세스가 활성화됨.",
"telnetAccessText": "텔넷 액세스가 검색됨, 허용하시겠습니까?",
@@ -1359,6 +1439,7 @@
"testBuildValidatedText": "테스트 빌드 확인 완료. 즐거운 시간 되세요!",
"thankYouText": "지원해주셔서 감사합니다! 즐거운 시간 되세요!!",
"threeKillText": "트리플 킬!!",
+ "ticketsDescriptionText": "티켓은 상점에서 캐릭터, 맵, 미니게임 등을 잠금 해제하는 데 사\n용할 수 있습니다.\n\n티켓은 캠페인, 토너먼트, 업적을 통해 획득한 상자에서 찾을 수 \n있습니다.",
"timeBonusText": "시간 보너스",
"timeElapsedText": "시간 경과",
"timeExpiredText": "시간 종료",
@@ -1369,10 +1450,23 @@
"tipText": "팁",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "토큰 얻기",
+ "notEnoughTokensText": "토큰이 부족합니다!",
+ "numTokensText": "${COUNT}개 토큰",
+ "shinyNewCurrencyText": "BombSquad의 반짝이는 새로운 화폐.",
+ "tokenPack1Text": "작은 토큰 팩",
+ "tokenPack2Text": "중간 토큰 팩",
+ "tokenPack3Text": "큰 토큰 팩",
+ "tokenPack4Text": "엄청 큰 토큰 팩",
+ "tokensDescriptionText": "토큰은 상자 잠금 해제 속도를 높이고\n다른 게임 및 계정 기능에 사용됩니다.\n\n게임에서 토큰을 얻거나\n팩으로 구매할 수 있습니다. 또는 무한한 토큰을 위해 골드 패스를 구매하면\n다시는 그 토큰에 대해서는 듣지 못할 겁니다.",
+ "youHaveGoldPassText": "골드 패스가 있습니다.\n모든 토큰 구매는 무료입니다.\n즐기세요!"
+ },
"topFriendsText": "절친들",
"tournamentCheckingStateText": "토너먼트 상태를 확인 중입니다. 잠시 기다리세요...",
"tournamentEndedText": "이 토너먼트는 종료되었습니다. 새 토너먼트가 곧 시작됩니다.",
"tournamentEntryText": "토너먼트 참가",
+ "tournamentFinalStandingsText": "최종 순위",
"tournamentResultsRecentText": "최근 토너먼트 결과",
"tournamentStandingsText": "토너먼트 성적",
"tournamentText": "토너먼트",
@@ -1406,7 +1500,7 @@
"Spaz": "스파즈",
"Taobao Mascot": "타오바오 마스코트",
"Todd McBurton": "토드 맥버튼",
- "Zoe": "조우",
+ "Zoe": "조",
"Zola": "졸라"
},
"coopLevelNames": {
@@ -1428,6 +1522,18 @@
"Uber Onslaught": "슈퍼 맹습",
"Uber Runaround": "슈퍼 행군"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} 티켓",
+ "${C} Tokens": "${C} 토큰",
+ "Chest": "상자",
+ "L1 Chest": "레벨 1 상자",
+ "L2 Chest": "레벨 2 상자",
+ "L3 Chest": "레벨 3 상자",
+ "L4 Chest": "레벨 4 상자",
+ "L5 Chest": "레벨 5 상자",
+ "L6 Chest": "레벨 6 상자",
+ "Unknown Chest": "알려지지 않은 상자"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "승리하려면 일정 시간 동안 선택된 자가 되세요.\n그 지위를 뺏으려면 선택된 자를 처치하세요.",
"Bomb as many targets as you can.": "가능한 한 많은 목표에 폭탄을 던지세요.",
@@ -1532,6 +1638,7 @@
"Korean": "한국어",
"Malay": "말레이어",
"Persian": "페르시아어",
+ "PirateSpeak": "해적의 말",
"Polish": "폴란드어",
"Portuguese": "포르투갈어",
"Romanian": "루마니아어",
@@ -1603,6 +1710,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "부정행위 사용이 감지되었습니다. ${COUNT}일 간 점수 및 상품이 중지됩니다.",
"Could not establish a secure connection.": "보안 연결을 수립할 수 없습니다.",
"Daily maximum reached.": "일일 한도에 도달했습니다.",
+ "Daily sign-in reward": "매일 로그인 보상",
"Entering tournament...": "토너먼트에 참가 중...",
"Invalid code.": "잘못된 코드.",
"Invalid payment; purchase canceled.": "구매 무효화; 구매가 취소되었습니다.",
@@ -1612,11 +1720,14 @@
"Item unlocked!": "아이템 잠금해제!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "연동 거부됨. ${ACCOUNT} 에 모두 지워질 \n매우 중요한 데이터가 있습니다.\n원한다면 반대 순서로 연동이 가능합니다\n(이 계정의 데이터가 지워지는 대신에)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "${ACCOUNT} 을 이 계정에 연동하시겠습니까?\n${ACCOUNT} 계정에 있는 모든 데이터가 삭제됩니다.\n이 동작은 번복할 수 없습니다. 확실합니까?",
+ "Longer streaks lead to better rewards.": "연속 기록이 길수록 보상도 더 좋습니다.",
"Max number of playlists reached.": "최대 플레이 목록 수에 도달했습니다.",
"Max number of profiles reached.": "최대 프로필 수에 도달했습니다.",
"Maximum friend code rewards reached.": "최대의 친구 코드 보상에 도달했습니다.",
"Message is too long.": "메시지가 너무 깁니다.",
+ "New tournament result!": "새로운 토너먼트 결과!",
"No servers are available. Please try again soon.": "가능한 서버가 없습니다. 나중에 다시 시도해주십시오.",
+ "No slots available. Free a slot and try again.": "이용 가능한 슬롯이 없습니다. 슬롯을 비우고 다시 시도하세요.",
"Profile \"${NAME}\" upgraded successfully.": "프로필 \"${NAME}\" 업그레이드 성공.",
"Profile could not be upgraded.": "프로필을 업그레이드하지 못했습니다.",
"Purchase successful!": "구매 성공!",
@@ -1626,7 +1737,9 @@
"Sorry, this code has already been used.": "죄송합니다만 이 코드는 이미 사용되었습니다.",
"Sorry, this code has expired.": "죄송합니다만 이 코드는 만료되었습니다.",
"Sorry, this code only works for new accounts.": "죄송합니다만 이 코드는 새 계정에만 유효합니다.",
+ "Sorry, this has expired.": "죄송해요, 이건 만료됐어요.",
"Still searching for nearby servers; please try again soon.": "아직 근처에 있는 서버를 찾는 중입니다; 나중에 다시 시도해주십시오.",
+ "Streak: ${NUM} days": "연속 기록: ${NUM}일",
"Temporarily unavailable; please try again later.": "일시적으로 사용불가; 나중에 다시 시도하세요.",
"The tournament ended before you finished.": "귀하가 완료하기 전에 토너먼트가 종료되었습니다.",
"This account cannot be unlinked for ${NUM} days.": "이 계정은 ${NUM} 일 동안 연동 해제가 불가능합니다.",
@@ -1637,19 +1750,27 @@
"Tournaments require ${VERSION} or newer": "토너먼트는 ${VERSION} 또는 그 보다 새로운 버전이 필요합니다.",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "이 계정에서 ${ACCOUNT} 의 연동을 해제하시겠습니까?\n${ACCOUNT} 에 있는 모든 데이터가 초기화됩니다.\n(일부 상황에서 도전과제 빼고는)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "경고: 당신 계정에 해킹 관련 경고가 전해졌습니다.\n해킹 중인 걸로 밝혀진 계정은 즉시 차단됩니다. 제발 게임만은 공정하게 합시다.",
+ "Wait reduced!": "대기 시간이 단축됐습니다!",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "귀하의 기기를 이 계정에 연동하시겠습니까?\n\n귀하의 기기 계정: ${ACCOUNT1}\n이 계정: ${ACCOUNT2}\n\n이로써 기존 진행 상황을 유지할 수 있습니다.\n경고: 이 작업은 취소할 수 없습니다!",
"You already own this!": "이미 소유 중입니다!",
"You can join in ${COUNT} seconds.": "${COUNT} 초 후에 참가할 수 있습니다.",
"You don't have enough tickets for this!": "티켓이 충분하지 않습니다!",
"You don't own that.": "이미 소유하지 않았습니다.",
"You got ${COUNT} tickets!": "티켓 ${COUNT}장을 받았습니다!",
+ "You got ${COUNT} tokens!": "${COUNT}개의 토큰을 얻었습니다!",
"You got a ${ITEM}!": "${ITEM}(을)를 받았습니다!",
+ "You got a chest!": "상자를 얻었습니다!",
+ "You got an achievement reward!": "업적 보상을 받았습니다!",
"You have been promoted to a new league; congratulations!": "새 리그로 승격되었습니다. 축하합니다!",
+ "You lost a chest! (All your chest slots were full)": "상자를 하나 잃어버렸어요!(상자 슬롯이 모두 가득 찼어요)",
+ "You must update the app to view this.": "이 내용을 보려면 앱을 업데이트해야 합니다.",
"You must update to a newer version of the app to do this.": "이 작업을 하려면 새 앱 버전으로 업데이트해야 합니다.",
"You must update to the newest version of the game to do this.": "이 작업을 하려면 새로운 게임 버전으로 업데이트해야 합니다.",
"You must wait a few seconds before entering a new code.": "새 코드를 입력하기 전에 수초 간 기다려야 합니다.",
+ "You placed #${RANK} in a tournament!": "토너먼트에서 #${RANK}를 달성했습니다!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "마지막 토너먼트에서 #${RANK}위에 랭크되었습니다. 플레이해주셔서 감사합니다!",
"Your account was rejected. Are you signed in?": "계정이 거부되었습니다. 로그인 되어있으시나요?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "광고 조회수가 올라가지 않습니다. 당분간은 광고가 제한됩니다.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "게임 사본이 수정되었습니다.\n변경 사항을 되돌린 후 다시 시도해주십시오.",
"Your friend code was used by ${ACCOUNT}": "${ACCOUNT} 님이 친구 코드를 사용했습니다"
},
@@ -1760,18 +1881,18 @@
"cpuBenchmarkText": "말도 안되는 속도로 튜토리얼을 실행 중(우선 CPU 속도를 테스트합니다)",
"phrase01Text": "안녕하세요!",
"phrase02Text": "${APP_NAME}에 환영합니다!",
- "phrase03Text": "캐릭터를 컨트롤하는 팁을 몇 가지 알려드릴 게요.",
- "phrase04Text": "${APP_NAME}의 많은 것이 물리학에 바탕을 두고 있어요.",
+ "phrase03Text": "캐릭터를 조작하는 팁을 몇 가지 알려드릴게요.",
+ "phrase04Text": "${APP_NAME}의 많은 것이 '물리학'에 바탕을 두고 있어요.",
"phrase05Text": "예를 들어, 펀치를 날릴 때...",
"phrase06Text": "...대미지는 주먹의 속도에 기반하죠.",
"phrase07Text": "보셨죠? 움직이지 않으니 ${NAME} 님에게 거의 피해를 안 줘요.",
- "phrase08Text": "이제 점프 및 회전을 해서 스피드를 더 올려보세요.",
+ "phrase08Text": "이제 점프와 회전을 해서 스피드를 더 올려볼게요.",
"phrase09Text": "네, 훨씬 더 낫군요.",
"phrase10Text": "달리는 것도 도움이 돼요.",
"phrase11Text": "달리려면 아무 버튼이나 길게 누르세요.",
"phrase12Text": "멋진 펀치를 날리려면 달리고 회전해보세요.",
- "phrase13Text": "어이쿠, 저 ${NAME} 님에게 미안하군요.",
- "phrase14Text": "깃발이나... 또는 ${NAME} 님 같은 물체를 집을 수 있어요.",
+ "phrase13Text": "이런, ${NAME} 님에게 미안하군요.",
+ "phrase14Text": "깃발이나... 또는 ${NAME} 님 같은 물체를 들어올릴 수 있어요.",
"phrase15Text": "마지막으로 폭탄이 있군요.",
"phrase16Text": "폭탄을 던지려면 연습이 필요해요.",
"phrase17Text": "윽! 멋지게 던지지 못했군요.",
@@ -1792,17 +1913,19 @@
"randomName3Text": "빌",
"randomName4Text": "척",
"randomName5Text": "필",
- "skipConfirmText": "정말로 튜토리얼을 건너뛰세요? 눌러서 확인하세요.",
+ "skipConfirmText": "정말로 튜토리얼을 건너뛸건가요? 다시 눌러서 확인하세요.",
"skipVoteCountText": "${COUNT}/${TOTAL} 건너뜀",
"skippingText": "튜토리얼을 건너뛰는 중...",
"toSkipPressAnythingText": "(튜토리얼을 건너뛰려면 아무거나 누르세요)"
},
"twoKillText": "더블 킬!",
+ "uiScaleText": "Ui 크기",
"unavailableText": "이용할 수 없음",
"unconfiguredControllerDetectedText": "구성되지 않은 컨트롤러가 검색됨:",
"unlockThisInTheStoreText": "상점에서 잠금 해제해야 합니다.",
"unlockThisProfilesText": "${NUM}개 이상의 프로필을 만들기 위해, 다음 사항이 필요합니다. :",
"unlockThisText": "잠금 해제 필요 사항:",
+ "unsupportedControllerText": "죄송합니다, 컨트롤러 \"${NAME}\" 은 지원되지 않습니다.",
"unsupportedHardwareText": "죄송합니다만 이 하드웨어는 본 게임 빌드에 의해 지원되지 않습니다.",
"upFirstText": "첫 번째:",
"upNextText": "게임 ${COUNT}의 다음:",
@@ -1810,11 +1933,15 @@
"upgradeText": "업그레이드",
"upgradeToPlayText": "플레이하려면 상점에서 \"${PRO}\"를 잠금 해제하세요.",
"useDefaultText": "기본값 사용",
+ "userSystemScriptsCreateText": "사용자 시스템 스크립트 생성",
+ "userSystemScriptsDeleteText": "사용자 시스템 스크립트 삭제",
"usesExternalControllerText": "이 게임은 외부 컨트롤러를 입력용으로 사용합니다.",
"usingItunesText": "사운트트랙에 음악 앱 사용 중...",
"usingItunesTurnRepeatAndShuffleOnText": "iTunes에서 임의 재생이 켜져있고 반복은 모두로 되어 있는지 확인해주십시오.",
"v2AccountLinkingInfoText": "V2 계정을 연결하려면 '계정 관리' 버튼을 누르세요.",
+ "v2AccountRequiredText": "여기에는 V2 계정을 필요로 합니다. 계정을 업그레이드하고 다시 시도하세요.",
"validatingTestBuildText": "테스트 빌드 확인 중...",
+ "viaText": "통하여 로그인 함",
"victoryText": "승리!",
"voteDelayText": "${NUMBER} 초 동안 다른 투표를 시작할 수 없습니다.",
"voteInProgressText": "투표가 이미 진행 중입니다.",
@@ -1879,5 +2006,6 @@
},
"yesAllowText": "예, 허용합니다!",
"yourBestScoresText": "내 최고 점수",
- "yourBestTimesText": "내 최고 시간"
+ "yourBestTimesText": "내 최고 시간",
+ "yourPrizeText": "경품:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/malay.json b/dist/ba_data/data/languages/malay.json
index 089a1b4b..ff2bef0b 100644
--- a/dist/ba_data/data/languages/malay.json
+++ b/dist/ba_data/data/languages/malay.json
@@ -5,9 +5,11 @@
"achievementProgressText": "Pencapaian: ${COUNT} daripada ${TOTAL}",
"campaignProgressText": "Perkembangan Kempen [Susah]: ${PROGRESS}",
"changeOncePerSeason": "Anda hanya boleh menukar ini sekali sahaja pada setiap musim.",
- "changeOncePerSeasonError": "Anda mesti menunggu sehingga musim depan untuk menukarkannya lagi (${NUM} hari)",
+ "changeOncePerSeasonError": "Anda mesti menunggu sehingga musim seterusnya untuk menukarnya lagi (${NUM} hari)",
+ "createAnAccountText": "Buat Akaun",
"customName": "Nama Tersuai",
- "googlePlayGamesAccountSwitchText": "Jika anda ingin menggunakan akaun Google lain,\ngunakan apl Permainan Google Play untuk bertukar.",
+ "deleteAccountText": "Padamkan Akaun",
+ "googlePlayGamesAccountSwitchText": "Jika anda ingin menggunakan akaun Google lain,\ngunakan aplikasi Google Play Games untuk bertukar.",
"linkAccountsEnterCodeText": "Masukkan Kod",
"linkAccountsGenerateCodeText": "Hasilkan Kod",
"linkAccountsInfoText": "(kongsi perkembangan melalui platform yang berbeza)",
@@ -23,14 +25,16 @@
"setAccountNameDesc": "Pilih nama untuk dipaparkan untuk akaun anda.\nAnda boleh menggunakan nama itu dari salah satu akaun pautan anda \natau buat nama tersuai unik.",
"signInInfoText": "Daftar masuk untuk dapatkan tiket, bersaing dalam talian,\ndan kongsi perkembangan melalui peranti.",
"signInText": "Daftar Masuk",
+ "signInWithAnEmailAddressText": "Daftar masuk dengan e-mel",
"signInWithDeviceInfoText": "(akaun automatik yang hanya tersedia untuk peranti ini)",
"signInWithDeviceText": "Daftar masuk dengan akaun peranti",
"signInWithGameCircleText": "Daftar masuk dengan Game Circle",
"signInWithGooglePlayText": "Daftar masuk dengan Google Play",
"signInWithTestAccountInfoText": "(jenis akaun warisan; gunakan akaun peranti untuk ke hadapan)",
"signInWithTestAccountText": "Daftar masuk dengan akaun ujian",
+ "signInWithText": "Daftar masuk dengan ${SERVICE}",
"signInWithV2InfoText": "(akaun yang berfungsi untuk semua platform)",
- "signInWithV2Text": "Log masuk dengan akaun BombSquad",
+ "signInWithV2Text": "Daftar masuk dengan akaun ${APP_NAME}",
"signOutText": "Daftar Keluar",
"signingInText": "Mendaftar masuk...",
"signingOutText": "Mendaftar keluar...",
@@ -39,7 +43,7 @@
"unlinkAccountsInstructionsText": "Pilih akaun untuk nyahpaut",
"unlinkAccountsText": "Nyahpaut Akaun",
"unlinkLegacyV1AccountsText": "Nyahsambung Akaun Legacy (V1)",
- "v2LinkInstructionsText": "Gunakan pautan ini untuk mencipta akaun atau daftar masuk",
+ "v2LinkInstructionsText": "Gunakan pautan ini untuk buat akaun baru atau daftar masuk.",
"viaAccount": "(melalui akaun ${NAME})",
"youAreSignedInAsText": "Anda didaftar masuk sebagai:"
},
@@ -47,18 +51,18 @@
"achievementText": "Pencapaian",
"achievements": {
"Boom Goes the Dynamite": {
- "description": "Pukul 3 musuh dengan TNT",
- "descriptionComplete": "Memukul 3 musuh dengan TNT",
- "descriptionFull": "Terajang 3 musuh dengan TNT di ${LEVEL}",
- "descriptionFullComplete": "Penyepak 3 musuh dengan TNT di ${LEVEL}",
- "name": "Letupan Dinamit"
+ "description": "Bunuh 3 orang jahat dengan TNT",
+ "descriptionComplete": "Membunuh 3 orang jahat dengan TNT",
+ "descriptionFull": "Bunuh 3 orang jahat dengan TNT di ${LEVEL}",
+ "descriptionFullComplete": "Membunuh 3 musuh dengan TNT di ${LEVEL}",
+ "name": "Haa Meletup Dinamit"
},
"Boxer": {
"description": "Menang tanpa menggunakan apa-apa bom",
"descriptionComplete": "Memenangi tanpa menggunakan apa-apa bom",
"descriptionFull": "Selesaikan ${LEVEL} tanpa menggunakan apa-apa bom",
"descriptionFullComplete": "Menyelesaikan ${LEVEL} tanpa menggunakan apa-apa bom",
- "name": "Burung apa, burung puyuh"
+ "name": "Peninju"
},
"Dual Wielding": {
"descriptionFull": "Sambungkan 2 alat kawalan (perkakasan atau aplikasi)",
@@ -78,10 +82,10 @@
"name": "Free Loader"
},
"Gold Miner": {
- "description": "Lempang 6 musuh dengan periuk api",
+ "description": "Bunuh 6 orang jahat dengan periuk-api",
"descriptionComplete": "Menerajangi 6 musuh dengan periuk api",
"descriptionFull": "Lempang 6 musuh dengan periuk api di ${LEVEL}",
- "descriptionFullComplete": "Terlempang 6 musuh dengan periuk api di ${LEVEL}",
+ "descriptionFullComplete": "Melempang 6 musuh dengan periuk api di ${LEVEL}",
"name": "Pelombong Emas"
},
"Got the Moves": {
@@ -118,18 +122,18 @@
"name": "Ahli Sihir ${LEVEL}"
},
"Mine Games": {
- "description": "Lempang 3 musuh dengan periuk api",
- "descriptionComplete": "Sepak 3 musuh dengan periuk api",
+ "description": "Sepak 3 musuh dengan periuk api",
+ "descriptionComplete": "Menyepak 3 musuh dengan periuk api",
"descriptionFull": "Sepak 3 musuh dengan periuk api di ${LEVEL}",
"descriptionFullComplete": "Menyepak 3 musuh dengan periuk api di ${LEVEL}",
- "name": "Permainan Periuk Api"
+ "name": "Nah Bom Lantai"
},
"Off You Go Then": {
- "description": "Buang 3 musuh",
+ "description": "Buang/jatuhkan 3 orang jahat dari peta/tapak permainan",
"descriptionComplete": "Membuang 3 orang jahat",
- "descriptionFull": "Buang 3 musuh di ${LEVEL}",
- "descriptionFullComplete": "Membuang 3 musuh ${LEVEL}",
- "name": "Abang Aziz jatuh bot"
+ "descriptionFull": "Buang/jatuhkan 3 musuh dari peta/tapak permainan di ${LEVEL}",
+ "descriptionFullComplete": "Membuang 3 musuh di ${LEVEL}",
+ "name": "Gi Main Jauh-jauh"
},
"Onslaught God": {
"description": "Dapatkan 5000 mata",
@@ -150,7 +154,7 @@
"descriptionComplete": "Mengalahkan semua serangan",
"descriptionFull": "Kalahkan semua serangan di ${LEVEL}",
"descriptionFullComplete": "Mengalahkan semua serangan di ${LEVEL}",
- "name": "Berjaya ${LEVEL}"
+ "name": "Kemenangan ${LEVEL}"
},
"Onslaught Wizard": {
"description": "Skorkan 1000 mata",
@@ -161,23 +165,23 @@
},
"Precision Bombing": {
"description": "Menang tanpa sebarang kuasa tambahan",
- "descriptionComplete": "Menang tanpa kuasa tambahan",
- "descriptionFull": "Menangkan ${LEVEL} tanpa sebarang kuasa tambahan",
- "descriptionFullComplete": "Menang ${LEVEL} tanpa kuasa tambahan",
- "name": "Pengeboman tepat"
+ "descriptionComplete": "Memenangi tanpa sebarang kuasa tambahan",
+ "descriptionFull": "Menang ${LEVEL} tanpa sebarang kuasa tambahan",
+ "descriptionFullComplete": "Memenangi ${LEVEL} tanpa kuasa tambahan",
+ "name": "Pengeboman Tepat"
},
"Pro Boxer": {
"description": "Menang tanpa menggunakan bom",
- "descriptionComplete": "Monang tanpa menggunakan bom",
- "descriptionFull": "Lengkapkan ${LEVEL} tanpa menggunakan bom",
- "descriptionFullComplete": "Selesai level ${LEVEL} tanpa menggunakan bom",
+ "descriptionComplete": "Memenangi tanpa menggunakan bom",
+ "descriptionFull": "Lengkapkan ${LEVEL} tanpa menggunakan sebarang bom",
+ "descriptionFullComplete": "Melengkapkan level ${LEVEL} tanpa menggunakan sebarang bom",
"name": "Peninju Pro"
},
"Pro Football Shutout": {
"description": "Menang tanpa membiarkan penjahat mendapat markah",
- "descriptionComplete": "Memonangi tanpa membiarkan penjahat mendapat markah",
+ "descriptionComplete": "Memenangi tanpa membiarkan penjahat mendapat markah",
"descriptionFull": "Menangkan level ${LEVEL} tanpa membiarkan penjahat mendapat markah",
- "descriptionFullComplete": "Menang ${LEVEL} tanpa membiarkan penjahat mendapat markah",
+ "descriptionFullComplete": "Memenangi ${LEVEL} tanpa membiarkan penjahat mendapat markah",
"name": "${LEVEL} Menutup"
},
"Pro Football Victory": {
@@ -188,15 +192,15 @@
"name": "${LEVEL} Kemenangan"
},
"Pro Onslaught Victory": {
- "description": "Kalahkan semua tahap",
- "descriptionComplete": "Telah mengalahkan semua gelombang",
+ "description": "Kalahkan semua tahap serangan",
+ "descriptionComplete": "Mengalahkan semua tahap serangan",
"descriptionFull": "Kalahkan semua gelombang ${LEVEL}",
"descriptionFullComplete": "Telah mengalahkan semua gelombang ${LEVEL}",
"name": "${LEVEL} Kemenangan"
},
"Pro Runaround Victory": {
"description": "Lengkapkan semua gelombang",
- "descriptionComplete": "Telah selesai semua gelombang",
+ "descriptionComplete": "Menyelesaikan semua serangan",
"descriptionFull": "Lengkapkan semua gelombang pada ${LEVEL}",
"descriptionFullComplete": "Telah selesai semua gelombang pada ${LEVEL}",
"name": "pemenang ${LEVEL}"
@@ -270,9 +274,9 @@
"name": "Pelempang Super"
},
"TNT Terror": {
- "description": "Letupkan 6 orang jahat dengan TNT",
- "descriptionComplete": "6 orang jahat telah diletupkan dengan TNT",
- "descriptionFull": "Letupkan 6 orang jahat dengan TNT di ${LEVEL}",
+ "description": "Bunuh 6 orang jahat dengan TNT",
+ "descriptionComplete": "Membunuh 6 orang jahat dengan TNT",
+ "descriptionFull": "Bunuh 6 orang jahat dengan TNT di ${LEVEL}",
"descriptionFullComplete": "6 orang jahat telah diletupkan dengan TNT di ${LEVEL}",
"name": "Ta an ta"
},
@@ -292,7 +296,7 @@
"description": "Hentikan setiap orang jahat",
"descriptionComplete": "Telah berjaya mengentikan setiap orang jahat",
"descriptionFull": "Hentikan setiap orang jahat di ${LEVEL}",
- "descriptionFullComplete": "Berjaya menghentikan setiap orang jahat di ${LEVEL}",
+ "descriptionFullComplete": "Menghentikan setiap orang jahat di ${LEVEL}",
"name": "Dinding"
},
"Uber Football Shutout": {
@@ -332,9 +336,14 @@
"getMoreGamesText": "Dapatkan Lebih Banyak Permainan...",
"titleText": "Tambahkan Permainan"
},
+ "addToFavoritesText": "Tambah pada Kegemaran",
+ "addedToFavoritesText": "'${NAME}' ditambah pada Kegemaran",
+ "allText": "Semua",
"allowText": "Benarkan",
"alreadySignedInText": "Akaun anda didaftar masuk dari peranti lain;\nsila tukar akaun atau tutupkan permainan pada\nperanti itu dan cuba lagi.",
"apiVersionErrorText": "Tidak dapat memuatkan modul ${NAME}; ia menyasarkan versi api ${VERSION_USED}; kami memerlukan ${VERSION_REQUIRED}.",
+ "applyText": "Memohon",
+ "areYouSureText": "Adakah awak pasti?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Automatik\" menghidupkan ini apabila fon kepala dimasukkan)",
"headRelativeVRAudioText": "Audio VR Set-Kelapa Relatif",
@@ -356,14 +365,24 @@
"boostText": "Tingkatkan",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} dapat ditatarajah di aplikasinya",
"buttonText": "butang",
- "canWeDebugText": "Adakah anda mahu BombSquad melaporkan pepijat, kerosakan, dan\nmaklumat penggunaan asas kepada pembangun secara automatik?\n\nData ini tidak mengandungi maklumat peribadi dan membantu\npermainan selalu berjalan dengan lancar dan bebas pepijat.",
+ "canWeDebugText": "Adakah anda mahu ${APP_NAME} melaporkan secara automatik pepijat, ranap sistem \ndan maklumat penggunaan asas kepada pembangun?\n \nData ini tidak mengandungi maklumat peribadi dan membantu \npermainan selalu berjalan lancar dan bebas pepijat.",
"cancelText": "Batal",
"cantConfigureDeviceText": "Maaf, ${DEVICE} tidak dapat diatur.",
"challengeEndedText": "Cabaran ini telah tamat",
"chatMuteText": "Senyapkan Perbualan",
"chatMutedText": "Perbualan Disenyapkan",
"chatUnMuteText": "Nyahsenyapkan Perbualan",
+ "chests": {
+ "prizeOddsText": "Peluang Hadiah",
+ "reduceWaitText": "Kurangkan Tunggu",
+ "slotDescriptionText": "Slot ini boleh memuatkan peti.\n\nPeroleh peti dengan bermain peringkat kempen,\nmenempatkan dalam kejohanan, dan melengkapkan\npencapaian.",
+ "slotText": "Slot Peti ${NUM}",
+ "slotsFullWarningText": "AMARAN: Semua slot peti anda penuh.\nMana-mana peti yang anda perolehi dalam permainan ini akan hilang.",
+ "unlocksInText": "Dibuka Dalam"
+ },
"choosingPlayerText": "",
+ "claimText": "Tuntut",
+ "codesExplainText": "Kod disediakan oleh pembangun untuk\nmendiagnosis dan membaiki masalah akaun.",
"completeThisLevelToProceedText": "Anda mesti menyelasaikan\nperingkat ini untuk teruskan!",
"completionBonusText": "Bonus Penyelesaian",
"configControllersWindow": {
@@ -408,54 +427,55 @@
"pressAnyButtonText": "Tekan mana-mana butang...",
"pressLeftRightText": "Tekan kiri atau kanan...",
"pressUpDownText": "Tekan bawah atau atas...",
- "runButton1Text": "Butang Jalankan 1",
- "runButton2Text": "Butang Jalankan 2",
- "runTrigger1Text": "Jalankan Pencetus 1",
- "runTrigger2Text": "Jalankan Pencetus 2",
+ "runButton1Text": "Butang Lari 1",
+ "runButton2Text": "Butang Lari 2",
+ "runTrigger1Text": "Pencetus Larian 1",
+ "runTrigger2Text": "Pencetus Larian 2",
"runTriggerDescriptionText": "(pencetus analog membolehkan anda berlari pada kelajuan yang berbeza)",
- "secondHalfText": "Gunakan ini untuk mengkonfigurasi pengawal kedua\ndalam peranti, 2-pengawal-dalam-1 yang\nmuncul sebagai pengawal tunggal.",
- "secondaryEnableText": "Dayakan",
- "secondaryText": "Pengawal Kedua",
+ "secondHalfText": "Gunakan ini untuk mengkonfigurasi pengawal kedua\ndalam peranti, 2-alat kawalan-dalam-1 yang\nmuncul sebagai alat kawalan tunggal.",
+ "secondaryEnableText": "Aktifkan",
+ "secondaryText": "Alat Kawalan Kedua",
"startButtonActivatesDefaultDescriptionText": "(matikan ini jika butang mula anda lebih kepada butang 'menu')",
"startButtonActivatesDefaultText": "Butang Mula Mengaktifkan Widget Biasa",
- "titleText": "Setup Pengawal",
- "twoInOneSetupText": "Persediaan Pengawal 2-dalam-1",
- "uiOnlyDescriptionText": "(halang pengawal ini daripada menyertai permainan)",
- "uiOnlyText": "Had kepada Penggunaan Menu",
+ "titleText": "Penetap Alat Kawalan",
+ "twoInOneSetupText": "Penetap Alat Kawalan 2-dalam-1",
+ "uiOnlyDescriptionText": "(menghalang alat kawalan ini daripada menyertai permainan)",
+ "uiOnlyText": "Hadkan kepada Penggunaan Menu sahaja",
"unassignedButtonsRunText": "Semua Butang yang Tidak Ditugaskan Dijalankan",
"unsetText": "",
"vrReorientButtonText": "Butang VR Reorient"
},
"configKeyboardWindow": {
"configuringText": "Mengkonfigurasi ${DEVICE}",
- "keyboard2NoteText": "Nota: kebanyakan papan kekunci boleh mendaftarkan beberapa tekanan kekunci dalam\nsesuatu masa, jadi papan kekunci kedua mungkin boleh berfungsi dengan lebih baik\njika terdapat papan kekunci berasingan yang dilampirkan untuk mereka gunakan.\nAmbil perhatian bahawa anda masih perlu memberikan kunci unik kepada\ndua pemain walaupun dalam kes itu."
+ "keyboard2NoteText": "Nota: kebanyakan papan kekunci hanya boleh mengesan beberapa tekanan kekunci sahaja dalam\nsesuatu masa, jadi papan kekunci kedua mungkin boleh berfungsi dengan lebih baik\njika terdapat papan kekunci berasingan yang dilampirkan untuk mereka gunakan.\nAmbil perhatian bahawa anda masih perlu memberikan kunci unik kepada\ndua pemain walaupun dalam kes itu."
},
"configTouchscreenWindow": {
"actionControlScaleText": "Skala Kawalan Aksi",
"actionsText": "Aksi",
"buttonsText": "butang",
"dragControlsText": "< seret kawalan untuk ubah kedudukan >",
- "joystickText": "kayu ria",
- "movementControlScaleText": "Skala Kawalan Gerakan",
+ "joystickText": "Kayu Bedik (Joystick)",
+ "movementControlScaleText": "Skala Kawalan Pergerakan",
"movementText": "Pergerakan",
"resetText": "Tetap Semula",
- "swipeControlsHiddenText": "Sembunyikan Ikon Sapu",
- "swipeInfoText": "Gaya kawalan 'sapu' sangat sedikit digunakan tapi ia\nmembuatkan lebih senang bermain tanpa melihat kawalan",
- "swipeText": "sapu",
+ "swipeControlsHiddenText": "Sembunyikan Ikon Kawalan Yang Mengggunakan Seret",
+ "swipeInfoText": "Gaya kawalan 'seret' mungkin susah untuk dibiasakan tapi ia\nmembuatkan lebih senang bermain tanpa melihat pada kawalan.",
+ "swipeText": "seret",
"titleText": "Atur Skrin Sentuhan"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} boleh diatur di aplikasi Tetapan Sistem.",
"configureItNowText": "Aturnya sekarang?",
"configureText": "Atur",
"connectMobileDevicesWindow": {
"amazonText": "Amazon AppStore",
"appStoreText": "App Store",
- "bestResultsText": "Untuk hasil terbaik, anda memerlukan rangkaian Wi-Fi yang bebas lambat.\nAnda boleh mengurangkan kelambatan Wi-Fi dengan mematikan peranti wayarles,\ndengan bermain berdekatan dengan penghala Wi-Fi anda, dan dengan menyambungkan\nhos permainan ke rangkaian melalui ethernet.",
- "explanationText": "Untuk menggunakan telefon pintar atau tablet sebagai alat kawalan tanpa\nwayar, pasang aplikasi \"${REMOTE_APP_NAME}\" padanya. Banyak peranti boleh\nsambung ke satu permainan ${APP_NAME} melalui Wi-Fi, dan percuma!",
- "forAndroidText": "Untuk Android:",
- "forIOSText": "Untuk iOS:",
+ "bestResultsText": "Untuk hasil terbaik, anda memerlukan rangkaian Wi-Fi yang bebas lambat.\nAnda boleh mengurangkan kelambatan Wi-Fi dengan mematikan peranti tanpa wayar lain (peranti lain yang guna Wi-Fi),\ndengan bermain berdekatan dengan router/pengahala Wi-Fi anda, dan dengan menyambungkan\nhos permainan ke rangkaian melalui ethernet.",
+ "explanationText": "Untuk menggunakan telefon pintar atau tablet sebagai alat kawalan tanpa\nwayar, pasang aplikasi \"${REMOTE_APP_NAME}\" padanya. Banyak peranti boleh\nsambung ke satu permainan ${APP_NAME} melalui Wi-Fi, dan ianya percuma!",
+ "forAndroidText": "untuk Android:",
+ "forIOSText": "untuk iOS:",
"getItForText": "Dapatkan ${REMOTE_APP_NAME} bagi iOS di Apple App Store\natau untuk Android di Google Play Store atau Amazon Appstore",
"googlePlayText": "Google Play",
- "titleText": "Menggunakan Peranti Mudah Alih sebagai Pengawal:"
+ "titleText": "Menggunakan Peranti Mudah Alih (telefon pintar/tablet) sebagai Alat Kawalan:"
},
"continuePurchaseText": "Teruskan untuk ${PRICE}?",
"continueText": "Teruskan",
@@ -465,17 +485,17 @@
"activenessInfoText": "Pengganda ini meningkat pada hari apabila anda\nbermain dan jatuh pada hari apabila anda tidak.",
"activityText": "Aktiviti",
"campaignText": "Kempen",
- "challengesInfoText": "Dapat hadiah apabila melengkapkan permainan mini.\n\nHadiah dan tahap kesukaran meningkat\nsetiap kali cabaran selesai dan\nberkurangan apabila tamat tempoh atau dilucuthakkan.",
+ "challengesInfoText": "Dapat hadiah apabila melengkapkan permainan mini.\n\nHadiah dan tahap kesukaran meningkat\nsetiap kali satu cabaran diselesaikan dan\nberkurangan pabila satu tamat tempoh atau dilucuthakkan.",
"challengesText": "Cabaran",
- "currentBestText": "Yang Terbaik",
+ "currentBestText": "Yang Terbaik Semasa",
"customText": "Ubah suai",
"entryFeeText": "Kemasukan",
"forfeitConfirmText": "Hilang cabaran ini?",
- "forfeitNotAllowedYetText": "Cabaran ini tidak boleh diketepikan lagi.",
+ "forfeitNotAllowedYetText": "Cabaran ini belum boleh diketepikan lagi.",
"forfeitText": "Mengalah",
"multipliersText": "Pengganda",
"nextChallengeText": "Cabaran Seterusnya",
- "nextPlayText": "Main Seterusnya",
+ "nextPlayText": "Permainan Seterusnya",
"ofTotalTimeText": "daripada ${TOTAL}",
"playNowText": "Main sekarang",
"pointsText": "Mata",
@@ -494,19 +514,19 @@
"toRankedText": "Untuk Peringkat",
"totalText": "jumlah",
"tournamentInfoText": "Bersaing untuk markah tinggi dengan\npemain lain dalam liga anda.\n\nHadiah diberikan kepada markah tertinggi\npemain apabila masa kejohanan tamat.",
- "welcome1Text": "Selamat datang ke ${LEAGUE}. Anda boleh memperbaiki\nkedudukan liga dengan memperoleh penarafan bintang, melengkapkan\npencapaian, dan memenangi trofi dalam kejohanan.",
- "welcome2Text": "Anda juga boleh mendapatkan tiket daripada banyak aktiviti yang sama.\nTiket boleh digunakan untuk membuka kunci aksara baharu, peta dan\npermainan mini, untuk menyertai kejohanan dan banyak lagi.",
- "yourPowerRankingText": "Kedudukan Terhebat Anda:"
+ "welcome1Text": "Selamat datang ke ${LEAGUE}. Anda boleh memperbaikkan\nkedudukan liga dengan memperoleh penarafan bintang, melengkapkan\npencapaian, dan memenangi trofi dalam kejohanan.",
+ "welcome2Text": "Anda juga boleh mendapatkan tiket daripada banyak aktiviti yang sama.\nTiket boleh digunakan untuk membuka kunci aksara(karakter) baharu, peta dan\npermainan mini, untuk menyertai kejohanan dan banyak lagi.",
+ "yourPowerRankingText": "Kedudukan Kuasa Anda:"
},
- "copyConfirmText": "Disalin ke papan keratan.",
+ "copyConfirmText": "Dah disalin ke papan keratan (clipboard).",
"copyOfText": "Salinan ${NAME}",
- "copyText": "Salinan",
- "createEditPlayerText": "",
- "createText": "Cipta",
+ "copyText": "Salin",
+ "createEditPlayerText": "",
+ "createText": "Buat",
"creditsWindow": {
"additionalAudioArtIdeasText": "Audio Tambahan, Hasil Kerja Awal, dan Idea oleh ${NAME}",
"additionalMusicFromText": "Muzik tambahan dari ${NAME}",
- "allMyFamilyText": "Seluruh kawan dan keluarga saya yang tolong main uji",
+ "allMyFamilyText": "Semua kawan dan keluarga saya yang tolong uji permainan",
"codingGraphicsAudioText": "Aturcara, Grafik, dan Audio oleh ${NAME}",
"languageTranslationsText": "Penerjemah Bahasa:",
"legalText": "Sah:",
@@ -518,58 +538,63 @@
"specialThanksText": "Terima Kasih Banyak kepada:",
"thanksEspeciallyToText": "Terima kasih terutamanya kepada ${NAME}",
"titleText": "Penghargaan ${APP_NAME}",
- "whoeverInventedCoffeeText": "Sesiapa yang buatkan kopi"
+ "whoeverInventedCoffeeText": "Sesiapapun yang buat kopi"
},
"currentStandingText": "Kedudukan semasa anda adalah #${RANK}",
"customizeText": "Ubahsuai...",
- "deathsTallyText": "${COUNT} meninggal",
- "deathsText": "Meninggal",
- "debugText": "nyahpep..izzat",
+ "deathsTallyText": "${COUNT} kematian",
+ "deathsText": "Kematian",
+ "debugText": "nyahpepijat (debug)",
"debugWindow": {
- "reloadBenchmarkBestResultsText": "Nota: adalah disyorkan agar anda menetapkan Tetapan->Grafik->Tekstur kepada 'Tinggi' semasa menguji ini.",
+ "reloadBenchmarkBestResultsText": "Nota: Disyorkan untuk anda menetapkan Tetapan->Grafik->Tekstur kepada 'Tinggi' semasa menguji ni.",
"runCPUBenchmarkText": "Jalankan Penanda Aras CPU",
"runGPUBenchmarkText": "Jalankan Penanda Aras GPU",
"runMediaReloadBenchmarkText": "Jalankan Penanda Aras Muat Semula Media",
"runStressTestText": "Jalankan ujian tekanan",
"stressTestPlayerCountText": "Kiraan Pemain",
- "stressTestPlaylistDescriptionText": "Ujian Tekanan Senarai Main",
- "stressTestPlaylistNameText": "Nama Senarai Main",
- "stressTestPlaylistTypeText": "Jenis Senarai Main",
+ "stressTestPlaylistDescriptionText": "Ujian Tekanan Senarai Permainan",
+ "stressTestPlaylistNameText": "Nama Senarai Permainan",
+ "stressTestPlaylistTypeText": "Jenis Senarai Permainan",
"stressTestRoundDurationText": "Tempoh Pusingan",
"stressTestTitleText": "Ujian Tekanan",
"titleText": "Penanda Aras & Ujian Tekanan",
"totalReloadTimeText": "Jumlah masa muat semula: ${TIME} (lihat log untuk butiran)"
},
- "defaultGameListNameText": "Senarai Main ${PLAYMODE} biasa",
- "defaultNewGameListNameText": "Senarai Main ${PLAYMODE} Saya",
+ "defaultGameListNameText": "Senarai Permain ${PLAYMODE} Biasa",
+ "defaultNewGameListNameText": "Senarai Permainan ${PLAYMODE} Saya",
"deleteText": "Buang",
"demoText": "Demo",
"denyText": "Nafikan",
"deprecatedText": "Ditamatkan",
- "desktopResText": "Desktop Res",
- "deviceAccountUpgradeText": "Amaran:\nAnda telah log masuk dengan akaun peranti (${NAME}).\nAkaun peranti akan dialih keluar dalam kemas \nkini akan datang.",
+ "descriptionText": "Keterangan",
+ "desktopResText": "Resolusi Desktop",
+ "deviceAccountUpgradeText": "Amaran:\nAnda telah log masuk dengan akaun peranti (${NAME}).\nAkaun peranti akan dibuang dalam kemas kini (update) yang akan datang.\nNaik taraf kepada akaun V2 kalau anda mahu simpan kemajuan/data permainan (progress) anda.",
"difficultyEasyText": "Mudah",
"difficultyHardOnlyText": "Mod Susah Sahaja",
"difficultyHardText": "Susah",
- "difficultyHardUnlockOnlyText": "Tahap ini hanya dapat dibuka dalam mod sukar.\nAdakah anda mempunyai apa yang diperlukan!?!?!",
- "directBrowserToURLText": "Sila arahkan pelayar web ke URL berikut:",
- "disableRemoteAppConnectionsText": "Lumpuhkan Sambungan Apl Jauh",
- "disableXInputDescriptionText": "Membenarkan lebih daripada 4 pengawal tetapi mungkin tidak berfungsi juga.",
+ "difficultyHardUnlockOnlyText": "Tahap ini hanya dapat dibuka dalam mod susah.\nAdakah anda rasa anda cukup berani dan cekap untuknya!?!?!",
+ "directBrowserToURLText": "Sila arahkan pelayar web (Web-browser) ke URL berikut:",
+ "disableRemoteAppConnectionsText": "Matikan Sambungan Aplikasi-Alat-Kawalan",
+ "disableXInputDescriptionText": "Membenarkan lebih daripada 4 alat kawalan tetapi mungkin tidak berfungsi juga.",
"disableXInputText": "Lumpuhkan XInput",
+ "disabledText": "Dimatikan",
+ "discardText": "Buang",
+ "discordFriendsText": "Mahu seseorang untuk bermain bersama?\nSertai Discord kami dan cari rakan baharu!",
+ "discordJoinText": "Sertai Discord",
"doneText": "Selesai",
"drawText": "Seri",
- "duplicateText": "Pendua",
+ "duplicateText": "Gandakan",
"editGameListWindow": {
"addGameText": "Tambah\nPermainan",
- "cantOverwriteDefaultText": "Tidak boleh menulis ganti senarai main biasa!",
+ "cantOverwriteDefaultText": "Tidak boleh ubah suai senarai permainan biasa!",
"cantSaveAlreadyExistsText": "Senarai main dengan nama itu sudah ada!",
- "cantSaveEmptyListText": "Tidak dapat menyimpan senarai main kosong!",
- "editGameText": "Sunting\nPermainan",
- "listNameText": "Nama Senarai Main",
+ "cantSaveEmptyListText": "Tidak dapat menyimpan senarai main yang kosong!",
+ "editGameText": "Sunting (Edit) \nPermainan",
+ "listNameText": "Nama Senarai Permainan",
"nameText": "Nama",
"removeGameText": "Buang\nPermainan",
"saveText": "Simpan senarai",
- "titleText": "Editor Senarai Main"
+ "titleText": "Editor/Penyunting Senarai Permainan"
},
"editProfileWindow": {
"accountProfileInfoText": "Profil istimewa ini mempunyai nama\ndan ikon berdasarkan akaun anda.\n\n${ICONS}\n\nBuat profil tersuai untuk menggunakan\nnama yang berbeza atau ikon tersuai.",
@@ -578,27 +603,28 @@
"characterText": "watak",
"checkingAvailabilityText": "Menyemak ketersediaan untuk \"${NAME}\"...",
"colorText": "warna",
- "getMoreCharactersText": "Dapatkan Lebih Banyak Watak...",
+ "getMoreCharactersText": "Dapatkan Lebih Banyak Watak/Karakter...",
"getMoreIconsText": "Dapatkan Lebih Banyak Ikon...",
"globalProfileInfoText": "Profil pemain global dijamin nama\nunik di seluruh dunia. Ia juga termasuk ikon tersuai.",
"globalProfileText": "(profil global)",
"highlightText": "sorotan",
"iconText": "ikon",
- "localProfileInfoText": "Profil pemain tempatan tidak mempunyai ikon dan namanya\ntidak dijamin unik. Tingkatkan ke profil global\nuntuk menempah nama unik dan menambahkan ikon sesuai.",
+ "localProfileInfoText": "Profil pemain tempatan tidak mempunyai ikon dan namanya\ntidak dijamin unik. Naik taraf ke profil global\nuntuk menempah nama unik dan menambahkan ikon tersuai.",
"localProfileText": "(profil lokal)",
"nameDescriptionText": "Nama Pemain",
"nameText": "Nama",
+ "profileAlreadyExistsText": "Profil dengan nama itu dah ada.",
"randomText": "rawak",
"titleEditText": "Sunting profil",
- "titleNewText": "Profil Baru",
- "unavailableText": "\"${NAME}\" tidak tersedia; cuba nama lain.",
+ "titleNewText": "Profil Baharu",
+ "unavailableText": "\"${NAME}\" tidak tersedia (dah ada orang pakai); cuba nama lain.",
"upgradeProfileInfoText": "Ini akan menyimpan nama pemain anda di seluruh dunia\ndan membolehkan anda memberikan ikon khusus kepadanya.",
"upgradeToGlobalProfileText": "Naik taraf kepada Profil Global"
},
"editSoundtrackWindow": {
"cantDeleteDefaultText": "Anda tidak boleh memadamkan runut bunyi terbiasa.",
"cantEditDefaultText": "Tidak boleh mengedit runut bunyi biasa. Duplikasikan nya atau buat yang baharu.",
- "cantOverwriteDefaultText": "Tidak dapat menulis ganti runut bunyi biasa",
+ "cantOverwriteDefaultText": "Tidak dapat menu ganti default soundtrack",
"cantSaveAlreadyExistsText": "Lagu dengan nama itu sudah wujud!",
"defaultGameMusicText": "",
"defaultSoundtrackNameText": "Runut Bunyi Biasa",
@@ -623,6 +649,7 @@
"useMusicFolderText": "Folder Fail Muzik"
},
"editText": "Sunting",
+ "enabledText": "Dihidupkan",
"endText": "Tamatkan",
"enjoyText": "Nikmatilah!",
"epicDescriptionFilterText": "${DESCRIPTION} dalam gerakan perlahan epik",
@@ -634,6 +661,8 @@
"errorText": "Ralat",
"errorUnknownText": "ralat tidak diketahui",
"exitGameText": "Keluar daripada ${APP_NAME}?",
+ "expiredAgoText": "Tamat tempoh ${T} yang lalu",
+ "expiresInText": "Tamat tempoh dalam ${T}",
"exportSuccessText": "'${NAME}' dieksport.",
"externalStorageText": "Storan Luaran",
"failText": "Gagal",
@@ -652,9 +681,9 @@
"fireTVRemoteWarningText": "* Untuk pengalaman yang lebih baik,\ngunakan Game Controllers atau pasang\naplikasi '${REMOTE_APP_NAME}' pada\ntelefon atau tablet anda.",
"firstToFinalText": "Yang pertama untuk ${COUNT} pusingan akhir",
"firstToSeriesText": "Siri Pertama kepada-${COUNT}.",
- "fiveKillText": "KENTUT BERLIMA!!!",
+ "fiveKillText": "MEMBUNUH LIMA!!!",
"flawlessWaveText": "Pusingan Sempurna!",
- "fourKillText": "KENTUT BERAMAI-RAMAI!!!",
+ "fourKillText": "MEBUNUH EMPAT!!!",
"friendScoresUnavailableText": "Skor rakan tidak tersedia.",
"gameCenterText": "GameCenter",
"gameCircleText": "GameCircle",
@@ -668,6 +697,8 @@
"duplicateText": "Pendua\nSenarai main",
"editText": "Sunting\nSenarai main",
"newText": "Senarai Main\nBaru",
+ "pointsToWinText": "Mata Untuk Menang",
+ "seriesLengthText": "Panjang Siri",
"showTutorialText": "Tunjukkan Cara-cara",
"shuffleGameOrderText": "Pesanan Permainan Rombak",
"titleText": "Ubahsuai Senarai Main ${TYPE}"
@@ -693,6 +724,7 @@
"copyCodeConfirmText": "Kod telah disalin.",
"copyCodeText": "Salin Kod",
"dedicatedServerInfoText": "Untuk pengalaman yang lebih baik, tetapkan pelayan berdedikasi. Lihat di bombsquadgame.com/server untuk mengetahui caranya.",
+ "descriptionShortText": "Gunakan tetingkap berkumpul untuk memasang parti.",
"disconnectClientsText": "Ini akan memutuskan sambungan ${COUNT} pemain\ndi parti anda. Anda pasti?",
"earnTicketsForRecommendingAmountText": "Rakan anda akan menerima ${COUNT} tiket jika mereka cuba main\n(anda akan menerima ${YOU_COUNT} tiket untuk setiap yang cuba)",
"earnTicketsForRecommendingText": "Kongsi permainan\nuntuk tiket percuma...",
@@ -705,10 +737,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} tiket daripada ${NAME}",
"friendPromoCodeAwardText": "Anda akan menerima ${COUNT} tiket setiap kali kod digunakan.",
"friendPromoCodeExpireText": "Kod akan tamat tempoh dalam ${EXPIRE_HOURS} jam dan cuma berfungsi untuk pemain baru.",
- "friendPromoCodeInstructionsText": "Untuk gunakan kod, buka ${APP_NAME} dan pergi ke \"Tetapan->Lanjutan->Masukkan Kod\".\nLihat di bombsquadgame.com untuk pautan muat turun untuk semua platform yang disokong.",
+ "friendPromoCodeInstructionsText": "Untuk menggunakan kod, buka ${APP_NAME} dan pergi ke \"Tetapan->Lanjutan->Hantar Maklumat\".\nLihat ke bombsquadgame.com untuk pautan muat turun untuk semua platform yang disokong.",
"friendPromoCodeRedeemLongText": "Ia boleh ditebus untuk ${COUNT} tiket percuma oleh sebanyak ${MAX_USES} orang.",
"friendPromoCodeRedeemShortText": "Ia boleh ditebus untuk ${COUNT} tiket di dalam permainan.",
- "friendPromoCodeWhereToEnterText": "(tebus di \"Tetapan->Lanjutan->Masukkan Kod\")",
+ "friendPromoCodeWhereToEnterText": "(dalam \"Tetapan->Lanjutan->Hantar Maklumat\")",
"getFriendInviteCodeText": "Dapatkan Kod Jemputan Rakan",
"googlePlayDescriptionText": "Jemput pemain Google Play ke parti anda:",
"googlePlayInviteText": "Jemput",
@@ -740,6 +772,7 @@
"manualYourLocalAddressText": "Alamat tempatan anda",
"nearbyText": "Berdekatan",
"noConnectionText": "",
+ "noPartiesAddedText": "Tiada Parti Yang Ditambah",
"otherVersionsText": "(versi lain)",
"partyCodeText": "Kod Permainan",
"partyInviteAcceptText": "Terima",
@@ -803,6 +836,12 @@
"youHaveShortText": "anda mempunyai ${COUNT} tiket",
"youHaveText": "anda mempunyai ${COUNT} tiket"
},
+ "goldPass": {
+ "desc1InfTokensText": "Token tak terhingga.",
+ "desc2NoAdsText": "Tiada iklan.",
+ "desc3ForeverText": "Selama-lamanya.",
+ "goldPassText": "Pas Emas"
+ },
"googleMultiplayerDiscontinuedText": "Maaf, perkhidmatan berbilang pemain Google tidak lagi tersedia.\nSaya sedang mencari pengganti secepat mungkin.\nSementara itu, sila cuba kaedah sambungan lain.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Pembelian Google Play tidak tersedia.\nAnda mungkin perlu mengemas kini apl kedai anda.",
"googlePlayServicesNotAvailableText": "Perkhidmatan Google Play tidak tersedia.\nSesetengah fungsi apl mungkin dilumpuhkan.",
@@ -811,10 +850,12 @@
"alwaysText": "Sentiasa",
"fullScreenCmdText": "Skrin penuh (Cmd-F)",
"fullScreenCtrlText": "Skrin penuh (Ctrl-F)",
+ "fullScreenText": "Skrin Penuh",
"gammaText": "Gamma",
"highText": "Tinggi",
"higherText": "Lebih tinggi",
"lowText": "Rendah",
+ "maxFPSText": "Maksimum FPS",
"mediumText": "Sederhana",
"neverText": "Tidak pernah",
"resolutionText": "Resolusi",
@@ -844,9 +885,9 @@
"powerupBombNameText": "Bom Bertiga",
"powerupCurseDescriptionText": "Anda mungkin mahu elakkan diri\ndaripada ini... atau tidak?",
"powerupCurseNameText": "Sumpah",
- "powerupHealthDescriptionText": "Pulihkan nyawa penuh.\nAnda mungkin tidak terfikir.",
+ "powerupHealthDescriptionText": "Penuhkan bar nyawa.\nMesti xleh teka an? An?",
"powerupHealthNameText": "Pek Rawatan",
- "powerupIceBombsDescriptionText": "Lebih lemah daripada bom biasa\ntapi membekukan musuh anda\ndan terutamanya memecahkan.",
+ "powerupIceBombsDescriptionText": "Lebih lemah daripada bom biasa\ntapi membekukan musuh dan\nsenang dipecahkan.",
"powerupIceBombsNameText": "Bom Ais",
"powerupImpactBombsDescriptionText": "Lemah sikit daripada bom biasa,\ntapi ia letup bila dihentam.",
"powerupImpactBombsNameText": "Bom Pencetus",
@@ -856,7 +897,7 @@
"powerupPunchNameText": "Sarung Tangan Tinju",
"powerupShieldDescriptionText": "Menyerap kerosakan\njadi jangan takut.",
"powerupShieldNameText": "Perlindungan Tenaga",
- "powerupStickyBombsDescriptionText": "Melekat di mana sahaja ia kena.\nMenghasilkan keseronokan.",
+ "powerupStickyBombsDescriptionText": "Melekat di mana sahaja ia kena.\nBoleh jadi lawak.",
"powerupStickyBombsNameText": "Bom Melekit",
"powerupsSubtitleText": "Sudah tentu; tiada permainan yang selesai tanpa kuasa tambahan",
"powerupsText": "Kuasa Tambahan",
@@ -869,15 +910,16 @@
},
"holdAnyButtonText": "",
"holdAnyKeyText": "",
- "hostIsNavigatingMenusText": "- ${HOST} sedang melayari menu -",
- "importPlaylistCodeInstructionsText": "Gunakan kod berikut untuk import senarai main ini mana-mana:",
+ "hostIsNavigatingMenusText": "- ${HOST} tengah mungkin tengah pilih² game macam bos -",
+ "importPlaylistCodeInstructionsText": "Gunakan kod berikut untuk import senarai permainan ini mana-mana:",
"importPlaylistSuccessText": "Senarai main ${TYPE} '${NAME}' diimport",
"importText": "Import",
"importingText": "Mengimport...",
"inGameClippedNameText": "dalam permainan dilihat\n\"${NAME}\"",
+ "inboxText": "Peti masuk",
"installDiskSpaceErrorText": "RALAT: Tidak dapat menyelesaikan pemasangan.\nAnda mungkin kehabisan storan pada peranti anda.\nKosongkan sikit ruang dan cuba lagi.",
"internal": {
- "arrowsToExitListText": "tekan ${LEFT} atau ${RIGHT} untuk terkeluar senarai",
+ "arrowsToExitListText": "tekan ${LEFT} atau ${RIGHT} untuk keluar senarai",
"buttonText": "butang",
"cantKickHostError": "Anda tidak boleh menendang penganjur.",
"chatBlockedText": "${NAME} disekat beburak selamo ${TIME} saat.",
@@ -929,12 +971,14 @@
"timeOutText": "(masa tamat dalam ${TIME} saat)",
"touchScreenJoinWarningText": "Anda telah bergabung dengan skrin sentuh.\nJika ini satu kesilapan, ketik 'Menu->Tinggalkan Permainan' dengannya.",
"touchScreenText": "Skrin-Sesentuh",
+ "unableToCompleteTryAgainText": "Tidak dapat menyelesaikan ini sekarang.\nSila cuba lagi.",
"unableToResolveHostText": "Ralat: tidak dapat menyelesaikan hos.",
"unavailableNoConnectionText": "Ini tidak tersedia pada masa ini (tiada sambungan internet?)",
"vrOrientationResetCardboardText": "Gunakan ini untuk menetapkan semula orientasi VR.\nUntuk bermain permainan, anda memerlukan pengawal lain.",
"vrOrientationResetText": "Tetapan semula orientasi VR.",
"willTimeOutText": "(tamat masa jika terbiar)"
},
+ "inventoryText": "Inventori",
"jumpBoldText": "LOMPAT",
"jumpText": "Lompat",
"keepText": "Simpan",
@@ -942,29 +986,29 @@
"keyboardChangeInstructionsText": "Tekan dua kali \"spacebar\" untuk menukar papan kekunci.",
"keyboardNoOthersAvailableText": "Tiada papan kekunci lain tersedia.",
"keyboardSwitchText": "Menukar papan kekunci kepada \"${NAME}\".",
- "kickOccurredText": "${NAME} telah diterajang.",
- "kickQuestionText": "Tendang ${NAME}?",
- "kickText": "Terajang",
- "kickVoteCantKickAdminsText": "Admin tidak boleh ditendang.",
- "kickVoteCantKickSelfText": "Anda tidak boleh menendang diri sendiri.",
+ "kickOccurredText": "${NAME} telah dikeluarkan.",
+ "kickQuestionText": "Keluarkan ${NAME}?",
+ "kickText": "Keluarkan",
+ "kickVoteCantKickAdminsText": "Admin tidak boleh dikeluarkan.",
+ "kickVoteCantKickSelfText": "Anda tidak boleh mengeluarkan diri sendiri.",
"kickVoteFailedNotEnoughVotersText": "Tidak cukup pemain untuk undian.",
- "kickVoteFailedText": "Undi sepakan gagal.",
- "kickVoteStartedText": "Undian sepakan telah dimulakan untuk ${NAME}.",
- "kickVoteText": "Undi untuk Menendang",
- "kickVotingDisabledText": "Undian sepakan dilumpuhkan.",
+ "kickVoteFailedText": "Undian mengeluarkan gagal.",
+ "kickVoteStartedText": "Undian mengeluarkan telah dimulakan untuk ${NAME}.",
+ "kickVoteText": "Undi untuk Mengeluarkan",
+ "kickVotingDisabledText": "Undian mengeluarkan dilumpuhkan.",
"kickWithChatText": "Taip ${YES} dalam sembang untuk ya dan ${NO} untuk tidak.",
- "killsTallyText": "${COUNT} meninggal",
- "killsText": "Meninggal",
+ "killsTallyText": "${COUNT} membunuh",
+ "killsText": "Membunuh",
"kioskWindow": {
"easyText": "Senang",
- "epicModeText": "Mod Epik",
+ "epicModeText": "Mode Epik",
"fullMenuText": "Menu Penuh",
"hardText": "Susah",
"mediumText": "Sederhana",
"singlePlayerExamplesText": "Contoh Pemain Tunggal / Koperasi",
"versusExamplesText": "Contoh Perbandingan"
},
- "languageSetText": "Bahasa ditetapkan ke \"${LANGUAGE}\"",
+ "languageSetText": "Bahasa sekarang \"${LANGUAGE}\"",
"lapNumberText": "Pusingan ${CURRENT}/${TOTAL}",
"lastGamesText": "( ${COUNT} permainan terakhir)",
"leaderboardsText": "Papan pendahulu",
@@ -981,8 +1025,11 @@
"seasonEndsMinutesText": "Musim tamat dalam ${NUMBER} minit.",
"seasonText": "Musim ${NUMBER}",
"tournamentLeagueText": "Anda mesti mencapai liga ${NAME} untuk menyertai kejohanan ini.",
- "trophyCountsResetText": "Kiraan trofi akan ditetapkan semula musim depan."
+ "trophyCountsResetText": "Kiraan trofi akan ditetapkan semula musim depan.",
+ "upToDateBonusDescriptionText": "Pemain yang menjalankan versi terbaru\npermainan menerima bonus ${PERCENT}% di sini.",
+ "upToDateBonusText": "Bonus Terkini"
},
+ "learnMoreText": "Ketahui lebih lanjut",
"levelBestScoresText": "Markah terbaik pada ${LEVEL}",
"levelBestTimesText": "Masa terbaik di ${LEVEL}",
"levelIsLockedText": "${LEVEL} dikunci.",
@@ -1026,23 +1073,26 @@
"modeArcadeText": "Mod arked",
"modeClassicText": "Mod Klasik",
"modeDemoText": "Demo Mode",
+ "moreSoonText": "Lagi Akan Datang...",
+ "mostDestroyedPlayerText": "Pemain Paling Musnah",
"mostValuablePlayerText": "Pemain yang amat berharga",
- "mostViolatedPlayerText": "Pemain yang Amat Melanggar",
+ "mostViolatedPlayerText": "Pemain Paling Banyak Mati",
"mostViolentPlayerText": "Pemain Paling Ganas",
"moveText": "Bergerak",
- "multiKillText": "${COUNT}-Meninggal!!",
+ "multiKillText": "${COUNT}-Membunuh!!",
"multiPlayerCountText": "${COUNT} pemain",
"mustInviteFriendsText": "Nota: anda mesti menjemput rakan masuk\npanel \"${GATHER}\" atau lampirkan\npengawal untuk bermain berbilang pemain.",
"nameBetrayedText": "${NAME} mengkhianati ${VICTIM}.",
- "nameDiedText": "${NAME} ninggal.",
- "nameKilledText": "${NAME} meng ninggal ${VICTIM}.",
+ "nameDiedText": "${NAME} mati.",
+ "nameKilledText": "${NAME} membunuh ${VICTIM}.",
"nameNotEmptyText": "Nama tidak boleh kosong!",
"nameScoresText": "Markah ${NAME}!",
- "nameSuicideKidFriendlyText": "${NAME} ter ninggal.",
- "nameSuicideText": "${NAME} mening gal.",
+ "nameSuicideKidFriendlyText": "${NAME} secara tidak sengaja mati.",
+ "nameSuicideText": "${NAME} membunuh diri.",
"nameText": "Nama",
"nativeText": "Asal",
- "newPersonalBestText": "Markah sendiri baharu!",
+ "newExclaimText": "Baru!",
+ "newPersonalBestText": "Terbaik peribadi baru!",
"newTestBuildAvailableText": "Binaan ujian yang lebih baharu tersedia! (${VERSION} bina ${BUILD}).\nDapatkannya di ${ADDRESS}",
"newText": "Baru",
"newVersionAvailableText": "Versi ${APP_NAME} yang lebih baharu tersedia! (${VERSION})",
@@ -1052,12 +1102,16 @@
"noContinuesText": "(tidak boleh bersambung)",
"noExternalStorageErrorText": "Tiada storan luaran ditemui pada peranti ini",
"noGameCircleText": "Ralat: tidak log masuk ke GameCircle",
+ "noMessagesText": "Tiada mesej.",
+ "noPluginsInstalledText": "Tiada Pemalam Yang Dipasang",
"noScoresYetText": "Tiada markah lagi.",
+ "noServersFoundText": "Tiada pelayan yang ditemui.",
"noThanksText": "Tak Terimo Kasih, Yo",
"noTournamentsInTestBuildText": "AMARAN: Markah kejohanan daripada binaan ujian ini akan diabaikan.",
"noValidMapsErrorText": "Tiada peta yang sah ditemui untuk jenis permainan ini.",
"notEnoughPlayersRemainingText": "Tidak cukup pemain yang tinggal; keluar dan mulakan permainan baharu.",
"notEnoughPlayersText": "Anda memerlukan sekurang-kurangnya ${COUNT} pemain untuk memulakan permainan ini!",
+ "notEnoughTicketsText": "Ticket tidak mencukupi!",
"notNowText": "Bukan sekarang",
"notSignedInErrorText": "Anda mesti log masuk untuk melakukan ini.",
"notSignedInGooglePlayErrorText": "Anda mesti log masuk dengan Google Play untuk melakukan ini.",
@@ -1070,6 +1124,9 @@
"onText": "Hidup",
"oneMomentText": "Tunggu Seketika...",
"onslaughtRespawnText": "${PLAYER} akan muncul semula dalam gelombang ${WAVE}",
+ "openMeText": "Buka Saya!",
+ "openNowText": "Buka Sekarang",
+ "openText": "Buka",
"orText": "${A} atau ${B}",
"otherText": "Lain-lain...",
"outOfText": "(#${RANK} daripada ${ALL})",
@@ -1121,7 +1178,11 @@
"pleaseWaitText": "Sila tunggu...",
"pluginClassLoadErrorText": "Ralat memuatkan kelas pemalam '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Ralat semasa memulakan pemalam '${PLUGIN}': ${ERROR}",
- "pluginsDetectedText": "Pemalam baharu dikesan. Mulakan semula untuk mengaktifkannya, atau konfigurasikannya dalam tetapan.",
+ "pluginSettingsText": "Tetapan Pemalam",
+ "pluginsAutoEnableNewText": "Auto Dayakan Pemalam Baru",
+ "pluginsDetectedText": "Pemalam(s) baharu dikesan. Mulakan semula untuk mengaktifkannya, atau konfigurasikannya dalam tetapan.",
+ "pluginsDisableAllText": "Nyahdayakan Semua Pemalam",
+ "pluginsEnableAllText": "Dayakan Semua Pemalam",
"pluginsRemovedText": "${NUM} pemalam tidak ditemui lagi.",
"pluginsText": "Bahan Tambahan",
"practiceText": "Latihan",
@@ -1151,6 +1212,8 @@
"punchText": "Lempeng",
"purchaseForText": "Beli dengan harga ${PRICE}",
"purchaseGameText": "Permainan Belian",
+ "purchaseNeverAvailableText": "Maaf, pembelian tidak tersedia pada binaan ini.\nCuba log masuk ke akaun anda di platform lain dan buat pembelian dari sana.",
+ "purchaseNotAvailableText": "Pembelian ini tidak tersedia.",
"purchasingText": "Membeli...",
"quitGameText": "Blah ${APP_NAME}?",
"quittingIn5SecondsText": "Berhenti dalam 5 saat...",
@@ -1192,6 +1255,7 @@
"version_mismatch": "Versi tidak sepadan.\nPastikan BombSquad dan BombSquad Remote\nadalah verisi terkini dan cuba lagi."
},
"removeInGameAdsText": "Buka kunci \"${PRO}\" di kedai untuk mengalih keluar iklan dalam permainan.",
+ "removeInGameAdsTokenPurchaseText": "TAWARAN MASA TERHAD: Beli SEBARANG pek token untuk mengalih keluar iklan dalam permainan.",
"renameText": "Namakan semula",
"replayEndText": "Tamatkan Rakaman ulang",
"replayNameDefaultText": "Main Ulang Permainan Terakhir",
@@ -1212,7 +1276,9 @@
"revertText": "Kembalikan",
"runText": "Lari",
"saveText": "Simpan",
- "scanScriptsErrorText": "Ralat mengimbas skrip; lihat log untuk butiran.",
+ "scanScriptsErrorText": "Ralat(s) mengimbas skrip; Lihat log untuk butiran.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} dan ${NUM} modul yang lain perlu dikemaskinikan untuk API ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} perlu dikemaskinikan untuk API ${API}.",
"scoreChallengesText": "Cabaran Skor",
"scoreListUnavailableText": "Senarai skor tidak tersedia.",
"scoreText": "Markah",
@@ -1223,6 +1289,7 @@
},
"scoreWasText": "(telah ${COUNT})",
"selectText": "Pilih",
+ "sendInfoDescriptionText": "Menghantar maklumat keadaan akaun dan apl kepada pembangun.\nSila sertakan nama atau sebab anda untuk menghantar.",
"seriesWinLine1PlayerText": "MEMENANGI",
"seriesWinLine1TeamText": "MEMENANGI",
"seriesWinLine1Text": "MENANGKAN",
@@ -1238,24 +1305,33 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(papan kekunci skrin yang ringkas dan mesra)",
- "alwaysUseInternalKeyboardText": "Gunakan Papan Kekunci Dalaman",
+ "alwaysUseInternalKeyboardText": "Gunakan papan kekunci dalaman",
"benchmarksText": "Penanda Aras & Ujian Tekanan",
- "disableCameraGyroscopeMotionText": "Lumpuhkan Pergerakan Giroskop Kamera",
- "disableCameraShakeText": "Lumpuhkan Goncangan Kamera",
+ "devToolsText": "Alat Pembangun",
+ "disableCameraGyroscopeMotionText": "Tutup pergerakan giroskop kamera",
+ "disableCameraShakeText": "Tutup goncangan kamera",
"disableThisNotice": "(anda boleh mematikan pemberitahuan ini di tetapan lanjutan)",
"enablePackageModsDescriptionText": "(menghidupkan kecekapan mod tambahan tapi mematikan permainan rangkaian)",
"enablePackageModsText": "Hidupkan Pakej Mod Tempatan",
"enterPromoCodeText": "Masukkan Kod",
"forTestingText": "Peringatan: nilai ini hanya untuk ujian dan akan hilang apabila aplikasi ditutup.",
"helpTranslateText": "terjemahan ${APP_NAME} selain Inggeris adalah usaha sokongan\nkomuniti. Jika anda ingin membantu menyumbang atau memperbetulkan \nterjemahan, sila ke pautan di bawah. Terima kasih!",
- "kickIdlePlayersText": "Keluarkan Pemain yang Duduk Diam",
+ "insecureConnectionsDescriptionText": "tidak disyorkan, tetapi mungkin membenarkan permainan\ndalam talian daripada negara atau rangkaian terhad",
+ "insecureConnectionsText": "Gunakan sambungan yang tidak selamat",
+ "kickIdlePlayersText": "Tendang pemain terbiar",
"kidFriendlyModeText": "Mod Mesra (kurangkan kekerasan, dll)",
"languageText": "Bahasa",
"moddingGuideText": "Panduan Menge-mod",
- "mustRestartText": "Anda perlu memula semula permainan untuk dapat berkesan.",
+ "moddingToolsText": "Alat Modding",
+ "mustRestartText": "Anda perlu tutup dan buka semula game ni kalau nak bende ni berfungsi.",
"netTestingText": "Ujian Rangkaian",
"resetText": "Tetap Semula",
+ "sendInfoText": "Hantar Maklumat",
"showBombTrajectoriesText": "Tunjukkan Trajektori Bom",
+ "showDemosWhenIdleText": "Tunjukkan demo apabila melahu",
+ "showDeprecatedLoginTypesText": "Tunjukkan jenis log masuk yang ditamatkan",
+ "showDevConsoleButtonText": "Tunjukkan butang konsol pembangun",
+ "showInGamePingText": "Tunjukkan ping dalam permainan",
"showPlayerNamesText": "Tunjukkan Nama Pemain",
"showUserModsText": "Tunjukkan Pelipat Mod",
"titleText": "Lanjutan",
@@ -1263,8 +1339,8 @@
"translationFetchErrorText": "status terjemahan tidak tersedia",
"translationFetchingStatusText": "memeriksa status terjemahan...",
"translationInformMe": "Beritahu saya apabila bahasa saya perlu dikemaskini",
- "translationNoUpdateNeededText": "bahasa semasa telah dikemaskini; sting aku yahoo",
- "translationUpdateNeededText": "** bahasa semasa perlu dikemaskini **",
+ "translationNoUpdateNeededText": "Bahasa semasa adalah terkini; woohoo!",
+ "translationUpdateNeededText": "** Bahasa semasa memerlukan kemas kini!! **",
"vrTestingText": "Cubaan VR"
},
"shareText": "Kongsi",
@@ -1274,6 +1350,9 @@
"signInWithGameCenterText": "Untuk menggunakan akaun Game Center,\nlog masuk dengan aplikasi Game Center.",
"singleGamePlaylistNameText": "Cuma ${GAME}",
"singlePlayerCountText": "1 pemain",
+ "sizeLargeText": "Besar",
+ "sizeMediumText": "Sederhana",
+ "sizeSmallText": "Kecil",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Pemilihan watak",
@@ -1299,9 +1378,10 @@
},
"spaceKeyText": "space",
"statsText": "Statistik",
+ "stopRemindingMeText": "Berhenti Mengingatkan Saya",
"storagePermissionAccessText": "Ini memerlukan akses storan",
"store": {
- "alreadyOwnText": "Anda telah memiliki ${NAME}!",
+ "alreadyOwnText": "Anda dah ada ${NAME}!",
"bombSquadProNameText": "${APP_NAME} Pro",
"bombSquadProNewDescriptionText": "• Buang iklan dan timbulan pembelian\n• Membuka kunci lebih banyak tetapan permainan\n• Juga termasuk:",
"buyText": "Beli",
@@ -1311,15 +1391,15 @@
"freeBombSquadProText": "BombSquad kini percuma, tapi sejak anda membelinya secara sah anda menerima\npenaiktarafan BombSquad Pro dan ${COUNT} tiket sebagai tanda terima kasih.\nNikmatilah ciri-ciri baru, dan terima kasih atas sokongan anda!\n- Eric",
"holidaySpecialText": "Istimewa Cuti Perayaan",
"howToSwitchCharactersText": "(pergi ke \"${SETTINGS} -> ${PLAYER_PROFILES}\" untuk urus & ubahsuai watak)",
- "howToUseIconsText": "(cipta profil pemain global (di tetingkap akaun) untuk gunakan ini)",
+ "howToUseIconsText": "(cipta profil pemain global (di window akaun) untuk gunakan ini)",
"howToUseMapsText": "(gunakan peta ini di senarai main pasukan/bebas untuk semua anda)",
"iconsText": "Ikon",
"loadErrorText": "Tidak dapat memuatkan halaman.\nSila periksa sambungan internet.",
- "loadingText": "memuat",
+ "loadingText": "loading jap",
"mapsText": "Peta",
- "miniGamesText": "Permainan Kecil",
+ "miniGamesText": "Permainan Tambahan",
"oneTimeOnlyText": "(satu masa sahaja)",
- "purchaseAlreadyInProgressText": "Pembelian item ini dalam pembelian.",
+ "purchaseAlreadyInProgressText": "Pembelian item tengah dalam proses.",
"purchaseConfirmText": "Beli ${ITEM}?",
"purchaseNotValidError": "Pembelian tidak sah.\nHubungi ${EMAIL} jika ini disebabkan ralat.",
"purchaseText": "Beli",
@@ -1346,6 +1426,8 @@
"storeText": "Kedai",
"submitText": "Hantar",
"submittingPromoCodeText": "Mengemukakan Kod...",
+ "successText": "Berjaya!",
+ "supportEmailText": "Jika anda mengalami masalah dengan apl ini, sila\nhantar e-mel kepada ${EMAIL}.",
"teamNamesColorText": "Nama/Warna Pasukan...",
"telnetAccessGrantedText": "Akses telnet diaktifkan.",
"telnetAccessText": "Akses telnet dikesan; benarkan?",
@@ -1354,26 +1436,41 @@
"testBuildValidateErrorText": "Tidak dapat mengesahkan binaan ujian. (tiada sambungan net?)",
"testBuildValidatedText": "Binaan Ujian Disahkan; Sting aku yahoo!",
"thankYouText": "Terima kasih atas sokongan anda! Nikmati permainan!!",
- "threeKillText": "PELEPASAN GAS TIGA KALI!!",
+ "threeKillText": "PEMBUNUHAN TIGA KALI GANDA!!",
+ "ticketsDescriptionText": "Tiket boleh digunakan untuk membuka kunci aksara,\npeta, permainan kecil dan banyak lagi di kedai.\n\nTiket boleh didapati di peti yang dimenangi\nkempen, kejohanan dan pencapaian.",
"timeBonusText": "Bonus Masa",
"timeElapsedText": "Masa Berlalu",
"timeExpiredText": "Masa Tamat",
- "timeSuffixDaysText": "${COUNT}h",
- "timeSuffixHoursText": "${COUNT}j",
+ "timeSuffixDaysText": "${COUNT}d",
+ "timeSuffixHoursText": "${COUNT}h",
"timeSuffixMinutesText": "${COUNT}m",
"timeSuffixSecondsText": "${COUNT}s",
"tipText": "Tip",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Dapatkan Token",
+ "notEnoughTokensText": "Tidak mencukupi token!",
+ "numTokensText": "${COUNT} Token",
+ "openNowDescriptionText": "Anda mempunyai cukup token untuk\nmembuka ini sekarang - anda tidak\nperlu menunggu.",
+ "shinyNewCurrencyText": "Mata wang baharu berkilat BombSquad.",
+ "tokenPack1Text": "Pek Token Kecil",
+ "tokenPack2Text": "Pek Token Sederhana",
+ "tokenPack3Text": "Pek Token Besar",
+ "tokenPack4Text": "Pek Token Jumbo",
+ "tokensDescriptionText": "Token digunakan untuk mempercepatkan buka kunci peti\ndan untuk ciri permainan dan akaun lain.\n\nAnda boleh memenangi token dalam permainan atau membelinya\ndalam pek. Atau beli Pas Emas untuk\ntoken tak terhingga dan tidak pernah mendengar tentangnya lagi.",
+ "youHaveGoldPassText": "Anda mempunyai Pas Emas.\nSemua pembelian token adalah percuma.\nNikmati!"
+ },
"topFriendsText": "Rakan Karib",
"tournamentCheckingStateText": "Memeriksa keadaan kejohanan; sila tunggu...",
"tournamentEndedText": "Kejohanan ini telah berakhir. Yang baru akan dimulakan tidak lama lagi.",
"tournamentEntryText": "Kemasukan Kejohanan",
+ "tournamentFinalStandingsText": "Kedudukan Akhir",
"tournamentResultsRecentText": "Keputusan Kejohanan Terkini",
"tournamentStandingsText": "Kedudukan Kejohanan",
"tournamentText": "Kejohanan",
"tournamentTimeExpiredText": "Masa Kejohanan Tamat",
- "tournamentsDisabledWorkspaceText": "Kejohanan dilumpuhkan apabila ruang kerja aktif.\nUntuk mendayakan semula kejohanan, lumpuhkan ruang kerja anda dan mulakan semula.",
+ "tournamentsDisabledWorkspaceText": "Kejohanan dilumpuhkan apabila ruang kerja aktif.\nUntuk buka semula kejohanan, tutup ruang kerja anda dan tutup-bukak semula game ni.",
"tournamentsText": "Kejohanan",
"translations": {
"characterNames": {
@@ -1424,10 +1521,22 @@
"Uber Onslaught": "Berserang Urban",
"Uber Runaround": "Lari padang Urban"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Tiket",
+ "${C} Tokens": "${C} Token",
+ "Chest": "Peti",
+ "L1 Chest": "L1 Peti",
+ "L2 Chest": "L2 Peti",
+ "L3 Chest": "L3 Peti",
+ "L4 Chest": "L4 Peti",
+ "L5 Chest": "L5 Peti",
+ "L6 Chest": "L6 Peti",
+ "Unknown Chest": "Peti tidak diketahui"
+ },
"gameDescriptions": {
- "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Jadilah orang yang terpilih untuk masa yang lama untuk menang.\nLawan untuk terpilih.",
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Jadilah orang yang terpilih untuk masa yang lama untuk menang.\nBunuh orang terpilih untuk menjadinya.",
"Bomb as many targets as you can.": "Bom seberapa banyak sasaran yang anda boleh.",
- "Carry the flag for ${ARG1} seconds.": "Bawa bendera selama ${ARG1} saat.",
+ "Carry the flag for ${ARG1} seconds.": "Pegang bendera selama ${ARG1} saat.",
"Carry the flag for a set length of time.": "Bawa bendera untuk jangka masa yang ditetapkan.",
"Crush ${ARG1} of your enemies.": "Hancurkan ${ARG1} lawan anda.",
"Defeat all enemies.": "Kalahkan semua lawan.",
@@ -1435,13 +1544,13 @@
"Final glorious epic slow motion battle to the death.": "Pertempuran gerakan perlahan epik terakhir yang terkoncat hingga mati.",
"Gather eggs!": "Kumpul tolo!",
"Get the flag to the enemy end zone.": "Dapatkan bendera ke zon hujung musuh.",
- "How fast can you defeat the ninjas?": "Seberapa pantas anda boleh mengalahkan ninja?",
- "Kill a set number of enemies to win.": "Sepak segerombolan musuh untuk memenangi.",
- "Last one standing wins.": "Kedudukan terakhir menang.",
- "Last remaining alive wins.": "Kemenangan terakhir yang masih ada.",
- "Last team standing wins.": "Kedudukan pasukan terakhir menang.",
- "Prevent enemies from reaching the exit.": "Elakkan musuh daripada sampai ke pintu keluar.",
- "Reach the enemy flag to score.": "Sampai ke bendera musuh untuk menerima mata.",
+ "How fast can you defeat the ninjas?": "Seberapa pantas mana anda boleh mengalahkan semua ninja?",
+ "Kill a set number of enemies to win.": "Bunuh beberapa set musuh untuk menang.",
+ "Last one standing wins.": "Yang terakhir bertahan menang.",
+ "Last remaining alive wins.": "Yang terakhir bertahan menang.",
+ "Last team standing wins.": "Pasukan terakhir bertahan menang.",
+ "Prevent enemies from reaching the exit.": "Halang musuh daripada sampai ke pintu keluar.",
+ "Reach the enemy flag to score.": "Sentuh bendera musuh untuk menjaringkan gol.",
"Return the enemy flag to score.": "Kembalikan bendera musuh untuk menerima mata.",
"Run ${ARG1} laps.": "Telah berlari ${ARG1} pusingan.",
"Run ${ARG1} laps. Your entire team has to finish.": "Lari pusingan ${ARG1}. Mesti semua ahli pasukan sudah selesai.",
@@ -1456,21 +1565,21 @@
"Secure all ${ARG1} flags.": "Lindungi semua bendera ${ARG1}.",
"Secure all flags on the map to win.": "Lindungi semua bendera pada peta untuk menang.",
"Secure the flag for ${ARG1} seconds.": "Selamatkan bendera dalam ${ARG1} saat",
- "Secure the flag for a set length of time.": "Selamatkan bendera untuk jangka masa yang ditetapkan.",
+ "Secure the flag for a set length of time.": "Lindungi bendera dalam jangka masa yang ditetapkan.",
"Steal the enemy flag ${ARG1} times.": "Curi bendera musuh ${ARG1} kali.",
- "Steal the enemy flag.": "Curi bendera lawan.",
+ "Steal the enemy flag.": "Curi bendera pihak lawan.",
"There can be only one.": "Hanya boleh ada satu.",
"Touch the enemy flag ${ARG1} times.": "Sentuh bendera musuh sebanyak ${ARG1} kali.",
"Touch the enemy flag.": "Sentuh bendera musuh.",
"carry the flag for ${ARG1} seconds": "membawa bendera selama ${ARG1} saat",
- "kill ${ARG1} enemies": "lempang musuh ${ARG1}",
- "last one standing wins": "yang terakhir menang",
- "last team standing wins": "pasukan terakhir berdiri menang",
+ "kill ${ARG1} enemies": "Bunuh ${ARG1} musuh",
+ "last one standing wins": "yang terakhir bertahan menang",
+ "last team standing wins": "pasukan terakhir bertahan menang",
"return ${ARG1} flags": "kembalikan bendera ${ARG1}.",
"return 1 flag": "pulangkan 1 bendera",
- "run ${ARG1} laps": "pusingan ke ${ARG1} larian",
+ "run ${ARG1} laps": "lari sebanyak ${ARG1} pusingan",
"run 1 lap": "lari 1 pusingan",
- "score ${ARG1} goals": "menjaringkan ${ARG1} gol.",
+ "score ${ARG1} goals": "menjaringkan ${ARG1} gol",
"score ${ARG1} touchdowns": "skor ${ARG1} pendaratan",
"score a goal": "menjaringkan gol",
"score a touchdown": "skorkan gol",
@@ -1497,7 +1606,7 @@
"Race": "Perlumbaan",
"Runaround": "Berlarian",
"Target Practice": "Praktis Sasaran",
- "The Last Stand": "Yang Terakhir"
+ "The Last Stand": "Yang Terakhir Berdiri"
},
"inputDeviceNames": {
"Keyboard": "Papan kekunci",
@@ -1506,19 +1615,20 @@
"languages": {
"Arabic": "Bahasa Arab",
"Belarussian": "Bahasa Belarus",
- "Chinese": "Bahasa Cina",
- "ChineseTraditional": "Bahasa Tradisional Cina",
+ "Chinese": "Bahasa Cina (Dimudahkan) ",
+ "ChineseSimplified": "Bahasa Cina - Dimudahkan",
+ "ChineseTraditional": "Bahasa Cina - Tradisional",
"Croatian": "Bahasa Kroatia",
"Czech": "Bahasa Czech",
"Danish": "Bahasa Denmark",
"Dutch": "Bahasa Belanda",
"English": "Bahasa Inggeris",
"Esperanto": "Bahasa Esperanto",
- "Filipino": "Filipina",
+ "Filipino": "Bahasa Filipina",
"Finnish": "Bahasa Finland",
"French": "Bahasa Perancis",
"German": "Bahasa Jerman",
- "Gibberish": "Karut",
+ "Gibberish": "Bahasa Mengarut/Tah Ape-ape",
"Greek": "Bahasa Yunani",
"Hindi": "Bahasa Hindi",
"Hungarian": "Bahasa Hungari",
@@ -1528,13 +1638,18 @@
"Korean": "Bahasa Korea",
"Malay": "Melayu",
"Persian": "Bahasa Farsi",
+ "PirateSpeak": "Bahasa Lanun",
"Polish": "Bahasa Poland",
"Portuguese": "Bahasa Portugis",
+ "PortugueseBrazil": "Bahasa Portugis Brazil",
+ "PortuguesePortugal": "Bahasa Portugis Portugal",
"Romanian": "Bahasa Romania",
"Russian": "Bahasa Rusia",
"Serbian": "Bahasa Serbia",
"Slovak": "Bahasa Slovak",
"Spanish": "Bahasa Sepanyol",
+ "SpanishLatinAmerica": "Spanyol - Latin Amerika",
+ "SpanishSpain": "Bahasa Spanyol - Spain",
"Swedish": "Bahasa Sweden",
"Tamil": "Bahasa Tamil",
"Thai": "Bahasa Thai",
@@ -1551,7 +1666,7 @@
},
"mapsNames": {
"Big G": "G Besar",
- "Bridgit": "Jambatan",
+ "Bridgit": "Jambatan Sultan Abdul Halim Muadzam Shah (Cetak rompak punye)",
"Courtyard": "Halaman Mahkamah",
"Crag Castle": "Istana Batu",
"Doom Shroom": "Cendawan Malapetaka",
@@ -1560,7 +1675,7 @@
"Hockey Stadium": "Stadium Hoki",
"Lake Frigid": "Tasik Beku",
"Monkey Face": "Muka Monyet",
- "Rampage": "Amukan",
+ "Rampage": "Huru-harawan",
"Roundabout": "Bulatan",
"Step Right Up": "Langkah Ke Atas",
"The Pad": "Lapang",
@@ -1581,14 +1696,14 @@
"Time Held": "Masa Dijalankan"
},
"serverResponses": {
- "A code has already been used on this account.": "Kod telah digunakan pada akaun ini.",
+ "A code has already been used on this account.": "Suatu kod telah digunakan pada akaun ini.",
"A reward has already been given for that address.": "Ganjaran telah pun diberikan untuk alamat itu.",
"Account linking successful!": "Pemautan akaun berjaya!",
"Account unlinking successful!": "Penyahpautan akaun berjaya!",
"Accounts are already linked.": "Akaun sudah dipautkan.",
"Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Paparan iklan mengacau tidak dapat disahkan.\nSila pastikan anda menjalankan versi permainan yang rasmi dan terkini.",
"An error has occurred; (${ERROR})": "Ralat telah berlaku; (${ERROR})",
- "An error has occurred; please contact support. (${ERROR})": "Ralat telah berlaku; sila hubungi sokongan. (${ERROR})",
+ "An error has occurred; please contact support. (${ERROR})": "Ralat telah berlaku; sila hubungi bantuan. (${ERROR})",
"An error has occurred; please contact support@froemling.net.": "Ralat telah berlaku; sila hubungi support@froemling.net.",
"An error has occurred; please try again later.": "Ralat telah berlaku; sila cuba sebentar lagi.",
"Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Adakah anda pasti mahu memautkan akaun ini?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nPerkara ini tidak boleh diubah semula .!",
@@ -1599,6 +1714,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Penipuan dikesan; markah dan hadiah digantung selama ${COUNT} hari.",
"Could not establish a secure connection.": "Tidak dapat mewujudkan sambungan selamat.",
"Daily maximum reached.": "Maksimum harian dicapai.",
+ "Daily sign-in reward": "Ganjaran log masuk harian",
"Entering tournament...": "Memasuki kejohanan...",
"Invalid code.": "Kod tidak sah.",
"Invalid payment; purchase canceled.": "Pembayaran tidak sah; pembelian dibatalkan.",
@@ -1608,11 +1724,14 @@
"Item unlocked!": "Item dibuka!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "MEMAUT DITOLAK. ${ACCOUNT} mengandungi\ndata penting yang akan KESEMUANYA HILANG.\nAnda boleh memaut dalam susunan yang bertentangan jika anda mahu\n(dan akan menghilangan data akaun INI sebagai ganti)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Pautkan akaun ${ACCOUNT} ke akaun ini?\nSemua data sedia ada pada ${ACCOUNT} akan hilang.\nPerkara ini tidak boleh diubah. Adakah anda pastis?",
+ "Longer streaks lead to better rewards.": "Coretan yang lebih panjang membawa kepada ganjaran yang lebih baik.",
"Max number of playlists reached.": "Bilangan maksimum senarai main dicapai.",
"Max number of profiles reached.": "Bilangan profil maksimum dicapai.",
"Maximum friend code rewards reached.": "Ganjaran kod rakan telah maksimum dicapai.",
"Message is too long.": "Mesej terlalu panjang.",
+ "New tournament result!": "Keputusan kejohanan baharu!",
"No servers are available. Please try again soon.": "Tiada pelayan tersedia. Nanti cuba lagi, sebentar lagi.",
+ "No slots available. Free a slot and try again.": "Tiada slot tersedia. Kosongkan slot dan cuba lagi.",
"Profile \"${NAME}\" upgraded successfully.": "Profil \"${NAME}\" berjaya dinaik taraf.",
"Profile could not be upgraded.": "Profil tidak dapat ditingkatkan.",
"Purchase successful!": "Pembelian berjaya!",
@@ -1622,7 +1741,9 @@
"Sorry, this code has already been used.": "Maaf, kod ini telah digunakan.",
"Sorry, this code has expired.": "Maaf, kod ini telah tamat tempoh.",
"Sorry, this code only works for new accounts.": "Maaf, kod ini hanya berfungsi untuk akaun baharu.",
+ "Sorry, this has expired.": "Maaf, ini telah tamat tempoh.",
"Still searching for nearby servers; please try again soon.": "Masih mencari pelayan berdekatan; sila cuba lagi nanti.",
+ "Streak: ${NUM} days": "Rentetan: ${NUM} hari",
"Temporarily unavailable; please try again later.": "Tidak tersedia buat sementara waktu; sila cuba sebentar lagi.",
"The tournament ended before you finished.": "Kejohanan tamat sebelum anda tamat.",
"This account cannot be unlinked for ${NUM} days.": "Akaun ini tidak boleh dinyahpautkan selama ${NUM} hari.",
@@ -1633,19 +1754,28 @@
"Tournaments require ${VERSION} or newer": "Kejohanan memerlukan ${VERSION} atau lebih baharu",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Nyahpaut ${ACCOUNT} daripada akaun ini?\nSemua data pada ${ACCOUNT} akan ditetapkan semula.\n(kecuali untuk pencapaian dalam kes tertentu)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "AMARAN: aduan penggodaaman telah dikeluarkan terhadap akaun anda.\nAkaun yang didapati menggodam akan diharamkan. Tolong main adil.",
+ "Wait reduced!": "Tunggu dikurangkan!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Amaran: Versi permainan ini terhad kepada data akaun lama; beberapa perkara mungkin kelihatan hilang atau tidak terkini.\nSila naik taraf ke versi permainan yang lebih baharu untuk melihat data akaun terkini anda.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Adakah anda ingin memautkan akaun peranti anda ke akaun ini?\n\nAkaun peranti anda ialah ${ACCOUNT1}\nAkaun ini ialah ${ACCOUNT2}\n\nIni akan membolehkan anda mengekalkan data sedia ada anda.\nAmaran: ini tidak boleh dibaiki semula!",
"You already own this!": "Anda sudah memiliki ini!",
"You can join in ${COUNT} seconds.": "Anda boleh menyertai dalam ${COUNT} saat.",
"You don't have enough tickets for this!": "Anda tidak mempunyai tiket yang mencukupi untuk ini!",
"You don't own that.": "Anda tidak memilikinya.",
"You got ${COUNT} tickets!": "Anda mendapat ${COUNT} tiket!",
+ "You got ${COUNT} tokens!": "Anda mendapat ${COUNT} token!",
"You got a ${ITEM}!": "Anda mendapat ${ITEM}!",
+ "You got a chest!": "Anda mendapat peti!",
+ "You got an achievement reward!": "Anda mendapat ganjaran pencapaian!",
"You have been promoted to a new league; congratulations!": "Anda telah dinaikkan pangkat ke liga baharu; tahniah!",
+ "You lost a chest! (All your chest slots were full)": "Anda kehilangan peti! (Semua slot peti anda penuh)",
+ "You must update the app to view this.": "Anda mesti mengemas kini aplikasi untuk melihat ini.",
"You must update to a newer version of the app to do this.": "Anda mesti mengemas kini kepada versi apl yang lebih baharu untuk melakukan ini.",
"You must update to the newest version of the game to do this.": "Anda mesti mengemas kini kepada versi terbaharu permainan untuk melakukan ini.",
"You must wait a few seconds before entering a new code.": "Anda mesti menunggu beberapa saat sebelum memasukkan kod baharu.",
+ "You placed #${RANK} in a tournament!": "Anda meletakkan #${RANK} dalam kejohanan!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Anda menduduki #${RANK} dalam kejohanan terakhir. Terima kasih kerana bermain!",
"Your account was rejected. Are you signed in?": "Akaun anda telah ditolak. Adakah anda telah log masuk?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Iklan anda tak dapat masuk. Butang/pilihan untuk melihat iklan akan terhad buat sementara waktu.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Salinan permainan anda telah diubah suai.\nSila kembalikan sebarang perubahan dan cuba lagi.",
"Your friend code was used by ${ACCOUNT}": "Kod rakan anda telah digunakan oleh ${ACCOUNT}"
},
@@ -1666,10 +1796,10 @@
"Chosen One Gets Shield": "Yang Terpilih Dapat Perisai",
"Chosen One Time": "Masa Bagi Yg Terpilih",
"Enable Impact Bombs": "Dayakan Bom Kesan",
- "Enable Triple Bombs": "Dayakan Triple Bombs",
- "Entire Team Must Finish": "Seluruh Pasukan Mesti Selesai",
+ "Enable Triple Bombs": "Bolehkan Triple Bombs",
+ "Entire Team Must Finish": "Seluruh Pasukan Mesti Habiskan",
"Epic Mode": "Mod Epik",
- "Flag Idle Return Time": "Tandakan Masa Pulang Terbiar",
+ "Flag Idle Return Time": "Masa Bendera Auto Pulang",
"Flag Touch Return Time": "Tandakan Masa Pulang Sentuh",
"Hold Time": "Tahan Masa",
"Kills to Win Per Player": "Memukul untuk Menang Setiap Pemain",
@@ -1702,15 +1832,15 @@
"Red": "Merah"
},
"tips": {
- "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Pukulan lari-lompat-putaran yang tepat pada masanya boleh menyepak dalam satu pukulan\ndan mendapat penghormatan sepanjang hayat daripada rakan-rakan anda.",
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Aksi lari-lompat-putaran-tumbuk! yang tepat pada masanya boleh mnghapuskan dalam satu pukulan\ndan mendapat penghormatan sepanjang hayat daripada rakan-rakan anda.",
"Always remember to floss.": "Jangan lupa untuk floss.",
"Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Buat profil pemain untuk diri sendiri dan rakan anda\ndengan penampilan pilihan anda dan bukannya menggunakan nama secara rawak.",
"Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Kotak sumpahan mengubah anda menjadi bom masa yang berdetik.\nSatu-satunya ubat adalah dengan mengambil pek kesihatan.",
- "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Rupa mereka berbeza, tetapi kebolehan watak adalah sama,\njadi pilih sahaja yang mana satu yang paling anda sukai.",
- "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Tolong jangan sombong dengan perisai tenaga itu; anda masih boleh tercampak dari tebing.",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Rupa mereka berbeza, tetapi kebolehan watak adalah hampir sama,\njadi pilih sahaja yang mana satu yang paling anda sukai.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Tolong jangan sombong dengan perisai tenaga tu; anda masih boleh tercampak dari tebing.",
"Don't run all the time. Really. You will fall off cliffs.": "Jangan berlari sepanjang masa. Den koba ni. Anda akan jatuh dari tebing.",
"Don't spin for too long; you'll become dizzy and fall.": "Jangan berputar terlalu lama; anda akan menjadi pening dan jatuh.",
- "Hold any button to run. (Trigger buttons work well if you have them)": "Tahan sebarang butang untuk dijalankan. (Butang pencetus berfungsi dengan baik jika anda memilikinya)",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Tahan sebarang butang untuk lari. (Butang pencetus berfungsi dengan baik jika anda memilikinya)",
"Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Tahan mana-mana butang untuk dijalankan. Anda akan berjalan lebih cepat\ntetapi tidak akan menjadi lebih baik, jadi hati-hati dengan tebing.",
"Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Bom ais tidak begitu kuat, tetapi ia membeku\nsesiapa sahaja yang mereka pukul, menyebabkan mereka terdedah kepada kehancuran.",
"If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Jika seseorang mengangkat anda, tumbuk mereka dan mereka akan melepaskannya.\nIni juga berfungsi dalam kehidupan sebenar.",
@@ -1728,39 +1858,39 @@
"Jump just as you're throwing to get bombs up to the highest levels.": "Lompat semasa anda melontar untuk melontarkan bom sehingga ke tahap tertinggi.",
"Land-mines are a good way to stop speedy enemies.": "Periuk api adalah cara yang baik untuk menghentikan musuh yang pantas.",
"Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Banyak benda boleh diangkat dan dilempar termasuk pemain lain. Melambung\nlawan anda dari tebing boleh menjadi strategi yang berkesan dan memuaskan emosi.",
- "No, you can't get up on the ledge. You have to throw bombs.": "Tidak, anda tidak boleh bangun di atas belebas. Anda perlu baling bom.",
- "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Pemain boleh menyertai dan keluar di tengah-tengah kebanyakan permainan,\ndan anda juga boleh pasang dan cabut pengawal dengan cepat.",
+ "No, you can't get up on the ledge. You have to throw bombs.": "Tidak, anda tidak boleh panjat ke atas tapak tu. Anda perlu baling bom.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Pemain boleh menyertai dan keluar di tengah-tengah kebanyakan permainan,\ndan anda juga boleh pasang dan cabut alat kawalan dengan cepat.",
"Practice using your momentum to throw bombs more accurately.": "Berlatih menggunakan momentum anda untuk melontar bom dengan lebih tepat.",
- "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Tumbukan lebih merosakkan lebih cepat penumbuk anda bergerak,\njadi cuba berlari, melompat dan berputar seperti orang tak siuman.",
- "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Berlari ke sana ke mari sebelum melontar bom\nuntuk 'whiplash' dan membuangnya lebih jauh.",
- "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Keluarkan sekumpulan musuh dengan\nmelancarkan bom berhampiran kotak TNT.",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Tumbukan jadi lagi kuat lebih cepat penumbuk anda bergerak,\njadi cuba berlari, melompat dan berputar seperti orang gila.",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Berlari kebelakang dan kedepan sebelum baling bom\nuntuk 'whiplash' dan membalingnya lebih jauh.",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Kalahkan sekumpulan musuh dengan\nmelancarkan bom berhampiran kotak TNT.",
"The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "Kepala adalah kawasan yang paling terdedah, jadi bom melekit\nkepada orang biasanya bermaksud game-over.",
"This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Tahap ini tidak pernah berakhir, tetapi skor tinggi di sini\nakan memberi anda penghormatan kekal di seluruh dunia.",
- "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Kekuatan lontaran adalah berdasarkan arah yang anda tuju.\nUntuk melemparkan sesuatu, jangan tuju ke sebarang arah.",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Kekuatan lontaran adalah berdasarkan arah yang anda tuju.\nUntuk melemparkan sesuatu dengan lembut di depan anda, jangan tuju ke sebarang arah.",
"Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Bosan dengan runut bunyi? Gantikan dengan pilihan anda sendiri!\nLihat Tetapan->Audio->Runut Bunyi",
- "Try 'Cooking off' bombs for a second or two before throwing them.": "Cuba 'Memasak' bom selama satu atau dua saat sebelum melontarkannya.",
- "Try tricking enemies into killing eachother or running off cliffs.": "Cuba menipu musuh untuk memukul satu sama lain atau melarikan diri dari tebing.",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Cuba 'didihkan' bom selama satu atau dua saat dulu sebelum baling.",
+ "Try tricking enemies into killing eachother or running off cliffs.": "Cuba memperdayakan musuh untuk membunuh satu sama lain atau berlari sampai jatuh tebing.",
"Use the pick-up button to grab the flag < ${PICKUP} >": "Gunakan butang ambil untuk mengambil bendera < ${PICKUP} >",
"Whip back and forth to get more distance on your throws..": "Bergerak ke sana ke mari untuk mendapatkan lebih jarak pada lontaran anda..",
- "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Anda boleh 'membidik' pukulan anda dengan berputar ke kiri atau kanan.\nIni berguna untuk mengetuk orang jahat dari tepi atau menjaringkan gol dalam hoki.",
- "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Anda boleh menilai bila bom akan meletup berdasarkan\nwarna percikan api dari fiusnya: kuning..oren..merah..BOOM.",
- "You can throw bombs higher if you jump just before throwing.": "Anda boleh melontar bom lebih tinggi jika anda melompat sebelum melontar.",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Anda menerima kesakitan apabila anda terhantuk kepala anda pada sesuatu,\njadi cuba untuk tidak memeningkan kepala anda.",
- "Your punches do much more damage if you are running or spinning.": "Tumbukan anda menghasilkan lebih banyak kesakitan jika anda berlari atau berputar."
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Anda boleh 'membidik/aim' pukulan anda dengan berputar ke kiri atau kanan.\nIni berguna untuk mengetuk orang jahat dari tepi atau menjaringkan gol dalam hoki.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Anda boleh menilai bila bom akan meletup berdasarkan\nwarna percikan api dari sumbunya: kuning..oren..merah..BOOOO000M.",
+ "You can throw bombs higher if you jump just before throwing.": "Anda boleh baling bom lebih tinggi kalau anda lompat sebelum melontar.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Anda menerima kesakitan/damage apabila anda terhantuk kepala anda pada sesuatu,\njadi cuba untuk tidak hantukkan kepala anda.",
+ "Your punches do much more damage if you are running or spinning.": "Tumbukan anda memberikan lebih banyak kesakitan/damage jika anda berlari atau berputar."
}
},
- "trophiesRequiredText": "Ini memerlukan sekurang-kurangnya ${NUMBER} trofi.",
+ "trophiesRequiredText": "Ini memerlukan sekurang-kurangnya ${NUMBER} piala.",
"trophiesText": "Piala",
"trophiesThisSeasonText": "Trofi Musim Ini",
"tutorial": {
"cpuBenchmarkText": "Menjalankan tutorial pada kelajuan menggelikan (menguji kelajuan CPU)",
- "phrase01Text": "Hi lombu",
+ "phrase01Text": "Hai awak! Ye, awak!",
"phrase02Text": "Selamat datang ke ${APP_NAME}!",
"phrase03Text": "Berikut ialah beberapa petua untuk mengawal watak anda:",
"phrase04Text": "Banyak perkaro dalam ${APP_NAME} berasaskan FIZIK.",
"phrase05Text": "Contohnya, apabila anda menumbuk,..",
"phrase06Text": "..kerosakan adalah berdasarkan kelajuan penumbuk anda.",
- "phrase07Text": "Nampak taak? Kami tidak bergerak, jadi hampir tidak mencederakan ${NAME}.",
+ "phrase07Text": "Nampak taak? Kite tidak bergerak, jadi hampir tidak mencederakan ${NAME}.",
"phrase08Text": "Sekarang mari melompat dan berputar untuk mendapatkan lebih kelajuan.",
"phrase09Text": "Aah, itu lebih baik.",
"phrase10Text": "Berlari juga membantu.",
@@ -1775,12 +1905,12 @@
"phrase19Text": "Melompat membantu anda melontar lebih tinggi.",
"phrase20Text": "\"Sebat\" bom anda untuk lontaran lebih lama.",
"phrase21Text": "Mengangar bom anda boleh menjadi rumit.",
- "phrase22Text": "Iyam.",
+ "phrase22Text": "Aduhai.",
"phrase23Text": "Cuba \"memasak\" fius selama satu atau dua saat.",
"phrase24Text": "Sting aku! Elok dimasak.",
"phrase25Text": "Dah, itu sahaja.",
"phrase26Text": "Sekarang pergi selamatkan abang Aziz, dekat bot!",
- "phrase27Text": "Ingat latihan anda, dan jangan tingal solat lima waktu",
+ "phrase27Text": "Ingat latihan anda, dan jangan tinggal solat lima waktu",
"phrase28Text": "...selamat maju jaya...",
"phrase29Text": "Semoga berjaya!",
"randomName1Text": "Syed",
@@ -1788,17 +1918,20 @@
"randomName3Text": "Ilham",
"randomName4Text": "Abang Irfan",
"randomName5Text": "Jasini",
- "skipConfirmText": "Taknak tengok tutorial? Ketik atau tekan untuk mengesahkan.",
+ "skipConfirmText": "Taknak tengok tutorial? Tekan untuk mengesahkan.",
"skipVoteCountText": "${COUNT}/${TOTAL} langkau undi",
"skippingText": "ponteng tutorial...",
"toSkipPressAnythingText": "(ketik atau tekan apa-apa untuk melangkau tutorial)"
},
- "twoKillText": "KENTUT BERGANDA!",
+ "twoKillText": "PEMBUNUHAN BERGANDA!",
+ "uiScaleText": "Skala UI",
"unavailableText": "tidak ada",
- "unconfiguredControllerDetectedText": "Pengawal tidak dikonfigurasikan dikesan:",
- "unlockThisInTheStoreText": "Mangga mesti dibuka kunci di kedai.",
+ "unclaimedPrizesText": "Anda mempunyai hadiah yang belum dituntut!",
+ "unconfiguredControllerDetectedText": "Alat kawalan tidak dikonfigurasikan dikesan:",
+ "unlockThisInTheStoreText": "Ini mesti dibuka kunci di kedai.",
"unlockThisProfilesText": "Untuk membuat lebih daripada ${NUM} profil, anda memerlukan:",
"unlockThisText": "Untuk membuka kunci ini, anda memerlukan:",
+ "unsupportedControllerText": "Maaf, alat kawalan \"${NAME}\" tidak disokong.",
"unsupportedHardwareText": "Maaf, perkakasan ini tidak disokong oleh binaan permainan ini.",
"upFirstText": "Bangun dahulu:",
"upNextText": "Seterusnya dalam permainan ${COUNT}:",
@@ -1806,10 +1939,14 @@
"upgradeText": "Naik Taraf",
"upgradeToPlayText": "Buka kunci \"${PRO}\" dalam gedung di dalam permainan untuk mainkan ini.",
"useDefaultText": "Gunakan seperti Biasa",
+ "userSystemScriptsCreateText": "Cipta Skrip Sistem Pengguna",
+ "userSystemScriptsDeleteText": "Padam Skrip Sistem Pengguna",
"usesExternalControllerText": "Permainan ini menggunakan pengawal luaran untuk input.",
"usingItunesText": "Menggunakan Apl Muzik untuk runut bunyi...",
"v2AccountLinkingInfoText": "Untuk memautkan akaun V2, gunakan butang 'Urus Akaun'.",
+ "v2AccountRequiredText": "Ini memerlukan akaun V2. Tingkatkan akaun anda dan cuba lagi.",
"validatingTestBuildText": "Mengesahkan Binaan Ujian...",
+ "viaText": "melalui",
"victoryText": "Kemenangan!",
"voteDelayText": "Anda tidak boleh memulakan undian lain selama ${NUMBER} saat",
"voteInProgressText": "Undian sedang dijalankan.",
@@ -1820,28 +1957,28 @@
"waitingForPlayersText": "menunggu pemain menyertai...",
"waitingInLineText": "Menunggu dalam barisan (parti penuh)...",
"watchAVideoText": "Tonton Video",
- "watchAnAdText": "Tengok iklan Adabi",
+ "watchAnAdText": "Tonton iklan",
"watchWindow": {
"deleteConfirmText": "Padamkan \"${REPLAY}\"?",
"deleteReplayButtonText": "Padam\nMain semula",
- "myReplaysText": "Tayangan Ulang Saya",
- "noReplaySelectedErrorText": "Tiada Main Ulang Dipilih",
+ "myReplaysText": "Tayangan Ulangan Saya",
+ "noReplaySelectedErrorText": "Tiada Tayangan Ulangan Dipilih",
"playbackSpeedText": "Kelajuan Main Semula: ${SPEED}",
- "renameReplayButtonText": "Namakan\nMain semula",
+ "renameReplayButtonText": "Namakan\nTayangan Ulangan",
"renameReplayText": "Namakan semula \"${REPLAY}\" kepada:",
"renameText": "Namakan semula",
"replayDeleteErrorText": "Ralat memadamkan ulang tayang.",
- "replayNameText": "Nama Main Semula",
+ "replayNameText": "Nama Tayangan Ulangan",
"replayRenameErrorAlreadyExistsText": "Tayangan semula dengan nama itu sudah wujud.",
- "replayRenameErrorInvalidName": "Tidak boleh menamakan semula main semula; nama tidak sah.",
- "replayRenameErrorText": "Ralat menamakan main semula.",
- "sharedReplaysText": "Main Semula Dikongsi",
+ "replayRenameErrorInvalidName": "Tidak boleh menamakan semula tayangan; nama tidak sah.",
+ "replayRenameErrorText": "Ralat menamakan tayangan permainan.",
+ "sharedReplaysText": "Tayangan Permainan Yang Dikongsi",
"titleText": "Tonton",
- "watchReplayButtonText": "Tonton\nMain Semula"
+ "watchReplayButtonText": "Tonton Tayangan\nPermainan"
},
- "waveText": "Gelombang musuh",
+ "waveText": "Serangan",
"wellSureText": "Baiklah!",
- "whatIsThisText": "Apakah Ini?",
+ "whatIsThisText": "Abende ni?",
"wiimoteLicenseWindow": {
"titleText": "Hak Cipta DarwiinRemote"
},
@@ -1859,7 +1996,7 @@
},
"winsPlayerText": "${NAME} Menang!",
"winsTeamText": "${NAME} Menang!",
- "winsText": "${NAME} Monang!",
+ "winsText": "${NAME} Menang!",
"workspaceSyncErrorText": "Ralat menyegerakkan ${WORKSPACE}. Lihat log untuk butiran.",
"workspaceSyncReuseText": "Tidak dapat menyegerakkan ${WORKSPACE}. Menggunakan semula versi disegerakkan sebelumnya.",
"worldScoresUnavailableText": "Markah dunia tidak tersedia.",
@@ -1874,5 +2011,6 @@
},
"yesAllowText": "Ya, Benarkan!",
"yourBestScoresText": "Markah Terbaik Anda",
- "yourBestTimesText": "Masa Terbaik Anda"
+ "yourBestTimesText": "Masa Terbaik Anda",
+ "yourPrizeText": "Hadiah anda:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/persian.json b/dist/ba_data/data/languages/persian.json
index 9e2396cc..d35d6413 100644
--- a/dist/ba_data/data/languages/persian.json
+++ b/dist/ba_data/data/languages/persian.json
@@ -1,14 +1,16 @@
{
"accountSettingsWindow": {
- "accountNameRules": "نام نمیتواند اموجی (شکلک) یا نویسه های ویژه داشته باشد",
+ "accountNameRules": "نام حساب کاربری نمیتونه شکلک و نویسه های ویژه داشته باشه جیگر",
"accountProfileText": "(مشخصات حساب)",
- "accountsText": "پروفایل ها",
+ "accountsText": "حساب ها",
"achievementProgressText": "${TOTAL}/${COUNT} :دستاوردها",
"campaignProgressText": "${PROGRESS} :[سخت] پیشروی در بازی اصلی",
- "changeOncePerSeason": ".فقط یکبار در هر فصل میتوانید این مورد را تغییر دهید",
- "changeOncePerSeasonError": "(روز تا فصل بعد ${NUM}) برای تغییر این گزینه باید تا فصل بعد صبر کنید",
+ "changeOncePerSeason": ".فقط یه بار در هر فصل میتونی این مورد رو تغییر بدی",
+ "changeOncePerSeasonError": "(روز تا فصل بعد ${NUM}) برای تغییر مجدد این گزینه باید تا فصل بعد صبر کنی",
+ "createAnAccountText": "یک حساب کاربری ایجاد کنید",
"customName": "نام سفارشی",
- "googlePlayGamesAccountSwitchText": "اگه میخوای اکانت گوگلت رو استفاده کنی\nاستفاده کن اکانت گوگل پلی بازی های دیگت رو",
+ "deleteAccountText": "حذف حساب کاربری",
+ "googlePlayGamesAccountSwitchText": "اگه میخوای از حساب های مختلف گوگل استفاده کنی از بازی های گوگل برای عوض کردن استفاده کن",
"linkAccountsEnterCodeText": "کد را وارد کنید",
"linkAccountsGenerateCodeText": "ایجاد کد",
"linkAccountsInfoText": "(به اشتراک گذاری پیشروی بین دستگاههای مختلف)",
@@ -16,341 +18,348 @@
"linkAccountsInstructionsText": "برای اتصال دو حساب، در یکی از\nآن ها کدی ایجاد کرده \nو آن را در دیگری وارد کنید.\nپیشرفت ها و موجودی ترکیب خواهد شد.\nحساب را وصل کنید ${COUNT} شما می توانید.\n!توجه : فقط حساب هایی را وصل کنید که برای\n شماست\nاگر شما حساب دیگری را وصل کنید، شما توانایی این را ندارید که در یک زمان بازی کنید!\nاین عمل برگشت پذیر نیست، پس \nدقت کنید!",
"linkAccountsText": "متصل کردن حساب ها",
"linkedAccountsText": ":حساب های متصل شده",
- "manageAccountText": "تنظیمات حساب کاربری",
- "nameChangeConfirm": "تغییر کند؟ ${NAME} آیا نام شما به",
- "resetProgressConfirmNoAchievementsText": "همهٔ پیشرویهای شما در بخش همکاری و بالاترین امتیازات\nشما پاک خواهد شد. (به استثنای بلیتهای شما)\nاین کار برگشتپذیر نیست. آیا مطمئنید؟",
- "resetProgressConfirmText": "همهٔ پیشرویها در بخش همکاری، دستاوردها\n.و امتیازات بالای شما پاک خواهد شد\n(به استثنای بلیتهای شما)\nاین کار برگشتپذیر نیست. آیا مطمئنید؟",
+ "manageAccountText": "مدیریت حساب",
+ "nameChangeConfirm": "تغییر کند؟ ${NAME} نام شما به",
+ "resetProgressConfirmNoAchievementsText": "همهٔ پیشرویهای شما در بخش همکاری و امتیازات\nشما پاک خواهد شد. (به استثنای بلیط های شما)\nاین کار برگشتپذیر نیست. آیا مطمئنید؟",
+ "resetProgressConfirmText": "همهٔ پیشرویها در بخش همکاری، دستاوردها\n.و امتیازات بالای شما پاک خواهد شد\n(بلیط های شما تحت تاثیر قرار نخواهد گرفت)\nاین کار برگشت پذیر نیست. آیا مطمئنید؟",
"resetProgressText": "بازنشانی پیشروی",
- "setAccountName": "تنظیم نام حساب",
+ "setAccountName": "تنظیم نام اکانت",
"setAccountNameDesc": "نامی که میخواهید برای این حساب نمایش داده شود را انتخاب کنید\nمیتوانید از یکی از نامهای حسابهای وصلشده استفاده کنید\nیا یک نام جدید بسازید",
- "signInInfoText": "به حسابتان وصل شوید تا بلیت جمع کنید، آنلاین رقابت کنید \n.و پیشرفت خود را با دیگران به اشتراک بگذارید",
+ "signInInfoText": "به حسابتان وصل شوید تا بلیت جمع کنید، آنلاین رقابت کنید \n.و پیشرفت خود را در دستگاه ها به اشتراک بگذارید",
"signInText": "ورود به حساب",
+ "signInWithAnEmailAddressText": "ورود با ایمیل",
"signInWithDeviceInfoText": "(یک حساب خودکار فقط از این دستگاه در دسترس میباشد)",
- "signInWithDeviceText": "وصل شدن با حساب دستگاه",
+ "signInWithDeviceText": "وصل شدن با اکانت دستگاه",
"signInWithGameCircleText": "وصل شدن از طریق حوزهٔ بازی",
- "signInWithGooglePlayText": "ورود با حساب بازیهای گوگل",
+ "signInWithGooglePlayText": "ورود با اکانت گوگل پلی",
"signInWithTestAccountInfoText": "(حساب میراثی؛ از حسابهای دستگاه برای پیشروی استفاده میکند)",
"signInWithTestAccountText": "ورود با حساب آزمایشی",
- "signInWithV2InfoText": "یک حساب کاربری که بر روی تمام سیستم عامل ها کار می کند",
- "signInWithV2Text": "ورود به سیستم با حساب بمب اسکواد",
+ "signInWithText": "با ${SERVICE} وارد شوید",
+ "signInWithV2InfoText": "یک حساب که روی همه سیستم عامل ها کار میکنه",
+ "signInWithV2Text": "ورود به سیستم با حساب ${APP_NAME}",
"signOutText": "خروج از حساب",
- "signingInText": "در حال اتصال…",
+ "signingInText": "در حال ورود...",
"signingOutText": "در حال خروج…",
"ticketsText": "${COUNT} :بلیتها",
- "titleText": "حساب",
+ "titleText": "حساب کاربری",
"unlinkAccountsInstructionsText": "یک حساب را برای جداسازی انتخاب کنید",
"unlinkAccountsText": "جداسازی حسابها",
- "unlinkLegacyV1AccountsText": "لغو پیوند حسابهای قدیمی (V1)",
+ "unlinkLegacyV1AccountsText": "(V1) لغو پیوند حسابهای قدیمی",
"v2LinkInstructionsText": "استفاده از این لینک برای ایجاد یک حساب کاربری و یا ورود به سیستم.",
"viaAccount": "(${NAME} از طریق حساب)",
- "youAreSignedInAsText": ":با این حساب وصل شدهاید"
+ "youAreSignedInAsText": ":با این اکانت وصل شدی"
},
- "achievementChallengesText": "چالشهای دستاورددار",
+ "achievementChallengesText": "چالشهای دستاورد دار",
"achievementText": "دستاورد",
"achievements": {
"Boom Goes the Dynamite": {
- "description": ".نابود کن TNT سه حریف را با",
- "descriptionComplete": "!نابود کردی TNT سه حریف را با",
- "descriptionFull": "از بین ببر TNT با ${LEVEL} سه حریف را در",
- "descriptionFullComplete": "از بین بردی TNT با ${LEVEL} سه حریف را در",
+ "description": "از بین ببر TNT ۳ حریف رو با",
+ "descriptionComplete": "از بین بردی TNT ۳ حریف رو با",
+ "descriptionFull": "از بین ببر TNT در ${LEVEL} ۳ حریف رو با",
+ "descriptionFullComplete": "از بین بردی TNT در ${LEVEL} ۳ حریف رو با",
"name": "!ترکوندی"
},
"Boxer": {
- "description": "بدون استفاده از هیچ بمبی برنده شو",
+ "description": "بدون استفاده از بمب برنده شو",
"descriptionComplete": "بدون استفاده از بمب برنده شدی",
"descriptionFull": "را بدون استفاده از هیچ بمبی کامل کن ${LEVEL} مرحلهٔ",
- "descriptionFullComplete": "را بدون استفاده از بمب کامل کردی ${LEVEL} مرحلهٔ",
- "name": "مشتزن"
+ "descriptionFullComplete": "${LEVEL} رو بدون استفاده از بمب کامل کردی",
+ "name": "بوکسر"
},
"Dual Wielding": {
- "descriptionFull": "(دو دستهٔ بازی وصل کن (سختافزاری یا نرمافزاری",
- "descriptionFullComplete": "(دو دستهٔ بازی وصل کردی (سختافزار یا نرمافزار",
- "name": "دوگانه اداره کردن"
+ "descriptionFull": "(واقعی یا مجازی) ۲ دسته به بازی وصل کن",
+ "descriptionFullComplete": "(واقعی یا مجازی) ۲ دسته به بازی وصل کردی",
+ "name": "دوتایی"
},
"Flawless Victory": {
- "description": "بدون ضربه خوردن برنده شو",
- "descriptionComplete": "بدون ضربه خوردن برنده شدی",
- "descriptionFull": "را بدون ضربه خوردن برنده شو ${LEVEL} مرحلهٔ",
- "descriptionFullComplete": "را بدون ضربه خوردن برنده شدی ${LEVEL} مرحلهٔ",
+ "description": "بدون هیچ آسیبی برنده شو",
+ "descriptionComplete": "بدون هیچ آسیبی برنده شدی",
+ "descriptionFull": "${LEVEL} رو بدون هیچ آسیبی برنده شو",
+ "descriptionFullComplete": "${LEVEL} رو بدون هیچ آسیبی برنده شدی",
"name": "پیروزی بینقص"
},
"Free Loader": {
- "descriptionFull": "یک بازی به سبک تک به تک را با ۲+ بازیکن شروع کن",
- "descriptionFullComplete": "یک بازی تک به تک را با ۲+ بازیکن شروع کردی",
- "name": "بارگذار رایگان"
+ "descriptionFull": "یه بازی تکبهتک رو با +۲ بازیکن راه بنداز",
+ "descriptionFullComplete": "یه بازی تکبهتک رو با +۲ بازیکن راه انداختی",
+ "name": "تکبهتکباز"
},
"Gold Miner": {
- "description": "شش حریف را با مین زمینی نابود کن",
- "descriptionComplete": "شش حریف را با مین زمینی نابود کردی",
- "descriptionFull": "با مین زمینی از بین ببر ${LEVEL} شش حریف را در مرحلهٔ",
- "descriptionFullComplete": "با مین زمینی نابود کردی ${LEVEL} شش حریف را در مرحلهٔ",
- "name": "مینگذار حرفهای"
+ "description": "۶ حریف رو با مین زمینی از بین ببر",
+ "descriptionComplete": "۶ حریف رو با مین زمینی از بین بردی",
+ "descriptionFull": "۶ حریف رو در ${LEVEL} با مین زمینی از بین ببر",
+ "descriptionFullComplete": "۶ حریف رو در ${LEVEL} با مین زمینی از بین بردی",
+ "name": "مینگذار طلایی"
},
"Got the Moves": {
"description": "بدون استفاده از مشت یا بمب برنده شو",
- "descriptionComplete": "بدون استفاده از هیچ مشت یا بمبی برنده شدی",
- "descriptionFull": "را بدون مشت یا بمب برنده شو ${LEVEL} بازی",
- "descriptionFullComplete": "را بدون مشت یا بمب برنده شدی ${LEVEL} بازی",
- "name": "عجب حرکتی"
+ "descriptionComplete": "بدون استفاده از مشت یا بمب برنده شدی",
+ "descriptionFull": "${LEVEL} رو بدون مشت یا بمب برنده شو",
+ "descriptionFullComplete": "${LEVEL} رو بدون مشت یا بمب برنده شدی",
+ "name": "حرکت خفنی زدی"
},
"In Control": {
- "descriptionFull": "(یک دستهٔ بازی وصل کن (سختافزاری یا نرمافزاری",
- "descriptionFullComplete": "(یک دستهٔ بازی وصل کردی (سختافزار یا نرمافزار",
- "name": "تحت کنترل"
+ "descriptionFull": "(واقعی یا مجازی) یه دسته به بازی وصل کن",
+ "descriptionFullComplete": "(واقعی یا مجازی) یه دسته به بازی وصل کردی",
+ "name": "دستهباز"
},
"Last Stand God": {
"description": "۱۰۰۰ امتیاز بگیر",
"descriptionComplete": "۱۰۰۰ امتیاز گرفتی",
- "descriptionFull": "۱۰۰۰ امتیاز بگیر ${LEVEL} در مرحلهٔ",
- "descriptionFullComplete": "۱۰۰۰ امتیاز گرفتی ${LEVEL} در مرحلهٔ",
- "name": "${LEVEL} سَرور"
+ "descriptionFull": "در ${LEVEL} ۱۰۰۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۱۰۰۰ امتیاز گرفتی",
+ "name": "خدای ${LEVEL}"
},
"Last Stand Master": {
"description": "۲۵۰ امتیاز بگیر",
"descriptionComplete": "۲۵۰ امتیاز گرفتی",
- "descriptionFull": "۲۵۰ امتیاز بگیر ${LEVEL} در مرحلهٔ",
- "descriptionFullComplete": "۲۵۰ امتیاز گرفتی ${LEVEL} در مرحلهٔ",
- "name": "${LEVEL} استاد"
+ "descriptionFull": "در ${LEVEL} ۲۵۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۲۵۰ امتیاز گرفتی",
+ "name": "استاد ${LEVEL}"
},
"Last Stand Wizard": {
"description": "۵۰۰ امتیاز بگیر",
"descriptionComplete": "۵۰۰ امتیاز گرفتی",
- "descriptionFull": "۵۰۰ امتیاز بگیر ${LEVEL} در مرحلهٔ",
- "descriptionFullComplete": "۵۰۰ امتیاز گرفتی ${LEVEL} در مرحلهٔ",
- "name": "${LEVEL} جادوگر"
+ "descriptionFull": "در ${LEVEL} ۵۰۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۵۰۰ امتیاز گرفتی",
+ "name": "جادوگر ${LEVEL}"
},
"Mine Games": {
- "description": "سه حریف را با مین زمینی از بین ببر",
- "descriptionComplete": "سه حریف را با مین زمینی از بین بردی",
- "descriptionFull": "با مین از بین ببر ${LEVEL} سه حریف را در مرحلهٔ",
- "descriptionFullComplete": "با مین از بین بردی ${LEVEL} سه حریف را در مرحلهٔ",
- "name": "بازی با مین"
+ "description": "۳ حریف رو با مین زمینی از بین ببر",
+ "descriptionComplete": "۳ حریف رو با مین زمینی از بین بردی",
+ "descriptionFull": "۳ حریف رو در ${LEVEL} با مین زمینی از بین ببر",
+ "descriptionFullComplete": "۳ حریف رو در ${LEVEL} با مین زمینی از بین بردی",
+ "name": "بازیهای مین"
},
"Off You Go Then": {
- "description": "سه حریف رو از زمین بنداز بیرون",
- "descriptionComplete": "سه حریف رو از نقشه انداختی پایین",
- "descriptionFull": "از نقشه بنداز پایین${LEVEL}سه حریف رو در مرحله ی",
- "descriptionFullComplete": "از نقشه انداختی پایین ${LEVEL} سه حریف رو در مرحله ی",
- "name": "حالا میتونی بری"
+ "description": "۳ حریف رو از نقشه بیرون بنداز",
+ "descriptionComplete": "۳ حریف رو از نقشه بیرون انداختی",
+ "descriptionFull": "۳ حریف رو در ${LEVEL} از نقشه بیرون بنداز",
+ "descriptionFullComplete": "۳ حریف رو در ${LEVEL} از نقشه بیرون انداختی",
+ "name": "حالا میتونی بری"
},
"Onslaught God": {
- "description": "پنج هزار امتیاز بگیر",
- "descriptionComplete": "پنج هزار امتیاز گرفتی",
- "descriptionFull": "بگیر${LEVEL}پنج هزار امتیاز در مرحله ی",
- "descriptionFullComplete": "گرفتی${LEVEL}پنج هزار امتیاز در مرحله ی",
- "name": "${LEVEL} خدا"
+ "description": "۵۰۰۰ امتیاز بگیر",
+ "descriptionComplete": "۵۰۰۰ امتیاز گرفتی",
+ "descriptionFull": "در ${LEVEL} ۵۰۰۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۵۰۰۰ امتیاز گرفتی",
+ "name": "خدای ${LEVEL}"
},
"Onslaught Master": {
- "description": "پونصد امتیاز بگیر",
- "descriptionComplete": "پونصد امتیاز گرفتی",
- "descriptionFull": "بگیر ${LEVEL} پونصد امتیاز در مرحله ی",
- "descriptionFullComplete": "گرفتی ${LEVEL} پونصد امتیاز در مرحله ی",
- "name": "${LEVEL} استاد"
+ "description": "۵۰۰ امتیاز بگیر",
+ "descriptionComplete": "۵۰۰ امتیاز گرفتی",
+ "descriptionFull": "در ${LEVEL} ۵۰۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۵۰۰ امتیاز گرفتی",
+ "name": "استاد ${LEVEL}"
},
"Onslaught Training Victory": {
- "description": "تمام موج ها را بگذران",
- "descriptionComplete": "تمام موج ها را گذراندی",
- "descriptionFull": "بگذران ${LEVEL} تمام موج ها رو در مرحله ی",
- "descriptionFullComplete": "گذراندی ${LEVEL} تمام موج ها رو در مرحله ی",
- "name": "${LEVEL} پیروزی"
+ "description": "همهی موجها رو شکست بده",
+ "descriptionComplete": "همهی موجها رو شکست دادی",
+ "descriptionFull": "همهی موجهای ${LEVEL} رو شکست بده",
+ "descriptionFullComplete": "همهی موجهای ${LEVEL} رو شکست دادی",
+ "name": "پیروزی در ${LEVEL}"
},
"Onslaught Wizard": {
- "description": "هزار امتیاز بگیر",
- "descriptionComplete": "هزار امتیاز گرفتی",
- "descriptionFull": "بگیر ${LEVEL} هزار امتیاز در مرحله ی",
- "descriptionFullComplete": "گرفتی ${LEVEL} هزار امتیاز در مرحله ی",
- "name": "${LEVEL} جادوگر"
+ "description": "۱۰۰۰ امتیاز بگیر",
+ "descriptionComplete": "۱۰۰۰ امتیاز گرفتی",
+ "descriptionFull": "در ${LEVEL} ۱۰۰۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۱۰۰۰ امتیاز گرفتی",
+ "name": "جادوگر ${LEVEL}"
},
"Precision Bombing": {
- "description": "بدون گرفتن هیچ جعبه ای برنده شو",
- "descriptionComplete": "بدون گرفتن هیچ جعبه ای برنده شدی",
- "descriptionFull": "رو بدون گرفتن جعبه برنده شو ${LEVEL} مرحله ی",
- "descriptionFullComplete": "رو بدون گرفتن جعبه برنده شدی ${LEVEL} مرحله ی",
- "name": "بمب اندازی دقیق"
+ "description": "بدون گرفتن هیچ قدرتی برنده شو",
+ "descriptionComplete": "بدون گرفتن هیچ قدرتی برنده شدی",
+ "descriptionFull": "${LEVEL} رو بدون گرفتن هیچ قدرتی برنده شو",
+ "descriptionFullComplete": "${LEVEL} رو بدون گرفتن هیچ قدرتی برنده شدی",
+ "name": "بمبباران دقیق"
},
"Pro Boxer": {
- "description": "بدون استفاده از هر بمبی برنده شو",
- "descriptionComplete": "بدون استفاده از هر بمبی برنده شدی",
- "descriptionFull": "رو بدون استفاده از هر بمبی تمام کن ${LEVEL} مرحله ی",
- "descriptionFullComplete": "رو بدون استفاده از هر بمبی تمام کردی ${LEVEL} مرحله",
+ "description": "بدون استفاده از هیچ بمبی برنده شو",
+ "descriptionComplete": "بدون استفاده از هیچ بمبی برنده شدی",
+ "descriptionFull": "${LEVEL} رو بدون استفاده از هیچ بمبی کامل کن",
+ "descriptionFullComplete": "${LEVEL} رو بدون استفاده از هیچ بمبی کامل کردی",
"name": "مشتزن حرفهای"
},
"Pro Football Shutout": {
- "description": "بدون اینکه اجازه بدی حریف امتیاز بگیره برنده شو",
- "descriptionComplete": "بدون اینکه اجازه بدی حریف امتیاز بگیره برنده شدی",
- "descriptionFull": "اجازه نده حریف امتیاز بگیره و برنده شو ${LEVEL} در مرحله",
- "descriptionFullComplete": "اجازه ندادی حریف امتیاز بگیره و برنده شدی ${LEVEL} در مرحله",
- "name": "${LEVEL} امتیاز ندادن"
+ "description": "بدون اینکه بزاری حریف امتیاز بگیره، برنده شو",
+ "descriptionComplete": "بدون اینکه بزاری حریف امتیاز بگیره، برنده شدی",
+ "descriptionFull": "در ${LEVEL} بدون اینکه بزاری حریف امتیاز بگیره، برنده شو",
+ "descriptionFullComplete": "در ${LEVEL} بدون اینکه بزاری حریف امتیاز بگیره، برنده شدی",
+ "name": "دوازهبسته در ${LEVEL}"
},
"Pro Football Victory": {
"description": "برنده شو",
- "descriptionComplete": "! برنده شدی",
- "descriptionFull": "برنده شو ${LEVEL} در مرحله",
- "descriptionFullComplete": "برنده شدی ${LEVEL} در مرحله",
- "name": "${LEVEL} پیروزی"
+ "descriptionComplete": "برنده شدی",
+ "descriptionFull": "در ${LEVEL} برنده شو",
+ "descriptionFullComplete": "در ${LEVEL} برنده شدی",
+ "name": "پیروزی در ${LEVEL}"
},
"Pro Onslaught Victory": {
- "description": "همه ی موج ها را بگذران",
- "descriptionComplete": "همه ی موج ها را گذراندی",
- "descriptionFull": "همه ی موج ها را بگذران ${LEVEL} در مرحله",
- "descriptionFullComplete": "همه ی موج ها را گذراندی ${LEVEL} در مرحله",
- "name": "${LEVEL} پیروزی"
+ "description": "همهی موجها رو شکست بده",
+ "descriptionComplete": "همهی موجها رو شکست دادی",
+ "descriptionFull": "همهی موجهای ${LEVEL} رو شکست بده",
+ "descriptionFullComplete": "همهی موجهای ${LEVEL} رو شکست دادی",
+ "name": "پیروزی در ${LEVEL}"
},
"Pro Runaround Victory": {
- "description": "همه ی موج ها را بگذران",
- "descriptionComplete": "همه ی موج ها را گذراندی",
- "descriptionFull": "همه ی موج ها را بگذران ${LEVEL} در مرحله",
- "descriptionFullComplete": "همه ی موج ها را گذراندی ${LEVEL} در مرحله",
- "name": "${LEVEL} پیروزی"
+ "description": "همهی موجها رو کامل کن",
+ "descriptionComplete": "همهی موجها رو کامل کردی",
+ "descriptionFull": "همهی موجهای ${LEVEL} رو کامل کن",
+ "descriptionFullComplete": "همهی موجهای ${LEVEL} رو کامل کردی",
+ "name": "پیروزی در ${LEVEL}"
},
"Rookie Football Shutout": {
- "description": "برنده شو و اجازه نده حریف امتیاز بگیره",
- "descriptionComplete": "برنده شدی و اجازه ندادی حریف امتیاز بگیره",
- "descriptionFull": "برنده شو و اجازه نده حریف امتیاز بگیره ${LEVEL} در مرحله",
- "descriptionFullComplete": "برنده شدی و اجازه ندادی حریف امتیاز بگیره ${LEVEL} در مرحله",
- "name": "${LEVEL} بدون امتیاز دادن"
+ "description": "بدون اینکه بزاری حریف امتیاز بگیره، برنده شو",
+ "descriptionComplete": "بدون اینکه بزاری حریف امتیاز بگیره، برنده شدی",
+ "descriptionFull": "در ${LEVEL} بدون اینکه بزاری حریف امتیاز بگیره، برنده شو",
+ "descriptionFullComplete": "در ${LEVEL} بدون اینکه بزاری حریف امتیاز بگیره، برنده شدی",
+ "name": "دروازهبسته در ${LEVEL}"
},
"Rookie Football Victory": {
"description": "برنده شو",
"descriptionComplete": "برنده شدی",
- "descriptionFull": "برنده شو ${LEVEL} در مرحله",
- "descriptionFullComplete": "برنده شدی ${LEVEL} در مرحله",
- "name": "${LEVEL} پیروزی"
+ "descriptionFull": "در ${LEVEL} برنده شو",
+ "descriptionFullComplete": "در ${LEVEL} برنده شدی",
+ "name": "پیروزی در ${LEVEL}"
},
"Rookie Onslaught Victory": {
- "description": "همه ی موج ها را بگذران",
- "descriptionComplete": "همه ی موج ها را گذراندی",
- "descriptionFull": "همه ی موج ها را بگذران ${LEVEL} در مرحله",
- "descriptionFullComplete": "همه ی موج ها را گذراندی ${LEVEL} در مرحله",
- "name": "${LEVEL} پیروزی"
+ "description": "همهی موجها رو شکست بده",
+ "descriptionComplete": "همهی موجها رو شکست دادی",
+ "descriptionFull": "همهی موجهای ${LEVEL} رو شکست بده",
+ "descriptionFullComplete": "همهی موجهای ${LEVEL} رو شکست دادی",
+ "name": "پیروزی در ${LEVEL}"
},
"Runaround God": {
- "description": "دو هزار امتیاز بگیر",
- "descriptionComplete": "دو هزار امتیاز گرفتی",
- "descriptionFull": "دو هزار امتیاز بگیر ${LEVEL} در مرحله",
- "descriptionFullComplete": "دو هزار امتیاز گرفتی ${LEVEL} در مرحله",
- "name": "${LEVEL} خدا"
+ "description": "۲۰۰۰ امتیاز بگیر",
+ "descriptionComplete": "۲۰۰۰ امتیاز گرفتی",
+ "descriptionFull": "در ${LEVEL} ۲۰۰۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۲۰۰۰ امتیاز گرفتی",
+ "name": "خدای ${LEVEL}"
},
"Runaround Master": {
- "description": "پانصد امتیاز بگیر",
- "descriptionComplete": "پانصد امتیاز گرفتی",
- "descriptionFull": "پونصد امتیاز بگیر ${LEVEL} در مرحله",
- "descriptionFullComplete": "پونصد امتیاز گرفتی ${LEVEL} در مرحله",
- "name": "${LEVEL} استاد"
+ "description": "۵۰۰ امتیاز بگیر",
+ "descriptionComplete": "۵۰۰ امتیاز گرفتی",
+ "descriptionFull": "در ${LEVEL} ۵۰۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۵۰۰ امتیاز گرفتی",
+ "name": "استاد ${LEVEL}"
},
"Runaround Wizard": {
- "description": "هزار امتیاز بگیر",
- "descriptionComplete": "هزار امتیاز گرفتی",
- "descriptionFull": "هزار امتیاز بگیر ${LEVEL} در مرحله",
- "descriptionFullComplete": "هزار امتیاز گرفتی ${LEVEL} در مرحله",
- "name": "${LEVEL} جادوگر"
+ "description": "۱۰۰۰ امتیاز بگیر",
+ "descriptionComplete": "۱۰۰۰ امتیاز گرفتی",
+ "descriptionFull": "در ${LEVEL} ۱۰۰۰ امتیاز بگیر",
+ "descriptionFullComplete": "در ${LEVEL} ۱۰۰۰ امتیاز گرفتی",
+ "name": "جادوگر ${LEVEL}"
},
"Sharing is Caring": {
- "descriptionFull": "بازی را با یک دوست به اشتراک بگذار",
- "descriptionFullComplete": "بازی را با یک دوست به اشتراک گذاشتی",
- "name": "به اشتراکگذاشتن یهجور مراقبت است"
+ "descriptionFull": "بازی رو با یکی از دوستات به اشتراک بگذار",
+ "descriptionFullComplete": "بازی رو با دوستت به اشتراک گذاشتی",
+ "name": "بازی با دوستا میچسبه"
},
"Stayin' Alive": {
- "description": "بدون از بینرفتن برندهشو",
- "descriptionComplete": "بدون از بینرفتن برنده شدی",
- "descriptionFull": "بدون از بین رفتن شو ${LEVEL} در مرحله",
- "descriptionFullComplete": "بدون از بین رفتن برنده شدی ${LEVEL} در مرحله",
+ "description": "بدون از بین رفتن برنده شو",
+ "descriptionComplete": "بدون از بین رفتن برنده شدی",
+ "descriptionFull": "در ${LEVEL} بدون از بین رفتن شو",
+ "descriptionFullComplete": "در ${LEVEL} بدون از بین رفتن برنده شدی",
"name": "زنده ماندن"
},
"Super Mega Punch": {
- "description": "فقط با یک مشت، یکی رو نابود کن",
- "descriptionComplete": "فقط با یک مشت، یه نفرو کشتی",
- "descriptionFull": "فقط با یک مشت، یه نفر رو نابود کن ${LEVEL} در مرحله",
- "descriptionFullComplete": "فقط با یک مشت، یه نفر رو کشتی ${LEVEL} در مرحله",
- "name": "مشت فوقالعاده"
+ "description": "با یه مشت حریف رو از بین ببر",
+ "descriptionComplete": "با یه مشت حریف رو از بین بردی",
+ "descriptionFull": "در ${LEVEL} با یه مشت حریف رو از بین ببر",
+ "descriptionFullComplete": "در ${LEVEL} با یه مشت حریف رو از بین بردی",
+ "name": "مشت خیلی فوقالعاده"
},
"Super Punch": {
"description": "با یک مشت، نصف جون یه نفر رو ببر",
"descriptionComplete": "با یک مشت، نصف جون یه نفر رو بردی",
- "descriptionFull": "با یک مشت، نصف جون یه نفر رو ببر ${LEVEL} در مرحله",
- "descriptionFullComplete": "با یک مشت، نصف جون یه نفر رو بردی ${LEVEL} در مرحله",
+ "descriptionFull": "در ${LEVEL} با یه مشت نصف جون حریف رو بگیر",
+ "descriptionFullComplete": "در ${LEVEL} با یه مشت نصف جون حریف رو گرفتی",
"name": "مشت فوقالعاده"
},
"TNT Terror": {
- "description": "نابود کنTNT شش حریف رو با",
- "descriptionComplete": "نابود کردی TNT شش حریف رو با",
- "descriptionFull": "نابود کن TNT شش حریف رو با ${LEVEL} در مرحله",
- "descriptionFullComplete": "نابود کردی TNT شش حریف رو با ${LEVEL} در مرحله",
+ "description": "از بین ببر TNT ۶ حریف رو با",
+ "descriptionComplete": "از بین بردی TNT ۶ حریف رو با",
+ "descriptionFull": "از بین ببر TNT در ${LEVEL} ۶ حریف رو با",
+ "descriptionFullComplete": "از بین بردی TNT در ${LEVEL} ۶ حریف رو با",
"name": "TNT وحشت"
},
"Team Player": {
- "descriptionFull": "یه بازی تیمی با چهارتا از دوستات شروع کن",
- "descriptionFullComplete": "یه بازی تیمی با چهارتا از دوستات شروع کردی",
+ "descriptionFull": "یه بازی تیمی رو با +۴ بازیکن راه بنداز",
+ "descriptionFullComplete": "یه بازی تیمی رو با +۴ بازیکن راه انداختی",
"name": "بازیکن تیم"
},
"The Great Wall": {
- "description": "جلوی تک تک حریف ها رو بگیر",
- "descriptionComplete": "جلوی تک تک حریف ها رو گرفتی",
- "descriptionFull": "جلوی تک تک حریف ها رو بگیر ${LEVEL} در مرحله",
- "descriptionFullComplete": "جلوی تک تک حریف ها رو گرفتی ${LEVEL} در مرحله",
+ "description": "جلوی تکتک حریفها رو بگیر",
+ "descriptionComplete": "جلوی تکتک حریفها رو گرفتی",
+ "descriptionFull": "در ${LEVEL} جلوی تکتک حریفها رو بگیر",
+ "descriptionFullComplete": "در ${LEVEL} جلوی تکتک حریفها رو گرفتی",
"name": "دیوار بزرگ"
},
"The Wall": {
"description": "جلوی تک تک حریف ها رو بگیر",
"descriptionComplete": "جلوی تک تک حریف ها رو گرفتی",
- "descriptionFull": "جلوی تک تک حریف ها رو بگیر ${LEVEL} در مرحله",
- "descriptionFullComplete": "جلوی تک تک حریف ها رو بگیر ${LEVEL} در مرحله",
+ "descriptionFull": "در ${LEVEL} جلوی تکتک حریفها رو بگیر",
+ "descriptionFullComplete": "در ${LEVEL} جلوی تکتک حریفها رو گرفتی",
"name": "دیوار"
},
"Uber Football Shutout": {
- "description": "برنده شو و اجازه نده حریف امتیاز بگیره",
- "descriptionComplete": "برنده شدی و اجازه ندادی حریف امتیاز بگیره",
- "descriptionFull": "برنده شو و اجازه نده حریف امتیاز بگیره ${LEVEL} در مرحله",
- "descriptionFullComplete": "برنده شدی و اجازه ندادی حریف امتیاز بگیره ${LEVEL} در مرحله",
- "name": "${LEVEL} بدون امتیاز دادن"
+ "description": "بدون اینکه بزاری حریف امتیاز بگیره، برنده شو",
+ "descriptionComplete": "بدون اینکه بزاری حریف امتیاز بگیره، برنده شدی",
+ "descriptionFull": "در ${LEVEL} بدون اینکه بزاری حریف امتیاز بگیره، برنده شو",
+ "descriptionFullComplete": "در ${LEVEL} بدون اینکه بزاری حریف امتیاز بگیره، برنده شدی",
+ "name": "دروازهبسته در ${LEVEL}"
},
"Uber Football Victory": {
"description": "برنده شو",
"descriptionComplete": "برنده شدی",
"descriptionFull": "برنده شو ${LEVEL} در مرحله",
- "descriptionFullComplete": "برنده شدی ${LEVEL} در مرحله",
- "name": "${LEVEL} پیروزی"
+ "descriptionFullComplete": "در ${LEVEL} برنده شدی",
+ "name": "پیروزی در ${LEVEL}"
},
"Uber Onslaught Victory": {
- "description": "تمام موج ها رو بگذران",
- "descriptionComplete": "تمام موج ها رو گذراندی",
- "descriptionFull": "تمام موج ها رو بگذران ${LEVEL} در مرحله",
- "descriptionFullComplete": "تمام موج ها رو گذراندی ${LEVEL} در مرحله",
- "name": "${LEVEL} پیروزی"
+ "description": "همهی موجها رو شکست بده",
+ "descriptionComplete": "همهی موجها رو شکست دادی",
+ "descriptionFull": "همهی موجهای ${LEVEL} رو شکست بده",
+ "descriptionFullComplete": "همهی موجهای ${LEVEL} رو شکست دادی",
+ "name": "پیروزی در ${LEVEL}"
},
"Uber Runaround Victory": {
- "description": "همه ی موج ها رو بگذران",
- "descriptionComplete": "همه ی موج ها رو گذرونی",
- "descriptionFull": "همه ی موج ها رو بگذران ${LEVEL} در مرحله",
- "descriptionFullComplete": "همه ی موج ها رو گذروندی ${LEVEL} در مرحله",
- "name": "${LEVEL} پیروزی"
+ "description": "همهی موجها رو کامل کن",
+ "descriptionComplete": "همهی موجها رو کامل کردی",
+ "descriptionFull": "همهی موجهای ${LEVEL} رو کامل کن",
+ "descriptionFullComplete": "همهی موجهای ${LEVEL} رو کامل کردی",
+ "name": "پیروزی در ${LEVEL}"
}
},
- "achievementsRemainingText": "دستاورد های باقیمانده:",
+ "achievementsRemainingText": ":دستاوردهای باقیمانده",
"achievementsText": "دستاوردها",
"achievementsUnavailableForOldSeasonsText": "ببخشید، دستاوردهای مخصوص فصل گذشته در دسترس نیستند",
- "activatedText": "${THING} فعال شد.",
+ "activatedText": ".فعال شد ${THING}",
"addGameWindow": {
- "getMoreGamesText": "...بازی های بیشتر",
+ "getMoreGamesText": "بازیهای بیشتر…",
"titleText": "افزودن بازی"
},
+ "addToFavoritesText": "افزودن به مورد علاقهها",
+ "addedToFavoritesText": "اضافه شد '${NAME}' به مورد علاقه ها",
+ "allText": "همه",
"allowText": "اجازه دادن",
"alreadySignedInText": "این حساب کاربری توسط یک دستگاه دیگر در حال استفاده می باشد.\nلطفا از حساب کاربری دیگری استفاده کنید یا بازی را \nدر بقیه دستگاه هایتان ببندید و دوباره امتحان کنید.",
"apiVersionErrorText": "نیاز داریم ${VERSION_REQUIRED} است. به ورژن ${VERSION_USED} بالا نمی آید. هدفش ${NAME} مدل",
+ "applyText": "اعمال کردن",
+ "areYouSureText": "مطمئنی؟",
"audioSettingsWindow": {
- "headRelativeVRAudioInfoText": "(به صورت اتوماتیک فعال شود وقتی که هدفون متصل است)",
+ "headRelativeVRAudioInfoText": "(به صورت خودکار فعال شود وقتی که هدفون متصل است)",
"headRelativeVRAudioText": "(صدای واقعیت مجازی(مخصوص هدفون",
"musicVolumeText": "صدای موسیقی",
"soundVolumeText": "صدای بازی",
- "soundtrackButtonText": "تراک های موسیقی",
+ "soundtrackButtonText": "موسیقیمتن",
"soundtrackDescriptionText": "(موسیقی مورد نظر خود را برای هنگام بازی تعیین کنید)",
"titleText": "صدا"
},
"autoText": "خودکار",
"backText": "بازگشت",
"banThisPlayerText": "این بازیکن را محروم کن",
- "bestOfFinalText": "${COUNT} برترین های نهایی از",
- "bestOfSeriesText": "${COUNT} برترین های مجموعه از",
+ "bestOfFinalText": "بازی - نهایی ${COUNT} برترین در",
+ "bestOfSeriesText": ":بازی ${COUNT} برترین در",
"bestRankText": "است #${RANK} برترین رتبه ی شما",
"bestRatingText": "است ${RATING} بهترین امتیاز شما",
"bombBoldText": "بمب",
@@ -358,25 +367,35 @@
"boostText": "تقویت",
"bsRemoteConfigureInAppText": "در خود برنامه تنظیم شده است ${REMOTE_APP_NAME} برنامه",
"buttonText": "دکمه",
- "canWeDebugText": "آیا مایلید که بازی، اتوماتیک خرابی ها \nو باگ ها را به نویسنده ی بازی گزارش دهد ؟\n\nداده ای که فرستاده میشود حاوی هیچ یک از\n اطلاعات شخصی شما نیست و باعث میشود بازی روان تر شود",
+ "canWeDebugText": "آیا مایلید که ${APP_NAME} اتوماتیک خرابی ها \nو باگ ها را به نویسنده ی بازی گزارش دهد ؟\n\nداده ای که فرستاده میشود حاوی هیچ یک از\n اطلاعات شخصی شما نیست و باعث میشود بازی روان تر شود",
"cancelText": "لغو",
"cantConfigureDeviceText": "قابل تنظیم نیست ${DEVICE} متاسفانه دستگاه",
"challengeEndedText": "این چالش به پایان رسیده است",
- "chatMuteText": "گفتگو رو بیصدا کن",
- "chatMutedText": "گفتگو بیصدا شد",
+ "chatMuteText": "گفتگو رو بیصدا کن",
+ "chatMutedText": "گفتگو بیصدا شد",
"chatUnMuteText": "گفتگو رو صدادار کن",
+ "chests": {
+ "prizeOddsText": "جایزه خفن",
+ "reduceWaitText": "کاهش انتظار",
+ "slotDescriptionText": "این مکان می تواند یک صندوق را نگه دارد\n\nبا بازی سطوح کمپین،\nقرار گرفتن در مسابقات و تکمیل\nدستاوردها صندوق بدست آورید",
+ "slotText": "محل صندوق ${NUM}",
+ "slotsFullWarningText": "هشدار: تمام محل های صندوق شما پر است.\n هر صندوق ای که در این بازی به دست آورید از بین خواهد رفت",
+ "unlocksInText": "باز می کند"
+ },
"choosingPlayerText": "<انتخاب بازیکن>",
+ "claimText": "دریافت",
+ "codesExplainText": "کدها توسط توسعه دهنده ارائه می شوند\n مشکلات حساب را تشخیص و تصحیح کنید.",
"completeThisLevelToProceedText": "برای ادامه باید این مرحله را تمام کنید",
"completionBonusText": "پاداش به اتمام رساندن",
"configControllersWindow": {
- "configureControllersText": "تنظیم دسته ها",
+ "configureControllersText": "پیکربندی دستهها",
"configureKeyboard2Text": "تنظیمات کیبورد بازیکن دوم",
"configureKeyboardText": "تنظیمات کیبورد",
- "configureMobileText": "گوشی همراه بهعنوان دستهٔ بازی",
- "configureTouchText": "تنظیمات صفحه لمسی",
+ "configureMobileText": "گوشی بهعنوان دستهی بازی",
+ "configureTouchText": "پیکربندی صفحهی لمسی",
"ps3Text": "PS3 دسته",
- "titleText": "دسته ها",
- "wiimotesText": "Wii دسته",
+ "titleText": "دستهها",
+ "wiimotesText": "ها Wiimote",
"xbox360Text": "Xbox 360 دسته"
},
"configGamepadSelectWindow": {
@@ -387,7 +406,7 @@
"configGamepadWindow": {
"advancedText": "پیشرفته",
"advancedTitleText": "تنظیمات پیشرفته ی دسته",
- "analogStickDeadZoneDescriptionText": "این گزینه را فعال کنید اگر بازیکن شما بی خودی حرکت میکند",
+ "analogStickDeadZoneDescriptionText": "(این گزینه را فعال کنید اگر بازیکن شما بی خودی تکان میخورد)",
"analogStickDeadZoneText": "دکمه ی آنالوگ منطقه ی مرگ و میر",
"appliesToAllText": "(بر همه دسته ها از این نوع اعمال میشود)",
"autoRecalibrateDescriptionText": "(این گزینه را فعال کنید اگر بازیکن شما با تمام سرعت نمیدود)",
@@ -437,16 +456,17 @@
"actionControlScaleText": "اندازه ی دکمه ها",
"actionsText": "اعمال",
"buttonsText": "کلید ها",
- "dragControlsText": "<دکمه ها را بکشید و موقعیتشان را تعیین کنید>",
+ "dragControlsText": "< دکمهها را بکشید و موقعیتشان را تعیین کنید >",
"joystickText": "دکمه ی حرکت",
"movementControlScaleText": "اندازه ی دکمه ی حرکت",
"movementText": "حرکت",
- "resetText": "بازگرداندن",
+ "resetText": "بازنشانی",
"swipeControlsHiddenText": "مخفی کردن دکمه ی حرکت",
"swipeInfoText": "کمی طول میکشد به این نوع حرکت عادت کنید\nولی راحت باشید و بدون نگاه کردن به آن بازی کنید",
"swipeText": "حرکت جاروبی",
"titleText": "پیکربندی صفحه لمسی"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} میتواند در سیستم تنظیمات برنامه پیکربندی شود.",
"configureItNowText": "همین الآن تنظیم شود ؟",
"configureText": "پیکربندی",
"connectMobileDevicesWindow": {
@@ -454,7 +474,7 @@
"appStoreText": "فروشگاه برنامه",
"bestResultsScale": 0.65,
"bestResultsText": "برای بهترین نتایج شما به یک شبکه وایفای بدون لَگ نیاز دارید\nبرای رفع لگ میتوانید بقیه دستگاههای متصل به وایفای را خاموش کنید\nیا نزدیک مودم بازی کنید و یا با شبکه محلی به شبکه وصل شوید و میزبان\nبازی را مستقیماً وصل کنید",
- "explanationText": "برای استفاده کردن از یک گوشی هوشمند یا تبلت به عنوان دسته ی بی سیم\nرا بر روی آن نصب کنید. هر تعداد دلخواه گوشی ${REMOTE_APP_NAME} برنامه\nتوسط وای فای به صورت رایگان وصل شوند ${APP_NAME} به برنامه",
+ "explanationText": "برای استفاده از یک گوشی هوشمند یا تبلت بهعنوان دستهی بیسیم\nبرنامهی ${REMOTE_APP_NAME} را بر روی آن نصب کنید. هر تعداد دلخواه گوشی\nمیتوانند به ${APP_NAME} روی وایفای بهصورت رایگان وصل شوند.",
"forAndroidText": "برای اندروید",
"forIOSText": "iOS برای",
"getItForText": "را برای آیاواس از فروشگاه برنامههای اپل ${REMOTE_APP_NAME} برنامهٔ\nیا برای اندروید از فروشگاه گوگل پلی و یا فروشگاه برنامهٔ آمازون دریافت کنید.",
@@ -468,7 +488,7 @@
"activenessAllTimeInfoText": "بر روی ردهبندی کلی اِعمال نمیشود.",
"activenessInfoText": "این افزاینده در روزهایی که بازی میکنید افزایش مییابد\nو در روزهایی که بازی نمیکنید کاهش مییابد.",
"activityText": "فعالیت",
- "campaignText": "عملیات",
+ "campaignText": "پیشروی",
"challengesInfoText": "برای کامل کردن مینیبازیها جایزه بگیرید.\n\nهرگاه چالشی را انجام میدهید، جایزهها و\nسختی مراحل افزایش مییابد و هرگاه چالشی\nباطل شود یا به هدر رود، کاهش مییابد.",
"challengesText": "چالشها",
"currentBestText": "بهترین امتیاز کنونی",
@@ -485,9 +505,9 @@
"pointsText": "امتیازات",
"powerRankingFinishedSeasonUnrankedText": "(فصل بدون ردهبندی پایان یافته)",
"powerRankingNotInTopText": "(نفر برتر نیستید ${NUMBER} بین)",
- "powerRankingPointsEqualsText": "= امتیاز ${NUMBER}",
+ "powerRankingPointsEqualsText": "= امتیاز ${NUMBER}",
"powerRankingPointsMultText": "(x ${NUMBER} امتیاز)",
- "powerRankingPointsText": "امتیاز ${NUMBER}",
+ "powerRankingPointsText": "امتیاز ${NUMBER}",
"powerRankingPointsToRankedText": "(امتیاز ${REMAINING} از ${CURRENT})",
"powerRankingText": "رتبهبندی قدرت",
"prizesText": "جایزهها",
@@ -496,7 +516,7 @@
"skipWaitText": "توقف انتظار",
"timeRemainingText": "زمان باقیمانده",
"toRankedText": "تا رتبهبندی شوید",
- "totalText": "در مجموع",
+ "totalText": "مجموع",
"tournamentInfoText": "بر سر امتیاز بیشتر با بازیکنان در\nلیگ خود رقابت کنید.\n\nهنگامی که زمان مسابقه تمام شود، جایزه به\nنفرات برتر با امتیازهای بالا داده میشود.",
"welcome1Text": "خوش آمدید. شما میتوانید ${LEAGUE} به لیگ\nبا گرفتن امتیاز، کامل کردن دستاوردها یا گرفتن جام\n.در مسابقات رتبهٔ خود را بهبود بخشید",
"welcome2Text": "همچنین میتوانید از راههای مشابه بلیت جمعآوری کنید.\nبلیتها میتوانند برای باز کردن بازیکنان جدید، نقشهها، مینیبازیها یا برای ورود در مسابقهها و موارد\nبیشتر مورد استفاده قرار گیرند.",
@@ -510,32 +530,32 @@
"creditsWindow": {
"additionalAudioArtIdeasText": "${NAME} صداهای افزوده، کارهای هنری و ایدههای ابتدایی توسط",
"additionalMusicFromText": "${NAME} موسیقیهای افزوده از",
- "allMyFamilyText": "همهٔ دوستان و خانوادهام که با بازی نسخهٔ آزمایشی کمک کردند",
+ "allMyFamilyText": "همهی دوستان و خانوادهام که با بازی نسخهی آزمایشی کمک کردند",
"codingGraphicsAudioText": "${NAME} کدگذاری، گرافیک و صدا توسط",
- "languageTranslationsText": "مترجمان زبانها:",
+ "languageTranslationsText": "ترجمهگران:",
"legalText": "حقوقی:",
- "publicDomainMusicViaText": "${NAME} موسیقی خاصهٔ مردم از",
- "softwareBasedOnText": "میباشد ${NAME} این نرم افزار در بخش هایی الهام گرفته از",
- "songCreditText": "اجرا شده و ${PERFORMER} توسط ${TITLE} آهنگ\n.می باشد ${COMPOSER}تنظیم شده و نوشته ی${ARRANGER}انتشار یافته، توسط${PUBLISHER}توسط\n${SOURCE} ادب و مهربانی",
+ "publicDomainMusicViaText": "${NAME} موسیقی دامنهعمومی از",
+ "softwareBasedOnText": "میباشد ${NAME} این نرمافزار در بخشهایی الهامگرفته از",
+ "songCreditText": "اجرا شده و ${PERFORMER} توسط ${TITLE} آهنگ\n.میباشد ${COMPOSER} تنظیم شده و نوشتهی ${ARRANGER} انتشار یافته، توسط ${PUBLISHER} توسط\n${SOURCE} ادب و مهربانی",
"soundAndMusicText": "صدا & آهنگ:",
- "soundsText": "(${SOURCE})صداها :",
- "specialThanksText": "تشکر ویژه:",
- "thanksEspeciallyToText": "${NAME} تشکر مخصوص از",
- "titleText": "${APP_NAME} درباره",
+ "soundsText": "صداها (${SOURCE}):",
+ "specialThanksText": "سپاس ویژه:",
+ "thanksEspeciallyToText": "${NAME} سپاس ویژه از",
+ "titleText": "دربارهی ${APP_NAME}",
"whoeverInventedCoffeeText": "هر کسی که قهوه را اختراع کرد!"
},
"currentStandingText": "است #${RANK} رتبه ی کنونی شما",
"customizeText": "...سفارشی کردن",
- "deathsTallyText": "مرگ ${COUNT}",
- "deathsText": "مرگ و میرها",
+ "deathsTallyText": "مرگ ${COUNT}",
+ "deathsText": "مرگها",
"debugText": "رفع اشكال",
"debugWindow": {
"reloadBenchmarkBestResultsText": "تذکر: توصیه میشود که در قسمت تنظیمات>گرافیک، کیفیت بافت را آخر ببرید در هنگام تست این",
- "runCPUBenchmarkText": "را بسنجید CPU عملکرد",
+ "runCPUBenchmarkText": "CPU اجرای سنجش",
"runGPUBenchmarkText": "را بسنجید GPU عملکرد",
- "runMediaReloadBenchmarkText": "بارگذاری رسانه را بسنجید",
+ "runMediaReloadBenchmarkText": "اجرای سنجش بارگذاری رسانه",
"runStressTestText": "اجرای تست استرس",
- "stressTestPlayerCountText": "شمارش بازیکن",
+ "stressTestPlayerCountText": "شمار بازیکنان",
"stressTestPlaylistDescriptionText": "لیست بازی تست استرس",
"stressTestPlaylistNameText": "نام لیست بازی",
"stressTestPlaylistTypeText": "نوع لیست بازی",
@@ -544,12 +564,13 @@
"titleText": "معیارها و تستهای استرس",
"totalReloadTimeText": "مجموع زمان بارگذاری: ${TIME} (برای جزئیات گزارش را مشاهده کنید)"
},
- "defaultGameListNameText": "به صورت پیشفرض ${PLAYMODE} لیست بازی",
- "defaultNewGameListNameText": "من ${PLAYMODE} لیست بازی",
- "deleteText": "پاک کن",
+ "defaultGameListNameText": "پیشفرض ${PLAYMODE} لیست",
+ "defaultNewGameListNameText": "من ${PLAYMODE} لیست",
+ "deleteText": "پاک کردن",
"demoText": "نسخه آزمایشی",
"denyText": "نپذیرفتن",
"deprecatedText": "ناراحت شد",
+ "descriptionText": "شرح",
"desktopResText": "رزولوشن دسکتاپ",
"deviceAccountUpgradeText": "هشدار:\nشما با حساب کاربری دستگاه ثبت نام کرده اید (${NAME}).\nدر بروزرسانی های آینده حساب کاربری دستگاه حذف خواهد شد.\nبه حساب کاربری نسخه 2 بروزرسانی کنید اگر می خواهید روند را ادامه دهید.",
"difficultyEasyText": "آسان",
@@ -560,9 +581,13 @@
"disableRemoteAppConnectionsText": "غیر فعال کردن ارتباطات از راه دور برنامه",
"disableXInputDescriptionText": "اجازه میدهد به بیش از 4 کنترل کننده اما ممکن است کار نکند.",
"disableXInputText": "غیرفعال کردن ورودی ایکس",
+ "disabledText": "غیرفعال",
+ "discardText": "دور انداختن",
+ "discordFriendsText": "دنبال آدمهای جدید میگردید تا با آنها بازی کنید؟\nبه دیسکورد ما بپیوندید و دوستان جدید پیدا کنید!",
+ "discordJoinText": "پیوستن به دیسکورد",
"doneText": "انجام شد",
- "drawText": "برابر",
- "duplicateText": "تکراری",
+ "drawText": "مساوی",
+ "duplicateText": "روگرفتن",
"editGameListWindow": {
"addGameText": "افزودن\nبازی",
"cantOverwriteDefaultText": "نمیشه لیست پیشفرض رو بازنویسی کرد",
@@ -577,27 +602,28 @@
},
"editProfileWindow": {
"accountProfileInfoText": "این نمایۀ ویژه دارای یک نام\n.و تندیس بر اساس حسابتان است\n\n${ICONS}\n\nنمایههای سفارشی بسازید تا از نامها\n.و تندیسهای مختلف استفاده کرده باشید",
- "accountProfileText": "(نمایهٔ حساب)",
+ "accountProfileText": "(نمایهی حساب)",
"availableText": ".در دسترس میباشد \"${NAME}\" نام",
"characterText": "بازیکن",
"checkingAvailabilityText": "...\"${NAME}\" بررسی برای در دسترس بودن نام",
"colorText": "رنگ",
- "getMoreCharactersText": "...بازیکن های بیشتر",
+ "getMoreCharactersText": "بازیکنهای بیشتر...",
"getMoreIconsText": "... تندیس های بیشتر",
"globalProfileInfoText": "ضمانت میشود که نمایههای جهانی بازیکنان، نامهای یکتا\n.دارند. همچنین یک تندیس سفارشی ضمیمهٔ آنها است",
- "globalProfileText": "(نمایهٔ جهانی)",
+ "globalProfileText": "(نمایهی جهانی)",
"highlightText": "بخش درخشان",
"iconText": "تندیس",
"localProfileInfoText": "نمایههای محلی بازیکنان تندیس ندارند و ضمانت نمیشود\nکه نام آنها یکتا باشد. نمایه را جهانی کنید تا\n.نامی یکتا و تندیسی سفارشی داشته باشید",
- "localProfileText": "(نمایهٔ محلی)",
+ "localProfileText": "(نمایهی محلی)",
"nameDescriptionText": "نام بازیکن",
"nameText": "نام",
+ "profileAlreadyExistsText": "نمایه ای با این نام از قبل وجود دارد.",
"randomText": "تصادفی",
"titleEditText": "ویرایش نمایه",
- "titleNewText": "نمایهٔ جدید",
- "unavailableText": ".در دسترس نمیباشد؛ نامی دیگر امتحان کنید «${NAME}» نام",
- "upgradeProfileInfoText": "این کار نام بازیکن شما را در جهان ذخیره میکند\n.و اجازه میدهد که تندیسی سفارشی به آن دهید",
- "upgradeToGlobalProfileText": "ارتقا به نمایهٔ جهانی"
+ "titleNewText": "نمایهی جدید",
+ "unavailableText": ".در دسترس نمیباشد. نامی دیگر امتحان کنید \"${NAME}\"",
+ "upgradeProfileInfoText": "این کار نام بازیکن شما را جهانی رزرو میکند\n.و اجازه میدهد که تندیسی سفارشی به آن بدهید",
+ "upgradeToGlobalProfileText": "ارتقا به نمایهی جهانی"
},
"editSoundtrackWindow": {
"cantDeleteDefaultText": "نمیتوانید صدای پیشفرض را حذف کنید",
@@ -627,23 +653,26 @@
"useMusicFolderText": "پوشه ی فایل های موسیقی"
},
"editText": "ویرایش",
+ "enabledText": "فعال",
"endText": "پایان",
"enjoyText": "لذت ببرید",
- "epicDescriptionFilterText": "در حماسهٔ حرکت آهسته ${DESCRIPTION}",
- "epicNameFilterText": "${NAME} حماسهٔ",
+ "epicDescriptionFilterText": "${DESCRIPTION} در حرکت آهستهی حماسی",
+ "epicNameFilterText": "حماسی ${NAME}",
"errorAccessDeniedText": "دسترسی رد شد",
"errorDeviceTimeIncorrectText": "ساعت گوشیتان ${HOURS} ساعت خطا دارد.\nممکن است مشکل بهوجود بیاید.\nلطفاً ساعت و منطقه زمانی گوشیتان را بررسی کنید.",
"errorOutOfDiskSpaceText": "حافظه جا ندارد",
"errorSecureConnectionFailText": "قادر به ایجاد اتصال ابری امن نیست. عملکرد شبکه ممکن است خراب شود.",
"errorText": "خطا",
"errorUnknownText": "خطای ناشناخته",
- "exitGameText": "؟${APP_NAME} خروج از",
+ "exitGameText": "خروج از ${APP_NAME}؟",
+ "expiredAgoText": "پیش منقضی شد ${T}",
+ "expiresInText": "دیگر منقضی میشود ${T}",
"exportSuccessText": "منتقل شد ${NAME}",
"externalStorageText": "حافظه ی خارجی",
"failText": "باختی",
"fatalErrorText": ".اوه اوه؛ فایلی خراب یا گم شده\nلطفا برنامه را از اول نصب کنید یا\n.در تماس باشید ${EMAIL} برای کمک با",
"fileSelectorWindow": {
- "titleFileFolderText": "یه فایل یا پوشه را انتخاب نمایید",
+ "titleFileFolderText": "یک فایل یا پوشه را انتخاب نمایید",
"titleFileText": "یک فایل انتخاب نمایید",
"titleFolderText": "یک پوشه انتخاب نمایید",
"useThisFolderButtonText": "استفاده از این پوشه"
@@ -652,69 +681,72 @@
"finalScoreText": "امتیاز نهایی",
"finalScoresText": "امتیازهای نهایی",
"finalTimeText": "زمان نهایی",
- "finishingInstallText": "...در حال اتمام نصب؛ یه لحظه",
+ "finishingInstallText": "در حال اتمام نصب؛ یه لحظه...",
"fireTVRemoteWarningText": "برای یک تجربه ی بهتر، از دسته ها*\n'${REMOTE_APP_NAME}' یا برنامه\nبر روی گوشی های هوشمند یا تبلت\n.خود استفاده کنید",
- "firstToFinalText": "فینال ${COUNT} اولین در",
- "firstToSeriesText": "مجموعه ${COUNT} اولین در",
- "fiveKillText": "!!پنج نفر رو کشتی",
+ "firstToFinalText": "نهایی ${COUNT} اول تا",
+ "firstToSeriesText": "مجموعهبازی ${COUNT} اول تا",
+ "fiveKillText": "!!!پنج نفر رو کشتی",
"flawlessWaveText": "!یک موج بدون عیب",
"fourKillText": "!!چهار نفر رو نابود کردی",
"friendScoresUnavailableText": "امتیاز دوستان در دسترس نیست",
"gameCenterText": "مرکز بازی",
"gameCircleText": "GameCircle",
- "gameLeadersText": "نفر برتر بازی ${COUNT}",
+ "gameLeadersText": "${COUNT} پیشتازان بازی",
"gameListWindow": {
"cantDeleteDefaultText": "نمیتوانید لیست بازی پیش فرض را حذف کنید",
- "cantEditDefaultText": "نمیتوانید لیست بازی پیش فرض را دست کاری کنید. آن را کپی کنید یا یه لیست جدید بسازید",
+ "cantEditDefaultText": "نمیتوانید لیست بازی پیشفرض را دست کاری کنید. آن را کپی کنید یا یک لیست جدید بسازید.",
"cantShareDefaultText": "شما نمیتونید لیست بازی پیش فرض رو به اشتراک بگذارید",
"deleteConfirmText": "؟ \"${LIST}\" حذف",
"deleteText": "حذف\nلیست بازی",
"duplicateText": "کپی کردن\nلیست بازی",
"editText": "ویرایش\nلیست بازی",
"newText": "لیست بازی\nجدید",
+ "pointsToWinText": "امتیاز برای برنده شدن",
+ "seriesLengthText": "طول مجموعهبازی",
"showTutorialText": "نمایش آموزش",
- "shuffleGameOrderText": "ترتیب تصادفی بازی ها",
- "titleText": "${TYPE} تنظیم لیست های"
+ "shuffleGameOrderText": "ترتیب تصادفی بازیها",
+ "titleText": "سفارشیسازی لیستهای ${TYPE}"
},
"gameSettingsWindow": {
"addGameText": "افزودن بازی"
},
- "gamesToText": "${LOSECOUNT} بازی به ${WINCOUNT}",
+ "gamesToText": "${LOSECOUNT} بازی به ${WINCOUNT}",
"gatherWindow": {
"aboutDescriptionLocalMultiplayerExtraText": "فراموش نکنید: هردستگاه در یک گروه میتواند بیشتر\n.از یک بازیکن داشته باشد اگر به اندازه ی کافی دسته دارید",
- "aboutDescriptionText": ".از این صفحات برای تشکیل یک گروه استفاده کنید\n\nگروه به شما این امکان را میدهد که بازی ها و مسابقات\n.را با دوستانتان بر روی گوشی های متفاوت بازی کنید\n\nدر گوشه ی بالای سمت راست استفاده کنید ${PARTY}از دکمه ی\n.تا با گروه چت و تعامل کنید\n(را هنگامی که در منو هستید فشار دهید${BUTTON} با دسته، دکمه ی)",
+ "aboutDescriptionText": ".از این زبانهها برای تشکیل یک پارتی استفاده کنید\n\nپارتی به شما این امکان را میدهد که بازیها و مسابقات\n.را با دوستانتان بر روی گوشیهای متفاوت بازی کنید\n\nدر گوشهی بالای سمت راست استفاده کنید ${PARTY} از دکمهی\n.تا با پارتی چت و تعامل کنید\n(را هنگامی که در منو هستید فشار دهید ${BUTTON} با دسته، دکمهی)",
"aboutText": "درباره",
- "addressFetchErrorText": "<خطا در اتصال به آدرس>",
- "appInviteMessageText": "${APP_NAME}بلیط فرستاده در برنامه ی ${COUNT}برای شما ${NAME}",
+ "addressFetchErrorText": "<خطا در اتصال به آدرس>",
+ "appInviteMessageText": "${APP_NAME}بلیت فرستاده در برنامه ی ${COUNT}برای شما ${NAME}",
"appInviteSendACodeText": "برایشان یه کد ارسال کن",
"appInviteTitleText": "${APP_NAME} دعوت به",
"bluetoothAndroidSupportText": "(کار میکنه با هر دستگاه اندرویدی که از بلوتوث پشتیبانی میکنه)",
"bluetoothDescriptionText": "میزبان/مهمان شدن یک گروه با بلوتوث :",
"bluetoothHostText": "میزبانی با بلوتوث",
- "bluetoothJoinText": "ملحق شدن با بلوتوث",
+ "bluetoothJoinText": "پیوستن با بلوتوث",
"bluetoothText": "بلوتوث",
"checkingText": "...در حال چک کردن",
"copyCodeConfirmText": "کد در کلیپ بورد کپی شد.",
"copyCodeText": "کپی کردن کد",
- "dedicatedServerInfoText": "برای نتیجه بهتر،یه سرور اختصاصی بزنید.به سایت زیر برین bombsquadgame.com/serverتا بفهمین چطوری",
+ "dedicatedServerInfoText": ".را ببینید bombsquadgame.com/server برای نتیجهی بهتر، یک سرور اختصاصی بالا بیاورید. برای یاد گرفتن چگونگی کار",
+ "descriptionShortText": "از بخش شبکه با دوستان برای تشکیل پارتی استفاده کنید.",
"disconnectClientsText": "بازیکن را از ${COUNT} این کار ارتباط\nبازی قطع میکند. مطمئنید؟",
"earnTicketsForRecommendingAmountText": ".بلیط خواهند گرفت اگر این بازی را امتحان کنند ${COUNT} دوستانتان\n(بلیط به ازای هر کدامشان میگیرید${YOU_COUNT}و شما هم)",
"earnTicketsForRecommendingText": "به اشتراک گذاری بازی\nبرای بلیط های رایگان",
"emailItText": "ایمیلش کن",
"favoritesSaveText": "ذخیره بهعنوان مورد علاقه",
"favoritesText": "مورد علاقهها",
- "freeCloudServerAvailableMinutesText": "سرور ابری رایگان بعدی در عرض ${MINUTES} دقیقه در دسترس است.",
+ "freeCloudServerAvailableMinutesText": ".دقیقهی دیگر در دسترس است ${MINUTES} سرور ابری رایگان بعدی",
"freeCloudServerAvailableNowText": "!سرور ابری رایگان در دسترس است",
"freeCloudServerNotAvailableText": ".سرورهای ابری رایگان در دسترس نیست",
"friendHasSentPromoCodeText": "${NAME}از طرف ${APP_NAME}بلیطِ بازی ${COUNT}",
"friendPromoCodeAwardText": ".بلیط خواهید گرفت هر بار که استفاده شود${COUNT}شما",
"friendPromoCodeExpireText": ".ساعت منقضی میشود و تنها بر روی بازیکنان جدید کار میکند${EXPIRE_HOURS}این کد در",
- "friendPromoCodeInstructionsText": ".را باز کنید و به قسمت تنظیمات>پیشرفته>وارد کردن کد بروید${APP_NAME}برای استفاده از کد، برنامه\n.سر بزنید تا لینک دانلود بازی برای سیستم عامل های مختلف بازی را بگیرید BombSquadgame.com به سایت",
+ "friendPromoCodeInstructionsText": ".را باز کنید و به قسمت تنظیمات>پیشرفته>فرستادن اطلاعات بروید${APP_NAME}برای استفاده از کد، برنامه\n.سر بزنید تا لینک دانلود بازی برای سیستم عامل های مختلف بازی را بگیرید BombSquadgame.com به سایت",
"friendPromoCodeRedeemLongText": ".بلیط رایگان به دست آورند${COUNT}نفر میتوانند از این کد استفاده کنند تا${MAX_USES}",
"friendPromoCodeRedeemShortText": ".بلیط در بازی بگیرید${COUNT}با این کد میتوانید",
- "friendPromoCodeWhereToEnterText": "(در بخش تنظیمات>پیشرفته>وارد کردن کد)",
+ "friendPromoCodeWhereToEnterText": "(\"در \"تنظیمات > پیشرفته > فرستادن اطلاعات)",
"getFriendInviteCodeText": "گرفتن کد برای دعوت دوستان",
- "googlePlayDescriptionText": ":دعوت از بازیکنان گوگل پلی برای ملحق شدن به گروه شما",
+ "googlePlayDescriptionText": ":دعوت از بازیکنان گوگل پلی برای پیوستن به پارتی شما",
"googlePlayInviteText": "دعوت",
"googlePlayReInviteText": "بازیکن از گوگل پلی در گروه شما هستند${COUNT}\n.که ارتباطشان قطع میشود اگر یک دعوت جدید را شروع کنید\n.آن ها را هم در دعوت جدید، ضمیمه کنید",
"googlePlaySeeInvitesText": "دیدن دعوت ها",
@@ -724,56 +756,57 @@
"hostingUnavailableText": "میزبانی در دسترس نیست",
"inDevelopmentWarningText": ":تذکر\n\n.بازی شبکهای یک ویژگی جدید و درحال گسترشه\nاکنون شدیداً توصیه میشود همه بازیکنان\n.در یک شبکه وایفای مشترک باشند",
"internetText": "اینترنت",
- "inviteAFriendText": "رفیقات این بازی رو ندارند؟ دعوتشون کن\n.بلیط رایگان بگیرند${COUNT}بیان بازی کننده و",
+ "inviteAFriendText": "دوستات این بازی رو ندارند؟ دعوتشون کن\n.تا بلیت رایگان دریافت کنند${COUNT} بیان بازی کنن و",
"inviteFriendsText": "دعوت دوستان",
- "joinPublicPartyDescriptionText": "پیوستن به سرور های عمومی",
- "localNetworkDescriptionText": "به یک سرور دیگر از طریق LAN , Bluetooth , etc بپیوندید",
+ "joinPublicPartyDescriptionText": "پیوستن به یک سرور عمومی",
+ "localNetworkDescriptionText": "(.وایفای، بلوتوث، و غیره) به یه پارتی نزدیکت وصل شو",
"localNetworkText": "شبکه محلی",
- "makePartyPrivateText": "گروه من رو از عمومی خارج کن",
- "makePartyPublicText": "گروه بازی من رو عمومی کن",
- "manualAddressText": "آدرس",
+ "makePartyPrivateText": "پارتی من را خصوصی کن",
+ "makePartyPublicText": "پارتی من را عمومی کن",
+ "manualAddressText": "نشانی",
"manualConnectText": "وصل شدن",
- "manualDescriptionText": ":ملحق شدن به یک گروه با آدرس",
+ "manualDescriptionText": ":پیوستن به یک پارتی با نشانی",
"manualJoinSectionText": "پیوستن با نشانی",
- "manualJoinableFromInternetText": ":کسی میتوانداز طریق اینترنت به شما ملحق شود؟",
+ "manualJoinableFromInternetText": "کسی میتواند از طریق اینترنت به شما ملحق شود؟:",
"manualJoinableNoWithAsteriskText": "خیر*",
"manualJoinableYesText": "بلی",
- "manualRouterForwardingText": "را به آدرس محلی بفرستد${PORT} برای حل این مشکل، روتر خود را تنظیم کنید تا یو دی پی پورت",
+ "manualRouterForwardingText": "را به نشانی محلی شما بفرستد UDP ${PORT} *برای حل این مشکل، روتر خود را تنظیم کنید تا درگاه",
"manualText": "بطور دستی",
- "manualYourAddressFromInternetText": ":آدرس شما در اینترنت",
- "manualYourLocalAddressText": ":آدرس محلی شما",
+ "manualYourAddressFromInternetText": "نشانی شما در اینترنت:",
+ "manualYourLocalAddressText": "نشانی محلی شما:",
"nearbyText": "افراد نزدیک",
"noConnectionText": "<اتصال برقرار نیست>",
+ "noPartiesAddedText": "هیچ پارتیای اضافه نشدهاست",
"otherVersionsText": "(نسخه های دیگر)",
- "partyCodeText": "کد گروه",
+ "partyCodeText": "کد پارتی",
"partyInviteAcceptText": "پذیرفتن",
"partyInviteDeclineText": "نپذیرفتن",
"partyInviteGooglePlayExtraText": "(صفحه گوگلپلی را در صفحه \"شبکه با دوستان\" ببینید)",
"partyInviteIgnoreText": "نادیده گرفتن",
"partyInviteText": "شما را دعوت کرده${NAME} \nتا به گروهشان ملحق شوید",
- "partyNameText": "نام گروه",
- "partyServerRunningText": ".سرور گروه شما در حال اجراست",
+ "partyNameText": "نام پارتی",
+ "partyServerRunningText": ".سرور پارتی شما در حال اجراست",
"partySizeText": "اندازه دسته",
"partyStatusCheckingText": "در حال چک کردن وضعیت...",
"partyStatusJoinableText": "گروه شما حالا دیگه از طریق اینترنت قابل اتصال برای بقیه است.",
"partyStatusNoConnectionText": "عدم توانایی برقراری ارتباط با سرور",
"partyStatusNotJoinableText": "گروه شما قابل اتصال از طریق اینترنت نیست",
- "partyStatusNotPublicText": "گروه بازی شما در اینترنت عمومی نیست",
+ "partyStatusNotPublicText": "پارتی شما عمومی نیست",
"pingText": "پینگ",
"portText": "درگاه",
"privatePartyCloudDescriptionText": ".گروههای خصوصی بر روی سرورهای ابری اختصاصی اجرا می شوند; و نیازی به پیکربندی روتر/مودم نیست",
- "privatePartyHostText": "میزبانی گروه خصوصی",
- "privatePartyJoinText": "ملحق شدن به سرور خصوصی",
+ "privatePartyHostText": "میزبانی پارتی خصوصی",
+ "privatePartyJoinText": "پیوستن به سرور خصوصی",
"privateText": "خصوصی",
"publicHostRouterConfigText": "این ممکن است نیاز به پیکربندی انتقال پورت در روتر شما داشته باشد. برای یک گزینه آسانتر ، یک سرور خصوصی برگزار کنید.",
"publicText": "عمومی",
"requestingAPromoCodeText": "...درخواست یک کد",
"sendDirectInvitesText": "ارسال دعوت مستقیم",
"shareThisCodeWithFriendsText": ":اشتراک این کد با دوستان",
- "showMyAddressText": "آدرس من رو نشون بده",
+ "showMyAddressText": "نشانی من رو نشون بده",
"startHostingPaidText": "${COST} میزبانی اکنون برای",
"startHostingText": "میزبان",
- "startStopHostingMinutesText": "شما می توانید میزبانی رایگان را برای ${MINUTES} دقیقه دیگر شروع کرده و متوقف کنید.",
+ "startStopHostingMinutesText": ".دقیقهی دیگر شروع کرده و متوقف کنید ${MINUTES} میتوانید میزبانی رایگان را تا",
"stopHostingText": "میزبانی را متوقف کنید",
"titleText": "شبکه با دوستان",
"wifiDirectDescriptionBottomText": "داشته باشند حتماً میتونید ازش استفاده کنندWi-Fi Direct اگر دستگاه هاتون قابلیت\nو به یکدیگر وصل شوند.وقتی که دستگاه ها بهم وصل شدند میتوانید اینجا در صفحه ی\nشبکه محلی گروه تشکیل دهید.دقیقاً مثل وصل شدن از طریق وای فای معمولی\n\n.هم میزبان شود${APP_NAME}میزبان میشود درWi-Fi Directبرای گرفتن بهترین نتیجه،کسی که در",
@@ -797,7 +830,7 @@
"ticketPack4Text": "پک خیلی بزرگ بلیط",
"ticketPack5Text": "پک ماموتی بلیط",
"ticketPack6Text": "پک نهایی بلیط",
- "ticketsFromASponsorText": "در ازای ${COUNT} بلیت\nیک آگهی ببینید",
+ "ticketsFromASponsorText": "در ازای ${COUNT} بلیط\nیک آگهی ببینید",
"ticketsText": "بلیط${COUNT}",
"titleText": "بلیط بگیرید",
"unavailableLinkAccountText": ".ببخشید،خرید به وسیله ی این دستگاه در دسترس نمیباشد\nمیتوانید حسابتان بر روی این دستگاه را به حسابی در دستگاهی\n.دیگر متصل کنید و آنجا خرید خود را انجام دهید",
@@ -807,6 +840,12 @@
"youHaveShortText": "دارید ${COUNT} شما",
"youHaveText": ".بلیط دارید ${COUNT} شما"
},
+ "goldPass": {
+ "desc1InfTokensText": "توکن بینهایت",
+ "desc2NoAdsText": "بدون تبلیغات",
+ "desc3ForeverText": "برای همیشه",
+ "goldPassText": "گلد پس"
+ },
"googleMultiplayerDiscontinuedText": "متأسفیم ، سرویس چند نفره Google دیگر در دسترس نیست.\nمن در اسرع وقت در حال جایگزینی هستم.\nتا آن زمان ، لطفاً روش اتصال دیگری را امتحان کنید.",
"googlePlayPurchasesNotAvailableText": "خرید های گوگلپلی در دسترس نیستند.\nاحتمالا باید برنامهی استور خود را بروزرسانی کنید.",
"googlePlayServicesNotAvailableText": ".سرویس گوگل پلی در دسترس نیست\n.بعضی عملکرد های برنامه ممکن غیرفعال باشند",
@@ -815,10 +854,12 @@
"alwaysText": "همیشه",
"fullScreenCmdText": "تمام صفحه (Cmd-F)",
"fullScreenCtrlText": "تمام صفحه (Ctrl-F)",
+ "fullScreenText": "تمامصفحه",
"gammaText": "گاما",
"highText": "زیاد",
"higherText": "بالاتر",
"lowText": "کم",
+ "maxFPSText": "حداکثر FPS",
"mediumText": "معمولی",
"neverText": "هرگز",
"resolutionText": "رزولوشن",
@@ -830,20 +871,20 @@
"visualsText": "کیفیت تصویر"
},
"helpWindow": {
- "bombInfoText": "- بمب -\nقوی تر از مشته امامیتونه\n.برای خودتون هم خطرناک باشه\nدر بهترین زمان ممکن قبل از اینکه\n.در دست خودتون بترکه، پرتش بدید",
- "canHelpText": "میتونه به شما کمک کنه${APP_NAME}",
- "controllersInfoText": "بازی کنید و یا${APP_NAME}میتوانید توسط شبکه با دوستانتان\n.روی یک دستگاه بازی کنید اگر به اندازه ی کافی دسته دارید\nاز این تنوع پشتیبانی میکند؛ شما حتی میتوانید${APP_NAME}\nاز گوشی های هوشمند به عنوان دسته استفاده کنید از طریق برنامه\n.برای اطلاعات بیشتر به تنظیمات>کنترلرها بروید.${REMOTE_APP_NAME}",
+ "bombInfoText": "- بمب -\nقویتر از مشته، ولی میتونه\nبرای خودتون هم خطرناک باشه.\nدر بهترین زمان ممکن قبل از اینکه\nتوی دست خودتون بترکه، پرتش کنید.",
+ "canHelpText": "${APP_NAME} میتونه کمک کنه.",
+ "controllersInfoText": "میتونی روی یه شبکه یا اگه به اندازه کافی دسته\nدارید، روی یه دستگاه با دوستات ${APP_NAME} بازی کنی.\n${APP_NAME} از کنترلرهای مختلفی پشتیبانی میکنه. حتی میتونی گوشی رو\nبهعنوان دسته از طریق برنامهی ${REMOTE_APP_NAME} استفاده کنی.\nبرای اطلاعات بیشتر تنظیمات -> کنترلرها رو ببینید.",
"controllersInfoTextRemoteOnly": "شما میتونید ${APP_NAME} رو همراه دوستانتان به صورت اینترنتی ، یا\nبا استفاده از نرمافزار '${REMOTE_APP_NAME}' گوشیتون رو\nبه دسته بازی تبدیل کنید تا همه با هم در یک گوشی بازی کنید.",
"controllersText": "کنترلرها",
- "controlsSubtitleText": ":شما چندتا حرکت اساسی داره ${APP_NAME} بازیکن",
+ "controlsSubtitleText": "کاراکتر ${APP_NAME} شما چندتا حرکت اساسی داره:",
"controlsText": "کنترلها",
"devicesInfoText": "نسخه وی آر ${APP_NAME} میتونه با شبکه با\n نسخه معمولی بازی کنه، پس تلفن یا تبلت \nیا کامپیوتر اضافیتونو آماده کنید و بازیو شروع کنید.\n حتی وقتی بخواین فقط کاری کنین که چن نفر از \nبیرون بتونن بازیو تماشا کنن هم بکار میاد.",
"devicesText": "دستگاهها",
- "friendsGoodText": "داشتن چنتا ازینا خیلی خوبه. ${APP_NAME} حالش بیشتره وقتی با چن نفر\nبازی بشه و میتونه همزمان تا 8 نفر ساپورت کنه که این قضیه ما رو میبره سمت:",
+ "friendsGoodText": "داشتن چندتا از اینا خوبه. ${APP_NAME} حالش بیشتره وقتی با چند نفر\nبازی بشه و میتونه همزمان تا ۸ نفر رو پشتیبانی کنه که این قضیه ما رو میبره به سمت:",
"friendsText": "دوستان",
- "jumpInfoText": "پرش\nبرای پریدن ازاین دکمه کمک بگیرید\n همچنین پریدن قبل از پرتاب بمب و\nهمزمان بامشت بسیار در بازی بکارمیره",
+ "jumpInfoText": "- پرش -\nپرش برای عبور از شکافهای کوچیک،\nپرتاب کردن چیزها به بالاتر، و برای \nبیان احساس شادی استفاده میشه.",
"orPunchingSomethingText": "یا بهش مشت بزنی یا از یه بلندی پرتش کنی و توی راه که داره پرت میشه با یه بمب چسبونکی بترکونیش.",
- "pickUpInfoText": "بلند کردن\nمیتونید هر فرد یا بمب یا هر چیزی رو\nاز زمین بلند و پرتاب کنید,حتی \nمیتونید بازیکنان رو از زمین بیرون بندازین",
+ "pickUpInfoText": "- بلند کردن -\nپرچم، دشمن یا هر چیزی رو\nمیتونید از زمین بلند و پرتاب کنید.\nواسه انداختنش دوباره دکمه رو باید بزنید.",
"powerupBombDescriptionText": "به شما اجازه پرتاب هر بار سه بمب\nرو پشت سر هم همزمان میده",
"powerupBombNameText": "سه بمب",
"powerupCurseDescriptionText": "بهتره اینو نگیرین چون طی چند ثانیه اگه\nبه جعبه درمان نرسین منفجر میشین",
@@ -861,31 +902,32 @@
"powerupShieldDescriptionText": "سپر محافظ دورتون قرار میگیره\nو ضربه وانفجار ها روتون کم اثر میشه",
"powerupShieldNameText": "سپر محافظ",
"powerupStickyBombsDescriptionText": "این بمب ها رو به سمت هر چی پرتاب \nکنی میچسبن به اون تا لحظه ی انفجار",
- "powerupStickyBombsNameText": "بمب های چسبنده",
- "powerupsSubtitleText": "البته هیچ بازی کامل نیست بدون استفاده از بسته های ویژه",
- "powerupsText": "بسته های ویژه",
- "punchInfoText": "مشت\nبرا ضربه به حریف از این کلید \nاستفاده کنید ضربه مشت های قوی تر\nهمزمان با پرش و سرعت و چرخش هستن",
- "runInfoText": "حرکت\nبرا حرکت از جهت های جوی استیک استفاده کنید و برای حرکت سریع تر میتونید جهت ها رو همزمان با یک کلید دیگه بکار ببرید\nبرای پرتاب بمب ها به مسافت بیشتر همزمان با حرکت قابل انجامه ضربه مشت ها همزمان با حرکت هم موثرتر هستن",
+ "powerupStickyBombsNameText": "بمب چسبنده",
+ "powerupsSubtitleText": ":البته هیچ بازیای کامل نیست بدون استفاده از نیروزاها",
+ "powerupsText": "نیروزاها",
+ "punchInfoText": "- مشت -\nبه هر اندازه که توی مشت زدن بیشتر\nبچرخید و حرکت کنید، ضربه مشتتون قویتره.\nپس موقع مشت زدن بپرید و بچرخید و بدویید.",
+ "runInfoText": "- حرکت -\n.هر دکمهای رو برای دویدن میتونی نگه داری. البته یادت نره که دکمهی جهت رو هم در کنارش بگیری\n.دویدن شما رو سریعتر به یه جایی میرسونه، اما چرخیدن رو سخت میکنه. پس مراقب صخرهها باش",
"someDaysText": "بعضی روزا دوس داری مشت بزنی یه جایی. یا یه چیزیو بزنی بترکونی.",
- "titleText": "${APP_NAME} راهنمایی",
- "toGetTheMostText": "To get the most out of this game, you'll need:",
- "welcomeText": "!خوش آمدید ${APP_NAME} به"
+ "titleText": "راهنمای ${APP_NAME}",
+ "toGetTheMostText": ":برای اینکه بیشترین لذت را از این بازی ببرید، به این موردها نیاز دارید",
+ "welcomeText": "به ${APP_NAME} خوش آمدید!"
},
"holdAnyButtonText": "<نگه داشتن هر دکمه>",
"holdAnyKeyText": "<نگه داشتن هر کلید>",
- "hostIsNavigatingMenusText": "- ${HOST} مدیر تغییر منو ها در بازیست -",
+ "hostIsNavigatingMenusText": "- مدیر تغییر منوها در بازی است ${HOST} -",
"importPlaylistCodeInstructionsText": "از کدی که در ادامه است برای وارد کردن این لیست بازی در جای دیگر استفاده کنید:",
"importPlaylistSuccessText": "لیست بازی شد ${TYPE} وارد '${NAME}'",
"importText": "وارد کردن",
"importingText": "...وارد کردن",
"inGameClippedNameText": "نام درون بازیتان خواهد بود\n\"${NAME}\"",
+ "inboxText": "پیامها",
"installDiskSpaceErrorText": "خطا: قادر به تکمیل نصب نیست\nممکنه مربوط به فضای ذخیره دستگاه شما باشه\nچک کنید و مجددا امتحان کنید",
"internal": {
"arrowsToExitListText": "برای خروج از لیست ${LEFT} یا ${RIGHT} فشار دهید",
"buttonText": "دکمه",
"cantKickHostError": ".شما نمیتوانید میزبان را بیرون کنید",
"chatBlockedText": ".ثانیه مسدود شد ${TIME} برای ${NAME} چت",
- "connectedToGameText": "متصل شد '${NAME}'",
+ "connectedToGameText": "متصل شد '${NAME}'",
"connectedToPartyText": "${NAME} پیوستن به",
"connectingToPartyText": "در حال اتصال",
"connectionFailedHostAlreadyInPartyText": "ارتباط ناموفق: میزبان در بخش دیگریست",
@@ -899,8 +941,8 @@
"controllerDisconnectedTryAgainText": "قطع اتصال شد. لطفا تلاش کنید برای اتصال ازنو ${CONTROLLER}",
"controllerForMenusOnlyText": ".این کنترلر نمیتواند در بازی مورد استفاده قرار بگیرد. استفاده فقط برای پیمایش در منوها",
"controllerReconnectedText": "دوباره متصل شد ${CONTROLLER}",
- "controllersConnectedText": "کنترولر متصل شد ${COUNT}",
- "controllersDetectedText": "کنترولر شناسایی شد ${COUNT}",
+ "controllersConnectedText": "کنترلر متصل شد ${COUNT}",
+ "controllersDetectedText": "کنترلر شناسایی شد ${COUNT}",
"controllersDisconnectedText": "قطع اتصال شد ${COUNT}",
"corruptFileText": "Corrupt file(s) detected. Please try re-installing, or email ${EMAIL}",
"errorPlayingMusicText": "خطای موزیک بازی:${MUSIC}",
@@ -916,29 +958,31 @@
"invitationsSentText": "دعوت نامه ارسال شد ${COUNT}",
"joinedPartyInstructionsText": "فردی به گروه شما پیوسته\nبرید به بازی و بازی را شروع کنید",
"keyboardText": "صفحهکلید",
- "kickIdlePlayersKickedText": "بعلت غیرفعال بودن ${NAME} خروج",
+ "kickIdlePlayersKickedText": "به علت غیرفعال بودن ${NAME} خروج",
"kickIdlePlayersWarning1Text": "${NAME} will be kicked in ${COUNT} seconds if still idle.",
"kickIdlePlayersWarning2Text": "(شما می توانید اینو خاموش کنید در تنظیمات -> پیشرفته)",
- "leftGameText": "خارج شد '${NAME}'",
- "leftPartyText": "پارتی رو ترک کرد ${NAME}",
+ "leftGameText": ".خارج شد '${NAME}'",
+ "leftPartyText": ".پارتی رو ترک کرد ${NAME}",
"noMusicFilesInFolderText": "پوشه حاوی هیچ فایل موسیقی نیست.",
"playerJoinedPartyText": "به گروه بازی پیوست ${NAME}",
- "playerLeftPartyText": "${NAME} گروه رو ترک کرد",
+ "playerLeftPartyText": ".پارتی رو ترک کرد ${NAME}",
"rejectingInviteAlreadyInPartyText": "رد کردن دعوت (already in a party)",
"serverRestartingText": "سرور در حال شروع مجدد است. لطفا چند لحظه دیگر مجددا متصل شوید",
"serverShuttingDownText": ".سرور درحال بسته شدن است",
"signInErrorText": "خطای ورود به سیستم",
- "signInNoConnectionText": "ورود ناموفق بود اتصال به اینترنت در دسترسه؟",
+ "signInNoConnectionText": "ورود ناموفق بود. اتصال به اینترنت برقراره؟",
"telnetAccessDeniedText": "خطا: کاربر از دسترسی به شبکه خارج شد",
"timeOutText": "(times out in ${TIME} seconds)",
"touchScreenJoinWarningText": "You have joined with the touchscreen.\nIf this was a mistake, tap 'Menu->Leave Game' with it.",
"touchScreenText": "صفحه لمسی",
+ "unableToCompleteTryAgainText": "در حال حاضر نمی توان این را تکمیل کرد.\n لطفا دوباره امتحان کنید.",
"unableToResolveHostText": "مشکل:توانایی حل مشکل میزبان وجود ندارد",
"unavailableNoConnectionText": "در دسترس نیست. اتصال به اینترنت برقرار است آیا؟",
"vrOrientationResetCardboardText": "برای تنظیم مجدد جهت گیری VR از این استفاده کنید.\nبرای بازی کردن به یک کنترلر خارجی نیاز دارید.",
"vrOrientationResetText": "تنظیم مجدد VR.",
"willTimeOutText": "(زمان تموم میشه اگه بیکار بود)"
},
+ "inventoryText": "موجودی",
"jumpBoldText": "پرش",
"jumpText": "پرش",
"keepText": "نگه داشتن",
@@ -949,7 +993,7 @@
"kickOccurredText": ".بیرون انداخته شد ${NAME}",
"kickQuestionText": "بیرون انداخته شود؟ ${NAME}",
"kickText": "بیرون انداختن",
- "kickVoteCantKickAdminsText": "نمیشود ادمین ها رو اخراج کنید",
+ "kickVoteCantKickAdminsText": "نمیشه ادمین ها رو اخراج کنی",
"kickVoteCantKickSelfText": "نمیشه خودت رو اخراج کنی اسکل",
"kickVoteFailedNotEnoughVotersText": ".بازیکنان برای رای گیری کافی نیستند",
"kickVoteFailedText": ".رای گیری برای بیرون انداختن ناموفق",
@@ -957,8 +1001,8 @@
"kickVoteText": "رای برای بیرون انداختن",
"kickVotingDisabledText": ".رأی گیری غیرفعاله",
"kickWithChatText": "را برای نه تایپ کن ${NO} را برای بله و ${YES} در چت",
- "killsTallyText": "${COUNT} کشته ها",
- "killsText": "کشته ها",
+ "killsTallyText": "شکار ${COUNT}",
+ "killsText": "شکارها",
"kioskWindow": {
"easyText": "آسان",
"epicModeText": "حرکت آهسته",
@@ -968,25 +1012,28 @@
"singlePlayerExamplesText": "Single Player / Co-op Examples",
"versusExamplesText": "Versus Examples"
},
- "languageSetText": "زبان فعلی: ${LANGUAGE}",
- "lapNumberText": "${TOTAL}/${CURRENT} دور",
+ "languageSetText": "زبان کنونی: ${LANGUAGE}",
+ "lapNumberText": "${CURRENT}/${TOTAL} دور",
"lastGamesText": "(بازی آخر ${COUNT})",
- "leaderboardsText": "مدیران",
+ "leaderboardsText": "تابلوی امتیازات",
"league": {
"allTimeText": "همیشه",
"currentSeasonText": "(${NUMBER}) فصل جاری",
- "leagueFullText": "${NAME} لیگ",
+ "leagueFullText": "لیگ ${NAME}",
"leagueRankText": "رتبه لیگ",
"leagueText": "لیگ",
"rankInLeagueText": "#${RANK}, ${NAME} League${SUFFIX}",
- "seasonEndedDaysAgoText": ".روز پیش پایان یافت ${NUMBER} فصل",
- "seasonEndsDaysText": ".روز دیگر پایان مییابد ${NUMBER} فصل",
- "seasonEndsHoursText": ".ساعت دیگر پایان مییابد ${NUMBER} فصل",
- "seasonEndsMinutesText": ".دقیقهٔ دیگر پایان مییابد ${NUMBER} فصل",
+ "seasonEndedDaysAgoText": ".روز پیش پایان یافت ${NUMBER} فصل",
+ "seasonEndsDaysText": ".روز دیگر پایان مییابد ${NUMBER} فصل",
+ "seasonEndsHoursText": ".ساعت دیگر پایان مییابد ${NUMBER} فصل",
+ "seasonEndsMinutesText": ".دقیقهی دیگر پایان مییابد ${NUMBER} فصل",
"seasonText": "${NUMBER} فصل",
"tournamentLeagueText": ".برسید ${NAME} برای ورود به این مسابقه، باید به لیگ",
- "trophyCountsResetText": ".جوایز در فصل بعد بازنشانی میشوند"
+ "trophyCountsResetText": ".جوایز در فصل بعد بازنشانی میشوند",
+ "upToDateBonusDescriptionText": "بازیکنانی نسخه اخیر را اجرا می کنند بازی در اینجا جایزه دریافت می کند ${PERCENT}%",
+ "upToDateBonusText": "پاداش بهروز بودن"
},
+ "learnMoreText": "بیشتر بدانید",
"levelBestScoresText": "${LEVEL} بهترین امتیاز در",
"levelBestTimesText": "${LEVEL} بهترین زمان در",
"levelIsLockedText": ".قفل است ${LEVEL}",
@@ -995,10 +1042,10 @@
"levelUnlockedText": "!قفل مرحله باز شد",
"livesBonusText": "پاداش تعداد جان ها",
"loadingText": "در حال بارگزاری",
- "loadingTryAgainText": "…در حال بارگذاری؛ چند لحظهٔ دیگر دوباره امتحان کنید",
+ "loadingTryAgainText": "در حال بارگذاری؛ چند لحظهی دیگر دوباره امتحان کنید…",
"macControllerSubsystemBothText": "(هر دو (توصیه نمیشود",
"macControllerSubsystemClassicText": "معمولی",
- "macControllerSubsystemDescriptionText": "(موقعی سعی کنید این را عوض کنید که کنترلر شما درست کار نمیکند.)",
+ "macControllerSubsystemDescriptionText": "(زمانی سعی کنید این را عوض کنید که کنترلر شما درست کار نمیکند.)",
"macControllerSubsystemMFiNoteText": ".ساخته شده برای کنترلر آیاواِس/مک تشخیص داده شد\n شما شاید بخواهید اینها رو در تنظیمات فعال کنید",
"macControllerSubsystemMFiText": "ساخته شده برای ای او اس و مک",
"macControllerSubsystemTitleText": "پشتیبانی کنترل کننده",
@@ -1010,7 +1057,7 @@
"exitGameText": "خروج از بازی",
"exitToMenuText": "خروج به منو؟",
"howToPlayText": "روش بازی",
- "justPlayerText": "(فقط ${NAME})",
+ "justPlayerText": "(${NAME} فقط)",
"leaveGameText": "ترک کردن بازی",
"leavePartyConfirmText": "واقعا میخوای دسته رو ترک کنی؟",
"leavePartyText": "ترک دسته",
@@ -1019,9 +1066,9 @@
"settingsText": "تنظیمات"
},
"makeItSoText": "درستش کن",
- "mapSelectGetMoreMapsText": "رفتن به زمینهای بازیِ بیشتر...",
- "mapSelectText": "انتخاب . . .",
- "mapSelectTitleText": "${GAME} نقشه",
+ "mapSelectGetMoreMapsText": "دریافت نقشههای بیشتر...",
+ "mapSelectText": "انتخاب…",
+ "mapSelectTitleText": "نقشهی ${GAME}",
"mapText": "نقشه",
"maxConnectionsText": "حداکثر اتصالات",
"maxPartySizeText": "حداکثر فضای پارتی",
@@ -1030,22 +1077,25 @@
"modeArcadeText": "حالت بازی",
"modeClassicText": "حالت کلاسیک",
"modeDemoText": "حالت نمایشی",
+ "moreSoonText": "...موارد بیشتر به زودی",
+ "mostDestroyedPlayerText": "نابود شده ترین بازیکن",
"mostValuablePlayerText": "ارزشمندترین بازیکن",
- "mostViolatedPlayerText": "پُراشتباهترین بازیکن",
+ "mostViolatedPlayerText": "پراشتباهترین بازیکن",
"mostViolentPlayerText": "خشنترین بازیکن",
"moveText": "انتقال",
- "multiKillText": "! !${COUNT} ازبین بردن.",
- "multiPlayerCountText": "بازیکن ${COUNT}",
- "mustInviteFriendsText": "توجه:\nشما باید دعوت کنید از دوستان درصفحه اصلی از قسمت\n\"${GATHER}\"",
- "nameBetrayedText": ".خیانت کرد ${VICTIM} به ${NAME}",
- "nameDiedText": ".از بین رفت ${NAME}",
- "nameKilledText": ".را از بین برد ${VICTIM} ${NAME}",
+ "multiKillText": "!!!شکار ${COUNT}",
+ "multiPlayerCountText": "بازیکن ${COUNT}",
+ "mustInviteFriendsText": "توجه: برای بازی چندنفره باید از\n\"${GATHER}\" دوستانتان در پنل \nدعوت یا به بازی دسته وصل کنید.",
+ "nameBetrayedText": ".خیانت کرد ${VICTIM} به ${NAME}",
+ "nameDiedText": ".از بین رفت ${NAME}",
+ "nameKilledText": ".را از بین برد ${VICTIM} ،${NAME}",
"nameNotEmptyText": "!نام نمیتواند خالی باشد",
- "nameScoresText": "!موفق شد ${NAME}",
- "nameSuicideKidFriendlyText": ".بیرون افتاد ${NAME}",
- "nameSuicideText": ".خودکشی کرد ${NAME}",
+ "nameScoresText": "!موفق شد ${NAME}",
+ "nameSuicideKidFriendlyText": ".بیرون افتاد ${NAME}",
+ "nameSuicideText": ".خودکشی کرد ${NAME}",
"nameText": "نام",
"nativeText": "بومی",
+ "newExclaimText": "!جدید",
"newPersonalBestText": "!رکورد قبلیتو شکستی",
"newTestBuildAvailableText": "(${BUILD} نسخهٔ ${VERSION}) !نسخهٔ آزمایشی جدیدتری دردسترس است\n${ADDRESS} :از این نشانی دریافت کنید",
"newText": "جدید",
@@ -1056,12 +1106,16 @@
"noContinuesText": "(ادامه ندارد)",
"noExternalStorageErrorText": "محل ذخیره سازی در این دستگاه یافت نشد",
"noGameCircleText": "GameCircleخطا: وارد نشدید به",
+ "noMessagesText": "هیچ پیامی فعلا نیست",
+ "noPluginsInstalledText": "متاسفانه افزونه ها نصب نشده",
"noScoresYetText": "هیچ امتیازی نیست",
+ "noServersFoundText": "سروری یافت نشد.",
"noThanksText": "نه مرسی",
"noTournamentsInTestBuildText": ".هشدار: امتیازات مسابقه از این نسخهٔ آزمایشی نادیده گرفته میشوند",
"noValidMapsErrorText": "هیچ نقشه معتبری برای این نوع بازی یافت نشد.",
"notEnoughPlayersRemainingText": "بازیکنان باقیمانده کافی نیستند خارج بشید و دوباره یه بازی جدید رو شروع کنید",
"notEnoughPlayersText": "!بازیکن نیاز دارید ${COUNT} برای شروع بازی حداقل به",
+ "notEnoughTicketsText": "بلیط کافی ندارید!",
"notNowText": "حالا نه",
"notSignedInErrorText": ".برای انجام این کار باید وارد شوید",
"notSignedInGooglePlayErrorText": "برا استفاده از این مورد شما باید به گوگلپلی وارد شوید",
@@ -1073,10 +1127,13 @@
"okText": "تایید",
"onText": "روشن",
"oneMomentText": "یک لحظه...",
- "onslaughtRespawnText": "${PLAYER} will respawn in wave ${WAVE}",
+ "onslaughtRespawnText": "زنده میشود ${WAVE} در موج ${PLAYER}",
+ "openMeText": "!بازم کن",
+ "openNowText": "همین حالا باز کنید",
+ "openText": "باز کنید",
"orText": "${A} یا ${B}",
"otherText": "دیگر...",
- "outOfText": "(#${RANK} از ${ALL})",
+ "outOfText": "(${ALL} از #${RANK})",
"ownFlagAtYourBaseWarning": "پرچم شما باید در پایگاه خودتان باشد تا امتیاز کسب کنید.",
"packageModsEnabledErrorText": "شبکهبازی دردسترس نیست. بروبه تظیمات》 تنظیمات پیشرفته و تیک پکیج محلی رو وردار",
"partyWindow": {
@@ -1084,7 +1141,7 @@
"emptyText": "هیچکس نیست",
"hostText": "(میزبان)",
"sendText": "ارسال",
- "titleText": "گروه شما"
+ "titleText": "پارتی شما"
},
"pausedByHostText": "(مکث شده توسط میزبان)",
"perfectWaveText": "! عالی کار کردی",
@@ -1093,57 +1150,57 @@
"coopText": "چند نفره",
"freeForAllText": "تک به تک",
"multiTeamText": "چند تیم",
- "singlePlayerCoopText": "بازی با کامپیوتر",
+ "singlePlayerCoopText": "بازی تکنفره / چندنفره",
"teamsText": "بازی تیمی"
},
"playText": "شروع بازی",
"playWindow": {
- "oneToFourPlayersText": "حداکثر ۴ بازیکن",
+ "oneToFourPlayersText": "۱ تا ۴ بازیکن",
"titleText": "شروع بازی",
- "twoToEightPlayersText": "حداکثر ۸ بازیکن"
+ "twoToEightPlayersText": "۲ تا ۸ بازیکن"
},
- "playerCountAbbreviatedText": "بازیکن ${COUNT}",
- "playerDelayedJoinText": ".در دور بعد وارد میشود ${PLAYER}",
+ "playerCountAbbreviatedText": "(نفره ${COUNT})",
+ "playerDelayedJoinText": ".در دور بعد وارد میشود ${PLAYER}",
"playerInfoText": "اطلاعات بازیکن",
- "playerLeftText": ".بازی را ترک کرد ${PLAYER}",
+ "playerLeftText": ".بازی را ترک کرد ${PLAYER}",
"playerLimitReachedText": "محدودیت بازکن به ${COUNT} رسیده; عضو جدید مجاز نیست.",
"playerProfilesWindow": {
- "cantDeleteAccountProfileText": "شما نمیتوانید نمایهٔ مربوط به حسابکاربری را حذف کنید.",
+ "cantDeleteAccountProfileText": "نمیتوانید نمایهی مربوط به حساب کاربری را حذف کنید.",
"deleteButtonText": "حذف\nنمایه",
"deleteConfirmText": "؟'${PROFILE}' حذف",
"editButtonText": "ویرایش\nنمایه",
- "explanationText": "نام سفارشی بازیکن حاضر در این حساب کاربری",
- "newButtonText": "نمایهٔ\nجدید",
+ "explanationText": "(نامها و شخصیتهای سفارشی این حساب)",
+ "newButtonText": "نمایهی\nجدید",
"titleText": "نمایههای بازیکن"
},
"playerText": "بازیکن",
"playlistNoValidGamesErrorText": "این لیست حاوی هیچ بازی معتبری نیست",
"playlistNotFoundText": "لیست بازی یافت نشد",
- "playlistText": "لیست پخش",
- "playlistsText": "لیست بازی ها",
- "pleaseRateText": "خوشتان آمده، لطفاً چند لحظهای وقت بگذارید و ${APP_NAME} اگر از\nآن را رتبهبندی کنید یا مروری بر آن بنویسید. این کار بازخوردهای مفیدی\n.را به همراه دارد و به پشتیبانی از توسعهها در آینده کمک خواهد کرد\n\n!با تشکر\nاریک—",
+ "playlistText": "لیست بازی",
+ "playlistsText": "لیست بازیها",
+ "pleaseRateText": "اگر از ${APP_NAME} خوشتان آمده، لطفاً چند لحظهای وقت بگذارید و\nآن را رتبهبندی کنید یا مروری بر آن بنویسید. این کار بازخوردهای مفیدی\n.را به همراه دارد و به پشتیبانی از توسعهها در آینده کمک خواهد کرد\n\n!با تشکر\nاریک—",
"pleaseWaitText": "…لطفاً صبر کنید",
"pluginClassLoadErrorText": "${ERROR} :«${PLUGIN}» خطا در بارگیری دستهبندی افزونهٔ",
"pluginInitErrorText": "${ERROR} :«${PLUGIN}» خطا در راهاندازی افزونهٔ",
- "pluginSettingsText": "تنظیمات پلاگین",
- "pluginsAutoEnableNewText": "فعال کردن خودکار افزونه های جدید",
+ "pluginSettingsText": "تنظیمات افزونه",
+ "pluginsAutoEnableNewText": "فعال کردن خودکار افزونههای جدید",
"pluginsDetectedText": "افزونه(ها)ی جدید شناسایی شد. آنها را در تنظیمات فعال، یا پیکربندی کنید.",
- "pluginsDisableAllText": "غیرفعال کردن همه افزونه ها",
- "pluginsEnableAllText": "فعال کردن همه افزونه ها",
+ "pluginsDisableAllText": "غیرفعال کردن همهی افزونهها",
+ "pluginsEnableAllText": "فعال کردن همهی افزونهها",
"pluginsRemovedText": "${NUM} افزونه دیگر یافت نمیشود.",
"pluginsText": "افزونهها",
"practiceText": "تمرین",
- "pressAnyButtonPlayAgainText": "…فشردن هر دکمهای برای بازی دوباره",
- "pressAnyButtonText": "…فشردن هر دکمهای برای ادامه",
- "pressAnyButtonToJoinText": "…پیوستن با فشردن هر دکمهای",
- "pressAnyKeyButtonPlayAgainText": "…فشردن هر کلیدی/دکمهای برای بازی دوباره",
- "pressAnyKeyButtonText": "…فشردن هر کلیدی/دکمهای برای ادامه",
+ "pressAnyButtonPlayAgainText": "فشردن هر دکمهای برای بازی دوباره…",
+ "pressAnyButtonText": "فشردن هر دکمهای برای ادامه…",
+ "pressAnyButtonToJoinText": "پیوستن با فشردن هر دکمهای…",
+ "pressAnyKeyButtonPlayAgainText": "فشردن هر کلیدی/دکمهای برای بازی دوباره…",
+ "pressAnyKeyButtonText": "فشردن هر کلیدی/دکمهای برای ادامه…",
"pressAnyKeyText": "…کلیدی را فشار دهید",
- "pressJumpToFlyText": "** روی پرش مکرراً ضربه بزنید تا پرواز کنید **",
+ "pressJumpToFlyText": "** روی پرش پیاپی بزن تا پرواز کنی **",
"pressPunchToJoinText": "…برای پیوستن دکمهٔ مشت را فشار دهید",
- "pressToOverrideCharacterText": "را فشار دهید ${BUTTONS} برای انتخاب کاراکتر",
- "pressToSelectProfileText": "را فشار دهید ${BUTTONS} برای انتخاب بازیکن",
- "pressToSelectTeamText": "را فشار دهید ${BUTTONS} برای انتخاب تیم",
+ "pressToOverrideCharacterText": "برای انتخاب کاراکتر ${BUTTONS} را فشار دهید",
+ "pressToSelectProfileText": "را فشار دهید ${BUTTONS} برای انتخاب بازیکن",
+ "pressToSelectTeamText": "را فشار دهید ${BUTTONS} برای انتخاب تیم",
"promoCodeWindow": {
"codeText": "کد",
"enterText": "ورود"
@@ -1152,6 +1209,7 @@
"ps3ControllersWindow": {
"macInstructionsText": "Switch off the power on the back of your PS3, make sure\nBluetooth is enabled on your Mac, then connect your controller\nto your Mac via a USB cable to pair the two. From then on, you\ncan use the controller's home button to connect it to your Mac\nin either wired (USB) or wireless (Bluetooth) mode.\n\nOn some Macs you may be prompted for a passcode when pairing.\nIf this happens, see the following tutorial or google for help.\n\n\n\n\nPS3 controllers connected wirelessly should show up in the device\nlist in System Preferences->Bluetooth. You may need to remove them\nfrom that list when you want to use them with your PS3 again.\n\nAlso make sure to disconnect them from Bluetooth when not in\nuse or their batteries will continue to drain.\n\nBluetooth should handle up to 7 connected devices,\nthough your mileage may vary.",
"ouyaInstructionsText": "To use a PS3 controller with your OUYA, simply connect it with a USB cable\nonce to pair it. Doing this may disconnect your other controllers, so\nyou should then restart your OUYA and unplug the USB cable.\n\nFrom then on you should be able to use the controller's HOME button to\nconnect it wirelessly. When you are done playing, hold the HOME button\nfor 10 seconds to turn the controller off; otherwise it may remain on\nand waste batteries.",
+ "ouyaInstructionsTextScale": 0.74,
"pairingTutorialText": "آموزش تصویری جفتشدن",
"titleText": ":${APP_NAME} در PS3 استفاده از کنترلر"
},
@@ -1159,6 +1217,8 @@
"punchText": "مشت",
"purchaseForText": "خرید برای ${PRICE}",
"purchaseGameText": "خرید بازی",
+ "purchaseNeverAvailableText": ".با عرض پوزش، خرید در این نسخه در دسترس نیست\n.سعی کنید در پلتفرم دیگری وارد حساب خود شوید و از آنجا خرید کنید",
+ "purchaseNotAvailableText": ".این خرید در دسترس نیست",
"purchasingText": "…در حال خرید",
"quitGameText": "؟${APP_NAME} خروج از",
"quittingIn5SecondsText": "…ترک در ۵ ثانیه",
@@ -1166,17 +1226,17 @@
"randomText": "تصادفی",
"rankText": "رتبه",
"ratingText": "امتیاز",
- "reachWave2Text": "برای ثبت امتیاز به دور دوم برسید",
+ "reachWave2Text": "برای گرفتن رتبه به موج ۲ برسید.",
"readyText": "آماده",
"recentText": "اخیر",
"remoteAppInfoShortText": ".خیلی جذاب تره وقتی با دوستانتون بازی می کنید ${APP_NAME} بازی\nکافیه چند تا دسته ی بازی به دستگاهتون وصل کنید یا\nرا روی گوشی و تبلت های دیگر نصب کنید تا ${REMOTE_APP_NAME} برنامه ی\n.به عنوان دسته برای بازی استفاده شوند",
"remote_app": {
- "app_name": "BombSquad کنترولر مخصوص",
+ "app_name": "دستهمجازی بمباسکواد",
"app_name_short": "BSRemote",
"button_position": "مکان دکمه",
"button_size": "اندازه دکمه",
"cant_resolve_host": "میزبان را نمیتوان یافت.",
- "capturing": "گرفتن…",
+ "capturing": "...در حال گرفتن",
"connected": ".متصل شد",
"description": "از گوشی یا تبلتتان بهعنوان دستهٔ بازی برای بمباسکواد استفاده کنید.\nتا ۸ دستگاه میتوانند بهصورت همزمان برای جنون حماسهٔ محلی چندنفره روی یک تیوی یا تبلت متصل شوند.",
"disconnected": "قطع اتصال از سرور",
@@ -1197,14 +1257,15 @@
"searching": "جستجو برای بازیهای فعال",
"searching_caption": "بر روی نام یک بازی برای پیوستن به آن ضربه بزنید.\nاطمینان حاصل کنید که شما در شبکه وای فای همان بازی هستید.",
"start": "شروع",
- "version_mismatch": "عدم تطابق نسخهها\nاطمینان حاصل کنید که بمباسکوار و کنترولر\nآخرین ورژن باشن و دوباره امتحان کنید"
+ "version_mismatch": "عدم تطابق نسخهها.\nاطمینان حاصل کنید که بمباسکواد و دستهمجازی\nآخرین نسخه باشند و دوباره امتحان کنید."
},
"removeInGameAdsText": "بازی را در فروشگاه بخرید تا تبلیغات حذف شوند «${PRO}» نسخهٔ",
+ "removeInGameAdsTokenPurchaseText": "پیشنهاد زمان محدود: هر بسته توکن را برای حذف تبلیغات درون بازی خریداری کنید",
"renameText": "تغییر نام",
"replayEndText": "پایان بازپخش",
"replayNameDefaultText": "بازپخش بازی اخیر",
"replayReadErrorText": "خطا در خواندن فایل بازپخش",
- "replayRenameWarningText": "عبارت «${REPLAY}» را تغییر دهید، اگر میخواهید بعد از یک بازی آن را از دست ندهید. در غیر این صورت بازنویسی میشود.",
+ "replayRenameWarningText": ".را تغییر دهید، اگر میخواهید بعد از یک بازی آن را از دست ندهید؛ وگرنه بازنویسی میشود \"${REPLAY}\"",
"replayVersionErrorText": "با عرض پوزش این بازبخش در ورژن مختلفیاز بازی ایجاد شده\n است و نمیتوان مورد استفاده قرار گیرد",
"replayWatchText": "دیدن بازبخش بازی",
"replayWriteErrorText": "خطا در نوشتن فایل بازپخش.",
@@ -1220,7 +1281,9 @@
"revertText": "بازگشت",
"runText": "دویدن",
"saveText": "ذخیره",
- "scanScriptsErrorText": "اسکریپت ها در حال بررسی خطا ها است؛ برای جزئیات لوگ را ببینید",
+ "scanScriptsErrorText": "اسکریپت ها در حال بررسی خطا ها است؛ برای جزئیات لاگ را ببینید",
+ "scanScriptsMultipleModulesNeedUpdatesText": ".بهروزرسانی شوند api ${API} ماژول دیگر باید برای ${NUM} و ${PATH}",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} باید برای api ${API} بهروزرسانی شود.",
"scoreChallengesText": "امتیاز چالش",
"scoreListUnavailableText": ".لیست امتیازات در دسترس نیست",
"scoreText": "امتیاز",
@@ -1231,10 +1294,11 @@
},
"scoreWasText": "(بود ${COUNT})",
"selectText": "انتخاب",
- "seriesWinLine1PlayerText": "برنده",
- "seriesWinLine1TeamText": "برنده",
- "seriesWinLine1Text": "برنده",
- "seriesWinLine2Text": "مجموعه بازی",
+ "sendInfoDescriptionText": ".اطلاعات اکانت و حالت برنامه را به سازنده میفرستد\n.لطفاً نام خود یا دلیل فرستادن را بیان کنید",
+ "seriesWinLine1PlayerText": "برندهی",
+ "seriesWinLine1TeamText": "برندهی",
+ "seriesWinLine1Text": "برندهی",
+ "seriesWinLine2Text": "!مجموعهبازی",
"settingsWindow": {
"accountText": "حساب",
"advancedText": "پیشرفته",
@@ -1245,35 +1309,43 @@
"titleText": "تنظیمات"
},
"settingsWindowAdvanced": {
- "alwaysUseInternalKeyboardDescriptionText": "(یه صفحهکلید ساده و خوشدست بر روی صفحهٔ نمایش برای ویرایش متنی)",
- "alwaysUseInternalKeyboardText": "همیشه از صفحهکلید داخلی استفاده شود",
+ "alwaysUseInternalKeyboardDescriptionText": "(یه کیبورد ساده و خوشدست برای نوشتن)",
+ "alwaysUseInternalKeyboardText": "همیشه از کیبورد داخلی استفاده شود",
"benchmarksText": "معیار و تست استرس",
+ "devToolsText": "ابزارهای توسعه",
"disableCameraGyroscopeMotionText": "غیرفعال کردن حرکت ژیروسکوپ دوربین",
"disableCameraShakeText": "غیرفعال کردن لرزش دوربین",
- "disableThisNotice": "(شما میتوانید این اخطار را در تنظیمات یشرفته خاموش کنید)",
+ "disableThisNotice": "(میتونید این اخطار رو در تنظیمات پیشرفته خاموش کنید)",
"enablePackageModsDescriptionText": "(فعالسازی قابلیت مد اکسترا اما شبکه بازی غیر فعال میشود)",
"enablePackageModsText": "فعالسازی پکیج مد محلی",
"enterPromoCodeText": "وارد کردن کد",
- "forTestingText": "توجه: این تغیرات برای آزمایش کردن هستند و هنگام خروج به حال اول باز میگردند",
- "helpTranslateText": "ترجمههای غیرانگلیسی ${APP_NAME} تلاشی است که\nتوسط انجمن پشتیبانی میشود. اگر مایل به کمک یا تصحیح\nترجمه هستید، پیوند زیر را دنبال کنید. پیشاپیش متشکرم!",
+ "forTestingText": "توجه: این تغیرات برای آزمایش هستند و هنگام خروج از بین میروند.",
+ "helpTranslateText": "ترجمههای غیرانگلیسی ${APP_NAME} تلاشی است که\nتوسط جامعه پشتیبانی میشود. اگر مایل به کمک یا تصحیح\n!ترجمه هستید، پیوند زیر را دنبال کنید. پیشاپیش سپاسگزارم",
+ "insecureConnectionsDescriptionText": "توصیه نمی شود، اما ممکن است از طرف کشورها یا\nشبکههای محدودشده اجازهی بازی آنلاین را بدهد",
+ "insecureConnectionsText": "استفاده از اتصالهای ناپایدار",
"kickIdlePlayersText": "بیرون انداختن بازیکنان غیرفعال",
"kidFriendlyModeText": "حالت دوستانه برای کودکان. خشونت کم",
"languageText": "زبان",
"moddingGuideText": "راهنمای برنامهنویسان",
+ "moddingToolsText": "اصلاح کردن ابزار",
"mustRestartText": "برای اعمال تغییرات باید بازی را دوباره راه اندازی کنید",
"netTestingText": "تست شبکه",
- "resetText": "باز گرداندن",
+ "resetText": "بازنشانی",
+ "sendInfoText": "فرستادن اطلاعات",
"showBombTrajectoriesText": "نمایش خط سیر بمب",
- "showInGamePingText": "نمایش پینگ در بازی",
+ "showDemosWhenIdleText": "نمایش دموها هنگام بیکاری",
+ "showDeprecatedLoginTypesText": "نمایش انواع ورودهای منسوخ",
+ "showDevConsoleButtonText": "نمایش دکمهی کنسول توسعه",
+ "showInGamePingText": "نمایش پینگ درون بازی",
"showPlayerNamesText": "نمایش نام بازیکنان",
- "showUserModsText": "نمایش پوشهٔ سبک بازیها",
+ "showUserModsText": "نمایش پوشهی افزونههای بازی",
"titleText": "پیشرفته",
- "translationEditorButtonText": "${APP_NAME} ویرایشگر زبان",
+ "translationEditorButtonText": "ویرایشگر زبان ${APP_NAME}",
"translationFetchErrorText": "وضعیت ترجمه در دسترس نیست",
"translationFetchingStatusText": "چک کردن وضعیت ترجمه ...",
"translationInformMe": "!وقتی زبان من بهروزرسانی نیاز داشت، خبرم کن",
- "translationNoUpdateNeededText": "!زبان کنونی بهروز است؛ ووهو",
- "translationUpdateNeededText": "! زبان فعلی نیاز به به روز رسانی دارد",
+ "translationNoUpdateNeededText": "!زبان کنونی بهروز است. ایول به ولت",
+ "translationUpdateNeededText": "!زبان کنونی نیاز به بهروزرسانی دارد",
"vrTestingText": "VR تست"
},
"shareText": "اشتراکگذاری",
@@ -1281,11 +1353,14 @@
"showText": "نمایش",
"signInForPromoCodeText": "برای اثر گذاری کد ها باید با یک حساب کاربری وارد شوید",
"signInWithGameCenterText": "برای استفاده از حسابی که در یک گیم سنتر دارید,\nبا برنامه گیم سنتر خود وارد شوید.",
- "singleGamePlaylistNameText": "${GAME} فقط",
+ "singleGamePlaylistNameText": "${GAME} فقط",
"singlePlayerCountText": "1 بازیکن",
+ "sizeLargeText": "بزرگ",
+ "sizeMediumText": "متوسط",
+ "sizeSmallText": "کوچک",
"soloNameFilterText": "رو در رو ${NAME}",
"soundtrackTypeNames": {
- "CharSelect": "انتخاب کارکتر",
+ "CharSelect": "انتخاب شخصیت",
"Chosen One": "انتخاب شده",
"Epic": "بازی قدرت",
"Epic Race": "مسابقه حرکت آهسته",
@@ -1308,6 +1383,7 @@
},
"spaceKeyText": "فاصله",
"statsText": "آمار",
+ "stopRemindingMeText": "به من یادآوری نکن",
"storagePermissionAccessText": "به اجازه شما برای دسترسی به حافظه نیاز دارد",
"store": {
"alreadyOwnText": "!را در اختیار دارید ${NAME} شما",
@@ -1315,22 +1391,22 @@
"bombSquadProNameText": "حرفه ای ${APP_NAME}",
"bombSquadProNewDescriptionText": ".تبلیغات داخل بازی حذف میشود\n.بیشتر تنظیمات بازی باز میشوند\n:همچنین شامل",
"buyText": "خرید",
- "charactersText": "شخصیت ها",
+ "charactersText": "شخصیتها",
"comingSoonText": "...به زودی",
"extrasText": "دیگر",
"freeBombSquadProText": "جوخه بمب حالا مجانیه، ولی چون شما زمانی خریدینش که پولی بود؛ ما داریم\nشمارو به جوخه بمب پرو ارتقا میدیم و ${COUNT} بلیط بعنوان تشکر برای شما.\nاز امکانات جدید لذت ببرید. از شما بابت پشتیبانی و دلگرمی تان ممنونیم!\n-اریک",
"holidaySpecialText": "ویژهی تعطیلات",
- "howToSwitchCharactersText": "(برو به \"${SETTINGS} -> ${PLAYER_PROFILES}\" برای ایجاد و شخصیسازی شخصیتها)",
- "howToUseIconsText": "(ایجاد نمایههای جهانی از قسمت پنجرهٔ حساب برای استفاده در این مورد)",
- "howToUseMapsText": "(از این نقشهها میتونید تو بازیهای تیمی و تکبهتکی خودتون استفاده کنید)",
+ "howToSwitchCharactersText": "(برو \"${SETTINGS} -> ${PLAYER_PROFILES}\" برای ایجاد و شخصیسازی شخصیتها به)",
+ "howToUseIconsText": "((در بخش حساب کاربری) برای استفاده از اینها نمایههای جهانی ایجاد کنید)",
+ "howToUseMapsText": "(از این نقشهها میتونید توی بازیهای تیمی و تکبهتک خودتون استفاده کنید)",
"iconsText": "نشانهها",
"loadErrorText": "لود شدن صفحه ناموفق بود\nاتصال اینترنت رو چک کنید",
"loadingText": "در حال بارگزاری",
- "mapsText": "نقشه ها",
- "miniGamesText": "تک بازیهای کوچک",
+ "mapsText": "نقشهها",
+ "miniGamesText": "بازیهای کوچک",
"oneTimeOnlyText": "(فقط یک بار)",
"purchaseAlreadyInProgressText": "این مورد قبلا سفارش داده شده",
- "purchaseConfirmText": "را بخرید ؟ ${ITEM} واقعا می خواهید",
+ "purchaseConfirmText": "واقعا میخواهید ${ITEM} را بخرید؟",
"purchaseNotValidError": ". سفارش معتبر نیست\n. ایمیل بزنید ${EMAIL} اگر مشکلی دارید به",
"purchaseText": "خرید",
"saleBundleText": "فروش بسته نرمافزاری!",
@@ -1347,7 +1423,7 @@
"storeDescriptionText": "8 بازیکن حزب جنون بازی!\n\nدوستان خود (یا رایانه) را در مسابقات مینی بازیهای انفجاری مانند: پرچم، هاکی و حرکت آهسته\n\nکنترل ساده و پشتیبانی گسترده میتوان تا حداکثر 8 نفر برای ورود به بازی اقدام کند؛ شما حتی میتوانید دستگاههای تلفنهمراه خود را به عنوان کنترل از طریق برنامه رایگان BombSquadremote استفاده کنید!\n\nبمباندازی از راه دور!\n\nwww.froemling.net/bombsquad را برای اطلاعات بیشتر چک کنید.",
"storeDescriptions": {
"blowUpYourFriendsText": "بازیکن دوستات رو بترکون 😁",
- "competeInMiniGamesText": "رقابت در بازیهای کوچک بویژه مسابقه پرواز.",
+ "competeInMiniGamesText": "رقابت در بازیهای کوچک به یژه مسابقه پرواز.",
"customize2Text": "سفارشی کردن شخصیتها، بازیهای کوچک، و حتی موسیقیهای متن .",
"customizeText": "شما می تونید شخصیتها رو شخصیسازی کنید و به سلیقه خودتون لیستبازی درست کنید",
"sportsMoreFunText": "ورزش ها سرگرم کننده تر میشن با انفجار",
@@ -1356,29 +1432,46 @@
"storeText": "فروشگاه",
"submitText": "ثبت",
"submittingPromoCodeText": "...ثبت کردن کد",
+ "successText": "!موفقیت آمیز بود",
+ "supportEmailText": "اگر با هر گونه مشکلی مواجه هستید\n برنامه، لطفاً به ${EMAIL} ایمیل بزنید.",
"teamNamesColorText": "نام/رنگ تیم...",
"telnetAccessGrantedText": "شبکه ی در دسترس فعال",
"telnetAccessText": "شبکه راه دور دردسترس است اجازه میدید؟",
"testBuildErrorText": "این نسخه دیگر فعال نیست، لطفا نسخه جدید را بررسی کنید",
- "testBuildText": "آزمایش ساخت",
+ "testBuildText": "ساخت آزمایشی",
"testBuildValidateErrorText": "قادر به تأیید نسخه نیست (اتصال برقره نشد؟)",
"testBuildValidatedText": "نسخه معتبر است؛ لذت ببرید.!",
"thankYouText": "تشکر بخاطر حمایت از ما ! از بازی لذت ببرید",
"threeKillText": "نابود کردن همزمان سه نفر",
+ "ticketsDescriptionText": "بلیتها برای بازگشایی شخصیتها، نقشهها، بازیهای\nکوچک و موارد دیگر در فروشگاه به کار میروند. \n\nبلیتها در صندوقهایی که از کمپینها، مسابقات\nو دستاوردها برنده شدهاید، یافت میشوند.",
"timeBonusText": "پاداش سرعت عمل",
- "timeElapsedText": "زمان سپری شده",
+ "timeElapsedText": "زمان گذشته",
"timeExpiredText": "زمان تمام شده",
- "timeSuffixDaysText": "روز ${COUNT}",
- "timeSuffixHoursText": "ساعت ${COUNT}",
- "timeSuffixMinutesText": "دقیقه ${COUNT}",
- "timeSuffixSecondsText": "ثانیه ${COUNT}",
+ "timeSuffixDaysText": "ر${COUNT}",
+ "timeSuffixHoursText": "س${COUNT}",
+ "timeSuffixMinutesText": "د${COUNT}",
+ "timeSuffixSecondsText": "ث${COUNT}",
"tipText": "نکته",
"titleText": "بمباسکواد",
- "titleVRText": "BombSquad VR",
+ "titleVRText": "بمب اسکواد نسخه واقعیتمجازی",
+ "tokens": {
+ "getTokensText": "دریافت توکن",
+ "notEnoughTokensText": "توکن های شما کافی نیست !",
+ "numTokensText": "توکن ${COUNT}",
+ "openNowDescriptionText": "شما به اندازه کافی نشانه دارید\nاکنون این را باز کنید - اگر نکنید\nباید صبر کرد",
+ "shinyNewCurrencyText": "ارز های جدید بمب اسکواد",
+ "tokenPack1Text": "بسته توکن کوچک",
+ "tokenPack2Text": "بسته توکن متوسط",
+ "tokenPack3Text": "بسته توکن بزرگ",
+ "tokenPack4Text": "بسته توکن جامبو",
+ "tokensDescriptionText": "توکنها برای سرعت بخشیدن به باز کردن قفل صندوق و برای \n.دیگر ویژگیهای بازی و حساب کاربری به کار میروند\n\nمیتوانید توکنها را در بازی برنده شوید یا آنها را در بستهها\nخریداری کنید. یا یک گلدپس برای توکنهای بینهایت\n.بخرید و دیگر در خرج آنها مشکلی نداشته باشید",
+ "youHaveGoldPassText": ".شما یک گلد پس دارید\n.تمامی خریدهای توکن رایگان است\n!لذت ببرید"
+ },
"topFriendsText": "بالاترین امتیاز دوستان",
"tournamentCheckingStateText": "چک کردن وضعیت مسابقات؛ لطفا صبر کنید",
"tournamentEndedText": "این دوره از مسابقات به پایان رسیده است دوره جدیدی بزودی آغاز خواهد شد",
"tournamentEntryText": "ورودیِ مسابقات",
+ "tournamentFinalStandingsText": "جدول رده بندی نهایی",
"tournamentResultsRecentText": "آخرین نتایج مسابقات",
"tournamentStandingsText": "جدول رده بندی مسابقات",
"tournamentText": "جام حذفی",
@@ -1388,7 +1481,7 @@
"translations": {
"characterNames": {
"Agent Johnson": "مامور جانسون",
- "B-9000": "B-9000",
+ "B-9000": "بات.۹۰۰۰",
"Bernard": "برنارد",
"Bones": "اسکلت",
"Butch": "بوچ",
@@ -1408,7 +1501,7 @@
"Pixel": "پیکسل",
"Sammy Slam": "سامی کشتیگیر",
"Santa Claus": "بابا نوئل",
- "Snake Shadow": "سایه ی مار",
+ "Snake Shadow": "سایهی مار",
"Spaz": "اسپاز",
"Taobao Mascot": "تائوبائو",
"Todd": "تاد",
@@ -1418,110 +1511,123 @@
"Zola": "زولا"
},
"coopLevelNames": {
- "${GAME} Training": "${GAME} محل تمرین",
- "Infinite ${GAME}": "بی پایان ${GAME}",
+ "${GAME} Training": "تمرین ${GAME}",
+ "Infinite ${GAME}": "${GAME} بیپایان",
"Infinite Onslaught": "نبرد بیپایان",
- "Infinite Runaround": "دوره بی نهایت",
+ "Infinite Runaround": "دور بیپایان",
"Onslaught Training": "نبرد مبتدی",
- "Pro ${GAME}": "حرفه ای ${GAME}",
+ "Pro ${GAME}": "${GAME} حرفهای",
"Pro Football": "فوتبال حرفهای",
- "Pro Onslaught": "حمله ی سخت",
+ "Pro Onslaught": "هجوم سخت",
"Pro Runaround": "نگهبان خروج",
"Rookie ${GAME}": "${GAME} قدرت",
"Rookie Football": "مبارز فوتبال",
"Rookie Onslaught": "میدان مبارزه",
"The Last Stand": "آخرین مقاومت",
- "Uber ${GAME}": "${GAME} بازی",
- "Uber Football": "فوتبال حرفهای",
+ "Uber ${GAME}": "${GAME} خفن",
+ "Uber Football": "فوتبال خفن",
"Uber Onslaught": "هجوم",
"Uber Runaround": "ایست بازرسی"
},
+ "displayItemNames": {
+ "${C} Tickets": "بلیت ${C}",
+ "${C} Tokens": "توکن ${C}",
+ "Chest": "صندوق",
+ "L1 Chest": "صندوق ۱",
+ "L2 Chest": "صندوق ۲",
+ "L3 Chest": "صندوق ۳",
+ "L4 Chest": "صندوق ۴",
+ "L5 Chest": "صندوق ۵",
+ "L6 Chest": "صندوق ۶",
+ "Unknown Chest": "صندوق ناشناخته"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "یکی از بهترین ها برای پیروزی در زمان بازی است.\nیکی را انتخاب کنید و از بین ببرید تا به آن تبدیل شوید.",
- "Bomb as many targets as you can.": "هدف ها را با بمب بزن",
- "Carry the flag for ${ARG1} seconds.": "ثانیه${ARG1}حمل و نگهداری پرچم برای",
- "Carry the flag for a set length of time.": "حمل و حفاظت از پرچم برای برای یک زمان معین",
- "Crush ${ARG1} of your enemies.": "بار از حریف ${ARG1} پیروز شدن",
- "Defeat all enemies.": "همه ی حریف ها را شکست بده",
- "Dodge the falling bombs.": "از بمب ها جاخالی بده",
- "Final glorious epic slow motion battle to the death.": "نبرد در حرکت آهسته",
- "Gather eggs!": "تخم مرغ ها رو جمع کن",
- "Get the flag to the enemy end zone.": "بردن پرچم به منطقه پایانی حریف",
- "How fast can you defeat the ninjas?": "با چه سرعتی میتونید نینجاها رو شکست بدید؟",
- "Kill a set number of enemies to win.": "ازبین بردن تعدادی ازحریف ها برای بردن",
- "Last one standing wins.": "آخرین کسی که موند برنده س",
- "Last remaining alive wins.": "تاریخ و زمان آخرین برنده زنده باقی مانده",
- "Last team standing wins.": "آخرین تیمی که میمونه تو بازی برندهس",
- "Prevent enemies from reaching the exit.": "جلوگیری از خروج حریف",
- "Reach the enemy flag to score.": "رسیدن به پرچم دشمن",
- "Return the enemy flag to score.": "برداشتن پرچم دشمن برای امتیاز گرفتن",
- "Run ${ARG1} laps.": "دور ${ARG1} حرکت",
- "Run ${ARG1} laps. Your entire team has to finish.": "دور ,کل تیم ${ARG1} حرکت",
- "Run 1 lap.": "یک دور",
- "Run 1 lap. Your entire team has to finish.": "یک دور کل تیم به خط پایان برسند",
- "Run real fast!": "!حرکت واقعا سریع",
- "Score ${ARG1} goals.": "گل ${ARG1}زدن",
- "Score ${ARG1} touchdowns.": "بار ${ARG1}عبور پرچم ازخط",
- "Score a goal.": "گل بزنید",
- "Score a touchdown.": "امتیاز پرش",
- "Score some goals.": "امتیاز برخی گل ها",
- "Secure all ${ARG1} flags.": "پرچم ${ARG1}مال خودکردن همه",
- "Secure all flags on the map to win.": "حفاظت از تمام پرچم ها. در نقشه",
- "Secure the flag for ${ARG1} seconds.": "ثانیه ${ARG1} حفاظت از پرچم برای",
- "Secure the flag for a set length of time.": "حفاظت از پرچم در مدت زمان معین",
- "Steal the enemy flag ${ARG1} times.": "بار ${ARG1} ربودن پرچم حریف",
- "Steal the enemy flag.": "ربودن پرچم حریف",
- "There can be only one.": "صاحب پرچم فقط میتونه یه نفر باشه",
- "Touch the enemy flag ${ARG1} times.": "${ARG1} بار لمس پرچم دشمن",
- "Touch the enemy flag.": "لمس پرچم دشمن",
- "carry the flag for ${ARG1} seconds": "ثانیه${ARG1}حمل و نگهداری پرچم برای",
- "kill ${ARG1} enemies": "حریف ${ARG1} ازبین بردن",
- "last one standing wins": "آخرین کسی که موند برنده س",
- "last team standing wins": "آخرین تیمی که میمونه روصحنه برندهس",
- "return ${ARG1} flags": "پرچم ${ARG1} بدست آوردن",
- "return 1 flag": "بدست آوردن 1 پرچم",
- "run ${ARG1} laps": "دور ${ARG1} حرکت",
- "run 1 lap": "یک دور",
- "score ${ARG1} goals": "گل ${ARG1}زدن",
- "score ${ARG1} touchdowns": "بار ${ARG1}عبور پرچم ازخط",
+ "Bomb as many targets as you can.": ".هدفها را با بمب بزنید",
+ "Carry the flag for ${ARG1} seconds.": ".ثانیه پرچم رو حمل کن ${ARG1} برای",
+ "Carry the flag for a set length of time.": ".برای یک زمان معین پرچم را حمل کنید",
+ "Crush ${ARG1} of your enemies.": ".تا از دشمنها رو له کن${ARG1}",
+ "Defeat all enemies.": ".همهی دشمنها را شکست بدهید",
+ "Dodge the falling bombs.": ".از بمبها جاخالی بدهید",
+ "Final glorious epic slow motion battle to the death.": ".نبرد نهایی با شکوه حرکت آهستهی حماسی تا پای مرگ",
+ "Gather eggs!": "!تخممرغها را جمع کنید",
+ "Get the flag to the enemy end zone.": ".پرچم را به منطقهی انتهایی دشمن برسانید",
+ "How fast can you defeat the ninjas?": "با چه سرعتی میتوانید نینجاها را شکست دهید؟",
+ "Kill a set number of enemies to win.": ".تعداد معینی از دشمنان را برای برنده شدن از بین ببرید",
+ "Last one standing wins.": ".آخرین نفری که مونده برندهست",
+ "Last remaining alive wins.": ".آخرین نفری که زنده میماند، برنده است",
+ "Last team standing wins.": ".آخرین تیمی که میمونه برندهست",
+ "Prevent enemies from reaching the exit.": ".از خروج دشمن جلوگیری کنید",
+ "Reach the enemy flag to score.": ".پرچم دشمن را برای گرفتن امتیاز لمس کنید",
+ "Return the enemy flag to score.": ".پرچم دشمن را بربایید تا امتیاز بگیرید",
+ "Run ${ARG1} laps.": ".دور بدو ${ARG1}",
+ "Run ${ARG1} laps. Your entire team has to finish.": ".دور بدو. کل تیم باید به خط پایان برسه ${ARG1}",
+ "Run 1 lap.": ".دور بدو 1",
+ "Run 1 lap. Your entire team has to finish.": ".دور بدو. کل تیم باید به خط پایان برسد 1",
+ "Run real fast!": "!تخت گاز بدوید",
+ "Score ${ARG1} goals.": ".تا گل بزن${ARG1}",
+ "Score ${ARG1} touchdowns.": ".بار از خط رد کن ${ARG1} پرچم رو",
+ "Score a goal.": ".گل بزن",
+ "Score a touchdown.": ".امتیاز بگیر",
+ "Score some goals.": "تعدادی گل بزنید.",
+ "Secure all ${ARG1} flags.": ".پرچم رو تصاحب کن ${ARG1} همهی",
+ "Secure all flags on the map to win.": ".در نقشه همهی پرچمها را از آن خود کنید تا برنده شوید",
+ "Secure the flag for ${ARG1} seconds.": ".ثانیه از پرچم محافظت کن ${ARG1} برای",
+ "Secure the flag for a set length of time.": ".برای زمان معینی از پرچم محافظت کنید",
+ "Steal the enemy flag ${ARG1} times.": ".بار بربا ${ARG1} پرچم دشمن رو",
+ "Steal the enemy flag.": "پرچم دشمن را بربایید.",
+ "There can be only one.": ".فقط یه نفر صاحب پرچمه",
+ "Touch the enemy flag ${ARG1} times.": ".بار لمس کن ${ARG1} پرچم دشمن رو",
+ "Touch the enemy flag.": ".پرچم دشمن را لمس کنید",
+ "carry the flag for ${ARG1} seconds": "ثانیه پرچم را حمل کنید ${ARG1} برای",
+ "kill ${ARG1} enemies": "دشمن را از بین ببرید ${ARG1}",
+ "last one standing wins": "آخرین نفری که مانده برنده است",
+ "last team standing wins": "آخرین تیمی که میماند برنده است",
+ "return ${ARG1} flags": "پرچم به دست بیاورید ${ARG1}",
+ "return 1 flag": "پرچم به دست بیاورید 1",
+ "run ${ARG1} laps": "دور بدوید ${ARG1}",
+ "run 1 lap": "دور بدوید 1",
+ "score ${ARG1} goals": "گل بزنید ${ARG1}",
+ "score ${ARG1} touchdowns": "بار از خط رد کنید ${ARG1} پرچم را",
"score a goal": "گل بزنید",
- "score a touchdown": "امتیاز یک پرش",
- "secure all ${ARG1} flags": "پرچم ${ARG1}مال خودکردن همه",
- "secure the flag for ${ARG1} seconds": "ثانیه ${ARG1} حفاظت از پرچم برای",
- "touch ${ARG1} flags": "پرچم ${ARG1}لمس",
- "touch 1 flag": "لمس 1 پرچم"
+ "score a touchdown": "امتیاز بگیرید",
+ "secure all ${ARG1} flags": "پرچم را از آن خود کنید ${ARG1} همهی",
+ "secure the flag for ${ARG1} seconds": "ثانیه از پرچم محافظت کنید ${ARG1} برای",
+ "touch ${ARG1} flags": "بار لمس کنید ${ARG1} پرچم را",
+ "touch 1 flag": "بار لمس کنید 1 پرچم را"
},
"gameNames": {
"Assault": "لمس پرچم",
"Capture the Flag": "تسخیر پرچم",
- "Chosen One": "فرد منتخب",
- "Conquest": "قدرت نمایی",
+ "Chosen One": "برگزیده",
+ "Conquest": "فتح",
"Death Match": "نبرد مرگبار",
- "Easter Egg Hunt": "شکار تخممرغ عید پاک",
+ "Easter Egg Hunt": "شکار ایستر اگ",
"Elimination": "استقامت",
"Football": "فوتبال آمریکایی",
"Hockey": "هاکی",
"Keep Away": "دور نگه داشتن",
"King of the Hill": "پادشاه تپه",
- "Meteor Shower": "بمباران",
+ "Meteor Shower": "بمبباران",
"Ninja Fight": "نبرد با نینجاها",
"Onslaught": "مبارزه",
- "Race": "مسابقهٔ دو",
+ "Race": "مسابقهی دو",
"Runaround": "مانع",
"Target Practice": "تمرین بمباندازی",
"The Last Stand": "دفاع آخر"
},
"inputDeviceNames": {
- "Keyboard": "صفحهکلید",
- "Keyboard P2": "p2 صفحهکلید"
+ "Keyboard": "کیبورد",
+ "Keyboard P2": "کیبورد ب۲"
},
"languages": {
"Arabic": "عربی",
"Belarussian": "بلاروسی",
- "Chinese": "چینی ساده شده",
- "ChineseTraditional": "چینی سنتی",
+ "Chinese": "چینی - ساده شده",
+ "ChineseSimplified": "چینی - ساده شده",
+ "ChineseTraditional": "چینی - سنتی",
"Croatian": "کرواتی",
- "Czech": "چک",
+ "Czech": "چکی",
"Danish": "دانمارکی",
"Dutch": "هلندی",
"English": "انگلیسی",
@@ -1534,19 +1640,24 @@
"Greek": "یونانی",
"Hindi": "هندی",
"Hungarian": "مجارستانی",
- "Indonesian": "اندونزی",
+ "Indonesian": "اندونزیایی",
"Italian": "ایتالیایی",
"Japanese": "ژاپنی",
"Korean": "کرهای",
"Malay": "مالایی",
- "Persian": "فارسی",
+ "Persian": "فارسی",
+ "PirateSpeak": "سومالیایی",
"Polish": "لهستانی",
"Portuguese": "پرتغالی",
+ "PortugueseBrazil": "پرتغالی - برزیل",
+ "PortuguesePortugal": "Portuguese - Portugal",
"Romanian": "رومانیایی",
"Russian": "روسی",
"Serbian": "صربستانی",
- "Slovak": "اسلواک",
+ "Slovak": "اسلواکی",
"Spanish": "اسپانیایی",
+ "SpanishLatinAmerica": "اسپانیایی - آمریکای لاتین",
+ "SpanishSpain": "اسپانیایی - اسپانیا",
"Swedish": "سوئدی",
"Tamil": "تامیلی",
"Thai": "تایلندی",
@@ -1562,26 +1673,26 @@
"Silver": "نقره"
},
"mapsNames": {
- "Big G": "بزرگ G",
- "Bridgit": "بریدگیت",
+ "Big G": "بزرگ G",
+ "Bridgit": "پل میانی",
"Courtyard": "حیاط",
"Crag Castle": "قلعه پرتگاه",
"Doom Shroom": "رستاخیز",
"Football Stadium": "استادیوم فوتبال",
- "Happy Thoughts": "پرواز",
+ "Happy Thoughts": "رویای شیرین",
"Hockey Stadium": "استادیوم هاکی",
- "Lake Frigid": "یخبندان",
+ "Lake Frigid": "دریاچهی یخزده",
"Monkey Face": "صورت میمون",
"Rampage": "خشم",
- "Roundabout": "میدان",
+ "Roundabout": "میدان نبرد",
"Step Right Up": "پایدار",
"The Pad": "رینگ",
"Tip Top": "تیپ تاپ",
- "Tower D": "برج دی",
- "Zigzag": "زیگ زاگ"
+ "Tower D": "برج D",
+ "Zigzag": "زیگزاگ"
},
"playlistNames": {
- "Just Epic": "فقط حرکت آهسته",
+ "Just Epic": "فقط حماسی",
"Just Sports": "فقط ورزشی"
},
"scoreNames": {
@@ -1599,42 +1710,49 @@
"Account unlinking successful!": "قطع شدن حساب با موفقیت انجام شد",
"Accounts are already linked.": "حسابها قبلا مرتبط شدهاند",
"Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "نمای آگهی تأیید نمی شود\nلطفا مطمئن باشید که نسخه رسمی و به روز بازی را اجرا می کنید",
- "An error has occurred; (${ERROR})": "متاسفانه یک مشکل رخ داده ؛ (${ERROR})",
+ "An error has occurred; (${ERROR})": "(${ERROR}) متاسفانه مشکلی رخ داده؛",
"An error has occurred; please contact support. (${ERROR})": "یک مشکل رخ داده! لطفا با پشتیبانی تماس بگیرید؛ (${ERROR})",
- "An error has occurred; please contact support@froemling.net.": ".تماس بگیرید support@froemling.net خطایی رخ داده است. لطفاً با",
+ "An error has occurred; please contact support@froemling.net.": ".ایمیل بزنید support@froemling.net خطایی رخ داده است. لطفن به",
"An error has occurred; please try again later.": ".خطایی رخ داده است. لطفاً بعداً تلاش کنید",
"Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "آیا مطمئن هستید که میخواهید این حسابها را به هم متصل کنید؟\n\n${ACCOUNT1}\n${ACCOUNT2}\n\n!این کار برگشتپذیر نیست",
"BombSquad Pro unlocked!": "!نسخهٔ حرفهای باز شد",
"Can't link 2 accounts of this type.": ".نمیتوان دو حساب از این نوع را پیوند داد",
"Can't link 2 diamond league accounts.": "نمیتوان حساب دو لیگ الماس را پیوند داد.",
"Can't link; would surpass maximum of ${COUNT} linked accounts.": "پیوند نمیشود; حداکثر از ${COUNT} پیوند پشتیبانی میشود.",
- "Cheating detected; scores and prizes suspended for ${COUNT} days.": "تقلب تشخیص داده شد; امتیازات و جوایز برای ${COUNT} روز تعلیق شد.",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": ".روز تعلیق شد ${COUNT} تقلب شناسایی شد؛ امتیازها و جایزهها برای",
"Could not establish a secure connection.": "نمیتوان یک اتصال امن ایجاد کرد",
- "Daily maximum reached.": "به حداکثر روزانه رسیده است",
- "Entering tournament...": "ورود به مسابقات ...",
+ "Daily maximum reached.": "به حداکثر ارقام روزانه رسیدید",
+ "Daily sign-in reward": "پاداش ورود روزانه",
+ "Entering tournament...": "ورود به مسابقات...",
+ "Higher streaks lead to better rewards.": "رگه های بالاتر منجر به پاداش بهتر می شود.",
"Invalid code.": "کد نامعتبر",
- "Invalid payment; purchase canceled.": "پرداخت با خطا مواجه شد؛ خرید لغو شد",
- "Invalid promo code.": "کد نامعتبر است.",
+ "Invalid payment; purchase canceled.": "پرداخت نامعتبر؛ خرید لغو شد.",
+ "Invalid promo code.": "کد دعوتی نامعتبر است.",
"Invalid purchase.": "خرید نا معتبر",
"Invalid tournament entry; score will be ignored.": "ورود مسابقات نامعتبر است؛ نمره نادیده گرفته می شود.",
"Item unlocked!": "!مورد باز شد",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "پیوند کردن ممنوع شد ${ACCOUNT} شامل\nداده های قابل توجهی که می توانند از دست بدهند.\nشما می توانید در صورت مخالفت پیوست کنید اگر دوست دارید\n(و در عوض داده های این حساب را از دست می دهید)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "را به این حساب پیوند دهید؟ ${ACCOUNT} آیا مایلید که حساب کاربری \n.از بین خواهد رفت ${ACCOUNT} تمام اطلاعات روی حساب\nاین کار برگشتپذیر نیست. آیا مطمئنید؟",
+ "Longer streaks lead to better rewards.": "دورههای طولانیتر ورود روزانه به بازی منجر به پاداشهای بهتر میشود.",
"Max number of playlists reached.": "تعداد بازی ها به حداکثر رسیده است",
"Max number of profiles reached.": ".تعداد نمایهها به حداکثر رسیده است",
"Maximum friend code rewards reached.": ".حداکثر جایزه کد ارسالی برای دوستان دریافت شد",
"Message is too long.": "پیام خیلی طولانی است",
+ "New tournament result!": "نتیجه مسابقات جدید!",
"No servers are available. Please try again soon.": "هیچ سروری در دسترس نیست. لطفا به زودی دوباره امتحان کنید",
+ "No slots available. Free a slot and try again.": "محل صندوقی موجود نیست. یک محل صندوق ی آزاد کنید و دوباره امتحان کنید.",
"Profile \"${NAME}\" upgraded successfully.": ".با موفقیت ارتقا یافت «${NAME}» نمایهٔ",
"Profile could not be upgraded.": ".نمایه نمیتواند ارتقا یابد",
"Purchase successful!": "خرید با موفقیت انجام شد",
- "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "بدست آمده ${COUNT} بلیت برای ورود به سیستم.\nفردا برگرد برای دریافت ${TOMORROW_COUNT}.",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": ".تا بلیت برای ورود به برنامه دریافت کردی${COUNT}\n.تا دوباره سر بزن${TOMORROW_COUNT} فردا برای دریافت",
"Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "این نسخه از بازی دیگر توسط سرور پشتیبانی نمی شود.\nلطفا از جدید ترین نسخه بازی استفاده کنید.",
"Sorry, there are no uses remaining on this code.": "با عرض پوزش, این کد دیگر کاربرد ندارد",
"Sorry, this code has already been used.": "با عرض پوزش، این کد قبلا استفاده شده است.",
"Sorry, this code has expired.": "متاسفانه این کد منقضی شده",
"Sorry, this code only works for new accounts.": "با عرض وزش پوزش, این کد فقط برا حساب کاربری جدید کاربرد داره",
+ "Sorry, this has expired.": "متاسفانه درخواست منقضی شده.",
"Still searching for nearby servers; please try again soon.": "هنوز سرورهای اطراف را جستجو می کنید. لطفا به زودی دوباره امتحان کنید",
+ "Streak: ${NUM} days": "روز ${NUM} دورهی ورود روزانه:",
"Temporarily unavailable; please try again later.": "در حال حاضر این گذینه موجود نمی باشد؛لطفا بعدا امتحان کنید",
"The tournament ended before you finished.": "مسابقات به پایان رسید قبل از اینکه شما به پایان برسید.",
"This account cannot be unlinked for ${NUM} days.": "این حساب برای مدت ${NUM} روز قابل جداسازی نیست!",
@@ -1645,19 +1763,28 @@
"Tournaments require ${VERSION} or newer": "تورنومنت ها به${VERSION}جدید تر یا حرفه ای نیاز دارند",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "آیا مایلبد حساب ${ACCOUNT} را از حساب خودتان جداسازی کنید؟\nتمام اطلاعات حساب ${ACCOUNT} بازنویسی خواهد شد.\n(به جز بعضی از افتخارات کسب شده)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "اخطار: شکایت هایی مبنی بر استفاده شما از ابزار های تقلب به دست ما رسیده!\nدر صورت تکرار حساب کاربری شما مسدود خواهد شد! لطفا جوانمردانه بازی کنید.",
+ "Wait reduced!": "انتظار کاهش یافت",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "هشدار: این نسخه از بازی به داده های حساب قدیمی محدود شده است. ممکن است چیزهایی گم شده یا قدیمی به نظر برسند\nلطفا برای مشاهده آخرین اطلاعات حساب خود به نسخه جدیدتر بازی ارتقا دهید",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "میخواهید دستگاهتون رو به این دستگاه متصل کنید؟\n\nحساب دستگاهی شما ${ACCOUNT1}\nاین حساب ${ACCOUNT2}\n\nاین مشکلی توی سیو و پیشرفت شما ایجاد نمیکنه.\nاخطار: بعدا نمیتونید پشیمون بشید!",
"You already own this!": "قبلا اینو گرفتی",
- "You can join in ${COUNT} seconds.": ".ثانیه ${COUNT} شما میتوانید متصل شوید در",
+ "You can join in ${COUNT} seconds.": ".ثانیهی دیگر میتوانید بپیوندید ${COUNT} تا",
"You don't have enough tickets for this!": "شما بلیط کافی برای این ندارید",
"You don't own that.": ".اون مال شما نیست",
"You got ${COUNT} tickets!": "! تا بلیط گرفتی ${COUNT}",
+ "You got ${COUNT} tokens!": "!تا توکن گرفتی ${COUNT}",
"You got a ${ITEM}!": "! گرفتی ${ITEM} یه دونه",
+ "You got a chest!": "!یه صندوق گرفتی",
+ "You got an achievement reward!": "!یه پاداش دستاورد گرفتی",
"You have been promoted to a new league; congratulations!": "شما به یک لیگ جدید ارتقا دادهاید؛ تبریک میگوییم!",
+ "You lost a chest! (All your chest slots were full)": "یک صندوق از دست دادی! (همه محل های صندوق شما پر بود)",
+ "You must update the app to view this.": "برای دیدن این بخش باید بازی را بروزرسانی کنید",
"You must update to a newer version of the app to do this.": "برای انجام این کار شما باید بازی را به روز رسانی کنید",
"You must update to the newest version of the game to do this.": "برای انجام این کار باید از آخرین نسخه بازی استفاده کنید.",
"You must wait a few seconds before entering a new code.": "شما باید چند ثانیه قبل از وارد کردن یک کد جدید صبر کنید.",
+ "You placed #${RANK} in a tournament!": "شما #${RANK} را در یک تورنمنت قرار دادید!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "! شدید . ممنون که شرکت کردید ${RANK} شما در آخرین مسابقه رتبه ی",
"Your account was rejected. Are you signed in?": "حساب شما رد شده است. آیا وارد حساب خود شده اید؟",
+ "Your ad views are not registering. Ad options will be limited for a while.": "بازدیدهای تبلیغاتی شما ثبت نمی شود. گزینه های تبلیغاتی برای مدتی محدود خواهد بود.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "نسخه بازی شما دستکاری شده است.\nلطفا تغییرات رو به حالت اول برگردونید و دوباره امتحان کنید.",
"Your friend code was used by ${ACCOUNT}": "کد دوست شما استفاده شده توسط ${ACCOUNT}"
},
@@ -1675,56 +1802,56 @@
"Balance Total Lives": "مجموعِ جانِ باقيمانده",
"Bomb Spawning": "بازسازی بمب",
"Chosen One Gets Gloves": "دستکش بکس برای مالک پرچم",
- "Chosen One Gets Shield": "قرار دادن سپر برای مالک پرچم",
+ "Chosen One Gets Shield": "دادن سپر به مالک پرچم",
"Chosen One Time": "انتخاب زمان",
"Enable Impact Bombs": "فعالسازی تاثیر بمب ها",
"Enable Triple Bombs": "فعال کردن بمب سه گانه",
"Entire Team Must Finish": "کل تیم باید نابود بشن",
"Epic Mode": "حرکت آهسته",
- "Flag Idle Return Time": "پرچم زمان بازگشت بیدرنگ",
+ "Flag Idle Return Time": "زمان بازگشت پرچم رهاشده",
"Flag Touch Return Time": "زمان بازگشت لمس پرچم",
"Hold Time": "زمان نگه داشتن",
- "Kills to Win Per Player": "هرکی بیشتر نابود کنه",
- "Laps": "دور ها",
+ "Kills to Win Per Player": "تعداد کشته برای پیروز شدن",
+ "Laps": "دورها",
"Lives Per Player": "تعداد جان برای بازیکن",
"Long": "طولانی",
"Longer": "خیلی طولانی",
- "Mine Spawning": "مین گذاری",
+ "Mine Spawning": "کاشت مین",
"No Mines": "بدون مین",
"None": "هيچ",
"Normal": "معمولی",
"Pro Mode": "حالت حرفه ای",
- "Respawn Times": "زمان برگشت بازیکن مرده",
- "Score to Win": "امتیاز بگیر تا برنده شی",
+ "Respawn Times": "زمان دوباره زنده شدن",
+ "Score to Win": "تعداد امتیاز برای برنده شدن",
"Short": "کوتاه",
- "Shorter": "کوتاه تر",
- "Solo Mode": "حالت انفرادی",
+ "Shorter": "خیلی کوتاه",
+ "Solo Mode": "حالت تکی",
"Target Count": "تعداد هدف",
"Time Limit": "محدودیت زمانی"
},
"statements": {
- "${TEAM} is disqualified because ${PLAYER} left": "بازیرو ترک کرد ${PLAYER} ردصلاحیت شد چون ${TEAM}",
- "Killing ${NAME} for skipping part of the track!": "! از بین رفت چون جِرزنی کرد ${NAME}",
- "Warning to ${NAME}: turbo / button-spamming knocks you out.": "هشدار به ${NAME}: توربو/اسپم دادن شما را مسدود میکند"
+ "${TEAM} is disqualified because ${PLAYER} left": "بازی را ترک کرد ${PLAYER} رد صلاحیت شد چون ${TEAM}",
+ "Killing ${NAME} for skipping part of the track!": "!بهخاطر جرزنی از بین رفت ${NAME}",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": ".توربو/اسپم دادن شما را مسدود میکند :${NAME} هشدار به"
},
"teamNames": {
- "Bad Guys": "تیم حریف",
+ "Bad Guys": "آدم بد ها",
"Blue": "آبی",
- "Good Guys": "تیم خودی",
+ "Good Guys": "آدم خوب ها",
"Red": "قرمز"
},
"tips": {
- "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "یه مشت جهشی پرشی چرخشی با زمان بندی درست ، با یه ضربه حریف رو نابود میکنه\n! از این حرکتا بزن بعدش برا دوستات تعریف کن",
- "Always remember to floss.": "حرفهای باش، بَرنده باش..",
- "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "برای خودت و دوستات نمایه بساز تا مجبور نشی\n.از «بازیکنان تصادفی» خودِ بازی استفاده کنی",
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "یه مشت جهشی-پرشی-چرخشی با زمان بندی درست، با یه ضربه حریف رو نابود میکنه\nاز این حرکتا بزن بعدش برا دوستات تعریف کن",
+ "Always remember to floss.": "...حرفه ای باش، برنده باش",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "برای خودت و دوستات پروفایل بساز تا مجبور نشی\n.از اسم های شانسی خودِ بازی استفاده کنی",
"Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "جعبه ی مرگ تو رو تبدیل به یه بمب ساعتی می کنه\nاگه می خوای زنده بمونی باید سریع یه جعبه درمان بگیری",
"Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "تمام کارکتر های بازی دارای توانایی های یکسانی هستند بنابراین شما فقط کافیه\nنزدیکترین کارکتر به شخصیت خودتون رو انتخاب و پیکربندی کنید",
- "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "فکر میکنی با گرفتن ضد ضربه شکست ناپذیر میشی ؟ اگه از زمین پرت بشی پایین چی ؟",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "فکر میکنی با گرفتن شیلد شکست ناپذیر میشی ؟ اگه از زمین پرت بشی پایین چی ؟",
"Don't run all the time. Really. You will fall off cliffs.": "تمام وقت درطول بازی با سرعت حرکت نکنید ممکنه از صخره پرت بشید",
"Don't spin for too long; you'll become dizzy and fall.": "زیاد به دور خودت نچرخ؛ سرگیجه میگیری و میافتی.",
"Hold any button to run. (Trigger buttons work well if you have them)": "هر دکمه رو با زدن روش کار میکنه همه دکمه ها بدرستی کار میکنه اگه صحیح زده بشن",
"Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "موقع حرکت یه دکمه رو همزمان نگهدار مثلا مشت رو تا سرعت حرکت بیشتر شه\nاما توی سرعت زیاد مراقب پایین افتادن از صخره باش",
- "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "بمب های یخی برا نابودی خیلی قدرتمند نیستن ولی نزدیک هر کی منفجر بشه منجمد میشه \n اگه نمیخواید منجمد و آسیب پذیر بشوید نزدیک این بمب ها نمونید",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "بمب های یخی برا نابودی خیلی قدرتمند نیستن ولی نزدیک هر کی منفجر بشه منجمد میشه \n اگه نمیخواید منجمد و آسیب پذیر بشید نزدیک این بمب ها نمونید",
"If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "اگه کسی شما رو از زمین بلند کرد با مشت و پرش و کشیدن اجازه \nحرکت بهش ندید تا رها بشید",
"If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "اگر روی کنترلرها کوتاه هستید، برنامه '${REMOTE_APP_NAME}' را نصب کنید\nبر روی دستگاه های تلفن همراه خود را میتوان به عنوان کنترلر استفاده کنید.",
"If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "اگر بمب چسبنده ای به شما چسبید به اطراف بپرید و بچرخید\n😅کار دیگری از شما بر نمیآید",
@@ -1732,7 +1859,7 @@
"If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "اگه یه جعبه نابودگر رو به اشتباه گرفتین کارتون تمومه مگه اینکه ظرف چند\nثانیه یه جعبه ی درمان گیر بیارید",
"If you stay in one place, you're toast. Run and dodge to survive..": "اگه فقط توی یه مکان ثابت بمونید کباب میشید پس بهتره مرتب توی زمین تحرک داشته باشی",
"If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "اگر تعداد زیادی از بازیکنان در حال رفت و آمد هستند، بازیکنان \"بیروت انداختن بازیکنان غیرفعال\" را روشن کنید\nتحت تنظیمات در صورتی که کسی فراموش میکندپیش از خروج از بازی ترک بازی را بزند.",
- "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "اگر دستگاه شما بیش از حد گرم می شود یا شما می خواهید برای حفظ قدرت باتری،\nکم کنید \"کیفیت\" یا \"وضوح تصویر\" رو در تنظیمات> گرافیک",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "اگر دستگاه شما بیش از حد گرم می شود یا شما می خواهید برای حفظ قدرت باتری،\n\"کیفیت\" یا \"وضوح تصویر\" رو در تنظیمات> گرافیک\nکم کنید",
"If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "اگر دیدید که نرخ فریم تصویر کمی متلاطم است کاهش بدید رزولوشن \nیا کیفیت تصویر رو در تنظیمات گرافیک بازی",
"In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "توی بازی رساندن پرچم ، باید پرچم تیم شما همون جا باقی بمونه\nاگه تیم حریف پرچم تیم شما رو برداشت باید از دستش کش بری",
"In hockey, you'll maintain more speed if you turn gradually.": "روی زمین های یخی ، یه دفعه چرخیدن خیلی از سرعت بازیکن کم میکنه",
@@ -1757,7 +1884,7 @@
"You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "شما می تونید مشت های خودتون رو به جهت مشخصی وارد کنید با چرخیدن به چپ و راست\nاین کار برای پرت کردن دشمنان از لبه ی زمین به پایین یا امتیاز گرفت در هاکی موثره",
"You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "با دیدن رنگ جرقه ی بمب میشه فهمید چه موقع منفجر میشه\n!!!! زرد ... نارنجی ... قرمز ... بوم",
"You can throw bombs higher if you jump just before throwing.": "شما میتونید بمبهاتون رو دورتر پرتاب کنید اگه همزمان با یه پرش به موقع باشه",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "شما آسیب می بینید زمانی که سرتون به چیزی برخورد میکنه پس بیشر احتیاط کنید\nزمانی هم که چیزی به سمتتون پرتاب میشه",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "اگه سرت به جایی برخورد کنه آسیب میبینی،\n .پس سعی کن سرت به جایی نخوره",
"Your punches do much more damage if you are running or spinning.": "مشت هاتون موثر تر خواهند بود اگر هنگام حرکت سریع و یا چرخش وارد بشن"
}
},
@@ -1767,79 +1894,86 @@
"tutorial": {
"cpuBenchmarkText": "آموزش اجرای بهتر بازی در بدترین وضعیت سرعت بازی در درجه اول تست سرعت پردازنده",
"phrase01Text": "!سلام جیگر",
- "phrase02Text": "! خوش آمدی ${APP_NAME} به",
- "phrase03Text": ". قبل از شروع ، یک سری آموزش ها هست که باید ببینی",
- "phrase04Text": "متکی به اعمال فیزیکی اند ${APP_NAME} چیزای زیادی در",
- "phrase05Text": "... مثلا وقتی با مشت میفتی به جون یه نفر",
- "phrase06Text": "! این جوری حتی خون از دماغش نمیاد",
- "phrase07Text": "... چجوری برات دلقک بازی در میاره ${NAME} نگاه کن",
- "phrase08Text": ".باید حالشو بگیری ! پرش و چرخش قدرت مشت رو بیشتر می کنه",
- "phrase09Text": "! آهان ! حالا شد",
- "phrase10Text": ".دویدن هم موثره",
- "phrase11Text": "برای دویدن باید یه دکمه ی دلخواه رو فشار بدی و نگه داری",
- "phrase12Text": "! دویدن و چرخیدن باعث میشه که فکش بیاد پایین",
- "phrase13Text": "اومد پایین ؟ ${NAME} دیدی چطوری فک",
- "phrase14Text": "${NAME} خیلی چیزها رو میشه بلند کرد و پرت کرد . یعنی پرچم یا بازیکنهای دیگه مثل",
- "phrase15Text": "! حالا وقت بمبارون کردنه",
- "phrase16Text": "بمب انداختن یه کم تمرین لازم داره",
- "phrase17Text": "این چه طرز بمب انداختنه ؟",
- "phrase18Text": "اگه حرکت کنی بمب دورتر پرت میشه",
- "phrase19Text": "اگه بپری بمب بیشتر پرت میشه",
- "phrase20Text": "! اگه به صورت شلاقی بمب پرت کنی که دیگه هیچی ... نمی دونی تا کجا میره",
- "phrase21Text": "این که چه موقع پرتش کنی خیلی مهمه",
- "phrase22Text": "!!! بوم",
- "phrase23Text": "قبل از انداختن بمب یه کم نگهش دار ... تا به محض این که به هدف رسید بترکه",
- "phrase24Text": "باریکلا ! به این میگن انفجار",
- "phrase25Text": "دیدی اصلا سخت نبود ؟",
- "phrase26Text": "حالا دیگه مثل یه ببر قوی شدی",
- "phrase27Text": "این آموزش ها رو به یاد داشته باش، و مطمئن باش که زنده برمیگردی!",
- "phrase28Text": "! ببینم چند مرده حلاجی پهلوون",
- "phrase29Text": "! خدا قوت",
- "randomName1Text": "فرد",
- "randomName2Text": "هری",
- "randomName3Text": "بیل",
- "randomName4Text": "چاک",
- "randomName5Text": "فیل",
- "skipConfirmText": ".واقعا از آموزش رد میشی ؟ هر کلیدی رو بزن تا رد بشیم",
+ "phrase02Text": "به ${APP_NAME} خوش اومدی!",
+ "phrase03Text": "چندتا آموزش واسه کنترل بازیکنت آوردم:",
+ "phrase04Text": "بیشتر چیزها توی ${APP_NAME} بر پایهی فیزیک هستن.",
+ "phrase05Text": "...مثلا وقتی که مشت میزنی",
+ "phrase06Text": "…هر چی سرعت حرکتت بیشتر باشه، ضربهت قویتره.",
+ "phrase07Text": "میبینی؟ چون ثابت وایسادی ضربهت به ${NAME} زیاد آسیب نمیرسونه.",
+ "phrase08Text": ".باید حالشو بگیری! حالا باید بپری و بچرخی تا سرعت بگیری",
+ "phrase09Text": ".آهان، حالا بهتر شد",
+ "phrase10Text": ".دویدن هم کارسازه",
+ "phrase11Text": "برای دویدن یه دکمه رو نگه دار و حرکت کن.",
+ "phrase12Text": "اگه میخوای یه مشت خفن بزنی که فکش بیاد پایین، باید بدویی و بچرخی.",
+ "phrase13Text": "اوخ! بابت اینکه فکت اومد پایین ببخشید ${NAME} جان.",
+ "phrase14Text": "خیلی چیزها رو میشه برداشت و پرتاب کرد. مثل پرچم... یا ${NAME}",
+ "phrase15Text": "نوبتیم باشه، نوبت بمبهاست.",
+ "phrase16Text": "بمب انداختن یه کم تمرین لازم داره.",
+ "phrase17Text": "اوخ اوخ! اصلا پرتاب خوبی نبود.",
+ "phrase18Text": "حرکت کردن باعث میشه تا بتونی دورتر پرتاب کنی.",
+ "phrase19Text": "پریدن باعث میشه تا بمب بیشتر ارتفاع بگیره.",
+ "phrase20Text": "اگه موقع پرتاب بچرخی که بیشتر پرت میشه ولی ممکنه ندونی کجا فرود میاد.",
+ "phrase21Text": "زمانبندی برای پرتاب بمب میتونه چالشی باشه.",
+ "phrase22Text": "لعنتی.",
+ "phrase23Text": "قبل از انداختن بمب یکم صبر کن تا فیتیلهش بسوزه و بعد پرتابش کن.",
+ "phrase24Text": "هورا! کتلت شد.",
+ "phrase25Text": "خب، این هم از این.",
+ "phrase26Text": "حالا مثل یه ببر همه رو نابود کن.",
+ "phrase27Text": "این آموزشها رو به یاد داشته باش، و مطمئن باش که زنده برمیگردی!",
+ "phrase28Text": "…خب، شاید زنده برگردی…",
+ "phrase29Text": "به هر حال موفق باشی!",
+ "randomName1Text": "فریدون",
+ "randomName2Text": "حشمت",
+ "randomName3Text": "برزو",
+ "randomName4Text": "جلال",
+ "randomName5Text": "سیروس",
+ "skipConfirmText": ".واقعا میخوای از آموزش رد بشی؟ هر کلیدی رو بزن تا رد بشیم",
"skipVoteCountText": "نفر خواستار رد شدن از آموزش هستند ${TOTAL} نفر از ${COUNT}",
- "skippingText": "از آموزش می گذریم",
- "toSkipPressAnythingText": "هر کلیدی را بزنید تا از آموزش خارج شوید"
+ "skippingText": "رد شدن از آموزش...",
+ "toSkipPressAnythingText": "(برای رد شدن از آموزش میتونید روی هر چیزی بزنید)"
},
- "twoKillText": "نابودی دونفر همزمان",
- "unavailableText": "چیزی در دسترس نیست",
- "unconfiguredControllerDetectedText": ":کنترول پیکربندی نشده شناسایی شد",
+ "twoKillText": "دو نفرو با هم کشتی!",
+ "uiScaleText": "UI مقیاس",
+ "unavailableText": "در دسترس نیست",
+ "unclaimedPrizesText": "شما جایزه های بی ادعایی دارید",
+ "unconfiguredControllerDetectedText": ":کنترلر پیکربندی نشده شناسایی شد",
"unlockThisInTheStoreText": ". این مورد باید در فروشگاه باز شود",
- "unlockThisProfilesText": "برای ایجاد بیش از ${NUM} پروفال٫ احتیاج به این موارد دارید:",
+ "unlockThisProfilesText": "برای ایجاد بیش از ${NUM} پروفایل٫ احتیاج به این موارد دارید:",
"unlockThisText": ": برا باز کردن قفل این شما نیاز دارید که",
- "unsupportedHardwareText": "با عرض پوزش، این سخت افزار توسط این ساخت بازی پشتیبانی نمی شود.",
- "upFirstText": "برای بار اول :",
- "upNextText": "${COUNT} بعدی در بازی",
+ "unsupportedControllerText": "متاسفانه کنترلر \"${NAME}\" پشتیبانی نمیشود.",
+ "unsupportedHardwareText": "با عرض پوزش، این سخت افزار توسط این بازی پشتیبانی نمی شود.",
+ "upFirstText": "بازی اول:",
+ "upNextText": "${COUNT} در ادامه در بازی:",
"updatingAccountText": "... در حال بهروزرسانی حساب",
"upgradeText": "ارتقا",
- "upgradeToPlayText": "بازی را خریداری کنید تا این گزینه فعال شود ${PRO} نسخه ی",
+ "upgradeToPlayText": "بازی را از فروشگاه خریداری کنید تا این قابلیت فعال شود. ${PRO} نسخه ی",
"useDefaultText": "استفاده از پیش فرض",
+ "userSystemScriptsCreateText": "ایجاد اسکریپتهای سیستمی کاربر",
+ "userSystemScriptsDeleteText": "حذف اسکریپتهای سیستمی کاربر",
"usesExternalControllerText": "این بازی از یک کنترلر خارجی برای ورودی استفاده می کند.",
- "usingItunesText": "استفاده از برنامه ی موسیقی برای موسیقی متن",
+ "usingItunesText": "استفاده از برنامه ی موسیقی برای موسیقی متن...",
"usingItunesTurnRepeatAndShuffleOnText": "مطمین شید که شافل روشن است و تکرار کنید همه رو در آیتونز",
"v2AccountLinkingInfoText": "برای پیوند دادن حسابهای V2، از دکمه «مدیریت حساب» استفاده کنید.",
+ "v2AccountRequiredText": "این به یک حساب V2 نیاز داره !. حسابتو ارتقا بده دوباره امتحان کن.",
"validatingTestBuildText": "... در حال بررسی حالت آزمایشی",
- "victoryText": "! برنده شدی",
- "voteDelayText": ".ثانیه رای گیری کنید ${NUMBER} شما نمیتوانید به مدت",
- "voteInProgressText": ".یک رای گیری در حال انجام است",
- "votedAlreadyText": ".شما رای داده اید",
- "votesNeededText": ".رای نیاز است ${NUMBER}",
- "vsText": "علیه",
- "waitingForHostText": "ادامه بدهد ${HOST} صبر می کنیم تا",
+ "viaText": "از طریق",
+ "victoryText": "پیروز شدی!",
+ "voteDelayText": ".ثانیه رای گیری کنی ${NUMBER} نمیتونی به مدت",
+ "voteInProgressText": "یه رای گیری داره انجام میشه.",
+ "votedAlreadyText": "تو که رای دادی.",
+ "votesNeededText": ".رای لازمه ${NUMBER}",
+ "vsText": "در برابر",
+ "waitingForHostText": "( ادامه بده ${HOST} صبر کن تا)",
"waitingForPlayersText": "...انتظار برای پیوستن بازیکنان",
- "waitingInLineText": "در صف انتظار(پارتی تکمیل است) ...",
+ "waitingInLineText": "در صف انتظار (پارتی تکمیل است) ...",
"watchAVideoText": "یک ویدئو ببینید",
- "watchAnAdText": "تبلیغ ببین",
+ "watchAnAdText": "یه تبلیغ ببینید",
"watchWindow": {
"deleteConfirmText": "حذف شود؟\"${REPLAY}\"",
"deleteReplayButtonText": "حذف\nبازبخش",
- "myReplaysText": "بازیهای ضبطشدهٔ من",
+ "myReplaysText": "بازیهای ضبطشدهی من",
"noReplaySelectedErrorText": "بازپخشی انتخاب نشده",
- "playbackSpeedText": "سرعت باز پخش:${SPEED}",
+ "playbackSpeedText": "${SPEED} :سرعت پخش",
"renameReplayButtonText": "تغییرنام\nبازبخش",
"renameReplayText": ":به \"${REPLAY}\"تغییر نام",
"renameText": "تغییر نام",
@@ -1856,7 +1990,7 @@
"wellSureText": "! حتما",
"whatIsThisText": "این چیه؟",
"wiimoteLicenseWindow": {
- "titleText": "DarwiinRemote Copyright"
+ "titleText": "کشیدن حق برداشت کنترلر"
},
"wiimoteListenWindow": {
"listeningText": "گوش دادن به Wiimotes ...",
@@ -1868,18 +2002,18 @@
"listenText": "گوش بده",
"macInstructionsText": "اطمینان حاصل کنید که رشته خود خاموش است و بلوتوث را فعال کنید\nدر مک خود را، و سپس دکمه \"گوش دهید\". پشتیبانی Wiimote می توانید\nیک کمی پوسته پوسته، بنابراین شما ممکن است باید سعی کنید چند بار\nقبل از شما یک اتصال.\nبلوتوث باید به 7 دستگاه های متصل رسیدگی کردن،\nهر چند مسافت پیموده شده شما ممکن است متفاوت باشد.\n\nBombSquad پشتیبانی از Wiimotes اصلی، Nunchuks،\nو کنترل کلاسیک.\nجدیدتر رشته از راه دور علاوه در حال حاضر بیش از حد کار\nاما با فایل پیوست است.",
"thanksText": "تشکر از تیم ناظر\nبرای ایجاد این امکان",
- "titleText": "Wiimote Setup"
+ "titleText": "راه اندازی ویماوت"
},
- "winsPlayerText": "${NAME} برنده شد",
- "winsTeamText": "${NAME} برنده شد",
- "winsText": "${NAME} برنده شد",
+ "winsPlayerText": "!برنده شد ${NAME}",
+ "winsTeamText": "!برنده شد ${NAME}",
+ "winsText": "!برنده شد ${NAME}",
"workspaceSyncErrorText": "خطا در همگامسازی ${WORKSPACE}. برای جزئیات به لاگ مراجعه کنید.",
"workspaceSyncReuseText": "نمیتوان ${WORKSPACE} را همگامسازی کرد. استفادهٔ مجدد از نسخهٔ همگامسازیشده قبلی.",
"worldScoresUnavailableText": "امتیاز های جهانی قابل دسترس نیستند.",
"worldsBestScoresText": "بهترین امتیازهای جهانی",
"worldsBestTimesText": "بهترین زمان های جهانی",
"xbox360ControllersWindow": {
- "getDriverText": "درایور",
+ "getDriverText": "دریافت درایور",
"macInstructions2Text": "برای استفاده از کنترلرها به صورت بی سیم، شما همچنین باید گیرنده را دریافت کنید\nXbox 360 Wireless Controller for Windows می آید.\nیک گیرنده به شما اجازه می دهد تا تا 4 کنترل کننده را وصل کنید.\n\nمهم: گیرنده های شخص ثالث با این راننده کار نخواهند کرد؛\nاطمینان حاصل کنید که گیرنده شما \"مایکروسافت\" را در آن می گوید، نه \"XBOX 360\".\nمایکروسافت این را به طور جداگانه به فروش نمی رساند، بنابراین شما باید آن را دریافت کنید\nیک همراه با کنترلر و یا دیگری جستجو بی.\n\nاگر این مفید را پیدا کنید، لطفا کمک مالی به آن بدهید\nتوسعه دهنده راننده در سایت خود.",
"macInstructionsText": "برای استفاده از کنترلر Xbox 360، باید نصب کنید\nدرایور Mac موجود در لینک زیر است.\nبا کنترلر های سیمی و بی سیم کار می کند.",
"macInstructionsTextScale": 0.8,
@@ -1887,6 +2021,7 @@
"titleText": "${APP_NAME}:استفاده از کنترولر های ایکس باکس با"
},
"yesAllowText": "!بله, اجازه داده میشود",
- "yourBestScoresText": "بهترین امتیاز شما",
- "yourBestTimesText": "بهترین زمان شما"
+ "yourBestScoresText": "بهترین امتیازات شما",
+ "yourBestTimesText": "بهترین زمان شما",
+ "yourPrizeText": ":جایزه شما"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/piratespeak.json b/dist/ba_data/data/languages/piratespeak.json
new file mode 100644
index 00000000..dd7d5acf
--- /dev/null
+++ b/dist/ba_data/data/languages/piratespeak.json
@@ -0,0 +1,2015 @@
+{
+ "accountSettingsWindow": {
+ "accountNameRules": "Arrrcount nammes carrnnot containn Peter Pan faces orrr otherrr special charraracters.",
+ "accountProfileText": "(ARRRccount Prrrofile)",
+ "accountsText": "Arrrrrcounts",
+ "achievementProgressText": "Arrrchivements: ${COUNT} out of ${TOTAL}",
+ "campaignProgressText": "Campaign Prrrrrogresss [Harrrrrd]: ${PROGRESS}",
+ "changeOncePerSeason": "Pirate can only change this once perrr season arrrr.",
+ "changeOncePerSeasonError": "Yer sure to bay over til' the season rolls over, Arg! (${NUM} days)",
+ "createAnAccountText": "Crrreate an Ship",
+ "customName": "Make yer own name",
+ "deleteAccountText": "Delete Account",
+ "googlePlayGamesAccountSwitchText": "You want to use me Google acounttt?\nYou bettterrr use Google Play Games!",
+ "linkAccountsEnterCodeText": "Put in Cipherrr, will ya?",
+ "linkAccountsGenerateCodeText": "Grrrab the Chiperrr",
+ "linkAccountsInfoText": "(To boast yer exploits in town, and acrross different platforrms, and acrross yer frens)",
+ "linkAccountsInstructionsNewText": "To link two pirates, generrrate a code on the first\nand enterrr that code on the second. Data from the\nsecond account will then be shared between both pirates.\n(The first pirate will get alzheimer)\n\nYer can link up to ${COUNT} pirrrates. (yarrr)\n\nSINK ME! If a pirate links to another, yer can't\ndance with Jack Ketch together! (Which son of a biscuit\neater made up this lie?)",
+ "linkAccountsInstructionsText": "Err, to bundle two rekconings, grab a cipherrr on one\nof the consoole 'en push in the chyper on the other.\nErrrnings and golds gotta be merged.\nYerr could bundle to ${COUNT} reckonings, captain.\n\nBe safe out therrrre; things can't be 'err reverted!",
+ "linkAccountsText": "Bundle 'dem Rekconings",
+ "linkedAccountsText": "Reckonings bundled:",
+ "manageAccountText": "Marnage Arrrrcount",
+ "nameChangeConfirm": "Charrrnge your arrcount nammme to ${NAME}?",
+ "resetProgressConfirmNoAchievementsText": "This will rrreset your co-op prrrogressss and\nlocal high-scorrrres (but not your playing caards).\nThis cannot be undone. Are you sure captain?",
+ "resetProgressConfirmText": "This will rrreset your co-op prrrogressss,\narrrchievements, and local high-scorrres\n(but not yourrr tickets). This cannot\nbe undone. Arrrre you surrre captain?",
+ "resetProgressText": "Rrreset Prrrogressss",
+ "setAccountName": "Set Arrrcount Namme",
+ "setAccountNameDesc": "Select the name to display forrr yourrr \naccounts. Pirate can use the name frrrom one\n of yourrr linked accounts orrr crrreate unique custom name arrr.",
+ "signInInfoText": "Sign in to collect caards, compete with battle ships,\nand share prrrogressss across yer devices.",
+ "signInText": "Sign in, matey!",
+ "signInWithAnEmailAddressText": "Signnn innn with an eeemail addddresssssssr",
+ "signInWithDeviceInfoText": "(an automatic 'you' only available frrom this plastic thing you'rre holding right therre)",
+ "signInWithDeviceText": "Sign in to the pirate ship with device arrcount",
+ "signInWithGameCircleText": "Sail with yer Game Circle",
+ "signInWithGooglePlayText": "Set sail with Google Play",
+ "signInWithTestAccountInfoText": "(ye ole' account type; here on out use yer device account)",
+ "signInWithTestAccountText": "Sign in with test account arrr.",
+ "signInWithText": "Avast ye! Be accompanied by ${SERVICE}, ye scallywags!",
+ "signInWithV2InfoText": "(Arrrrcounts that there works on any of yer ships arrrrr!)",
+ "signInWithV2Text": "Just enter with yer ${APP_NAME} account there arrr!",
+ "signOutText": "Leaving the sloop!",
+ "signingInText": "Signing in to the pirate ship!",
+ "signingOutText": "Signing out from the pirate ship!",
+ "testAccountWarningOculusText": "Warning: you are signing in with a \"test\" account.\nThis will be replaced with \"real\" accounts later this\nyear which will offer ticket purchasing and other features.\n\n\nFor now you'll have to earn all tickets in-game.",
+ "ticketsText": "yer playing cards: ${COUNT}",
+ "titleText": "Arrrcount",
+ "unlinkAccountsInstructionsText": "Set a pirate to walk the plank",
+ "unlinkAccountsText": "Unlink ye ole Accounts",
+ "unlinkLegacyV1AccountsText": "Get rrrrid of those old arrrcounts!",
+ "v2LinkInstructionsText": "Get this link as a ‘yer creation of accounts or enter in arrr!!!",
+ "viaAccount": "(by-way-of pirate ${NAME})",
+ "youAreSignedInAsText": "You be the pirate ship being:"
+ },
+ "achievementChallengesText": "Arrrrchievement Challenges",
+ "achievementText": "Doubloon",
+ "achievements": {
+ "Boom Goes the Dynamite": {
+ "description": "Kill 3 bad scurvy dogs with tnt",
+ "descriptionComplete": "Got 3 knaves off the deck with a powder box",
+ "descriptionFull": "Clear 3 knaves off ${LEVEL} usin' a powderr box",
+ "descriptionFullComplete": "Clearred 3 knaves off ${LEVEL} usin' a powderr box",
+ "name": "Fire In Th’ Box"
+ },
+ "Boxer": {
+ "description": "Beat all these buckos without any powderrr",
+ "descriptionComplete": "Victorrrious with no blassts",
+ "descriptionFull": "Complete ${LEVEL} without usin' any powderrr, no kornswoggle 'ere!",
+ "descriptionFullComplete": "Completed ${LEVEL} without usin' any powderrr, no kornswoggle 'ere!",
+ "name": "Boxrrr"
+ },
+ "Dual Wielding": {
+ "descriptionFull": "Connnect 2 contrrrollerrrs (harrrdwarre or app)",
+ "descriptionFullComplete": "Ye’ave Connnected 2 contrrrollerrrs (harrrdwarre or app)",
+ "name": "Up For A Briny Duel"
+ },
+ "Flawless Victory": {
+ "description": "Win without bein’ busted off by those stinky scurvies",
+ "descriptionComplete": "Wonn without bein’ busted off by those stinky scurvies",
+ "descriptionFull": "Win that ${LEVEL} thing without bein’ busted off by those stinky scurvies",
+ "descriptionFullComplete": "Win that ${LEVEL} thing without bein’ busted off by those stinky scurvies, all hands hoay for this handsome pirate",
+ "name": "Handsomely Won"
+ },
+ "Free Loader": {
+ "descriptionFull": "Kick off a Fight-Outrageously game with 2+ joiners arrr!!!",
+ "descriptionFullComplete": "Emerged a Fight-Outrageously game with 2+ joiners arrr!!!",
+ "name": "A Carrier Fer Nothing"
+ },
+ "Gold Miner": {
+ "description": "Rekt 6 bad guys wirrth land-mines",
+ "descriptionComplete": "Ye’ rekt 6 bad guys wirrth land-mines",
+ "descriptionFull": "Rekt 6 bad guys wirrth land-mines on ${LEVEL}",
+ "descriptionFullComplete": "Ye’ rekt 6 bad guys wirrth land-mines on ${LEVEL}",
+ "name": "Treasure Minerrrr"
+ },
+ "Got the Moves": {
+ "description": "Win without fistfight some scaliwags or firing th’ hole",
+ "descriptionComplete": "Won without fistfight some scaliwags or firing th’ hole",
+ "descriptionFull": "Win ${LEVEL} without fistfight some scaliwags or firing th’ hole",
+ "descriptionFullComplete": "Won ${LEVEL} without fistfight some scaliwags or firing th’ hole",
+ "name": "Aye Aye I Got It"
+ },
+ "In Control": {
+ "descriptionFull": "Ye connect a cutlass, can it be sharp or broken, tar!",
+ "descriptionFullComplete": "Blimey! me have cutlass like ye!",
+ "name": "Puppeteerrrr"
+ },
+ "Last Stand God": {
+ "description": "Get 1,000 doubloons",
+ "descriptionComplete": "Ye' got 1,000 doubloons",
+ "descriptionFull": "Get 1,000 doubloons on ${LEVEL}",
+ "descriptionFullComplete": "Ye' got yer' 1,000 doubloons on ${LEVEL}",
+ "name": "${LEVEL} Cap'ain"
+ },
+ "Last Stand Master": {
+ "description": "Get the damn 250 dbs",
+ "descriptionComplete": "Ye' got yer' 250 doubloons",
+ "descriptionFull": "Get 250 doubloons on ${LEVEL}",
+ "descriptionFullComplete": "Ye' got 250 doubloons on ${LEVEL}",
+ "name": "${LEVEL} Quartermaster!"
+ },
+ "Last Stand Wizard": {
+ "description": "Loot 500 booty",
+ "descriptionComplete": "Looted 500 booty",
+ "descriptionFull": "Loot 500 booty around ${LEVEL} island",
+ "descriptionFullComplete": "Looted 500 booty over ${LEVEL} island",
+ "name": "${LEVEL} Privateer"
+ },
+ "Mine Games": {
+ "description": "Flog 3 landlubbers with land-sharks",
+ "descriptionComplete": "Flogged 3 landlubbers with land-sharks",
+ "descriptionFull": "Flog 3 landlubbers with land-sharks around ${LEVEL} island",
+ "descriptionFullComplete": "Flogged 3 landlubbers with land-sharks over ${LEVEL} island",
+ "name": "Shark Games"
+ },
+ "Off You Go Then": {
+ "description": "Maroon 3 landlubbers off the land",
+ "descriptionComplete": "Marooned 3 landlubbers off the land",
+ "descriptionFull": "Maroon 3 landlubbers off the ${LEVEL} island",
+ "descriptionFullComplete": "Marooned 3 landlubbers off the ${LEVEL} island",
+ "name": "Off Ye Go Then"
+ },
+ "Onslaught God": {
+ "description": "Loot 5000 booty",
+ "descriptionComplete": "Looted 5000 booty",
+ "descriptionFull": "Loot 5000 booty around ${LEVEL} island",
+ "descriptionFullComplete": "Looted 5000 booty over ${LEVEL} island",
+ "name": "${LEVEL} Coffer"
+ },
+ "Onslaught Master": {
+ "description": "Loot 500 booty",
+ "descriptionComplete": "Looted 500 booty",
+ "descriptionFull": "Loot 500 booty around ${LEVEL} island",
+ "descriptionFullComplete": "Looted 500 booty over ${LEVEL} island",
+ "name": "${LEVEL} Captain"
+ },
+ "Onslaught Training Victory": {
+ "description": "Make em shark bait",
+ "descriptionComplete": "Made em shark bait",
+ "descriptionFull": "Make em shark bait in the ${LEVEL} ship",
+ "descriptionFullComplete": "Made em shark bait in the ${LEVEL} ship",
+ "name": "${LEVEL} Victory, Yo Ho Ho!"
+ },
+ "Onslaught Wizard": {
+ "description": "Loot 1000 booty",
+ "descriptionComplete": "Looted 1000 booty",
+ "descriptionFull": "Loot 1000 booty around ${LEVEL} island",
+ "descriptionFullComplete": "Looted 1000 booty around ${LEVEL} island",
+ "name": "${LEVEL} Wizarrrrrrd"
+ },
+ "Precision Bombing": {
+ "description": "Pirate strong, pirate don't need powerrrrups",
+ "descriptionComplete": "didn need those dumb cheats ehh?",
+ "descriptionFull": "get over ${LEVEL} island without pesky cheats",
+ "descriptionFullComplete": "got over ${LEVEL} island without pesky cheats, knew yer could manage it billy",
+ "name": "Powderrr Master"
+ },
+ "Pro Boxer": {
+ "description": "a real pirate needs only them fists",
+ "descriptionComplete": "yer a real pirate ye know that?",
+ "descriptionFull": "Beat them enemies in ${LEVEL} island usin yer bare hands",
+ "descriptionFullComplete": "ya killed them enemies in ${LEVEL} island usin yer bare hands",
+ "name": "Fister"
+ },
+ "Pro Football Shutout": {
+ "description": "keep them harrs out of our land",
+ "descriptionComplete": "kept them harrs out of our land (arrrr)",
+ "descriptionFull": "the best pirate is the one that keeps them harrs out of ${LEVEL} island",
+ "descriptionFullComplete": "yer the best pirate, raise the black jack! for the one who kept the harrs off of ${LEVEL}",
+ "name": "${LEVEL} Gatekeep"
+ },
+ "Pro Football Victory": {
+ "description": "Take them ship down!",
+ "descriptionComplete": "Took em down",
+ "descriptionFull": "Destroy the enemy in island ${LEVEL}",
+ "descriptionFullComplete": "yer claimed ${LEVEL} as yer own. arrrr for the cap'ain!",
+ "name": "Ocean of ${LEVEL} claimer"
+ },
+ "Pro Onslaught Victory": {
+ "description": "Take em all on",
+ "descriptionComplete": "ya claimed them ship like a pro (arrrrr wth is a pro?)",
+ "descriptionFull": "take over them flibustier's ship in ${LEVEL}",
+ "descriptionFullComplete": "crashed the enemy ship in the island of ${LEVEL} (yaarrrrrr!)",
+ "name": "Victor of ${LEVEL}"
+ },
+ "Pro Runaround Victory": {
+ "description": "Keep em out of our ship!",
+ "descriptionComplete": "The ship is safe, chips ahoy everyone (cringe)",
+ "descriptionFull": "The enemies arrrrre freebooting our ship at ${LEVEL}, stop them!",
+ "descriptionFullComplete": "Ya kept those freebooters off at ${LEVEL}. Yet a great captain",
+ "name": "Freeboot Blocker (${LEVEL})"
+ },
+ "Rookie Football Shutout": {
+ "description": "keep them harrs out of our land",
+ "descriptionComplete": "kept them harrs out of our land (arrrr)",
+ "descriptionFull": "Don't let any of themmm freebooters in our land on the ${LEVEL} island",
+ "descriptionFullComplete": "Didn't let em take the tiniest bit of ourrr prrrrescious ${LEVEL}",
+ "name": "${LEVEL} Gatekeep"
+ },
+ "Rookie Football Victory": {
+ "description": "Take the ocean!",
+ "descriptionComplete": "Im tired of translating these (arrrrrrrr)",
+ "descriptionFull": "Rekt yer enemies in ${LEVEL}",
+ "descriptionFullComplete": "Rekted yer enemies in ${LEVEL} (YARRRRRRR)",
+ "name": "Ocean of ${LEVEL} Claimer"
+ },
+ "Rookie Onslaught Victory": {
+ "description": "Make them walk yarrr plank",
+ "descriptionComplete": "Made em walk yarrr plank",
+ "descriptionFull": "Make them walk yarrr plank in ${LEVEL} island",
+ "descriptionFullComplete": "Made em walk yarrr plank in ${LEVEL} island",
+ "name": "Pirate of ${LEVEL} (yarrrr)"
+ },
+ "Runaround God": {
+ "description": "get 2000 doubloons",
+ "descriptionComplete": "got them 2000 doubloons",
+ "descriptionFull": "get 2000 doubloons on ${LEVEL}",
+ "descriptionFullComplete": "got them 2000 doubloons on ${LEVEL}",
+ "name": "${LEVEL} Eric"
+ },
+ "Runaround Master": {
+ "description": "get 500 doubloons",
+ "descriptionComplete": "got 500 doubloons, now we'rrrre talkin",
+ "descriptionFull": "get 500 doubloons on ${LEVEL} island",
+ "descriptionFullComplete": "got them 500 balloons (not doubloons, just balloons) (in ${LEVEL}, ofc)",
+ "name": "Pirate of The ${LEVEL}s"
+ },
+ "Runaround Wizard": {
+ "description": "get 1000 doubloons",
+ "descriptionComplete": "got 1000 doubloons",
+ "descriptionFull": "get 1000 doubloons in ${LEVEL} island",
+ "descriptionFullComplete": "got them thousand doubloons on ${LEVEL} ehh",
+ "name": "${LEVEL} Captain"
+ },
+ "Sharing is Caring": {
+ "descriptionFull": "share yer lives with a fellow pirrrate",
+ "descriptionFullComplete": "pirates arrrre happy together",
+ "name": "Sharrrrrre"
+ },
+ "Stayin' Alive": {
+ "description": "yarr shall not die",
+ "descriptionComplete": "yer didn die at all",
+ "descriptionFull": "beat them lily livered bastards in ${LEVEL} without walkin the plank",
+ "descriptionFullComplete": "yar didn walk the plank in ${LEVEL} ya bootyful bastard",
+ "name": "Ya Ain't a Cat"
+ },
+ "Super Mega Punch": {
+ "description": "have a fist strronger than 3 powderrrs",
+ "descriptionComplete": "yer fist shall kill a sharrrk",
+ "descriptionFull": "have yer fists kill a pirrrate with a single blow in ${LEVEL} island",
+ "descriptionFullComplete": "yer fists arrrre as strrrong as jack morrrgan's! ya prroved it in ${LEVEL}",
+ "name": "Jack's Strength"
+ },
+ "Super Punch": {
+ "description": "be half a man jack was",
+ "descriptionComplete": "yer stepping in the right dirrection pirrate",
+ "descriptionFull": "be half a ma jack morgan was in ${LEVEL}",
+ "descriptionFullComplete": "yer stepping in morrgan's footsteps caip'ain, i saw what yarr did in ${LEVEL} island",
+ "name": "Half a Man"
+ },
+ "TNT Terror": {
+ "description": "Kill 6 pirates with Sea mines",
+ "descriptionComplete": "Killed 6 pirates with Sea mines arrr",
+ "descriptionFull": "Kill 6 pirates with Sea mines on ${LEVEL}",
+ "descriptionFullComplete": "Killed 6 pirates with Sea mine on ${LEVEL} rawwrrrr",
+ "name": "Sea mine Mystery"
+ },
+ "Team Player": {
+ "descriptionFull": "havve a ba'le between two groups with at least 4 pirrrates",
+ "descriptionFullComplete": "i hope ya did well",
+ "name": "Ship vs. Ship"
+ },
+ "The Great Wall": {
+ "description": "Thou shalln't pass",
+ "descriptionComplete": "Stopped the pirate arrrrr",
+ "descriptionFull": "Stop all bad pirates on ${LEVEL} arghhhh....",
+ "descriptionFullComplete": "Stopped all enemies on ${LEVEL} arrrr",
+ "name": "The Deep Sea"
+ },
+ "The Wall": {
+ "description": "Stop everrry single enemy ship",
+ "descriptionComplete": "Stopped every single enemy rawrrrr...",
+ "descriptionFull": "Stop every single enemy pirate on ${LEVEL} arghhhh",
+ "descriptionFullComplete": "Stopped every single pirate on ${LEVEL} arrrr",
+ "name": "The Sea"
+ },
+ "Uber Football Shutout": {
+ "description": "Win without letting the pirates dock",
+ "descriptionComplete": "Won without letting the pirates dock",
+ "descriptionFull": "Win ${LEVEL} without letting the pirates dock",
+ "descriptionFullComplete": "Won ${LEVEL} without letting the pirates dock",
+ "name": "${LEVEL} faceoff"
+ },
+ "Uber Football Victory": {
+ "description": "Win the duel",
+ "descriptionComplete": "Won the duel arghhhh",
+ "descriptionFull": "Win the duel in ${LEVEL}",
+ "descriptionFullComplete": "Won the duel in ${LEVEL}",
+ "name": "${LEVEL} Victory"
+ },
+ "Uber Onslaught Victory": {
+ "description": "Truth shall prevail",
+ "descriptionComplete": "Sweet victory mate",
+ "descriptionFull": "Defeat all waves in ${LEVEL}",
+ "descriptionFullComplete": "Defeated all waves in ${LEVEL}",
+ "name": "${LEVEL} Victory"
+ },
+ "Uber Runaround Victory": {
+ "description": "Complete all waves arrrrr",
+ "descriptionComplete": "Completed all waves arrrr",
+ "descriptionFull": "Complete all waves on ${LEVEL} arrrr",
+ "descriptionFullComplete": "Completed all waves on ${LEVEL} arrrr",
+ "name": "aye ${LEVEL} Victory"
+ }
+ },
+ "achievementsRemainingText": "Treasures Remaining:",
+ "achievementsText": "Treasures",
+ "achievementsUnavailableForOldSeasonsText": "Sorry, treasure book is not found for old seasons. arrrghhhhh",
+ "activatedText": "${THING} arrrrctivated.",
+ "addGameWindow": {
+ "getMoreGamesText": "Get More Rigs...",
+ "titleText": "Add Rig"
+ },
+ "addToFavoritesText": "Plunder to Favorites",
+ "addedToFavoritesText": "Addin' '${NAME}' to yer treasure trove o' Favorites.",
+ "allText": "All",
+ "allowText": "Permit",
+ "alreadySignedInText": "Ye ship is being controlled by a privateer;\nswap ships or track down and flog the privateer on ye ship and try again.\nFlank em out!",
+ "apiVersionErrorText": "We can't hoist the module ${NAME} aboard; it be aimin' for api-version ${VERSION_USED}; we be needin' api-version ${VERSION_REQUIRED}.",
+ "applyText": "APPLY!!!!",
+ "areYouSureText": "Are ya sure cap'ain?",
+ "audioSettingsWindow": {
+ "headRelativeVRAudioInfoText": "(\"Auto\" enables this only when headphones are plugged in)",
+ "headRelativeVRAudioText": "Cap'n's ear-beguilin' VR sound",
+ "musicVolumeText": "How Loud's t'e Shanties",
+ "soundVolumeText": "How Loud's t'e Bombs",
+ "soundtrackButtonText": "Chanties",
+ "soundtrackDescriptionText": "(pick ye own shanty f'r t'e battles)",
+ "titleText": "Sounds"
+ },
+ "autoText": "Arr-uto",
+ "backText": "Rear",
+ "banThisPlayerText": "Banish This Pirate Out!",
+ "bestOfFinalText": "Finest-of-${COUNT} End",
+ "bestOfSeriesText": "Finest of ${COUNT} drinks:",
+ "bestRankText": "Ye worst is #${RANK}, matey",
+ "bestRatingText": "Ye greatest loot is ${RATING}",
+ "betaErrorText": "This'n ship don't float anymore; time t'e check f'r a new 'un.",
+ "betaValidateErrorText": "Don't know if'n t'e ship's float'n. (me'be ye net's broken?)",
+ "betaValidatedText": "This Ship Floats; Have Fun!",
+ "bombBoldText": "KABOOM",
+ "bombText": "Kaboomy",
+ "boostText": ">Rum",
+ "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} is arranged in t'e Wheel itself.",
+ "buttonText": "stud",
+ "canWeDebugText": "Would'n ye mind if'n ye Ship automatically sends crew\nreports o' bugs, crashes n' basic usage t' t'e shipwright?\n\nT'e report hasn't any personal stuff in it n' will help t'\nkeep t'e ${APP_NAME} ship sailin' smoothly n' wi'out any bugs.",
+ "cancelText": "Abandon",
+ "cantConfigureDeviceText": "${DEVICE} can nay be altered",
+ "challengeEndedText": "This scramble is finished.",
+ "chatMuteText": "Close Ears",
+ "chatMutedText": "Ears Closed",
+ "chatUnMuteText": "Open Ears",
+ "chests": {
+ "prizeOddsText": "Yer chances o' 'avin'",
+ "reduceWaitText": "Travel Faster",
+ "slotDescriptionText": "Tis' be space for holdin yer treasure.\n\nEarn treasure by going on battles,\ngetting in tourrrrnaments, and getting \nmedals.",
+ "slotText": "Room for Beauty ${NUM}",
+ "slotsFullWarningText": "WARRNIN': All yer room for treasure chests are used.\nIf ye find any booty, it'll be goin' to the ocean.",
+ "unlocksInText": "rots open in"
+ },
+ "choosingPlayerText": "",
+ "claimText": "Claim yer bounty",
+ "codesExplainText": "Codes be provided by the scallywag developer to \nspy out and right pirate troubles.",
+ "completeThisLevelToProceedText": "Ye be need'n finish this'n\nwaters t' sail further!",
+ "completionBonusText": "Loot f'r Finish'n it!",
+ "configControllersWindow": {
+ "configureControllersText": "Sharpen Cutlasses",
+ "configureGamepadsText": "Change ye Ship's Wheels",
+ "configureKeyboard2Text": "Arrange ye Keyboard (P2)",
+ "configureKeyboardText": "Arrange ye Keyboard",
+ "configureMobileText": "Set up some Planks as Cutlasses",
+ "configureTouchText": "Arrange Fingernails",
+ "ps3Text": "PS3 Cutlasses",
+ "titleText": "Cutlasses",
+ "wiimotesText": "Wiilasses",
+ "xbox360Text": "TangerineBox 360 Cutlasses"
+ },
+ "configGamepadSelectWindow": {
+ "androidNoteText": "Entry: cutlass support varies by hand and Bone type.",
+ "pressAnyButtonText": "Touc' any studs on t'e cutlass\n ye want to arrange...",
+ "titleText": "Arrange Cutlasses"
+ },
+ "configGamepadWindow": {
+ "advancedText": "Complicate",
+ "advancedTitleText": "Complicated Cutlass Sharpening",
+ "analogStickDeadZoneDescriptionText": "(increase this if ye character be move'n when ye let go the stick)",
+ "analogStickDeadZoneText": "Blade Blind Spot",
+ "appliesToAllText": "(applies to all cutlasses of t'is class)",
+ "autoRecalibrateDescriptionText": "(enable this if ye character can nay move at full ahead)",
+ "autoRecalibrateText": "Auto-Realign Blade",
+ "axisText": "compass",
+ "clearText": "flog",
+ "dpadText": "diarrrrrheapad",
+ "extraStartButtonText": "Extra Shiny Stud",
+ "ifNothingHappensTryAnalogText": "If only air blows, try using t'e blade instead.",
+ "ifNothingHappensTryDpadText": "If only air blows, try using t'e diarrrrrheapad instead.",
+ "ignoreCompletelyDescriptionText": "(makes t'is cutlass useless, can not affect a thing)",
+ "ignoreCompletelyText": "Avoid Cutlass At All Costs",
+ "ignoredButton1Text": "Avoided Stud 1",
+ "ignoredButton2Text": "Avoided Stud 2",
+ "ignoredButton3Text": "Avoided Collision",
+ "ignoredButton4Text": "Arrrvoided Stud Four",
+ "ignoredButtonDescriptionText": "(use t'is to stop ye 'home' or 'sync' stud from affecting t'e B.O.A.T)",
+ "pressAnyAnalogTriggerText": "Touc'h any upper blade...",
+ "pressAnyButtonOrDpadText": "Touc' any stud or diarrrrheapad...",
+ "pressAnyButtonText": "Touc' a stud...",
+ "pressLeftRightText": "Touc' right or left...",
+ "pressUpDownText": "Touc' above or below...",
+ "runButton1Text": "Run Stud 1",
+ "runButton2Text": "Run Stud 2",
+ "runTrigger1Text": "Run Upper Blade 1",
+ "runTrigger2Text": "Run Upper Blade 2",
+ "runTriggerDescriptionText": "(analog upper blades let ye run like a briney deep turtle)",
+ "secondHalfText": "Use t'is to arrange t'e second half\nof a 2-cutlasses-in-1 sword that\ns'ows up as a single cutlass.",
+ "secondaryEnableText": "Permit",
+ "secondaryText": "Shared Cutlass",
+ "startButtonActivatesDefaultDescriptionText": "(t'row t'is off if yer start stud is more of a 'menu' stud)",
+ "startButtonActivatesDefaultText": "Start Stud Arrctivates Default Spyglass",
+ "titleText": "Cutlass Arrangement",
+ "twoInOneSetupText": "2-in-1 Cutlass Arrangement",
+ "uiOnlyDescriptionText": "(heave to t'is cutlass from truly slashing anyone)",
+ "uiOnlyText": "Allow Only for B.O.A.T Use",
+ "unassignedButtonsRunText": "Every No Use Studs Run",
+ "unsetText": "",
+ "vrReorientButtonText": "HATR Realign Stud"
+ },
+ "configKeyboardWindow": {
+ "configuringText": "Arranging ${DEVICE}, Ahoy!",
+ "keyboard2NoteText": "Entry 63: most boards can only register a few touc'es at\nonce, so 'aving a second board buccaneer may work better\nif t'ere is a separate board attac'ed for t'em to use.\nNote that ye'll still need to assign unique studs to the\ntwo buccaneers even in that case."
+ },
+ "configTouchscreenWindow": {
+ "actionControlScaleText": "Size Of The Wheels",
+ "actionsText": "Arrrctions",
+ "buttonsText": "studs",
+ "dragControlsText": "< drag around the stuff to place where ye want >",
+ "joystickText": "joyblade",
+ "movementControlScaleText": "Size Of The Ship",
+ "movementText": "Maneuver",
+ "resetText": "Re-Arrange",
+ "swipeControlsHiddenText": "Dispose of T'e Arrows on Yer Front",
+ "swipeInfoText": "'Swipe' style tec'niques take a little getting used to but\nmake it easier to play wit'out looking at t'e tec'niques.",
+ "swipeText": "swipe",
+ "titleText": "Arrange Fingernails"
+ },
+ "configureDeviceInSystemSettingsText": "${DEVICE} can be rigged in the System Settings app.",
+ "configureItNowText": "Arrange the stuff now?",
+ "configureText": "Arrange",
+ "connectMobileDevicesWindow": {
+ "amazonText": "Amazon Bladestore",
+ "appStoreText": "Blade Store",
+ "bestResultsText": "For best results ye'll need a water-free ship network. Ye can\nreduce ship lag by turning off other wireless boats, by\nplaying close to your ship 'eart, and by connecting the\ngame captain directly to the network via ethernet.",
+ "explanationText": "To use a plank or a larger plank as a wireless cutlass,\nadquire t'e \"${REMOTE_APP_NAME}\" cog on it. Any number of planks\ncan connect to a ${APP_NAME} battle over Se-As, and it's free of cost!",
+ "forAndroidText": "For Boatroid:",
+ "forIOSText": "for iBiteS:",
+ "getItForText": "Get ${REMOTE_APP_NAME} for iBiteS at t'e Banana App Store\nor for Boatroid at the Hoogle's Rig Store or Aazon's Bladestore",
+ "googlePlayText": "Hoogle's Rig",
+ "titleText": "Using Planks as Cutlasses:"
+ },
+ "continuePurchaseText": "Proceed for ${PRICE}, matey?",
+ "continueText": "Proceed",
+ "controlsText": "Cuts",
+ "coopSelectWindow": {
+ "activenessAllTimeInfoText": "T'is does not apply to t'e all-time finest pirate status",
+ "activenessInfoText": "T'is multiplier rises on days w'en ye\nfind coffers and drops on days w'en ye break a leg. AAAAARRRRGGGGHHHH!!!",
+ "activityText": "Nauticals",
+ "campaignText": "Champagne",
+ "challengesInfoText": "Earn prizes for completing mini-games.\n\nPrizes and difficulty levels increase\neach time a challenge is completed and\ndecrease when one expires or is forfeited.",
+ "challengesText": "Trrravel The Lands",
+ "currentBestText": "Whippsnapper's Goldies",
+ "customText": "Yarr Choice",
+ "entryFeeText": "Give Treasure!!",
+ "forfeitConfirmText": "Give up yarr treasure?!?",
+ "forfeitNotAllowedYetText": "Not yet arr!! Continue!!",
+ "forfeitText": "Sail the seas again!",
+ "multipliersText": "Extrra Help",
+ "nextChallengeText": "Next Trrreasure",
+ "nextPlayText": "Only get playyerr at",
+ "ofTotalTimeText": "yet ${TOTAL}",
+ "playNowText": "Yarr go!!",
+ "pointsText": "Doubloons",
+ "powerRankingFinishedSeasonUnrankedText": "(ship tourrnament end in which ya lad did not get)",
+ "powerRankingNotInTopText": "(yarr not in goodie ${NUMBER})",
+ "powerRankingPointsEqualsText": "= ${NUMBER} dbs",
+ "powerRankingPointsMultText": "(x ${NUMBER} dbs)",
+ "powerRankingPointsText": "${NUMBER} dbs",
+ "powerRankingPointsToRankedText": "(${CURRENT} o' ${REMAINING} dbs)",
+ "powerRankingText": "Yarr Goods",
+ "prizesText": "Me treasure!",
+ "proMultInfoText": "Yarr lad if had ${PRO}\nCould get trreasury ${PERCENT}% good extrras!!",
+ "seeMoreText": "All best ships..arr..",
+ "skipWaitText": "Skipperr, Wait",
+ "timeRemainingText": "Yarr Time",
+ "toRankedText": "Lad not goodie",
+ "totalText": "yarr result",
+ "tournamentInfoText": "Yarr get treasure to see whos\nBetter at Pirate Traveling!\n\nYarr will also receive a bit\nof goodies from the trreasure.",
+ "welcome1Text": "Arrr! This is group ${LEAGUE}. Yarr can get good\nat group best by gettin good results,receiving at\nthe trreasure book,and win trreasure at trreasure hunt.",
+ "welcome2Text": "Yarr can gett the goodies frrom the same hunts.\nThe goodies can be used to hirree new pirates,\nislands,adventure,enter treasure hunting, and morree.",
+ "yourPowerRankingText": "Yarr best evar:"
+ },
+ "copyConfirmText": "Put that rrvicious text to your boat!",
+ "copyOfText": "${NAME} Take",
+ "copyText": "Take",
+ "createAPlayerProfileText": "Make a new pirate?",
+ "createEditPlayerText": "",
+ "createText": "Make",
+ "creditsWindow": {
+ "additionalAudioArtIdeasText": "Supplymental Audio, Early Artwork, and Ideas by ${NAME}, Ahoy!",
+ "additionalMusicFromText": "Supplymental chantey from ${NAME}",
+ "allMyFamilyText": "All of me buckos and hearties w'o 'elped me learn to be a true pirate",
+ "codingGraphicsAudioText": "Building, Paint, and Mansail by ${NAME}",
+ "languageTranslationsText": "Over Sea Buccaneers:",
+ "legalText": "Letters of Marque:",
+ "publicDomainMusicViaText": "Chanties over ${NAME}",
+ "softwareBasedOnText": "T'is jacob's ladder is based in part on t'e work of ${NAME}",
+ "songCreditText": "${TITLE} Song by ${PERFORMER}\nInvented by ${COMPOSER}, Arranged by ${ARRANGER}, S'ared by ${PUBLISHER},\nCourtesy of ${SOURCE}",
+ "soundAndMusicText": "Screams and Chanteys:",
+ "soundsText": "Burps (${SOURCE}):",
+ "specialThanksText": "Special Words:",
+ "thanksEspeciallyToText": "T'is word is especially special to ${NAME}",
+ "titleText": "${APP_NAME} Entries",
+ "whoeverInventedCoffeeText": "Who'ver thought o' rum"
+ },
+ "currentStandingText": "Yer current leg is #${RANK}",
+ "customizeText": "Plunder...",
+ "deathsTallyText": "${COUNT} scuttled",
+ "deathsText": "Shark Baits",
+ "debugText": "random",
+ "debugWindow": {
+ "reloadBenchmarkBestResultsText": "Yarr good if you used the high graphic!",
+ "runCPUBenchmarkText": "Watch the fight with yarr CPU",
+ "runGPUBenchmarkText": "Watch fight yarr GPU",
+ "runMediaReloadBenchmarkText": "Re-use tha boat.",
+ "runStressTestText": "Pirate rrrandomness fighting",
+ "stressTestPlayerCountText": "Ammount of lads",
+ "stressTestPlaylistDescriptionText": "Ship",
+ "stressTestPlaylistNameText": "Yarr ship",
+ "stressTestPlaylistTypeText": "Yarr Ship Type",
+ "stressTestRoundDurationText": "Time to go",
+ "stressTestTitleText": "Piratey Rrrandoms Fight",
+ "titleText": "Computer Fights And Piratey Randomness",
+ "totalReloadTimeText": "Yarr knots at reuse is ${TIME} yarr see label for morree"
+ },
+ "defaultGameListNameText": "The Norrmal Ship Forr ${PLAYMODE}",
+ "defaultNewGameListNameText": "Me Ship Forr ${PLAYMODE}}",
+ "deleteText": "Get rrid",
+ "demoText": "show",
+ "denyText": "Yar not!",
+ "deprecatedText": "Oldie",
+ "descriptionText": "Knowabouts",
+ "desktopResText": "Yarr ship's size",
+ "deviceAccountUpgradeText": "Yarr!!\nYou're using a ship that's a device!\nThe device ships (like ${NAME}) will be plungered later on!!\nYarr better use the v2 ships and we'll see so!",
+ "difficultyEasyText": "Lil' Buccaneer",
+ "difficultyHardOnlyText": "Privateers Only",
+ "difficultyHardText": "Privateer",
+ "difficultyHardUnlockOnlyText": "T'is land can only be looted in privateer mode.\nYe think yer pirate enough? Yo Ho Ho!",
+ "directBrowserToURLText": "Direct a cobweb to t'e following gibberish:",
+ "disableRemoteAppConnectionsText": "Disallow Remote-Mateys Connections",
+ "disableXInputDescriptionText": "Yarr can control more that 4 pirates but might not have it's beauty!!",
+ "disableXInputText": "Get rid of CrossButtony",
+ "disabledText": "Narr",
+ "discardText": "Heave overboard",
+ "discordFriendsText": "Be ye lookin' to gather a crew for yer adventures? \nCome aboard our Discord and meet some new shipmates!",
+ "discordJoinText": "Plunder t' Discord",
+ "doneText": "Yarr got it!!",
+ "drawText": "Not enough!!",
+ "duplicateText": "Magically Twwice",
+ "editGameListWindow": {
+ "addGameText": "New\nAdventure",
+ "cantOverwriteDefaultText": "Yarr can't change the main ship's beauty!",
+ "cantSaveAlreadyExistsText": "That ship alrready exists!",
+ "cantSaveEmptyListText": "Yarr cant use a ship without adventure!!",
+ "editGameText": "Change\nAdventure",
+ "listNameText": "Yarr ship's name",
+ "nameText": "Naame",
+ "removeGameText": "Forgor\nGaem",
+ "saveText": "Take Treasure Map",
+ "titleText": "Ye Ship"
+ },
+ "editProfileWindow": {
+ "accountProfileInfoText": "Ye special pirate can have\nsame name as yer boat and\nhat.\n${ICONS}\n\nMake yer own pirates to use\ndifferrrent names and hats!",
+ "accountProfileText": "(ship pirate)",
+ "availableText": "Ye pirate name ${NAME} is good.",
+ "characterText": "yer pirate",
+ "checkingAvailabilityText": "waitin for pirate name \"${NAME}\" to be used..",
+ "colorText": "colorrrr",
+ "getMoreCharactersText": "Get more pirrrates..",
+ "getMoreIconsText": "Arrrrange Those Hats...",
+ "globalProfileInfoText": "Shared pirates surrree have good names\nto each other; Yarr also get hats for it.",
+ "globalProfileText": "(shared pirate)",
+ "highlightText": "colory second",
+ "iconText": "yarr hat",
+ "localProfileInfoText": "Ye alone pirate is not good enough for hats and yerr\nnames are not good. Get em shared forr betterrr name\nand good looki'n hats.",
+ "localProfileText": "(alone pirate)",
+ "nameDescriptionText": "Pirate Name",
+ "nameText": "Pirate Name",
+ "profileAlreadyExistsText": "There be a scallywag with that name already sailin' these waters!",
+ "randomText": "ranndom",
+ "titleEditText": "Change ye Pirate",
+ "titleNewText": "New Pirate",
+ "unavailableText": "Ye name ${NAME} is not good for all; ye need other name",
+ "upgradeProfileInfoText": "Yarr can magically share this pirate's name\nand can give em cool hats.",
+ "upgradeToGlobalProfileText": "Magically Share Pirate"
+ },
+ "editSoundtrackWindow": {
+ "cantDeleteDefaultText": "Arr! The music is too beauty to get off!",
+ "cantEditDefaultText": "Ye can't change normal music's beauty! Make two or make a new one.",
+ "cantOverwriteDefaultText": "Can't get off the music",
+ "cantSaveAlreadyExistsText": "That music alrready is there!!",
+ "defaultGameMusicText": "",
+ "defaultSoundtrackNameText": "Music Show",
+ "deleteConfirmText": "Get off the show:\n\n${NAME}??",
+ "deleteText": "Rrride that music \ndown the plank!",
+ "duplicateText": "Twice\nMusic",
+ "editSoundtrackText": "Change music",
+ "editText": "Change\nMusic",
+ "fetchingITunesText": "loot'n shanties from Music App...",
+ "musicVolumeZeroWarning": "W'at's t'e point o' stop'n t'e chanties?",
+ "nameText": "Label",
+ "newSoundtrackNameText": "Yarrr sound magic ${COUNT}",
+ "newSoundtrackText": "New chanty:",
+ "newText": "New\nChanty",
+ "selectAPlaylistText": "Choose a list of chanties matey",
+ "selectASourceText": "Stream of yerrr chantyfall",
+ "testText": "Arg",
+ "titleText": "Chanties",
+ "useDefaultGameMusicText": "Curse of Eric's Chanties",
+ "useITunesPlaylistText": "Chanties Magic Gamerlist",
+ "useMusicFileText": "Chanty scroll (mpc, og3, etc)",
+ "useMusicFolderText": "Chest of yerrr chanties"
+ },
+ "editText": "Reassemble",
+ "enabledText": "Yarr",
+ "endText": "Kill",
+ "enjoyText": "Arr!!",
+ "epicDescriptionFilterText": "${DESCRIPTION} in epic magic mode.",
+ "epicNameFilterText": "Epok ${NAME}",
+ "errorAccessDeniedText": "Arrrgh, the lock budgen't",
+ "errorDeviceTimeIncorrectText": "Yerrr migical @$'s clock is off by ${HOURS} nightpieces.\nThis could sunk yerrr ship.\nGo fix yerrrr crap before I make ya walk the plank.",
+ "errorOutOfDiskSpaceText": "I'm 100% sure you're the only human being that has seen this message...",
+ "errorSecureConnectionFailText": "Arrrr! The passage ain't safe, I won't take yerrr ship through, some crates may break (nooooooo)",
+ "errorText": "Argh!",
+ "errorUnknownText": "Arrrrrghh!!!",
+ "exitGameText": "Take yerrr ship out of ${APP_NAME}?",
+ "expiredAgoText": "Ran out ${T} ago",
+ "expiresInText": "Until ${T}",
+ "exportSuccessText": "'${NAME}' taken out.",
+ "externalStorageText": "Deep Chest",
+ "failText": "Urg...!",
+ "fatalErrorText": "Arr!! Me ship is not have the thing!!\nGo get new ship or maybe \nSend the parrot a message forrr ${EMAIL}!",
+ "fileSelectorWindow": {
+ "titleFileFolderText": "Get me a file orrr folderrr!!",
+ "titleFileText": "Bring me a thingy will ya?",
+ "titleFolderText": "Get the otherrrr ship!",
+ "useThisFolderButtonText": "Use Yerrr Chest?"
+ },
+ "filterText": "Cerrtain",
+ "finalScoreText": "Last Doubloons",
+ "finalScoresText": "Results!",
+ "finalTimeText": "Final Hour",
+ "finishingInstallText": "No way in hell you're actually seeing this text",
+ "fireTVRemoteWarningText": "Yarr better off using a\nController Thing orrr\nGett ${REMOTE_APP_NAME} \nForrr ya weapons!!",
+ "firstToFinalText": "Trreasure of ${COUNT} Captain",
+ "firstToSeriesText": "Treasure of ${COUNT} Ship",
+ "fiveKillText": "SUBMARINE CREW!!!",
+ "flawlessWaveText": "Scratchless Wave!",
+ "fourKillText": "QUOUT!!!",
+ "friendScoresUnavailableText": "Couldn't find yerrr matey doubloons.",
+ "gameCenterText": "GaemSquare",
+ "gameCircleText": "GaemTriangle",
+ "gameLeadersText": "Top ${COUNT} Captains",
+ "gameListWindow": {
+ "cantDeleteDefaultText": "That cursed scroll can't be destroyed.",
+ "cantEditDefaultText": "That cursed scroll can't be reassembled, copy it or write a new scroll.",
+ "cantShareDefaultText": "The cursed scroll is stuck in the palm of your hand.",
+ "deleteConfirmText": "Burn \"${LIST}\"?",
+ "deleteText": "Destroy\nScroll",
+ "duplicateText": "Copy\nScroll",
+ "editText": "Reassemble\nScroll",
+ "newText": "New\nScroll",
+ "pointsToWinText": "Booty to Conquer",
+ "seriesLengthText": "Voyage Duration",
+ "showTutorialText": "me noob",
+ "shuffleGameOrderText": "Scramble The Lines of Yerrr Scroll",
+ "titleText": "Assemble ${TYPE} Scroll"
+ },
+ "gameSettingsWindow": {
+ "addGameText": "Put Gaem"
+ },
+ "gamesToText": "${WINCOUNT} sure beats ${LOSECOUNT}",
+ "gatherWindow": {
+ "aboutDescriptionLocalMultiplayerExtraText": "Get this: any ship in ya ship can get more \npirrates if they have control thingies.",
+ "aboutDescriptionText": "Use this pad to assemble a crew.\n\nCrews let ya capture the world\nWith yerrr fellow pirates together!\n\nUse ${PARTY} to speak with yer crew\n(using PirateSpeak!1!1!!!}\n(${BUTTON} works too)",
+ "aboutText": "Scroll",
+ "addressFetchErrorText": "",
+ "appInviteMessageText": "${NAME} gave ya ${COUNT} doubloons in ${APP_NAME}",
+ "appInviteSendACodeText": "Give Yerr Matey A Key",
+ "appInviteTitleText": "${APP_NAME} Magical Invite",
+ "bluetoothAndroidSupportText": "(sails with any android pad that has a tooth that is blue)",
+ "bluetoothDescriptionText": "Get yarrr sailors on using a blue tooth!",
+ "bluetoothHostText": "Hold the tooth",
+ "bluetoothJoinText": "Be consumed by the tooth",
+ "bluetoothText": "Blue tooth",
+ "checkingText": "Looking at yerr map...",
+ "copyCodeConfirmText": "I put the order on yerr clipboard captain!",
+ "copyCodeText": "Copy ze code",
+ "dedicatedServerInfoText": "For the best ship, make yerrr own sea! Head over to bombsquadgame.com/server to learn how.",
+ "descriptionShortText": "Use the crew tab to assemble yerr.. crew.",
+ "disconnectClientsText": "This will throw ${COUNT} sailor(s)\noff yer ship. Are you sure captain?",
+ "earnTicketsForRecommendingAmountText": "Yerr maties will get ${COUNT} gold if they try the game\n(and you will get ${YOU_COUNT} gold from the treasure forrr each)",
+ "earnTicketsForRecommendingText": "Share PowderBomb\nfor painless treasure!",
+ "emailItText": "Send A Morse Code",
+ "favoritesSaveText": "Save As Favorite (arrr)",
+ "favoritesText": "Favorites",
+ "freeCloudServerAvailableMinutesText": "Next painless cloud sea available in ${MINUTES} daypieces.",
+ "freeCloudServerAvailableNowText": "There's a painless cloud sea available now captain!",
+ "freeCloudServerNotAvailableText": "There aren't any easy to get cloud seas here...",
+ "friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} goodies from ${NAME}arrrr",
+ "friendPromoCodeAwardText": "Yerr will snatch ${COUNT} from the treasure every time it's used.",
+ "friendPromoCodeExpireText": "The code will rot in ${EXPIRE_HOURS} nightpieces and only new sailors can use it.",
+ "friendPromoCodeInstructionsText": "To snatch the treasure, open ${APP_NAME}, then \"Settings->Advanced->Send Info\".\nSee bombsquadgame.com for available oceans and paths to them.",
+ "friendPromoCodeRedeemLongText": "${MAX_USES} sailors, ${COUNT} tickets each...",
+ "friendPromoCodeRedeemShortText": "It can open a ${COUNT} ticket treasure chest.",
+ "friendPromoCodeWhereToEnterText": "(in yer \"Settin's->Advanced->Send Info\")",
+ "getFriendInviteCodeText": "Get A Lock Code For Yerr Maties",
+ "googlePlayDescriptionText": "Long live google play games multiplayer...",
+ "googlePlayInviteText": "Summon",
+ "googlePlayReInviteText": "${COUNT}\nno\nno",
+ "googlePlaySeeInvitesText": "Be Summoned",
+ "googlePlayText": "Goggles",
+ "googlePlayVersionOnlyText": "The Lost Option",
+ "hostPublicPartyDescriptionText": "Make yerr own public sea",
+ "hostingUnavailableText": "Arrrgh! The ocean is gone!",
+ "inDevelopmentWarningText": "Note:\nThis\nIs\nA\nLie",
+ "internetText": "International Waters",
+ "inviteAFriendText": "Yerr maties don't have PowderTime? Summon them\nAnd they'll get ${COUNT} painless tickets!",
+ "inviteFriendsText": "Summon Mateys",
+ "joinPublicPartyDescriptionText": "Go to a Public Ocean",
+ "localNetworkDescriptionText": "Fight Over a Local Sea (Lantern, Blue Tooth, etc.)",
+ "localNetworkText": "Local Ocean",
+ "makePartyPrivateText": "Horde Yerr Treasure!",
+ "makePartyPublicText": "Share Yerr Treasure (with yerrr friens!!!)",
+ "manualAddressText": "Path",
+ "manualConnectText": "Set Sail Captain!",
+ "manualDescriptionText": "WHERES THE CITY?!",
+ "manualJoinSectionText": "Join By Path",
+ "manualJoinableFromInternetText": "Is yerr port available to international sailors?:",
+ "manualJoinableNoWithAsteriskText": "NEVER*",
+ "manualJoinableYesText": "YARRR!!",
+ "manualRouterForwardingText": "*port ${PORT} isn't connected to yerr sea matey",
+ "manualText": "Binnacle",
+ "manualYourAddressFromInternetText": "Yerr path from international waters:",
+ "manualYourLocalAddressText": "Yerr path from the bay:",
+ "nearbyText": "Local",
+ "noConnectionText": "",
+ "noPartiesAddedText": "No Crews Assembled",
+ "otherVersionsText": "eric remove these unused lstrs",
+ "partyCodeText": "Sea Fish",
+ "partyInviteAcceptText": "Be Summoned",
+ "partyInviteDeclineText": "NOOOOOO",
+ "partyInviteGooglePlayExtraText": "(embrace the 'Google Play' docks in yer 'Gather' outpost)",
+ "partyInviteIgnoreText": "Forgor",
+ "partyInviteText": "${NAME} has summoned\nYou to their ship captain!",
+ "partyNameText": "Name of Yerrr Sea",
+ "partyServerRunningText": "Yerr gaming ocean is gamin.",
+ "partySizeText": "allowed sailors",
+ "partyStatusCheckingText": "lookin' for yerr sea...",
+ "partyStatusJoinableText": "yerr sea is now known by all pirates!",
+ "partyStatusNoConnectionText": "can't navigate to port",
+ "partyStatusNotJoinableText": "yerr sea isn't known by anyone",
+ "partyStatusNotPublicText": "yerr ocean is not public",
+ "pingText": "pong",
+ "portText": "Seaport",
+ "privatePartyCloudDescriptionText": "Private seas are on cloud oceans; no need to build a dock.",
+ "privatePartyHostText": "Host yerr Own Private Shindig!",
+ "privatePartyJoinText": "Drop yerr Anchor",
+ "privateText": "Secret",
+ "publicHostRouterConfigText": "Arrr! Ye might need to be adjustin' the port-forwardin' on yer box, matey! Or if ye want a lazier option, just throw yer own secret party!",
+ "publicText": "Open Seas",
+ "requestingAPromoCodeText": "Askin' fer a key...",
+ "sendDirectInvitesText": "Send Out Bottles to Yer Shipmates",
+ "shareThisCodeWithFriendsText": "Pass along this Secret Code to yer Crewmates:",
+ "showMyAddressText": "Read Me Bey's Port and Sails",
+ "startHostingPaidText": "Host yer Own Now fer ${COST}",
+ "startHostingText": "Yar",
+ "startStopHostingMinutesText": "Ye can hoist and lower yer ships for free for the next ${MINUTES} daypieces.",
+ "stopHostingText": "Hat yer Ship",
+ "titleText": "Gatherrr",
+ "wifiDirectDescriptionBottomText": "If all yer magicpad64s have a 'Direct Magic' panel, they shall be able to use it to find\nand pair to each other. Once all stuff do be connected, ye can form docks to fight on\nhere usin' the 'Local Magic' tab, just the same as with regular magic.\n\nFer ye greatest result, the Direct Magic host should also be the ${APP_NAME} dock host.",
+ "wifiDirectDescriptionTopText": "Arr, Direct Magic can be used to connect Arch linux devices directly without\nneedin' boring magic. This works best on linux kernel 4.2 or newer.\n\nTo use it, open yer magic book and look for the Direct Magic spell matey.",
+ "wifiDirectOpenWiFiSettingsText": "Open Magic Book",
+ "wifiDirectText": "Direct Magic",
+ "worksBetweenAllPlatformsText": "(works between all sorts of magic stuff matey)",
+ "worksWithGooglePlayDevicesText": "(works with tabs with the internet explorer version of the gaem)",
+ "youHaveBeenSentAPromoCodeText": "Yar been sent a ${APP_NAME} treasure key:"
+ },
+ "getTicketsWindow": {
+ "freeText": "FRREEE!",
+ "freeTicketsText": "Painless Treasure",
+ "inProgressText": "Arrgh! we're already waiting for another ship to arrive, wait a lightfragment!",
+ "purchasesRestoredText": "Ships retrieved matey.",
+ "receivedTicketsText": "Got ${COUNT} treasures!",
+ "restorePurchasesText": "Retrieve Ships",
+ "ticketPack1Text": "smol treasure",
+ "ticketPack2Text": "Treasure",
+ "ticketPack3Text": "BIIIIIIIIG TREASURE",
+ "ticketPack4Text": "VERY BIIIIG TREASURE",
+ "ticketPack5Text": "that's a lot",
+ "ticketPack6Text": "like, ur mama size a lot",
+ "ticketsFromASponsorText": "Be enslaved\nfor ${COUNT} treasures",
+ "ticketsText": "${COUNT} Treasures",
+ "titleText": "Hoard Treasures",
+ "unavailableLinkAccountText": "Arrr, shipping be illegal on this bay.\nye can send a boat to a ship on\nanother bay and make purchases therre.",
+ "unavailableTemporarilyText": "Arrrgh! We can't do that right now cap'ain; we'll do it later matey.",
+ "unavailableText": "Sorry cap'ain, They don't ship this right now.",
+ "versionTooOldText": "Arrrgh! yer PowderTime(patent pending) is dying of old age!!! update to a newer version mate.",
+ "youHaveShortText": "ye got ${COUNT}",
+ "youHaveText": "ye have ${COUNT} treasures"
+ },
+ "goldPass": {
+ "desc1InfTokensText": "INFINITE GAMBLING!!!",
+ "desc2NoAdsText": "None of 'er pesky ads.",
+ "desc3ForeverText": "Till the end of the seven seas.",
+ "goldPassText": "Golden Ultimate Delux Limited-Edition Fire Pass"
+ },
+ "googleMultiplayerDiscontinuedText": "no\nno\nno\n-Cap'ain Eric",
+ "googlePlayPurchasesNotAvailableText": "Arrgh! Google's shipping ain't workin!\nTry to get in contact with them nerds!",
+ "googlePlayServicesNotAvailableText": "Google HQ is being infiltrated.\nWe may need to retreat.",
+ "googlePlayText": "Google go brrr",
+ "graphicsSettingsWindow": {
+ "alwaysText": "NEVER!!!",
+ "fullScreenCmdText": "Big view (Cmd-F)",
+ "fullScreenCtrlText": "Big view (Ctrl-F)",
+ "fullScreenText": "Whole Horizon",
+ "gammaText": "Delta",
+ "highText": "Better",
+ "higherText": "Best",
+ "lowText": "Bad",
+ "maxFPSText": "Max SPF",
+ "mediumText": "Meh",
+ "neverText": "ALWAYS!!!",
+ "resolutionText": "-Air pollution",
+ "showFPSText": "Show yer SPF",
+ "texturesText": "Crates",
+ "titleText": "Quality",
+ "tvBorderText": "gamer mode",
+ "verticalSyncText": "Vertical Sink Hole",
+ "visualsText": "Monocle Settings"
+ },
+ "helpWindow": {
+ "bombInfoText": "- Bomb -\nPack'n more punch than punches,\nbut c'n be cost'n ye an arm 'n a leg.\nF'r cheaper'n that ye be need'n t'\nthrow it b'fore t' fuse be run'n out.",
+ "canHelpText": "${APP_NAME} can help matey.",
+ "controllersInfoText": "Yarr can set sail in ${APP_NAME} with yer mateys over the sea, or ye\ncan all sail from the same dock if ye have enough boats.\n${APP_NAME} accepts any of yer boats; yarr can even use rafts\nas boats with the \"${REMOTE_APP_NAME}\" app.\nRead through Settings->Boats to learn more.",
+ "controllersInfoTextRemoteOnly": "Yarr can set sail in ${APP_NAME} with yer mateys over the sea, or ye\ncan all sail from the same dock if ye use rafts\nas boats with the \"${REMOTE_APP_NAME}\" app.",
+ "controllersText": "Boats",
+ "controlsSubtitleText": "Yer ${APP_NAME} pirate can do some violent stuff cap'ain:",
+ "controlsText": "Actions",
+ "devicesInfoText": "The VR version of ${APP_NAME} can battle against other ships over\nthe sea. So get yer mateys on their normy rafts, boats,\nand ships and fight for glory cap'ain. ya can even get\na regular ship hooked up to the VR version just so that yer\nmateys can watch yer glorious battles from land.",
+ "devicesText": "Docks",
+ "friendsGoodText": "These be treasures worth havin', me matey! ${APP_NAME} be at its finest with \na crew of scurvy dogs, and it can accommodate up to 8 buccaneers at a time, which brings us to:",
+ "friendsText": "Mateys",
+ "jumpInfoText": "- Leap -\nLeap to cross small gaps,\nto heave things higher, and \nto let the wind fill yer sails!",
+ "orPunchingSomethingText": "Or give it a good wallop, toss it overboard, and blast it to smithereens with a sticky bomb as it falls to Davy Jones' Locker.",
+ "pickUpInfoText": "- Plunder -\nGrab flags, enemies, or anything \nnot nailed down to the deck. \nPress again to toss it overboard!",
+ "powerupBombDescriptionText": "Lets ye wield three bombs \nin a row instead of just one, me heartie!",
+ "powerupBombNameText": "Thrice-Blessed Bombs",
+ "powerupCurseDescriptionText": "Ye probably want to steer clear o' these.\n...or do ye?",
+ "powerupCurseNameText": "The Black Spot",
+ "powerupHealthDescriptionText": "Brings ye back from Davy Jones' Locker, with nary a scratch. \nYe'd never have reckoned it, but 'tis true, me heartie!",
+ "powerupHealthNameText": "Healer's Chest",
+ "powerupIceBombsDescriptionText": "Be weaker than yer typical bomb, \nbut leave yer enemies frozen solid \nand as brittle as an old piece o' hardtack.",
+ "powerupIceBombsNameText": "Frosty Grenades",
+ "powerupImpactBombsDescriptionText": "Be a tad weaker than yer standard bombs, \nbut they burst on impact with a mighty bang.",
+ "powerupImpactBombsNameText": "Blastin' Balls",
+ "powerupLandMinesDescriptionText": "Ye can get 'em in packs o' three; \nhandy fer protectin' yer base or \nstoppin' quick-footed foes in their tracks.",
+ "powerupLandMinesNameText": "Landlubber Mines",
+ "powerupPunchDescriptionText": "Gives ye fists more oomph, \nspeed, and power, me hearties!",
+ "powerupPunchNameText": "Fisticuffs Mittens",
+ "powerupShieldDescriptionText": "Takes a lickin' for ye, me hearty, \nso ye don't have to!",
+ "powerupShieldNameText": "Force Field",
+ "powerupStickyBombsDescriptionText": "Stick to anythin' they hit.\nMirth ensues.",
+ "powerupStickyBombsNameText": "Adhesive Grenades",
+ "powerupsSubtitleText": "Aye, no game worth its salt be complete without booty to plunder!",
+ "powerupsText": "Booty",
+ "punchInfoText": "- Punch -\nPunches do more damage th'\nfaster yer fists be movin', so\nrun and spin like a madlad.",
+ "runInfoText": "- Sail -\nGrasp ANY swashbucklin' button to set yer boots in motion. Triggers or shoulder buttons be fine choices if ye possess 'em.\nSailing be a swift course to reach yer destinations, yet be wary o' treacherous cliffs, for turning be a mighty challenge.",
+ "someDaysText": "Arrr, some days yer just feelin' like punchin' somethin'. Or blowin' somethin' up to smithereens, me hearty.",
+ "titleText": "${APP_NAME} Help",
+ "toGetTheMostText": "Ye'll need the right tools to plunder the depths of this game, me hearty:",
+ "welcomeText": "Ahoy and welcome aboard the good ship ${APP_NAME}!"
+ },
+ "holdAnyButtonText": "",
+ "holdAnyKeyText": "",
+ "hostIsNavigatingMenusText": "- ${HOST} be navigatin' menus like a fearsome captain -",
+ "importPlaylistCodeInstructionsText": "Employ the followin' code to import this playlist elsewhere, ye scallywag:",
+ "importPlaylistSuccessText": "Imported ${TYPE} playlist '${NAME}', me heartie!",
+ "importText": "Plunder",
+ "importingText": "Plunderin'...",
+ "inGameClippedNameText": "in-game will be\n\"${NAME}\", me matey!",
+ "inboxText": "Treasure Chest",
+ "installDiskSpaceErrorText": "Arrr! Unable to complete the install, ye scurvy dog!\nYe may be out of space on yer ship.\nClear some space and give it another go, or ye'll walk the plank!",
+ "internal": {
+ "arrowsToExitListText": "Press ${LEFT} or ${RIGHT} to set sail from this list, ye scallywag!",
+ "buttonText": "button",
+ "cantKickHostError": "Ye can't commit mutiny, ye landlubber!",
+ "chatBlockedText": "Avast ye! ${NAME} be chat-blocked for ${TIME} seconds!",
+ "connectedToGameText": "Ye have joined the crew of '${NAME}', me matey!",
+ "connectedToPartyText": "Ye have joined the party of ${NAME}, me hearty!",
+ "connectingToPartyText": "Settin' sail, we be! Connectin'...",
+ "connectionFailedHostAlreadyInPartyText": "Arr, ye scallywag! Connection be a failure! The host be already part of another party.",
+ "connectionFailedPartyFullText": "Avast ye! Connection be a failure! The party be filled to the brim, ye scurvy sea dog!",
+ "connectionFailedText": "Arr, connection be a failure, me heartie.",
+ "connectionFailedVersionMismatchText": "Avast ye! Connection be a failure, for the host be runnin' a different version of the game. \nMake sure ye both be up-to-date and give it another shot, me matey!",
+ "connectionRejectedText": "Arr, yer connection be rejected, ye landlubber! Ye may need an invitation or proper permissions to join.",
+ "controllerConnectedText": "Avast ye! ${CONTROLLER} be connected, ready to set sail on this adventure!",
+ "controllerDetectedText": "Arr, me heartie! We be spyin' a single controller on the horizon.",
+ "controllerDisconnectedText": "Avast ye! ${CONTROLLER} be disconnected and be leavin' the crew. Farewell, me matey!",
+ "controllerDisconnectedTryAgainText": "Avast ye! ${CONTROLLER} be disconnected. Please make another attempt at connectin', me hearty!",
+ "controllerForMenusOnlyText": "Avast ye! This controller be fit for navigatin' menus, but not for playin' the game.",
+ "controllerReconnectedText": "Avast ye! ${CONTROLLER} be reconnected and back in action!",
+ "controllersConnectedText": "Avast ye! We be havin' ${COUNT} controllers connected!",
+ "controllersDetectedText": "Arr, me matey! We be detectin' ${COUNT} controllers on the horizon.",
+ "controllersDisconnectedText": "Avast ye! ${COUNT} controllers be disconnected and be partin' ways.",
+ "corruptFileText": "Avast ye! Corrupt file(s) be detected, me heartie! Give reinstallin' a try, or send an email to ${EMAIL} for further assistance. May the winds of good fortune be with ye!",
+ "errorPlayingMusicText": "Avast ye! There be an error playin' the shanties \"${MUSIC}\".",
+ "errorResettingAchievementsText": "Avast ye! Ye be unable to reset yer online achievements at this time.",
+ "hasMenuControlText": "Avast ye! ${NAME} be takin' hold of the menu controls like a true captain of the ship!",
+ "incompatibleNewerVersionHostText": "Avast ye! The host be sailin' with a newer version of the game. Ye be needin' to update to the latest version if ye want to join the crew. \nSet yer sails to the latest version and give it another try, me hearty!",
+ "incompatibleVersionHostText": "Avast ye! The host be runnin' a different version of the game, me matey! Make sure ye and the host be sailin' \nwith the same version by updatin' yer game. Once ye be both up-to-date, set sail again and give it another shot!",
+ "incompatibleVersionPlayerText": "Avast ye! ${NAME} be runnin' a different version of the game, me heartie! \nMake sure ye and they scurvy dogs be both up-to-date by checkin' for updates.",
+ "invalidAddressErrorText": "Avast ye! 'Tis an error I be seein'. The address ye be providin' be invalid, ye scurvy sea dog!",
+ "invalidNameErrorText": "Avast ye! 'Tis an error in the name ye be providin'.",
+ "invalidPortErrorText": "Avast ye! 'Tis an error in the port number ye be providin'.",
+ "invitationSentText": "Avast ye! The invitation be sent, me heartie!",
+ "invitationsSentText": "Avast ye! ${COUNT} invitations be sent, me matey!",
+ "joinedPartyInstructionsText": "Someone has joined yer parrie!.\nGo t' 'Play' t' starrr a game.",
+ "keyboardText": "'Kayboarrd",
+ "kickIdlePlayersKickedText": "Kickin' ${NAME} fer bein' idle.",
+ "kickIdlePlayersWarning1Text": "${NAME} is kickin' te' bucket in ${COUNT} seconds if still idle.",
+ "kickIdlePlayersWarning2Text": "(ye could turrrn tis' off in Settings -> Advanced)",
+ "leftGameText": "Leeeft '${NAME}'.",
+ "leftPartyText": "Left ${NAME}'s ship.",
+ "noMusicFilesInFolderText": "Folder conteins no shanties files.",
+ "playerJoinedPartyText": "${NAME} joined the ship!",
+ "playerLeftPartyText": "${NAME} left the ship.",
+ "rejectingInviteAlreadyInPartyText": "Avast ye! Ye be rejectin' the invite, me hearty! 'Tis because ye be already in a party.",
+ "serverRestartingText": "Avast ye! The server be restartin', me matey! Hold tight and give it a moment..",
+ "serverShuttingDownText": "Avast ye! The server be shuttin' down, me heartie!",
+ "signInErrorText": "Avast ye! 'Tis an error signin' in, me matey!",
+ "signInNoConnectionText": "Avast ye! Ye be unable to sign in, me heartie! It seems ye be lackin' an internet connection.",
+ "telnetAccessDeniedText": "Avast ye! 'Tis an error I be seein'. The user be not grantin' telnet access!",
+ "timeOutText": "(the operation be timed out in ${TIME} seconds)",
+ "touchScreenJoinWarningText": "Avast ye! Ye be joinin' with the touchscreen, me hearty! \nIf ye made a mistake and wish to leave the game, simply tap 'Menu->Leave Game' with the touchscreen.",
+ "touchScreenText": "TouchScreen",
+ "unableToCompleteTryAgainText": "Arr, we be unable to do that now.\nYe' be patient for now!",
+ "unableToResolveHostText": "Arr, seems like we've hit a snag.",
+ "unavailableNoConnectionText": "Arrr! This is currently unavailable (in the storm?)",
+ "vrOrientationResetCardboardText": "Use this to reset yarr compass.\nTo ride this ship ye need an external wheel.",
+ "vrOrientationResetText": "Spin reset.",
+ "willTimeOutText": "(will throw ya off the ship if idle)"
+ },
+ "inventoryText": "Treasure n' Booties",
+ "jumpBoldText": "BOING",
+ "jumpText": "Boing",
+ "keepText": "Hoard",
+ "keepTheseSettingsText": "Hoard these ship configs?",
+ "keyboardChangeInstructionsText": "Smash space twice to change yerr keyboard.",
+ "keyboardNoOthersAvailableText": "Arrr! Ya don't have any other keyboards!",
+ "keyboardSwitchText": "Switching yerr keyboard to \"${NAME}\".",
+ "kickOccurredText": "${NAME} was thrown off the ship.",
+ "kickQuestionText": "Throw ${NAME} off the ship?",
+ "kickText": "Throw off the ship",
+ "kickVoteCantKickAdminsText": "Ya wanna throw the cap'ain off the ship? Yar crazy?",
+ "kickVoteCantKickSelfText": "Ya can't throw yerself into the sharks!",
+ "kickVoteFailedNotEnoughVotersText": "ya need more pirates for tryin to throw em off.",
+ "kickVoteFailedText": "Arrr! we couldn't throw em off.",
+ "kickVoteStartedText": "Yarr! Someone wants to throw ${NAME} off the ship.",
+ "kickVoteText": "Try to throw em off?",
+ "kickVotingDisabledText": "Yarr! this ship is peaceful.",
+ "kickWithChatText": "Write ${YES} in the scroll for yes and ${NO} for no.",
+ "killsTallyText": "${COUNT} executions",
+ "killsText": "Executions",
+ "kioskWindow": {
+ "easyText": "OS",
+ "epicModeText": "That One Mode Where Everyone Goes Sweaty Gamer Mode In",
+ "fullMenuText": "The Actual Ship",
+ "hardText": "OSOGOF",
+ "mediumText": "OSOG",
+ "singlePlayerExamplesText": "Cap'ain Mode Examples",
+ "versusExamplesText": "Battle Mode Examples"
+ },
+ "languageSetText": "Ye are now read'n \"${LANGUAGE}",
+ "lapNumberText": "Lap ${CURRENT}/${TOTAL} (Arrr!)",
+ "lastGamesText": "(last ${COUNT} battles)",
+ "leaderboardsText": "Wanted Poster",
+ "league": {
+ "allTimeText": "Ever",
+ "currentSeasonText": "Present Tide (${NUMBER})",
+ "leagueFullText": "${NAME} Tide",
+ "leagueRankText": "Crew Standin",
+ "leagueText": "Tide",
+ "rankInLeagueText": "#${RANK}, ${NAME} Tide${SUFFIX}",
+ "seasonEndedDaysAgoText": "The season met its end ${NUMBER} days back, matey.",
+ "seasonEndsDaysText": "The season be settin' sail in ${NUMBER} days!",
+ "seasonEndsHoursText": "The season be comin' to a close in ${NUMBER} hours!",
+ "seasonEndsMinutesText": "The season be endin' in a mere ${NUMBER} minutes!",
+ "seasonText": "Tide ${NUMBER}",
+ "tournamentLeagueText": "Ye must climb to the ranks of the ${NAME} crew to enter this tournament.",
+ "trophyCountsResetText": "Trophy tallies be settin' sail anew come the next season.",
+ "upToDateBonusDescriptionText": "arrrr, thy game version be too old,\nupdate it for a ${PERCENT}% morr points.",
+ "upToDateBonusText": "Modern Boat Bonus"
+ },
+ "learnMoreText": "But wait captain, THERE'S MORE!!!",
+ "levelBestScoresText": "Finest marks on ${LEVEL}",
+ "levelBestTimesText": "Finest times on ${LEVEL}",
+ "levelIsLockedText": "${LEVEL}\" be bolted tight, matey.",
+ "levelMustBeCompletedFirstText": "Ye must first sail ${LEVEL}",
+ "levelText": "Tide ${NUMBER}",
+ "levelUnlockedText": "Tide Freed!",
+ "livesBonusText": "Extra Lives Bounty",
+ "loadingText": "Anchors Aweigh",
+ "loadingTryAgainText": "Setting Sail; Try again in a blink of the eye...",
+ "macControllerSubsystemBothText": "Both (not advis'd)",
+ "macControllerSubsystemClassicText": "Timeless",
+ "macControllerSubsystemDescriptionText": "(try adjustin' this if yer controllers be actin' up)",
+ "macControllerSubsystemMFiNoteText": "Spotted a Made-for-iOS/Mac controller, matey! \nYe might want to hoist 'em up in Settings -> Controllers.",
+ "macControllerSubsystemMFiText": "Crafted for iOS/Mac",
+ "macControllerSubsystemTitleText": "Controller Aid",
+ "mainMenu": {
+ "creditsText": "Salutes",
+ "demoMenuText": "Trial Tavern",
+ "endGameText": "Cease the Gambol",
+ "endTestText": "Finish the Trial",
+ "exitGameText": "Abandon the Quest",
+ "exitToMenuText": "Abandon Ship and Return to the Chart?",
+ "howToPlayText": "Learn The Ropes",
+ "justPlayerText": "(Only pirate ${NAME})",
+ "leaveGameText": "Abandon Ship",
+ "leavePartyConfirmText": "Arr, ye sure about really abandonin the crew?",
+ "leavePartyText": "Abandon Crew",
+ "quitText": "Belay",
+ "resumeText": "Return",
+ "settingsText": "Chart Your Course"
+ },
+ "makeItSoText": "Aye, Set Sail!",
+ "mapSelectGetMoreMapsText": "Find More Charts...",
+ "mapSelectText": "Choose...",
+ "mapSelectTitleText": "${GAME} Charts",
+ "mapText": "Chart",
+ "maxConnectionsText": "Max Shipmates",
+ "maxPartySizeText": "Max Crew Size",
+ "maxPlayersText": "Max Pirates",
+ "merchText": "Booty for Sale!",
+ "modeArcadeText": "Tavern Brawl",
+ "modeClassicText": "Old Salt's Mode",
+ "modeDemoText": "Teaser Mode",
+ "moreSoonText": "More be arrivin' soon...",
+ "mostDestroyedPlayerText": "Most Shipwrecked Pirate",
+ "mostValuablePlayerText": "Most Wanted Pirate",
+ "mostViolatedPlayerText": "Most Sunken Pirate",
+ "mostViolentPlayerText": "Most Dreaded Pirate",
+ "moveText": "Shove off",
+ "multiKillText": "${COUNT}-SLAY!!!",
+ "multiPlayerCountText": "${COUNT} pirateers",
+ "mustInviteFriendsText": "Note: ye must invite shipmates \nin the \"${GATHER}\" panel \nor put on a controller to sail with ye crew.",
+ "nameBetrayedText": "${NAME} hornswaggled ${VICTIM}.",
+ "nameDiedText": "${NAME} met Davy Jones.",
+ "nameKilledText": "${NAME} sent ${VICTIM} to the briny deep.",
+ "nameNotEmptyText": "Ye forgot to hoist yer flag!",
+ "nameScoresText": "${NAME} Plunders!",
+ "nameSuicideKidFriendlyText": "${NAME} jumped o'r board.",
+ "nameSuicideText": "${NAME} walked the plank.",
+ "nameText": "Moniker",
+ "nativeText": "Landlubber",
+ "newExclaimText": "Straight out of the deep sea!",
+ "newPersonalBestText": "New personal record on the logbook!",
+ "newTestBuildAvailableText": "A fresher trial version be ready! (${VERSION} build ${BUILD}).\nFetch it at ${ADDRESS}",
+ "newText": "Craft",
+ "newVersionAvailableText": "A fresher version of ${APP_NAME} be ready to set sail! (${VERSION})",
+ "nextAchievementsText": "Next Booty to Plunder:",
+ "nextLevelText": "Next Dock",
+ "noAchievementsRemainingText": "- none...?",
+ "noContinuesText": "(no escaping from death)",
+ "noExternalStorageErrorText": "Yo dont have a exxterrnal storage on yor deviz",
+ "noGameCircleText": "There's an issue cap'ain: yer not logged into gameball",
+ "noMessagesText": "Nary a message.",
+ "noPluginsInstalledText": "No Modifications Are On The Ship Cap'ain",
+ "noScoresYetText": "No one has sailed near this land sir.",
+ "noServersFoundText": "Arrrgh! No bays in sight!",
+ "noThanksText": "Arghhhh...",
+ "noTournamentsInTestBuildText": "Captain! Yer ship is unstable, they won't let us take 'er to tournaments.",
+ "noValidMapsErrorText": "Pirates haven' found a dock worthy of this ba'le.",
+ "notEnoughPlayersRemainingText": "Aarghhh! Not enough pirates are battling here; we should go elsewhere cap'ain.",
+ "notEnoughPlayersText": "Cap'ain! We need at least ${COUNT} pirates to go on this journey.",
+ "notEnoughTicketsText": "Yer don't got enough tickets!",
+ "notNowText": "Not Now Captain...",
+ "notSignedInErrorText": "Yer must show an ID to enter.",
+ "notSignedInGooglePlayErrorText": "Ya must be accompanied by Google Play to enter.",
+ "notSignedInText": "no ID",
+ "notUsingAccountText": "Note: ignoring ${SERVICE} ID.\nGo to 'Account -> Be accompanied by ${SERVICE}' if yar want to use it.",
+ "nothingIsSelectedErrorText": "YER HAVEN'T SELECTED ANYTHING YA MORO- I mean cap'ain. (please don't make me walk the plank sir)",
+ "numberText": "#${NUMBER}",
+ "offText": "NARRR",
+ "okText": "Ok",
+ "onText": "YARRR",
+ "oneMomentText": "Wait a bit sir...",
+ "onslaughtRespawnText": "${PLAYER} will get back to the dock in wave ${WAVE} cap'ain!",
+ "openMeText": "the treasure be yours!",
+ "openNowText": "tearrr it open",
+ "openText": "crack",
+ "orText": "${A} or ${B}",
+ "otherText": "Other...",
+ "outOfText": "(#${RANK} out of ${ALL})",
+ "ownFlagAtYourBaseWarning": "Yer own flag must fly high at \nyer base to tally yer score!",
+ "partyWindow": {
+ "chatMessageText": "spit it out",
+ "emptyText": "Yer ship is empty",
+ "hostText": "(captain)",
+ "sendText": "->",
+ "titleText": "Yer Ship"
+ },
+ "pausedByHostText": "(halted by the captain)",
+ "perfectWaveText": "Clean Abaft!",
+ "pickUpText": "Lift",
+ "playModes": {
+ "coopText": "Treasure-Rush",
+ "freeForAllText": "Rafts",
+ "multiTeamText": "Multi-Ship",
+ "singlePlayerCoopText": "Captain Mode / Treasure-Rush",
+ "teamsText": "Ships"
+ },
+ "playText": "Set Sail",
+ "playWindow": {
+ "oneToFourPlayersText": "1-4 pirates",
+ "titleText": "Set Sail",
+ "twoToEightPlayersText": "2-8 pirates"
+ },
+ "playerCountAbbreviatedText": "${COUNT}p",
+ "playerDelayedJoinText": "${PLAYER} will get on the dock once the next fight begins.",
+ "playerInfoText": "Pirate Info",
+ "playerLeftText": "${PLAYER} abandoned the ship, je was verry cowarr'",
+ "playerLimitReachedText": "Aarggh. We can't bring more than ${COUNT} pirates on this dock; stay on the ship.",
+ "playerProfilesWindow": {
+ "cantDeleteAccountProfileText": "You can't erase who you are, captain; if that even is your real n-",
+ "deleteButtonText": "Erase\nFake ID",
+ "deleteConfirmText": "Erase '${PROFILE}'?",
+ "editButtonText": "Edit\nFake ID",
+ "explanationText": "(fake IDs you have gathered over the years)",
+ "newButtonText": "New\nFake ID",
+ "titleText": "Fake IDs"
+ },
+ "playerText": "Pirate",
+ "playlistNoValidGamesErrorText": "None of these scurvy dogs can understand this scroll.",
+ "playlistNotFoundText": "scroll not found",
+ "playlistText": "Scroll",
+ "playlistsText": "Scrolls",
+ "pleaseRateText": "If ye be enjoyin' ${APP_NAME}, kindly consider takin' a moment \nto rate it or scribe a review. \nThis be providin' valuable feedback and helps chart the course for future development.\n\nCheers!\n-eric",
+ "pleaseWaitText": "We will get there cap'ain, eventually...",
+ "pluginClassLoadErrorText": "Arrrgh we weren't able to load '${PLUGIN}' onto the ship: ${ERROR}",
+ "pluginInitErrorText": "These landlubbers couldn't install the '${PLUGIN}' onto yer ship cap'ain: ${ERROR}",
+ "pluginSettingsText": "Modification Control Room",
+ "pluginsAutoEnableNewText": "Install All New Modifications Once Brought Onboard",
+ "pluginsDetectedText": "New modification(s) are bein' installed cap'ain, they'll be ready next time. Ye can check on those scallywags.",
+ "pluginsDisableAllText": "Remove All Modifications From Me Ship",
+ "pluginsEnableAllText": "Install All Modifications Onboard",
+ "pluginsRemovedText": "Captain! ${NUM} modification(s) ain' on this ship no more! Some son of a biscuit eater has stolen yer goods!",
+ "pluginsText": "Modifications",
+ "practiceText": "Trainin'",
+ "pressAnyButtonPlayAgainText": "We are ready to fight for glory once more! Waitin' for yer command cap'ain...",
+ "pressAnyButtonText": "We are waitin' for yer command cap'ain...",
+ "pressAnyButtonToJoinText": "We will join the battle with the smallest move of yerr succulent lips cap'ain...",
+ "pressAnyKeyButtonPlayAgainText": "We are ready to fight for glory once more! Waitin' for yer command cap'ain...",
+ "pressAnyKeyButtonText": "We are waitin' for yer command cap'ain...",
+ "pressAnyKeyText": "We are waitin' for yer command cap'ain...",
+ "pressJumpToFlyText": "** Jump t' catch that Peter Pan! **",
+ "pressPunchToJoinText": "press HOOK to get aboard the ship...",
+ "pressToOverrideCharacterText": "hit ${BUTTONS} to send in a differen' landlubber",
+ "pressToSelectProfileText": "hit ${BUTTONS} to select which ID yerr wanna go in with",
+ "pressToSelectTeamText": "hit ${BUTTONS} to choose which ship yar wanna help out",
+ "promoCodeWindow": {
+ "codeText": "Magic Numbe's",
+ "enterText": "Smash"
+ },
+ "promoSubmitErrorText": "Aargh! our magic numbers didn' make it through the seas; try again on a calmer night",
+ "ps3ControllersWindow": {
+ "macInstructionsText": "Arrr, Switch off the power on the back of yer PS3, \nthen make sure yer Bluetooth be enabled on yer Mac. \nThen, connect yer controller to yer Mac via a USB cable to pair the two. \nFrom then on, ye can use the controller's home button to connect it to yer Mac in either wired (USB) \nor wireless (Bluetooth) mode.\n\n\nOn some Macs, ye may be prompted for a passcode when pairing. \nIf this happens, see the followin' tutorial or google for help.\n\n\n\nPS3 controllers connected wirelessly should show up in the device list in System Preferences->Bluetooth. \nYe may need to remove them from that list when ye want to use them with yer PS3 again.\n\n\nAlso, make sure to disconnect them from Bluetooth when not in use, \nor their batteries will continue to drain.\n\nBluetooth should handle up to 7 connected devices, \nthough yer mileage may vary.",
+ "ouyaInstructionsText": "to use yer damn ps3 thingamajig with ya dead console, just connect it with a USB cable\nfor once to make em fall in love. Doin' this may disconnect other thingamajigs, so\nyarr should then kill the dead thing and unplug the USB cable.\n\nAfter that the thingamajig's HOME button makes a mythical connection\nto yer ship. When yerr done sailin', SMASH that HOME button for 10 hours\nto kill the thingimajig; otherwise it will need the men to work harder\non the head.",
+ "pairingTutorialText": "*insert edgy joke with pirate slang here*",
+ "titleText": "Usin' ps3 thingamajigs with ${APP_NAME}:"
+ },
+ "punchBoldText": "HOOK",
+ "punchText": "Hook",
+ "purchaseForText": "Pay up ${PRICE}",
+ "purchaseGameText": "if you're seeing this message in-game, something really bad must have happened",
+ "purchaseNeverAvailableText": "Arrrgh! These lily livered bilge suckers will never let us buy stuff on this dock.\nWe should try going to a differen' dock with the same IDs and buy supplies from there.",
+ "purchaseNotAvailableText": "These landlubbers aren't sellin' this.",
+ "purchasingText": "Buying... (arrr?)",
+ "quitGameText": "Walk ${APP_NAME}'s planks?",
+ "quittingIn5SecondsText": "CBF Detected, Loser! Quitting in 5 seconds...",
+ "randomPlayerNamesText": "DEFAULT_NAMES, Vaporeon, Jolly Roger, Fenix, Calico Jack, Blackbeard, Anne Bonny, William Kidd, Aegea, Alistair, Echo",
+ "randomText": "Dice",
+ "rankText": "Rank",
+ "ratingText": "Rating",
+ "reachWave2Text": "Survive at least the first batch of scallywags cap'ain.",
+ "readyText": "man o' war",
+ "recentText": "Newborn",
+ "remoteAppInfoShortText": "${APP_NAME} be most jolly when played with kin & shipmates.\nConnect one or more hardware controllers or install the\n${REMOTE_APP_NAME} app on phones or tablets to use 'em\nas controllers.",
+ "remote_app": {
+ "app_name": "BombSquad Remote",
+ "app_name_short": "BSRemote",
+ "button_position": "Button Position",
+ "button_size": "Button Size",
+ "cant_resolve_host": "Can't find the dock cap'ain.",
+ "capturing": "Capturing...",
+ "connected": "Reached the dock.",
+ "description": "Use your phone or tablet as a controller with BombSquad.\nUp to 8 devices can connect at once for epic local multiplayer madness on a single TV or tablet.",
+ "disconnected": "Arrrgh they made us walk the plank cap'ain.",
+ "dpad_fixed": "fixed",
+ "dpad_floating": "floating",
+ "dpad_position": "D-Pad Position",
+ "dpad_size": "D-Pad Size",
+ "dpad_type": "D-Pad Type",
+ "enter_an_address": "What's the path, cap'ain",
+ "game_full": "These flibustiers aren't letting us in cap'ain.",
+ "game_shut_down": "The ship has sunken.",
+ "hardware_buttons": "Hardware Buttons",
+ "join_by_address": "Binnacle",
+ "lag": "Lag: ${SECONDS} seconds",
+ "reset": "Fix the ship",
+ "run1": "Rrrun 1",
+ "run2": "Rrrun 2",
+ "searching": "Searching for coffers...",
+ "searching_caption": "Tap on the name of a coffer to fight for it.\nMake sure you are on the same wifi network as the other pirates.",
+ "start": "Starrrt",
+ "version_mismatch": "Arrrgh! the shiip don't fit.\nWe have to update both the dock and the ship\nto join the fight!"
+ },
+ "removeInGameAdsText": "We have to pay up for \"${PRO}\" to get rid of these pessky ads cap'ain.",
+ "removeInGameAdsTokenPurchaseText": "LIMITED TIME OFFERR: Get ANY type of coins to remove in-battle videos!",
+ "renameText": "Morrph",
+ "replayEndText": "End History",
+ "replayNameDefaultText": "Last Battle History",
+ "replayReadErrorText": "Errorr remembering history.",
+ "replayRenameWarningText": "Morrph \"${REPLAY}\" after a battle if you want to keep it; otherwise it will be forrgotten.",
+ "replayVersionErrorText": "Sorry, this memory was made in a different\nocean of the earth and can't be used.",
+ "replayWatchText": "Recall Memory",
+ "replayWriteErrorText": "Errorr creating memories aghhh.",
+ "replaysText": "Memories",
+ "reportPlayerExplanationText": "Use this email to report unfair ships, foul language, or other unethics.\nPlease descrribe below:",
+ "reportThisPlayerCheatingText": "Unfair ship",
+ "reportThisPlayerLanguageText": "Foul language rawrr..",
+ "reportThisPlayerReasonText": "What would you like to reporrt?",
+ "reportThisPlayerText": "Report This Sailor",
+ "requestingText": "Rrequesting...",
+ "restartText": "Sail again",
+ "retryText": "Retrry",
+ "revertText": "Revert",
+ "runText": "Speeeed",
+ "saveText": "Save",
+ "scanScriptsErrorText": "Errorrr scanning scrolls. see log for details.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} and ${NUM} other canon(s) need to be changed for the time ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} needs to be updated for the time ${API}.",
+ "scoreChallengesText": "Score Challenges",
+ "scoreListUnavailableText": "Score merits unavailable.",
+ "scoreText": "Scorre",
+ "scoreUnits": {
+ "millisecondsText": "Milliseconds",
+ "pointsText": "Points",
+ "secondsText": "Seconds"
+ },
+ "scoreWasText": "(was ${COUNT})",
+ "selectText": "Select",
+ "sendInfoDescriptionText": "Delivers account and app state information to the developer.\nKindly include yer name or reason for sending.",
+ "seriesWinLine1PlayerText": "CONQUERS",
+ "seriesWinLine1TeamText": "DOMINATES",
+ "seriesWinLine1Text": "WINS THE",
+ "seriesWinLine2Text": "WARR!",
+ "settingsWindow": {
+ "accountText": "Arrcount",
+ "advancedText": "Tactics",
+ "audioText": "Arrdio",
+ "controllersText": "Equipment",
+ "graphicsText": "Boat Flag",
+ "playerProfilesMovedText": "Note: Ship captains have moved to the Account window in the main menu.",
+ "titleText": "Ship's Configurations"
+ },
+ "settingsWindowAdvanced": {
+ "alwaysUseInternalKeyboardDescriptionText": "(A humble contraption fer scribblin' with yer hands o' the helm!)",
+ "alwaysUseInternalKeyboardText": "Always stir virtually",
+ "benchmarksText": "Buoyancy & Stress-Tests",
+ "devToolsText": "Old Salt's Room",
+ "disableCameraGyroscopeMotionText": "Disable bird's-eye motion",
+ "disableCameraShakeText": "Stabilize the ship",
+ "disableThisNotice": "(you can disable this notice in advanced settings)",
+ "enterPromoCodeText": "Enter Chant",
+ "forTestingText": "Note: these values are only for testing and will be lost when the app exits.",
+ "helpTranslateText": "${APP_NAME}'s non-English translations are a community supported\neffort. If you'd like to contribute or correct a translation,\nfollow the link below. Thanks in advance! Arrrghhhhh......",
+ "insecureConnectionsDescriptionText": "Not the wisest course, but it might let ye set sail from\nblocked ports or tricky waters!",
+ "insecureConnectionsText": "Hoist the sails on uncharted seas",
+ "kickIdlePlayersText": "Cut off those keelhaulers",
+ "kidFriendlyModeText": "Kid-Friendly Mode (reduced violence, etc)",
+ "languageText": "Lingo",
+ "moddingGuideText": "Captain's Code o' Customizin'",
+ "moddingToolsText": "Orlop",
+ "mustRestartText": "You must restarrt the game for this to take effect.",
+ "netTestingText": "Network Testing",
+ "resetText": "Reset",
+ "sendInfoText": "Throw Yerr Bo'les",
+ "showBombTrajectoriesText": "Predict Yer Bomb's",
+ "showDemosWhenIdleText": "Display examples while yer be statue",
+ "showDeprecatedLoginTypesText": "Show ye olden ID types",
+ "showDevConsoleButtonText": "Let the old seadog help",
+ "showInGamePingText": "See how long it takes these scallywags to carry out yer commands",
+ "showPlayerNamesText": "Show Pirate Names",
+ "showUserModsText": "Reveal the Treasure Chest o' Mods",
+ "titleText": "Advanced",
+ "translationEditorButtonText": "${APP_NAME} Translation Editor",
+ "translationFetchErrorText": "translation status unavailable",
+ "translationFetchingStatusText": "checking translation status...",
+ "translationInformMe": "Inform me when my language needs updates",
+ "translationNoUpdateNeededText": "The current lingo be shipshape; huzzah!",
+ "translationUpdateNeededText": "**The current lingo be needin' some fresh winds!!**",
+ "vrTestingText": "VR Testing"
+ },
+ "shareText": "Share",
+ "sharingText": "Sharing...",
+ "showText": "See",
+ "signInForPromoCodeText": "Ye must have a real ID for those to work cap'ain.",
+ "singleGamePlaylistNameText": "Just ${GAME}",
+ "singlePlayerCountText": "1 pirate",
+ "sizeLargeText": "Beeg",
+ "sizeMediumText": "Median",
+ "sizeSmallText": "Tiny",
+ "soloNameFilterText": "Solo ${NAME}",
+ "soundtrackTypeNames": {
+ "CharSelect": "Pirate Selection",
+ "Chosen One": "Bounty",
+ "Epic": "Epic Fights",
+ "Epic Race": "Epic Rush",
+ "FlagCatcher": "Steal the Booty",
+ "Flying": "Jolly Dreams",
+ "Football": "Flibustiers' Sport",
+ "ForwardMarch": "Fire in the Hole",
+ "GrandRomp": "Control the Island",
+ "Hockey": "Ice Battley",
+ "Keep Away": "Hold the Coffer",
+ "Marching": "Ship Defense",
+ "Menu": "Main Menu",
+ "Onslaught": "Slaughter",
+ "Race": "Rush",
+ "Scary": "Defend the Booty",
+ "Scores": "Doubloon List",
+ "Survival": "Scuttle",
+ "ToTheDeath": "Swashbuckle",
+ "Victory": "Screen of Glory"
+ },
+ "spaceKeyText": "space",
+ "statsText": "Stats",
+ "stopRemindingMeText": "yaarr don't tell me about this here again",
+ "storagePermissionAccessText": "This here requires storage access",
+ "store": {
+ "alreadyOwnText": "Ye already own ${NAME}!",
+ "bombSquadProNameText": "${APP_NAME} Pro",
+ "bombSquadProNewDescriptionText": "• Plunders out in-game ads and bothersome screens\n• Unlocks more ship chartin'\n• Also has:",
+ "buyText": "Buy",
+ "charactersText": "Characters",
+ "comingSoonText": "Comin' soon...",
+ "extrasText": "Extras",
+ "freeBombSquadProText": "BombSquad be free now, but since ye originally purchased it, ye be gettin' \nthe BombSquad Pro upgrade and ${COUNT} tickets as a thank-you. \nEnjoy the new features, and thank ye for yer support!\n-Eric (best captain)",
+ "holidaySpecialText": "'oliday special",
+ "howToSwitchCharactersText": "(go to \"${SETTINGS} -> ${PLAYER_PROFILES}\" to assign & customize characters)",
+ "howToUseIconsText": "(create global player profiles (in the account window) to use these)",
+ "howToUseMapsText": "(use these maps in yer own teams/free-for-all playlists)",
+ "iconsText": "Icons",
+ "loadErrorText": "Unable to load page.\n check yer internet connection.",
+ "loadingText": "loadin'",
+ "mapsText": "Maps",
+ "miniGamesText": "Minigames",
+ "oneTimeOnlyText": "(one time only)",
+ "purchaseAlreadyInProgressText": "A purchase o' this here item be already in progress.",
+ "purchaseConfirmText": "Purchase ${ITEM}?",
+ "purchaseNotValidError": "Yer purchase be not valid.\nHail ${EMAIL} if this be a mistake.",
+ "purchaseText": "Buy yer booty",
+ "saleBundleText": "Treasure Trove Sale!",
+ "saleExclaimText": "Bargain Ahoy!",
+ "salePercentText": "(${PERCENT}% off)",
+ "saleText": "Sale",
+ "searchText": "Search",
+ "teamsFreeForAllGamesText": "Teams / free-for-all games",
+ "totalWorthText": "*** ${TOTAL_WORTH} value! ***",
+ "upgradeQuestionText": "Upgrade?",
+ "winterSpecialText": "Winter special",
+ "youOwnThisText": "- ye own this here -"
+ },
+ "storeDescriptionText": "8 Player Party Game Madness!\n\nBlast yer hearties (or the computer) in a tourney of explosive mini-games like Steal-the-Booty, Bomber-Ice-Battley, and Epic-Slow-Motion-Swashbuckle!\n\nEasy controls and broad controller support make it a breeze for up to 8 folks to get in on the action; ye can even use yer mobile devices as controllers via the free 'BombSquad Remote' app!\n\nGunpowder be at yer ship!\n\nVisit www.froemling.net/bombsquad for more info.",
+ "storeDescriptions": {
+ "blowUpYourFriendsText": "Blow to the sky yer mates.",
+ "competeInMiniGamesText": "Compete in mini-games rangin' from racin' to flyin'.",
+ "customize2Text": "Customize characters, mini-games, an' even the soundtrack.",
+ "customizeText": "Customize characters 'n create yer owns mini-game playlists.",
+ "sportsMoreFunText": "Sports be more fun with explosives.",
+ "teamUpAgainstComputerText": "Crew up against the computer."
+ },
+ "storeText": "Store",
+ "submitText": "Submit",
+ "submittingPromoCodeText": "Submittin' Code...",
+ "successText": "Success!",
+ "supportEmailText": "If ye be experiencin' any problems wit' the\napp, please email ${EMAIL}.",
+ "teamNamesColorText": "Crew Names/Colors...",
+ "telnetAccessGrantedText": "Telnet access enabled.",
+ "telnetAccessText": "Telnet access detected; allow?",
+ "testBuildErrorText": "Dis test build be no longer active; please check fer a new version.",
+ "testBuildText": "Test Build",
+ "testBuildValidateErrorText": "Unable t' validate test build. (no net connection?)",
+ "testBuildValidatedText": "Test Build Validated; Enjoy!",
+ "thankYouText": "Thank ye fer yer support! Enjoy the game!!",
+ "threeKillText": "TRIPLE SCUTTLE!!",
+ "ticketsDescriptionText": "Tickets be a way to unlock pirates,\nlands, battles, and more in the store!\n\nTickets be only found in treasure chests\nfound in fighting, tourrrnaments and achievements.",
+ "timeBonusText": "Time Bonus",
+ "timeElapsedText": "Time Elapsed",
+ "timeExpiredText": "Time Expired",
+ "timeSuffixDaysText": "${COUNT}d",
+ "timeSuffixHoursText": "${COUNT}h",
+ "timeSuffixMinutesText": "${COUNT}m",
+ "timeSuffixSecondsText": "${COUNT}s",
+ "tipText": "Tip",
+ "titleText": "BombSquad",
+ "titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Get coins",
+ "notEnoughTokensText": "Nah enough gold!",
+ "numTokensText": "${COUNT} Coins",
+ "openNowDescriptionText": "ye 'ave enough gold to open this \nhere now - or ye can give me some so\ni could fix me boat (10 zillion gold)",
+ "shinyNewCurrencyText": "BombSquad's shiny new currency.",
+ "tokenPack1Text": "Wee Token Pack",
+ "tokenPack2Text": "Medium Token Pack",
+ "tokenPack3Text": "Large Token Pack",
+ "tokenPack4Text": "Jumbo Token Pack",
+ "tokensDescriptionText": "Coins are used if you want chests to open faster\nand for other things for your ship/pirateers.\n\nYer can win coins in battles or buy them\nin bunches. Or get the Golden Tooth Pass for\ninfinite coins and never need anymore of 'em!",
+ "youHaveGoldPassText": "Ye 'ave a Gold Pass.\nAll token purchases be free.\nEnjoy!"
+ },
+ "topFriendsText": "Top Hearties",
+ "tournamentCheckingStateText": "Checkin' tournament state; please wait...",
+ "tournamentEndedText": "This here tourney be over. A new one be comin' soon.",
+ "tournamentEntryText": "Tournament Entry",
+ "tournamentFinalStandingsText": "Last Standin's",
+ "tournamentResultsRecentText": "Recent Tournament Results",
+ "tournamentStandingsText": "Tournament Standings",
+ "tournamentText": "Tournament",
+ "tournamentTimeExpiredText": "Tournament Time Expired",
+ "tournamentsDisabledWorkspaceText": "Tournaments be disabled when workspaces be active.\nTo re-enable tournaments, turn off yer workspace and restart.",
+ "tournamentsText": "Tournaments",
+ "translations": {
+ "characterNames": {
+ "Agent Johnson": "Agent Johnson",
+ "B-9000": "B-9000, matey!",
+ "Bernard": "Blackbeard Bernard",
+ "Bones": "Be bones, me hearty!",
+ "Butch": "Butch be",
+ "Easter Bunny": "Easter Pirate",
+ "Flopsy": "Flopsy",
+ "Frosty": "Frigid",
+ "Gretel": "Gretel",
+ "Grumbledorf": "Grumbledorf",
+ "Jack Morgan": "Jumpy Jack Morgan",
+ "Kronk": "Kronk",
+ "Lee": "Lootin' Lee",
+ "Lucky": "Lucky",
+ "Mel": "Mel",
+ "Middle-Man": "Middle-Scallywag",
+ "Minimus": "Minimus",
+ "Pascal": "Pascal",
+ "Pixel": "Pixie",
+ "Sammy Slam": "Sammy Slam",
+ "Santa Claus": "Captain Christmas",
+ "Snake Shadow": "Serpent Shade",
+ "Spaz": "Sparrow",
+ "Taobao Mascot": "Taobao Jolly Roger",
+ "Todd McBurton": "Cap'n Todd McBurton",
+ "Zoe": "Zoe",
+ "Zola": "Zola"
+ },
+ "coopLevelNames": {
+ "${GAME} Training": "${GAME} Trainin'",
+ "Infinite ${GAME}": "${GAME} War",
+ "Infinite Onslaught": "Slaughter War",
+ "Infinite Runaround": "Ship Defense War",
+ "Onslaught Training": "Slaughter Trainin'",
+ "Pro ${GAME}": "Pro ${GAME}",
+ "Pro Football": "Pro Flibustiers' Sport",
+ "Pro Onslaught": "Pro Slaughter",
+ "Pro Runaround": "Pro Ship Defense",
+ "Rookie ${GAME}": "Scallywag ${GAME}",
+ "Rookie Football": "Scallywag Flibustiers' Sport",
+ "Rookie Onslaught": "Scallywag Slaughter",
+ "The Last Stand": "Th' Final Battl'n",
+ "Uber ${GAME}": "Old Salt ${GAME}",
+ "Uber Football": "Old Salt Flibustiers' Sport",
+ "Uber Onslaught": "Old Salt Slaughter",
+ "Uber Runaround": "Old Salt Ship Defense"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} Tickets (or playing cards)",
+ "${C} Tokens": "${C} Coins (arr)",
+ "Chest": "Treasure Chest",
+ "L1 Chest": "L1 Treasure Chest (least shiny)",
+ "L2 Chest": "L2 Treasure Chest (kind o' shiny)",
+ "L3 Chest": "L3 Treasure Chest (strangely shiny)",
+ "L4 Chest": "L4 Treasure Chest (almost shiny)",
+ "L5 Chest": "L5 Treasure Chest (shiny!)",
+ "L6 Chest": "L6 Treasure Chest (shinier!)",
+ "Unknown Chest": "Treasure Chest with Something"
+ },
+ "gameDescriptions": {
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Have the bounty for some time to win.\nClaim the bounty by killing the pirate who has it.",
+ "Bomb as many targets as you can.": "Bomb as many targets as ye can.",
+ "Carry the flag for ${ARG1} seconds.": "Carry the Jolly Rowdy Roger fer ${ARG1} seconds.",
+ "Carry the flag for a set length of time.": "Carry the Jolly Redbeard Roger fer a set length o' time.",
+ "Crush ${ARG1} of your enemies.": "Crush ${ARG1} o' yer enemies.",
+ "Defeat all enemies.": "Swab the deck o' all foes.",
+ "Dodge the falling bombs.": "Dodge the fallin' bombs.",
+ "Final glorious epic slow motion battle to the death.": "Final glorious epic slow motion battle t' the death.",
+ "Gather eggs!": "Gather ye eggs, matey!",
+ "Get the flag to the enemy end zone.": "Get the Jolly Rowdy Roger t' the enemy end zone.",
+ "How fast can you defeat the ninjas?": "How fast can ye defeat the ninjas?",
+ "Kill a set number of enemies to win.": "Scuttle a set number o' enemies t' win.",
+ "Last one standing wins.": "Last one standin' wins.",
+ "Last remaining alive wins.": "Last matey standin' wins.",
+ "Last team standing wins.": "Last crew standin' wins.",
+ "Prevent enemies from reaching the exit.": "Stop yer foes from hittin' the exit, arrr!",
+ "Reach the enemy flag to score.": "Claim th' enemy banner t' score.",
+ "Return the enemy flag to score.": "Return the enemy Jolly Redbeard Roger t' score.",
+ "Run ${ARG1} laps.": "sail ${ARG1} laps.",
+ "Run ${ARG1} laps. Your entire team has to finish.": "Run ${ARG1} laps. Yer entire crew has t' finish.",
+ "Run 1 lap.": "sail 1 circuit.",
+ "Run 1 lap. Your entire team has to finish.": "Hoist the sails fer 1 lap. All hands must finish the race!",
+ "Run real fast!": "Run like the wind, matey!",
+ "Score ${ARG1} goals.": "Score ${ARG1} booty!",
+ "Score ${ARG1} touchdowns.": "Score ${ARG1} touchdowns.",
+ "Score a goal.": "bag a bounty.",
+ "Score a touchdown.": "plunder a touchdown.",
+ "Score some goals.": "Plunder some goals.",
+ "Secure all ${ARG1} flags.": "Hoist all ${ARG1} flags!",
+ "Secure all flags on the map to win.": "Hoist all flags on th' map t' claim victory!",
+ "Secure the flag for ${ARG1} seconds.": "Hoist the flag fer ${ARG1} ticks.",
+ "Secure the flag for a set length of time.": "Hoist the flag fer a spell o' time.",
+ "Steal the enemy flag ${ARG1} times.": "Snatch th' enemy's flag ${ARG1} times, matey!",
+ "Steal the enemy flag.": "Plunder the foe's flag.",
+ "There can be only one.": "There be only one!",
+ "Touch the enemy flag ${ARG1} times.": "Give th' enemy flag a good poke ${ARG1} times.",
+ "Touch the enemy flag.": "Touch th' enemy flag.",
+ "carry the flag for ${ARG1} seconds": "carry the Jolly Redbeard Roger fer ${ARG1} seconds",
+ "kill ${ARG1} enemies": "scuttle ${ARG1} enemies",
+ "last one standing wins": "last one standin' wins",
+ "last team standing wins": "last crew standin' wins",
+ "return ${ARG1} flags": "return ${ARG1} Jolly Rogers",
+ "return 1 flag": "return 1 Jolly Redbeard Roger",
+ "run ${ARG1} laps": "sail ${ARG1} laps",
+ "run 1 lap": "sail 1 circuit",
+ "score ${ARG1} goals": "score ye ${ARG1} goals, matey",
+ "score ${ARG1} touchdowns": "score ${ARG1} touchdowns, ye scallywag!",
+ "score a goal": "bag a bounty",
+ "score a touchdown": "plunder a touchdown",
+ "secure all ${ARG1} flags": "secure all yer ${ARG1} flags, savvy?",
+ "secure the flag for ${ARG1} seconds": "plunder the flag fer ${ARG1} ticks",
+ "touch ${ARG1} flags": "tap yer ${ARG1} flags",
+ "touch 1 flag": "ye be touchin' 1 flag"
+ },
+ "gameNames": {
+ "Assault": "Fire in the Hole",
+ "Capture the Flag": "Steal the Booty",
+ "Chosen One": "Bounty",
+ "Conquest": "Control the Island",
+ "Death Match": "Swashbuckle",
+ "Easter Egg Hunt": "Egg Hunt o' Easter",
+ "Elimination": "Scuttle",
+ "Football": "Flibustiers' Sport",
+ "Hockey": "Ice Battley",
+ "Keep Away": "Hold the Coffer",
+ "King of the Hill": "Defend the Booty",
+ "Meteor Shower": "Meteor Broadsides",
+ "Ninja Fight": "Ninja Battle",
+ "Onslaught": "Slaughter",
+ "Race": "Rush",
+ "Runaround": "Ship Defense",
+ "Target Practice": "Target Practicin'",
+ "The Last Stand": "Thar Final Stand"
+ },
+ "inputDeviceNames": {
+ "Keyboard": "Plank o' keys",
+ "Keyboard P2": "Keybeard P2"
+ },
+ "languages": {
+ "Arabic": "Arrr, Arabic be it!",
+ "Belarussian": "Belarusian Scallywag",
+ "Chinese": "Chinesey Simplified",
+ "ChineseTraditional": "Chinaman's Olde",
+ "Croatian": "Croatian lass",
+ "Czech": "Czech, matey!",
+ "Danish": "Danish scallywag",
+ "Dutch": "Dutchy",
+ "English": "English, matey",
+ "Esperanto": "Arrr, Esperanto!",
+ "Filipino": "Filipino matey",
+ "Finnish": "Finnish, aye",
+ "French": "Frenchy",
+ "German": "German, aye!",
+ "Gibberish": "Blather",
+ "Greek": "Greek",
+ "Hindi": "Arrr, Hindi!",
+ "Hungarian": "Hungarian, arrr!",
+ "Indonesian": "Indonesian be",
+ "Italian": "Italin'",
+ "Japanese": "Japanese",
+ "Korean": "Korey",
+ "Malay": "Malaysie",
+ "Persian": "Persian Sea Dog",
+ "PirateSpeak": "Pirate Speak",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese, matey!",
+ "Romanian": "Romanian, me hearty!",
+ "Russian": "Russian",
+ "Serbian": "Serbiarr",
+ "Slovak": "Slovak scallywag",
+ "Spanish": "Spanish matey",
+ "Swedish": "Swedisher",
+ "Tamil": "Tamin",
+ "Thai": "Thai be",
+ "Turkish": "Turk",
+ "Ukrainian": "Ukrainian Sea Dog",
+ "Venetian": "Venetian scallywag",
+ "Vietnamese": "Vietnamin'!"
+ },
+ "leagueNames": {
+ "Bronze": "Bronze be",
+ "Diamond": "Shiny gem",
+ "Gold": "Dubloons",
+ "Silver": "Argent"
+ },
+ "mapsNames": {
+ "Big G": "Cap'n G",
+ "Bridgit": "Bridgit",
+ "Courtyard": "Hearties' Haven",
+ "Crag Castle": "Crag Fortress",
+ "Doom Shroom": "Doom Shroom, matey",
+ "Football Stadium": "Flibustiers' Ground",
+ "Happy Thoughts": "Jolly Dreams",
+ "Hockey Stadium": "Icy Field",
+ "Lake Frigid": "Frigid Cove",
+ "Monkey Face": "Monkey Mug",
+ "Rampage": "Ruckus",
+ "Roundabout": "Roundabout, matey",
+ "Step Right Up": "Step Right Aboard",
+ "The Pad": "Th' Corsair's Cradle",
+ "Tip Top": "Tip Top",
+ "Tower D": "D Tower",
+ "Zigzag": "Zigzag, matey!"
+ },
+ "playlistNames": {
+ "Just Epic": "Just Bonkers",
+ "Just Sports": "Jest Sportin'"
+ },
+ "scoreNames": {
+ "Flags": "Jolly Rogers",
+ "Goals": "booty",
+ "Score": "Plunder",
+ "Survived": "Be survivin'!",
+ "Time": "Tide",
+ "Time Held": "Time Captured"
+ },
+ "serverResponses": {
+ "A code has already been used on this account.": "A codex be already in use on this account, matey.",
+ "A reward has already been given for that address.": "A bounty's already been served fer that location, matey.",
+ "Account linking successful!": "Account linkin' be a success, matey!",
+ "Account unlinking successful!": "Account be unlinked, savvy!",
+ "Accounts are already linked.": "Accounts be already linked, matey.",
+ "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Ad view be not verified, matey.\n Make sure ye be usin' an official and up-to-date version o' the game.",
+ "An error has occurred; (${ERROR})": "A blunder beha' happened; (${ERROR})",
+ "An error has occurred; please contact support. (${ERROR})": "Arrr! A blunder be afoot; seek out the support crew. (${ERROR})",
+ "An error has occurred; please contact support@froemling.net.": "A blunder be happened; do contact support@froemling.net.",
+ "An error has occurred; please try again later.": "A mishap be happenin'; try again later, matey.",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Be ye sure ye want to link these accounts? \n\n${ACCOUNT1} \n${ACCOUNT2} \n\nThis deed can't be undone!",
+ "BombSquad Pro unlocked!": "BombSquad Pro be unlocked, arrr!",
+ "Can't link 2 accounts of this type.": "Ye can't be linkin' 2 accounts o' this sort.",
+ "Can't link 2 diamond league accounts.": "Can't be joinin' 2 diamond league accounts, matey.",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "Can’t link; would be over ${COUNT} mateys linked accounts.",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Cheatin' be detected; scores an' booty suspended fer ${COUNT} days.",
+ "Could not establish a secure connection.": "Couldn’t forge a trusty link, matey.",
+ "Daily maximum reached.": "Arrr, daily max be hit!",
+ "Daily sign-in reward": "Reward fer daily boardin' the ship",
+ "Entering tournament...": "Settin' sail fer the tournament...",
+ "Invalid code.": "Code be invalid, matey.",
+ "Invalid payment; purchase canceled.": "Ye payment be invalid; yer buyin' be scuttled.",
+ "Invalid promo code.": "Ye be using a scallywag promo code!",
+ "Invalid purchase.": "Ye be makin' a wrong buy.",
+ "Invalid tournament entry; score will be ignored.": "Blasted tournament entry be invalid; yer score be ignored!",
+ "Item unlocked!": "Ye be unlockin' an item!",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "LINKING DENIED. ${ACCOUNT} be havin' \nimportant treasure that'd ALL BE LOST. \nYe can link it in the opposite order if ye fancy\n(and lose THIS account's booty instead)",
+ "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Be ye wantin' to link account ${ACCOUNT} to this here account? \nAll treasure on ${ACCOUNT} be settin' sail to \nDavy Jones' locker. This be irreversible. Be ye certain?",
+ "Longer streaks lead to better rewards.": "better treasures awaits them o' brave 'earts",
+ "Max number of playlists reached.": "Aye, ye've hit th' max o' playlists!",
+ "Max number of profiles reached.": "Ye've hit the max o' profiles, matey!",
+ "Maximum friend code rewards reached.": "Ye be hittin’ the max friend code booty!",
+ "Message is too long.": "The message be too long, matey.",
+ "New tournament result!": "New result for yer last battle!",
+ "No servers are available. Please try again soon.": "No servers be available. Try again soon, matey.",
+ "No slots available. Free a slot and try again.": "No room for yer booty. Open them for room and trrry again.",
+ "Profile \"${NAME}\" upgraded successfully.": "Profile o' ${NAME} be upgraded splendidly.",
+ "Profile could not be upgraded.": "Profile be unable t' be upgraded.",
+ "Purchase successful!": "Ye be buyin' successful!",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Got yer ${COUNT} tickets fer signin' in.\nReturn tomorrow fer ${TOMORROW_COUNT} more!",
+ "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "Server be out o' service in this version o' the game;\nUpdate to a newer version, matey.",
+ "Sorry, there are no uses remaining on this code.": "Arrr, no uses be left fer this code, matey.",
+ "Sorry, this code has already been used.": "Arrr, this code be already used, matey.",
+ "Sorry, this code has expired.": "Arrr, this code be expired, matey.",
+ "Sorry, this code only works for new accounts.": "Arrr, this code be workin' only fer fresh accounts!",
+ "Sorry, this has expired.": "Arr! Tis' be from too long ago!",
+ "Still searching for nearby servers; please try again soon.": "Still huntin' fer nearby ships; try again shortly, matey.",
+ "Streak: ${NUM} days": "days with no accidents: ${NUM}",
+ "Temporarily unavailable; please try again later.": "Be out o' reach fer now; please try again later, matey.",
+ "The tournament ended before you finished.": "The tourney be over 'fore ye finished.",
+ "This account cannot be unlinked for ${NUM} days.": "This account be stuck fer ${NUM} days.",
+ "This code cannot be used on the account that created it.": "This code be not fer use on the account that made it.",
+ "This is currently unavailable; please try again later.": "This be not available now; try again later, matey.",
+ "This requires version ${VERSION} or newer.": "This be needin' version ${VERSION} or newer, matey.",
+ "Tournaments disabled due to rooted device.": "Tournaments be disabled 'cause o' rooted contraption.",
+ "Tournaments require ${VERSION} or newer": "Tournaments be needin' ${VERSION} or newer, matey!",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Be ye wantin' t' unlink ${ACCOUNT} from this account?\nAll treasure on ${ACCOUNT} be reset.\n(Except fer achievements in some cases, arr!)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ARRR: Beware! Complaints o' hackin' be raised against yer account.\nAccounts caught hackin' shall be banned. Play fair, me hearty!",
+ "Wait reduced!": "Ye no more need for waitin'!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "WARNING: the version o' this ship is limited to old pirate data; stuff may appear missin' or outdated.\nPlease upgrade to newer ship so ye can see your latest pirate data.",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Be ye wantin' to link yer device account to this one?\n\nYe device account be ${ACCOUNT1}\nThis account be ${ACCOUNT2}\n\nThis be lettin' ye keep yer current progress.\nArrr: this can’t be undone!",
+ "You already own this!": "Ye already be ownin' this!",
+ "You can join in ${COUNT} seconds.": "Ye can join in ${COUNT} heartbeats.",
+ "You don't have enough tickets for this!": "Ye ain't got enough tickets fer this!",
+ "You don't own that.": "Ye don't be ownin' that.",
+ "You got ${COUNT} tickets!": "Ye got ${COUNT} tickets, matey!",
+ "You got ${COUNT} tokens!": "Ye be gettin ${COUNT} coins, matey!",
+ "You got a ${ITEM}!": "Ye got a ${ITEM}!",
+ "You got a chest!": "Yer got yerself a treasure chest! Ehyyyy!!!",
+ "You got an achievement reward!": "Yer got a achievement shiny!",
+ "You have been promoted to a new league; congratulations!": "Ye be promoted to a new league; congrats, matey!",
+ "You lost a chest! (All your chest slots were full)": "Arr! Ye be lost yer treasure! (All room for booty were taken)",
+ "You must update the app to view this.": "Ye be needin' t' update th' app t' see this.",
+ "You must update to a newer version of the app to do this.": "Ye be needin' t' upgrade t' a fresh version o' th' app t' do this.",
+ "You must update to the newest version of the game to do this.": "Ye be needin' t' update t' the latest version o' th' game t' do this.",
+ "You must wait a few seconds before entering a new code.": "Ye be needin' to wait a spell 'fore ye enter a new code.",
+ "You placed #${RANK} in a tournament!": "Ye' be placed #${RANK} in the last battle!",
+ "You ranked #${RANK} in the last tournament. Thanks for playing!": "Ye be ranked #${RANK} in th' last tournament. Arrr, thanks fer playin'!",
+ "Your account was rejected. Are you signed in?": "Yer account be rejected, matey. Be ye signed in?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Yerr' be not watching the videos (or just not registering). We be limitin them for now.",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Ye copy o' the game be altered.\nPlease undo any changes and give it another go.",
+ "Your friend code was used by ${ACCOUNT}": "Ye matey code be usin' by ${ACCOUNT}"
+ },
+ "settingNames": {
+ "1 Minute": "1 Tick o' the Clock",
+ "1 Second": "1 Heartbeats",
+ "10 Minutes": "10 Tick o' the Clock",
+ "2 Minutes": "2 Tick o' the Clock",
+ "2 Seconds": "2 Heartbeats",
+ "20 Minutes": "20 Tick o' the Clock",
+ "4 Seconds": "4 Heartbeats",
+ "5 Minutes": "5 Tick o' the Clock",
+ "8 Seconds": "8 Tickin' Seconds",
+ "Allow Negative Scores": "Let the Scallywags Score Negatively",
+ "Balance Total Lives": "Balance Total Lives, Arrr!",
+ "Bomb Spawning": "Powder Keg Spawnin'",
+ "Chosen One Gets Gloves": "Bounty Has Strong Hooks",
+ "Chosen One Gets Shield": "Bounty Has Abs",
+ "Chosen One Time": "Bounty Time",
+ "Enable Impact Bombs": "Engage Impact Bombs, matey!",
+ "Enable Triple Bombs": "Unleash Triple Bombs",
+ "Entire Team Must Finish": "All Hands Must Complete",
+ "Epic Mode": "Epic Ahoy",
+ "Flag Idle Return Time": "Jolly Roger Idle Return Time",
+ "Flag Touch Return Time": "Jolly Roger Touch Back Time",
+ "Hold Time": "Avast Time",
+ "Kills to Win Per Player": "Kills t' Win Fer Player",
+ "Laps": "Laps, matey!",
+ "Lives Per Player": "Lives Fer Matey",
+ "Long": "Long John",
+ "Longer": "Longer",
+ "Mine Spawning": "Arrr, Spawnin' o' Mines",
+ "No Mines": "Nay Mines",
+ "None": "Naught",
+ "Normal": "Naught",
+ "Pro Mode": "Cap'n Mode",
+ "Respawn Times": "Rebirth Intervals",
+ "Score to Win": "Mark fer Victory",
+ "Short": "Brief",
+ "Shorter": "Briefer",
+ "Solo Mode": "Alone Mode",
+ "Target Count": "Target Count be",
+ "Time Limit": "Hourglass Boundary"
+ },
+ "statements": {
+ "${TEAM} is disqualified because ${PLAYER} left": "${TEAM} be walkin' the plank 'cause ${PLAYER} abandoned ship",
+ "Killing ${NAME} for skipping part of the track!": "Slayin' ${NAME} for skippin' part o' the course!",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Be warned, ${NAME}: Goin fast or button-breakin may knock ye out cold!"
+ },
+ "teamNames": {
+ "Bad Guys": "Scoundrel Crew",
+ "Blue": "Sapphire",
+ "Good Guys": "Righteous Crew",
+ "Red": "Scarlet"
+ },
+ "tips": {
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "A perfectly timed running-jumping-spin-punch can send a scallywag to \nDavy Jones' locker in a single blow and earn ye lifelong respect from yer mates.",
+ "Always remember to floss.": "Always be rememberin' to keep yer teeth shipshape, matey! Aye, and don't forget to floss!",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Craft player pirates for ye and yer mates with \nyer preferred names and looks, instead of relyin' on random ones.",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Curse boxes turn ye into a ticking time bomb, matey. \nThe only cure be to swiftly snatch a health-pack afore ye blow",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Despite their appearances, all characters be possessin' the same abilities. \nSo choose the one that resembles ye the most!",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Don't be too cocksure with that energy shield, matey. Ye can still find yerself hurled off a cliff if ye ain't careful!",
+ "Don't run all the time. Really. You will fall off cliffs.": "Don't be sprintin' all the time, matey. Mark me words, ye'll find yerself overboard off cliffs if ye don't ease up!",
+ "Don't spin for too long; you'll become dizzy and fall.": "Don't be spinning for too long, lest ye become dizzy and keel over like a drunken sailor!",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Clutch any button to break into a run. (The trigger buttons be fine choices if ye have 'em aboard)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Clutch any button to break into a run. Ye'll cover ground quicker, but beware, \nye won't be turning on a dime, so keep a weather eye out for cliffs ahead!",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Ice gunpowder may not pack much punch, but they freeze \nthe soul of whoever they strike, leaving 'em vulnerable to shattering.",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "If a scallywag grabs ye, give 'em a good punch and they'll likely drop ye. \nWorks just as well on land as it does at sea!",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "If ye find yerself short on controllers, hoist the '${REMOTE_APP_NAME}' app onto yer mobile devices, \nand ye can steer yer ship with 'em just like a proper captain!",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "If ye find yerself stuck with a sticky-bomb, jump like a bilge rat and spin like a whirlpool. \nYe might just shake the blasted thing loose, or at least make a grand show of yer final moments!",
+ "If you kill an enemy in one hit you get double points for it.": "If ye send a foe to Davy Jones' locker in a single blow, ye'll be haulin' in double the booty for yer trouble.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "If ye be cursed by ill fate, yer only chance for survival be to spy out \na health powerup in the next few ticks o' the clock.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "If ye be stayin' anchored in one spot, ye'll be meetin' Davy Jones soon enough! Run and weave to keep the sharks at bay and yer ship afloat",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "If ye be havin' a swarm o' sailors joinin' and departin' yer ship, be sure to hoist the 'auto-kick-idle-players' flag \nin yer settings, lest any scallywag forgets to walk the plank",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "If yarr ship is getting too warrrm or you don't want it go down,\nTurn down the graphicky stuff.",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Yarr ship is too slow?\nIf so then trry turnin the graphicky stuff down!",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "In Steal-the-Booty, yarr trreasure must be at boat to get their trrreasure!\nIf you steal theirrr coffer before they do, yarr might get a chance!",
+ "In hockey, you'll maintain more speed if you turn gradually.": "In Ice Battley,yarr can keep yarself runnin' if ya just slowlye turrrn.",
+ "It's easier to win with a friend or two helping.": "Yarr hire some pirate to help ya! It's betterrr.",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "Yarr jump as yarr's shootin' to take it more higherrr!",
+ "Land-mines are a good way to stop speedy enemies.": "Shoot the mine forr stoppin those runnin scallywags!!",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Yarr arrms can pick up any thing and thrrrow,Yarr can also thrrow some scallywags.\nThrrowing them offf the ship is yar best thinkin!",
+ "No, you can't get up on the ledge. You have to throw bombs.": "Arr, you can't get up there lad. You have to throw bombs.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Yarr pirates can join and abandon me ship at any time!\nThey can also brrring some and leave buttony stuff!",
+ "Practice using your momentum to throw bombs more accurately.": "Use yarr legs to shoot betterrrr!",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Swings be mightier the faster yer fists be movin', \nso try runnin', jumpin', and spinnin' like a whirlwind.",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "rrun baack en forth before blasdtin\nto whip it into yerr enemies",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "if ya wanna get a buncha pirates out\nblast a powder near them powder cubes",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "as a wise captain once said:\n\"BE CAREFUL OF YER STUPID HEAD\"",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "these scallywags aint gonna stop coming, but the more ye kill\nthe more yer legends will spread accross the sea (arrrrr)",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "the powerr of yer throws is based on where yer walkin\nif ya want them in front of yer, then stop movin",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "tired of them shanties? replace it with yer owns!\nidk how tho",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "cook yer enemies some delicious powderrr",
+ "Try tricking enemies into killing eachother or running off cliffs.": "trick them bilge suckers into hittin eachother or runnin of yer ship",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "smash them ${PICKUP} button to grrrab them flag",
+ "Whip back and forth to get more distance on your throws..": "whip yer powder to get them blast further",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "ya can 'aim' yer fists like powder by whippin yer body.\nya can use this for knocking them lily livers off yer ship or claimin doubloons in ice age",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "ya can tell when the powder is gonna blast from them\ncolors hopin on the fuse: yeller..orange..red..BLAST!",
+ "You can throw bombs higher if you jump just before throwing.": "yer powderr can reach the top of them ship if ya jump before blastin",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "pirrates' skulls arre sensitive\ndont blast yer's into them walls",
+ "Your punches do much more damage if you are running or spinning.": "yer fists deal more than powderr if yer runnin or whippin"
+ }
+ },
+ "trophiesRequiredText": "this thingy need them ${NUMBER} of yer treasures",
+ "trophiesText": "treasures",
+ "trophiesThisSeasonText": "yer treasures this season",
+ "tutorial": {
+ "cpuBenchmarkText": "yer tutorial is gonna fight yer CPU at the speed of 583153348.236 knots",
+ "phrase01Text": "Ahoy, Captain!",
+ "phrase02Text": "Welcome to ${APP_NAME}(its actually PowderTime(C) but ok)",
+ "phrase03Text": "here's a few tips on how to control yer pirate:",
+ "phrase04Text": "alotta stuff in ${APP_NAME} are SCIENCE based.",
+ "phrase05Text": "like when ya fist them enemies,...",
+ "phrase06Text": "..damage is based on the speed of yer fists.",
+ "phrase07Text": "Aye? We weren't movin, so that barely hurt them ${NAME}.",
+ "phrase08Text": "lets try jumpin and gettin dizzy to get more speed",
+ "phrase09Text": "Aye, that did the deed.",
+ "phrase10Text": "runnin is cool too captain.",
+ "phrase11Text": "smash ANY of them buttons to run",
+ "phrase12Text": "ya wanna be like jack? run AND spin.",
+ "phrase13Text": "(${NAME} was gonna walk yer plank anyways)",
+ "phrase14Text": "ya can pick up and throw alotta stuff, ${NAME} is just one example",
+ "phrase15Text": "and finally, powder",
+ "phrase16Text": "Hurlin' bombs be an art ye need to hone, matey.",
+ "phrase17Text": "Arrr! Ye call that a toss? That be a sorry excuse for a throw, matey!",
+ "phrase18Text": "movin helps ya powderr further",
+ "phrase19Text": "jumpin makes ya get higher",
+ "phrase20Text": "whiplashin them makes a hole in the ship even before the powder blasts!",
+ "phrase21Text": "timin them powder is a bit hard",
+ "phrase22Text": "err",
+ "phrase23Text": "let them powder \"cook\" for a bit",
+ "phrase24Text": "delicious!",
+ "phrase25Text": "Well, that be just about it.",
+ "phrase26Text": "go and take back the sea, captain",
+ "phrase27Text": "Remember yer training, and ye WILL come back alive!",
+ "phrase28Text": "...aye, mayhap..",
+ "phrase29Text": "Good luck mate!",
+ "randomName1Text": "Douglass",
+ "randomName2Text": "Morgan",
+ "randomName3Text": "Ironfist",
+ "randomName4Text": "Jones",
+ "randomName5Text": "Jack",
+ "skipConfirmText": "Are ye sure mate? Tap or press to confirm.",
+ "skipVoteCountText": "${COUNT}/${TOTAL} skip votes",
+ "skippingText": "skipping training... Arrrgh",
+ "toSkipPressAnythingText": "(tap or prress anything to skip training)"
+ },
+ "twoKillText": "2x KILL!",
+ "uiScaleText": "UI Spyglass Magnification",
+ "unavailableText": "unavailable",
+ "unclaimedPrizesText": "ye 'ave unclaimed booty!",
+ "unconfiguredControllerDetectedText": "Unconfigured controller detected:",
+ "unlockThisInTheStoreText": "This must be unlocked in the shore.",
+ "unlockThisProfilesText": "To create more than ${NUM} pirates, ye need:",
+ "unlockThisText": "To unlock this, ye need:",
+ "unsupportedControllerText": "Arrr, that contraption by the name o' \"${NAME}\" be not a sailin' ship we support.",
+ "unsupportedHardwareText": "Sorrry mate, this harrdware is not supporrted by this build of the game.",
+ "upFirstText": "Up first:",
+ "upNextText": "Up next in game ${COUNT}:",
+ "updatingAccountText": "Updating your arrcount...",
+ "upgradeText": "Upgrade",
+ "upgradeToPlayText": "Ye need to get \"${PRO}\" in the gunpowder shore t' sail around here.",
+ "useDefaultText": "Use Default",
+ "userSystemScriptsCreateText": "Craft User System Scripts",
+ "userSystemScriptsDeleteText": "Blast User System Scripts from the plank",
+ "usesExternalControllerText": "This game uses an external controllerrr for input.",
+ "usingItunesText": "Using Music App for soungtrack...",
+ "v2AccountLinkingInfoText": "To share ye beauty pirate, tap that Manage Account.",
+ "v2AccountRequiredText": "This here needs a bilge sucking V2 ID to work. Go try getting one of those.",
+ "validatingTestBuildText": "Validating Test Build...",
+ "viaText": "by",
+ "victoryText": "Bounty !!!",
+ "voteDelayText": "Ye can't start anotherr vote for ${NUMBER} seconds",
+ "voteInProgressText": "A vote is already in prrogrrress...",
+ "votedAlreadyText": "Ye already voted",
+ "votesNeededText": "${NUMBER} votes needed arrrhh...",
+ "vsText": "V/s.",
+ "waitingForHostText": "(waiting for ${HOST} to set sail)",
+ "waitingForPlayersText": "waiting for pirates to join...",
+ "waitingInLineText": "Waiting in line (ship is full)... arrr...",
+ "watchAVideoText": "Scout a Ship",
+ "watchAnAdText": "Watch a Show",
+ "watchWindow": {
+ "deleteConfirmText": "Forget \"${REPLAY}\"?",
+ "deleteReplayButtonText": "Forget\nMemory",
+ "myReplaysText": "My Memories",
+ "noReplaySelectedErrorText": "No Memory Chosen",
+ "playbackSpeedText": "Memory Speed: ${SPEED}",
+ "renameReplayButtonText": "Rename\nMemory",
+ "renameReplayText": "Rename \"${REPLAY}\" to:",
+ "renameText": "Rename",
+ "replayDeleteErrorText": "Errorr forgetting memory. Arrr!!",
+ "replayNameText": "Memory Name",
+ "replayRenameErrorAlreadyExistsText": "A memory with that name already exists.",
+ "replayRenameErrorInvalidName": "Can't rename memory; invalid name. Arrr!",
+ "replayRenameErrorText": "Errorrr renaming memory.",
+ "sharedReplaysText": "Shared Memories",
+ "titleText": "Watch",
+ "watchReplayButtonText": "Watch yer\nmemory"
+ },
+ "waveText": "Wave",
+ "wellSureText": "Sure Mate!",
+ "whatIsThisText": "And what tis supposed to be??",
+ "wiimoteLicenseWindow": {
+ "titleText": "DarwiinRemote Copyright ©"
+ },
+ "wiimoteListenWindow": {
+ "listeningText": "Listening For Weemotes...",
+ "pressText": "Prress Weemote buttons 1 and 2 togetherr. Arr!!!",
+ "pressText2": "On newerr Weemotes with Motion Plus built in, prress the red 'sink' button on the back instead."
+ },
+ "wiimoteSetupWindow": {
+ "copyrightText": "DarwiinRemote Copyright",
+ "listenText": "Ahoy Listen",
+ "macInstructionsText": "Make sure your Wee is off and Goldtooth is enabled\non yer Mac, then prress 'Listen'. Weemote support can\nbe a bit yanky, so yer may have to trry a few times\nbefore yer get a connection.\n\nGoldtooth should handle up to 7 pirates,\nthough yer mileage may varry.\n\nBombSquad supports the original Weemotes, Nunchuks,\nand the Classic Controllerr.\nThe newer Wee Remote Plus now works too\nbut not with luggage.",
+ "thanksText": "Thanks to the DarwiinRemote gang\nFor making this possible. Arrr!!!\n",
+ "titleText": "Weemote setup arrr !"
+ },
+ "winsPlayerText": "${NAME} Wins! Arrr !!!",
+ "winsTeamText": "${NAME} Wins! Arrrr !!!",
+ "winsText": "${NAME} Wins! Arrrr !!!",
+ "workspaceSyncErrorText": "Errrorrr sinking ${WORKSPACE}. See log for morrre.",
+ "workspaceSyncReuseText": "Can't sink ${WORKSPACE}. Reusing prrevious sinked verrrsion.",
+ "worldScoresUnavailableText": "Sea points arr gone.",
+ "worldsBestScoresText": "Best scorrr o all sailorrs",
+ "worldsBestTimesText": "Best times o all sailorrs",
+ "xbox360ControllersWindow": {
+ "getDriverText": "Get yer Drivers",
+ "macInstructions2Text": "to contrrol yer pirates, yaar also need them magic receivers thaart\ncome wit the 'CrrossBox magic contrroler for holes in yer ship'.\nget 1 magic receiver, powder with 4 pirrrrates!\n\n\nAvast ye! magic stuuf frrom the 3rrd class ships wont do magic!\nsmallcushion(Trademark pending) ain't selling em separately! yer need em\nfrom them bundle or yer can get em on the bay.\n\nif this makes ya go yarrrr then give the vrrroom vrroooom dev\nsome pieces of eight at his place",
+ "macInstructionsText": "ya need sum\nmac\ndrivers",
+ "ouyaInstructionsText": "to use them crros box 360(C) controllers with PowderTime(Trademark pending, simply\nplug em into yer plastic thing's USP port. yer can use a psp bob\nto have multiplee pirrrates\n\nte use them magical ones yer have to get a magic thingy,\ndunno where ya can get em\nbut\nit lets yarrr powder around with 4 pirrates!",
+ "titleText": "usin the crrross box contrrolers with ${APP_NAME}:"
+ },
+ "yesAllowText": "Aye, Captain!",
+ "yourBestScoresText": "yer best doubloons",
+ "yourBestTimesText": "yer best times",
+ "yourPrizeText": "Yar treasure:"
+}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/polish.json b/dist/ba_data/data/languages/polish.json
index e5bee292..bc0dda39 100644
--- a/dist/ba_data/data/languages/polish.json
+++ b/dist/ba_data/data/languages/polish.json
@@ -1,18 +1,20 @@
{
"accountSettingsWindow": {
- "accountNameRules": "Nazwy kont nie mogą zawierać emotikonków ani innych znaków specjalnych",
+ "accountNameRules": "Nazwy kont nie mogą zawierać emotikonów, ani innych znaków specjalnych",
"accountProfileText": "(profil konta)",
"accountsText": "Konta",
"achievementProgressText": "Osiągnięcia: ${COUNT} z ${TOTAL}",
"campaignProgressText": "Postęp Kampanii [Trudny]: ${PROGRESS}",
"changeOncePerSeason": "Możesz to zmienić tylko raz na sezon.",
- "changeOncePerSeasonError": "Musisz poczekać do następnego sezonu by znowu to zmienić (${NUM} dni)",
- "customName": "Losowa Nazwa",
+ "changeOncePerSeasonError": "Musisz poczekać do następnego sezonu, by znowu to zmienić (${NUM} dni)",
+ "createAnAccountText": "Stwórz Konto",
+ "customName": "Własna Nazwa",
+ "deleteAccountText": "Usuń konto",
"googlePlayGamesAccountSwitchText": "Jeśli chcesz użyć innego konta Google,\nużyj aplikacji Gry Google Play, aby przełączyć się na to konto.",
"linkAccountsEnterCodeText": "Wpisz Kod",
"linkAccountsGenerateCodeText": "Wygeneruj Kod",
"linkAccountsInfoText": "(przenoś postęp między różnymi platformami)",
- "linkAccountsInstructionsNewText": "Aby połączyć dwa konta, wygeneruj kod na pierwszym,\ni wpisz ten kod na drugim. Postęp z drugiego\nbędzie podzielony między oba konta.\n(Postęp z pierwszego zostanie utracony)\n\nMożesz połączyć do ${COUNT} kont.\n\nWAŻNE: łącz tylko swoje własne konta;\nJeśli łączysz konto ze znajomym, nie będziecie\nmogli grać przez internet w tym samym czasie.",
+ "linkAccountsInstructionsNewText": "Aby połączyć dwa konta, wygeneruj kod na pierwszym\ni wpisz ten kod na drugim. Postęp z drugiego\nbędzie podzielony między oba konta.\n(Postęp z pierwszego konta zostanie utracony)\n\nMożesz połączyć do ${COUNT} kont.\n\nWAŻNE: łącz tylko swoje własne konta;\nJeśli łączysz konto ze znajomym, nie będziecie\nmogli grać przez internet w tym samym czasie.",
"linkAccountsInstructionsText": "By połączyć dwa konta, wygeneruj kod\nna jednym z nich i wpisz na drugim.\nPostęp i ekwipunek zostaną połączone.\nMożesz połączyć do ${COUNT} kont.\n\nUWAGA: Łącz tylko konta, które należą do Ciebie!\nJeśli połączysz konto z przyjacielem,\nnie będziecie mogli grać w tym samym czasie!\n\nAktualnie nie można tego cofnąć, więc uważaj!",
"linkAccountsText": "Połącz Konta",
"linkedAccountsText": "Połączone Konta:",
@@ -24,19 +26,21 @@
"resetProgressText": "Wyczyść postęp",
"setAccountName": "Wybierz nazwę konta",
"setAccountNameDesc": "Wybierz nazwę do wyświetlenia dla swojego konta.\nMożesz użyć nazwy z jednego z połączonych kont\n lub utworzyć unikalną niestandardową nazwę.",
- "signInInfoText": "Zapisz się, by zbierać kupony, rywalizować online\ni przenosić postęp gry między urządzeniami",
- "signInText": "Zapisz się",
+ "signInInfoText": "Zaloguj się, by zbierać kupony, rywalizować online\ni przenosić postęp gry między urządzeniami",
+ "signInText": "Zaloguj się",
+ "signInWithAnEmailAddressText": "Zaloguj się adresem email",
"signInWithDeviceInfoText": "(automatyczne konto dostępne tylko z tego urządzenia)",
- "signInWithDeviceText": "Zapisz się kontem z urządzenia.",
- "signInWithGameCircleText": "Zapisz się z Game Circle",
- "signInWithGooglePlayText": "Zapisz się kontem Google Play",
- "signInWithTestAccountInfoText": "Konto.",
- "signInWithTestAccountText": "Zapisz się testowym kontem.",
+ "signInWithDeviceText": "Zaloguj się kontem urządzenia",
+ "signInWithGameCircleText": "Zaloguj się z Game Circle",
+ "signInWithGooglePlayText": "Zaloguj się kontem Google Play",
+ "signInWithTestAccountInfoText": "(przestarzały typ konta; w przyszłości używaj konta urządzenia)",
+ "signInWithTestAccountText": "Zaloguj się kontem testowym",
+ "signInWithText": "Zaloguj się kontem ${SERVICE}",
"signInWithV2InfoText": "(konto działa na wszystkich platformach)",
- "signInWithV2Text": "Zaloguj się używając konta BombSquad",
+ "signInWithV2Text": "Zaloguj się kontem ${APP_NAME}",
"signOutText": "Wypisz się",
- "signingInText": "Zapisywanie się...",
- "signingOutText": "Wypisywanie...",
+ "signingInText": "Trwa logowanie...",
+ "signingOutText": "Trwa wylogowywanie...",
"testAccountWarningCardboardText": "Ostrzeżenie: Zapisujesz się przy użyciu konta \"test\".\nZostanie ono zastąpione kontem Google w momencie\nwspierania gry przez Google Cardboard.\n\nOd tego momentu musisz zdobywać wszystkie kupony w grze.\n(zaktualizuj grę do wersji BombSquad Pro za darmo)",
"testAccountWarningOculusText": "Ostrzeżenie: zapisujesz się przy użyciu konta \"test\".\nZostanie ono zastąpione kontem oculusowym jeszcze w tym roku,\nktóre będzie oferowało zakup kuponów i inne funkcje.\n\nTeraz musisz zarobić wszystkie kupony grając.\n(jednakże możesz uzyskać aktualizację do wersji Pro za darmo)",
"testAccountWarningText": "Ostrzeżenie: możesz się zapisać używając konta \"test\".\nTo konto jest powiązane z konkretnym urządzeniem i \nmoże okresowo się zresetować. (wobec tego proszę nie\nzbierać/odblokowywać rzeczy lub osiągnięć dla tego konta)",
@@ -45,7 +49,7 @@
"unlinkAccountsInstructionsText": "Wybierz konto do rozłączenia",
"unlinkAccountsText": "Rozłącz konta",
"unlinkLegacyV1AccountsText": "Rozłącz stare konta (V1)",
- "v2LinkInstructionsText": "Użyj tego linku aby stworzyć konto lub zaloguj się.",
+ "v2LinkInstructionsText": "Użyj tego linku, aby stworzyć konto lub zalogować się.",
"viaAccount": "(przez konto ${NAME})",
"youAreLoggedInAsText": "Jesteś zalogowany jako:",
"youAreSignedInAsText": "Jesteś zalogowany jako:"
@@ -54,11 +58,11 @@
"achievementText": "Osiągnięcia",
"achievements": {
"Boom Goes the Dynamite": {
- "description": "Zabij 3 złych gości używając TNT",
- "descriptionComplete": "Zabiłeś 3 złych gości używając TNT",
+ "description": "Zabij 3 złych gości, używając TNT",
+ "descriptionComplete": "Zabiłeś 3 złych gości, używając TNT",
"descriptionFull": "Zabij 3 złych gości za pomocą TNT w trybie ${LEVEL}",
"descriptionFullComplete": "Zabiłeś 3 złych gości za pomocą TNT w trybie ${LEVEL}",
- "name": "Uwaga Leci Dynamit"
+ "name": "Uwaga, Leci Dynamit"
},
"Boxer": {
"description": "Wygraj bez używania bomb",
@@ -73,15 +77,15 @@
"name": "Podwójne dzierżenie"
},
"Flawless Victory": {
- "description": "Wygraj nie dając się uderzyć",
- "descriptionComplete": "Wygrałeś nie dając się uderzyć",
- "descriptionFull": "Wygraj w trybie ${LEVEL} nie dając się uderzyć",
- "descriptionFullComplete": "Wygrałeś w trybie ${LEVEL} nie dając się uderzyć",
+ "description": "Wygraj, nie dając się uderzyć",
+ "descriptionComplete": "Wygrałeś, nie dając się uderzyć",
+ "descriptionFull": "Wygraj w trybie ${LEVEL}, nie dając się uderzyć",
+ "descriptionFullComplete": "Wygrałeś w trybie ${LEVEL}, nie dając się uderzyć",
"name": "Zwycięstwo bez skazy"
},
"Free Loader": {
"descriptionFull": "Zacznij grę Free-For-All z dwoma graczami lub więcej",
- "descriptionFullComplete": "Zaczęto grę Free-For-All z dwoma, lub większą ilością graczy",
+ "descriptionFullComplete": "Zaczęto grę Free-For-All z dwoma lub większą ilością graczy",
"name": "Łącznik graczy"
},
"Gold Miner": {
@@ -181,10 +185,10 @@
"name": "Zawodowy Bokser"
},
"Pro Football Shutout": {
- "description": "Wygraj nie pozwalając zapunktować złym gościom",
- "descriptionComplete": "Wygrałeś nie pozwalając zapunktować złym gościom",
- "descriptionFull": "Wygraj w trybie ${LEVEL} nie pozwalając zapunktować złym gościom",
- "descriptionFullComplete": "Wygrałeś w trybie ${LEVEL} nie pozwalając zapunktować złym gościom",
+ "description": "Wygraj, nie pozwalając zapunktować złym gościom",
+ "descriptionComplete": "Wygrałeś, nie pozwalając zapunktować złym gościom",
+ "descriptionFull": "Wygraj w trybie ${LEVEL}, nie pozwalając zapunktować złym gościom",
+ "descriptionFullComplete": "Wygrałeś w trybie ${LEVEL}, nie pozwalając zapunktować złym gościom",
"name": "Zamurowanie bramki w trybie ${LEVEL}"
},
"Pro Football Victory": {
@@ -303,10 +307,10 @@
"name": "Ściana"
},
"Uber Football Shutout": {
- "description": "Wygraj nie pozwalając zapunktować wrogom",
- "descriptionComplete": "Wygrałeś nie pozwalając zapunktować wrogom",
- "descriptionFull": "Wygraj w trybie ${LEVEL} nie pozwalając zapunktować wrogom",
- "descriptionFullComplete": "Wygrałeś w trybie ${LEVEL} nie pozwalając zapunktować wrogom",
+ "description": "Wygraj, nie pozwalając zapunktować wrogom",
+ "descriptionComplete": "Wygrałeś, nie pozwalając zapunktować wrogom",
+ "descriptionFull": "Wygraj w trybie ${LEVEL}, nie pozwalając zapunktować wrogom",
+ "descriptionFullComplete": "Wygrałeś w trybie ${LEVEL}, nie pozwalając zapunktować wrogom",
"name": "Zamurowanie bramki w trybie ${LEVEL}"
},
"Uber Football Victory": {
@@ -339,9 +343,14 @@
"getMoreGamesText": "Więcej rozgrywek...",
"titleText": "Dodaj grę"
},
+ "addToFavoritesText": "Dodaj do ulubionych",
+ "addedToFavoritesText": "Dodano '${NAME}' do ulubionych",
+ "allText": "Wszystko",
"allowText": "Zezwól",
"alreadySignedInText": "Twoje konto jest zalogowane z innego urządzenia;\nproszę zmienić konta lub zamknąć grę na innych\nurządzeniach i spróbować ponownie.",
"apiVersionErrorText": "Nie mogę załadować modułu ${NAME}; wersja używana - ${VERSION_USED}; wymagana - ${VERSION_REQUIRED}.",
+ "applyText": "Zatwierdź",
+ "areYouSureText": "Jesteś pewny?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" aktywuj tylko wtedy, gdy są podłączone słuchawki)",
"headRelativeVRAudioText": "Head-Relative VR Audio",
@@ -366,15 +375,25 @@
"bombText": "Bomba",
"boostText": "Dopalacz",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} jest konfigurowany w samej aplikacji.",
- "buttonText": "Przycisk",
- "canWeDebugText": "Chcesz aby BombSquad automatycznie raportował błędy,\nawarie i podstawowe informacje o użytkowaniu deweloperowi?\n\nPrzesyłane dane nie będą zawierać Twoich osobistych danych,\na pomogą jedynie poprawić działanie gry i usunąć jej błędy.",
+ "buttonText": "przycisk",
+ "canWeDebugText": "Chcesz, aby ${APP_NAME} automatycznie raportował błędy,\nawarie i podstawowe informacje o użytkowaniu deweloperowi?\n\nPrzesyłane dane nie będą zawierać Twoich osobistych danych,\na pomogą jedynie poprawić działanie gry i usunąć jej błędy.",
"cancelText": "Anuluj",
"cantConfigureDeviceText": "Wybacz ale ${DEVICE} nie jest konfigurowalne.",
"challengeEndedText": "To wyzwanie zostało zakończone.",
"chatMuteText": "Wycisz Czat",
"chatMutedText": "Czat Wyciszony",
"chatUnMuteText": "Podgłośnij Czat",
+ "chests": {
+ "prizeOddsText": "Szanse na Nagrody",
+ "reduceWaitText": "Skróć Czekanie",
+ "slotDescriptionText": "Ta komórka może trzymać skrzynkę.\n\nSkrzynki można otrzymać przechodząc poziomy w kampanii, \njako nagrody w turniejach i zdobywając \nosiągnięcia.",
+ "slotText": "Komórka ${NUM}",
+ "slotsFullWarningText": "UWAGA: Wszystkie komórki na skrzynki są pełne.\nNowo zdobyte skrzynki zostaną utracone.",
+ "unlocksInText": "Odblokuje się za"
+ },
"choosingPlayerText": "",
+ "claimText": "Odbierz",
+ "codesExplainText": "Kody są dostarczane przez dewelopera w celu\ndiagnozowania i poprawiania problemów z kontem.",
"completeThisLevelToProceedText": "Musisz ukończyć ten\netap aby kontynuować!",
"completionBonusText": "Bonusowe zakończenie",
"configControllersWindow": {
@@ -391,7 +410,7 @@
},
"configGamepadSelectWindow": {
"androidNoteText": "Uwaga: wsparcie kontrolera uzależnione jest od urządzenia i wersji Androida.",
- "pressAnyButtonText": "Naciśnij dowolny na kontrolerze,\nktórego chcesz skonfigurować...",
+ "pressAnyButtonText": "Naciśnij dowolny przycisk na kontrolerze,\nktórego chcesz skonfigurować...",
"titleText": "Skonfiguruj Kontrolery"
},
"configGamepadWindow": {
@@ -399,8 +418,8 @@
"advancedTitleText": "Zaawansowane ustawienia Kontrolera",
"analogStickDeadZoneDescriptionText": "(włącz jeśli Twoja postać dryfuje po zwolnieniu drążka)",
"analogStickDeadZoneText": "Martwa strefa analogowego drążka",
- "appliesToAllText": "(zastosuj dla wszystkich kontrolerów tego typu)",
- "autoRecalibrateDescriptionText": "(aktywuj jeśli Twoja postać nie porusza się z pełną szybkością)",
+ "appliesToAllText": "(dotyczy wszystkich kontrolerów tego typu)",
+ "autoRecalibrateDescriptionText": "(aktywuj, jeśli Twoja postać nie porusza się z pełną szybkością)",
"autoRecalibrateText": "Auto kalibracja drążka analogowego",
"axisText": "oś",
"clearText": "wyczyść",
@@ -425,7 +444,7 @@
"runButton2Text": "Uruchom przycisk 2",
"runTrigger1Text": "Uruchom spust 1",
"runTrigger2Text": "Uruchom spust 2",
- "runTriggerDescriptionText": "(analogowe triggery pozwalają na uruchomione przy różnych prędkościach)",
+ "runTriggerDescriptionText": "(analogowe triggery pozwalają ci biec przy różnych prędkościach)",
"secondHalfText": "Użyj aby skonfigurować drugiego kontrolera,\nktóry widoczny jest jako pierwszy będąc\npodłączonym do tego samego urządzenia.",
"secondaryEnableText": "Aktywuj",
"secondaryText": "Drugi Kontroler",
@@ -458,16 +477,17 @@
"titleText": "Skonfiguruj ekran dotykowy",
"touchControlsScaleText": "Skala przycisków dotykowych"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} może zostać skonfigurowany w ustawieniach systemu.",
"configureItNowText": "Skonfigurować teraz?",
"configureText": "Skonfiguruj",
"connectMobileDevicesWindow": {
"amazonText": "Sklep Amazon",
"appStoreText": "App Store",
- "bestResultsText": "Dla lepszych efektów stwórz szybką sieć bezprzewodową.\nMożesz zredukować opóźnienia w grze poprzez: wyłączenie innych\nurządzeń korzystających w czasie gry z sieci wifi, będąc\nodpowiednio blisko routera wifi lub podpięcie się do hosta\nbezpośrednio przewodem sieciowym.",
+ "bestResultsText": "Dla lepszych efektów użyj szybkiej sieci bezprzewodowej. Możesz\nzredukować opóźnienia w grze poprzez wyłączenie innych urządzeń\nkorzystających w czasie gry z sieci wifi, bycie odpowiednio blisko\nroutera wifi lub podpięcie się do hosta bezpośrednio przewodem sieciowym.",
"explanationText": "Aby użyć smartfona lub tableta jako kontrolera w grze,\nzainstaluj na nim aplikację ${REMOTE_APP_NAME}. Do gry ${APP_NAME} można\nprzyłączyć dowolną ilość urządzeń poprzez sieć WiFi i to całkowicie za darmo!",
"forAndroidText": "dla Androida:",
"forIOSText": "dla iOS:",
- "getItForText": "Pobierz ${REMOTE_APP_NAME} dla systemu iOS ze sklepu Apple, a \ndla systemu Android ze sklepu Google Play lub Amazon Appstore.",
+ "getItForText": "Pobierz ${REMOTE_APP_NAME} dla systemu iOS ze sklepu Apple, a \ndla systemu Android ze sklepu Google Play lub Amazon Appstore",
"googlePlayText": "Google Play",
"titleText": "Używanie urządzeń mobilnych jako kontrolerów:"
},
@@ -501,7 +521,7 @@
"powerRankingPointsToRankedText": "(${CURRENT} z ${REMAINING} pkt)",
"powerRankingText": "Osiągnięcia",
"prizesText": "Nagrody",
- "proMultInfoText": "Gracze z aktualizacją ${PRO} otrzymują\n${PERCENT}% punktów więcej.",
+ "proMultInfoText": "Gracze z ulepszeniem ${PRO} otrzymują\n${PERCENT}% punktów więcej.",
"seeMoreText": "Więcej...",
"skipWaitText": "Pomiń oczekiwanie",
"timeRemainingText": "Pozostały czas",
@@ -528,7 +548,7 @@
"legalText": "Prawa autorskie:",
"publicDomainMusicViaText": "Podkład muzyczny - ${NAME}",
"softwareBasedOnText": "To oprogramowanie jest częściowo oparte na pracy ${NAME}",
- "songCreditText": "${TITLE} wykonywana przez ${PERFORMER}.\nSkomponowana przez ${COMPOSER}. Zorganizowana przez ${ARRANGER}.\nOpublikowana przez ${PUBLISHER}.\nDzięki uprzejmości ${SOURCE}",
+ "songCreditText": "${TITLE} wykonywana przez ${PERFORMER}.\nSkomponowana przez ${COMPOSER}. Zorganizował ją ${ARRANGER}.\nOpublikowana przez ${PUBLISHER}, dzięki uprzejmości ${SOURCE}.",
"soundAndMusicText": "Dźwięk i muzyka:",
"soundsText": "Dźwięki (${SOURCE}):",
"specialThanksText": "Specjalne podziękowania dla:",
@@ -567,16 +587,21 @@
"demoText": "Demo",
"denyText": "Odmów",
"deprecatedText": "Przestarzałe",
+ "descriptionText": "Opis",
"desktopResText": "Rozdzielczość ekranu",
"deviceAccountUpgradeText": "Uwaga:\nLogujesz się kontem urządzenia (${NAME}).\nKonta urządzenia zostaną usunięte w przyszłej aktualizacji.\nUlepsz do konta V2, jeżeli chcesz zachować swój postęp.",
"difficultyEasyText": "Łatwy",
"difficultyHardOnlyText": "Tylko w trudnym trybie",
"difficultyHardText": "Trudny",
- "difficultyHardUnlockOnlyText": "Ten poziom może zostać odblokowany tylko w trudnym trybie.\nCzy uważasz, że posiadasz to czego wymaga?!",
+ "difficultyHardUnlockOnlyText": "Ten poziom może zostać odblokowany tylko w trudnym trybie.\nCzy uważasz, że posiadasz to, czego wymaga?!?!",
"directBrowserToURLText": "Proszę, otwórz przeglądarkę na podanym adresie:",
"disableRemoteAppConnectionsText": "Wyłącz łączenia aplikacji BS-Remote",
"disableXInputDescriptionText": "Pozwala na podłączenie 4 kontrolerów, ale może nie działać.",
"disableXInputText": "Wyłącz XInput",
+ "disabledText": "Wyłączone",
+ "discardText": "Odrzuć",
+ "discordFriendsText": "Chcesz poszukać nowych ludzi do gry?\nDołącz do naszego Discorda i znajdź nowych znajomych!",
+ "discordJoinText": "Dołącz do Discorda",
"doneText": "Gotowe",
"drawText": "Remis",
"duplicateText": "Duplikuj",
@@ -611,10 +636,11 @@
"localProfileText": "(lokalny profil)",
"nameDescriptionText": "Nazwa gracza",
"nameText": "Nazwa",
+ "profileAlreadyExistsText": "Profil z taką nazwą już istnieje.",
"randomText": "losuj",
"titleEditText": "Edytuj profil",
"titleNewText": "Nowy profil",
- "unavailableText": "\"${NAME}\" jest zajęta, spróbuj innej.",
+ "unavailableText": "Nazwa \"${NAME}\" jest zajęta; spróbuj innej.",
"upgradeProfileInfoText": "To zarezerwuje nazwę gracza tylko dla\nciebie i pozwoli ci dodać do niego ikonkę.",
"upgradeToGlobalProfileText": "Ulepsz do Profilu Globalnego"
},
@@ -649,6 +675,7 @@
"useMusicFolderText": "Katalog plików muzycznych"
},
"editText": "Edytuj",
+ "enabledText": "Włączone",
"endText": "Koniec",
"enjoyText": "Miłej zabawy!",
"epicDescriptionFilterText": "${DESCRIPTION} Epickie zwolnione tempo.",
@@ -660,10 +687,12 @@
"errorText": "Błąd",
"errorUnknownText": "nieznany błąd",
"exitGameText": "Wyjść z ${APP_NAME}?",
+ "expiredAgoText": "Wygasło ${T} temu",
+ "expiresInText": "Wygaśnie za ${T}",
"exportSuccessText": "'${NAME}' eksportowane.",
"externalStorageText": "Pamięć zewnętrzna",
"failText": "Niepowodzenie",
- "fatalErrorText": "O nie, czegoś brakuje lub jest uszkodzone.\nSpróbuj przeinstalować grę lub skontaktuj się \npoprzez ${EMAIL} dla uzyskania pomocy.",
+ "fatalErrorText": "O nie, czegoś brakuje lub coś jest uszkodzone.\nSpróbuj przeinstalować grę lub skontaktuj się \npoprzez ${EMAIL} dla uzyskania pomocy.",
"fileSelectorWindow": {
"titleFileFolderText": "Wybierz plik lub katalog",
"titleFileText": "Wybierz plik",
@@ -696,6 +725,8 @@
"editText": "Edytuj\nlistę",
"gameListText": "Lista rozgrywek",
"newText": "Nowa\nlista",
+ "pointsToWinText": "Punkty do zwycięstwa",
+ "seriesLengthText": "Długość serii",
"showTutorialText": "Pokaż samouczek po grze",
"shuffleGameOrderText": "Losowa kolejność rozgrywek",
"titleText": "Własne listy rozgrywek trybu ${TYPE}"
@@ -708,7 +739,7 @@
"gamesToText": "${WINCOUNT} do ${LOSECOUNT}",
"gatherWindow": {
"aboutDescriptionLocalMultiplayerExtraText": "Pamiętaj: każde urządzenie podczas imprezy może posiadać\nwięcej niż jednego gracza jeśli masz więcej kontrolerów.",
- "aboutDescriptionText": "Używaj tych zakładek aby zorganizować imprezę.\n\nImprezy pozwalają na organizowanie rozgrywek i\nturniejów ze znajomymi wykorzystując różne urządzenia.\n\nUżyj przycisku ${PARTY} w prawym górnym rogu aby\nrozmawiać i współdziałać podczas imprezy.\n(na kontrolerze wciśnij ${BUTTON} gdy jesteś w menu)",
+ "aboutDescriptionText": "Używaj tych zakładek, aby zorganizować imprezę.\n\nImprezy pozwalają na organizowanie rozgrywek i\nturniejów ze znajomymi, wykorzystując różne urządzenia.\n\nUżyj przycisku ${PARTY} w prawym górnym rogu, aby\nrozmawiać i współdziałać podczas imprezy.\n(na kontrolerze wciśnij ${BUTTON}, gdy jesteś w menu)",
"aboutText": "Info",
"addressFetchErrorText": "",
"appInviteInfoText": "Zaproś przyjaciół by wypróbowali BombSquada, a dostaną \n${COUNT} darmowych kuponów. Dostaniesz ${YOU_COUNT}\nza każdego ktory wypróbuje.",
@@ -724,6 +755,7 @@
"copyCodeConfirmText": "Kod skopiowany do schowka.",
"copyCodeText": "Skopiuj kod",
"dedicatedServerInfoText": "Dla najlepszych wyników ustaw serwer dedykowany. Zobacz jak na bombsquadgame.com/server.",
+ "descriptionShortText": "Użyj okna zbiórki by stworzyć imprezę.",
"disconnectClientsText": "Spowoduje to rozłączenie ${COUNT} graczy\nbędących na imprezie. Jesteś pewny?",
"earnTicketsForRecommendingAmountText": "Znajomi dostaną ${COUNT} kuponów jeżeli wypróbują grę\n(a Ty dostaniesz ${YOU_COUNT} za każdego kto zagra.)",
"earnTicketsForRecommendingText": "Poleć grę dla darmowych\n kuponów...",
@@ -737,14 +769,14 @@
"friendPromoCodeAwardText": "Dostaniesz ${COUNT} kuponów zawsze gdy tego użyjesz.",
"friendPromoCodeExpireText": "Ten kod wygaśnie po ${EXPIRE_HOURS} godzinach i działa tylko dla nowych graczy.",
"friendPromoCodeInfoText": "Może zostać wykupione do ${COUNT} kuponów.\n\nIdź do \"Ustawienia->Zaawansowane->Wpisz Kod Promocyjny\" w grze aby go użyć. Idź do bombsquadgame.com by pobrać\nlinki do wszystkich wspieranych platform. Ten kod\nwygaśnie w ${EXPIRE_HOURS} godzin i jest prawidłowy tylko dla nowych graczy.",
- "friendPromoCodeInstructionsText": "Aby użyć, otwórz ${APP_NAME} i idź do \"Ustawienia->Zaawansowane-> Wpisz kod\".\nWejdź na bombsquadgame.com by zobaczyć linki dla wszystkich dostępnych platform (Android itp.)",
- "friendPromoCodeRedeemLongText": "Może być żądane do ${COUNT} darmowych kuponów dla najwięcej ${MAX_USES} ludzi.",
+ "friendPromoCodeInstructionsText": "Aby go użyć, otwórz ${APP_NAME} i przejdź do \"Ustawienia->Zaawansowane->Wyślij informacje\".\nLinki do pobrania gry dla wszystkich obsługiwanych platform znajdziesz na stronie bombsquadgame.com.",
+ "friendPromoCodeRedeemLongText": "Wykorzystanie go daje ${COUNT} darmowych kuponów dla najwięcej ${MAX_USES} ludzi.",
"friendPromoCodeRedeemShortText": "Może być żądane do ${COUNT} kuponów w grze.",
- "friendPromoCodeWhereToEnterText": "(W \"Ustawienia->Zaawansowane->Wpisz kod\")",
+ "friendPromoCodeWhereToEnterText": "(w \"Ustawienia->Zaawansowane->Wyślij informacje\")",
"getFriendInviteCodeText": "Zdobądź kod promocyjny kumpla",
- "googlePlayDescriptionText": "Zaproś użytkowników Google Play na imprezę:",
+ "googlePlayDescriptionText": "Zaproś użytkowników Google Play do imprezy:",
"googlePlayInviteText": "Zaproś",
- "googlePlayReInviteText": "Obecnie jest ${COUNT} graczy Google Play'a na imprezie,\nktórzy zostaną rozłączeni jeśli uruchomisz nowe zaproszenie.\nUwzględnij ich w nowym zaproszeniu, aby mogli powrócić.",
+ "googlePlayReInviteText": "Obecnie jest ${COUNT} graczy z Google Play'a na imprezie\nktórzy zostaną rozłączeni jeśli uruchomisz nowe zaproszenie.\nUwzględnij ich w nowym zaproszeniu, aby mogli powrócić.",
"googlePlaySeeInvitesText": "Zobacz zaproszenia",
"googlePlayText": "Google Play",
"googlePlayVersionOnlyText": "(Tylko Android / Google Play)",
@@ -772,11 +804,12 @@
"manualYourLocalAddressText": "Twój adres lokalny:",
"nearbyText": "W pobliżu",
"noConnectionText": "",
+ "noPartiesAddedText": "Nie dodano imprez",
"otherVersionsText": "(Inne wersje)",
"partyCodeText": "Kod imprezy",
"partyInviteAcceptText": "Akceptuj",
"partyInviteDeclineText": "Ignoruj",
- "partyInviteGooglePlayExtraText": "(zobacz zakładkę 'Google Play' w oknie 'Punkt Zborny')",
+ "partyInviteGooglePlayExtraText": "(zobacz zakładkę 'Google Play' w oknie 'Zbiórka')",
"partyInviteIgnoreText": "Ignoruj",
"partyInviteText": "${NAME} zaprosił Cię abyś\ndołączył do ich imprezy.",
"partyNameText": "Nazwa Imprezy",
@@ -804,7 +837,7 @@
"startHostingText": "Hostuj",
"startStopHostingMinutesText": "Możesz rozpocząć i zakończyć hostowanie za darmo przez następne ${MINUTES} minut.",
"stopHostingText": "Zakończ hostowanie",
- "titleText": "Punkt Zborny",
+ "titleText": "Zbiórka",
"wifiDirectDescriptionBottomText": "Jeśli wszystkie urządzenia posiadają panel 'Wi-Fi Direct', to powinny użyć go aby\nodnaleźć i połączyć się między sobą. Kiedy wszystkie są już połączone, możesz utworzyć\nimprezę używając zakładki 'Lokalna sieć', tak samo jak w standardowej sieci Wi-Fi.\n\nDla optymalnego działania, host Wi-Fi Direct powinien być hostem imprezy w ${APP_NAME}.",
"wifiDirectDescriptionTopText": "Wi-Fi Direct może być używany do bezpośredniego łączenia urządzeń na\nAndroidzie bez konieczności stosowania sieci Wi-Fi. Najlepiej działa na\nurządzeniach z systemem Android 4.2 lub nowszym.\nAby go użyć, otwórz ustawienia Wi-Fi urządzenia i odszukaj 'Wi-Fi Direct'.",
"wifiDirectOpenWiFiSettingsText": "Otwórz ustawienia Wi-Fi",
@@ -821,7 +854,7 @@
"titleText": "Zdobądź monety"
},
"getTicketsWindow": {
- "freeText": "DARMOWE!",
+ "freeText": "ZA DARMO!",
"freeTicketsText": "Darmowe kupony",
"inProgressText": "Transakcja w toku; proszę spróbować za chwilkę.",
"purchasesRestoredText": "Zakupy przywrócone.",
@@ -831,7 +864,7 @@
"ticketPack1Text": "Mała paczka kuponów",
"ticketPack2Text": "Średnia paczka kuponów",
"ticketPack3Text": "Duża paczka kuponów",
- "ticketPack4Text": "Paczka Kolos kuponów",
+ "ticketPack4Text": "Kolosalna paczka kuponów",
"ticketPack5Text": "Mamucia paczka kuponów",
"ticketPack6Text": "Paczka Ultimate kuponów",
"ticketsFromASponsorText": "Obejrzyj reklamę\ndla ${COUNT} kuponów",
@@ -844,6 +877,12 @@
"youHaveShortText": "masz ${COUNT} kuponów",
"youHaveText": "masz ${COUNT} kuponów"
},
+ "goldPass": {
+ "desc1InfTokensText": "Nieskończone żetony.",
+ "desc2NoAdsText": "Brak reklam.",
+ "desc3ForeverText": "Na zawsze.",
+ "goldPassText": "Złota Przepustka"
+ },
"googleMultiplayerDiscontinuedText": "Przepraszam, usługa gry wieloosobowej Google nie jest już dostępna.\nPracuję nad zamiennikiem tak szybko jak potrafię.\nTymczasem proszę o wypróbowanie innej metody połączenia.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Zakupy Google Play niedostępne.\nSpróbuj zaktualizować aplikację Google Play.",
"googlePlayServicesNotAvailableText": "Usługi Google Play są niedostępne.\nNiektóre funkcje aplikacji mogą być wyłączone.",
@@ -852,10 +891,12 @@
"alwaysText": "Zawsze",
"fullScreenCmdText": "Pełny ekran (Cmd-F)",
"fullScreenCtrlText": "Pełny ekran (Ctrl+F)",
+ "fullScreenText": "Pełny ekran",
"gammaText": "Gamma",
"highText": "Wysokie",
"higherText": "Max",
"lowText": "Niskie",
+ "maxFPSText": "Maks FPS",
"mediumText": "Średnie",
"neverText": "Nigdy",
"resolutionText": "Rozdzielczość",
@@ -869,7 +910,7 @@
"helpWindow": {
"bombInfoText": "- Bomba -\nSilniejsza niż ciosy, lecz\nz powodu obrażeń może Cię\nwpędzić do grobu. Dla\nlepszego efektu wyrzuć ją przed\nwypaleniem się lontu.",
"canHelpText": "${APP_NAME} może Ci w tym pomóc",
- "controllersInfoText": "Możesz zagrać w ${APP_NAME} ze znajomymi poprzez sieć lub na tym\nsamym urządzeniu jeśli masz wystarczająco dużo kontrolerów.\n${APP_NAME} obsługuje wiele z nich; możesz nawet użyć smartfonów\njako kontrolery wykorzystując aplikację '${REMOTE_APP_NAME}'.\nZobacz Ustawienia->Kontrolery, aby uzyskać szczegółowe informacje",
+ "controllersInfoText": "Możesz zagrać w ${APP_NAME} ze znajomymi poprzez sieć lub na tym\nsamym urządzeniu, jeśli masz wystarczająco dużo kontrolerów.\n${APP_NAME} obsługuje wiele z nich; możesz nawet użyć smartfonów\njako kontrolery, wykorzystując aplikację \"${REMOTE_APP_NAME}\".\nZobacz Ustawienia->Kontrolery, aby uzyskać szczegółowe informacje.",
"controllersInfoTextFantasia": "Gracz może używać zdalnego kontrolera, jednak zalecane są\ngamepady. Możesz także użyć urządzeń mobilnych jako kontrolerów\ngry za pomocą darmowej aplikacji 'BombSquad Remote'.\nSprawdź informacje dostępne w ustawieniach kontrolerów.",
"controllersInfoTextMac": "Jeden lub dwóch graczy może używać klawiatury, jednak najlepiej korzystać z\ngamepadów. Gra obsługuje pady USB, kontrolery PS3, Xbox360, Wiimote i urządzenia\nz systemem iOS/Android. Na pewno coś z tego posiadasz aby sterować postaciami?\nWięcej informacji dostępnych jest w ustawieniach kontrolerów.",
"controllersInfoTextOuya": "Do gry w BombSquad możesz wykorzystać kontrolery OUYA, PS3, Xbox360\ni wiele innych gamepadów podłączanych za pomocą USB lub Bluetootha.\nMożesz również używać jako kontrolery urządzenia z systemami iOS/Android\nz pomocą darmowej aplikacji 'BombSquad Remote'. Więcej informacji w\nustawieniach kontrolerów.",
@@ -877,7 +918,7 @@
"controllersText": "Kontrolery",
"controlsSubtitleText": "Twoja postać w ${APP_NAME} posiada kilka podstawowych umiejętności:",
"controlsText": "Przyciski",
- "devicesInfoText": "Wersja VR ${APP_NAME} może być używana w rozgrywce sieciowej wraz z\nwersją regularną, więc wbijaj do gry ze swoimi telefonami, tabletami\ni komputerami do rozgrywki. Wersja regularna gry może być również\nwykorzystana do przyłączenia się zainteresowanych do wersji VR aby\npokazać jak wygląda rozgrywka.",
+ "devicesInfoText": "Wersja VR ${APP_NAME} może być używana w rozgrywce sieciowej wraz z\nwersją regularną, więc wyciągaj swoje dodatkowe telefony, tablety\noraz komputery i wbijaj do gry. Regularną wersję gry można nawet\nużyć do połączenia się z wersją VR tylko po to, aby umożliwić\nludziom z zewnątrz oglądanie tej akcji.",
"devicesText": "Urządzenia",
"friendsGoodText": "Dobrze ich mieć. ${APP_NAME} sprawia największą frajdę\nz kilkoma graczami. Gra może obsłużyć do 8 graczy jednocześnie.",
"friendsText": "Znajomych",
@@ -913,12 +954,13 @@
},
"holdAnyButtonText": "",
"holdAnyKeyText": "",
- "hostIsNavigatingMenusText": "- ${HOST} nawiguje w menu jako szef -",
+ "hostIsNavigatingMenusText": "- ${HOST} nawiguje w menu jak szef -",
"importPlaylistCodeInstructionsText": "Użyj tego kodu, by zimportować tą listę w innym miejscu:",
"importPlaylistSuccessText": "Zimportowano playlistę '${NAME}' rozgrywek ${TYPE}",
"importText": "Importuj",
"importingText": "Importowanie...",
"inGameClippedNameText": "w grze widoczne jako\n\"${NAME}\"",
+ "inboxText": "Skrzynka odbiorcza",
"installDiskSpaceErrorText": "BŁĄD: Niemożliwe dokończenie instalacji.\nByć może mało miejsca w pamięci urządzenia.\nZrób więcej miejsca i spróbuj jeszcze raz.",
"internal": {
"arrowsToExitListText": "wciśnij ${LEFT} lub ${RIGHT} aby opuścić listę",
@@ -975,12 +1017,14 @@
"touchScreenJoinWarningText": "Dołączyłeś się wykorzystując ekran dotykowy.\nJeśli to pomyłka, stuknij 'Menu->Opuść grę'.",
"touchScreenText": "Ekran dotykowy",
"trialText": "trial",
+ "unableToCompleteTryAgainText": "Nie można teraz tego zrobić.\nSpróbuj ponownie później.",
"unableToResolveHostText": "Błąd: nie można odnaleźć hosta.",
"unavailableNoConnectionText": "Obecnie niedostępne (sprawdź połączenie internetowe).",
"vrOrientationResetCardboardText": "Użyj tego aby zresetować orientację VR.\nAby zagrać w grę będziesz potrzebować zewnętrznego kontrolera.",
"vrOrientationResetText": "Reset orientacji VR.",
"willTimeOutText": "(czas upłynie przy bezczynności)"
},
+ "inventoryText": "Ekwipunek",
"jumpBoldText": "SKOK",
"jumpText": "Skok",
"keepText": "Zachowaj",
@@ -1027,8 +1071,11 @@
"seasonEndsMinutesText": "Sezon zakończy się za ${NUMBER} minut.",
"seasonText": "Sezon ${NUMBER}",
"tournamentLeagueText": "Musisz uzyskać ligę ${NAME} aby wejść do tego turnieju.",
- "trophyCountsResetText": "Liczba Zdobyczy zresetuje się w przyszłym sezonie."
+ "trophyCountsResetText": "Liczba Zdobyczy zresetuje się w przyszłym sezonie.",
+ "upToDateBonusDescriptionText": "Gracze na najnowszej wersji gry\notrzymają tutaj ${PERCENT}% bonusu.",
+ "upToDateBonusText": "Bonus Wersji"
},
+ "learnMoreText": "Dowiedz się więcej",
"levelBestScoresText": "Najlepsze wyniki w ${LEVEL}",
"levelBestTimesText": "Najlepsze czasy w ${LEVEL}",
"levelFastestTimesText": "Najszybsze czasy w ${LEVEL}",
@@ -1075,6 +1122,8 @@
"modeArcadeText": "Tryb Salonu Gier",
"modeClassicText": "Tryb Klasyczny",
"modeDemoText": "Tryb Demo",
+ "moreSoonText": "Przybędzie w przyszłości...",
+ "mostDestroyedPlayerText": "Najbardziej Zgładzony Gracz",
"mostValuablePlayerText": "Najwartościowszy gracz",
"mostViolatedPlayerText": "Gracz najbardziej sprofanowany",
"mostViolentPlayerText": "Gracz najbardziej brutalny",
@@ -1091,6 +1140,7 @@
"nameSuicideText": "${NAME} popełnił samobójstwo.",
"nameText": "Nazwa",
"nativeText": "Natywna",
+ "newExclaimText": "Nowy!",
"newPersonalBestText": "Nowy rekord życiowy!",
"newTestBuildAvailableText": "Dostępna jest nowa wersja! (${VERSION} build ${BUILD}).\nPobierz ją z ${ADDRESS}",
"newText": "Nowy",
@@ -1102,13 +1152,17 @@
"noExternalStorageErrorText": "Brak pamięci zewnętrznej w tym urządzeniu",
"noGameCircleText": "Błąd: niezalogowany w GameCircle",
"noJoinCoopMidwayText": "Rozgrywki trybu Kooperacji nie mogą być łączone w czasie ich trwania.",
+ "noMessagesText": "Brak wiadomości.",
+ "noPluginsInstalledText": "Brak zainstalowanych pluginów",
"noProfilesErrorText": "Nie masz własnego profilu gracza, dlatego nazwano Cię: '${NAME}'.\nPrzejdź do Ustawień->Profile Gracza aby stworzyć własny.",
"noScoresYetText": "Brak wyników do tej pory.",
+ "noServersFoundText": "Nie znaleziono serwerów.",
"noThanksText": "Nie, dziękuję",
"noTournamentsInTestBuildText": "OSTRZEŻENIE: Wyniki turniejów z tej wersji testowej będą ignorowane.",
"noValidMapsErrorText": "Nie znaleziono żadnych map dla tego typu rozgrywki.",
"notEnoughPlayersRemainingText": "Niewystarczająca ilość graczy. Spróbuj zacząć nową grę.",
"notEnoughPlayersText": "Aby rozpocząć grę potrzeba ${COUNT} graczy!",
+ "notEnoughTicketsText": "Za mało biletów!",
"notNowText": "Nie teraz",
"notSignedInErrorText": "Musisz zalogować się, aby to zrobić.",
"notSignedInGooglePlayErrorText": "Zaloguj się z Google Play, by to zrobić.",
@@ -1116,11 +1170,14 @@
"notUsingAccountText": "Uwaga: ignorowanie konta ${SERVICE}.\nIdź do \"Konto -> Zaloguj się kontem ${SERVICE}\", jeżeli chcesz go używać.",
"nothingIsSelectedErrorText": "Nic nie zaznaczyłeś!",
"numberText": "#${NUMBER}",
- "offText": "Off",
+ "offText": "Wył.",
"okText": "Ok",
- "onText": "On",
+ "onText": "Wł.",
"oneMomentText": "Chwileczkę...",
"onslaughtRespawnText": "${PLAYER} odrodzi się w fali ${WAVE}",
+ "openMeText": "Otwórz Mnie!",
+ "openNowText": "Otwórz Teraz",
+ "openText": "Otwórz",
"orText": "${A} lub ${B}",
"otherText": "Inny...",
"outOfText": "(#${RANK} na ${ALL})",
@@ -1185,17 +1242,17 @@
"pluginsRemovedText": "Usunięto ${NUM} pluginy(ów)",
"pluginsText": "Pluginy",
"practiceText": "Praktyka",
- "pressAnyButtonPlayAgainText": "Naciśnij dowolny przycisk aby zagrać ponownie...",
- "pressAnyButtonText": "Naciśnij dowolny przycisk aby kontynuować...",
- "pressAnyButtonToJoinText": "naciśnij dowolny przycisk aby dołączyć...",
- "pressAnyKeyButtonPlayAgainText": "Naciśnij dowolny klawisz/przycisk aby zagrać ponownie...",
- "pressAnyKeyButtonText": "Naciśnij dowolny klawisz/przycisk aby kontynuować...",
+ "pressAnyButtonPlayAgainText": "Naciśnij dowolny przycisk, aby zagrać ponownie...",
+ "pressAnyButtonText": "Naciśnij dowolny przycisk, aby kontynuować...",
+ "pressAnyButtonToJoinText": "naciśnij dowolny przycisk, aby dołączyć...",
+ "pressAnyKeyButtonPlayAgainText": "Naciśnij dowolny klawisz/przycisk, aby zagrać ponownie...",
+ "pressAnyKeyButtonText": "Naciśnij dowolny klawisz/przycisk, aby kontynuować...",
"pressAnyKeyText": "Naciśnij dowolny klawisz...",
- "pressJumpToFlyText": "** Naciśnij wielokrotnie skok aby polecieć **",
- "pressPunchToJoinText": "naciśnij CIOS aby dołączyć...",
- "pressToOverrideCharacterText": "naciśnij ${BUTTONS} aby zastąpić swoją postać",
- "pressToSelectProfileText": "naciśnij ${BUTTONS} aby wybrać gracza.",
- "pressToSelectTeamText": "naciśnij ${BUTTONS} aby wybrać drużynę.",
+ "pressJumpToFlyText": "** Naciskaj wielokrotnie skok, aby polecieć **",
+ "pressPunchToJoinText": "naciśnij CIOS, aby dołączyć...",
+ "pressToOverrideCharacterText": "naciśnij ${BUTTONS}, aby zastąpić swoją postać",
+ "pressToSelectProfileText": "naciśnij ${BUTTONS}, aby wybrać gracza",
+ "pressToSelectTeamText": "naciśnij ${BUTTONS}, aby wybrać drużynę",
"profileInfoText": "Stwórz profile dla siebie i swoich znajomych\ndostosowując ich nazwy i kolory postaci.",
"promoCodeWindow": {
"codeText": "Kod",
@@ -1206,7 +1263,7 @@
"ps3ControllersWindow": {
"macInstructionsText": "Wyłącz zasilanie konsoli PS3, upewnij się, że masz uruchomiony\nBluetooth w swoim Mac'u, następnie podłącz kontroler do portu\nUSB Mac'a aby sparować urządzenia. Od teraz można używać na\nkontrolerze przycisku 'home' aby podłączyć go do Mac'a w obu\ntrybach - przewodowym (USB) i bezprzewodowym (Bluetooth).\n\nNa niektórych Mac'ach trzeba podać kod aby urządzenia sparować.\nJeśli się tak stanie poszukaj poradnika na google.\n\n\n\n\nKontrolery PS3 podłączone bezprzewodowo powinny być widoczne na\nliście urządzeń w Preferencjach Systemu->Bluetooth. Być może\ntrzeba będzie je usunąć z tej listy, kiedy zechcesz korzystać\nz nich ponownie w PS3.\n\nPamiętaj aby rozłączyć je z Bluetootha kiedy nie będą używane\nponieważ wyładują się ich baterie.\n\nBluetooth powinien obsłużyć do 7 podłączonych urządzeń, chociaż\nliczba ta może się wahać.",
"macInstructionsTextScale": 0.74,
- "ouyaInstructionsText": "Aby używać kontrolerów PS3 z konsolą OUYA, po prostu podłącz je kablem USB\naby sparować urządzenia. Może to spowodować rozłączenie innych kontrolerów,\nwięc powinieneś później uruchomić ponownie konsolę OUYA i odłączyć kabel USB.\n\nOd teraz powinien być aktywny przycisk HOME aby połączyć się bezprzewodowo. Kiedy zakończysz grę, przytrzymaj HOME przez 10 sekund aby wyłączyć kontroler;\nw przeciwnym razie może on wyczerpać jego baterie.",
+ "ouyaInstructionsText": "Aby używać kontrolera PS3 z konsolą OUYA, po prostu podłącz go kablem USB,\naby go sparować. Może to spowodować rozłączenie innych kontrolerów,\nwięc powinieneś później uruchomić ponownie konsolę OUYA i odłączyć kabel USB.\n\nOd teraz powinien być aktywny przycisk HOME, aby połączyć się bezprzewodowo.\nKiedy zakończysz grę, przytrzymaj HOME przez 10 sekund, aby wyłączyć kontroler;\nw przeciwnym razie może on wyczerpać jego baterie.",
"ouyaInstructionsTextScale": 0.74,
"pairingTutorialText": "poradnik video parowania kontrolerów",
"titleText": "Korzystanie z kontrolerów PS3 w ${APP_NAME}:"
@@ -1215,11 +1272,13 @@
"punchBoldText": "CIOS",
"punchText": "Cios",
"purchaseForText": "Kup za ${PRICE}",
- "purchaseGameText": "Zakup Grę",
+ "purchaseGameText": "Kup Grę",
+ "purchaseNeverAvailableText": "Przepraszamy, w tej kompilacji nie można dokonać zakupów.\nSpróbuj zalogować się na swoje konto na innej platformie i dokonać tam zakupów.",
+ "purchaseNotAvailableText": "Ten zakup jest niedostępny.",
"purchasingText": "Kupowanie...",
"quitGameText": "Wyjść z ${APP_NAME}?",
"quittingIn5SecondsText": "Wyjście za 5 sekund...",
- "randomPlayerNamesText": "DOMYŚLNE_NAZWY",
+ "randomPlayerNamesText": "Albin, Aleksandra, Agata, Agnieszka, Aleksy, Alina, Antoni, Aldona, Alicja, Amelia, Aniela, Bazyli, Dobrogost, Filip, Jan, Julia, Maria, Szymon, Zofia, Adok, Anastazja, Andrzej, Armand, Aron, Polish",
"randomText": "Losowo",
"rankText": "Ranking",
"ratingText": "Ocena",
@@ -1257,7 +1316,8 @@
"start": "Start",
"version_mismatch": "Wersje nie pasują.\nSprawdź czy BombSquad i BombSquad Remote\nmają najnowszą wersję i spróbuj ponownie."
},
- "removeInGameAdsText": "Odblokowywując wersję \"${PRO}\" pozbędziesz się reklam w grze.",
+ "removeInGameAdsText": "Odblokowując wersję \"${PRO}\", pozbędziesz się reklam w grze.",
+ "removeInGameAdsTokenPurchaseText": "OFERTA: Zakup DOWOLNĄ paczkę żetonów aby usunąć reklamy.",
"renameText": "Zmień nazwę",
"replayEndText": "Zakończ powtórkę",
"replayNameDefaultText": "Ostatnia powtórka",
@@ -1279,7 +1339,9 @@
"runBoldText": "URUCHOM",
"runText": "Uruchom",
"saveText": "Zapisz",
- "scanScriptsErrorText": "Błąd w skanowaniu skryptów; sprawdź konsolę dla szczegółów",
+ "scanScriptsErrorText": "Błąd w skanowaniu skryptów. Sprawdź konsolę dla szczegółów.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} oraz ${NUM} innych modułów potrzebują aktualizacji do api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} potrzebuje aktualizacji do api ${API}.",
"scoreChallengesText": "Wyzwania Punktowe",
"scoreListUnavailableText": "Lista wyników niedostępna.",
"scoreText": "Wynik",
@@ -1290,6 +1352,7 @@
},
"scoreWasText": "(było ${COUNT})",
"selectText": "Wybierz",
+ "sendInfoDescriptionText": "Przesyła stan konta i aplikacji do dewelopera.\nProszę o podanie imienia lub powodu wysłania.",
"seriesWinLine1PlayerText": "WYGRAŁ",
"seriesWinLine1TeamText": "WYGRALI",
"seriesWinLine1Text": "WYGRAŁ",
@@ -1308,22 +1371,30 @@
"alwaysUseInternalKeyboardDescriptionText": "(prosta klawiatura na ekranie do edycji tekstu - przyjazna kontrolerom)",
"alwaysUseInternalKeyboardText": "Zawsze używaj wewn. klawiatury",
"benchmarksText": "Benchmarki & Testy Wydajności",
- "disableCameraGyroscopeMotionText": "Wyłącz Kontrolę Kamery Żyroskopem",
- "disableCameraShakeText": "Wyłącz Trzęsącą Kamerę",
+ "devToolsText": "Narzędzia deweloperskie",
+ "disableCameraGyroscopeMotionText": "Wyłącz kontrolę kamery żyroskopem",
+ "disableCameraShakeText": "Wyłącz trzęsienie kamery",
"disableThisNotice": "(możesz wyłączyć to powiadomienie w ustawieniach zaawansowanych)",
"enablePackageModsDescriptionText": "(aktywuje dodatkowe możliwości modowania ale wyłącza grę sieciową)",
"enablePackageModsText": "Włącz lokalne pakiety modów",
"enterPromoCodeText": "Wpisz kod",
"forTestingText": "Uwaga: wartości stosowane do testów będą utracone po wyjściu z gry.",
"helpTranslateText": "Tłumaczenia ${APP_NAME} na inne języki są wysiłkiem społeczności\nfanów tej gry. Jeśli chcesz przyczynić się lub poprawić istniejące\nbłędy w tłumaczeniu, kliknij w poniższy link. Z góry dziękuję!",
- "kickIdlePlayersText": "Wyrzuć nieaktywnych graczy",
+ "insecureConnectionsDescriptionText": "niezalecane, ale może umożliwić grę online\nz krajów lub sieci objętych ograniczeniami",
+ "insecureConnectionsText": "Używaj niezabezpieczonych połączeń",
+ "kickIdlePlayersText": "Wyrzucaj nieaktywnych graczy",
"kidFriendlyModeText": "Tryb dla dzieciaków (zredukowana przemoc itd.)",
"languageText": "Język",
"moddingGuideText": "Przewodnik modowania gry",
- "mustRestartText": "Musisz uruchomić ponownie grę aby zastosować zmiany.",
+ "moddingToolsText": "Narzędzia do modyfikacji",
+ "mustRestartText": "Musisz uruchomić ponownie grę, aby zastosować zmiany.",
"netTestingText": "Testowanie sieci",
"resetText": "Reset",
+ "sendInfoText": "Wyślij Info",
"showBombTrajectoriesText": "Pokaż trajektorię bomb",
+ "showDemosWhenIdleText": "Pokazuj wersje demonstracyjne w stanie bezczynności",
+ "showDeprecatedLoginTypesText": "Pokaż przestarzałe typy logowania",
+ "showDevConsoleButtonText": "Pokaż przycisk konsoli deweloperskiej",
"showInGamePingText": "Pokaż ping w grze",
"showPlayerNamesText": "Pokazuj nazwy graczy",
"showUserModsText": "Pokaż katalog modów",
@@ -1331,18 +1402,21 @@
"translationEditorButtonText": "Edytor tłumaczeń ${APP_NAME}",
"translationFetchErrorText": "status tłumaczenia niedostępny",
"translationFetchingStatusText": "sprawdzanie statusu tłumaczenia...",
- "translationInformMe": "Powiadom mnie gdy mój język będzie potrzebował uaktualnienia",
+ "translationInformMe": "Powiadom mnie, gdy mój język będzie potrzebował uaktualnienia",
"translationNoUpdateNeededText": "Obecnie używany język jest aktualny; ekstra!",
- "translationUpdateNeededText": "** obecnie używany język wymaga jego zaktualizowania! **",
+ "translationUpdateNeededText": "** Obecnie używany język wymaga jego zaktualizowania! **",
"vrTestingText": "Testowanie VR"
},
"shareText": "Udostępnij",
"sharingText": "Udostępnianie...",
"showText": "Wyświetl",
- "signInForPromoCodeText": "Musisz się zalogować do konta aby kody zadziałały.",
+ "signInForPromoCodeText": "Musisz się zalogować do konta, aby kody zadziałały.",
"signInWithGameCenterText": "By użyć konta Game Center\nzapisz się aplikacją Game Center.",
"singleGamePlaylistNameText": "Tylko ${GAME}",
"singlePlayerCountText": "1 gracz",
+ "sizeLargeText": "Duży",
+ "sizeMediumText": "Średni",
+ "sizeSmallText": "Mały",
"soloNameFilterText": "Solówka ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Wybór postaci",
@@ -1368,6 +1442,7 @@
},
"spaceKeyText": "spacja",
"statsText": "Statystyki",
+ "stopRemindingMeText": "Przestań mi przypominać",
"storagePermissionAccessText": "To wymaga dostępu do pamięci masowej",
"store": {
"alreadyOwnText": "Masz już ${NAME}!",
@@ -1407,7 +1482,7 @@
"winterSpecialText": "Specjały Zimowe",
"youOwnThisText": "- zdobyłeś już to -"
},
- "storeDescriptionText": "8 Osobowe Szaleństwo!\n\nWysadź w powietrze swoich znajomych (lub komputerowych przeciwników) w turnieju z wybuchowymi mini gierkami jak np. Przechwyć Flagę, Bombowy Hokej i Epicki Mecz Śmierci w zwolnionym tempie!\n\nProste sterowanie i rozszerzone wsparcie dla kontrolerów może wprowadzić do gry aż 8 przeciwników; możesz nawet wykorzystać swoje mobilne urządzenie jako kontroler do gry dostępne jako darmowa aplikacja 'BombSquad Remote'!\n\nBomby w Górę!\n\nSprawdź na www.froemling.net/bombsquad i dowiedz się więcej.",
+ "storeDescriptionText": "8-Osobowe Szaleństwo!\n\nWysadź w powietrze swoich znajomych (lub komputerowych przeciwników) w turnieju z wybuchowymi mini gierkami jak np. Przechwyć Flagę, Bombowy Hokej i Epicki Mecz Śmierci w zwolnionym tempie!\n\nProste sterowanie i rozszerzone wsparcie dla kontrolerów może wprowadzić do gry aż 8 przeciwników; możesz nawet wykorzystać swoje mobilne urządzenie jako kontroler do gry dostępne jako darmowa aplikacja \"BombSquad Remote\"!\n\nBomby w Górę!\n\nSprawdź www.froemling.net/bombsquad i dowiedz się więcej.",
"storeDescriptions": {
"blowUpYourFriendsText": "Wysadź w powietrze swoich znajomych.",
"competeInMiniGamesText": "Ukończ mini gierki aby awansować z wyścigów do lotów.",
@@ -1419,6 +1494,8 @@
"storeText": "Sklep",
"submitText": "Prześlij",
"submittingPromoCodeText": "Przesyłanie Kodu...",
+ "successText": "Sukces!",
+ "supportEmailText": "Jeśli doświadczasz jakichś problemów z\naplikacją, wyślij e-maila na ${EMAIL}.",
"teamNamesColorText": "Nazwy Drużyn/Kolory...",
"teamsText": "Gra Zespołowa",
"telnetAccessGrantedText": "Dostęp telnet włączony.",
@@ -1429,8 +1506,9 @@
"testBuildValidatedText": "Wersja Testowa Zatwierdzona! Miłej zabawy!",
"thankYouText": "Dziękuję za Twoje wsparcie! Miłej gry!",
"threeKillText": "POTRÓJNE ZABÓJSTWO!!",
+ "ticketsDescriptionText": "Bilety pozwalają odblokować postacie,\nmapy, minigry, i więcej w sklepe.\n\nBilety można znaleźć w skrzynkach\nz kampanii, turniejów, czy osiągnięć.",
"timeBonusText": "Bonus czasowy",
- "timeElapsedText": "Czas upłynął",
+ "timeElapsedText": "Czas, jaki upłynął",
"timeExpiredText": "Czas minął",
"timeSuffixDaysText": "${COUNT}d",
"timeSuffixHoursText": "${COUNT}h",
@@ -1439,10 +1517,24 @@
"tipText": "Wskazówka",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Zdobądź żetony",
+ "notEnoughTokensText": "Za mało żetonów!",
+ "numTokensText": "${COUNT} żetonów",
+ "openNowDescriptionText": "Masz wystarczająco dużo biletów\naby otworzyć to teraz \n- nie musisz czekać.",
+ "shinyNewCurrencyText": "Nowa, błyszcząca waluta BombSquad.",
+ "tokenPack1Text": "Mały pakiet żetonów",
+ "tokenPack2Text": "Średni pakiet żetonów",
+ "tokenPack3Text": "Duży pakiet żetonów",
+ "tokenPack4Text": "Gigantyczny pakiet żetonów",
+ "tokensDescriptionText": "Żetony przyspieszają prędkość odblokowania\nskrzynek i za inne operacje związane z grą czy kontem.\n\nMożesz wygrać żetony w grze lub kupić je\nw paczkach. Albo kupić Złoty Karnet dla nieskończonych\nżetonów i nie będziesz o nich więcej słyszeć.",
+ "youHaveGoldPassText": "Masz Złotą Przepustkę.\nWszystkie zakupy żetonów są bezpłatne.\nSuper!"
+ },
"topFriendsText": "Najlepsi znajomi",
"tournamentCheckingStateText": "Sprawdzanie statusu turnieju; proszę czekać...",
"tournamentEndedText": "Ten turniej został zakończony. Nowy wkrótce się rozpocznie.",
"tournamentEntryText": "Wejście do Turnieju",
+ "tournamentFinalStandingsText": "Pozycje w Turnieju",
"tournamentResultsRecentText": "Najnowsze wyniki Turnieju",
"tournamentStandingsText": "Klasyfikacja Turnieju",
"tournamentText": "Turniej",
@@ -1458,7 +1550,7 @@
"Butch": "Butch",
"Easter Bunny": "Zajączek Wielkanocny",
"Flopsy": "Flopsy",
- "Frosty": "Frosty",
+ "Frosty": "Mrozek",
"Gretel": "Małgosia",
"Grumbledorf": "Grumbledorf",
"Jack Morgan": "Jack Morgan",
@@ -1501,11 +1593,11 @@
"Infinite Onslaught": "Nieskończony Atak",
"Infinite Runaround": "Nieskończone Otaczanie",
"Onslaught": "Nieskończony Atak",
- "Onslaught Training": "Atakujący Trening",
- "Pro ${GAME}": "Zawodowy tryb ${GAME}",
- "Pro Football": "Zawodowy Futbol",
- "Pro Onslaught": "Atak Zawodowca",
- "Pro Runaround": "Zawodowe Otaczanie",
+ "Onslaught Training": "Treningowy Atak",
+ "Pro ${GAME}": "Cięższy tryb ${GAME}",
+ "Pro Football": "Cięższy Futbol",
+ "Pro Onslaught": "Cięższy Atak",
+ "Pro Runaround": "Cięższe Otaczanie",
"Rookie ${GAME}": "Rekrucki tryb ${GAME}",
"Rookie Football": "Futbol Rekruta",
"Rookie Onslaught": "Atak Rekruta",
@@ -1516,8 +1608,20 @@
"Uber Onslaught": "Super Atak",
"Uber Runaround": "Super Otaczanie"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Biletów",
+ "${C} Tokens": "${C} Żetonów",
+ "Chest": "Skrzynka",
+ "L1 Chest": "Skrzynka P1",
+ "L2 Chest": "Skrzynka P2",
+ "L3 Chest": "Skrzynka P3",
+ "L4 Chest": "Skrzynka P4",
+ "L5 Chest": "Skrzynka P5",
+ "L6 Chest": "Skrzynka P6",
+ "Unknown Chest": "Nieznana Skrzynka"
+ },
"gameDescriptions": {
- "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Bądź wybrańcem przez określony czas aby wygrać.\nZabij wybrańca aby się nim stać.",
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Bądź wybrańcem przez określony czas, aby wygrać.\nZabij wybrańca, aby się nim stać.",
"Bomb as many targets as you can.": "Zbombarduj tyle celów, ile tylko możesz.",
"Carry the flag for ${ARG1} seconds.": "Utrzymaj flagę przez ${ARG1} sekund.",
"Carry the flag for a set length of time.": "Utrzymaj flagę przez określony czas.",
@@ -1620,6 +1724,7 @@
"Korean": "Koreański",
"Malay": "Malajski",
"Persian": "Perski",
+ "PirateSpeak": "Piracki język",
"Polish": "Polski",
"Portuguese": "Portugalski",
"Romanian": "Rumuński",
@@ -1686,7 +1791,7 @@
"An error has occurred; please contact support. (${ERROR})": "Wystąpił błąd; skontaktuj się z pomocą techniczną. (${ERROR})",
"An error has occurred; please contact support@froemling.net.": "Wystąpił błąd; skontaktuj się z support@froemling.net.",
"An error has occurred; please try again later.": "Wystąpił błąd; spróbuj ponownie później.",
- "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Na pewno chcesz połączyć te konta?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nUwaga: To nie może być cofnięte!",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Na pewno chcesz połączyć te konta?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nNie da się tego cofnąć!",
"BombSquad Pro unlocked!": "BombSquad Pro odblokowane!",
"Can't link 2 accounts of this type.": "Nie można połączyć dwóch kont tego typu.",
"Can't link 2 diamond league accounts.": "Nie można połączyć dwóch kont w diamentowej lidze.",
@@ -1694,6 +1799,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Oszukiwanie wykryte; punkty i nagrody zawieszone na ${COUNT} dni.",
"Could not establish a secure connection.": "Nie udało się nawiązać bezpiecznego połączenia.",
"Daily maximum reached.": "Dzienne maksimum wykorzystane.",
+ "Daily sign-in reward": "Nagroda za codzienne logowanie",
"Entering tournament...": "Wchodzenie do turnieju...",
"Invalid code.": "Nieprawidłowy kod.",
"Invalid payment; purchase canceled.": "Nieprawidłowa zapłata; zamówienie anulowane.",
@@ -1703,11 +1809,14 @@
"Item unlocked!": "Przedmiot odblokowany!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "ŁĄCZENIE ODRZUCONE. ${ACCOUNT} zawiera\nznaczący postęp który zostałby USUNIĘTY.\nMożesz połączyć konta na odwrót jeśli chcesz\n(i stracić postęp Z TEGO konta).",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Połączyć konto ${ACCOUNT} z tym kontem?\nCały postęp z konta ${ACCOUNT} będzie stracony.\nNie można tego odwrócić. Pewna decyzja?",
- "Max number of playlists reached.": "Osiągnięto maksymalną ilość playlist.",
+ "Longer streaks lead to better rewards.": "Dłuższe serie dają lepsze nagrody",
+ "Max number of playlists reached.": "Osiągnięto maksymalną liczbę playlist.",
"Max number of profiles reached.": "Osiągnięto maksymalną liczbę profili.",
"Maximum friend code rewards reached.": "Osiągnięto limit kodów promocyjnych.",
"Message is too long.": "Wiadomość jest za długa.",
+ "New tournament result!": "Nowy wynik w turnieju!",
"No servers are available. Please try again soon.": "Brak dostępnych serwerów. Spróbuj ponownie wkrótce.",
+ "No slots available. Free a slot and try again.": "Brak wolnych komórek. Zwolnij komórkę i spróbuj ponownie.",
"Profile \"${NAME}\" upgraded successfully.": "Nazwa \"${NAME}\" ulepszona pomyślnie.",
"Profile could not be upgraded.": "Profil nie może być ulepszony.",
"Purchase successful!": "Udany zakup!",
@@ -1717,7 +1826,9 @@
"Sorry, this code has already been used.": "Przepraszamy, ten kod został już użyty.",
"Sorry, this code has expired.": "Przepraszamy, ten kod wygasł.",
"Sorry, this code only works for new accounts.": "Przepraszamy, ten kod działa tylko na nowych kontach.",
+ "Sorry, this has expired.": "Niestety, czas minął.",
"Still searching for nearby servers; please try again soon.": "Wciąż szukam pobliskich serwerów; proszę spróbuj ponownie wkrótce.",
+ "Streak: ${NUM} days": "Seria: ${NUM} dni",
"Temporarily unavailable; please try again later.": "Tymczasowo niedostępne; spróbuj ponownie później.",
"The tournament ended before you finished.": "Wyniki po zakończonym turnieju.",
"This account cannot be unlinked for ${NUM} days.": "To konto nie może zostać rozłączone przez ${NUM} dni.",
@@ -1728,19 +1839,28 @@
"Tournaments require ${VERSION} or newer": "Turnieje potrzebują ${VERSION} albo nowszej",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Rozłączyć konto ${ACCOUNT} z tego konta?\nCały postęp z konta ${ACCOUNT} zostanie zresetowany.\n(oprócz osiągnięć w niektórych przypadkach)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "OSTRZEŻENIE: przeciwko Tobie zostały złożone skargi o oszukiwanie.\nKonta ludzi oszukujących zostaną zablokowane. Proszę grać uczciwie.",
- "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Chcesz połączyć swoje konto z urządzenia z tym?\n\nTwoje konto urządzenia to ${ACCOUNT1}\nTo konto to ${ACCOUNT2}\n\nTo pozwoli Ci zapisać istniejący postęp.\nUwaga: To nie może zostać cofnięte!!!",
+ "Wait reduced!": "Skrócono czas czekania!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "OSTRZEŻENIE: Ta wersja gry jest ograniczona do starych danych konta; rzeczy mogą być nieaktualne lub brakujace.\nProszę zaktualizować gre do najnowszej wersji aby zobaczyć najnowsze dane.",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Chcesz połączyć swoje konto z urządzenia z tym?\n\nTwoje konto urządzenia to ${ACCOUNT1}\nTo konto to ${ACCOUNT2}\n\nTo pozwoli Ci zapisać istniejący postęp.\nUwaga: Nie da się tego cofnąć!",
"You already own this!": "Już to posiadasz!",
"You can join in ${COUNT} seconds.": "Możesz dołączyć w ciągu ${COUNT} sekund.",
"You don't have enough tickets for this!": "Nie masz wystarczająco dużo kuponów!",
"You don't own that.": "Nie posiadasz tego.",
"You got ${COUNT} tickets!": "Masz ${COUNT} kuponów!",
+ "You got ${COUNT} tokens!": "Zdobyłeś ${COUNT} żetonów!",
"You got a ${ITEM}!": "Otrzymałeś ${ITEM}!",
+ "You got a chest!": "Zdobyłeś skrzynkę!",
+ "You got an achievement reward!": "Zdobyłeś nagrodę za osiągnięcie!",
"You have been promoted to a new league; congratulations!": "Zostałeś awansowany do nowej ligi; gratulacje!",
- "You must update to a newer version of the app to do this.": "Musisz zaktualizować do nowszej wersji gry aby to zrobić.",
- "You must update to the newest version of the game to do this.": "Musisz zaktualizować grę do nowej wersji aby to zrobić.",
+ "You lost a chest! (All your chest slots were full)": "Straciłeś skrzynkę! (Wszystkie komórki na skrzynki są pełne)",
+ "You must update the app to view this.": "Musisz zaktualizować aplikację, aby to wyświetlić.",
+ "You must update to a newer version of the app to do this.": "Musisz zaktualizować do nowszej wersji gry, aby to zrobić.",
+ "You must update to the newest version of the game to do this.": "Musisz zaktualizować grę do nowej wersji, aby to zrobić.",
"You must wait a few seconds before entering a new code.": "Musisz odczekać kilka sekund zanim wpiszesz nowy kod.",
+ "You placed #${RANK} in a tournament!": "Zdobyłeś #${RANK} miejsce w turnieju!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Zostałeś sklasyfikowany na ${RANK} pozycji w ostatnim turnieju. Dzięki za udział!",
- "Your account was rejected. Are you signed in?": "Twoje Konto Zostało Odrzucone. Jesteś Zalogowany?",
+ "Your account was rejected. Are you signed in?": "Twoje konto zostało odrzucone. Czy jesteś zalogowany?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Obejrzenie reklamy nie zostało zarejestrowane. Opcje reklamowe zostaną chwilowo ograniczone.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Twoja kopia gry została zmodyfikowana.\nCofnij zmiany i spróbuj ponownie.",
"Your friend code was used by ${ACCOUNT}": "Kod kumpla został użyty przez ${ACCOUNT}"
},
@@ -1798,37 +1918,37 @@
},
"tips": {
"A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Perfekcyjne w czasie wykonanie biegu, skoku, obrotu i uderzenia\nmoże zabić jednym ruchem wzbudzając respekt wśród znajomych.",
- "Always remember to floss.": "Pamiętaj żeby nitkować zęby.",
+ "Always remember to floss.": "Pamiętaj, żeby nitkować zęby.",
"Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Stwórz takie profile gracza (nazwa i wygląd) dla siebie i znajomych, które\nbędą Wam najbardziej odpowiadać zamiast tych losowo dobieranych.",
"Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Pudła z Klątwą zamienią Cię w tykającą bombę.\nJedynym ratunkiem jest wtedy szybkie zdobycie apteczki.",
"Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Pomimo różnego wyglądu, postacie posiadają te same umiejętności, więc ma\non tylko znaczenie wizualne. Wobec tego dobierz taki, który Ci odpowiada.",
"Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Nie bądź zbyt pewny siebie mając tarczę energetyczną; wciąż ktoś może Cię zrzucić z klifu.",
"Don't run all the time. Really. You will fall off cliffs.": "Nie biegaj cały czas, bo spadniesz z klifu.",
"Don't spin for too long; you'll become dizzy and fall.": "Nie obracaj się za długo; zakręci ci się w głowie i się wywrócisz.",
- "Hold any button to run. (Trigger buttons work well if you have them)": "Przytrzymaj dowolny przycisk aby biec. (Triggery działają równie\ndobrze (jeśli je masz)).",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Przytrzymaj dowolny przycisk, aby biec. (Triggery działają równie dobrze, jeśli je masz).",
"Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Przytrzymaj dowolny przycisk aby biec. Wówczas osiągniesz szybciej\nswój cel lecz biegnąc ciężko się skręca, więc uważaj aby nie spaść.",
"Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Lodowe bomby nie są potężne, ale potrafią zamrozić każdego kto\nbędzie w ich polu rażenia, wówczas będzie on podatny na skruszenie.",
- "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Jeśli ktoś Cię podniesie, uderz go wówczas Cię puści.\nSkutkuje to również w prawdziwym życiu ;)",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Jeśli ktoś Cię podniesie, uderz go wówczas Cię puści.\nDziała to również w prawdziwym życiu ;)",
"If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Jeśli brakuje Ci kontrolerów, zainstaluj aplikację '${REMOTE_APP_NAME}'\nna swoich urządzeniach, aby użyć ich jako kontrolerów.",
"If you are short on controllers, install the 'BombSquad Remote' app\non your iOS or Android devices to use them as controllers.": "Jeśli brakuje Ci kontrolerów do gry, zainstaluj 'BombSquad Remote'\ndostępny w odpowiednich sklepach dla urządzeń iOS/Android.\nUżyj telefonów i tabletów jako kontrolerów do gry.",
"If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Jeśli przyklei się do Ciebie bomba przylepna, skacz i kręć się szalenie, to może ją\nzrzucisz. Jeżeli Ci się nie uda, wówczas twoje ostatnie chwile będą przezabawne ;).",
"If you kill an enemy in one hit you get double points for it.": "Jeśli zabijesz wroga jednym uderzeniem, otrzymasz podwójne punkty.",
- "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Jeśli zbierzesz 'Klątwę', to jedyną nadzieją aby\nprzetrwać jest szybkie zebranie apteczki.",
- "If you stay in one place, you're toast. Run and dodge to survive..": "Jeśli będziesz się czaił w jednym miejscu to jesteś usmażony.\nBiegaj i unikaj ataków aby przetrwać.",
- "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Jeśli doświadczasz dużej rotacji wśród graczy, najlepiej włącz 'auto wyrzucanie\nbezczynnych graczy' w ustawieniach. Wyrzuci to tych, którzy nie grają a jedynie\nwiszą w grze blokując nowych chcących zagrać.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Jeśli zbierzesz 'Klątwę', to jedyną nadzieją, aby\nprzetrwać, jest szybkie zebranie apteczki.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "Jeśli będziesz stał w jednym miejscu, to staniesz się tostem. Biegaj i unikaj ataków, aby przetrwać..",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Jeśli doświadczasz dużej rotacji wśród graczy, włącz 'Wyrzucaj nieaktywnych graczy'\nw ustawieniach, a wszyscy, co zapomnieli wyjść z gry, magicznie znikną.",
"If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Jeśli Twoje urządzenie mocno się przegrzewa lub po prostu chcesz oszczędzić baterię,\nwyłącz 'Wizualizacje' lub zmniejsz 'Rozdzielczość' w Ustawienia->Grafika",
"If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Jeśli ilość klatek na sekundę jest zbyt niska, spróbuj\nzmniejszyć rozdzielczość lub jakość ustawień graficznych.",
- "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "W trybie 'Przechwycenia Flagi', Twoja flaga musi znajdować się w bazie aby zapunktować.\nJeśli drugi zespół zamierza zdobyć punkt, przechwycenie ich flagi będzie dobrym\nrozwiązaniem aby ich powstrzymać.",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "W 'Przechwyceniu Flagi' wasza flaga musi znajdować się w waszej bazie, aby zapunktować. Jeśli drugi\nzespół zamierza zdobyć punkt, przechwycenie ich flagi może być dobrym rozwiązaniem, aby ich powstrzymać.",
"In hockey, you'll maintain more speed if you turn gradually.": "Grając w hokeja, większą prędkość utrzymywać będziesz przy\nstopniowym i delikatnym skręcaniu postacią.",
- "It's easier to win with a friend or two helping.": "Łatwiej zwyciężyć grając w zespole z jednym lub kilkoma\ntowarzyszami broni.",
+ "It's easier to win with a friend or two helping.": "Łatwiej zwyciężyć, grając w zespole z jednym lub kilkoma towarzyszami broni.",
"Jump just as you're throwing to get bombs up to the highest levels.": "Dzięki podskokowi przy wyrzucaniu bomby można je wrzucić\nna wyższe, ciężko dostępne poziomy mapy.",
- "Land-mines are a good way to stop speedy enemies.": "Miny lądowe są dobrym rozwiązaniem aby powstrzymywać\nszybkich i wściekłych wrogów.",
+ "Land-mines are a good way to stop speedy enemies.": "Miny lądowe idealnie zatrzymują szybkich i wściekłych wrogów.",
"Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Można podnosić i rzucać wieloma rzeczami, włącznie z graczami. Zrzucanie\nwrogów z klifów może być skuteczne, a taka strategia satysfakcjonująca.",
"No, you can't get up on the ledge. You have to throw bombs.": "Nie, nie dostaniesz się na wyższe półki. Może rzuć na nie bomby? :)",
"Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Gracze mogą dołączyć/opuścić grę w trakcie jej trwania,\na Ty możesz dołączać/odłączać kontrolery w locie.",
"Players can join and leave in the middle of most games,\nand you can also plug and unplug gamepads on the fly.": "Gracze mogą się dołączać/opuszczać grę w trakcie większości\nrozgrywek, tak samo można w locie podłączać/rozłączać gamepady.",
"Powerups only have time limits in co-op games.\nIn teams and free-for-all they're yours until you die.": "Bonusy mają czasowe limity jedynie w rozgrywkach trybu Kooperacji.\nW rozgrywkach drużynowych i Free-for-All są Twoje aż do śmierci.",
- "Practice using your momentum to throw bombs more accurately.": "Poćwicz wyczucie tempa aby rzucać bombami dokładniej.",
+ "Practice using your momentum to throw bombs more accurately.": "Poćwicz wyczucie tempa, aby rzucać bombami dokładniej.",
"Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Ciosy powodują większe obrażenia jeśli się energicznie porusza\npięściami, więc staraj się biegać, skakać i kręcić jak szalony.",
"Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Podbiegnij do tyłu i przed rzuceniem bomby znów\ndo przodu. Pozwoli to na jej dalsze wyrzucenie.",
"Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Pozbądź się grupy wrogów poprzez\nrzucenie bomby blisko skrzyni TNT.",
@@ -1837,14 +1957,14 @@
"Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Siła rzutu zależy od kierunku, który trzymasz. Aby delikatnie tylko\ncoś podrzucić przed sobą, nie trzymaj żadnego klawisza kierunku.",
"Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Zmęczony domyślną ścieżką dźwiękową? Zamień ją na swoją!\nZobacz Ustawienia->Audio->Ścieżka dźwiękowa",
"Try 'Cooking off' bombs for a second or two before throwing them.": "Przytrzymaj 'odpaloną bombę' przez 1 lub 2 sekundy zanim ją rzucisz.",
- "Try tricking enemies into killing eachother or running off cliffs.": "Spróbuj oszukać wrogów aby się wzajemnie pozabijali lub zrzucili z klifów.",
+ "Try tricking enemies into killing eachother or running off cliffs.": "Spróbuj oszukać wrogów, aby się wzajemnie pozabijali lub zrzucili z klifów.",
"Use the pick-up button to grab the flag < ${PICKUP} >": "Użyj przycisku 'Podnieś' aby chwycić flagę < ${PICKUP} >",
"Whip back and forth to get more distance on your throws..": "Cofnij się... i do przodu, aby uzyskać dalsze rzuty...",
"You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Możesz wycelować swoje uderzenia obracając się w lewo lub prawo.\nJest to przydatne do spychania wrogów poza krawędzie lub w hokeju.",
"You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Możesz sam kontrolować i określić czas kiedy bomba eksploduje\npo kolorze iskier na jej loncie: żółty.. pomarańczowy.. czerwony.. BUM!",
"You can throw bombs higher if you jump just before throwing.": "Możesz rzucać bombami wyżej jeśli podskoczysz przed wyrzuceniem.",
"You don't need to edit your profile to change characters; Just press the top\nbutton (pick-up) when joining a game to override your default.": "Nie musisz edytować swojego profilu aby zmienić postacie. Naciśnij górny\nprzycisk (podnoszenie) kiedy dołączasz do gry aby zamienić domyślną postać.",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Przyjmujesz obrażenia jeśli uderzasz głową w różne\nrzeczy, więc staraj się tego nie robić.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Przyjmujesz obrażenia, jeśli uderzasz głową w różne\nrzeczy, więc staraj się tego nie robić.",
"Your punches do much more damage if you are running or spinning.": "Twoje ciosy zadadzą więcej obrażeń, jeśli będziesz biegać lub się kręcić."
}
},
@@ -1853,7 +1973,7 @@
"trophiesText": "Zdobycze",
"trophiesThisSeasonText": "Zdobycze w tym Sezonie",
"tutorial": {
- "cpuBenchmarkText": "Wykonywanie testu szybkości (głównie testuje szybkość procesora)",
+ "cpuBenchmarkText": "Odtwarzanie samouczka na niedorzecznej prędkości (głównie testuje szybkość procesora)",
"phrase01Text": "Hejka!",
"phrase02Text": "Witaj w ${APP_NAME}!",
"phrase03Text": "Oto kilka porad jak kontrolować swoją postać:",
@@ -1864,9 +1984,9 @@
"phrase08Text": "Teraz skoczymy i wykonamy obrót aby zwiększyć szybkość.",
"phrase09Text": "Ooo, tak lepiej.",
"phrase10Text": "Bieganie również pomaga.",
- "phrase11Text": "Przytrzymaj dowolny przycisk aby biec.",
+ "phrase11Text": "Przytrzymaj dowolny przycisk, aby biec.",
"phrase12Text": "Dla uzyskania mocnych uderzeń, staraj się biegać i obracać.",
- "phrase13Text": "Ojjj... sorki ${NAME}.",
+ "phrase13Text": "Ojjj... sorki, ${NAME}.",
"phrase14Text": "Możesz podnosić i rzucać np. flagami, bombami, a nawet przeciwnikiem - ${NAME}.",
"phrase15Text": "Ale BombSquad to głównie BOMBY.",
"phrase16Text": "Skuteczne rzucanie bombami wymaga odrobinę praktyki.",
@@ -1879,7 +1999,7 @@
"phrase23Text": "Spróbuj \"przysmażyć\" lont przez sekundę lub dwie.",
"phrase24Text": "I proszę! Nieźle upieczony.",
"phrase25Text": "Cóż, to by było na tyle.",
- "phrase26Text": "A teraz bierz ich tygrysie!",
+ "phrase26Text": "A teraz bierz ich, tygrysie!",
"phrase27Text": "Zapamiętaj to szkolenie rekrucie, a RACZEJ wrócisz żywy!",
"phrase28Text": "...może...",
"phrase29Text": "Powodzenia!",
@@ -1888,30 +2008,37 @@
"randomName3Text": "Benio",
"randomName4Text": "Czesio",
"randomName5Text": "Ignaś",
- "skipConfirmText": "Naprawdę chcesz pominąć samouczek? Stuknij lub naciśnij aby zatwierdzić.",
+ "skipConfirmText": "Naprawdę chcesz pominąć samouczek? Stuknij lub naciśnij, aby zatwierdzić.",
"skipVoteCountText": "${COUNT}/${TOTAL} pominiętych głosów",
"skippingText": "pomijam samouczek...",
- "toSkipPressAnythingText": "(stuknij lub naciśnij cokolwiek aby pominąć samouczek)"
+ "toSkipPressAnythingText": "(stuknij lub naciśnij cokolwiek, aby pominąć samouczek)"
},
"twoKillText": "PODWÓJNE ZABÓJSTWO!",
+ "uiScaleText": "Skala interfejsu",
"unavailableText": "niedostępne",
+ "unclaimedPrizesText": "Masz nieodebrane nagrody!",
"unconfiguredControllerDetectedText": "Wykryto nieskonfigurowany kontroler:",
"unlockThisInTheStoreText": "To musi zostać odblokowane w sklepie.",
"unlockThisProfilesText": "By stworzyć więcej niż ${NUM} kont, potrzebujesz:",
"unlockThisText": "Żeby to odblokować, potrzebujesz:",
- "unsupportedHardwareText": "Przepraszam ale ten sprzęt nie jest obsługiwany przez tą wersję gry.",
+ "unsupportedControllerText": "Wybacz, ale kontroler \"${NAME}\" nie jest wspierany.",
+ "unsupportedHardwareText": "Przepraszam, ale ten sprzęt nie jest obsługiwany przez tę wersję gry.",
"upFirstText": "Pierwsza gra:",
"upNextText": "Kolejna, ${COUNT} gra w rozgrywce:",
"updatingAccountText": "Aktualizowanie twojego konta...",
"upgradeText": "Ulepsz",
- "upgradeToPlayText": "Aby zagrać odblokuj grę w wersji \"${PRO}\".",
+ "upgradeToPlayText": "Aby zagrać, odblokuj grę w wersji \"${PRO}\".",
"useDefaultText": "Użyj domyślnych",
+ "userSystemScriptsCreateText": "Utwórz skrypty systemowe użytkownika",
+ "userSystemScriptsDeleteText": "Usuń skrypty systemowe użytkownika",
"usesExternalControllerText": "Ta gra wykorzystuje zewnętrzny kontroler jako wejście.",
"usingItunesText": "Korzystanie z aplikacji muzycznej jako ścieżki dźwiękowej...",
"usingItunesTurnRepeatAndShuffleOnText": "Upewnij się, że w ustawieniach iTunes tasowanie utworów i powtarzanie całości jest włączone.",
"v2AccountLinkingInfoText": "Aby połączyć konta V2, użyj przycisku \"Zarządzaj Kontem\".",
+ "v2AccountRequiredText": "Wymaga to konta V2. Uaktualnij swoje konto i spróbuj ponownie.",
"validatingBetaText": "Legalizowanie wersji Beta...",
"validatingTestBuildText": "Sprawdzanie wersji testowej...",
+ "viaText": "poprzez",
"victoryText": "Zwycięstwo!",
"voteDelayText": "Nie możesz zagłosować przez następne ${NUMBER} sekund",
"voteInProgressText": "Głosowanie jest już w toku.",
@@ -1922,7 +2049,7 @@
"waitingForLocalPlayersText": "Oczekiwanie na lokalnych graczy...",
"waitingForPlayersText": "oczekiwanie na dołączenie graczy...",
"waitingInLineText": "Czekanie w kolejce (impreza pełna)...",
- "watchAVideoText": "Zobacz Filmik",
+ "watchAVideoText": "Obejrzyj filmik",
"watchAnAdText": "Obejrzyj reklamę",
"watchWindow": {
"deleteConfirmText": "Usunąć \"${REPLAY}\"?",
@@ -1956,7 +2083,7 @@
"wiimoteSetupWindow": {
"copyrightText": "Prawa autorskie DarwiinRemote",
"listenText": "Nasłuchiwanie",
- "macInstructionsText": "Upewnij się, że twój kontroler Wii jest wyłączony a\nBluetooth uruchomiony na twoim Mac'u, następnie\nnaciśnij 'Słuchaj'. Wsparcie dla Wiimote może być\ntroszkę ciężko kojarzone, więc musisz spróbować\nkilkakrotnie aby uzyskać połączenie.\n\nBluetooth poradzi sobie z połączeniem do 7 urządzeń,\nchociaż ta liczba może się wahać.\n\nBombSquad wspiera oryginalne Wiimotes, Nunchuks,\ni klasyczne kontrolery. Nowy Wii Remote Plus również\npowinien współpracować lecz bez dodatków.",
+ "macInstructionsText": "Upewnij się, że twój kontroler Wii jest wyłączony a\nBluetooth włączony na twoim Mac'u, a następnie\nnaciśnij 'Słuchaj'. Wsparcie dla Wiimote może być\ntroszkę kulawe, więc być może będziesz musiał\npopróbować kilka razy, zanim uzyskasz połączenie.\n\nBluetooth poradzi sobie z połączeniem do 7 urządzeń,\nchociaż ta liczba może się wahać.\n\nBombSquad wspiera oryginalne Wiimoty, Nunchuki\ni klasyczne kontrolery. Nowy Wii Remote Plus również\npowinien współpracować, ale nie z dodatkami.",
"thanksText": "Podziękowania dla zespołu DarwiinRemote\nza wykonanie tej możliwości.",
"titleText": "Ustawienia Wiimote"
},
@@ -1971,11 +2098,12 @@
"xbox360ControllersWindow": {
"getDriverText": "Pobierz sterownik",
"macInstructions2Text": "Aby używać kontrolery bezprzewodowo, musisz posiadać odbiornik\ndostępny w zestawie 'Bezprzewodowy kontroler Xbox360 dla Windows'.\nJeden odbiornik pozwala na podłączenie do 4 kontrolerów.\n\nWażne: inne odbiorniki mogą nie współpracować ze sterownikiem;\nupewnij się, czy odbiornik posiada napis 'Microsoft', nie 'XBOX360'.\nMicrosoft nie sprzedaje odbiorników osobno, więc musisz nabyć go\nw zestawie z kontrolerem lub zakupić na aukcjach.\n\nJeśli powyższe informacje okazały się przydatne, rozważ przekazanie\ndotacji dla producenta sterownika na jego stronie.",
- "macInstructionsText": "Aby użyć kontrolerów z konsoli Xbox360, musisz\nzainstalować sterownik Mac'a dostępny w poniższym linku.\nSterownik współpracuje zarówno z przewodowymi jak i\nbezprzewodowymi kontrolerami.",
- "ouyaInstructionsText": "Aby skorzystać z bezprzewodowych kontrolerów konsoli Xbox360,\npodłącz je do portów USB urządzeń. Możesz skorzystać z hubu USB\naby podłączyć klika kontrolerów.\n\nAby użyć bezprzewodowe kontrolery musisz posiadać bezprzewodowy\nodbiornik, dostępny w zestawie \"Bezprzewodowy kontroler Xbox360\ndla Windows\" lub sprzedawany oddzielnie. Każdy odbiornik podłączony\ndo portu USB urządzenia pozwoli na podłączenie do 4 bezprzewodowych\nkontrolerów.",
- "titleText": "Wykorzystywanie kontrolerów Xbox360 w ${APP_NAME}"
+ "macInstructionsText": "Aby użyć kontrolerów z Xboxa 360, musisz zainstalować\nsterownik do Maca dostępny w poniższym linku. Działa on zarówno\nz przewodowymi jak i bezprzewodowymi kontrolerami.",
+ "ouyaInstructionsText": "Aby skorzystać z bezprzewodowych kontrolerów konsoli Xbox 360,\npodłącz je do portów USB w twoim urządzeniu. Możesz skorzystać\nz huba USB, aby podłączyć wiele kontrolerów.\n\nAby używać bezprzewodowych kontrolerów, musisz posiadać bezprzewodowy\nodbiornik, dostępny w zestawie \"Bezprzewodowy kontroler Xbox 360 dla \nWindows\" lub sprzedawany oddzielnie. Każdy odbiornik podłączony do portu\nUSB urządzenia pozwoli na podłączenie do 4 bezprzewodowych kontrolerów.",
+ "titleText": "Wykorzystywanie kontrolerów Xbox 360 w ${APP_NAME}:"
},
"yesAllowText": "Dajesz!",
"yourBestScoresText": "Twoje najlepsze wyniki",
- "yourBestTimesText": "Twoje najlepsze czasy"
+ "yourBestTimesText": "Twoje najlepsze czasy",
+ "yourPrizeText": "Twoja nagroda:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/portuguese.json b/dist/ba_data/data/languages/portuguese.json
index 20bdf20c..56eaf26a 100644
--- a/dist/ba_data/data/languages/portuguese.json
+++ b/dist/ba_data/data/languages/portuguese.json
@@ -26,12 +26,14 @@
"setAccountNameDesc": "Escolha o nome que será exibido na sua conta.\nVocê pode usar o nome de uma de suas contas\nou criar um nome personalizado exclusivo.",
"signInInfoText": "Inicie sessão para ganhar bilhetes, compita online e compartilhe\no seu progresso entre vários dispositivos.",
"signInText": "Iniciar sessão",
+ "signInWithAnEmailAddressText": "Faça login com um endereço de e-mail",
"signInWithDeviceInfoText": "(uma conta automática disponível apenas neste aparelho)",
"signInWithDeviceText": "Iniciar sessão com conta do dispositivo",
"signInWithGameCircleText": "Iniciar sessão com Game Circle",
"signInWithGooglePlayText": "Iniciar sessão com Google Play",
"signInWithTestAccountInfoText": "(tipo de conta legado; use as contas do dispositivo daqui em diante)",
"signInWithTestAccountText": "Iniciar sessão com conta teste",
+ "signInWithText": "Entrar com ${SERVICE}",
"signInWithV2InfoText": "(uma conta que funciona em todas as plataformas)",
"signInWithV2Text": "Iniciar sessão com conta do BombSquad",
"signOutText": "Finalizar sessão",
@@ -339,6 +341,9 @@
"getMoreGamesText": "Mais jogos...",
"titleText": "Adicionar jogo"
},
+ "addToFavoritesText": "Adicionar aos Favoritos",
+ "addedToFavoritesText": "Adicionou '${NAME}' aos Favoritos.",
+ "allText": "Tudo",
"allowText": "Permitir",
"alreadySignedInText": "A conta tem sessão iniciada em outro dispositivo;\nMude de conta ou feche o jogo no seu\noutro dispositivo e tente novamente.",
"apiVersionErrorText": "Não é possível carregar o módulo ${NAME}; ele é destinado à versão ${VERSION_USED}; exigimos a ${VERSION_REQUIRED}.",
@@ -374,6 +379,7 @@
"chatMutedText": "Chat silenciado",
"chatUnMuteText": "Reativar som do chat",
"choosingPlayerText": "",
+ "codesExplainText": "Os códigos são fornecidos pelo desenvolvedor para \ndiagnosticar e corrigir problemas de conta.",
"completeThisLevelToProceedText": "Você deve completar \neste nível para continuar!",
"completionBonusText": "Bônus de conclusão",
"configControllersWindow": {
@@ -423,11 +429,11 @@
"pressAnyButtonText": "Aperte qualquer botão...",
"pressLeftRightText": "Aperte esquerda ou direita...",
"pressUpDownText": "Aperte cima ou baixo...",
- "runButton1Text": "Executar botão 1",
- "runButton2Text": "Executar botão 2",
- "runTrigger1Text": "Executar gatilho 1",
- "runTrigger2Text": "Executar gatilho 2",
- "runTriggerDescriptionText": "(os gatilhos o permitem correr em diferentes velocidades)",
+ "runButton1Text": "Correr Botão 1",
+ "runButton2Text": "Correr Botão 2",
+ "runTrigger1Text": "Correr Gatilho 1",
+ "runTrigger2Text": "Correr Gatilho 2",
+ "runTriggerDescriptionText": "(os gatilhos analogicos o permitem correr em diferentes velocidades)",
"secondHalfText": "Use isto para configurar a segunda metade\nde um controle que funciona\ncomo 2-em-1.",
"secondaryEnableText": "Ativar",
"secondaryText": "Controle secundário",
@@ -463,6 +469,7 @@
"titleText": "Configurar touchscreen",
"touchControlsScaleText": "Escala de Toque do Controle"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} pode ser configurado no aplicativo \"Configurações do sistema\".",
"configureItNowText": "Configurar agora?",
"configureText": "Configurar",
"connectMobileDevicesWindow": {
@@ -576,6 +583,7 @@
"demoText": "Teste",
"denyText": "Recusar",
"deprecatedText": "Descontinuado",
+ "descriptionText": "Descrição",
"desktopResText": "Resolução da área de trabalho",
"deviceAccountUpgradeText": "Aviso:\nVocê está logado com a conta do seu dispositivo\n(${NAME}).\nContas de dispositivo serão removidas em uma atualização futura.",
"difficultyEasyText": "Fácil",
@@ -586,6 +594,9 @@
"disableRemoteAppConnectionsText": "Desativar conexões do aplicativo BombSquad Remote",
"disableXInputDescriptionText": "Permite mais de 4 controles mas pode não funcionar bem.",
"disableXInputText": "Desativar XInput",
+ "disabledText": "Desabilitado",
+ "discordFriendsText": "Quer procurar por pessoas para jogar com elas?\nEntre no nosso Discord e encontre novos amigos!",
+ "discordJoinText": "Junte-se ao Discord",
"doneText": "Concluído",
"drawText": "Empate",
"duplicateText": "Duplicar",
@@ -620,6 +631,7 @@
"localProfileText": "(perfil local)",
"nameDescriptionText": "Nome do jogador",
"nameText": "Nome",
+ "profileAlreadyExistsText": "Um perfil com este nome já existe.",
"randomText": "aleatório",
"titleEditText": "Editar perfil",
"titleNewText": "Novo perfil",
@@ -659,6 +671,7 @@
"useMusicFolderText": "Pasta de arquivos de música"
},
"editText": "Editar",
+ "enabledText": "Abilitado",
"endText": "Fim",
"enjoyText": "Aproveite!",
"epicDescriptionFilterText": "${DESCRIPTION} em câmera lenta épica.",
@@ -706,6 +719,8 @@
"editText": "Editar\nPlaylist",
"gameListText": "Lista de Games",
"newText": "Nova\nPlaylist",
+ "pointsToWinText": "Pontos para ganhar",
+ "seriesLengthText": "Tamanho da série",
"showTutorialText": "Mostrar Tutorial",
"shuffleGameOrderText": "Ordem de partida aleatória",
"titleText": "Personalizar playlists de ${TYPE}"
@@ -745,10 +760,10 @@
"friendHasSentPromoCodeText": "${COUNT} bilhetes do ${APP_NAME} mandados por ${NAME}",
"friendPromoCodeAwardText": "Você ganhará ${COUNT} bilhetes toda vez que for usado.",
"friendPromoCodeExpireText": "O código expira em ${EXPIRE_HOURS} horas e só funcionará para novos jogadores.",
- "friendPromoCodeInstructionsText": "Para usar, abra ${APP_NAME} e vá até \"Configurações-> Avançado-> Inserir código\".\nVeja bombsquadgame.com para os links de download para todas as plataformas disponíveis.",
+ "friendPromoCodeInstructionsText": "Para usar, abra ${APP_NAME} e vá até \"Configurações-> Avançaodo-> Inserir código\". \nVeja bombsquadgame.com para os download de links para todas as plataformas disponíveis.",
"friendPromoCodeRedeemLongText": "Pode ser resgatado por ${COUNT} bilhetes gratuitos por até ${MAX_USES} pessoas.",
"friendPromoCodeRedeemShortText": "Pode ser resgatado por ${COUNT} bilhetes no jogo.",
- "friendPromoCodeWhereToEnterText": "(em \"Configurações-> Avançado-> Inserir código\")",
+ "friendPromoCodeWhereToEnterText": "(em \"Configuração -> Avançado -> Inserir código\")",
"getFriendInviteCodeText": "Obter código de convite",
"googlePlayDescriptionText": "Convidar jogadores do Google Play para a sua sala:",
"googlePlayInviteText": "Convidar",
@@ -780,6 +795,7 @@
"manualYourLocalAddressText": "Seu endereço local:",
"nearbyText": "Próximo",
"noConnectionText": "",
+ "noPartiesAddedText": "Nenhum grupo adicionado",
"otherVersionsText": "(outras versões)",
"partyCodeText": "Código da Sala",
"partyInviteAcceptText": "Aceitar",
@@ -860,10 +876,12 @@
"autoText": "Auto",
"fullScreenCmdText": "Tela cheia (Cmd-F)",
"fullScreenCtrlText": "Tela cheia (Ctrl-F)",
+ "fullScreenText": "Tela cheia",
"gammaText": "Gama",
"highText": "Alto",
"higherText": "Mais alto",
"lowText": "Baixo",
+ "maxFPSText": "FPS máximo",
"mediumText": "Médio",
"neverText": "Nunca",
"resolutionText": "Resolução",
@@ -1124,8 +1142,10 @@
"noExternalStorageErrorText": "Armazenamento externo não encontrado",
"noGameCircleText": "Erro: não conectado no GameCircle",
"noJoinCoopMidwayText": "Jogos cooperativos não podem ser afiliados no meio do caminho.",
+ "noPluginsInstalledText": "Nenhum Plugin instalado",
"noProfilesErrorText": "Você não tem perfis de jogadores, então você está preso com '${NAME}'.\nVá para Configurações->Perfis de Jogador para criar um perfil.",
"noScoresYetText": "Ainda sem pontuação.",
+ "noServersFoundText": "Servidores não encontrados.",
"noThanksText": "Não, obrigado",
"noTournamentsInTestBuildText": "Atenção: As pontuações dos torneios desta compilação de teste serão ignoradas.",
"noValidMapsErrorText": "Nenhum mapa válido encontrado para este tipo de jogo.",
@@ -1300,7 +1320,9 @@
"revertText": "Reverter",
"runText": "Correr",
"saveText": "Salvar",
- "scanScriptsErrorText": "Erro ao ler scripts; verifica o Log para mais informações",
+ "scanScriptsErrorText": "Erro(s) de verificação de scripts; consulte o registro para obter mais detalhes.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} e ${NUM} e outro(s) módulo(s) precisam de atualizações paro o api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} precisa ser atualizado para api${API}.",
"scoreChallengesText": "Desafios de Pontuação",
"scoreListUnavailableText": "Lista de pontuação indisponível.",
"scoreText": "Pontuação",
@@ -1311,6 +1333,7 @@
},
"scoreWasText": "(foi ${COUNT})",
"selectText": "Selecionar",
+ "sendInfoDescriptionText": "Envia a informação sua conta e estado de aplicativo para o desenvolvedor.\nPor favor incluir seu nome ou razão para mandar.",
"seriesWinLine1PlayerText": "VENCEU A",
"seriesWinLine1Scale": 0.65,
"seriesWinLine1TeamText": "VENCEU A",
@@ -1332,25 +1355,31 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(um teclado simples para edição de texto)",
- "alwaysUseInternalKeyboardText": "Sempre usar o teclado interno",
+ "alwaysUseInternalKeyboardText": "Sempre Usar O Teclado Interno",
"benchmarksText": "Testes de desempenho",
- "disableCameraGyroscopeMotionText": "Desativar o movimento do giroscópio da câmera",
- "disableCameraShakeText": "Desabilitar o shake da câmera",
+ "devToolsText": "Ferramentas de Desenvolvimento",
+ "disableCameraGyroscopeMotionText": "Desativar Movimento Giroscópio da Câmera",
+ "disableCameraShakeText": "Desativar Tremida da câmera",
"disableThisNotice": "(você pode desativar este aviso em configurações avançadas)",
"enablePackageModsDescriptionText": "(ativa habilidades de modificação do jogo mas desabilita jogos em LAN)",
"enablePackageModsText": "Ativar modificações locais do jogo",
"enterPromoCodeText": "Inserir código",
"forTestingText": "Nota: esses valores são somente para teste e serão perdidos assim que o aplicativo for fechado.",
"helpTranslateText": "As traduções do ${APP_NAME} são sustentadas pelo\nesforço público. Se você gostaria de ajudar ou corrigir\numa tradução, siga o link a seguir. Agradeço desde já!",
- "kickIdlePlayersText": "Expulsar jogadores ausentes",
+ "kickIdlePlayersText": "Expulsar Jogadores Ausentes",
"kidFriendlyModeText": "Modo para crianças (violência reduzida, etc)",
"languageText": "Idioma",
"moddingGuideText": "Guia de modificação",
+ "moddingToolsText": "Ferramentas Para Mods",
"mustRestartText": "Você deve reiniciar o jogo para a modificação ter efeito.",
"netTestingText": "Teste de conexão",
"resetText": "Redefinir",
+ "sendInfoText": "Enviar Informação",
"showBombTrajectoriesText": "Mostrar trajetórias da bomba",
- "showInGamePingText": "Mostrar latência no jogo",
+ "showDemosWhenIdleText": "Mostrar Demonstrações Quando ocioso",
+ "showDeprecatedLoginTypesText": "Mostrar tipos de logins ultrapassados",
+ "showDevConsoleButtonText": "Mostrar console de desenvolvedor",
+ "showInGamePingText": "Mostrar Latência no jogo",
"showPlayerNamesText": "Mostrar nomes dos jogadores",
"showUserModsText": "Mostrar Pasta de Modificações",
"titleText": "Avançado",
@@ -1359,7 +1388,7 @@
"translationFetchingStatusText": "verificando estado da tradução...",
"translationInformMe": "Informe quando meu idioma precisar de atualizações",
"translationNoUpdateNeededText": "o idioma atual está atualizado; woohoo!",
- "translationUpdateNeededText": "** o idioma atual precisa de atualizações!! **",
+ "translationUpdateNeededText": "** o idioma atual necessita de atualizações!! **",
"vrTestingText": "Teste de RV"
},
"shareText": "Compartilhar",
@@ -1369,6 +1398,9 @@
"signInWithGameCenterText": "Para usar uma conta Game Center,\ninicie a sessão com o aplicativo Game Center.",
"singleGamePlaylistNameText": "Somente ${GAME}",
"singlePlayerCountText": "1 jogador",
+ "sizeLargeText": "Grande",
+ "sizeMediumText": "Médio",
+ "sizeSmallText": "Pequeno",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Seleção do personagem",
@@ -1445,6 +1477,8 @@
"storeText": "Loja",
"submitText": "Valor",
"submittingPromoCodeText": "Enviando código promocional...",
+ "successText": "Sucesso!",
+ "supportEmailText": "Se estiver passando por problemas com o aplicativo, \nenvie um e-mail para ${EMAIL}.",
"teamNamesColorText": "Nome/cores das equipes...",
"teamsText": "Times",
"telnetAccessGrantedText": "Acesso ao Telnet ativado.",
@@ -1480,16 +1514,16 @@
"Agent Johnson": "Agente Johnson",
"B-9000": "B-9000",
"Bernard": "Bernardo",
- "Bones": "Bones",
+ "Bones": "Ossos",
"Butch": "Butch",
- "Easter Bunny": "Coelho de Páscoa",
+ "Easter Bunny": "Coelho da Páscoa",
"Flopsy": "Flopsy",
"Frosty": "Frosty",
"Gretel": "Gretel",
- "Grumbledorf": "Grumblodor",
+ "Grumbledorf": "Grumboldor",
"Jack Morgan": "Jack Morgan",
"Kronk": "Kronk",
- "Lee": "Sotavento",
+ "Lee": "Lee",
"Lucky": "Lucky",
"Mel": "Mel",
"Middle-Man": "Homenzinho",
@@ -1498,9 +1532,9 @@
"Pixel": "Pixel",
"Sammy Slam": "Sammy Slam",
"Santa Claus": "Papai Noel",
- "Snake Shadow": "Serpente sombria",
+ "Snake Shadow": "Serpente Sombria",
"Spaz": "Spaz",
- "Taobao Mascot": "Mascote da Taobao",
+ "Taobao Mascot": "Mascote Taobao",
"Todd": "Teddy",
"Todd McBurton": "Todd McBurton",
"Xara": "Zara",
@@ -1921,11 +1955,13 @@
"toSkipPressAnythingText": "(pressione qualquer coisa para pular o tutorial)"
},
"twoKillText": "MATOU DOIS!",
+ "uiScaleText": "Tamanho da Interface",
"unavailableText": "indisponível",
"unconfiguredControllerDetectedText": "Controle não configurado detectado:",
"unlockThisInTheStoreText": "Isto deve ser desbloqueado na loja.",
"unlockThisProfilesText": "Para criar mais que ${NUM} perfis, você precisa:",
"unlockThisText": "Para desbloquear isso:",
+ "unsupportedControllerText": "Desculpe, o controlador \"${NAME}\" não é compatível.",
"unsupportedHardwareText": "Desculpe, este hardware não é suportado por esta versão do jogo.",
"upFirstText": "Em primeiro lugar:",
"upNextText": "O próximo jogo em ${COUNT}:",
@@ -1933,12 +1969,15 @@
"upgradeText": "Melhorar",
"upgradeToPlayText": "Atualize para \"${PRO}\" na loja para jogar.",
"useDefaultText": "Usar padrão",
+ "userSystemScriptsCreateText": "Criar Scripts do Sistema do Usuário",
+ "userSystemScriptsDeleteText": "Deletar Scripts do Sistema do Usuário",
"usesExternalControllerText": "Este jogo usa um controle externo para entrada.",
"usingItunesText": "Usando o app de música para a trilha sonora",
"usingItunesTurnRepeatAndShuffleOnText": "Por favor, certifique-se de que o aleatório esteja ligado e que a repetição seja TODAS AS MÚSICAS no iTunes.",
"v2AccountLinkingInfoText": "Para vincular contas V2, use o botão 'Gerenciar conta'.",
"validatingBetaText": "Validando Beta...",
"validatingTestBuildText": "Validando versão de teste...",
+ "viaText": "via",
"victoryText": "Vitória!",
"voteDelayText": "Você não pode começar outra votação por ${NUMBER} segundo(s)",
"voteInProgressText": "Uma votação já está em progresso.",
diff --git a/dist/ba_data/data/languages/portuguesebrazil.json b/dist/ba_data/data/languages/portuguesebrazil.json
new file mode 100644
index 00000000..fccf034c
--- /dev/null
+++ b/dist/ba_data/data/languages/portuguesebrazil.json
@@ -0,0 +1,1980 @@
+{
+ "accountSettingsWindow": {
+ "accountNameRules": "O seu nome não pode conter emojis ou outros caracteres especiais",
+ "accountsText": "Contas",
+ "achievementProgressText": "Conquistas: ${COUNT} de ${TOTAL}",
+ "campaignProgressText": "Progresso da Campanha Difícil: ${PROGRESS}",
+ "changeOncePerSeason": "Você só pode mudar isso uma vez por temporada.",
+ "changeOncePerSeasonError": "Você deve esperar até a próxima temporada para mudar isso novamente (${NUM} dias)",
+ "createAnAccountText": "Crie uma conta",
+ "customName": "Nome personalizado",
+ "deleteAccountText": "Deletar conta",
+ "googlePlayGamesAccountSwitchText": "Se você quer usar uma conta Google diferente,\nUse o Google Play Games para trocar de conta.",
+ "linkAccountsEnterCodeText": "Colocar Código",
+ "linkAccountsGenerateCodeText": "Gerar Código",
+ "linkAccountsInfoText": "(compartilhar progresso entre varios dispositivos)",
+ "linkAccountsInstructionsNewText": "Para vincular duas contas, crie um código na primeira\ne coloque o código na segunda. O progresso de\nambas as contas serão sincronizadas. Tornando se uma unica conta\n(O progresso da primeira conta será perdido)\n\nVocê pode vincular até ${COUNT} contas.\n\nIMPORTANTE: vincule apenas contas que tem acesso; \nSe você vincular a conta de um amigo, vocês não\nirão conseguir jogar online ao mesmo tempo.",
+ "linkAccountsText": "Vincular contas",
+ "linkedAccountsText": "Contas vinculadas:",
+ "manageAccountText": "Gerenciar Conta",
+ "nameChangeConfirm": "Mudar o nome da sua conta para ${NAME}?",
+ "resetProgressConfirmNoAchievementsText": "Isto reiniciará o seu progresso no cooperativo e\nas suas pontuações (mas não os seus bilhetes).\nIsto não pode ser desfeito. Tem certeza?",
+ "resetProgressConfirmText": "Isto reiniciará o seu progresso no cooperativo,\nas suas conquistas e as suas pontuações\n(mas não os seus bilhetes). Isto não pode\nser desfeito. Tem certeza?",
+ "resetProgressText": "Restaurar progresso",
+ "setAccountName": "Escolha o Nome da Conta",
+ "setAccountNameDesc": "Escolha o nome que será exibido na sua conta.\nVocê pode usar o nome de uma de suas contas\nou criar um nome personalizado exclusivo.",
+ "signInInfoText": "Conecte uma conta para ganhar bilhetes, compita online e compartilhe\no seu progresso entre vários dispositivos.",
+ "signInText": "Conectar-se a sua conta",
+ "signInWithAnEmailAddressText": "Faça login com um endereço de e-mail",
+ "signInWithDeviceInfoText": "(uma conta automática disponível apenas neste aparelho)",
+ "signInWithDeviceText": "Conectar-se com a conta de seu proprio dispositivo",
+ "signInWithText": "Entrar com ${SERVICE}",
+ "signInWithV2InfoText": "(uma conta que funciona em todas as plataformas)",
+ "signInWithV2Text": "Usar uma conta do(a) ${APP_NAME}",
+ "signOutText": "Sair da conta",
+ "signingInText": "Iniciando sessão...",
+ "signingOutText": "Finalizando sessão...",
+ "ticketsText": "Bilhetes: ${COUNT}",
+ "titleText": "Conta",
+ "unlinkAccountsInstructionsText": "Selecione uma conta a qual você quer sair",
+ "unlinkAccountsText": "Desvincular contas",
+ "unlinkLegacyV1AccountsText": "Retirar contas V1",
+ "v2LinkInstructionsText": "Utilize o link para criar uma conta ou entrar nela.",
+ "viaAccount": "(via ${NAME})",
+ "youAreSignedInAsText": "Conectou-se como:"
+ },
+ "achievementChallengesText": "Desafios feitos",
+ "achievementText": "Conquistas",
+ "achievements": {
+ "Boom Goes the Dynamite": {
+ "description": "Mate 3 inimigos com TNT",
+ "descriptionComplete": "Você matou 3 inimigos com TNT",
+ "descriptionFull": "Mate 3 inimigos com TNT no ${LEVEL}",
+ "descriptionFullComplete": "Você matou 3 inimigos com TNT no ${LEVEL}",
+ "name": "Quem brinca com fogo, sai queimado"
+ },
+ "Boxer": {
+ "description": "Ganhe sem usar bombas",
+ "descriptionComplete": "Ganhou sem usar bombas",
+ "descriptionFull": "Complete o ${LEVEL} sem usar bombas",
+ "descriptionFullComplete": "Completou o ${LEVEL} sem usar bombas",
+ "name": "Boxeador"
+ },
+ "Dual Wielding": {
+ "descriptionFull": "Conecte 2 controles sendo fisicos ou sendo virtuais (pelo aplicativo)",
+ "descriptionFullComplete": "Conectou 2 controles sendo fisicos ou sendo virtuais (pelo aplicativo)",
+ "name": "Dominação dupla"
+ },
+ "Flawless Victory": {
+ "description": "Ganhe sem ser atingido",
+ "descriptionComplete": "Ganhou sem ser atingido",
+ "descriptionFull": "Ganhe o ${LEVEL} sem ser atingido",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem ser atingido",
+ "name": "Vitória perfeita"
+ },
+ "Free Loader": {
+ "descriptionFull": "Comece um Todos contra todos com mais de 2 jogadores",
+ "descriptionFullComplete": "Começou um Todos contra todos com mais de 2 jogadores",
+ "name": "Carregador livre"
+ },
+ "Gold Miner": {
+ "description": "Mate 6 inimigos com minas",
+ "descriptionComplete": "Matou 6 inimigos com minas",
+ "descriptionFull": "Mate 6 inimigos com minas no ${LEVEL}",
+ "descriptionFullComplete": "Matou 6 inimigos com minas no ${LEVEL}",
+ "name": "Garimpeiro"
+ },
+ "Got the Moves": {
+ "description": "Ganhe sem usar socos ou bombas",
+ "descriptionComplete": "Ganhou sem usar socos ou bombas",
+ "descriptionFull": "Ganhe o ${LEVEL} sem socos ou bombas",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem socos ou bombas",
+ "name": "Esse Tem Gingado"
+ },
+ "In Control": {
+ "descriptionFull": "Conecte um controle (hardware ou aplicativo)",
+ "descriptionFullComplete": "Conectou um controle. (hardware ou aplicativo)",
+ "name": "No controle"
+ },
+ "Last Stand God": {
+ "description": "Marque 1000 pontos",
+ "descriptionComplete": "Marcou 1000 pontos",
+ "descriptionFull": "Marque 1000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 1000 pontos no ${LEVEL}",
+ "name": "${LEVEL} Deus"
+ },
+ "Last Stand Master": {
+ "description": "Marque 250 pontos",
+ "descriptionComplete": "Marcou 250 pontos",
+ "descriptionFull": "Marque 250 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 250 pontos no ${LEVEL}",
+ "name": "${LEVEL} Mestre"
+ },
+ "Last Stand Wizard": {
+ "description": "Marque 500 pontos",
+ "descriptionComplete": "Marcou 500 pontos",
+ "descriptionFull": "Marque 500 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 500 pontos no ${LEVEL}",
+ "name": "${LEVEL} Mago"
+ },
+ "Mine Games": {
+ "description": "Mate 3 inimigos com minas",
+ "descriptionComplete": "Matou 3 inimigos com minas",
+ "descriptionFull": "Mate 3 inimigos com minas no ${LEVEL}",
+ "descriptionFullComplete": "Matou 3 inimigos com minas no ${LEVEL}",
+ "name": "Brincando com Minas"
+ },
+ "Off You Go Then": {
+ "description": "Mande 3 inimigos para fora do mapa",
+ "descriptionComplete": "Mandou 3 inimigos para fora do mapa",
+ "descriptionFull": "Mande 3 inimigos para fora do mapa no ${LEVEL}",
+ "descriptionFullComplete": "Mandou 3 inimigos para fora do mapa no ${LEVEL}",
+ "name": "Pode Ir Agora"
+ },
+ "Onslaught God": {
+ "description": "Marque 5000 pontos",
+ "descriptionComplete": "Marcou 5000 pontos",
+ "descriptionFull": "Marque 5000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 5000 pontos no ${LEVEL}",
+ "name": "${LEVEL} Deus"
+ },
+ "Onslaught Master": {
+ "description": "Marque 500 pontos",
+ "descriptionComplete": "Marcou 500 pontos",
+ "descriptionFull": "Marque 500 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 500 pontos no ${LEVEL}",
+ "name": "${LEVEL} Mestre"
+ },
+ "Onslaught Training Victory": {
+ "description": "Derrote todas as ondas",
+ "descriptionComplete": "Derrotou todas as ondas",
+ "descriptionFull": "Derrote todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Derrotou todas as ondas no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Onslaught Wizard": {
+ "description": "Marque 1000 pontos",
+ "descriptionComplete": "Marcou 1000 pontos",
+ "descriptionFull": "Marque 1000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 1000 pontos no ${LEVEL}",
+ "name": "Mago do ${LEVEL}"
+ },
+ "Precision Bombing": {
+ "description": "Ganhe sem poderes",
+ "descriptionComplete": "Ganhou sem poderes",
+ "descriptionFull": "Ganhe ${LEVEL} sem poderes",
+ "descriptionFullComplete": "Ganhou ${LEVEL} sem poderes",
+ "name": "Chuva de Bomba"
+ },
+ "Pro Boxer": {
+ "description": "Ganhe sem usar bombas",
+ "descriptionComplete": "Ganhou sem usar bombas",
+ "descriptionFull": "Complete o ${LEVEL} sem usar bombas",
+ "descriptionFullComplete": "Completou o ${LEVEL} sem usar bombas",
+ "name": "Pugilista"
+ },
+ "Pro Football Shutout": {
+ "description": "Ganhe sem deixar os inimigos marcarem",
+ "descriptionComplete": "Ganhou sem deixar os inimigos marcarem",
+ "descriptionFull": "Ganhe o ${LEVEL} sem deixar os inimigos marcarem",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem deixar os inimigos marcarem",
+ "name": "${LEVEL} De Lavada"
+ },
+ "Pro Football Victory": {
+ "description": "Ganhe a partida",
+ "descriptionComplete": "Ganhou a partida",
+ "descriptionFull": "Ganhe a partida no ${LEVEL}",
+ "descriptionFullComplete": "Ganhou a partida no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Pro Onslaught Victory": {
+ "description": "Derrote todas as ondas",
+ "descriptionComplete": "Todas as ondas derrotadas",
+ "descriptionFull": "Derrote todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Todas as ondas do ${LEVEL} derrotadas",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Pro Runaround Victory": {
+ "description": "Complete todas as ondas",
+ "descriptionComplete": "Todas as ondas completadas",
+ "descriptionFull": "Complete todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Todas as ondas completadas no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Rookie Football Shutout": {
+ "description": "Ganhe sem deixar os inimigos marcarem",
+ "descriptionComplete": "Ganhou sem deixar os inimigos marcarem",
+ "descriptionFull": "Ganhe no ${LEVEL} sem deixar os inimigos marcarem",
+ "descriptionFullComplete": "Ganhou no ${LEVEL} sem deixar os inimigos marcarem",
+ "name": "${LEVEL} de levada"
+ },
+ "Rookie Football Victory": {
+ "description": "Ganhe a partida",
+ "descriptionComplete": "Ganhou a partida",
+ "descriptionFull": "Ganhe a partida no ${LEVEL}",
+ "descriptionFullComplete": "Ganhou a partida no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Rookie Onslaught Victory": {
+ "description": "Derrote todas as ondas",
+ "descriptionComplete": "Todas as ondas derrotadas",
+ "descriptionFull": "Derrote todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Todas as ondas no ${LEVEL} derrotadas",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Runaround God": {
+ "description": "Marque 2000 pontos",
+ "descriptionComplete": "Marcou 2000 pontos",
+ "descriptionFull": "Marque 2000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 2000 pontos no ${LEVEL}",
+ "name": "Deus da ${LEVEL}"
+ },
+ "Runaround Master": {
+ "description": "Marque 500 pontos",
+ "descriptionComplete": "Marcou 500 pontos",
+ "descriptionFull": "Marque 500 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 500 pontos no ${LEVEL}",
+ "name": "Mestre do ${LEVEL}"
+ },
+ "Runaround Wizard": {
+ "description": "Marque 1000 pontos",
+ "descriptionComplete": "Marcou 1000 pontos",
+ "descriptionFull": "Marque 1000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 1000 pontos no ${LEVEL}",
+ "name": "Mago do ${LEVEL}"
+ },
+ "Sharing is Caring": {
+ "descriptionFull": "Compartilhe o jogo com um amigo",
+ "descriptionFullComplete": "Jogo compartilhado com um amigo",
+ "name": "Compartilhar é amar"
+ },
+ "Stayin' Alive": {
+ "description": "Ganhe sem morrer",
+ "descriptionComplete": "Ganhou sem morrer",
+ "descriptionFull": "Ganhe o ${LEVEL} sem morrer",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem morrer",
+ "name": "Sobrevivendo"
+ },
+ "Super Mega Punch": {
+ "description": "Cause 100% de dano com um soco",
+ "descriptionComplete": "Causou 100% de dano com um soco",
+ "descriptionFull": "Cause 100% de dano com um soco no ${LEVEL}",
+ "descriptionFullComplete": "Causou 100% de dano com um soco no ${LEVEL}",
+ "name": "Super mega soco"
+ },
+ "Super Punch": {
+ "description": "Cause 50% de dano com um soco",
+ "descriptionComplete": "Causou 50% de dano com um soco",
+ "descriptionFull": "Cause 50% de dano com um soco no ${LEVEL}",
+ "descriptionFullComplete": "Causou 50% de dano com um soco no ${LEVEL}",
+ "name": "Supersoco"
+ },
+ "TNT Terror": {
+ "description": "Mate 6 inimigos com TNT",
+ "descriptionComplete": "Matou 6 inimigos com TNT",
+ "descriptionFull": "Mate 6 inimigos com TNT no ${LEVEL}",
+ "descriptionFullComplete": "Matou 6 inimigos com TNT no ${LEVEL}",
+ "name": "Terror do TNT"
+ },
+ "Team Player": {
+ "descriptionFull": "Comece um jogo de equipes com mais de 4 jogadores",
+ "descriptionFullComplete": "Começou um jogo de equipes com mais de 4 jogadores",
+ "name": "Jogador de equipe"
+ },
+ "The Great Wall": {
+ "description": "Pare todos os inimigos",
+ "descriptionComplete": "Parou todos os inimigos",
+ "descriptionFull": "Pare todos os inimigos no ${LEVEL}",
+ "descriptionFullComplete": "Parou todos os inimigos no ${LEVEL}",
+ "name": "A Grande Muralha"
+ },
+ "The Wall": {
+ "description": "Pare todos os inimigos",
+ "descriptionComplete": "Parou todos os inimigos",
+ "descriptionFull": "Pare todos os inimigos no ${LEVEL}",
+ "descriptionFullComplete": "Parou todos os inimigos no ${LEVEL}",
+ "name": "A Muralha"
+ },
+ "Uber Football Shutout": {
+ "description": "Ganhe sem deixar os inimigos marcarem",
+ "descriptionComplete": "Ganhou sem deixar os inimigos marcarem",
+ "descriptionFull": "Ganhe o ${LEVEL} sem deixar os inimigos marcarem",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem deixar os inimigos marcarem",
+ "name": "${LEVEL} De Lavada"
+ },
+ "Uber Football Victory": {
+ "description": "Ganhe a partida",
+ "descriptionComplete": "Ganhou a partida",
+ "descriptionFull": "Ganhe a partida no ${LEVEL}",
+ "descriptionFullComplete": "Ganhou a partida no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Uber Onslaught Victory": {
+ "description": "Derrote todas as ondas",
+ "descriptionComplete": "Derrotou todas as ondas",
+ "descriptionFull": "Derrote todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Derrotou todas as ondas no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Uber Runaround Victory": {
+ "description": "Complete todas as ondas",
+ "descriptionComplete": "Completou todas as ondas",
+ "descriptionFull": "Complete todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Completou todas as ondas no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ }
+ },
+ "achievementsRemainingText": "Conquistas restantes:",
+ "achievementsText": "Conquistas",
+ "achievementsUnavailableForOldSeasonsText": "Desculpe, algumas conquistas não estão disponíveis em temporadas antigas.",
+ "activatedText": "${THING} foi ativado.",
+ "addGameWindow": {
+ "getMoreGamesText": "Mais jogos...",
+ "titleText": "Adicionar jogo"
+ },
+ "addToFavoritesText": "Adicionar aos Favoritos",
+ "addedToFavoritesText": "Adicionou '${NAME}' aos Favoritos.",
+ "allText": "Tudo",
+ "allowText": "Permitir",
+ "alreadySignedInText": "A conta tem sessão iniciada em outro dispositivo;\nMude de conta ou feche o jogo no seu\noutro dispositivo e tente novamente.",
+ "apiVersionErrorText": "Não é possível carregar o módulo ${NAME}; ele é destinado à versão ${VERSION_USED}; exigimos a ${VERSION_REQUIRED}.",
+ "applyText": "Aplicar",
+ "areYouSureText": "Voce tem certeza?",
+ "audioSettingsWindow": {
+ "headRelativeVRAudioInfoText": "(\"Auto\" ativa isso apenas quando fones estão conectados)",
+ "headRelativeVRAudioText": "Áudio para fones de RV",
+ "musicVolumeText": "Volume da música",
+ "soundVolumeText": "Volume do som",
+ "soundtrackButtonText": "Trilha sonora",
+ "soundtrackDescriptionText": "(tocar a sua própria música durante o jogo)",
+ "titleText": "Áudio"
+ },
+ "autoText": "Automático",
+ "backText": "Voltar",
+ "banThisPlayerText": "Banir este jogador",
+ "bestOfFinalText": "Final de Melhor-de-${COUNT}",
+ "bestOfSeriesText": "Melhor série de ${COUNT}:",
+ "bestRankText": "Sua melhor pontuação é #${RANK}",
+ "bestRatingText": "Sua melhor classificação é ${RATING}",
+ "bombBoldText": "BOMBA",
+ "bombText": "Bomba",
+ "boostText": "Impulso",
+ "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} é configurado no próprio aplicativo.",
+ "buttonText": "botão",
+ "canWeDebugText": "Você gostaria que o ${APP_NAME} automaticamente comunique\nerros, falhas e informações de uso básico para o desenvolvedor?\n\nEsses dados não contem informações pessoais e ajudam\nà manter o jogo rodando suavemente e livre de bugs.",
+ "cancelText": "Cancelar",
+ "cantConfigureDeviceText": "Desculpe, ${DEVICE} não é configurável.",
+ "challengeEndedText": "Este desafio acabou.",
+ "chatMuteText": "Silenciar Chat",
+ "chatMutedText": "Chat Silenciado",
+ "chatUnMuteText": "Reativar Chat",
+ "chests": {
+ "prizeOddsText": "Chances de Ganhar",
+ "reduceWaitText": "Reduzir a espera",
+ "slotDescriptionText": "Este slot pode conter um baú.\n\nGanhe baús jogando níveis de campanha,\ncolocando-se em torneios e completando\nconquistas.",
+ "slotText": "Slot de baú ${NUM}",
+ "slotsFullWarningText": "AVISO: Todos os seus slots de baú estão cheios.\nQuaisquer baús que você ganhar neste jogo serão perdidos.",
+ "unlocksInText": "Desbloqueia Em"
+ },
+ "choosingPlayerText": "",
+ "claimText": "Resgatar",
+ "codesExplainText": "Os códigos são fornecidos pelo desenvolvedor para \ndiagnosticar e corrigir problemas de conta.",
+ "completeThisLevelToProceedText": "Você deve completar \neste nível para continuar!",
+ "completionBonusText": "Bônus de conclusão",
+ "configControllersWindow": {
+ "configureControllersText": "Configurar controles",
+ "configureKeyboard2Text": "Configurar teclado P2",
+ "configureKeyboardText": "Configurar teclado",
+ "configureMobileText": "Usar dispositivos como controles",
+ "configureTouchText": "Configurar touchscreen",
+ "ps3Text": "Controles PS3",
+ "titleText": "Controles",
+ "wiimotesText": "Wiimotes",
+ "xbox360Text": "Controles Xbox 360"
+ },
+ "configGamepadSelectWindow": {
+ "androidNoteText": "Nota: o suporte ao controle varia conforme o dispositivo e a versão do Android.",
+ "pressAnyButtonText": "Aperte qualquer botão no controle\nque você deseja configurar...",
+ "titleText": "Configurar controles"
+ },
+ "configGamepadWindow": {
+ "advancedText": "Avançado",
+ "advancedTitleText": "Configuração avançada dos controles",
+ "analogStickDeadZoneDescriptionText": "(ative isto se o personagem 'escorrega' quando você solta o direcional)",
+ "analogStickDeadZoneText": "Área morta do analógico",
+ "appliesToAllText": "(serve para todos os controles deste tipo)",
+ "autoRecalibrateDescriptionText": "(ative isto se o personagem não se move na velocidade máxima)",
+ "autoRecalibrateText": "Calibrar automaticamente o analógico",
+ "axisText": "eixo",
+ "clearText": "limpar",
+ "dpadText": "direcional",
+ "extraStartButtonText": "Botão Start Extra",
+ "ifNothingHappensTryAnalogText": "Se nada acontecer, tente mudar para o analógico.",
+ "ifNothingHappensTryDpadText": "Se nada acontecer, tente mudar para o botão direcional.",
+ "ignoreCompletelyDescriptionText": "(impedir este controle de afetar tanto o jogo quanto o menu)",
+ "ignoreCompletelyText": "Ignorar totalmente",
+ "ignoredButton1Text": "Botão 1 ignorado",
+ "ignoredButton2Text": "Botão 2 ignorado",
+ "ignoredButton3Text": "Botão 3 ignorado",
+ "ignoredButton4Text": "Botão 4 ignorado",
+ "ignoredButtonDescriptionText": "(use isto para evitar que os botões 'home' ou 'sync' afetem a UI)",
+ "pressAnyAnalogTriggerText": "Aperte qualquer gatilho...",
+ "pressAnyButtonOrDpadText": "Aperte qualquer botão ou direcional...",
+ "pressAnyButtonText": "Aperte qualquer botão...",
+ "pressLeftRightText": "Aperte esquerda ou direita...",
+ "pressUpDownText": "Aperte cima ou baixo...",
+ "runButton1Text": "Correr Botão 1",
+ "runButton2Text": "Correr Botão 2",
+ "runTrigger1Text": "Correr Gatilho 1",
+ "runTrigger2Text": "Correr Gatilho 2",
+ "runTriggerDescriptionText": "(os gatilhos analogicos o permitem correr em diferentes velocidades)",
+ "secondHalfText": "Use isto para configurar a segunda metade\nde um controle que funciona\ncomo 2-em-1.",
+ "secondaryEnableText": "Ativar",
+ "secondaryText": "Controle secundário",
+ "startButtonActivatesDefaultDescriptionText": "(desative se o seu botão start está mais para um botão de menu)",
+ "startButtonActivatesDefaultText": "O botão Start ativa o widget padrão",
+ "titleText": "Configuração do controle",
+ "twoInOneSetupText": "Configuração do Controle 2-em-1",
+ "uiOnlyDescriptionText": "(impede que este controle entre em um jogo)",
+ "uiOnlyText": "Limitar o Uso ao Menu",
+ "unassignedButtonsRunText": "Todo o botão não definido executa",
+ "unsetText": "",
+ "vrReorientButtonText": "Botão Reorientar VR"
+ },
+ "configKeyboardWindow": {
+ "configuringText": "Configurando ${DEVICE}",
+ "keyboard2NoteText": "Nota: a maioria dos teclados só podem registrar\nalgumas teclas pressionadas de uma só vez, portanto\npode funcionar melhor se houver um segundo teclado\nconectado. Perceba que, mesmo nesse caso, você ainda\nprecisará definir teclas exclusivas para os dois jogadores."
+ },
+ "configTouchscreenWindow": {
+ "actionControlScaleText": "Escala de ação do controle",
+ "actionsText": "Ações",
+ "buttonsText": "botões",
+ "dragControlsText": "< arraste controles para reposicioná-los >",
+ "joystickText": "joystick",
+ "movementControlScaleText": "Escala de movimento do controle",
+ "movementText": "Movimento",
+ "resetText": "Reiniciar",
+ "swipeControlsHiddenText": "Ocultar ícones de deslize",
+ "swipeInfoText": "O estilo 'Deslize' do controle leva um tempo para se acostumar, mas\nfaz com que seja mais fácil de jogar sem olhar para os controles.",
+ "swipeText": "deslize",
+ "titleText": "Configurar touchscreen"
+ },
+ "configureDeviceInSystemSettingsText": "${DEVICE} pode ser configurado no aplicativo \"Configurações do sistema\".",
+ "configureItNowText": "Configurar agora?",
+ "configureText": "Configurar",
+ "connectMobileDevicesWindow": {
+ "amazonText": "Amazon Appstore",
+ "appStoreText": "App Store",
+ "bestResultsText": "Para melhores resultados, é necessário uma rede Wi-Fi\nsem lag. Você pode melhorar o desempenho desligando outros\ndispositivos, jogando perto do seu roteador e conectando\no anfitrião do jogo à rede através do Ethernet.",
+ "explanationText": "Para usar um telefone ou tablet como controle,\nbaixe gratuitamente o aplicativo \"${REMOTE_APP_NAME}\".\nDá para conectar quantos dispositivos quiser a ${APP_NAME} pelo Wi-Fi!",
+ "forAndroidText": "para Android:",
+ "forIOSText": "para iOS:",
+ "getItForText": "Baixe ${REMOTE_APP_NAME} para iOS na Apple App Store\nou para Android na Google Play Store ou na Amazon Appstore",
+ "googlePlayText": "Google Play",
+ "titleText": "Usando dispositivos como controles:"
+ },
+ "continuePurchaseText": "Continuar por ${PRICE}?",
+ "continueText": "Continuar",
+ "controlsText": "Controles",
+ "coopSelectWindow": {
+ "activenessAllTimeInfoText": "Isso não se aplica às classificações de todos os tempos.",
+ "activenessInfoText": "Este multiplicador aumenta nos dias que você joga\ne diminui nos dias que você não joga.",
+ "activityText": "Atividade",
+ "campaignText": "Campanha",
+ "challengesInfoText": "Ganhe prêmios por completar minijogos.\n\nPrêmios e dificuldade aumentam toda\nvez que um desafio é concluído e\ndiminui quando expira ou é abandonado.",
+ "challengesText": "Desafios",
+ "currentBestText": "O Melhor do Momento",
+ "customText": "Personalizado",
+ "entryFeeText": "Entrada",
+ "forfeitConfirmText": "Abandonar este desafio?",
+ "forfeitNotAllowedYetText": "Este desafio ainda não pode ser abandonado.",
+ "forfeitText": "Abandonar",
+ "multipliersText": "Multiplicadores",
+ "nextChallengeText": "Próximo desafio",
+ "nextPlayText": "Próximo jogo",
+ "ofTotalTimeText": "de ${TOTAL}",
+ "playNowText": "Jogar agora",
+ "pointsText": "Pontos",
+ "powerRankingFinishedSeasonUnrankedText": "(acabou a temporada casual)",
+ "powerRankingNotInTopText": "(não está no top ${NUMBER})",
+ "powerRankingPointsEqualsText": "= ${NUMBER} pts",
+ "powerRankingPointsMultText": "(x ${NUMBER} pts)",
+ "powerRankingPointsText": "${NUMBER} pts",
+ "powerRankingPointsToRankedText": "(${CURRENT} de ${REMAINING} pts)",
+ "powerRankingText": "Classificação geral",
+ "prizesText": "Prêmios",
+ "proMultInfoText": "Jogadores com a versão ${PRO}\nrecebem um aumento de ${PERCENT}% nos pontos.",
+ "seeMoreText": "Mais...",
+ "skipWaitText": "Pular espera",
+ "timeRemainingText": "Tempo restante",
+ "toRankedText": "Para classificar",
+ "totalText": "total",
+ "tournamentInfoText": "Jogue para ser o melhor contra\noutros jogadores na sua liga.\n\nOs prêmios são dados aos melhores\njogadores quando o torneio acaba.",
+ "welcome1Text": "Bem-vindo à ${LEAGUE}. Você pode melhorar a sua\nclassificação de liga ao receber estrelas, ao obter\nconquistas e ao ganhar troféus em torneios.",
+ "welcome2Text": "Você também pode ganhar bilhetes ao fazer várias dessas atividades.\nOs bilhetes podem ser usados para desbloquear novos personagens,\nmapas e minijogos, entrar em torneios e muito mais.",
+ "yourPowerRankingText": "Sua classificação geral:"
+ },
+ "copyConfirmText": "Copiado para a área de transferência",
+ "copyOfText": "Cópia de ${NAME}",
+ "copyText": "Copiar",
+ "createEditPlayerText": "",
+ "createText": "Criar",
+ "creditsWindow": {
+ "additionalAudioArtIdeasText": "Áudio adicional, Arte inicial e ideias por ${NAME}",
+ "additionalMusicFromText": "Música adicional de ${NAME}",
+ "allMyFamilyText": "Toda a família e amigos que ajudaram nos testes",
+ "codingGraphicsAudioText": "Programação, gráficos e áudio por ${NAME}",
+ "languageTranslationsText": "Traduções:",
+ "legalText": "Legal:",
+ "publicDomainMusicViaText": "Musica de domínio público via ${NAME}",
+ "softwareBasedOnText": "Este software é baseado em parte do trabalho de ${NAME}",
+ "songCreditText": "${TITLE} Executada por ${PERFORMER}\nComposta por ${COMPOSER}, Arranjo por ${ARRANGER}, Publicada por ${PUBLISHER},\nCortesia de ${SOURCE}",
+ "soundAndMusicText": "Som e música:",
+ "soundsText": "Sons (${SOURCE}):",
+ "specialThanksText": "Agradecimentos especiais:",
+ "thanksEspeciallyToText": "Obrigado especialmente a ${NAME}",
+ "titleText": "Créditos do ${APP_NAME}",
+ "whoeverInventedCoffeeText": "Seja lá quem for o inventor do café"
+ },
+ "currentStandingText": "Sua posição atual é #${RANK}",
+ "customizeText": "Personalizar...",
+ "deathsTallyText": "${COUNT} mortes",
+ "deathsText": "Mortes",
+ "debugText": "depurar",
+ "debugWindow": {
+ "reloadBenchmarkBestResultsText": "Nota: recomenda-se que defina Configurações->Gráficos->Texturas para \"Alto\" ao testar isto.",
+ "runCPUBenchmarkText": "Rodar Benchmark de CPU",
+ "runGPUBenchmarkText": "Rodar Benchmark de GPU",
+ "runMediaReloadBenchmarkText": "Rodar Benchmark de Recarregar Mídia",
+ "runStressTestText": "Rodar teste de estresse",
+ "stressTestPlayerCountText": "Contagem de Jogadores",
+ "stressTestPlaylistDescriptionText": "Playlist Teste de Estresse",
+ "stressTestPlaylistNameText": "Nome da Playlist",
+ "stressTestPlaylistTypeText": "Tipo de Playlist",
+ "stressTestRoundDurationText": "Duração da Rodada",
+ "stressTestTitleText": "Teste de estabilidade",
+ "titleText": "Benchmarks e Testes de Estresse",
+ "totalReloadTimeText": "Tempo total de carregamento: ${TIME} (veja relatório para detalhes)"
+ },
+ "defaultGameListNameText": "Playlist ${PLAYMODE} Padrão",
+ "defaultNewGameListNameText": "Minha playlist ${PLAYMODE}",
+ "deleteText": "Excluir",
+ "demoText": "Teste",
+ "denyText": "Recusar",
+ "deprecatedText": "Descontinuado",
+ "descriptionText": "Descrição",
+ "desktopResText": "Resolução da área de trabalho",
+ "deviceAccountUpgradeText": "Aviso:\nVocê está logado com a conta do seu dispositivo\n(${NAME}).\nContas de dispositivo serão removidas em uma atualização futura.",
+ "difficultyEasyText": "Fácil",
+ "difficultyHardOnlyText": "Modo difícil apenas",
+ "difficultyHardText": "Difícil",
+ "difficultyHardUnlockOnlyText": "Esta fase só pode ser desbloqueada no modo difícil.\nVocê acha que aguenta o desafio!?!?!",
+ "directBrowserToURLText": "Por favor, direcione a seguinte URL para um navegador:",
+ "disableRemoteAppConnectionsText": "Desativar conexões do aplicativo BombSquad Remote",
+ "disableXInputDescriptionText": "Permite mais de 4 controles mas pode não funcionar bem.",
+ "disableXInputText": "Desativar XInput",
+ "disabledText": "Desativado",
+ "discardText": "Descarte",
+ "discordFriendsText": "Quer procurar por mais pessoas para jogar junto?\nEntre no nosso Discord e encontre novos amigos!",
+ "discordJoinText": "Junte-se ao Discord",
+ "doneText": "Concluído",
+ "drawText": "Empate",
+ "duplicateText": "Duplicar",
+ "editGameListWindow": {
+ "addGameText": "Adicionar\nJogo",
+ "cantOverwriteDefaultText": "Não é possível sobrescrever a playlist padrão!",
+ "cantSaveAlreadyExistsText": "Já existe uma playlist com este nome!",
+ "cantSaveEmptyListText": "Não é possível salvar uma playlist vazia!",
+ "editGameText": "Editar\nJogo",
+ "listNameText": "Nome da Playlist",
+ "nameText": "Nome",
+ "removeGameText": "Remover\nJogo",
+ "saveText": "Salvar lista",
+ "titleText": "Editor de Playlist"
+ },
+ "editProfileWindow": {
+ "accountProfileInfoText": "Este perfil especial tem nome e\nícone baseado na sua conta.\n\n${ICONS}\n\nCrie perfis personalizados para usar\nnomes diferentes ou ícones personalizados.",
+ "accountProfileText": "(perfil da conta)",
+ "availableText": "O nome \"${NAME}\" está disponível.",
+ "characterText": "personagem",
+ "checkingAvailabilityText": "Verificando disponibilidade para \"${NAME}\"...",
+ "colorText": "cor",
+ "getMoreCharactersText": "Obter mais personagens...",
+ "getMoreIconsText": "Obter mais ícones...",
+ "globalProfileInfoText": "Garante-se que perfis globais tenham nomes\núnicos. Possuem também ícones personalizados.",
+ "globalProfileText": "(perfil global)",
+ "highlightText": "detalhe",
+ "iconText": "ícone",
+ "localProfileInfoText": "Os perfis de jogadores locais não possuem ícones e não garantem que seus\nnomes sejam únicos.\n\nAprimore para um perfil global para\nreservar um nome único e adicionar um ícone personalizado.",
+ "localProfileText": "(perfil local)",
+ "nameDescriptionText": "Nome do Jogador",
+ "nameText": "Nome",
+ "profileAlreadyExistsText": "Um perfil com este nome já existe.",
+ "randomText": "aleatório",
+ "titleEditText": "Editar perfil",
+ "titleNewText": "Novo Perfil",
+ "unavailableText": "\"${NAME}\" está indisponível; tente outro nome.",
+ "upgradeProfileInfoText": "Isso irá reservar o seu nome de jogador mundialmente\ne permitirá definir um ícone personalizado a ele.",
+ "upgradeToGlobalProfileText": "Aprimorar para Perfil Global"
+ },
+ "editSoundtrackWindow": {
+ "cantDeleteDefaultText": "Você não pode excluir a trilha sonora padrão.",
+ "cantEditDefaultText": "Não é possível editar a trilha sonora padrão. Duplique ou crie uma nova.",
+ "cantOverwriteDefaultText": "Não é possível sobrescrever a trilha sonora padrão",
+ "cantSaveAlreadyExistsText": "Já existe uma trilha sonora com esse nome!",
+ "defaultGameMusicText": "",
+ "defaultSoundtrackNameText": "Trilha sonora padrão",
+ "deleteConfirmText": "Excluir trilha sonora:\n\n'${NAME}'?",
+ "deleteText": "Excluir\nTrilha sonora",
+ "duplicateText": "Duplicar\nTrilha sonora",
+ "editSoundtrackText": "Editor de Trilha Sonora",
+ "editText": "Editar\nTrilha sonora",
+ "fetchingITunesText": "Buscando playlists do app de música",
+ "musicVolumeZeroWarning": "Aviso: o volume da música está zerado",
+ "nameText": "Nome",
+ "newSoundtrackNameText": "Minha trilha sonora ${COUNT}",
+ "newSoundtrackText": "Nova trilha sonora:",
+ "newText": "Nova\nTrilha sonora",
+ "selectAPlaylistText": "Selecione uma playlist",
+ "selectASourceText": "Fonte de música",
+ "testText": "teste",
+ "titleText": "Trilhas sonoras",
+ "useDefaultGameMusicText": "Música padrão",
+ "useITunesPlaylistText": "Playlist do app de música",
+ "useMusicFileText": "Arquivo de música (mp3, etc)",
+ "useMusicFolderText": "Pasta de arquivos de música"
+ },
+ "editText": "Editar",
+ "enabledText": "Ativado",
+ "endText": "Fim",
+ "enjoyText": "Aproveite!",
+ "epicDescriptionFilterText": "${DESCRIPTION} em câmera lenta épica.",
+ "epicNameFilterText": "${NAME} épico(a)",
+ "errorAccessDeniedText": "acesso negado",
+ "errorDeviceTimeIncorrectText": "A hora do seu dispositivo está incorreta por ${HOURS} horas.\nIsso causará problemas. \nPor-Favor cheque suas configurações de hora e fuso horário.",
+ "errorOutOfDiskSpaceText": "pouco espaço em disco",
+ "errorSecureConnectionFailText": "Não foi possível estabelecer uma conexão segura à nuvem; a funcionalidade da rede pode falhar.",
+ "errorText": "Erro",
+ "errorUnknownText": "erro desconhecido",
+ "exitGameText": "Sair do ${APP_NAME}?",
+ "expiredAgoText": "Expirado há ${T}",
+ "expiresInText": "Expira em ${T}",
+ "exportSuccessText": "'${NAME}' foi exportado.",
+ "externalStorageText": "Armazenamento externo",
+ "failText": "Falhou",
+ "fatalErrorText": "Ops; algo está faltando ou está corrompido.\nPor favor, tente reinstalar BombSquad ou\nentre em contato ${EMAIL} para ajuda.",
+ "fileSelectorWindow": {
+ "titleFileFolderText": "Selecione um arquivo ou pasta",
+ "titleFileText": "Selecione um arquivo",
+ "titleFolderText": "Selecione uma pasta",
+ "useThisFolderButtonText": "Use esta pasta"
+ },
+ "filterText": "Filtro",
+ "finalScoreText": "Pontuação final",
+ "finalScoresText": "Pontuações finais",
+ "finalTimeText": "Tempo final",
+ "finishingInstallText": "Terminando de instalar; aguarde...",
+ "fireTVRemoteWarningText": "* Para uma melhor experiência, use\njoysticks ou baixe o aplicativo\n'${REMOTE_APP_NAME}' no seu\ntelefone ou tablet.",
+ "firstToFinalText": "Primeiro-a-${COUNT} Final",
+ "firstToSeriesText": "Primeiro-a-${COUNT} Séries",
+ "fiveKillText": "MATOU CINCO!!!",
+ "flawlessWaveText": "Onda Perfeita!",
+ "fourKillText": "MORTE QUÁDRUPLA!!!",
+ "friendScoresUnavailableText": "Pontuação dos amigos indisponível.",
+ "gameLeadersText": "Game ${COUNT} Líderes",
+ "gameListWindow": {
+ "cantDeleteDefaultText": "Você não pode excluir a playlist padrão!",
+ "cantEditDefaultText": "Você não pode editar a playlist padrão! Duplique ou crie uma nova.",
+ "cantShareDefaultText": "Você não pode compartilhar a playlist padrão.",
+ "deleteConfirmText": "Excluir ${LIST}?",
+ "deleteText": "Excluir\nPlaylist",
+ "duplicateText": "Duplicar\nPlaylist",
+ "editText": "Editar\nPlaylist",
+ "newText": "Nova\nPlaylist",
+ "pointsToWinText": "Pontos para Ganhar",
+ "seriesLengthText": "Tamanho da Série",
+ "showTutorialText": "Mostrar Tutorial",
+ "shuffleGameOrderText": "Ordem de Partida Aleatória",
+ "titleText": "Personalizar Playlists de ${TYPE}"
+ },
+ "gameSettingsWindow": {
+ "addGameText": "Adicionar jogo"
+ },
+ "gamesToText": "${WINCOUNT} jogos para ${LOSECOUNT}",
+ "gatherWindow": {
+ "aboutDescriptionLocalMultiplayerExtraText": "Lembre-se: qualquer dispositivo em grupo pode ter\nmais de um jogador se você tiver controles o suficiente.",
+ "aboutDescriptionText": "Use essas guias para criar um grupo.\n\nGrupos o permitem jogar com seus amigos\natravés de dispositivos diferentes.\n\nUse o botão ${PARTY} no canto superior direito\npara conversar e interagir com seu grupo.\n(em um controle, aperte ${BUTTON} enquanto estiver em um menu)",
+ "aboutText": "Sobre",
+ "addressFetchErrorText": "",
+ "appInviteMessageText": "${NAME} mandou ${COUNT} cupons ${APP_NAME}",
+ "appInviteSendACodeText": "Envie um código",
+ "appInviteTitleText": "Convite para testar ${APP_NAME}",
+ "bluetoothAndroidSupportText": "(funciona com qualquer dispositivo Android com Bluetooth)",
+ "bluetoothDescriptionText": "Hospedar/entrar em um grupo pelo Bluetooth:",
+ "bluetoothHostText": "Hospedar pelo Bluetooth",
+ "bluetoothJoinText": "Entrar pelo Bluetooth",
+ "bluetoothText": "Bluetooth",
+ "checkingText": "verificando...",
+ "copyCodeConfirmText": "Código copiado para área de transferência.",
+ "copyCodeText": "Copiar código",
+ "dedicatedServerInfoText": "Para melhores resultados, inicie um servidor dedicado. Visite bombsquadgame.com/server para saber como.",
+ "descriptionShortText": "Use a janela de \"Juntar-se\" para formar um grupo.",
+ "disconnectClientsText": "Isso irá desconectar ${COUNT}jogador(es)\nde seu grupo. Você tem certeza?",
+ "earnTicketsForRecommendingAmountText": "Os amigos ganharão ${COUNT} bilhetes ao experimentar o jogo\n(e você ganhará ${YOU_COUNT} por cada um que o fizer)",
+ "earnTicketsForRecommendingText": "Compartilhe o jogo\npara bilhetes grátis...",
+ "emailItText": "Enviar e-mail",
+ "favoritesSaveText": "Salvar como Favorito",
+ "favoritesText": "Favoritos",
+ "freeCloudServerAvailableMinutesText": "Próximo servidor na nuvem grátis disponível em ${MINUTES} minutos.",
+ "freeCloudServerAvailableNowText": "Servidor na nuvem grátis disponível!",
+ "freeCloudServerNotAvailableText": "Nenhum servidor na nuvem grátis disponível.",
+ "friendHasSentPromoCodeText": "${COUNT} bilhetes do ${APP_NAME} mandados por ${NAME}",
+ "friendPromoCodeAwardText": "Você ganhará ${COUNT} bilhetes toda vez que for usado.",
+ "friendPromoCodeExpireText": "O código expira em ${EXPIRE_HOURS} horas e só funcionará para novos jogadores.",
+ "friendPromoCodeInstructionsText": "Para usar, abra ${APP_NAME} e vá até \"Configurações-> Avançado-> Inserir Código\". \nVeja bombsquadgame.com para os links de download para todas as plataformas suportadas.",
+ "friendPromoCodeRedeemLongText": "Pode ser resgatado por ${COUNT} bilhetes gratuitos por até ${MAX_USES} pessoas.",
+ "friendPromoCodeRedeemShortText": "Pode ser resgatado por ${COUNT} bilhetes no jogo.",
+ "friendPromoCodeWhereToEnterText": "(em \"Configuração -> Avançado -> Inserir Código\")",
+ "getFriendInviteCodeText": "Obter código de convite",
+ "googlePlayDescriptionText": "Convidar jogadores do Google Play para a seu grupo:",
+ "googlePlayInviteText": "Convidar",
+ "googlePlayReInviteText": "Há ${COUNT} jogador(es) do Google Play na seu grupo\nque serão desconectados se você iniciar um novo convite.\nInclua-os neste novo convite para adicioná-los de volta.",
+ "googlePlaySeeInvitesText": "Ver convites",
+ "googlePlayText": "Google Play",
+ "googlePlayVersionOnlyText": "(Android/versão Google Play)",
+ "hostPublicPartyDescriptionText": "Hospedar um Grupo Público",
+ "hostingUnavailableText": "Host indisponível",
+ "inDevelopmentWarningText": "Nota:\n\nJogo em rede ainda é um novo recurso em desenvolvimento.\nPor enquanto, é altamente recomendável que todos\nos jogadores estejam na mesma rede Wi-Fi.",
+ "internetText": "Internet",
+ "inviteAFriendText": "Seus amigos ainda não têm o jogo? Convide-os para\nexperimentar e eles ganharão ${COUNT} bilhetes grátis.",
+ "inviteFriendsText": "Convidar amigos",
+ "joinPublicPartyDescriptionText": "Entrar em um Grupo Público",
+ "localNetworkDescriptionText": "Entrar em um Grupo Próximo (LAN, Bluetooth, etc.)",
+ "localNetworkText": "Rede Local",
+ "makePartyPrivateText": "Tornar Meu Grupo Privado",
+ "makePartyPublicText": "Tornar Meu Grupo Público",
+ "manualAddressText": "Endereço",
+ "manualConnectText": "Conectar",
+ "manualDescriptionText": "Entrar em um grupo por endereço:",
+ "manualJoinSectionText": "Entrar pelo Endereço",
+ "manualJoinableFromInternetText": "Conseguem se juntar à você pela internet?:",
+ "manualJoinableNoWithAsteriskText": "NÃO*",
+ "manualJoinableYesText": "SIM",
+ "manualRouterForwardingText": "*para resolver, tente configurar seu roteador para encaminhar a porta UDP ${PORT} para o seu endereço local",
+ "manualText": "Manual",
+ "manualYourAddressFromInternetText": "Seu endereço na internet:",
+ "manualYourLocalAddressText": "Seu endereço local:",
+ "nearbyText": "Próximo",
+ "noConnectionText": "",
+ "noPartiesAddedText": "Nenhum Grupo Adicionado",
+ "otherVersionsText": "(outras versões)",
+ "partyCodeText": "Código do Grupo",
+ "partyInviteAcceptText": "Aceitar",
+ "partyInviteDeclineText": "Recusar",
+ "partyInviteIgnoreText": "Ignorar",
+ "partyInviteText": "${NAME} convidou você\npara entrar no grupo dele(a)!",
+ "partyNameText": "Nome do Grupo",
+ "partyServerRunningText": "Seu servidor de grupo está rodando.",
+ "partySizeText": "tamanho do grupo",
+ "partyStatusCheckingText": "verificando estado...",
+ "partyStatusJoinableText": "agora podem entrar no seu grupo pela internet",
+ "partyStatusNoConnectionText": "não foi possível conectar ao servidor",
+ "partyStatusNotJoinableText": "não podem entrar no seu grupo pela internet",
+ "partyStatusNotPublicText": "seu grupo não é público",
+ "pingText": "latência",
+ "portText": "Porta",
+ "privatePartyCloudDescriptionText": "Grupo privados funcionam em servidores da nuvem dedicados; nenhuma configuração no roteador é requirida.",
+ "privatePartyHostText": "Hospedar um Grupo Privado",
+ "privatePartyJoinText": "Entrar em um Grupo Privado",
+ "privateText": "Privado",
+ "publicHostRouterConfigText": "Isso pode requerer uma configuração de porta no seu roteador. Para uma opção mais simples, crie um grupo privado.",
+ "publicText": "Público",
+ "requestingAPromoCodeText": "Solicitando um código...",
+ "sendDirectInvitesText": "Enviar Convites Diretos",
+ "shareThisCodeWithFriendsText": "Compartilhe esse código com seus amigos:",
+ "showMyAddressText": "Mostrar Meu Endereço",
+ "startHostingPaidText": "Crie Agora por ${COST}",
+ "startHostingText": "Criar",
+ "startStopHostingMinutesText": "Você pode iniciar ou interromper a hospedagem de graça nos próximos ${MINUTES} minutos.",
+ "stopHostingText": "Interromper hospedagem",
+ "titleText": "Juntar-se",
+ "wifiDirectDescriptionBottomText": "Se todos os dispositivos tiverem 'Wi-Fi Direct', poderão usar para encontrar\ne conectar um com o outro. Conectados todos os dispositivos, você pode formar grupos\naqui usando a guia 'Rede Local', como em uma rede Wi-Fi comum.\n\nPara melhores resultados, o anfitrião do Wi-Fi Direct deverá ser também o anfitrião do grupo do ${APP_NAME}.",
+ "wifiDirectDescriptionTopText": "Wi-Fi Direct pode conectar dispositivos Android sem a necessidade\nde uma rede Wi-Fi. Funciona melhor a partir da versão Android 4.2.\n\nPara usar, abra as configurações de Wi-Fi e procure por 'Wi-Fi Direct'.",
+ "wifiDirectOpenWiFiSettingsText": "Abrir as configurações de Wi-Fi",
+ "wifiDirectText": "Wi-Fi Direct",
+ "worksBetweenAllPlatformsText": "(funciona entre todas as plataformas)",
+ "youHaveBeenSentAPromoCodeText": "Mandaram um código promocional do ${APP_NAME} para você:"
+ },
+ "getTicketsWindow": {
+ "freeText": "GRÁTIS!",
+ "freeTicketsText": "Cupons Grátis",
+ "inProgressText": "Uma transação está em andamento; tente de novo em um momento.",
+ "purchasesRestoredText": "Compras restauradas.",
+ "receivedTicketsText": "Você recebeu ${COUNT} cupons!",
+ "restorePurchasesText": "Restaurar Compras",
+ "ticketPack1Text": "Pacote Pequeno de Bilhetes",
+ "ticketPack2Text": "Pacote Médio de Bilhetes",
+ "ticketPack3Text": "Pacote Grande de Bilhetes",
+ "ticketPack4Text": "Pacote Jumbo de Bilhetes",
+ "ticketPack5Text": "Pacote Mamute de Bilhetes",
+ "ticketPack6Text": "Pacote Supremo de Bilhetes",
+ "ticketsFromASponsorText": "Assista a um anúncio \ne ganhe ${COUNT} bilhetes",
+ "ticketsText": "${COUNT} bilhetes",
+ "titleText": "Obter bilhetes",
+ "unavailableLinkAccountText": "Desculpe, as compras não estão disponíveis nesta plataforma.\nComo solução alternativa, você pode vincular esta conta para\noutra conta de outra plataforma e fazer compras lá.",
+ "unavailableTemporarilyText": "Indisponível no momento; tente novamente mais tarde.",
+ "unavailableText": "Desculpe, não está disponível.",
+ "versionTooOldText": "Desculpe, esta versão do jogo é muito antiga; por favor, atualize.",
+ "youHaveShortText": "você tem ${COUNT}",
+ "youHaveText": "você possui ${COUNT} bilhetes"
+ },
+ "goldPass": {
+ "desc1InfTokensText": "Tokens infinitos.",
+ "desc2NoAdsText": "Sem anúncios.",
+ "desc3ForeverText": "Para sempre.",
+ "goldPassText": "Passe de Ouro"
+ },
+ "googlePlayPurchasesNotAvailableText": "Compras pela Google Play não estão disponíveis.\nTalvez seja necessário atualizar sua loja para isso.",
+ "googlePlayServicesNotAvailableText": "Os serviços do Google Play não estão disponíveis. \nAlgumas funções do aplicativo talvez serão desabilitadas.",
+ "googlePlayText": "Google Play",
+ "graphicsSettingsWindow": {
+ "alwaysText": "Sempre",
+ "fullScreenCmdText": "Tela cheia (Cmd-F)",
+ "fullScreenCtrlText": "Tela cheia (Ctrl-F)",
+ "fullScreenText": "Tela cheia",
+ "gammaText": "Gama",
+ "highText": "Alto",
+ "higherText": "Mais alto",
+ "lowText": "Baixo",
+ "maxFPSText": "FPS máximo",
+ "mediumText": "Médio",
+ "neverText": "Nunca",
+ "resolutionText": "Resolução",
+ "showFPSText": "Mostrar FPS",
+ "texturesText": "Texturas",
+ "titleText": "Gráficos",
+ "tvBorderText": "Borda da TV",
+ "verticalSyncText": "Sincronização vertical",
+ "visualsText": "Visuais"
+ },
+ "helpWindow": {
+ "bombInfoText": "- Bomba - \nMais forte que socos, mas pode \ncausar graves ferimentos em você mesmo.\nPara melhores resultados, atire no\ninimigo antes do pavio acabar.",
+ "canHelpText": "${APP_NAME} pode ajudar.",
+ "controllersInfoText": "Você pode jogar ${APP_NAME} com amigos em uma rede, ou todos \npodem jogar no mesmo dispositivo se tiverem controles suficientes.\n${APP_NAME} suporta muitos deles; você pode até mesmo usar\ncelulares como controle com o aplicativo '${REMOTE_APP_NAME}'.\nVeja as Configurações->Controles para mais informações.",
+ "controllersInfoTextRemoteOnly": "Você pode jogar ${APP_NAME} com amigos na rede ou \ntodos podem jogar no mesmo dispositivo usando telefones como\ncontroladores através do aplicativo gratuito '${REMOTE_APP_NAME}'.",
+ "controllersText": "Controles",
+ "controlsSubtitleText": "O seu personagem bonitinho do ${APP_NAME} tem algumas ações básicas:",
+ "controlsText": "Controles",
+ "devicesInfoText": "A versão VR de ${APP_NAME} pode ser jogada em rede com\na versão comum, portanto saquem seus celulares extras, tablets,\ne computadores e mandem ver. Pode ser útil conectar uma\nversão comum do jogo à versão VR para permitir que\npessoas de fora assistam a ação.",
+ "devicesText": "Dispositivos",
+ "friendsGoodText": "São sempre boas companhias. ${APP_NAME} é mais divertido com muitos\njogadores e pode suportar até 8 ao mesmo tempo, o que nos leva a:",
+ "friendsText": "Amigos",
+ "jumpInfoText": "- Saltar -\nSalte por cima de buracos,\npara jogar coisas mais alto e\npara expressar sua alegria.",
+ "orPunchingSomethingText": "Ou dar um soco em algo, jogar de um penhasco e explodir em pedacinhos com uma bomba grudenta.",
+ "pickUpInfoText": "- Pegar -\nAgarre bandeiras, inimigos ou\nqualquer coisa não aparafusada no\nchão. Aperte novamente para jogar.",
+ "powerupBombDescriptionText": "Permite você lançar três bombas\nseguidas ao invés de uma só.",
+ "powerupBombNameText": "Tribombas",
+ "powerupCurseDescriptionText": "É melhor você ficar longe de um desses.\n...ou será que não?",
+ "powerupCurseNameText": "Maldição",
+ "powerupHealthDescriptionText": "Restaura toda a sua energia.\nVocê jamais teria adivinhado.",
+ "powerupHealthNameText": "Kit médico",
+ "powerupIceBombsDescriptionText": "Mais fraca que a normal, mas\ndeixa seus inimigos congelados\ne bem fragilizados.",
+ "powerupIceBombsNameText": "Criobombas",
+ "powerupImpactBombsDescriptionText": "Um pouco mais fraca que a normal\nregular, mas explode ao impacto.",
+ "powerupImpactBombsNameText": "Impactobombas",
+ "powerupLandMinesDescriptionText": "Estes vêm em pacotes de 3;\nÉ útil para proteger a base ou\ndeter inimigos correndo em sua direção.",
+ "powerupLandMinesNameText": "Minas",
+ "powerupPunchDescriptionText": "Deixa seus socos poderosos, \nrápidos, melhores, fortes.",
+ "powerupPunchNameText": "Luvas de Boxe",
+ "powerupShieldDescriptionText": "Absorve um pouco de dano para\nvocê não ter passar por isso.",
+ "powerupShieldNameText": "Escudo de Energia",
+ "powerupStickyBombsDescriptionText": "Gruda em tudo que toca.\nHilaridade segue.",
+ "powerupStickyBombsNameText": "Bombas Grudentas",
+ "powerupsSubtitleText": "É claro, nenhum jogo está completo sem poderes:",
+ "powerupsText": "Poderes",
+ "punchInfoText": "- Soco -\nQuanto mais rápidos seus punhos,\nmais danos seus socos dão, então\nsaia correndo feito um louco.",
+ "runInfoText": "- Correr -\nSegure QUALQUER botão para correr. Gatilhos ou botões de ombro funcionam bem se você tiver. \nCorrer o leva a lugares mais rápido, mas dificulta na hora de virar, então fique de olho nos penhascos.",
+ "someDaysText": "Tem dias que você só quer bater em algo. Ou então explodir coisas.",
+ "titleText": "Ajuda do ${APP_NAME}",
+ "toGetTheMostText": "Para aproveitar ao máximo este jogo, você precisará de:",
+ "welcomeText": "Bem-vindo ao ${APP_NAME}!"
+ },
+ "holdAnyButtonText": "",
+ "holdAnyKeyText": "",
+ "hostIsNavigatingMenusText": "- ${HOST} está navegando pelos menus como se não houvesse amanhã -",
+ "importPlaylistCodeInstructionsText": "Use o seguinte código para importar essa playlist:",
+ "importPlaylistSuccessText": "Playlist '${NAME}' importada ${TYPE}",
+ "importText": "Importar",
+ "importingText": "Importando...",
+ "inGameClippedNameText": "No jogo será\n\"${NAME}\"",
+ "inboxText": "Caixa de entrada",
+ "installDiskSpaceErrorText": "ERRO: Não pôde concluir a instalação.\nVocê deve estar com pouco espaço no seu dispositivo.\nApague algumas coisas e tente novamente.",
+ "internal": {
+ "arrowsToExitListText": "aperte ${LEFT} ou ${RIGHT} para sair da lista",
+ "buttonText": "botão",
+ "cantKickHostError": "Você não pode expulsar o anfitrião.",
+ "chatBlockedText": "O chat de ${NAME} está bloqueado por ${TIME} segundo(s).",
+ "connectedToGameText": "Conectou-se a '${NAME}'",
+ "connectedToPartyText": "Entrou no grupo de ${NAME}!",
+ "connectingToPartyText": "Conectando...",
+ "connectionFailedHostAlreadyInPartyText": "A conexão falhou; anfitrião está em outro grupo.",
+ "connectionFailedPartyFullText": "Conexão falhou; o grupo está cheio.",
+ "connectionFailedText": "A conexão falhou.",
+ "connectionFailedVersionMismatchText": "A conexão falhou; anfitrião está rodando uma versão diferente do jogo.\nTenha certeza de que ambos estejam atualizados e tente novamente.",
+ "connectionRejectedText": "Conexão negada.",
+ "controllerConnectedText": "${CONTROLLER} conectado.",
+ "controllerDetectedText": "1 controle detectado.",
+ "controllerDisconnectedText": "${CONTROLLER} desconectado.",
+ "controllerDisconnectedTryAgainText": "${CONTROLLER} desconectado. Por favor, tente novamente.",
+ "controllerForMenusOnlyText": "Este controle não pode ser usado para jogar; apenas para navegar pelo menu.",
+ "controllerReconnectedText": "${CONTROLLER} reconectado.",
+ "controllersConnectedText": "${COUNT} controles conectados.",
+ "controllersDetectedText": "${COUNT} controles detectados.",
+ "controllersDisconnectedText": "${COUNT} controles desconectados.",
+ "corruptFileText": "Arquivos corrompidos detectados. Tente reinstalar o jogo ou mande um e-mail para ${EMAIL}",
+ "errorPlayingMusicText": "Erro ao tocar música: ${MUSIC}",
+ "errorResettingAchievementsText": "Não foi possível reiniciar as conquistas online; por favor, tente novamente mais tarde.",
+ "hasMenuControlText": "${NAME} possui o controle do menu.",
+ "incompatibleNewerVersionHostText": "Anfitrião do grupo está usando uma versão mais nova do jogo.\nAtualize seu jogo e tente novamente.",
+ "incompatibleVersionHostText": "Anfitrião está rodando uma versão diferente do jogo.\nTenha certeza de que ambos estejam atualizados e tente de novo.",
+ "incompatibleVersionPlayerText": "${NAME} está rodando uma versão diferente do jogo.\nTenha certeza de que ambos estejam atualizados e tente novamente.",
+ "invalidAddressErrorText": "Erro: endereço invalido.",
+ "invalidNameErrorText": "Erro: nome inválido.",
+ "invalidPortErrorText": "Erro: porta inválida.",
+ "invitationSentText": "Convite enviado.",
+ "invitationsSentText": "${COUNT} convites enviados.",
+ "joinedPartyInstructionsText": "Alguém entrou no seu grupo.\nAperte 'Jogar' para começar.",
+ "keyboardText": "Teclado",
+ "kickIdlePlayersKickedText": "Expulsando ${NAME} por não mostrar movimento.",
+ "kickIdlePlayersWarning1Text": "${NAME} será expulso em ${COUNT} segundos se continuar imóvel.",
+ "kickIdlePlayersWarning2Text": "(você pode desativar isto em Configurações-> Avançado)",
+ "leftGameText": "Saiu de '${NAME}'",
+ "leftPartyText": "Você saiu do grupo de ${NAME}.",
+ "noMusicFilesInFolderText": "A pasta não contém arquivos de música.",
+ "playerJoinedPartyText": "${NAME} entrou no grupo!",
+ "playerLeftPartyText": "${NAME} saiu do grupo.",
+ "rejectingInviteAlreadyInPartyText": "Recusando convite (já está em um grupo).",
+ "serverRestartingText": "Servidor reiniciando. Por favor, reconecte-se em um momento...",
+ "serverShuttingDownText": "Servidor está desligando...",
+ "signInErrorText": "Erro ao entrar.",
+ "signInNoConnectionText": "Não pôde entrar. (sem conexão à internet?)",
+ "telnetAccessDeniedText": "ERRO: o usuário não liberou acesso telnet.",
+ "timeOutText": "(tempo acaba em ${TIME} segundos)",
+ "touchScreenJoinWarningText": "Você entrou com o modo touchscreen.\nSe isso foi um erro, toque em 'Menu->Sair do Jogo'.",
+ "touchScreenText": "Touchscreen",
+ "unableToCompleteTryAgainText": "Não é possível concluir isso agora.\nPor favor, tente novamente.",
+ "unableToResolveHostText": "Erro: não é possível resolver a fonte do anfitrião",
+ "unavailableNoConnectionText": "Isso não está disponível agora (sem conexão à internet?)",
+ "vrOrientationResetCardboardText": "Use para reiniciar a orientação do VR.\nPara jogar, você precisa de um controle externo.",
+ "vrOrientationResetText": "Orientação do VR reiniciada.",
+ "willTimeOutText": "(o tempo acabará se ficar imóvel)"
+ },
+ "inventoryText": "Inventário",
+ "jumpBoldText": "SALTAR",
+ "jumpText": "Saltar",
+ "keepText": "Manter",
+ "keepTheseSettingsText": "Manter essas configurações?",
+ "keyboardChangeInstructionsText": "Pressione duas vezes o espaço para alterar os teclados.",
+ "keyboardNoOthersAvailableText": "Nenhum outro teclado disponível.",
+ "keyboardSwitchText": "Alterando teclado para \"${NAME}\".",
+ "kickOccurredText": "${NAME} foi expulso.",
+ "kickQuestionText": "Expulsar ${NAME}?",
+ "kickText": "Expulsar",
+ "kickVoteCantKickAdminsText": "O Administrador não pode ser expulso.",
+ "kickVoteCantKickSelfText": "Você não pode se expulsar.",
+ "kickVoteFailedNotEnoughVotersText": "Não há jogadores suficientes para uma votação.",
+ "kickVoteFailedText": "A votação para expulsão falhou.",
+ "kickVoteStartedText": "Uma votação para expulsar ${NAME} foi iniciada.",
+ "kickVoteText": "Votação para expulsar",
+ "kickVotingDisabledText": "A votação para expulsar está desativada.",
+ "kickWithChatText": "Escreva ${YES} no chat para sim e ${NO} para não.",
+ "killsTallyText": "${COUNT} abates",
+ "killsText": "Abates",
+ "kioskWindow": {
+ "easyText": "Fácil",
+ "epicModeText": "Modo Épico",
+ "fullMenuText": "Menu Completo",
+ "hardText": "Difícil",
+ "mediumText": "Médio",
+ "singlePlayerExamplesText": "Exemplos de Um jogador / Cooperativo",
+ "versusExamplesText": "Exemplos de Versus"
+ },
+ "languageSetText": "O idioma agora é \"${LANGUAGE}\".",
+ "lapNumberText": "Volta ${CURRENT}/${TOTAL}",
+ "lastGamesText": "(últimas ${COUNT} partidas)",
+ "leaderboardsText": "Classificação",
+ "league": {
+ "allTimeText": "Todos os Tempos",
+ "currentSeasonText": "Temporada atual (${NUMBER})",
+ "leagueFullText": "Liga ${NAME}",
+ "leagueRankText": "Classificação da liga",
+ "leagueText": "Liga",
+ "rankInLeagueText": "#${RANK}, ${NAME} Liga${SUFFIX}",
+ "seasonEndedDaysAgoText": "A temporada acabou ${NUMBER} dia(s) atrás.",
+ "seasonEndsDaysText": "A temporada acaba em ${NUMBER} dia(s).",
+ "seasonEndsHoursText": "A temporada acaba em ${NUMBER} hora(s).",
+ "seasonEndsMinutesText": "Temporada acaba em ${NUMBER} minuto(s).",
+ "seasonText": "Temporada ${NUMBER}",
+ "tournamentLeagueText": "Você deve alcançar a liga ${NAME} para entrar neste torneio.",
+ "trophyCountsResetText": "A contagem de troféus reiniciará na próxima temporada.",
+ "upToDateBonusDescriptionText": "Os jogadores que estiverem jogando uma versão recente do\njogo recebem um bônus de ${PERCENT}% aqui.",
+ "upToDateBonusText": "Bônus por Estar Atualizado"
+ },
+ "learnMoreText": "Saiba Mais",
+ "levelBestScoresText": "Melhores pontuações no ${LEVEL}",
+ "levelBestTimesText": "Melhores tempos no ${LEVEL}",
+ "levelIsLockedText": "${LEVEL} está bloqueado.",
+ "levelMustBeCompletedFirstText": "${LEVEL} deve ser concluído primeiro.",
+ "levelText": "Nível ${NUMBER}",
+ "levelUnlockedText": "Nível desbloqueado!",
+ "livesBonusText": "Bônus de Vida",
+ "loadingText": "carregando",
+ "loadingTryAgainText": "Carregando; tente novamente daqui a pouco...",
+ "macControllerSubsystemBothText": "Ambos (não recomendado)",
+ "macControllerSubsystemClassicText": "Clássico",
+ "macControllerSubsystemDescriptionText": "Tente ativar isso se os controles não estiverem funcionando",
+ "macControllerSubsystemMFiNoteText": "Feito para iOS/Mac controle detectado ;\nvocê pode querer ativar isso em Configurações -> Controles",
+ "macControllerSubsystemMFiText": "Feito para iOS/Mac",
+ "macControllerSubsystemTitleText": "Suporte para controle",
+ "mainMenu": {
+ "creditsText": "Créditos",
+ "demoMenuText": "Menu de demonstração",
+ "endGameText": "Terminar Jogo",
+ "endTestText": "Terminar Teste",
+ "exitGameText": "Sair do Jogo",
+ "exitToMenuText": "Sair para o menu?",
+ "howToPlayText": "Como Jogar",
+ "justPlayerText": "(Somente ${NAME})",
+ "leaveGameText": "Sair do Jogo",
+ "leavePartyConfirmText": "Deseja realmente sair do grupo?",
+ "leavePartyText": "Sair do Grupo",
+ "quitText": "Sair",
+ "resumeText": "Retomar",
+ "settingsText": "Configurações"
+ },
+ "makeItSoText": "Aplicar",
+ "mapSelectGetMoreMapsText": "Obter Mais Mapas...",
+ "mapSelectText": "Selecionar...",
+ "mapSelectTitleText": "${GAME} mapas",
+ "mapText": "Mapa",
+ "maxConnectionsText": "Limite de Conexões",
+ "maxPartySizeText": "Tamanho Máximo do Grupo",
+ "maxPlayersText": "Limite de Jogadores",
+ "merchText": "Produtos BombSquad!",
+ "modeArcadeText": "Modo Arcade",
+ "modeClassicText": "Modo Clássico",
+ "modeDemoText": "Modo Demonstração",
+ "moreSoonText": "Mais novidades em breve...",
+ "mostDestroyedPlayerText": "Player Mais Destruído",
+ "mostValuablePlayerText": "Jogador Mais Valioso",
+ "mostViolatedPlayerText": "Jogador Mais Violado",
+ "mostViolentPlayerText": "Jogador Mais Violento",
+ "moveText": "Mover",
+ "multiKillText": "MATOU ${COUNT}!!!",
+ "multiPlayerCountText": "${COUNT} jogadores",
+ "mustInviteFriendsText": "Nota: você deve convidar amigos no\npainel \"${GATHER}\" ou adicionar\ncontroles para jogar no multijogador.",
+ "nameBetrayedText": "${NAME} traiu ${VICTIM}.",
+ "nameDiedText": "${NAME} morreu.",
+ "nameKilledText": "${NAME} espancou ${VICTIM}.",
+ "nameNotEmptyText": "Nome não pode estar vazio!",
+ "nameScoresText": "${NAME} fez um ponto!",
+ "nameSuicideKidFriendlyText": "${NAME} acidentalmente morreu.",
+ "nameSuicideText": "${NAME} cometeu suicídio.",
+ "nameText": "Nome",
+ "nativeText": "Nativo",
+ "newExclaimText": "Novo!",
+ "newPersonalBestText": "Novo recorde pessoal!",
+ "newTestBuildAvailableText": "Uma nova versão de teste está disponível! (${VERSION} teste ${BUILD}).\nAdquira em ${ADDRESS}",
+ "newText": "Novo",
+ "newVersionAvailableText": "Uma nova versão de ${APP_NAME} está disponível! (${VERSION})",
+ "nextAchievementsText": "Próximas conquistas:",
+ "nextLevelText": "Próximo nível",
+ "noAchievementsRemainingText": "- nenhum",
+ "noContinuesText": "(sem continuar)",
+ "noExternalStorageErrorText": "Armazenamento externo não encontrado",
+ "noGameCircleText": "Erro: não conectado no GameCircle",
+ "noMessagesText": "Sem mensagens.",
+ "noPluginsInstalledText": "Nenhum Plugin instalado",
+ "noScoresYetText": "Ainda sem pontuação.",
+ "noServersFoundText": "Servidores não encontrados.",
+ "noThanksText": "Não, obrigado",
+ "noTournamentsInTestBuildText": "Atenção: As pontuações dos torneios desta compilação de teste serão ignoradas.",
+ "noValidMapsErrorText": "Nenhum mapa válido encontrado para este tipo de jogo.",
+ "notEnoughPlayersRemainingText": "Não há jogadores suficientes sobrando; saia e comece um novo jogo.",
+ "notEnoughPlayersText": "Você precisa de pelo menos ${COUNT} jogadores para começar o jogo!",
+ "notEnoughTicketsText": "Sem bilhetes suficientes!",
+ "notNowText": "Agora não",
+ "notSignedInErrorText": "Você deve iniciar sessão primeiro.",
+ "notSignedInGooglePlayErrorText": "Você deve iniciar sessão no Google Play primeiro.",
+ "notSignedInText": "sem sessão iniciada",
+ "notUsingAccountText": "Aviso: Ignorando a conta ${SERVICE}.\nVá em 'Conta -> Entrar com ${SERVICE}' se quiser usá-la.",
+ "nothingIsSelectedErrorText": "Nada foi selecionado!",
+ "numberText": "#${NUMBER}",
+ "offText": "Desativado",
+ "okText": "Certo",
+ "onText": "Ativado",
+ "oneMomentText": "Um Momento...",
+ "onslaughtRespawnText": "${PLAYER} vai renascer na onda ${WAVE}",
+ "openMeText": "Abra-Me!",
+ "openNowText": "Abrir Agora",
+ "openText": "Abrir",
+ "orText": "${A} ou ${B}",
+ "otherText": "Outro...",
+ "outOfText": "(#${RANK} de ${ALL})",
+ "ownFlagAtYourBaseWarning": "Sua própria bandeira deve estar\nem sua base para fazer um ponto!",
+ "partyWindow": {
+ "chatMessageText": "Mensagem do Chat",
+ "emptyText": "Seu grupo está vazio",
+ "hostText": "(anfitrião)",
+ "sendText": "Enviar",
+ "titleText": "Seu Grupo"
+ },
+ "pausedByHostText": "(pausado pelo anfitrião)",
+ "perfectWaveText": "Onda Perfeita!",
+ "pickUpText": "Pegar",
+ "playModes": {
+ "coopText": "Cooperativo",
+ "freeForAllText": "Todos contra todos",
+ "multiTeamText": "Equipes múltiplas",
+ "singlePlayerCoopText": "Um jogador / Cooperativo",
+ "teamsText": "Equipes"
+ },
+ "playText": "Jogar",
+ "playWindow": {
+ "oneToFourPlayersText": "1-4 jogadores",
+ "titleText": "Jogar",
+ "twoToEightPlayersText": "2-8 jogadores"
+ },
+ "playerCountAbbreviatedText": "${COUNT}p",
+ "playerDelayedJoinText": "${PLAYER} entrará no começo da próxima rodada.",
+ "playerInfoText": "Info. do jogador",
+ "playerLeftText": "${PLAYER} saiu da partida.",
+ "playerLimitReachedText": "Limite de ${COUNT} jogadores atingido; entrada não permitida.",
+ "playerProfilesWindow": {
+ "cantDeleteAccountProfileText": "Você não pode excluir o seu perfil.",
+ "deleteButtonText": "Excluir\nPerfil",
+ "deleteConfirmText": "Excluir '${PROFILE}'?",
+ "editButtonText": "Editar\nPerfil",
+ "explanationText": "(personalize nomes e aparências do jogador para esta conta)",
+ "newButtonText": "Novo\nPerfil",
+ "titleText": "Perfis de Jogadores"
+ },
+ "playerText": "Jogador",
+ "playlistNoValidGamesErrorText": "Esta playlist não contém nenhum jogo desbloqueado válido.",
+ "playlistNotFoundText": "playlist não encontrada",
+ "playlistText": "Playlist",
+ "playlistsText": "Playlists",
+ "pleaseRateText": "Se você está curtindo ${APP_NAME}, por favor, dê um tempinho\npara avaliar e comentar. Isso nos dá uma opinião útil\ne ajuda no desenvolvimento do jogo.\n\nobrigado!\n-eric",
+ "pleaseWaitText": "Por favor, aguarde...",
+ "pluginClassLoadErrorText": "Erro ao carregar a classe de um plugin '${PLUGIN}': ${ERROR}",
+ "pluginInitErrorText": "Erro ao inicializar plugin '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Configurações de Plugins",
+ "pluginsAutoEnableNewText": "Ativar Automaticamente Novos Plugins",
+ "pluginsDetectedText": "Novo(s) plugin(s) detetados. Reinicie o jogo para ativá-los ou configure-os nas configurações.",
+ "pluginsDisableAllText": "Desativar todos os Plugins!",
+ "pluginsEnableAllText": "Ativar todos os Plugins!",
+ "pluginsRemovedText": "${NUM} plugin(s) não foram encontrados.",
+ "pluginsText": "Plugins",
+ "practiceText": "Praticar",
+ "pressAnyButtonPlayAgainText": "Aperte qualquer botão para jogar novamente...",
+ "pressAnyButtonText": "Aperte qualquer botão para continuar...",
+ "pressAnyButtonToJoinText": "aperte qualquer botão para entrar...",
+ "pressAnyKeyButtonPlayAgainText": "Aperte qualquer tecla/botão para jogar novamente...",
+ "pressAnyKeyButtonText": "Aperte qualquer tecla/botão para continuar...",
+ "pressAnyKeyText": "Aperte qualquer tecla...",
+ "pressJumpToFlyText": "** Aperte saltar repetidamente para voar **",
+ "pressPunchToJoinText": "aperte SOCO para entrar...",
+ "pressToOverrideCharacterText": "aperte ${BUTTONS} para substituir o seu personagem",
+ "pressToSelectProfileText": "aperte ${BUTTONS} para selecionar um jogador",
+ "pressToSelectTeamText": "aperte ${BUTTONS} para selecionar uma equipe",
+ "promoCodeWindow": {
+ "codeText": "Código",
+ "enterText": "Entrar"
+ },
+ "promoSubmitErrorText": "Erro ao enviar código; Verifique a sua conexão com a internet!",
+ "ps3ControllersWindow": {
+ "macInstructionsText": "Desligue a energia na parte traseira do seu PS3, verifique se\no Bluetooth do seu Mac está ativado, em seguida conecte o seu controle\nno seu Mac através de um cabo USB para emparelhar os dois. A partir daí, você\npode usar o botão home do controle para conectá-lo ao seu Mac\nseja por fio (USB) ou sem fio (Bluetooth).\n\nEm alguns Macs, uma senha pode ser solicitada ao emparelhar.\nSe isso acontecer, consulte o seguinte tutorial ou o Google para obter ajuda.\n\n\n\n\nOs controles de PS3 conectados sem fio devem aparecer na lista de\ndispositivos em Preferências do Sistema > Bluetooth. Você pode precisar remover\nda lista quando você quiser usar com o seu PS3 novamente.\n\nTambém certifique-se de desconectá-los do Bluetooth quando não estiver\nusando ou a bateria ficará acabando.\n\nBluetooth deve suportar até sete dispositivos conectados,\nembora a sua capacidade possa variar.",
+ "ouyaInstructionsText": "Para usar um controle de PS3 com seu OUYA, basta conectá-lo com um cabo USB\numa vez para emparelhá-lo. Fazer isso pode desconectar seus outros controles, por\nisso você deve, em seguida, reiniciar seu OUYA e desconectar o cabo USB.\n\nA partir de então você deve ser capaz de usar o botão HOME do controle para\nconectá-lo sem fio. Quando você terminar de jogar, pressione o botão HOME\npor 10 segundos para desligar o controle; caso contrário, pode permanecer ligado\ne desperdiçar bateria.",
+ "pairingTutorialText": "vídeo tutorial do emparelhamento",
+ "titleText": "Usando Controles de PS3 com ${APP_NAME}:"
+ },
+ "punchBoldText": "SOCAR",
+ "punchText": "Socar",
+ "purchaseForText": "Compre por ${PRICE}",
+ "purchaseGameText": "Comprar jogo",
+ "purchaseNeverAvailableText": "Desculpe, as compras não estão disponíveis nesta versão.\nTente entrar em sua conta em outra plataforma e fazer compras nela",
+ "purchaseNotAvailableText": "Esta compra não está disponível.",
+ "purchasingText": "Comprando...",
+ "quitGameText": "Sair do ${APP_NAME}?",
+ "quittingIn5SecondsText": "Saindo em 5 segundos...",
+ "randomPlayerNamesText": "João,Maria,Anderson,Lucas,Roberto,César,Felipe,Pedro,Zézinho,Jaílson,Hélvio,Plínio,Clara,Lorena,Beatriz,Wandernilson,Marcos,Michele,Taís,Florentina,Tadeu,Teodoro,Gabriel,Joelma,Chimbinha,Lula,Dilma,Leonardo,Irene,Samanta,Gioconda,Guilhermina,Guilherme,Frederico,Bartolomeu,Dionísio,Diógenes,Haroldo,Ronaldinho,Ricardo,Selma,Bruna,Vanderlei,Danilo,Celso,Vitória,Denise,Samuel,Daniel,Gigi,Manuel,Wiz,Gretchen,Creusa,Chico,Leôncio,Leônidas,Washington,Cleusa,José,Joane,Severino,Casé,Carlos,Davi,Bianca,Clautila,Dafne,Jorge,Sandra,Armando,Basílio,Rochele,Camila,Débora,Rafael,Jonatan,Clodomiro,Clodovil,Vera,Simão,Raíssa,Toni,Tânia,Regina,Bela,Max,Maximiliano,Claudinei,Cláudio,Luciana,Anália,Aparecida,Marcelo,Flávio,Emílio,Tiago,Hebe,Ana,Beth,Gugu,Vítor,Nílton,Maurício,Marciano,Belquior,Clemente,Rosa,Rose,Rosemar,Gabriela,Sérgio,Antônio,Ben,Ivan,jamim,Abreu,Luís,Elton,Fabiana,Waldir,Wilson,Tainá,Tainara,Xuxa,Sacha,Teotônio,Téo,Valdirene,Laurindo,Priscila,Joaquim,Estevão,Gilmar,Erick,Gilson,Romário,Dunga,Ludmila,Luciano,Gilvan,Tamara,Carla,Zezé,Fernando,Fernanda,Adegesto,Acheropita,Anatalino,Lino,Araci,Marluci,Eusébio,Darcília,Dignatario,Ernesto,Cássio,Conrado,Fábio,Heitor,Ivan,Murilo,Andressa,Mateus,Otávio,Helena,Laís,Lavínia,Leila,Letícia,Nair,Henrique,Lara,Diogo,Diego,Geniclécio,Serafim,Lisa,Inri,Eusébio,Gerônimo,Bernardo,Bernadete,Henriete,Eliete,Fudêncio,Peruíbe,Tomás,Tomashedisso,Giovana,Prieto,Gabriely,Suélen,Jamily,Jamil,Geraldo,Nazareth,Forníco,Ícaro,Breno,Bruno,Cilmara,Nilza,Caio,Borges,Cleimara,Janeclécio,Iram,Tico,Teco,Genilson,Marlos,William,Nando,Nanda,Isabel,Jamal,Elias,Félix,Caroline,Carolina,Vilma,Rafaely,Tonho,Túnica,Miguel,Jones,Juan,Anastácio,Francisco,Xavier",
+ "randomText": "Aleatório",
+ "rankText": "Classificação",
+ "ratingText": "Avaliação",
+ "reachWave2Text": "Chegue a onda 2 para pontuar.",
+ "readyText": "pronto",
+ "recentText": "Recente",
+ "remoteAppInfoShortText": "${APP_NAME} é mais divertido quando é jogado com família e amigos.\nConecte um ou mais controles de hardware ou instale o aplicativo \n${REMOTE_APP_NAME} em telefones ou tablets para usá-los \ncomo controles.",
+ "remote_app": {
+ "app_name": "BombSquad Remote",
+ "app_name_short": "BSRemote",
+ "button_position": "Posição do botão",
+ "button_size": "Tamanho do botão",
+ "cant_resolve_host": "Não foi possível localizar o anfitrião.",
+ "capturing": "Aguardando...",
+ "connected": "Conectado.",
+ "description": "Use seu telefone ou tablet como controle com BombSquad.\nAté 8 dispositivos podem se conectar de uma vez para uma loucura épica de multijogador local em uma TV ou tablet.",
+ "disconnected": "Desconectado pelo servidor.",
+ "dpad_fixed": "fixo",
+ "dpad_floating": "Móvel",
+ "dpad_position": "Posição do direcional",
+ "dpad_size": "Tamanho do direcional",
+ "dpad_type": "Tipo de direcional",
+ "enter_an_address": "Insira um endereço",
+ "game_full": "A partida está cheia ou não aceita conexões.",
+ "game_shut_down": "A partida foi fechada.",
+ "hardware_buttons": "Botões físicos",
+ "join_by_address": "Entrar por endereço...",
+ "lag": "Lag: ${SECONDS} segundos",
+ "reset": "Restaurar padrão",
+ "run1": "Correr 1",
+ "run2": "Correr 2",
+ "searching": "Procurando partidas...",
+ "searching_caption": "Clique em uma partida para entrar.\nVeja se está na mesma rede Wi-Fi do jogo.",
+ "start": "Iniciar",
+ "version_mismatch": "Versão incompatível.\nCertifique-se que o BombSquad e o BombSquad Remote\nestão atualizados e tente novamente."
+ },
+ "removeInGameAdsText": "Desbloqueie \"${PRO}\" na loja para remover anúncios dentro do jogo.",
+ "removeInGameAdsTokenPurchaseText": "OFERTA POR TEMPO LIMITADO: Compre QUALQUER pacote de tokens para remover anúncios no jogo.",
+ "renameText": "Renomear",
+ "replayEndText": "Terminar replay",
+ "replayNameDefaultText": "Replay do último jogo",
+ "replayReadErrorText": "Erro ao ler arquivo de replay.",
+ "replayRenameWarningText": "Renomeie \"${REPLAY}\" após uma partida caso queira salvá-lo; caso contrário será sobrescrito.",
+ "replayVersionErrorText": "Desculpe, este replay foi feito em uma versão\ndiferente do jogo e não pode ser usado.",
+ "replayWatchText": "Ver replay",
+ "replayWriteErrorText": "Erro ao gravar arquivo de replay.",
+ "replaysText": "Replays",
+ "reportPlayerExplanationText": "Use este e-mail para denunciar trapaças, linguagem inapropriada, ou outro comportamento ruim.\nPor favor, descreva abaixo:",
+ "reportThisPlayerCheatingText": "Trapaça",
+ "reportThisPlayerLanguageText": "Linguagem inapropriada",
+ "reportThisPlayerReasonText": "O que gostaria de denunciar?",
+ "reportThisPlayerText": "Denunciar este jogador",
+ "requestingText": "Solicitando...",
+ "restartText": "Reiniciar",
+ "retryText": "Tentar novamente",
+ "revertText": "Reverter",
+ "runText": "Correr",
+ "saveText": "Salvar",
+ "scanScriptsErrorText": "Erro(s) de verificação de scripts; consulte o registro para obter mais detalhes.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} e ${NUM} e outro(s) módulo(s) precisam de atualizações paro o api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} precisa ser atualizado para api${API}.",
+ "scoreChallengesText": "Desafios de Pontuação",
+ "scoreListUnavailableText": "Lista de pontuação indisponível.",
+ "scoreText": "Pontuação",
+ "scoreUnits": {
+ "millisecondsText": "Milisegundos",
+ "pointsText": "Pontos",
+ "secondsText": "Segundos"
+ },
+ "scoreWasText": "(foi ${COUNT})",
+ "selectText": "Selecionar",
+ "sendInfoDescriptionText": "Isto envia informações de sua conta e de estado de aplicativo para o desenvolvedor.\nPor favor inclua seu nome ou razão por ter feito isso.",
+ "seriesWinLine1PlayerText": "VENCEU A",
+ "seriesWinLine1TeamText": "VENCEU A",
+ "seriesWinLine1Text": "VENCEU A",
+ "seriesWinLine2Text": "SÉRIE!",
+ "settingsWindow": {
+ "accountText": "Conta",
+ "advancedText": "Avançado",
+ "audioText": "Áudio",
+ "controllersText": "Controles",
+ "graphicsText": "Gráficos",
+ "playerProfilesMovedText": "Nota: os perfis de jogador foram movidos à janela de Conta no menu principal.",
+ "titleText": "Configurações"
+ },
+ "settingsWindowAdvanced": {
+ "alwaysUseInternalKeyboardDescriptionText": "(um simples teclado virtual compatível com controles para edição de texto)",
+ "alwaysUseInternalKeyboardText": "Sempre usar o teclado interno",
+ "benchmarksText": "Benchmarks e Testes de Estresse",
+ "devToolsText": "Ferramentas de Desenvolvedor",
+ "disableCameraGyroscopeMotionText": "Desativar movimento giroscópio da câmera",
+ "disableCameraShakeText": "Desativar tremida de câmera",
+ "disableThisNotice": "(você pode desativar este aviso em configurações avançadas)",
+ "enterPromoCodeText": "Inserir Código",
+ "forTestingText": "Nota: esses valores são somente para teste e serão perdidos assim que o aplicativo for fechado.",
+ "helpTranslateText": "As traduções do ${APP_NAME} são sustentadas pelo esforço\npúblico da comunidade. Se você gostaria de ajudar ou corrigir\numa tradução, siga o link a abaixo. Agradeço desde já!",
+ "insecureConnectionsDescriptionText": "não recomendado, mas talvez permita você poder jogar online\nde países ou redes restritas",
+ "insecureConnectionsText": "Usar conexões inseguras",
+ "kickIdlePlayersText": "Expulsar jogadores inativos",
+ "kidFriendlyModeText": "Modo para crianças (violência reduzida, etc)",
+ "languageText": "Idioma",
+ "moddingGuideText": "Guia para Modificar o Jogo",
+ "moddingToolsText": "Ferramentas de Modificação",
+ "mustRestartText": "Você deve reiniciar o jogo para isso ter efeito.",
+ "netTestingText": "Teste de Conexão",
+ "resetText": "Redefinir",
+ "sendInfoText": "Enviar Informação",
+ "showBombTrajectoriesText": "Mostrar trajetórias da bomba",
+ "showDemosWhenIdleText": "Mostrar demonstrações quando ocioso",
+ "showDeprecatedLoginTypesText": "Mostrar tipos de logins ultrapassados",
+ "showDevConsoleButtonText": "Mostrar opção de desenvolvedor",
+ "showInGamePingText": "Mostrar latência no jogo",
+ "showPlayerNamesText": "Mostrar nomes dos jogadores",
+ "showUserModsText": "Mostrar Caminho da Pasta de Modificações",
+ "titleText": "Avançado",
+ "translationEditorButtonText": "Abrir site de Traduções do ${APP_NAME}",
+ "translationFetchErrorText": "estado da tradução indisponível",
+ "translationFetchingStatusText": "verificando estado da tradução...",
+ "translationInformMe": "Avise me quando meu idioma precisar de atualizações",
+ "translationNoUpdateNeededText": "o seu idioma está atualizado; woohoo!",
+ "translationUpdateNeededText": "** o seu idioma precisa de atualizações!! **",
+ "vrTestingText": "Teste de RV"
+ },
+ "shareText": "Compartilhar",
+ "sharingText": "Compartilhando...",
+ "showText": "Mostrar",
+ "signInForPromoCodeText": "Você deve iniciar sia sessão em uma conta para que os códigos promocionais funcionem.",
+ "singleGamePlaylistNameText": "Somente ${GAME}",
+ "singlePlayerCountText": "1 jogador",
+ "sizeLargeText": "Grande",
+ "sizeMediumText": "Médio",
+ "sizeSmallText": "Pequeno",
+ "soloNameFilterText": "Solo ${NAME}",
+ "soundtrackTypeNames": {
+ "CharSelect": "Seleção de personagens",
+ "Chosen One": "O Escolhido",
+ "Epic": "Partidas no modo épico",
+ "Epic Race": "Corrida épica",
+ "FlagCatcher": "Capture a bandeira",
+ "Flying": "Pensamentos felizes",
+ "Football": "Futebol americano",
+ "ForwardMarch": "Assalto",
+ "GrandRomp": "Conquista",
+ "Hockey": "Hóquei",
+ "Keep Away": "Fique longe",
+ "Marching": "Casa dos degrais",
+ "Menu": "Menu principal",
+ "Onslaught": "Embate",
+ "Race": "Corrida",
+ "Scary": "Rei da Colina",
+ "Scores": "Tela de pontuação",
+ "Survival": "Eliminatória",
+ "ToTheDeath": "Mata-mata",
+ "Victory": "Tela de Pontuação Final"
+ },
+ "spaceKeyText": "espaço",
+ "statsText": "Estatísticas",
+ "stopRemindingMeText": "Pare de me lembrar",
+ "storagePermissionAccessText": "É necessário acesso ao armazenamento",
+ "store": {
+ "alreadyOwnText": "Você já possui ${NAME}!",
+ "bombSquadProNameText": "${APP_NAME} Pro",
+ "bombSquadProNewDescriptionText": "• Remove anúncios no jogo\n• Desbloqueia mais opções do jogo\n• E também inclui:",
+ "buyText": "Comprar",
+ "charactersText": "Personagens",
+ "comingSoonText": "Em breve...",
+ "extrasText": "Extras",
+ "holidaySpecialText": "Especial de feriado",
+ "howToSwitchCharactersText": "(vá para \"${SETTINGS} -> ${PLAYER_PROFILES}\" para atribuir e personalizar personagens)",
+ "howToUseIconsText": "(crie perfis globais - na janela de conta - para usá-los)",
+ "howToUseMapsText": "(use estes mapas em suas próprias playlist de equipes/todos contra todos)",
+ "iconsText": "Ícones",
+ "loadErrorText": "Não foi possível carregar a página.\nVerifique a sua conexão com a internet.",
+ "loadingText": "carregando",
+ "mapsText": "Mapas",
+ "miniGamesText": "Minijogos",
+ "oneTimeOnlyText": "(somente uma vez)",
+ "purchaseAlreadyInProgressText": "A compra deste item já está em progresso.",
+ "purchaseConfirmText": "Comprar ${ITEM}?",
+ "purchaseNotValidError": "A compra não é valida.\nEntre em contato com ${EMAIL} se isso foi um erro.",
+ "purchaseText": "Comprar",
+ "saleBundleText": "Venda de pacotes!",
+ "saleExclaimText": "Promoção!",
+ "salePercentText": "(${PERCENT}% de desconto)",
+ "saleText": "PROMOÇÃO",
+ "searchText": "Buscar",
+ "teamsFreeForAllGamesText": "Jogos em equipes / Todos contra todos",
+ "totalWorthText": "*** Apenas ${TOTAL_WORTH}! ***",
+ "upgradeQuestionText": "Atualizar?",
+ "winterSpecialText": "Especial de Inverno",
+ "youOwnThisText": "- você tem isso -"
+ },
+ "storeDescriptionText": "Loucura total com até 8 jogadores!\n\nExploda seus amigos (ou o computador) em um torneio de minijogos desafiadores como Capture a bandeira, Hóquei bombástico e Mata-mata em câmera lenta épica!\n\nControles normais e controles externos possibilitam jogar com até 8 pessoas no mesmo aparelho; você também pode usar outros aparelhos como controles externos usando o aplicativo grátis ‘BombSquad Remote’!\n\nCuidado com as bombas!\n\nDê uma olhada em www.froemling.net/bombsquad para ficar ligado nas novidades.",
+ "storeDescriptions": {
+ "blowUpYourFriendsText": "Exploda seus amigos.",
+ "competeInMiniGamesText": "Compita em minijogos que vão de corridas a voos.",
+ "customize2Text": "Personalize personagens, minijogos e até mesmo a trilha sonora.",
+ "customizeText": "Personalize personagens e crie sua própria playlist de minijogos.",
+ "sportsMoreFunText": "Esportes são mais divertidos com explosivos.",
+ "teamUpAgainstComputerText": "Una-se a outros contra o computador."
+ },
+ "storeText": "Loja",
+ "submitText": "Enviar",
+ "submittingPromoCodeText": "Enviando código promocional...",
+ "successText": "Sucesso!",
+ "supportEmailText": "Se estiver passando por problemas com o aplicativo, \nenvie um e-mail para ${EMAIL}.",
+ "teamNamesColorText": "Nome/Cores das Equipes...",
+ "telnetAccessGrantedText": "Acesso ao Telnet ativado.",
+ "telnetAccessText": "Acesso ao Telnet detectado; permitir?",
+ "testBuildErrorText": "Esta versão de teste não é mais compatível; por favor, confira uma nova versão.",
+ "testBuildText": "Versão de Teste",
+ "testBuildValidateErrorText": "Não foi possível validar esta versão. (sem conexão com a internet?)",
+ "testBuildValidatedText": "Versão de Teste Validada; Divirta-se!",
+ "thankYouText": "Obrigado pelo seu apoio! Aproveite o jogo!!",
+ "threeKillText": "MATOU TRÊS!!",
+ "ticketsDescriptionText": "Os bilhetes podem ser usados para desbloquear personagens,\nmapas, minijogos e muito mais na loja.\n\nOs bilhetes podem ser encontrados em baús obtidos através\nde campanhas, torneios e conquistas.",
+ "timeBonusText": "Bônus de tempo",
+ "timeElapsedText": "Tempo Decorrido",
+ "timeExpiredText": "Tempo Expirado",
+ "timeSuffixDaysText": "${COUNT}d",
+ "timeSuffixHoursText": "${COUNT}h",
+ "timeSuffixMinutesText": "${COUNT}m",
+ "timeSuffixSecondsText": "${COUNT}s",
+ "tipText": "Dica",
+ "titleText": "BombSquad",
+ "titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Obter tokens",
+ "notEnoughTokensText": "Não há Tokens suficientes!",
+ "numTokensText": "${COUNT} Tokens",
+ "openNowDescriptionText": "Você possui tokens suficientes\npara abri-lo agora - você não\nprecisa esperar.",
+ "shinyNewCurrencyText": "A nova moeda brilhante do BombSquad.",
+ "tokenPack1Text": "Pacote de tokens pequenos",
+ "tokenPack2Text": "Pacote de tokens médio",
+ "tokenPack3Text": "Pacote Grande de Tokens",
+ "tokenPack4Text": "Pacote de Tokens Jumbo",
+ "tokensDescriptionText": "Os tokens são usados para acelerar a abertura de baús\ne para outros recursos do jogo e da conta.\n\nVocê pode ganhar tokens no jogo ou comprá-los\nem pacotes. Ou adquira um Gold Pass para tokens infinitos\ne nunca mais se preocupe com eles.",
+ "youHaveGoldPassText": "Você tem um Passe Dourado.\nTodas as compras de tokens são gratuitas.\nAproveite!"
+ },
+ "topFriendsText": "Melhores amigos",
+ "tournamentCheckingStateText": "Verificando o estado do torneio; espere um momento...",
+ "tournamentEndedText": "Este torneio foi finalizado. Um novo começará em breve.",
+ "tournamentEntryText": "Entrada para o torneio",
+ "tournamentFinalStandingsText": "Classificação final",
+ "tournamentResultsRecentText": "Resultados recentes do torneio.",
+ "tournamentStandingsText": "Classificação do torneio",
+ "tournamentText": "Torneio",
+ "tournamentTimeExpiredText": "O tempo do torneio expirou.",
+ "tournamentsDisabledWorkspaceText": "Os torneios são desabilitados quando os espaços de trabalho estão ativos.\nPara reativar os torneios, desative seu espaço de trabalho e reinicie.",
+ "tournamentsText": "Torneios",
+ "translations": {
+ "characterNames": {
+ "Agent Johnson": "Agente Johnson",
+ "B-9000": "B-9000",
+ "Bernard": "Bernardo",
+ "Bones": "Ossos",
+ "Butch": "Butch",
+ "Easter Bunny": "Coelho da Páscoa",
+ "Flopsy": "Flopsy",
+ "Frosty": "Frosty",
+ "Gretel": "Gretel",
+ "Grumbledorf": "Grumboldor",
+ "Jack Morgan": "Jack Morgan",
+ "Kronk": "Kronk",
+ "Lee": "Lee",
+ "Lucky": "Lucky",
+ "Mel": "Mel",
+ "Middle-Man": "Homenzinho",
+ "Minimus": "Minimus",
+ "Pascal": "Pascal",
+ "Pixel": "Pixel",
+ "Sammy Slam": "Sammy Slam",
+ "Santa Claus": "Papai Noel",
+ "Snake Shadow": "Serpente Sombria",
+ "Spaz": "Spaz",
+ "Taobao Mascot": "Mascote Taobao",
+ "Todd McBurton": "Todd McBurton",
+ "Zoe": "Zoe",
+ "Zola": "Zola"
+ },
+ "coopLevelNames": {
+ "${GAME} Training": "Treinamento de ${GAME}",
+ "Infinite ${GAME}": "${GAME} Infinito",
+ "Infinite Onslaught": "Embate Infinito",
+ "Infinite Runaround": "Evasiva Infinita",
+ "Onslaught Training": "Embate Treinamento",
+ "Pro ${GAME}": "${GAME} Pro",
+ "Pro Football": "Futebol americano Pro",
+ "Pro Onslaught": "Embate Pro",
+ "Pro Runaround": "Evasiva Pro",
+ "Rookie ${GAME}": "${GAME} Amador",
+ "Rookie Football": "Futebol Americano Amador",
+ "Rookie Onslaught": "Embate Amador",
+ "The Last Stand": "O Sobrevivente",
+ "Uber ${GAME}": "${GAME} Elite",
+ "Uber Football": "Futebol Americano Elite",
+ "Uber Onslaught": "Embate Elite",
+ "Uber Runaround": "Evasiva Elite"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} Bilhetes",
+ "${C} Tokens": "${C} Tokens",
+ "Chest": "Baú",
+ "L1 Chest": "Baú L1",
+ "L2 Chest": "Baú L2",
+ "L3 Chest": "Baú L3",
+ "L4 Chest": "Baú L4",
+ "L5 Chest": "Baú L5",
+ "L6 Chest": "Baú L6",
+ "Unknown Chest": "Baú Desconhecido"
+ },
+ "gameDescriptions": {
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Seja o escolhido por um período de tempo para vencer.\nElimine o escolhido para se tornar ele.",
+ "Bomb as many targets as you can.": "Bombardeie o máximo de alvos que você puder.",
+ "Carry the flag for ${ARG1} seconds.": "Carregue a bandeira por ${ARG1} segundos.",
+ "Carry the flag for a set length of time.": "Carregue a bandeira por um tempo determinado.",
+ "Crush ${ARG1} of your enemies.": "Esmague ${ARG1} de seus inimigos.",
+ "Defeat all enemies.": "Derrote todos inimigos.",
+ "Dodge the falling bombs.": "Esquive das bombas caindo.",
+ "Final glorious epic slow motion battle to the death.": "Épica gloriosa batalha final até a morte em câmera lenta.",
+ "Gather eggs!": "Recolha os ovos!",
+ "Get the flag to the enemy end zone.": "Pegue a bandeira no final da zona inimiga.",
+ "How fast can you defeat the ninjas?": "Quão rápido você pode derrotar os ninjas?",
+ "Kill a set number of enemies to win.": "Mate um determinado número de inimigos para vencer.",
+ "Last one standing wins.": "Último em pé vence.",
+ "Last remaining alive wins.": "Último sobrevivente vence.",
+ "Last team standing wins.": "Última equipe de pé vence.",
+ "Prevent enemies from reaching the exit.": "Impeça que os inimigos alcancem a saída.",
+ "Reach the enemy flag to score.": "Alcance a bandeira inimiga para marcar.",
+ "Return the enemy flag to score.": "Retorne a bandeira inimiga para marcar.",
+ "Run ${ARG1} laps.": "Corra ${ARG1} voltas.",
+ "Run ${ARG1} laps. Your entire team has to finish.": "Corra ${ARG1} voltas. Toda a sua equipe precisa terminar.",
+ "Run 1 lap.": "Corra 1 volta.",
+ "Run 1 lap. Your entire team has to finish.": "Corra 1 volta. Toda a sua equipe precisa terminar.",
+ "Run real fast!": "Corra muito rápido!",
+ "Score ${ARG1} goals.": "Marque ${ARG1} gols.",
+ "Score ${ARG1} touchdowns.": "Marque ${ARG1} touchdowns.",
+ "Score a goal.": "Marque um gol.",
+ "Score a touchdown.": "Marque um touchdown.",
+ "Score some goals.": "Marque alguns gols.",
+ "Secure all ${ARG1} flags.": "Proteja todas as ${ARG1} bandeiras.",
+ "Secure all flags on the map to win.": "Proteja todas as bandeiras no mapa para vencer.",
+ "Secure the flag for ${ARG1} seconds.": "Proteja a bandeira por ${ARG1} segundos.",
+ "Secure the flag for a set length of time.": "Proteja a bandeira por um determinado período de tempo.",
+ "Steal the enemy flag ${ARG1} times.": "Roube a bandeira do inimigo ${ARG1} vezes.",
+ "Steal the enemy flag.": "Roube a bandeira do inimigo.",
+ "There can be only one.": "Só pode existir um.",
+ "Touch the enemy flag ${ARG1} times.": "Toque a bandeira inimiga ${ARG1} vezes.",
+ "Touch the enemy flag.": "Toque a bandeira inimiga.",
+ "carry the flag for ${ARG1} seconds": "carregue a bandeira por ${ARG1} segundos",
+ "kill ${ARG1} enemies": "mate ${ARG1} inimigos",
+ "last one standing wins": "último em pé vence",
+ "last team standing wins": "última equipe de pé vence",
+ "return ${ARG1} flags": "retorne ${ARG1} bandeiras.",
+ "return 1 flag": "retorne 1 bandeira",
+ "run ${ARG1} laps": "corra ${ARG1} voltas",
+ "run 1 lap": "corra 1 volta",
+ "score ${ARG1} goals": "marque ${ARG1} gols",
+ "score ${ARG1} touchdowns": "marque ${ARG1} touchdowns",
+ "score a goal": "marque um gol",
+ "score a touchdown": "marque um touchdown",
+ "secure all ${ARG1} flags": "Proteja todas ${ARG1} bandeiras",
+ "secure the flag for ${ARG1} seconds": "Proteja a bandeira por ${ARG1} segundos",
+ "touch ${ARG1} flags": "toque ${ARG1} bandeiras",
+ "touch 1 flag": "toque uma bandeira"
+ },
+ "gameNames": {
+ "Assault": "Assalto",
+ "Capture the Flag": "Capture a Bandeira",
+ "Chosen One": "O Escolhido",
+ "Conquest": "Conquista",
+ "Death Match": "Mata-mata",
+ "Easter Egg Hunt": "Caça aos ovos de Páscoa",
+ "Elimination": "Eliminatória",
+ "Football": "Futebol americano",
+ "Hockey": "Hóquei",
+ "Keep Away": "Fique longe",
+ "King of the Hill": "Rei da colina",
+ "Meteor Shower": "Chuva de meteoros",
+ "Ninja Fight": "Luta ninja",
+ "Onslaught": "Embate",
+ "Race": "Corrida",
+ "Runaround": "Evasiva",
+ "Target Practice": "Treino de Alvo",
+ "The Last Stand": "O Sobrevivente"
+ },
+ "inputDeviceNames": {
+ "Keyboard": "Teclado",
+ "Keyboard P2": "Teclado P2"
+ },
+ "languages": {
+ "Arabic": "Árabe",
+ "Belarussian": "Bielorrusso",
+ "Chinese": "Chinês - Simplificado ",
+ "ChineseSimplified": "Chinês - Simplificado",
+ "ChineseTraditional": "Chinês - Tradicional",
+ "Croatian": "Croata",
+ "Czech": "Tcheco",
+ "Danish": "Dinamarquês",
+ "Dutch": "Holandês",
+ "English": "Inglês",
+ "Esperanto": "Esperanto",
+ "Filipino": "Filipino",
+ "Finnish": "Finlandês",
+ "French": "Francês",
+ "German": "Alemão",
+ "Gibberish": "Embromation",
+ "Greek": "Grego",
+ "Hindi": "Hindu",
+ "Hungarian": "Húngaro",
+ "Indonesian": "Indonésio",
+ "Italian": "Italiano",
+ "Japanese": "Japonês",
+ "Korean": "Coreano",
+ "Malay": "Malaio",
+ "Persian": "Persa",
+ "PirateSpeak": "Piratês",
+ "Polish": "Polonês",
+ "Portuguese": "Português",
+ "PortugueseBrazil": "Português - Brasil",
+ "PortuguesePortugal": "Português - Portugal",
+ "Romanian": "Romeno",
+ "Russian": "Russo",
+ "Serbian": "Sérvio",
+ "Slovak": "Eslovaco",
+ "Spanish": "Espanhol",
+ "SpanishLatinAmerica": "Espanhol - América Latina",
+ "SpanishSpain": "Espanhol - Espanha",
+ "Swedish": "Sueco",
+ "Tamil": "tâmil",
+ "Thai": "Tailandês",
+ "Turkish": "Turco",
+ "Ukrainian": "Ucraniano",
+ "Venetian": "Veneziano",
+ "Vietnamese": "Vietnamita"
+ },
+ "leagueNames": {
+ "Bronze": "Bronze",
+ "Diamond": "Diamante",
+ "Gold": "Ouro",
+ "Silver": "Prata"
+ },
+ "mapsNames": {
+ "Big G": "Grande G",
+ "Bridgit": "Bridgit",
+ "Courtyard": "Pátio",
+ "Crag Castle": "Castelo Crag",
+ "Doom Shroom": "Cogumelo da Morte",
+ "Football Stadium": "Estádio de Futebol",
+ "Happy Thoughts": "Pensamentos felizes",
+ "Hockey Stadium": "Estádio de hóquei",
+ "Lake Frigid": "Lago Frígido",
+ "Monkey Face": "Cara de macaco",
+ "Rampage": "Tumulto",
+ "Roundabout": "Evasiva",
+ "Step Right Up": "Degrau acima",
+ "The Pad": "The Pad",
+ "Tip Top": "Tip Top",
+ "Tower D": "Torre D",
+ "Zigzag": "Ziguezague"
+ },
+ "playlistNames": {
+ "Just Epic": "Somente épico",
+ "Just Sports": "Somente esportes"
+ },
+ "scoreNames": {
+ "Flags": "Bandeiras",
+ "Goals": "Gols",
+ "Score": "Placar",
+ "Survived": "Sobreviveu",
+ "Time": "Tempo",
+ "Time Held": "Tempo realizado"
+ },
+ "serverResponses": {
+ "A code has already been used on this account.": "Um código já está sendo usado nesta conta.",
+ "A reward has already been given for that address.": "Uma recompensa já foi dada para este endereço.",
+ "Account linking successful!": "A conta foi vinculada com êxito!",
+ "Account unlinking successful!": "Conta desvinculada com êxito!",
+ "Accounts are already linked.": "As contas já estão vinculadas.",
+ "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Não foi possível verificar a visualização do anúncio.\nCertifique-se de que está executando uma versão oficial e atualizada do jogo.",
+ "An error has occurred; (${ERROR})": "Ocorreu um erro; (${ERROR})",
+ "An error has occurred; please contact support. (${ERROR})": "Ocorreu um erro; entre em contato com a assistência. (${ERROR})",
+ "An error has occurred; please contact support@froemling.net.": "Ocorreu um erro; por favor, entre em contato com support@froemling.net.",
+ "An error has occurred; please try again later.": "Aconteceu um erro; tente novamente mais tarde.",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Tem certeza de que deseja vincular estas contas?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nIsso não poderá ser desfeito!",
+ "BombSquad Pro unlocked!": "BombSquado Pro desbloqueado!",
+ "Can't link 2 accounts of this type.": "Não é possível vincular duas contas deste tipo.",
+ "Can't link 2 diamond league accounts.": "Não é possível vincular duas contas de liga diamante.",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "Impossível vincular; ultrapassaria o máximo de ${COUNT} contas vinculadas.",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Trapaça detectada; pontuação e prêmios suspensos por ${COUNT} dias.",
+ "Could not establish a secure connection.": "Não foi possível estabelecer uma conexão segura.",
+ "Daily maximum reached.": "Máximo diário atingido.",
+ "Daily sign-in reward": "Recompensa de inscrição diária",
+ "Entering tournament...": "Entrando no torneio...",
+ "Invalid code.": "Código invalido.",
+ "Invalid payment; purchase canceled.": "Pagamento inválido; compra cancelada.",
+ "Invalid promo code.": "Código promocional invalido.",
+ "Invalid purchase.": "Compra inválida.",
+ "Invalid tournament entry; score will be ignored.": "Entrada errada de treinamento; pontuação será ignorada.",
+ "Item unlocked!": "Item unlocked",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "VINCULAÇÃO NEGADA. ${ACCOUNT} contém\ndados significativos que TODOS SERÃO PERDIDOS.\nVocê pode vincular na ordem oposta se desejar\n(e em vez disso perca os dados desta conta)",
+ "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Vincular conta ${ACCOUNT} com essa conta?\nTodo o progresso em ${ACCOUNT} será perdido.\nIsso não pode ser desfeito. Tem certeza?",
+ "Longer streaks lead to better rewards.": "Sequências mais longas levam a recompensas melhores.",
+ "Max number of playlists reached.": "Número máximo de playlists alcançado.",
+ "Max number of profiles reached.": "Número máximo de perfis alcançado.",
+ "Maximum friend code rewards reached.": "Máximo de recompensas de códigos de amigos atingido.",
+ "Message is too long.": "A mensagem é muito longa.",
+ "New tournament result!": "Novo resultado do torneio!",
+ "No servers are available. Please try again soon.": "Nenhum servidor está disponível. Por favor, tente novamente mais tarde.",
+ "No slots available. Free a slot and try again.": "Nenhum slot disponível. Libere um slot e tente novamente.",
+ "Profile \"${NAME}\" upgraded successfully.": "Perfil \"${NAME}\" atualizado com sucesso.",
+ "Profile could not be upgraded.": "Perfil não pôde ser criado.",
+ "Purchase successful!": "Compra feita com êxito!",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Recebeu ${COUNT} tickets por entrar.\nVolte amanhã para receber ${TOMORROW_COUNT}.",
+ "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "A funcionalidade do servidor não é mais compatível nesta versão do jogo;\nPor favor, atualize-o para uma versão mais recente.",
+ "Sorry, there are no uses remaining on this code.": "Desculpe, não há mais usos remanescentes neste código.",
+ "Sorry, this code has already been used.": "Desculpe, este código já foi usado.",
+ "Sorry, this code has expired.": "Desculpe, este código já expirou.",
+ "Sorry, this code only works for new accounts.": "Desculpe, este código só funciona para novas contas.",
+ "Sorry, this has expired.": "Desculpe, isso expirou.",
+ "Still searching for nearby servers; please try again soon.": "Ainda à procura por servidores próximos; tente novamente mais tarde.",
+ "Streak: ${NUM} days": "Sequência: ${NUM} dias",
+ "Temporarily unavailable; please try again later.": "Não disponível; por favor, tente novamente mais tarde.",
+ "The tournament ended before you finished.": "O torneio acabou antes de você terminar.",
+ "This account cannot be unlinked for ${NUM} days.": "Esta conta não pode ser desvinculada por ${NUM} dias.",
+ "This code cannot be used on the account that created it.": "Este código não pode ser usado pela conta que o criou.",
+ "This is currently unavailable; please try again later.": "Isso está atualmente indisponível; por favor tente mais tarde.",
+ "This requires version ${VERSION} or newer.": "Isso requer a versão ${VERSION} ou novo.",
+ "Tournaments disabled due to rooted device.": "Torneios desativados devido ao dispositivo estar rooteado.",
+ "Tournaments require ${VERSION} or newer": "Torneios requerem ${VERSION} ou mais recente",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Desvincular ${ACCOUNT} dessa conta?\nTodo o progresso em ${ACCOUNT} será reiniciado.\n(exceto por conquistas em alguns casos)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ATENÇÃO: denúncias sobre você estar usando hack foram feitas.\nContas que usam hack serão banidas. Por favor, jogue limpo.",
+ "Wait reduced!": "Tempo de espera reduzido!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Aviso: Esta versão do jogo é limitada a dados da conta antigos; algumas coisas podem aparecer ausentes ou desatualizadas.\nPor favor atualize para uma versão mais nova do jogo para ver os dados mais recentes da sua conta.",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Gostaria de vincular a sua conta de dispositivo com esta?\n\nA sua conta de dispositivo é ${ACCOUNT1}\nEsta conta é ${ACCOUNT2}\n\nIsso permitirá que você mantenha seu progresso atual.\nAviso: isso não pode ser desfeito!",
+ "You already own this!": "Você já possui isso.",
+ "You can join in ${COUNT} seconds.": "Você poderá entrar em ${COUNT} segundos",
+ "You don't have enough tickets for this!": "Você não tem bilhetes suficientes para isso!",
+ "You don't own that.": "Você não comprou isso.",
+ "You got ${COUNT} tickets!": "Você obteve ${COUNT} tickets!",
+ "You got ${COUNT} tokens!": "Você ganhou ${COUNT} tokens!",
+ "You got a ${ITEM}!": "Você ganhou ${ITEM}!",
+ "You got a chest!": "Você ganhou um baú!",
+ "You got an achievement reward!": "Você ganhou uma recompensa por conquista!",
+ "You have been promoted to a new league; congratulations!": "Você foi promovido a uma nova liga; parabéns!",
+ "You lost a chest! (All your chest slots were full)": "Você perdeu um baú! (Todos os seus espaços de baú estavam cheios)",
+ "You must update the app to view this.": "Você deve atualizar o aplicativo para visualizar isso.",
+ "You must update to a newer version of the app to do this.": "Você deve atualizar para uma nova versão do aplicativo para fazer isso.",
+ "You must update to the newest version of the game to do this.": "Você deve atualizar para a nova versão do jogo para fazer isso.",
+ "You must wait a few seconds before entering a new code.": "Você deve esperar alguns segundos antes de inserir um novo código.",
+ "You placed #${RANK} in a tournament!": "Você ficou com #${RANK} em um torneio!",
+ "You ranked #${RANK} in the last tournament. Thanks for playing!": "Você teve a classificação #${RANK} no último torneio. Obrigado por jogar!",
+ "Your account was rejected. Are you signed in?": "Sua conta foi rejeitada. Você iniciou a sessão?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Suas visualizações de anúncio não estão registrando. As opções de anúncio serão limitadas por um tempo.",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Sua copia do jogo foi modificada.\nReverta as modificações e tente novamente.",
+ "Your friend code was used by ${ACCOUNT}": "Seu código de amigo foi usado por ${ACCOUNT}"
+ },
+ "settingNames": {
+ "1 Minute": "1 minuto",
+ "1 Second": "1 segundo",
+ "10 Minutes": "10 minutos",
+ "2 Minutes": "2 minutos",
+ "2 Seconds": "2 segundos",
+ "20 Minutes": "20 minutos",
+ "4 Seconds": "4 segundos",
+ "5 Minutes": "5 minutos",
+ "8 Seconds": "8 segundos",
+ "Allow Negative Scores": "Permitir Pontuação Negativa",
+ "Balance Total Lives": "Saldo Total de Vidas",
+ "Bomb Spawning": "Bombas Surgindo",
+ "Chosen One Gets Gloves": "O escolhido obtém luvas",
+ "Chosen One Gets Shield": "O escolhido obtém escudo",
+ "Chosen One Time": "Hora do Escolhido",
+ "Enable Impact Bombs": "Ativar bombas de impacto",
+ "Enable Triple Bombs": "Ativar tribombas",
+ "Entire Team Must Finish": "A equipe inteira precisa terminar",
+ "Epic Mode": "Modo Épico",
+ "Flag Idle Return Time": "Tempo para Retornar a Bandeira Inativa",
+ "Flag Touch Return Time": "Tempo para Retornar a Bandeira",
+ "Hold Time": "Tempo de retenção",
+ "Kills to Win Per Player": "Mortes para Ganhar Por Jogador",
+ "Laps": "Voltas",
+ "Lives Per Player": "Vidas por jogador",
+ "Long": "Longo",
+ "Longer": "Mais longo",
+ "Mine Spawning": "Minas surgindo",
+ "No Mines": "Sem minas",
+ "None": "Nenhum",
+ "Normal": "Normal",
+ "Pro Mode": "Modo Pro",
+ "Respawn Times": "Contagem de Renascimentos",
+ "Score to Win": "Pontuação para Ganhar",
+ "Short": "Curto",
+ "Shorter": "Mais curto",
+ "Solo Mode": "Modo Solo",
+ "Target Count": "Número de Alvos",
+ "Time Limit": "Limite de Tempo"
+ },
+ "statements": {
+ "${TEAM} is disqualified because ${PLAYER} left": "${TEAM} está em desvantagem porque ${PLAYER} saiu",
+ "Killing ${NAME} for skipping part of the track!": "Matando ${NAME} por cortar o caminho!",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Aviso para ${NAME}: o turbo / spam de botão faz você sair."
+ },
+ "teamNames": {
+ "Bad Guys": "Inimigos",
+ "Blue": "Azul",
+ "Good Guys": "Aliados",
+ "Red": "Vermelho"
+ },
+ "tips": {
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Se você bater, correr, pular e girar em perfeita sincronia poderá matar\nem um único golpe e garantir o respeito eterno de seus amigos.",
+ "Always remember to floss.": "Lembre-se de sempre usar fio dental.",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Crie perfis de jogadores para você e seus amigos com\nseus nomes preferidos e aparências ao invés de usar os aleatórios.",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Caixas amaldiçoadas o transformam em uma bomba-relógio.\nA única cura é agarrar rapidamente um pacote de saúde.",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Apesar de suas aparências, as habilidades de todos os personagens são idênticas,\nentão basta escolher qualquer um que você mais se assemelha.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Não fique muito convencido com o escudo de energia; você ainda pode ser arremessado de um penhasco.",
+ "Don't run all the time. Really. You will fall off cliffs.": "Não corra o tempo todo. Sério. Você vai cair de penhascos.",
+ "Don't spin for too long; you'll become dizzy and fall.": "Não gire por muito tempo; você vai ficar tonto e cair!",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Pressione qualquer botão para correr. (Botões de gatilho funcionam bem, se os tiver)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Mantenha pressionado qualquer botão para correr. Você vai alcançar lugares mais\nrapidamente, mas não vai fazer curvas muito bem, por isso esteja atento para penhascos.",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "As bombas de gelo não são muito poderosas, mas elas congelam\nquem for atingido, deixando-os vulneráveis a estilhaçamentos.",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Se alguém te levantar, soque-o e ele irá te largar.\nIsso também funciona na vida real.",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Se você está sem controles, instale o aplicativo '${REMOTE_APP_NAME}'\nem seus dispositivos móveis para usá-los como controles.",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Se você tiver uma bomba grudenta presa em você, salte e gire em círculos. Você pode\nsacudir a bomba para fora ou, pelo menos, seus últimos momentos serão divertidos.",
+ "If you kill an enemy in one hit you get double points for it.": "Se você matar um inimigo com um golpe, você obtêm o dobro de pontos por isso.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Se você pegar uma maldição, sua única esperança de sobrevivência é\nencontrar um poder de saúde nos próximos segundos.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "Se você ficar em um lugar, você está frito. Corra e se esquive para sobreviver.",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Se você tem muitos jogadores entrando e saindo, ligue 'Expulsar Jogadores Ociosos Automaticamente'\nnas configurações no caso de alguém esquecer de deixar o jogo.",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Se seu dispositivo ficar muito quente ou você quiser conservar bateria,\nabaixe os \"Visuais\" ou \"Resolução\" nas Configurações-> Graficos",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Se sua taxa de quadros estiver baixa, tente diminuir a resolução\nou visuais nas configurações gráficas do jogo.",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "Em Capture a bandeira, a sua própria bandeira deve estar em sua base para marcar. Se a outra\nequipe está prestes a marcar, roubar a sua bandeira pode ser uma boa maneira de detê-los.",
+ "In hockey, you'll maintain more speed if you turn gradually.": "No hóquei, você manterá mais velocidade se girar gradualmente.",
+ "It's easier to win with a friend or two helping.": "É mais fácil ganhar com um ou dois amigos ajudando.",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "Apenas salte enquanto você está arremessando para conseguir bombas até os níveis mais altos.",
+ "Land-mines are a good way to stop speedy enemies.": "Minas terrestres são uma boa maneira de parar inimigos rápidos.",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Muitas coisas podem ser apanhadas e lançadas, incluindo outros jogadores. Jogar\nos seus inimigos de penhascos pode ser uma estratégia eficaz e emocionalmente gratificante.",
+ "No, you can't get up on the ledge. You have to throw bombs.": "Não, você não pode levantar-se na borda. Você tem que jogar bombas.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Jogadores podem entrar e sair no meio da maioria dos jogos,\ne você também pode ligar ou desligar controles quando quiser.",
+ "Practice using your momentum to throw bombs more accurately.": "Pratique usando a inércia para arremessar bombas com maior precisão.",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Socos fazem mais danos quanto mais rápido os punhos estão se movendo,\nentão tente correr, pular e girar como um louco.",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Corra para frente e para trás antes de arremessar uma bomba\npara 'chicoteá-la' e jogá-la longe.",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Elimine um grupo de inimigos ao\ndesencadear uma bomba perto de uma caixa de TNT.",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "A cabeça é a área mais vulnerável, portanto uma bomba grudenta\nna cuca geralmente significa fim de jogo.",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Este nível nunca termina, mas uma alta pontuação aqui\nfaz você ganhar respeito eterno por todo o mundo.",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Força de arremesso baseia-se na direção em que você está pressionando.\nPara arremessar algo suavemente na sua frente, não pressione qualquer direção.",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Cansado das músicas? Troque-as pelas suas próprias!\nVeja em Configurações-> Áudio-> Músicas",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Experimente 'cozinhar' bombas por um segundo ou dois antes de jogá-las.",
+ "Try tricking enemies into killing eachother or running off cliffs.": "Tente enganar inimigos para se matarem ou se jogarem do precipício.",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "Use o botão pegar para pegar a bandeira < ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "Balance para trás e para frente para fazer arremessos distantes..",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Você pode 'mirar' seus socos girando para esquerda ou direita.\nIsso é útil para derrubar inimigos das beiradas ou marcar no hóquei.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Você pode avaliar quando uma bomba vai explodir baseado na\ncor das faíscas do pavio: amarelo..laranja..vermelho..BOOM.",
+ "You can throw bombs higher if you jump just before throwing.": "Você pode jogar as bombas mais alto ao saltar logo antes de arremessar.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Você se fere quando você bate sua cabeça em coisas,\nassim tente não bater sua cabeça em coisas.",
+ "Your punches do much more damage if you are running or spinning.": "Seus socos causam muito mais dano se você estiver correndo ou girando."
+ }
+ },
+ "trophiesRequiredText": "Isso necessita de pelo menos ${NUMBER} troféus.",
+ "trophiesText": "Troféus",
+ "trophiesThisSeasonText": "Troféus nesta temporada",
+ "tutorial": {
+ "cpuBenchmarkText": "Rodando o tutorial numa velocidade MUITO baixa (para testar o processador)",
+ "phrase01Text": "Olá!",
+ "phrase02Text": "Bem-vindo ao ${APP_NAME}!",
+ "phrase03Text": "Aqui estão algumas dicas para controlar seu personagem:",
+ "phrase04Text": "Muitas coisas no ${APP_NAME} são baseadas na física.",
+ "phrase05Text": "Por exemplo, quando você soca,..",
+ "phrase06Text": "..o dano é baseado na velocidade de seus punhos.",
+ "phrase07Text": "Viu? Nós não estávamos nos movendo então mal fez cócegas no ${NAME}.",
+ "phrase08Text": "Agora vamos pular e girar para ganhar mais velocidade.",
+ "phrase09Text": "Ah, assim é melhor.",
+ "phrase10Text": "Correr ajuda também.",
+ "phrase11Text": "Mantenha QUALQUER botão pressionado para correr.",
+ "phrase12Text": "Para socos adicionais incríveis, tente correr e girar.",
+ "phrase13Text": "Ops! foi mal aí, ${NAME}.",
+ "phrase14Text": "Você pode pegar e jogar coisas como bandeiras.. ou ${NAME}.",
+ "phrase15Text": "Por último, há bombas.",
+ "phrase16Text": "Arremessar bombas requer prática.",
+ "phrase17Text": "Ai! Não foi um arremesso muito bom.",
+ "phrase18Text": "Movimentar-se te ajuda a arremessar mais longe.",
+ "phrase19Text": "Saltar ajuda você a arremessar mais alto.",
+ "phrase20Text": "Gire e corra e suas bombas irão ainda mais longe.",
+ "phrase21Text": "Calcular o tempo da explosão pode ser complicado.",
+ "phrase22Text": "Droga!",
+ "phrase23Text": "Tente deixar o pavio queimar por um ou dois segundos.",
+ "phrase24Text": "Eba! No tempo ideal.",
+ "phrase25Text": "Bem, acho que é só isso.",
+ "phrase26Text": "Agora vai lá e arrebenta!",
+ "phrase27Text": "Lembre-se do seu treinamento e você voltará vivo!",
+ "phrase28Text": "...bem, talvez...",
+ "phrase29Text": "Boa sorte!",
+ "randomName1Text": "Fernando",
+ "randomName2Text": "Henrique",
+ "randomName3Text": "Guilherme",
+ "randomName4Text": "Carlos",
+ "randomName5Text": "Felipe",
+ "skipConfirmText": "Você deseja realmente pular o tutorial? Toque ou aperte confirmar.",
+ "skipVoteCountText": "${COUNT}/${TOTAL} votos para pular",
+ "skippingText": "pulando o tutorial...",
+ "toSkipPressAnythingText": "(pressione qualquer coisa para pular o tutorial)"
+ },
+ "twoKillText": "MATOU DOIS!",
+ "uiScaleText": "Tamanho da Interface",
+ "unavailableText": "indisponível",
+ "unclaimedPrizesText": "Você possui prêmios não resgatados!",
+ "unconfiguredControllerDetectedText": "Controle não configurado detectado:",
+ "unlockThisInTheStoreText": "Isto deve ser desbloqueado na loja.",
+ "unlockThisProfilesText": "Para criar mais que ${NUM} perfis, você precisa:",
+ "unlockThisText": "Para desbloquear isso:",
+ "unsupportedControllerText": "Desculpe, o controlador \"${NAME}\" não é compatível.",
+ "unsupportedHardwareText": "Desculpe, este hardware não é suportado por esta versão do jogo.",
+ "upFirstText": "Em primeiro lugar:",
+ "upNextText": "O próximo jogo em ${COUNT}:",
+ "updatingAccountText": "Atualizando sua conta...",
+ "upgradeText": "Aprimorar",
+ "upgradeToPlayText": "Atualize para \"${PRO}\" na loja para jogar.",
+ "useDefaultText": "Usar Padrão",
+ "userSystemScriptsCreateText": "Criar Scripts do Sistema do Usuário",
+ "userSystemScriptsDeleteText": "Deletar Scripts do Sistema do Usuário",
+ "usesExternalControllerText": "Este jogo usa um controle externo para entrada.",
+ "usingItunesText": "Usando o app de música para a trilha sonora",
+ "v2AccountLinkingInfoText": "Para vincular contas V2, use o botão 'Gerenciar conta'.",
+ "v2AccountRequiredText": "Isso requer uma conta V2. Atualize sua conta e tente novamente.",
+ "validatingTestBuildText": "Validando Versão de Teste...",
+ "viaText": "via",
+ "victoryText": "Vitória!",
+ "voteDelayText": "Você não pode começar outra votação por ${NUMBER} segundo(s)",
+ "voteInProgressText": "Uma votação já está em progresso.",
+ "votedAlreadyText": "Você já votou",
+ "votesNeededText": "${NUMBER} votos necessários",
+ "vsText": "vs.",
+ "waitingForHostText": "(esperando ${HOST} continuar)",
+ "waitingForPlayersText": "esperando os jogadores entrarem...",
+ "waitingInLineText": "Esperando na fila (o grupo está cheio)...",
+ "watchAVideoText": "Ver um vídeo",
+ "watchAnAdText": "Assistir uma propaganda.",
+ "watchWindow": {
+ "deleteConfirmText": "Excluir \"${REPLAY}\"?",
+ "deleteReplayButtonText": "Excluir\nReplay",
+ "myReplaysText": "Meus replays",
+ "noReplaySelectedErrorText": "Nenhum replay selecionado.",
+ "playbackSpeedText": "Velocidade de reprodução: ${SPEED}",
+ "renameReplayButtonText": "Renomear\nReplay",
+ "renameReplayText": "Renomear \"${REPLAY}\" para:",
+ "renameText": "Renomear",
+ "replayDeleteErrorText": "Erro ao excluir o replay.",
+ "replayNameText": "Nome do replay",
+ "replayRenameErrorAlreadyExistsText": "Um replay com este nome já existe.",
+ "replayRenameErrorInvalidName": "Não foi possível renomear; nome invalido.",
+ "replayRenameErrorText": "Erro ao renomear replay.",
+ "sharedReplaysText": "Replays compartilhados",
+ "titleText": "Assistir",
+ "watchReplayButtonText": "Assistir\nReplay"
+ },
+ "waveText": "Onda",
+ "wellSureText": "Claro!",
+ "whatIsThisText": "Oque é isto?",
+ "winsPlayerText": "${NAME} venceu!",
+ "winsTeamText": "${NAME} venceu!",
+ "winsText": "${NAME} ganhou!",
+ "workspaceSyncErrorText": "Erro ao sincronizar ${WORKSPACE}. Veja o log para mais detalhes.",
+ "workspaceSyncReuseText": "Não pôde sincronizar ${WORKSPACE}. Reusando uma versão anterior sincronizada.",
+ "worldScoresUnavailableText": "Pontuações mundiais indisponíveis.",
+ "worldsBestScoresText": "Melhores Pontuações do Mundo",
+ "worldsBestTimesText": "Melhores Tempos do Mundo",
+ "yesAllowText": "Sim, Permitir!",
+ "yourBestScoresText": "Suas Melhores Pontuações",
+ "yourBestTimesText": "Seus Melhores Tempos",
+ "yourPrizeText": "Seu prêmio:"
+}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/portugueseportugal.json b/dist/ba_data/data/languages/portugueseportugal.json
new file mode 100644
index 00000000..fccf034c
--- /dev/null
+++ b/dist/ba_data/data/languages/portugueseportugal.json
@@ -0,0 +1,1980 @@
+{
+ "accountSettingsWindow": {
+ "accountNameRules": "O seu nome não pode conter emojis ou outros caracteres especiais",
+ "accountsText": "Contas",
+ "achievementProgressText": "Conquistas: ${COUNT} de ${TOTAL}",
+ "campaignProgressText": "Progresso da Campanha Difícil: ${PROGRESS}",
+ "changeOncePerSeason": "Você só pode mudar isso uma vez por temporada.",
+ "changeOncePerSeasonError": "Você deve esperar até a próxima temporada para mudar isso novamente (${NUM} dias)",
+ "createAnAccountText": "Crie uma conta",
+ "customName": "Nome personalizado",
+ "deleteAccountText": "Deletar conta",
+ "googlePlayGamesAccountSwitchText": "Se você quer usar uma conta Google diferente,\nUse o Google Play Games para trocar de conta.",
+ "linkAccountsEnterCodeText": "Colocar Código",
+ "linkAccountsGenerateCodeText": "Gerar Código",
+ "linkAccountsInfoText": "(compartilhar progresso entre varios dispositivos)",
+ "linkAccountsInstructionsNewText": "Para vincular duas contas, crie um código na primeira\ne coloque o código na segunda. O progresso de\nambas as contas serão sincronizadas. Tornando se uma unica conta\n(O progresso da primeira conta será perdido)\n\nVocê pode vincular até ${COUNT} contas.\n\nIMPORTANTE: vincule apenas contas que tem acesso; \nSe você vincular a conta de um amigo, vocês não\nirão conseguir jogar online ao mesmo tempo.",
+ "linkAccountsText": "Vincular contas",
+ "linkedAccountsText": "Contas vinculadas:",
+ "manageAccountText": "Gerenciar Conta",
+ "nameChangeConfirm": "Mudar o nome da sua conta para ${NAME}?",
+ "resetProgressConfirmNoAchievementsText": "Isto reiniciará o seu progresso no cooperativo e\nas suas pontuações (mas não os seus bilhetes).\nIsto não pode ser desfeito. Tem certeza?",
+ "resetProgressConfirmText": "Isto reiniciará o seu progresso no cooperativo,\nas suas conquistas e as suas pontuações\n(mas não os seus bilhetes). Isto não pode\nser desfeito. Tem certeza?",
+ "resetProgressText": "Restaurar progresso",
+ "setAccountName": "Escolha o Nome da Conta",
+ "setAccountNameDesc": "Escolha o nome que será exibido na sua conta.\nVocê pode usar o nome de uma de suas contas\nou criar um nome personalizado exclusivo.",
+ "signInInfoText": "Conecte uma conta para ganhar bilhetes, compita online e compartilhe\no seu progresso entre vários dispositivos.",
+ "signInText": "Conectar-se a sua conta",
+ "signInWithAnEmailAddressText": "Faça login com um endereço de e-mail",
+ "signInWithDeviceInfoText": "(uma conta automática disponível apenas neste aparelho)",
+ "signInWithDeviceText": "Conectar-se com a conta de seu proprio dispositivo",
+ "signInWithText": "Entrar com ${SERVICE}",
+ "signInWithV2InfoText": "(uma conta que funciona em todas as plataformas)",
+ "signInWithV2Text": "Usar uma conta do(a) ${APP_NAME}",
+ "signOutText": "Sair da conta",
+ "signingInText": "Iniciando sessão...",
+ "signingOutText": "Finalizando sessão...",
+ "ticketsText": "Bilhetes: ${COUNT}",
+ "titleText": "Conta",
+ "unlinkAccountsInstructionsText": "Selecione uma conta a qual você quer sair",
+ "unlinkAccountsText": "Desvincular contas",
+ "unlinkLegacyV1AccountsText": "Retirar contas V1",
+ "v2LinkInstructionsText": "Utilize o link para criar uma conta ou entrar nela.",
+ "viaAccount": "(via ${NAME})",
+ "youAreSignedInAsText": "Conectou-se como:"
+ },
+ "achievementChallengesText": "Desafios feitos",
+ "achievementText": "Conquistas",
+ "achievements": {
+ "Boom Goes the Dynamite": {
+ "description": "Mate 3 inimigos com TNT",
+ "descriptionComplete": "Você matou 3 inimigos com TNT",
+ "descriptionFull": "Mate 3 inimigos com TNT no ${LEVEL}",
+ "descriptionFullComplete": "Você matou 3 inimigos com TNT no ${LEVEL}",
+ "name": "Quem brinca com fogo, sai queimado"
+ },
+ "Boxer": {
+ "description": "Ganhe sem usar bombas",
+ "descriptionComplete": "Ganhou sem usar bombas",
+ "descriptionFull": "Complete o ${LEVEL} sem usar bombas",
+ "descriptionFullComplete": "Completou o ${LEVEL} sem usar bombas",
+ "name": "Boxeador"
+ },
+ "Dual Wielding": {
+ "descriptionFull": "Conecte 2 controles sendo fisicos ou sendo virtuais (pelo aplicativo)",
+ "descriptionFullComplete": "Conectou 2 controles sendo fisicos ou sendo virtuais (pelo aplicativo)",
+ "name": "Dominação dupla"
+ },
+ "Flawless Victory": {
+ "description": "Ganhe sem ser atingido",
+ "descriptionComplete": "Ganhou sem ser atingido",
+ "descriptionFull": "Ganhe o ${LEVEL} sem ser atingido",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem ser atingido",
+ "name": "Vitória perfeita"
+ },
+ "Free Loader": {
+ "descriptionFull": "Comece um Todos contra todos com mais de 2 jogadores",
+ "descriptionFullComplete": "Começou um Todos contra todos com mais de 2 jogadores",
+ "name": "Carregador livre"
+ },
+ "Gold Miner": {
+ "description": "Mate 6 inimigos com minas",
+ "descriptionComplete": "Matou 6 inimigos com minas",
+ "descriptionFull": "Mate 6 inimigos com minas no ${LEVEL}",
+ "descriptionFullComplete": "Matou 6 inimigos com minas no ${LEVEL}",
+ "name": "Garimpeiro"
+ },
+ "Got the Moves": {
+ "description": "Ganhe sem usar socos ou bombas",
+ "descriptionComplete": "Ganhou sem usar socos ou bombas",
+ "descriptionFull": "Ganhe o ${LEVEL} sem socos ou bombas",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem socos ou bombas",
+ "name": "Esse Tem Gingado"
+ },
+ "In Control": {
+ "descriptionFull": "Conecte um controle (hardware ou aplicativo)",
+ "descriptionFullComplete": "Conectou um controle. (hardware ou aplicativo)",
+ "name": "No controle"
+ },
+ "Last Stand God": {
+ "description": "Marque 1000 pontos",
+ "descriptionComplete": "Marcou 1000 pontos",
+ "descriptionFull": "Marque 1000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 1000 pontos no ${LEVEL}",
+ "name": "${LEVEL} Deus"
+ },
+ "Last Stand Master": {
+ "description": "Marque 250 pontos",
+ "descriptionComplete": "Marcou 250 pontos",
+ "descriptionFull": "Marque 250 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 250 pontos no ${LEVEL}",
+ "name": "${LEVEL} Mestre"
+ },
+ "Last Stand Wizard": {
+ "description": "Marque 500 pontos",
+ "descriptionComplete": "Marcou 500 pontos",
+ "descriptionFull": "Marque 500 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 500 pontos no ${LEVEL}",
+ "name": "${LEVEL} Mago"
+ },
+ "Mine Games": {
+ "description": "Mate 3 inimigos com minas",
+ "descriptionComplete": "Matou 3 inimigos com minas",
+ "descriptionFull": "Mate 3 inimigos com minas no ${LEVEL}",
+ "descriptionFullComplete": "Matou 3 inimigos com minas no ${LEVEL}",
+ "name": "Brincando com Minas"
+ },
+ "Off You Go Then": {
+ "description": "Mande 3 inimigos para fora do mapa",
+ "descriptionComplete": "Mandou 3 inimigos para fora do mapa",
+ "descriptionFull": "Mande 3 inimigos para fora do mapa no ${LEVEL}",
+ "descriptionFullComplete": "Mandou 3 inimigos para fora do mapa no ${LEVEL}",
+ "name": "Pode Ir Agora"
+ },
+ "Onslaught God": {
+ "description": "Marque 5000 pontos",
+ "descriptionComplete": "Marcou 5000 pontos",
+ "descriptionFull": "Marque 5000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 5000 pontos no ${LEVEL}",
+ "name": "${LEVEL} Deus"
+ },
+ "Onslaught Master": {
+ "description": "Marque 500 pontos",
+ "descriptionComplete": "Marcou 500 pontos",
+ "descriptionFull": "Marque 500 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 500 pontos no ${LEVEL}",
+ "name": "${LEVEL} Mestre"
+ },
+ "Onslaught Training Victory": {
+ "description": "Derrote todas as ondas",
+ "descriptionComplete": "Derrotou todas as ondas",
+ "descriptionFull": "Derrote todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Derrotou todas as ondas no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Onslaught Wizard": {
+ "description": "Marque 1000 pontos",
+ "descriptionComplete": "Marcou 1000 pontos",
+ "descriptionFull": "Marque 1000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 1000 pontos no ${LEVEL}",
+ "name": "Mago do ${LEVEL}"
+ },
+ "Precision Bombing": {
+ "description": "Ganhe sem poderes",
+ "descriptionComplete": "Ganhou sem poderes",
+ "descriptionFull": "Ganhe ${LEVEL} sem poderes",
+ "descriptionFullComplete": "Ganhou ${LEVEL} sem poderes",
+ "name": "Chuva de Bomba"
+ },
+ "Pro Boxer": {
+ "description": "Ganhe sem usar bombas",
+ "descriptionComplete": "Ganhou sem usar bombas",
+ "descriptionFull": "Complete o ${LEVEL} sem usar bombas",
+ "descriptionFullComplete": "Completou o ${LEVEL} sem usar bombas",
+ "name": "Pugilista"
+ },
+ "Pro Football Shutout": {
+ "description": "Ganhe sem deixar os inimigos marcarem",
+ "descriptionComplete": "Ganhou sem deixar os inimigos marcarem",
+ "descriptionFull": "Ganhe o ${LEVEL} sem deixar os inimigos marcarem",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem deixar os inimigos marcarem",
+ "name": "${LEVEL} De Lavada"
+ },
+ "Pro Football Victory": {
+ "description": "Ganhe a partida",
+ "descriptionComplete": "Ganhou a partida",
+ "descriptionFull": "Ganhe a partida no ${LEVEL}",
+ "descriptionFullComplete": "Ganhou a partida no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Pro Onslaught Victory": {
+ "description": "Derrote todas as ondas",
+ "descriptionComplete": "Todas as ondas derrotadas",
+ "descriptionFull": "Derrote todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Todas as ondas do ${LEVEL} derrotadas",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Pro Runaround Victory": {
+ "description": "Complete todas as ondas",
+ "descriptionComplete": "Todas as ondas completadas",
+ "descriptionFull": "Complete todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Todas as ondas completadas no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Rookie Football Shutout": {
+ "description": "Ganhe sem deixar os inimigos marcarem",
+ "descriptionComplete": "Ganhou sem deixar os inimigos marcarem",
+ "descriptionFull": "Ganhe no ${LEVEL} sem deixar os inimigos marcarem",
+ "descriptionFullComplete": "Ganhou no ${LEVEL} sem deixar os inimigos marcarem",
+ "name": "${LEVEL} de levada"
+ },
+ "Rookie Football Victory": {
+ "description": "Ganhe a partida",
+ "descriptionComplete": "Ganhou a partida",
+ "descriptionFull": "Ganhe a partida no ${LEVEL}",
+ "descriptionFullComplete": "Ganhou a partida no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Rookie Onslaught Victory": {
+ "description": "Derrote todas as ondas",
+ "descriptionComplete": "Todas as ondas derrotadas",
+ "descriptionFull": "Derrote todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Todas as ondas no ${LEVEL} derrotadas",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Runaround God": {
+ "description": "Marque 2000 pontos",
+ "descriptionComplete": "Marcou 2000 pontos",
+ "descriptionFull": "Marque 2000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 2000 pontos no ${LEVEL}",
+ "name": "Deus da ${LEVEL}"
+ },
+ "Runaround Master": {
+ "description": "Marque 500 pontos",
+ "descriptionComplete": "Marcou 500 pontos",
+ "descriptionFull": "Marque 500 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 500 pontos no ${LEVEL}",
+ "name": "Mestre do ${LEVEL}"
+ },
+ "Runaround Wizard": {
+ "description": "Marque 1000 pontos",
+ "descriptionComplete": "Marcou 1000 pontos",
+ "descriptionFull": "Marque 1000 pontos no ${LEVEL}",
+ "descriptionFullComplete": "Marcou 1000 pontos no ${LEVEL}",
+ "name": "Mago do ${LEVEL}"
+ },
+ "Sharing is Caring": {
+ "descriptionFull": "Compartilhe o jogo com um amigo",
+ "descriptionFullComplete": "Jogo compartilhado com um amigo",
+ "name": "Compartilhar é amar"
+ },
+ "Stayin' Alive": {
+ "description": "Ganhe sem morrer",
+ "descriptionComplete": "Ganhou sem morrer",
+ "descriptionFull": "Ganhe o ${LEVEL} sem morrer",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem morrer",
+ "name": "Sobrevivendo"
+ },
+ "Super Mega Punch": {
+ "description": "Cause 100% de dano com um soco",
+ "descriptionComplete": "Causou 100% de dano com um soco",
+ "descriptionFull": "Cause 100% de dano com um soco no ${LEVEL}",
+ "descriptionFullComplete": "Causou 100% de dano com um soco no ${LEVEL}",
+ "name": "Super mega soco"
+ },
+ "Super Punch": {
+ "description": "Cause 50% de dano com um soco",
+ "descriptionComplete": "Causou 50% de dano com um soco",
+ "descriptionFull": "Cause 50% de dano com um soco no ${LEVEL}",
+ "descriptionFullComplete": "Causou 50% de dano com um soco no ${LEVEL}",
+ "name": "Supersoco"
+ },
+ "TNT Terror": {
+ "description": "Mate 6 inimigos com TNT",
+ "descriptionComplete": "Matou 6 inimigos com TNT",
+ "descriptionFull": "Mate 6 inimigos com TNT no ${LEVEL}",
+ "descriptionFullComplete": "Matou 6 inimigos com TNT no ${LEVEL}",
+ "name": "Terror do TNT"
+ },
+ "Team Player": {
+ "descriptionFull": "Comece um jogo de equipes com mais de 4 jogadores",
+ "descriptionFullComplete": "Começou um jogo de equipes com mais de 4 jogadores",
+ "name": "Jogador de equipe"
+ },
+ "The Great Wall": {
+ "description": "Pare todos os inimigos",
+ "descriptionComplete": "Parou todos os inimigos",
+ "descriptionFull": "Pare todos os inimigos no ${LEVEL}",
+ "descriptionFullComplete": "Parou todos os inimigos no ${LEVEL}",
+ "name": "A Grande Muralha"
+ },
+ "The Wall": {
+ "description": "Pare todos os inimigos",
+ "descriptionComplete": "Parou todos os inimigos",
+ "descriptionFull": "Pare todos os inimigos no ${LEVEL}",
+ "descriptionFullComplete": "Parou todos os inimigos no ${LEVEL}",
+ "name": "A Muralha"
+ },
+ "Uber Football Shutout": {
+ "description": "Ganhe sem deixar os inimigos marcarem",
+ "descriptionComplete": "Ganhou sem deixar os inimigos marcarem",
+ "descriptionFull": "Ganhe o ${LEVEL} sem deixar os inimigos marcarem",
+ "descriptionFullComplete": "Ganhou o ${LEVEL} sem deixar os inimigos marcarem",
+ "name": "${LEVEL} De Lavada"
+ },
+ "Uber Football Victory": {
+ "description": "Ganhe a partida",
+ "descriptionComplete": "Ganhou a partida",
+ "descriptionFull": "Ganhe a partida no ${LEVEL}",
+ "descriptionFullComplete": "Ganhou a partida no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Uber Onslaught Victory": {
+ "description": "Derrote todas as ondas",
+ "descriptionComplete": "Derrotou todas as ondas",
+ "descriptionFull": "Derrote todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Derrotou todas as ondas no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ },
+ "Uber Runaround Victory": {
+ "description": "Complete todas as ondas",
+ "descriptionComplete": "Completou todas as ondas",
+ "descriptionFull": "Complete todas as ondas no ${LEVEL}",
+ "descriptionFullComplete": "Completou todas as ondas no ${LEVEL}",
+ "name": "Vitória no ${LEVEL}"
+ }
+ },
+ "achievementsRemainingText": "Conquistas restantes:",
+ "achievementsText": "Conquistas",
+ "achievementsUnavailableForOldSeasonsText": "Desculpe, algumas conquistas não estão disponíveis em temporadas antigas.",
+ "activatedText": "${THING} foi ativado.",
+ "addGameWindow": {
+ "getMoreGamesText": "Mais jogos...",
+ "titleText": "Adicionar jogo"
+ },
+ "addToFavoritesText": "Adicionar aos Favoritos",
+ "addedToFavoritesText": "Adicionou '${NAME}' aos Favoritos.",
+ "allText": "Tudo",
+ "allowText": "Permitir",
+ "alreadySignedInText": "A conta tem sessão iniciada em outro dispositivo;\nMude de conta ou feche o jogo no seu\noutro dispositivo e tente novamente.",
+ "apiVersionErrorText": "Não é possível carregar o módulo ${NAME}; ele é destinado à versão ${VERSION_USED}; exigimos a ${VERSION_REQUIRED}.",
+ "applyText": "Aplicar",
+ "areYouSureText": "Voce tem certeza?",
+ "audioSettingsWindow": {
+ "headRelativeVRAudioInfoText": "(\"Auto\" ativa isso apenas quando fones estão conectados)",
+ "headRelativeVRAudioText": "Áudio para fones de RV",
+ "musicVolumeText": "Volume da música",
+ "soundVolumeText": "Volume do som",
+ "soundtrackButtonText": "Trilha sonora",
+ "soundtrackDescriptionText": "(tocar a sua própria música durante o jogo)",
+ "titleText": "Áudio"
+ },
+ "autoText": "Automático",
+ "backText": "Voltar",
+ "banThisPlayerText": "Banir este jogador",
+ "bestOfFinalText": "Final de Melhor-de-${COUNT}",
+ "bestOfSeriesText": "Melhor série de ${COUNT}:",
+ "bestRankText": "Sua melhor pontuação é #${RANK}",
+ "bestRatingText": "Sua melhor classificação é ${RATING}",
+ "bombBoldText": "BOMBA",
+ "bombText": "Bomba",
+ "boostText": "Impulso",
+ "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} é configurado no próprio aplicativo.",
+ "buttonText": "botão",
+ "canWeDebugText": "Você gostaria que o ${APP_NAME} automaticamente comunique\nerros, falhas e informações de uso básico para o desenvolvedor?\n\nEsses dados não contem informações pessoais e ajudam\nà manter o jogo rodando suavemente e livre de bugs.",
+ "cancelText": "Cancelar",
+ "cantConfigureDeviceText": "Desculpe, ${DEVICE} não é configurável.",
+ "challengeEndedText": "Este desafio acabou.",
+ "chatMuteText": "Silenciar Chat",
+ "chatMutedText": "Chat Silenciado",
+ "chatUnMuteText": "Reativar Chat",
+ "chests": {
+ "prizeOddsText": "Chances de Ganhar",
+ "reduceWaitText": "Reduzir a espera",
+ "slotDescriptionText": "Este slot pode conter um baú.\n\nGanhe baús jogando níveis de campanha,\ncolocando-se em torneios e completando\nconquistas.",
+ "slotText": "Slot de baú ${NUM}",
+ "slotsFullWarningText": "AVISO: Todos os seus slots de baú estão cheios.\nQuaisquer baús que você ganhar neste jogo serão perdidos.",
+ "unlocksInText": "Desbloqueia Em"
+ },
+ "choosingPlayerText": "",
+ "claimText": "Resgatar",
+ "codesExplainText": "Os códigos são fornecidos pelo desenvolvedor para \ndiagnosticar e corrigir problemas de conta.",
+ "completeThisLevelToProceedText": "Você deve completar \neste nível para continuar!",
+ "completionBonusText": "Bônus de conclusão",
+ "configControllersWindow": {
+ "configureControllersText": "Configurar controles",
+ "configureKeyboard2Text": "Configurar teclado P2",
+ "configureKeyboardText": "Configurar teclado",
+ "configureMobileText": "Usar dispositivos como controles",
+ "configureTouchText": "Configurar touchscreen",
+ "ps3Text": "Controles PS3",
+ "titleText": "Controles",
+ "wiimotesText": "Wiimotes",
+ "xbox360Text": "Controles Xbox 360"
+ },
+ "configGamepadSelectWindow": {
+ "androidNoteText": "Nota: o suporte ao controle varia conforme o dispositivo e a versão do Android.",
+ "pressAnyButtonText": "Aperte qualquer botão no controle\nque você deseja configurar...",
+ "titleText": "Configurar controles"
+ },
+ "configGamepadWindow": {
+ "advancedText": "Avançado",
+ "advancedTitleText": "Configuração avançada dos controles",
+ "analogStickDeadZoneDescriptionText": "(ative isto se o personagem 'escorrega' quando você solta o direcional)",
+ "analogStickDeadZoneText": "Área morta do analógico",
+ "appliesToAllText": "(serve para todos os controles deste tipo)",
+ "autoRecalibrateDescriptionText": "(ative isto se o personagem não se move na velocidade máxima)",
+ "autoRecalibrateText": "Calibrar automaticamente o analógico",
+ "axisText": "eixo",
+ "clearText": "limpar",
+ "dpadText": "direcional",
+ "extraStartButtonText": "Botão Start Extra",
+ "ifNothingHappensTryAnalogText": "Se nada acontecer, tente mudar para o analógico.",
+ "ifNothingHappensTryDpadText": "Se nada acontecer, tente mudar para o botão direcional.",
+ "ignoreCompletelyDescriptionText": "(impedir este controle de afetar tanto o jogo quanto o menu)",
+ "ignoreCompletelyText": "Ignorar totalmente",
+ "ignoredButton1Text": "Botão 1 ignorado",
+ "ignoredButton2Text": "Botão 2 ignorado",
+ "ignoredButton3Text": "Botão 3 ignorado",
+ "ignoredButton4Text": "Botão 4 ignorado",
+ "ignoredButtonDescriptionText": "(use isto para evitar que os botões 'home' ou 'sync' afetem a UI)",
+ "pressAnyAnalogTriggerText": "Aperte qualquer gatilho...",
+ "pressAnyButtonOrDpadText": "Aperte qualquer botão ou direcional...",
+ "pressAnyButtonText": "Aperte qualquer botão...",
+ "pressLeftRightText": "Aperte esquerda ou direita...",
+ "pressUpDownText": "Aperte cima ou baixo...",
+ "runButton1Text": "Correr Botão 1",
+ "runButton2Text": "Correr Botão 2",
+ "runTrigger1Text": "Correr Gatilho 1",
+ "runTrigger2Text": "Correr Gatilho 2",
+ "runTriggerDescriptionText": "(os gatilhos analogicos o permitem correr em diferentes velocidades)",
+ "secondHalfText": "Use isto para configurar a segunda metade\nde um controle que funciona\ncomo 2-em-1.",
+ "secondaryEnableText": "Ativar",
+ "secondaryText": "Controle secundário",
+ "startButtonActivatesDefaultDescriptionText": "(desative se o seu botão start está mais para um botão de menu)",
+ "startButtonActivatesDefaultText": "O botão Start ativa o widget padrão",
+ "titleText": "Configuração do controle",
+ "twoInOneSetupText": "Configuração do Controle 2-em-1",
+ "uiOnlyDescriptionText": "(impede que este controle entre em um jogo)",
+ "uiOnlyText": "Limitar o Uso ao Menu",
+ "unassignedButtonsRunText": "Todo o botão não definido executa",
+ "unsetText": "",
+ "vrReorientButtonText": "Botão Reorientar VR"
+ },
+ "configKeyboardWindow": {
+ "configuringText": "Configurando ${DEVICE}",
+ "keyboard2NoteText": "Nota: a maioria dos teclados só podem registrar\nalgumas teclas pressionadas de uma só vez, portanto\npode funcionar melhor se houver um segundo teclado\nconectado. Perceba que, mesmo nesse caso, você ainda\nprecisará definir teclas exclusivas para os dois jogadores."
+ },
+ "configTouchscreenWindow": {
+ "actionControlScaleText": "Escala de ação do controle",
+ "actionsText": "Ações",
+ "buttonsText": "botões",
+ "dragControlsText": "< arraste controles para reposicioná-los >",
+ "joystickText": "joystick",
+ "movementControlScaleText": "Escala de movimento do controle",
+ "movementText": "Movimento",
+ "resetText": "Reiniciar",
+ "swipeControlsHiddenText": "Ocultar ícones de deslize",
+ "swipeInfoText": "O estilo 'Deslize' do controle leva um tempo para se acostumar, mas\nfaz com que seja mais fácil de jogar sem olhar para os controles.",
+ "swipeText": "deslize",
+ "titleText": "Configurar touchscreen"
+ },
+ "configureDeviceInSystemSettingsText": "${DEVICE} pode ser configurado no aplicativo \"Configurações do sistema\".",
+ "configureItNowText": "Configurar agora?",
+ "configureText": "Configurar",
+ "connectMobileDevicesWindow": {
+ "amazonText": "Amazon Appstore",
+ "appStoreText": "App Store",
+ "bestResultsText": "Para melhores resultados, é necessário uma rede Wi-Fi\nsem lag. Você pode melhorar o desempenho desligando outros\ndispositivos, jogando perto do seu roteador e conectando\no anfitrião do jogo à rede através do Ethernet.",
+ "explanationText": "Para usar um telefone ou tablet como controle,\nbaixe gratuitamente o aplicativo \"${REMOTE_APP_NAME}\".\nDá para conectar quantos dispositivos quiser a ${APP_NAME} pelo Wi-Fi!",
+ "forAndroidText": "para Android:",
+ "forIOSText": "para iOS:",
+ "getItForText": "Baixe ${REMOTE_APP_NAME} para iOS na Apple App Store\nou para Android na Google Play Store ou na Amazon Appstore",
+ "googlePlayText": "Google Play",
+ "titleText": "Usando dispositivos como controles:"
+ },
+ "continuePurchaseText": "Continuar por ${PRICE}?",
+ "continueText": "Continuar",
+ "controlsText": "Controles",
+ "coopSelectWindow": {
+ "activenessAllTimeInfoText": "Isso não se aplica às classificações de todos os tempos.",
+ "activenessInfoText": "Este multiplicador aumenta nos dias que você joga\ne diminui nos dias que você não joga.",
+ "activityText": "Atividade",
+ "campaignText": "Campanha",
+ "challengesInfoText": "Ganhe prêmios por completar minijogos.\n\nPrêmios e dificuldade aumentam toda\nvez que um desafio é concluído e\ndiminui quando expira ou é abandonado.",
+ "challengesText": "Desafios",
+ "currentBestText": "O Melhor do Momento",
+ "customText": "Personalizado",
+ "entryFeeText": "Entrada",
+ "forfeitConfirmText": "Abandonar este desafio?",
+ "forfeitNotAllowedYetText": "Este desafio ainda não pode ser abandonado.",
+ "forfeitText": "Abandonar",
+ "multipliersText": "Multiplicadores",
+ "nextChallengeText": "Próximo desafio",
+ "nextPlayText": "Próximo jogo",
+ "ofTotalTimeText": "de ${TOTAL}",
+ "playNowText": "Jogar agora",
+ "pointsText": "Pontos",
+ "powerRankingFinishedSeasonUnrankedText": "(acabou a temporada casual)",
+ "powerRankingNotInTopText": "(não está no top ${NUMBER})",
+ "powerRankingPointsEqualsText": "= ${NUMBER} pts",
+ "powerRankingPointsMultText": "(x ${NUMBER} pts)",
+ "powerRankingPointsText": "${NUMBER} pts",
+ "powerRankingPointsToRankedText": "(${CURRENT} de ${REMAINING} pts)",
+ "powerRankingText": "Classificação geral",
+ "prizesText": "Prêmios",
+ "proMultInfoText": "Jogadores com a versão ${PRO}\nrecebem um aumento de ${PERCENT}% nos pontos.",
+ "seeMoreText": "Mais...",
+ "skipWaitText": "Pular espera",
+ "timeRemainingText": "Tempo restante",
+ "toRankedText": "Para classificar",
+ "totalText": "total",
+ "tournamentInfoText": "Jogue para ser o melhor contra\noutros jogadores na sua liga.\n\nOs prêmios são dados aos melhores\njogadores quando o torneio acaba.",
+ "welcome1Text": "Bem-vindo à ${LEAGUE}. Você pode melhorar a sua\nclassificação de liga ao receber estrelas, ao obter\nconquistas e ao ganhar troféus em torneios.",
+ "welcome2Text": "Você também pode ganhar bilhetes ao fazer várias dessas atividades.\nOs bilhetes podem ser usados para desbloquear novos personagens,\nmapas e minijogos, entrar em torneios e muito mais.",
+ "yourPowerRankingText": "Sua classificação geral:"
+ },
+ "copyConfirmText": "Copiado para a área de transferência",
+ "copyOfText": "Cópia de ${NAME}",
+ "copyText": "Copiar",
+ "createEditPlayerText": "",
+ "createText": "Criar",
+ "creditsWindow": {
+ "additionalAudioArtIdeasText": "Áudio adicional, Arte inicial e ideias por ${NAME}",
+ "additionalMusicFromText": "Música adicional de ${NAME}",
+ "allMyFamilyText": "Toda a família e amigos que ajudaram nos testes",
+ "codingGraphicsAudioText": "Programação, gráficos e áudio por ${NAME}",
+ "languageTranslationsText": "Traduções:",
+ "legalText": "Legal:",
+ "publicDomainMusicViaText": "Musica de domínio público via ${NAME}",
+ "softwareBasedOnText": "Este software é baseado em parte do trabalho de ${NAME}",
+ "songCreditText": "${TITLE} Executada por ${PERFORMER}\nComposta por ${COMPOSER}, Arranjo por ${ARRANGER}, Publicada por ${PUBLISHER},\nCortesia de ${SOURCE}",
+ "soundAndMusicText": "Som e música:",
+ "soundsText": "Sons (${SOURCE}):",
+ "specialThanksText": "Agradecimentos especiais:",
+ "thanksEspeciallyToText": "Obrigado especialmente a ${NAME}",
+ "titleText": "Créditos do ${APP_NAME}",
+ "whoeverInventedCoffeeText": "Seja lá quem for o inventor do café"
+ },
+ "currentStandingText": "Sua posição atual é #${RANK}",
+ "customizeText": "Personalizar...",
+ "deathsTallyText": "${COUNT} mortes",
+ "deathsText": "Mortes",
+ "debugText": "depurar",
+ "debugWindow": {
+ "reloadBenchmarkBestResultsText": "Nota: recomenda-se que defina Configurações->Gráficos->Texturas para \"Alto\" ao testar isto.",
+ "runCPUBenchmarkText": "Rodar Benchmark de CPU",
+ "runGPUBenchmarkText": "Rodar Benchmark de GPU",
+ "runMediaReloadBenchmarkText": "Rodar Benchmark de Recarregar Mídia",
+ "runStressTestText": "Rodar teste de estresse",
+ "stressTestPlayerCountText": "Contagem de Jogadores",
+ "stressTestPlaylistDescriptionText": "Playlist Teste de Estresse",
+ "stressTestPlaylistNameText": "Nome da Playlist",
+ "stressTestPlaylistTypeText": "Tipo de Playlist",
+ "stressTestRoundDurationText": "Duração da Rodada",
+ "stressTestTitleText": "Teste de estabilidade",
+ "titleText": "Benchmarks e Testes de Estresse",
+ "totalReloadTimeText": "Tempo total de carregamento: ${TIME} (veja relatório para detalhes)"
+ },
+ "defaultGameListNameText": "Playlist ${PLAYMODE} Padrão",
+ "defaultNewGameListNameText": "Minha playlist ${PLAYMODE}",
+ "deleteText": "Excluir",
+ "demoText": "Teste",
+ "denyText": "Recusar",
+ "deprecatedText": "Descontinuado",
+ "descriptionText": "Descrição",
+ "desktopResText": "Resolução da área de trabalho",
+ "deviceAccountUpgradeText": "Aviso:\nVocê está logado com a conta do seu dispositivo\n(${NAME}).\nContas de dispositivo serão removidas em uma atualização futura.",
+ "difficultyEasyText": "Fácil",
+ "difficultyHardOnlyText": "Modo difícil apenas",
+ "difficultyHardText": "Difícil",
+ "difficultyHardUnlockOnlyText": "Esta fase só pode ser desbloqueada no modo difícil.\nVocê acha que aguenta o desafio!?!?!",
+ "directBrowserToURLText": "Por favor, direcione a seguinte URL para um navegador:",
+ "disableRemoteAppConnectionsText": "Desativar conexões do aplicativo BombSquad Remote",
+ "disableXInputDescriptionText": "Permite mais de 4 controles mas pode não funcionar bem.",
+ "disableXInputText": "Desativar XInput",
+ "disabledText": "Desativado",
+ "discardText": "Descarte",
+ "discordFriendsText": "Quer procurar por mais pessoas para jogar junto?\nEntre no nosso Discord e encontre novos amigos!",
+ "discordJoinText": "Junte-se ao Discord",
+ "doneText": "Concluído",
+ "drawText": "Empate",
+ "duplicateText": "Duplicar",
+ "editGameListWindow": {
+ "addGameText": "Adicionar\nJogo",
+ "cantOverwriteDefaultText": "Não é possível sobrescrever a playlist padrão!",
+ "cantSaveAlreadyExistsText": "Já existe uma playlist com este nome!",
+ "cantSaveEmptyListText": "Não é possível salvar uma playlist vazia!",
+ "editGameText": "Editar\nJogo",
+ "listNameText": "Nome da Playlist",
+ "nameText": "Nome",
+ "removeGameText": "Remover\nJogo",
+ "saveText": "Salvar lista",
+ "titleText": "Editor de Playlist"
+ },
+ "editProfileWindow": {
+ "accountProfileInfoText": "Este perfil especial tem nome e\nícone baseado na sua conta.\n\n${ICONS}\n\nCrie perfis personalizados para usar\nnomes diferentes ou ícones personalizados.",
+ "accountProfileText": "(perfil da conta)",
+ "availableText": "O nome \"${NAME}\" está disponível.",
+ "characterText": "personagem",
+ "checkingAvailabilityText": "Verificando disponibilidade para \"${NAME}\"...",
+ "colorText": "cor",
+ "getMoreCharactersText": "Obter mais personagens...",
+ "getMoreIconsText": "Obter mais ícones...",
+ "globalProfileInfoText": "Garante-se que perfis globais tenham nomes\núnicos. Possuem também ícones personalizados.",
+ "globalProfileText": "(perfil global)",
+ "highlightText": "detalhe",
+ "iconText": "ícone",
+ "localProfileInfoText": "Os perfis de jogadores locais não possuem ícones e não garantem que seus\nnomes sejam únicos.\n\nAprimore para um perfil global para\nreservar um nome único e adicionar um ícone personalizado.",
+ "localProfileText": "(perfil local)",
+ "nameDescriptionText": "Nome do Jogador",
+ "nameText": "Nome",
+ "profileAlreadyExistsText": "Um perfil com este nome já existe.",
+ "randomText": "aleatório",
+ "titleEditText": "Editar perfil",
+ "titleNewText": "Novo Perfil",
+ "unavailableText": "\"${NAME}\" está indisponível; tente outro nome.",
+ "upgradeProfileInfoText": "Isso irá reservar o seu nome de jogador mundialmente\ne permitirá definir um ícone personalizado a ele.",
+ "upgradeToGlobalProfileText": "Aprimorar para Perfil Global"
+ },
+ "editSoundtrackWindow": {
+ "cantDeleteDefaultText": "Você não pode excluir a trilha sonora padrão.",
+ "cantEditDefaultText": "Não é possível editar a trilha sonora padrão. Duplique ou crie uma nova.",
+ "cantOverwriteDefaultText": "Não é possível sobrescrever a trilha sonora padrão",
+ "cantSaveAlreadyExistsText": "Já existe uma trilha sonora com esse nome!",
+ "defaultGameMusicText": "",
+ "defaultSoundtrackNameText": "Trilha sonora padrão",
+ "deleteConfirmText": "Excluir trilha sonora:\n\n'${NAME}'?",
+ "deleteText": "Excluir\nTrilha sonora",
+ "duplicateText": "Duplicar\nTrilha sonora",
+ "editSoundtrackText": "Editor de Trilha Sonora",
+ "editText": "Editar\nTrilha sonora",
+ "fetchingITunesText": "Buscando playlists do app de música",
+ "musicVolumeZeroWarning": "Aviso: o volume da música está zerado",
+ "nameText": "Nome",
+ "newSoundtrackNameText": "Minha trilha sonora ${COUNT}",
+ "newSoundtrackText": "Nova trilha sonora:",
+ "newText": "Nova\nTrilha sonora",
+ "selectAPlaylistText": "Selecione uma playlist",
+ "selectASourceText": "Fonte de música",
+ "testText": "teste",
+ "titleText": "Trilhas sonoras",
+ "useDefaultGameMusicText": "Música padrão",
+ "useITunesPlaylistText": "Playlist do app de música",
+ "useMusicFileText": "Arquivo de música (mp3, etc)",
+ "useMusicFolderText": "Pasta de arquivos de música"
+ },
+ "editText": "Editar",
+ "enabledText": "Ativado",
+ "endText": "Fim",
+ "enjoyText": "Aproveite!",
+ "epicDescriptionFilterText": "${DESCRIPTION} em câmera lenta épica.",
+ "epicNameFilterText": "${NAME} épico(a)",
+ "errorAccessDeniedText": "acesso negado",
+ "errorDeviceTimeIncorrectText": "A hora do seu dispositivo está incorreta por ${HOURS} horas.\nIsso causará problemas. \nPor-Favor cheque suas configurações de hora e fuso horário.",
+ "errorOutOfDiskSpaceText": "pouco espaço em disco",
+ "errorSecureConnectionFailText": "Não foi possível estabelecer uma conexão segura à nuvem; a funcionalidade da rede pode falhar.",
+ "errorText": "Erro",
+ "errorUnknownText": "erro desconhecido",
+ "exitGameText": "Sair do ${APP_NAME}?",
+ "expiredAgoText": "Expirado há ${T}",
+ "expiresInText": "Expira em ${T}",
+ "exportSuccessText": "'${NAME}' foi exportado.",
+ "externalStorageText": "Armazenamento externo",
+ "failText": "Falhou",
+ "fatalErrorText": "Ops; algo está faltando ou está corrompido.\nPor favor, tente reinstalar BombSquad ou\nentre em contato ${EMAIL} para ajuda.",
+ "fileSelectorWindow": {
+ "titleFileFolderText": "Selecione um arquivo ou pasta",
+ "titleFileText": "Selecione um arquivo",
+ "titleFolderText": "Selecione uma pasta",
+ "useThisFolderButtonText": "Use esta pasta"
+ },
+ "filterText": "Filtro",
+ "finalScoreText": "Pontuação final",
+ "finalScoresText": "Pontuações finais",
+ "finalTimeText": "Tempo final",
+ "finishingInstallText": "Terminando de instalar; aguarde...",
+ "fireTVRemoteWarningText": "* Para uma melhor experiência, use\njoysticks ou baixe o aplicativo\n'${REMOTE_APP_NAME}' no seu\ntelefone ou tablet.",
+ "firstToFinalText": "Primeiro-a-${COUNT} Final",
+ "firstToSeriesText": "Primeiro-a-${COUNT} Séries",
+ "fiveKillText": "MATOU CINCO!!!",
+ "flawlessWaveText": "Onda Perfeita!",
+ "fourKillText": "MORTE QUÁDRUPLA!!!",
+ "friendScoresUnavailableText": "Pontuação dos amigos indisponível.",
+ "gameLeadersText": "Game ${COUNT} Líderes",
+ "gameListWindow": {
+ "cantDeleteDefaultText": "Você não pode excluir a playlist padrão!",
+ "cantEditDefaultText": "Você não pode editar a playlist padrão! Duplique ou crie uma nova.",
+ "cantShareDefaultText": "Você não pode compartilhar a playlist padrão.",
+ "deleteConfirmText": "Excluir ${LIST}?",
+ "deleteText": "Excluir\nPlaylist",
+ "duplicateText": "Duplicar\nPlaylist",
+ "editText": "Editar\nPlaylist",
+ "newText": "Nova\nPlaylist",
+ "pointsToWinText": "Pontos para Ganhar",
+ "seriesLengthText": "Tamanho da Série",
+ "showTutorialText": "Mostrar Tutorial",
+ "shuffleGameOrderText": "Ordem de Partida Aleatória",
+ "titleText": "Personalizar Playlists de ${TYPE}"
+ },
+ "gameSettingsWindow": {
+ "addGameText": "Adicionar jogo"
+ },
+ "gamesToText": "${WINCOUNT} jogos para ${LOSECOUNT}",
+ "gatherWindow": {
+ "aboutDescriptionLocalMultiplayerExtraText": "Lembre-se: qualquer dispositivo em grupo pode ter\nmais de um jogador se você tiver controles o suficiente.",
+ "aboutDescriptionText": "Use essas guias para criar um grupo.\n\nGrupos o permitem jogar com seus amigos\natravés de dispositivos diferentes.\n\nUse o botão ${PARTY} no canto superior direito\npara conversar e interagir com seu grupo.\n(em um controle, aperte ${BUTTON} enquanto estiver em um menu)",
+ "aboutText": "Sobre",
+ "addressFetchErrorText": "",
+ "appInviteMessageText": "${NAME} mandou ${COUNT} cupons ${APP_NAME}",
+ "appInviteSendACodeText": "Envie um código",
+ "appInviteTitleText": "Convite para testar ${APP_NAME}",
+ "bluetoothAndroidSupportText": "(funciona com qualquer dispositivo Android com Bluetooth)",
+ "bluetoothDescriptionText": "Hospedar/entrar em um grupo pelo Bluetooth:",
+ "bluetoothHostText": "Hospedar pelo Bluetooth",
+ "bluetoothJoinText": "Entrar pelo Bluetooth",
+ "bluetoothText": "Bluetooth",
+ "checkingText": "verificando...",
+ "copyCodeConfirmText": "Código copiado para área de transferência.",
+ "copyCodeText": "Copiar código",
+ "dedicatedServerInfoText": "Para melhores resultados, inicie um servidor dedicado. Visite bombsquadgame.com/server para saber como.",
+ "descriptionShortText": "Use a janela de \"Juntar-se\" para formar um grupo.",
+ "disconnectClientsText": "Isso irá desconectar ${COUNT}jogador(es)\nde seu grupo. Você tem certeza?",
+ "earnTicketsForRecommendingAmountText": "Os amigos ganharão ${COUNT} bilhetes ao experimentar o jogo\n(e você ganhará ${YOU_COUNT} por cada um que o fizer)",
+ "earnTicketsForRecommendingText": "Compartilhe o jogo\npara bilhetes grátis...",
+ "emailItText": "Enviar e-mail",
+ "favoritesSaveText": "Salvar como Favorito",
+ "favoritesText": "Favoritos",
+ "freeCloudServerAvailableMinutesText": "Próximo servidor na nuvem grátis disponível em ${MINUTES} minutos.",
+ "freeCloudServerAvailableNowText": "Servidor na nuvem grátis disponível!",
+ "freeCloudServerNotAvailableText": "Nenhum servidor na nuvem grátis disponível.",
+ "friendHasSentPromoCodeText": "${COUNT} bilhetes do ${APP_NAME} mandados por ${NAME}",
+ "friendPromoCodeAwardText": "Você ganhará ${COUNT} bilhetes toda vez que for usado.",
+ "friendPromoCodeExpireText": "O código expira em ${EXPIRE_HOURS} horas e só funcionará para novos jogadores.",
+ "friendPromoCodeInstructionsText": "Para usar, abra ${APP_NAME} e vá até \"Configurações-> Avançado-> Inserir Código\". \nVeja bombsquadgame.com para os links de download para todas as plataformas suportadas.",
+ "friendPromoCodeRedeemLongText": "Pode ser resgatado por ${COUNT} bilhetes gratuitos por até ${MAX_USES} pessoas.",
+ "friendPromoCodeRedeemShortText": "Pode ser resgatado por ${COUNT} bilhetes no jogo.",
+ "friendPromoCodeWhereToEnterText": "(em \"Configuração -> Avançado -> Inserir Código\")",
+ "getFriendInviteCodeText": "Obter código de convite",
+ "googlePlayDescriptionText": "Convidar jogadores do Google Play para a seu grupo:",
+ "googlePlayInviteText": "Convidar",
+ "googlePlayReInviteText": "Há ${COUNT} jogador(es) do Google Play na seu grupo\nque serão desconectados se você iniciar um novo convite.\nInclua-os neste novo convite para adicioná-los de volta.",
+ "googlePlaySeeInvitesText": "Ver convites",
+ "googlePlayText": "Google Play",
+ "googlePlayVersionOnlyText": "(Android/versão Google Play)",
+ "hostPublicPartyDescriptionText": "Hospedar um Grupo Público",
+ "hostingUnavailableText": "Host indisponível",
+ "inDevelopmentWarningText": "Nota:\n\nJogo em rede ainda é um novo recurso em desenvolvimento.\nPor enquanto, é altamente recomendável que todos\nos jogadores estejam na mesma rede Wi-Fi.",
+ "internetText": "Internet",
+ "inviteAFriendText": "Seus amigos ainda não têm o jogo? Convide-os para\nexperimentar e eles ganharão ${COUNT} bilhetes grátis.",
+ "inviteFriendsText": "Convidar amigos",
+ "joinPublicPartyDescriptionText": "Entrar em um Grupo Público",
+ "localNetworkDescriptionText": "Entrar em um Grupo Próximo (LAN, Bluetooth, etc.)",
+ "localNetworkText": "Rede Local",
+ "makePartyPrivateText": "Tornar Meu Grupo Privado",
+ "makePartyPublicText": "Tornar Meu Grupo Público",
+ "manualAddressText": "Endereço",
+ "manualConnectText": "Conectar",
+ "manualDescriptionText": "Entrar em um grupo por endereço:",
+ "manualJoinSectionText": "Entrar pelo Endereço",
+ "manualJoinableFromInternetText": "Conseguem se juntar à você pela internet?:",
+ "manualJoinableNoWithAsteriskText": "NÃO*",
+ "manualJoinableYesText": "SIM",
+ "manualRouterForwardingText": "*para resolver, tente configurar seu roteador para encaminhar a porta UDP ${PORT} para o seu endereço local",
+ "manualText": "Manual",
+ "manualYourAddressFromInternetText": "Seu endereço na internet:",
+ "manualYourLocalAddressText": "Seu endereço local:",
+ "nearbyText": "Próximo",
+ "noConnectionText": "",
+ "noPartiesAddedText": "Nenhum Grupo Adicionado",
+ "otherVersionsText": "(outras versões)",
+ "partyCodeText": "Código do Grupo",
+ "partyInviteAcceptText": "Aceitar",
+ "partyInviteDeclineText": "Recusar",
+ "partyInviteIgnoreText": "Ignorar",
+ "partyInviteText": "${NAME} convidou você\npara entrar no grupo dele(a)!",
+ "partyNameText": "Nome do Grupo",
+ "partyServerRunningText": "Seu servidor de grupo está rodando.",
+ "partySizeText": "tamanho do grupo",
+ "partyStatusCheckingText": "verificando estado...",
+ "partyStatusJoinableText": "agora podem entrar no seu grupo pela internet",
+ "partyStatusNoConnectionText": "não foi possível conectar ao servidor",
+ "partyStatusNotJoinableText": "não podem entrar no seu grupo pela internet",
+ "partyStatusNotPublicText": "seu grupo não é público",
+ "pingText": "latência",
+ "portText": "Porta",
+ "privatePartyCloudDescriptionText": "Grupo privados funcionam em servidores da nuvem dedicados; nenhuma configuração no roteador é requirida.",
+ "privatePartyHostText": "Hospedar um Grupo Privado",
+ "privatePartyJoinText": "Entrar em um Grupo Privado",
+ "privateText": "Privado",
+ "publicHostRouterConfigText": "Isso pode requerer uma configuração de porta no seu roteador. Para uma opção mais simples, crie um grupo privado.",
+ "publicText": "Público",
+ "requestingAPromoCodeText": "Solicitando um código...",
+ "sendDirectInvitesText": "Enviar Convites Diretos",
+ "shareThisCodeWithFriendsText": "Compartilhe esse código com seus amigos:",
+ "showMyAddressText": "Mostrar Meu Endereço",
+ "startHostingPaidText": "Crie Agora por ${COST}",
+ "startHostingText": "Criar",
+ "startStopHostingMinutesText": "Você pode iniciar ou interromper a hospedagem de graça nos próximos ${MINUTES} minutos.",
+ "stopHostingText": "Interromper hospedagem",
+ "titleText": "Juntar-se",
+ "wifiDirectDescriptionBottomText": "Se todos os dispositivos tiverem 'Wi-Fi Direct', poderão usar para encontrar\ne conectar um com o outro. Conectados todos os dispositivos, você pode formar grupos\naqui usando a guia 'Rede Local', como em uma rede Wi-Fi comum.\n\nPara melhores resultados, o anfitrião do Wi-Fi Direct deverá ser também o anfitrião do grupo do ${APP_NAME}.",
+ "wifiDirectDescriptionTopText": "Wi-Fi Direct pode conectar dispositivos Android sem a necessidade\nde uma rede Wi-Fi. Funciona melhor a partir da versão Android 4.2.\n\nPara usar, abra as configurações de Wi-Fi e procure por 'Wi-Fi Direct'.",
+ "wifiDirectOpenWiFiSettingsText": "Abrir as configurações de Wi-Fi",
+ "wifiDirectText": "Wi-Fi Direct",
+ "worksBetweenAllPlatformsText": "(funciona entre todas as plataformas)",
+ "youHaveBeenSentAPromoCodeText": "Mandaram um código promocional do ${APP_NAME} para você:"
+ },
+ "getTicketsWindow": {
+ "freeText": "GRÁTIS!",
+ "freeTicketsText": "Cupons Grátis",
+ "inProgressText": "Uma transação está em andamento; tente de novo em um momento.",
+ "purchasesRestoredText": "Compras restauradas.",
+ "receivedTicketsText": "Você recebeu ${COUNT} cupons!",
+ "restorePurchasesText": "Restaurar Compras",
+ "ticketPack1Text": "Pacote Pequeno de Bilhetes",
+ "ticketPack2Text": "Pacote Médio de Bilhetes",
+ "ticketPack3Text": "Pacote Grande de Bilhetes",
+ "ticketPack4Text": "Pacote Jumbo de Bilhetes",
+ "ticketPack5Text": "Pacote Mamute de Bilhetes",
+ "ticketPack6Text": "Pacote Supremo de Bilhetes",
+ "ticketsFromASponsorText": "Assista a um anúncio \ne ganhe ${COUNT} bilhetes",
+ "ticketsText": "${COUNT} bilhetes",
+ "titleText": "Obter bilhetes",
+ "unavailableLinkAccountText": "Desculpe, as compras não estão disponíveis nesta plataforma.\nComo solução alternativa, você pode vincular esta conta para\noutra conta de outra plataforma e fazer compras lá.",
+ "unavailableTemporarilyText": "Indisponível no momento; tente novamente mais tarde.",
+ "unavailableText": "Desculpe, não está disponível.",
+ "versionTooOldText": "Desculpe, esta versão do jogo é muito antiga; por favor, atualize.",
+ "youHaveShortText": "você tem ${COUNT}",
+ "youHaveText": "você possui ${COUNT} bilhetes"
+ },
+ "goldPass": {
+ "desc1InfTokensText": "Tokens infinitos.",
+ "desc2NoAdsText": "Sem anúncios.",
+ "desc3ForeverText": "Para sempre.",
+ "goldPassText": "Passe de Ouro"
+ },
+ "googlePlayPurchasesNotAvailableText": "Compras pela Google Play não estão disponíveis.\nTalvez seja necessário atualizar sua loja para isso.",
+ "googlePlayServicesNotAvailableText": "Os serviços do Google Play não estão disponíveis. \nAlgumas funções do aplicativo talvez serão desabilitadas.",
+ "googlePlayText": "Google Play",
+ "graphicsSettingsWindow": {
+ "alwaysText": "Sempre",
+ "fullScreenCmdText": "Tela cheia (Cmd-F)",
+ "fullScreenCtrlText": "Tela cheia (Ctrl-F)",
+ "fullScreenText": "Tela cheia",
+ "gammaText": "Gama",
+ "highText": "Alto",
+ "higherText": "Mais alto",
+ "lowText": "Baixo",
+ "maxFPSText": "FPS máximo",
+ "mediumText": "Médio",
+ "neverText": "Nunca",
+ "resolutionText": "Resolução",
+ "showFPSText": "Mostrar FPS",
+ "texturesText": "Texturas",
+ "titleText": "Gráficos",
+ "tvBorderText": "Borda da TV",
+ "verticalSyncText": "Sincronização vertical",
+ "visualsText": "Visuais"
+ },
+ "helpWindow": {
+ "bombInfoText": "- Bomba - \nMais forte que socos, mas pode \ncausar graves ferimentos em você mesmo.\nPara melhores resultados, atire no\ninimigo antes do pavio acabar.",
+ "canHelpText": "${APP_NAME} pode ajudar.",
+ "controllersInfoText": "Você pode jogar ${APP_NAME} com amigos em uma rede, ou todos \npodem jogar no mesmo dispositivo se tiverem controles suficientes.\n${APP_NAME} suporta muitos deles; você pode até mesmo usar\ncelulares como controle com o aplicativo '${REMOTE_APP_NAME}'.\nVeja as Configurações->Controles para mais informações.",
+ "controllersInfoTextRemoteOnly": "Você pode jogar ${APP_NAME} com amigos na rede ou \ntodos podem jogar no mesmo dispositivo usando telefones como\ncontroladores através do aplicativo gratuito '${REMOTE_APP_NAME}'.",
+ "controllersText": "Controles",
+ "controlsSubtitleText": "O seu personagem bonitinho do ${APP_NAME} tem algumas ações básicas:",
+ "controlsText": "Controles",
+ "devicesInfoText": "A versão VR de ${APP_NAME} pode ser jogada em rede com\na versão comum, portanto saquem seus celulares extras, tablets,\ne computadores e mandem ver. Pode ser útil conectar uma\nversão comum do jogo à versão VR para permitir que\npessoas de fora assistam a ação.",
+ "devicesText": "Dispositivos",
+ "friendsGoodText": "São sempre boas companhias. ${APP_NAME} é mais divertido com muitos\njogadores e pode suportar até 8 ao mesmo tempo, o que nos leva a:",
+ "friendsText": "Amigos",
+ "jumpInfoText": "- Saltar -\nSalte por cima de buracos,\npara jogar coisas mais alto e\npara expressar sua alegria.",
+ "orPunchingSomethingText": "Ou dar um soco em algo, jogar de um penhasco e explodir em pedacinhos com uma bomba grudenta.",
+ "pickUpInfoText": "- Pegar -\nAgarre bandeiras, inimigos ou\nqualquer coisa não aparafusada no\nchão. Aperte novamente para jogar.",
+ "powerupBombDescriptionText": "Permite você lançar três bombas\nseguidas ao invés de uma só.",
+ "powerupBombNameText": "Tribombas",
+ "powerupCurseDescriptionText": "É melhor você ficar longe de um desses.\n...ou será que não?",
+ "powerupCurseNameText": "Maldição",
+ "powerupHealthDescriptionText": "Restaura toda a sua energia.\nVocê jamais teria adivinhado.",
+ "powerupHealthNameText": "Kit médico",
+ "powerupIceBombsDescriptionText": "Mais fraca que a normal, mas\ndeixa seus inimigos congelados\ne bem fragilizados.",
+ "powerupIceBombsNameText": "Criobombas",
+ "powerupImpactBombsDescriptionText": "Um pouco mais fraca que a normal\nregular, mas explode ao impacto.",
+ "powerupImpactBombsNameText": "Impactobombas",
+ "powerupLandMinesDescriptionText": "Estes vêm em pacotes de 3;\nÉ útil para proteger a base ou\ndeter inimigos correndo em sua direção.",
+ "powerupLandMinesNameText": "Minas",
+ "powerupPunchDescriptionText": "Deixa seus socos poderosos, \nrápidos, melhores, fortes.",
+ "powerupPunchNameText": "Luvas de Boxe",
+ "powerupShieldDescriptionText": "Absorve um pouco de dano para\nvocê não ter passar por isso.",
+ "powerupShieldNameText": "Escudo de Energia",
+ "powerupStickyBombsDescriptionText": "Gruda em tudo que toca.\nHilaridade segue.",
+ "powerupStickyBombsNameText": "Bombas Grudentas",
+ "powerupsSubtitleText": "É claro, nenhum jogo está completo sem poderes:",
+ "powerupsText": "Poderes",
+ "punchInfoText": "- Soco -\nQuanto mais rápidos seus punhos,\nmais danos seus socos dão, então\nsaia correndo feito um louco.",
+ "runInfoText": "- Correr -\nSegure QUALQUER botão para correr. Gatilhos ou botões de ombro funcionam bem se você tiver. \nCorrer o leva a lugares mais rápido, mas dificulta na hora de virar, então fique de olho nos penhascos.",
+ "someDaysText": "Tem dias que você só quer bater em algo. Ou então explodir coisas.",
+ "titleText": "Ajuda do ${APP_NAME}",
+ "toGetTheMostText": "Para aproveitar ao máximo este jogo, você precisará de:",
+ "welcomeText": "Bem-vindo ao ${APP_NAME}!"
+ },
+ "holdAnyButtonText": "",
+ "holdAnyKeyText": "",
+ "hostIsNavigatingMenusText": "- ${HOST} está navegando pelos menus como se não houvesse amanhã -",
+ "importPlaylistCodeInstructionsText": "Use o seguinte código para importar essa playlist:",
+ "importPlaylistSuccessText": "Playlist '${NAME}' importada ${TYPE}",
+ "importText": "Importar",
+ "importingText": "Importando...",
+ "inGameClippedNameText": "No jogo será\n\"${NAME}\"",
+ "inboxText": "Caixa de entrada",
+ "installDiskSpaceErrorText": "ERRO: Não pôde concluir a instalação.\nVocê deve estar com pouco espaço no seu dispositivo.\nApague algumas coisas e tente novamente.",
+ "internal": {
+ "arrowsToExitListText": "aperte ${LEFT} ou ${RIGHT} para sair da lista",
+ "buttonText": "botão",
+ "cantKickHostError": "Você não pode expulsar o anfitrião.",
+ "chatBlockedText": "O chat de ${NAME} está bloqueado por ${TIME} segundo(s).",
+ "connectedToGameText": "Conectou-se a '${NAME}'",
+ "connectedToPartyText": "Entrou no grupo de ${NAME}!",
+ "connectingToPartyText": "Conectando...",
+ "connectionFailedHostAlreadyInPartyText": "A conexão falhou; anfitrião está em outro grupo.",
+ "connectionFailedPartyFullText": "Conexão falhou; o grupo está cheio.",
+ "connectionFailedText": "A conexão falhou.",
+ "connectionFailedVersionMismatchText": "A conexão falhou; anfitrião está rodando uma versão diferente do jogo.\nTenha certeza de que ambos estejam atualizados e tente novamente.",
+ "connectionRejectedText": "Conexão negada.",
+ "controllerConnectedText": "${CONTROLLER} conectado.",
+ "controllerDetectedText": "1 controle detectado.",
+ "controllerDisconnectedText": "${CONTROLLER} desconectado.",
+ "controllerDisconnectedTryAgainText": "${CONTROLLER} desconectado. Por favor, tente novamente.",
+ "controllerForMenusOnlyText": "Este controle não pode ser usado para jogar; apenas para navegar pelo menu.",
+ "controllerReconnectedText": "${CONTROLLER} reconectado.",
+ "controllersConnectedText": "${COUNT} controles conectados.",
+ "controllersDetectedText": "${COUNT} controles detectados.",
+ "controllersDisconnectedText": "${COUNT} controles desconectados.",
+ "corruptFileText": "Arquivos corrompidos detectados. Tente reinstalar o jogo ou mande um e-mail para ${EMAIL}",
+ "errorPlayingMusicText": "Erro ao tocar música: ${MUSIC}",
+ "errorResettingAchievementsText": "Não foi possível reiniciar as conquistas online; por favor, tente novamente mais tarde.",
+ "hasMenuControlText": "${NAME} possui o controle do menu.",
+ "incompatibleNewerVersionHostText": "Anfitrião do grupo está usando uma versão mais nova do jogo.\nAtualize seu jogo e tente novamente.",
+ "incompatibleVersionHostText": "Anfitrião está rodando uma versão diferente do jogo.\nTenha certeza de que ambos estejam atualizados e tente de novo.",
+ "incompatibleVersionPlayerText": "${NAME} está rodando uma versão diferente do jogo.\nTenha certeza de que ambos estejam atualizados e tente novamente.",
+ "invalidAddressErrorText": "Erro: endereço invalido.",
+ "invalidNameErrorText": "Erro: nome inválido.",
+ "invalidPortErrorText": "Erro: porta inválida.",
+ "invitationSentText": "Convite enviado.",
+ "invitationsSentText": "${COUNT} convites enviados.",
+ "joinedPartyInstructionsText": "Alguém entrou no seu grupo.\nAperte 'Jogar' para começar.",
+ "keyboardText": "Teclado",
+ "kickIdlePlayersKickedText": "Expulsando ${NAME} por não mostrar movimento.",
+ "kickIdlePlayersWarning1Text": "${NAME} será expulso em ${COUNT} segundos se continuar imóvel.",
+ "kickIdlePlayersWarning2Text": "(você pode desativar isto em Configurações-> Avançado)",
+ "leftGameText": "Saiu de '${NAME}'",
+ "leftPartyText": "Você saiu do grupo de ${NAME}.",
+ "noMusicFilesInFolderText": "A pasta não contém arquivos de música.",
+ "playerJoinedPartyText": "${NAME} entrou no grupo!",
+ "playerLeftPartyText": "${NAME} saiu do grupo.",
+ "rejectingInviteAlreadyInPartyText": "Recusando convite (já está em um grupo).",
+ "serverRestartingText": "Servidor reiniciando. Por favor, reconecte-se em um momento...",
+ "serverShuttingDownText": "Servidor está desligando...",
+ "signInErrorText": "Erro ao entrar.",
+ "signInNoConnectionText": "Não pôde entrar. (sem conexão à internet?)",
+ "telnetAccessDeniedText": "ERRO: o usuário não liberou acesso telnet.",
+ "timeOutText": "(tempo acaba em ${TIME} segundos)",
+ "touchScreenJoinWarningText": "Você entrou com o modo touchscreen.\nSe isso foi um erro, toque em 'Menu->Sair do Jogo'.",
+ "touchScreenText": "Touchscreen",
+ "unableToCompleteTryAgainText": "Não é possível concluir isso agora.\nPor favor, tente novamente.",
+ "unableToResolveHostText": "Erro: não é possível resolver a fonte do anfitrião",
+ "unavailableNoConnectionText": "Isso não está disponível agora (sem conexão à internet?)",
+ "vrOrientationResetCardboardText": "Use para reiniciar a orientação do VR.\nPara jogar, você precisa de um controle externo.",
+ "vrOrientationResetText": "Orientação do VR reiniciada.",
+ "willTimeOutText": "(o tempo acabará se ficar imóvel)"
+ },
+ "inventoryText": "Inventário",
+ "jumpBoldText": "SALTAR",
+ "jumpText": "Saltar",
+ "keepText": "Manter",
+ "keepTheseSettingsText": "Manter essas configurações?",
+ "keyboardChangeInstructionsText": "Pressione duas vezes o espaço para alterar os teclados.",
+ "keyboardNoOthersAvailableText": "Nenhum outro teclado disponível.",
+ "keyboardSwitchText": "Alterando teclado para \"${NAME}\".",
+ "kickOccurredText": "${NAME} foi expulso.",
+ "kickQuestionText": "Expulsar ${NAME}?",
+ "kickText": "Expulsar",
+ "kickVoteCantKickAdminsText": "O Administrador não pode ser expulso.",
+ "kickVoteCantKickSelfText": "Você não pode se expulsar.",
+ "kickVoteFailedNotEnoughVotersText": "Não há jogadores suficientes para uma votação.",
+ "kickVoteFailedText": "A votação para expulsão falhou.",
+ "kickVoteStartedText": "Uma votação para expulsar ${NAME} foi iniciada.",
+ "kickVoteText": "Votação para expulsar",
+ "kickVotingDisabledText": "A votação para expulsar está desativada.",
+ "kickWithChatText": "Escreva ${YES} no chat para sim e ${NO} para não.",
+ "killsTallyText": "${COUNT} abates",
+ "killsText": "Abates",
+ "kioskWindow": {
+ "easyText": "Fácil",
+ "epicModeText": "Modo Épico",
+ "fullMenuText": "Menu Completo",
+ "hardText": "Difícil",
+ "mediumText": "Médio",
+ "singlePlayerExamplesText": "Exemplos de Um jogador / Cooperativo",
+ "versusExamplesText": "Exemplos de Versus"
+ },
+ "languageSetText": "O idioma agora é \"${LANGUAGE}\".",
+ "lapNumberText": "Volta ${CURRENT}/${TOTAL}",
+ "lastGamesText": "(últimas ${COUNT} partidas)",
+ "leaderboardsText": "Classificação",
+ "league": {
+ "allTimeText": "Todos os Tempos",
+ "currentSeasonText": "Temporada atual (${NUMBER})",
+ "leagueFullText": "Liga ${NAME}",
+ "leagueRankText": "Classificação da liga",
+ "leagueText": "Liga",
+ "rankInLeagueText": "#${RANK}, ${NAME} Liga${SUFFIX}",
+ "seasonEndedDaysAgoText": "A temporada acabou ${NUMBER} dia(s) atrás.",
+ "seasonEndsDaysText": "A temporada acaba em ${NUMBER} dia(s).",
+ "seasonEndsHoursText": "A temporada acaba em ${NUMBER} hora(s).",
+ "seasonEndsMinutesText": "Temporada acaba em ${NUMBER} minuto(s).",
+ "seasonText": "Temporada ${NUMBER}",
+ "tournamentLeagueText": "Você deve alcançar a liga ${NAME} para entrar neste torneio.",
+ "trophyCountsResetText": "A contagem de troféus reiniciará na próxima temporada.",
+ "upToDateBonusDescriptionText": "Os jogadores que estiverem jogando uma versão recente do\njogo recebem um bônus de ${PERCENT}% aqui.",
+ "upToDateBonusText": "Bônus por Estar Atualizado"
+ },
+ "learnMoreText": "Saiba Mais",
+ "levelBestScoresText": "Melhores pontuações no ${LEVEL}",
+ "levelBestTimesText": "Melhores tempos no ${LEVEL}",
+ "levelIsLockedText": "${LEVEL} está bloqueado.",
+ "levelMustBeCompletedFirstText": "${LEVEL} deve ser concluído primeiro.",
+ "levelText": "Nível ${NUMBER}",
+ "levelUnlockedText": "Nível desbloqueado!",
+ "livesBonusText": "Bônus de Vida",
+ "loadingText": "carregando",
+ "loadingTryAgainText": "Carregando; tente novamente daqui a pouco...",
+ "macControllerSubsystemBothText": "Ambos (não recomendado)",
+ "macControllerSubsystemClassicText": "Clássico",
+ "macControllerSubsystemDescriptionText": "Tente ativar isso se os controles não estiverem funcionando",
+ "macControllerSubsystemMFiNoteText": "Feito para iOS/Mac controle detectado ;\nvocê pode querer ativar isso em Configurações -> Controles",
+ "macControllerSubsystemMFiText": "Feito para iOS/Mac",
+ "macControllerSubsystemTitleText": "Suporte para controle",
+ "mainMenu": {
+ "creditsText": "Créditos",
+ "demoMenuText": "Menu de demonstração",
+ "endGameText": "Terminar Jogo",
+ "endTestText": "Terminar Teste",
+ "exitGameText": "Sair do Jogo",
+ "exitToMenuText": "Sair para o menu?",
+ "howToPlayText": "Como Jogar",
+ "justPlayerText": "(Somente ${NAME})",
+ "leaveGameText": "Sair do Jogo",
+ "leavePartyConfirmText": "Deseja realmente sair do grupo?",
+ "leavePartyText": "Sair do Grupo",
+ "quitText": "Sair",
+ "resumeText": "Retomar",
+ "settingsText": "Configurações"
+ },
+ "makeItSoText": "Aplicar",
+ "mapSelectGetMoreMapsText": "Obter Mais Mapas...",
+ "mapSelectText": "Selecionar...",
+ "mapSelectTitleText": "${GAME} mapas",
+ "mapText": "Mapa",
+ "maxConnectionsText": "Limite de Conexões",
+ "maxPartySizeText": "Tamanho Máximo do Grupo",
+ "maxPlayersText": "Limite de Jogadores",
+ "merchText": "Produtos BombSquad!",
+ "modeArcadeText": "Modo Arcade",
+ "modeClassicText": "Modo Clássico",
+ "modeDemoText": "Modo Demonstração",
+ "moreSoonText": "Mais novidades em breve...",
+ "mostDestroyedPlayerText": "Player Mais Destruído",
+ "mostValuablePlayerText": "Jogador Mais Valioso",
+ "mostViolatedPlayerText": "Jogador Mais Violado",
+ "mostViolentPlayerText": "Jogador Mais Violento",
+ "moveText": "Mover",
+ "multiKillText": "MATOU ${COUNT}!!!",
+ "multiPlayerCountText": "${COUNT} jogadores",
+ "mustInviteFriendsText": "Nota: você deve convidar amigos no\npainel \"${GATHER}\" ou adicionar\ncontroles para jogar no multijogador.",
+ "nameBetrayedText": "${NAME} traiu ${VICTIM}.",
+ "nameDiedText": "${NAME} morreu.",
+ "nameKilledText": "${NAME} espancou ${VICTIM}.",
+ "nameNotEmptyText": "Nome não pode estar vazio!",
+ "nameScoresText": "${NAME} fez um ponto!",
+ "nameSuicideKidFriendlyText": "${NAME} acidentalmente morreu.",
+ "nameSuicideText": "${NAME} cometeu suicídio.",
+ "nameText": "Nome",
+ "nativeText": "Nativo",
+ "newExclaimText": "Novo!",
+ "newPersonalBestText": "Novo recorde pessoal!",
+ "newTestBuildAvailableText": "Uma nova versão de teste está disponível! (${VERSION} teste ${BUILD}).\nAdquira em ${ADDRESS}",
+ "newText": "Novo",
+ "newVersionAvailableText": "Uma nova versão de ${APP_NAME} está disponível! (${VERSION})",
+ "nextAchievementsText": "Próximas conquistas:",
+ "nextLevelText": "Próximo nível",
+ "noAchievementsRemainingText": "- nenhum",
+ "noContinuesText": "(sem continuar)",
+ "noExternalStorageErrorText": "Armazenamento externo não encontrado",
+ "noGameCircleText": "Erro: não conectado no GameCircle",
+ "noMessagesText": "Sem mensagens.",
+ "noPluginsInstalledText": "Nenhum Plugin instalado",
+ "noScoresYetText": "Ainda sem pontuação.",
+ "noServersFoundText": "Servidores não encontrados.",
+ "noThanksText": "Não, obrigado",
+ "noTournamentsInTestBuildText": "Atenção: As pontuações dos torneios desta compilação de teste serão ignoradas.",
+ "noValidMapsErrorText": "Nenhum mapa válido encontrado para este tipo de jogo.",
+ "notEnoughPlayersRemainingText": "Não há jogadores suficientes sobrando; saia e comece um novo jogo.",
+ "notEnoughPlayersText": "Você precisa de pelo menos ${COUNT} jogadores para começar o jogo!",
+ "notEnoughTicketsText": "Sem bilhetes suficientes!",
+ "notNowText": "Agora não",
+ "notSignedInErrorText": "Você deve iniciar sessão primeiro.",
+ "notSignedInGooglePlayErrorText": "Você deve iniciar sessão no Google Play primeiro.",
+ "notSignedInText": "sem sessão iniciada",
+ "notUsingAccountText": "Aviso: Ignorando a conta ${SERVICE}.\nVá em 'Conta -> Entrar com ${SERVICE}' se quiser usá-la.",
+ "nothingIsSelectedErrorText": "Nada foi selecionado!",
+ "numberText": "#${NUMBER}",
+ "offText": "Desativado",
+ "okText": "Certo",
+ "onText": "Ativado",
+ "oneMomentText": "Um Momento...",
+ "onslaughtRespawnText": "${PLAYER} vai renascer na onda ${WAVE}",
+ "openMeText": "Abra-Me!",
+ "openNowText": "Abrir Agora",
+ "openText": "Abrir",
+ "orText": "${A} ou ${B}",
+ "otherText": "Outro...",
+ "outOfText": "(#${RANK} de ${ALL})",
+ "ownFlagAtYourBaseWarning": "Sua própria bandeira deve estar\nem sua base para fazer um ponto!",
+ "partyWindow": {
+ "chatMessageText": "Mensagem do Chat",
+ "emptyText": "Seu grupo está vazio",
+ "hostText": "(anfitrião)",
+ "sendText": "Enviar",
+ "titleText": "Seu Grupo"
+ },
+ "pausedByHostText": "(pausado pelo anfitrião)",
+ "perfectWaveText": "Onda Perfeita!",
+ "pickUpText": "Pegar",
+ "playModes": {
+ "coopText": "Cooperativo",
+ "freeForAllText": "Todos contra todos",
+ "multiTeamText": "Equipes múltiplas",
+ "singlePlayerCoopText": "Um jogador / Cooperativo",
+ "teamsText": "Equipes"
+ },
+ "playText": "Jogar",
+ "playWindow": {
+ "oneToFourPlayersText": "1-4 jogadores",
+ "titleText": "Jogar",
+ "twoToEightPlayersText": "2-8 jogadores"
+ },
+ "playerCountAbbreviatedText": "${COUNT}p",
+ "playerDelayedJoinText": "${PLAYER} entrará no começo da próxima rodada.",
+ "playerInfoText": "Info. do jogador",
+ "playerLeftText": "${PLAYER} saiu da partida.",
+ "playerLimitReachedText": "Limite de ${COUNT} jogadores atingido; entrada não permitida.",
+ "playerProfilesWindow": {
+ "cantDeleteAccountProfileText": "Você não pode excluir o seu perfil.",
+ "deleteButtonText": "Excluir\nPerfil",
+ "deleteConfirmText": "Excluir '${PROFILE}'?",
+ "editButtonText": "Editar\nPerfil",
+ "explanationText": "(personalize nomes e aparências do jogador para esta conta)",
+ "newButtonText": "Novo\nPerfil",
+ "titleText": "Perfis de Jogadores"
+ },
+ "playerText": "Jogador",
+ "playlistNoValidGamesErrorText": "Esta playlist não contém nenhum jogo desbloqueado válido.",
+ "playlistNotFoundText": "playlist não encontrada",
+ "playlistText": "Playlist",
+ "playlistsText": "Playlists",
+ "pleaseRateText": "Se você está curtindo ${APP_NAME}, por favor, dê um tempinho\npara avaliar e comentar. Isso nos dá uma opinião útil\ne ajuda no desenvolvimento do jogo.\n\nobrigado!\n-eric",
+ "pleaseWaitText": "Por favor, aguarde...",
+ "pluginClassLoadErrorText": "Erro ao carregar a classe de um plugin '${PLUGIN}': ${ERROR}",
+ "pluginInitErrorText": "Erro ao inicializar plugin '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Configurações de Plugins",
+ "pluginsAutoEnableNewText": "Ativar Automaticamente Novos Plugins",
+ "pluginsDetectedText": "Novo(s) plugin(s) detetados. Reinicie o jogo para ativá-los ou configure-os nas configurações.",
+ "pluginsDisableAllText": "Desativar todos os Plugins!",
+ "pluginsEnableAllText": "Ativar todos os Plugins!",
+ "pluginsRemovedText": "${NUM} plugin(s) não foram encontrados.",
+ "pluginsText": "Plugins",
+ "practiceText": "Praticar",
+ "pressAnyButtonPlayAgainText": "Aperte qualquer botão para jogar novamente...",
+ "pressAnyButtonText": "Aperte qualquer botão para continuar...",
+ "pressAnyButtonToJoinText": "aperte qualquer botão para entrar...",
+ "pressAnyKeyButtonPlayAgainText": "Aperte qualquer tecla/botão para jogar novamente...",
+ "pressAnyKeyButtonText": "Aperte qualquer tecla/botão para continuar...",
+ "pressAnyKeyText": "Aperte qualquer tecla...",
+ "pressJumpToFlyText": "** Aperte saltar repetidamente para voar **",
+ "pressPunchToJoinText": "aperte SOCO para entrar...",
+ "pressToOverrideCharacterText": "aperte ${BUTTONS} para substituir o seu personagem",
+ "pressToSelectProfileText": "aperte ${BUTTONS} para selecionar um jogador",
+ "pressToSelectTeamText": "aperte ${BUTTONS} para selecionar uma equipe",
+ "promoCodeWindow": {
+ "codeText": "Código",
+ "enterText": "Entrar"
+ },
+ "promoSubmitErrorText": "Erro ao enviar código; Verifique a sua conexão com a internet!",
+ "ps3ControllersWindow": {
+ "macInstructionsText": "Desligue a energia na parte traseira do seu PS3, verifique se\no Bluetooth do seu Mac está ativado, em seguida conecte o seu controle\nno seu Mac através de um cabo USB para emparelhar os dois. A partir daí, você\npode usar o botão home do controle para conectá-lo ao seu Mac\nseja por fio (USB) ou sem fio (Bluetooth).\n\nEm alguns Macs, uma senha pode ser solicitada ao emparelhar.\nSe isso acontecer, consulte o seguinte tutorial ou o Google para obter ajuda.\n\n\n\n\nOs controles de PS3 conectados sem fio devem aparecer na lista de\ndispositivos em Preferências do Sistema > Bluetooth. Você pode precisar remover\nda lista quando você quiser usar com o seu PS3 novamente.\n\nTambém certifique-se de desconectá-los do Bluetooth quando não estiver\nusando ou a bateria ficará acabando.\n\nBluetooth deve suportar até sete dispositivos conectados,\nembora a sua capacidade possa variar.",
+ "ouyaInstructionsText": "Para usar um controle de PS3 com seu OUYA, basta conectá-lo com um cabo USB\numa vez para emparelhá-lo. Fazer isso pode desconectar seus outros controles, por\nisso você deve, em seguida, reiniciar seu OUYA e desconectar o cabo USB.\n\nA partir de então você deve ser capaz de usar o botão HOME do controle para\nconectá-lo sem fio. Quando você terminar de jogar, pressione o botão HOME\npor 10 segundos para desligar o controle; caso contrário, pode permanecer ligado\ne desperdiçar bateria.",
+ "pairingTutorialText": "vídeo tutorial do emparelhamento",
+ "titleText": "Usando Controles de PS3 com ${APP_NAME}:"
+ },
+ "punchBoldText": "SOCAR",
+ "punchText": "Socar",
+ "purchaseForText": "Compre por ${PRICE}",
+ "purchaseGameText": "Comprar jogo",
+ "purchaseNeverAvailableText": "Desculpe, as compras não estão disponíveis nesta versão.\nTente entrar em sua conta em outra plataforma e fazer compras nela",
+ "purchaseNotAvailableText": "Esta compra não está disponível.",
+ "purchasingText": "Comprando...",
+ "quitGameText": "Sair do ${APP_NAME}?",
+ "quittingIn5SecondsText": "Saindo em 5 segundos...",
+ "randomPlayerNamesText": "João,Maria,Anderson,Lucas,Roberto,César,Felipe,Pedro,Zézinho,Jaílson,Hélvio,Plínio,Clara,Lorena,Beatriz,Wandernilson,Marcos,Michele,Taís,Florentina,Tadeu,Teodoro,Gabriel,Joelma,Chimbinha,Lula,Dilma,Leonardo,Irene,Samanta,Gioconda,Guilhermina,Guilherme,Frederico,Bartolomeu,Dionísio,Diógenes,Haroldo,Ronaldinho,Ricardo,Selma,Bruna,Vanderlei,Danilo,Celso,Vitória,Denise,Samuel,Daniel,Gigi,Manuel,Wiz,Gretchen,Creusa,Chico,Leôncio,Leônidas,Washington,Cleusa,José,Joane,Severino,Casé,Carlos,Davi,Bianca,Clautila,Dafne,Jorge,Sandra,Armando,Basílio,Rochele,Camila,Débora,Rafael,Jonatan,Clodomiro,Clodovil,Vera,Simão,Raíssa,Toni,Tânia,Regina,Bela,Max,Maximiliano,Claudinei,Cláudio,Luciana,Anália,Aparecida,Marcelo,Flávio,Emílio,Tiago,Hebe,Ana,Beth,Gugu,Vítor,Nílton,Maurício,Marciano,Belquior,Clemente,Rosa,Rose,Rosemar,Gabriela,Sérgio,Antônio,Ben,Ivan,jamim,Abreu,Luís,Elton,Fabiana,Waldir,Wilson,Tainá,Tainara,Xuxa,Sacha,Teotônio,Téo,Valdirene,Laurindo,Priscila,Joaquim,Estevão,Gilmar,Erick,Gilson,Romário,Dunga,Ludmila,Luciano,Gilvan,Tamara,Carla,Zezé,Fernando,Fernanda,Adegesto,Acheropita,Anatalino,Lino,Araci,Marluci,Eusébio,Darcília,Dignatario,Ernesto,Cássio,Conrado,Fábio,Heitor,Ivan,Murilo,Andressa,Mateus,Otávio,Helena,Laís,Lavínia,Leila,Letícia,Nair,Henrique,Lara,Diogo,Diego,Geniclécio,Serafim,Lisa,Inri,Eusébio,Gerônimo,Bernardo,Bernadete,Henriete,Eliete,Fudêncio,Peruíbe,Tomás,Tomashedisso,Giovana,Prieto,Gabriely,Suélen,Jamily,Jamil,Geraldo,Nazareth,Forníco,Ícaro,Breno,Bruno,Cilmara,Nilza,Caio,Borges,Cleimara,Janeclécio,Iram,Tico,Teco,Genilson,Marlos,William,Nando,Nanda,Isabel,Jamal,Elias,Félix,Caroline,Carolina,Vilma,Rafaely,Tonho,Túnica,Miguel,Jones,Juan,Anastácio,Francisco,Xavier",
+ "randomText": "Aleatório",
+ "rankText": "Classificação",
+ "ratingText": "Avaliação",
+ "reachWave2Text": "Chegue a onda 2 para pontuar.",
+ "readyText": "pronto",
+ "recentText": "Recente",
+ "remoteAppInfoShortText": "${APP_NAME} é mais divertido quando é jogado com família e amigos.\nConecte um ou mais controles de hardware ou instale o aplicativo \n${REMOTE_APP_NAME} em telefones ou tablets para usá-los \ncomo controles.",
+ "remote_app": {
+ "app_name": "BombSquad Remote",
+ "app_name_short": "BSRemote",
+ "button_position": "Posição do botão",
+ "button_size": "Tamanho do botão",
+ "cant_resolve_host": "Não foi possível localizar o anfitrião.",
+ "capturing": "Aguardando...",
+ "connected": "Conectado.",
+ "description": "Use seu telefone ou tablet como controle com BombSquad.\nAté 8 dispositivos podem se conectar de uma vez para uma loucura épica de multijogador local em uma TV ou tablet.",
+ "disconnected": "Desconectado pelo servidor.",
+ "dpad_fixed": "fixo",
+ "dpad_floating": "Móvel",
+ "dpad_position": "Posição do direcional",
+ "dpad_size": "Tamanho do direcional",
+ "dpad_type": "Tipo de direcional",
+ "enter_an_address": "Insira um endereço",
+ "game_full": "A partida está cheia ou não aceita conexões.",
+ "game_shut_down": "A partida foi fechada.",
+ "hardware_buttons": "Botões físicos",
+ "join_by_address": "Entrar por endereço...",
+ "lag": "Lag: ${SECONDS} segundos",
+ "reset": "Restaurar padrão",
+ "run1": "Correr 1",
+ "run2": "Correr 2",
+ "searching": "Procurando partidas...",
+ "searching_caption": "Clique em uma partida para entrar.\nVeja se está na mesma rede Wi-Fi do jogo.",
+ "start": "Iniciar",
+ "version_mismatch": "Versão incompatível.\nCertifique-se que o BombSquad e o BombSquad Remote\nestão atualizados e tente novamente."
+ },
+ "removeInGameAdsText": "Desbloqueie \"${PRO}\" na loja para remover anúncios dentro do jogo.",
+ "removeInGameAdsTokenPurchaseText": "OFERTA POR TEMPO LIMITADO: Compre QUALQUER pacote de tokens para remover anúncios no jogo.",
+ "renameText": "Renomear",
+ "replayEndText": "Terminar replay",
+ "replayNameDefaultText": "Replay do último jogo",
+ "replayReadErrorText": "Erro ao ler arquivo de replay.",
+ "replayRenameWarningText": "Renomeie \"${REPLAY}\" após uma partida caso queira salvá-lo; caso contrário será sobrescrito.",
+ "replayVersionErrorText": "Desculpe, este replay foi feito em uma versão\ndiferente do jogo e não pode ser usado.",
+ "replayWatchText": "Ver replay",
+ "replayWriteErrorText": "Erro ao gravar arquivo de replay.",
+ "replaysText": "Replays",
+ "reportPlayerExplanationText": "Use este e-mail para denunciar trapaças, linguagem inapropriada, ou outro comportamento ruim.\nPor favor, descreva abaixo:",
+ "reportThisPlayerCheatingText": "Trapaça",
+ "reportThisPlayerLanguageText": "Linguagem inapropriada",
+ "reportThisPlayerReasonText": "O que gostaria de denunciar?",
+ "reportThisPlayerText": "Denunciar este jogador",
+ "requestingText": "Solicitando...",
+ "restartText": "Reiniciar",
+ "retryText": "Tentar novamente",
+ "revertText": "Reverter",
+ "runText": "Correr",
+ "saveText": "Salvar",
+ "scanScriptsErrorText": "Erro(s) de verificação de scripts; consulte o registro para obter mais detalhes.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} e ${NUM} e outro(s) módulo(s) precisam de atualizações paro o api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} precisa ser atualizado para api${API}.",
+ "scoreChallengesText": "Desafios de Pontuação",
+ "scoreListUnavailableText": "Lista de pontuação indisponível.",
+ "scoreText": "Pontuação",
+ "scoreUnits": {
+ "millisecondsText": "Milisegundos",
+ "pointsText": "Pontos",
+ "secondsText": "Segundos"
+ },
+ "scoreWasText": "(foi ${COUNT})",
+ "selectText": "Selecionar",
+ "sendInfoDescriptionText": "Isto envia informações de sua conta e de estado de aplicativo para o desenvolvedor.\nPor favor inclua seu nome ou razão por ter feito isso.",
+ "seriesWinLine1PlayerText": "VENCEU A",
+ "seriesWinLine1TeamText": "VENCEU A",
+ "seriesWinLine1Text": "VENCEU A",
+ "seriesWinLine2Text": "SÉRIE!",
+ "settingsWindow": {
+ "accountText": "Conta",
+ "advancedText": "Avançado",
+ "audioText": "Áudio",
+ "controllersText": "Controles",
+ "graphicsText": "Gráficos",
+ "playerProfilesMovedText": "Nota: os perfis de jogador foram movidos à janela de Conta no menu principal.",
+ "titleText": "Configurações"
+ },
+ "settingsWindowAdvanced": {
+ "alwaysUseInternalKeyboardDescriptionText": "(um simples teclado virtual compatível com controles para edição de texto)",
+ "alwaysUseInternalKeyboardText": "Sempre usar o teclado interno",
+ "benchmarksText": "Benchmarks e Testes de Estresse",
+ "devToolsText": "Ferramentas de Desenvolvedor",
+ "disableCameraGyroscopeMotionText": "Desativar movimento giroscópio da câmera",
+ "disableCameraShakeText": "Desativar tremida de câmera",
+ "disableThisNotice": "(você pode desativar este aviso em configurações avançadas)",
+ "enterPromoCodeText": "Inserir Código",
+ "forTestingText": "Nota: esses valores são somente para teste e serão perdidos assim que o aplicativo for fechado.",
+ "helpTranslateText": "As traduções do ${APP_NAME} são sustentadas pelo esforço\npúblico da comunidade. Se você gostaria de ajudar ou corrigir\numa tradução, siga o link a abaixo. Agradeço desde já!",
+ "insecureConnectionsDescriptionText": "não recomendado, mas talvez permita você poder jogar online\nde países ou redes restritas",
+ "insecureConnectionsText": "Usar conexões inseguras",
+ "kickIdlePlayersText": "Expulsar jogadores inativos",
+ "kidFriendlyModeText": "Modo para crianças (violência reduzida, etc)",
+ "languageText": "Idioma",
+ "moddingGuideText": "Guia para Modificar o Jogo",
+ "moddingToolsText": "Ferramentas de Modificação",
+ "mustRestartText": "Você deve reiniciar o jogo para isso ter efeito.",
+ "netTestingText": "Teste de Conexão",
+ "resetText": "Redefinir",
+ "sendInfoText": "Enviar Informação",
+ "showBombTrajectoriesText": "Mostrar trajetórias da bomba",
+ "showDemosWhenIdleText": "Mostrar demonstrações quando ocioso",
+ "showDeprecatedLoginTypesText": "Mostrar tipos de logins ultrapassados",
+ "showDevConsoleButtonText": "Mostrar opção de desenvolvedor",
+ "showInGamePingText": "Mostrar latência no jogo",
+ "showPlayerNamesText": "Mostrar nomes dos jogadores",
+ "showUserModsText": "Mostrar Caminho da Pasta de Modificações",
+ "titleText": "Avançado",
+ "translationEditorButtonText": "Abrir site de Traduções do ${APP_NAME}",
+ "translationFetchErrorText": "estado da tradução indisponível",
+ "translationFetchingStatusText": "verificando estado da tradução...",
+ "translationInformMe": "Avise me quando meu idioma precisar de atualizações",
+ "translationNoUpdateNeededText": "o seu idioma está atualizado; woohoo!",
+ "translationUpdateNeededText": "** o seu idioma precisa de atualizações!! **",
+ "vrTestingText": "Teste de RV"
+ },
+ "shareText": "Compartilhar",
+ "sharingText": "Compartilhando...",
+ "showText": "Mostrar",
+ "signInForPromoCodeText": "Você deve iniciar sia sessão em uma conta para que os códigos promocionais funcionem.",
+ "singleGamePlaylistNameText": "Somente ${GAME}",
+ "singlePlayerCountText": "1 jogador",
+ "sizeLargeText": "Grande",
+ "sizeMediumText": "Médio",
+ "sizeSmallText": "Pequeno",
+ "soloNameFilterText": "Solo ${NAME}",
+ "soundtrackTypeNames": {
+ "CharSelect": "Seleção de personagens",
+ "Chosen One": "O Escolhido",
+ "Epic": "Partidas no modo épico",
+ "Epic Race": "Corrida épica",
+ "FlagCatcher": "Capture a bandeira",
+ "Flying": "Pensamentos felizes",
+ "Football": "Futebol americano",
+ "ForwardMarch": "Assalto",
+ "GrandRomp": "Conquista",
+ "Hockey": "Hóquei",
+ "Keep Away": "Fique longe",
+ "Marching": "Casa dos degrais",
+ "Menu": "Menu principal",
+ "Onslaught": "Embate",
+ "Race": "Corrida",
+ "Scary": "Rei da Colina",
+ "Scores": "Tela de pontuação",
+ "Survival": "Eliminatória",
+ "ToTheDeath": "Mata-mata",
+ "Victory": "Tela de Pontuação Final"
+ },
+ "spaceKeyText": "espaço",
+ "statsText": "Estatísticas",
+ "stopRemindingMeText": "Pare de me lembrar",
+ "storagePermissionAccessText": "É necessário acesso ao armazenamento",
+ "store": {
+ "alreadyOwnText": "Você já possui ${NAME}!",
+ "bombSquadProNameText": "${APP_NAME} Pro",
+ "bombSquadProNewDescriptionText": "• Remove anúncios no jogo\n• Desbloqueia mais opções do jogo\n• E também inclui:",
+ "buyText": "Comprar",
+ "charactersText": "Personagens",
+ "comingSoonText": "Em breve...",
+ "extrasText": "Extras",
+ "holidaySpecialText": "Especial de feriado",
+ "howToSwitchCharactersText": "(vá para \"${SETTINGS} -> ${PLAYER_PROFILES}\" para atribuir e personalizar personagens)",
+ "howToUseIconsText": "(crie perfis globais - na janela de conta - para usá-los)",
+ "howToUseMapsText": "(use estes mapas em suas próprias playlist de equipes/todos contra todos)",
+ "iconsText": "Ícones",
+ "loadErrorText": "Não foi possível carregar a página.\nVerifique a sua conexão com a internet.",
+ "loadingText": "carregando",
+ "mapsText": "Mapas",
+ "miniGamesText": "Minijogos",
+ "oneTimeOnlyText": "(somente uma vez)",
+ "purchaseAlreadyInProgressText": "A compra deste item já está em progresso.",
+ "purchaseConfirmText": "Comprar ${ITEM}?",
+ "purchaseNotValidError": "A compra não é valida.\nEntre em contato com ${EMAIL} se isso foi um erro.",
+ "purchaseText": "Comprar",
+ "saleBundleText": "Venda de pacotes!",
+ "saleExclaimText": "Promoção!",
+ "salePercentText": "(${PERCENT}% de desconto)",
+ "saleText": "PROMOÇÃO",
+ "searchText": "Buscar",
+ "teamsFreeForAllGamesText": "Jogos em equipes / Todos contra todos",
+ "totalWorthText": "*** Apenas ${TOTAL_WORTH}! ***",
+ "upgradeQuestionText": "Atualizar?",
+ "winterSpecialText": "Especial de Inverno",
+ "youOwnThisText": "- você tem isso -"
+ },
+ "storeDescriptionText": "Loucura total com até 8 jogadores!\n\nExploda seus amigos (ou o computador) em um torneio de minijogos desafiadores como Capture a bandeira, Hóquei bombástico e Mata-mata em câmera lenta épica!\n\nControles normais e controles externos possibilitam jogar com até 8 pessoas no mesmo aparelho; você também pode usar outros aparelhos como controles externos usando o aplicativo grátis ‘BombSquad Remote’!\n\nCuidado com as bombas!\n\nDê uma olhada em www.froemling.net/bombsquad para ficar ligado nas novidades.",
+ "storeDescriptions": {
+ "blowUpYourFriendsText": "Exploda seus amigos.",
+ "competeInMiniGamesText": "Compita em minijogos que vão de corridas a voos.",
+ "customize2Text": "Personalize personagens, minijogos e até mesmo a trilha sonora.",
+ "customizeText": "Personalize personagens e crie sua própria playlist de minijogos.",
+ "sportsMoreFunText": "Esportes são mais divertidos com explosivos.",
+ "teamUpAgainstComputerText": "Una-se a outros contra o computador."
+ },
+ "storeText": "Loja",
+ "submitText": "Enviar",
+ "submittingPromoCodeText": "Enviando código promocional...",
+ "successText": "Sucesso!",
+ "supportEmailText": "Se estiver passando por problemas com o aplicativo, \nenvie um e-mail para ${EMAIL}.",
+ "teamNamesColorText": "Nome/Cores das Equipes...",
+ "telnetAccessGrantedText": "Acesso ao Telnet ativado.",
+ "telnetAccessText": "Acesso ao Telnet detectado; permitir?",
+ "testBuildErrorText": "Esta versão de teste não é mais compatível; por favor, confira uma nova versão.",
+ "testBuildText": "Versão de Teste",
+ "testBuildValidateErrorText": "Não foi possível validar esta versão. (sem conexão com a internet?)",
+ "testBuildValidatedText": "Versão de Teste Validada; Divirta-se!",
+ "thankYouText": "Obrigado pelo seu apoio! Aproveite o jogo!!",
+ "threeKillText": "MATOU TRÊS!!",
+ "ticketsDescriptionText": "Os bilhetes podem ser usados para desbloquear personagens,\nmapas, minijogos e muito mais na loja.\n\nOs bilhetes podem ser encontrados em baús obtidos através\nde campanhas, torneios e conquistas.",
+ "timeBonusText": "Bônus de tempo",
+ "timeElapsedText": "Tempo Decorrido",
+ "timeExpiredText": "Tempo Expirado",
+ "timeSuffixDaysText": "${COUNT}d",
+ "timeSuffixHoursText": "${COUNT}h",
+ "timeSuffixMinutesText": "${COUNT}m",
+ "timeSuffixSecondsText": "${COUNT}s",
+ "tipText": "Dica",
+ "titleText": "BombSquad",
+ "titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Obter tokens",
+ "notEnoughTokensText": "Não há Tokens suficientes!",
+ "numTokensText": "${COUNT} Tokens",
+ "openNowDescriptionText": "Você possui tokens suficientes\npara abri-lo agora - você não\nprecisa esperar.",
+ "shinyNewCurrencyText": "A nova moeda brilhante do BombSquad.",
+ "tokenPack1Text": "Pacote de tokens pequenos",
+ "tokenPack2Text": "Pacote de tokens médio",
+ "tokenPack3Text": "Pacote Grande de Tokens",
+ "tokenPack4Text": "Pacote de Tokens Jumbo",
+ "tokensDescriptionText": "Os tokens são usados para acelerar a abertura de baús\ne para outros recursos do jogo e da conta.\n\nVocê pode ganhar tokens no jogo ou comprá-los\nem pacotes. Ou adquira um Gold Pass para tokens infinitos\ne nunca mais se preocupe com eles.",
+ "youHaveGoldPassText": "Você tem um Passe Dourado.\nTodas as compras de tokens são gratuitas.\nAproveite!"
+ },
+ "topFriendsText": "Melhores amigos",
+ "tournamentCheckingStateText": "Verificando o estado do torneio; espere um momento...",
+ "tournamentEndedText": "Este torneio foi finalizado. Um novo começará em breve.",
+ "tournamentEntryText": "Entrada para o torneio",
+ "tournamentFinalStandingsText": "Classificação final",
+ "tournamentResultsRecentText": "Resultados recentes do torneio.",
+ "tournamentStandingsText": "Classificação do torneio",
+ "tournamentText": "Torneio",
+ "tournamentTimeExpiredText": "O tempo do torneio expirou.",
+ "tournamentsDisabledWorkspaceText": "Os torneios são desabilitados quando os espaços de trabalho estão ativos.\nPara reativar os torneios, desative seu espaço de trabalho e reinicie.",
+ "tournamentsText": "Torneios",
+ "translations": {
+ "characterNames": {
+ "Agent Johnson": "Agente Johnson",
+ "B-9000": "B-9000",
+ "Bernard": "Bernardo",
+ "Bones": "Ossos",
+ "Butch": "Butch",
+ "Easter Bunny": "Coelho da Páscoa",
+ "Flopsy": "Flopsy",
+ "Frosty": "Frosty",
+ "Gretel": "Gretel",
+ "Grumbledorf": "Grumboldor",
+ "Jack Morgan": "Jack Morgan",
+ "Kronk": "Kronk",
+ "Lee": "Lee",
+ "Lucky": "Lucky",
+ "Mel": "Mel",
+ "Middle-Man": "Homenzinho",
+ "Minimus": "Minimus",
+ "Pascal": "Pascal",
+ "Pixel": "Pixel",
+ "Sammy Slam": "Sammy Slam",
+ "Santa Claus": "Papai Noel",
+ "Snake Shadow": "Serpente Sombria",
+ "Spaz": "Spaz",
+ "Taobao Mascot": "Mascote Taobao",
+ "Todd McBurton": "Todd McBurton",
+ "Zoe": "Zoe",
+ "Zola": "Zola"
+ },
+ "coopLevelNames": {
+ "${GAME} Training": "Treinamento de ${GAME}",
+ "Infinite ${GAME}": "${GAME} Infinito",
+ "Infinite Onslaught": "Embate Infinito",
+ "Infinite Runaround": "Evasiva Infinita",
+ "Onslaught Training": "Embate Treinamento",
+ "Pro ${GAME}": "${GAME} Pro",
+ "Pro Football": "Futebol americano Pro",
+ "Pro Onslaught": "Embate Pro",
+ "Pro Runaround": "Evasiva Pro",
+ "Rookie ${GAME}": "${GAME} Amador",
+ "Rookie Football": "Futebol Americano Amador",
+ "Rookie Onslaught": "Embate Amador",
+ "The Last Stand": "O Sobrevivente",
+ "Uber ${GAME}": "${GAME} Elite",
+ "Uber Football": "Futebol Americano Elite",
+ "Uber Onslaught": "Embate Elite",
+ "Uber Runaround": "Evasiva Elite"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} Bilhetes",
+ "${C} Tokens": "${C} Tokens",
+ "Chest": "Baú",
+ "L1 Chest": "Baú L1",
+ "L2 Chest": "Baú L2",
+ "L3 Chest": "Baú L3",
+ "L4 Chest": "Baú L4",
+ "L5 Chest": "Baú L5",
+ "L6 Chest": "Baú L6",
+ "Unknown Chest": "Baú Desconhecido"
+ },
+ "gameDescriptions": {
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Seja o escolhido por um período de tempo para vencer.\nElimine o escolhido para se tornar ele.",
+ "Bomb as many targets as you can.": "Bombardeie o máximo de alvos que você puder.",
+ "Carry the flag for ${ARG1} seconds.": "Carregue a bandeira por ${ARG1} segundos.",
+ "Carry the flag for a set length of time.": "Carregue a bandeira por um tempo determinado.",
+ "Crush ${ARG1} of your enemies.": "Esmague ${ARG1} de seus inimigos.",
+ "Defeat all enemies.": "Derrote todos inimigos.",
+ "Dodge the falling bombs.": "Esquive das bombas caindo.",
+ "Final glorious epic slow motion battle to the death.": "Épica gloriosa batalha final até a morte em câmera lenta.",
+ "Gather eggs!": "Recolha os ovos!",
+ "Get the flag to the enemy end zone.": "Pegue a bandeira no final da zona inimiga.",
+ "How fast can you defeat the ninjas?": "Quão rápido você pode derrotar os ninjas?",
+ "Kill a set number of enemies to win.": "Mate um determinado número de inimigos para vencer.",
+ "Last one standing wins.": "Último em pé vence.",
+ "Last remaining alive wins.": "Último sobrevivente vence.",
+ "Last team standing wins.": "Última equipe de pé vence.",
+ "Prevent enemies from reaching the exit.": "Impeça que os inimigos alcancem a saída.",
+ "Reach the enemy flag to score.": "Alcance a bandeira inimiga para marcar.",
+ "Return the enemy flag to score.": "Retorne a bandeira inimiga para marcar.",
+ "Run ${ARG1} laps.": "Corra ${ARG1} voltas.",
+ "Run ${ARG1} laps. Your entire team has to finish.": "Corra ${ARG1} voltas. Toda a sua equipe precisa terminar.",
+ "Run 1 lap.": "Corra 1 volta.",
+ "Run 1 lap. Your entire team has to finish.": "Corra 1 volta. Toda a sua equipe precisa terminar.",
+ "Run real fast!": "Corra muito rápido!",
+ "Score ${ARG1} goals.": "Marque ${ARG1} gols.",
+ "Score ${ARG1} touchdowns.": "Marque ${ARG1} touchdowns.",
+ "Score a goal.": "Marque um gol.",
+ "Score a touchdown.": "Marque um touchdown.",
+ "Score some goals.": "Marque alguns gols.",
+ "Secure all ${ARG1} flags.": "Proteja todas as ${ARG1} bandeiras.",
+ "Secure all flags on the map to win.": "Proteja todas as bandeiras no mapa para vencer.",
+ "Secure the flag for ${ARG1} seconds.": "Proteja a bandeira por ${ARG1} segundos.",
+ "Secure the flag for a set length of time.": "Proteja a bandeira por um determinado período de tempo.",
+ "Steal the enemy flag ${ARG1} times.": "Roube a bandeira do inimigo ${ARG1} vezes.",
+ "Steal the enemy flag.": "Roube a bandeira do inimigo.",
+ "There can be only one.": "Só pode existir um.",
+ "Touch the enemy flag ${ARG1} times.": "Toque a bandeira inimiga ${ARG1} vezes.",
+ "Touch the enemy flag.": "Toque a bandeira inimiga.",
+ "carry the flag for ${ARG1} seconds": "carregue a bandeira por ${ARG1} segundos",
+ "kill ${ARG1} enemies": "mate ${ARG1} inimigos",
+ "last one standing wins": "último em pé vence",
+ "last team standing wins": "última equipe de pé vence",
+ "return ${ARG1} flags": "retorne ${ARG1} bandeiras.",
+ "return 1 flag": "retorne 1 bandeira",
+ "run ${ARG1} laps": "corra ${ARG1} voltas",
+ "run 1 lap": "corra 1 volta",
+ "score ${ARG1} goals": "marque ${ARG1} gols",
+ "score ${ARG1} touchdowns": "marque ${ARG1} touchdowns",
+ "score a goal": "marque um gol",
+ "score a touchdown": "marque um touchdown",
+ "secure all ${ARG1} flags": "Proteja todas ${ARG1} bandeiras",
+ "secure the flag for ${ARG1} seconds": "Proteja a bandeira por ${ARG1} segundos",
+ "touch ${ARG1} flags": "toque ${ARG1} bandeiras",
+ "touch 1 flag": "toque uma bandeira"
+ },
+ "gameNames": {
+ "Assault": "Assalto",
+ "Capture the Flag": "Capture a Bandeira",
+ "Chosen One": "O Escolhido",
+ "Conquest": "Conquista",
+ "Death Match": "Mata-mata",
+ "Easter Egg Hunt": "Caça aos ovos de Páscoa",
+ "Elimination": "Eliminatória",
+ "Football": "Futebol americano",
+ "Hockey": "Hóquei",
+ "Keep Away": "Fique longe",
+ "King of the Hill": "Rei da colina",
+ "Meteor Shower": "Chuva de meteoros",
+ "Ninja Fight": "Luta ninja",
+ "Onslaught": "Embate",
+ "Race": "Corrida",
+ "Runaround": "Evasiva",
+ "Target Practice": "Treino de Alvo",
+ "The Last Stand": "O Sobrevivente"
+ },
+ "inputDeviceNames": {
+ "Keyboard": "Teclado",
+ "Keyboard P2": "Teclado P2"
+ },
+ "languages": {
+ "Arabic": "Árabe",
+ "Belarussian": "Bielorrusso",
+ "Chinese": "Chinês - Simplificado ",
+ "ChineseSimplified": "Chinês - Simplificado",
+ "ChineseTraditional": "Chinês - Tradicional",
+ "Croatian": "Croata",
+ "Czech": "Tcheco",
+ "Danish": "Dinamarquês",
+ "Dutch": "Holandês",
+ "English": "Inglês",
+ "Esperanto": "Esperanto",
+ "Filipino": "Filipino",
+ "Finnish": "Finlandês",
+ "French": "Francês",
+ "German": "Alemão",
+ "Gibberish": "Embromation",
+ "Greek": "Grego",
+ "Hindi": "Hindu",
+ "Hungarian": "Húngaro",
+ "Indonesian": "Indonésio",
+ "Italian": "Italiano",
+ "Japanese": "Japonês",
+ "Korean": "Coreano",
+ "Malay": "Malaio",
+ "Persian": "Persa",
+ "PirateSpeak": "Piratês",
+ "Polish": "Polonês",
+ "Portuguese": "Português",
+ "PortugueseBrazil": "Português - Brasil",
+ "PortuguesePortugal": "Português - Portugal",
+ "Romanian": "Romeno",
+ "Russian": "Russo",
+ "Serbian": "Sérvio",
+ "Slovak": "Eslovaco",
+ "Spanish": "Espanhol",
+ "SpanishLatinAmerica": "Espanhol - América Latina",
+ "SpanishSpain": "Espanhol - Espanha",
+ "Swedish": "Sueco",
+ "Tamil": "tâmil",
+ "Thai": "Tailandês",
+ "Turkish": "Turco",
+ "Ukrainian": "Ucraniano",
+ "Venetian": "Veneziano",
+ "Vietnamese": "Vietnamita"
+ },
+ "leagueNames": {
+ "Bronze": "Bronze",
+ "Diamond": "Diamante",
+ "Gold": "Ouro",
+ "Silver": "Prata"
+ },
+ "mapsNames": {
+ "Big G": "Grande G",
+ "Bridgit": "Bridgit",
+ "Courtyard": "Pátio",
+ "Crag Castle": "Castelo Crag",
+ "Doom Shroom": "Cogumelo da Morte",
+ "Football Stadium": "Estádio de Futebol",
+ "Happy Thoughts": "Pensamentos felizes",
+ "Hockey Stadium": "Estádio de hóquei",
+ "Lake Frigid": "Lago Frígido",
+ "Monkey Face": "Cara de macaco",
+ "Rampage": "Tumulto",
+ "Roundabout": "Evasiva",
+ "Step Right Up": "Degrau acima",
+ "The Pad": "The Pad",
+ "Tip Top": "Tip Top",
+ "Tower D": "Torre D",
+ "Zigzag": "Ziguezague"
+ },
+ "playlistNames": {
+ "Just Epic": "Somente épico",
+ "Just Sports": "Somente esportes"
+ },
+ "scoreNames": {
+ "Flags": "Bandeiras",
+ "Goals": "Gols",
+ "Score": "Placar",
+ "Survived": "Sobreviveu",
+ "Time": "Tempo",
+ "Time Held": "Tempo realizado"
+ },
+ "serverResponses": {
+ "A code has already been used on this account.": "Um código já está sendo usado nesta conta.",
+ "A reward has already been given for that address.": "Uma recompensa já foi dada para este endereço.",
+ "Account linking successful!": "A conta foi vinculada com êxito!",
+ "Account unlinking successful!": "Conta desvinculada com êxito!",
+ "Accounts are already linked.": "As contas já estão vinculadas.",
+ "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Não foi possível verificar a visualização do anúncio.\nCertifique-se de que está executando uma versão oficial e atualizada do jogo.",
+ "An error has occurred; (${ERROR})": "Ocorreu um erro; (${ERROR})",
+ "An error has occurred; please contact support. (${ERROR})": "Ocorreu um erro; entre em contato com a assistência. (${ERROR})",
+ "An error has occurred; please contact support@froemling.net.": "Ocorreu um erro; por favor, entre em contato com support@froemling.net.",
+ "An error has occurred; please try again later.": "Aconteceu um erro; tente novamente mais tarde.",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Tem certeza de que deseja vincular estas contas?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nIsso não poderá ser desfeito!",
+ "BombSquad Pro unlocked!": "BombSquado Pro desbloqueado!",
+ "Can't link 2 accounts of this type.": "Não é possível vincular duas contas deste tipo.",
+ "Can't link 2 diamond league accounts.": "Não é possível vincular duas contas de liga diamante.",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "Impossível vincular; ultrapassaria o máximo de ${COUNT} contas vinculadas.",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Trapaça detectada; pontuação e prêmios suspensos por ${COUNT} dias.",
+ "Could not establish a secure connection.": "Não foi possível estabelecer uma conexão segura.",
+ "Daily maximum reached.": "Máximo diário atingido.",
+ "Daily sign-in reward": "Recompensa de inscrição diária",
+ "Entering tournament...": "Entrando no torneio...",
+ "Invalid code.": "Código invalido.",
+ "Invalid payment; purchase canceled.": "Pagamento inválido; compra cancelada.",
+ "Invalid promo code.": "Código promocional invalido.",
+ "Invalid purchase.": "Compra inválida.",
+ "Invalid tournament entry; score will be ignored.": "Entrada errada de treinamento; pontuação será ignorada.",
+ "Item unlocked!": "Item unlocked",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "VINCULAÇÃO NEGADA. ${ACCOUNT} contém\ndados significativos que TODOS SERÃO PERDIDOS.\nVocê pode vincular na ordem oposta se desejar\n(e em vez disso perca os dados desta conta)",
+ "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Vincular conta ${ACCOUNT} com essa conta?\nTodo o progresso em ${ACCOUNT} será perdido.\nIsso não pode ser desfeito. Tem certeza?",
+ "Longer streaks lead to better rewards.": "Sequências mais longas levam a recompensas melhores.",
+ "Max number of playlists reached.": "Número máximo de playlists alcançado.",
+ "Max number of profiles reached.": "Número máximo de perfis alcançado.",
+ "Maximum friend code rewards reached.": "Máximo de recompensas de códigos de amigos atingido.",
+ "Message is too long.": "A mensagem é muito longa.",
+ "New tournament result!": "Novo resultado do torneio!",
+ "No servers are available. Please try again soon.": "Nenhum servidor está disponível. Por favor, tente novamente mais tarde.",
+ "No slots available. Free a slot and try again.": "Nenhum slot disponível. Libere um slot e tente novamente.",
+ "Profile \"${NAME}\" upgraded successfully.": "Perfil \"${NAME}\" atualizado com sucesso.",
+ "Profile could not be upgraded.": "Perfil não pôde ser criado.",
+ "Purchase successful!": "Compra feita com êxito!",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Recebeu ${COUNT} tickets por entrar.\nVolte amanhã para receber ${TOMORROW_COUNT}.",
+ "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "A funcionalidade do servidor não é mais compatível nesta versão do jogo;\nPor favor, atualize-o para uma versão mais recente.",
+ "Sorry, there are no uses remaining on this code.": "Desculpe, não há mais usos remanescentes neste código.",
+ "Sorry, this code has already been used.": "Desculpe, este código já foi usado.",
+ "Sorry, this code has expired.": "Desculpe, este código já expirou.",
+ "Sorry, this code only works for new accounts.": "Desculpe, este código só funciona para novas contas.",
+ "Sorry, this has expired.": "Desculpe, isso expirou.",
+ "Still searching for nearby servers; please try again soon.": "Ainda à procura por servidores próximos; tente novamente mais tarde.",
+ "Streak: ${NUM} days": "Sequência: ${NUM} dias",
+ "Temporarily unavailable; please try again later.": "Não disponível; por favor, tente novamente mais tarde.",
+ "The tournament ended before you finished.": "O torneio acabou antes de você terminar.",
+ "This account cannot be unlinked for ${NUM} days.": "Esta conta não pode ser desvinculada por ${NUM} dias.",
+ "This code cannot be used on the account that created it.": "Este código não pode ser usado pela conta que o criou.",
+ "This is currently unavailable; please try again later.": "Isso está atualmente indisponível; por favor tente mais tarde.",
+ "This requires version ${VERSION} or newer.": "Isso requer a versão ${VERSION} ou novo.",
+ "Tournaments disabled due to rooted device.": "Torneios desativados devido ao dispositivo estar rooteado.",
+ "Tournaments require ${VERSION} or newer": "Torneios requerem ${VERSION} ou mais recente",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Desvincular ${ACCOUNT} dessa conta?\nTodo o progresso em ${ACCOUNT} será reiniciado.\n(exceto por conquistas em alguns casos)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ATENÇÃO: denúncias sobre você estar usando hack foram feitas.\nContas que usam hack serão banidas. Por favor, jogue limpo.",
+ "Wait reduced!": "Tempo de espera reduzido!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Aviso: Esta versão do jogo é limitada a dados da conta antigos; algumas coisas podem aparecer ausentes ou desatualizadas.\nPor favor atualize para uma versão mais nova do jogo para ver os dados mais recentes da sua conta.",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Gostaria de vincular a sua conta de dispositivo com esta?\n\nA sua conta de dispositivo é ${ACCOUNT1}\nEsta conta é ${ACCOUNT2}\n\nIsso permitirá que você mantenha seu progresso atual.\nAviso: isso não pode ser desfeito!",
+ "You already own this!": "Você já possui isso.",
+ "You can join in ${COUNT} seconds.": "Você poderá entrar em ${COUNT} segundos",
+ "You don't have enough tickets for this!": "Você não tem bilhetes suficientes para isso!",
+ "You don't own that.": "Você não comprou isso.",
+ "You got ${COUNT} tickets!": "Você obteve ${COUNT} tickets!",
+ "You got ${COUNT} tokens!": "Você ganhou ${COUNT} tokens!",
+ "You got a ${ITEM}!": "Você ganhou ${ITEM}!",
+ "You got a chest!": "Você ganhou um baú!",
+ "You got an achievement reward!": "Você ganhou uma recompensa por conquista!",
+ "You have been promoted to a new league; congratulations!": "Você foi promovido a uma nova liga; parabéns!",
+ "You lost a chest! (All your chest slots were full)": "Você perdeu um baú! (Todos os seus espaços de baú estavam cheios)",
+ "You must update the app to view this.": "Você deve atualizar o aplicativo para visualizar isso.",
+ "You must update to a newer version of the app to do this.": "Você deve atualizar para uma nova versão do aplicativo para fazer isso.",
+ "You must update to the newest version of the game to do this.": "Você deve atualizar para a nova versão do jogo para fazer isso.",
+ "You must wait a few seconds before entering a new code.": "Você deve esperar alguns segundos antes de inserir um novo código.",
+ "You placed #${RANK} in a tournament!": "Você ficou com #${RANK} em um torneio!",
+ "You ranked #${RANK} in the last tournament. Thanks for playing!": "Você teve a classificação #${RANK} no último torneio. Obrigado por jogar!",
+ "Your account was rejected. Are you signed in?": "Sua conta foi rejeitada. Você iniciou a sessão?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Suas visualizações de anúncio não estão registrando. As opções de anúncio serão limitadas por um tempo.",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Sua copia do jogo foi modificada.\nReverta as modificações e tente novamente.",
+ "Your friend code was used by ${ACCOUNT}": "Seu código de amigo foi usado por ${ACCOUNT}"
+ },
+ "settingNames": {
+ "1 Minute": "1 minuto",
+ "1 Second": "1 segundo",
+ "10 Minutes": "10 minutos",
+ "2 Minutes": "2 minutos",
+ "2 Seconds": "2 segundos",
+ "20 Minutes": "20 minutos",
+ "4 Seconds": "4 segundos",
+ "5 Minutes": "5 minutos",
+ "8 Seconds": "8 segundos",
+ "Allow Negative Scores": "Permitir Pontuação Negativa",
+ "Balance Total Lives": "Saldo Total de Vidas",
+ "Bomb Spawning": "Bombas Surgindo",
+ "Chosen One Gets Gloves": "O escolhido obtém luvas",
+ "Chosen One Gets Shield": "O escolhido obtém escudo",
+ "Chosen One Time": "Hora do Escolhido",
+ "Enable Impact Bombs": "Ativar bombas de impacto",
+ "Enable Triple Bombs": "Ativar tribombas",
+ "Entire Team Must Finish": "A equipe inteira precisa terminar",
+ "Epic Mode": "Modo Épico",
+ "Flag Idle Return Time": "Tempo para Retornar a Bandeira Inativa",
+ "Flag Touch Return Time": "Tempo para Retornar a Bandeira",
+ "Hold Time": "Tempo de retenção",
+ "Kills to Win Per Player": "Mortes para Ganhar Por Jogador",
+ "Laps": "Voltas",
+ "Lives Per Player": "Vidas por jogador",
+ "Long": "Longo",
+ "Longer": "Mais longo",
+ "Mine Spawning": "Minas surgindo",
+ "No Mines": "Sem minas",
+ "None": "Nenhum",
+ "Normal": "Normal",
+ "Pro Mode": "Modo Pro",
+ "Respawn Times": "Contagem de Renascimentos",
+ "Score to Win": "Pontuação para Ganhar",
+ "Short": "Curto",
+ "Shorter": "Mais curto",
+ "Solo Mode": "Modo Solo",
+ "Target Count": "Número de Alvos",
+ "Time Limit": "Limite de Tempo"
+ },
+ "statements": {
+ "${TEAM} is disqualified because ${PLAYER} left": "${TEAM} está em desvantagem porque ${PLAYER} saiu",
+ "Killing ${NAME} for skipping part of the track!": "Matando ${NAME} por cortar o caminho!",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Aviso para ${NAME}: o turbo / spam de botão faz você sair."
+ },
+ "teamNames": {
+ "Bad Guys": "Inimigos",
+ "Blue": "Azul",
+ "Good Guys": "Aliados",
+ "Red": "Vermelho"
+ },
+ "tips": {
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Se você bater, correr, pular e girar em perfeita sincronia poderá matar\nem um único golpe e garantir o respeito eterno de seus amigos.",
+ "Always remember to floss.": "Lembre-se de sempre usar fio dental.",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Crie perfis de jogadores para você e seus amigos com\nseus nomes preferidos e aparências ao invés de usar os aleatórios.",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Caixas amaldiçoadas o transformam em uma bomba-relógio.\nA única cura é agarrar rapidamente um pacote de saúde.",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Apesar de suas aparências, as habilidades de todos os personagens são idênticas,\nentão basta escolher qualquer um que você mais se assemelha.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Não fique muito convencido com o escudo de energia; você ainda pode ser arremessado de um penhasco.",
+ "Don't run all the time. Really. You will fall off cliffs.": "Não corra o tempo todo. Sério. Você vai cair de penhascos.",
+ "Don't spin for too long; you'll become dizzy and fall.": "Não gire por muito tempo; você vai ficar tonto e cair!",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Pressione qualquer botão para correr. (Botões de gatilho funcionam bem, se os tiver)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Mantenha pressionado qualquer botão para correr. Você vai alcançar lugares mais\nrapidamente, mas não vai fazer curvas muito bem, por isso esteja atento para penhascos.",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "As bombas de gelo não são muito poderosas, mas elas congelam\nquem for atingido, deixando-os vulneráveis a estilhaçamentos.",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Se alguém te levantar, soque-o e ele irá te largar.\nIsso também funciona na vida real.",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Se você está sem controles, instale o aplicativo '${REMOTE_APP_NAME}'\nem seus dispositivos móveis para usá-los como controles.",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Se você tiver uma bomba grudenta presa em você, salte e gire em círculos. Você pode\nsacudir a bomba para fora ou, pelo menos, seus últimos momentos serão divertidos.",
+ "If you kill an enemy in one hit you get double points for it.": "Se você matar um inimigo com um golpe, você obtêm o dobro de pontos por isso.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Se você pegar uma maldição, sua única esperança de sobrevivência é\nencontrar um poder de saúde nos próximos segundos.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "Se você ficar em um lugar, você está frito. Corra e se esquive para sobreviver.",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Se você tem muitos jogadores entrando e saindo, ligue 'Expulsar Jogadores Ociosos Automaticamente'\nnas configurações no caso de alguém esquecer de deixar o jogo.",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Se seu dispositivo ficar muito quente ou você quiser conservar bateria,\nabaixe os \"Visuais\" ou \"Resolução\" nas Configurações-> Graficos",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Se sua taxa de quadros estiver baixa, tente diminuir a resolução\nou visuais nas configurações gráficas do jogo.",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "Em Capture a bandeira, a sua própria bandeira deve estar em sua base para marcar. Se a outra\nequipe está prestes a marcar, roubar a sua bandeira pode ser uma boa maneira de detê-los.",
+ "In hockey, you'll maintain more speed if you turn gradually.": "No hóquei, você manterá mais velocidade se girar gradualmente.",
+ "It's easier to win with a friend or two helping.": "É mais fácil ganhar com um ou dois amigos ajudando.",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "Apenas salte enquanto você está arremessando para conseguir bombas até os níveis mais altos.",
+ "Land-mines are a good way to stop speedy enemies.": "Minas terrestres são uma boa maneira de parar inimigos rápidos.",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Muitas coisas podem ser apanhadas e lançadas, incluindo outros jogadores. Jogar\nos seus inimigos de penhascos pode ser uma estratégia eficaz e emocionalmente gratificante.",
+ "No, you can't get up on the ledge. You have to throw bombs.": "Não, você não pode levantar-se na borda. Você tem que jogar bombas.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Jogadores podem entrar e sair no meio da maioria dos jogos,\ne você também pode ligar ou desligar controles quando quiser.",
+ "Practice using your momentum to throw bombs more accurately.": "Pratique usando a inércia para arremessar bombas com maior precisão.",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Socos fazem mais danos quanto mais rápido os punhos estão se movendo,\nentão tente correr, pular e girar como um louco.",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Corra para frente e para trás antes de arremessar uma bomba\npara 'chicoteá-la' e jogá-la longe.",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Elimine um grupo de inimigos ao\ndesencadear uma bomba perto de uma caixa de TNT.",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "A cabeça é a área mais vulnerável, portanto uma bomba grudenta\nna cuca geralmente significa fim de jogo.",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Este nível nunca termina, mas uma alta pontuação aqui\nfaz você ganhar respeito eterno por todo o mundo.",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Força de arremesso baseia-se na direção em que você está pressionando.\nPara arremessar algo suavemente na sua frente, não pressione qualquer direção.",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Cansado das músicas? Troque-as pelas suas próprias!\nVeja em Configurações-> Áudio-> Músicas",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Experimente 'cozinhar' bombas por um segundo ou dois antes de jogá-las.",
+ "Try tricking enemies into killing eachother or running off cliffs.": "Tente enganar inimigos para se matarem ou se jogarem do precipício.",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "Use o botão pegar para pegar a bandeira < ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "Balance para trás e para frente para fazer arremessos distantes..",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Você pode 'mirar' seus socos girando para esquerda ou direita.\nIsso é útil para derrubar inimigos das beiradas ou marcar no hóquei.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Você pode avaliar quando uma bomba vai explodir baseado na\ncor das faíscas do pavio: amarelo..laranja..vermelho..BOOM.",
+ "You can throw bombs higher if you jump just before throwing.": "Você pode jogar as bombas mais alto ao saltar logo antes de arremessar.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Você se fere quando você bate sua cabeça em coisas,\nassim tente não bater sua cabeça em coisas.",
+ "Your punches do much more damage if you are running or spinning.": "Seus socos causam muito mais dano se você estiver correndo ou girando."
+ }
+ },
+ "trophiesRequiredText": "Isso necessita de pelo menos ${NUMBER} troféus.",
+ "trophiesText": "Troféus",
+ "trophiesThisSeasonText": "Troféus nesta temporada",
+ "tutorial": {
+ "cpuBenchmarkText": "Rodando o tutorial numa velocidade MUITO baixa (para testar o processador)",
+ "phrase01Text": "Olá!",
+ "phrase02Text": "Bem-vindo ao ${APP_NAME}!",
+ "phrase03Text": "Aqui estão algumas dicas para controlar seu personagem:",
+ "phrase04Text": "Muitas coisas no ${APP_NAME} são baseadas na física.",
+ "phrase05Text": "Por exemplo, quando você soca,..",
+ "phrase06Text": "..o dano é baseado na velocidade de seus punhos.",
+ "phrase07Text": "Viu? Nós não estávamos nos movendo então mal fez cócegas no ${NAME}.",
+ "phrase08Text": "Agora vamos pular e girar para ganhar mais velocidade.",
+ "phrase09Text": "Ah, assim é melhor.",
+ "phrase10Text": "Correr ajuda também.",
+ "phrase11Text": "Mantenha QUALQUER botão pressionado para correr.",
+ "phrase12Text": "Para socos adicionais incríveis, tente correr e girar.",
+ "phrase13Text": "Ops! foi mal aí, ${NAME}.",
+ "phrase14Text": "Você pode pegar e jogar coisas como bandeiras.. ou ${NAME}.",
+ "phrase15Text": "Por último, há bombas.",
+ "phrase16Text": "Arremessar bombas requer prática.",
+ "phrase17Text": "Ai! Não foi um arremesso muito bom.",
+ "phrase18Text": "Movimentar-se te ajuda a arremessar mais longe.",
+ "phrase19Text": "Saltar ajuda você a arremessar mais alto.",
+ "phrase20Text": "Gire e corra e suas bombas irão ainda mais longe.",
+ "phrase21Text": "Calcular o tempo da explosão pode ser complicado.",
+ "phrase22Text": "Droga!",
+ "phrase23Text": "Tente deixar o pavio queimar por um ou dois segundos.",
+ "phrase24Text": "Eba! No tempo ideal.",
+ "phrase25Text": "Bem, acho que é só isso.",
+ "phrase26Text": "Agora vai lá e arrebenta!",
+ "phrase27Text": "Lembre-se do seu treinamento e você voltará vivo!",
+ "phrase28Text": "...bem, talvez...",
+ "phrase29Text": "Boa sorte!",
+ "randomName1Text": "Fernando",
+ "randomName2Text": "Henrique",
+ "randomName3Text": "Guilherme",
+ "randomName4Text": "Carlos",
+ "randomName5Text": "Felipe",
+ "skipConfirmText": "Você deseja realmente pular o tutorial? Toque ou aperte confirmar.",
+ "skipVoteCountText": "${COUNT}/${TOTAL} votos para pular",
+ "skippingText": "pulando o tutorial...",
+ "toSkipPressAnythingText": "(pressione qualquer coisa para pular o tutorial)"
+ },
+ "twoKillText": "MATOU DOIS!",
+ "uiScaleText": "Tamanho da Interface",
+ "unavailableText": "indisponível",
+ "unclaimedPrizesText": "Você possui prêmios não resgatados!",
+ "unconfiguredControllerDetectedText": "Controle não configurado detectado:",
+ "unlockThisInTheStoreText": "Isto deve ser desbloqueado na loja.",
+ "unlockThisProfilesText": "Para criar mais que ${NUM} perfis, você precisa:",
+ "unlockThisText": "Para desbloquear isso:",
+ "unsupportedControllerText": "Desculpe, o controlador \"${NAME}\" não é compatível.",
+ "unsupportedHardwareText": "Desculpe, este hardware não é suportado por esta versão do jogo.",
+ "upFirstText": "Em primeiro lugar:",
+ "upNextText": "O próximo jogo em ${COUNT}:",
+ "updatingAccountText": "Atualizando sua conta...",
+ "upgradeText": "Aprimorar",
+ "upgradeToPlayText": "Atualize para \"${PRO}\" na loja para jogar.",
+ "useDefaultText": "Usar Padrão",
+ "userSystemScriptsCreateText": "Criar Scripts do Sistema do Usuário",
+ "userSystemScriptsDeleteText": "Deletar Scripts do Sistema do Usuário",
+ "usesExternalControllerText": "Este jogo usa um controle externo para entrada.",
+ "usingItunesText": "Usando o app de música para a trilha sonora",
+ "v2AccountLinkingInfoText": "Para vincular contas V2, use o botão 'Gerenciar conta'.",
+ "v2AccountRequiredText": "Isso requer uma conta V2. Atualize sua conta e tente novamente.",
+ "validatingTestBuildText": "Validando Versão de Teste...",
+ "viaText": "via",
+ "victoryText": "Vitória!",
+ "voteDelayText": "Você não pode começar outra votação por ${NUMBER} segundo(s)",
+ "voteInProgressText": "Uma votação já está em progresso.",
+ "votedAlreadyText": "Você já votou",
+ "votesNeededText": "${NUMBER} votos necessários",
+ "vsText": "vs.",
+ "waitingForHostText": "(esperando ${HOST} continuar)",
+ "waitingForPlayersText": "esperando os jogadores entrarem...",
+ "waitingInLineText": "Esperando na fila (o grupo está cheio)...",
+ "watchAVideoText": "Ver um vídeo",
+ "watchAnAdText": "Assistir uma propaganda.",
+ "watchWindow": {
+ "deleteConfirmText": "Excluir \"${REPLAY}\"?",
+ "deleteReplayButtonText": "Excluir\nReplay",
+ "myReplaysText": "Meus replays",
+ "noReplaySelectedErrorText": "Nenhum replay selecionado.",
+ "playbackSpeedText": "Velocidade de reprodução: ${SPEED}",
+ "renameReplayButtonText": "Renomear\nReplay",
+ "renameReplayText": "Renomear \"${REPLAY}\" para:",
+ "renameText": "Renomear",
+ "replayDeleteErrorText": "Erro ao excluir o replay.",
+ "replayNameText": "Nome do replay",
+ "replayRenameErrorAlreadyExistsText": "Um replay com este nome já existe.",
+ "replayRenameErrorInvalidName": "Não foi possível renomear; nome invalido.",
+ "replayRenameErrorText": "Erro ao renomear replay.",
+ "sharedReplaysText": "Replays compartilhados",
+ "titleText": "Assistir",
+ "watchReplayButtonText": "Assistir\nReplay"
+ },
+ "waveText": "Onda",
+ "wellSureText": "Claro!",
+ "whatIsThisText": "Oque é isto?",
+ "winsPlayerText": "${NAME} venceu!",
+ "winsTeamText": "${NAME} venceu!",
+ "winsText": "${NAME} ganhou!",
+ "workspaceSyncErrorText": "Erro ao sincronizar ${WORKSPACE}. Veja o log para mais detalhes.",
+ "workspaceSyncReuseText": "Não pôde sincronizar ${WORKSPACE}. Reusando uma versão anterior sincronizada.",
+ "worldScoresUnavailableText": "Pontuações mundiais indisponíveis.",
+ "worldsBestScoresText": "Melhores Pontuações do Mundo",
+ "worldsBestTimesText": "Melhores Tempos do Mundo",
+ "yesAllowText": "Sim, Permitir!",
+ "yourBestScoresText": "Suas Melhores Pontuações",
+ "yourBestTimesText": "Seus Melhores Tempos",
+ "yourPrizeText": "Seu prêmio:"
+}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/romanian.json b/dist/ba_data/data/languages/romanian.json
index 0b007396..7e2d6ede 100644
--- a/dist/ba_data/data/languages/romanian.json
+++ b/dist/ba_data/data/languages/romanian.json
@@ -8,7 +8,9 @@
"changeOncePerSeason": "Acest lucru poate fi schimbat o singură dată pe sezon.",
"changeOncePerSeasonError": "Trebuie să aștepți până la următorul sezon (timp de ${NUM} (de) zile) dacă vrei să schimbi acest lucru din nou",
"customName": "Nume Personalizat",
+ "deleteAccountText": "Șterge contul",
"deviceSpecificAccountText": "Foloseşti un cont specific dispozitivului: ${NAME}",
+ "googlePlayGamesAccountSwitchText": "Dacă doriți să utilizați un alt cont Google,\nutilizați aplicația Jocuri Google Play pentru a comuta.",
"linkAccountsEnterCodeText": "Introdu Codul",
"linkAccountsGenerateCodeText": "Generează Codul",
"linkAccountsInfoText": "(împărtășeşte-ți progresul făcut pe platforme diferite)",
@@ -16,6 +18,7 @@
"linkAccountsInstructionsText": "Pentru a conecta 2 conturi, generează un cod pe\nunul din ele şi introdu acelmcod pe celălalt.\nProgresul şi inventarul tău vor fi combinate.\nPoți conecta până la ${COUNT} conturi.\n\nAi grijă; acest lucru nu poate fi şters!",
"linkAccountsText": "Conectează Conturi",
"linkedAccountsText": "Conturi Conectate:",
+ "manageAccountText": "Gestionează contul",
"nameChangeConfirm": "Vrei să schimbi numele contului tău în ${NAME}?",
"resetProgressConfirmNoAchievementsText": "Această acțiune îți va reseta progresul co-op\nși high-score-urile locale (dar nu și biletele).\nAcest lucru nu este reversibil. Sigur vrei să continui?",
"resetProgressConfirmText": "Această acțiune îți va reseta progresul\nco-op, realizările și high-score-urile\n(dar nu și biletele). Acest lucru nu\neste reversibil. Ești sigur(ă) că vrei să continui?",
@@ -24,14 +27,16 @@
"setAccountNameDesc": "Scrie un nume dorit de tine care vrei să se afișeze pe contul tău.\nPoți folosi și numele unui alt cont conectat de tine\nsau poți să creezi un nume unic personalizat.",
"signInInfoText": "Conectează-te cu un cont pentru a colecta bilete, a concura online,\nşi pentru a te juca cu acelaşi cont pe dispozitive diferite.",
"signInText": "Conectează-te",
+ "signInWithAnEmailAddressText": "Conectați-vă cu o adresă de e-mail",
"signInWithDeviceInfoText": "(un cont automat care este disponibil doar pe acest dispozitiv)",
"signInWithDeviceText": "Conectează-te cu contul dispozitivului",
"signInWithGameCircleText": "Conectează-te cu Game Circle",
"signInWithGooglePlayText": "Conectează-te cu Google Play",
"signInWithTestAccountInfoText": "(tip de cont normal; foloseşte conturile de tip 'dispozitiv' şi cele noi)",
"signInWithTestAccountText": "Conectează-te cu un cont de test",
+ "signInWithText": "Conectați-vă alb ${SERVICE}",
"signInWithV2InfoText": "(un cont care funcționează pe toate platformele)",
- "signInWithV2Text": "Conectează-te cu un cont Bombsquad",
+ "signInWithV2Text": "Conectați-vă cu un cont ${APP_NAME}",
"signOutText": "Deconectează-te",
"signingInText": "Se conectează...",
"signingOutText": "Se deconectează...",
@@ -42,6 +47,7 @@
"titleText": "Contul tău",
"unlinkAccountsInstructionsText": "Selectează un cont pentru a-l deconecta",
"unlinkAccountsText": "Deconectează Conturi",
+ "unlinkLegacyV1AccountsText": "Deconectați conturile vechi (V1).",
"v2LinkInstructionsText": "Folosește acest link pentru a creea un cont sau pentru a te autentifica.",
"viaAccount": "(prin contul ${NAME})",
"youAreSignedInAsText": "Ești conectat ca și:"
@@ -335,9 +341,14 @@
"getMoreGamesText": "Ia mai multe MiniJocuri...",
"titleText": "Adaugă un joc"
},
+ "addToFavoritesText": "Adauga la favorite",
+ "addedToFavoritesText": "S-a adăugat '${NAME}' la Favorite.",
+ "allText": "Toate",
"allowText": "Permite",
"alreadySignedInText": "Contul tău este deja conectat de pe un alt dispozitiv;\nte rog să schimbi conturile sau să închizi jocul de pe\nalte dispozitive și să încerci din nou.",
"apiVersionErrorText": "Nu se poate încărca modulul ${NAME}; acesta țintește versiunea API ${VERSION_USED}, iar versiunea ${VERSION_REQUIRED} nu îl mai suportă.",
+ "applyText": "Aplicați",
+ "areYouSureText": "Sunteți sigur?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" activează asta doar când căștile sunt conectate)",
"headRelativeVRAudioText": "Audio VR relativ capului",
@@ -360,7 +371,7 @@
"boostText": "Crește",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} este configurat în aplicația în sine.",
"buttonText": "buton",
- "canWeDebugText": "Ai vrea ca BombSquad să trimită automat bug-uri,\ncrash-uri și informații de bază programatorului jocului?\n\nAceste informații nu conțin date personale, ci doar\najută la îmbunătățirea jocului.",
+ "canWeDebugText": "Doriți ca ${APP_NAME} să raporteze automat bug-uri,\ncrash-uri și informații de bază pentru dezvoltator?\n\nAceste informații nu conțin date personale, ci doar\najută la îmbunătățirea jocului.",
"cancelText": "Anulează",
"cantConfigureDeviceText": "Scuze, dar ${DEVICE} nu este configurabil.",
"challengeEndedText": "Acest concurs s-a terminat.",
@@ -368,6 +379,8 @@
"chatMutedText": "Chat-ul Este Amuțit",
"chatUnMuteText": "Dezamuțește Chat-ul",
"choosingPlayerText": "",
+ "claimText": "Revendică",
+ "codesExplainText": "Codurile sunt furnizate de dezvoltator pentru\ndiagnosticați și corectați problemele legate de cont.",
"completeThisLevelToProceedText": "Trebuie să completezi\nacest nivel pentru a continua!",
"completionBonusText": "Bonus De Completare",
"configControllersWindow": {
@@ -448,6 +461,7 @@
"swipeText": "glisare",
"titleText": "Configurează Touchscreen-ul"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} poate fi configurat în Setări.",
"configureItNowText": "Vrei să îl configurezi acum?",
"configureText": "Configurează",
"connectMobileDevicesWindow": {
@@ -502,6 +516,7 @@
"welcome2Text": "Mai poți primi bilete şi prin alte activități de acelaşi fel.\nBiletele se pot folosi pentru a debloca charactere, hărți,\nmini-jocuri, pentru a intra în concursurii, şi multe altele.",
"yourPowerRankingText": "Rankul tău de Putere:"
},
+ "copyConfirmText": "Copiat în clipboard.",
"copyOfText": "Copie de ${NAME}",
"copyText": "Copiază",
"createEditPlayerText": "",
@@ -548,7 +563,10 @@
"deleteText": "Șterge",
"demoText": "Demo",
"denyText": "Refuză",
+ "deprecatedText": "Depreciat",
+ "descriptionText": "Descriere",
"desktopResText": "Rezoluție Desktop",
+ "deviceAccountUpgradeText": "Avertizare:\nSunteți conectat cu un cont de dispozitiv (${NAME}).\nConturile de dispozitiv vor fi eliminate într-o actualizare viitoare.\nFaceți upgrade la un cont V2 dacă doriți să vă păstrați progresul.",
"difficultyEasyText": "Ușor",
"difficultyHardOnlyText": "Numai pe \"Greu\"",
"difficultyHardText": "Greu",
@@ -557,6 +575,10 @@
"disableRemoteAppConnectionsText": "Dezactivează conexiunile de pe Remote-App",
"disableXInputDescriptionText": "Permite mai mult de 4 controlere dar nu va merge chiar așa de bine.",
"disableXInputText": "Dezactivează XInput",
+ "disabledText": "Dezactivat",
+ "discardText": "Înlătură",
+ "discordFriendsText": "Vrei să gasești oameni noi cu care să te joci?\nAlăturați-vă Serverul de Discord al nostru și găsiți noi prieteni!",
+ "discordJoinText": "Alăturați-vă Discordului",
"doneText": "Gata",
"drawText": "Remiză",
"duplicateText": "Multiplică",
@@ -590,6 +612,7 @@
"localProfileText": "(profil local)",
"nameDescriptionText": "Numele Jucătorului",
"nameText": "Nume",
+ "profileAlreadyExistsText": "Un profil cu acest nume există deja.",
"randomText": "auto-generat",
"titleEditText": "Editează profilul",
"titleNewText": "Profil nou",
@@ -625,12 +648,13 @@
"useMusicFolderText": "Dosar cu Fişiere Audio"
},
"editText": "Editează",
+ "enabledText": "Activat",
"endText": "Sfârșește",
"enjoyText": "Bucură-te!",
"epicDescriptionFilterText": "${DESCRIPTION} În slow motion epic.",
"epicNameFilterText": "${NAME} Epic",
"errorAccessDeniedText": "acces respins",
- "errorDeviceTimeIncorrectText": "Ceasul dispozitivului tău este dat înainte sau înapoi cu ${HOURS} ore.\nAcestu lucru ar putea cauza niște probleme.\nTe rog să verifici setările ceasului și ale fusului orar.",
+ "errorDeviceTimeIncorrectText": "Ceasul dispozitivului tău este incorrect cu ${HOURS} ore.\nAcest lucru ar putea cauza niște probleme.\nTe rog să verifici setările ceasului și ale fusului orar.",
"errorOutOfDiskSpaceText": "ai rămas fără memorie",
"errorSecureConnectionFailText": "Nu s-a putut stabili o conexiune sigură cloud; funcționalitatea internetului ar putea eșua.",
"errorText": "Eroare",
@@ -670,6 +694,8 @@
"duplicateText": "Duplică\nLista de Jocuri",
"editText": "Editează\nLista de Jocuri",
"newText": "Listă de Jocuri\nNouă",
+ "pointsToWinText": "Puncte pentru a câștiga",
+ "seriesLengthText": "Lungimea seriei",
"showTutorialText": "Arată Tutorialul",
"shuffleGameOrderText": "Jocuri Aleatorii",
"titleText": "Particularizează Listele de Jocuri de tip \"${TYPE}\""
@@ -743,6 +769,7 @@
"manualYourLocalAddressText": "Adresa ta locală:",
"nearbyText": "Din apropiere",
"noConnectionText": "",
+ "noPartiesAddedText": "Nu au fost adăugate părți",
"otherVersionsText": "(alte versiuni)",
"partyCodeText": "Codul Server-ului",
"partyInviteAcceptText": "Acceptă",
@@ -807,17 +834,26 @@
"youHaveShortText": "ai ${COUNT}",
"youHaveText": "ai ${COUNT} (de) bilete"
},
+ "goldPass": {
+ "desc1InfTokensText": "Jetoane infinite.",
+ "desc2NoAdsText": "Fără reclame.",
+ "desc3ForeverText": "Pentru totdeauna.",
+ "goldPassText": "Pass de Aur"
+ },
"googleMultiplayerDiscontinuedText": "Ne pare rău, serviciul multiplayer de pe Google nu mai este disponibil.\nLucrez la un înlocuitor cât mai repede posibil.\nPână atunci, te rog să încerci o altă metodă de conectare.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Achizițiile de pe Google Play nu sunt disponibile.\nÎncearcă să actualizezi Magazin Play și să încerci din nou.",
+ "googlePlayServicesNotAvailableText": "Serviciile Google Play nu sunt disponibile.\nEste posibil ca unele funcționalități ale aplicației să fie dezactivate.",
"googlePlayText": "Google Play",
"graphicsSettingsWindow": {
"alwaysText": "Întotdeauna",
"fullScreenCmdText": "Fullscreen (Cmd+F)",
"fullScreenCtrlText": "Fullscreen (Ctrl+F)",
+ "fullScreenText": "Ecran complet",
"gammaText": "Luminozitate",
"highText": "Înalte",
"higherText": "Mai Înalte",
"lowText": "Slabe",
+ "maxFPSText": "Maxim de FPS",
"mediumText": "Medii",
"neverText": "Niciodată",
"resolutionText": "Rezoluție",
@@ -879,6 +915,7 @@
"importText": "Importă",
"importingText": "Se importă...",
"inGameClippedNameText": "va arăta astfel\n\"${NAME}\"",
+ "inboxText": "Mesaje",
"installDiskSpaceErrorText": "EROARE: Nu s-a putut completa instalarea.\nSe poate să fi rămas fără spațiu pe dispozitiv.\nEliberează niște spațiu și încearcă din nou.",
"internal": {
"arrowsToExitListText": "Apasă ${LEFT} sau ${RIGHT} pentru a ieși din listă",
@@ -987,6 +1024,7 @@
"tournamentLeagueText": "Trebuie să ajungi în liga ${NAME} dacă vrei să intri în acest turneu.",
"trophyCountsResetText": "Numărul de trofee se va reseta la sfârșitul sezonului."
},
+ "learnMoreText": "Află mai multe",
"levelBestScoresText": "Cele mai bune scoruri din ${LEVEL}",
"levelBestTimesText": "Cele mai scurte timpuri din ${LEVEL}",
"levelFastestTimesText": "Cel mai rapid timp pe ${LEVEL}",
@@ -1008,6 +1046,7 @@
"creditsText": "Credite",
"demoMenuText": "Meniu Demonstrativ",
"endGameText": "Sfârșește Jocul",
+ "endTestText": "Încheierea testului",
"exitGameText": "Ieși Din Joc",
"exitToMenuText": "Revii la meniu?",
"howToPlayText": "Cum se Joacă?",
@@ -1027,6 +1066,7 @@
"maxConnectionsText": "Număr De Locuri",
"maxPartySizeText": "Număr Maxim De Locuri",
"maxPlayersText": "Locuri",
+ "merchText": "Merch!",
"modeArcadeText": "Mod Pentru Arcade",
"modeClassicText": "Modul Clasic",
"modeDemoText": "Modul Demonstrativ",
@@ -1046,6 +1086,7 @@
"nameSuicideText": "${NAME} s-a sinucis.",
"nameText": "Numele",
"nativeText": "Nativă",
+ "newExclaimText": "Nou!",
"newPersonalBestText": "Un nou record personal a fost atins!",
"newTestBuildAvailableText": "O nouă versiune de test a fost lansată: (${VERSION} build ${BUILD}).\nIa-o de pe ${ADDRESS}",
"newText": "Nou",
@@ -1056,17 +1097,22 @@
"noContinuesText": "(fără continuări)",
"noExternalStorageErrorText": "Nu a fost găsită nicio stocare externă pe acest dispozitiv.",
"noGameCircleText": "Eroare: nu eşti logat cu GameCircle",
+ "noMessagesText": "Niciun mesaj.",
+ "noPluginsInstalledText": "Nu au fost instalate pluginuri",
"noProfilesErrorText": "Nu ai niciun Profil de Jucător, deci eşti blocat cu '${NAME}'.\nDute la Setări->Profile de Jucător pentru a-ți face un profil.",
"noScoresYetText": "Niciun scor deocamdată.",
+ "noServersFoundText": "Nu au fost găsite servere.",
"noThanksText": "Nu Mulțumesc",
"noTournamentsInTestBuildText": "ATENȚIE: Scorurile obținute în turnee vor fi ignorate în această versiune de test.",
"noValidMapsErrorText": "Nu sunt hărți disponibile pentru acest mod de joc.",
"notEnoughPlayersRemainingText": "Nu mai sunt destui jucători; ieși din joc și creează altul nou.",
"notEnoughPlayersText": "Ai nevoie de cel puțin ${COUNT} jucători pentru a începe acest joc!",
+ "notEnoughTicketsText": "Bilete insuficiente!",
"notNowText": "Nu Acum",
"notSignedInErrorText": "Trebuie să fi conectat cu un cont dacă vrei să faci asta.",
"notSignedInGooglePlayErrorText": "Trebuie să fii conectat cu Google Play dacă vrei să faci asta.",
"notSignedInText": "nu te-ai conectat cu nici un cont",
+ "notUsingAccountText": "Notă: ignorând contul ${SERVICE}.\nAccesați „Cont -> Conectați-vă cu ${SERVICE}” dacă doriți să îl utilizați.",
"nothingIsSelectedErrorText": "Nu ai selectat nimic!",
"numberText": "#${NUMBER}",
"offText": "Oprit",
@@ -1125,7 +1171,11 @@
"pleaseWaitText": "Te rog să aștepți...",
"pluginClassLoadErrorText": "Nu s-a putut încărca plugin-ul '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Nu s-a putut iniția plugin-ul '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Setări Plugin",
+ "pluginsAutoEnableNewText": "Activați Automat Noile Pluginuri",
"pluginsDetectedText": "Plugin(uri) noi detectate. Restartează jocul pentru a le activa / configura în setări.",
+ "pluginsDisableAllText": "Dezactivați Toate Pluginurile",
+ "pluginsEnableAllText": "Activați Toate Pluginurile",
"pluginsRemovedText": "${NUM} plugin(uri) nu mai există.",
"pluginsText": "Plugin-uri",
"practiceText": "Antrenament",
@@ -1158,6 +1208,8 @@
"punchText": "Pumn",
"purchaseForText": "Cumpără pentru ${PRICE}",
"purchaseGameText": "Cumpără Jocul",
+ "purchaseNeverAvailableText": "Ne pare rău, achizițiile nu sunt disponibile pentru această versiune.\nÎncercați să vă conectați la contul dvs. pe o altă platformă și să faceți achiziții de acolo.",
+ "purchaseNotAvailableText": "Această achiziție nu este disponibilă.",
"purchasingText": "Se cumpără...",
"quitGameText": "Ieși din ${APP_NAME}?",
"quittingIn5SecondsText": "Se iese în 5 secunde...",
@@ -1220,6 +1272,8 @@
"runText": "Pentru a fugi",
"saveText": "Salvează",
"scanScriptsErrorText": "Una sau mai multe erori au fost detectate în timpul scanării scripturilor; vezi jurnalul de activități pentru detalii.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} și alte ${NUM} module trebuie să fie actualizate pentru api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} trebuie actualizat pentru api ${API}.",
"scoreChallengesText": "Provocări de Scor",
"scoreListUnavailableText": "Lista de Scoruri este indisponibilă.",
"scoreText": "Scor",
@@ -1230,6 +1284,7 @@
},
"scoreWasText": "(a fost ${COUNT})",
"selectText": "Selectează",
+ "sendInfoDescriptionText": "Trimite dezvoltatorului informații despre starea contului și a aplicației.\nVă rugăm să includeți numele sau motivul trimiterii.",
"seriesWinLine1PlayerText": "CÂŞTIGĂ",
"seriesWinLine1TeamText": "CÂŞTIGĂ",
"seriesWinLine1Text": "CÂŞTIGĂ",
@@ -1248,6 +1303,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(o tastatură simplă, folositoare pentru controllere, care ajută la editarea textului)",
"alwaysUseInternalKeyboardText": "Foloseşte Mereu Tastatura Internală",
"benchmarksText": "Teste-Stres & Referințe",
+ "devToolsText": "Instrumente de dezvoltare",
"disableCameraGyroscopeMotionText": "Oprește Mișcarea Camerei De Tip Giroscop",
"disableCameraShakeText": "Dezactivează Cutremurarea Camerei",
"disableThisNotice": "(Poți dezactiva această notificare în setările avansate)",
@@ -1256,14 +1312,22 @@
"enterPromoCodeText": "Introdu un cod",
"forTestingText": "Notă: aceste valori sunt doar pentru teste şi vor fi resetate când jocul va fi închis.",
"helpTranslateText": "Translațiile din ${APP_NAME} sunt un efort depus de comunitate.\nDacă ai dori să te implici la translatarea/corectarea unei limbi,\nurmează linkul de mai jos. Mulțumiri anticipate!",
+ "insecureConnectionsDescriptionText": "nerecomandat, dar poate permite joaca online \ndin țări și network-uri restricționate",
+ "insecureConnectionsText": "Folosește conexiuni nesigure",
"kickIdlePlayersText": "Dă Afară Jucătorii Inactivi",
"kidFriendlyModeText": "Modul Pentru Copii (mai puțină violență, etc)",
"languageText": "Limbă",
"moddingGuideText": "Ghid pentru Modare",
+ "moddingToolsText": "Instrumente de modificare",
"mustRestartText": "Va trebui să restartezi jocul dacă vrei ca acest lucru să își facă efectul.",
"netTestingText": "Testarea Internetului",
"resetText": "Resetează",
+ "sendInfoText": "Trimiteți informații",
"showBombTrajectoriesText": "Arată Traiectoriile Bombelor",
+ "showDemosWhenIdleText": "Afișați demo-uri când este inactiv",
+ "showDeprecatedLoginTypesText": "Afișați tipurile de conectare învechite",
+ "showDevConsoleButtonText": "Afișați dev console button",
+ "showInGamePingText": "Afișează ping-ul în joc",
"showPlayerNamesText": "Arată Numele Jucătorilor",
"showUserModsText": "Arată Folderul Pentru Moduri",
"titleText": "Avansat",
@@ -1282,6 +1346,9 @@
"signInWithGameCenterText": "Pentru a folosi un cont Game Center\nconectează-te folosind aplicația Game Center.",
"singleGamePlaylistNameText": "Doar ${GAME}",
"singlePlayerCountText": "1 jucător",
+ "sizeLargeText": "Mare",
+ "sizeMediumText": "Mediu",
+ "sizeSmallText": "Mic",
"soloNameFilterText": "${NAME} Solo",
"soundtrackTypeNames": {
"CharSelect": "Selecția Caracterului",
@@ -1357,6 +1424,8 @@
"storeText": "Magazin",
"submitText": "Trimite",
"submittingPromoCodeText": "Se trimite Codul...",
+ "successText": "Succes!",
+ "supportEmailText": "Dacă întâmpinați probleme cu\naplicația, vă rugăm să trimiteți un e-mail la ${EMAIL}.",
"teamNamesColorText": "Numele/Culorile Echipelor",
"telnetAccessGrantedText": "Acces la Telnet permis.",
"telnetAccessText": "Acces Telnet detectat; îl permiți?",
@@ -1376,6 +1445,17 @@
"tipText": "Sfat",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Obțineți jetoane",
+ "notEnoughTokensText": "Insuficiente jetoane!",
+ "numTokensText": "${COUNT} Jetoane",
+ "shinyNewCurrencyText": "Noua monedă strălucitoare a BombSquad-ului.",
+ "tokenPack1Text": "Pachet mic de jetoane",
+ "tokenPack2Text": "Pachet mediu de jetoane",
+ "tokenPack3Text": "Pachet mare de jetoane",
+ "tokenPack4Text": "Pachet de jetoane Jumbo",
+ "youHaveGoldPassText": "Ai un permis de aur.\nToate achizițiile de jetoane sunt gratuite.\nBucurați-vă!"
+ },
"topFriendsText": "Prieteni de Top",
"tournamentCheckingStateText": "Se verifică starea campionatului; aşteaptă...",
"tournamentEndedText": "Acest turneu s-a terminat. Altul nou va începe în curând.",
@@ -1384,6 +1464,7 @@
"tournamentStandingsText": "Clasamentele Turneului",
"tournamentText": "Turneu",
"tournamentTimeExpiredText": "Timpul Turneului a Expirat",
+ "tournamentsDisabledWorkspaceText": "Turneele sunt dezactivate atunci când spațiile de lucru sunt active.\nPentru a reactiva turneele, dezactivați spațiul de lucru și reporniți.",
"tournamentsText": "Turnee",
"translations": {
"characterNames": {
@@ -1536,7 +1617,9 @@
"Italian": "Italiană",
"Japanese": "Japoneză",
"Korean": "Coreană",
+ "Malay": "Malaeză",
"Persian": "Persană",
+ "PirateSpeak": "Limba Piraților",
"Polish": "Poloneză",
"Portuguese": "Portugheză",
"Romanian": "Română",
@@ -1650,6 +1733,7 @@
"You got ${COUNT} tickets!": "Ai primit ${COUNT} (de) bilete!",
"You got a ${ITEM}!": "Ai primit 1 ${ITEM}!",
"You have been promoted to a new league; congratulations!": "Ai fost promovat la o ligă noua; felicitări!",
+ "You must update the app to view this.": "Trebuie să actualizezi aplicația pentru a vedea asta.",
"You must update to a newer version of the app to do this.": "Trebuie să-ți actualizezi aplicația la o versiune mai nouă pentru a face asta.",
"You must update to the newest version of the game to do this.": "Trebuie să-ți actualizezi jocul la o versiune mai nouă pentru a face asta.",
"You must wait a few seconds before entering a new code.": "Va trebui să aştepți câteva secunde înainte să introduci un cod nou.",
@@ -1804,11 +1888,13 @@
"toSkipPressAnythingText": "(apasă orice buton pentru a trece peste tutorial)"
},
"twoKillText": "DUBLU OMOR!",
+ "uiScaleText": "Mărime Interfață",
"unavailableText": "indisponibil",
"unconfiguredControllerDetectedText": "Controller neconfigurat detectat:",
"unlockThisInTheStoreText": "Acest lucru trebuie deblocat din magazin.",
"unlockThisProfilesText": "Că să creezi mai mult de ${NUM} profile, va trebui să ai:",
"unlockThisText": "Pentru a debloca acest lucru, vei avea nevoie de:",
+ "unsupportedControllerText": "Ne pare rau, controller-ul \"${NAME}\" nu este suportat",
"unsupportedHardwareText": "Scuze, acest hardware nu este suportat de această versiune a jocului.",
"upFirstText": "Primul joc:",
"upNextText": "Următorul joc cu numărul ${COUNT} este:",
@@ -1816,10 +1902,15 @@
"upgradeText": "Îmbunătățeşte",
"upgradeToPlayText": "Deblochează \"${PRO}\" în magazinul din joc pentru a juca această hartă.",
"useDefaultText": "Folosește Setările Prestabilite",
+ "userSystemScriptsCreateText": "Creați scripturi de sistem utilizator",
+ "userSystemScriptsDeleteText": "Ștergeți scripturile de sistem utilizator",
"usesExternalControllerText": "Acest joc folosește un controller extern ca dispozitiv de intrare.",
"usingItunesText": "Se folosește Aplicația de Muzică pentru soundtrack...",
"usingItunesTurnRepeatAndShuffleOnText": "Fii sigur(ă) că shuffle e activat și repeat e pus pe ALL în iTunes.",
+ "v2AccountLinkingInfoText": "Pentru a conecta conturile V2, utilizați butonul „Gestionați contul\".",
+ "v2AccountRequiredText": "Acest lucru necesită un cont V2. Actualizați-vă contul și încercați din nou.",
"validatingTestBuildText": "Se Validează Versiunea De Test...",
+ "viaText": "prin",
"victoryText": "Victorie!",
"voteDelayText": "Poți începe alt vot peste ${NUMBER} (de) secunde",
"voteInProgressText": "Un vot este deja în progres.",
@@ -1851,6 +1942,7 @@
},
"waveText": "Valul",
"wellSureText": "Sigur!",
+ "whatIsThisText": "Ce este asta?",
"wiimoteLicenseWindow": {
"titleText": "Copyright de către DarwiinRemote"
},
@@ -1878,7 +1970,7 @@
"xbox360ControllersWindow": {
"getDriverText": "Instalează Driver-ul.",
"macInstructions2Text": "Pentru a folosi controllerele fără fir, vei avea nevoie de un receptor\ncare vine cu pachetul 'Xbox 360 Wireless Controller for Windows'.\nFiecare receptor te lasă să conectezi până la 4 controllere.\n\nImportant: Receptoare de tip 3rd-party nu vor funcționa cu acest driver;\nAsigură-te că pe receptor scrie 'Microsoft', nu 'XBOX 360'.\nMicrosoft nu mai le vinde separat, deci va trebui să iei unul\nîmpreună cu controllerul sau de pe un site, cum ar fi Ebay.\n\nDacă ai găsit acest mesaj folositor, consideră faptul să-i donezi programatorului\ndriverului pe site-ul lui.",
- "macInstructionsText": "Pentru a folosi controllere de Xbox 360, va trebui să instalezi \ndriver-ul pentru Mac disponibil din link-ul de mai jos. \nFuncționează pentru controalele cu/fără fir.",
+ "macInstructionsText": "Pentru a folosi controllere de Xbox 360, va trebui să instalezi \ndriver-ul pentru Mac disponibil din link-ul de mai jos. \nFuncționează pentru controalele cu/fără fir. ",
"ouyaInstructionsText": "Pentru a folosi controllere de Xbox 360 cu fir, pur și simplu\nconectează-le la un port USB. Poți folosi un USB-hub pentru a\nconecta mai multe controllere.\n\nPentru a folosi controllere fără fir vei avea nevoie de un receptor\nwireless, valabil ca parte a pachetului \"Xbox 360 wireless controller\nfor Windows\" sau vândut separat. Fiecare receptor intră într-un port\nUSB și te lasă să conectezi până la 4 controllere.",
"titleText": "Se folosesc controllere de Xbox 360 cu ${APP_NAME}:"
},
diff --git a/dist/ba_data/data/languages/russian.json b/dist/ba_data/data/languages/russian.json
index 6c285922..00c52983 100644
--- a/dist/ba_data/data/languages/russian.json
+++ b/dist/ba_data/data/languages/russian.json
@@ -7,12 +7,14 @@
"campaignProgressText": "Прогресс кампании [Сложный режим]: ${PROGRESS}",
"changeOncePerSeason": "Вы можете изменить это только раз в сезон.",
"changeOncePerSeasonError": "Вы должны подождать до следующего сезона, чтобы изменить это снова (${NUM} дней)",
- "customName": "Имя аккаунта",
+ "createAnAccountText": "Создать аккаунт",
+ "customName": "Имя пользователя",
+ "deleteAccountText": "Удалить аккаунт",
"deviceSpecificAccountText": "Сейчас используется аккаунт имениустройства: ${NAME}",
- "googlePlayGamesAccountSwitchText": "Если хотите сменить внутриигровой аккаунт Google, используйте приложение Google Play.",
+ "googlePlayGamesAccountSwitchText": "Если хотите сменить внутриигровой аккаунт Google,\nиспользуйте приложение Google Play.",
"linkAccountsEnterCodeText": "Введите код",
"linkAccountsGenerateCodeText": "Сгенерировать код",
- "linkAccountsInfoText": "(делиться достижениями с другими платформами)",
+ "linkAccountsInfoText": "(поделитесь достижениями с другими платформами)",
"linkAccountsInstructionsNewText": "Чтобы связать два аккаунта, сгенерируйте код на первом\nи введите этот код на втором. Данные из\nвторого аккаунта будут распределены между ними.\n(Данные из первого будут потеряны)\n\nВы можете связать ${COUNT} аккаунтов.\n\nВАЖНО: связывайте только собственные аккаунты;\nЕсли вы свяжетесь с аккаунтами друзей, вы не сможете\nодновременно играть онлайн.",
"linkAccountsInstructionsText": "Для связки двух аккаунтов, создайте код на одном\nиз них и введите код на другом.\nПрогресс и инвентарь будут объединены.\nВы можете связать до ${COUNT} аккаунтов.",
"linkAccountsText": "Связать акаунты",
@@ -23,18 +25,20 @@
"resetProgressConfirmNoAchievementsText": "Это сбросит весь ваш кооперативный прогресс\nи локальные рекорды (но не билеты).\nЭтот процесс необратим. Вы уверены?",
"resetProgressConfirmText": "Это сбросит весь ваш кооперативный\nпрогресс, достижения и локальные рекорды\n(кроме билетов). Этот процесс необратим.\nВы уверены?",
"resetProgressText": "Сбросить прогресс",
- "setAccountName": "Задать имя аккаунта",
+ "setAccountName": "Напишите имя аккаунта",
"setAccountNameDesc": "Выберите имя для отображения своего аккаунта.\nВы можете использовать имя одного из ваших связанных аккаунтов или создать уникальное имя аккаунта.",
"signInInfoText": "Войдите в аккаунт, чтобы собирать билеты, \nсоревноваться онлайн и делиться успехами.",
"signInText": "Войти",
+ "signInWithAnEmailAddressText": "Войти через электронную почту",
"signInWithDeviceInfoText": "(стандартный аккаунт только для этого устройства)",
"signInWithDeviceText": "Войти через аккаунт устройства",
"signInWithGameCircleText": "Войти через Game Circle",
"signInWithGooglePlayText": "Войти через Google Play",
"signInWithTestAccountInfoText": "(устаревший тип аккаунта; в дальнейшем используйте аккаунт устройства)",
"signInWithTestAccountText": "Войти через тестовый аккаунт",
+ "signInWithText": "Войти при помощи ${SERVICE}",
"signInWithV2InfoText": "(аккаунт, который работает на всех платформах)",
- "signInWithV2Text": "Войти через аккаунт BombSquad",
+ "signInWithV2Text": "Войти через аккаунт ${APP_NAME}",
"signOutText": "Выйти",
"signingInText": "Вход...",
"signingOutText": "Выход...",
@@ -45,7 +49,7 @@
"titleText": "Аккаунт",
"unlinkAccountsInstructionsText": "Выберите аккаунт, который хотите отвязать",
"unlinkAccountsText": "Отвязать аккаунты",
- "unlinkLegacyV1AccountsText": "Разблокируйте устаревшие (V1) аккаунты",
+ "unlinkLegacyV1AccountsText": "Отвязать устаревшие (V1) аккаунты",
"v2LinkInstructionsText": "Используйте эту ссылку чтобы создать аккаунт или войти",
"viaAccount": "(через аккаунт ${NAME})",
"youAreLoggedInAsText": "Вы зашли как:",
@@ -58,7 +62,7 @@
"description": "Убейте 3 негодяев с помощью TNT",
"descriptionComplete": "С помощью TNT убито 3 негодяев",
"descriptionFull": "Убейте 3 негодяев с помощью TNT на уровне ${LEVEL}",
- "descriptionFullComplete": "3 негодяя убито с помощью TNT на уровне ${LEVEL}",
+ "descriptionFullComplete": "3 негодяев убито с помощью TNT на уровне ${LEVEL}",
"name": "Динамит делает “БУМ”!"
},
"Boxer": {
@@ -75,7 +79,7 @@
},
"Flawless Victory": {
"description": "Победите не получив урона",
- "descriptionComplete": "Победа без получения урона",
+ "descriptionComplete": "Победил без получения урона",
"descriptionFull": "Пройдите уровень ${LEVEL} не получив урона",
"descriptionFullComplete": "Уровень ${LEVEL} пройден без урона",
"name": "Чистая победа"
@@ -126,18 +130,18 @@
"name": "Волшебник уровня ${LEVEL}"
},
"Mine Games": {
- "description": "Убейте 3 плохих парней с помощью мин",
- "descriptionComplete": "С помощью мин убито 3 негодяя",
+ "description": "Убейте 3 негодяев с помощью мин",
+ "descriptionComplete": "С помощью мин убита тройка плохих парней",
"descriptionFull": "Убейте 3 негодяев с помощью мин на уровне ${LEVEL}",
"descriptionFullComplete": "С помощью мин убито 3 негодяя на уровне ${LEVEL}",
"name": "Игры с минами"
},
"Off You Go Then": {
- "description": "Сбросьте 3 негодяев с карты",
- "descriptionComplete": "С карты сброшено 3 негодяя",
- "descriptionFull": "Сбросьте 3 негодяев с карты на уровне ${LEVEL}",
- "descriptionFullComplete": "3 негодяя сброшено с карты на уровне ${LEVEL}",
- "name": "Пора учится летать"
+ "description": "Сбросьте 3 плохих парней с карты",
+ "descriptionComplete": "С карты сброшено 3 плохих парней",
+ "descriptionFull": "Сбросьте 3 плохих парней с карты на уровне ${LEVEL}",
+ "descriptionFullComplete": "3 плохих парней сброшено с карты на уровне ${LEVEL}",
+ "name": "Пора учится летать!"
},
"Onslaught God": {
"description": "Наберите 5000 очков",
@@ -186,7 +190,7 @@
"descriptionComplete": "Уровень был пройден всухую",
"descriptionFull": "Выиграйте матч ${LEVEL} всухую",
"descriptionFullComplete": "Победа в матче ${LEVEL} всухую",
- "name": "${LEVEL} всухую"
+ "name": "${LEVEL} Всухую"
},
"Pro Football Victory": {
"description": "Выиграйте матч",
@@ -197,7 +201,7 @@
},
"Pro Onslaught Victory": {
"description": "Победите все волны",
- "descriptionComplete": "Пройдены все волны",
+ "descriptionComplete": "Все волны пройдены!",
"descriptionFull": "Победите все волны на уровне ${LEVEL}",
"descriptionFullComplete": "Пройдены все волны на ${LEVEL}",
"name": "Победа на уровне ${LEVEL}"
@@ -218,7 +222,7 @@
},
"Rookie Football Victory": {
"description": "Выиграйте матч",
- "descriptionComplete": "Матч пройден в вашу пользу",
+ "descriptionComplete": "Вы одержали победу в матче!",
"descriptionFull": "Выиграйте матч ${LEVEL}",
"descriptionFullComplete": "Выигран матч ${LEVEL}",
"name": "Победа в матче ${LEVEL}"
@@ -252,8 +256,8 @@
"name": "Волшебник уровня ${LEVEL}"
},
"Sharing is Caring": {
- "descriptionFull": "Успешно поделиться игрой с другом",
- "descriptionFullComplete": "Игра успешно передана другу",
+ "descriptionFull": "Успешно поделитесь игрой с другом",
+ "descriptionFullComplete": "Игра успешно поделена с другом",
"name": "Делиться - значит заботиться"
},
"Stayin' Alive": {
@@ -304,7 +308,7 @@
"name": "Стена"
},
"Uber Football Shutout": {
- "description": "Выиграйте в сухую",
+ "description": "Выиграйте всухую",
"descriptionComplete": "Победа в сухую",
"descriptionFull": "Выиграйте матч ${LEVEL} в сухую",
"descriptionFullComplete": "Победа в матче ${LEVEL} в сухую",
@@ -337,12 +341,17 @@
"achievementsUnavailableForOldSeasonsText": "К сожалению, подробности достижений не доступны для старых сезонов.",
"activatedText": "${THING} активировано.",
"addGameWindow": {
- "getMoreGamesText": "Еще игры",
+ "getMoreGamesText": "Больше игр...",
"titleText": "Добавить игру"
},
+ "addToFavoritesText": "Добавить в избранное",
+ "addedToFavoritesText": "Добавлен '${NAME}' в избранное.",
+ "allText": "Все",
"allowText": "Разрешить",
"alreadySignedInText": "С вашего аккаунта играют на другом устройстве;\nпожалуйста зайдите с другого аккаунта или закройте\nигру на другом устройстве и попытайтесь снова.",
"apiVersionErrorText": "Невозможно загрузить модуль ${NAME}; он предназначен для API версии ${VERSION_USED}; здесь требуется версия ${VERSION_REQUIRED}.",
+ "applyText": "Применить",
+ "areYouSureText": "Вы уверены?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(Режим \"Авто\" активируется только при подключении наушников)",
"headRelativeVRAudioText": "Позиционно-зависимое VR-аудио",
@@ -367,14 +376,24 @@
"boostText": "Увеличение",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} настраивается в самом приложении.",
"buttonText": "кнопка",
- "canWeDebugText": "Хотите, чтобы BombSquad автоматически сообщал разработчику\nоб ошибках, сбоях и основную информацию об использовании?\n\nЭти данные не содержат никакой личной информации и помогают\nподдерживать игру в рабочем состоянии без сбоев и ошибок.",
+ "canWeDebugText": "Хотите, чтобы ${APP_NAME} автоматически сообщал разработчику\nоб ошибках, сбоях и основную информацию об использовании?\n\nЭти данные не содержат никакой личной информации и помогают\nподдерживать игру в рабочем состоянии без сбоев и ошибок.",
"cancelText": "Отмена",
"cantConfigureDeviceText": "Извините, ${DEVICE} невозможно настроить.",
"challengeEndedText": "Это состязание завершено.",
"chatMuteText": "Заглушить чат",
"chatMutedText": "Чат заглушен",
"chatUnMuteText": "Включить чат",
+ "chests": {
+ "prizeOddsText": "Награды",
+ "reduceWaitText": "Ускорить открытие",
+ "slotDescriptionText": "В этом слоте может находиться сундук.\n\nПолучайте сундуки за уровни кампании, \nместа в турнирах и выполнение \nдостижений.",
+ "slotText": "Слот сундука ${NUM}",
+ "slotsFullWarningText": "ВНИМАНИЕ: Ваш инвентарь заполнен.\nЛюбые сундуки, которые вы получите, будут утеряны.",
+ "unlocksInText": "Отпирается в"
+ },
"choosingPlayerText": "<выбор игрока>",
+ "claimText": "Забрать",
+ "codesExplainText": "Коды предоставлены разработчиком, чтобы\nвыявлять и исправлять ошибки с аккаунтом.",
"completeThisLevelToProceedText": "Чтобы продолжить, нужно\nпройти этот уровень!",
"completionBonusText": "Бонус за прохождение",
"configControllersWindow": {
@@ -391,7 +410,7 @@
},
"configGamepadSelectWindow": {
"androidNoteText": "Внимание: поддержка геймпада различается в зависимости от устройства и версии Android.",
- "pressAnyButtonText": "Нажмите любую кнопку на геймпаде,\n которую хотите настроить...",
+ "pressAnyButtonText": "Нажмите любую кнопку на геймпаде,\n Что-бы настроить геймпад...",
"titleText": "Настроить геймпад"
},
"configGamepadWindow": {
@@ -408,7 +427,7 @@
"extraStartButtonText": "Настроить дополнительную кнопку \"Start\"",
"ifNothingHappensTryAnalogText": "Если ничего не происходит, попробуйте вместо этого присвоить аналоговому стику.",
"ifNothingHappensTryDpadText": "Если ничего не происходит, попробуйте вместо этого присвоить D-Pad.",
- "ignoreCompletelyDescriptionText": "(запретить геймпаду воздействовать на игру, или меню)",
+ "ignoreCompletelyDescriptionText": "(запретить геймпаду управлять на игрой, или менюшкой)",
"ignoreCompletelyText": "Игнорировать полностью",
"ignoredButton1Text": "Игнорируемая кнопка 1",
"ignoredButton2Text": "Игнорируемая кнопка 2",
@@ -431,7 +450,7 @@
"secondaryText": "Второй геймпад",
"startButtonActivatesDefaultDescriptionText": "(выключить, если ваша кнопка \"старт\" работает в качестве кнопки \"меню\")",
"startButtonActivatesDefaultText": "Кнопка Старт активирует стандартный виджет",
- "titleText": "Настройка геймпада",
+ "titleText": "Настройка джойстика",
"twoInOneSetupText": "Настройка геймпада 2-в-1",
"uiOnlyDescriptionText": "(Запретить этому контроллеру присоединяться к игре)",
"uiOnlyText": "Ограничить только для меню",
@@ -447,7 +466,7 @@
"configTouchscreenWindow": {
"actionControlScaleText": "Размеры кнопок действия",
"actionsText": "Действия",
- "buttonsText": "кнопки",
+ "buttonsText": "Кнопки",
"dragControlsText": "< чтобы передвинуть элементы управления, перетащите их >",
"joystickText": "джойстик",
"movementControlScaleText": "Размеры кнопок движения",
@@ -459,6 +478,7 @@
"titleText": "Настройка сенсорного экрана",
"touchControlsScaleText": "Шкала сенсоров"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} может быть настроен в приложении системных настроек.",
"configureItNowText": "Настроить сейчас?",
"configureText": "Настроить",
"connectMobileDevicesWindow": {
@@ -512,12 +532,12 @@
"totalText": "всего",
"tournamentInfoText": "Добейся высокого результата с\nдругими игроками твоей лиги.\n\nНаграды вручаются самым крутым\nпо окончании турнира.",
"welcome1Text": "Добро пожаловать в ${LEAGUE}. Вы можете\nповысить свою лигу получая звёзды, получая \nдостижения и выигрывая трофеи в турнирах.",
- "welcome2Text": "Вы также можете заработать билеты от многих из тех же видов деятельности.\nБилеты могут быть использованы , чтобы разблокировать новые персонажи , карты и\nмини -игры, чтобы войти турниры, и многое другое.",
+ "welcome2Text": "Вы также можете заработать билеты от многих из тех же видов деятельности.\nБилеты могут быть использованы, чтобы разблокировать новых персонажей, карты и\nмини-игры, для участия в турнирах, и многое другое.",
"yourPowerRankingText": "Ваш ранг:"
},
"copyConfirmText": "Скопировано в буфер обмена",
"copyOfText": "Копия ${NAME}",
- "copyText": "Копировать",
+ "copyText": "Скопировать",
"copyrightText": "© 2013 Eric Froemling",
"createAPlayerProfileText": "Создать профиль игрока?",
"createEditPlayerText": "<Создание / редактирование игрока>",
@@ -525,7 +545,7 @@
"creditsWindow": {
"additionalAudioArtIdeasText": "Дополнительное аудио, предварительные иллюстрации и идеи: ${NAME}",
"additionalMusicFromText": "Дополнительная музыка: ${NAME}",
- "allMyFamilyText": "Всем моим друзьям и семье, которые помогли играть тестовую версию",
+ "allMyFamilyText": "Всем моим друзьям и семье, которые тестировали игру",
"codingGraphicsAudioText": "Программирование, графика и аудио: ${NAME}",
"languageTranslationsText": "Языковые переводы:",
"legalText": "Юридическая информация:",
@@ -551,12 +571,12 @@
"runMediaReloadBenchmarkText": "Запустить тест производительности загрузки медиа",
"runStressTestText": "Выполнить тест-нагрузку",
"stressTestPlayerCountText": "Количество игроков",
- "stressTestPlaylistDescriptionText": "Плей-лист нагрузочного испытания",
- "stressTestPlaylistNameText": "Название плей-листа",
- "stressTestPlaylistTypeText": "Тип плей-листа",
+ "stressTestPlaylistDescriptionText": "Плейлист нагрузочного испытания",
+ "stressTestPlaylistNameText": "Название плейлиста",
+ "stressTestPlaylistTypeText": "Тип плейлиста",
"stressTestRoundDurationText": "Продолжительность раунда",
"stressTestTitleText": "Тест-нагрузка",
- "titleText": "Тесты производительности и тесты-нагрузки",
+ "titleText": "Отладочная и Стресс Тесты",
"totalReloadTimeText": "Общее время перезагрузки: ${TIME} (подробности см. в логе)",
"unlockCoopText": "Разблокировать кооперативные уровни"
},
@@ -569,17 +589,22 @@
"deleteText": "Удалить",
"demoText": "Демонстрация",
"denyText": "Отклонить",
- "deprecatedText": "Устарело>=",
+ "deprecatedText": "Устарело",
+ "descriptionText": "Описание",
"desktopResText": "Разреш. экрана",
- "deviceAccountUpgradeText": "Внимание!\nВы заригестрированы как (${NAME})!\nДанный аккаунт будет удален в следующем обновлении!\nОбновите его до аккаунта Google Play, если не хотите потерять прогресс!",
+ "deviceAccountUpgradeText": "Внимание!\nВы зарегистрированы как (${NAME})!\nДанный аккаунт будет удален в следующем обновлении!\nОбновите его до аккаунта нового типа (V2), если не хотите потерять прогресс!",
"difficultyEasyText": "Легкий",
"difficultyHardOnlyText": "Только в трудном режиме",
"difficultyHardText": "Трудный",
- "difficultyHardUnlockOnlyText": "Этот уровень может быть открыт только в сложном режиме.\nДумаете, сможете!?!?!",
+ "difficultyHardUnlockOnlyText": "Этот уровень может быть открыт только в сложном режиме.\nДумаете, сможете это сделать!?!?!",
"directBrowserToURLText": "Пожалуйста, направьте веб-браузер по следующему адресу:",
"disableRemoteAppConnectionsText": "Отключить соединения RemoteApp",
- "disableXInputDescriptionText": "Позволяет подключение более 4 контроллеров, но может не очень хорошо работать.",
+ "disableXInputDescriptionText": "Позволяет подключить более 4 контроллеров, но может не очень хорошо работать.",
"disableXInputText": "Отключить XInput",
+ "disabledText": "Отключено",
+ "discardText": "Отклонить",
+ "discordFriendsText": "Желаете поискать новых людей с которыми можно поиграть?\nПрисоединяйтесь к нашему Discord серверу и находите новых друзей!",
+ "discordJoinText": "Присоединиться к Discord",
"doneText": "Готово",
"drawText": "Ничья",
"duplicateText": "Дублировать",
@@ -604,7 +629,7 @@
"characterText": "персонаж",
"checkingAvailabilityText": "Проверка доступности для \"${NAME}\"...",
"colorText": "цвет",
- "getMoreCharactersText": "Еще персонажей...",
+ "getMoreCharactersText": "Больше персонажей...",
"getMoreIconsText": "Еще иконок...",
"globalProfileInfoText": "Глобальным профилям игроков гарантированы уникальные\nимена. У них также есть дополнительные иконки.",
"globalProfileText": "(глобальный профиль)",
@@ -614,6 +639,7 @@
"localProfileText": "(локальный профиль)",
"nameDescriptionText": "Имя игрока",
"nameText": "Имя",
+ "profileAlreadyExistsText": "Профиль с таким именем уже существует",
"randomText": "случайное",
"titleEditText": "Изменение профиля",
"titleNewText": "Новый профиль",
@@ -633,10 +659,10 @@
"defaultSoundtrackNameText": "Стандартный саундтрек",
"deleteConfirmText": "Удалить саундтрек:\n\n${NAME}'?",
"deleteText": "Удалить\nсаундтрек",
- "duplicateText": "Копировать\nсаундтрек",
+ "duplicateText": "Сделать копию\nСаундтрека",
"editSoundtrackText": "Редактор саундтрека",
"editText": "Изменить\nсаундтрек",
- "fetchingITunesText": "загрузка плей-листов Music App…",
+ "fetchingITunesText": "загрузка плейлистов...",
"musicVolumeZeroWarning": "Внимание: громкость музыки установлена на 0",
"nameText": "Название",
"newSoundtrackNameText": "Мой саундтрек ${COUNT}",
@@ -653,6 +679,7 @@
"useMusicFolderText": "Папка с музыкой"
},
"editText": "Редактировать",
+ "enabledText": "Включено",
"endText": "Конец",
"enjoyText": "Удачи!",
"epicDescriptionFilterText": "${DESCRIPTION} в эпическом замедленном действии.",
@@ -664,6 +691,8 @@
"errorText": "Ошибка",
"errorUnknownText": "неизвестная ошибка",
"exitGameText": "Выйти из ${APP_NAME}?",
+ "expiredAgoText": "Истёк ${T} назад",
+ "expiresInText": "Истекает через ${T}",
"exportSuccessText": "'${NAME}' экспортирован.",
"externalStorageText": "Внешняя память",
"failText": "Провал",
@@ -676,7 +705,7 @@
},
"filterText": "Поиск",
"finalScoreText": "Финальные очки",
- "finalScoresText": "Финальные очки",
+ "finalScoresText": "Финальный результат",
"finalTimeText": "Финальное время",
"finishingInstallText": "Завершается установка, минутку...",
"fireTVRemoteWarningText": "* Для лучшего результата используйте\nгеймпады или установите\nприложение '${REMOTE_APP_NAME}'\nна ваших телефонах и планшетах.",
@@ -700,6 +729,8 @@
"editText": "Изменить\nплей-лист",
"gameListText": "Список игр",
"newText": "Новый\nплей-лист",
+ "pointsToWinText": "Очки до победы",
+ "seriesLengthText": "Продолжительность сессии",
"showTutorialText": "Показать обучение",
"shuffleGameOrderText": "Смешать порядок игр",
"titleText": "Настроить плей-листы '${TYPE}'"
@@ -728,6 +759,7 @@
"copyCodeConfirmText": "Код скопирован в буфер обмена.",
"copyCodeText": "Копировать код",
"dedicatedServerInfoText": "Для лучшего результата создайте отдельный сервер. Смотри bombsquadgame.com/server чтобы узнать как.",
+ "descriptionShortText": "Используйте окно мультиплеера, чтобы присоединиться к лобби.",
"disconnectClientsText": "Это отключит ${COUNT} игроков\nв вашем лобби. Вы уверены?",
"earnTicketsForRecommendingAmountText": "Друзья получат ${COUNT} билетов, если они активируют ваш код\n(а вы будете получать ${YOU_COUNT} билетов за каждую активацию)",
"earnTicketsForRecommendingText": "Поделись игрой\nПолучи билеты...",
@@ -740,10 +772,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} билетов от ${NAME}",
"friendPromoCodeAwardText": "Вы получите ${COUNT} билетов за каждую активацию.",
"friendPromoCodeExpireText": "Код действителен в течении ${EXPIRE_HOURS} часов и только для новых игроков.",
- "friendPromoCodeInstructionsText": "Для активации в ${APP_NAME} зайдите в\n\"Настройки->Дополнительно->Ввести промо-код\". Перейди на сайт bombsquadgame.com, чтобы скачать версию игры для своей платформы.",
+ "friendPromoCodeInstructionsText": "Для активации в ${APP_NAME} зайдите в\n\"Настройки->Дополнительно->Прислать информацию\". Перейдите на сайт bombsquadgame.com, чтобы скачать версию игры для своей платформы.",
"friendPromoCodeRedeemLongText": "Каждая активация принесет ${COUNT} билетов до ${MAX_USES} игрокам.",
"friendPromoCodeRedeemShortText": "Он принесет ${COUNT} билетов в игре.",
- "friendPromoCodeWhereToEnterText": "(в \"Настройках->Дополнительно->Ввести код\")",
+ "friendPromoCodeWhereToEnterText": "(в \"Настройках->Дополнительно->Прислать информацию\")",
"getFriendInviteCodeText": "Получить промо-код",
"googlePlayDescriptionText": "Пригласить игроков Google Play в ваше лобби:",
"googlePlayInviteText": "Пригласить",
@@ -757,7 +789,7 @@
"internetText": "Интернет",
"inviteAFriendText": "Друзья еще не играют? Пригласи их\nпопробовать и они получат ${COUNT} билетов.",
"inviteFriendsText": "Пригласить друзей",
- "joinPublicPartyDescriptionText": "Присоединитесь к публичному лобби",
+ "joinPublicPartyDescriptionText": "Публичные лобби",
"localNetworkDescriptionText": "Присоединяйтесь к ближайшему лобби (локальная сеть, Bluetooth, и т.д.)",
"localNetworkText": "Локальная сеть",
"makePartyPrivateText": "Сделать мое лобби приватным",
@@ -775,6 +807,7 @@
"manualYourLocalAddressText": "Ваш локальный адрес:",
"nearbyText": "Поблизости",
"noConnectionText": "<нет соединения>",
+ "noPartiesAddedText": "Партии Не Добавлены",
"otherVersionsText": "(другие версии)",
"partyCodeText": "Код лобби",
"partyInviteAcceptText": "Принять",
@@ -782,13 +815,13 @@
"partyInviteGooglePlayExtraText": "(смотрите вкладку 'Google Play' в разделе 'Собрать')",
"partyInviteIgnoreText": "Игнорировать",
"partyInviteText": "${NAME} пригласил\nвас в его лобби!",
- "partyNameText": "Имя команды",
+ "partyNameText": "Название лобби",
"partyServerRunningText": "Твой сервер для лобби работает.",
- "partySizeText": "Игроки",
+ "partySizeText": "Размер лобби",
"partyStatusCheckingText": "Проверка...",
- "partyStatusJoinableText": "Ваша команда доступна через интернет",
+ "partyStatusJoinableText": "Ваше лобби теперь доступно для подключения через интернет",
"partyStatusNoConnectionText": "Невозможно подключиться к серверу",
- "partyStatusNotJoinableText": "Ваше лобби недоступно через интернет",
+ "partyStatusNotJoinableText": "Подключение к вашему лобби недоступно через интернет",
"partyStatusNotPublicText": "Ваше лобби не публично",
"pingText": "Пинг",
"portText": "Порт",
@@ -797,9 +830,9 @@
"privatePartyJoinText": "Присоединиться к частному лобби",
"privateText": "Частный",
"publicHostRouterConfigText": "Это может потребовать настройки переадресации портов на вашем маршрутизаторе. Для более легкого варианта организуйте частное лобби.",
- "publicText": "Открытый",
+ "publicText": "Публичный",
"requestingAPromoCodeText": "Запрашиваем код...",
- "sendDirectInvitesText": "Послать приглашение",
+ "sendDirectInvitesText": "Отправить приглашение",
"shareThisCodeWithFriendsText": "Поделись кодом с друзьями:",
"showMyAddressText": "Показать мой адрес",
"startAdvertisingText": "Включить доступ",
@@ -848,6 +881,12 @@
"youHaveShortText": "у вас ${COUNT}",
"youHaveText": "У вас ${COUNT} билетов"
},
+ "goldPass": {
+ "desc1InfTokensText": "Неограниченные жетоны.",
+ "desc2NoAdsText": "Без рекламы.",
+ "desc3ForeverText": "Навсегда.",
+ "goldPassText": "Золотой пропуск"
+ },
"googleMultiplayerDiscontinuedText": "Простите, сервис многопользовательской игры Google больше не поддерживается.\nЯ работаю над заменой так быстро, насколько это возможно.\nДо тех пор, пожалуйста выберете другой способ подключения.\n-Эрик",
"googlePlayPurchasesNotAvailableText": "Покупки в Google Play недоступны.\nВозможно, вам необходимо обновить приложение магазина.",
"googlePlayServicesNotAvailableText": "Сервисы Google Play недоступны.\nНекоторый функционал игры могут быть отключены.",
@@ -856,19 +895,21 @@
"alwaysText": "Всегда",
"fullScreenCmdText": "Полноэкранный (Cmd-F)",
"fullScreenCtrlText": "Полноэкранный (Ctrl-F)",
+ "fullScreenText": "Полный экран",
"gammaText": "Гамма",
"highText": "Высокий",
"higherText": "Ультра",
"lowText": "Низкий",
+ "maxFPSText": "Максимальный FPS",
"mediumText": "Средний",
"neverText": "Никогда",
"resolutionText": "Разрешение",
"showFPSText": "Показывать FPS",
"texturesText": "Текстуры",
"titleText": "Графика",
- "tvBorderText": "Граница телевизора",
- "verticalSyncText": "Вертикальная синхронизация (V-Sync)",
- "visualsText": "Визуальные эффекты"
+ "tvBorderText": "Граница экрана",
+ "verticalSyncText": "Вертикальная синхронизация",
+ "visualsText": "Видеоряд"
},
"helpWindow": {
"bombInfoText": "- Бомба -\nСильнее ударов, но может привести\nк смертельным повреждениям. Для\nнаилучших результатов бросать в\nпротивника пока не догорел фитиль.",
@@ -884,7 +925,7 @@
"controlsText": "Управление",
"devicesInfoText": "В VR-версию ${APP_NAME} можно играть по сети с обычной версией,\nтак что вытаскивайте свои дополнительные телефоны, планшеты\nи компьютеры, и играйте на них. Можно даже подключить\nобычную версию игры к VR-версии, чтобы позволить\nостальным наблюдать за действием.",
"devicesText": "Устройства",
- "friendsGoodText": "Бывают полезны. В ${APP_NAME} веселее играть с несколькими игроками;\nподдерживается до 8 игроков одновременно, что приводит нас к:",
+ "friendsGoodText": "Бывают полезны. ${APP_NAME} веселее всего с несколькими игроками\nи поддерживает до 8 одновременно, что приводит нас к:",
"friendsText": "Друзья",
"jumpInfoText": "- Прыжок -\nПрыгайте для перескакивания,\nшвыряния предметов подальше\nили для выражения радости.",
"orPunchingSomethingText": "Или ударить, сбросить с обрыва и взорвать бомбой-липучкой по дороге вниз.",
@@ -895,28 +936,28 @@
"powerupCurseNameText": "Проклятие",
"powerupHealthDescriptionText": "Ни за что не догадаетесь.\nВозвращает полное здоровье.",
"powerupHealthNameText": "Аптечка",
- "powerupIceBombsDescriptionText": "Слабее, чем обычные бомбы\nно оставляет врагов заморожеными\nи чрезвычайно хрупкими.",
+ "powerupIceBombsDescriptionText": "Слабее, чем обычные бомбы\nно оставляет врагов заморожеными\nи в частности хрупкими.",
"powerupIceBombsNameText": "Ледяные бомбы",
- "powerupImpactBombsDescriptionText": "Чуть слабее обычных бомб,\nно взрываются при ударе.",
+ "powerupImpactBombsDescriptionText": "Чуть слабее обычных бомб,\nно взрываются при соприкосновении.",
"powerupImpactBombsNameText": "Моментальные бомбы",
"powerupLandMinesDescriptionText": "Выдаются по 3 штуки.\nПолезны для защиты базы или\nусмирения быстроногих врагов.",
"powerupLandMinesNameText": "Мины",
"powerupPunchDescriptionText": "Делают ваши удары быстрее,\nлучше, сильнее.",
"powerupPunchNameText": "Боксерские перчатки",
- "powerupShieldDescriptionText": "Немного поглощает урон,\nвместо вас.",
+ "powerupShieldDescriptionText": "Немного поглощает повреждения,\nчтобы тебе не пришлось.",
"powerupShieldNameText": "Энергетический щит",
"powerupStickyBombsDescriptionText": "Липнут ко всему, чего касаются.\nИ начинается веселье.",
"powerupStickyBombsNameText": "Бомбы-липучки",
"powerupsSubtitleText": "Конечно, ни одна игра не обходится без усилителей:",
"powerupsText": "Усилители",
"punchInfoText": "- Удар -\nЧем быстрее двигаются кулаки -\nтем cильнее удар. Так что бегайте\nи крутитесь как ненормальные.",
- "runInfoText": "- Бег -\nДля бега удерживайте нажатой ЛЮБУЮ кнопку. Для этого хороши верхние триггеры\nили плечевые кнопки, если они у вас есть. Бегом передвигаться быстрее,\nно труднее поворачивать, так что осторожно с обрывами.",
+ "runInfoText": "- Бег -\nДля бега удерживайте нажатой ЛЮБУЮ кнопку. Для этого хороши триггеры и верхние кнопки, если они у вас есть.\nБегом передвигаться быстрее, но труднее поворачивать, так что смотри за обрывами.",
"someDaysText": "Иногда просто хочется что-нибудь ударить. Или взорвать.",
"titleText": "Справка ${APP_NAME}",
"toGetTheMostText": "Чтобы выжать максимум из этой игры, вам необходимо:",
"welcomeText": "Добро пожаловать в ${APP_NAME}!"
},
- "holdAnyButtonText": "<держать любую кнопку>",
+ "holdAnyButtonText": "<удерживать любую кнопку>",
"holdAnyKeyText": "<держать любую клавишу>",
"hostIsNavigatingMenusText": "- ${HOST} в меню навигации как босс -",
"importPlaylistCodeInstructionsText": "Используйте показанный код, чтобы импортировать этот плейлист где-то ещё:",
@@ -924,19 +965,20 @@
"importText": "Импорт",
"importingText": "Импортирую...",
"inGameClippedNameText": "В игре будет\n\"${NAME}\"",
+ "inboxText": "Почта",
"installDiskSpaceErrorText": "ОШИБКА: не удалось завершить установку. Может быть,\nне хватает свободного места на вашем устройстве.\nОсвободите место и попробуйте еще раз.",
"internal": {
"arrowsToExitListText": "чтобы выйти из списка нажмите ${LEFT} или ${RIGHT}",
"buttonText": "кнопка",
"cantKickHostError": "Невозможно кикнуть создателя.",
- "chatBlockedText": "${NAME} заблокирован на ${TIME} секунд.",
+ "chatBlockedText": "Игроку ${NAME} заблокирован чат на ${TIME} секунд.",
"connectedToGameText": "Вошел в игру '${NAME}'",
"connectedToPartyText": "Вошел в лобби ${NAME}!",
"connectingToPartyText": "Идет соединение...",
"connectionFailedHostAlreadyInPartyText": "Соединение не удалось; хост находится в другом лобби.",
"connectionFailedPartyFullText": "Соединение не удалось; группа полная",
"connectionFailedText": "Соединение не удалось.",
- "connectionFailedVersionMismatchText": "Соединение не удалось; хост использует другую версию игры.\nУбедитесь, что версии обеих сторон обновлены, и попытайтесь снова.",
+ "connectionFailedVersionMismatchText": "Соединение не удалось; хост использует другую версию игры.\nУбедитесь, что версии обеих сторон совпадают, и попытайтесь снова.",
"connectionRejectedText": "Соединение отклонено.",
"controllerConnectedText": "${CONTROLLER} подключен.",
"controllerDetectedText": "Обнаружен 1 контроллер.",
@@ -950,9 +992,9 @@
"corruptFileText": "Обнаружены поврежденные файлы. Попытайтесь переустановить или обратитесь к ${EMAIL}",
"errorPlayingMusicText": "Ошибка воспроизведения музыки: ${MUSIC}",
"errorResettingAchievementsText": "Не удается сбросить онлайн-медали, пожалуйста, попробуйте позже.",
- "hasMenuControlText": "${NAME} контролирует меню",
+ "hasMenuControlText": "Меню контролирует ${NAME}.",
"incompatibleNewerVersionHostText": "Хост использует более новую версию игры.\nОбновитесь до последней версии и попробуйте снова.",
- "incompatibleVersionHostText": "Хост использует другую версию игры.\nУбедитесь, что обе ваши версии обновлены, и попытайтесь снова.",
+ "incompatibleVersionHostText": "Хост использует другую версию игры.\nУбедитесь, что ваши версии совпадают, и попытайтесь снова.",
"incompatibleVersionPlayerText": "${NAME} использует другую версию игры и не может соединится.\nУбедитесь, что обе ваши версии обновлены, и попытайтесь снова.",
"invalidAddressErrorText": "Ошибка: неправильный адрес.",
"invalidNameErrorText": "Ошибка: некорректное имя.",
@@ -970,28 +1012,30 @@
"playerJoinedPartyText": "${NAME} вошел в лобби!",
"playerLeftPartyText": "${NAME} покинул лобби.",
"rejectingInviteAlreadyInPartyText": "Приглашение отклонено (уже в лобби).",
- "serverRestartingText": "Сервер перезагружается. Попробуйте позже...",
+ "serverRestartingText": "Сервер перезагружается. Пожалуйста, перезайдите...",
"serverShuttingDownText": "Сервер выключается...",
"signInErrorText": "Ошибка входа.",
"signInNoConnectionText": "Невозможно войти. (нет интернет соединения?)",
"teamNameText": "Команда ${NAME}",
- "telnetAccessDeniedText": "ОШИБКА: пользователь не предоставил доступ Telnet.",
+ "telnetAccessDeniedText": "ОШИБКА: Пользователь не предоставил доступ Telnet.",
"timeOutText": "(осталось ${TIME} секунд)",
"touchScreenJoinWarningText": "Вы присоединились с сенсорным экраном.\nЕсли это была ошибка, нажмите 'Меню->Покинуть игру'.",
"touchScreenText": "Сенсорный экран",
"trialText": "проба",
- "unableToResolveHostText": "Ошибка: невозможно достичь хоста.",
+ "unableToCompleteTryAgainText": "Нельзя выполнить это сейчас.\nПожалуйста попробуйте ещё раз",
+ "unableToResolveHostText": "Ошибка: невозможно определить хост.",
"unavailableNoConnectionText": "Сейчас это недоступно (нет интернет соединения?)",
"vrOrientationResetCardboardText": "Используйте это, чтобы сбросить ориентации VR.\nЧтобы играть в игру, вам понадобится внешний контроллер.",
"vrOrientationResetText": "Сброс ориентации VR.",
"willTimeOutText": "(время выйдет при бездействии)"
},
+ "inventoryText": "Инвентарь",
"jumpBoldText": "ПРЫЖОК",
- "jumpText": "Прыгнуть",
+ "jumpText": "Прыжок",
"keepText": "Оставить",
"keepTheseSettingsText": "Оставить эти настройки?",
"keyboardChangeInstructionsText": "Нажмите на пробел два раза, чтобы сменить раскладку.",
- "keyboardNoOthersAvailableText": "Нету других раскладок.",
+ "keyboardNoOthersAvailableText": "Отсутствуют другие раскладки.",
"keyboardSwitchText": "Раскладка изменена на \"${NAME}\".",
"kickOccurredText": "${NAME} исключили.",
"kickQuestionText": "Исключить ${NAME}?",
@@ -999,16 +1043,16 @@
"kickVoteCantKickAdminsText": "Администраторов нельзя исключить.",
"kickVoteCantKickSelfText": "Вы не можете исключить самого себя (но можете выйти).",
"kickVoteFailedNotEnoughVotersText": "Недостаточно игроков для голосования.",
- "kickVoteFailedText": "Голосование на вылет не удалось.",
- "kickVoteStartedText": "Начато голосование за вылет ${NAME}.",
- "kickVoteText": "Голосовать за вылет",
- "kickVotingDisabledText": "Голосование за вылет отключено.",
+ "kickVoteFailedText": "Голосование на исключение не удалось.",
+ "kickVoteStartedText": "Начато голосование за исключение ${NAME}.",
+ "kickVoteText": "Голосовать за исключение",
+ "kickVotingDisabledText": "Голосование за исключение отключено.",
"kickWithChatText": "Наберите ${YES} для согласия или ${NO} для отказа.",
"killsTallyText": "Убито ${COUNT}",
"killsText": "Убито",
"kioskWindow": {
"easyText": "Легкий",
- "epicModeText": "Эпический режим",
+ "epicModeText": "Замедленный режим",
"fullMenuText": "Полное меню",
"hardText": "Трудный",
"mediumText": "Средний",
@@ -1032,8 +1076,11 @@
"seasonEndsMinutesText": "Сезон завершится через ${NUMBER} минут.",
"seasonText": "Сезон ${NUMBER}",
"tournamentLeagueText": "Чтобы участвовать в этом турнире, вы должны достичь лиги ${NAME}.",
- "trophyCountsResetText": "Трофеи будут сброшены в следующем сезоне."
+ "trophyCountsResetText": "Трофеи будут сброшены в следующем сезоне.",
+ "upToDateBonusDescriptionText": "Игроки, использующие последнюю версию игры\nполучают бонус ${PERCENT}% к очкам.",
+ "upToDateBonusText": "Бонус за обновление"
},
+ "learnMoreText": "Подробнее",
"levelBestScoresText": "Лучший рекорд на ${LEVEL}",
"levelBestTimesText": "Лучшее время на ${LEVEL}",
"levelFastestTimesText": "Лучшее время уровня ${LEVEL}",
@@ -1042,7 +1089,7 @@
"levelMustBeCompletedFirstText": "Сначала должен быть пройден ${LEVEL}.",
"levelText": "Уровень ${NUMBER}",
"levelUnlockedText": "Уровень разблокирован!",
- "livesBonusText": "Бонус жизней",
+ "livesBonusText": "Бонус оставшихся жизней",
"loadingText": "Загрузка",
"loadingTryAgainText": "Загрузка; попробуй снова через несколько секунд...",
"macControllerSubsystemBothText": "Оба (не рекомендуется)",
@@ -1052,7 +1099,7 @@
"macControllerSubsystemMFiText": "Сделано для iOS/Mac",
"macControllerSubsystemTitleText": "Поддержка контроллера",
"mainMenu": {
- "creditsText": "Благодарности",
+ "creditsText": "Участвовали в создании",
"demoMenuText": "Меню демо",
"endGameText": "Закончить игру",
"endTestText": "Завершить тест",
@@ -1069,21 +1116,23 @@
"settingsText": "Настройки"
},
"makeItSoText": "Да будет так",
- "mapSelectGetMoreMapsText": "Ещё карт...",
+ "mapSelectGetMoreMapsText": "Больше карт...",
"mapSelectText": "Выбрать...",
"mapSelectTitleText": "Карты игры ${GAME}",
"mapText": "Карта",
"maxConnectionsText": "Максимум соединений",
- "maxPartySizeText": "Размер группы",
+ "maxPartySizeText": "Размер лобби",
"maxPlayersText": "Максимум игроков",
- "merchText": "Мерч с символикой Bomb squad!",
+ "merchText": "Мерч с символикой BombSquad!",
"modeArcadeText": "Аркадный режим",
"modeClassicText": "Обычный режим",
"modeDemoText": "Демонстрационный режим",
+ "moreSoonText": "Скоро будет больше...",
+ "mostDestroyedPlayerText": "Самый побежденный игрок",
"mostValuablePlayerText": "Самый ценный игрок",
"mostViolatedPlayerText": "Самый побитый игрок",
"mostViolentPlayerText": "Самый буйный игрок",
- "moveText": "Движение",
+ "moveText": "Двигаться",
"multiKillText": "${COUNT} ЗА РАЗ!!!",
"multiPlayerCountText": "${COUNT} игроков",
"mustInviteFriendsText": "Примечание: вы должны пригласить друзей\nна панели \"${GATHER}\" или присоединить\nконтроллеры для совместной игры.",
@@ -1092,10 +1141,11 @@
"nameKilledText": "${NAME} убил ${VICTIM}.",
"nameNotEmptyText": "Имя не может быть пустым!",
"nameScoresText": "${NAME} ведет!",
- "nameSuicideKidFriendlyText": "${NAME} случайно убился.",
+ "nameSuicideKidFriendlyText": "${NAME} случайно умер.",
"nameSuicideText": "${NAME} совершил суицид.",
"nameText": "Имя",
"nativeText": "Разрешение устройства",
+ "newExclaimText": "Новинка!",
"newPersonalBestText": "Новый личный рекорд!",
"newTestBuildAvailableText": "Доступна новая тестовая версия! (${VERSION} сборка ${BUILD}).\nОбновить: ${ADDRESS}",
"newText": "Новый",
@@ -1103,31 +1153,38 @@
"nextAchievementsText": "Следующие достижения:",
"nextLevelText": "Следующий уровень",
"noAchievementsRemainingText": "- нет",
- "noContinuesText": "(без продолжений)",
+ "noContinuesText": "(без продолжения)",
"noExternalStorageErrorText": "На данном устройстве не найдено внешней памяти",
"noGameCircleText": "Ошибка: не вошли в GameCircle",
"noJoinCoopMidwayText": "К кооперативным играм нельзя присоединиться посреди игры.",
+ "noMessagesText": "Пусто.",
+ "noPluginsInstalledText": "Отсутствуют установленные плагины",
"noProfilesErrorText": "У вас нет профиля игрока, так что вас будут звать '${NAME}'.\nСоздать профиль можно перейдя в 'Настройки' > 'Профили игроков'.",
- "noScoresYetText": "Счета пока нет.",
+ "noScoresYetText": "Результатов пока нет.",
+ "noServersFoundText": "Серверы не найдены.",
"noThanksText": "Нет, спасибо",
"noTournamentsInTestBuildText": "ВНИМАНИЕ: Турнирные очки из этой тестовой сборки будут не засчитаны.",
"noValidMapsErrorText": "Для данного типа игры не найдено корректных карт.",
"notEnoughPlayersRemainingText": "Не осталось достаточно игроков; выйдите и начните новую игру.",
- "notEnoughPlayersText": "Для начала этой игры нужно как минимум ${COUNT} игрока!",
+ "notEnoughPlayersText": "Для начала игры нужно как минимум ${COUNT} игрока(ов)!",
+ "notEnoughTicketsText": "Недостаточно билетов!",
"notNowText": "Не сейчас",
"notSignedInErrorText": "Войдите в аккаунт для начала.",
- "notSignedInGooglePlayErrorText": "Войдите сначала в Google Play, а там посмотрим.",
+ "notSignedInGooglePlayErrorText": "Для этого Вам необходимо войти с помощью Google Play.",
"notSignedInText": "(вы не вошли)",
"notUsingAccountText": "Рекомендация: вы не используете аккаунт ${SERVICE}.\nЗайдите в 'Аккаунт' => 'зайти в ${SERVICE}', чтобы зайти в ${SERVICE}.",
"nothingIsSelectedErrorText": "Ничего не выбрано!",
"numberText": "${NUMBER}",
"offText": "Выкл",
- "okText": "Oк",
+ "okText": "Ок",
"onText": "Вкл",
- "oneMomentText": "Один момент…",
+ "oneMomentText": "Минутку...",
"onslaughtRespawnText": "${PLAYER} возродится в ${WAVE} волне",
+ "openMeText": "Открой меня!",
+ "openNowText": "Открыть сейчас",
+ "openText": "Открыть",
"orText": "${A} или ${B}",
- "otherText": "Другие...",
+ "otherText": "Другое...",
"outOfText": "(${RANK} из ${ALL})",
"ownFlagAtYourBaseWarning": "Чтобы набрать очки, ваш собственный\nфлаг должен быть на вашей базе!",
"packageModsEnabledErrorText": "Сетевая игра запрещена, когда включены моды локального пакета (см. Настройки->Дополнительно)",
@@ -1153,10 +1210,10 @@
"playWindow": {
"coopText": "Кооператив",
"freeForAllText": "Каждый за себя",
- "oneToFourPlayersText": "1-4 игрока",
+ "oneToFourPlayersText": "1-4 игрок(а)",
"teamsText": "Команды",
"titleText": "Играть",
- "twoToEightPlayersText": "2-8 игроков"
+ "twoToEightPlayersText": "2-8 игрока(ов)"
},
"playerCountAbbreviatedText": "${COUNT}и",
"playerDelayedJoinText": "${PLAYER} присоединится в следующем раунде.",
@@ -1171,7 +1228,7 @@
"editButtonText": "Изменить\nпрофиль",
"explanationText": "(настраивайте имена и внешний вид игрока)",
"newButtonText": "Новый\nпрофиль",
- "titleText": "Профили игроков"
+ "titleText": "Ваши профили"
},
"playerText": "Игрок",
"playlistNoValidGamesErrorText": "Этот плейлист содержит неоткрытые игры.",
@@ -1183,8 +1240,8 @@
"pluginClassLoadErrorText": "Ошибка при попытке загрузить класс плагина '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Ошибка при инициализации плагина '${PLUGIN}': ${ERROR}",
"pluginSettingsText": "Настройки плагина",
- "pluginsAutoEnableNewText": "Автоматически включать плагины",
- "pluginsDetectedText": "Обнаружены новые плагины! Перезапустите игру, чтобы активировать их, или настройте их в настройках.",
+ "pluginsAutoEnableNewText": "Автоматически включать новые плагины",
+ "pluginsDetectedText": "Обнаружен(ы) новый(е) плагин(ы)! Перезапустите игру чтобы активировать, или отредактируйте в настройках.",
"pluginsDisableAllText": "Выключить все плагины",
"pluginsEnableAllText": "Включить все плагины",
"pluginsRemovedText": "${NUM} плагин(ов) больше не найдены.",
@@ -1219,10 +1276,12 @@
"punchText": "Ударить",
"purchaseForText": "Купить за ${PRICE}",
"purchaseGameText": "Купить игру",
+ "purchaseNeverAvailableText": "Извините, покупки недоступны на вашем устройстве.\nПопробуйте зайти в ваш аккаунт с другого устройства и выполнить транзакцию с него.",
+ "purchaseNotAvailableText": "Эта покупка недоступна.",
"purchasingText": "Покупка...",
"quitGameText": "Выйти из ${APP_NAME}?",
"quittingIn5SecondsText": "Выход через 5 секунд...",
- "randomPlayerNamesText": "Дима, Кузя, Вован, Маха, Русский, Какуля, Бибер, Борька, Няшка, Толян, Ержан, Дибисяра, Вася, Морген, Серёга, Ваня, Кеша, Жорик, Стёпа, Эдгар, Цыган, Олег, Егор, Ёршик",
+ "randomPlayerNamesText": "Каратель, Подрывник, Вован, Маха, Русский, Псих, Бибер, Борька, Няшка, Мастер, Люцифер, Взрыватель, Морген, Джинджер, Крушитель, Лавелас, Леонидас, Гангстер, Ломатель, Волк, Хитрец, Счастливчик, Везунчик, Стратег, Рустам",
"randomText": "Случайный",
"rankText": "Ранг",
"ratingText": "Рейтинг",
@@ -1237,10 +1296,10 @@
"button_position": "Положение кнопки",
"button_size": "Размер кнопки",
"cant_resolve_host": "Сервер не найден.",
- "capturing": "Слушаю...",
+ "capturing": "Ловлю...",
"connected": "Соединено.",
"description": "Используйте Ваш телефон или планшет как контроллер BombSquad.\nДо 8 устройств могут быть одновременно подключены для эпических битв в мультиплеере на одном ТВ или планшете.",
- "disconnected": "Выброшен сервером.",
+ "disconnected": "Отключен сервером.",
"dpad_fixed": "неподвижный",
"dpad_floating": "плавающий",
"dpad_position": "Расположение D-Pad",
@@ -1261,6 +1320,7 @@
"version_mismatch": "Несовпадение версий.\nУбедитесь, что BombSquad и контроллер BombSquad\nобновлены до последней версии и повторите попытку."
},
"removeInGameAdsText": "Разблокируйте \"${PRO}\" в магазине, чтобы убрать рекламу в игре.",
+ "removeInGameAdsTokenPurchaseText": "ОГРАНИЧЕННОЕ ПРЕДЛОЖЕНИЕ: Купите ЛЮБОЙ пакет жетонов, чтобы убрать рекламу в игре.",
"renameText": "Переименовать",
"replayEndText": "Завершить просмотр записи",
"replayNameDefaultText": "Запись последней игры",
@@ -1281,7 +1341,9 @@
"revertText": "Восстановить",
"runText": "Бежать",
"saveText": "Сохранить",
- "scanScriptsErrorText": "Ошибка(и) сканирования скриптов; посмотри лог для подробностей.",
+ "scanScriptsErrorText": "Ошибка(и) сканирования скриптов. Ознакомтесь с логом для подробностей.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} и ${NUM} других мод(ов) нужно обновить до ${API}",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} Нужно обновить до ${API}",
"scoreChallengesText": "Медали за очки",
"scoreListUnavailableText": "Список очков недоступен.",
"scoreText": "Очки",
@@ -1292,6 +1354,7 @@
},
"scoreWasText": "(было ${COUNT})",
"selectText": "Выбрать",
+ "sendInfoDescriptionText": "Отправьте информацию об вашей учётной записи и состоянии приложения непосредственно разработчику.\nПожалуйста, не забудь указать ваше имя и причину отправки.",
"seriesWinLine1PlayerText": "ПОБЕДИЛ В",
"seriesWinLine1TeamText": "ПОБЕДИЛИ В",
"seriesWinLine1Text": "ПОБЕДИЛ В",
@@ -1308,25 +1371,33 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(простая, удобная для контроллера виртуальная клавиатура для ввода текста)",
- "alwaysUseInternalKeyboardText": "Всегда использовать встроенную клавиатуру",
+ "alwaysUseInternalKeyboardText": "Всегда использовать ТОЛЬКО встроенную клавиатуру",
"benchmarksText": "Тест производительности и тест-нагрузка",
- "disableCameraGyroscopeMotionText": "Отключить движение камеры с помощью гироскопа",
- "disableCameraShakeText": "Отключить тряску камеры",
+ "devToolsText": "Инструменты разработчиков",
+ "disableCameraGyroscopeMotionText": "Убрать тряску и движение камеры при помощи гироскопа",
+ "disableCameraShakeText": "Отключить тряску камеры.",
"disableThisNotice": "(вы можете отключить это уведомление в настройках)",
"enablePackageModsDescriptionText": "(позволяет дополнительные возможности для моддинга, но отключает сетевую игру)",
"enablePackageModsText": "Включить моды локального пакета",
"enterPromoCodeText": "Введите промо-код",
"forTestingText": "Примечание: эти значения используются только для тестирования и будут потеряны, когда приложение завершит работу.",
- "helpTranslateText": "Переводы игры ${APP_NAME} с английского совершён общественными\nусилиями. Если вы хотите предложить или исправить\nперевод, следуйте по ссылке ниже. Заранее спасибо!",
- "kickIdlePlayersText": "Выкидывать бездействующих игроков",
+ "helpTranslateText": "Неанглоязычные переводы ${APP_NAME} являются общественным\nусилием. Если вы хотите внести вклад или исправить\nперевод, перейдите по ссылке ниже. Заранее спасибо!",
+ "insecureConnectionsDescriptionText": "не рекомендуется, но может разрешить игру \nонлайн в недоступных странах или сетях",
+ "insecureConnectionsText": "Использовать незащищённые подключения",
+ "kickIdlePlayersText": "Исключать бездействующих игроков",
"kidFriendlyModeText": "Семейный режим (меньше насилия, и т.д.)",
"languageText": "Язык",
"moddingGuideText": "Руководство по моддингу",
+ "moddingToolsText": "Настройки модов",
"mustRestartText": "Необходимо перезапустить игру, чтобы изменения вступили в силу.",
"netTestingText": "Тестирование сети",
"resetText": "Сбросить",
+ "sendInfoText": "Отправить информацию (обратная связь с разработчиком).",
"showBombTrajectoriesText": "Показывать траекторию бомбы",
- "showInGamePingText": "Показать Ping",
+ "showDemosWhenIdleText": "Показать Демо-Версию в режиме ожидания.",
+ "showDeprecatedLoginTypesText": "Показывать устаревшие типы входа в систему",
+ "showDevConsoleButtonText": "Показать кнопку консоли",
+ "showInGamePingText": "Показать пинг (Задержку действий на сервере).",
"showPlayerNamesText": "Показывать имена игроков",
"showUserModsText": "Показать папку модов",
"titleText": "Дополнительно",
@@ -1334,8 +1405,8 @@
"translationFetchErrorText": "статус перевода недоступен",
"translationFetchingStatusText": "проверка статуса перевода...",
"translationInformMe": "Сообщите мне, если мой язык нуждается в обновлениях",
- "translationNoUpdateNeededText": "данный язык полностью обновлен, ура!",
- "translationUpdateNeededText": "** данный язык нуждается в обновлениях!! **",
+ "translationNoUpdateNeededText": "Данный язык полностью обновлен, ура!",
+ "translationUpdateNeededText": "** Установленный язык требует обновлений!!!**",
"vrTestingText": "Тестирование VR"
},
"shareText": "Поделиться",
@@ -1345,11 +1416,14 @@
"signInWithGameCenterText": "Чтобы использовать аккаунт GameCenter,\nвойдите через GameCenter.",
"singleGamePlaylistNameText": "Просто ${GAME}",
"singlePlayerCountText": "1 игрок",
+ "sizeLargeText": "Гигантский",
+ "sizeMediumText": "Средний",
+ "sizeSmallText": "Крошечный",
"soloNameFilterText": "${NAME} соло",
"soundtrackTypeNames": {
"CharSelect": "Выбор персонажа",
"Chosen One": "Избранный",
- "Epic": "Игры в эпическом режиме",
+ "Epic": "Игры в замедленном режиме",
"Epic Race": "Эпическая гонка",
"FlagCatcher": "Захват флага",
"Flying": "Счастливые мысли",
@@ -1370,6 +1444,7 @@
},
"spaceKeyText": "пробел",
"statsText": "Статистика",
+ "stopRemindingMeText": "Не напоминай мне",
"storagePermissionAccessText": "Это требует доступа к хранилищу",
"store": {
"alreadyOwnText": "У вас уже есть ${NAME}!",
@@ -1403,24 +1478,26 @@
"salePercentText": "(Скидка ${PERCENT}%)",
"saleText": "СКИДКА",
"searchText": "Поиск",
- "teamsFreeForAllGamesText": "Командные игры / Каждый сам за себя",
- "totalWorthText": "*** ${TOTAL_WORTH} значение! ***",
+ "teamsFreeForAllGamesText": "Командные / Каждый сам за себя игры",
+ "totalWorthText": "*** Общая стоимость набора - ${TOTAL_WORTH}! ***",
"upgradeQuestionText": "Обновить?",
"winterSpecialText": "Зимняя акция",
"youOwnThisText": "- у вас это уже есть -"
},
- "storeDescriptionText": "Игровое безумие с 8 игроками!\n\nВзрывайте своих друзей (или ботов) в турнире взрывных мини-игр, таких как Захват флага и Эпический смертельный бой замедленного действия!\n\nС простым управлением и расширенной поддержкой контроллеров 8 человек могут присоединиться к действию, можно даже использовать мобильные устройства как контроллеры через бесплатное приложение 'BombSquad Remote'!\n\nВ атаку!\n\nСм. www.froemling.net/BombSquad для дополнительной информации.",
+ "storeDescriptionText": "Игровое безумие с 8 игроками!\n\nВзрывайте своих друзей (или ботов) в турнире взрывных мини-игр, таких как захват флага, хоккея с взрывчаткой и смертельного боя замедленного действия!\n\nС простым управлением и расширенной поддержкой контроллеров возможно присоединиться вплоть до 8 человек к игре, можно даже использовать мобильные устройства как контроллеры через бесплатное приложение 'BombSquad Remote'!\n\nВ атаку!\n\nСм. www.froemling.net/BombSquad для дополнительной информации.",
"storeDescriptions": {
"blowUpYourFriendsText": "Взорви друзей.",
- "competeInMiniGamesText": "Соревнуйтесь в мини-играх от гонок до левитации.",
+ "competeInMiniGamesText": "Соревнуйтесь в мини-играх от гонок до полёта.",
"customize2Text": "Настройка персонажей, мини-игр и даже саундтрека.",
"customizeText": "Настройка персонажей и создание своих собственных плей-листов мини-игр.",
- "sportsMoreFunText": "Спорт веселее со взрывчаткой.",
- "teamUpAgainstComputerText": "Команды против компьютера."
+ "sportsMoreFunText": "Спорт куда веселее со взрывчаткой.",
+ "teamUpAgainstComputerText": "Объединитесь против ботов."
},
"storeText": "Магазин",
"submitText": "Отправить",
"submittingPromoCodeText": "Активация кода....",
+ "successText": "Успех!",
+ "supportEmailText": "Если вы испытываете какие-то проблемы с приложением,\nпожалуйста, напишите на почту ${EMAIL}.",
"teamNamesColorText": "имена/цвета команд",
"teamsText": "Команды",
"telnetAccessGrantedText": "Доступ Telnet включен.",
@@ -1431,7 +1508,8 @@
"testBuildValidatedText": "Тестовая сборка проверена. Наслаждайтесь!",
"thankYouText": "Спасибо за вашу поддержку! Веселой игры!!",
"threeKillText": "ТРЕХ ЗА РАЗ!!",
- "timeBonusText": "Бонус времени",
+ "ticketsDescriptionText": "Билеты можно использовать для открытия\nперсонажей, карт, мини-игр и множество\nдругого в магазине.\n\nБилеты можно найти в сундуках, полученные в кампании и за достижения, а так же выигранные в турнирах.",
+ "timeBonusText": "Бонус за время",
"timeElapsedText": "Прошло времени",
"timeExpiredText": "Время вышло",
"timeSuffixDaysText": "${COUNT}д",
@@ -1440,11 +1518,25 @@
"timeSuffixSecondsText": "${COUNT}с",
"tipText": "Подсказка",
"titleText": "BombSquad",
- "titleVRText": "BombSquad ВР",
+ "titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Получить токены",
+ "notEnoughTokensText": "Недостаточно токенов!",
+ "numTokensText": "${COUNT} Токенов",
+ "openNowDescriptionText": "У тебя достаточно жетонов\nчтобы открыть сундук сейчас - \nтебе не нужно больше ждать.",
+ "shinyNewCurrencyText": "Блестяще новая валюта в BombSquad!",
+ "tokenPack1Text": "Небольшой набор токенов",
+ "tokenPack2Text": "Средний набор токенов",
+ "tokenPack3Text": "Огромный набор токенов",
+ "tokenPack4Text": "Огромный набор токенов",
+ "tokensDescriptionText": "Токены используются для ускорения открытия\nсундуков и для остальных функций игры/аккаунта.\n\nВы можете выиграть токены в игре или купить\nих в магазине. Или же купите Золотой Пропуск\nдля бесконечных токенов и не думайте о них.",
+ "youHaveGoldPassText": "У вас имеется Золотой Пропуск.\nВсе покупки за токены бесплатны.\nНаслаждайтесь!"
+ },
"topFriendsText": "Топ друзей",
"tournamentCheckingStateText": "Проверка статуса турнира, пожалуйста, подождите...",
"tournamentEndedText": "Турнир закончился. Скоро начнется новый.",
"tournamentEntryText": "Вход в турнир",
+ "tournamentFinalStandingsText": "Финальный результат",
"tournamentResultsRecentText": "Последние Результаты турнира",
"tournamentStandingsText": "Позиции в турнире",
"tournamentText": "Турнир",
@@ -1456,11 +1548,11 @@
"Agent Johnson": "Агент Джонсон",
"B-9000": "B-9000",
"Bernard": "Бернард",
- "Bones": "Костяшка",
+ "Bones": "Скелет",
"Butch": "Силач",
"Easter Bunny": "Пасхальный кролик",
"Flopsy": "Флопси",
- "Frosty": "Снежный",
+ "Frosty": "Снеговик",
"Gretel": "Гретель",
"Grumbledorf": "Грамблдорф",
"Jack Morgan": "Джек Морган",
@@ -1501,13 +1593,13 @@
"${GAME} Training": "${GAME}: тренировка",
"Infinite ${GAME}": "Бесконечный уровень ${GAME}",
"Infinite Onslaught": "Бесконечная атака",
- "Infinite Runaround": "Бесконечная беготня",
+ "Infinite Runaround": "Бесконечный побег",
"Onslaught": "Бесконечная атака",
"Onslaught Training": "Атака: тренировка",
"Pro ${GAME}": "${GAME} профи",
"Pro Football": "Регби профи",
"Pro Onslaught": "Атака профи",
- "Pro Runaround": "Беготня профи",
+ "Pro Runaround": "Побег профи",
"Rookie ${GAME}": "${GAME} для новичков",
"Rookie Football": "Регби для новичков",
"Rookie Onslaught": "Атака для новичков",
@@ -1516,17 +1608,29 @@
"Uber ${GAME}": "Убер ${GAME}",
"Uber Football": "Убер регби",
"Uber Onslaught": "Убер атака",
- "Uber Runaround": "Убер беготня"
+ "Uber Runaround": "Убер побег"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} Билетов",
+ "${C} Tokens": "${C} Токенов",
+ "Chest": "Сундук",
+ "L1 Chest": "Сундук 1го уровня",
+ "L2 Chest": "Сундук 2го уровня",
+ "L3 Chest": "Сундук 3го уровня",
+ "L4 Chest": "Сундук 4го уровня",
+ "L5 Chest": "Сундук 5го уровня",
+ "L6 Chest": "Сундук 6го уровня",
+ "Unknown Chest": "Неизвестный сундук"
},
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Чтобы победить, стань избранным на некоторое время.\nЧтобы стать избранным, убей избранного.",
"Bomb as many targets as you can.": "Взорвите столько мишеней, сколько сможете.",
"Carry the flag for ${ARG1} seconds.": "Пронесите флаг в течение ${ARG1} секунд.",
"Carry the flag for a set length of time.": "Пронесите флаг в течение заданного времени.",
- "Crush ${ARG1} of your enemies.": "Разбейте ${ARG1} врагов.",
+ "Crush ${ARG1} of your enemies.": "Победите ${ARG1} врагов.",
"Defeat all enemies.": "Победите всех врагов.",
"Dodge the falling bombs.": "Увернитесь от падающих бомб.",
- "Final glorious epic slow motion battle to the death.": "Финальная эпическая смертельная битва в замедленном действии.",
+ "Final glorious epic slow motion battle to the death.": "Финальная смертельная битва в замедленном действии.",
"Gather eggs!": "Соберите яйца!",
"Get the flag to the enemy end zone.": "Отнесите флаг в зону защиты противника.",
"How fast can you defeat the ninjas?": "Как быстро вы сможете победить ниндзя?",
@@ -1590,7 +1694,7 @@
"Ninja Fight": "Бой с ниндзя",
"Onslaught": "Атака",
"Race": "Гонка",
- "Runaround": "Обход",
+ "Runaround": "Побег",
"Target Practice": "Стрельба по мишеням",
"The Last Stand": "Последний рубеж"
},
@@ -1602,7 +1706,8 @@
"Arabic": "Арабский",
"Belarussian": "Белорусский",
"Chinese": "Китайский упрощенный",
- "ChineseTraditional": "Китайский традиционный",
+ "ChineseSimplified": "Китайский - упрощённый",
+ "ChineseTraditional": "Китайский - традиционный",
"Croatian": "Хорватский",
"Czech": "Чешский",
"Danish": "Датский",
@@ -1623,13 +1728,18 @@
"Korean": "Корейский",
"Malay": "Малайский",
"Persian": "Персидский",
+ "PirateSpeak": "Пиратский язык",
"Polish": "Польский",
"Portuguese": "Португальский",
+ "PortugueseBrazil": "Португальский - Бразилия",
+ "PortuguesePortugal": "Португальский",
"Romanian": "Румынский",
"Russian": "Русский",
"Serbian": "Сербский",
"Slovak": "Словацкий",
"Spanish": "Испанский",
+ "SpanishLatinAmerica": "Испанский - Латинская Америка",
+ "SpanishSpain": "Испанский",
"Swedish": "Шведский",
"Tamil": "Тамильский",
"Thai": "Тайский",
@@ -1664,7 +1774,7 @@
"Zigzag": "Зигзаг"
},
"playlistNames": {
- "Just Epic": "Только эпический",
+ "Just Epic": "Только замедленный",
"Just Sports": "Только спорт"
},
"promoCodeResponses": {
@@ -1689,14 +1799,15 @@
"An error has occurred; please contact support. (${ERROR})": "произошла ошибка;Пожалуйста обратитесь в службу поддержки. (${ERROR})",
"An error has occurred; please contact support@froemling.net.": "Произошла ошибка; пожалуйста, свяжитесь с support@froemling.net.",
"An error has occurred; please try again later.": "Произошла ошибка, пожалуйста, повторите попытку позже.",
- "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Точно хотите связать аккаунты?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nОтменить будет нельзя!",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Вы точно хотите связать аккаунты?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nДействие нельзя будет отменить!",
"BombSquad Pro unlocked!": "BombSquad Pro разблокирован!",
"Can't link 2 accounts of this type.": "Невозможно связать 2 аккаунта этого типа.",
"Can't link 2 diamond league accounts.": "Невозможно связать 2 аккаунта бриллиантовой лиги.",
"Can't link; would surpass maximum of ${COUNT} linked accounts.": "Невозможно связать; будет превышен максимум ${COUNT} связанных аккаунтов.",
- "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Ах ты, читер; Очки и награды заморожены на ${COUNT} дней.",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Жульничать нехорошо! Очки и награды заморожены на ${COUNT} дней.",
"Could not establish a secure connection.": "Не удалось установить безопасное соединение.",
- "Daily maximum reached.": "Хватит на сегодня.",
+ "Daily maximum reached.": "Суточный предел достигнут.",
+ "Daily sign-in reward": "Ежедневная награда за вход",
"Entering tournament...": "Вход в турнир...",
"Invalid code.": "Неверный код.",
"Invalid payment; purchase canceled.": "Что-то пошло не так. Покупка отменена.",
@@ -1706,11 +1817,14 @@
"Item unlocked!": "Предмет разблокирован!!!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "СВЯЗКА ЗАПРЕЩЕНА. ${ACCOUNT} содержит \nважные данные, которые БУДУТ ПОТЕРЯНЫ.\nВы можете связать в обратном порядке\n(и потерять данные ЭТОГО аккаунта)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Связать этот ${ACCOUNT} аккаунт с этим?\nВсе существующие данные на ${ACCOUNT} будут потеряны.\nЭто действие не может быть отменено. Вы уверены?",
+ "Longer streaks lead to better rewards.": "Чем дольше дней вы заходите в игру подряд, тем лучше награды.",
"Max number of playlists reached.": "Достигнуто максимальное количество плейлистов.",
"Max number of profiles reached.": "Достигнуто максимальное количество профилей.",
"Maximum friend code rewards reached.": "Достигнут лимит кодов.",
"Message is too long.": "Сообщение слишком длинное.",
+ "New tournament result!": "Новый результат турнира!",
"No servers are available. Please try again soon.": "Нет доступных серверов. Пожалуйста попробуйте позднее.",
+ "No slots available. Free a slot and try again.": "Все места заняты. Освободите место и попробуйте ещё раз.",
"Profile \"${NAME}\" upgraded successfully.": "Профиль \"${NAME}\" обновлен успешно.",
"Profile could not be upgraded.": "Профиль не может быть обновлен.",
"Purchase successful!": "Успешная транзакция!",
@@ -1720,7 +1834,9 @@
"Sorry, this code has already been used.": "Упс, этот код уже использован.",
"Sorry, this code has expired.": "Упс, время действия кода истекло.",
"Sorry, this code only works for new accounts.": "Упс, этот код работает только для новых аккаунтов.",
+ "Sorry, this has expired.": "Упс, время истекло.",
"Still searching for nearby servers; please try again soon.": "Ведётся поиск ближайших серверов; пожалуйста попробуйте позднее.",
+ "Streak: ${NUM} days": "Промежуток: ${NUM} дней",
"Temporarily unavailable; please try again later.": "Временно недоступно; Пожалуйста, повторите попытку позже.",
"The tournament ended before you finished.": "Турнир закончился прежде, чем вы закончили.",
"This account cannot be unlinked for ${NUM} days.": "Этот аккаунт невозможно отвязать в течение ${NUM} дней.",
@@ -1730,21 +1846,30 @@
"Tournaments disabled due to rooted device.": "Турниры отключены из-за рутированного устройства.",
"Tournaments require ${VERSION} or newer": "Для турниров требуется версия ${VERSION} или выше.",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Отвязать ${ACCOUNT} от этого аккаунта?\nВсе данные на ${ACCOUNT} будут сброшены.\n(за исключением достижений в некоторых случаях)",
- "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ПРЕДУПРЕЖДЕНИЕ: жалобы на хакерство были выданы на вашу учетную запись.\nУчетные записи, которые считаются взломанными, будут заблокированы. Пожалуйста, играйте честно.",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ПРЕДУПРЕЖДЕНИЕ: на Ваш аккаунт поступили жалобы о жульничестве.\nАккаунты, использующиеся для жульничества будут заблокированы. Пожалуйста, играйте честно.",
+ "Wait reduced!": "Время ожидания уменьшено!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Предупреждение: эта версия игры ограничена старыми данными учетной записи; некоторые данные могут отсутствовать или быть устаревшими.\nПожалуйста, обновите игру до более новой версии, чтобы увидеть последние данные учетной записи.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Желаете связать аккаунт устройства вот c этим?\n\nАккаунт устройства ${ACCOUNT1}\nТекущий аккаунт ${ACCOUNT2}\n\nЭто позволит сохранить ваши нынешние достижения.\nВнимание: отмена невозможна!",
"You already own this!": "Вы это уже приобрели!",
- "You can join in ${COUNT} seconds.": "Ты можешь войти через ${COUNT} секунд",
+ "You can join in ${COUNT} seconds.": "Вы можете войти через ${COUNT} секунд.",
"You don't have enough tickets for this!": "У вас недостаточно билетов для этой покупки!",
- "You don't own that.": "У вас этого нету.",
+ "You don't own that.": "У вас этого нет.",
"You got ${COUNT} tickets!": "Вы получили ${COUNT} билетов!",
+ "You got ${COUNT} tokens!": "У вас ${COUNT} токенов!",
"You got a ${ITEM}!": "Вы получили ${ITEM}!",
+ "You got a chest!": "Вы получили сундук!",
+ "You got an achievement reward!": "Вы получили награду за достижение!",
"You have been promoted to a new league; congratulations!": "Вас повысили и перевели в новую лигу; поздравляем!",
+ "You lost a chest! (All your chest slots were full)": "Вы потеряли сундук! (Ваш инвентарь полон)",
+ "You must update the app to view this.": "Вы должны обновить игру чтобы увидеть это.",
"You must update to a newer version of the app to do this.": "Чтобы это сделать, вы должны обновить приложение.",
"You must update to the newest version of the game to do this.": "Вы должны обновиться до новейшей версии игры, чтобы сделать это.",
"You must wait a few seconds before entering a new code.": "Подождите несколько секунд, прежде чем вводить новый код.",
+ "You placed #${RANK} in a tournament!": "Вы заняли #${RANK} в турнире!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Ваш ранг в последнем турнире: ${RANK}! Спасибо за игру!",
"Your account was rejected. Are you signed in?": "Ваш аккаунт отклонён. Вы вошли в систему?",
- "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Ваша версия игры была модифицирована.\nУберите все изменения и попробуйте снова.",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Ваши просмотры рекламы не регистрируются. Функция рекламы будет ограничена какое-то время.",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Ваша версия игры модифицирована.\nУберите все изменения (в т.ч. плагины) и попробуйте снова.",
"Your friend code was used by ${ACCOUNT}": "Ваш код был использован ${ACCOUNT}"
},
"settingNames": {
@@ -1766,13 +1891,13 @@
"Enable Impact Bombs": "Включить ударные бомбы",
"Enable Triple Bombs": "Включить тройные бомбы",
"Entire Team Must Finish": "Вся команда должна финишировать",
- "Epic Mode": "Эпический режим",
+ "Epic Mode": "Замедленный режим",
"Flag Idle Return Time": "Время возврата брошенного флага",
"Flag Touch Return Time": "Время захвата флага",
"Hold Time": "Время удержания",
"Kills to Win Per Player": "Убийств на игрока до победы",
"Laps": "Круги",
- "Lives Per Player": "Жизней на игрока",
+ "Lives Per Player": "Кол-во жизней на игрока",
"Long": "Долго",
"Longer": "Дольше",
"Mine Spawning": "Минирование",
@@ -1791,7 +1916,7 @@
"statements": {
"${TEAM} is disqualified because ${PLAYER} left": "${TEAM} дисквалифицирована потому что ${PLAYER} вышел",
"Killing ${NAME} for skipping part of the track!": "Ликвидация ${NAME} за срезание трассы!",
- "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Предупреждение для ${NAME}: за турбо / быстрое повторное нажатие кнопки можно вырубится."
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Предупреждение для ${NAME}: за быстрое повторное нажатие кнопки(ок) можно уснуть."
},
"teamNames": {
"Bad Guys": "Негодяи",
@@ -1856,7 +1981,7 @@
"trophiesText": "Трофеев",
"trophiesThisSeasonText": "Трофеи за этот Сезон",
"tutorial": {
- "cpuBenchmarkText": "Прогон тьюториала на безумной скорости (проверяет скорость процессора)",
+ "cpuBenchmarkText": "Запуск обучения на безумной скорости (проверяет скорость процессора)",
"phrase01Text": "Привет!",
"phrase02Text": "Добро пожаловать в ${APP_NAME}!",
"phrase03Text": "Несколько советов по управлению персонажем:",
@@ -1886,35 +2011,42 @@
"phrase27Text": "Не забывай эти советы, и ТОЧНО вернешься живым!",
"phrase28Text": "...может быть...",
"phrase29Text": "Удачи!",
- "randomName1Text": "Вася",
- "randomName2Text": "Петя",
- "randomName3Text": "Иннокентий",
- "randomName4Text": "Шурик",
- "randomName5Text": "Виталик",
- "skipConfirmText": "Пропустить тьюториал? Коснитесь или нажмите кнопку для подтверждения.",
+ "randomName1Text": "Фрэд",
+ "randomName2Text": "Гарри",
+ "randomName3Text": "Билл",
+ "randomName4Text": "Чак",
+ "randomName5Text": "Фил",
+ "skipConfirmText": "Пропустить обучение? Коснитесь или нажмите кнопку для подтверждения.",
"skipVoteCountText": "${COUNT}/${TOTAL} голосов за пропуск",
"skippingText": "пропуск обучения...",
- "toSkipPressAnythingText": "(коснитесь или нажмите что-нибудь чтобы пропустить тьюториал)"
+ "toSkipPressAnythingText": "(коснитесь или нажмите что-нибудь чтобы пропустить обучение)"
},
"twoKillText": "ДВОИХ ЗА РАЗ!",
+ "uiScaleText": "Размер UI",
"unavailableText": "недоступно",
+ "unclaimedPrizesText": "У вас есть не полученные призы!",
"unconfiguredControllerDetectedText": "Обнаружен ненастроенный геймпад:",
"unlockThisInTheStoreText": "Это должно быть разблокировано в магазине.",
"unlockThisProfilesText": "Чтобы создать более ${NUM} профиль, Вам необходимо:",
"unlockThisText": "Чтобы разблокировать это, вам нужно:",
+ "unsupportedControllerText": "К сожалению, контроллер \"${NAME}\" не поддерживается.",
"unsupportedHardwareText": "К сожалению, это оборудование не поддерживается в этой сборке игры.",
"upFirstText": "Для начала:",
"upNextText": "Далее в игре ${COUNT}:",
- "updatingAccountText": "Обновление вашего аккаунта",
+ "updatingAccountText": "Обновление вашего аккаунта...",
"upgradeText": "Обновление",
"upgradeToPlayText": "Разблокируйте \"${PRO}\" в магазине что-бы играть в это.",
"useDefaultText": "Использовать стандартные",
+ "userSystemScriptsCreateText": "Создать Свои Скрипты",
+ "userSystemScriptsDeleteText": "Стереть Свои Скрипты",
"usesExternalControllerText": "Эта игра может использовать внешний контроллер для управления.",
"usingItunesText": "Использование музыкального приложения для саундтрека...",
"usingItunesTurnRepeatAndShuffleOnText": "Убедитесь, что в iTunes включен случайный порядок, и повтор установлен на 'все'.",
- "v2AccountLinkingInfoText": "Чтобы обьединить старый и новый аккаунты, используйте кнопку 'Обьединить аккаунты'",
+ "v2AccountLinkingInfoText": "Чтобы обьединить V2 аккаунты, используйте кнопку 'Обьединить аккаунты'",
+ "v2AccountRequiredText": "Для этого требуется учетная запись V2. Обновите свою учетную запись и повторите попытку.",
"validatingBetaText": "Валидация бета-версии...",
"validatingTestBuildText": "Проверка тестовой сборки...",
+ "viaText": "используя",
"victoryText": "Победа!",
"voteDelayText": "Невозможно начать новое голосование еще ${NUMBER} секунд",
"voteInProgressText": "Голосование уже в процессе.",
@@ -1924,7 +2056,7 @@
"waitingForHostText": "(ожидание ${HOST} чтобы продолжить)",
"waitingForLocalPlayersText": "ожидание локальных игроков...",
"waitingForPlayersText": "ожидание присоединения игроков...",
- "waitingInLineText": "Подожди немного (комната заполнена)...",
+ "waitingInLineText": "Подождите немного (лобби заполнено)...",
"watchAVideoText": "Смотреть видео",
"watchAnAdText": "Смотреть рекламу",
"watchWindow": {
@@ -1968,8 +2100,8 @@
"winsText": "${NAME} выиграл!",
"workspaceSyncErrorText": "Ошибка при попытке синхронизации ${WORKSPACE}. Посмотрите лог для информации.",
"workspaceSyncReuseText": "Не получается синхронизировать ${WORKSPACE}. Используется прошлая синхронизация.",
- "worldScoresUnavailableText": "Мировые результаты недоступны.",
- "worldsBestScoresText": "Лучшие в мире очки",
+ "worldScoresUnavailableText": "Мировые рекорды не доступны",
+ "worldsBestScoresText": "Лучшие в мире результаты",
"worldsBestTimesText": "Лучшее в мире время",
"xbox360ControllersWindow": {
"getDriverText": "Скачать драйвер",
@@ -1981,5 +2113,6 @@
},
"yesAllowText": "Да, разрешить!",
"yourBestScoresText": "Ваши лучшие очки",
- "yourBestTimesText": "Ваше лучшее время"
+ "yourBestTimesText": "Ваше лучшее время",
+ "yourPrizeText": "Ваш приз:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/serbian.json b/dist/ba_data/data/languages/serbian.json
index 2ea8600e..e3555917 100644
--- a/dist/ba_data/data/languages/serbian.json
+++ b/dist/ba_data/data/languages/serbian.json
@@ -8,6 +8,8 @@
"changeOncePerSeason": "Ово можеш променити само једном током сезоне.",
"changeOncePerSeasonError": "Мораш сачекати следећу сезону да би ово опет променио (${NUM} дан/а)",
"customName": "Сопствено име",
+ "deleteAccountText": "избрисати налог",
+ "googlePlayGamesAccountSwitchText": "Ако желите да користите други Гоогле налог,\nкористите апликацију Гоогле Плаи игре за пребацивање.",
"linkAccountsEnterCodeText": "Унеси код",
"linkAccountsGenerateCodeText": "Генериши код",
"linkAccountsInfoText": "(подели напредак на више резличитих уређаја)",
@@ -15,6 +17,7 @@
"linkAccountsInstructionsText": "Da povežeš dva profila, generiši kod sa jednog \nod njih i unesi kod na drugi.\nNapredak i inventar će biti spojeni.\nMožeš povezati najviše ${COUNT} profila.\n\nPAŽNJA:Samo poveži naloge koje poseduješ!\nAko povežeš naloge sa prijateljima onda\nnećeš biti u mogućnosti da igraš u isto vreme!\n\nVAŽNO:Ovo se trenutno ne može poništiti, zato budi pažljiv!",
"linkAccountsText": "Повежи налоге",
"linkedAccountsText": "Повезани налози:",
+ "manageAccountText": "Управљајте налогом",
"nameChangeConfirm": "Промени име налога у ${NAME}?",
"resetProgressConfirmNoAchievementsText": "Ово ће твој кооперативни напредак и локалне \nрекорде вратити на почетак (али не и тикете).\nОво се не може поништити. Да ли си сигуран?",
"resetProgressConfirmText": "Ово ће твој кооперативни напредак,\nдостигнућа и локалне рекорде (али не\nи тикете) вратити на почетак. Ово се\nне може поништити. Да ли си сигуран?",
@@ -23,14 +26,16 @@
"setAccountNameDesc": "Изабери име које ће се приказивати на твом налогу.\nМожеш користити име са једног од твоји повезаних\nналога или направити ново јединствено име.",
"signInInfoText": "Пријави се да зарађујеш тикете, такмичиш на мрежи\nи делиш напредак на више различитих уређаја.",
"signInText": "Пријави се",
+ "signInWithAnEmailAddressText": "Пријавите се помоћу адресе е-поште",
"signInWithDeviceInfoText": "(аутоматски налог достпупан једино са овог уређаја)",
"signInWithDeviceText": "Пријави се налогом уређаја",
"signInWithGameCircleText": "Пријави се преко Гејм Сркла.",
"signInWithGooglePlayText": "Пријави се преко Гугл Плеја",
"signInWithTestAccountInfoText": "(налог за тестирање нових ствари које ће ускоро изаћи)",
"signInWithTestAccountText": "Пријави се са тест профилом",
+ "signInWithText": "Пријавите се помоћу ${SERVICE}",
"signInWithV2InfoText": "(налог који функционише на свим платформама)",
- "signInWithV2Text": "Улогуј се помоћу Bombsquad налога",
+ "signInWithV2Text": "Улогуј се помоћу ${APP_NAME} налога",
"signOutText": "Одјави се",
"signingInText": "Пријављивање...",
"signingOutText": "Одјављивање...",
@@ -40,6 +45,7 @@
"titleText": "Налог",
"unlinkAccountsInstructionsText": "Изабери налог за раздвајање",
"unlinkAccountsText": "Раздвоји налоге",
+ "unlinkLegacyV1AccountsText": "Прекините везу са старим (V1) налозима",
"v2LinkInstructionsText": "Искористи овај линк да направиш налог или да се улогујеш.",
"viaAccount": "(преко налога ${NAME})",
"youAreSignedInAsText": "Пријављен си као:"
@@ -333,9 +339,11 @@
"getMoreGamesText": "Додај више игри...",
"titleText": "Додај игру"
},
+ "addToFavoritesText": "Додај у фаворите",
"allowText": "Дозволи",
"alreadySignedInText": "Овај налог је тренутно пријављен на другом уређају;\nмолимо вас да замените налог или искључите игру на\nдругом уређају и покушате поново.",
"apiVersionErrorText": "Не можемо учитати мод ${NAME}; он тражи верзију ${VERSION_USED}; ми користимо ${VERSION_REQUIRED}.",
+ "areYouSureText": "Јесте ли сигурни?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Аутоматски\" активира само када су прикључене слушалице)",
"headRelativeVRAudioText": "Виртуелни аудио у простору",
@@ -623,6 +631,7 @@
"useMusicFolderText": "Фолдер са музичким фајловима"
},
"editText": "Измени",
+ "enabledText": "Омогућено",
"endText": "Крај",
"enjoyText": "Уживај!",
"epicDescriptionFilterText": "${DESCRIPTION} у епско успореној игри.",
@@ -1809,6 +1818,7 @@
"upgradeText": "Надогради",
"upgradeToPlayText": "Откључај \"${PRO}\" у продавници игре да играш ово.",
"useDefaultText": "Користи подразумевано",
+ "userSystemScriptsCreateText": "Креирајте корисничке системске скрипте",
"usesExternalControllerText": "Ова игра користи спољашњи контролер за унос.",
"usingItunesText": "Коришћење музичке апликације за листу звукова...",
"validatingTestBuildText": "Потврђивање система за тестирање...",
@@ -1843,6 +1853,7 @@
},
"waveText": "Рунда",
"wellSureText": "Наравно!",
+ "whatIsThisText": "шта је ово?",
"wiimoteLicenseWindow": {
"titleText": "Дарвин Римоут права задржана"
},
diff --git a/dist/ba_data/data/languages/slovak.json b/dist/ba_data/data/languages/slovak.json
index 8acf13b2..09df88d2 100644
--- a/dist/ba_data/data/languages/slovak.json
+++ b/dist/ba_data/data/languages/slovak.json
@@ -8,6 +8,8 @@
"changeOncePerSeason": "Toto môžete zmeniť len raz za sezónu.",
"changeOncePerSeasonError": "Musíte počkať do ďalšej sezóny aby ste mohli toto znova zmeniť (${NUM} days)",
"customName": "Vlastný názov",
+ "deleteAccountText": "Zmazať Účet",
+ "googlePlayGamesAccountSwitchText": "Ak chcete použiť iný účet Google,\nna jeho výmenu použite aplikáciu hry Google Play.",
"linkAccountsEnterCodeText": "Vložte kód",
"linkAccountsGenerateCodeText": "Vygenerovať kód",
"linkAccountsInfoText": "(zdielajte postup medzi rôznymi platformami)",
@@ -25,14 +27,16 @@
"setAccountNameDesc": "Vyberte meno, ktoré sa bude zobrazovať na vašom účte.\nMôžete použiť meno jedného zo svojich prepojených \núčtov alebo si vytvorte svoje vlastné meno.",
"signInInfoText": "Prihláste sa, abyste zbierali tickety, dokončite online \na zdielajte postup medzi zariadeními.",
"signInText": "Prihlasujem",
+ "signInWithAnEmailAddressText": "Prihláste sa s e-mailovým účtom",
"signInWithDeviceInfoText": "(iba automatický účet je dostupný pre toto zariadenie)",
"signInWithDeviceText": "Prihláste sa s účtom na zariadení",
"signInWithGameCircleText": "Prihlásiť sa s Game Circle",
"signInWithGooglePlayText": "Príhlásit sa s Google Play",
"signInWithTestAccountInfoText": "(starý typ účtu; v budúcnosti používajte účty zariadení)",
"signInWithTestAccountText": "Prihlásit sa s testovacím účtom",
+ "signInWithText": "Prihlás sa s ${SERVICE}",
"signInWithV2InfoText": "(účet, ktorý funguje na všetkých platformách)",
- "signInWithV2Text": "Prihláste sa pomocou účtu BombSquad",
+ "signInWithV2Text": "Prihláste sa pomocou účtu ${APP_NAME}",
"signOutText": "Odhlasujem",
"signingInText": "Prihlasujem",
"signingOutText": "Odhlasujem",
@@ -42,6 +46,7 @@
"titleText": "Konto",
"unlinkAccountsInstructionsText": "Vyberte účet, s ktorým chcete zrušiť prepojenie",
"unlinkAccountsText": "Zrušiť prepojenie účtov",
+ "unlinkLegacyV1AccountsText": "Odpojiť Staré (V1) Účty",
"v2LinkInstructionsText": "Pomocou tohto odkazu si vytvorte účet alebo sa prihláste.",
"viaAccount": "(cez účet ${NAME})",
"youAreLoggedInAsText": "Si prihlásený ako:",
@@ -336,9 +341,14 @@
"getMoreGamesText": "Viac Hier...",
"titleText": "Pridať Hru"
},
+ "addToFavoritesText": "Pridať do Obľúbených",
+ "addedToFavoritesText": "'${NAME}' pridané do Obľúbených.",
+ "allText": "Všetko",
"allowText": "Povol",
"alreadySignedInText": "Tvoj účet je prihlásený z iného zariadenia;\nprosím prepni si účty alebo ukonči hru na\ntvojich ostatných zariadeniach a skús to znovu.",
"apiVersionErrorText": "Nemožno načítať modul ${NAME}; používa api-verziu ${VERSION_USED}; my potrebujeme ${VERSION_REQUIRED}.",
+ "applyText": "Uložiť Zmeny",
+ "areYouSureText": "Ste si istý?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Automatika\" toto povolí len keď sú slúchadlá zapojené)",
"headRelativeVRAudioText": "Head-Relative VR Audio",
@@ -360,7 +370,7 @@
"boostText": "Pridať",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} je nastavené v aplikácii",
"buttonText": "tlačidlo",
- "canWeDebugText": "Chcel by si, aby Bombsquad automaticky nahlasovalo\nbugy, crashe, a základné informácie o použití vývojárovi?\n\nToto data neobsahuje žiadne osobné informácie a pomáha\nnechávať hru bežať hladko a bez bugov.",
+ "canWeDebugText": "Chcel by si, aby ${APP_NAME}\nautomaticky nahlasovalo bugy, \ncrashe, \na základné informácie\no použití vývojárovi?",
"cancelText": "Zrušiť",
"cantConfigureDeviceText": "Prepáč, ${DEVICE} nie je konfigurovateľný",
"challengeEndedText": "Táto challenge skončila.",
@@ -368,6 +378,7 @@
"chatMutedText": "Čet Zablokovaný",
"chatUnMuteText": "Odblokovať Čet",
"choosingPlayerText": "",
+ "codesExplainText": "Kódy sú poskytované vývojárovi \nk diagnostike a oprave problémov s účtom.",
"completeThisLevelToProceedText": "Musíš dokončiť\ntento level pre postup!",
"completionBonusText": "Bonus za Dokončenie",
"configControllersWindow": {
@@ -448,6 +459,7 @@
"swipeText": "posúvanie",
"titleText": "Konfigurovať Obrazovku"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} možno nakonfigurovať v systémových nastaveniach aplikácie.",
"configureItNowText": "Konfigurovať teraz?",
"configureText": "Konfigurovať",
"connectMobileDevicesWindow": {
@@ -549,7 +561,10 @@
"deleteText": "Vymazať",
"demoText": "Demo",
"denyText": "odmietnuť",
+ "deprecatedText": "Zastaralé",
+ "descriptionText": "Popis",
"desktopResText": "Desktop Res",
+ "deviceAccountUpgradeText": "Upozornenie:\nSte pripojený v účte (${NAME}) typu zariarenie.\nÚčty takého typu budú odstránené v budúcej aktualizácii.\nAktualizujte to na V2 Účet keď chcete zachovať váš pokrok.",
"difficultyEasyText": "Jednoduchá",
"difficultyHardOnlyText": "Len Ťažký Mód",
"difficultyHardText": "Ťažké",
@@ -558,6 +573,10 @@
"disableRemoteAppConnectionsText": "Zakázať Remote-App Pripojenia",
"disableXInputDescriptionText": "Povolí viac ako 4 ovládače ale nemusí fungovať dobre.",
"disableXInputText": "Zakázať XInput",
+ "disabledText": "Vypnuté",
+ "discardText": "Odhodiť",
+ "discordFriendsText": "Chcete nájsť nových ľudí na hranie?\nPripojte sa na náš Discord a nájdite nových priateľov!",
+ "discordJoinText": "Pripojiť na Diskord",
"doneText": "Hotovo",
"drawText": "Remíza",
"duplicateText": "Duplikovať",
@@ -590,6 +609,7 @@
"localProfileText": "(lokálny profil)",
"nameDescriptionText": "Meno Hráča",
"nameText": "Meno",
+ "profileAlreadyExistsText": "Profil s týmto menom už existuje.",
"randomText": "náhodne",
"titleEditText": "Upraviť Profil",
"titleNewText": "Nový Profil",
@@ -625,6 +645,7 @@
"useMusicFolderText": "Zložka Súborov Hudby"
},
"editText": "Upraviť",
+ "enabledText": "Povolené",
"endText": "Ukončiť",
"enjoyText": "Užite si to!",
"epicDescriptionFilterText": "${DESCRIPTION} Spomalene.",
@@ -670,6 +691,8 @@
"duplicateText": "Duplikovať\nPlaylist",
"editText": "Upraviť\nPlaylist",
"newText": "Nový\nPlaylist",
+ "pointsToWinText": "Body ku výhre",
+ "seriesLengthText": "Dĺžka Série",
"showTutorialText": "Ukázať Tutoriál",
"shuffleGameOrderText": "Náhodné Poradie Hier",
"titleText": "Upraviť ${TYPE} Playlisty"
@@ -710,7 +733,7 @@
"friendPromoCodeInstructionsText": "Ak ho chceš použiť, otvor ${APP_NAME} a choď do \"Settings->Advanced->Enter Code\".\nPozri bombsquadgame.com pre download linky pre všetky podporované platformy.",
"friendPromoCodeRedeemLongText": "Môže byť uplatnený za ${COUNT} tiketov až pre ${MAX_USES} ľudí.",
"friendPromoCodeRedeemShortText": "Môže byť uplatnený za ${COUNT} tiketov v hre.",
- "friendPromoCodeWhereToEnterText": "(v časti „Nastavenia-> Pokročilé-> Zadať kód“)",
+ "friendPromoCodeWhereToEnterText": "(V časti „Nastavenia-> Pokročilé-> Poslať info\")",
"getFriendInviteCodeText": "Zohnať Pozvánku",
"googlePlayDescriptionText": "Pozvi Google Play hráčov do párty:",
"googlePlayInviteText": "Pozvať",
@@ -742,6 +765,7 @@
"manualYourLocalAddressText": "Tvoja lokálna adresa:",
"nearbyText": "Neďaleko",
"noConnectionText": "<žiadne pripojenie>",
+ "noPartiesAddedText": "Žiadne Párty nie sú pridané",
"otherVersionsText": "(ostatné verzie)",
"partyCodeText": "Párty kód",
"partyInviteAcceptText": "Potvrdiť",
@@ -805,6 +829,12 @@
"youHaveShortText": "máš ${COUNT}",
"youHaveText": "máš ${COUNT} tiketov"
},
+ "goldPass": {
+ "desc1InfTokensText": "Nekonečné tokeny.",
+ "desc2NoAdsText": "Žiadné reklamy.",
+ "desc3ForeverText": "Navždy.",
+ "goldPassText": "Zlatá Priepustka."
+ },
"googleMultiplayerDiscontinuedText": "Prepáč, Google multiplayer už viac nie je dostupný.\nSnažím sa to prehodiť čo najskôr. Dovtedy prosím\nskús inú metódu pripojenia.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Nákupy Google Play nie sú dostupné.\nAsi musíte aktualizovať svoju obchodnú aplikáciu.",
"googlePlayServicesNotAvailableText": "Služby Google Play nie sú dostupné.\nNiektoré funkčnosti aplikácie môžu byť vypnuté.",
@@ -813,10 +843,12 @@
"alwaysText": "Stále",
"fullScreenCmdText": "Celá Obrazovka (Cmd+F)",
"fullScreenCtrlText": "Celá Obrazovka (Ctrl+F)",
+ "fullScreenText": "Na celú obrazovku",
"gammaText": "Gamma",
"highText": "Vysoko",
"higherText": "Vyššie",
"lowText": "Nízko",
+ "maxFPSText": "Maximálny počet FPS",
"mediumText": "Stredne",
"neverText": "Nikdy",
"resolutionText": "Rozlíšenie",
@@ -1024,6 +1056,7 @@
"maxConnectionsText": "Maximum Pripojení",
"maxPartySizeText": "Maximálna Veľkosť Párty",
"maxPlayersText": "Maximum Hráčov",
+ "merchText": "Merch!",
"modeArcadeText": "Arkádový režim",
"modeClassicText": "Klasický režim",
"modeDemoText": "Demo režim",
@@ -1043,6 +1076,7 @@
"nameSuicideText": "${NAME} spáchal samovraždu.",
"nameText": "Meno",
"nativeText": "Prírodné",
+ "newExclaimText": "Nové!",
"newPersonalBestText": "Nový osobný rekord!",
"newTestBuildAvailableText": "Novšia testovacia verzia je dostupná! (${VERSION} test ${BUILD}).\nZožeň ho na ${ADDRESS}",
"newText": "Nový",
@@ -1053,7 +1087,10 @@
"noContinuesText": "(žiadne pokračovania)",
"noExternalStorageErrorText": "Žiadne úložisko sa v tomto zariadení nenašlo",
"noGameCircleText": "Error: nie si prihlásený do GameCircle",
+ "noMessagesText": "Žiadné Správy.",
+ "noPluginsInstalledText": "Žiadne nainštalované doplnky",
"noScoresYetText": "Zatiaľ žiadne skóre.",
+ "noServersFoundText": "Nenašiel sa žiadny server.",
"noThanksText": "Nie Vďaka",
"noTournamentsInTestBuildText": "UPOZORNENIE: Výsledky turnajov z tejto testovacej zostavy budú ignorované.",
"noValidMapsErrorText": "Žiadne platné mapy sa pre tento typ hry nenašli.",
@@ -1063,6 +1100,7 @@
"notSignedInErrorText": "Ak toto chceš urobiť, musíš sa prihlásiť.",
"notSignedInGooglePlayErrorText": "Ak chceš toto urobiť, musíš sa prihlásiť do Google Play.",
"notSignedInText": "nie si prihlásený",
+ "notUsingAccountText": "Poznámka: ignoruje sa ${SERVICE} účet.\nChoďte na 'Účet -> Prihlásiť sa s ${SERVICE}' pokiaľ to chcete použiť.",
"nothingIsSelectedErrorText": "Nič nie je vybraté!",
"numberText": "#${NUMBER}",
"offText": "Vypnúť",
@@ -1121,7 +1159,11 @@
"pleaseWaitText": "Prosím počkaj...",
"pluginClassLoadErrorText": "Chyba pri načítaní triedy doplnku '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Chyba pri iniciovaní doplnku '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Nastavenia Pluginov",
+ "pluginsAutoEnableNewText": "Automaticky Aktivovať Nové Pluginy",
"pluginsDetectedText": "Bol zistený nový doplnok(ky). Reštartujte aby sa aktivovali, alebo ich nakonfigurte v nastaveniach.",
+ "pluginsDisableAllText": "Deaktivovať Všetky Pluginy",
+ "pluginsEnableAllText": "Aktivovať Všetky Pluginy",
"pluginsRemovedText": "${NUM} doplnok(ky) nebol najdený.",
"pluginsText": "Pluginy",
"practiceText": "Tréning",
@@ -1212,7 +1254,9 @@
"revertText": "Späť",
"runText": "Bežať",
"saveText": "Uložiť",
- "scanScriptsErrorText": "Error pri skenovaní skriptov; pozri zápis pre detaily.",
+ "scanScriptsErrorText": "Chyba pri skenovaní skriptov. Pozri zápis pre detaily.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} a ${NUM} ďalšie moduly je potrebné aktualizovať pre api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} je potrebné aktualizovať pre api ${API}.",
"scoreChallengesText": "Challenge pre Skóre",
"scoreListUnavailableText": "List pre skóre je nedostupné.",
"scoreText": "Skóre",
@@ -1238,7 +1282,7 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(jednoduchá, podporujúca-ovládač na-obrazovke-klávesnica pre písanie textu)",
- "alwaysUseInternalKeyboardText": "Stále Používať Klávesnicu v Programe",
+ "alwaysUseInternalKeyboardText": "Stále používať klávesnicu v programe",
"benchmarksText": "Benchmarky & Stres-Testy",
"disableCameraGyroscopeMotionText": "Zakázať pohyb gyroskopu fotoaparátu",
"disableCameraShakeText": "Zakázať otrasy fotoaparátu",
@@ -1256,6 +1300,9 @@
"netTestingText": "Testovanie Internetu",
"resetText": "Resetovať",
"showBombTrajectoriesText": "Ukázovať Trajektóriu Bomby",
+ "showDemosWhenIdleText": "Zobraziť Ukážky Pri Nečinnosti",
+ "showDevConsoleButtonText": "Zobraziť Tlačidlo Konzoly Zariadenia",
+ "showInGamePingText": "Ukázať Ping v Hre",
"showPlayerNamesText": "Ukazovať Mená Hráčov",
"showUserModsText": "Ukázať Zložku pre Módy",
"titleText": "Pokročilé",
@@ -1274,6 +1321,9 @@
"signInWithGameCenterText": "Ak chceš použiť GameCircle účet,\nprihlás sa s Game Center aplikáciou.",
"singleGamePlaylistNameText": "Len ${GAME}",
"singlePlayerCountText": "1 hráč",
+ "sizeLargeText": "Velké",
+ "sizeMediumText": "Stredné",
+ "sizeSmallText": "Malé",
"soloNameFilterText": "Sólo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Výber Charakteru",
@@ -1346,6 +1396,8 @@
"storeText": "Obchod",
"submitText": "Poslať",
"submittingPromoCodeText": "Overujem Kód...",
+ "successText": "Úspech!",
+ "supportEmailText": "Ak sa vyskytujú nejaké problémy s aplikáciou,\npošlite e-mail na adresu ${EMAIL}.",
"teamNamesColorText": "Mená/Farby tímov",
"telnetAccessGrantedText": "Telnet povolené.",
"telnetAccessText": "Telnet detekovaný; povoliť?",
@@ -1526,6 +1578,7 @@
"Italian": "Taliančina",
"Japanese": "Japončina",
"Korean": "Kórejčina",
+ "Malay": "Malajčina",
"Persian": "Perzština",
"Polish": "Poľština",
"Portuguese": "Portugálčina",
@@ -1798,6 +1851,7 @@
"unlockThisInTheStoreText": "Toto musí byť odomknuté v obchode.",
"unlockThisProfilesText": "Ak chceš vytvoriť viac ako ${NUM} profilov, potrebuješ:",
"unlockThisText": "Ak chceš toto odomknúť, potrebuješ:",
+ "unsupportedControllerText": "Je nám ľúto, ovládač \"${NAME}\" nie je podporovaný.",
"unsupportedHardwareText": "Prepáč, tento hardware nie je podporovaný pre túto verziu hry.",
"upFirstText": "Ako prvé ide:",
"upNextText": "Ďalej v hre ${COUNT}:",
@@ -1807,7 +1861,9 @@
"useDefaultText": "Použiť Štandartné",
"usesExternalControllerText": "Táto hra používa ako vstup externý ovládač.",
"usingItunesText": "Používam Music App ako soundtrack...",
+ "v2AccountLinkingInfoText": "Na prepojenie V2 účtov, použi tlačidlo 'Spravovať Účet'.",
"validatingTestBuildText": "Overujem Testovaciu Verziu...",
+ "viaText": "ako",
"victoryText": "Výhra!",
"voteDelayText": "Nemôžeš začať ďalšie hlasovanie v podobe ${NUMBER} sekúnd",
"voteInProgressText": "Hlasovanie už prebieha.",
@@ -1839,6 +1895,7 @@
},
"waveText": "Vlna",
"wellSureText": "Jasné!",
+ "whatIsThisText": "Toto je čo?",
"wiimoteLicenseWindow": {
"titleText": "DarwiinRemote Copyright"
},
diff --git a/dist/ba_data/data/languages/spanish.json b/dist/ba_data/data/languages/spanish.json
index c2f9bb09..7d8c601d 100644
--- a/dist/ba_data/data/languages/spanish.json
+++ b/dist/ba_data/data/languages/spanish.json
@@ -1,40 +1,42 @@
{
"accountSettingsWindow": {
- "accountNameRules": "Los nombres no deben contener emojis o caracteres especiales",
+ "accountNameRules": "Los nombres de cuentas no pueden contener emojis o otros caracteres especiales",
"accountProfileText": "(Perfil de la cuenta)",
"accountsText": "Cuentas",
"achievementProgressText": "Logros: ${COUNT} de ${TOTAL}",
- "campaignProgressText": "Progreso de campaña [Difícil]: ${PROGRESS}",
- "changeOncePerSeason": "Solamente puedes cambiarlo una vez por temporada.",
+ "campaignProgressText": "Progreso De La Campaña [Difícil]: ${PROGRESS}",
+ "changeOncePerSeason": "Solo puedes cambiarlo una vez por temporada.",
"changeOncePerSeasonError": "Debes esperar hasta la siguiente temporada para cambiarlo de nuevo (en ${NUM} día/s)",
- "customName": "Nombre personalizado",
+ "customName": "Nombre Personalizado",
"deviceSpecificAccountText": "Actualmente usando una cuenta específica de dispositivo: ${NAME}",
- "googlePlayGamesAccountSwitchText": "Si quieres cambiar a otra cuenta de Google,\nusa Google Play para cambiar tu cuenta.",
- "linkAccountsEnterCodeText": "Registrar Código",
+ "googlePlayGamesAccountSwitchText": "Si quieres usar una cuenta diferente de Google,\nusa la app Google Play Juegos para cambiarla.",
+ "linkAccountsEnterCodeText": "Introducir Código",
"linkAccountsGenerateCodeText": "Generar Código",
"linkAccountsInfoText": "(compartir progreso a través de diferentes plataformas)",
- "linkAccountsInstructionsNewText": "Para enlazar dos cuentas, genera un código en la primera cuenta\ne introduce el código en la segunda. \nLos datos de la segunda cuenta serán compartidos con la primera.\n\n(Los datos de la primera cuenta se perderán).\n\nPuedes vincular hasta ${COUNT} cuentas.\n\nIMPORTANTE: enlaza cuentas tuyas;\nSi enlazas cuentas de tus amigos, no podrán jugar online al mismo tiempo.",
+ "linkAccountsInstructionsNewText": "Para vincular dos cuentas, genera un código en la primera \ne introduzca el código en la segunda. Los datos de \nla segunda cuenta se compartirán entre ambos.\n(Los datos de la primera cuenta se perderán).\n\nPuedes vincular hasta ${COUNT} cuentas.\n\nIMPORTANTE: Solo vincula cuentas tuyas; \nSi vinculas cuentas de tus amigos no serán \ncapaces de jugar en línea al mismo tiempo.",
"linkAccountsInstructionsText": "Para enlazar dos cuentas, genera un código en una\n de ellas y escribe el código en la otra.\nEl progreso e accesorios se combinarán.\nPuedes enlazar hasta ${COUNT} cuentas. \n\nIMPORTANTE: Solo enlaza cuentas tuyas!\n\nSi enlazas cuentas con tus amigos no podrán jugar al mismo tiempo!\n\nTambién: esto no se puede deshacer actualmente, así que se cuidadoso!",
- "linkAccountsText": "Enlazar Cuentas",
- "linkedAccountsText": "Cuentas enlazadas:",
+ "linkAccountsText": "Vincular Cuentas",
+ "linkedAccountsText": "Cuentas Vinculadas:",
"manageAccountText": "Administrar Cuenta",
- "nameChangeConfirm": "¿Cambiar tu nombre a ${NAME}?",
+ "nameChangeConfirm": "¿Cambiar tu nombre de cuenta a ${NAME}?",
"notLoggedInText": "",
- "resetProgressConfirmNoAchievementsText": "Esto reiniciará tu progreso en el modo\ncooperativo y tus puntajes (A excepción de tus tickets).\nNo podrás recuperar los cambios. ¿Estás seguro?",
+ "resetProgressConfirmNoAchievementsText": "Esto reiniciará tu progreso cooperativo y \ntus puntajes locales (a excepción de tus boletos).\nEsto no puede deshacerse. ¿Estás seguro?",
"resetProgressConfirmText": "Esto reiniciará tus logros, récords\ny progreso en el modo cooperativo.\nLos cambios no se pueden deshacer.\n¿Estás seguro?",
- "resetProgressText": "Reiniciar progreso",
- "setAccountName": "Establecer nombre de la cuenta",
+ "resetProgressText": "Reiniciar Progreso",
+ "setAccountName": "Establecer Nombre De Cuenta",
"setAccountNameDesc": "Selecciona el nombre a mostrar para tu cuenta. \nPuedes usar el nombre de tu cuenta asociada\no crear un nombre personalizado.",
- "signInInfoText": "Inicia sesión para obtener tickets, competir en línea\ny compartir tu progreso en otras plataformas.",
- "signInText": "Iniciar sesión",
+ "signInInfoText": "Inicia sesión para obtener boletos, competir en línea\ny compartir tu progreso a través de plataformas.",
+ "signInText": "Iniciar Sesión",
+ "signInWithAnEmailAddressText": "Iniciar sesión con una dirección de correo electrónico",
"signInWithDeviceInfoText": "(una cuenta automática disponible únicamente en este dispositivo)",
"signInWithDeviceText": "Iniciar sesión con cuenta del dispositivo",
"signInWithGameCircleText": "Iniciar sesión con Game Circle",
"signInWithGooglePlayText": "Iniciar sesión con Google Play",
- "signInWithTestAccountInfoText": "(Cuenta de prueba, usa la cuenta del dispositivo para avanzar)",
- "signInWithTestAccountText": "Registrarse con una Cuenta de Prueba",
+ "signInWithTestAccountInfoText": "(tipo de cuenta heredada; usa las cuentas de dispositivos más adelante)",
+ "signInWithTestAccountText": "Iniciar sesión con cuenta de prueba",
+ "signInWithText": "Iniciar sesion con ${SERVICE}",
"signInWithV2InfoText": "(una cuenta que funciona en todas las plataformas)",
- "signInWithV2Text": "Inicia sesión con tu cuenta de BombSquad",
+ "signInWithV2Text": "Iniciar sesión con una cuenta de BombSquad",
"signOutText": "Cerrar Sesión",
"signingInText": "Iniciando sesión...",
"signingOutText": "Cerrando sesión...",
@@ -43,322 +45,325 @@
"testAccountWarningText": "Advertencia: te estás registrando con una cuenta de\nprueba. Esta cuenta está vinculada a este dispositivo y\npuede que se reinicie periódicamente. (Así que no\ngastes mucho tiempo coleccionando/desbloqueando objetos)\n\nJuega una versión pública del juego y usa una \"cuenta real\"\n(Game-Center, Google Plus, etc.) Esto también te dejará\nguardar tu progreso en la nube y poder compartirlo con\ndiferentes dispositivos.",
"ticketsText": "Boletos: ${COUNT}",
"titleText": "Cuenta",
- "unlinkAccountsInstructionsText": "Selecciona una cuenta para dejar de enlazar con ella",
- "unlinkAccountsText": "Desenlazar Cuentas",
- "unlinkLegacyV1AccountsText": "Desvincular Cuenta Heredada (V1)",
- "v2LinkInstructionsText": "Usa este enlace para crearte una cuenta o para iniciar sesión",
- "viaAccount": "(por cuenta ${NAME})",
+ "unlinkAccountsInstructionsText": "Selecciona una cuenta para desvincular",
+ "unlinkAccountsText": "Desvincular Cuentas",
+ "unlinkLegacyV1AccountsText": "Desvincular Cuentas (V1) Heredadas",
+ "v2LinkInstructionsText": "Usa este enlace para crearte una cuenta o para iniciar sesión.",
+ "viaAccount": "(cuenta vía ${NAME})",
"youAreLoggedInAsText": "Estás conectado como:",
"youAreSignedInAsText": "Has iniciado sesión como:"
},
- "achievementChallengesText": "Logros de desafíos",
+ "achievementChallengesText": "Desafios De Los Logros",
"achievementText": "Logro",
"achievements": {
"Boom Goes the Dynamite": {
- "description": "Elimina 3 enemigos con una caja de TNT",
- "descriptionComplete": "Eliminaste a 3 enemigos con una caja de TNT",
- "descriptionFull": "Elimina 3 enemigos con una caja de TNT en ${LEVEL}",
- "descriptionFullComplete": "Eliminaste 3 enemigos con una caja de TNT en ${LEVEL}",
- "name": "La dinamita hace Boom!"
+ "description": "Mata a 3 chicos malos con TNT",
+ "descriptionComplete": "Mató a 3 chicos malos con TNT",
+ "descriptionFull": "Mata a 3 chicos malos con TNT en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 3 chicos malos con TNT en ${LEVEL}",
+ "name": "La Dinamita Hace Boom"
},
"Boxer": {
"description": "Gana sin usar bombas",
- "descriptionComplete": "Ganaste sin usar ninguna bomba",
+ "descriptionComplete": "Ganó sin usar bombas",
"descriptionFull": "Completa ${LEVEL} sin usar bombas",
- "descriptionFullComplete": "Completaste ${LEVEL} sin usar bombas",
+ "descriptionFullComplete": "Completó ${LEVEL} sin usar bombas",
"name": "Boxeador"
},
"Dual Wielding": {
"descriptionFull": "Conecta 2 controles (de hardware o de aplicación)",
- "descriptionFullComplete": "2 controles conectados (de hardware o de aplicación)",
- "name": "Juego Doble"
+ "descriptionFullComplete": "Conectó 2 controles (de hardware o de aplicación)",
+ "name": "Doble Empuñadura"
},
"Flawless Victory": {
- "description": "Gana sin haber recibido ningún golpe",
- "descriptionComplete": "Ganaste sin ser golpeado",
+ "description": "Gana sin ser golpeado",
+ "descriptionComplete": "Ganó sin ser golpeado",
"descriptionFull": "Gana ${LEVEL} sin ser golpeado",
- "descriptionFullComplete": "Ganaste ${LEVEL} sin ser golpeado",
- "name": "Victoria Perfecta"
+ "descriptionFullComplete": "Ganó ${LEVEL} sin ser golpeado",
+ "name": "Victoria Impecable"
},
"Free Loader": {
"descriptionFull": "Empieza un juego de Todos-Contra-Todos con 2 o más jugadores",
- "descriptionFullComplete": "Has empezado un juego de Todos-Contra-Todos con 2 o más jugadores",
+ "descriptionFullComplete": "Empezó un juego de Todos-Contra-Todos con 2 o más jugadores",
"name": "Cargador Libre"
},
"Gold Miner": {
- "description": "Elimina 6 enemigos con minas",
- "descriptionComplete": "Eliminaste 6 enemigos con minas",
- "descriptionFull": "Elimina 6 enemigos con minas en ${LEVEL}",
- "descriptionFullComplete": "Eliminaste 6 enemigos con minas en ${LEVEL}",
- "name": "Minero de Oro"
+ "description": "Mata a 6 chicos malos con minas terrestres",
+ "descriptionComplete": "Mató a 6 chicos malos con minas terrestres",
+ "descriptionFull": "Mata a 6 chicos malos con minas terrestres en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 6 chicos malos con minas terrestres en ${LEVEL}",
+ "name": "Minero De Oro"
},
"Got the Moves": {
- "description": "Gana sin usar golpes o bombas",
- "descriptionComplete": "Ganaste sin usar golpes o bombas",
- "descriptionFull": "Gana ${LEVEL} sin usar golpes o bombas",
- "descriptionFullComplete": "Ganaste ${LEVEL} sin usar golpes o bombas",
- "name": "Tú si sabes como moverte!"
+ "description": "Gana sin usar golpes ni bombas",
+ "descriptionComplete": "Ganó sin usar golpes ni bombas",
+ "descriptionFull": "Gana ${LEVEL} sin golpes ni bombas",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin golpes ni bombas",
+ "name": "Tengo los Movimientos"
},
"In Control": {
"descriptionFull": "Conecta un control (de hardware o de aplicación)",
- "descriptionFullComplete": "Conectado un control (de hardware o de aplicación)",
+ "descriptionFullComplete": "Conectó un control. (de hardware o de aplicación)",
"name": "En Control"
},
"Last Stand God": {
"description": "Anota 1000 puntos",
- "descriptionComplete": "Anotaste 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
"descriptionFull": "Anota 1000 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 1000 puntos en ${LEVEL}",
- "name": "Dios del ${LEVEL}"
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Dios De ${LEVEL}"
},
"Last Stand Master": {
"description": "Anota 250 puntos",
- "descriptionComplete": "Anotaste 250 puntos",
+ "descriptionComplete": "Anotó 250 puntos",
"descriptionFull": "Anota 250 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 250 puntos en ${LEVEL}",
- "name": "Maestro de ${LEVEL}"
+ "descriptionFullComplete": "Anotó 250 puntos en ${LEVEL}",
+ "name": "Maestro De ${LEVEL}"
},
"Last Stand Wizard": {
"description": "Anota 500 puntos",
- "descriptionComplete": "Anotaste 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
"descriptionFull": "Anota 500 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 500 puntos en ${LEVEL}",
- "name": "Mago de ${LEVEL}"
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Mago De ${LEVEL}"
},
"Mine Games": {
- "description": "Elimina 3 enemigos con minas",
- "descriptionComplete": "Eliminaste 3 enemigos con minas",
- "descriptionFull": "Elimina 3 enemigos con minas en ${LEVEL}",
- "descriptionFullComplete": "Eliminaste 3 enemigos con minas en ${LEVEL}",
- "name": "Juegos de minas"
+ "description": "Mata a 3 chicos malos con minas terrestres",
+ "descriptionComplete": "Mató a 3 chicos malos con minas terrestres",
+ "descriptionFull": "Mata a 3 chicos malos con minas terrestres en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 3 chicos con minas terrestres en ${LEVEL}",
+ "name": "Juegos De Minas"
},
"Off You Go Then": {
- "description": "Arroja 3 enemigos al precipicio",
- "descriptionComplete": "Arrojaste 3 enemigos al precipicio",
- "descriptionFull": "Arroja 3 enemigos al precipicio en ${LEVEL}",
- "descriptionFullComplete": "Arrojaste 3 enemigos al precipicio en ${LEVEL}",
- "name": "Te vas abajo entonces"
+ "description": "Arroja a 3 chicos malos fuera del mapa",
+ "descriptionComplete": "Arrojó a 3 chicos malos fuera del mapa",
+ "descriptionFull": "Arroja a 3 chicos malos fuera del mapa en ${LEVEL}",
+ "descriptionFullComplete": "Arrojó a 3 chicos malos fuera del mapa en ${LEVEL}",
+ "name": "Te Vas Abajo Entonces"
},
"Onslaught God": {
"description": "Anota 5000 puntos",
- "descriptionComplete": "Anotaste 5000 puntos",
+ "descriptionComplete": "Anotó 5000 puntos",
"descriptionFull": "Anota 5000 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 5000 puntos en ${LEVEL}",
- "name": "Dios de ${LEVEL}"
+ "descriptionFullComplete": "Anotó 5000 puntos en ${LEVEL}",
+ "name": "Dios De La ${LEVEL}"
},
"Onslaught Master": {
"description": "Anota 500 puntos",
- "descriptionComplete": "Anotaste 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
"descriptionFull": "Anota 500 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 500 puntos en ${LEVEL}",
- "name": "Maestro de ${LEVEL}"
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Maestro De La ${LEVEL}"
},
"Onslaught Training Victory": {
- "description": "Vence todas las hordas",
- "descriptionComplete": "Venciste todas las hordas",
- "descriptionFull": "Vence todas las hordas en ${LEVEL}",
- "descriptionFullComplete": "Venciste todas las hordas en ${LEVEL}",
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
"name": "Victoria en ${LEVEL}"
},
"Onslaught Wizard": {
"description": "Anota 1000 puntos",
- "descriptionComplete": "Anotaste 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
"descriptionFull": "Anota 1000 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 1000 puntos en ${LEVEL}",
- "name": "Mago de ${LEVEL}"
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Mago De La ${LEVEL}"
},
"Precision Bombing": {
- "description": "Gana sin usar poderes",
- "descriptionComplete": "Ganaste sin usar poderes",
- "descriptionFull": "Gana ${LEVEL} sin usar poderes",
- "descriptionFullComplete": "Ganaste ${LEVEL} sin usar poderes",
- "name": "Bombardeo preciso"
+ "description": "Gana sin potenciadores",
+ "descriptionComplete": "Ganó sin potenciadores",
+ "descriptionFull": "Gana ${LEVEL} sin potenciadores",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin potenciadores",
+ "name": "Bombardeo De Precisión"
},
"Pro Boxer": {
"description": "Gana sin usar bombas",
- "descriptionComplete": "Ganaste sin usar bombas",
+ "descriptionComplete": "Ganó sin usar bombas",
"descriptionFull": "Completa ${LEVEL} sin usar bombas",
- "descriptionFullComplete": "Completaste ${LEVEL} sin usar bombas",
- "name": "Boxeador Pro"
+ "descriptionFullComplete": "Completó ${LEVEL} sin usar bombas",
+ "name": "Boxeador Profesional"
},
"Pro Football Shutout": {
- "description": "Gana sin que los enemigos anoten",
- "descriptionComplete": "Ganaste sin que los enemigos anotaran",
- "descriptionFull": "Gana ${LEVEL} sin que los enemigos anoten",
- "descriptionFullComplete": "Ganaste ${LEVEL} sin que los enemigos anotaran",
- "name": "Balón de oro en ${LEVEL}"
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo En ${LEVEL}"
},
"Pro Football Victory": {
"description": "Gana el partido",
- "descriptionComplete": "Ganaste el partido",
+ "descriptionComplete": "Ganó el partido",
"descriptionFull": "Gana el partido en ${LEVEL}",
- "descriptionFullComplete": "Ganaste el partido en ${LEVEL}",
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
"name": "Victoria en ${LEVEL}"
},
"Pro Onslaught Victory": {
- "description": "Vence todas las hordas",
- "descriptionComplete": "Venciste todas las hordas",
- "descriptionFull": "Vence todas las hordas de ${LEVEL}",
- "descriptionFullComplete": "Venciste todas las hordas de ${LEVEL}",
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas de ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas de ${LEVEL}",
"name": "Victoria en ${LEVEL}"
},
"Pro Runaround Victory": {
- "description": "Supera todas las hordas",
- "descriptionComplete": "Superaste a todas las hordas",
- "descriptionFull": "Supera todas las hordas en ${LEVEL}",
- "descriptionFullComplete": "Supera todas las hordas en ${LEVEL}",
+ "description": "Completa todas las oleadas",
+ "descriptionComplete": "Completó todas las oleadas",
+ "descriptionFull": "Completa todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Completó todas las oleadas en ${LEVEL}",
"name": "Victoria en ${LEVEL}"
},
"Rookie Football Shutout": {
- "description": "Gana sin que los enemigos anoten",
- "descriptionComplete": "Ganaste sin que los enemigos anotaran",
- "descriptionFull": "Gana ${LEVEL} sin que los enemigos anoten",
- "descriptionFullComplete": "Ganaste ${LEVEL} sin que los enemigos anotaran",
- "name": "Balón de oro en ${LEVEL}"
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo En ${LEVEL}"
},
"Rookie Football Victory": {
"description": "Gana el partido",
- "descriptionComplete": "Ganaste el partido",
+ "descriptionComplete": "Ganó el partido",
"descriptionFull": "Gana el partido en ${LEVEL}",
- "descriptionFullComplete": "Ganaste el partido en ${LEVEL}",
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
"name": "Victoria en ${LEVEL}"
},
"Rookie Onslaught Victory": {
- "description": "Vence todas las hordas",
- "descriptionComplete": "Venciste todas las hordas",
- "descriptionFull": "Vence todas las hordas en ${LEVEL}",
- "descriptionFullComplete": "Venciste todas las hordas en ${LEVEL}",
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
"name": "Victoria en ${LEVEL}"
},
"Runaround God": {
"description": "Anota 2000 puntos",
- "descriptionComplete": "Anotaste 2000 puntos",
+ "descriptionComplete": "Anotó 2000 puntos",
"descriptionFull": "Anota 2000 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 2000 puntos en ${LEVEL}",
- "name": "Dios de ${LEVEL}"
+ "descriptionFullComplete": "Anotó 2000 puntos en ${LEVEL}",
+ "name": "Dios De La ${LEVEL}"
},
"Runaround Master": {
"description": "Anota 500 puntos",
- "descriptionComplete": "Anotaste 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
"descriptionFull": "Anota 500 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 500 puntos en ${LEVEL}",
- "name": "Maestro de ${LEVEL}"
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Maestro De La ${LEVEL}"
},
"Runaround Wizard": {
"description": "Anota 1000 puntos",
- "descriptionComplete": "Anotaste 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
"descriptionFull": "Anota 1000 puntos en ${LEVEL}",
- "descriptionFullComplete": "Anotaste 1000 puntos en ${LEVEL}",
- "name": "Gran Sabio de ${LEVEL}"
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Mago De La ${LEVEL}"
},
"Sharing is Caring": {
"descriptionFull": "Comparte exitosamente el juego con un amigo",
- "descriptionFullComplete": "Compartido exitosamente el juego con un amigo",
+ "descriptionFullComplete": "Compartió exitosamente el juego con un amigo",
"name": "Compartir es Amar"
},
"Stayin' Alive": {
- "description": "Gana sin ser eliminado",
- "descriptionComplete": "Ganaste sin ser eliminado",
- "descriptionFull": "Gana ${LEVEL} sin ser eliminado",
- "descriptionFullComplete": "Ganaste ${LEVEL} sin ser eliminado",
- "name": "¡Sobreviviendo!"
+ "description": "Gana sin morir",
+ "descriptionComplete": "Ganó sin morir",
+ "descriptionFull": "Gana ${LEVEL} sin morir",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin morir",
+ "name": "Sobreviviendo"
},
"Super Mega Punch": {
"description": "Inflige 100% de daño con un solo golpe",
- "descriptionComplete": "Infligiste 100% de daño con un solo golpe",
- "descriptionFull": "Inflige 100% de daño con un solo golpe en ${LEVEL}",
- "descriptionFullComplete": "Infligiste 100% de daño con un solo golpe en ${LEVEL}",
- "name": "¡Súper mega golpe!"
+ "descriptionComplete": "Infligió 100% de daño con un solo golpe",
+ "descriptionFull": "Inflige 100% de daño con un golpe en ${LEVEL}",
+ "descriptionFullComplete": "Infligió 100% de daño con un golpe en ${LEVEL}",
+ "name": "Súper Mega Golpe"
},
"Super Punch": {
- "description": "Inflige 50% de daño con un solo golpe",
- "descriptionComplete": "Infligiste 50% de daño con un solo golpe",
- "descriptionFull": "Inflige 50% de daño con un solo golpe en ${LEVEL}",
- "descriptionFullComplete": "Infligiste 50% de daño con un solo golpe en ${LEVEL}",
- "name": "¡Super golpe!"
+ "description": "Inflige 50% de daño con un golpe",
+ "descriptionComplete": "Infligió 50% de daño con un golpe",
+ "descriptionFull": "Inflige 50% de daño con un golpe en ${LEVEL}",
+ "descriptionFullComplete": "Infligió 50% de daño con un golpe en ${LEVEL}",
+ "name": "Súper Golpe"
},
"TNT Terror": {
- "description": "Elimina 6 enemigos con TNT",
- "descriptionComplete": "Eliminaste 6 enemigos con TNT",
- "descriptionFull": "Elimina 6 enemigos con TNT en ${LEVEL}",
- "descriptionFullComplete": "Eliminaste 6 enemigos con TNT en ${LEVEL}",
- "name": "¡Pirómano!"
+ "description": "Mata a 6 chicos malos con TNT",
+ "descriptionComplete": "Mató a 6 chicos malos con TNT",
+ "descriptionFull": "Mata a 6 chicos malos con TNT en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 6 chicos malos con TNT en ${LEVEL}",
+ "name": "Pirómano"
},
"Team Player": {
"descriptionFull": "Empieza un juego de Equipos con 4 o más jugadores",
- "descriptionFullComplete": "Has empezado un juego de Equipos con 4 o más jugadores",
- "name": "Jugador de Equipo"
+ "descriptionFullComplete": "Empezó un juego de Equipos con 4 o más jugadores",
+ "name": "Jugador De Equipo"
},
"The Great Wall": {
- "description": "Detén todos los enemigos",
- "descriptionComplete": "Detuviste todos los enemigos",
- "descriptionFull": "Detén todos los enemigos en ${LEVEL}",
- "descriptionFullComplete": "Detuviste todos los enemigos en ${LEVEL}",
+ "description": "Detén a cada uno de los chicos malos",
+ "descriptionComplete": "Detuvo a cada uno de los chicos malos",
+ "descriptionFull": "Detén a cada uno de los chicos malos en ${LEVEL}",
+ "descriptionFullComplete": "Detuvo a cada uno de los chicos malos en ${LEVEL}",
"name": "La Gran Muralla"
},
"The Wall": {
- "description": "Detén a todos los enemigos",
- "descriptionComplete": "Detuviste a todos los enemigos",
- "descriptionFull": "Detén a todos los enemigos en ${LEVEL}",
- "descriptionFullComplete": "Detuviste a todos los enemigos en ${LEVEL}",
+ "description": "Detén a cada uno de los chicos malos",
+ "descriptionComplete": "Detuvo a cada uno de los chicos malos",
+ "descriptionFull": "Detén a cada uno de los chicos malos en ${LEVEL}",
+ "descriptionFullComplete": "Detuvo a cada uno de los chicos malos en ${LEVEL}",
"name": "La Muralla"
},
"Uber Football Shutout": {
- "description": "Gana sin que los enemigos anoten",
- "descriptionComplete": "Ganaste sin que los enemigos anotaran",
- "descriptionFull": "Gana ${LEVEL} sin que los enemigos anoten",
- "descriptionFullComplete": "Ganaste ${LEVEL} sin que los enemigos anotaran",
- "name": "Balón de oro ${LEVEL}"
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo En ${LEVEL}"
},
"Uber Football Victory": {
"description": "Gana el partido",
- "descriptionComplete": "Ganaste el partido",
+ "descriptionComplete": "Ganó el partido",
"descriptionFull": "Gana el partido en ${LEVEL}",
- "descriptionFullComplete": "Ganaste el partido en ${LEVEL}",
- "name": "Victoria en ${LEVEL}"
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
+ "name": "Victoria En ${LEVEL}"
},
"Uber Onslaught Victory": {
- "description": "Vence todas las hordas",
- "descriptionComplete": "Venciste todas las hordas",
- "descriptionFull": "Vence todas las hordas en ${LEVEL}",
- "descriptionFullComplete": "Venciste todas las hordas en ${LEVEL}",
- "name": "Victoria en ${LEVEL}"
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
+ "name": "Victoria En ${LEVEL}"
},
"Uber Runaround Victory": {
- "description": "Vence a todas las hordas",
- "descriptionComplete": "Terminaste con todas las hordas",
- "descriptionFull": "Vence a todas las hordas en ${LEVEL}",
- "descriptionFullComplete": "Terminaste con todas las hordas en ${LEVEL}",
- "name": "Victoria en ${LEVEL}"
+ "description": "Completa todas las oleadas",
+ "descriptionComplete": "Completó todas las oleadas",
+ "descriptionFull": "Completa todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Completó todas las oleadas en ${LEVEL}",
+ "name": "Victoria En ${LEVEL}"
}
},
- "achievementsRemainingText": "Logros pendientes:",
+ "achievementsRemainingText": "Logros Pendientes:",
"achievementsText": "Logros",
- "achievementsUnavailableForOldSeasonsText": "Lo sentimos, los logros específicos no están disponibles para temporadas anteriores.",
+ "achievementsUnavailableForOldSeasonsText": "Disculpe, los logros específicos no están disponibles para temporadas anteriores.",
"activatedText": "${THING} activado.",
"addGameWindow": {
- "getMoreGamesText": "Más Juegos...",
+ "getMoreGamesText": "Conseguir Más Juegos...",
"titleText": "Agregar Juego"
},
+ "addToFavoritesText": "Añadir a Favoritos",
+ "addedToFavoritesText": "'${NAME}' añadido a Favoritos.",
+ "allText": "Todo",
"allowText": "Permitir",
"alreadySignedInText": "Tu cuenta está registrada en otro dispositivo;\npor favor cambia de cuentas o cierra el juego en tu \notro dispositivo e inténtalo de nuevo.",
"apiVersionErrorText": "No se puede cargar el módulo ${NAME}; se dirige a la versión-api ${VERSION_USED}; necesitamos la ${VERSION_REQUIRED}.",
"audioSettingsWindow": {
- "headRelativeVRAudioInfoText": "(\"Auto\" se activa solo si tiene audífonos conectados)",
- "headRelativeVRAudioText": "Audio VR de Cabeza",
- "musicVolumeText": "Volumen de la Música",
- "soundVolumeText": "Volumen del Sonido",
- "soundtrackButtonText": "Canciones de fondo/Bandas Sonoras",
+ "headRelativeVRAudioInfoText": "(\"Auto\" se activa solo cuando los audífonos estan conectados)",
+ "headRelativeVRAudioText": "Audio VR Relativo a la Cabeza",
+ "musicVolumeText": "Volumen De La Música",
+ "soundVolumeText": "Volumen Del Sonido",
+ "soundtrackButtonText": "Bandas Sonoras",
"soundtrackDescriptionText": "(usa tu propia música para reproducir durante los juegos)",
- "titleText": "Sonido"
+ "titleText": "Audio"
},
"autoText": "Auto",
"backText": "Atrás",
- "banThisPlayerText": "Expulsar a Este Jugador",
- "bestOfFinalText": "El mejor de ${COUNT}",
- "bestOfSeriesText": "Mejor serie de ${COUNT}:",
+ "banThisPlayerText": "Banear A Este Jugador",
+ "bestOfFinalText": "Mejor-de-${COUNT} Finales",
+ "bestOfSeriesText": "Mejor de ${COUNT} series:",
"bestOfUseFirstToInstead": 0,
- "bestRankText": "Tu mejor clasificación es #${RANK}",
+ "bestRankText": "Tu mejor rango es #${RANK}",
"bestRatingText": "Tu mejor clasificación es ${RATING}",
"betaErrorText": "Esta versión beta está caducada, por favor actualizala.",
"betaValidateErrorText": "Imposible validar beta. (¿Tienes conexión a internet?)",
@@ -366,62 +371,63 @@
"bombBoldText": "BOMBA",
"bombText": "Bomba",
"boostText": "Potenciar",
- "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} se configura en la propia aplicación.",
+ "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} se configura en la misma aplicación.",
"buttonText": "botón",
"canWeDebugText": "¿Te gustaría que BombSquad enviara errores, accidentes, e\ninformación de uso básico al desarrollador de forma automática?\n\nLa información no contendrá datos personales y ayudará a\nmantener el juego funcionando sin errores y libre de problemas.",
"cancelText": "Cancelar",
- "cantConfigureDeviceText": "Perdón, pero ${DEVICE} no es configurable.",
+ "cantConfigureDeviceText": "Lo sentimos, ${DEVICE} no es configurable.",
"challengeEndedText": "Este desafío ha terminado.",
"chatMuteText": "Silenciar Chat",
"chatMutedText": "Chat Silenciado",
- "chatUnMuteText": "Desmutear Chat",
+ "chatUnMuteText": "Desilenciar Chat",
"choosingPlayerText": "",
+ "codesExplainText": "Los códigos son proporcionados por el desarrollador para\ndiagnosticar y corregir problemas de la cuenta.",
"completeThisLevelToProceedText": "¡Debes completar\neste nivel para avanzar!",
- "completionBonusText": "Bono extra por Acabar",
+ "completionBonusText": "Bono Por Completar",
"configControllersWindow": {
- "configureControllersText": "Configuración de Controles",
+ "configureControllersText": "Configurar Controles",
"configureGamepadsText": "Configurar controles",
- "configureKeyboard2Text": "Configurar Teclado P2",
+ "configureKeyboard2Text": "Configurar Teclado J2",
"configureKeyboardText": "Configurar Teclado",
"configureMobileText": "Dispositivos Móviles como Controles",
"configureTouchText": "Configurar Pantalla Táctil",
- "ps3Text": "Controles de PS3",
+ "ps3Text": "Controles De PS3",
"titleText": "Controles",
- "wiimotesText": "Wii Remotes",
- "xbox360Text": "Controles de Xbox 360"
+ "wiimotesText": "Wiimotes",
+ "xbox360Text": "Controles De Xbox 360"
},
"configGamepadSelectWindow": {
"androidNoteText": "Nota: el soporte de controles varía según el dispositivo y la versión de Android.",
"pressAnyButtonText": "Pulsa cualquier botón del control\n que desees configurar...",
- "titleText": "Configurar tu control"
+ "titleText": "Configurar Controles"
},
"configGamepadWindow": {
"advancedText": "Avanzado",
- "advancedTitleText": "Configuración Avanzada del Control",
+ "advancedTitleText": "Configuración Avanzada Del Control",
"analogStickDeadZoneDescriptionText": "(súbele si tu personaje 'derrapa' cuando sueltas la palanca)",
- "analogStickDeadZoneText": "Zona Muerta del Stick Analógico",
+ "analogStickDeadZoneText": "Zona Muerta De La Palanca Analógica",
"appliesToAllText": "(aplica a todos los controles de este tipo)",
"autoRecalibrateDescriptionText": "(habilita esta opción si tu personaje no se mueve a toda velocidad)",
- "autoRecalibrateText": "Auto-Calibrar Stick Analógico",
+ "autoRecalibrateText": "Auto-Recalibrar Palanca Analógica",
"axisText": "eje",
"clearText": "vaciar",
- "dpadText": "DPad",
- "extraStartButtonText": "Botón Extra de Inicio",
- "ifNothingHappensTryAnalogText": "Si no ocurre nada, intenta asignar al stick analógico.",
- "ifNothingHappensTryDpadText": "Si no ocurre nada, intenta asignar al DPad.",
- "ignoreCompletelyDescriptionText": "(evita que este controlador impacte el juego y/o menus)",
+ "dpadText": "dpad",
+ "extraStartButtonText": "Botón Extra De Inicio",
+ "ifNothingHappensTryAnalogText": "Si no pasa nada, intenta asignar la palanca analógica en cambio.",
+ "ifNothingHappensTryDpadText": "Si no pasa nada, intenta asignar el d-pad en cambio.",
+ "ignoreCompletelyDescriptionText": "(evita que este control este afectando el juego y/o menus)",
"ignoreCompletelyText": "Ignorar Completamente",
"ignoredButton1Text": "Botón 1 Ignorado",
- "ignoredButton2Text": "Botón 2 ignorado",
+ "ignoredButton2Text": "Botón 2 Ignorado",
"ignoredButton3Text": "Botón 3 Ignorado",
"ignoredButton4Text": "Botón 4 Ignorado",
"ignoredButtonDescriptionText": "(usa esto para prevenir que los botones de 'inicio' o 'sincronización' afecten la interfaz visual)",
"ignoredButtonText": "Botón de inicio",
- "pressAnyAnalogTriggerText": "Pulsa cualquier gatillo analógico...",
- "pressAnyButtonOrDpadText": "Pulsa cualquier botón o DPad...",
- "pressAnyButtonText": "Pulsa cualquier botón...",
- "pressLeftRightText": "Pulsa izquierda o derecha...",
- "pressUpDownText": "Pulsa arriba o abajo...",
+ "pressAnyAnalogTriggerText": "Presiona cualquier gatillo analógico...",
+ "pressAnyButtonOrDpadText": "Presiona cualquier botón o dpad...",
+ "pressAnyButtonText": "Presiona cualquier botón...",
+ "pressLeftRightText": "Presiona izquierda o derecha...",
+ "pressUpDownText": "Presiona arriba o abajo...",
"runButton1Text": "Botón para Correr 1",
"runButton2Text": "Botón para Correr 2",
"runTrigger1Text": "Gatillo para Correr 1",
@@ -461,13 +467,14 @@
"titleText": "Configura la Pantalla Táctil",
"touchControlsScaleText": "Ampliador de controles táctiles"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} se puede configurar en la aplicación Configuración del Sistema.",
"configureItNowText": "Configurar ahora?",
"configureText": "Configurar",
"connectMobileDevicesWindow": {
"amazonText": "Appstore de Amazon",
"appStoreText": "App Store",
"bestResultsScale": 0.65,
- "bestResultsText": "Para mejores resultados necesitas una red inalámbrica rápida. Puedes\nreducir el retraso wifi apagando otros dispositivos inalámbricos,\njugando cerca de tu router inalámbrico, y conectando el\njuego anfitrión directamente a la red a través del cable Ethernet.",
+ "bestResultsText": "Para mejores resultados necesitas una red inalámbrica rápida. Puedes\nreducir el retraso wifi apagando otros dispositivos inalámbricos,\njugando cerca de tu router inalámbrico y conectando el\njuego anfitrión directamente a la red a través del cable Ethernet.",
"explanationScale": 0.8,
"explanationText": "Para utilizar tus dispositivos móviles como controles, \ninstala la app \"${REMOTE_APP_NAME}\" en ellos. Conecta todos\ntus dispositivos con ${APP_NAME} a través de tu red Wi-fi, ¡es gratis!.",
"forAndroidText": "para Android:",
@@ -480,15 +487,15 @@
"continueText": "Continuar",
"controlsText": "Controles",
"coopSelectWindow": {
- "activenessAllTimeInfoText": "Esto no aplica en los rankings de 'Todo el tiempo'.",
+ "activenessAllTimeInfoText": "Esto no aplica a las clasificaciones de todo-el-tiempo.",
"activenessInfoText": "Este multiplicador aumenta en los días que juegas\ny disminuye cuando no juegas.",
"activityText": "Actividad",
"campaignText": "Campaña",
"challengesInfoText": "Gana premios por completar los mini-juegos.\n\nLos premios y la dificultad de los niveles incrementa\ncada vez que se completa y\ndecrece cuando uno expira o no se cumple.",
"challengesText": "Desafíos",
- "currentBestText": "Mejor del Momento",
+ "currentBestText": "Mejor Actual",
"customText": "Personalizado",
- "entryFeeText": "Precio",
+ "entryFeeText": "Entrada",
"forfeitConfirmText": "¿Renunciar a este desafío?",
"forfeitNotAllowedYetText": "Todavía no puedes abandonar este desafío.",
"forfeitText": "Abandonar",
@@ -504,18 +511,18 @@
"powerRankingPointsMultText": "(x ${NUMBER} pts)",
"powerRankingPointsText": "${NUMBER} pts",
"powerRankingPointsToRankedText": "(${CURRENT} de ${REMAINING} pts)",
- "powerRankingText": "Clasificación de Poder",
+ "powerRankingText": "Clasificación De Poder",
"prizesText": "Premios",
"proMultInfoText": "Los jugadores con la mejora ${PRO}\nreciben una bonificación del ${PERCENT}% de puntos.",
- "seeMoreText": "Ver más...",
- "skipWaitText": "Saltar la Espera",
+ "seeMoreText": "Más...",
+ "skipWaitText": "Omitir La Espera",
"timeRemainingText": "Tiempo Restante",
"titleText": "Modo cooperativo",
"toRankedText": "Para Clasificar",
"totalText": "total",
"tournamentInfoText": "Compite por puntajes altos con\notros jugadores en tu liga.\n\nLos premios los obtienen los jugadores\ncon mejor puntaje al acabarse el torneo.",
- "welcome1Text": "Bienvenido/a a ${LEAGUE}. Puedes mejorar tu\nposición en la liga ganando estrellas, completando\nlogros, y ganando trofeos en desafíos.",
- "welcome2Text": "También puedes ganar tickets desde varias actividades similares.\nLos tickets pueden ser usados para desbloquear nuevos personajes,\nmapas y mini juegos, entrar a torneos, y más.",
+ "welcome1Text": "Bienvenido/a a ${LEAGUE}. Puedes mejorar tu\nposición en la liga ganando estrellas, completando\nlogros y ganando trofeos en desafíos.",
+ "welcome2Text": "También puedes ganar boletos desde varias actividades similares.\nLos boletos pueden ser usados para desbloquear nuevos personajes,\nmapas y mini juegos, entrar a torneos y más.",
"yourPowerRankingText": "Tu Clasificación de Poder:"
},
"copyConfirmText": "Copiado al portapapeles.",
@@ -531,15 +538,15 @@
"codingGraphicsAudioText": "Código, gráficas y audio por ${NAME}",
"languageTranslationsText": "Traducciones:",
"legalText": "Legal:",
- "publicDomainMusicViaText": "Música de dominio público a través de ${NAME}",
+ "publicDomainMusicViaText": "Música de dominio público vía ${NAME}",
"softwareBasedOnText": "Este software está basado parcialmente en el trabajo de ${NAME}",
"songCreditText": "${TITLE} interpretada por ${PERFORMER}\nCompuesta por ${COMPOSER}, arreglos por ${ARRANGER}, publicada por ${PUBLISHER},\nCortesía de ${SOURCE}",
- "soundAndMusicText": "Sonido y música:",
+ "soundAndMusicText": "Sonido & Música:",
"soundsText": "Sonidos (${SOURCE}):",
"specialThanksText": "Agradecimientos Especiales:",
"thanksEspeciallyToText": "Gracias especialmente a ${NAME}",
"titleText": "Créditos de ${APP_NAME}",
- "whoeverInventedCoffeeText": "A quien haya inventado el café"
+ "whoeverInventedCoffeeText": "A quien inventó el café"
},
"currentStandingText": "Tu puesto actual es #${RANK}",
"customizeText": "Personalizar...",
@@ -552,51 +559,55 @@
"runGPUBenchmarkText": "Ejecutar Punto de Referencia del GPU",
"runMediaReloadBenchmarkText": "Ejecutar Punto de Referencia del Media-Reload",
"runStressTestText": "Ejecutar prueba de resistencia",
- "stressTestPlayerCountText": "Conteo de jugadores",
- "stressTestPlaylistDescriptionText": "Prueba de Resistencia de Lista de Audio",
- "stressTestPlaylistNameText": "Nombre de lista",
- "stressTestPlaylistTypeText": "Tipo de lista",
- "stressTestRoundDurationText": "Redondear duración",
- "stressTestTitleText": "Prueba de resistencia",
- "titleText": "Pruebas de Resistencia y Rendimiento.",
- "totalReloadTimeText": "Tiempo total de recarga: ${TIME} (Ver log para detalles)",
+ "stressTestPlayerCountText": "Conteo de Jugadores",
+ "stressTestPlaylistDescriptionText": "Lista de juegos de Prueba de Estrés",
+ "stressTestPlaylistNameText": "Nombre de la Lista de juegos",
+ "stressTestPlaylistTypeText": "Tipo de Lista de juegos",
+ "stressTestRoundDurationText": "Redondear Duración",
+ "stressTestTitleText": "Prueba de Estrés",
+ "titleText": "Pruebas de Estrés & Rendimiento.",
+ "totalReloadTimeText": "Tiempo total de recarga: ${TIME} (ver registro para detalles)",
"unlockCoopText": "Desbloquear niveles cooperativos"
},
"defaultFreeForAllGameListNameText": "Pelea libre (predeterminado)",
- "defaultGameListNameText": "Lista ${PLAYMODE} por Defecto",
+ "defaultGameListNameText": "Lista de juegos ${PLAYMODE} Por defecto",
"defaultNewFreeForAllGameListNameText": "Mis Matanzas Libres",
- "defaultNewGameListNameText": "Mi lista ${PLAYMODE}",
+ "defaultNewGameListNameText": "Mi Lista de juegos ${PLAYMODE}",
"defaultNewTeamGameListNameText": "Mis Juegos en equipo",
"defaultTeamGameListNameText": "Juego en equipo (predeterminado)",
"deleteText": "Borrar",
- "demoText": "Versión de prueba",
- "denyText": "Rechazar",
+ "demoText": "Demo",
+ "denyText": "Denegar",
"deprecatedText": "Obsoleto",
- "desktopResText": "Resolución del escritorio",
- "deviceAccountUpgradeText": "Advertencia:\nEstás conectado con una cuenta de dispositivo\n(${NAME}).\nLas cuentas de dispositivo serán removidas en una próxima actualización",
+ "descriptionText": "Descripción",
+ "desktopResText": "Resolución De Escritorio",
+ "deviceAccountUpgradeText": "Advertencia:\nIniciaste sesión con una cuenta de dispositivo (${NAME}).\nLas cuentas de dispositivo serán removidas en una futura actualización.\nActualiza a una cuenta V2 si quieres conservar tu progreso.",
"difficultyEasyText": "Fácil",
"difficultyHardOnlyText": "Solo Modo Difícil",
"difficultyHardText": "Difícil",
"difficultyHardUnlockOnlyText": "Este nivel solo puede ser desbloqueado en modo difícil.\n¡¿¡¿¡Piensas tener lo que se necesita!?!?!",
"directBrowserToURLText": "Por favor abre la siguiente URL en tu navegador:",
- "disableRemoteAppConnectionsText": "Desactivar conexiones remotas de aplicación",
+ "disableRemoteAppConnectionsText": "Deshabilitar Conexiones Remotas De La Aplicación",
"disableXInputDescriptionText": "Permite más de 4 controladores pero puede que no funcione bien.",
- "disableXInputText": "Desactivar XInput",
+ "disableXInputText": "Deshabilitar XInput",
+ "disabledText": "Deshabilitado",
+ "discordFriendsText": "¿Quieres buscar gente nueva con quien jugar?\n¡Únete a nuestro Discord y encuentra nuevos amigos!",
+ "discordJoinText": "Únete a el Discord",
"doneText": "Hecho",
"drawText": "Empate",
"duplicateText": "Duplicar",
"editGameListWindow": {
"addGameText": "Añadir\nJuego",
- "cantOverwriteDefaultText": "¡No puedes sobrescribir la lista predeterminada!",
- "cantSaveAlreadyExistsText": "¡Ya existe una lista con ese nombre!",
- "cantSaveEmptyListText": "¡No puedes guardar una lista vacía!",
+ "cantOverwriteDefaultText": "¡No puedes sobrescribir la lista de juegos por defecto!",
+ "cantSaveAlreadyExistsText": "¡Ya existe una lista de juegos con ese nombre!",
+ "cantSaveEmptyListText": "¡No puedes guardar una lista de juegos vacía!",
"editGameText": "Editar\nJuego",
"gameListText": "Lista de juegos",
- "listNameText": "Nombre de Lista",
+ "listNameText": "Nombre De La Lista De Juegos",
"nameText": "Nombre",
"removeGameText": "Remover\nJuego",
- "saveText": "Guardar",
- "titleText": "Editor de Listas"
+ "saveText": "Guardar Lista",
+ "titleText": "Editor De Lista De Juegos"
},
"editProfileWindow": {
"accountProfileInfoText": "Este perfil de jugador especial tiene un nombre\ny un icono basado en tu cuenta.\n\n${ICONS}\n\nCrea perfiles personalizados si quieres usar\ndiferentes nombres o iconos personalizados.",
@@ -606,16 +617,17 @@
"characterText": "personaje",
"checkingAvailabilityText": "Revisando la disponibilidad para \"${NAME}\"...",
"colorText": "color",
- "getMoreCharactersText": "Consigue Más Personajes...",
+ "getMoreCharactersText": "Conseguir Más Personajes...",
"getMoreIconsText": "Conseguir Más Iconos...",
"globalProfileInfoText": "Los perfiles globales tienen un nombre único\na nivel mundial. También tienen iconos personalizados.",
"globalProfileText": "(perfil global)",
"highlightText": "resalte",
"iconText": "icono",
- "localProfileInfoText": "Los perfiles locales no tienen iconos y no hay garantía\nque los nombres sean únicos. Obtén un perfil global\npara reservar un nombre único y tengas un icono personalizado.",
+ "localProfileInfoText": "Los perfiles locales no tienen iconos y no hay garantía\nque los nombres sean únicos. Crea un perfil global\npara reservar un nombre único y tengas un icono personalizado.",
"localProfileText": "(perfil local)",
- "nameDescriptionText": "Nombre de Jugador",
+ "nameDescriptionText": "Nombre Del Jugador",
"nameText": "Nombre",
+ "profileAlreadyExistsText": "Ya existe un perfil con ese nombre",
"randomText": "aleatorio",
"titleEditText": "Editar Perfil",
"titleNewText": "Nuevo Perfil",
@@ -625,42 +637,43 @@
},
"editProfilesAnyTimeText": "(edita tu perfil en cualquier momento bajo 'ajustes')",
"editSoundtrackWindow": {
- "cantDeleteDefaultText": "No puedes eliminar la pista de audio predeterminada.",
- "cantEditDefaultText": "No puedes editar la pista de audio predeterminada. Duplica o crea una nueva.",
+ "cantDeleteDefaultText": "No puedes borrar la banda sonora predeterminada.",
+ "cantEditDefaultText": "No puedes editar la banda sonora predeterminada. Duplicala o crea una nueva.",
"cantEditWhileConnectedOrInReplayText": "No puedes editar listas de audio mientras juegas con alguien o en repeticiones.",
- "cantOverwriteDefaultText": "No puedes sobreescribir la pista de audio predeterminada",
+ "cantOverwriteDefaultText": "No puedes sobreescribir la banda sonora predeterminada",
"cantSaveAlreadyExistsText": "¡Ya existe una banda sonora con ese nombre!",
- "defaultGameMusicText": "",
- "defaultSoundtrackNameText": "Pista de Audio Predeterminada",
- "deleteConfirmText": "Eliminar pista de audio:\n\n'${NAME}'?",
- "deleteText": "Eliminar\nPista de Audio",
- "duplicateText": "Duplicar\nPista de Audio",
- "editSoundtrackText": "Editor de Pistas de Audio",
- "editText": "Editar\nPista de Audio",
- "fetchingITunesText": "buscando listas de reproducción de aplicaciones de música...",
+ "defaultGameMusicText": "",
+ "defaultSoundtrackNameText": "Banda Sonora Predeterminada",
+ "deleteConfirmText": "Borrar Banda Sonora:\n\n'${NAME}'?",
+ "deleteText": "Borrar\nBanda Sonora",
+ "duplicateText": "Duplicar\nBanda Sonora",
+ "editSoundtrackText": "Editor de Banda Sonora",
+ "editText": "Editar\nBanda Sonora",
+ "fetchingITunesText": "buscando playlists en la App De Música...",
"musicVolumeZeroWarning": "Advertencia: el volumen de la música está en 0",
"nameText": "Nombre",
- "newSoundtrackNameText": "Mi Lista de Audio ${COUNT}",
- "newSoundtrackText": "Nueva Pista de Audio:",
- "newText": "Nueva\nPista de Audio",
- "selectAPlaylistText": "Elige una Lista de Reproducción",
- "selectASourceText": "Fuente de la Música",
+ "newSoundtrackNameText": "Mi Banda Sonora ${COUNT}",
+ "newSoundtrackText": "Nueva Banda Sonora:",
+ "newText": "Nueva\nBanda Sonora",
+ "selectAPlaylistText": "Selecciona Una Playlist",
+ "selectASourceText": "Fuente De La Música",
"soundtrackText": "pista de audio",
- "testText": "escuchar",
- "titleText": "Pistas de Audio",
- "useDefaultGameMusicText": "Música por Defecto",
- "useITunesPlaylistText": "Lista de reproducción de la aplicación de música",
- "useMusicFileText": "Archivo de Audio (MP3, etc)",
+ "testText": "prueba",
+ "titleText": "Bandas Sonoras",
+ "useDefaultGameMusicText": "Música Del Juego Por Defecto",
+ "useITunesPlaylistText": "Playlist De La App De Música",
+ "useMusicFileText": "Archivo De Música (mp3, etc)",
"useMusicFolderText": "Carpeta de Archivos de Audio"
},
"editText": "Editar",
+ "enabledText": "Habilitado",
"endText": "Fin",
- "enjoyText": "Diviértete!",
+ "enjoyText": "¡Diviértete!",
"epicDescriptionFilterText": "${DESCRIPTION} En cámara lenta épica.",
"epicNameFilterText": "${NAME} - Modo épico",
"errorAccessDeniedText": "acceso negado",
- "errorDeviceTimeIncorrectText": "La hora actual de tu dispositivo está incorrecta por ${HOURS} horas.\nEsto podría causar problemas.\nPor favor verifica la hora y zona horaria en ajustes.",
- "errorOutOfDiskSpaceText": "insuficiente espacio en disco",
+ "errorDeviceTimeIncorrectText": "La hora actual de tu dispositivo está incorrecta por ${HOURS} horas.\nEsto podría causar algunos problemas.\nPor favor verifica la hora y zona horaria en ajustes.",
+ "errorOutOfDiskSpaceText": "espacio insuficiente en el disco",
"errorSecureConnectionFailText": "No se puede establecer una conexión segura en la nube; La red podría estar fallando",
"errorText": "Error",
"errorUnknownText": "error desconocido",
@@ -668,7 +681,7 @@
"exportSuccessText": "'${NAME}' exportado.",
"externalStorageText": "Almacenamiento Externo",
"failText": "Fallaste",
- "fatalErrorText": "Uh oh, ¡algo está mal por aquí!\nPor favor intenta reinstalar la app o\ncontacta a ${EMAIL} para ayuda.",
+ "fatalErrorText": "Oh oh; algo está mal por aquí.\nPor favor intenta reinstalar la app o\ncontacta a ${EMAIL} para recibir ayuda.",
"fileSelectorWindow": {
"titleFileFolderText": "Elige un Archivo o Carpeta",
"titleFileText": "Elige un Archivo",
@@ -678,143 +691,146 @@
"filterText": "Filtro",
"finalScoreText": "Puntaje Final",
"finalScoresText": "Puntajes Finales",
- "finalTimeText": "Tiempo final",
+ "finalTimeText": "Tiempo Final",
"finishingInstallText": "Instalación casi lista; espera un momento...",
"fireTVRemoteWarningText": "* Para una mejor experiencia, \nutiliza controles o instala la\napp '${REMOTE_APP_NAME}' en tus\ndispositivos móviles.",
- "firstToFinalText": "Primero de ${COUNT} Final",
- "firstToSeriesText": "Primero de ${COUNT} Serie",
+ "firstToFinalText": "Primero de ${COUNT} Finales",
+ "firstToSeriesText": "Primero de ${COUNT} Series",
"fiveKillText": "¡¡¡COMBO QUÍNTUPLE!!!",
- "flawlessWaveText": "¡Horda perfecta!",
+ "flawlessWaveText": "¡Oleada Perfecta!",
"fourKillText": "¡¡¡COMBO CUÁDRUPLE!!!",
"freeForAllText": "Pelea libre",
"friendScoresUnavailableText": "Puntaje no disponible.",
"gameCenterText": "GameCenter",
"gameCircleText": "GameCircle",
- "gameLeadersText": "Líderes del juego ${COUNT}",
+ "gameLeadersText": "Líderes Del Juego ${COUNT}",
"gameListWindow": {
- "cantDeleteDefaultText": "No puedes eliminar la lista predeterminada.",
- "cantEditDefaultText": "¡No puedes editar la lista predeterminada! Duplicala o crea una nueva.",
- "cantShareDefaultText": "No puedes compartir la lista de reproducción por defecto",
+ "cantDeleteDefaultText": "No puedes borrar la playlist predeterminada.",
+ "cantEditDefaultText": "¡No puedes editar la playlist predeterminada! Duplicala o crea una nueva.",
+ "cantShareDefaultText": "No puedes compartir la playlist predeterminada.",
"deleteConfirmText": "¿Borrar \"${LIST}\"?",
- "deleteText": "Borrar\nLista",
- "duplicateText": "Duplicar\nLista",
- "editText": "Editar\nLista",
+ "deleteText": "Borrar\nPlaylist",
+ "duplicateText": "Duplicar\nPlaylist",
+ "editText": "Editar\nPlaylist",
"gameListText": "Lista de juego",
- "newText": "Nueva\nLista",
+ "newText": "Nueva\nPlaylist",
+ "pointsToWinText": "Puntos para Ganar",
+ "seriesLengthText": "Duración de la Serie",
"showTutorialText": "Ver Tutorial",
- "shuffleGameOrderText": "Orden de juego al azar",
- "titleText": "Personaliza listas de ${TYPE}"
+ "shuffleGameOrderText": "Orden de Juego Aleatorio",
+ "titleText": "Personalizar Playlists de ${TYPE}"
},
"gameSettingsWindow": {
- "addGameText": "Agrega juego"
+ "addGameText": "Agregar Juego"
},
"gamepadDetectedText": "1 control detectado.",
"gamepadsDetectedText": "${COUNT} controles detectados.",
"gamesToText": "${WINCOUNT} juegos a ${LOSECOUNT}",
"gatherWindow": {
"aboutDescriptionLocalMultiplayerExtraText": "Recuerda: cualquier dispositivo en la fiesta puede\ntener más de un jugador si tienen controles suficientes.",
- "aboutDescriptionText": "Usa estas pestañas para crear una fiesta.\n\nLas fiestas te permiten jugar y competir con\ntus amigos con sus propios dispositivos.\n\nUsa el botón ${PARTY} en la parte superior\nderecha para chatear e interactuar con tu fiesta.\n(En el control, presiona ${BUTTON} mientras estés en el menú)",
- "aboutText": "Acerca de",
+ "aboutDescriptionText": "Usa estas pestañas para armar una partida.\n\nLas partidas te permiten jugar y competir con\ntus amigos a través de diferentes dispositivos.\n\nUsa el botón ${PARTY} en la parte superior\nderecha para chatear e interactuar con tu partida.\n(En el control, presiona ${BUTTON} mientras estés en el menú)",
+ "aboutText": "Acerca De",
"addressFetchErrorText": "",
"appInviteInfoText": "Invita amigos a probar BombSquad y recibirán\n${COUNT} ticketes gratis. Tu obtendrás\n${YOU_COUNT} por cada amigo que acepte.",
"appInviteMessageText": "${NAME} te envió ${COUNT} boletos en ${APP_NAME}",
- "appInviteSendACodeText": "Enviales un código",
- "appInviteTitleText": "Invitación de ${APP_NAME}",
- "bluetoothAndroidSupportText": "(Funciona con cualquier dispositivo Android con Bluetooth)",
- "bluetoothDescriptionText": "Crea/únete a una fiesta vía Bluetooth:",
- "bluetoothHostText": "Crea vía Bluetooth",
- "bluetoothJoinText": "Únete vía Bluetooth",
+ "appInviteSendACodeText": "Envíales Un Código",
+ "appInviteTitleText": "Invitación De La Aplicación ${APP_NAME}",
+ "bluetoothAndroidSupportText": "(funciona con cualquier dispositivo Android con Bluetooth)",
+ "bluetoothDescriptionText": "Alojar/unirse a una partida vía Bluetooth:",
+ "bluetoothHostText": "Alojar vía Bluetooth",
+ "bluetoothJoinText": "Unirse vía Bluetooth",
"bluetoothText": "Bluetooth",
"checkingText": "revisando...",
"copyCodeConfirmText": "Se ha copiado en el portapapeles.",
- "copyCodeText": "Copiar",
+ "copyCodeText": "Copiar Código",
"dedicatedServerInfoText": "Para mejores resultados, crea un servidor dedicado. Visita bombsquadgame.com/server para aprender cómo hacerlo",
- "disconnectClientsText": "Esto desconectará a ${COUNT} jugador(es) de\ntu fiesta. ¿Estás seguro?",
+ "disconnectClientsText": "Esto desconectará a ${COUNT} jugador(es) de\ntu partida. ¿Estás seguro?",
"earnTicketsForRecommendingAmountText": "Tus amigos recibirán ${COUNT} boletos si prueban el juego\n(Y recibirás ${YOU_COUNT} boletos por cada amigo que pruebe el juego)",
"earnTicketsForRecommendingText": "Comparte el juego\na cambio de boletos gratis...",
- "emailItText": "Enviar correo",
- "favoritesSaveText": "Guardar como favorito",
+ "emailItText": "Envíar Correo",
+ "favoritesSaveText": "Guardar Como Favorito",
"favoritesText": "Favoritos",
- "freeCloudServerAvailableMinutesText": "El siguiente server estara disponible en ${MINUTES} minutos",
- "freeCloudServerAvailableNowText": "Servidor gratuito disponible!",
- "freeCloudServerNotAvailableText": "No hay servidores gratis disponibles ahora",
- "friendHasSentPromoCodeText": "Recibiste ${COUNT} boletos ${APP_NAME} de ${NAME}",
+ "freeCloudServerAvailableMinutesText": "El siguiente servidor estará disponible en ${MINUTES} minutos.",
+ "freeCloudServerAvailableNowText": "¡Servidor en la nube gratuito disponible!",
+ "freeCloudServerNotAvailableText": "No hay servidores en la nube gratuitos disponibles.",
+ "friendHasSentPromoCodeText": "Recibiste ${COUNT} boletos de ${APP_NAME} de ${NAME}",
"friendPromoCodeAwardText": "Recibirás ${COUNT} boletos cada vez que lo uses.",
- "friendPromoCodeExpireText": "El código expirará en ${EXPIRE_HOURS} horas y solo lo podrán usar jugadores nuevos.",
- "friendPromoCodeInstructionsText": "Para usarlo, abre ${APP_NAME} y ve a \"Ajustes-> Avanzado-> Ingresar código\"\nVisita bombsquadgame.com para enlaces de descarga de todas las plataformas disponibles.",
+ "friendPromoCodeExpireText": "El código expirará en ${EXPIRE_HOURS} horas y solo funciona para jugadores nuevos.",
+ "friendPromoCodeInstructionsText": "Para usarlo, abre ${APP_NAME} y ve a \"Ajustes->Avanzado->Ingresar Código\"\nVisita bombsquadgame.com para enlaces de descarga de todas las plataformas disponibles",
"friendPromoCodeRedeemLongText": "Se puede canjear por ${COUNT} boletos gratis hasta ${MAX_USES} personas.",
"friendPromoCodeRedeemShortText": "Puede ser canjeado por ${COUNT} boletos en el juego.",
- "friendPromoCodeWhereToEnterText": "(en \"Configuración-> Avanzado-> Introducir código\")",
- "getFriendInviteCodeText": "Genera código para un amigo",
- "googlePlayDescriptionText": "Invita a jugadores de Google Play a tu fiesta:",
+ "friendPromoCodeWhereToEnterText": "39739117",
+ "getFriendInviteCodeText": "Obtener Código De Invitación De Amigo",
+ "googlePlayDescriptionText": "Invitar jugadores de Google Play a tu partida:",
"googlePlayInviteText": "Invitar",
"googlePlayReInviteText": "Hay ${COUNT} jugadores de Google Play en tu fiesta\nque se desconectarán si creas una nueva invitación.\nInclúyelos en la nueva invitación para tenerlos de vuelta.",
- "googlePlaySeeInvitesText": "Ver invitaciones",
+ "googlePlaySeeInvitesText": "Ver Invitaciones",
"googlePlayText": "Google Play",
"googlePlayVersionOnlyText": "(Versión Android / Google Play)",
- "hostPublicPartyDescriptionText": "Crear una Fiesta Pública",
+ "hostPublicPartyDescriptionText": "Alojar una Partida Pública",
"hostingUnavailableText": "Alojamiento No Disponible",
- "inDevelopmentWarningText": "Nota:\n\nJugar en Red es una función todavía en desarrollo.\nPor ahora, es altamente recomendado que todos\nlos jugadores estén en la misma red Wi-Fi",
+ "inDevelopmentWarningText": "Nota:\n\nJugar en red es una función todavía en desarrollo.\nPor ahora, es altamente recomendado que todos\nlos jugadores estén en la misma red Wi-Fi.",
"internetText": "Internet",
"inviteAFriendText": "¿Tus amigos no tienen el juego? Invítalos a\nprobarlo y recibirán ${COUNT} boletos gratis.",
- "inviteFriendsText": "Invita a amigos",
- "joinPublicPartyDescriptionText": "Entrar en una fiesta publica",
- "localNetworkDescriptionText": "Unirse a una fiesta en tu red",
+ "inviteFriendsText": "Invitar Amigos",
+ "joinPublicPartyDescriptionText": "Unirse a una Partida Pública",
+ "localNetworkDescriptionText": "Unirse a una Partida Cercana (LAN, Bluetooth, etc.)",
"localNetworkText": "Red Local",
- "makePartyPrivateText": "Crea mi Fiesta Privada",
- "makePartyPublicText": "Crea mi Fiesta Pública",
+ "makePartyPrivateText": "Hacer Mi Partida Privada",
+ "makePartyPublicText": "Hacer Mi Partida Pública",
"manualAddressText": "Dirección",
"manualConnectText": "Conectar",
- "manualDescriptionText": "Únete a una fiesta usando la dirección IP:",
- "manualJoinSectionText": "Unirse por dirección",
- "manualJoinableFromInternetText": "¿Se te pueden unir vía Internet?",
+ "manualDescriptionText": "Unirse a una partida por dirección:",
+ "manualJoinSectionText": "Unirse Por Dirección",
+ "manualJoinableFromInternetText": "¿Se pueden unir desde internet?:",
"manualJoinableNoWithAsteriskText": "NO*",
- "manualJoinableYesText": "SI",
- "manualRouterForwardingText": "*para arreglarlo, configura en tu router que redireccione el puerto UDP ${PORT} a tu dirección local",
+ "manualJoinableYesText": "SÍ",
+ "manualRouterForwardingText": "*para arreglarlo, configura tu router para que redireccione el puerto UDP ${PORT} a tu dirección local",
"manualText": "Manual",
"manualYourAddressFromInternetText": "Tu dirección desde internet:",
"manualYourLocalAddressText": "Tu dirección local:",
"nearbyText": "Cerca",
"noConnectionText": "",
- "otherVersionsText": "(Otras versiones)",
- "partyCodeText": "Código de fiesta",
+ "noPartiesAddedText": "Sin Fiestas Añadidas",
+ "otherVersionsText": "(otras versiones)",
+ "partyCodeText": "Código De La Partida",
"partyInviteAcceptText": "Aceptar",
"partyInviteDeclineText": "Denegar",
- "partyInviteGooglePlayExtraText": "(Busca la pestaña 'Google Play' en la ventana 'Reúne'",
+ "partyInviteGooglePlayExtraText": "(busca la pestaña 'Google Play' en la ventana 'Reúne')",
"partyInviteIgnoreText": "Ignorar",
- "partyInviteText": "${NAME} te ha invitado\na unirse a su fiesta!",
- "partyNameText": "Nombre de la fiesta",
- "partyServerRunningText": "Tu servidor de fiesta está en línea",
- "partySizeText": "Tamaño de la fiesta",
- "partyStatusCheckingText": "Comprobando estado...",
- "partyStatusJoinableText": "ya se pueden conectar a tu fiesta por internet",
- "partyStatusNoConnectionText": "Incapaz de conectar al servidor",
- "partyStatusNotJoinableText": "No se van a poder conectar a tu fiesta por internet",
- "partyStatusNotPublicText": "Tu fiesta no es publica",
- "pingText": "Ping",
+ "partyInviteText": "${NAME} te ha invitado\na unirse a su partida!",
+ "partyNameText": "Nombre De La Partida",
+ "partyServerRunningText": "Tu servidor de partida se esta ejecutando.",
+ "partySizeText": "tamaño de partida",
+ "partyStatusCheckingText": "comprobando estado...",
+ "partyStatusJoinableText": "ahora se pueden unir a tu partida desde internet",
+ "partyStatusNoConnectionText": "incapaz de conectarse al servidor",
+ "partyStatusNotJoinableText": "no se pueden unir a tu partida desde internet",
+ "partyStatusNotPublicText": "tu partida no es pública",
+ "pingText": "ping",
"portText": "Puerto",
- "privatePartyCloudDescriptionText": "Fiestas privadas se ejecutan en la nube; no requiere configuración del router.",
- "privatePartyHostText": "Hacer una Fiesta privada",
- "privatePartyJoinText": "Únete a una fiesta privada",
+ "privatePartyCloudDescriptionText": "Las partidas privadas se ejecutan en la nube; no requieren configuración del router.",
+ "privatePartyHostText": "Ajolar una Partida Privada",
+ "privatePartyJoinText": "Unirse a una Partida Privada",
"privateText": "Privado",
- "publicHostRouterConfigText": "Está opción requiere una configuración de puerto en tu router para una opción más fácil crea una fiesta privada",
- "publicText": "Publico",
- "requestingAPromoCodeText": "Pidiendo código...",
- "sendDirectInvitesText": "Enviar directamente la invitación",
+ "publicHostRouterConfigText": "Esto puede requerir configurar el reenvío de puertos en tu router. Para una opción más fácil, aloja una partida privada.",
+ "publicText": "Público",
+ "requestingAPromoCodeText": "Pidiendo un código...",
+ "sendDirectInvitesText": "Enviar Directamente La Invitación",
"shareThisCodeWithFriendsText": "Comparte este código con tus amigos:",
- "showMyAddressText": "Mostrar mi dirección",
- "startHostingPaidText": "Anfitrión Ahora Por ${COST}",
- "startHostingText": "Anfitrión",
+ "showMyAddressText": "Mostrar Mi Dirección",
+ "startHostingPaidText": "Alojar Ahora Por ${COST}",
+ "startHostingText": "Alojar",
"startStopHostingMinutesText": "Puede iniciar y detener el alojamiento de forma gratuita durante los próximos ${MINUTES} minutos.",
- "stopHostingText": "Dejar de alojar",
+ "stopHostingText": "Dejar De Alojar",
"titleText": "Reúne",
- "wifiDirectDescriptionBottomText": "Si todo los dispositivos disponen de 'Wi-fi Directo', deberían poder utilizarlo para\nencontrar y conectarse entre ellos. Cuando todos estén conectados, puedes formar \nfiestas, usando la pestaña 'Red Local', como si estuvieran en la misma red Wi-fi.\n\nPara mejores resultados, el host de Wi-fi Directo también debe de ser el host de la fiesta en ${APP_NAME}.",
+ "wifiDirectDescriptionBottomText": "Si todo los dispositivos disponen de 'Wi-fi Directo', deberían poder utilizarlo para\nencontrar y conectarse entre ellos. Cuando todos estén conectados, puedes formar \npartidas, usando la pestaña 'Red Local', como si estuvieran en la misma red Wi-fi.\n\nPara mejores resultados, el alojador del Wi-fi Directo también debe de ser el alojador de la partida en ${APP_NAME}.",
"wifiDirectDescriptionTopText": "Wi-Fi Directo puede ser utilizado para conectar dispositivos Android sin\ntener que utilizar una red Wi-Fi. Esto funciona mejor de Android 4.2 o mas nuevo.\n\nPara utilizarlo, abre los ajustes de Wi-Fi y busca 'Wi-Fi Directo' en el menú.",
- "wifiDirectOpenWiFiSettingsText": "Abrir Ajustes Wi-Fi",
+ "wifiDirectOpenWiFiSettingsText": "Abrir Ajustes De Wi-Fi",
"wifiDirectText": "Wi-Fi Directo",
"worksBetweenAllPlatformsText": "(funciona con todas las plataformas)",
- "worksWithGooglePlayDevicesText": "(funciona con dispositivos que corran la versión Google Play (Android) del juego)",
- "youHaveBeenSentAPromoCodeText": "Has enviado un código de ${APP_NAME}:"
+ "worksWithGooglePlayDevicesText": "(funciona con dispositivos que ejecuten la versión Google Play (Android) del juego)",
+ "youHaveBeenSentAPromoCodeText": "Has enviado un código promocional de ${APP_NAME}:"
},
"getCoinsWindow": {
"coinDoublerText": "Duplicador de monedas",
@@ -825,165 +841,167 @@
},
"getTicketsWindow": {
"freeText": "¡GRATIS!",
- "freeTicketsText": "Tickets Gratis",
+ "freeTicketsText": "Boletos Gratis",
"inProgressText": "Ya hay una transacción en progreso; por favor inténtalo mas tarde.",
- "purchasesRestoredText": "Compras Restauradas.",
- "receivedTicketsText": "¡${COUNT} boletos recibidos!",
+ "purchasesRestoredText": "Compras restauradas.",
+ "receivedTicketsText": "¡Recibiste ${COUNT} boletos!",
"restorePurchasesText": "Restaurar Compras",
"ticketDoublerText": "Duplicador de Tiquetes",
- "ticketPack1Text": "Paquete de Boletos Pequeño",
- "ticketPack2Text": "Paquete de Boletos Mediano",
- "ticketPack3Text": "Paquete de Boletos Grande",
- "ticketPack4Text": "Paquete de Boletos Jumbo",
- "ticketPack5Text": "Paquete de Boletos Mamut",
- "ticketPack6Text": "Paquete de Boletos Supremo",
- "ticketsFromASponsorText": "Obtén ${COUNT} boletos\nde un patrocinador",
+ "ticketPack1Text": "Paquete De Boletos Pequeño",
+ "ticketPack2Text": "Paquete De Boletos Mediano",
+ "ticketPack3Text": "Paquete De Boletos Grande",
+ "ticketPack4Text": "Paquete De Boletos Jumbo",
+ "ticketPack5Text": "Paquete De Boletos Mamut",
+ "ticketPack6Text": "Paquete De Boletos Supremo",
+ "ticketsFromASponsorText": "Ver un anuncio\na cambio de ${COUNT} boletos",
"ticketsText": "${COUNT} Boletos",
- "titleText": "Obtén Boletos",
- "unavailableLinkAccountText": "Lo sentimos, las compras no están disponibles en esta plataforma.\nComo una solución, puedes enlazar esta cuenta a otra\nplataforma y hacer tus compras desde ahí.",
+ "titleText": "Conseguir Boletos",
+ "unavailableLinkAccountText": "Disculpe, las compras no están disponibles en esta plataforma.\nComo una solución, puedes enlazar esta cuenta a otra\nplataforma y hacer tus compras desde ahí.",
"unavailableTemporarilyText": "No disponible por el momento; por favor inténtalo más tarde.",
- "unavailableText": "Lo sentimos, no se encuentra disponible.",
- "versionTooOldText": "Lo sentimos, esta versión está demasiado atrasada; por favor actualiza el juego.",
+ "unavailableText": "Disculpe, esto no esta disponible.",
+ "versionTooOldText": "Lo sentimos, esta versión del juego es muy antigua; por favor actualízala a una nueva versión.",
"youHaveShortText": "tienes ${COUNT}",
"youHaveText": "tienes ${COUNT} boletos"
},
- "googleMultiplayerDiscontinuedText": "Lo siento, Google's multijugador servicio ya no esta mas disponible.\nEstoy trabajando en un reemplazo lo mas rapido posible.\nHasta entonces, por favor intente con otro metodo de conexión.\n-Eric",
- "googlePlayPurchasesNotAvailableText": "Las compras de Google Play no están disponibles.\nEs posible que deba actualizar la aplicación de su tienda.",
- "googlePlayServicesNotAvailableText": "Servicios de Google Play no disponibles.\nAlgunas funciones de la aplicación pueden estar deshabilitadas.",
+ "googleMultiplayerDiscontinuedText": "Lo siento, el servicio multijugador de Google ya no está disponible.\nEstoy trabajando en un reemplazo lo más rapido posible.\nHasta entonces, por favor intenta otro método de conexión.\n-Eric",
+ "googlePlayPurchasesNotAvailableText": "Las compras de Google Play no están disponibles.\nEs posible que debas actualizar la aplicación de tu tienda.",
+ "googlePlayServicesNotAvailableText": "Los Servicios De Google Play no están disponibles.\nAlgunas funciones de la aplicación pueden estar deshabilitadas.",
"googlePlayText": "Google Play",
"graphicsSettingsWindow": {
"alwaysText": "Siempre",
"fullScreenCmdText": "Pantalla completa (Cmd-F)",
"fullScreenCtrlText": "Pantalla completa (Ctrl-F)",
- "gammaText": "Gamma",
+ "fullScreenText": "Pantalla completa",
+ "gammaText": "Gama",
"highText": "Alta",
- "higherText": "Superior",
+ "higherText": "Muy Alta",
"lowText": "Baja",
+ "maxFPSText": "FPS Máximos",
"mediumText": "Mediana",
"neverText": "Nunca",
"resolutionText": "Resolución",
"showFPSText": "Mostrar FPS",
"texturesText": "Texturas",
"titleText": "Gráficos",
- "tvBorderText": "Marco de TV",
- "verticalSyncText": "Sincronización vertical",
+ "tvBorderText": "Borde de TV",
+ "verticalSyncText": "Sincronización Vertical",
"visualsText": "Visuales"
},
"helpWindow": {
- "bombInfoText": "- Bomba -\nMas fuerte que los golpes, pero puede\nresultar en auto-lesiones bastante graves.\nPara mejores resultados, tírala hacia tus\noponentes antes de que explote.",
+ "bombInfoText": "- Bomba -\nMás fuerte que los golpes, pero puede\nresultar en autolesiones bastante graves.\nPara mejores resultados, tírala hacia tus\noponentes antes de que explote.",
"bombInfoTextScale": 0.57,
"canHelpText": "${APP_NAME} te puede ayudar.",
- "controllersInfoText": "Puedes jugar ${APP_NAME} con tus amigos en una red, o todos pueden\njugar en el mismo dispositivo si se tienen varios controles.\n${APP_NAME} soporta una gran variedad de ellos; incluso puedes utilizar\ntus dispositivos móviles como controles instalando la app '${REMOTE_APP_NAME}'.\nVe a 'Ajustes-> Controles' para más información.",
+ "controllersInfoText": "Puedes jugar ${APP_NAME} con tus amigos en una red o todos pueden\njugar en el mismo dispositivo si se tienen varios controles.\n${APP_NAME} soporta una gran variedad de ellos; incluso puedes utilizar\ntus dispositivos móviles como controles instalando la app '${REMOTE_APP_NAME}'.\nVe a 'Ajustes-> Controles' para más información.",
"controllersInfoTextFantasia": "Un jugador puede usar el mando a distancia para jugar, pero\nse recomienda usar gamepads. También puedes usar dispositivos\niOS o Android como controles con la app \"BombSquad Remote\".\nRevisa la sección \"Controles\" en los Ajustes para más información.",
"controllersInfoTextMac": "Uno o dos jugadores pueden usar el teclado, pero BombSquad es mejor\ncon controles. BombSquad puede usar controles USB, controles de PS3,\ncontroles de Xbox 360, controles Wii y dispositivos iOS/Android para\ncontrolar los personajes. Espero que tengas algunos de ellos a la mano. \nConsulta 'Controles' bajo 'Ajustes' para más información.",
"controllersInfoTextOuya": "Puedes usar controles OUYA, controles de PS3, controles de Xbox\n360, y muchos de otros controles USB y Bluetooth con BombSquad.\nPuedes usar también dispositivos iOS/Android como controles con la aplicación \n'BombSquad Remote'. Consulta 'Controles' bajo 'Ajustes' para más información.",
- "controllersInfoTextRemoteOnly": "Tu puedes jugar ${APP_NAME} con tus amigos en la red, o pueden\njugar todos en el mismo dispositivo usando los teléfonos\ncomo controles libres con la aplicación '${REMOTE_APP_NAME}'",
+ "controllersInfoTextRemoteOnly": "Tu puedes jugar ${APP_NAME} con tus amigos en la red o pueden\njugar todos en el mismo dispositivo usando los teléfonos\ncomo controles libres con la aplicación '${REMOTE_APP_NAME}'",
"controllersText": "Controles",
"controllersTextScale": 0.67,
- "controlsSubtitleText": "Tu personaje de ${APP_NAME} tiene algunas acciones básicas:",
+ "controlsSubtitleText": "Tu amistoso personaje de ${APP_NAME} tiene algunas acciones básicas:",
"controlsSubtitleTextScale": 0.7,
"controlsText": "Controles",
"controlsTextScale": 1.4,
- "devicesInfoText": "La version VR de ${APP_NAME} se puede jugar en red con la versión \nregular, así que saca tus celulares, tablets y PCs extra y que \nempieze el juego. Es muy útil conectar un dispositivo con la versión\nregular a uno con la versión VR para que todos los que esten fuera\npuedan ver la acción.",
+ "devicesInfoText": "La versión VR de ${APP_NAME} se puede jugar en red con la versión \nregular, así que saca tus celulares, tablets y computadoras extras y que \nempieze el juego. Es muy útil conectar un dispositivo con la versión\nregular a uno con la versión VR para que todos los que estén fuera\npuedan ver la acción.",
"devicesText": "Dispositivos",
"friendsGoodText": "Cuantos más, mejor. ${APP_NAME} es más divertido con muchos \namigos y soporta hasta 8 a la vez, lo que nos lleva a:",
"friendsGoodTextScale": 0.62,
"friendsText": "Amigos",
"friendsTextScale": 0.67,
- "jumpInfoText": "- Salto -\nSalta para cruzar pequeños\nespacios, tirar cosas más lejos,\ny para expresar alegría.",
+ "jumpInfoText": "- Saltar -\nSalta para cruzar pequeños espacios, \npara tirar cosas más lejos y \npara expresar sentimientos de alegría.",
"jumpInfoTextScale": 0.6,
- "orPunchingSomethingText": "O golpear algo, tirarlo por un precipicio, y explotarlo en plena caída con una bomba pegajosa.",
+ "orPunchingSomethingText": "O golpear algo, tirarlo por un precipicio y explotarlo en plena caída con una bomba pegajosa.",
"orPunchingSomethingTextScale": 0.51,
- "pickUpInfoText": "- Levanta -\nAlza banderas, enemigos, o cualquier\notra cosa no atornillada al suelo.\nPulsa de nuevo para lanzar.",
+ "pickUpInfoText": "- Recoger -\nAgarra banderas, enemigos o cualquier\notra cosa no atornillada al suelo.\nPresiona de nuevo para lanzar.",
"pickUpInfoTextScale": 0.6,
"powerupBombDescriptionText": "Te permite sacar tres bombas\nen una fila en lugar de solo una.",
"powerupBombNameText": "Bombas Triples",
- "powerupCurseDescriptionText": "Probablemente quieras evitar estos.\n ...¿o quizás tú?",
+ "powerupCurseDescriptionText": "Probablemente querrás evitar estos.\n ...¿o quizás no?",
"powerupCurseNameText": "Maldición",
"powerupHealthDescriptionText": "Te restaura a la salud completa.\nNunca lo habrías adivinado.",
"powerupHealthNameText": "Botiquín",
"powerupIceBombsDescriptionText": "Más débiles que las bombas normales\npero dejan a tus enemigos congelados\ny particularmente frágiles.",
- "powerupIceBombsNameText": "Bombas de Hielo",
+ "powerupIceBombsNameText": "Bombas De Hielo",
"powerupImpactBombsDescriptionText": "Levemente más débiles que las bombas\nregulares, pero explotan al impacto.",
- "powerupImpactBombsNameText": "Bombas de Gatillo",
+ "powerupImpactBombsNameText": "Insta-Bombas",
"powerupLandMinesDescriptionText": "Estas vienen en grupos de 3;\nSon buenas para defensa territorial\no para detener enemigos veloces.",
"powerupLandMinesNameText": "Minas Terrestres",
- "powerupPunchDescriptionText": "Hacen que tus golpes sean más duros,\nmás rápidos, mejores, y más fuertes.",
- "powerupPunchNameText": "Guantes de Boxeo",
- "powerupShieldDescriptionText": "Absorbe un poco de daño\npara que no tengas que hacerlo.",
- "powerupShieldNameText": "Escudo de Energía",
- "powerupStickyBombsDescriptionText": "Se adhieren a cualquier cosa.\nProducen hilaridad.",
+ "powerupPunchDescriptionText": "Hacen que tus golpes sean más duros,\nmás rápidos, mejores y más fuertes.",
+ "powerupPunchNameText": "Guantes De Boxeo",
+ "powerupShieldDescriptionText": "Absorbe un poco de daño\npara que tú no tengas que hacerlo.",
+ "powerupShieldNameText": "Electro-Escudo",
+ "powerupStickyBombsDescriptionText": "Se adhieren a todo lo que toquen.\nProducen hilaridad.",
"powerupStickyBombsNameText": "Bombas Pegajosas",
"powerupsSubtitleText": "Por supuesto, ningún juego está completo sin potenciadores:",
"powerupsSubtitleTextScale": 0.8,
"powerupsText": "Potenciadores",
"powerupsTextScale": 1.4,
- "punchInfoText": "- Golpe -\nEntre más rápido te muevas más\nimpacto causan tus golpes, así que\ncorre, salta y da vueltas como loco.",
+ "punchInfoText": "- Golpear -\nLos golpes hacen más daño cuanto\nmás rápido se muevan tus puños, así que\ncorre, salta y gira como un loco.",
"punchInfoTextScale": 0.6,
- "runInfoText": "- Correr -\nSostén CUALQUIER botón para correr. Los botones gatillos o traseros funcionan bien si los tienes.\nCorrer te hace llegar más rápido pero es más difícil girar, así que ten cuidado con los barrancos.",
+ "runInfoText": "- Correr -\nMantén CUALQUIER botón para correr. Los gatillos o botones traseros funcionan bien si los tienes.\nCorrer te lleva a lugares más rápido pero es más difícil girar, así que ten cuidado con los barrancos.",
"runInfoTextScale": 0.6,
- "someDaysText": "Hay días cuando sientes ganas de romper algo. O explotarlo.",
+ "someDaysText": "Hay días en los que sientes ganas de golpear algo. O volar algo.",
"someDaysTextScale": 0.66,
"titleText": "Ayuda ${APP_NAME}",
"toGetTheMostText": "Para sacar el máximo partido a este juego, necesitas:",
"toGetTheMostTextScale": 1.0,
"welcomeText": "¡Bienvenido a ${APP_NAME}!"
},
- "holdAnyButtonText": "",
- "holdAnyKeyText": "",
- "hostIsNavigatingMenusText": "- ${HOST} navega los menús como todo un pro -",
- "importPlaylistCodeInstructionsText": "Usa el siguiente código para importar esta lista de reproducción en otra parte",
+ "holdAnyButtonText": "",
+ "holdAnyKeyText": "",
+ "hostIsNavigatingMenusText": "- ${HOST} está navegando los menús como todo un pro -",
+ "importPlaylistCodeInstructionsText": "Usa el siguiente código para importar esta lista de reproducción en otra parte:",
"importPlaylistSuccessText": "Lista de reproducción '${NAME}' importada ${TYPE}",
"importText": "Importar",
"importingText": "Importando...",
"inGameClippedNameText": "en el juego será\n\"${NAME}\"",
- "installDiskSpaceErrorText": "ERROR: Incapaz de completar la instalación\nPuede que te hayas quedado sin espacio.\nLibera un poco de tu espacio e intenta de nuevo.",
+ "installDiskSpaceErrorText": "ERROR: Incapaz de completar la instalación.\nPuede que te hayas quedado sin espacio.\nLibera un poco de tu espacio e intenta de nuevo.",
"internal": {
"arrowsToExitListText": "pulsa ${LEFT} o ${RIGHT} para salir de la lista",
"buttonText": "botón",
- "cantKickHostError": "No puedes expulsar al host",
- "chatBlockedText": "A ${NAME} le hemos bloqueado el chat por ${TIME} segundos.",
- "connectedToGameText": "'${NAME}' se unió",
- "connectedToPartyText": "¡Unido a la fiesta de ${NAME}!",
+ "cantKickHostError": "No puedes expulsar al anfitrión.",
+ "chatBlockedText": "${NAME} está bloqueado del chat por ${TIME} segundos.",
+ "connectedToGameText": "Unido a '${NAME}'",
+ "connectedToPartyText": "¡Unido a la partida de ${NAME}!",
"connectingToPartyText": "Conectando...",
- "connectionFailedHostAlreadyInPartyText": "Conexión fallida; Host esta en otra fiesta.",
- "connectionFailedPartyFullText": "Conexión fallida; la fiesta está llena.",
+ "connectionFailedHostAlreadyInPartyText": "Conexión fallida; el anfitrión está en otra partida.",
+ "connectionFailedPartyFullText": "Conexión fallida; la partida está llena.",
"connectionFailedText": "Conexión fallida.",
- "connectionFailedVersionMismatchText": "Conexión fallida; Host corre una versión diferente del juego.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
+ "connectionFailedVersionMismatchText": "Conexión fallida; el anfitrión corre una versión diferente del juego.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
"connectionRejectedText": "Conexión rechazada.",
"controllerConnectedText": "${CONTROLLER} conectado.",
"controllerDetectedText": "1 control detectado.",
"controllerDisconnectedText": "${CONTROLLER} desconectado.",
"controllerDisconnectedTryAgainText": "${CONTROLLER} desconectado. Intenta conectarlo de nuevo.",
- "controllerForMenusOnlyText": "Este control no puede ser usado para jugar; solo para navegar por menus.",
+ "controllerForMenusOnlyText": "Este control no puede ser usado para jugar; solo para navegar por menús.",
"controllerReconnectedText": "${CONTROLLER} reconectado.",
"controllersConnectedText": "${COUNT} controles conectados.",
"controllersDetectedText": "${COUNT} controles detectados.",
"controllersDisconnectedText": "${COUNT} controles desconectados.",
- "corruptFileText": "Archivos corruptos detectados. Por favor reinstala el juego o contacta ${EMAIL}",
- "errorPlayingMusicText": "Error al reproducir música: ${MUSIC}",
- "errorResettingAchievementsText": "No se pudieron reiniciar los logros; por favor inténtalo de nuevo.",
- "hasMenuControlText": "${NAME} Tiene control del menú.",
- "incompatibleNewerVersionHostText": "El host está corriendo una versión nueva del juego.\nActualiza a la última versión y vuelve a intentarlo.",
- "incompatibleVersionHostText": "Host corre una versión diferente del juego; imposible conectar.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
- "incompatibleVersionPlayerText": "${NAME} está corriendo una versión diferente del juego y no se ha podido conectar.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
- "invalidAddressErrorText": "Error: Dirección inválida.",
- "invalidNameErrorText": "Error: Nombre invalido",
- "invalidPortErrorText": "Error: Puerto inválido.",
+ "corruptFileText": "Archivo(s) corrupto(s) detectado(s). Por favor intenta reinstalar o contáctate con ${EMAIL}",
+ "errorPlayingMusicText": "Error reproduciendo música: ${MUSIC}",
+ "errorResettingAchievementsText": "Incapaz de reiniciar los logros; por favor inténtalo de nuevo más tarde.",
+ "hasMenuControlText": "${NAME} tiene el control del menú.",
+ "incompatibleNewerVersionHostText": "El anfitrión está ejecutando una versión nueva del juego.\nActualiza a la última versión y vuelve a intentarlo.",
+ "incompatibleVersionHostText": "El anfitrión está ejecutando una versión diferente del juego.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
+ "incompatibleVersionPlayerText": "${NAME} está ejecutando una versión diferente del juego.\nAsegúrate de que ambos estén actualizados y vuelve a intentarlo.",
+ "invalidAddressErrorText": "Error: dirección inválida.",
+ "invalidNameErrorText": "Error: nombre inválido.",
+ "invalidPortErrorText": "Error: puerto inválido.",
"invitationSentText": "Invitación enviada.",
"invitationsSentText": "${COUNT} invitaciones enviadas.",
- "joinedPartyInstructionsText": "Alguien se ha unido a tu fiesta\nVe a 'Jugar' para iniciar el juego",
+ "joinedPartyInstructionsText": "Alguien se ha unido a tu fiesta.\nVe a 'Jugar' para iniciar un juego.",
"keyboardText": "Teclado",
- "kickIdlePlayersKickedText": "Sacando a ${NAME} por no mostrar movimiento.",
- "kickIdlePlayersWarning1Text": "${NAME} será sacado en ${COUNT} segundos si no presenta movimiento.",
+ "kickIdlePlayersKickedText": "Expulsando a ${NAME} por estar inactivo.",
+ "kickIdlePlayersWarning1Text": "${NAME} será expulsado en ${COUNT} segundos si sigue inactivo.",
"kickIdlePlayersWarning2Text": "(puedes apagar esto en Ajustes -> Avanzado)",
- "leftGameText": "'${NAME}' salió",
- "leftPartyText": "Dejó la fiesta de ${NAME}.",
+ "leftGameText": "Abandonó '${NAME}'.",
+ "leftPartyText": "Abandonó la partida de ${NAME}.",
"noMusicFilesInFolderText": "La carpeta no contiene archivos de audio.",
- "playerJoinedPartyText": "¡${NAME} se unió a la fiesta!",
- "playerLeftPartyText": "${NAME} se fue de la fiesta.",
- "rejectingInviteAlreadyInPartyText": "Rechazando invitación (Ya en una fiesta).",
- "serverRestartingText": "El servidor se está reiniciando. Conéctese en un momento...",
+ "playerJoinedPartyText": "¡${NAME} se unió a la partida!",
+ "playerLeftPartyText": "${NAME} abandonó la partida.",
+ "rejectingInviteAlreadyInPartyText": "Rechazando invitación (Ya estás en una partida).",
+ "serverRestartingText": "El servidor se está reiniciando. Por favor vuelva a unirse en un momento...",
"serverShuttingDownText": "El servidor está fuera de servicio...",
"signInErrorText": "Error iniciando sesión.",
"signInNoConnectionText": "Imposible iniciar sesión (¿No hay conexión a internet?)",
@@ -991,16 +1009,16 @@
"telnetAccessDeniedText": "ERROR: El usuario no concedió acceso telnet.",
"timeOutText": "(tiempo fuera en ${TIME} segundos)",
"touchScreenJoinWarningText": "Te uniste con la pantalla táctil.\nSi este fue un error, presiona 'Menú->Dejar juego' con ella.",
- "touchScreenText": "Pantalla táctil",
+ "touchScreenText": "Pantalla Táctil",
"trialText": "prueba",
- "unableToResolveHostText": "Error: no se ha podido resolver el host",
+ "unableToResolveHostText": "Error: incapaz de encontrar el anfitrión.",
"unavailableNoConnectionText": "No disponible por el momento (¿No tienes conexión a internet?)",
- "vrOrientationResetCardboardText": "Usa esto para reiniciarr la orientación del VR.\nPara jugar el juego necesitarás un control externo.",
- "vrOrientationResetText": "Orientación VR reseteada.",
+ "vrOrientationResetCardboardText": "Usa esto para reiniciar la orientación VR.\nPara jugar el juego necesitarás un control externo.",
+ "vrOrientationResetText": "Orientación VR reiniciada.",
"willTimeOutText": "(caducará si está inactivo)"
},
- "jumpBoldText": "SALTA",
- "jumpText": "Brinca",
+ "jumpBoldText": "SALTAR",
+ "jumpText": "Saltar",
"keepText": "Mantener",
"keepTheseSettingsText": "¿Mantener estos ajustes?",
"keyboardChangeInstructionsText": "Presiona dos veces el espacio para cambiar los teclados.",
@@ -1009,34 +1027,34 @@
"kickOccurredText": "${NAME} ha sido expulsado.",
"kickQuestionText": "¿Expulsar a ${NAME}?",
"kickText": "Expulsar",
- "kickVoteCantKickAdminsText": "El administrador no puede ser expulsado",
- "kickVoteCantKickSelfText": "No puedes expulsarte a ti mismo",
+ "kickVoteCantKickAdminsText": "Los administradores no pueden ser expulsados.",
+ "kickVoteCantKickSelfText": "No puedes expulsarte a ti mismo.",
"kickVoteFailedNotEnoughVotersText": "No hay suficientes jugadores para votar.",
- "kickVoteFailedText": "Votación de expulsión fallida",
- "kickVoteStartedText": "Han iniciado una votación para expulsar a '${NAME}'.",
- "kickVoteText": "Vota para expulsar",
- "kickVotingDisabledText": "El voto para expulsar no está disponible",
+ "kickVoteFailedText": "Votación de expulsión fallida.",
+ "kickVoteStartedText": "Se ha iniciado una votación de expulsión para '${NAME}'.",
+ "kickVoteText": "Votar para Expulsar",
+ "kickVotingDisabledText": "El voto para expulsar no está disponible.",
"kickWithChatText": "Escribe ${YES} en el chat para \"Si\" y ${NO} para \"No\".",
- "killsTallyText": "eliminó ${COUNT}",
- "killsText": "Víctimas",
+ "killsTallyText": "${COUNT} asesinatos",
+ "killsText": "Asesinatos",
"kioskWindow": {
"easyText": "Fácil",
"epicModeText": "Modo Épico",
"fullMenuText": "Menú Completo",
"hardText": "Difícil",
"mediumText": "Medio",
- "singlePlayerExamplesText": "Ejemplos 1 Jugador / Varios jugadores",
- "versusExamplesText": "Ejemplos Versus"
+ "singlePlayerExamplesText": "Ejemplos de 1 Jugador / Modo Cooperativo",
+ "versusExamplesText": "Ejemplos de Versus"
},
"languageSetText": "El lenguaje es ahora \"${LANGUAGE}\".",
"lapNumberText": "Vuelta ${CURRENT}/${TOTAL}",
"lastGamesText": "(últimos ${COUNT} juegos)",
"leaderboardsText": "Clasificaciones",
"league": {
- "allTimeText": "De todo el tiempo",
- "currentSeasonText": "Temporada en curso (${NUMBER})",
+ "allTimeText": "Todo El Tiempo",
+ "currentSeasonText": "Temporada Actual (${NUMBER})",
"leagueFullText": "Liga ${NAME}",
- "leagueRankText": "Liga Rank",
+ "leagueRankText": "Rango De Liga",
"leagueText": "Liga",
"rankInLeagueText": "#${RANK}, ${NAME} Liga${SUFFIX}",
"seasonEndedDaysAgoText": "La temporada terminó hace ${NUMBER} día(s).",
@@ -1054,59 +1072,59 @@
"levelIsLockedText": "${LEVEL} está bloqueado.",
"levelMustBeCompletedFirstText": "${LEVEL} debe completarse primero.",
"levelText": "Nivel ${NUMBER}",
- "levelUnlockedText": "¡Nivel desbloqueado!",
- "livesBonusText": "Bono de vidas",
+ "levelUnlockedText": "¡Nivel Desbloqueado!",
+ "livesBonusText": "Bono De Vidas",
"loadingText": "cargando",
"loadingTryAgainText": "Cargando; vuelve a intentarlo en un momento...",
"macControllerSubsystemBothText": "Ambos (no recomendado)",
"macControllerSubsystemClassicText": "Clásico",
- "macControllerSubsystemDescriptionText": "(Intenta cambiar esto si tus controladores no están funcionando)",
+ "macControllerSubsystemDescriptionText": "(intenta cambiar esto si tus controladores no están funcionando)",
"macControllerSubsystemMFiNoteText": "Control hecho para iOS/Mac detectado;\nTal vez quieras activar esto en Configuracion -> Controles",
"macControllerSubsystemMFiText": "Creado-para-iOS/Mac",
- "macControllerSubsystemTitleText": "Soporte de controladores",
+ "macControllerSubsystemTitleText": "Soporte De Controladores",
"mainMenu": {
"creditsText": "Créditos",
"demoMenuText": "Menú Demo",
- "endGameText": "Salir del juego",
- "endTestText": "Prueba final",
- "exitGameText": "Salir del juego",
+ "endGameText": "Terminar Juego",
+ "endTestText": "Terminar Prueba",
+ "exitGameText": "Salir Del Juego",
"exitToMenuText": "¿Salir al menú?",
- "howToPlayText": "Cómo jugar",
+ "howToPlayText": "Cómo Jugar",
"justPlayerText": "(Solo ${NAME})",
- "leaveGameText": "Dejar Juego",
- "leavePartyConfirmText": "¿Seguro que deseas dejar la fiesta?",
- "leavePartyText": "Dejar Fiesta",
+ "leaveGameText": "Abandonar Juego",
+ "leavePartyConfirmText": "¿Realmente deseas abandonar la partida?",
+ "leavePartyText": "Abandonar Partida",
"leaveText": "Abandonar",
"quitText": "Salir",
"resumeText": "Reanudar",
"settingsText": "Ajustes"
},
"makeItSoText": "Que así sea",
- "mapSelectGetMoreMapsText": "Conseguir más Mapas...",
+ "mapSelectGetMoreMapsText": "Conseguir Más Mapas...",
"mapSelectText": "Seleccionar…",
- "mapSelectTitleText": "Pistas: ${GAME}",
- "mapText": "Pista",
- "maxConnectionsText": "Conexiones máximas",
- "maxPartySizeText": "Capacidad máxima de la fiesta",
- "maxPlayersText": "Jugadores máximos",
- "merchText": "Mercado!",
+ "mapSelectTitleText": "Mapas Para ${GAME}",
+ "mapText": "Mapa",
+ "maxConnectionsText": "Máximo De Conexiones",
+ "maxPartySizeText": "Capacidad Máxima De La Partida",
+ "maxPlayersText": "Máximo De Jugadores",
+ "merchText": "¡Mercancía!",
"modeArcadeText": "Modo Arcade",
"modeClassicText": "Modo Clásico",
- "modeDemoText": "Modo De Demostración",
- "mostValuablePlayerText": "Jugador más Valorado",
- "mostViolatedPlayerText": "Jugador más Violado",
- "mostViolentPlayerText": "Jugador más Matador",
+ "modeDemoText": "Modo Demo",
+ "mostValuablePlayerText": "Jugador Más Valioso",
+ "mostViolatedPlayerText": "Jugador Más Violado",
+ "mostViolentPlayerText": "Jugador Más Violento",
"moveText": "Mover",
- "multiKillText": "¡¡¡${COUNT}-COMBO!!!",
+ "multiKillText": "¡¡¡COMBO DE ${COUNT}!!!",
"multiPlayerCountText": "${COUNT} jugadores",
"mustInviteFriendsText": "Nota: debes invitar a tus amigos en\nel panel \"${GATHER}\" o conectar\ncontroles para jugar multijugador.",
"nameBetrayedText": "${NAME} traicionó a ${VICTIM}.",
"nameDiedText": "${NAME} ha muerto.",
"nameKilledText": "${NAME} mató a ${VICTIM}.",
"nameNotEmptyText": "¡El nombre no puede quedar vacío!",
- "nameScoresText": "¡${NAME} anotó!",
+ "nameScoresText": "¡${NAME} Anotó!",
"nameSuicideKidFriendlyText": "${NAME} murió por accidente.",
- "nameSuicideText": "${NAME} se a suicidado.",
+ "nameSuicideText": "${NAME} cometió suicidio.",
"nameText": "Nombre",
"nativeText": "Nativo",
"newPersonalBestText": "¡Nuevo récord personal!",
@@ -1114,52 +1132,54 @@
"newText": "Nuevo",
"newVersionAvailableText": "¡Una nueva version de ${APP_NAME} está disponible! (${VERSION})",
"nextAchievementsText": "Siguientes Logros:",
- "nextLevelText": "Próximo nivel",
+ "nextLevelText": "Siguiente Nivel",
"noAchievementsRemainingText": "- ninguno",
"noContinuesText": "(sin re-intentos)",
"noExternalStorageErrorText": "No se encontraron almacenamientos externos en este dispositivo",
- "noGameCircleText": "Error: No has autenticado con GameCircle",
+ "noGameCircleText": "Error: no registrado en GameCircle",
"noJoinCoopMidwayText": "Jugadores no pueden unirse en mitad de un juego.",
+ "noPluginsInstalledText": "Sin Complementos Instalados",
"noProfilesErrorText": "No haz creado ningún perfil, por lo que tendrás que llamarte '${NAME}'.\nVe a Ajustes>Perfiles para que te hagas un perfil.",
- "noScoresYetText": "Sin puntuaciones aún.",
- "noThanksText": "No gracias",
+ "noScoresYetText": "Sin puntajes aún.",
+ "noServersFoundText": "No se encontraron servidores.",
+ "noThanksText": "No Gracias",
"noTournamentsInTestBuildText": "ADVERTENCIA: los puntajes de los torneos en esta versión de prueba serán ignorados.",
- "noValidMapsErrorText": "No hay pistas para este tipo de juego.",
+ "noValidMapsErrorText": "Mapas válidos no encontrados para este tipo de juego.",
"notEnoughPlayersRemainingText": "Cantidad necesaria de jugadores no coincide; inicia un juego nuevo.",
"notEnoughPlayersText": "¡Necesitas por lo menos ${COUNT} jugadores para comenzar!",
- "notNowText": "Ahora no",
- "notSignedInErrorText": "Necesitas registrarte para hacer esto.",
+ "notNowText": "Ahora No",
+ "notSignedInErrorText": "Debes iniciar sesión para hacer esto.",
"notSignedInGooglePlayErrorText": "Debes iniciar sesión con Google Play para hacer esto.",
"notSignedInText": "No registrado",
- "notUsingAccountText": "Nota: ignorando su cuenta de ${SERVICE}.\nVaya a 'Cuenta -> Ingresar con ${SERVICE}' si quieres usarla",
+ "notUsingAccountText": "Nota: ignorando su cuenta de ${SERVICE}.\nVaya a 'Cuenta -> Ingresar con ${SERVICE}' si quieres usarla.",
"nothingIsSelectedErrorText": "¡No hay nada seleccionado!",
"numberText": "#${NUMBER}",
- "offText": "Apagado",
+ "offText": "Apagar",
"okText": "Aceptar",
- "onText": "Encendido",
- "oneMomentText": "Un momento...",
- "onslaughtRespawnText": "${PLAYER} reaparecerá en la horda ${WAVE}",
+ "onText": "Encender",
+ "oneMomentText": "Un Momento...",
+ "onslaughtRespawnText": "${PLAYER} reaparecerá en la oleada ${WAVE}",
"orText": "${A} o ${B}",
"otherText": "Otros...",
"outOfText": "(#${RANK} de ${ALL})",
- "ownFlagAtYourBaseWarning": "Tu misma bandera debe estar\nen su lugar para anotar!",
+ "ownFlagAtYourBaseWarning": "¡Su propia bandera debe estar\nen su base para anotar!",
"packageModsEnabledErrorText": "Juegos de red no están permitidos mientras paquetes modificadores estén habilitados (ver Ajustes->Avanzado)",
"partyWindow": {
- "chatMessageText": "Mensaje del Chat",
- "emptyText": "Tu fiesta está vacía",
+ "chatMessageText": "Mensaje Del Chat",
+ "emptyText": "Tu partida está vacía",
"hostText": "(host)",
"sendText": "Enviar",
- "titleText": "Tu Fiesta"
+ "titleText": "Tu Partida"
},
- "pausedByHostText": "(pausado por host)",
- "perfectWaveText": "¡Horda perfecta!",
+ "pausedByHostText": "(pausado por el host)",
+ "perfectWaveText": "¡Oleada Perfecta!",
"pickUpBoldText": "LEVANTAR",
- "pickUpText": "Levantar",
+ "pickUpText": "Recoger",
"playModes": {
"coopText": "Cooperativo",
- "freeForAllText": "Todos contra Todos",
- "multiTeamText": "Múltiples Equipos",
- "singlePlayerCoopText": "Solo un Jugador / Co-op",
+ "freeForAllText": "Todos-contra-Todos",
+ "multiTeamText": "Múlti-Equipo",
+ "singlePlayerCoopText": "Solo Un Jugador / Cooperativo",
"teamsText": "Equipos"
},
"playText": "Jugar",
@@ -1173,47 +1193,47 @@
},
"playerCountAbbreviatedText": "${COUNT}j",
"playerDelayedJoinText": "${PLAYER} entrará al comienzo de la siguiente ronda.",
- "playerInfoText": "Información del Jugador",
- "playerLeftText": "${PLAYER} abandonó la partida",
+ "playerInfoText": "Información Del Jugador",
+ "playerLeftText": "${PLAYER} abandonó el juego.",
"playerLimitReachedText": "Límite de ${COUNT} jugadores alcanzado; no se permiten más.",
"playerLimitReachedUnlockProText": "Mejora a \"${PRO}\" en la tienda para jugar con más de ${COUNT} jugadores.",
"playerProfilesWindow": {
"cantDeleteAccountProfileText": "No puedes borrar el perfil de tu cuenta.",
"deleteButtonText": "Borrar\nPerfil",
- "deleteConfirmText": "Borrar '${PROFILE}'?",
+ "deleteConfirmText": "¿Borrar '${PROFILE}'?",
"editButtonText": "Editar\nPerfil",
"explanationText": "(nombres de jugadores personalizados y apariencias para esta cuenta)",
"newButtonText": "Nuevo\nPerfil",
- "titleText": "Perfil de jugadores"
+ "titleText": "Perfiles Del Jugador"
},
"playerText": "Jugador",
"playlistNoValidGamesErrorText": "Esta lista de juegos contiene juegos desbloqueables no válidos.",
"playlistNotFoundText": "lista no encontrada",
- "playlistText": "Lista de reproducción",
- "playlistsText": "Listas de Juego",
+ "playlistText": "Lista de juegos",
+ "playlistsText": "Listas de juegos",
"pleaseRateText": "Si te gusta ${APP_NAME}, por favor tomate un momento\npara calificar o escribir una reseña. Esto proporcionará\ninformación útil y ayuda al soporte del futuro desarrollo del juego.\n\n¡gracias!\n-eric",
"pleaseWaitText": "Por favor, espera...",
- "pluginClassLoadErrorText": "Error al cargar la clase del plugin '${PLUGIN}': ${ERROR}",
- "pluginInitErrorText": "Error al iniciar el plugin '${PLUGIN}': ${ERROR}",
- "pluginSettingsText": "Ajustes del Plugin",
- "pluginsAutoEnableNewText": "Activar Plugins automáticamente",
- "pluginsDetectedText": "Nuevos complemento(s) detectados. Reinicie para activarlos, o configúrelos en la configuración",
- "pluginsDisableAllText": "Desactivar todos los Plugins",
- "pluginsEnableAllText": "Activar todos los Plugins",
- "pluginsRemovedText": "${NUM} plugin(s) ya no se encuentran.",
- "pluginsText": "Plugins",
+ "pluginClassLoadErrorText": "Error cargando el complemento '${PLUGIN}': ${ERROR}",
+ "pluginInitErrorText": "Error iniciando complemento '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Ajustes De Complementos",
+ "pluginsAutoEnableNewText": "Auto Habilitar Nuevos Complementos",
+ "pluginsDetectedText": "Complemento detectado(s). Reinicia el juego o ve a ajustes para configurarlo.",
+ "pluginsDisableAllText": "Deshabilitar Todos Los Complementos",
+ "pluginsEnableAllText": "Habilitar Todos Los Complementos",
+ "pluginsRemovedText": "${NUM} complemento(s) ya no se encuentra(n).",
+ "pluginsText": "Complementos",
"practiceText": "Práctica",
- "pressAnyButtonPlayAgainText": "Oprime cualquier botón jugar de nuevo...",
- "pressAnyButtonText": "Oprime cualquier botón para continuar...",
- "pressAnyButtonToJoinText": "Oprime cualquier botón para unirse al juego...",
- "pressAnyKeyButtonPlayAgainText": "Oprime cualquier botón/tecla para jugar de nuevo...",
- "pressAnyKeyButtonText": "Oprime cualquier botón/tecla para continuar...",
- "pressAnyKeyText": "Oprime cualquier tecla...",
- "pressJumpToFlyText": "** Salta repetidamente para volar **",
- "pressPunchToJoinText": "Pulsa GOLPE para unirse al juego...",
- "pressToOverrideCharacterText": "Presiona ${BUTTONS} para cambiar de personaje",
- "pressToSelectProfileText": "Presiona ${BUTTONS} para seleccionar tu perfil",
- "pressToSelectTeamText": "Presiona ${BUTTONS} para seleccionar un equipo",
+ "pressAnyButtonPlayAgainText": "Presiona cualquier botón para jugar de nuevo...",
+ "pressAnyButtonText": "Presiona cualquier botón para continuar...",
+ "pressAnyButtonToJoinText": "presiona cualquier botón para unirse al juego...",
+ "pressAnyKeyButtonPlayAgainText": "Presiona cualquier botón/tecla para jugar de nuevo...",
+ "pressAnyKeyButtonText": "Presiona cualquier botón/tecla para continuar...",
+ "pressAnyKeyText": "Presiona cualquier tecla...",
+ "pressJumpToFlyText": "** Presiona saltar repetidamente para volar **",
+ "pressPunchToJoinText": "presiona GOLPEAR para unirse...",
+ "pressToOverrideCharacterText": "presiona ${BUTTONS} para cambiar de personaje",
+ "pressToSelectProfileText": "presiona ${BUTTONS} para seleccionar tu perfil",
+ "pressToSelectTeamText": "presiona ${BUTTONS} para seleccionar un equipo",
"profileInfoText": "Crear perfiles para ti y tus amigos para que\npersonalices sus nombres, personajes y colores.",
"promoCodeWindow": {
"codeText": "Código",
@@ -1230,14 +1250,14 @@
"titleText": "Para usar controles de PS3 con ${APP_NAME}:"
},
"publicBetaText": "BETA PUBLICA",
- "punchBoldText": "GOLPE",
- "punchText": "Golpe",
- "purchaseForText": "Comprar por este precio : ${PRICE}",
+ "punchBoldText": "GOLPEAR",
+ "punchText": "Golpear",
+ "purchaseForText": "Comprar por ${PRICE}",
"purchaseGameText": "Comprar Juego",
"purchasingText": "Comprando...",
- "quitGameText": "¿Cerrar ${APP_NAME}?",
- "quittingIn5SecondsText": "Abandonando en 5 segundos...",
- "randomPlayerNamesText": "DEFAULT_NAMES, Pablo, Fulanito, Menganita, Martín, Franco, Pancho, Tomás, Bruno, Federico, Juan, Joaquín, Huevoduro",
+ "quitGameText": "¿Salir de ${APP_NAME}?",
+ "quittingIn5SecondsText": "Saliendo en 5 segundos...",
+ "randomPlayerNamesText": "DEFAULT_NAMES, Pablo, Fulanito, Menganita, Martín, Franco, Pancho, Tomás, Bruno, Federico, Juan, Joaquín, Huevo Duro, Chico Rico",
"randomText": "Generar",
"rankText": "Rango",
"ratingText": "Valoración",
@@ -1249,22 +1269,22 @@
"remote_app": {
"app_name": "Control Remoto BombSquad",
"app_name_short": "BSRemoto",
- "button_position": "Posición de los botones",
- "button_size": "Tamaño de los botones",
- "cant_resolve_host": "No se encuentra el host.",
+ "button_position": "Posición De Los Botones",
+ "button_size": "Tamaño De Los Botones",
+ "cant_resolve_host": "No se encuentra el anfitrión.",
"capturing": "Captando...",
"connected": "Conectado.",
"description": "Usa tu teléfono o tableta como control para BombSquad.\nHasta 8 dispositivos pueden conectarse a la vez para un épico caos multijugador local en un solo TV o tableta",
"disconnected": "Desconectado por el servidor.",
- "dpad_fixed": "Fijo",
- "dpad_floating": "Flotante",
- "dpad_position": "Posición del D-Pad",
- "dpad_size": "Tamaño del D-Pad",
- "dpad_type": "Tipo de D-Pad",
+ "dpad_fixed": "fijo",
+ "dpad_floating": "flotante",
+ "dpad_position": "Posición Del D-Pad",
+ "dpad_size": "Tamaño Del D-Pad",
+ "dpad_type": "Tipo De D-Pad",
"enter_an_address": "Ingresa una dirección",
"game_full": "El juego está lleno o no acepta conexiones.",
"game_shut_down": "El juego se ha cerrado.",
- "hardware_buttons": "Botones de Hardware",
+ "hardware_buttons": "Botones Del Hardware",
"join_by_address": "Unirse por dirección...",
"lag": "Lag: ${SECONDS} segundos",
"reset": "Reestablecer a predeterminado",
@@ -1283,9 +1303,9 @@
"replayRenameWarningText": "Renombra \"${REPLAY}\" despues de un juego si quieres quedarte con el; o sino será reemplazado.",
"replayVersionErrorText": "Lo sentimos, esta repetición fue hecha en una\nversión diferente del juego y no se puede usar.",
"replayWatchText": "Ver Repetición",
- "replayWriteErrorText": "Error creando archivo de repetición",
+ "replayWriteErrorText": "Error creando archivo de repetición.",
"replaysText": "Repeticiones",
- "reportPlayerExplanationText": "Usa este email para reportar trampas, lenguaje ofensivo, u otro mal comportamiento.\nPor favor, describelo aquí abajo:",
+ "reportPlayerExplanationText": "Usa este email para reportar trampas, lenguaje inapropiado, u otro mal comportamiento.\nPor favor, describelo aquí abajo:",
"reportThisPlayerCheatingText": "Trampas",
"reportThisPlayerLanguageText": "Lenguaje Inapropiado",
"reportThisPlayerReasonText": "¿Qué vas a reportar?",
@@ -1296,10 +1316,12 @@
"revertText": "Deshacer",
"runText": "Correr",
"saveText": "Guardar",
- "scanScriptsErrorText": "Error (s) escaneando scripts; ver el registro para más detalles.",
- "scoreChallengesText": "Desafíos de Puntuación",
- "scoreListUnavailableText": "La lista de puntuaciones no está disponible.",
- "scoreText": "Puntuación",
+ "scanScriptsErrorText": "Error(s) escaneando scripts; Vea el registro para más detalles.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "Los ${PATH} y ${NUM} y otros módulo(s) se deberán actualizar para el api ${API}",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} se deberá actualizar para el api ${API}",
+ "scoreChallengesText": "Desafíos De Puntuación",
+ "scoreListUnavailableText": "La lista de puntajes no está disponible.",
+ "scoreText": "Puntaje",
"scoreUnits": {
"millisecondsText": "Milisegundos",
"pointsText": "Puntos",
@@ -1307,6 +1329,7 @@
},
"scoreWasText": "(era ${COUNT})",
"selectText": "Elegir",
+ "sendInfoDescriptionText": "Envía información del estado de la cuenta y de la aplicación al desarrollador.\nPor favor incluya su nombre o el motivo del envío.",
"seriesWinLine1PlayerText": "GANA LA",
"seriesWinLine1TeamText": "GANA LA",
"seriesWinLine1Text": "¡GANA LA",
@@ -1323,36 +1346,42 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(un teclado simple y amigable con controles para editar textos)",
- "alwaysUseInternalKeyboardText": "Siempre Usar el Teclado Interno",
- "benchmarksText": "Puntos de Referencia y Pruebas de Resistencia",
- "disableCameraGyroscopeMotionText": "Desactivar el movimiento giróscopico de la cámara",
- "disableCameraShakeText": "Desactivar el temblor de la cámara",
- "disableThisNotice": "(Puedes desactivar este aviso en configuraciones avanzadas)",
+ "alwaysUseInternalKeyboardText": "Siempre usar el teclado interno",
+ "benchmarksText": "Puntos De Referencia & Pruebas De Estrés",
+ "devToolsText": "Herramientas de Desarrollo",
+ "disableCameraGyroscopeMotionText": "Deshabilitar el movimiento del giroscopio de la cámara",
+ "disableCameraShakeText": "Deshabilitar el temblor de la cámara",
+ "disableThisNotice": "(puedes deshabilitar este aviso en ajustes avanzados)",
"enablePackageModsDescriptionText": "(enciende modificaciones pero apaga juegos vía red)",
"enablePackageModsText": "Encender Modificaciones Locales",
"enterPromoCodeText": "Ingresar Código",
"forTestingText": "Notas: estos datos son solo para pruebas y se reiniciarán cuando se abra la app de nuevo.",
"helpTranslateText": "Las traducciones de ${APP_NAME} son un esfuerzo\napoyado por la comunidad. Si deseas aportar o corregir una\ntraducción, utiliza el siguiente enlace. ¡Gracias de antemano!",
"helpTranslateTextScale": 1.0,
- "kickIdlePlayersText": "Expulsar Jugadores Inactivos",
+ "kickIdlePlayersText": "Expulsar a jugadores inactivos",
"kidFriendlyModeText": "Modo Niños (reduce violencia, etc)",
"languageText": "Idioma",
"languageTextScale": 1.0,
- "moddingGuideText": "Guía de Mods",
+ "moddingGuideText": "Guía De Modificación",
+ "moddingToolsText": "Herramientas de modificación",
"mustRestartText": "Tienes que reiniciar el juego para que tome efecto.",
- "netTestingText": "Prueba de Red",
+ "netTestingText": "Prueba De Red",
"resetText": "Reiniciar",
- "showBombTrajectoriesText": "Mostrar trayectorias",
- "showInGamePingText": "Visualizar Ping en el juego",
- "showPlayerNamesText": "Mostrar Nombres de los Jugadores",
- "showUserModsText": "Mostrar Carpeta de Mods",
+ "sendInfoText": "Enviar Información",
+ "showBombTrajectoriesText": "Mostrar Trayectorias De Las Bombas",
+ "showDemosWhenIdleText": "Mostrar demostraciones cuando esté inactivo",
+ "showDeprecatedLoginTypesText": "Mostrar tipos de inicio de sesión obsoletos",
+ "showDevConsoleButtonText": "Mostrar botón de consola de desarrollador",
+ "showInGamePingText": "Mostrar ping en el juego",
+ "showPlayerNamesText": "Mostrar Nombres De Los Jugadores",
+ "showUserModsText": "Mostrar Carpeta De Mods",
"titleText": "Avanzado",
- "translationEditorButtonText": "Editor de Traducción de ${APP_NAME}",
+ "translationEditorButtonText": "Editor De Traducción De ${APP_NAME}",
"translationFetchErrorText": "estado de traducción no disponible",
"translationFetchingStatusText": "viendo estado de traducción...",
- "translationInformMe": "Informarme cuando mi idioma necesite actualizaciones.",
- "translationNoUpdateNeededText": "el idioma actual está actualizado; woohoo!",
- "translationUpdateNeededText": "** ¡¡el idioma actual necesita actualizarse!! **",
+ "translationInformMe": "Informarme cuando mi idioma necesite actualizaciones",
+ "translationNoUpdateNeededText": "El idioma actual está actualizado; ¡wuju!",
+ "translationUpdateNeededText": "** ¡¡El idioma actual necesita actualizarse!! **",
"vrTestingText": "Prueba VR"
},
"shareText": "Compartir",
@@ -1362,16 +1391,19 @@
"signInWithGameCenterText": "Para usar una cuenta de Game Center,\ningresa con la aplicación Game Center.",
"singleGamePlaylistNameText": "Solo ${GAME}",
"singlePlayerCountText": "1 jugador",
+ "sizeLargeText": "Grande",
+ "sizeMediumText": "Medium",
+ "sizeSmallText": "pequeñ@",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
- "CharSelect": "Selección de Personajes",
+ "CharSelect": "Selección De Personajes",
"Chosen One": "El Elegido",
- "Epic": "Juegos Épicos",
+ "Epic": "Juegos en Modo Épico",
"Epic Race": "Carrera Épica",
"FlagCatcher": "Captura la Bandera",
- "Flying": "Sueños Dulces",
+ "Flying": "Pensamientos Felices",
"Football": "Fútbol",
- "ForwardMarch": "Carnicería",
+ "ForwardMarch": "Asalto",
"GrandRomp": "Conquista",
"Hockey": "Hockey",
"Keep Away": "Aléjate",
@@ -1380,16 +1412,16 @@
"Onslaught": "Matanza",
"Race": "Carrera",
"Scary": "Rey de la Colina",
- "Scores": "Pantalla de Puntuaciones",
+ "Scores": "Pantalla De Puntuaciones",
"Survival": "Eliminación",
"ToTheDeath": "Combate Mortal",
- "Victory": "Pantalla de Puntuaciones Finales"
+ "Victory": "Pantalla De Puntuaciones Finales"
},
"spaceKeyText": "espacio",
- "statsText": "Estad.",
+ "statsText": "Estadísticas",
"storagePermissionAccessText": "Esto requiere acceso de almacenamiento",
"store": {
- "alreadyOwnText": "¡Ya compraste ${NAME}!",
+ "alreadyOwnText": "¡Ya tienes ${NAME}!",
"bombSquadProDescriptionText": "• Doble de tickets recibidos en el juego.\n• Remueve los anuncios del juego.\n• Incluye ${COUNT} tickets de bonus.\n• +${PERCENT}% de bonus en la puntuación de la liga.\n• Desbloquea los niveles cooperativos ${INF_ONSLAUGHT}\n y ${INF_RUNAROUND}. ",
"bombSquadProFeaturesText": "Características:",
"bombSquadProNameText": "${APP_NAME} Pro",
@@ -1398,10 +1430,10 @@
"charactersText": "Personajes",
"comingSoonText": "Próximamente...",
"extrasText": "Extras",
- "freeBombSquadProText": "BombSquad ahora es gratis, pero ya que compraste el juego recibirás\nla mejora de BombSquad Pro y ${COUNT} tickets como agradecimiento.\n¡Disfruta de las nuevas funciones, y gracias por tu soporte!\n-Eric",
+ "freeBombSquadProText": "BombSquad es gratis, pero ya que compraste el juego recibirás\nla mejora de BombSquad Pro y ${COUNT} boletos como agradecimiento.\n¡Disfruta de las nuevas funciones y gracias por tu apoyo!\n-Eric",
"gameUpgradesText": "Mejoras",
"getCoinsText": "Obtén monedas",
- "holidaySpecialText": "¡Especial de Temporada!",
+ "holidaySpecialText": "¡Especial De Temporada!",
"howToSwitchCharactersText": "(ve a \"${SETTINGS} -> ${PLAYER_PROFILES}\" para asignar y personalizar avatares)",
"howToUseIconsText": "(crea perfiles globales de jugador (en la ventana de cuenta) para usarlos)",
"howToUseMapsText": "(usa estos mapas en tus listas de juego por equipos y todos contra todos)",
@@ -1415,57 +1447,59 @@
"purchaseConfirmText": "¿Comprar ${ITEM}?",
"purchaseNotValidError": "Compra inválida.\nContacte ${EMAIL} si esto es un error.",
"purchaseText": "Comprar",
- "saleBundleText": "¡Paquete en Oferta!",
+ "saleBundleText": "¡Paquete En Oferta!",
"saleExclaimText": "¡Oferta!",
"salePercentText": "(${PERCENT}% menos)",
"saleText": "OFERTA",
"searchText": "Buscar",
- "teamsFreeForAllGamesText": "En Equipos / Todos contra Todos",
+ "teamsFreeForAllGamesText": "Juegos de Equipos / Todos-para-Todos",
"totalWorthText": "*** ¡${TOTAL_WORTH} de valor! ***",
- "upgradeQuestionText": "¿Comprar BombSquad Pro?",
- "winterSpecialText": "Especial de Invierno",
+ "upgradeQuestionText": "¿Mejorar?",
+ "winterSpecialText": "Especial De Invierno",
"youOwnThisText": "- ya posees esto -"
},
- "storeDescriptionText": "¡Juego en grupo de 8 jugadores!\n\n¡Revienta a tus amigos (o a la computadora) en un torneo de minijuegos explosivos como Captura la Bandera, Hockey-Bomba, y Combate Mortal Épico en cámara lenta!\n\nControles sencillos y un amplio apoyo de controles hacen que sea fácil que 8 personas entren en la acción; ¡incluso puedes usar tus dispositivos móviles como controles a través de la aplicación gratuita 'BombSquad Remote'!\n\n¡Bombas fuera!\n\nEcha un vistazo en www.froemling.net/bombsquad para más información.",
+ "storeDescriptionText": "¡Juego en grupo de 8 jugadores!\n\n¡Revienta a tus amigos (o a la computadora) en un torneo de minijuegos explosivos como Captura la Bandera, Hockey-Bomba y Combate Mortal Épico en cámara lenta!\n\nControles sencillos y un amplio apoyo de controles hacen que sea fácil que 8 personas entren en la acción; ¡incluso puedes usar tus dispositivos móviles como controles a través de la aplicación gratuita 'Control Remoto BombSquad'!\n\n¡Bombas Fuera!\n\nEcha un vistazo en www.froemling.net/bombsquad para más información.",
"storeDescriptions": {
"blowUpYourFriendsText": "Revienta a tus amigos.",
"competeInMiniGamesText": "Compite en juegos de carreras, vuelo y mucho más.",
- "customize2Text": "Modifica personajes, mini-juegos, e incluso la banda sonora.",
+ "customize2Text": "Personaliza personajes, mini-juegos, e incluso la banda sonora.",
"customizeText": "Modifica personajes y crea tus propias listas de mini-juegos.",
- "sportsMoreFunText": "Los deportes son más divertidos con minas.",
- "teamUpAgainstComputerText": "Sobrevive contra la computadora."
+ "sportsMoreFunText": "Los deportes son más divertidos con explosivos.",
+ "teamUpAgainstComputerText": "Forma un equipo contra la computadora."
},
"storeText": "Tienda",
"submitText": "Enviar",
"submittingPromoCodeText": "Enviando Código...",
- "teamNamesColorText": "Nombres de equipo/colores...",
+ "successText": "¡Éxito!",
+ "supportEmailText": "Si estás teniendo algún problema con la\napp, por favor, manda un email a ${EMAIL}.",
+ "teamNamesColorText": "Nombres De Equipos/Colores...",
"teamsText": "Equipos",
"telnetAccessGrantedText": "Acceso a Telnet activado.",
"telnetAccessText": "Acceso a Telnet detectado; ¿permitir?",
"testBuildErrorText": "Esta versión de prueba ya no es activa; busca una versión más nueva.",
- "testBuildText": "Versión de Prueba",
- "testBuildValidateErrorText": "Imposible validar esta versión de prueba (¿no tienes conexión a internet?)",
- "testBuildValidatedText": "Versión de Prueba Validada; ¡Disfruta!",
+ "testBuildText": "Compilación De Prueba",
+ "testBuildValidateErrorText": "Incapaz de validar esta compilación de prueba (¿no tienes conexión a internet?)",
+ "testBuildValidatedText": "Compilación De Prueba Validada; ¡Disfruta!",
"thankYouText": "¡Gracias por tu ayuda! ¡¡Disfruta el juego!!",
- "threeKillText": "¡¡¡Triple Combo!!!",
- "timeBonusText": "Bono de Tiempo",
+ "threeKillText": "¡¡COMBO TRIPLE!!",
+ "timeBonusText": "Bono De Tiempo",
"timeElapsedText": "Tiempo Transcurrido",
- "timeExpiredText": "Se Acabó el Tiempo",
+ "timeExpiredText": "Tiempo Expirado",
"timeSuffixDaysText": "${COUNT}d",
"timeSuffixHoursText": "${COUNT}h",
"timeSuffixMinutesText": "${COUNT}m",
"timeSuffixSecondsText": "${COUNT}s",
- "tipText": "Sugerencia",
+ "tipText": "Consejo",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
"topFriendsText": "Mejores Amigos",
"tournamentCheckingStateText": "Buscando estado del campeonato; espere por favor...",
"tournamentEndedText": "Este torneo ha acabado. Uno nuevo comenzará pronto.",
- "tournamentEntryText": "Inscripción al Torneo",
- "tournamentResultsRecentText": "Resultados Torneos Recientes",
- "tournamentStandingsText": "Puestos del Torneo",
+ "tournamentEntryText": "Entrada Al Torneo",
+ "tournamentResultsRecentText": "Resultados De Torneos Recientes",
+ "tournamentStandingsText": "Puestos Del Torneo",
"tournamentText": "Torneo",
- "tournamentTimeExpiredText": "Tiempo del Torneo Expirado",
+ "tournamentTimeExpiredText": "Tiempo Del Torneo Expirado",
"tournamentsDisabledWorkspaceText": "Los torneos están deshabilitados cuando los espacios de trabajo están activos.\nPara volver a habilitar los torneos, deshabilite su espacio de trabajo y reinicie el juego.",
"tournamentsText": "Torneos",
"translations": {
@@ -1475,17 +1509,17 @@
"Bernard": "Bernard",
"Bones": "Huesos",
"Butch": "Butch",
- "Easter Bunny": "Conejo de Pascua",
- "Flopsy": "Flopsy",
+ "Easter Bunny": "Conejo De Pascua",
+ "Flopsy": "Pelusa",
"Frosty": "Frosty",
"Gretel": "Gretel",
"Grumbledorf": "Grumbledorf",
"Jack Morgan": "Jack Morgan",
"Kronk": "Kronk",
"Lee": "Lee",
- "Lucky": "Lucky",
+ "Lucky": "Suertudo",
"Mel": "Mel",
- "Middle-Man": "Intermediario",
+ "Middle-Man": "Hombre Intermedio",
"Minimus": "Minimus",
"Pascal": "Pascal",
"Pixel": "Pixel",
@@ -1493,7 +1527,7 @@
"Santa Claus": "Papá Noel",
"Snake Shadow": "Serpiente Sombría",
"Spaz": "Spaz",
- "Taobao Mascot": "Mascota Taobao",
+ "Taobao Mascot": "Mascota De Taobao",
"Todd": "Todd",
"Todd McBurton": "Todd McBurton",
"Xara": "Xara",
@@ -1515,49 +1549,49 @@
"Uber\nRunaround": "Evasiva\nUltra"
},
"coopLevelNames": {
- "${GAME} Training": "${GAME} Entrenamiento",
+ "${GAME} Training": "Entrenamiento De ${GAME}",
"Infinite ${GAME}": "${GAME} Infinito/a",
"Infinite Onslaught": "Matanza Infinita",
"Infinite Runaround": "Evasiva Infinita",
"Onslaught": "Matanza Infinita",
- "Onslaught Training": "Entrenamiento de Matanza",
- "Pro ${GAME}": "Pro ${GAME}",
- "Pro Football": "Fútbol Pro",
+ "Onslaught Training": "Entrenamiento De Matanza",
+ "Pro ${GAME}": "${GAME} Pro",
+ "Pro Football": "Rugby Pro",
"Pro Onslaught": "Matanza Pro",
"Pro Runaround": "Evasiva Pro",
"Rookie ${GAME}": "Novato ${GAME}",
"Rookie Football": "Fútbol Novato",
"Rookie Onslaught": "Matanza Novato",
"Runaround": "Evasiva Infinita",
- "The Last Stand": "Batalla Final",
- "Uber ${GAME}": "Uber ${GAME}",
+ "The Last Stand": "La Batalla Final",
+ "Uber ${GAME}": "${GAME} Ultra",
"Uber Football": "Fútbol Ultra",
"Uber Onslaught": "Matanza Ultra",
"Uber Runaround": "Evasiva Ultra"
},
"gameDescriptions": {
- "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Sé el elegido durante el tiempo designado para ganar.\nElimina al Elegido para convertirte en El Elegido.",
- "Bomb as many targets as you can.": "Lanza bombas a tantos blancos como puedas.",
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Sé el elegido durante el tiempo designado para ganar.\nMata al elegido para convertirte en el.",
+ "Bomb as many targets as you can.": "Bombardea tantos blancos como puedas.",
"Carry the flag for ${ARG1} seconds.": "Carga la bandera por ${ARG1} segundos.",
"Carry the flag for a set length of time.": "Carga la bandera por un determinado tiempo.",
"Crush ${ARG1} of your enemies.": "Elimina ${ARG1} de tus enemigos.",
"Defeat all enemies.": "Elimina todos los enemigos.",
"Dodge the falling bombs.": "Esquiva las bombas.",
- "Final glorious epic slow motion battle to the death.": "Gloriosa batalla final en cámara lenta épica.",
+ "Final glorious epic slow motion battle to the death.": "Gloriosa batalla final épica en cámara lenta hasta la muerte.",
"Gather eggs!": "¡Recolecta huevos!",
"Get the flag to the enemy end zone.": "Lleva la bandera enemiga a tu zona.",
"How fast can you defeat the ninjas?": "¿Cuán rápido puedes derrotar a los ninjas?",
- "Kill a set number of enemies to win.": "Elimina a un número determinado \nde enemigos para ganar.",
- "Last one standing wins.": "El último de pie gana.",
+ "Kill a set number of enemies to win.": "Mata a un número determinado de enemigos para ganar.",
+ "Last one standing wins.": "El último en pie gana.",
"Last remaining alive wins.": "El último en quedar vivo gana.",
"Last team standing wins.": "El último equipo en pie gana.",
"Prevent enemies from reaching the exit.": "Evita que los enemigos lleguen a la salida.",
"Reach the enemy flag to score.": "Toca la bandera enemiga para anotar.",
"Return the enemy flag to score.": "Devuelve la bandera enemiga para anotar.",
- "Run ${ARG1} laps.": "Da ${ARG1} vueltas.",
- "Run ${ARG1} laps. Your entire team has to finish.": "Da ${ARG1} vueltas. Todo tu equipo debe cruzar la meta.",
- "Run 1 lap.": "Da 1 vuelta.",
- "Run 1 lap. Your entire team has to finish.": "Da 1 vuelta. Todo tu equipo debe cruzar la meta.",
+ "Run ${ARG1} laps.": "Corre ${ARG1} vueltas.",
+ "Run ${ARG1} laps. Your entire team has to finish.": "Corre ${ARG1} vueltas. Todo tu equipo debe cruzar la meta.",
+ "Run 1 lap.": "Corre 1 vuelta.",
+ "Run 1 lap. Your entire team has to finish.": "Corre 1 vuelta. Todo tu equipo debe cruzar la meta.",
"Run real fast!": "¡Corre muy rápido!",
"Score ${ARG1} goals.": "Anota ${ARG1} goles.",
"Score ${ARG1} touchdowns.": "Anota ${ARG1} touchdowns.",
@@ -1568,19 +1602,19 @@
"Secure all flags on the map to win.": "Asegura todas las banderas en el mapa para ganar.",
"Secure the flag for ${ARG1} seconds.": "Asegura la bandera por ${ARG1} segundos.",
"Secure the flag for a set length of time.": "Asegura la bandera por un tiempo determinado.",
- "Steal the enemy flag ${ARG1} times.": "Roba la bandera del enemigo ${ARG1} veces.",
- "Steal the enemy flag.": "Roba la bandera del enemigo.",
+ "Steal the enemy flag ${ARG1} times.": "Roba la bandera enemiga ${ARG1} veces.",
+ "Steal the enemy flag.": "Roba la bandera enemiga.",
"There can be only one.": "Solo puede haber uno.",
- "Touch the enemy flag ${ARG1} times.": "Toca la bandera del enemigo ${ARG1} veces.",
- "Touch the enemy flag.": "Toca la bandera del enemigo.",
+ "Touch the enemy flag ${ARG1} times.": "Toca la bandera enemiga ${ARG1} veces.",
+ "Touch the enemy flag.": "Toca la bandera enemiga.",
"carry the flag for ${ARG1} seconds": "carga la bandera por ${ARG1} segundos.",
- "kill ${ARG1} enemies": "elimina a ${ARG1} enemigos",
+ "kill ${ARG1} enemies": "mata a ${ARG1} enemigos",
"last one standing wins": "el último en pie gana",
- "last team standing wins": "el último equipo en caer gana",
+ "last team standing wins": "el último equipo en pie gana",
"return ${ARG1} flags": "devuelve ${ARG1} banderas",
"return 1 flag": "devuelve 1 bandera",
"run ${ARG1} laps": "da ${ARG1} vueltas",
- "run 1 lap": "da 1 vuelta",
+ "run 1 lap": "corre 1 vuelta",
"score ${ARG1} goals": "anota ${ARG1} goles",
"score ${ARG1} touchdowns": "anota ${ARG1} touchdowns",
"score a goal": "anota un gol",
@@ -1596,19 +1630,19 @@
"Chosen One": "El Elegido",
"Conquest": "Conquista",
"Death Match": "Combate Mortal",
- "Easter Egg Hunt": "Búsqueda de Huevos de Pascua",
+ "Easter Egg Hunt": "Búsqueda De Huevos De Pascua",
"Elimination": "Eliminación",
"Football": "Fútbol",
"Hockey": "Hockey",
"Keep Away": "Aléjate",
"King of the Hill": "Rey de la Colina",
- "Meteor Shower": "Lluvia de Meteoritos",
+ "Meteor Shower": "Lluvia De Meteoritos",
"Ninja Fight": "Pelea Ninja",
"Onslaught": "Matanza",
"Race": "Carrera",
"Runaround": "Evasiva",
- "Target Practice": "Blanco de Práctica",
- "The Last Stand": "Batalla Final"
+ "Target Practice": "Blanco De Práctica",
+ "The Last Stand": "La Batalla Final"
},
"inputDeviceNames": {
"Keyboard": "Teclado",
@@ -1625,7 +1659,7 @@
"Dutch": "Holandés",
"English": "Inglés",
"Esperanto": "Esperanto",
- "Filipino": "filipino",
+ "Filipino": "Filipino",
"Finnish": "Finlandés",
"French": "Francés",
"German": "Alemán",
@@ -1651,7 +1685,7 @@
"Thai": "Tailandés",
"Turkish": "Turco",
"Ukrainian": "Ucraniano",
- "Venetian": "Veneciana",
+ "Venetian": "Veneciano",
"Vietnamese": "Vietnamita"
},
"leagueNames": {
@@ -1664,16 +1698,16 @@
"Big G": "Gran G",
"Bridgit": "Puentecito",
"Courtyard": "Patio Real",
- "Crag Castle": "Castillo del Risco",
- "Doom Shroom": "Hongo de la Muerte",
- "Football Stadium": "Estadio de Fútbol",
+ "Crag Castle": "Castillo Del Risco",
+ "Doom Shroom": "Hongo De La Muerte",
+ "Football Stadium": "Estadio De Fútbol",
"Happy Thoughts": "Pensamientos Felices",
- "Hockey Stadium": "Estadio de Hockey",
+ "Hockey Stadium": "Estadio De Hockey",
"Lake Frigid": "Lago Frígido",
- "Monkey Face": "Cara de Mono",
- "Rampage": "Rampa",
+ "Monkey Face": "Cara De Mono",
+ "Rampage": "Medio Tubo",
"Roundabout": "Rotonda",
- "Step Right Up": "Paso al Frente",
+ "Step Right Up": "Paso Al Frente",
"The Pad": "La Plataforma",
"Tip Top": "Punta Superior",
"Tower D": "Torre D",
@@ -1689,78 +1723,78 @@
"scoreNames": {
"Flags": "Banderas",
"Goals": "Goles",
- "Score": "Puntuación",
+ "Score": "Puntaje",
"Survived": "Sobrevivió",
"Time": "Tiempo",
"Time Held": "Tiempo Mantenido"
},
"serverResponses": {
- "A code has already been used on this account.": "Este código ya ha sido usado en esta cuenta",
+ "A code has already been used on this account.": "Este código ya ha sido usado en esta cuenta.",
"A reward has already been given for that address.": "Ya se le ha dado una recompensa a esa dirección.",
- "Account linking successful!": "¡Enlace de Cuenta exitoso!",
- "Account unlinking successful!": "¡Desenlace de cuenta realizado!",
- "Accounts are already linked.": "Las cuentas ya se encuentran enlazadas.",
+ "Account linking successful!": "¡Vinculación de cuenta exitosa!",
+ "Account unlinking successful!": "¡Desvinculación de cuenta exitosa!",
+ "Accounts are already linked.": "Las cuentas ya están vinculadas.",
"Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "No se pudo verificar la vista del anuncio. \nPor favor asegúrese de estar ejecutando una versión oficial y actualizada del juego.",
- "An error has occurred; (${ERROR})": "Se ha producido un error; (${ERROR})",
- "An error has occurred; please contact support. (${ERROR})": "Se ha producido un error; por favor contácte con soporte. (${ERROR})",
- "An error has occurred; please contact support@froemling.net.": "Ha ocurrido un error; contacta a support@froemling.net.",
- "An error has occurred; please try again later.": "Un error ha ocurrido; por favor intenta más tarde.",
- "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "¿Quieres enlazar estas cuentas?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\n¡Esto no se puede deshacer!",
+ "An error has occurred; (${ERROR})": "Un error ha ocurrido; (${ERROR})",
+ "An error has occurred; please contact support. (${ERROR})": "Un error ha ocurrido; por favor contacta al soporte. (${ERROR})",
+ "An error has occurred; please contact support@froemling.net.": "Un error ha ocurrido; por favor contacta a support@froemling.net.",
+ "An error has occurred; please try again later.": "Un error ha ocurrido; por favor intentalo más tarde.",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "¿Quieres vincular estas cuentas?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\n¡Esto no se puede deshacer!",
"BombSquad Pro unlocked!": "¡BombSquad Pro desbloqueado!",
- "Can't link 2 accounts of this type.": "No puedes enlazar dos cuentas de este tipo.",
- "Can't link 2 diamond league accounts.": "No pueden enlazar dos cuentas de liga diamante.",
- "Can't link; would surpass maximum of ${COUNT} linked accounts.": "No se pudo enlazar; sobrepasaría el máximo de ${COUNT} cuentas enlazadas.",
+ "Can't link 2 accounts of this type.": "No se pueden vincular 2 cuentas de este tipo.",
+ "Can't link 2 diamond league accounts.": "No se pueden vincular 2 cuentas de liga diamante.",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "No se pudo vincular; sobrepasaría el máximo de cuentas vinculadas de ${COUNT}.",
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Trampa detectada; puntajes y premios suspendidos por ${COUNT} días.",
"Could not establish a secure connection.": "No se pudo establecer una conexión segura.",
"Daily maximum reached.": "Máximo diario conseguido.",
- "Entering tournament...": "Entrando a torneo...",
+ "Entering tournament...": "Entrando al torneo...",
"Invalid code.": "Código inválido.",
"Invalid payment; purchase canceled.": "Pago inválido; compra cancelada.",
"Invalid promo code.": "Código promocional inválido.",
"Invalid purchase.": "Compra inválida.",
"Invalid tournament entry; score will be ignored.": "Entrada de torneo inválida; el puntaje será ignorado.",
- "Item unlocked!": "¡Objeto desbloqueado!",
- "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "VINCULACÍON DENEGADO. ${ACCOUNT} contiene\ndatos significativos que TODOS SERÍAN PERDIDOS.\nPuede vincular en el orden opuesto si lo desea\n(y pierda los datos de ESTA cuenta en su lugar)",
- "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "¿Enlazar ${ACCOUNT} a esta cuenta?\nTodos los datos en ${ACCOUNT} desaparecerán.\nEsto no se puede deshacer. ¿Estás seguro?",
- "Max number of playlists reached.": "Número máximo de listas de reproducción alcanzado.",
+ "Item unlocked!": "¡Artículo desbloqueado!",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "VINCULACIÓN DENEGADA. ${ACCOUNT} contiene\ndatos significativos que podrían PERDERSE EN SU TOTALIDAD.\nPuedes vincular en el orden opuesto si lo desea\n(y pierda los datos de ESTA cuenta en su lugar)",
+ "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "¿Vincular ${ACCOUNT} a esta cuenta?\nTodos los datos en ${ACCOUNT} desaparecerán.\nEsto no se puede deshacer. ¿Estás seguro?",
+ "Max number of playlists reached.": "Número máximo de playlits alcanzado.",
"Max number of profiles reached.": "Número máximo de perfiles alcanzado.",
"Maximum friend code rewards reached.": "Máximo de premios por códigos de amigos alcanzado.",
"Message is too long.": "El Mensaje es muy largo.",
- "No servers are available. Please try again soon.": "Sin servidores disponibles. Por favor intenta después.",
+ "No servers are available. Please try again soon.": "Sin servidores disponibles. Por favor inténtalo después.",
"Profile \"${NAME}\" upgraded successfully.": "El perfil \"${NAME}\" se ha mejorado satisfactoriamente.",
"Profile could not be upgraded.": "El perfil no pudo ser mejorado.",
"Purchase successful!": "¡Compra exitosa!",
- "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Has recibido ${COUNT} tickets recibidos por iniciar sesión.\nRegresa mañana para recibir ${TOMORROW_COUNT} tickets.",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Has recibido ${COUNT} boletos por iniciar sesión.\nRegresa mañana para recibir ${TOMORROW_COUNT} boletos.",
"Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "La funcionalidad del servidor ya no es compatible en esta versión del juego;\nActualiza a una versión más reciente.",
- "Sorry, there are no uses remaining on this code.": "Perdón, pero no quedan usos disponibles de este código.",
- "Sorry, this code has already been used.": "Perdón, este código ya ha sido usado.",
- "Sorry, this code has expired.": "Perdón, este código ha expirado.",
- "Sorry, this code only works for new accounts.": "Este código solo sirve para cuentas nuevas.",
+ "Sorry, there are no uses remaining on this code.": "Disculpe, pero no quedan usos disponibles de este código.",
+ "Sorry, this code has already been used.": "Disculpe, este código ya ha sido usado.",
+ "Sorry, this code has expired.": "Disculpe, este código ha expirado.",
+ "Sorry, this code only works for new accounts.": "Disculpe, este código solo funciona para cuentas nuevas.",
"Still searching for nearby servers; please try again soon.": "Todavía buscando por servidores cercanos; intente de nuevo más tarde.",
- "Temporarily unavailable; please try again later.": "Temporalmente desactivado; por favor, inténtalo luego.",
+ "Temporarily unavailable; please try again later.": "Temporalmente indisponible; por favor inténtalo más tarde.",
"The tournament ended before you finished.": "El torneo terminó antes de que terminaras.",
- "This account cannot be unlinked for ${NUM} days.": "Esta cuenta no puede ser desenlazada por ${NUM} días.",
+ "This account cannot be unlinked for ${NUM} days.": "Esta cuenta no puede ser desvinculada por ${NUM} días.",
"This code cannot be used on the account that created it.": "Este código no puede ser usado en la misma cuenta que ha sido creado.",
- "This is currently unavailable; please try again later.": "Esto Está No Disponible actualmente; por favor inténtelo más tarde",
- "This requires version ${VERSION} or newer.": "Esto requiere la versión ${VERSION} o una más nueva.",
- "Tournaments disabled due to rooted device.": "Los torneos han sido desactivados debido a que tu dispositivo es root",
- "Tournaments require ${VERSION} or newer": "El torneo requiere la versión ${VERSION} o versiones recientes",
- "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "¿Desenlazar ${ACCOUNT} de esta cuenta?\nTodos los datos en ${ACCOUNT} se reiniciarán\n(excepto los logros en algunos casos).",
- "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ADVERTENCIA: se han emitido reclamaciones de piratería contra tu cuenta.\nLas cuentas que se encuentren pirateadas serán prohibidas. Por favor, juega limpio.",
- "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "¿Quieres enlazar tu cuenta de dispositivo a esta otra?\n\nTu cuenta de dispositivo es ${ACCOUNT1}\nEsta cuenta es ${ACCOUNT2}\n\nEsto permitirá guardar tu progreso actual.\nAdvertencia: ¡Esto no se puede deshacer!",
+ "This is currently unavailable; please try again later.": "Esto esta indisponible actualmente; por favor inténtelo más tarde",
+ "This requires version ${VERSION} or newer.": "Esto requiere la versión ${VERSION} o una más reciente.",
+ "Tournaments disabled due to rooted device.": "Los torneos han sido deshabilitados debido a que tú dispositivo esta rooteado.",
+ "Tournaments require ${VERSION} or newer": "Los torneos requieren la versión ${VERSION} o una más nueva",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "¿Desvincular ${ACCOUNT} de esta cuenta?\nTodos los datos en ${ACCOUNT} se reiniciarán.\n(excepto los logros en algunos casos)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ADVERTENCIA: se han emitido reclamaciones de hacks contra tu cuenta.\nLas cuentas que se encuentren pirateadas serán prohibidas. Por favor juega limpio.",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "¿Quieres vincular tu cuenta de dispositivo a esta otra?\n\nTu cuenta de dispositivo es ${ACCOUNT1}\nEsta cuenta es ${ACCOUNT2}\n\nEsto permitirá guardar tu progreso actual.\nAdvertencia: ¡Esto no se puede deshacer!",
"You already own this!": "¡Ya posees esto!",
"You can join in ${COUNT} seconds.": "Puedes unirte en ${COUNT} segundos.",
- "You don't have enough tickets for this!": "¡No tienes suficientes tickets para esto!",
+ "You don't have enough tickets for this!": "¡No tienes suficientes boletos para esto!",
"You don't own that.": "No tienes eso.",
- "You got ${COUNT} tickets!": "¡Obtuviste ${COUNT} tickets!",
- "You got a ${ITEM}!": "¡Recibiste un ${ITEM}!",
- "You have been promoted to a new league; congratulations!": "¡Has sido ascendido a una nueva liga! ¡Felicidades!",
+ "You got ${COUNT} tickets!": "¡Obtuviste ${COUNT} boletos!",
+ "You got a ${ITEM}!": "¡Conseguiste un ${ITEM}!",
+ "You have been promoted to a new league; congratulations!": "Has sido ascendido a una nueva liga; ¡felicitaciones!",
"You must update to a newer version of the app to do this.": "Debes actualizar la aplicación a una versión más reciente para hacer esto.",
"You must update to the newest version of the game to do this.": "Necesitas actualizar a la versión más reciente del juego para hacer esto.",
"You must wait a few seconds before entering a new code.": "Debes esperar unos segundos antes de ingresar un código nuevo.",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Quedaste en la posición #${RANK} en el campeonato. ¡Gracias por jugar!",
"Your account was rejected. Are you signed in?": "Tu cuenta fue rechazada. ¿Estas registrado?",
- "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Tu copia del juego fue modificada.\nPor favor revierte estos cambios e intenta de nuevo",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Tu copia del juego fue modificada.\nPor favor revierte estos cambios e intenta de nuevo.",
"Your friend code was used by ${ACCOUNT}": "Tu código de amigo fue usado por ${ACCOUNT}"
},
"settingNames": {
@@ -1775,39 +1809,39 @@
"8 Seconds": "8 Segundos",
"Allow Negative Scores": "Permitir Puntajes Negativos",
"Balance Total Lives": "Repartir Vidas Totales",
- "Bomb Spawning": "Aparición de Bombas",
- "Chosen One Gets Gloves": "El Elegido Tiene Guantes de Boxeo",
- "Chosen One Gets Shield": "El Elegido Tiene Electro-Escudo",
+ "Bomb Spawning": "Aparecer Bombas",
+ "Chosen One Gets Gloves": "El Elegido Consigue Guantes De Boxeo",
+ "Chosen One Gets Shield": "El Elegido Consigue Electro-Escudo",
"Chosen One Time": "Tiempo Del Elegido",
- "Enable Impact Bombs": "Permitir Impacto de Bombas",
- "Enable Triple Bombs": "Permitir Bombas Triples",
+ "Enable Impact Bombs": "Habilitar Insta-Bombas",
+ "Enable Triple Bombs": "Habilitar Bombas Triples",
"Entire Team Must Finish": "Todo el Equipo Debe Terminar",
"Epic Mode": "Modo Épico",
- "Flag Idle Return Time": "Tiempo de Regreso de Bandera Inactiva",
- "Flag Touch Return Time": "Tiempo de Bandera Sin Tocar",
+ "Flag Idle Return Time": "Tiempo De Retorno de Bandera Inactiva",
+ "Flag Touch Return Time": "Retorno de Bandera con Toque",
"Hold Time": "Retención",
- "Kills to Win Per Player": "Víctimas por Jugador",
+ "Kills to Win Per Player": "Asesinatos para Ganar Por Jugador",
"Laps": "Vueltas",
- "Lives Per Player": "Vidas por Jugador",
+ "Lives Per Player": "Vidas Por Jugador",
"Long": "Largo",
"Longer": "Más Largo",
- "Mine Spawning": "Regenerar Minas",
+ "Mine Spawning": "Aparecer Minas",
"No Mines": "Sin Minas",
"None": "Ninguno",
"Normal": "Normal",
"Pro Mode": "Modo Pro",
- "Respawn Times": "Tiempo de Reaparición",
+ "Respawn Times": "Tiempo De Reaparición",
"Score to Win": "Puntos para Ganar",
"Short": "Corto",
"Shorter": "Más Corto",
- "Solo Mode": "Modo de Un Jugador",
- "Target Count": "Número de Objetivos",
- "Time Limit": "Límite de Tiempo"
+ "Solo Mode": "Modo Solo",
+ "Target Count": "Número De Objetivos",
+ "Time Limit": "Límite De Tiempo"
},
"statements": {
- "${TEAM} is disqualified because ${PLAYER} left": "El equipo ${TEAM} ha sido descalificado porque ${PLAYER} se ha ido.",
+ "${TEAM} is disqualified because ${PLAYER} left": "${TEAM} ha sido descalificado porque ${PLAYER} se ha ido",
"Killing ${NAME} for skipping part of the track!": "¡Matando a ${NAME} por saltarse un pedazo de la pista!",
- "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Advertencia para ${NAME}: turbo / El spameo de botones te noqueará."
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Advertencia para ${NAME}: turbo / spam de botones te noqueará."
},
"teamNames": {
"Bad Guys": "Chicos Malos",
@@ -1816,55 +1850,55 @@
"Red": "Rojo"
},
"tips": {
- "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Un 'corre-salta-gira-golpea' puede destrozar de un solo impacto\ny ganarte el respeto de tus amigos para toda la vida.",
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Un corre-salta-gira-golpea perfecto puede destrozar de un solo impacto\ny ganarte el respeto de tus amigos para toda la vida.",
"Always remember to floss.": "Siempre acuérdate de cepillar tus dientes.",
"Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Crea perfiles para ti y tus amigos con nombres\ny colores personalizados en vez de usar aleatorios.",
"Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Las cajas de maldición te convierten en una bomba de tiempo.\nLa única cura es agarrar rápidamente un botiquín.",
- "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "A pesar de su apariencia, las habilidades de todos los personajes\nson idénticas, así que escoge el que más se parezca a ti.",
- "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "No te pongas demasiado engreído(a) con ese escudo de energía; todavía puedes caerte de un acantilado.",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "A pesar de sus apariencias, las habilidades de todos los personajes\nson idénticas, así que escoge el que más se parezca a ti.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "No eres invencible con ese electro-escudo; todavía puedes caerte de un acantilado.",
"Don't run all the time. Really. You will fall off cliffs.": "No corras todo el tiempo. En serio. Te vas a caer.",
"Don't spin for too long; you'll become dizzy and fall.": "No gires por un largo tiempo; puedes marearte y caer.",
- "Hold any button to run. (Trigger buttons work well if you have them)": "Sostén cualquier botón para correr. (Los botones de gatillo son para eso)",
- "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Mantén pulsado cualquier botón para correr. Llegarás a lugares rápido\npero no girarás muy bien, así que ten cuidado con los acantilados.",
- "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Las Bombas de hielo no son muy potentes, pero congelan lo\nque toquen, dejando a tus enemigos vulnerables a romperse.",
- "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Si alguien te levanta, golpéalos y ellos te soltarán.\nTambién funciona en la vida real.",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Mantén cualquier botón para correr. (Los botones de gatillo son para eso)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Mantén pulsado cualquier botón para correr. Llegarás a lugares más rápido\npero no girarás muy bien, así que ten cuidado con los acantilados.",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Las Bombas de Hielo no son muy potentes, pero congelan lo\nque toquen, dejando a tus enemigos vulnerables a romperse.",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Si alguien te recoge, dale un golpe y te soltará.\nTambién funciona en la vida real.",
"If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Si no tienes suficientes controles, instala la aplicación '${REMOTE_APP_NAME}'\nen tus dispositivos móviles para utilizarlos como controles.",
"If you are short on controllers, install the 'BombSquad Remote' app\non your iOS or Android devices to use them as controllers.": "Te faltan controles? Instala la aplicación 'BombSquad Remote'\nen tu dispositivo iOS o Android para usarlo como control.",
- "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Si te adhieres a una bomba pegajosa, salta y da muchas vueltas. Es posible que sacudas\nla bomba pegada, o sin nada más, tus últimos momentos serán entretenidos.",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Si te adhieres a una bomba pegajosa, salta y da muchas vueltas. Es posible que sacudas\nla bomba pegada o sin nada más tus últimos momentos serán entretenidos.",
"If you kill an enemy in one hit you get double points for it.": "Si matas a un enemigo de un solo golpe obtendrás puntos dobles.",
"If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Si tomaste una maldición, tu única esperanza es\nencontrar un botiquín en tus últimos segundos.",
"If you stay in one place, you're toast. Run and dodge to survive..": "Si te quedas quieto, estás frito. Corre y esquiva para sobrevivir...",
"If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Si tienes muchos jugadores yendo y viniendo, activa 'expulsar jugadores inactivos'\nen ajustes en caso de que alguien se olvide de abandonar el juego.",
- "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Si tu dispositivo se pone caliente o te gustaría conservar batería,\nbaja los \"Visuales\" o \"Resolución\" en configuración->Gráficos",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Si tu dispositivo se pone caliente o te gustaría conservar batería,\nbaja los \"Visuales\" o \"Resolución\" en Configuración->Gráficos",
"If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Si la imagen va lenta, intenta reducir la resolución\no los visuales en los ajustes gráficos del juego.",
"In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "En Captura la Bandera, la tuya debe estar en tu base para que anotes.\nSi el otro equipo está a punto de anotar, el arrebatar su bandera evitará que lo hagan.",
"In hockey, you'll maintain more speed if you turn gradually.": "En hockey, mantendrás tu impulso si giras gradualmente.",
- "It's easier to win with a friend or two helping.": "Es más fácil ganar con un amigo.",
- "Jump just as you're throwing to get bombs up to the highest levels.": "Salta antes de lanzar una bomba para que alcance lugares altos.",
- "Land-mines are a good way to stop speedy enemies.": "Las minas terrestres son una buena manera para detener a los enemigos veloces.",
+ "It's easier to win with a friend or two helping.": "Es más fácil ganar con un amigo o dos ayudando.",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "Salta antes de tirar una bomba para que alcance lugares altos.",
+ "Land-mines are a good way to stop speedy enemies.": "Las minas-terrestres son una buena manera para detener enemigos veloces.",
"Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Muchas cosas se pueden recoger y lanzar, incluyendo a otros jugadores.\nArroja a tus enemigos por los precipicios. Te sentirás mejor.",
"No, you can't get up on the ledge. You have to throw bombs.": "No, no puedes subir a la cornisa. Tienes que lanzar bombas.",
- "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Jugadores pueden unirse e irse en medio de casi todos los juegos,\ntambién puedes poner o quitar controles en cualquier momento.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Los jugadores pueden unirse e irse en medio de casi todos los juegos,\ntambién puedes poner o quitar controles en cualquier momento.",
"Players can join and leave in the middle of most games,\nand you can also plug and unplug gamepads on the fly.": "Los jugadores pueden unirse y abandonar en el transcurso del juego,\ny también puedes conectar y desconectar controles cuando quieras.",
"Powerups only have time limits in co-op games.\nIn teams and free-for-all they're yours until you die.": "Los poderes sólo tienen tiempo límite en juego cooperativo.\nEn los equipos y Pelea libre son tuyos hasta que seas eliminado.",
- "Practice using your momentum to throw bombs more accurately.": "Practica con tu impulso para lanzar bombas con más precisión.",
- "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Tus golpes harán más daño dependiendo de que tan rápido tus puños se muevan,\nasí que intenta correr, saltar, y girar como un loco.",
- "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Corre de un lado a otro antes de lanzar una\nbomba de 'latigazo' para lanzarla lejos.",
+ "Practice using your momentum to throw bombs more accurately.": "Practica usando tu impulso para tirar bombas con más precisión.",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Los golpes hacen más daño cuanto más rápido se mueven tus puños,\nasí que intenta correr, saltar, y girar como un loco.",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Corre de un lado a otro antes de lanzar una\nbomba para 'latiguearla' y lanzarla lejos.",
"Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Elimina un gran cantidad de enemigos\nal detonar una bomba cerca de una caja TNT.",
"The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "La cabeza es la zona más vulnerable, una bomba pegajosa\na la cabeza usualmente significa game-over.",
"This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Este nivel no tiene fin, pero un alto puntaje aquí\nte hará ganar el respeto eterno por todo el mundo.",
"Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "La fuerza de tiro se basa en la dirección que estás sosteniendo.\nPara arrojar algo justo delante de ti, no sostengas ninguna dirección.",
"Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "¿Cansado de la pista de audio? ¡Reemplázala con tu música!\nVe a Ajustes->Audio->Banda Sonora",
- "Try 'Cooking off' bombs for a second or two before throwing them.": "'Cocina tus Bombas' por un segundo o dos antes de tirarlas.",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Intenta 'Cocinar' bombas por un segundo o dos antes de tirarlas.",
"Try tricking enemies into killing eachother or running off cliffs.": "Engaña a tus enemigos para que se eliminen entre sí o para que corran a los acantilados.",
- "Use the pick-up button to grab the flag < ${PICKUP} >": "Usa el botón de 'levantar' para llevar la bandera < ${PICKUP} >",
- "Whip back and forth to get more distance on your throws..": "Bate de un lado a otro para tirar las bombas más lejos..",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "Usa el botón de 'recoger' para agarrar la bandera < ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "Azota de un lado a otro para conseguir más distancia en tus tiros..",
"You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Puedes 'dirigir' tus golpes girando a la izquierda o derecha. Esto\nes útil para tirar a los enemigos al vacío o para anotar en el hockey.",
- "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Puedes juzgar si una bomba va a explotar según el color de\nlas chispas de la mecha: amarillo...naranja...rojo...¡BUM!",
- "You can throw bombs higher if you jump just before throwing.": "Puedes lanzar bombas más alto si saltas justo antes de tirarlas.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Puedes juzgar si una bomba va a explotar basado en el \ncolor de las chispas de su mecha: amarillo...naranja...rojo...¡BUM!",
+ "You can throw bombs higher if you jump just before throwing.": "Puedes tirar bombas más alto si saltas justo antes de tirarlas.",
"You don't need to edit your profile to change characters; Just press the top\nbutton (pick-up) when joining a game to override your default.": "No necesitas editar tu perfil para cambiar de personaje; sólo presiona el botón\nsuperior (levantar) cuando te unas a un partido para cambiar el predeterminado.",
- "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Te haces daño si golpeas tu cabeza contra cosas, así\nque trata de no golpear tu cabeza contra cosas.",
- "Your punches do much more damage if you are running or spinning.": "Tus golpes harán mucho más impacto si estás corriendo o girando."
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Te haces daño si golpeas tu cabeza contra cosas, \nasí que trata de no golpear tu cabeza contra cosas.",
+ "Your punches do much more damage if you are running or spinning.": "Tus golpes hacen mucho más daño si estás corriendo o girando."
}
},
"trialPeriodEndedText": "Tu periodo de prueba se terminó. ¿Deseas\ncomprar BombSquad y seguir jugando?",
@@ -1875,102 +1909,107 @@
"cpuBenchmarkText": "Corriendo tutorial en velocidad ridícula (pruebas de velocidad de CPU)",
"phrase01Text": "¡Hey, hola!",
"phrase02Text": "¡Bienvenido a ${APP_NAME}!",
- "phrase03Text": "Aquí van unos consejos para manejar a tu personaje:",
+ "phrase03Text": "Aquí van algunos consejos para controlar tu personaje:",
"phrase04Text": "Muchas cosas en ${APP_NAME} se basan en FÍSICAS.",
- "phrase05Text": "Por ejemplo, cuando pegas un puñetazo...",
- "phrase06Text": "...el daño se basa en la velocidad de tus puños.",
- "phrase07Text": "¿Has visto? No nos estábamos moviendo, por eso casi \nno hemos hecho daño a ${NAME}.",
- "phrase08Text": "Ahora, saltemos y giremos para conseguir más velocidad.",
- "phrase09Text": "Ah, eso está mejor.",
+ "phrase05Text": "Por ejemplo, cuando golpeas...",
+ "phrase06Text": "..el daño se basa en la velocidad de tus puños.",
+ "phrase07Text": "¿Ves? No nos estábamos moviendo, así que eso apenas lastimó a ${NAME}.",
+ "phrase08Text": "Ahora vamos a saltar y girar para conseguir más velocidad.",
+ "phrase09Text": "Ah, mucho mejor.",
"phrase10Text": "Correr también ayuda.",
"phrase11Text": "Mantén pulsado CUALQUIER botón para correr.",
- "phrase12Text": "Para dar superpuñetazos, prueba a correr Y girar.",
- "phrase13Text": "¡Ups! Lo siento por eso, ${NAME}.",
- "phrase14Text": "Puedes coger y lanzar cosas como banderas... o ${NAME}s.",
+ "phrase12Text": "Para golpes extra-asombrosos, intenta correr Y girar.",
+ "phrase13Text": "Ups; lo siento por eso ${NAME}.",
+ "phrase14Text": "Puedes recoger y lanzar cosas como banderas.. o ${NAME}.",
"phrase15Text": "Por último, hay bombas.",
- "phrase16Text": "Tirar bombas bien requiere práctica.",
- "phrase17Text": "¡Vaya! No ha llegado muy lejos.",
+ "phrase16Text": "Lanzar bombas bien requiere práctica.",
+ "phrase17Text": "¡Auch! No fue un buen tiro.",
"phrase18Text": "Moverte ayuda a lanzarlas más lejos.",
- "phrase19Text": "Saltar te permitirá lanzarlas más alto.",
- "phrase20Text": "Girar también te permitirá hacer lanzamientos más lejanos.",
+ "phrase19Text": "Saltar ayuda a lanzarlas más alto.",
+ "phrase20Text": "\"Latiguea\" tus bombas para hacer lanzamientos aún más lejanos.",
"phrase21Text": "Hacer que exploten donde tú quieres puede ser complicado.",
- "phrase22Text": "Vaya...",
- "phrase23Text": "Probemos a 'cocinarla' dos segundos antes de lanzarla...",
- "phrase24Text": "¡Toma ya! Así es como se hace.",
+ "phrase22Text": "Rayos.",
+ "phrase23Text": "Intentemos \"cocinar\" la mecha por un segundo o dos.",
+ "phrase24Text": "¡Hurra! Así es como se hace.",
"phrase25Text": "Bueno, eso es todo.",
- "phrase26Text": "Ahora, ¡a por ellos, campeón!",
- "phrase27Text": "Recuerda tu entrenamiento, ¡y volverás con vida!",
+ "phrase26Text": "¡Ahora ve por ellos, campeón!",
+ "phrase27Text": "Recuerda tu entrenamiento, ¡y VOLVERÁS con vida!",
"phrase28Text": "...o a lo mejor...",
- "phrase29Text": "¡Buena suerte!",
- "randomName1Text": "Fred",
- "randomName2Text": "Javi",
- "randomName3Text": "Carlos",
- "randomName4Text": "Pablo",
- "randomName5Text": "Nerea",
- "skipConfirmText": "¿Realmente quieres saltar el tutorial? Toca o presiona para confirmar.",
- "skipVoteCountText": "votos para saltarnos el tutorial ${COUNT}/${TOTAL}",
- "skippingText": "saltándonos el tutorial...",
- "toSkipPressAnythingText": "(pulsa cualquier botón para saltarte el tutorial)"
+ "phrase29Text": "¡Buena Suerte!",
+ "randomName1Text": "Federico",
+ "randomName2Text": "Enrique",
+ "randomName3Text": "Guillermo",
+ "randomName4Text": "Carlos",
+ "randomName5Text": "Felipe",
+ "skipConfirmText": "¿Realmente quieres omitir el tutorial? Toca o presiona para confirmar.",
+ "skipVoteCountText": "${COUNT}/${TOTAL} votos para omitir",
+ "skippingText": "omitiendo el tutorial...",
+ "toSkipPressAnythingText": "(pulsa cualquier botón para omitir el tutorial)"
},
- "twoKillText": "¡¡Doble Combo!!",
+ "twoKillText": "¡COMBO DOBLE!",
+ "uiScaleText": "Escala de interfaz de usuario",
"unavailableText": "no disponible",
"unconfiguredControllerDetectedText": "Control desconfigurado detectado:",
"unlockThisInTheStoreText": "Esto debe ser desbloqueado en la tienda.",
"unlockThisProfilesText": "Para crear más de ${NUM} cuentas, necesitas:",
- "unlockThisText": "Para desbloquear esto, tú necesitas:",
- "unsupportedHardwareText": "Lo sentimos, este dispositivo no soporta esta versión del juego.",
+ "unlockThisText": "Para desbloquear esto, necesitas:",
+ "unsupportedControllerText": "Lo sentimos, el controlador \"${NAME}\" no es compatible.",
+ "unsupportedHardwareText": "Disculpe, este dispositivo no soporta esta compilación del juego.",
"upFirstText": "A continuación:",
- "upNextText": "A continuación en juego ${COUNT}:",
+ "upNextText": "A continuación en el juego ${COUNT}:",
"updatingAccountText": "Actualizando tu cuenta...",
"upgradeText": "Mejorar",
"upgradeToPlayText": "Desbloquea \"${PRO}\" en la tienda para jugar esto.",
- "useDefaultText": "Usar botón por defecto",
+ "useDefaultText": "Usar Por Defecto",
+ "userSystemScriptsCreateText": "Crear scripts del sistema de usuario",
+ "userSystemScriptsDeleteText": "Eliminar scripts del sistema de usuario",
"usesExternalControllerText": "Este juego usa un control externo como entrada.",
- "usingItunesText": "Usando la aplicación de música para la banda sonora...",
+ "usingItunesText": "Usando Aplicación De Música para la banda sonora...",
"usingItunesTurnRepeatAndShuffleOnText": "Asegúrate de que mezclar esté ENCENDIDO y repetir TODOS esté activado en iTunes.",
- "v2AccountLinkingInfoText": "Para vincular las cuentas V2, utilice el botón \"Administrar cuenta\".",
+ "v2AccountLinkingInfoText": "Para vincular cuentas V2, usa el botón \"Administrar Cuenta\".",
"validatingBetaText": "Validando Beta…",
- "validatingTestBuildText": "Validando versión de prueba...",
+ "validatingTestBuildText": "Validando Compilación De Prueba...",
+ "viaText": "a través de",
"victoryText": "¡Victoria!",
"voteDelayText": "No puedes iniciar otra votación por ${NUMBER} segundos.",
"voteInProgressText": "Ya hay una votación en progreso.",
- "votedAlreadyText": "Ya has votado.",
- "votesNeededText": "Se requiere ${NUMBER} votos",
+ "votedAlreadyText": "Ya votaste",
+ "votesNeededText": "${NUMBER} votos necesarios",
"vsText": "vs.",
"waitingForHostText": "(esperando a que ${HOST} continúe)",
"waitingForLocalPlayersText": "Esperando jugadores locales...",
- "waitingForPlayersText": "esperando a jugadores para unirse...",
- "waitingInLineText": "Esperando en línea (la fiesta está llena)...",
+ "waitingForPlayersText": "esperando jugadores para unirse...",
+ "waitingInLineText": "Esperando en línea (la partida está llena)...",
"watchAVideoText": "Ver un Vídeo",
- "watchAnAdText": "Mira un Anuncio",
+ "watchAnAdText": "Ver un Anuncio",
"watchWindow": {
"deleteConfirmText": "¿Borrar \"${REPLAY}\"?",
"deleteReplayButtonText": "Borrar\nRepetición",
"myReplaysText": "Mis Repeticiones",
"noReplaySelectedErrorText": "Ninguna Repetición Seleccionada",
- "playbackSpeedText": "Velocidad de reproducción: ${SPEED}",
+ "playbackSpeedText": "Velocidad De Reproducción: ${SPEED}",
"renameReplayButtonText": "Renombrar\nRepetición",
"renameReplayText": "Renombrar \"${REPLAY}\" a:",
"renameText": "Renombrar",
"replayDeleteErrorText": "Error borrando la repetición.",
- "replayNameText": "Nombre de la Repetición",
+ "replayNameText": "Nombre De Repetición",
"replayRenameErrorAlreadyExistsText": "Una repetición con ese nombre ya existe.",
- "replayRenameErrorInvalidName": "No se puede renombrar la repetición: Nombre inválido.",
+ "replayRenameErrorInvalidName": "No se puede renombrar la repetición; nombre inválido.",
"replayRenameErrorText": "Error renombrando repetición.",
"sharedReplaysText": "Repeticiones Compartidas",
"titleText": "Ver",
"watchReplayButtonText": "Ver\nRepetición"
},
- "waveText": "Horda",
- "wellSureText": "¡Pues claro!",
- "whatIsThisText": "Qué es esto?",
+ "waveText": "Oleada",
+ "wellSureText": "¡Pues Claro!",
+ "whatIsThisText": "¿Qué es esto?",
"wiimoteLicenseWindow": {
"titleText": "Marca registrada DarwiinRemote"
},
"wiimoteListenWindow": {
"listeningText": "Esperando controles Wii...",
"pressText": "Presiona los botones 1 y 2 simultáneamente.",
- "pressText2": "En controles Wii más nuevos con Motion Plus integrado, pulsa mejor el botón 'sinc' rojo en la parte trasera.",
+ "pressText2": "En controles Wii más nuevos con Motion Plus integrado, pulsa mejor el botón 'sync' rojo en la parte trasera.",
"pressText2Scale": 0.55,
"pressTextScale": 1.0
},
@@ -1978,31 +2017,31 @@
"copyrightText": "Marca registrada DarwiinRemote",
"copyrightTextScale": 0.6,
"listenText": "Escuchar",
- "macInstructionsText": "Asegúrate de que tu Wii esté apagado y el Bluetooth esté activado en\ntu Mac, a continuación, pulsa 'Escuchar'. El Soporte para controles\nWii puede ser un poco extraño, así que puede que tengas que\nprobar un par de veces antes de obtener una conexión.\n\nEl Bluetooth puede procesar hasta 7 dispositivos conectados,\naunque tu kilometraje puede variar.\n\nBombSquad es compatible con los Controles Wii originales,\nNunchuks, y el Control Clásico.\nEl nuevo Control Wii Plus también funciona\npero sin accesorios.",
+ "macInstructionsText": "Asegúrate de que tu Wii esté apagado y el Bluetooth esté activado en\ntu Mac, a continuación, pulsa 'Escuchar'. El Soporte para controles\nWii puede ser un poco extraño, así que puede que tengas que\nprobar un par de veces antes de obtener una conexión.\n\nEl Bluetooth puede procesar hasta 7 dispositivos conectados,\naunque tu kilometraje puede variar.\n\nBombSquad es compatible con los Controles Wii originales,\nNunchuks y el Control Clásico.\nEl nuevo Control Wii Plus también funciona\npero sin accesorios.",
"macInstructionsTextScale": 0.7,
"thanksText": "Gracias al equipo DarwiinRemote\nPor hacer esto posible.",
"thanksTextScale": 0.8,
"titleText": "Configuración Wii"
},
"winsPlayerText": "¡${NAME} Gana!",
- "winsTeamText": "¡${NAME} Gana!!",
+ "winsTeamText": "¡${NAME} Gana!",
"winsText": "¡${NAME} Gana!",
"workspaceSyncErrorText": "Error al sincronizar ${WORKSPACE}. Mira el registro para más detalles.",
"workspaceSyncReuseText": "No se puede sincronizar ${WORKSPACE}. Reusando la versión sincronizada anterior.",
- "worldScoresUnavailableText": "Puntuaciones globales no disponibles.",
- "worldsBestScoresText": "Mejores puntuaciones Mundiales",
- "worldsBestTimesText": "Mejores tiempos Mundiales",
+ "worldScoresUnavailableText": "Puntuaciones mundiales no disponibles.",
+ "worldsBestScoresText": "Mejores Puntuaciones Mundiales",
+ "worldsBestTimesText": "Mejores Tiempos Mundiales",
"xbox360ControllersWindow": {
- "getDriverText": "Obtener Driver",
+ "getDriverText": "Obtener Controlador",
"macInstructions2Text": "Para usar controles inalámbricos, necesitarás el receptor que\nviene con el 'Control de Xbox 360 para Windows'.\nUn receptor te permite conectar hasta cuatro controles.\n\nImportante: Receptores de tercera mano no funcionarán con este controlador;\nasegúrate de que tu receptor tenga el logo de 'Microsoft', no 'XBOX 360'.\nMicrosoft ya no vende receptores por separado, por lo que necesitarás\nel que venía con el control, o si no tendrás que buscar uno por internet.\n\nSi encuentras que esto fue útil, por favor considera donar\nal desarrollador del controlador en su sitio de internet.",
"macInstructions2TextScale": 0.76,
"macInstructionsText": "Para usar controles de Xbox 360, necesitarás instalar\nel controlador para Mac disponible en el siguiente enlace.\nFunciona con controles con cable e inalámbricos.",
"macInstructionsTextScale": 0.8,
"ouyaInstructionsText": "Para usar controles con cable de Xbox 360 con BombSquad, simplemente\nconéctalos al puerto USB de tu dispositivo. Puedes usar un conector USB\npara conectar múltiples controles.\n\nPara usar controles inalámbricos, necesitarás un receptor inalámbrico,\ndisponible como parte del paquete “Xbox 360 wireless Controller for\nWindows”, o vendido por separado. Cada receptor se conecta a un puerto\nUSB y permite que conectes hasta cuatro controles inalámbricos.",
"ouyaInstructionsTextScale": 0.8,
- "titleText": "Controles de Xbox 360 con ${APP_NAME}:"
+ "titleText": "Usando Controles de Xbox 360 con ${APP_NAME}:"
},
- "yesAllowText": "¡Sí, permítelo!",
- "yourBestScoresText": "Tus Mejores Puntuaciones",
+ "yesAllowText": "¡Sí, Permitir!",
+ "yourBestScoresText": "Tus Mejores Puntajes",
"yourBestTimesText": "Tus Mejores Tiempos"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/spanishlatinamerica.json b/dist/ba_data/data/languages/spanishlatinamerica.json
new file mode 100644
index 00000000..e162342e
--- /dev/null
+++ b/dist/ba_data/data/languages/spanishlatinamerica.json
@@ -0,0 +1,1980 @@
+{
+ "accountSettingsWindow": {
+ "accountNameRules": "Los nombres de las cuentas no pueden tener emojis o otros caracteres especiales",
+ "accountsText": "Cuentas",
+ "achievementProgressText": "Logros: ${COUNT} de ${TOTAL}",
+ "campaignProgressText": "Progreso de la Campaña [Difícil]: ${PROGRESS}",
+ "changeOncePerSeason": "Solo puedes cambiar esto una vez por temporada.",
+ "changeOncePerSeasonError": "Debes esperar hasta la siguiente temporada para cambiar esto de nuevo (en ${NUM} día/s)",
+ "createAnAccountText": "Crear una Cuenta",
+ "customName": "Nombre Personalizado",
+ "deleteAccountText": "Eliminar Cuenta",
+ "googlePlayGamesAccountSwitchText": "Si quieres usar una cuenta de Google diferente,\nusa la app Google Play Juegos para cambiarla.",
+ "linkAccountsEnterCodeText": "Introducir Código",
+ "linkAccountsGenerateCodeText": "Generar Código",
+ "linkAccountsInfoText": "(comparta el progreso a través de diferentes plataformas)",
+ "linkAccountsInstructionsNewText": "Para vincular dos cuentas, genera un código en la primera \ne introduzca ese código en la segunda. Los datos de \nla segunda cuenta serán compartidos entre ambos.\n(Los datos de la primera cuenta se perderán).\n\nPuedes vincular hasta ${COUNT} cuentas.\n\nIMPORTANTE: Solo vincula cuentas tuyas; \nSi vinculas cuentas de tus amigos no serán \ncapaces de jugar en línea al mismo tiempo.",
+ "linkAccountsText": "Vincular Cuentas",
+ "linkedAccountsText": "Cuentas Vinculadas:",
+ "manageAccountText": "Administrar Cuenta",
+ "nameChangeConfirm": "¿Quieres cambiar El nombre de tu cuenta A ${NAME}?",
+ "resetProgressConfirmNoAchievementsText": "Esto reiniciará tu progreso en el modo cooperativo y \ntus puntuaciones locales (a excepción de tus boletos).\nEsto no puede deshacerse. ¿Estás seguro?",
+ "resetProgressConfirmText": "Esto reiniciará tu progreso en el modo cooperativo, \nlogros y puntuaciones locales (pero, no tus tickets).\nLos cambios no se pueden deshacer.\n¿Estás seguro?",
+ "resetProgressText": "Reiniciar Progreso",
+ "setAccountName": "Establecer Nombre de Cuenta",
+ "setAccountNameDesc": "Selecciona el nombre a mostrar para tu cuenta. \nPuedes usar el nombre de tu cuenta asociada\no crear un nombre único personalizado.",
+ "signInInfoText": "Inicia sesión para obtener boletos, competir en línea\ny compartir tu progreso a través de tus dispositivos.",
+ "signInText": "Iniciar Sesión",
+ "signInWithAnEmailAddressText": "Iniciar sesión con correo electronico",
+ "signInWithDeviceInfoText": "(una cuenta automática disponible únicamente en este dispositivo)",
+ "signInWithDeviceText": "Iniciar sesión con cuenta del dispositivo",
+ "signInWithText": "Iniciar sesion con ${SERVICE}",
+ "signInWithV2InfoText": "(una cuenta que funciona en todas las plataformas)",
+ "signInWithV2Text": "Iniciar sesión con una cuenta de ${APP_NAME}",
+ "signOutText": "Cerrar Sesión",
+ "signingInText": "Iniciando sesión...",
+ "signingOutText": "Cerrando sesión...",
+ "ticketsText": "Boletos: ${COUNT}",
+ "titleText": "Cuenta",
+ "unlinkAccountsInstructionsText": "Selecciona una cuenta para desvincular",
+ "unlinkAccountsText": "Desvincular Cuentas",
+ "unlinkLegacyV1AccountsText": "Desvincular Cuentas (V1) Heredadas",
+ "v2LinkInstructionsText": "Usa este enlace para crear una cuenta o para iniciar sesión.",
+ "viaAccount": "(cuenta vía ${NAME})",
+ "youAreSignedInAsText": "Has iniciado sesión como:"
+ },
+ "achievementChallengesText": "Desafios de los Logros",
+ "achievementText": "Logro",
+ "achievements": {
+ "Boom Goes the Dynamite": {
+ "description": "Mata a 3 chicos malos con TNT",
+ "descriptionComplete": "Mató a 3 chicos malos con TNT",
+ "descriptionFull": "Mata a 3 chicos malos con TNT en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 3 chicos malos con TNT en ${LEVEL}",
+ "name": "La Dinamita Hace Boom"
+ },
+ "Boxer": {
+ "description": "Gana sin usar bombas",
+ "descriptionComplete": "Ganó sin usar bombas",
+ "descriptionFull": "Completa ${LEVEL} sin usar bombas",
+ "descriptionFullComplete": "Completó ${LEVEL} sin usar bombas",
+ "name": "Boxeador"
+ },
+ "Dual Wielding": {
+ "descriptionFull": "Conecta 2 controles (de hardware o aplicación)",
+ "descriptionFullComplete": "Conectó 2 controles (de hardware o aplicación)",
+ "name": "Doble Empuñadura"
+ },
+ "Flawless Victory": {
+ "description": "Gana sin ser lastimado",
+ "descriptionComplete": "Ganó sin ser lastimado",
+ "descriptionFull": "Gana ${LEVEL} sin ser lastimado",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin ser golpeado",
+ "name": "Victoria Impecable"
+ },
+ "Free Loader": {
+ "descriptionFull": "Empieza un juego de Todos-Contra-Todos con 2 o más jugadores",
+ "descriptionFullComplete": "Empezó un juego de Todos-Contra-Todos con 2 o más jugadores",
+ "name": "Cargador Libre"
+ },
+ "Gold Miner": {
+ "description": "Mata a 6 chicos malos con minas terrestres",
+ "descriptionComplete": "Mató a 6 chicos malos con minas terrestres",
+ "descriptionFull": "Mata a 6 chicos malos con minas terrestres en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 6 chicos malos con minas terrestres en ${LEVEL}",
+ "name": "Minero de Oro"
+ },
+ "Got the Moves": {
+ "description": "Gana sin usar golpes ni bombas",
+ "descriptionComplete": "Ganó sin usar golpes ni bombas",
+ "descriptionFull": "Gana ${LEVEL} sin golpes ni bombas",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin golpes ni bombas",
+ "name": "Tengo los Movimientos"
+ },
+ "In Control": {
+ "descriptionFull": "Conecta un control (de hardware o aplicación)",
+ "descriptionFullComplete": "Conectó un control. (de hardware o aplicación)",
+ "name": "En Control"
+ },
+ "Last Stand God": {
+ "description": "Anota 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
+ "descriptionFull": "Anota 1000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Dios de la guerra En ${LEVEL}"
+ },
+ "Last Stand Master": {
+ "description": "Anota 250 puntos",
+ "descriptionComplete": "Anotó 250 puntos",
+ "descriptionFull": "Anota 250 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 250 puntos en ${LEVEL}",
+ "name": "Maestro de ${LEVEL}"
+ },
+ "Last Stand Wizard": {
+ "description": "Anota 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
+ "descriptionFull": "Anota 500 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Mago de ${LEVEL}"
+ },
+ "Mine Games": {
+ "description": "Mata a 3 chicos malos con minas terrestres",
+ "descriptionComplete": "Mató a 3 chicos malos con minas terrestres",
+ "descriptionFull": "Mata a 3 chicos malos con minas terrestres en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 3 chicos con minas terrestres en ${LEVEL}",
+ "name": "Juegos de Minas"
+ },
+ "Off You Go Then": {
+ "description": "Arroja a 3 chicos malos fuera del mapa",
+ "descriptionComplete": "Arrojó a 3 chicos malos fuera del mapa",
+ "descriptionFull": "Arroja a 3 chicos malos fuera del mapa en ${LEVEL}",
+ "descriptionFullComplete": "Arrojó a 3 chicos malos fuera del mapa en ${LEVEL}",
+ "name": "Te Vas Abajo Entonces"
+ },
+ "Onslaught God": {
+ "description": "Anota 5000 puntos",
+ "descriptionComplete": "Anotó 5000 puntos",
+ "descriptionFull": "Anota 5000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 5000 puntos en ${LEVEL}",
+ "name": "Dios de La ${LEVEL}"
+ },
+ "Onslaught Master": {
+ "description": "Anota 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
+ "descriptionFull": "Anota 500 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Maestro de La ${LEVEL}"
+ },
+ "Onslaught Training Victory": {
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Derroto todas las oleadas.",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Onslaught Wizard": {
+ "description": "Anota 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
+ "descriptionFull": "Anota 1000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Mago de La ${LEVEL}"
+ },
+ "Precision Bombing": {
+ "description": "Gana sin potenciadores",
+ "descriptionComplete": "Ganó sin potenciadores",
+ "descriptionFull": "Gana ${LEVEL} sin potenciadores",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin potenciadores",
+ "name": "Bombardeo con Precisión"
+ },
+ "Pro Boxer": {
+ "description": "Gana sin usar bombas",
+ "descriptionComplete": "Ganó sin usar bombas",
+ "descriptionFull": "Completa ${LEVEL} sin usar bombas",
+ "descriptionFullComplete": "Completó ${LEVEL} sin usar bombas",
+ "name": "Boxeador Profesional"
+ },
+ "Pro Football Shutout": {
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo en ${LEVEL}"
+ },
+ "Pro Football Victory": {
+ "description": "Gana el partido",
+ "descriptionComplete": "Ganó el partido",
+ "descriptionFull": "Gana el partido en ${LEVEL}",
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Pro Onslaught Victory": {
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas de ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas de ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Pro Runaround Victory": {
+ "description": "Completa todas las oleadas",
+ "descriptionComplete": "Completó todas las oleadas",
+ "descriptionFull": "Completa todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Completó todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Rookie Football Shutout": {
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo en ${LEVEL}"
+ },
+ "Rookie Football Victory": {
+ "description": "Gana el partido",
+ "descriptionComplete": "Ganó el partido",
+ "descriptionFull": "Gana el partido en ${LEVEL}",
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Rookie Onslaught Victory": {
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Runaround God": {
+ "description": "Anota 2000 puntos",
+ "descriptionComplete": "Anotó 2000 puntos",
+ "descriptionFull": "Anota 2000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 2000 puntos en ${LEVEL}",
+ "name": "Dios de La ${LEVEL}"
+ },
+ "Runaround Master": {
+ "description": "Anota 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
+ "descriptionFull": "Anota 500 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Maestro de La ${LEVEL}"
+ },
+ "Runaround Wizard": {
+ "description": "Anota 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
+ "descriptionFull": "Anota 1000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Mago de La ${LEVEL}"
+ },
+ "Sharing is Caring": {
+ "descriptionFull": "Comparte exitosamente el juego con un amigo",
+ "descriptionFullComplete": "Compartió exitosamente el juego con un amigo",
+ "name": "Compartir es querer."
+ },
+ "Stayin' Alive": {
+ "description": "Gana sin morir",
+ "descriptionComplete": "Ganó sin morir",
+ "descriptionFull": "Gana ${LEVEL} sin morir",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin morir",
+ "name": "Sobreviviendo"
+ },
+ "Super Mega Punch": {
+ "description": "Inflige 100% de daño con un solo golpe",
+ "descriptionComplete": "Infligió 100% de daño con un solo golpe",
+ "descriptionFull": "Inflige 100% de daño con un golpe en ${LEVEL}",
+ "descriptionFullComplete": "Infligió 100% de daño con un golpe en ${LEVEL}",
+ "name": "Súper Mega Golpe"
+ },
+ "Super Punch": {
+ "description": "Inflige 50% de daño con un golpe",
+ "descriptionComplete": "Infligió 50% de daño con un golpe",
+ "descriptionFull": "Inflige 50% de daño con un golpe en ${LEVEL}",
+ "descriptionFullComplete": "Infligió 50% de daño con un golpe en ${LEVEL}",
+ "name": "Súper Golpe"
+ },
+ "TNT Terror": {
+ "description": "Mata a 6 chicos malos con TNT",
+ "descriptionComplete": "Mató a 6 chicos malos con TNT",
+ "descriptionFull": "Mata a 6 chicos malos con TNT en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 6 chicos malos con TNT en ${LEVEL}",
+ "name": "Pirómano"
+ },
+ "Team Player": {
+ "descriptionFull": "Empieza un juego de Equipos con 4 o más jugadores",
+ "descriptionFullComplete": "Empezó un juego de Equipos con 4 o más jugadores",
+ "name": "Jugador de Equipo"
+ },
+ "The Great Wall": {
+ "description": "Detén a cada uno de los chicos malos",
+ "descriptionComplete": "Detuvo a cada uno de los chicos malos",
+ "descriptionFull": "Detén a cada uno de los chicos malos en ${LEVEL}",
+ "descriptionFullComplete": "Detuvo a cada uno de los chicos malos en ${LEVEL}",
+ "name": "La Gran Muralla"
+ },
+ "The Wall": {
+ "description": "Detén a cada uno de los chicos malos",
+ "descriptionComplete": "Detuvo a cada uno de los chicos malos",
+ "descriptionFull": "Detén a cada uno de los chicos malos en ${LEVEL}",
+ "descriptionFullComplete": "Detuvo a cada uno de los chicos malos en ${LEVEL}",
+ "name": "La Muralla"
+ },
+ "Uber Football Shutout": {
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo en ${LEVEL}"
+ },
+ "Uber Football Victory": {
+ "description": "Gana el partido",
+ "descriptionComplete": "Ganó el partido",
+ "descriptionFull": "Gana el partido en ${LEVEL}",
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Uber Onslaught Victory": {
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Uber Runaround Victory": {
+ "description": "Completa todas las oleadas",
+ "descriptionComplete": "Completó todas las oleadas",
+ "descriptionFull": "Completa todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Completó todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ }
+ },
+ "achievementsRemainingText": "Logros Restantes:",
+ "achievementsText": "Logros",
+ "achievementsUnavailableForOldSeasonsText": "Disculpe, los logros específicos no están disponibles para temporadas anteriores.",
+ "activatedText": "${THING} activado.",
+ "addGameWindow": {
+ "getMoreGamesText": "Obtener Más Juegos...",
+ "titleText": "Agregar Juego"
+ },
+ "addToFavoritesText": "Agregar a Favoritos",
+ "addedToFavoritesText": "'${NAME}' añadido a Favoritos.",
+ "allText": "Todo",
+ "allowText": "Permitir",
+ "alreadySignedInText": "Tu cuenta está registrada en otro dispositivo;\npor favor cambia de cuentas o cierra el juego en tu \notro dispositivo e inténtalo de nuevo.",
+ "apiVersionErrorText": "No se puede cargar el módulo ${NAME}; este apunta a la versión-api ${VERSION_USED}; necesitamos ${VERSION_REQUIRED}.",
+ "applyText": "Aplicar",
+ "areYouSureText": "¿Estás seguro/a?",
+ "audioSettingsWindow": {
+ "headRelativeVRAudioInfoText": "(\"Auto\" se activa solo cuando los audífonos estan conectados)",
+ "headRelativeVRAudioText": "Audio RV Relativo a la Cabeza",
+ "musicVolumeText": "Volumen de la Música",
+ "soundVolumeText": "Volumen del Sonido",
+ "soundtrackButtonText": "Bandas Sonoras",
+ "soundtrackDescriptionText": "(usa tu propia música para reproducir durante los juegos)",
+ "titleText": "Audio"
+ },
+ "autoText": "Auto",
+ "backText": "Atrás",
+ "banThisPlayerText": "Banear a Este Jugador",
+ "bestOfFinalText": "Final Mejor-de-${COUNT}",
+ "bestOfSeriesText": "Mejor de ${COUNT} series:",
+ "bestRankText": "Tu mejor rango es #${RANK}",
+ "bestRatingText": "Tu mejor clasificación es ${RATING}",
+ "bombBoldText": "BOMBA",
+ "bombText": "Bomba",
+ "boostText": "Potenciar",
+ "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} se configura en la propia aplicación.",
+ "buttonText": "botón",
+ "canWeDebugText": "¿Te gustaría que ${APP_NAME} reporte errores, fallos internos\ne información básica de uso al desarrollador de forma automática?\n\nDicha informacíon no incluirá datos personales y ayudará a\nmantener el juego funcionando sin contratiempos ni problemas.",
+ "cancelText": "Cancelar",
+ "cantConfigureDeviceText": "Lo sentimos, ${DEVICE} no es configurable.",
+ "challengeEndedText": "Este desafío ha terminado.",
+ "chatMuteText": "Silenciar Chat",
+ "chatMutedText": "Chat Silenciado",
+ "chatUnMuteText": "Desilenciar Chat",
+ "chests": {
+ "prizeOddsText": "Posibles Premios",
+ "reduceWaitText": "Reducir Espera",
+ "slotDescriptionText": "Esta ranura puede contener un cofre.\n\nGana cofres al jugar niveles del modo campaña,\nposicionándote en torneos y completando\nlogros.",
+ "slotText": "${NUM} Ranura de Cofre",
+ "slotsFullWarningText": "ADVERTENCIA: Tus espacios de cofres están llenos.\nCualquier cofre ganado en esta partida, será perdido.",
+ "unlocksInText": "Se desbloquea en:"
+ },
+ "choosingPlayerText": "",
+ "claimText": "Reclamar",
+ "codesExplainText": "Los códigos son proporcionados por el desarrollador para\ndiagnosticar y corregir problemas de la cuenta.",
+ "completeThisLevelToProceedText": "¡Debes completar\neste nivel para avanzar!",
+ "completionBonusText": "Bono por Completar",
+ "configControllersWindow": {
+ "configureControllersText": "Configurar Controles",
+ "configureKeyboard2Text": "Configurar Teclado J2",
+ "configureKeyboardText": "Configurar Teclado",
+ "configureMobileText": "Dispositivos Móviles como Controles",
+ "configureTouchText": "Configurar Pantalla Táctil",
+ "ps3Text": "Controles de PS3",
+ "titleText": "Controles",
+ "wiimotesText": "Wiimotes",
+ "xbox360Text": "Controles de Xbox 360"
+ },
+ "configGamepadSelectWindow": {
+ "androidNoteText": "Nota: el soporte de los controles varía según el dispositivo y la versión de Android.",
+ "pressAnyButtonText": "Pulsa cualquier botón en el control\n que desees configurar...",
+ "titleText": "Configurar Controles"
+ },
+ "configGamepadWindow": {
+ "advancedText": "Avanzado",
+ "advancedTitleText": "Configuración Avanzada del Control",
+ "analogStickDeadZoneDescriptionText": "(súbelo si tu personaje 'derrapa' cuando sueltas la palanca)",
+ "analogStickDeadZoneText": "Zona Muerta de La Palanca Analógica",
+ "appliesToAllText": "(aplica a todos los controles de este tipo)",
+ "autoRecalibrateDescriptionText": "(habilita esta opción si tu personaje no se mueve a toda velocidad)",
+ "autoRecalibrateText": "Auto-Recalibrar Palanca Analógica",
+ "axisText": "eje",
+ "clearText": "vaciar",
+ "dpadText": "Flechas del Mando",
+ "extraStartButtonText": "Botón Extra de Inicio",
+ "ifNothingHappensTryAnalogText": "Si no pasa nada, intenta asignar la palanca analógica en cambio.",
+ "ifNothingHappensTryDpadText": "Si no pasa nada, intenta asignar el d-pad en cambio.",
+ "ignoreCompletelyDescriptionText": "(evita que este control este afectando el juego y/o menús)",
+ "ignoreCompletelyText": "Ignorar Completamente",
+ "ignoredButton1Text": "Botón 1 Ignorado",
+ "ignoredButton2Text": "Botón 2 Ignorado",
+ "ignoredButton3Text": "Botón 3 Ignorado",
+ "ignoredButton4Text": "Botón 4 Ignorado",
+ "ignoredButtonDescriptionText": "(usa esto para prevenir que los botones de 'inicio' o 'sincronización' afecten la Interfaz Visual)",
+ "pressAnyAnalogTriggerText": "Presiona cualquier gatillo analógico...",
+ "pressAnyButtonOrDpadText": "Presiona cualquier botón o dpad...",
+ "pressAnyButtonText": "Presiona cualquier botón...",
+ "pressLeftRightText": "Presiona izquierda o derecha...",
+ "pressUpDownText": "Presiona arriba o abajo...",
+ "runButton1Text": "Botón para Correr 1",
+ "runButton2Text": "Botón para Correr 2",
+ "runTrigger1Text": "Gatillo para Correr 1",
+ "runTrigger2Text": "Gatillo para Correr 2",
+ "runTriggerDescriptionText": "(los gatillos analógicos te dejan correr a velocidades distintas)",
+ "secondHalfText": "Utiliza esta opción para configurar\nla segunda mitad de un control 2 en 1\nque se muestre como un solo control.",
+ "secondaryEnableText": "Habilitar",
+ "secondaryText": "Control Secundario",
+ "startButtonActivatesDefaultDescriptionText": "(desactívalo si tu botón de inicio es más bien un botón de 'menú')",
+ "startButtonActivatesDefaultText": "El Botón de Inicio Activa la Función por Defecto",
+ "titleText": "Configurar Control",
+ "twoInOneSetupText": "Configuración de Controles 2 en 1",
+ "uiOnlyDescriptionText": "(evitar que este control se una a un juego)",
+ "uiOnlyText": "Limitar a Uso en Menú",
+ "unassignedButtonsRunText": "Todos los Botones sin Asignar Corren",
+ "unsetText": "",
+ "vrReorientButtonText": "Boton de Reorientación de RV"
+ },
+ "configKeyboardWindow": {
+ "configuringText": "Configurando ${DEVICE}",
+ "keyboard2NoteText": "Nota: la mayoría de teclados sólo pueden registrar algunas\npulsaciones a la vez, así que tener un segundo teclado puede\nfuncionar mejor que un teclado compartido por los 2 jugadores.\nTen en cuenta que todavía necesitas asignar teclas únicas a los\ndos jugadores incluso en ese caso."
+ },
+ "configTouchscreenWindow": {
+ "actionControlScaleText": "Tamaño de Control de Acciones",
+ "actionsText": "Acciones",
+ "buttonsText": "botones",
+ "dragControlsText": "",
+ "joystickText": "palanca",
+ "movementControlScaleText": "Tamaño de Escala de Movimiento",
+ "movementText": "Movimiento",
+ "resetText": "Reiniciar",
+ "swipeControlsHiddenText": "Ocultar Iconos Deslizantes",
+ "swipeInfoText": "Controles del estilo 'Deslizante' toman un poco de practica, pero\nhacen que sea más fácil jugar sin mirar los controles.",
+ "swipeText": "deslizar",
+ "titleText": "Configurar Pantalla Táctil"
+ },
+ "configureDeviceInSystemSettingsText": "${DEVICE} se puede configurar en la aplicación Configuración del Sistema.",
+ "configureItNowText": "Configurar ahora?",
+ "configureText": "Configurar",
+ "connectMobileDevicesWindow": {
+ "amazonText": "Tienda de Amazon (Appstore)",
+ "appStoreText": "App Store",
+ "bestResultsText": "Para mejores resultados necesitas una red inalámbrica rápida. Puedes\nreducir el retraso wifi apagando otros dispositivos inalámbricos,\njugando cerca de tu router inalámbrico y conectando el\njuego anfitrión directamente a la red a través del cable Ethernet.",
+ "explanationText": "Para utilizar tus dispositivos móviles como controles, \ninstala la app \"${REMOTE_APP_NAME}\" en ellos. Todos tus dispositivos \npueden conectarse a un juego de ${APP_NAME} a través de una red Wi-fi, ¡es gratis!.",
+ "forAndroidText": "para Android:",
+ "forIOSText": "para iOS:",
+ "getItForText": "Consigue ${REMOTE_APP_NAME} para iOS en la App Store\no para Android en la Tienda de Google Play o Appstore de Amazon",
+ "googlePlayText": "Google Play",
+ "titleText": "Utilizando Dispositivos como Controles:"
+ },
+ "continuePurchaseText": "¿Continuar por ${PRICE}?",
+ "continueText": "Continuar",
+ "controlsText": "Controles",
+ "coopSelectWindow": {
+ "activenessAllTimeInfoText": "Esto no aplica a las clasificaciones de todo-el-tiempo.",
+ "activenessInfoText": "Este multiplicador aumenta en los días que juegas\ny disminuye cuando no juegas.",
+ "activityText": "Actividad",
+ "campaignText": "Campaña",
+ "challengesInfoText": "Gana premios por completar los mini-juegos.\n\nLos premios y la dificultad de los niveles incrementa\ncada vez que se completa y\ndecrece cuando uno expira o no se cumple.",
+ "challengesText": "Desafíos",
+ "currentBestText": "Mejor Actualmente",
+ "customText": "Personalizado",
+ "entryFeeText": "Entrada",
+ "forfeitConfirmText": "¿Renunciar a este desafío?",
+ "forfeitNotAllowedYetText": "Todavía no puedes abandonar este desafío.",
+ "forfeitText": "Abandonar",
+ "multipliersText": "Multiplicadores",
+ "nextChallengeText": "Siguiente Desafío",
+ "nextPlayText": "Siguiente Juego",
+ "ofTotalTimeText": "de ${TOTAL}",
+ "playNowText": "Juega Ahora",
+ "pointsText": "Puntos",
+ "powerRankingFinishedSeasonUnrankedText": "(temporada terminada sin clasificar)",
+ "powerRankingNotInTopText": "(fuera del top ${NUMBER})",
+ "powerRankingPointsEqualsText": "= ${NUMBER} pts",
+ "powerRankingPointsMultText": "(x ${NUMBER} pts)",
+ "powerRankingPointsText": "${NUMBER} pts",
+ "powerRankingPointsToRankedText": "(${CURRENT} de ${REMAINING} pts)",
+ "powerRankingText": "Clasificación del Jugador",
+ "prizesText": "Premios",
+ "proMultInfoText": "Los jugadores con la mejora de ${PRO}\nreciben una bonificación del ${PERCENT}% de puntos.",
+ "seeMoreText": "Más...",
+ "skipWaitText": "Omitir la Espera",
+ "timeRemainingText": "Tiempo Restante",
+ "toRankedText": "Para Clasificar",
+ "totalText": "total",
+ "tournamentInfoText": "Compite por puntajes altos con\notros jugadores en tu liga.\n\nLos premios los obtienen los jugadores\ncon mejor puntaje al acabarse el torneo.",
+ "welcome1Text": "Bienvenido a ${LEAGUE}. Puedes mejorar tu\nposición en la liga ganando estrellas, completando\nlogros y ganando trofeos en desafíos.",
+ "welcome2Text": "También puedes ganar boletos desde varias actividades similares.\nLos boletos pueden ser usados para desbloquear nuevos personajes,\nmapas y minijuegos, entrar a torneos y más.",
+ "yourPowerRankingText": "Tu Clasificación Actual:"
+ },
+ "copyConfirmText": "Copiado en el portapapeles.",
+ "copyOfText": "Copia de ${NAME}",
+ "copyText": "Copiar",
+ "createEditPlayerText": "",
+ "createText": "Crear",
+ "creditsWindow": {
+ "additionalAudioArtIdeasText": "Audio Adicional, Arte Inicial, e Ideas por ${NAME}",
+ "additionalMusicFromText": "Música adicional de ${NAME}",
+ "allMyFamilyText": "Mis amigos y mi familia que ayudaron con las pruebas",
+ "codingGraphicsAudioText": "Código, Gráficos y Audio por ${NAME}",
+ "languageTranslationsText": "Traducciones:",
+ "legalText": "Legal:",
+ "publicDomainMusicViaText": "Música de dominio público vía ${NAME}",
+ "softwareBasedOnText": "Este software está basado parcialmente en el trabajo de ${NAME}",
+ "songCreditText": "${TITLE} Interpretada por ${PERFORMER}\nCompuesta por ${COMPOSER}, Arreglos por ${ARRANGER}, Publicada por ${PUBLISHER},\nCortesía de ${SOURCE}",
+ "soundAndMusicText": "Sonido & Música:",
+ "soundsText": "Sonidos (${SOURCE}):",
+ "specialThanksText": "Agradecimientos Especiales:",
+ "thanksEspeciallyToText": "Gracias especialmente a ${NAME}",
+ "titleText": "Créditos de ${APP_NAME}",
+ "whoeverInventedCoffeeText": "A quien inventó el café"
+ },
+ "currentStandingText": "Tu puesto actual es #${RANK}",
+ "customizeText": "Personalizar...",
+ "deathsTallyText": "${COUNT} muertes",
+ "deathsText": "Muertes",
+ "debugText": "depurar",
+ "debugWindow": {
+ "reloadBenchmarkBestResultsText": "Nota: Es recomendable poner Ajustes->Gráficos->Texturas en 'Alto' al probar esto.",
+ "runCPUBenchmarkText": "Ejecutar Punto de Referencia del CPU",
+ "runGPUBenchmarkText": "Ejecutar Punto de Referencia del GPU",
+ "runMediaReloadBenchmarkText": "Ejecutar Punto de Referencia del Media-Reload",
+ "runStressTestText": "Ejecutar prueba de resistencia",
+ "stressTestPlayerCountText": "Conteo de Jugadores",
+ "stressTestPlaylistDescriptionText": "Lista de juegos de Prueba de Estrés",
+ "stressTestPlaylistNameText": "Nombre de la Lista de juegos",
+ "stressTestPlaylistTypeText": "Tipo de Lista de juegos",
+ "stressTestRoundDurationText": "Duración de Ronda",
+ "stressTestTitleText": "Prueba de Estrés",
+ "titleText": "Pruebas de Estrés y Rendimiento",
+ "totalReloadTimeText": "Tiempo total de recarga: ${TIME} (ver registro para detalles)"
+ },
+ "defaultGameListNameText": "Lista de juegos ${PLAYMODE} Por Defecto",
+ "defaultNewGameListNameText": "Mi Lista de juegos ${PLAYMODE}",
+ "deleteText": "Borrar",
+ "demoText": "Demo",
+ "denyText": "Denegar",
+ "deprecatedText": "Obsoleto",
+ "descriptionText": "Descripción",
+ "desktopResText": "Resolución de Escritorio",
+ "deviceAccountUpgradeText": "Advertencia:\nIniciaste sesión con una cuenta de dispositivo (${NAME}).\nLas cuentas de dispositivo serán removidas en una futura actualización.\nActualiza a una Cuenta V2 si quieres conservar tu progreso.",
+ "difficultyEasyText": "Fácil",
+ "difficultyHardOnlyText": "Solo en Modo Difícil",
+ "difficultyHardText": "Difícil",
+ "difficultyHardUnlockOnlyText": "Este nivel solo puede ser desbloqueado en modo difícil.\n¡¿¡¿¡Piensas tener lo que se necesita!?!?!",
+ "directBrowserToURLText": "Por favor abre la siguiente URL en tu navegador:",
+ "disableRemoteAppConnectionsText": "Deshabilitar Conexiones Remotas de la Aplicación",
+ "disableXInputDescriptionText": "Permite más de 4 controles pero puede que no funcione bien.",
+ "disableXInputText": "Deshabilitar XInput",
+ "disabledText": "Deshabilitado",
+ "discardText": "Descartar",
+ "discordFriendsText": "¿Quieres buscar gente nueva con quien jugar?\n¡Únete a nuestro Discord y encuentra nuevos amigos!",
+ "discordJoinText": "Únete al Discord",
+ "doneText": "Hecho",
+ "drawText": "Empate",
+ "duplicateText": "Duplicar",
+ "editGameListWindow": {
+ "addGameText": "Añadir\nJuego",
+ "cantOverwriteDefaultText": "¡No es posible modificar la lista de juegos por defecto!",
+ "cantSaveAlreadyExistsText": "¡Ya existe una lista de juegos con ese nombre!",
+ "cantSaveEmptyListText": "¡No puedes guardar una lista de juegos vacía!",
+ "editGameText": "Editar\nJuego",
+ "listNameText": "Nombre de La Lista de Juegos",
+ "nameText": "Nombre",
+ "removeGameText": "Eliminar\nJuego",
+ "saveText": "Guardar Lista",
+ "titleText": "Editor de Lista de Juegos"
+ },
+ "editProfileWindow": {
+ "accountProfileInfoText": "Este perfil especial tiene un nombre\ny un icono basado en tu cuenta.\n\n${ICONS}\n\nCrea perfiles personalizados si quieres usar\ndiferentes nombres o iconos personalizados.",
+ "accountProfileText": "(perfil de cuenta)",
+ "availableText": "El nombre \"${NAME}\" está disponible.",
+ "characterText": "personaje",
+ "checkingAvailabilityText": "Revisando la disponibilidad para \"${NAME}\"...",
+ "colorText": "color",
+ "getMoreCharactersText": "Obtener Más Personajes...",
+ "getMoreIconsText": "Obtener Más Iconos...",
+ "globalProfileInfoText": "Los perfiles de jugador globales tienen un nombre único\na nivel mundial. También tienen iconos personalizados.",
+ "globalProfileText": "(perfil global)",
+ "highlightText": "Destacado",
+ "iconText": "icono",
+ "localProfileInfoText": "Los perfiles locales no tienen iconos y no hay garantía de que los nombres sean únicos. \nCrea un perfil global\npara reservar un nombre único y tener un icono personalizado.",
+ "localProfileText": "(perfil local)",
+ "nameDescriptionText": "Nombre del Jugador",
+ "nameText": "Nombre",
+ "profileAlreadyExistsText": "Ya existe un perfil con ese nombre.",
+ "randomText": "aleatorio",
+ "titleEditText": "Editar Perfil",
+ "titleNewText": "Nuevo Perfil",
+ "unavailableText": "\"${NAME}\" no está disponible; intenta otro nombre.",
+ "upgradeProfileInfoText": "Esto reservará tu nombre de jugador a nivel mundial\ny podrás asignarle un icono personalizado.",
+ "upgradeToGlobalProfileText": "Actualizar a Perfil Global"
+ },
+ "editSoundtrackWindow": {
+ "cantDeleteDefaultText": "No puedes borrar la banda sonora predeterminada.",
+ "cantEditDefaultText": "No puedes editar la banda sonora predeterminada. Duplicala o crea una nueva.",
+ "cantOverwriteDefaultText": "No puedes sobreescribir la banda sonora predeterminada",
+ "cantSaveAlreadyExistsText": "¡Ya existe una banda sonora con ese nombre!",
+ "defaultGameMusicText": "",
+ "defaultSoundtrackNameText": "Banda Sonora Predeterminada",
+ "deleteConfirmText": "Borrar Banda Sonora:\n\n'${NAME}'?",
+ "deleteText": "Borrar\nBanda Sonora",
+ "duplicateText": "Duplicar\nBanda Sonora",
+ "editSoundtrackText": "Editor de Banda Sonora",
+ "editText": "Editar\nBanda Sonora",
+ "fetchingITunesText": "buscando playlists en la App de Música...",
+ "musicVolumeZeroWarning": "Advertencia: el volumen de la música está en 0",
+ "nameText": "Nombre",
+ "newSoundtrackNameText": "Mi Banda Sonora ${COUNT}",
+ "newSoundtrackText": "Nueva Banda Sonora:",
+ "newText": "Nueva\nBanda Sonora",
+ "selectAPlaylistText": "Selecciona Una Playlist",
+ "selectASourceText": "Fuente de La Música",
+ "testText": "prueba",
+ "titleText": "Bandas Sonoras",
+ "useDefaultGameMusicText": "Música del Juego Por Defecto",
+ "useITunesPlaylistText": "Playlist de la App de Música",
+ "useMusicFileText": "Archivo de Música (mp3, etc).",
+ "useMusicFolderText": "Carpeta de Archivos de Audio"
+ },
+ "editText": "Editar",
+ "enabledText": "Habilitado",
+ "endText": "Fin",
+ "enjoyText": "¡Diviértete!",
+ "epicDescriptionFilterText": "${DESCRIPTION} En cámara lenta épica.",
+ "epicNameFilterText": "${NAME} - Modo épico",
+ "errorAccessDeniedText": "acceso denegado",
+ "errorDeviceTimeIncorrectText": "La hora de tu dispositivo está incorrecta por ${HOURS} hora(s).\nEsto podría causar algunos problemas.\nPor favor verifica la hora y zona horaria en ajustes.",
+ "errorOutOfDiskSpaceText": "espacio insuficiente en el disco",
+ "errorSecureConnectionFailText": "No se puede establecer una conexión segura en la nube; la red podría estar fallando.",
+ "errorText": "Error",
+ "errorUnknownText": "error desconocido",
+ "exitGameText": "¿Salir de ${APP_NAME}?",
+ "expiredAgoText": "Expiró hace ${T}",
+ "expiresInText": "Expira en ${T}",
+ "exportSuccessText": "'${NAME}' exportado.",
+ "externalStorageText": "Almacenamiento Externo",
+ "failText": "Fallaste",
+ "fatalErrorText": "Oh oh; algo está mal por aquí.\nPor favor intenta reinstalar la app o\ncontacta a ${EMAIL} para recibir ayuda.",
+ "fileSelectorWindow": {
+ "titleFileFolderText": "Elige un Archivo o Carpeta",
+ "titleFileText": "Elige un Archivo",
+ "titleFolderText": "Elige una Carpeta",
+ "useThisFolderButtonText": "Usar Esta Carpeta"
+ },
+ "filterText": "Filtro",
+ "finalScoreText": "Puntaje Final",
+ "finalScoresText": "Puntajes Finales",
+ "finalTimeText": "Tiempo Final",
+ "finishingInstallText": "Terminando la instalación; espera un momento...",
+ "fireTVRemoteWarningText": "* Para una mejor experiencia, \nutiliza controles o instala la\napp '${REMOTE_APP_NAME}' en tus\ndispositivos móviles y tabletas.",
+ "firstToFinalText": "Primero de ${COUNT} Finales",
+ "firstToSeriesText": "Primero de ${COUNT} Series",
+ "fiveKillText": "¡¡¡COMBO QUÍNTUPLE!!!",
+ "flawlessWaveText": "¡Oleada Perfecta!",
+ "fourKillText": "¡¡¡COMBO CUÁDRUPLE!!!",
+ "friendScoresUnavailableText": "Puntajes no disponibles.",
+ "gameLeadersText": "Líderes del Juego ${COUNT}",
+ "gameListWindow": {
+ "cantDeleteDefaultText": "No puedes borrar la lista de juegos predeterminada.",
+ "cantEditDefaultText": "¡No puedes editar la lista de juegos predeterminada! Duplicala o crea una nueva.",
+ "cantShareDefaultText": "No puedes compartir la lista de juegos predeterminada.",
+ "deleteConfirmText": "¿Borrar \"${LIST}\"?",
+ "deleteText": "Borrar\nLista de Juegos",
+ "duplicateText": "Duplicar\nLista de Juegos",
+ "editText": "Editar\nLista de Juegos",
+ "newText": "Nueva\nLista de Juegos",
+ "pointsToWinText": "Puntos Para Ganar",
+ "seriesLengthText": "Duración de la Serie",
+ "showTutorialText": "Ver Tutorial",
+ "shuffleGameOrderText": "Orden de Juego Aleatorio",
+ "titleText": "Personalizar Listas de Juegos de ${TYPE}"
+ },
+ "gameSettingsWindow": {
+ "addGameText": "Agregar Juego"
+ },
+ "gamesToText": "${WINCOUNT} juegos a ${LOSECOUNT}",
+ "gatherWindow": {
+ "aboutDescriptionLocalMultiplayerExtraText": "Recuerda: cualquier dispositivo en la fiesta puede\ntener más de un jugador si tienen controles suficientes.",
+ "aboutDescriptionText": "Usa estas pestañas para armar una partida.\n\nLas partidas te permiten jugar y competir con\ntus amigos a través de diferentes dispositivos.\n\nUsa el botón ${PARTY} en la parte superior\nderecha para chatear e interactuar con tu partida.\n(con un control, presiona ${BUTTON} mientras estés en el menú)",
+ "aboutText": "Acerca De",
+ "addressFetchErrorText": "",
+ "appInviteMessageText": "${NAME} te envió ${COUNT} boletos en ${APP_NAME}",
+ "appInviteSendACodeText": "Envíales Un Código",
+ "appInviteTitleText": "Invitación de La App ${APP_NAME}",
+ "bluetoothAndroidSupportText": "(funciona con cualquier dispositivo Android con Bluetooth)",
+ "bluetoothDescriptionText": "Alojar/unirse a una partida vía Bluetooth:",
+ "bluetoothHostText": "Alojar vía Bluetooth",
+ "bluetoothJoinText": "Unirse vía Bluetooth",
+ "bluetoothText": "Bluetooth",
+ "checkingText": "revisando...",
+ "copyCodeConfirmText": "Código copiado al portapapeles.",
+ "copyCodeText": "Copiar Código",
+ "dedicatedServerInfoText": "Para mejores resultados, crea un servidor dedicado. Visita bombsquadgame.com/server para aprender cómo hacerlo.",
+ "descriptionShortText": "Usa la pestaña de Reunir para crear una fiesta.",
+ "disconnectClientsText": "Esto desconectará a ${COUNT} jugador(es) de\ntu partida. ¿Estás seguro?",
+ "earnTicketsForRecommendingAmountText": "Tus amigos recibirán ${COUNT} boletos si prueban el juego\n(y recibirás ${YOU_COUNT} boletos por cada amigo que pruebe el juego).",
+ "earnTicketsForRecommendingText": "Comparte el juego\na cambio de boletos gratis...",
+ "emailItText": "Envíar Correo",
+ "favoritesSaveText": "Guardar Como Favorito",
+ "favoritesText": "Favoritos",
+ "freeCloudServerAvailableMinutesText": "El siguiente servidor estará disponible en ${MINUTES} minuto(s).",
+ "freeCloudServerAvailableNowText": "¡Servidor en la nube gratuito disponible!",
+ "freeCloudServerNotAvailableText": "No hay servidores en la nube gratuitos disponibles.",
+ "friendHasSentPromoCodeText": "Recibiste ${COUNT} boletos de ${APP_NAME} de ${NAME}",
+ "friendPromoCodeAwardText": "Recibirás ${COUNT} boletos cada vez que lo uses.",
+ "friendPromoCodeExpireText": "El código expirará en ${EXPIRE_HOURS} hora(s) y solo funciona para jugadores nuevos.",
+ "friendPromoCodeInstructionsText": "Para usarlo, abre ${APP_NAME} y ve a \"Ajustes->Avanzado->Enviar Información\"\nVisita bombsquadgame.com para enlaces de descarga de todas las plataformas disponibles.",
+ "friendPromoCodeRedeemLongText": "Se puede canjear por ${COUNT} boletos gratis hasta por ${MAX_USES} personas.",
+ "friendPromoCodeRedeemShortText": "Puede ser canjeado por ${COUNT} boletos en el juego.",
+ "friendPromoCodeWhereToEnterText": "(en \"Ajustes->Avanzado->Enviar Información\")",
+ "getFriendInviteCodeText": "Obtener Código de Invitación de Amigo",
+ "googlePlayDescriptionText": "Invitar jugadores de Google Play a tu partida:",
+ "googlePlayInviteText": "Invitar",
+ "googlePlayReInviteText": "Hay ${COUNT} jugador(es) de Google Play en tu fiesta\nque se desconectarán si creas una nueva invitación.\nInclúyelos en la nueva invitación para tenerlos de vuelta.",
+ "googlePlaySeeInvitesText": "Ver Invitaciones",
+ "googlePlayText": "Google Play",
+ "googlePlayVersionOnlyText": "(Versión Android / Google Play)",
+ "hostPublicPartyDescriptionText": "Alojar una Partida Pública",
+ "hostingUnavailableText": "Alojamiento No Disponible",
+ "inDevelopmentWarningText": "Nota:\n\nJugar en red es una función todavía en desarrollo.\nPor ahora, es altamente recomendado que todos\nlos jugadores estén en la misma red Wi-Fi.",
+ "internetText": "Internet",
+ "inviteAFriendText": "¿Tus amigos no tienen el juego? Invítalos a\nprobarlo y recibirán ${COUNT} boletos gratis.",
+ "inviteFriendsText": "Invitar Amigos",
+ "joinPublicPartyDescriptionText": "Unirse a una Partida Pública",
+ "localNetworkDescriptionText": "Unirse a una Partida Cercana (LAN, Bluetooth, etc.)",
+ "localNetworkText": "Red Local",
+ "makePartyPrivateText": "Hacer Mi Partida Privada",
+ "makePartyPublicText": "Hacer Mi Partida Pública",
+ "manualAddressText": "Dirección",
+ "manualConnectText": "Conectar",
+ "manualDescriptionText": "Unirse a una partida por dirección:",
+ "manualJoinSectionText": "Unirse Por Dirección",
+ "manualJoinableFromInternetText": "¿Se pueden unir desde internet?:",
+ "manualJoinableNoWithAsteriskText": "NO*",
+ "manualJoinableYesText": "SÍ",
+ "manualRouterForwardingText": "*para arreglarlo, configura tu router para que redireccione el puerto UDP ${PORT} a tu dirección local",
+ "manualText": "Manual",
+ "manualYourAddressFromInternetText": "Tu dirección desde internet:",
+ "manualYourLocalAddressText": "Tu dirección local:",
+ "nearbyText": "Cerca",
+ "noConnectionText": "",
+ "noPartiesAddedText": "Sin Fiestas Añadidas",
+ "otherVersionsText": "(otras versiones)",
+ "partyCodeText": "Código de La Partida",
+ "partyInviteAcceptText": "Aceptar",
+ "partyInviteDeclineText": "Denegar",
+ "partyInviteIgnoreText": "Ignorar",
+ "partyInviteText": "${NAME} te ha invitado\na unirse a su partida!",
+ "partyNameText": "Nombre de La Partida",
+ "partyServerRunningText": "Tu servidor se esta ejecutando.",
+ "partySizeText": "tamaño de partida",
+ "partyStatusCheckingText": "comprobando estado...",
+ "partyStatusJoinableText": "ahora se pueden unir a tu partida desde internet",
+ "partyStatusNoConnectionText": "incapaz de conectarse al servidor",
+ "partyStatusNotJoinableText": "no se pueden unir a tu partida desde internet",
+ "partyStatusNotPublicText": "tu partida no es pública",
+ "pingText": "ping",
+ "portText": "Puerto",
+ "privatePartyCloudDescriptionText": "Las partidas privadas se ejecutan en la nube; no requieren configuración del router.",
+ "privatePartyHostText": "Alojar una Partida Privada",
+ "privatePartyJoinText": "Unirse a una Partida Privada",
+ "privateText": "Privado",
+ "publicHostRouterConfigText": "Esto puede requerir configurar el reenvío de puertos en tu router. Para una opción más fácil, aloja una partida privada.",
+ "publicText": "Público",
+ "requestingAPromoCodeText": "Pidiendo un código...",
+ "sendDirectInvitesText": "Enviar Directamente La Invitación",
+ "shareThisCodeWithFriendsText": "Comparte este código con tus amigos:",
+ "showMyAddressText": "Mostrar Mi Dirección",
+ "startHostingPaidText": "Alojar Ahora Por ${COST}",
+ "startHostingText": "Alojar",
+ "startStopHostingMinutesText": "Puede iniciar y detener el alojamiento de forma gratuita durante los próximos ${MINUTES} minuto(s).",
+ "stopHostingText": "Dejar de Alojar",
+ "titleText": "Reunir",
+ "wifiDirectDescriptionBottomText": "Si todo los dispositivos disponen de 'Wi-fi Directo', deberían poder utilizarlo para\nencontrar y conectarse entre ellos. Cuando todos estén conectados, puedes formar \npartidas, usando la pestaña 'Red Local', como si estuvieran en la misma red Wi-fi.\n\nPara mejores resultados, el alojador del Wi-fi Directo también debe ser el alojador de la partida en ${APP_NAME}.",
+ "wifiDirectDescriptionTopText": "Wi-Fi Directo puede ser utilizado para conectar dispositivos Android sin\ntener que utilizar una red Wi-Fi. Esto funciona mejor en Android 4.2 hacia adelante.\n\nPara utilizarlo, abre los ajustes de Wi-Fi y busca 'Wi-Fi Directo' en el menú.",
+ "wifiDirectOpenWiFiSettingsText": "Abrir Ajustes de Wi-Fi",
+ "wifiDirectText": "Wi-Fi Directo",
+ "worksBetweenAllPlatformsText": "(funciona en todas las plataformas)",
+ "youHaveBeenSentAPromoCodeText": "Has enviado un código promocional de ${APP_NAME}:"
+ },
+ "getTicketsWindow": {
+ "freeText": "¡GRATIS!",
+ "freeTicketsText": "Boletos Gratis",
+ "inProgressText": "Ya hay una transacción en progreso; por favor inténtalo mas tarde.",
+ "purchasesRestoredText": "Compras restauradas.",
+ "receivedTicketsText": "¡Recibiste ${COUNT} boletos!",
+ "restorePurchasesText": "Restaurar Compras",
+ "ticketPack1Text": "Paquete de Boletos Pequeño",
+ "ticketPack2Text": "Paquete de Boletos Mediano",
+ "ticketPack3Text": "Paquete de Boletos Grande",
+ "ticketPack4Text": "Paquete de Boletos Jumbo",
+ "ticketPack5Text": "Paquete de Boletos Mamut",
+ "ticketPack6Text": "Paquete de Boletos Supremo",
+ "ticketsFromASponsorText": "Ver un anuncio\na cambio de ${COUNT} boletos",
+ "ticketsText": "${COUNT} Boletos",
+ "titleText": "Conseguir Boletos",
+ "unavailableLinkAccountText": "Disculpe, las compras no están disponibles en esta plataforma.\nComo una solución, puedes enlazar esta cuenta a otra\nplataforma y hacer tus compras desde ahí.",
+ "unavailableTemporarilyText": "No disponible por el momento; por favor inténtalo más tarde.",
+ "unavailableText": "Disculpe, esto no está disponible.",
+ "versionTooOldText": "Lo sentimos, esta versión del juego es muy antigua; por favor actualízala a una nueva versión.",
+ "youHaveShortText": "tienes ${COUNT}",
+ "youHaveText": "tienes ${COUNT} boletos"
+ },
+ "goldPass": {
+ "desc1InfTokensText": "Fichas infinitas.",
+ "desc2NoAdsText": "Sin anuncios.",
+ "desc3ForeverText": "Para siempre.",
+ "goldPassText": "Pase de Oro"
+ },
+ "googlePlayPurchasesNotAvailableText": "Las compras de Google Play no están disponibles.\nEs posible que debas actualizar la aplicación de tu tienda.",
+ "googlePlayServicesNotAvailableText": "Los Servicios de Google Play no están disponibles.\nAlgunas funciones de la aplicación pueden estar deshabilitadas.",
+ "googlePlayText": "Google Play",
+ "graphicsSettingsWindow": {
+ "alwaysText": "Siempre",
+ "fullScreenCmdText": "Pantalla completa (Cmd-F)",
+ "fullScreenCtrlText": "Pantalla completa (Ctrl-F)",
+ "fullScreenText": "Pantalla completa",
+ "gammaText": "Gama",
+ "highText": "Alto",
+ "higherText": "Altísimo",
+ "lowText": "Bajo",
+ "maxFPSText": "FPS Máximos",
+ "mediumText": "Medio",
+ "neverText": "Nunca",
+ "resolutionText": "Resolución",
+ "showFPSText": "Mostrar FPS",
+ "texturesText": "Texturas",
+ "titleText": "Gráficos",
+ "tvBorderText": "Borde del TV",
+ "verticalSyncText": "Sincronización Vertical",
+ "visualsText": "Visuales"
+ },
+ "helpWindow": {
+ "bombInfoText": "- Bomba -\nMás fuerte que los golpes, pero puede\nresultar en autolesiones graves.\nPara mejores resultados, tírala hacia tus\noponentes antes de que explote.",
+ "canHelpText": "${APP_NAME} te puede ayudar.",
+ "controllersInfoText": "Puedes jugar ${APP_NAME} con tus amigos en una red o todos pueden\njugar en el mismo dispositivo si se tienen varios controles.\n${APP_NAME} soporta una gran variedad de ellos; incluso puedes utilizar\ntus dispositivos móviles como controles instalando la app '${REMOTE_APP_NAME}'.\nVe a \"Ajustes->Controles\" para más información.",
+ "controllersInfoTextRemoteOnly": "Tu puedes jugar ${APP_NAME} con tus amigos en la red o pueden\njugar todos en el mismo dispositivo usando los teléfonos\ncomo controles con la aplicación '${REMOTE_APP_NAME}'.",
+ "controllersText": "Controles",
+ "controlsSubtitleText": "Tu amistoso personaje de ${APP_NAME} tiene algunas acciones básicas:",
+ "controlsText": "Controles",
+ "devicesInfoText": "La versión de RV de ${APP_NAME} se puede jugar en la red con la versión \nregular, así que saca tus celulares, tablets y computadoras extras y que \nempieze el juego. Es muy útil conectar un dispositivo con la versión\nregular a uno con la versión VR para que todos los que estén fuera\npuedan ver la acción.",
+ "devicesText": "Dispositivos",
+ "friendsGoodText": "Cuantos más, mejor. ${APP_NAME} es más divertido con muchos \namigos y soporta hasta 8 a la vez, lo que nos lleva a:",
+ "friendsText": "Amigos",
+ "jumpInfoText": "- Saltar -\nSalta para cruzar pequeños espacios, \npara tirar cosas más lejos y \npara expresar sentimientos de alegría.",
+ "orPunchingSomethingText": "O golpear algo, tirarlo por un precipicio y explotarlo en plena caída con una bomba pegajosa.",
+ "pickUpInfoText": "- Recoger -\nAgarra banderas, enemigos o cualquier\notra cosa no pegada al suelo.\nPresiona de nuevo para lanzar.",
+ "powerupBombDescriptionText": "Te permite sacar tres bombas\nrapidamente en lugar de solo una.",
+ "powerupBombNameText": "Bombas Triples",
+ "powerupCurseDescriptionText": "Probablemente quieras evitar estos.\n ...¿o talvez no?",
+ "powerupCurseNameText": "Maldición",
+ "powerupHealthDescriptionText": "Te restaura la salud completamente.\nNunca lo habrías adivinado.",
+ "powerupHealthNameText": "Botiquín",
+ "powerupIceBombsDescriptionText": "Más débiles que las bombas normales\npero dejan a tus enemigos congelados\ny particularmente frágiles.",
+ "powerupIceBombsNameText": "Bombas de Hielo",
+ "powerupImpactBombsDescriptionText": "Levemente más débiles que las bombas regulares, pero explotan al impacto.",
+ "powerupImpactBombsNameText": "Insta-Bombas",
+ "powerupLandMinesDescriptionText": "Estas vienen en grupos de 3;\nSon buenas para defensa territorial\no para detener enemigos veloces.",
+ "powerupLandMinesNameText": "Minas Terrestres",
+ "powerupPunchDescriptionText": "Hacen que tus golpes sean más duros,\nmás rápidos, mejores y más fuertes.",
+ "powerupPunchNameText": "Guantes de Boxeo",
+ "powerupShieldDescriptionText": "Absorbe un poco de daño\npara que asi no tengas que hacerlo tu.",
+ "powerupShieldNameText": "Escudo-de-Energía",
+ "powerupStickyBombsDescriptionText": "Se adhieren a todo lo que toquen.\nProducen hilaridad.",
+ "powerupStickyBombsNameText": "Bombas Pegajosas",
+ "powerupsSubtitleText": "Obviamente, ningún juego estaría completo sin potenciadores:",
+ "powerupsText": "Potenciadores",
+ "punchInfoText": "- Golpear -\nLos golpes hacen más daño cuanto\nmás rápido se muevan tus puños, así que\ncorre, salta y gira como un loco.",
+ "runInfoText": "- Correr -\nMantén CUALQUIER botón para correr. Los gatillos o botones traseros funcionan bien si los tienes.\nCorrer te lleva a lugares más rápido pero es más difícil girar, así que ten cuidado con los barrancos.",
+ "someDaysText": "Hay días en los que sientes ganas de golpear algo. O volar algo.",
+ "titleText": "Ayuda de ${APP_NAME}",
+ "toGetTheMostText": "Para sacar el máximo partido a este juego, necesitas:",
+ "welcomeText": "¡Bienvenido a ${APP_NAME}!"
+ },
+ "holdAnyButtonText": "",
+ "holdAnyKeyText": "",
+ "hostIsNavigatingMenusText": "- ${HOST} está navegando los menús como un pro -",
+ "importPlaylistCodeInstructionsText": "Usa el siguiente código para importar esta lista de juegos en otra parte:",
+ "importPlaylistSuccessText": "Lista de Juegos '${NAME}' importada ${TYPE}",
+ "importText": "Importar",
+ "importingText": "Importando...",
+ "inGameClippedNameText": "en el juego será\n\"${NAME}\"",
+ "inboxText": "Bandeja de Entrada",
+ "installDiskSpaceErrorText": "ERROR: Incapaz de completar la instalación.\nPuede que te hayas quedado sin espacio en tu dispositivo.\nLibera un poco de tu espacio e intenta de nuevo.",
+ "internal": {
+ "arrowsToExitListText": "pulsa ${LEFT} o ${RIGHT} para salir de la lista",
+ "buttonText": "botón",
+ "cantKickHostError": "No puedes expulsar al anfitrión.",
+ "chatBlockedText": "${NAME} está bloqueado del chat por ${TIME} segundos.",
+ "connectedToGameText": "Unido a '${NAME}'",
+ "connectedToPartyText": "¡Unido a la partida de ${NAME}!",
+ "connectingToPartyText": "Conectando...",
+ "connectionFailedHostAlreadyInPartyText": "Conexión fallida; el anfitrión está en otra partida.",
+ "connectionFailedPartyFullText": "Conexión fallida; la partida está llena.",
+ "connectionFailedText": "Conexión fallida.",
+ "connectionFailedVersionMismatchText": "Conexión fallida; el anfitrión corre una versión diferente del juego.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
+ "connectionRejectedText": "Conexión rechazada.",
+ "controllerConnectedText": "${CONTROLLER} conectado.",
+ "controllerDetectedText": "1 control detectado.",
+ "controllerDisconnectedText": "${CONTROLLER} desconectado.",
+ "controllerDisconnectedTryAgainText": "${CONTROLLER} desconectado. Intenta conectarlo de nuevo.",
+ "controllerForMenusOnlyText": "Este control no puede ser usado para jugar; solo para navegar por menús.",
+ "controllerReconnectedText": "${CONTROLLER} reconectado.",
+ "controllersConnectedText": "${COUNT} controles conectados.",
+ "controllersDetectedText": "${COUNT} controles detectados.",
+ "controllersDisconnectedText": "${COUNT} controles desconectados.",
+ "corruptFileText": "Archivo(s) corrupto(s) detectado(s). Por favor intenta reinstalando o contácta a ${EMAIL}",
+ "errorPlayingMusicText": "Error reproduciendo música: ${MUSIC}",
+ "errorResettingAchievementsText": "Incapaz de reiniciar los logros; por favor inténtalo de nuevo más tarde.",
+ "hasMenuControlText": "${NAME} tiene el control del menú.",
+ "incompatibleNewerVersionHostText": "El anfitrión está ejecutando una versión nueva del juego.\nActualiza a la última versión y vuelve a intentarlo.",
+ "incompatibleVersionHostText": "El anfitrión está ejecutando una versión diferente del juego.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
+ "incompatibleVersionPlayerText": "${NAME} está ejecutando una versión diferente del juego.\nAsegúrate de que ambos estén actualizados y vuelva a intentarlo.",
+ "invalidAddressErrorText": "Error: dirección inválida.",
+ "invalidNameErrorText": "Error: nombre inválido.",
+ "invalidPortErrorText": "Error: puerto inválido.",
+ "invitationSentText": "Invitación enviada.",
+ "invitationsSentText": "${COUNT} invitaciones enviadas.",
+ "joinedPartyInstructionsText": "Alguien se ha unido a tu fiesta.\nVe a 'Jugar' para iniciar un juego.",
+ "keyboardText": "Teclado",
+ "kickIdlePlayersKickedText": "Expulsando a ${NAME} por estar inactivo.",
+ "kickIdlePlayersWarning1Text": "${NAME} será expulsado en ${COUNT} segundos si sigue inactivo.",
+ "kickIdlePlayersWarning2Text": "(puedes apagar esto en Ajustes -> Avanzado)",
+ "leftGameText": "Abandonó '${NAME}'.",
+ "leftPartyText": "Abandonó la partida de ${NAME}.",
+ "noMusicFilesInFolderText": "La carpeta no contiene archivos de audio.",
+ "playerJoinedPartyText": "¡${NAME} se unió a la partida!",
+ "playerLeftPartyText": "${NAME} abandonó la partida.",
+ "rejectingInviteAlreadyInPartyText": "Rechazando invitación (ya estás en una partida).",
+ "serverRestartingText": "El servidor se está reiniciando. Por favor vuelva a unirse en un momento...",
+ "serverShuttingDownText": "El servidor está fuera de servicio...",
+ "signInErrorText": "Error iniciando sesión.",
+ "signInNoConnectionText": "Imposible iniciar sesión. (¿no hay conexión a internet?)",
+ "telnetAccessDeniedText": "ERROR: El usuario no concedió acceso telnet.",
+ "timeOutText": "(tiempo fuera en ${TIME} segundo/s)",
+ "touchScreenJoinWarningText": "Te uniste con la pantalla táctil.\nSi este fue un error, presiona 'Menú->Abandonar Juego' con ella.",
+ "touchScreenText": "Pantalla Táctil",
+ "unableToCompleteTryAgainText": "Incapaz de completar esto ahora mismo.\nPor favor, inténtelo de nuevo.",
+ "unableToResolveHostText": "Error: incapaz de encontrar el anfitrión.",
+ "unavailableNoConnectionText": "No disponible por el momento (¿no tienes conexión a internet?)",
+ "vrOrientationResetCardboardText": "Usa esto para reiniciar la orientación de RV.\nPara jugar el juego necesitarás un control externo.",
+ "vrOrientationResetText": "Orientación de RV reiniciada.",
+ "willTimeOutText": "(caducará si está inactivo)"
+ },
+ "inventoryText": "Inventario",
+ "jumpBoldText": "SALTAR",
+ "jumpText": "Saltar",
+ "keepText": "Mantener",
+ "keepTheseSettingsText": "¿Mantener estos ajustes?",
+ "keyboardChangeInstructionsText": "Presiona dos veces el espacio para cambiar los teclados.",
+ "keyboardNoOthersAvailableText": "No hay más teclados disponibles.",
+ "keyboardSwitchText": "Cambiando teclado a \"${NAME}\".",
+ "kickOccurredText": "${NAME} ha sido expulsado.",
+ "kickQuestionText": "¿Expulsar a ${NAME}?",
+ "kickText": "Expulsar",
+ "kickVoteCantKickAdminsText": "Los administradores no pueden ser expulsados.",
+ "kickVoteCantKickSelfText": "No puedes expulsarte a ti mismo.",
+ "kickVoteFailedNotEnoughVotersText": "No hay suficientes jugadores para votar.",
+ "kickVoteFailedText": "Votación de expulsión fallida.",
+ "kickVoteStartedText": "Se ha iniciado una votación de expulsión para '${NAME}'.",
+ "kickVoteText": "Votar para Expulsar",
+ "kickVotingDisabledText": "El voto para expulsar esta desactivado.",
+ "kickWithChatText": "Escribe ${YES} en el chat para \"Si\" y ${NO} para \"No\".",
+ "killsTallyText": "${COUNT} asesinatos",
+ "killsText": "Asesinatos",
+ "kioskWindow": {
+ "easyText": "Fácil",
+ "epicModeText": "Modo Lento",
+ "fullMenuText": "Menú Completo",
+ "hardText": "Difícil",
+ "mediumText": "Medio",
+ "singlePlayerExamplesText": "Ejemplos de 1 Jugador / Modo Cooperativo",
+ "versusExamplesText": "Ejemplos de Versus"
+ },
+ "languageSetText": "El idioma ahora es \"${LANGUAGE}\".",
+ "lapNumberText": "Vuelta ${CURRENT}/${TOTAL}",
+ "lastGamesText": "(últimos ${COUNT} juegos)",
+ "leaderboardsText": "Clasificaciones",
+ "league": {
+ "allTimeText": "Todo El Tiempo",
+ "currentSeasonText": "Temporada Actual (${NUMBER})",
+ "leagueFullText": "Liga ${NAME}",
+ "leagueRankText": "Rango de Liga",
+ "leagueText": "Liga",
+ "rankInLeagueText": "#${RANK}, ${NAME} Liga${SUFFIX}",
+ "seasonEndedDaysAgoText": "La temporada terminó hace ${NUMBER} día(s).",
+ "seasonEndsDaysText": "La temporada termina en ${NUMBER} día(s).",
+ "seasonEndsHoursText": "La temporada termina en ${NUMBER} hora(s).",
+ "seasonEndsMinutesText": "La temporada termina en ${NUMBER} minuto(s).",
+ "seasonText": "Temporada ${NUMBER}",
+ "tournamentLeagueText": "Debes alcanzar la liga ${NAME} para entrar a este torneo.",
+ "trophyCountsResetText": "El conteo de trofeos se reiniciará la próxima temporada.",
+ "upToDateBonusDescriptionText": "Los jugadores con una version reciente \ndel juego obtienen un bonus del ${PERCENT}% aquí.",
+ "upToDateBonusText": "Bono Actualizado"
+ },
+ "learnMoreText": "Aprender Más",
+ "levelBestScoresText": "Mejores puntajes en ${LEVEL}",
+ "levelBestTimesText": "Mejores tiempos en ${LEVEL}",
+ "levelIsLockedText": "${LEVEL} está bloqueado.",
+ "levelMustBeCompletedFirstText": "${LEVEL} debe completarse primero.",
+ "levelText": "Nivel ${NUMBER}",
+ "levelUnlockedText": "¡Nivel Desbloqueado!",
+ "livesBonusText": "Bono de Vidas",
+ "loadingText": "cargando",
+ "loadingTryAgainText": "Cargando; vuelve a intentarlo en un momento...",
+ "macControllerSubsystemBothText": "Ambos (no recomendado)",
+ "macControllerSubsystemClassicText": "Clásico",
+ "macControllerSubsystemDescriptionText": "(intenta cambiar esto si tus controles no están funcionando)",
+ "macControllerSubsystemMFiNoteText": "Control hecho para iOS/Mac detectado;\nTal vez quieras activar esto en Ajustes -> Controles",
+ "macControllerSubsystemMFiText": "Creado para iOS/Mac",
+ "macControllerSubsystemTitleText": "Soporte del Control",
+ "mainMenu": {
+ "creditsText": "Créditos",
+ "demoMenuText": "Menú Demo",
+ "endGameText": "Terminar Juego",
+ "endTestText": "Terminar Prueba",
+ "exitGameText": "Salir del Juego",
+ "exitToMenuText": "¿Salir al menú?",
+ "howToPlayText": "Cómo Jugar",
+ "justPlayerText": "(Solo ${NAME})",
+ "leaveGameText": "Abandonar Juego",
+ "leavePartyConfirmText": "¿Realmente deseas abandonar la partida?",
+ "leavePartyText": "Abandonar Partida",
+ "quitText": "Salir",
+ "resumeText": "Reanudar",
+ "settingsText": "Ajustes"
+ },
+ "makeItSoText": "Que así sea",
+ "mapSelectGetMoreMapsText": "Obtener Más Mapas...",
+ "mapSelectText": "Seleccionar...",
+ "mapSelectTitleText": "Mapas para ${GAME}",
+ "mapText": "Mapa",
+ "maxConnectionsText": "Máximo de Conexiones",
+ "maxPartySizeText": "Capacidad Máxima de La Partida",
+ "maxPlayersText": "Máximo de Jugadores",
+ "merchText": "¡Mercancía!",
+ "modeArcadeText": "Modo Arcade",
+ "modeClassicText": "Modo Clásico",
+ "modeDemoText": "Modo Demo",
+ "moreSoonText": "Más próximamente...",
+ "mostDestroyedPlayerText": "Jugador Más Destruido",
+ "mostValuablePlayerText": "Jugador Más Valioso",
+ "mostViolatedPlayerText": "Jugador Más Violado",
+ "mostViolentPlayerText": "Jugador Más Violento",
+ "moveText": "Mover",
+ "multiKillText": "¡¡¡COMBO DE ${COUNT}!!!",
+ "multiPlayerCountText": "${COUNT} jugadores",
+ "mustInviteFriendsText": "Nota: debes invitar a tus amigos en\nel panel \"${GATHER}\" o conectar\ncontroles para jugar multijugador.",
+ "nameBetrayedText": "${NAME} traicionó a ${VICTIM}.",
+ "nameDiedText": "${NAME} ha muerto.",
+ "nameKilledText": "${NAME} mató a ${VICTIM}.",
+ "nameNotEmptyText": "¡El nombre no puede quedar vacío!",
+ "nameScoresText": "¡${NAME} Anotó!",
+ "nameSuicideKidFriendlyText": "${NAME} murió accidentalmente.",
+ "nameSuicideText": "${NAME} cometió suicidio.",
+ "nameText": "Nombre",
+ "nativeText": "Nativo",
+ "newExclaimText": "¡Nuevo!",
+ "newPersonalBestText": "¡Nuevo récord personal!",
+ "newTestBuildAvailableText": "¡Una nueva build de prueba está disponible! (${VERSION} build ${BUILD}).\nObténla en ${ADDRESS}",
+ "newText": "Nuevo",
+ "newVersionAvailableText": "¡Una nueva version de ${APP_NAME} está disponible! (${VERSION})",
+ "nextAchievementsText": "Siguientes Logros:",
+ "nextLevelText": "Siguiente Nivel",
+ "noAchievementsRemainingText": "- ninguno",
+ "noContinuesText": "(sin re-intentos)",
+ "noExternalStorageErrorText": "No se encontró almacenamiento externo en este dispositivo",
+ "noGameCircleText": "Error: no registrado en GameCircle",
+ "noMessagesText": "Sin mensajes.",
+ "noPluginsInstalledText": "Sin Complementos Instalados",
+ "noScoresYetText": "Sin puntajes aún.",
+ "noServersFoundText": "No se encontraron servidores.",
+ "noThanksText": "No Gracias",
+ "noTournamentsInTestBuildText": "ADVERTENCIA: Los puntajes de los torneos en esta versión de prueba serán ignorados.",
+ "noValidMapsErrorText": "Mapas válidos no encontrados para este tipo de juego.",
+ "notEnoughPlayersRemainingText": "No hay jugadores suficientes restantes; sal e inicia un nuevo juego.",
+ "notEnoughPlayersText": "¡Necesitas por lo menos ${COUNT} jugadores para comenzar!",
+ "notEnoughTicketsText": "¡No tienes suficientes tickets!",
+ "notNowText": "Ahora No",
+ "notSignedInErrorText": "Debes iniciar sesión para hacer esto.",
+ "notSignedInGooglePlayErrorText": "Debes iniciar sesión con Google Play para hacer esto.",
+ "notSignedInText": "no registrado",
+ "notUsingAccountText": "Nota: ignorando su cuenta de ${SERVICE}.\nVaya a 'Cuenta -> Iniciar sesión con ${SERVICE}' si quieres usarla.",
+ "nothingIsSelectedErrorText": "¡No hay nada seleccionado!",
+ "numberText": "#${NUMBER}",
+ "offText": "Apagar",
+ "okText": "Aceptar",
+ "onText": "Encender",
+ "oneMomentText": "Un Momento...",
+ "onslaughtRespawnText": "${PLAYER} reaparecerá en la oleada ${WAVE}",
+ "openMeText": "Ábreme!",
+ "openNowText": "Abrir Ahora",
+ "openText": "Abrir",
+ "orText": "${A} o ${B}",
+ "otherText": "Otros...",
+ "outOfText": "(#${RANK} de ${ALL})",
+ "ownFlagAtYourBaseWarning": "¡Su propia bandera debe estar\nen su base para anotar!",
+ "partyWindow": {
+ "chatMessageText": "Mensaje del Chat",
+ "emptyText": "Tu partida está vacía",
+ "hostText": "(anfitrión)",
+ "sendText": "Enviar",
+ "titleText": "Tu Partida"
+ },
+ "pausedByHostText": "(pausado por el anfitrión)",
+ "perfectWaveText": "¡Oleada Perfecta!",
+ "pickUpText": "Recoger",
+ "playModes": {
+ "coopText": "Cooperativo",
+ "freeForAllText": "Todos contra Todos",
+ "multiTeamText": "Múlti-Equipo",
+ "singlePlayerCoopText": "Un Jugador / Equipos",
+ "teamsText": "Equipos"
+ },
+ "playText": "Jugar",
+ "playWindow": {
+ "oneToFourPlayersText": "1-4 jugadores",
+ "titleText": "Jugar",
+ "twoToEightPlayersText": "2-8 jugadores"
+ },
+ "playerCountAbbreviatedText": "${COUNT}j",
+ "playerDelayedJoinText": "${PLAYER} entrará al comienzo de la siguiente ronda.",
+ "playerInfoText": "Información del Jugador",
+ "playerLeftText": "${PLAYER} abandonó el juego.",
+ "playerLimitReachedText": "Límite de ${COUNT} jugadores alcanzado; no se permiten más.",
+ "playerProfilesWindow": {
+ "cantDeleteAccountProfileText": "No puedes borrar el perfil de tu cuenta.",
+ "deleteButtonText": "Borrar\nPerfil",
+ "deleteConfirmText": "¿Borrar '${PROFILE}'?",
+ "editButtonText": "Editar\nPerfil",
+ "explanationText": "(nombres de jugadores personalizados y apariencias para esta cuenta)",
+ "newButtonText": "Nuevo\nPerfil",
+ "titleText": "Perfiles del Jugador"
+ },
+ "playerText": "Jugador",
+ "playlistNoValidGamesErrorText": "Esta lista de juegos contiene juegos desbloqueables no válidos.",
+ "playlistNotFoundText": "playlist no encontrada",
+ "playlistText": "Lista de Juegos",
+ "playlistsText": "Listas de juegos",
+ "pleaseRateText": "Si te gusta ${APP_NAME}, por favor tomate un momento\npara calificar o escribir una reseña. Esto proporciona\ninformación útil y ayuda al soporte del futuro desarrollo del juego.\n\n¡gracias!\n-eric",
+ "pleaseWaitText": "Por favor, espera...",
+ "pluginClassLoadErrorText": "Error cargando el complemento '${PLUGIN}': ${ERROR}",
+ "pluginInitErrorText": "Error iniciando complemento '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Ajustes de Complementos",
+ "pluginsAutoEnableNewText": "Activar automáticamente los nuevos complementos",
+ "pluginsDetectedText": "Complemento(s) detectado(s). Reinicia el juego o ve a ajustes para configurarlo.",
+ "pluginsDisableAllText": "Deshabilitar Todos Los Complementos",
+ "pluginsEnableAllText": "Habilitar Todos Los Complementos",
+ "pluginsRemovedText": "${NUM} complemento(s) ya no está(n).",
+ "pluginsText": "Complementos",
+ "practiceText": "Práctica",
+ "pressAnyButtonPlayAgainText": "Presiona cualquier botón para jugar de nuevo...",
+ "pressAnyButtonText": "Presiona cualquier botón para continuar...",
+ "pressAnyButtonToJoinText": "presiona cualquier botón para unirte al juego...",
+ "pressAnyKeyButtonPlayAgainText": "Presiona cualquier tecla/botón para jugar de nuevo...",
+ "pressAnyKeyButtonText": "Presiona cualquier botón/tecla para continuar...",
+ "pressAnyKeyText": "Presiona cualquier tecla...",
+ "pressJumpToFlyText": "** Presiona saltar repetidamente para volar **",
+ "pressPunchToJoinText": "presiona GOLPEAR para unirte...",
+ "pressToOverrideCharacterText": "presiona ${BUTTONS} para cambiar de personaje",
+ "pressToSelectProfileText": "presiona ${BUTTONS} para seleccionar un perfil",
+ "pressToSelectTeamText": "presiona ${BUTTONS} para seleccionar un equipo",
+ "promoCodeWindow": {
+ "codeText": "Código",
+ "enterText": "Ingresar"
+ },
+ "promoSubmitErrorText": "Error al enviar código; comprueba tu conexión a Internet",
+ "ps3ControllersWindow": {
+ "macInstructionsText": "Apaga tu PS3, asegúrate que el Bluetooth esté activado en\ntu Mac, a continuación, conecta el control a tu Mac a través \nde un cable USB para sincronizarlo. A partir de entonces, se \npuede utilizar el botón de inicio del control para conectarlo con\ntu Mac ya sea por cable (USB) o el modo inalámbrico (Bluetooth).\n\nEn algunas Macs es posible que te pida una contraseña al momento de sincronizar.\nSi esto ocurre, consulta el siguiente tutorial o busca en Google para obtener ayuda.\n\n\n\n\nLos controles de PS3 conectados inalámbricamente deberían de aparecer en la lista de\ndispositivos en Preferencias del Sistema->Bluetooth. Puede que tengas que eliminarlos\nde esa lista cuando quieras utilizarlos de nuevo con tu PS3.\n\nAsimismo, asegúrate de desconectarlos del Bluetooth cuando no los estés\nusando o las baterías se queden sin energía.\n\nEl Bluetooth puede soportat hasta 7 dispositivos,\naunque tu kilometraje puede variar.",
+ "ouyaInstructionsText": "Para usar un control de PS3 con tu OUYA, tienes que conectarlo una sola vez con\nun cable USB para sincronizarlo. Al hacer esto se pueden desconectar tus otros \ncontroles, por lo que debes reiniciar tu OUYA y desconectar el cable USB.\n\nA partir de entonces deberías ser capaz de usar el botón INICIO para conectarte de\nforma inalámbrica. Cuando hayas terminado de jugar, mantén pulsado el botón INICIO\ndurante 10 segundos para apagar el control, de lo contrario puede permanecer encendido\ny gastar las baterías.",
+ "pairingTutorialText": "sincronizando video tutorial",
+ "titleText": "Para usar Controles de PS3 con ${APP_NAME}:"
+ },
+ "punchBoldText": "GOLPEAR",
+ "punchText": "Golpear",
+ "purchaseForText": "Comprar por ${PRICE}",
+ "purchaseGameText": "Comprar Juego",
+ "purchaseNeverAvailableText": "Lo siento, las compras no están disponibles en esta build.\nIntenta iniciar sesión en otra plataforma y realizar compras desde ahí.",
+ "purchaseNotAvailableText": "Esta compra no está disponible.",
+ "purchasingText": "Comprando...",
+ "quitGameText": "¿Salir de ${APP_NAME}?",
+ "quittingIn5SecondsText": "Saliendo en 5 segundos...",
+ "randomPlayerNamesText": "Pablo, Cristiano, Fulanito, Macondo, Margarita, Martín, Martina, Fabian, Felipe, Franco, Fernando, Pancho, Pepito, David, Diego, Tomás, Andres, Federico, Juan, Joaquín, Huevo Duro, Chico Pobre, Chico Rico",
+ "randomText": "Generar",
+ "rankText": "Rango",
+ "ratingText": "Valoración",
+ "reachWave2Text": "Llega hasta la segunda horda\npara clasificar.",
+ "readyText": "listo",
+ "recentText": "Reciente",
+ "remoteAppInfoShortText": "${APP_NAME} es más divertido cuando se juega con la familia y amigos.\nConecta uno o más controles de hardware o instala la app\n${REMOTE_APP_NAME} en los teléfonos o tabletas para usarlos\ncomo controles.",
+ "remote_app": {
+ "app_name": "Control Remoto BombSquad",
+ "app_name_short": "BSRemoto",
+ "button_position": "Posición de Los Botones",
+ "button_size": "Tamaño de Los Botones",
+ "cant_resolve_host": "No se encuentra el anfitrión.",
+ "capturing": "Captando...",
+ "connected": "Conectado.",
+ "description": "Usa tu teléfono o tableta como control para BombSquad.\nHasta 8 dispositivos pueden conectarse a la vez para un épico caos de multijugador local en un solo TV o tableta.",
+ "disconnected": "Desconectado por el servidor.",
+ "dpad_fixed": "fijo",
+ "dpad_floating": "flotante",
+ "dpad_position": "Posición del D-Pad",
+ "dpad_size": "Tamaño del D-Pad",
+ "dpad_type": "Tipo de D-Pad",
+ "enter_an_address": "Ingresa una Dirección",
+ "game_full": "El juego está lleno o no acepta conexiones.",
+ "game_shut_down": "El juego se ha cerrado.",
+ "hardware_buttons": "Botones del Hardware",
+ "join_by_address": "Unirse por Dirección...",
+ "lag": "Lag: ${SECONDS} segundo/s",
+ "reset": "Restablecer a predeterminado",
+ "run1": "Ejecutar 1",
+ "run2": "Ejecutar 2",
+ "searching": "Buscando partidas de BombSquad...",
+ "searching_caption": "Toca el nombre de la partida para unirte.\nTen en cuenta que debes estar en la misma conexión Wi-Fi de la partida.",
+ "start": "Empezar",
+ "version_mismatch": "Las versiones no coinciden.\nAsegurate que BombSquad y BombSquad Remote\nestán actualizados e intenta de nuevo."
+ },
+ "removeInGameAdsText": "Desbloquea \"${PRO}\" en la tienda para quitar la publicidad del juego.",
+ "removeInGameAdsTokenPurchaseText": "OFERTA DE TIEMPO LIMITADO: Compra CUALQUIER paquete de fichas para quitar los anuncios del juego.",
+ "renameText": "Renombrar",
+ "replayEndText": "Terminar Repetición",
+ "replayNameDefaultText": "Repetición Último Juego",
+ "replayReadErrorText": "Error leyendo archivo de repetición.",
+ "replayRenameWarningText": "Renombra \"${REPLAY}\" después de un juego si quieres quedarte con el; o sino será reemplazado.",
+ "replayVersionErrorText": "Lo sentimos, esta repetición fue hecha en una\nversión diferente del juego y no se puede usar.",
+ "replayWatchText": "Ver Repetición",
+ "replayWriteErrorText": "Error creando archivo de repetición.",
+ "replaysText": "Repeticiones",
+ "reportPlayerExplanationText": "Usa este email para reportar trampas, lenguaje inapropiado u otro mal comportamiento.\nPor favor, describelo aquí abajo:",
+ "reportThisPlayerCheatingText": "Trampas",
+ "reportThisPlayerLanguageText": "Lenguaje Inapropiado",
+ "reportThisPlayerReasonText": "¿Qué te gustaría reportar?",
+ "reportThisPlayerText": "Reportar Este Jugador",
+ "requestingText": "Solicitando...",
+ "restartText": "Reiniciar",
+ "retryText": "Reintentar",
+ "revertText": "Deshacer",
+ "runText": "Correr",
+ "saveText": "Guardar",
+ "scanScriptsErrorText": "Error(es) escaneando script(s); Vea el registro para más detalles.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} y ${NUM} otro(s) módulo(s) se deberán actualizar para el api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} se deberá actualizar para el api ${API}",
+ "scoreChallengesText": "Desafíos de Puntuación",
+ "scoreListUnavailableText": "La lista de puntajes no está disponible.",
+ "scoreText": "Puntaje",
+ "scoreUnits": {
+ "millisecondsText": "Milisegundos",
+ "pointsText": "Puntos",
+ "secondsText": "Segundos"
+ },
+ "scoreWasText": "(era ${COUNT})",
+ "selectText": "Elegir",
+ "sendInfoDescriptionText": "Envía información del estado de la cuenta y de la aplicación al desarrollador.\nPor favor incluya su nombre o el motivo del envío.",
+ "seriesWinLine1PlayerText": "GANA LA",
+ "seriesWinLine1TeamText": "GANA LA",
+ "seriesWinLine1Text": "GANA LA",
+ "seriesWinLine2Text": "SERIE!",
+ "settingsWindow": {
+ "accountText": "Cuenta",
+ "advancedText": "Avanzado",
+ "audioText": "Audio",
+ "controllersText": "Controles",
+ "graphicsText": "Gráficos",
+ "playerProfilesMovedText": "Nota: Los Perfiles de Jugadores se han movido a la ventana de Cuenta en el menú principal.",
+ "titleText": "Ajustes"
+ },
+ "settingsWindowAdvanced": {
+ "alwaysUseInternalKeyboardDescriptionText": "(un teclado en pantalla simple y amigable con controles para editar textos)",
+ "alwaysUseInternalKeyboardText": "Siempre usar el teclado interno",
+ "benchmarksText": "Rendimiento y Pruebas de Estrés",
+ "devToolsText": "Herramientas de Desarrollador",
+ "disableCameraGyroscopeMotionText": "Deshabilitar el movimiento del giroscopio de la cámara",
+ "disableCameraShakeText": "Deshabilitar el temblor de la cámara",
+ "disableThisNotice": "(puedes deshabilitar este aviso en ajustes avanzados)",
+ "enterPromoCodeText": "Ingresar Código",
+ "forTestingText": "Nota: estos datos son solo para pruebas y se reiniciarán cuando salga de la app.",
+ "helpTranslateText": "Las traducciones de ${APP_NAME} son un esfuerzo\napoyado por la comunidad. Si deseas aportar o corregir una\ntraducción, utiliza el siguiente enlace. ¡Gracias de antemano!",
+ "insecureConnectionsDescriptionText": "no es recomendado, pero quizás permita el multijugador\ndesde paises o conexiones restringidas.",
+ "insecureConnectionsText": "Usar conexiones inseguras",
+ "kickIdlePlayersText": "Expulsar a jugadores inactivos",
+ "kidFriendlyModeText": "Modo Niños (violencia reducida, etc).",
+ "languageText": "Idioma",
+ "moddingGuideText": "Guía de Modificación",
+ "moddingToolsText": "Herramientas de Modificación",
+ "mustRestartText": "Tienes que reiniciar el juego para que tome efecto.",
+ "netTestingText": "Prueba de Red",
+ "resetText": "Reiniciar",
+ "sendInfoText": "Enviar Información",
+ "showBombTrajectoriesText": "Mostrar Trayectorias de Las Bombas",
+ "showDemosWhenIdleText": "Mostrar demostraciones cuando estés inactivo",
+ "showDeprecatedLoginTypesText": "Mostrar tipos de inicio de sesión obsoletos",
+ "showDevConsoleButtonText": "Mostrar botón de consola de desarrollador",
+ "showInGamePingText": "Mostrar ping en el juego",
+ "showPlayerNamesText": "Mostrar Nombres de Los Jugadores",
+ "showUserModsText": "Mostrar Carpeta de Mods",
+ "titleText": "Avanzado",
+ "translationEditorButtonText": "Editor de Traducción de ${APP_NAME}",
+ "translationFetchErrorText": "estado de traducción no disponible",
+ "translationFetchingStatusText": "viendo estado de traducción...",
+ "translationInformMe": "Informarme cuando mi idioma necesite actualizaciones",
+ "translationNoUpdateNeededText": "El idioma actual está actualizado; ¡wuju!",
+ "translationUpdateNeededText": "** ¡¡El idioma actual necesita actualizarse!! **",
+ "vrTestingText": "Prueba RV"
+ },
+ "shareText": "Compartir",
+ "sharingText": "Compartiendo...",
+ "showText": "Mostrar",
+ "signInForPromoCodeText": "Debes iniciar sesión con tu cuenta para que el código funcione.",
+ "singleGamePlaylistNameText": "Solo ${GAME}",
+ "singlePlayerCountText": "1 jugador",
+ "sizeLargeText": "Grande",
+ "sizeMediumText": "Mediano",
+ "sizeSmallText": "Pequeño",
+ "soloNameFilterText": "Solo ${NAME}",
+ "soundtrackTypeNames": {
+ "CharSelect": "Selección de Personajes",
+ "Chosen One": "El Elegido",
+ "Epic": "Juegos en Modo Épico",
+ "Epic Race": "Carrera Épica",
+ "FlagCatcher": "Captura la Bandera",
+ "Flying": "Pensamientos Felices",
+ "Football": "Fútbol",
+ "ForwardMarch": "Asalto",
+ "GrandRomp": "Conquista",
+ "Hockey": "Hockey",
+ "Keep Away": "Aléjate",
+ "Marching": "Evasiva",
+ "Menu": "Menú Principal",
+ "Onslaught": "Matanza",
+ "Race": "Carrera",
+ "Scary": "Rey de la Colina",
+ "Scores": "Pantalla de Puntuación",
+ "Survival": "Eliminación",
+ "ToTheDeath": "Combate Mortal",
+ "Victory": "Pantalla de Puntuación Final"
+ },
+ "spaceKeyText": "espacio",
+ "statsText": "Estadísticas",
+ "stopRemindingMeText": "Deja de recordarmelo",
+ "storagePermissionAccessText": "Esto requiere acceso de almacenamiento",
+ "store": {
+ "alreadyOwnText": "¡Ya tienes ${NAME}!",
+ "bombSquadProNameText": "${APP_NAME} Pro",
+ "bombSquadProNewDescriptionText": "• Quita los anuncios y las pantallas molestas\n• Desbloquea más ajustes del juego\n• También incluye:",
+ "buyText": "Comprar",
+ "charactersText": "Personajes",
+ "comingSoonText": "Próximamente...",
+ "extrasText": "Extras",
+ "holidaySpecialText": "¡Especial de Temporada!",
+ "howToSwitchCharactersText": "(ve a \"${SETTINGS} -> ${PLAYER_PROFILES}\" para asignar y personalizar los personajes)",
+ "howToUseIconsText": "(crea perfiles globales de jugador (en la ventana de cuenta) para usarlos)",
+ "howToUseMapsText": "(usa estos mapas en tus listas de juegos por equipos y todos contra todos)",
+ "iconsText": "Iconos",
+ "loadErrorText": "No se pudo cargar la página.\nRevisa tu conexión a internet.",
+ "loadingText": "cargando",
+ "mapsText": "Mapas",
+ "miniGamesText": "MiniJuegos",
+ "oneTimeOnlyText": "(solo una vez)",
+ "purchaseAlreadyInProgressText": "Una compra de este artículo se encuentra en progreso.",
+ "purchaseConfirmText": "¿Comprar ${ITEM}?",
+ "purchaseNotValidError": "Compra inválida.\nContacte a ${EMAIL} si esto es un error.",
+ "purchaseText": "Comprar",
+ "saleBundleText": "¡Paquete en Oferta!",
+ "saleExclaimText": "¡Oferta!",
+ "salePercentText": "(${PERCENT}% menos)",
+ "saleText": "OFERTA",
+ "searchText": "Buscar",
+ "teamsFreeForAllGamesText": "Juegos de Equipos / Todos contra Todos",
+ "totalWorthText": "*** ¡${TOTAL_WORTH} de valor! ***",
+ "upgradeQuestionText": "¿Mejorar?",
+ "winterSpecialText": "Especial de Invierno",
+ "youOwnThisText": "- ya posees esto -"
+ },
+ "storeDescriptionText": "¡Juego de locura de a 8 Jugadores!\n\n¡Revienta a tus amigos (o a la computadora) en un torneo de mini-juegos explosivos como Captura la Bandera, Hockey-Bomba y Combate Mortal Épico en cámara lenta!\n\nControles sencillos y un amplio soporte de controles hacen que sea fácil que 8 personas entren en la acción; ¡incluso puedes usar tus dispositivos móviles como controles a través de la aplicación gratuita de 'Control Remoto BombSquad'!\n\n¡Fuera Bombas!\n\nEcha un vistazo en: www.froemling.net/bombsquad para más información.",
+ "storeDescriptions": {
+ "blowUpYourFriendsText": "Revienta a tus amigos.",
+ "competeInMiniGamesText": "Compite en minijuegos de carreras, vuelo y mucho más.",
+ "customize2Text": "Personaliza personajes, minijuegos e incluso la banda sonora.",
+ "customizeText": "Personaliza tus personajes y crea tus propias listas de minijuegos.",
+ "sportsMoreFunText": "Los deportes son más divertidos con explosivos.",
+ "teamUpAgainstComputerText": "Forma un equipo contra la computadora."
+ },
+ "storeText": "Tienda",
+ "submitText": "Enviar",
+ "submittingPromoCodeText": "Enviando Código...",
+ "successText": "¡Éxito!",
+ "supportEmailText": "Si estás teniendo algún problema con la\napp, por favor, manda un email a ${EMAIL}.",
+ "teamNamesColorText": "Nombres de Equipos/Colores...",
+ "telnetAccessGrantedText": "Esta versión de prueba ya no está activa; busca una versión nueva.",
+ "telnetAccessText": "Acceso a Telnet detectado; ¿permitir?",
+ "testBuildErrorText": "Esta versión de prueba ya no es activa; busca una versión más nueva.",
+ "testBuildText": "Compilación de Prueba",
+ "testBuildValidateErrorText": "Incapaz de validar esta compilación de prueba. (¿no tienes conexión a internet?)",
+ "testBuildValidatedText": "Compilación de Prueba Validada; ¡Disfruta!",
+ "thankYouText": "¡Gracias por tu ayuda! ¡¡Disfruta el juego!!",
+ "threeKillText": "¡¡COMBO TRIPLE!!",
+ "ticketsDescriptionText": "Los tickets pueden ser usados para desbloquear\npersonajes, mapas, minijuegos y más en la tienda.\n\nLos tickets pueden ser encontrados en los cofres\nganados a través de la campaña, torneos y logros.",
+ "timeBonusText": "Bono de Tiempo",
+ "timeElapsedText": "Tiempo Transcurrido",
+ "timeExpiredText": "Tiempo Expirado",
+ "timeSuffixDaysText": "${COUNT}d",
+ "timeSuffixHoursText": "${COUNT}h",
+ "timeSuffixMinutesText": "${COUNT}m",
+ "timeSuffixSecondsText": "${COUNT}s",
+ "tipText": "Consejo",
+ "titleText": "BombSquad",
+ "titleVRText": "BombSquad RV",
+ "tokens": {
+ "getTokensText": "Obtén Fichas",
+ "notEnoughTokensText": "¡Fichas insuficientes!",
+ "numTokensText": "${COUNT} Fichas",
+ "openNowDescriptionText": "Tienes suficiente fichas para \nabrir esto ahora - no tienes\nque esperar.",
+ "shinyNewCurrencyText": "La brillante nueva moneda de BombSquad.",
+ "tokenPack1Text": "Paquete de Fichas Pequeña",
+ "tokenPack2Text": "Paquete de Fichas Mediana",
+ "tokenPack3Text": "Paquete de Fichas Grande",
+ "tokenPack4Text": "Paquete de Fichas Jumbo",
+ "tokensDescriptionText": "Los tokens son usados para acelerar el desbloqueo de\ncofres entre otras funciones del juego y la cuenta.\n\nPuedes ganar fichas en el juego o comprarlas\nen paquetes. O comprar el Pase de Oro para tokens \ninfinitos y nunca más escuchar de ellos de nuevo.",
+ "youHaveGoldPassText": "Tienes un Pase de Oro.\nTodas las compras de fichas son gratis.\nDisfruta!"
+ },
+ "topFriendsText": "Mejores Amigos",
+ "tournamentCheckingStateText": "Buscando estado del campeonato; espere por favor...",
+ "tournamentEndedText": "Este torneo ha acabado. Uno nuevo comenzará pronto.",
+ "tournamentEntryText": "Entrada Al Torneo",
+ "tournamentFinalStandingsText": "Clasificación Final",
+ "tournamentResultsRecentText": "Resultados de Torneos Recientes",
+ "tournamentStandingsText": "Puestos del Torneo",
+ "tournamentText": "Torneo",
+ "tournamentTimeExpiredText": "Tiempo del Torneo Expirado",
+ "tournamentsDisabledWorkspaceText": "Los torneos están deshabilitados cuando los espacios de trabajo están activos.\nPara volver a habilitar los torneos, deshabilite su espacio de trabajo y reinicie el juego.",
+ "tournamentsText": "Torneos",
+ "translations": {
+ "characterNames": {
+ "Agent Johnson": "Agente Johnson",
+ "B-9000": "B-9000",
+ "Bernard": "Bernard",
+ "Bones": "Huesos",
+ "Butch": "Butch",
+ "Easter Bunny": "Conejo de Pascua",
+ "Flopsy": "Flopsy",
+ "Frosty": "Frosty",
+ "Gretel": "Gretel",
+ "Grumbledorf": "Grumbledorf",
+ "Jack Morgan": "Jack Morgan",
+ "Kronk": "Kronk",
+ "Lee": "Lee",
+ "Lucky": "Suertudo",
+ "Mel": "Mel",
+ "Middle-Man": "Hombre Intermedio",
+ "Minimus": "Minimus",
+ "Pascal": "Pascal",
+ "Pixel": "Pixel",
+ "Sammy Slam": "Sammy Slam",
+ "Santa Claus": "Papá Noel",
+ "Snake Shadow": "Serpiente Sombría",
+ "Spaz": "Spaz",
+ "Taobao Mascot": "Taobao",
+ "Todd McBurton": "Todd McBurton",
+ "Zoe": "Zoe",
+ "Zola": "Zola"
+ },
+ "coopLevelNames": {
+ "${GAME} Training": "Entrenamiento de ${GAME}",
+ "Infinite ${GAME}": "${GAME} Infinito",
+ "Infinite Onslaught": "Matanza Infinita",
+ "Infinite Runaround": "Evasiva Infinita",
+ "Onslaught Training": "Entrenamiento de Matanza",
+ "Pro ${GAME}": "${GAME} Pro",
+ "Pro Football": "Fútbol Pro",
+ "Pro Onslaught": "Matanza Pro",
+ "Pro Runaround": "Evasiva Pro",
+ "Rookie ${GAME}": "${GAME} Novato",
+ "Rookie Football": "Fútbol Novato",
+ "Rookie Onslaught": "Matanza Novato",
+ "The Last Stand": "La Batalla Final",
+ "Uber ${GAME}": "${GAME} Ultra",
+ "Uber Football": "Fútbol Ultra",
+ "Uber Onslaught": "Matanza Ultra",
+ "Uber Runaround": "Evasiva Ultra"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} Boletos",
+ "${C} Tokens": "${C} Ficha(s)",
+ "Chest": "Cofre",
+ "L1 Chest": "Cofre N1",
+ "L2 Chest": "Cofre N2",
+ "L3 Chest": "Cofre N3",
+ "L4 Chest": "Cofre N4",
+ "L5 Chest": "Cofre N5",
+ "L6 Chest": "Cofre N6",
+ "Unknown Chest": "Cofre Desconocido"
+ },
+ "gameDescriptions": {
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Sé el elegido durante el tiempo designado para ganar.\nMata al elegido para convertirte en él.",
+ "Bomb as many targets as you can.": "Bombardea tantos blancos como puedas.",
+ "Carry the flag for ${ARG1} seconds.": "Carga la bandera por ${ARG1} segundos.",
+ "Carry the flag for a set length of time.": "Carga la bandera por un determinado tiempo.",
+ "Crush ${ARG1} of your enemies.": "Elimina ${ARG1} de tus enemigos.",
+ "Defeat all enemies.": "Acaba con todo lo que se mueva.",
+ "Dodge the falling bombs.": "Esquiva las bombas.",
+ "Final glorious epic slow motion battle to the death.": "Gloriosa batalla final en épica cámara lenta hasta la muerte.",
+ "Gather eggs!": "¡Recolecta huevos!",
+ "Get the flag to the enemy end zone.": "Lleva la bandera enemiga a tu zona.",
+ "How fast can you defeat the ninjas?": "¿Cuán rápido puedes derrotar a los ninjas?",
+ "Kill a set number of enemies to win.": "Mata a un número determinado de enemigos para ganar.",
+ "Last one standing wins.": "El último en pie gana.",
+ "Last remaining alive wins.": "El último en quedar vivo gana.",
+ "Last team standing wins.": "El último equipo en pie gana.",
+ "Prevent enemies from reaching the exit.": "Evita que los enemigos lleguen a la salida.",
+ "Reach the enemy flag to score.": "Toca la bandera enemiga para anotar.",
+ "Return the enemy flag to score.": "Devuelve la bandera enemiga para anotar.",
+ "Run ${ARG1} laps.": "Corre ${ARG1} vueltas.",
+ "Run ${ARG1} laps. Your entire team has to finish.": "Corre ${ARG1} vueltas. Todo tu equipo debe cruzar la meta.",
+ "Run 1 lap.": "Corre 1 vuelta.",
+ "Run 1 lap. Your entire team has to finish.": "Corre 1 vuelta. Todo tu equipo debe cruzar la meta.",
+ "Run real fast!": "¡Corre muy rápido!",
+ "Score ${ARG1} goals.": "Anota ${ARG1} goles.",
+ "Score ${ARG1} touchdowns.": "Anota ${ARG1} touchdowns.",
+ "Score a goal.": "Anota un gol.",
+ "Score a touchdown.": "Anota un touchdown.",
+ "Score some goals.": "Anota unos goles.",
+ "Secure all ${ARG1} flags.": "Asegura las ${ARG1} banderas.",
+ "Secure all flags on the map to win.": "Asegura todas las banderas en el mapa para ganar.",
+ "Secure the flag for ${ARG1} seconds.": "Asegura la bandera por ${ARG1} segundos.",
+ "Secure the flag for a set length of time.": "Asegura la bandera por un tiempo determinado.",
+ "Steal the enemy flag ${ARG1} times.": "Roba la bandera enemiga ${ARG1} veces.",
+ "Steal the enemy flag.": "Roba la bandera enemiga.",
+ "There can be only one.": "Solo puede haber uno.",
+ "Touch the enemy flag ${ARG1} times.": "Toca la bandera enemiga ${ARG1} veces.",
+ "Touch the enemy flag.": "Toca la bandera enemiga.",
+ "carry the flag for ${ARG1} seconds": "carga la bandera por ${ARG1} segundos.",
+ "kill ${ARG1} enemies": "mata a ${ARG1} enemigos",
+ "last one standing wins": "el último en pie gana",
+ "last team standing wins": "el último equipo en pie gana",
+ "return ${ARG1} flags": "devuelve ${ARG1} banderas",
+ "return 1 flag": "devuelve 1 bandera",
+ "run ${ARG1} laps": "corre ${ARG1} vueltas",
+ "run 1 lap": "corre 1 vuelta",
+ "score ${ARG1} goals": "anota ${ARG1} goles",
+ "score ${ARG1} touchdowns": "anota ${ARG1} touchdowns",
+ "score a goal": "anota un gol",
+ "score a touchdown": "anota un touchdown",
+ "secure all ${ARG1} flags": "asegura las ${ARG1} banderas",
+ "secure the flag for ${ARG1} seconds": "asegura la bandera por ${ARG1} segundos",
+ "touch ${ARG1} flags": "toca ${ARG1} banderas",
+ "touch 1 flag": "toca 1 bandera"
+ },
+ "gameNames": {
+ "Assault": "Asalto",
+ "Capture the Flag": "Captura la Bandera",
+ "Chosen One": "El Elegido",
+ "Conquest": "Conquista",
+ "Death Match": "Combate Mortal",
+ "Easter Egg Hunt": "Búsqueda de Huevos de Pascua",
+ "Elimination": "Eliminación",
+ "Football": "Fútbol",
+ "Hockey": "Hockey",
+ "Keep Away": "Aléjate",
+ "King of the Hill": "Rey de la Colina",
+ "Meteor Shower": "Lluvia de Meteoritos",
+ "Ninja Fight": "Pelea Ninja",
+ "Onslaught": "Matanza",
+ "Race": "Carrera",
+ "Runaround": "Evasiva",
+ "Target Practice": "Blanco de Práctica",
+ "The Last Stand": "La Batalla Final"
+ },
+ "inputDeviceNames": {
+ "Keyboard": "Teclado",
+ "Keyboard P2": "Teclado P2"
+ },
+ "languages": {
+ "Arabic": "Árabe",
+ "Belarussian": "Bielorruso",
+ "Chinese": "Chino - Simplificado ",
+ "ChineseSimplified": "Chino Simplificado",
+ "ChineseTraditional": "Chino Tradicional (Zhōngwén)",
+ "Croatian": "Croata",
+ "Czech": "Checo",
+ "Danish": "Danés",
+ "Dutch": "Holandés",
+ "English": "Inglés",
+ "Esperanto": "Esperanto",
+ "Filipino": "Filipino",
+ "Finnish": "Finlandés",
+ "French": "Francés",
+ "German": "Alemán",
+ "Gibberish": "Algarabía",
+ "Greek": "Griego",
+ "Hindi": "Hindi",
+ "Hungarian": "Húngaro",
+ "Indonesian": "Indonesio",
+ "Italian": "Italiano",
+ "Japanese": "Japonés",
+ "Korean": "Coreano",
+ "Malay": "Malayo",
+ "Persian": "Persa",
+ "PirateSpeak": "Habla Pirata",
+ "Polish": "Polaco",
+ "Portuguese": "Portugués",
+ "PortugueseBrazil": "Portugués - Brazil",
+ "PortuguesePortugal": "Portugués - Portugal",
+ "Romanian": "Rumano",
+ "Russian": "Ruso",
+ "Serbian": "Serbio",
+ "Slovak": "Eslovaco",
+ "Spanish": "Español",
+ "SpanishLatinAmerica": "Español - Latinoamerica",
+ "SpanishSpain": "Español - España",
+ "Swedish": "Sueco",
+ "Tamil": "Tamil",
+ "Thai": "Tailandés",
+ "Turkish": "Turco",
+ "Ukrainian": "Ucraniano",
+ "Venetian": "Veneciano",
+ "Vietnamese": "Vietnamita"
+ },
+ "leagueNames": {
+ "Bronze": "Bronce",
+ "Diamond": "Diamante",
+ "Gold": "Oro",
+ "Silver": "Plata"
+ },
+ "mapsNames": {
+ "Big G": "Gran G",
+ "Bridgit": "Puentecito",
+ "Courtyard": "Patio Real",
+ "Crag Castle": "Castillo del Risco",
+ "Doom Shroom": "Hongo de La Muerte",
+ "Football Stadium": "Estadio de Fútbol",
+ "Happy Thoughts": "Pensamientos Felices",
+ "Hockey Stadium": "Estadio de Hockey",
+ "Lake Frigid": "Lago Frígido",
+ "Monkey Face": "Cara de Mono",
+ "Rampage": "Medio Tubo",
+ "Roundabout": "Rotonda",
+ "Step Right Up": "Paso Al Frente",
+ "The Pad": "La Plataforma",
+ "Tip Top": "Punta Superior",
+ "Tower D": "Torre D",
+ "Zigzag": "Zigzag"
+ },
+ "playlistNames": {
+ "Just Epic": "Solo Épico",
+ "Just Sports": "Solo Deportes"
+ },
+ "scoreNames": {
+ "Flags": "Banderas",
+ "Goals": "Goles",
+ "Score": "Puntaje",
+ "Survived": "Sobrevivió",
+ "Time": "Tiempo",
+ "Time Held": "Tiempo Mantenido"
+ },
+ "serverResponses": {
+ "A code has already been used on this account.": "Este código ya ha sido usado en esta cuenta.",
+ "A reward has already been given for that address.": "Ya se le ha dado una recompensa a esa dirección.",
+ "Account linking successful!": "¡Vinculación de cuenta exitosa!",
+ "Account unlinking successful!": "¡Desvinculación de cuenta exitosa!",
+ "Accounts are already linked.": "Las cuentas ya están vinculadas.",
+ "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "No se pudo verificar la vista del anuncio. \nPor favor asegúrese de estar ejecutando una versión oficial y actualizada del juego.",
+ "An error has occurred; (${ERROR})": "Un error ha ocurrido; (${ERROR})",
+ "An error has occurred; please contact support. (${ERROR})": "Un error ha ocurrido; por favor contacte al soporte. (${ERROR})",
+ "An error has occurred; please contact support@froemling.net.": "Un error ha ocurrido; por favor contacta a support@froemling.net.",
+ "An error has occurred; please try again later.": "Un error ha ocurrido; por favor intentalo más tarde.",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "¿Quieres vincular estas cuentas?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\n¡Esto no se puede deshacer!",
+ "BombSquad Pro unlocked!": "¡BombSquad Pro desbloqueado!",
+ "Can't link 2 accounts of this type.": "No se pueden vincular 2 cuentas de este tipo.",
+ "Can't link 2 diamond league accounts.": "No se pueden vincular 2 cuentas de liga diamante.",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "No se pudo vincular; sobrepasaría el máximo de cuentas vinculadas de ${COUNT}.",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Trampa detectada; puntajes y premios suspendidos por ${COUNT} días.",
+ "Could not establish a secure connection.": "No se pudo establecer una conexión segura.",
+ "Daily maximum reached.": "Máximo diario conseguido.",
+ "Daily sign-in reward": "Recompensa por iniciar sesión diariamente",
+ "Entering tournament...": "Entrando al torneo...",
+ "Invalid code.": "Código inválido.",
+ "Invalid payment; purchase canceled.": "Pago inválido; compra cancelada.",
+ "Invalid promo code.": "Código promocional inválido.",
+ "Invalid purchase.": "Compra inválida.",
+ "Invalid tournament entry; score will be ignored.": "Entrada de torneo inválida; el puntaje será ignorado.",
+ "Item unlocked!": "¡Artículo desbloqueado!",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "VINCULACIÓN DENEGADA. ${ACCOUNT} contiene\ndatos significativos que podrían PERDERSE EN SU TOTALIDAD.\nPuedes vincular en el orden opuesto si lo desea\n(y pierda los datos de ESTA cuenta en su lugar)",
+ "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "¿Vincular ${ACCOUNT} a esta cuenta?\nTodos los datos en ${ACCOUNT} desaparecerán.\nEsto no se puede deshacer. ¿Estás seguro?",
+ "Longer streaks lead to better rewards.": "Rachas mayores significan Mejores recompensas.",
+ "Max number of playlists reached.": "Número máximo de listas de juegos alcanzado.",
+ "Max number of profiles reached.": "Número máximo de perfiles alcanzado.",
+ "Maximum friend code rewards reached.": "Máximo de premios por códigos de amigos alcanzado.",
+ "Message is too long.": "El mensaje es muy largo.",
+ "New tournament result!": "¡Nuevo resultado del torneo!",
+ "No servers are available. Please try again soon.": "Sin servidores disponibles. Por favor inténtelo de nuevo más tarde.",
+ "No slots available. Free a slot and try again.": "No hay ranuras libres. Libere una e intentélo de nuevo.",
+ "Profile \"${NAME}\" upgraded successfully.": "El perfil \"${NAME}\" se ha mejorado satisfactoriamente.",
+ "Profile could not be upgraded.": "El perfil no pudo ser mejorado.",
+ "Purchase successful!": "¡Compra exitosa!",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Has recibido ${COUNT} boletos por iniciar sesión.\nRegresa mañana para recibir ${TOMORROW_COUNT} boletos.",
+ "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "La funcionalidad del servidor ya no es compatible en esta versión del juego;\nActualiza a una versión más reciente.",
+ "Sorry, there are no uses remaining on this code.": "Disculpe, pero no quedan usos disponibles de este código.",
+ "Sorry, this code has already been used.": "Disculpe, este código ya ha sido usado.",
+ "Sorry, this code has expired.": "Disculpe, este código ha expirado.",
+ "Sorry, this code only works for new accounts.": "Disculpe, este código solo funciona para cuentas nuevas.",
+ "Sorry, this has expired.": "Disculpe, esto ya ha expirado.",
+ "Still searching for nearby servers; please try again soon.": "Todavía buscando por servidores cercanos; inténtelo de nuevo más tarde.",
+ "Streak: ${NUM} days": "Racha de: ${NUM} días",
+ "Temporarily unavailable; please try again later.": "Temporalmente indisponible; por favor inténtalo más tarde.",
+ "The tournament ended before you finished.": "El torneo terminó antes de que terminaras.",
+ "This account cannot be unlinked for ${NUM} days.": "Esta cuenta no puede ser desvinculada por ${NUM} día(s).",
+ "This code cannot be used on the account that created it.": "Este código no puede ser usado en la misma cuenta que ha sido creado.",
+ "This is currently unavailable; please try again later.": "Esto no está disponible actualmente; por favor inténtelo más tarde.",
+ "This requires version ${VERSION} or newer.": "Esto requiere la versión ${VERSION} o una más reciente.",
+ "Tournaments disabled due to rooted device.": "Los torneos han sido deshabilitados debido a que tú dispositivo esta rooteado.",
+ "Tournaments require ${VERSION} or newer": "Los torneos requieren la versión ${VERSION} o más nueva",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "¿Desvincular ${ACCOUNT} de esta cuenta?\nTodos los datos en ${ACCOUNT} se reiniciarán.\n(excepto los logros en algunos casos)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ADVERTENCIA: Se han emitido reclamaciones de hackeos contra tu cuenta.\nLas cuentas que se encuentren hackeando serán baneadas. Por favor juega limpio.",
+ "Wait reduced!": "Espera reducida!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Advertencia: Esta versión del juego está limitada a los datos de cuenta antiguos; es posible que falten datos o que estén desactualizados.\nPor favor actualiza a una versión más reciente del juego para ver los datos más recientes de tu cuenta.",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "¿Quieres vincular tu cuenta de dispositivo a esta otra?\n\nTu cuenta de dispositivo es ${ACCOUNT1}\nEsta cuenta es ${ACCOUNT2}\n\nEsto permitirá guardar tu progreso actual.\nAdvertencia: ¡Esto no se puede deshacer!",
+ "You already own this!": "¡Ya posees esto!",
+ "You can join in ${COUNT} seconds.": "Puedes unirte en ${COUNT} segundo(s).",
+ "You don't have enough tickets for this!": "¡No tienes suficientes boletos para esto!",
+ "You don't own that.": "No posees eso.",
+ "You got ${COUNT} tickets!": "¡Obtuviste ${COUNT} boletos!",
+ "You got ${COUNT} tokens!": "¡Obtuviste ${COUNT} ficha(s)!",
+ "You got a ${ITEM}!": "¡Conseguiste un ${ITEM}!",
+ "You got a chest!": "¡Obtuviste un cofre!",
+ "You got an achievement reward!": "¡Obtuviste una recompensa por tu logro!",
+ "You have been promoted to a new league; congratulations!": "Has sido ascendido a una nueva liga; ¡felicitaciones!",
+ "You lost a chest! (All your chest slots were full)": "¡Perdiste un cofre! (Todas tus ranuras de cofres estaban llenas).",
+ "You must update the app to view this.": "Debes actualizar la aplicación para ver esto.",
+ "You must update to a newer version of the app to do this.": "Debes actualizar la aplicación a una versión más reciente para hacer esto.",
+ "You must update to the newest version of the game to do this.": "Necesitas actualizar a la versión más reciente del juego para hacer esto.",
+ "You must wait a few seconds before entering a new code.": "Debes esperar unos segundos antes de ingresar un código nuevo.",
+ "You placed #${RANK} in a tournament!": "Quedaste en el puesto #${RANK} en un torneo!",
+ "You ranked #${RANK} in the last tournament. Thanks for playing!": "Quedaste en la posición #${RANK} en el campeonato. ¡Gracias por jugar!",
+ "Your account was rejected. Are you signed in?": "Tu cuenta fue rechazada. ¿Estás registrado?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Tus vistas de anuncios no se están registrando. Las opciones de anuncios serán limitadas por un tiempo.",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Tu copia del juego fue modificada.\nPor favor revierte estos cambios e intenta de nuevo.",
+ "Your friend code was used by ${ACCOUNT}": "Tu código de amigo fue usado por ${ACCOUNT}"
+ },
+ "settingNames": {
+ "1 Minute": "1 Minuto",
+ "1 Second": "1 Segundo",
+ "10 Minutes": "10 Minutos",
+ "2 Minutes": "2 Minutos",
+ "2 Seconds": "2 Segundos",
+ "20 Minutes": "20 Minutos",
+ "4 Seconds": "4 Segundos",
+ "5 Minutes": "5 Minutos",
+ "8 Seconds": "8 Segundos",
+ "Allow Negative Scores": "Permitir Puntajes Negativos",
+ "Balance Total Lives": "Repartir Vidas Totales",
+ "Bomb Spawning": "Aparecer Bombas",
+ "Chosen One Gets Gloves": "El Elegido Consigue Guantes de Boxeo",
+ "Chosen One Gets Shield": "El Elegido Consigue Electro-Escudo",
+ "Chosen One Time": "Tiempo del Elegido",
+ "Enable Impact Bombs": "Habilitar Insta-Bombas",
+ "Enable Triple Bombs": "Habilitar Bombas Triples",
+ "Entire Team Must Finish": "Todo el Equipo Debe Terminar",
+ "Epic Mode": "Modo Épico",
+ "Flag Idle Return Time": "Tiempo de Retorno de Bandera Inactiva",
+ "Flag Touch Return Time": "Retorno de Bandera con Toque",
+ "Hold Time": "Retención",
+ "Kills to Win Per Player": "Asesinatos para Ganar Por Jugador",
+ "Laps": "Vueltas",
+ "Lives Per Player": "Vidas Por Jugador",
+ "Long": "Largo",
+ "Longer": "Más Largo",
+ "Mine Spawning": "Aparecer Minas",
+ "No Mines": "Sin Minas",
+ "None": "Ninguno",
+ "Normal": "Normal",
+ "Pro Mode": "Modo Pro",
+ "Respawn Times": "Tiempo de Reaparición",
+ "Score to Win": "Puntos para Ganar",
+ "Short": "Corto",
+ "Shorter": "Más Corto",
+ "Solo Mode": "Modo Solitario",
+ "Target Count": "Número de Objetivos",
+ "Time Limit": "Límite de Tiempo"
+ },
+ "statements": {
+ "${TEAM} is disqualified because ${PLAYER} left": "${TEAM} ha sido descalificado porque ${PLAYER} se ha ido",
+ "Killing ${NAME} for skipping part of the track!": "¡${NAME} Murió por saltarse un pedazo de la pista!",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Advertencia para ${NAME}: turbo / spam de botones te noqueará."
+ },
+ "teamNames": {
+ "Bad Guys": "Chicos Malos",
+ "Blue": "Azul",
+ "Good Guys": "Chicos Buenos",
+ "Red": "Rojo"
+ },
+ "tips": {
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Un corre-salta-gira-golpea perfecto puede destrozar de un solo impacto\ny ganarte el respeto de tus amigos para toda la vida.",
+ "Always remember to floss.": "Siempre acuérdate de cepillar tus dientes.",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Crea perfiles para \ntu y tus amigos \ncon \ntus nombres preferidos y\napariencias en vez de usar unos aleatorios.",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Las cajas de maldición te convierten en una bomba de tiempo.\nLa única cura es agarrar rápidamente un botiquín.",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "A pesar de sus apariencias, las habilidades de todos los personajes\nson idénticas, así que escoge el que más te guste a ti.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "No eres invencible con ese electro-escudo; todavía puedes caerte de un acantilado.",
+ "Don't run all the time. Really. You will fall off cliffs.": "No corras todo el tiempo. En serio. Te vas a caer.",
+ "Don't spin for too long; you'll become dizzy and fall.": "No gires por un largo tiempo; puedes marearte y caer.",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Mantén cualquier botón para correr. (Los gatillos son para eso si los tienes)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Mantén presionado cualquier botón para correr. Llegarás a lugares más rápido\npero no girarás muy bien, así que cuidado con los acantilados.",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Las Bombas de Hielo no son muy potentes, pero congelan lo\nque toquen, dejando a tus enemigos vulnerables a romperse.",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Si alguien te recoge, dale un golpe y te soltará.\nTambién funciona en la vida real.",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Si no tienes suficientes controles, instala la aplicación '${REMOTE_APP_NAME}'\nen tus dispositivos móviles para usarlos como controles.",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Si te adhieres a una bomba pegajosa, salta y da muchas vueltas. Es posible que sacudas\nla bomba pegada o sin nada más tus últimos momentos serán entretenidos.",
+ "If you kill an enemy in one hit you get double points for it.": "Si matas a un enemigo de un solo golpe obtendrás puntos dobles.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Si tomaste una maldición, tu única esperanza es\nencontrar un botiquín en tus últimos segundos.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "Si te quedas quieto, estás frito. Corre y esquiva para sobrevivir...",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Si tienes muchos jugadores yendo y viniendo, activa 'expulsar jugadores inactivos'\nen ajustes en caso de que alguien se olvide de abandonar el juego.",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Si tu dispositivo se pone caliente o te gustaría conservar batería,\nbaja los \"Visuales\" o la \"Resolución\" en Ajustes->Gráficos",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Si la imagen va lenta, intenta reducir la resolución\no los visuales en los ajustes gráficos del juego.",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "En Captura la Bandera, la bandera tuya debe estar en tu base para que anotes.\nSi el otro equipo está a punto de anotar, robar su bandera evitará que anoten.",
+ "In hockey, you'll maintain more speed if you turn gradually.": "En hockey, mantendrás tu impulso si giras gradualmente.",
+ "It's easier to win with a friend or two helping.": "Es más fácil ganar con un amigo o dos ayudando.",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "Salta antes de tirar una bomba para que alcance lugares altos.",
+ "Land-mines are a good way to stop speedy enemies.": "Las minas terrestres son una buena manera para detener enemigos veloces.",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Muchas cosas se pueden recoger y lanzar, incluyendo a otros jugadores.\nArroja a tus enemigos por los precipicios. Te sentirás mejor.",
+ "No, you can't get up on the ledge. You have to throw bombs.": "No, no puedes subir a la cornisa. Tienes que lanzar bombas.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Los jugadores pueden unirse e irse en medio de casi todos los juegos,\ntambién puedes conectar o quitar controles en cualquier momento.",
+ "Practice using your momentum to throw bombs more accurately.": "Practica usando tu impulso para tirar bombas con más precisión.",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Los golpes hacen más daño cuanto más rápido se mueven tus puños,\nasí que intenta correr, saltar y girar como un loco.",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Corre de un lado a otro antes de lanzar una\nbomba para 'latiguearla' y lanzarla lejos.",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Elimina un gran cantidad de enemigos\nal detonar una bomba cerca de una caja TNT.",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "La cabeza es la zona más vulnerable, una bomba pegajosa\na la cabeza usualmente significa game-over.",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Este nivel no tiene fin, pero un alto puntaje aquí\nte hará ganar el respeto eterno por todo el mundo.",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "La fuerza de tiro se basa en la dirección que estás sosteniendo.\nPara arrojar algo justo delante de ti, no sostengas ninguna dirección.",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "¿Cansado de la pista de audio? ¡Reemplázala con tu música!\nVe a Ajustes->Audio->Banda Sonora",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Intenta 'Cocinar' bombas por un segundo o dos antes de tirarlas.",
+ "Try tricking enemies into killing eachother or running off cliffs.": "Engaña a tus enemigos para que se eliminen entre sí o para que corran a los acantilados.",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "Usa el botón de 'recoger' para agarrar la bandera < ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "Azota de un lado a otro para conseguir más distancia en tus tiros.",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Puedes 'dirigir' tus golpes girando a la izquierda o derecha. Esto\nes útil para tirar a los enemigos al vacío o para anotar en el hockey.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Puedes saber si una bomba va a explotar basado en el \ncolor de las chispas de su mecha: amarillo...naranja...rojo...¡BOOM!",
+ "You can throw bombs higher if you jump just before throwing.": "Puedes tirar bombas más alto si saltas justo antes de tirarlas.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Te haces daño si golpeas tu cabeza contra cosas, \nasí que trata de no golpear tu cabeza contra cosas.",
+ "Your punches do much more damage if you are running or spinning.": "Tus golpes hacen mucho más daño si estás corriendo o girando."
+ }
+ },
+ "trophiesRequiredText": "Esto requiere al menos ${NUMBER} trofeos.",
+ "trophiesText": "Trofeos",
+ "trophiesThisSeasonText": "Trofeos Esta Temporada",
+ "tutorial": {
+ "cpuBenchmarkText": "Corriendo tutorial en velocidad ridícula (pruebas de velocidad de CPU)",
+ "phrase01Text": "¡Hey, hola!",
+ "phrase02Text": "¡Bienvenido a ${APP_NAME}!",
+ "phrase03Text": "Te dare algunos consejos para controlar tu personaje:",
+ "phrase04Text": "Muchas cosas en ${APP_NAME} se basan mayoritariamente en FÍSICAS.",
+ "phrase05Text": "Por ejemplo, cuando golpeas...",
+ "phrase06Text": "..el daño se basa en la velocidad de tus puños.",
+ "phrase07Text": "¿Ves? No nos estábamos moviendo, así que eso apenas lastimó a ${NAME}.",
+ "phrase08Text": "Ahora vamos a saltar y girar para conseguir más velocidad.",
+ "phrase09Text": "Ah, mucho mejor.",
+ "phrase10Text": "Correr también ayuda.",
+ "phrase11Text": "Mantén pulsado CUALQUIER botón para correr.",
+ "phrase12Text": "Para golpes extra-asombrosos, intenta correr Y girar.",
+ "phrase13Text": "Ups; lo siento por eso ${NAME}.",
+ "phrase14Text": "Puedes recoger y lanzar cosas como banderas.. o ${NAME}.",
+ "phrase15Text": "Por último, hay bombas.",
+ "phrase16Text": "Lanzar bombas requiere práctica.",
+ "phrase17Text": "¡Auch! Ese no fue un buen tiro.",
+ "phrase18Text": "Moverte ayuda a lanzarlas más lejos.",
+ "phrase19Text": "Saltar ayuda a lanzarlas más alto.",
+ "phrase20Text": "\"Latiguea\" tus bombas para hacer lanzamientos aún más lejanos.",
+ "phrase21Text": "Hacer que exploten donde tú quieres puede ser complicado.",
+ "phrase22Text": "Rayos.",
+ "phrase23Text": "Intentemos \"cocinar\" la mecha por un segundo o dos.",
+ "phrase24Text": "¡Hurra! Así es como se hace.",
+ "phrase25Text": "Bueno, eso es todo.",
+ "phrase26Text": "¡Ahora ve por ellos, campeón!",
+ "phrase27Text": "Recuerda tu entrenamiento, ¡y VOLVERÁS con vida!",
+ "phrase28Text": "...o a lo mejor...",
+ "phrase29Text": "¡Buena Suerte!",
+ "randomName1Text": "Federico",
+ "randomName2Text": "Enrique",
+ "randomName3Text": "Guillermo",
+ "randomName4Text": "Carlos",
+ "randomName5Text": "Felipe",
+ "skipConfirmText": "¿Realmente quieres omitir el tutorial? Toca o presiona para confirmar.",
+ "skipVoteCountText": "${COUNT}/${TOTAL} votos para saltarse el tutorial",
+ "skippingText": "saltando el tutorial...",
+ "toSkipPressAnythingText": "(pulsa cualquier botón para omitir el tutorial)"
+ },
+ "twoKillText": "¡COMBO DOBLE!",
+ "uiScaleText": "Escala de Interfaz de Usuario",
+ "unavailableText": "no disponible",
+ "unclaimedPrizesText": "Tienes premios sin reclamar!",
+ "unconfiguredControllerDetectedText": "Control desconfigurado detectado:",
+ "unlockThisInTheStoreText": "Esto debe ser desbloqueado en la tienda.",
+ "unlockThisProfilesText": "Para crear más de ${NUM} cuentas, necesitas:",
+ "unlockThisText": "Para desbloquear esto, necesitas:",
+ "unsupportedControllerText": "Lo sentimos, el control \"${NAME}\" no es compatible.",
+ "unsupportedHardwareText": "Disculpe, este dispositivo no soporta esta compilación del juego.",
+ "upFirstText": "A continuación:",
+ "upNextText": "A continuación en el juego ${COUNT}:",
+ "updatingAccountText": "Actualizando tu cuenta...",
+ "upgradeText": "Mejorar",
+ "upgradeToPlayText": "Desbloquea \"${PRO}\" en la tienda para jugar esto.",
+ "useDefaultText": "Usar Por Defecto",
+ "userSystemScriptsCreateText": "Crear Scripts del Sistema del Usuario",
+ "userSystemScriptsDeleteText": "Eliminar Scripts del Sistema del Usuario",
+ "usesExternalControllerText": "Este juego usa un control externo como entrada.",
+ "usingItunesText": "Usando Aplicación de Música para la banda sonora...",
+ "v2AccountLinkingInfoText": "Para vincular cuentas V2, usa el botón \"Administrar Cuenta\".",
+ "v2AccountRequiredText": "Esto requiere una cuenta V2. Actualice su cuenta e inténtelo de nuevo.",
+ "validatingTestBuildText": "Validando Compilación de Prueba...",
+ "viaText": "a través de",
+ "victoryText": "¡Victoria!",
+ "voteDelayText": "No puedes iniciar otra votación por ${NUMBER} segundo(s)",
+ "voteInProgressText": "Ya hay una votación en progreso.",
+ "votedAlreadyText": "Ya votaste",
+ "votesNeededText": "${NUMBER} voto(s) necesario(s)",
+ "vsText": "vs.",
+ "waitingForHostText": "(esperando a que ${HOST} continúe)",
+ "waitingForPlayersText": "esperando jugadores para unirse...",
+ "waitingInLineText": "Esperando en línea (la partida está llena)...",
+ "watchAVideoText": "Ver un Vídeo",
+ "watchAnAdText": "Ver un Anuncio",
+ "watchWindow": {
+ "deleteConfirmText": "¿Borrar \"${REPLAY}\"?",
+ "deleteReplayButtonText": "Borrar\nRepetición",
+ "myReplaysText": "Mis Repeticiones",
+ "noReplaySelectedErrorText": "Ninguna Repetición Seleccionada",
+ "playbackSpeedText": "Velocidad de Reproducción: ${SPEED}",
+ "renameReplayButtonText": "Renombrar\nRepetición",
+ "renameReplayText": "Renombrar \"${REPLAY}\" a:",
+ "renameText": "Renombrar",
+ "replayDeleteErrorText": "Error borrando la repetición.",
+ "replayNameText": "Nombre de la Repetición",
+ "replayRenameErrorAlreadyExistsText": "Una repetición con ese nombre ya existe.",
+ "replayRenameErrorInvalidName": "No se puede renombrar la repetición; nombre inválido.",
+ "replayRenameErrorText": "Error renombrando repetición.",
+ "sharedReplaysText": "Compartir repeticiones",
+ "titleText": "Ver",
+ "watchReplayButtonText": "Ver\nRepetición"
+ },
+ "waveText": "Oleada",
+ "wellSureText": "¡Pues Claro!",
+ "whatIsThisText": "¿Qué es esto?",
+ "winsPlayerText": "¡${NAME} Gana!",
+ "winsTeamText": "¡${NAME} Gana!",
+ "winsText": "¡Ganó ${NAME}!",
+ "workspaceSyncErrorText": "Error al sincronizar ${WORKSPACE}. Mira el registro para más detalles.",
+ "workspaceSyncReuseText": "No se puede sincronizar ${WORKSPACE}. Reusando la versión previamente sincronizada.",
+ "worldScoresUnavailableText": "Puntuaciones mundiales no disponibles.",
+ "worldsBestScoresText": "Mejores Puntuaciones Mundiales",
+ "worldsBestTimesText": "Mejores Tiempos Mundiales",
+ "yesAllowText": "¡Sí, Permitir!",
+ "yourBestScoresText": "Tus Mejores Puntajes",
+ "yourBestTimesText": "Tus Mejores Tiempos",
+ "yourPrizeText": "Tu premio:"
+}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/spanishspain.json b/dist/ba_data/data/languages/spanishspain.json
new file mode 100644
index 00000000..e162342e
--- /dev/null
+++ b/dist/ba_data/data/languages/spanishspain.json
@@ -0,0 +1,1980 @@
+{
+ "accountSettingsWindow": {
+ "accountNameRules": "Los nombres de las cuentas no pueden tener emojis o otros caracteres especiales",
+ "accountsText": "Cuentas",
+ "achievementProgressText": "Logros: ${COUNT} de ${TOTAL}",
+ "campaignProgressText": "Progreso de la Campaña [Difícil]: ${PROGRESS}",
+ "changeOncePerSeason": "Solo puedes cambiar esto una vez por temporada.",
+ "changeOncePerSeasonError": "Debes esperar hasta la siguiente temporada para cambiar esto de nuevo (en ${NUM} día/s)",
+ "createAnAccountText": "Crear una Cuenta",
+ "customName": "Nombre Personalizado",
+ "deleteAccountText": "Eliminar Cuenta",
+ "googlePlayGamesAccountSwitchText": "Si quieres usar una cuenta de Google diferente,\nusa la app Google Play Juegos para cambiarla.",
+ "linkAccountsEnterCodeText": "Introducir Código",
+ "linkAccountsGenerateCodeText": "Generar Código",
+ "linkAccountsInfoText": "(comparta el progreso a través de diferentes plataformas)",
+ "linkAccountsInstructionsNewText": "Para vincular dos cuentas, genera un código en la primera \ne introduzca ese código en la segunda. Los datos de \nla segunda cuenta serán compartidos entre ambos.\n(Los datos de la primera cuenta se perderán).\n\nPuedes vincular hasta ${COUNT} cuentas.\n\nIMPORTANTE: Solo vincula cuentas tuyas; \nSi vinculas cuentas de tus amigos no serán \ncapaces de jugar en línea al mismo tiempo.",
+ "linkAccountsText": "Vincular Cuentas",
+ "linkedAccountsText": "Cuentas Vinculadas:",
+ "manageAccountText": "Administrar Cuenta",
+ "nameChangeConfirm": "¿Quieres cambiar El nombre de tu cuenta A ${NAME}?",
+ "resetProgressConfirmNoAchievementsText": "Esto reiniciará tu progreso en el modo cooperativo y \ntus puntuaciones locales (a excepción de tus boletos).\nEsto no puede deshacerse. ¿Estás seguro?",
+ "resetProgressConfirmText": "Esto reiniciará tu progreso en el modo cooperativo, \nlogros y puntuaciones locales (pero, no tus tickets).\nLos cambios no se pueden deshacer.\n¿Estás seguro?",
+ "resetProgressText": "Reiniciar Progreso",
+ "setAccountName": "Establecer Nombre de Cuenta",
+ "setAccountNameDesc": "Selecciona el nombre a mostrar para tu cuenta. \nPuedes usar el nombre de tu cuenta asociada\no crear un nombre único personalizado.",
+ "signInInfoText": "Inicia sesión para obtener boletos, competir en línea\ny compartir tu progreso a través de tus dispositivos.",
+ "signInText": "Iniciar Sesión",
+ "signInWithAnEmailAddressText": "Iniciar sesión con correo electronico",
+ "signInWithDeviceInfoText": "(una cuenta automática disponible únicamente en este dispositivo)",
+ "signInWithDeviceText": "Iniciar sesión con cuenta del dispositivo",
+ "signInWithText": "Iniciar sesion con ${SERVICE}",
+ "signInWithV2InfoText": "(una cuenta que funciona en todas las plataformas)",
+ "signInWithV2Text": "Iniciar sesión con una cuenta de ${APP_NAME}",
+ "signOutText": "Cerrar Sesión",
+ "signingInText": "Iniciando sesión...",
+ "signingOutText": "Cerrando sesión...",
+ "ticketsText": "Boletos: ${COUNT}",
+ "titleText": "Cuenta",
+ "unlinkAccountsInstructionsText": "Selecciona una cuenta para desvincular",
+ "unlinkAccountsText": "Desvincular Cuentas",
+ "unlinkLegacyV1AccountsText": "Desvincular Cuentas (V1) Heredadas",
+ "v2LinkInstructionsText": "Usa este enlace para crear una cuenta o para iniciar sesión.",
+ "viaAccount": "(cuenta vía ${NAME})",
+ "youAreSignedInAsText": "Has iniciado sesión como:"
+ },
+ "achievementChallengesText": "Desafios de los Logros",
+ "achievementText": "Logro",
+ "achievements": {
+ "Boom Goes the Dynamite": {
+ "description": "Mata a 3 chicos malos con TNT",
+ "descriptionComplete": "Mató a 3 chicos malos con TNT",
+ "descriptionFull": "Mata a 3 chicos malos con TNT en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 3 chicos malos con TNT en ${LEVEL}",
+ "name": "La Dinamita Hace Boom"
+ },
+ "Boxer": {
+ "description": "Gana sin usar bombas",
+ "descriptionComplete": "Ganó sin usar bombas",
+ "descriptionFull": "Completa ${LEVEL} sin usar bombas",
+ "descriptionFullComplete": "Completó ${LEVEL} sin usar bombas",
+ "name": "Boxeador"
+ },
+ "Dual Wielding": {
+ "descriptionFull": "Conecta 2 controles (de hardware o aplicación)",
+ "descriptionFullComplete": "Conectó 2 controles (de hardware o aplicación)",
+ "name": "Doble Empuñadura"
+ },
+ "Flawless Victory": {
+ "description": "Gana sin ser lastimado",
+ "descriptionComplete": "Ganó sin ser lastimado",
+ "descriptionFull": "Gana ${LEVEL} sin ser lastimado",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin ser golpeado",
+ "name": "Victoria Impecable"
+ },
+ "Free Loader": {
+ "descriptionFull": "Empieza un juego de Todos-Contra-Todos con 2 o más jugadores",
+ "descriptionFullComplete": "Empezó un juego de Todos-Contra-Todos con 2 o más jugadores",
+ "name": "Cargador Libre"
+ },
+ "Gold Miner": {
+ "description": "Mata a 6 chicos malos con minas terrestres",
+ "descriptionComplete": "Mató a 6 chicos malos con minas terrestres",
+ "descriptionFull": "Mata a 6 chicos malos con minas terrestres en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 6 chicos malos con minas terrestres en ${LEVEL}",
+ "name": "Minero de Oro"
+ },
+ "Got the Moves": {
+ "description": "Gana sin usar golpes ni bombas",
+ "descriptionComplete": "Ganó sin usar golpes ni bombas",
+ "descriptionFull": "Gana ${LEVEL} sin golpes ni bombas",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin golpes ni bombas",
+ "name": "Tengo los Movimientos"
+ },
+ "In Control": {
+ "descriptionFull": "Conecta un control (de hardware o aplicación)",
+ "descriptionFullComplete": "Conectó un control. (de hardware o aplicación)",
+ "name": "En Control"
+ },
+ "Last Stand God": {
+ "description": "Anota 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
+ "descriptionFull": "Anota 1000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Dios de la guerra En ${LEVEL}"
+ },
+ "Last Stand Master": {
+ "description": "Anota 250 puntos",
+ "descriptionComplete": "Anotó 250 puntos",
+ "descriptionFull": "Anota 250 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 250 puntos en ${LEVEL}",
+ "name": "Maestro de ${LEVEL}"
+ },
+ "Last Stand Wizard": {
+ "description": "Anota 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
+ "descriptionFull": "Anota 500 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Mago de ${LEVEL}"
+ },
+ "Mine Games": {
+ "description": "Mata a 3 chicos malos con minas terrestres",
+ "descriptionComplete": "Mató a 3 chicos malos con minas terrestres",
+ "descriptionFull": "Mata a 3 chicos malos con minas terrestres en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 3 chicos con minas terrestres en ${LEVEL}",
+ "name": "Juegos de Minas"
+ },
+ "Off You Go Then": {
+ "description": "Arroja a 3 chicos malos fuera del mapa",
+ "descriptionComplete": "Arrojó a 3 chicos malos fuera del mapa",
+ "descriptionFull": "Arroja a 3 chicos malos fuera del mapa en ${LEVEL}",
+ "descriptionFullComplete": "Arrojó a 3 chicos malos fuera del mapa en ${LEVEL}",
+ "name": "Te Vas Abajo Entonces"
+ },
+ "Onslaught God": {
+ "description": "Anota 5000 puntos",
+ "descriptionComplete": "Anotó 5000 puntos",
+ "descriptionFull": "Anota 5000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 5000 puntos en ${LEVEL}",
+ "name": "Dios de La ${LEVEL}"
+ },
+ "Onslaught Master": {
+ "description": "Anota 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
+ "descriptionFull": "Anota 500 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Maestro de La ${LEVEL}"
+ },
+ "Onslaught Training Victory": {
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Derroto todas las oleadas.",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Onslaught Wizard": {
+ "description": "Anota 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
+ "descriptionFull": "Anota 1000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Mago de La ${LEVEL}"
+ },
+ "Precision Bombing": {
+ "description": "Gana sin potenciadores",
+ "descriptionComplete": "Ganó sin potenciadores",
+ "descriptionFull": "Gana ${LEVEL} sin potenciadores",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin potenciadores",
+ "name": "Bombardeo con Precisión"
+ },
+ "Pro Boxer": {
+ "description": "Gana sin usar bombas",
+ "descriptionComplete": "Ganó sin usar bombas",
+ "descriptionFull": "Completa ${LEVEL} sin usar bombas",
+ "descriptionFullComplete": "Completó ${LEVEL} sin usar bombas",
+ "name": "Boxeador Profesional"
+ },
+ "Pro Football Shutout": {
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo en ${LEVEL}"
+ },
+ "Pro Football Victory": {
+ "description": "Gana el partido",
+ "descriptionComplete": "Ganó el partido",
+ "descriptionFull": "Gana el partido en ${LEVEL}",
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Pro Onslaught Victory": {
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas de ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas de ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Pro Runaround Victory": {
+ "description": "Completa todas las oleadas",
+ "descriptionComplete": "Completó todas las oleadas",
+ "descriptionFull": "Completa todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Completó todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Rookie Football Shutout": {
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo en ${LEVEL}"
+ },
+ "Rookie Football Victory": {
+ "description": "Gana el partido",
+ "descriptionComplete": "Ganó el partido",
+ "descriptionFull": "Gana el partido en ${LEVEL}",
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Rookie Onslaught Victory": {
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Runaround God": {
+ "description": "Anota 2000 puntos",
+ "descriptionComplete": "Anotó 2000 puntos",
+ "descriptionFull": "Anota 2000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 2000 puntos en ${LEVEL}",
+ "name": "Dios de La ${LEVEL}"
+ },
+ "Runaround Master": {
+ "description": "Anota 500 puntos",
+ "descriptionComplete": "Anotó 500 puntos",
+ "descriptionFull": "Anota 500 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 500 puntos en ${LEVEL}",
+ "name": "Maestro de La ${LEVEL}"
+ },
+ "Runaround Wizard": {
+ "description": "Anota 1000 puntos",
+ "descriptionComplete": "Anotó 1000 puntos",
+ "descriptionFull": "Anota 1000 puntos en ${LEVEL}",
+ "descriptionFullComplete": "Anotó 1000 puntos en ${LEVEL}",
+ "name": "Mago de La ${LEVEL}"
+ },
+ "Sharing is Caring": {
+ "descriptionFull": "Comparte exitosamente el juego con un amigo",
+ "descriptionFullComplete": "Compartió exitosamente el juego con un amigo",
+ "name": "Compartir es querer."
+ },
+ "Stayin' Alive": {
+ "description": "Gana sin morir",
+ "descriptionComplete": "Ganó sin morir",
+ "descriptionFull": "Gana ${LEVEL} sin morir",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin morir",
+ "name": "Sobreviviendo"
+ },
+ "Super Mega Punch": {
+ "description": "Inflige 100% de daño con un solo golpe",
+ "descriptionComplete": "Infligió 100% de daño con un solo golpe",
+ "descriptionFull": "Inflige 100% de daño con un golpe en ${LEVEL}",
+ "descriptionFullComplete": "Infligió 100% de daño con un golpe en ${LEVEL}",
+ "name": "Súper Mega Golpe"
+ },
+ "Super Punch": {
+ "description": "Inflige 50% de daño con un golpe",
+ "descriptionComplete": "Infligió 50% de daño con un golpe",
+ "descriptionFull": "Inflige 50% de daño con un golpe en ${LEVEL}",
+ "descriptionFullComplete": "Infligió 50% de daño con un golpe en ${LEVEL}",
+ "name": "Súper Golpe"
+ },
+ "TNT Terror": {
+ "description": "Mata a 6 chicos malos con TNT",
+ "descriptionComplete": "Mató a 6 chicos malos con TNT",
+ "descriptionFull": "Mata a 6 chicos malos con TNT en ${LEVEL}",
+ "descriptionFullComplete": "Mató a 6 chicos malos con TNT en ${LEVEL}",
+ "name": "Pirómano"
+ },
+ "Team Player": {
+ "descriptionFull": "Empieza un juego de Equipos con 4 o más jugadores",
+ "descriptionFullComplete": "Empezó un juego de Equipos con 4 o más jugadores",
+ "name": "Jugador de Equipo"
+ },
+ "The Great Wall": {
+ "description": "Detén a cada uno de los chicos malos",
+ "descriptionComplete": "Detuvo a cada uno de los chicos malos",
+ "descriptionFull": "Detén a cada uno de los chicos malos en ${LEVEL}",
+ "descriptionFullComplete": "Detuvo a cada uno de los chicos malos en ${LEVEL}",
+ "name": "La Gran Muralla"
+ },
+ "The Wall": {
+ "description": "Detén a cada uno de los chicos malos",
+ "descriptionComplete": "Detuvo a cada uno de los chicos malos",
+ "descriptionFull": "Detén a cada uno de los chicos malos en ${LEVEL}",
+ "descriptionFullComplete": "Detuvo a cada uno de los chicos malos en ${LEVEL}",
+ "name": "La Muralla"
+ },
+ "Uber Football Shutout": {
+ "description": "Gana sin dejar que los chicos malos anoten",
+ "descriptionComplete": "Ganó sin dejar que los chicos malos anotaran",
+ "descriptionFull": "Gana ${LEVEL} sin dejar que los chicos malos anoten",
+ "descriptionFullComplete": "Ganó ${LEVEL} sin dejar que los chicos malos anotaran",
+ "name": "Blanqueo en ${LEVEL}"
+ },
+ "Uber Football Victory": {
+ "description": "Gana el partido",
+ "descriptionComplete": "Ganó el partido",
+ "descriptionFull": "Gana el partido en ${LEVEL}",
+ "descriptionFullComplete": "Ganó el partido en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Uber Onslaught Victory": {
+ "description": "Vence todas las oleadas",
+ "descriptionComplete": "Venció todas las oleadas",
+ "descriptionFull": "Vence todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Venció todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ },
+ "Uber Runaround Victory": {
+ "description": "Completa todas las oleadas",
+ "descriptionComplete": "Completó todas las oleadas",
+ "descriptionFull": "Completa todas las oleadas en ${LEVEL}",
+ "descriptionFullComplete": "Completó todas las oleadas en ${LEVEL}",
+ "name": "Victoria en ${LEVEL}"
+ }
+ },
+ "achievementsRemainingText": "Logros Restantes:",
+ "achievementsText": "Logros",
+ "achievementsUnavailableForOldSeasonsText": "Disculpe, los logros específicos no están disponibles para temporadas anteriores.",
+ "activatedText": "${THING} activado.",
+ "addGameWindow": {
+ "getMoreGamesText": "Obtener Más Juegos...",
+ "titleText": "Agregar Juego"
+ },
+ "addToFavoritesText": "Agregar a Favoritos",
+ "addedToFavoritesText": "'${NAME}' añadido a Favoritos.",
+ "allText": "Todo",
+ "allowText": "Permitir",
+ "alreadySignedInText": "Tu cuenta está registrada en otro dispositivo;\npor favor cambia de cuentas o cierra el juego en tu \notro dispositivo e inténtalo de nuevo.",
+ "apiVersionErrorText": "No se puede cargar el módulo ${NAME}; este apunta a la versión-api ${VERSION_USED}; necesitamos ${VERSION_REQUIRED}.",
+ "applyText": "Aplicar",
+ "areYouSureText": "¿Estás seguro/a?",
+ "audioSettingsWindow": {
+ "headRelativeVRAudioInfoText": "(\"Auto\" se activa solo cuando los audífonos estan conectados)",
+ "headRelativeVRAudioText": "Audio RV Relativo a la Cabeza",
+ "musicVolumeText": "Volumen de la Música",
+ "soundVolumeText": "Volumen del Sonido",
+ "soundtrackButtonText": "Bandas Sonoras",
+ "soundtrackDescriptionText": "(usa tu propia música para reproducir durante los juegos)",
+ "titleText": "Audio"
+ },
+ "autoText": "Auto",
+ "backText": "Atrás",
+ "banThisPlayerText": "Banear a Este Jugador",
+ "bestOfFinalText": "Final Mejor-de-${COUNT}",
+ "bestOfSeriesText": "Mejor de ${COUNT} series:",
+ "bestRankText": "Tu mejor rango es #${RANK}",
+ "bestRatingText": "Tu mejor clasificación es ${RATING}",
+ "bombBoldText": "BOMBA",
+ "bombText": "Bomba",
+ "boostText": "Potenciar",
+ "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} se configura en la propia aplicación.",
+ "buttonText": "botón",
+ "canWeDebugText": "¿Te gustaría que ${APP_NAME} reporte errores, fallos internos\ne información básica de uso al desarrollador de forma automática?\n\nDicha informacíon no incluirá datos personales y ayudará a\nmantener el juego funcionando sin contratiempos ni problemas.",
+ "cancelText": "Cancelar",
+ "cantConfigureDeviceText": "Lo sentimos, ${DEVICE} no es configurable.",
+ "challengeEndedText": "Este desafío ha terminado.",
+ "chatMuteText": "Silenciar Chat",
+ "chatMutedText": "Chat Silenciado",
+ "chatUnMuteText": "Desilenciar Chat",
+ "chests": {
+ "prizeOddsText": "Posibles Premios",
+ "reduceWaitText": "Reducir Espera",
+ "slotDescriptionText": "Esta ranura puede contener un cofre.\n\nGana cofres al jugar niveles del modo campaña,\nposicionándote en torneos y completando\nlogros.",
+ "slotText": "${NUM} Ranura de Cofre",
+ "slotsFullWarningText": "ADVERTENCIA: Tus espacios de cofres están llenos.\nCualquier cofre ganado en esta partida, será perdido.",
+ "unlocksInText": "Se desbloquea en:"
+ },
+ "choosingPlayerText": "",
+ "claimText": "Reclamar",
+ "codesExplainText": "Los códigos son proporcionados por el desarrollador para\ndiagnosticar y corregir problemas de la cuenta.",
+ "completeThisLevelToProceedText": "¡Debes completar\neste nivel para avanzar!",
+ "completionBonusText": "Bono por Completar",
+ "configControllersWindow": {
+ "configureControllersText": "Configurar Controles",
+ "configureKeyboard2Text": "Configurar Teclado J2",
+ "configureKeyboardText": "Configurar Teclado",
+ "configureMobileText": "Dispositivos Móviles como Controles",
+ "configureTouchText": "Configurar Pantalla Táctil",
+ "ps3Text": "Controles de PS3",
+ "titleText": "Controles",
+ "wiimotesText": "Wiimotes",
+ "xbox360Text": "Controles de Xbox 360"
+ },
+ "configGamepadSelectWindow": {
+ "androidNoteText": "Nota: el soporte de los controles varía según el dispositivo y la versión de Android.",
+ "pressAnyButtonText": "Pulsa cualquier botón en el control\n que desees configurar...",
+ "titleText": "Configurar Controles"
+ },
+ "configGamepadWindow": {
+ "advancedText": "Avanzado",
+ "advancedTitleText": "Configuración Avanzada del Control",
+ "analogStickDeadZoneDescriptionText": "(súbelo si tu personaje 'derrapa' cuando sueltas la palanca)",
+ "analogStickDeadZoneText": "Zona Muerta de La Palanca Analógica",
+ "appliesToAllText": "(aplica a todos los controles de este tipo)",
+ "autoRecalibrateDescriptionText": "(habilita esta opción si tu personaje no se mueve a toda velocidad)",
+ "autoRecalibrateText": "Auto-Recalibrar Palanca Analógica",
+ "axisText": "eje",
+ "clearText": "vaciar",
+ "dpadText": "Flechas del Mando",
+ "extraStartButtonText": "Botón Extra de Inicio",
+ "ifNothingHappensTryAnalogText": "Si no pasa nada, intenta asignar la palanca analógica en cambio.",
+ "ifNothingHappensTryDpadText": "Si no pasa nada, intenta asignar el d-pad en cambio.",
+ "ignoreCompletelyDescriptionText": "(evita que este control este afectando el juego y/o menús)",
+ "ignoreCompletelyText": "Ignorar Completamente",
+ "ignoredButton1Text": "Botón 1 Ignorado",
+ "ignoredButton2Text": "Botón 2 Ignorado",
+ "ignoredButton3Text": "Botón 3 Ignorado",
+ "ignoredButton4Text": "Botón 4 Ignorado",
+ "ignoredButtonDescriptionText": "(usa esto para prevenir que los botones de 'inicio' o 'sincronización' afecten la Interfaz Visual)",
+ "pressAnyAnalogTriggerText": "Presiona cualquier gatillo analógico...",
+ "pressAnyButtonOrDpadText": "Presiona cualquier botón o dpad...",
+ "pressAnyButtonText": "Presiona cualquier botón...",
+ "pressLeftRightText": "Presiona izquierda o derecha...",
+ "pressUpDownText": "Presiona arriba o abajo...",
+ "runButton1Text": "Botón para Correr 1",
+ "runButton2Text": "Botón para Correr 2",
+ "runTrigger1Text": "Gatillo para Correr 1",
+ "runTrigger2Text": "Gatillo para Correr 2",
+ "runTriggerDescriptionText": "(los gatillos analógicos te dejan correr a velocidades distintas)",
+ "secondHalfText": "Utiliza esta opción para configurar\nla segunda mitad de un control 2 en 1\nque se muestre como un solo control.",
+ "secondaryEnableText": "Habilitar",
+ "secondaryText": "Control Secundario",
+ "startButtonActivatesDefaultDescriptionText": "(desactívalo si tu botón de inicio es más bien un botón de 'menú')",
+ "startButtonActivatesDefaultText": "El Botón de Inicio Activa la Función por Defecto",
+ "titleText": "Configurar Control",
+ "twoInOneSetupText": "Configuración de Controles 2 en 1",
+ "uiOnlyDescriptionText": "(evitar que este control se una a un juego)",
+ "uiOnlyText": "Limitar a Uso en Menú",
+ "unassignedButtonsRunText": "Todos los Botones sin Asignar Corren",
+ "unsetText": "",
+ "vrReorientButtonText": "Boton de Reorientación de RV"
+ },
+ "configKeyboardWindow": {
+ "configuringText": "Configurando ${DEVICE}",
+ "keyboard2NoteText": "Nota: la mayoría de teclados sólo pueden registrar algunas\npulsaciones a la vez, así que tener un segundo teclado puede\nfuncionar mejor que un teclado compartido por los 2 jugadores.\nTen en cuenta que todavía necesitas asignar teclas únicas a los\ndos jugadores incluso en ese caso."
+ },
+ "configTouchscreenWindow": {
+ "actionControlScaleText": "Tamaño de Control de Acciones",
+ "actionsText": "Acciones",
+ "buttonsText": "botones",
+ "dragControlsText": "",
+ "joystickText": "palanca",
+ "movementControlScaleText": "Tamaño de Escala de Movimiento",
+ "movementText": "Movimiento",
+ "resetText": "Reiniciar",
+ "swipeControlsHiddenText": "Ocultar Iconos Deslizantes",
+ "swipeInfoText": "Controles del estilo 'Deslizante' toman un poco de practica, pero\nhacen que sea más fácil jugar sin mirar los controles.",
+ "swipeText": "deslizar",
+ "titleText": "Configurar Pantalla Táctil"
+ },
+ "configureDeviceInSystemSettingsText": "${DEVICE} se puede configurar en la aplicación Configuración del Sistema.",
+ "configureItNowText": "Configurar ahora?",
+ "configureText": "Configurar",
+ "connectMobileDevicesWindow": {
+ "amazonText": "Tienda de Amazon (Appstore)",
+ "appStoreText": "App Store",
+ "bestResultsText": "Para mejores resultados necesitas una red inalámbrica rápida. Puedes\nreducir el retraso wifi apagando otros dispositivos inalámbricos,\njugando cerca de tu router inalámbrico y conectando el\njuego anfitrión directamente a la red a través del cable Ethernet.",
+ "explanationText": "Para utilizar tus dispositivos móviles como controles, \ninstala la app \"${REMOTE_APP_NAME}\" en ellos. Todos tus dispositivos \npueden conectarse a un juego de ${APP_NAME} a través de una red Wi-fi, ¡es gratis!.",
+ "forAndroidText": "para Android:",
+ "forIOSText": "para iOS:",
+ "getItForText": "Consigue ${REMOTE_APP_NAME} para iOS en la App Store\no para Android en la Tienda de Google Play o Appstore de Amazon",
+ "googlePlayText": "Google Play",
+ "titleText": "Utilizando Dispositivos como Controles:"
+ },
+ "continuePurchaseText": "¿Continuar por ${PRICE}?",
+ "continueText": "Continuar",
+ "controlsText": "Controles",
+ "coopSelectWindow": {
+ "activenessAllTimeInfoText": "Esto no aplica a las clasificaciones de todo-el-tiempo.",
+ "activenessInfoText": "Este multiplicador aumenta en los días que juegas\ny disminuye cuando no juegas.",
+ "activityText": "Actividad",
+ "campaignText": "Campaña",
+ "challengesInfoText": "Gana premios por completar los mini-juegos.\n\nLos premios y la dificultad de los niveles incrementa\ncada vez que se completa y\ndecrece cuando uno expira o no se cumple.",
+ "challengesText": "Desafíos",
+ "currentBestText": "Mejor Actualmente",
+ "customText": "Personalizado",
+ "entryFeeText": "Entrada",
+ "forfeitConfirmText": "¿Renunciar a este desafío?",
+ "forfeitNotAllowedYetText": "Todavía no puedes abandonar este desafío.",
+ "forfeitText": "Abandonar",
+ "multipliersText": "Multiplicadores",
+ "nextChallengeText": "Siguiente Desafío",
+ "nextPlayText": "Siguiente Juego",
+ "ofTotalTimeText": "de ${TOTAL}",
+ "playNowText": "Juega Ahora",
+ "pointsText": "Puntos",
+ "powerRankingFinishedSeasonUnrankedText": "(temporada terminada sin clasificar)",
+ "powerRankingNotInTopText": "(fuera del top ${NUMBER})",
+ "powerRankingPointsEqualsText": "= ${NUMBER} pts",
+ "powerRankingPointsMultText": "(x ${NUMBER} pts)",
+ "powerRankingPointsText": "${NUMBER} pts",
+ "powerRankingPointsToRankedText": "(${CURRENT} de ${REMAINING} pts)",
+ "powerRankingText": "Clasificación del Jugador",
+ "prizesText": "Premios",
+ "proMultInfoText": "Los jugadores con la mejora de ${PRO}\nreciben una bonificación del ${PERCENT}% de puntos.",
+ "seeMoreText": "Más...",
+ "skipWaitText": "Omitir la Espera",
+ "timeRemainingText": "Tiempo Restante",
+ "toRankedText": "Para Clasificar",
+ "totalText": "total",
+ "tournamentInfoText": "Compite por puntajes altos con\notros jugadores en tu liga.\n\nLos premios los obtienen los jugadores\ncon mejor puntaje al acabarse el torneo.",
+ "welcome1Text": "Bienvenido a ${LEAGUE}. Puedes mejorar tu\nposición en la liga ganando estrellas, completando\nlogros y ganando trofeos en desafíos.",
+ "welcome2Text": "También puedes ganar boletos desde varias actividades similares.\nLos boletos pueden ser usados para desbloquear nuevos personajes,\nmapas y minijuegos, entrar a torneos y más.",
+ "yourPowerRankingText": "Tu Clasificación Actual:"
+ },
+ "copyConfirmText": "Copiado en el portapapeles.",
+ "copyOfText": "Copia de ${NAME}",
+ "copyText": "Copiar",
+ "createEditPlayerText": "",
+ "createText": "Crear",
+ "creditsWindow": {
+ "additionalAudioArtIdeasText": "Audio Adicional, Arte Inicial, e Ideas por ${NAME}",
+ "additionalMusicFromText": "Música adicional de ${NAME}",
+ "allMyFamilyText": "Mis amigos y mi familia que ayudaron con las pruebas",
+ "codingGraphicsAudioText": "Código, Gráficos y Audio por ${NAME}",
+ "languageTranslationsText": "Traducciones:",
+ "legalText": "Legal:",
+ "publicDomainMusicViaText": "Música de dominio público vía ${NAME}",
+ "softwareBasedOnText": "Este software está basado parcialmente en el trabajo de ${NAME}",
+ "songCreditText": "${TITLE} Interpretada por ${PERFORMER}\nCompuesta por ${COMPOSER}, Arreglos por ${ARRANGER}, Publicada por ${PUBLISHER},\nCortesía de ${SOURCE}",
+ "soundAndMusicText": "Sonido & Música:",
+ "soundsText": "Sonidos (${SOURCE}):",
+ "specialThanksText": "Agradecimientos Especiales:",
+ "thanksEspeciallyToText": "Gracias especialmente a ${NAME}",
+ "titleText": "Créditos de ${APP_NAME}",
+ "whoeverInventedCoffeeText": "A quien inventó el café"
+ },
+ "currentStandingText": "Tu puesto actual es #${RANK}",
+ "customizeText": "Personalizar...",
+ "deathsTallyText": "${COUNT} muertes",
+ "deathsText": "Muertes",
+ "debugText": "depurar",
+ "debugWindow": {
+ "reloadBenchmarkBestResultsText": "Nota: Es recomendable poner Ajustes->Gráficos->Texturas en 'Alto' al probar esto.",
+ "runCPUBenchmarkText": "Ejecutar Punto de Referencia del CPU",
+ "runGPUBenchmarkText": "Ejecutar Punto de Referencia del GPU",
+ "runMediaReloadBenchmarkText": "Ejecutar Punto de Referencia del Media-Reload",
+ "runStressTestText": "Ejecutar prueba de resistencia",
+ "stressTestPlayerCountText": "Conteo de Jugadores",
+ "stressTestPlaylistDescriptionText": "Lista de juegos de Prueba de Estrés",
+ "stressTestPlaylistNameText": "Nombre de la Lista de juegos",
+ "stressTestPlaylistTypeText": "Tipo de Lista de juegos",
+ "stressTestRoundDurationText": "Duración de Ronda",
+ "stressTestTitleText": "Prueba de Estrés",
+ "titleText": "Pruebas de Estrés y Rendimiento",
+ "totalReloadTimeText": "Tiempo total de recarga: ${TIME} (ver registro para detalles)"
+ },
+ "defaultGameListNameText": "Lista de juegos ${PLAYMODE} Por Defecto",
+ "defaultNewGameListNameText": "Mi Lista de juegos ${PLAYMODE}",
+ "deleteText": "Borrar",
+ "demoText": "Demo",
+ "denyText": "Denegar",
+ "deprecatedText": "Obsoleto",
+ "descriptionText": "Descripción",
+ "desktopResText": "Resolución de Escritorio",
+ "deviceAccountUpgradeText": "Advertencia:\nIniciaste sesión con una cuenta de dispositivo (${NAME}).\nLas cuentas de dispositivo serán removidas en una futura actualización.\nActualiza a una Cuenta V2 si quieres conservar tu progreso.",
+ "difficultyEasyText": "Fácil",
+ "difficultyHardOnlyText": "Solo en Modo Difícil",
+ "difficultyHardText": "Difícil",
+ "difficultyHardUnlockOnlyText": "Este nivel solo puede ser desbloqueado en modo difícil.\n¡¿¡¿¡Piensas tener lo que se necesita!?!?!",
+ "directBrowserToURLText": "Por favor abre la siguiente URL en tu navegador:",
+ "disableRemoteAppConnectionsText": "Deshabilitar Conexiones Remotas de la Aplicación",
+ "disableXInputDescriptionText": "Permite más de 4 controles pero puede que no funcione bien.",
+ "disableXInputText": "Deshabilitar XInput",
+ "disabledText": "Deshabilitado",
+ "discardText": "Descartar",
+ "discordFriendsText": "¿Quieres buscar gente nueva con quien jugar?\n¡Únete a nuestro Discord y encuentra nuevos amigos!",
+ "discordJoinText": "Únete al Discord",
+ "doneText": "Hecho",
+ "drawText": "Empate",
+ "duplicateText": "Duplicar",
+ "editGameListWindow": {
+ "addGameText": "Añadir\nJuego",
+ "cantOverwriteDefaultText": "¡No es posible modificar la lista de juegos por defecto!",
+ "cantSaveAlreadyExistsText": "¡Ya existe una lista de juegos con ese nombre!",
+ "cantSaveEmptyListText": "¡No puedes guardar una lista de juegos vacía!",
+ "editGameText": "Editar\nJuego",
+ "listNameText": "Nombre de La Lista de Juegos",
+ "nameText": "Nombre",
+ "removeGameText": "Eliminar\nJuego",
+ "saveText": "Guardar Lista",
+ "titleText": "Editor de Lista de Juegos"
+ },
+ "editProfileWindow": {
+ "accountProfileInfoText": "Este perfil especial tiene un nombre\ny un icono basado en tu cuenta.\n\n${ICONS}\n\nCrea perfiles personalizados si quieres usar\ndiferentes nombres o iconos personalizados.",
+ "accountProfileText": "(perfil de cuenta)",
+ "availableText": "El nombre \"${NAME}\" está disponible.",
+ "characterText": "personaje",
+ "checkingAvailabilityText": "Revisando la disponibilidad para \"${NAME}\"...",
+ "colorText": "color",
+ "getMoreCharactersText": "Obtener Más Personajes...",
+ "getMoreIconsText": "Obtener Más Iconos...",
+ "globalProfileInfoText": "Los perfiles de jugador globales tienen un nombre único\na nivel mundial. También tienen iconos personalizados.",
+ "globalProfileText": "(perfil global)",
+ "highlightText": "Destacado",
+ "iconText": "icono",
+ "localProfileInfoText": "Los perfiles locales no tienen iconos y no hay garantía de que los nombres sean únicos. \nCrea un perfil global\npara reservar un nombre único y tener un icono personalizado.",
+ "localProfileText": "(perfil local)",
+ "nameDescriptionText": "Nombre del Jugador",
+ "nameText": "Nombre",
+ "profileAlreadyExistsText": "Ya existe un perfil con ese nombre.",
+ "randomText": "aleatorio",
+ "titleEditText": "Editar Perfil",
+ "titleNewText": "Nuevo Perfil",
+ "unavailableText": "\"${NAME}\" no está disponible; intenta otro nombre.",
+ "upgradeProfileInfoText": "Esto reservará tu nombre de jugador a nivel mundial\ny podrás asignarle un icono personalizado.",
+ "upgradeToGlobalProfileText": "Actualizar a Perfil Global"
+ },
+ "editSoundtrackWindow": {
+ "cantDeleteDefaultText": "No puedes borrar la banda sonora predeterminada.",
+ "cantEditDefaultText": "No puedes editar la banda sonora predeterminada. Duplicala o crea una nueva.",
+ "cantOverwriteDefaultText": "No puedes sobreescribir la banda sonora predeterminada",
+ "cantSaveAlreadyExistsText": "¡Ya existe una banda sonora con ese nombre!",
+ "defaultGameMusicText": "",
+ "defaultSoundtrackNameText": "Banda Sonora Predeterminada",
+ "deleteConfirmText": "Borrar Banda Sonora:\n\n'${NAME}'?",
+ "deleteText": "Borrar\nBanda Sonora",
+ "duplicateText": "Duplicar\nBanda Sonora",
+ "editSoundtrackText": "Editor de Banda Sonora",
+ "editText": "Editar\nBanda Sonora",
+ "fetchingITunesText": "buscando playlists en la App de Música...",
+ "musicVolumeZeroWarning": "Advertencia: el volumen de la música está en 0",
+ "nameText": "Nombre",
+ "newSoundtrackNameText": "Mi Banda Sonora ${COUNT}",
+ "newSoundtrackText": "Nueva Banda Sonora:",
+ "newText": "Nueva\nBanda Sonora",
+ "selectAPlaylistText": "Selecciona Una Playlist",
+ "selectASourceText": "Fuente de La Música",
+ "testText": "prueba",
+ "titleText": "Bandas Sonoras",
+ "useDefaultGameMusicText": "Música del Juego Por Defecto",
+ "useITunesPlaylistText": "Playlist de la App de Música",
+ "useMusicFileText": "Archivo de Música (mp3, etc).",
+ "useMusicFolderText": "Carpeta de Archivos de Audio"
+ },
+ "editText": "Editar",
+ "enabledText": "Habilitado",
+ "endText": "Fin",
+ "enjoyText": "¡Diviértete!",
+ "epicDescriptionFilterText": "${DESCRIPTION} En cámara lenta épica.",
+ "epicNameFilterText": "${NAME} - Modo épico",
+ "errorAccessDeniedText": "acceso denegado",
+ "errorDeviceTimeIncorrectText": "La hora de tu dispositivo está incorrecta por ${HOURS} hora(s).\nEsto podría causar algunos problemas.\nPor favor verifica la hora y zona horaria en ajustes.",
+ "errorOutOfDiskSpaceText": "espacio insuficiente en el disco",
+ "errorSecureConnectionFailText": "No se puede establecer una conexión segura en la nube; la red podría estar fallando.",
+ "errorText": "Error",
+ "errorUnknownText": "error desconocido",
+ "exitGameText": "¿Salir de ${APP_NAME}?",
+ "expiredAgoText": "Expiró hace ${T}",
+ "expiresInText": "Expira en ${T}",
+ "exportSuccessText": "'${NAME}' exportado.",
+ "externalStorageText": "Almacenamiento Externo",
+ "failText": "Fallaste",
+ "fatalErrorText": "Oh oh; algo está mal por aquí.\nPor favor intenta reinstalar la app o\ncontacta a ${EMAIL} para recibir ayuda.",
+ "fileSelectorWindow": {
+ "titleFileFolderText": "Elige un Archivo o Carpeta",
+ "titleFileText": "Elige un Archivo",
+ "titleFolderText": "Elige una Carpeta",
+ "useThisFolderButtonText": "Usar Esta Carpeta"
+ },
+ "filterText": "Filtro",
+ "finalScoreText": "Puntaje Final",
+ "finalScoresText": "Puntajes Finales",
+ "finalTimeText": "Tiempo Final",
+ "finishingInstallText": "Terminando la instalación; espera un momento...",
+ "fireTVRemoteWarningText": "* Para una mejor experiencia, \nutiliza controles o instala la\napp '${REMOTE_APP_NAME}' en tus\ndispositivos móviles y tabletas.",
+ "firstToFinalText": "Primero de ${COUNT} Finales",
+ "firstToSeriesText": "Primero de ${COUNT} Series",
+ "fiveKillText": "¡¡¡COMBO QUÍNTUPLE!!!",
+ "flawlessWaveText": "¡Oleada Perfecta!",
+ "fourKillText": "¡¡¡COMBO CUÁDRUPLE!!!",
+ "friendScoresUnavailableText": "Puntajes no disponibles.",
+ "gameLeadersText": "Líderes del Juego ${COUNT}",
+ "gameListWindow": {
+ "cantDeleteDefaultText": "No puedes borrar la lista de juegos predeterminada.",
+ "cantEditDefaultText": "¡No puedes editar la lista de juegos predeterminada! Duplicala o crea una nueva.",
+ "cantShareDefaultText": "No puedes compartir la lista de juegos predeterminada.",
+ "deleteConfirmText": "¿Borrar \"${LIST}\"?",
+ "deleteText": "Borrar\nLista de Juegos",
+ "duplicateText": "Duplicar\nLista de Juegos",
+ "editText": "Editar\nLista de Juegos",
+ "newText": "Nueva\nLista de Juegos",
+ "pointsToWinText": "Puntos Para Ganar",
+ "seriesLengthText": "Duración de la Serie",
+ "showTutorialText": "Ver Tutorial",
+ "shuffleGameOrderText": "Orden de Juego Aleatorio",
+ "titleText": "Personalizar Listas de Juegos de ${TYPE}"
+ },
+ "gameSettingsWindow": {
+ "addGameText": "Agregar Juego"
+ },
+ "gamesToText": "${WINCOUNT} juegos a ${LOSECOUNT}",
+ "gatherWindow": {
+ "aboutDescriptionLocalMultiplayerExtraText": "Recuerda: cualquier dispositivo en la fiesta puede\ntener más de un jugador si tienen controles suficientes.",
+ "aboutDescriptionText": "Usa estas pestañas para armar una partida.\n\nLas partidas te permiten jugar y competir con\ntus amigos a través de diferentes dispositivos.\n\nUsa el botón ${PARTY} en la parte superior\nderecha para chatear e interactuar con tu partida.\n(con un control, presiona ${BUTTON} mientras estés en el menú)",
+ "aboutText": "Acerca De",
+ "addressFetchErrorText": "",
+ "appInviteMessageText": "${NAME} te envió ${COUNT} boletos en ${APP_NAME}",
+ "appInviteSendACodeText": "Envíales Un Código",
+ "appInviteTitleText": "Invitación de La App ${APP_NAME}",
+ "bluetoothAndroidSupportText": "(funciona con cualquier dispositivo Android con Bluetooth)",
+ "bluetoothDescriptionText": "Alojar/unirse a una partida vía Bluetooth:",
+ "bluetoothHostText": "Alojar vía Bluetooth",
+ "bluetoothJoinText": "Unirse vía Bluetooth",
+ "bluetoothText": "Bluetooth",
+ "checkingText": "revisando...",
+ "copyCodeConfirmText": "Código copiado al portapapeles.",
+ "copyCodeText": "Copiar Código",
+ "dedicatedServerInfoText": "Para mejores resultados, crea un servidor dedicado. Visita bombsquadgame.com/server para aprender cómo hacerlo.",
+ "descriptionShortText": "Usa la pestaña de Reunir para crear una fiesta.",
+ "disconnectClientsText": "Esto desconectará a ${COUNT} jugador(es) de\ntu partida. ¿Estás seguro?",
+ "earnTicketsForRecommendingAmountText": "Tus amigos recibirán ${COUNT} boletos si prueban el juego\n(y recibirás ${YOU_COUNT} boletos por cada amigo que pruebe el juego).",
+ "earnTicketsForRecommendingText": "Comparte el juego\na cambio de boletos gratis...",
+ "emailItText": "Envíar Correo",
+ "favoritesSaveText": "Guardar Como Favorito",
+ "favoritesText": "Favoritos",
+ "freeCloudServerAvailableMinutesText": "El siguiente servidor estará disponible en ${MINUTES} minuto(s).",
+ "freeCloudServerAvailableNowText": "¡Servidor en la nube gratuito disponible!",
+ "freeCloudServerNotAvailableText": "No hay servidores en la nube gratuitos disponibles.",
+ "friendHasSentPromoCodeText": "Recibiste ${COUNT} boletos de ${APP_NAME} de ${NAME}",
+ "friendPromoCodeAwardText": "Recibirás ${COUNT} boletos cada vez que lo uses.",
+ "friendPromoCodeExpireText": "El código expirará en ${EXPIRE_HOURS} hora(s) y solo funciona para jugadores nuevos.",
+ "friendPromoCodeInstructionsText": "Para usarlo, abre ${APP_NAME} y ve a \"Ajustes->Avanzado->Enviar Información\"\nVisita bombsquadgame.com para enlaces de descarga de todas las plataformas disponibles.",
+ "friendPromoCodeRedeemLongText": "Se puede canjear por ${COUNT} boletos gratis hasta por ${MAX_USES} personas.",
+ "friendPromoCodeRedeemShortText": "Puede ser canjeado por ${COUNT} boletos en el juego.",
+ "friendPromoCodeWhereToEnterText": "(en \"Ajustes->Avanzado->Enviar Información\")",
+ "getFriendInviteCodeText": "Obtener Código de Invitación de Amigo",
+ "googlePlayDescriptionText": "Invitar jugadores de Google Play a tu partida:",
+ "googlePlayInviteText": "Invitar",
+ "googlePlayReInviteText": "Hay ${COUNT} jugador(es) de Google Play en tu fiesta\nque se desconectarán si creas una nueva invitación.\nInclúyelos en la nueva invitación para tenerlos de vuelta.",
+ "googlePlaySeeInvitesText": "Ver Invitaciones",
+ "googlePlayText": "Google Play",
+ "googlePlayVersionOnlyText": "(Versión Android / Google Play)",
+ "hostPublicPartyDescriptionText": "Alojar una Partida Pública",
+ "hostingUnavailableText": "Alojamiento No Disponible",
+ "inDevelopmentWarningText": "Nota:\n\nJugar en red es una función todavía en desarrollo.\nPor ahora, es altamente recomendado que todos\nlos jugadores estén en la misma red Wi-Fi.",
+ "internetText": "Internet",
+ "inviteAFriendText": "¿Tus amigos no tienen el juego? Invítalos a\nprobarlo y recibirán ${COUNT} boletos gratis.",
+ "inviteFriendsText": "Invitar Amigos",
+ "joinPublicPartyDescriptionText": "Unirse a una Partida Pública",
+ "localNetworkDescriptionText": "Unirse a una Partida Cercana (LAN, Bluetooth, etc.)",
+ "localNetworkText": "Red Local",
+ "makePartyPrivateText": "Hacer Mi Partida Privada",
+ "makePartyPublicText": "Hacer Mi Partida Pública",
+ "manualAddressText": "Dirección",
+ "manualConnectText": "Conectar",
+ "manualDescriptionText": "Unirse a una partida por dirección:",
+ "manualJoinSectionText": "Unirse Por Dirección",
+ "manualJoinableFromInternetText": "¿Se pueden unir desde internet?:",
+ "manualJoinableNoWithAsteriskText": "NO*",
+ "manualJoinableYesText": "SÍ",
+ "manualRouterForwardingText": "*para arreglarlo, configura tu router para que redireccione el puerto UDP ${PORT} a tu dirección local",
+ "manualText": "Manual",
+ "manualYourAddressFromInternetText": "Tu dirección desde internet:",
+ "manualYourLocalAddressText": "Tu dirección local:",
+ "nearbyText": "Cerca",
+ "noConnectionText": "",
+ "noPartiesAddedText": "Sin Fiestas Añadidas",
+ "otherVersionsText": "(otras versiones)",
+ "partyCodeText": "Código de La Partida",
+ "partyInviteAcceptText": "Aceptar",
+ "partyInviteDeclineText": "Denegar",
+ "partyInviteIgnoreText": "Ignorar",
+ "partyInviteText": "${NAME} te ha invitado\na unirse a su partida!",
+ "partyNameText": "Nombre de La Partida",
+ "partyServerRunningText": "Tu servidor se esta ejecutando.",
+ "partySizeText": "tamaño de partida",
+ "partyStatusCheckingText": "comprobando estado...",
+ "partyStatusJoinableText": "ahora se pueden unir a tu partida desde internet",
+ "partyStatusNoConnectionText": "incapaz de conectarse al servidor",
+ "partyStatusNotJoinableText": "no se pueden unir a tu partida desde internet",
+ "partyStatusNotPublicText": "tu partida no es pública",
+ "pingText": "ping",
+ "portText": "Puerto",
+ "privatePartyCloudDescriptionText": "Las partidas privadas se ejecutan en la nube; no requieren configuración del router.",
+ "privatePartyHostText": "Alojar una Partida Privada",
+ "privatePartyJoinText": "Unirse a una Partida Privada",
+ "privateText": "Privado",
+ "publicHostRouterConfigText": "Esto puede requerir configurar el reenvío de puertos en tu router. Para una opción más fácil, aloja una partida privada.",
+ "publicText": "Público",
+ "requestingAPromoCodeText": "Pidiendo un código...",
+ "sendDirectInvitesText": "Enviar Directamente La Invitación",
+ "shareThisCodeWithFriendsText": "Comparte este código con tus amigos:",
+ "showMyAddressText": "Mostrar Mi Dirección",
+ "startHostingPaidText": "Alojar Ahora Por ${COST}",
+ "startHostingText": "Alojar",
+ "startStopHostingMinutesText": "Puede iniciar y detener el alojamiento de forma gratuita durante los próximos ${MINUTES} minuto(s).",
+ "stopHostingText": "Dejar de Alojar",
+ "titleText": "Reunir",
+ "wifiDirectDescriptionBottomText": "Si todo los dispositivos disponen de 'Wi-fi Directo', deberían poder utilizarlo para\nencontrar y conectarse entre ellos. Cuando todos estén conectados, puedes formar \npartidas, usando la pestaña 'Red Local', como si estuvieran en la misma red Wi-fi.\n\nPara mejores resultados, el alojador del Wi-fi Directo también debe ser el alojador de la partida en ${APP_NAME}.",
+ "wifiDirectDescriptionTopText": "Wi-Fi Directo puede ser utilizado para conectar dispositivos Android sin\ntener que utilizar una red Wi-Fi. Esto funciona mejor en Android 4.2 hacia adelante.\n\nPara utilizarlo, abre los ajustes de Wi-Fi y busca 'Wi-Fi Directo' en el menú.",
+ "wifiDirectOpenWiFiSettingsText": "Abrir Ajustes de Wi-Fi",
+ "wifiDirectText": "Wi-Fi Directo",
+ "worksBetweenAllPlatformsText": "(funciona en todas las plataformas)",
+ "youHaveBeenSentAPromoCodeText": "Has enviado un código promocional de ${APP_NAME}:"
+ },
+ "getTicketsWindow": {
+ "freeText": "¡GRATIS!",
+ "freeTicketsText": "Boletos Gratis",
+ "inProgressText": "Ya hay una transacción en progreso; por favor inténtalo mas tarde.",
+ "purchasesRestoredText": "Compras restauradas.",
+ "receivedTicketsText": "¡Recibiste ${COUNT} boletos!",
+ "restorePurchasesText": "Restaurar Compras",
+ "ticketPack1Text": "Paquete de Boletos Pequeño",
+ "ticketPack2Text": "Paquete de Boletos Mediano",
+ "ticketPack3Text": "Paquete de Boletos Grande",
+ "ticketPack4Text": "Paquete de Boletos Jumbo",
+ "ticketPack5Text": "Paquete de Boletos Mamut",
+ "ticketPack6Text": "Paquete de Boletos Supremo",
+ "ticketsFromASponsorText": "Ver un anuncio\na cambio de ${COUNT} boletos",
+ "ticketsText": "${COUNT} Boletos",
+ "titleText": "Conseguir Boletos",
+ "unavailableLinkAccountText": "Disculpe, las compras no están disponibles en esta plataforma.\nComo una solución, puedes enlazar esta cuenta a otra\nplataforma y hacer tus compras desde ahí.",
+ "unavailableTemporarilyText": "No disponible por el momento; por favor inténtalo más tarde.",
+ "unavailableText": "Disculpe, esto no está disponible.",
+ "versionTooOldText": "Lo sentimos, esta versión del juego es muy antigua; por favor actualízala a una nueva versión.",
+ "youHaveShortText": "tienes ${COUNT}",
+ "youHaveText": "tienes ${COUNT} boletos"
+ },
+ "goldPass": {
+ "desc1InfTokensText": "Fichas infinitas.",
+ "desc2NoAdsText": "Sin anuncios.",
+ "desc3ForeverText": "Para siempre.",
+ "goldPassText": "Pase de Oro"
+ },
+ "googlePlayPurchasesNotAvailableText": "Las compras de Google Play no están disponibles.\nEs posible que debas actualizar la aplicación de tu tienda.",
+ "googlePlayServicesNotAvailableText": "Los Servicios de Google Play no están disponibles.\nAlgunas funciones de la aplicación pueden estar deshabilitadas.",
+ "googlePlayText": "Google Play",
+ "graphicsSettingsWindow": {
+ "alwaysText": "Siempre",
+ "fullScreenCmdText": "Pantalla completa (Cmd-F)",
+ "fullScreenCtrlText": "Pantalla completa (Ctrl-F)",
+ "fullScreenText": "Pantalla completa",
+ "gammaText": "Gama",
+ "highText": "Alto",
+ "higherText": "Altísimo",
+ "lowText": "Bajo",
+ "maxFPSText": "FPS Máximos",
+ "mediumText": "Medio",
+ "neverText": "Nunca",
+ "resolutionText": "Resolución",
+ "showFPSText": "Mostrar FPS",
+ "texturesText": "Texturas",
+ "titleText": "Gráficos",
+ "tvBorderText": "Borde del TV",
+ "verticalSyncText": "Sincronización Vertical",
+ "visualsText": "Visuales"
+ },
+ "helpWindow": {
+ "bombInfoText": "- Bomba -\nMás fuerte que los golpes, pero puede\nresultar en autolesiones graves.\nPara mejores resultados, tírala hacia tus\noponentes antes de que explote.",
+ "canHelpText": "${APP_NAME} te puede ayudar.",
+ "controllersInfoText": "Puedes jugar ${APP_NAME} con tus amigos en una red o todos pueden\njugar en el mismo dispositivo si se tienen varios controles.\n${APP_NAME} soporta una gran variedad de ellos; incluso puedes utilizar\ntus dispositivos móviles como controles instalando la app '${REMOTE_APP_NAME}'.\nVe a \"Ajustes->Controles\" para más información.",
+ "controllersInfoTextRemoteOnly": "Tu puedes jugar ${APP_NAME} con tus amigos en la red o pueden\njugar todos en el mismo dispositivo usando los teléfonos\ncomo controles con la aplicación '${REMOTE_APP_NAME}'.",
+ "controllersText": "Controles",
+ "controlsSubtitleText": "Tu amistoso personaje de ${APP_NAME} tiene algunas acciones básicas:",
+ "controlsText": "Controles",
+ "devicesInfoText": "La versión de RV de ${APP_NAME} se puede jugar en la red con la versión \nregular, así que saca tus celulares, tablets y computadoras extras y que \nempieze el juego. Es muy útil conectar un dispositivo con la versión\nregular a uno con la versión VR para que todos los que estén fuera\npuedan ver la acción.",
+ "devicesText": "Dispositivos",
+ "friendsGoodText": "Cuantos más, mejor. ${APP_NAME} es más divertido con muchos \namigos y soporta hasta 8 a la vez, lo que nos lleva a:",
+ "friendsText": "Amigos",
+ "jumpInfoText": "- Saltar -\nSalta para cruzar pequeños espacios, \npara tirar cosas más lejos y \npara expresar sentimientos de alegría.",
+ "orPunchingSomethingText": "O golpear algo, tirarlo por un precipicio y explotarlo en plena caída con una bomba pegajosa.",
+ "pickUpInfoText": "- Recoger -\nAgarra banderas, enemigos o cualquier\notra cosa no pegada al suelo.\nPresiona de nuevo para lanzar.",
+ "powerupBombDescriptionText": "Te permite sacar tres bombas\nrapidamente en lugar de solo una.",
+ "powerupBombNameText": "Bombas Triples",
+ "powerupCurseDescriptionText": "Probablemente quieras evitar estos.\n ...¿o talvez no?",
+ "powerupCurseNameText": "Maldición",
+ "powerupHealthDescriptionText": "Te restaura la salud completamente.\nNunca lo habrías adivinado.",
+ "powerupHealthNameText": "Botiquín",
+ "powerupIceBombsDescriptionText": "Más débiles que las bombas normales\npero dejan a tus enemigos congelados\ny particularmente frágiles.",
+ "powerupIceBombsNameText": "Bombas de Hielo",
+ "powerupImpactBombsDescriptionText": "Levemente más débiles que las bombas regulares, pero explotan al impacto.",
+ "powerupImpactBombsNameText": "Insta-Bombas",
+ "powerupLandMinesDescriptionText": "Estas vienen en grupos de 3;\nSon buenas para defensa territorial\no para detener enemigos veloces.",
+ "powerupLandMinesNameText": "Minas Terrestres",
+ "powerupPunchDescriptionText": "Hacen que tus golpes sean más duros,\nmás rápidos, mejores y más fuertes.",
+ "powerupPunchNameText": "Guantes de Boxeo",
+ "powerupShieldDescriptionText": "Absorbe un poco de daño\npara que asi no tengas que hacerlo tu.",
+ "powerupShieldNameText": "Escudo-de-Energía",
+ "powerupStickyBombsDescriptionText": "Se adhieren a todo lo que toquen.\nProducen hilaridad.",
+ "powerupStickyBombsNameText": "Bombas Pegajosas",
+ "powerupsSubtitleText": "Obviamente, ningún juego estaría completo sin potenciadores:",
+ "powerupsText": "Potenciadores",
+ "punchInfoText": "- Golpear -\nLos golpes hacen más daño cuanto\nmás rápido se muevan tus puños, así que\ncorre, salta y gira como un loco.",
+ "runInfoText": "- Correr -\nMantén CUALQUIER botón para correr. Los gatillos o botones traseros funcionan bien si los tienes.\nCorrer te lleva a lugares más rápido pero es más difícil girar, así que ten cuidado con los barrancos.",
+ "someDaysText": "Hay días en los que sientes ganas de golpear algo. O volar algo.",
+ "titleText": "Ayuda de ${APP_NAME}",
+ "toGetTheMostText": "Para sacar el máximo partido a este juego, necesitas:",
+ "welcomeText": "¡Bienvenido a ${APP_NAME}!"
+ },
+ "holdAnyButtonText": "",
+ "holdAnyKeyText": "",
+ "hostIsNavigatingMenusText": "- ${HOST} está navegando los menús como un pro -",
+ "importPlaylistCodeInstructionsText": "Usa el siguiente código para importar esta lista de juegos en otra parte:",
+ "importPlaylistSuccessText": "Lista de Juegos '${NAME}' importada ${TYPE}",
+ "importText": "Importar",
+ "importingText": "Importando...",
+ "inGameClippedNameText": "en el juego será\n\"${NAME}\"",
+ "inboxText": "Bandeja de Entrada",
+ "installDiskSpaceErrorText": "ERROR: Incapaz de completar la instalación.\nPuede que te hayas quedado sin espacio en tu dispositivo.\nLibera un poco de tu espacio e intenta de nuevo.",
+ "internal": {
+ "arrowsToExitListText": "pulsa ${LEFT} o ${RIGHT} para salir de la lista",
+ "buttonText": "botón",
+ "cantKickHostError": "No puedes expulsar al anfitrión.",
+ "chatBlockedText": "${NAME} está bloqueado del chat por ${TIME} segundos.",
+ "connectedToGameText": "Unido a '${NAME}'",
+ "connectedToPartyText": "¡Unido a la partida de ${NAME}!",
+ "connectingToPartyText": "Conectando...",
+ "connectionFailedHostAlreadyInPartyText": "Conexión fallida; el anfitrión está en otra partida.",
+ "connectionFailedPartyFullText": "Conexión fallida; la partida está llena.",
+ "connectionFailedText": "Conexión fallida.",
+ "connectionFailedVersionMismatchText": "Conexión fallida; el anfitrión corre una versión diferente del juego.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
+ "connectionRejectedText": "Conexión rechazada.",
+ "controllerConnectedText": "${CONTROLLER} conectado.",
+ "controllerDetectedText": "1 control detectado.",
+ "controllerDisconnectedText": "${CONTROLLER} desconectado.",
+ "controllerDisconnectedTryAgainText": "${CONTROLLER} desconectado. Intenta conectarlo de nuevo.",
+ "controllerForMenusOnlyText": "Este control no puede ser usado para jugar; solo para navegar por menús.",
+ "controllerReconnectedText": "${CONTROLLER} reconectado.",
+ "controllersConnectedText": "${COUNT} controles conectados.",
+ "controllersDetectedText": "${COUNT} controles detectados.",
+ "controllersDisconnectedText": "${COUNT} controles desconectados.",
+ "corruptFileText": "Archivo(s) corrupto(s) detectado(s). Por favor intenta reinstalando o contácta a ${EMAIL}",
+ "errorPlayingMusicText": "Error reproduciendo música: ${MUSIC}",
+ "errorResettingAchievementsText": "Incapaz de reiniciar los logros; por favor inténtalo de nuevo más tarde.",
+ "hasMenuControlText": "${NAME} tiene el control del menú.",
+ "incompatibleNewerVersionHostText": "El anfitrión está ejecutando una versión nueva del juego.\nActualiza a la última versión y vuelve a intentarlo.",
+ "incompatibleVersionHostText": "El anfitrión está ejecutando una versión diferente del juego.\nAsegúrese de que ambos están actualizados y vuelva a intentar.",
+ "incompatibleVersionPlayerText": "${NAME} está ejecutando una versión diferente del juego.\nAsegúrate de que ambos estén actualizados y vuelva a intentarlo.",
+ "invalidAddressErrorText": "Error: dirección inválida.",
+ "invalidNameErrorText": "Error: nombre inválido.",
+ "invalidPortErrorText": "Error: puerto inválido.",
+ "invitationSentText": "Invitación enviada.",
+ "invitationsSentText": "${COUNT} invitaciones enviadas.",
+ "joinedPartyInstructionsText": "Alguien se ha unido a tu fiesta.\nVe a 'Jugar' para iniciar un juego.",
+ "keyboardText": "Teclado",
+ "kickIdlePlayersKickedText": "Expulsando a ${NAME} por estar inactivo.",
+ "kickIdlePlayersWarning1Text": "${NAME} será expulsado en ${COUNT} segundos si sigue inactivo.",
+ "kickIdlePlayersWarning2Text": "(puedes apagar esto en Ajustes -> Avanzado)",
+ "leftGameText": "Abandonó '${NAME}'.",
+ "leftPartyText": "Abandonó la partida de ${NAME}.",
+ "noMusicFilesInFolderText": "La carpeta no contiene archivos de audio.",
+ "playerJoinedPartyText": "¡${NAME} se unió a la partida!",
+ "playerLeftPartyText": "${NAME} abandonó la partida.",
+ "rejectingInviteAlreadyInPartyText": "Rechazando invitación (ya estás en una partida).",
+ "serverRestartingText": "El servidor se está reiniciando. Por favor vuelva a unirse en un momento...",
+ "serverShuttingDownText": "El servidor está fuera de servicio...",
+ "signInErrorText": "Error iniciando sesión.",
+ "signInNoConnectionText": "Imposible iniciar sesión. (¿no hay conexión a internet?)",
+ "telnetAccessDeniedText": "ERROR: El usuario no concedió acceso telnet.",
+ "timeOutText": "(tiempo fuera en ${TIME} segundo/s)",
+ "touchScreenJoinWarningText": "Te uniste con la pantalla táctil.\nSi este fue un error, presiona 'Menú->Abandonar Juego' con ella.",
+ "touchScreenText": "Pantalla Táctil",
+ "unableToCompleteTryAgainText": "Incapaz de completar esto ahora mismo.\nPor favor, inténtelo de nuevo.",
+ "unableToResolveHostText": "Error: incapaz de encontrar el anfitrión.",
+ "unavailableNoConnectionText": "No disponible por el momento (¿no tienes conexión a internet?)",
+ "vrOrientationResetCardboardText": "Usa esto para reiniciar la orientación de RV.\nPara jugar el juego necesitarás un control externo.",
+ "vrOrientationResetText": "Orientación de RV reiniciada.",
+ "willTimeOutText": "(caducará si está inactivo)"
+ },
+ "inventoryText": "Inventario",
+ "jumpBoldText": "SALTAR",
+ "jumpText": "Saltar",
+ "keepText": "Mantener",
+ "keepTheseSettingsText": "¿Mantener estos ajustes?",
+ "keyboardChangeInstructionsText": "Presiona dos veces el espacio para cambiar los teclados.",
+ "keyboardNoOthersAvailableText": "No hay más teclados disponibles.",
+ "keyboardSwitchText": "Cambiando teclado a \"${NAME}\".",
+ "kickOccurredText": "${NAME} ha sido expulsado.",
+ "kickQuestionText": "¿Expulsar a ${NAME}?",
+ "kickText": "Expulsar",
+ "kickVoteCantKickAdminsText": "Los administradores no pueden ser expulsados.",
+ "kickVoteCantKickSelfText": "No puedes expulsarte a ti mismo.",
+ "kickVoteFailedNotEnoughVotersText": "No hay suficientes jugadores para votar.",
+ "kickVoteFailedText": "Votación de expulsión fallida.",
+ "kickVoteStartedText": "Se ha iniciado una votación de expulsión para '${NAME}'.",
+ "kickVoteText": "Votar para Expulsar",
+ "kickVotingDisabledText": "El voto para expulsar esta desactivado.",
+ "kickWithChatText": "Escribe ${YES} en el chat para \"Si\" y ${NO} para \"No\".",
+ "killsTallyText": "${COUNT} asesinatos",
+ "killsText": "Asesinatos",
+ "kioskWindow": {
+ "easyText": "Fácil",
+ "epicModeText": "Modo Lento",
+ "fullMenuText": "Menú Completo",
+ "hardText": "Difícil",
+ "mediumText": "Medio",
+ "singlePlayerExamplesText": "Ejemplos de 1 Jugador / Modo Cooperativo",
+ "versusExamplesText": "Ejemplos de Versus"
+ },
+ "languageSetText": "El idioma ahora es \"${LANGUAGE}\".",
+ "lapNumberText": "Vuelta ${CURRENT}/${TOTAL}",
+ "lastGamesText": "(últimos ${COUNT} juegos)",
+ "leaderboardsText": "Clasificaciones",
+ "league": {
+ "allTimeText": "Todo El Tiempo",
+ "currentSeasonText": "Temporada Actual (${NUMBER})",
+ "leagueFullText": "Liga ${NAME}",
+ "leagueRankText": "Rango de Liga",
+ "leagueText": "Liga",
+ "rankInLeagueText": "#${RANK}, ${NAME} Liga${SUFFIX}",
+ "seasonEndedDaysAgoText": "La temporada terminó hace ${NUMBER} día(s).",
+ "seasonEndsDaysText": "La temporada termina en ${NUMBER} día(s).",
+ "seasonEndsHoursText": "La temporada termina en ${NUMBER} hora(s).",
+ "seasonEndsMinutesText": "La temporada termina en ${NUMBER} minuto(s).",
+ "seasonText": "Temporada ${NUMBER}",
+ "tournamentLeagueText": "Debes alcanzar la liga ${NAME} para entrar a este torneo.",
+ "trophyCountsResetText": "El conteo de trofeos se reiniciará la próxima temporada.",
+ "upToDateBonusDescriptionText": "Los jugadores con una version reciente \ndel juego obtienen un bonus del ${PERCENT}% aquí.",
+ "upToDateBonusText": "Bono Actualizado"
+ },
+ "learnMoreText": "Aprender Más",
+ "levelBestScoresText": "Mejores puntajes en ${LEVEL}",
+ "levelBestTimesText": "Mejores tiempos en ${LEVEL}",
+ "levelIsLockedText": "${LEVEL} está bloqueado.",
+ "levelMustBeCompletedFirstText": "${LEVEL} debe completarse primero.",
+ "levelText": "Nivel ${NUMBER}",
+ "levelUnlockedText": "¡Nivel Desbloqueado!",
+ "livesBonusText": "Bono de Vidas",
+ "loadingText": "cargando",
+ "loadingTryAgainText": "Cargando; vuelve a intentarlo en un momento...",
+ "macControllerSubsystemBothText": "Ambos (no recomendado)",
+ "macControllerSubsystemClassicText": "Clásico",
+ "macControllerSubsystemDescriptionText": "(intenta cambiar esto si tus controles no están funcionando)",
+ "macControllerSubsystemMFiNoteText": "Control hecho para iOS/Mac detectado;\nTal vez quieras activar esto en Ajustes -> Controles",
+ "macControllerSubsystemMFiText": "Creado para iOS/Mac",
+ "macControllerSubsystemTitleText": "Soporte del Control",
+ "mainMenu": {
+ "creditsText": "Créditos",
+ "demoMenuText": "Menú Demo",
+ "endGameText": "Terminar Juego",
+ "endTestText": "Terminar Prueba",
+ "exitGameText": "Salir del Juego",
+ "exitToMenuText": "¿Salir al menú?",
+ "howToPlayText": "Cómo Jugar",
+ "justPlayerText": "(Solo ${NAME})",
+ "leaveGameText": "Abandonar Juego",
+ "leavePartyConfirmText": "¿Realmente deseas abandonar la partida?",
+ "leavePartyText": "Abandonar Partida",
+ "quitText": "Salir",
+ "resumeText": "Reanudar",
+ "settingsText": "Ajustes"
+ },
+ "makeItSoText": "Que así sea",
+ "mapSelectGetMoreMapsText": "Obtener Más Mapas...",
+ "mapSelectText": "Seleccionar...",
+ "mapSelectTitleText": "Mapas para ${GAME}",
+ "mapText": "Mapa",
+ "maxConnectionsText": "Máximo de Conexiones",
+ "maxPartySizeText": "Capacidad Máxima de La Partida",
+ "maxPlayersText": "Máximo de Jugadores",
+ "merchText": "¡Mercancía!",
+ "modeArcadeText": "Modo Arcade",
+ "modeClassicText": "Modo Clásico",
+ "modeDemoText": "Modo Demo",
+ "moreSoonText": "Más próximamente...",
+ "mostDestroyedPlayerText": "Jugador Más Destruido",
+ "mostValuablePlayerText": "Jugador Más Valioso",
+ "mostViolatedPlayerText": "Jugador Más Violado",
+ "mostViolentPlayerText": "Jugador Más Violento",
+ "moveText": "Mover",
+ "multiKillText": "¡¡¡COMBO DE ${COUNT}!!!",
+ "multiPlayerCountText": "${COUNT} jugadores",
+ "mustInviteFriendsText": "Nota: debes invitar a tus amigos en\nel panel \"${GATHER}\" o conectar\ncontroles para jugar multijugador.",
+ "nameBetrayedText": "${NAME} traicionó a ${VICTIM}.",
+ "nameDiedText": "${NAME} ha muerto.",
+ "nameKilledText": "${NAME} mató a ${VICTIM}.",
+ "nameNotEmptyText": "¡El nombre no puede quedar vacío!",
+ "nameScoresText": "¡${NAME} Anotó!",
+ "nameSuicideKidFriendlyText": "${NAME} murió accidentalmente.",
+ "nameSuicideText": "${NAME} cometió suicidio.",
+ "nameText": "Nombre",
+ "nativeText": "Nativo",
+ "newExclaimText": "¡Nuevo!",
+ "newPersonalBestText": "¡Nuevo récord personal!",
+ "newTestBuildAvailableText": "¡Una nueva build de prueba está disponible! (${VERSION} build ${BUILD}).\nObténla en ${ADDRESS}",
+ "newText": "Nuevo",
+ "newVersionAvailableText": "¡Una nueva version de ${APP_NAME} está disponible! (${VERSION})",
+ "nextAchievementsText": "Siguientes Logros:",
+ "nextLevelText": "Siguiente Nivel",
+ "noAchievementsRemainingText": "- ninguno",
+ "noContinuesText": "(sin re-intentos)",
+ "noExternalStorageErrorText": "No se encontró almacenamiento externo en este dispositivo",
+ "noGameCircleText": "Error: no registrado en GameCircle",
+ "noMessagesText": "Sin mensajes.",
+ "noPluginsInstalledText": "Sin Complementos Instalados",
+ "noScoresYetText": "Sin puntajes aún.",
+ "noServersFoundText": "No se encontraron servidores.",
+ "noThanksText": "No Gracias",
+ "noTournamentsInTestBuildText": "ADVERTENCIA: Los puntajes de los torneos en esta versión de prueba serán ignorados.",
+ "noValidMapsErrorText": "Mapas válidos no encontrados para este tipo de juego.",
+ "notEnoughPlayersRemainingText": "No hay jugadores suficientes restantes; sal e inicia un nuevo juego.",
+ "notEnoughPlayersText": "¡Necesitas por lo menos ${COUNT} jugadores para comenzar!",
+ "notEnoughTicketsText": "¡No tienes suficientes tickets!",
+ "notNowText": "Ahora No",
+ "notSignedInErrorText": "Debes iniciar sesión para hacer esto.",
+ "notSignedInGooglePlayErrorText": "Debes iniciar sesión con Google Play para hacer esto.",
+ "notSignedInText": "no registrado",
+ "notUsingAccountText": "Nota: ignorando su cuenta de ${SERVICE}.\nVaya a 'Cuenta -> Iniciar sesión con ${SERVICE}' si quieres usarla.",
+ "nothingIsSelectedErrorText": "¡No hay nada seleccionado!",
+ "numberText": "#${NUMBER}",
+ "offText": "Apagar",
+ "okText": "Aceptar",
+ "onText": "Encender",
+ "oneMomentText": "Un Momento...",
+ "onslaughtRespawnText": "${PLAYER} reaparecerá en la oleada ${WAVE}",
+ "openMeText": "Ábreme!",
+ "openNowText": "Abrir Ahora",
+ "openText": "Abrir",
+ "orText": "${A} o ${B}",
+ "otherText": "Otros...",
+ "outOfText": "(#${RANK} de ${ALL})",
+ "ownFlagAtYourBaseWarning": "¡Su propia bandera debe estar\nen su base para anotar!",
+ "partyWindow": {
+ "chatMessageText": "Mensaje del Chat",
+ "emptyText": "Tu partida está vacía",
+ "hostText": "(anfitrión)",
+ "sendText": "Enviar",
+ "titleText": "Tu Partida"
+ },
+ "pausedByHostText": "(pausado por el anfitrión)",
+ "perfectWaveText": "¡Oleada Perfecta!",
+ "pickUpText": "Recoger",
+ "playModes": {
+ "coopText": "Cooperativo",
+ "freeForAllText": "Todos contra Todos",
+ "multiTeamText": "Múlti-Equipo",
+ "singlePlayerCoopText": "Un Jugador / Equipos",
+ "teamsText": "Equipos"
+ },
+ "playText": "Jugar",
+ "playWindow": {
+ "oneToFourPlayersText": "1-4 jugadores",
+ "titleText": "Jugar",
+ "twoToEightPlayersText": "2-8 jugadores"
+ },
+ "playerCountAbbreviatedText": "${COUNT}j",
+ "playerDelayedJoinText": "${PLAYER} entrará al comienzo de la siguiente ronda.",
+ "playerInfoText": "Información del Jugador",
+ "playerLeftText": "${PLAYER} abandonó el juego.",
+ "playerLimitReachedText": "Límite de ${COUNT} jugadores alcanzado; no se permiten más.",
+ "playerProfilesWindow": {
+ "cantDeleteAccountProfileText": "No puedes borrar el perfil de tu cuenta.",
+ "deleteButtonText": "Borrar\nPerfil",
+ "deleteConfirmText": "¿Borrar '${PROFILE}'?",
+ "editButtonText": "Editar\nPerfil",
+ "explanationText": "(nombres de jugadores personalizados y apariencias para esta cuenta)",
+ "newButtonText": "Nuevo\nPerfil",
+ "titleText": "Perfiles del Jugador"
+ },
+ "playerText": "Jugador",
+ "playlistNoValidGamesErrorText": "Esta lista de juegos contiene juegos desbloqueables no válidos.",
+ "playlistNotFoundText": "playlist no encontrada",
+ "playlistText": "Lista de Juegos",
+ "playlistsText": "Listas de juegos",
+ "pleaseRateText": "Si te gusta ${APP_NAME}, por favor tomate un momento\npara calificar o escribir una reseña. Esto proporciona\ninformación útil y ayuda al soporte del futuro desarrollo del juego.\n\n¡gracias!\n-eric",
+ "pleaseWaitText": "Por favor, espera...",
+ "pluginClassLoadErrorText": "Error cargando el complemento '${PLUGIN}': ${ERROR}",
+ "pluginInitErrorText": "Error iniciando complemento '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Ajustes de Complementos",
+ "pluginsAutoEnableNewText": "Activar automáticamente los nuevos complementos",
+ "pluginsDetectedText": "Complemento(s) detectado(s). Reinicia el juego o ve a ajustes para configurarlo.",
+ "pluginsDisableAllText": "Deshabilitar Todos Los Complementos",
+ "pluginsEnableAllText": "Habilitar Todos Los Complementos",
+ "pluginsRemovedText": "${NUM} complemento(s) ya no está(n).",
+ "pluginsText": "Complementos",
+ "practiceText": "Práctica",
+ "pressAnyButtonPlayAgainText": "Presiona cualquier botón para jugar de nuevo...",
+ "pressAnyButtonText": "Presiona cualquier botón para continuar...",
+ "pressAnyButtonToJoinText": "presiona cualquier botón para unirte al juego...",
+ "pressAnyKeyButtonPlayAgainText": "Presiona cualquier tecla/botón para jugar de nuevo...",
+ "pressAnyKeyButtonText": "Presiona cualquier botón/tecla para continuar...",
+ "pressAnyKeyText": "Presiona cualquier tecla...",
+ "pressJumpToFlyText": "** Presiona saltar repetidamente para volar **",
+ "pressPunchToJoinText": "presiona GOLPEAR para unirte...",
+ "pressToOverrideCharacterText": "presiona ${BUTTONS} para cambiar de personaje",
+ "pressToSelectProfileText": "presiona ${BUTTONS} para seleccionar un perfil",
+ "pressToSelectTeamText": "presiona ${BUTTONS} para seleccionar un equipo",
+ "promoCodeWindow": {
+ "codeText": "Código",
+ "enterText": "Ingresar"
+ },
+ "promoSubmitErrorText": "Error al enviar código; comprueba tu conexión a Internet",
+ "ps3ControllersWindow": {
+ "macInstructionsText": "Apaga tu PS3, asegúrate que el Bluetooth esté activado en\ntu Mac, a continuación, conecta el control a tu Mac a través \nde un cable USB para sincronizarlo. A partir de entonces, se \npuede utilizar el botón de inicio del control para conectarlo con\ntu Mac ya sea por cable (USB) o el modo inalámbrico (Bluetooth).\n\nEn algunas Macs es posible que te pida una contraseña al momento de sincronizar.\nSi esto ocurre, consulta el siguiente tutorial o busca en Google para obtener ayuda.\n\n\n\n\nLos controles de PS3 conectados inalámbricamente deberían de aparecer en la lista de\ndispositivos en Preferencias del Sistema->Bluetooth. Puede que tengas que eliminarlos\nde esa lista cuando quieras utilizarlos de nuevo con tu PS3.\n\nAsimismo, asegúrate de desconectarlos del Bluetooth cuando no los estés\nusando o las baterías se queden sin energía.\n\nEl Bluetooth puede soportat hasta 7 dispositivos,\naunque tu kilometraje puede variar.",
+ "ouyaInstructionsText": "Para usar un control de PS3 con tu OUYA, tienes que conectarlo una sola vez con\nun cable USB para sincronizarlo. Al hacer esto se pueden desconectar tus otros \ncontroles, por lo que debes reiniciar tu OUYA y desconectar el cable USB.\n\nA partir de entonces deberías ser capaz de usar el botón INICIO para conectarte de\nforma inalámbrica. Cuando hayas terminado de jugar, mantén pulsado el botón INICIO\ndurante 10 segundos para apagar el control, de lo contrario puede permanecer encendido\ny gastar las baterías.",
+ "pairingTutorialText": "sincronizando video tutorial",
+ "titleText": "Para usar Controles de PS3 con ${APP_NAME}:"
+ },
+ "punchBoldText": "GOLPEAR",
+ "punchText": "Golpear",
+ "purchaseForText": "Comprar por ${PRICE}",
+ "purchaseGameText": "Comprar Juego",
+ "purchaseNeverAvailableText": "Lo siento, las compras no están disponibles en esta build.\nIntenta iniciar sesión en otra plataforma y realizar compras desde ahí.",
+ "purchaseNotAvailableText": "Esta compra no está disponible.",
+ "purchasingText": "Comprando...",
+ "quitGameText": "¿Salir de ${APP_NAME}?",
+ "quittingIn5SecondsText": "Saliendo en 5 segundos...",
+ "randomPlayerNamesText": "Pablo, Cristiano, Fulanito, Macondo, Margarita, Martín, Martina, Fabian, Felipe, Franco, Fernando, Pancho, Pepito, David, Diego, Tomás, Andres, Federico, Juan, Joaquín, Huevo Duro, Chico Pobre, Chico Rico",
+ "randomText": "Generar",
+ "rankText": "Rango",
+ "ratingText": "Valoración",
+ "reachWave2Text": "Llega hasta la segunda horda\npara clasificar.",
+ "readyText": "listo",
+ "recentText": "Reciente",
+ "remoteAppInfoShortText": "${APP_NAME} es más divertido cuando se juega con la familia y amigos.\nConecta uno o más controles de hardware o instala la app\n${REMOTE_APP_NAME} en los teléfonos o tabletas para usarlos\ncomo controles.",
+ "remote_app": {
+ "app_name": "Control Remoto BombSquad",
+ "app_name_short": "BSRemoto",
+ "button_position": "Posición de Los Botones",
+ "button_size": "Tamaño de Los Botones",
+ "cant_resolve_host": "No se encuentra el anfitrión.",
+ "capturing": "Captando...",
+ "connected": "Conectado.",
+ "description": "Usa tu teléfono o tableta como control para BombSquad.\nHasta 8 dispositivos pueden conectarse a la vez para un épico caos de multijugador local en un solo TV o tableta.",
+ "disconnected": "Desconectado por el servidor.",
+ "dpad_fixed": "fijo",
+ "dpad_floating": "flotante",
+ "dpad_position": "Posición del D-Pad",
+ "dpad_size": "Tamaño del D-Pad",
+ "dpad_type": "Tipo de D-Pad",
+ "enter_an_address": "Ingresa una Dirección",
+ "game_full": "El juego está lleno o no acepta conexiones.",
+ "game_shut_down": "El juego se ha cerrado.",
+ "hardware_buttons": "Botones del Hardware",
+ "join_by_address": "Unirse por Dirección...",
+ "lag": "Lag: ${SECONDS} segundo/s",
+ "reset": "Restablecer a predeterminado",
+ "run1": "Ejecutar 1",
+ "run2": "Ejecutar 2",
+ "searching": "Buscando partidas de BombSquad...",
+ "searching_caption": "Toca el nombre de la partida para unirte.\nTen en cuenta que debes estar en la misma conexión Wi-Fi de la partida.",
+ "start": "Empezar",
+ "version_mismatch": "Las versiones no coinciden.\nAsegurate que BombSquad y BombSquad Remote\nestán actualizados e intenta de nuevo."
+ },
+ "removeInGameAdsText": "Desbloquea \"${PRO}\" en la tienda para quitar la publicidad del juego.",
+ "removeInGameAdsTokenPurchaseText": "OFERTA DE TIEMPO LIMITADO: Compra CUALQUIER paquete de fichas para quitar los anuncios del juego.",
+ "renameText": "Renombrar",
+ "replayEndText": "Terminar Repetición",
+ "replayNameDefaultText": "Repetición Último Juego",
+ "replayReadErrorText": "Error leyendo archivo de repetición.",
+ "replayRenameWarningText": "Renombra \"${REPLAY}\" después de un juego si quieres quedarte con el; o sino será reemplazado.",
+ "replayVersionErrorText": "Lo sentimos, esta repetición fue hecha en una\nversión diferente del juego y no se puede usar.",
+ "replayWatchText": "Ver Repetición",
+ "replayWriteErrorText": "Error creando archivo de repetición.",
+ "replaysText": "Repeticiones",
+ "reportPlayerExplanationText": "Usa este email para reportar trampas, lenguaje inapropiado u otro mal comportamiento.\nPor favor, describelo aquí abajo:",
+ "reportThisPlayerCheatingText": "Trampas",
+ "reportThisPlayerLanguageText": "Lenguaje Inapropiado",
+ "reportThisPlayerReasonText": "¿Qué te gustaría reportar?",
+ "reportThisPlayerText": "Reportar Este Jugador",
+ "requestingText": "Solicitando...",
+ "restartText": "Reiniciar",
+ "retryText": "Reintentar",
+ "revertText": "Deshacer",
+ "runText": "Correr",
+ "saveText": "Guardar",
+ "scanScriptsErrorText": "Error(es) escaneando script(s); Vea el registro para más detalles.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} y ${NUM} otro(s) módulo(s) se deberán actualizar para el api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} se deberá actualizar para el api ${API}",
+ "scoreChallengesText": "Desafíos de Puntuación",
+ "scoreListUnavailableText": "La lista de puntajes no está disponible.",
+ "scoreText": "Puntaje",
+ "scoreUnits": {
+ "millisecondsText": "Milisegundos",
+ "pointsText": "Puntos",
+ "secondsText": "Segundos"
+ },
+ "scoreWasText": "(era ${COUNT})",
+ "selectText": "Elegir",
+ "sendInfoDescriptionText": "Envía información del estado de la cuenta y de la aplicación al desarrollador.\nPor favor incluya su nombre o el motivo del envío.",
+ "seriesWinLine1PlayerText": "GANA LA",
+ "seriesWinLine1TeamText": "GANA LA",
+ "seriesWinLine1Text": "GANA LA",
+ "seriesWinLine2Text": "SERIE!",
+ "settingsWindow": {
+ "accountText": "Cuenta",
+ "advancedText": "Avanzado",
+ "audioText": "Audio",
+ "controllersText": "Controles",
+ "graphicsText": "Gráficos",
+ "playerProfilesMovedText": "Nota: Los Perfiles de Jugadores se han movido a la ventana de Cuenta en el menú principal.",
+ "titleText": "Ajustes"
+ },
+ "settingsWindowAdvanced": {
+ "alwaysUseInternalKeyboardDescriptionText": "(un teclado en pantalla simple y amigable con controles para editar textos)",
+ "alwaysUseInternalKeyboardText": "Siempre usar el teclado interno",
+ "benchmarksText": "Rendimiento y Pruebas de Estrés",
+ "devToolsText": "Herramientas de Desarrollador",
+ "disableCameraGyroscopeMotionText": "Deshabilitar el movimiento del giroscopio de la cámara",
+ "disableCameraShakeText": "Deshabilitar el temblor de la cámara",
+ "disableThisNotice": "(puedes deshabilitar este aviso en ajustes avanzados)",
+ "enterPromoCodeText": "Ingresar Código",
+ "forTestingText": "Nota: estos datos son solo para pruebas y se reiniciarán cuando salga de la app.",
+ "helpTranslateText": "Las traducciones de ${APP_NAME} son un esfuerzo\napoyado por la comunidad. Si deseas aportar o corregir una\ntraducción, utiliza el siguiente enlace. ¡Gracias de antemano!",
+ "insecureConnectionsDescriptionText": "no es recomendado, pero quizás permita el multijugador\ndesde paises o conexiones restringidas.",
+ "insecureConnectionsText": "Usar conexiones inseguras",
+ "kickIdlePlayersText": "Expulsar a jugadores inactivos",
+ "kidFriendlyModeText": "Modo Niños (violencia reducida, etc).",
+ "languageText": "Idioma",
+ "moddingGuideText": "Guía de Modificación",
+ "moddingToolsText": "Herramientas de Modificación",
+ "mustRestartText": "Tienes que reiniciar el juego para que tome efecto.",
+ "netTestingText": "Prueba de Red",
+ "resetText": "Reiniciar",
+ "sendInfoText": "Enviar Información",
+ "showBombTrajectoriesText": "Mostrar Trayectorias de Las Bombas",
+ "showDemosWhenIdleText": "Mostrar demostraciones cuando estés inactivo",
+ "showDeprecatedLoginTypesText": "Mostrar tipos de inicio de sesión obsoletos",
+ "showDevConsoleButtonText": "Mostrar botón de consola de desarrollador",
+ "showInGamePingText": "Mostrar ping en el juego",
+ "showPlayerNamesText": "Mostrar Nombres de Los Jugadores",
+ "showUserModsText": "Mostrar Carpeta de Mods",
+ "titleText": "Avanzado",
+ "translationEditorButtonText": "Editor de Traducción de ${APP_NAME}",
+ "translationFetchErrorText": "estado de traducción no disponible",
+ "translationFetchingStatusText": "viendo estado de traducción...",
+ "translationInformMe": "Informarme cuando mi idioma necesite actualizaciones",
+ "translationNoUpdateNeededText": "El idioma actual está actualizado; ¡wuju!",
+ "translationUpdateNeededText": "** ¡¡El idioma actual necesita actualizarse!! **",
+ "vrTestingText": "Prueba RV"
+ },
+ "shareText": "Compartir",
+ "sharingText": "Compartiendo...",
+ "showText": "Mostrar",
+ "signInForPromoCodeText": "Debes iniciar sesión con tu cuenta para que el código funcione.",
+ "singleGamePlaylistNameText": "Solo ${GAME}",
+ "singlePlayerCountText": "1 jugador",
+ "sizeLargeText": "Grande",
+ "sizeMediumText": "Mediano",
+ "sizeSmallText": "Pequeño",
+ "soloNameFilterText": "Solo ${NAME}",
+ "soundtrackTypeNames": {
+ "CharSelect": "Selección de Personajes",
+ "Chosen One": "El Elegido",
+ "Epic": "Juegos en Modo Épico",
+ "Epic Race": "Carrera Épica",
+ "FlagCatcher": "Captura la Bandera",
+ "Flying": "Pensamientos Felices",
+ "Football": "Fútbol",
+ "ForwardMarch": "Asalto",
+ "GrandRomp": "Conquista",
+ "Hockey": "Hockey",
+ "Keep Away": "Aléjate",
+ "Marching": "Evasiva",
+ "Menu": "Menú Principal",
+ "Onslaught": "Matanza",
+ "Race": "Carrera",
+ "Scary": "Rey de la Colina",
+ "Scores": "Pantalla de Puntuación",
+ "Survival": "Eliminación",
+ "ToTheDeath": "Combate Mortal",
+ "Victory": "Pantalla de Puntuación Final"
+ },
+ "spaceKeyText": "espacio",
+ "statsText": "Estadísticas",
+ "stopRemindingMeText": "Deja de recordarmelo",
+ "storagePermissionAccessText": "Esto requiere acceso de almacenamiento",
+ "store": {
+ "alreadyOwnText": "¡Ya tienes ${NAME}!",
+ "bombSquadProNameText": "${APP_NAME} Pro",
+ "bombSquadProNewDescriptionText": "• Quita los anuncios y las pantallas molestas\n• Desbloquea más ajustes del juego\n• También incluye:",
+ "buyText": "Comprar",
+ "charactersText": "Personajes",
+ "comingSoonText": "Próximamente...",
+ "extrasText": "Extras",
+ "holidaySpecialText": "¡Especial de Temporada!",
+ "howToSwitchCharactersText": "(ve a \"${SETTINGS} -> ${PLAYER_PROFILES}\" para asignar y personalizar los personajes)",
+ "howToUseIconsText": "(crea perfiles globales de jugador (en la ventana de cuenta) para usarlos)",
+ "howToUseMapsText": "(usa estos mapas en tus listas de juegos por equipos y todos contra todos)",
+ "iconsText": "Iconos",
+ "loadErrorText": "No se pudo cargar la página.\nRevisa tu conexión a internet.",
+ "loadingText": "cargando",
+ "mapsText": "Mapas",
+ "miniGamesText": "MiniJuegos",
+ "oneTimeOnlyText": "(solo una vez)",
+ "purchaseAlreadyInProgressText": "Una compra de este artículo se encuentra en progreso.",
+ "purchaseConfirmText": "¿Comprar ${ITEM}?",
+ "purchaseNotValidError": "Compra inválida.\nContacte a ${EMAIL} si esto es un error.",
+ "purchaseText": "Comprar",
+ "saleBundleText": "¡Paquete en Oferta!",
+ "saleExclaimText": "¡Oferta!",
+ "salePercentText": "(${PERCENT}% menos)",
+ "saleText": "OFERTA",
+ "searchText": "Buscar",
+ "teamsFreeForAllGamesText": "Juegos de Equipos / Todos contra Todos",
+ "totalWorthText": "*** ¡${TOTAL_WORTH} de valor! ***",
+ "upgradeQuestionText": "¿Mejorar?",
+ "winterSpecialText": "Especial de Invierno",
+ "youOwnThisText": "- ya posees esto -"
+ },
+ "storeDescriptionText": "¡Juego de locura de a 8 Jugadores!\n\n¡Revienta a tus amigos (o a la computadora) en un torneo de mini-juegos explosivos como Captura la Bandera, Hockey-Bomba y Combate Mortal Épico en cámara lenta!\n\nControles sencillos y un amplio soporte de controles hacen que sea fácil que 8 personas entren en la acción; ¡incluso puedes usar tus dispositivos móviles como controles a través de la aplicación gratuita de 'Control Remoto BombSquad'!\n\n¡Fuera Bombas!\n\nEcha un vistazo en: www.froemling.net/bombsquad para más información.",
+ "storeDescriptions": {
+ "blowUpYourFriendsText": "Revienta a tus amigos.",
+ "competeInMiniGamesText": "Compite en minijuegos de carreras, vuelo y mucho más.",
+ "customize2Text": "Personaliza personajes, minijuegos e incluso la banda sonora.",
+ "customizeText": "Personaliza tus personajes y crea tus propias listas de minijuegos.",
+ "sportsMoreFunText": "Los deportes son más divertidos con explosivos.",
+ "teamUpAgainstComputerText": "Forma un equipo contra la computadora."
+ },
+ "storeText": "Tienda",
+ "submitText": "Enviar",
+ "submittingPromoCodeText": "Enviando Código...",
+ "successText": "¡Éxito!",
+ "supportEmailText": "Si estás teniendo algún problema con la\napp, por favor, manda un email a ${EMAIL}.",
+ "teamNamesColorText": "Nombres de Equipos/Colores...",
+ "telnetAccessGrantedText": "Esta versión de prueba ya no está activa; busca una versión nueva.",
+ "telnetAccessText": "Acceso a Telnet detectado; ¿permitir?",
+ "testBuildErrorText": "Esta versión de prueba ya no es activa; busca una versión más nueva.",
+ "testBuildText": "Compilación de Prueba",
+ "testBuildValidateErrorText": "Incapaz de validar esta compilación de prueba. (¿no tienes conexión a internet?)",
+ "testBuildValidatedText": "Compilación de Prueba Validada; ¡Disfruta!",
+ "thankYouText": "¡Gracias por tu ayuda! ¡¡Disfruta el juego!!",
+ "threeKillText": "¡¡COMBO TRIPLE!!",
+ "ticketsDescriptionText": "Los tickets pueden ser usados para desbloquear\npersonajes, mapas, minijuegos y más en la tienda.\n\nLos tickets pueden ser encontrados en los cofres\nganados a través de la campaña, torneos y logros.",
+ "timeBonusText": "Bono de Tiempo",
+ "timeElapsedText": "Tiempo Transcurrido",
+ "timeExpiredText": "Tiempo Expirado",
+ "timeSuffixDaysText": "${COUNT}d",
+ "timeSuffixHoursText": "${COUNT}h",
+ "timeSuffixMinutesText": "${COUNT}m",
+ "timeSuffixSecondsText": "${COUNT}s",
+ "tipText": "Consejo",
+ "titleText": "BombSquad",
+ "titleVRText": "BombSquad RV",
+ "tokens": {
+ "getTokensText": "Obtén Fichas",
+ "notEnoughTokensText": "¡Fichas insuficientes!",
+ "numTokensText": "${COUNT} Fichas",
+ "openNowDescriptionText": "Tienes suficiente fichas para \nabrir esto ahora - no tienes\nque esperar.",
+ "shinyNewCurrencyText": "La brillante nueva moneda de BombSquad.",
+ "tokenPack1Text": "Paquete de Fichas Pequeña",
+ "tokenPack2Text": "Paquete de Fichas Mediana",
+ "tokenPack3Text": "Paquete de Fichas Grande",
+ "tokenPack4Text": "Paquete de Fichas Jumbo",
+ "tokensDescriptionText": "Los tokens son usados para acelerar el desbloqueo de\ncofres entre otras funciones del juego y la cuenta.\n\nPuedes ganar fichas en el juego o comprarlas\nen paquetes. O comprar el Pase de Oro para tokens \ninfinitos y nunca más escuchar de ellos de nuevo.",
+ "youHaveGoldPassText": "Tienes un Pase de Oro.\nTodas las compras de fichas son gratis.\nDisfruta!"
+ },
+ "topFriendsText": "Mejores Amigos",
+ "tournamentCheckingStateText": "Buscando estado del campeonato; espere por favor...",
+ "tournamentEndedText": "Este torneo ha acabado. Uno nuevo comenzará pronto.",
+ "tournamentEntryText": "Entrada Al Torneo",
+ "tournamentFinalStandingsText": "Clasificación Final",
+ "tournamentResultsRecentText": "Resultados de Torneos Recientes",
+ "tournamentStandingsText": "Puestos del Torneo",
+ "tournamentText": "Torneo",
+ "tournamentTimeExpiredText": "Tiempo del Torneo Expirado",
+ "tournamentsDisabledWorkspaceText": "Los torneos están deshabilitados cuando los espacios de trabajo están activos.\nPara volver a habilitar los torneos, deshabilite su espacio de trabajo y reinicie el juego.",
+ "tournamentsText": "Torneos",
+ "translations": {
+ "characterNames": {
+ "Agent Johnson": "Agente Johnson",
+ "B-9000": "B-9000",
+ "Bernard": "Bernard",
+ "Bones": "Huesos",
+ "Butch": "Butch",
+ "Easter Bunny": "Conejo de Pascua",
+ "Flopsy": "Flopsy",
+ "Frosty": "Frosty",
+ "Gretel": "Gretel",
+ "Grumbledorf": "Grumbledorf",
+ "Jack Morgan": "Jack Morgan",
+ "Kronk": "Kronk",
+ "Lee": "Lee",
+ "Lucky": "Suertudo",
+ "Mel": "Mel",
+ "Middle-Man": "Hombre Intermedio",
+ "Minimus": "Minimus",
+ "Pascal": "Pascal",
+ "Pixel": "Pixel",
+ "Sammy Slam": "Sammy Slam",
+ "Santa Claus": "Papá Noel",
+ "Snake Shadow": "Serpiente Sombría",
+ "Spaz": "Spaz",
+ "Taobao Mascot": "Taobao",
+ "Todd McBurton": "Todd McBurton",
+ "Zoe": "Zoe",
+ "Zola": "Zola"
+ },
+ "coopLevelNames": {
+ "${GAME} Training": "Entrenamiento de ${GAME}",
+ "Infinite ${GAME}": "${GAME} Infinito",
+ "Infinite Onslaught": "Matanza Infinita",
+ "Infinite Runaround": "Evasiva Infinita",
+ "Onslaught Training": "Entrenamiento de Matanza",
+ "Pro ${GAME}": "${GAME} Pro",
+ "Pro Football": "Fútbol Pro",
+ "Pro Onslaught": "Matanza Pro",
+ "Pro Runaround": "Evasiva Pro",
+ "Rookie ${GAME}": "${GAME} Novato",
+ "Rookie Football": "Fútbol Novato",
+ "Rookie Onslaught": "Matanza Novato",
+ "The Last Stand": "La Batalla Final",
+ "Uber ${GAME}": "${GAME} Ultra",
+ "Uber Football": "Fútbol Ultra",
+ "Uber Onslaught": "Matanza Ultra",
+ "Uber Runaround": "Evasiva Ultra"
+ },
+ "displayItemNames": {
+ "${C} Tickets": "${C} Boletos",
+ "${C} Tokens": "${C} Ficha(s)",
+ "Chest": "Cofre",
+ "L1 Chest": "Cofre N1",
+ "L2 Chest": "Cofre N2",
+ "L3 Chest": "Cofre N3",
+ "L4 Chest": "Cofre N4",
+ "L5 Chest": "Cofre N5",
+ "L6 Chest": "Cofre N6",
+ "Unknown Chest": "Cofre Desconocido"
+ },
+ "gameDescriptions": {
+ "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Sé el elegido durante el tiempo designado para ganar.\nMata al elegido para convertirte en él.",
+ "Bomb as many targets as you can.": "Bombardea tantos blancos como puedas.",
+ "Carry the flag for ${ARG1} seconds.": "Carga la bandera por ${ARG1} segundos.",
+ "Carry the flag for a set length of time.": "Carga la bandera por un determinado tiempo.",
+ "Crush ${ARG1} of your enemies.": "Elimina ${ARG1} de tus enemigos.",
+ "Defeat all enemies.": "Acaba con todo lo que se mueva.",
+ "Dodge the falling bombs.": "Esquiva las bombas.",
+ "Final glorious epic slow motion battle to the death.": "Gloriosa batalla final en épica cámara lenta hasta la muerte.",
+ "Gather eggs!": "¡Recolecta huevos!",
+ "Get the flag to the enemy end zone.": "Lleva la bandera enemiga a tu zona.",
+ "How fast can you defeat the ninjas?": "¿Cuán rápido puedes derrotar a los ninjas?",
+ "Kill a set number of enemies to win.": "Mata a un número determinado de enemigos para ganar.",
+ "Last one standing wins.": "El último en pie gana.",
+ "Last remaining alive wins.": "El último en quedar vivo gana.",
+ "Last team standing wins.": "El último equipo en pie gana.",
+ "Prevent enemies from reaching the exit.": "Evita que los enemigos lleguen a la salida.",
+ "Reach the enemy flag to score.": "Toca la bandera enemiga para anotar.",
+ "Return the enemy flag to score.": "Devuelve la bandera enemiga para anotar.",
+ "Run ${ARG1} laps.": "Corre ${ARG1} vueltas.",
+ "Run ${ARG1} laps. Your entire team has to finish.": "Corre ${ARG1} vueltas. Todo tu equipo debe cruzar la meta.",
+ "Run 1 lap.": "Corre 1 vuelta.",
+ "Run 1 lap. Your entire team has to finish.": "Corre 1 vuelta. Todo tu equipo debe cruzar la meta.",
+ "Run real fast!": "¡Corre muy rápido!",
+ "Score ${ARG1} goals.": "Anota ${ARG1} goles.",
+ "Score ${ARG1} touchdowns.": "Anota ${ARG1} touchdowns.",
+ "Score a goal.": "Anota un gol.",
+ "Score a touchdown.": "Anota un touchdown.",
+ "Score some goals.": "Anota unos goles.",
+ "Secure all ${ARG1} flags.": "Asegura las ${ARG1} banderas.",
+ "Secure all flags on the map to win.": "Asegura todas las banderas en el mapa para ganar.",
+ "Secure the flag for ${ARG1} seconds.": "Asegura la bandera por ${ARG1} segundos.",
+ "Secure the flag for a set length of time.": "Asegura la bandera por un tiempo determinado.",
+ "Steal the enemy flag ${ARG1} times.": "Roba la bandera enemiga ${ARG1} veces.",
+ "Steal the enemy flag.": "Roba la bandera enemiga.",
+ "There can be only one.": "Solo puede haber uno.",
+ "Touch the enemy flag ${ARG1} times.": "Toca la bandera enemiga ${ARG1} veces.",
+ "Touch the enemy flag.": "Toca la bandera enemiga.",
+ "carry the flag for ${ARG1} seconds": "carga la bandera por ${ARG1} segundos.",
+ "kill ${ARG1} enemies": "mata a ${ARG1} enemigos",
+ "last one standing wins": "el último en pie gana",
+ "last team standing wins": "el último equipo en pie gana",
+ "return ${ARG1} flags": "devuelve ${ARG1} banderas",
+ "return 1 flag": "devuelve 1 bandera",
+ "run ${ARG1} laps": "corre ${ARG1} vueltas",
+ "run 1 lap": "corre 1 vuelta",
+ "score ${ARG1} goals": "anota ${ARG1} goles",
+ "score ${ARG1} touchdowns": "anota ${ARG1} touchdowns",
+ "score a goal": "anota un gol",
+ "score a touchdown": "anota un touchdown",
+ "secure all ${ARG1} flags": "asegura las ${ARG1} banderas",
+ "secure the flag for ${ARG1} seconds": "asegura la bandera por ${ARG1} segundos",
+ "touch ${ARG1} flags": "toca ${ARG1} banderas",
+ "touch 1 flag": "toca 1 bandera"
+ },
+ "gameNames": {
+ "Assault": "Asalto",
+ "Capture the Flag": "Captura la Bandera",
+ "Chosen One": "El Elegido",
+ "Conquest": "Conquista",
+ "Death Match": "Combate Mortal",
+ "Easter Egg Hunt": "Búsqueda de Huevos de Pascua",
+ "Elimination": "Eliminación",
+ "Football": "Fútbol",
+ "Hockey": "Hockey",
+ "Keep Away": "Aléjate",
+ "King of the Hill": "Rey de la Colina",
+ "Meteor Shower": "Lluvia de Meteoritos",
+ "Ninja Fight": "Pelea Ninja",
+ "Onslaught": "Matanza",
+ "Race": "Carrera",
+ "Runaround": "Evasiva",
+ "Target Practice": "Blanco de Práctica",
+ "The Last Stand": "La Batalla Final"
+ },
+ "inputDeviceNames": {
+ "Keyboard": "Teclado",
+ "Keyboard P2": "Teclado P2"
+ },
+ "languages": {
+ "Arabic": "Árabe",
+ "Belarussian": "Bielorruso",
+ "Chinese": "Chino - Simplificado ",
+ "ChineseSimplified": "Chino Simplificado",
+ "ChineseTraditional": "Chino Tradicional (Zhōngwén)",
+ "Croatian": "Croata",
+ "Czech": "Checo",
+ "Danish": "Danés",
+ "Dutch": "Holandés",
+ "English": "Inglés",
+ "Esperanto": "Esperanto",
+ "Filipino": "Filipino",
+ "Finnish": "Finlandés",
+ "French": "Francés",
+ "German": "Alemán",
+ "Gibberish": "Algarabía",
+ "Greek": "Griego",
+ "Hindi": "Hindi",
+ "Hungarian": "Húngaro",
+ "Indonesian": "Indonesio",
+ "Italian": "Italiano",
+ "Japanese": "Japonés",
+ "Korean": "Coreano",
+ "Malay": "Malayo",
+ "Persian": "Persa",
+ "PirateSpeak": "Habla Pirata",
+ "Polish": "Polaco",
+ "Portuguese": "Portugués",
+ "PortugueseBrazil": "Portugués - Brazil",
+ "PortuguesePortugal": "Portugués - Portugal",
+ "Romanian": "Rumano",
+ "Russian": "Ruso",
+ "Serbian": "Serbio",
+ "Slovak": "Eslovaco",
+ "Spanish": "Español",
+ "SpanishLatinAmerica": "Español - Latinoamerica",
+ "SpanishSpain": "Español - España",
+ "Swedish": "Sueco",
+ "Tamil": "Tamil",
+ "Thai": "Tailandés",
+ "Turkish": "Turco",
+ "Ukrainian": "Ucraniano",
+ "Venetian": "Veneciano",
+ "Vietnamese": "Vietnamita"
+ },
+ "leagueNames": {
+ "Bronze": "Bronce",
+ "Diamond": "Diamante",
+ "Gold": "Oro",
+ "Silver": "Plata"
+ },
+ "mapsNames": {
+ "Big G": "Gran G",
+ "Bridgit": "Puentecito",
+ "Courtyard": "Patio Real",
+ "Crag Castle": "Castillo del Risco",
+ "Doom Shroom": "Hongo de La Muerte",
+ "Football Stadium": "Estadio de Fútbol",
+ "Happy Thoughts": "Pensamientos Felices",
+ "Hockey Stadium": "Estadio de Hockey",
+ "Lake Frigid": "Lago Frígido",
+ "Monkey Face": "Cara de Mono",
+ "Rampage": "Medio Tubo",
+ "Roundabout": "Rotonda",
+ "Step Right Up": "Paso Al Frente",
+ "The Pad": "La Plataforma",
+ "Tip Top": "Punta Superior",
+ "Tower D": "Torre D",
+ "Zigzag": "Zigzag"
+ },
+ "playlistNames": {
+ "Just Epic": "Solo Épico",
+ "Just Sports": "Solo Deportes"
+ },
+ "scoreNames": {
+ "Flags": "Banderas",
+ "Goals": "Goles",
+ "Score": "Puntaje",
+ "Survived": "Sobrevivió",
+ "Time": "Tiempo",
+ "Time Held": "Tiempo Mantenido"
+ },
+ "serverResponses": {
+ "A code has already been used on this account.": "Este código ya ha sido usado en esta cuenta.",
+ "A reward has already been given for that address.": "Ya se le ha dado una recompensa a esa dirección.",
+ "Account linking successful!": "¡Vinculación de cuenta exitosa!",
+ "Account unlinking successful!": "¡Desvinculación de cuenta exitosa!",
+ "Accounts are already linked.": "Las cuentas ya están vinculadas.",
+ "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "No se pudo verificar la vista del anuncio. \nPor favor asegúrese de estar ejecutando una versión oficial y actualizada del juego.",
+ "An error has occurred; (${ERROR})": "Un error ha ocurrido; (${ERROR})",
+ "An error has occurred; please contact support. (${ERROR})": "Un error ha ocurrido; por favor contacte al soporte. (${ERROR})",
+ "An error has occurred; please contact support@froemling.net.": "Un error ha ocurrido; por favor contacta a support@froemling.net.",
+ "An error has occurred; please try again later.": "Un error ha ocurrido; por favor intentalo más tarde.",
+ "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "¿Quieres vincular estas cuentas?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\n¡Esto no se puede deshacer!",
+ "BombSquad Pro unlocked!": "¡BombSquad Pro desbloqueado!",
+ "Can't link 2 accounts of this type.": "No se pueden vincular 2 cuentas de este tipo.",
+ "Can't link 2 diamond league accounts.": "No se pueden vincular 2 cuentas de liga diamante.",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "No se pudo vincular; sobrepasaría el máximo de cuentas vinculadas de ${COUNT}.",
+ "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Trampa detectada; puntajes y premios suspendidos por ${COUNT} días.",
+ "Could not establish a secure connection.": "No se pudo establecer una conexión segura.",
+ "Daily maximum reached.": "Máximo diario conseguido.",
+ "Daily sign-in reward": "Recompensa por iniciar sesión diariamente",
+ "Entering tournament...": "Entrando al torneo...",
+ "Invalid code.": "Código inválido.",
+ "Invalid payment; purchase canceled.": "Pago inválido; compra cancelada.",
+ "Invalid promo code.": "Código promocional inválido.",
+ "Invalid purchase.": "Compra inválida.",
+ "Invalid tournament entry; score will be ignored.": "Entrada de torneo inválida; el puntaje será ignorado.",
+ "Item unlocked!": "¡Artículo desbloqueado!",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "VINCULACIÓN DENEGADA. ${ACCOUNT} contiene\ndatos significativos que podrían PERDERSE EN SU TOTALIDAD.\nPuedes vincular en el orden opuesto si lo desea\n(y pierda los datos de ESTA cuenta en su lugar)",
+ "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "¿Vincular ${ACCOUNT} a esta cuenta?\nTodos los datos en ${ACCOUNT} desaparecerán.\nEsto no se puede deshacer. ¿Estás seguro?",
+ "Longer streaks lead to better rewards.": "Rachas mayores significan Mejores recompensas.",
+ "Max number of playlists reached.": "Número máximo de listas de juegos alcanzado.",
+ "Max number of profiles reached.": "Número máximo de perfiles alcanzado.",
+ "Maximum friend code rewards reached.": "Máximo de premios por códigos de amigos alcanzado.",
+ "Message is too long.": "El mensaje es muy largo.",
+ "New tournament result!": "¡Nuevo resultado del torneo!",
+ "No servers are available. Please try again soon.": "Sin servidores disponibles. Por favor inténtelo de nuevo más tarde.",
+ "No slots available. Free a slot and try again.": "No hay ranuras libres. Libere una e intentélo de nuevo.",
+ "Profile \"${NAME}\" upgraded successfully.": "El perfil \"${NAME}\" se ha mejorado satisfactoriamente.",
+ "Profile could not be upgraded.": "El perfil no pudo ser mejorado.",
+ "Purchase successful!": "¡Compra exitosa!",
+ "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Has recibido ${COUNT} boletos por iniciar sesión.\nRegresa mañana para recibir ${TOMORROW_COUNT} boletos.",
+ "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "La funcionalidad del servidor ya no es compatible en esta versión del juego;\nActualiza a una versión más reciente.",
+ "Sorry, there are no uses remaining on this code.": "Disculpe, pero no quedan usos disponibles de este código.",
+ "Sorry, this code has already been used.": "Disculpe, este código ya ha sido usado.",
+ "Sorry, this code has expired.": "Disculpe, este código ha expirado.",
+ "Sorry, this code only works for new accounts.": "Disculpe, este código solo funciona para cuentas nuevas.",
+ "Sorry, this has expired.": "Disculpe, esto ya ha expirado.",
+ "Still searching for nearby servers; please try again soon.": "Todavía buscando por servidores cercanos; inténtelo de nuevo más tarde.",
+ "Streak: ${NUM} days": "Racha de: ${NUM} días",
+ "Temporarily unavailable; please try again later.": "Temporalmente indisponible; por favor inténtalo más tarde.",
+ "The tournament ended before you finished.": "El torneo terminó antes de que terminaras.",
+ "This account cannot be unlinked for ${NUM} days.": "Esta cuenta no puede ser desvinculada por ${NUM} día(s).",
+ "This code cannot be used on the account that created it.": "Este código no puede ser usado en la misma cuenta que ha sido creado.",
+ "This is currently unavailable; please try again later.": "Esto no está disponible actualmente; por favor inténtelo más tarde.",
+ "This requires version ${VERSION} or newer.": "Esto requiere la versión ${VERSION} o una más reciente.",
+ "Tournaments disabled due to rooted device.": "Los torneos han sido deshabilitados debido a que tú dispositivo esta rooteado.",
+ "Tournaments require ${VERSION} or newer": "Los torneos requieren la versión ${VERSION} o más nueva",
+ "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "¿Desvincular ${ACCOUNT} de esta cuenta?\nTodos los datos en ${ACCOUNT} se reiniciarán.\n(excepto los logros en algunos casos)",
+ "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ADVERTENCIA: Se han emitido reclamaciones de hackeos contra tu cuenta.\nLas cuentas que se encuentren hackeando serán baneadas. Por favor juega limpio.",
+ "Wait reduced!": "Espera reducida!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Advertencia: Esta versión del juego está limitada a los datos de cuenta antiguos; es posible que falten datos o que estén desactualizados.\nPor favor actualiza a una versión más reciente del juego para ver los datos más recientes de tu cuenta.",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "¿Quieres vincular tu cuenta de dispositivo a esta otra?\n\nTu cuenta de dispositivo es ${ACCOUNT1}\nEsta cuenta es ${ACCOUNT2}\n\nEsto permitirá guardar tu progreso actual.\nAdvertencia: ¡Esto no se puede deshacer!",
+ "You already own this!": "¡Ya posees esto!",
+ "You can join in ${COUNT} seconds.": "Puedes unirte en ${COUNT} segundo(s).",
+ "You don't have enough tickets for this!": "¡No tienes suficientes boletos para esto!",
+ "You don't own that.": "No posees eso.",
+ "You got ${COUNT} tickets!": "¡Obtuviste ${COUNT} boletos!",
+ "You got ${COUNT} tokens!": "¡Obtuviste ${COUNT} ficha(s)!",
+ "You got a ${ITEM}!": "¡Conseguiste un ${ITEM}!",
+ "You got a chest!": "¡Obtuviste un cofre!",
+ "You got an achievement reward!": "¡Obtuviste una recompensa por tu logro!",
+ "You have been promoted to a new league; congratulations!": "Has sido ascendido a una nueva liga; ¡felicitaciones!",
+ "You lost a chest! (All your chest slots were full)": "¡Perdiste un cofre! (Todas tus ranuras de cofres estaban llenas).",
+ "You must update the app to view this.": "Debes actualizar la aplicación para ver esto.",
+ "You must update to a newer version of the app to do this.": "Debes actualizar la aplicación a una versión más reciente para hacer esto.",
+ "You must update to the newest version of the game to do this.": "Necesitas actualizar a la versión más reciente del juego para hacer esto.",
+ "You must wait a few seconds before entering a new code.": "Debes esperar unos segundos antes de ingresar un código nuevo.",
+ "You placed #${RANK} in a tournament!": "Quedaste en el puesto #${RANK} en un torneo!",
+ "You ranked #${RANK} in the last tournament. Thanks for playing!": "Quedaste en la posición #${RANK} en el campeonato. ¡Gracias por jugar!",
+ "Your account was rejected. Are you signed in?": "Tu cuenta fue rechazada. ¿Estás registrado?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Tus vistas de anuncios no se están registrando. Las opciones de anuncios serán limitadas por un tiempo.",
+ "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Tu copia del juego fue modificada.\nPor favor revierte estos cambios e intenta de nuevo.",
+ "Your friend code was used by ${ACCOUNT}": "Tu código de amigo fue usado por ${ACCOUNT}"
+ },
+ "settingNames": {
+ "1 Minute": "1 Minuto",
+ "1 Second": "1 Segundo",
+ "10 Minutes": "10 Minutos",
+ "2 Minutes": "2 Minutos",
+ "2 Seconds": "2 Segundos",
+ "20 Minutes": "20 Minutos",
+ "4 Seconds": "4 Segundos",
+ "5 Minutes": "5 Minutos",
+ "8 Seconds": "8 Segundos",
+ "Allow Negative Scores": "Permitir Puntajes Negativos",
+ "Balance Total Lives": "Repartir Vidas Totales",
+ "Bomb Spawning": "Aparecer Bombas",
+ "Chosen One Gets Gloves": "El Elegido Consigue Guantes de Boxeo",
+ "Chosen One Gets Shield": "El Elegido Consigue Electro-Escudo",
+ "Chosen One Time": "Tiempo del Elegido",
+ "Enable Impact Bombs": "Habilitar Insta-Bombas",
+ "Enable Triple Bombs": "Habilitar Bombas Triples",
+ "Entire Team Must Finish": "Todo el Equipo Debe Terminar",
+ "Epic Mode": "Modo Épico",
+ "Flag Idle Return Time": "Tiempo de Retorno de Bandera Inactiva",
+ "Flag Touch Return Time": "Retorno de Bandera con Toque",
+ "Hold Time": "Retención",
+ "Kills to Win Per Player": "Asesinatos para Ganar Por Jugador",
+ "Laps": "Vueltas",
+ "Lives Per Player": "Vidas Por Jugador",
+ "Long": "Largo",
+ "Longer": "Más Largo",
+ "Mine Spawning": "Aparecer Minas",
+ "No Mines": "Sin Minas",
+ "None": "Ninguno",
+ "Normal": "Normal",
+ "Pro Mode": "Modo Pro",
+ "Respawn Times": "Tiempo de Reaparición",
+ "Score to Win": "Puntos para Ganar",
+ "Short": "Corto",
+ "Shorter": "Más Corto",
+ "Solo Mode": "Modo Solitario",
+ "Target Count": "Número de Objetivos",
+ "Time Limit": "Límite de Tiempo"
+ },
+ "statements": {
+ "${TEAM} is disqualified because ${PLAYER} left": "${TEAM} ha sido descalificado porque ${PLAYER} se ha ido",
+ "Killing ${NAME} for skipping part of the track!": "¡${NAME} Murió por saltarse un pedazo de la pista!",
+ "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Advertencia para ${NAME}: turbo / spam de botones te noqueará."
+ },
+ "teamNames": {
+ "Bad Guys": "Chicos Malos",
+ "Blue": "Azul",
+ "Good Guys": "Chicos Buenos",
+ "Red": "Rojo"
+ },
+ "tips": {
+ "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Un corre-salta-gira-golpea perfecto puede destrozar de un solo impacto\ny ganarte el respeto de tus amigos para toda la vida.",
+ "Always remember to floss.": "Siempre acuérdate de cepillar tus dientes.",
+ "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Crea perfiles para \ntu y tus amigos \ncon \ntus nombres preferidos y\napariencias en vez de usar unos aleatorios.",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Las cajas de maldición te convierten en una bomba de tiempo.\nLa única cura es agarrar rápidamente un botiquín.",
+ "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "A pesar de sus apariencias, las habilidades de todos los personajes\nson idénticas, así que escoge el que más te guste a ti.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "No eres invencible con ese electro-escudo; todavía puedes caerte de un acantilado.",
+ "Don't run all the time. Really. You will fall off cliffs.": "No corras todo el tiempo. En serio. Te vas a caer.",
+ "Don't spin for too long; you'll become dizzy and fall.": "No gires por un largo tiempo; puedes marearte y caer.",
+ "Hold any button to run. (Trigger buttons work well if you have them)": "Mantén cualquier botón para correr. (Los gatillos son para eso si los tienes)",
+ "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Mantén presionado cualquier botón para correr. Llegarás a lugares más rápido\npero no girarás muy bien, así que cuidado con los acantilados.",
+ "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Las Bombas de Hielo no son muy potentes, pero congelan lo\nque toquen, dejando a tus enemigos vulnerables a romperse.",
+ "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Si alguien te recoge, dale un golpe y te soltará.\nTambién funciona en la vida real.",
+ "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Si no tienes suficientes controles, instala la aplicación '${REMOTE_APP_NAME}'\nen tus dispositivos móviles para usarlos como controles.",
+ "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Si te adhieres a una bomba pegajosa, salta y da muchas vueltas. Es posible que sacudas\nla bomba pegada o sin nada más tus últimos momentos serán entretenidos.",
+ "If you kill an enemy in one hit you get double points for it.": "Si matas a un enemigo de un solo golpe obtendrás puntos dobles.",
+ "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Si tomaste una maldición, tu única esperanza es\nencontrar un botiquín en tus últimos segundos.",
+ "If you stay in one place, you're toast. Run and dodge to survive..": "Si te quedas quieto, estás frito. Corre y esquiva para sobrevivir...",
+ "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Si tienes muchos jugadores yendo y viniendo, activa 'expulsar jugadores inactivos'\nen ajustes en caso de que alguien se olvide de abandonar el juego.",
+ "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Si tu dispositivo se pone caliente o te gustaría conservar batería,\nbaja los \"Visuales\" o la \"Resolución\" en Ajustes->Gráficos",
+ "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Si la imagen va lenta, intenta reducir la resolución\no los visuales en los ajustes gráficos del juego.",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "En Captura la Bandera, la bandera tuya debe estar en tu base para que anotes.\nSi el otro equipo está a punto de anotar, robar su bandera evitará que anoten.",
+ "In hockey, you'll maintain more speed if you turn gradually.": "En hockey, mantendrás tu impulso si giras gradualmente.",
+ "It's easier to win with a friend or two helping.": "Es más fácil ganar con un amigo o dos ayudando.",
+ "Jump just as you're throwing to get bombs up to the highest levels.": "Salta antes de tirar una bomba para que alcance lugares altos.",
+ "Land-mines are a good way to stop speedy enemies.": "Las minas terrestres son una buena manera para detener enemigos veloces.",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Muchas cosas se pueden recoger y lanzar, incluyendo a otros jugadores.\nArroja a tus enemigos por los precipicios. Te sentirás mejor.",
+ "No, you can't get up on the ledge. You have to throw bombs.": "No, no puedes subir a la cornisa. Tienes que lanzar bombas.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Los jugadores pueden unirse e irse en medio de casi todos los juegos,\ntambién puedes conectar o quitar controles en cualquier momento.",
+ "Practice using your momentum to throw bombs more accurately.": "Practica usando tu impulso para tirar bombas con más precisión.",
+ "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Los golpes hacen más daño cuanto más rápido se mueven tus puños,\nasí que intenta correr, saltar y girar como un loco.",
+ "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Corre de un lado a otro antes de lanzar una\nbomba para 'latiguearla' y lanzarla lejos.",
+ "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Elimina un gran cantidad de enemigos\nal detonar una bomba cerca de una caja TNT.",
+ "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "La cabeza es la zona más vulnerable, una bomba pegajosa\na la cabeza usualmente significa game-over.",
+ "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Este nivel no tiene fin, pero un alto puntaje aquí\nte hará ganar el respeto eterno por todo el mundo.",
+ "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "La fuerza de tiro se basa en la dirección que estás sosteniendo.\nPara arrojar algo justo delante de ti, no sostengas ninguna dirección.",
+ "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "¿Cansado de la pista de audio? ¡Reemplázala con tu música!\nVe a Ajustes->Audio->Banda Sonora",
+ "Try 'Cooking off' bombs for a second or two before throwing them.": "Intenta 'Cocinar' bombas por un segundo o dos antes de tirarlas.",
+ "Try tricking enemies into killing eachother or running off cliffs.": "Engaña a tus enemigos para que se eliminen entre sí o para que corran a los acantilados.",
+ "Use the pick-up button to grab the flag < ${PICKUP} >": "Usa el botón de 'recoger' para agarrar la bandera < ${PICKUP} >",
+ "Whip back and forth to get more distance on your throws..": "Azota de un lado a otro para conseguir más distancia en tus tiros.",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Puedes 'dirigir' tus golpes girando a la izquierda o derecha. Esto\nes útil para tirar a los enemigos al vacío o para anotar en el hockey.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Puedes saber si una bomba va a explotar basado en el \ncolor de las chispas de su mecha: amarillo...naranja...rojo...¡BOOM!",
+ "You can throw bombs higher if you jump just before throwing.": "Puedes tirar bombas más alto si saltas justo antes de tirarlas.",
+ "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Te haces daño si golpeas tu cabeza contra cosas, \nasí que trata de no golpear tu cabeza contra cosas.",
+ "Your punches do much more damage if you are running or spinning.": "Tus golpes hacen mucho más daño si estás corriendo o girando."
+ }
+ },
+ "trophiesRequiredText": "Esto requiere al menos ${NUMBER} trofeos.",
+ "trophiesText": "Trofeos",
+ "trophiesThisSeasonText": "Trofeos Esta Temporada",
+ "tutorial": {
+ "cpuBenchmarkText": "Corriendo tutorial en velocidad ridícula (pruebas de velocidad de CPU)",
+ "phrase01Text": "¡Hey, hola!",
+ "phrase02Text": "¡Bienvenido a ${APP_NAME}!",
+ "phrase03Text": "Te dare algunos consejos para controlar tu personaje:",
+ "phrase04Text": "Muchas cosas en ${APP_NAME} se basan mayoritariamente en FÍSICAS.",
+ "phrase05Text": "Por ejemplo, cuando golpeas...",
+ "phrase06Text": "..el daño se basa en la velocidad de tus puños.",
+ "phrase07Text": "¿Ves? No nos estábamos moviendo, así que eso apenas lastimó a ${NAME}.",
+ "phrase08Text": "Ahora vamos a saltar y girar para conseguir más velocidad.",
+ "phrase09Text": "Ah, mucho mejor.",
+ "phrase10Text": "Correr también ayuda.",
+ "phrase11Text": "Mantén pulsado CUALQUIER botón para correr.",
+ "phrase12Text": "Para golpes extra-asombrosos, intenta correr Y girar.",
+ "phrase13Text": "Ups; lo siento por eso ${NAME}.",
+ "phrase14Text": "Puedes recoger y lanzar cosas como banderas.. o ${NAME}.",
+ "phrase15Text": "Por último, hay bombas.",
+ "phrase16Text": "Lanzar bombas requiere práctica.",
+ "phrase17Text": "¡Auch! Ese no fue un buen tiro.",
+ "phrase18Text": "Moverte ayuda a lanzarlas más lejos.",
+ "phrase19Text": "Saltar ayuda a lanzarlas más alto.",
+ "phrase20Text": "\"Latiguea\" tus bombas para hacer lanzamientos aún más lejanos.",
+ "phrase21Text": "Hacer que exploten donde tú quieres puede ser complicado.",
+ "phrase22Text": "Rayos.",
+ "phrase23Text": "Intentemos \"cocinar\" la mecha por un segundo o dos.",
+ "phrase24Text": "¡Hurra! Así es como se hace.",
+ "phrase25Text": "Bueno, eso es todo.",
+ "phrase26Text": "¡Ahora ve por ellos, campeón!",
+ "phrase27Text": "Recuerda tu entrenamiento, ¡y VOLVERÁS con vida!",
+ "phrase28Text": "...o a lo mejor...",
+ "phrase29Text": "¡Buena Suerte!",
+ "randomName1Text": "Federico",
+ "randomName2Text": "Enrique",
+ "randomName3Text": "Guillermo",
+ "randomName4Text": "Carlos",
+ "randomName5Text": "Felipe",
+ "skipConfirmText": "¿Realmente quieres omitir el tutorial? Toca o presiona para confirmar.",
+ "skipVoteCountText": "${COUNT}/${TOTAL} votos para saltarse el tutorial",
+ "skippingText": "saltando el tutorial...",
+ "toSkipPressAnythingText": "(pulsa cualquier botón para omitir el tutorial)"
+ },
+ "twoKillText": "¡COMBO DOBLE!",
+ "uiScaleText": "Escala de Interfaz de Usuario",
+ "unavailableText": "no disponible",
+ "unclaimedPrizesText": "Tienes premios sin reclamar!",
+ "unconfiguredControllerDetectedText": "Control desconfigurado detectado:",
+ "unlockThisInTheStoreText": "Esto debe ser desbloqueado en la tienda.",
+ "unlockThisProfilesText": "Para crear más de ${NUM} cuentas, necesitas:",
+ "unlockThisText": "Para desbloquear esto, necesitas:",
+ "unsupportedControllerText": "Lo sentimos, el control \"${NAME}\" no es compatible.",
+ "unsupportedHardwareText": "Disculpe, este dispositivo no soporta esta compilación del juego.",
+ "upFirstText": "A continuación:",
+ "upNextText": "A continuación en el juego ${COUNT}:",
+ "updatingAccountText": "Actualizando tu cuenta...",
+ "upgradeText": "Mejorar",
+ "upgradeToPlayText": "Desbloquea \"${PRO}\" en la tienda para jugar esto.",
+ "useDefaultText": "Usar Por Defecto",
+ "userSystemScriptsCreateText": "Crear Scripts del Sistema del Usuario",
+ "userSystemScriptsDeleteText": "Eliminar Scripts del Sistema del Usuario",
+ "usesExternalControllerText": "Este juego usa un control externo como entrada.",
+ "usingItunesText": "Usando Aplicación de Música para la banda sonora...",
+ "v2AccountLinkingInfoText": "Para vincular cuentas V2, usa el botón \"Administrar Cuenta\".",
+ "v2AccountRequiredText": "Esto requiere una cuenta V2. Actualice su cuenta e inténtelo de nuevo.",
+ "validatingTestBuildText": "Validando Compilación de Prueba...",
+ "viaText": "a través de",
+ "victoryText": "¡Victoria!",
+ "voteDelayText": "No puedes iniciar otra votación por ${NUMBER} segundo(s)",
+ "voteInProgressText": "Ya hay una votación en progreso.",
+ "votedAlreadyText": "Ya votaste",
+ "votesNeededText": "${NUMBER} voto(s) necesario(s)",
+ "vsText": "vs.",
+ "waitingForHostText": "(esperando a que ${HOST} continúe)",
+ "waitingForPlayersText": "esperando jugadores para unirse...",
+ "waitingInLineText": "Esperando en línea (la partida está llena)...",
+ "watchAVideoText": "Ver un Vídeo",
+ "watchAnAdText": "Ver un Anuncio",
+ "watchWindow": {
+ "deleteConfirmText": "¿Borrar \"${REPLAY}\"?",
+ "deleteReplayButtonText": "Borrar\nRepetición",
+ "myReplaysText": "Mis Repeticiones",
+ "noReplaySelectedErrorText": "Ninguna Repetición Seleccionada",
+ "playbackSpeedText": "Velocidad de Reproducción: ${SPEED}",
+ "renameReplayButtonText": "Renombrar\nRepetición",
+ "renameReplayText": "Renombrar \"${REPLAY}\" a:",
+ "renameText": "Renombrar",
+ "replayDeleteErrorText": "Error borrando la repetición.",
+ "replayNameText": "Nombre de la Repetición",
+ "replayRenameErrorAlreadyExistsText": "Una repetición con ese nombre ya existe.",
+ "replayRenameErrorInvalidName": "No se puede renombrar la repetición; nombre inválido.",
+ "replayRenameErrorText": "Error renombrando repetición.",
+ "sharedReplaysText": "Compartir repeticiones",
+ "titleText": "Ver",
+ "watchReplayButtonText": "Ver\nRepetición"
+ },
+ "waveText": "Oleada",
+ "wellSureText": "¡Pues Claro!",
+ "whatIsThisText": "¿Qué es esto?",
+ "winsPlayerText": "¡${NAME} Gana!",
+ "winsTeamText": "¡${NAME} Gana!",
+ "winsText": "¡Ganó ${NAME}!",
+ "workspaceSyncErrorText": "Error al sincronizar ${WORKSPACE}. Mira el registro para más detalles.",
+ "workspaceSyncReuseText": "No se puede sincronizar ${WORKSPACE}. Reusando la versión previamente sincronizada.",
+ "worldScoresUnavailableText": "Puntuaciones mundiales no disponibles.",
+ "worldsBestScoresText": "Mejores Puntuaciones Mundiales",
+ "worldsBestTimesText": "Mejores Tiempos Mundiales",
+ "yesAllowText": "¡Sí, Permitir!",
+ "yourBestScoresText": "Tus Mejores Puntajes",
+ "yourBestTimesText": "Tus Mejores Tiempos",
+ "yourPrizeText": "Tu premio:"
+}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/swedish.json b/dist/ba_data/data/languages/swedish.json
index 6590ae52..2bcaff46 100644
--- a/dist/ba_data/data/languages/swedish.json
+++ b/dist/ba_data/data/languages/swedish.json
@@ -8,6 +8,7 @@
"changeOncePerSeason": "Du kan enbart ändra detta en gång per säsong.",
"changeOncePerSeasonError": "Du måste vänta tills nästa säsong för att ändra detta igen (${NUM} days)",
"customName": "Anpassat Namn",
+ "deleteAccountText": "Ta bort konto",
"googlePlayGamesAccountSwitchText": "Om du vill använda ett annat Google-konto,\nanvänd appen Google Play Spel för att byta.",
"linkAccountsEnterCodeText": "Skriv in kod",
"linkAccountsGenerateCodeText": "Generera kod",
@@ -26,14 +27,16 @@
"setAccountNameDesc": "Välj ett namn att visa för ditt konto.\nDu kan använda användarnamnet från något av dina länkade konton eller skapa ett unikt namn.",
"signInInfoText": "Logga in för att samla värdekuponger, tävla \non-line och dela framsteg över olika enheter.",
"signInText": "Logga In",
+ "signInWithAnEmailAddressText": "Logga in med en e-postadress",
"signInWithDeviceInfoText": "(endast ett automatiskt konto finns på denna enhet)",
"signInWithDeviceText": "Logga in med ett enhetskonto",
"signInWithGameCircleText": "Logga in med Spel Cirkel",
"signInWithGooglePlayText": "Logga in med Google Play",
- "signInWithTestAccountInfoText": "(allmän konto typ; använd enhets konton för att fortsätta)",
+ "signInWithTestAccountInfoText": "(allmän konto typ; använd enhets konton för att fortsätta) ",
"signInWithTestAccountText": "Logga in med ett testkonto",
+ "signInWithText": "Logga in med ${SERVICE}",
"signInWithV2InfoText": "(ett konto som fungerar på alla plattformar)",
- "signInWithV2Text": "Logga in med ett BombSquad-konto",
+ "signInWithV2Text": "Logga in med ett ${APP_NAME} konto",
"signOutText": "Logga Ut",
"signingInText": "Loggar in...",
"signingOutText": "Loggar ut...",
@@ -44,6 +47,7 @@
"titleText": "Konto",
"unlinkAccountsInstructionsText": "Välj ett konto att avlänka",
"unlinkAccountsText": "Avlänka Konton",
+ "unlinkLegacyV1AccountsText": "Ta bort länken till äldre konton (V1)",
"v2LinkInstructionsText": "Använd den här länken för att skapa ett konto eller logga in.",
"viaAccount": "(via konto ${NAME})",
"youAreLoggedInAsText": "Du är inloggad som:",
@@ -333,13 +337,19 @@
"achievementsRemainingText": "Prestationer som återstår:",
"achievementsText": "Prestationer",
"achievementsUnavailableForOldSeasonsText": "Tyvärr, prestation detaljerna är inte tillgängliga för gamla säsonger.",
+ "activatedText": "${THING} aktiverad",
"addGameWindow": {
"getMoreGamesText": "Hämta Fler Spel...",
"titleText": "Lägg till Spel"
},
+ "addToFavoritesText": "Lägg till i favoriter",
+ "addedToFavoritesText": "Lade till '${NAME}' i Favoriter.",
+ "allText": "Alla",
"allowText": "Tillåt",
"alreadySignedInText": "Ditt konto är redan inloggat på en annan enhet;\nvar god byt konto eller stäng spelet på dina\nandra enheter och försök igen.",
"apiVersionErrorText": "Kan inte öppna ${NAME}; den änvänder api-version ${VERSION_USED}; det krävs dock ${VERSION_REQUIRED}.",
+ "applyText": "Använda",
+ "areYouSureText": "Är du säker?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Auto\" aktiverar endast detta när hörlurar är inkopplade)",
"headRelativeVRAudioText": "Huvud-Relativt VR Audio",
@@ -364,7 +374,7 @@
"boostText": "Höj",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} är konfigurerad i appen själv.",
"buttonText": "Knapp",
- "canWeDebugText": "Vill du att BombSquad automatiskt ska skicka bug, - och crashrapporter och grundläggande användarinfo till utvecklaren?\n\nDenna data innehåller ingen personlig information och\nhjälper till med att låta spelet flyta jämnt och felfritt.",
+ "canWeDebugText": "Vill du att ${APP_NAME} ska rapportera automatiskt\nbuggar, krascher och grundläggande användningsinformation till utvecklaren?\n\nDessa uppgifter innehåller ingen personlig information och hjälper till\nSe till att spelet fungerar smidigt och utan buggar.",
"cancelText": "Avbryt",
"cantConfigureDeviceText": "Tyvärr, ${DEVICE} är inte konfigurerbar",
"challengeEndedText": "Denna utmaning är avslutad.",
@@ -372,6 +382,7 @@
"chatMutedText": "Chatt dämpad",
"chatUnMuteText": "Avsluta chatt",
"choosingPlayerText": "",
+ "codesExplainText": "Koderna tillhandahålls av utvecklaren till:\nDiagnostisera och felsök ditt konto.",
"completeThisLevelToProceedText": "Du måste klara\ndenna nivå för att fortsätta!",
"completionBonusText": "Slutbonus",
"configControllersWindow": {
@@ -455,6 +466,7 @@
"titleText": "Konfigurera touchscreen",
"touchControlsScaleText": "Touchkontroll skalning"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} kan konfigureras i appen Systeminställningar.",
"configureItNowText": "Konfigurera nu?",
"configureText": "Konfigurera",
"connectMobileDevicesWindow": {
@@ -510,6 +522,7 @@
"welcome2Text": "Du kan också tjäna biljetter från många av samma verksamhet .\nBiljetter kan användas för att låsa upp nya karaktärer, kartor och\nmini -spel , att delta i turneringar och mycket mer .",
"yourPowerRankingText": "Din Spelar Rankning"
},
+ "copyConfirmText": "Kopieras till Urklipp.",
"copyOfText": "${NAME} Kopia",
"copyText": "Kopiera",
"createAPlayerProfileText": "Skapa en spelarprofil?",
@@ -562,7 +575,10 @@
"deleteText": "Radera",
"demoText": "Demo",
"denyText": "Neka",
+ "deprecatedText": "Deprecated",
+ "descriptionText": "Beskrivning",
"desktopResText": "Skrivbordsupplösning",
+ "deviceAccountUpgradeText": "Varning:\nDu är inloggad med ett enhetskonto (${NAME}).\nEnhetskonton kommer att tas bort i en framtida uppdatering.\nUppgradera till ett V2-konto om du vill behålla dina framsteg.",
"difficultyEasyText": "Lätt",
"difficultyHardOnlyText": "Endast Svårt Läge",
"difficultyHardText": "Svår",
@@ -571,6 +587,9 @@
"disableRemoteAppConnectionsText": "Inaktivera Fjärrapps-Anslutningar",
"disableXInputDescriptionText": "Tillåter mer än 4 kontroller men kanske inte funkar så bra.",
"disableXInputText": "Inaktivera XInput",
+ "disabledText": "Handikappad",
+ "discordFriendsText": "Vill du leta efter nya människor att spela med?\nGå med i vår Discord och hitta nya vänner!",
+ "discordJoinText": "Gå med i Discord",
"doneText": "Klar",
"drawText": "Oavgjort",
"duplicateText": "Fördubbla",
@@ -605,6 +624,7 @@
"localProfileText": "(lokal profil)",
"nameDescriptionText": "Spelarnamn",
"nameText": "Namn",
+ "profileAlreadyExistsText": "Det finns redan en profil med det namnet.",
"randomText": "slumpvis",
"titleEditText": "Redigera Profil",
"titleNewText": "Ny Profil",
@@ -642,12 +662,15 @@
"useMusicFolderText": "Mappnamn för Musikfiler"
},
"editText": "Redigera",
+ "enabledText": "Aktiverad",
"endText": "slut",
"enjoyText": "Ha det så roligt!",
"epicDescriptionFilterText": "${DESCRIPTION} i episk slow moition.",
"epicNameFilterText": "Episk ${NAME}",
"errorAccessDeniedText": "åtkomst nekad",
+ "errorDeviceTimeIncorrectText": "Din enhets tid är felaktig med ${HOURS} timmar.\nDetta kommer sannolikt att orsaka problem.\nKontrollera dina tids- och tidszonsinställningar.",
"errorOutOfDiskSpaceText": "slut på diskutrymme",
+ "errorSecureConnectionFailText": "Det går inte att upprätta en säker molnanslutning; nätverksfunktionen kan misslyckas.",
"errorText": "Fel",
"errorUnknownText": "okänt fel",
"exitGameText": "Avsluta ${APP_NAME}?",
@@ -687,6 +710,8 @@
"editText": "Redigera\nSpellista",
"gameListText": "Spellista",
"newText": "Ny\nSpellista",
+ "pointsToWinText": "Poäng för att vinna",
+ "seriesLengthText": "Serie Längd",
"showTutorialText": "Visa Handledning",
"shuffleGameOrderText": "Blanda spel-ordning",
"titleText": "Redigera ${TYPE} Spellistor"
@@ -1126,6 +1151,7 @@
"purchasingText": "Köper...",
"quitGameText": "Avsluta BombSquad?",
"quittingIn5SecondsText": "Avslutar om 5 sekunder...",
+ "randomPlayerNamesText": "Oliver, Carl, Tomten, Ikea, Vikingar",
"randomText": "Slumpad",
"rankText": "Rang",
"ratingText": "Rating",
@@ -1205,7 +1231,7 @@
},
"showText": "Visa",
"signInForPromoCodeText": "Du måste logga in på ett konto för att promotion koder ska aktiveras.",
- "signInWithGameCenterText": "För att använda ett Game Center konto, \nlogga in via Game Center appen.",
+ "signInWithGameCenterText": "För att använda ett Game Center konto, \nlogga in via Game Center appen. ",
"singleGamePlaylistNameText": "Endast ${GAME}",
"singlePlayerCountText": "1 spelare",
"soloNameFilterText": "Solo ${NAME}",
diff --git a/dist/ba_data/data/languages/tamil.json b/dist/ba_data/data/languages/tamil.json
index 1ca6ed33..c48dbd1a 100644
--- a/dist/ba_data/data/languages/tamil.json
+++ b/dist/ba_data/data/languages/tamil.json
@@ -6,7 +6,9 @@
"campaignProgressText": "பிரச்சார முன்னேற்றம் [கடினமானது] : ${PROGRESS}",
"changeOncePerSeason": "ஒரு பருவத்திற்கு ஒரு முறை மட்டுமே இதை மாற்ற முடியும்.",
"changeOncePerSeasonError": "இதை மீண்டும் மாற்ற அடுத்த சீசன் வரை நீங்கள் காத்திருக்க வேண்டும் (${NUM} நாட்கள்)",
+ "createAnAccountText": "புதிய கணக்கை உருவாக்கவும்",
"customName": "தனிப்பயன் பெயர்",
+ "deleteAccountText": "கணக்கை நீக்கவும்",
"googlePlayGamesAccountSwitchText": "நீங்கள் வேறு Google கணக்கைப் பயன்படுத்த விரும்பினால்,\nமாறுவதற்கு Google Play கேம்ஸ் பயன்பாட்டைப் பயன்படுத்தவும்.",
"linkAccountsEnterCodeText": "குறியீட்டை உள்ளிடவும்",
"linkAccountsGenerateCodeText": "குறியீட்டை உருவாக்கவும்",
@@ -23,14 +25,16 @@
"setAccountNameDesc": "உங்கள் கணக்குக்கு காட்ட வேண்டிய பெயரை தேர்வு செய்யவும். \nஉங்கள் இணைக்கப்பட்ட கணக்குகளிலிருந்து ஒரு பெயரை தேர்வு செய்யலாம் \nஅல்லது புதிய பெயரை உருவாக்கலாம்.",
"signInInfoText": "சீட்டுகள் சேர்க்க, இணையத்தில் போட்டியிட,\nமுன்னேற்றங்களை பகிர, புகுபதிவு செய்யவும்.",
"signInText": "புகுபதிகை",
+ "signInWithAnEmailAddressText": "மின்னஞ்சல் முகவரியுடன் உள்நுழை",
"signInWithDeviceInfoText": "(இந்த சாதனத்திலிருந்து ஒரு தானியங்கி கணக்கு மட்டுமே கிடைக்கும்)",
"signInWithDeviceText": "சாதனக் கணக்கில் உள்நுழைக",
"signInWithGameCircleText": "Game Circle மூலம் உள்நுழைக",
"signInWithGooglePlayText": "Google Play உடன் உள்நுழைக",
"signInWithTestAccountInfoText": "(மரபு கணக்கு வகை; முன்னோக்கி செல்லும் சாதனக் கணக்குகளைப் பயன்படுத்தவும்)",
"signInWithTestAccountText": "சோதனைக் கணக்கில் உள்நுழைக",
+ "signInWithText": "${SERVICE} -உடன் உள்நுழை",
"signInWithV2InfoText": "(அனைத்து தளங்களிலும் செயல்படும் கணக்கு)",
- "signInWithV2Text": "BombSquad கணக்கில் உள்நுழையவும்",
+ "signInWithV2Text": "${APP_NAME} கணக்கில் உள்நுழையவும்",
"signOutText": "வெளியேறு",
"signingInText": "புகுபதிகை நடைபெறுகிறது...",
"signingOutText": "விடுபதிகை நடைபெறுகிறது...",
@@ -332,9 +336,14 @@
"getMoreGamesText": "மேலும் விளையாட்டுகளைப் பெறுங்கள்...",
"titleText": "விளையாட்டைச் சேர்"
},
+ "addToFavoritesText": "பிடித்தவையில் சேர்",
+ "addedToFavoritesText": "பிடித்தவற்றில் '${NAME}' சேர்க்கப்பட்டது",
+ "allText": "அனைத்து",
"allowText": "அனுமதி",
"alreadySignedInText": "உங்கள் கணக்கு மற்றொரு சாதனத்திலிருந்து உள்நுழைந்துள்ளது;\nதயவுசெய்து கணக்குகளை மாற்றவும் அல்லது விளையாட்டை மூடவும்\nபிற சாதனங்கள் மற்றும் மீண்டும் முயற்சிக்கவும்.",
"apiVersionErrorText": "${NAME} தொகுதியை ஏற்ற முடியவில்லை; இது api-version ${VERSION_USED} ஐ குறிவைக்கிறது; எங்களுக்கு ${VERSION_REQUIRED} தேவைப்படுகிறது.",
+ "applyText": "இடு",
+ "areYouSureText": "நீ சொல்வது உறுதியா?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(ஹெட்ஃபோன்கள் செருகப்படும்போது மட்டுமே \"ஆட்டோ\" இதை இயக்குகிறது)",
"headRelativeVRAudioText": "தலை-உறவினர் VR ஆடியோ",
@@ -357,14 +366,24 @@
"boostText": "ஊக்குவிக்கவும்",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} பயன்பாட்டில் உள்ளமைக்கப்பட்டுள்ளது.",
"buttonText": "பொத்தானை",
- "canWeDebugText": "BombSquad தானாகப் புகாரளிக்க விரும்புகிறீர்களா?\nடெவலப்பருக்கு பிழைகள், செயலிழப்புகள் மற்றும் அடிப்படை பயன்பாட்டு தகவல்?\n\nஇந்தத் தரவில் தனிப்பட்ட தகவல் இல்லை மற்றும் உதவுகிறது\nவிளையாட்டை சீராக மற்றும் பிழையில்லாமல் வைத்துக்கொள்ளுங்கள்.",
+ "canWeDebugText": "${APP_NAME} தானாகப் புகாரளிக்க விரும்புகிறீர்களா?\nடெவலப்பருக்கு பிழைகள், செயலிழப்புகள் மற்றும் அடிப்படை பயன்பாட்டு தகவல்?\n\nஇந்தத் தரவில் தனிப்பட்ட தகவல் இல்லை மற்றும் உதவுகிறது\nவிளையாட்டை சீராக மற்றும் பிழையில்லாமல் வைத்துக்கொள்ளுங்கள்.",
"cancelText": "ரத்து",
"cantConfigureDeviceText": "மன்னிக்கவும்,${DEVICE} கட்டமைக்கப்படவில்லை.",
"challengeEndedText": "இந்த சவால் முடிந்தது.",
"chatMuteText": "அரட்டை முடக்கு",
"chatMutedText": "அரட்டை முடக்கப்பட்டது",
"chatUnMuteText": "அரட்டையை இயக்கு",
+ "chests": {
+ "prizeOddsText": "பரிசு முரண்பாடுகள்",
+ "reduceWaitText": "காத்திருப்பைக் குறைக்கவும்",
+ "slotDescriptionText": "இந்த ஸ்லாட் ஒரு மார்பை வைத்திருக்க முடியும்.\n\nபிரச்சார நிலைகளில் விளையாடுவதன் மூலம் மார்புகளை சம்பாதிக்கவும்,\nபோட்டிகளில் இடம்பெறுதல், மற்றும் நிறைவு செய்தல்\nசாதனைகள்.",
+ "slotText": "மார்பு துளை ${NUM}",
+ "slotsFullWarningText": "எச்சரிக்கை: உங்கள் பெட்டிகள் நிரம்பியுள்ளன.\nஇந்த விளையாட்டில் பெறும் புதிய பெட்டிகள் கிடைக்காது.",
+ "unlocksInText": "திறப்பதற்கு இன்னும் இருக்க நேரம்"
+ },
"choosingPlayerText": "<பிளேயரைத் தேர்ந்தெடுப்பது>",
+ "claimText": "உரிமைகோரல்",
+ "codesExplainText": "கணக்குச் சிக்கல்களைக் கண்டறிந்து சரிசெய்ய\nடெவலப்பர்களால் குறியீடுகள் வழங்கப்படுகின்றன.",
"completeThisLevelToProceedText": "தொடர நீங்கள்\n இந்த நிலையை முடிக்க வேண்டும்!",
"completionBonusText": "நிறைவு போனஸ்",
"configControllersWindow": {
@@ -445,6 +464,7 @@
"swipeText": "ஸ்வைப்",
"titleText": "தொடுதிரையை உள்ளமைக்கவும்"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} ஐ சிஸ்டம் அமைப்புகள் பயன்பாட்டில் உள்ளமைக்க முடியும்.",
"configureItNowText": "இப்போது அதை உள்ளமைக்கவா?",
"configureText": "உள்ளமை",
"connectMobileDevicesWindow": {
@@ -548,6 +568,7 @@
"demoText": "டெமோ",
"denyText": "மறுக்க",
"deprecatedText": "நிராகரிக்கப்பட்டது",
+ "descriptionText": "விளக்கம்",
"desktopResText": "டெஸ்க்டாப் ரெஸ்",
"deviceAccountUpgradeText": "எச்சரிக்கை:\nசாதனக் கணக்கில் (${NAME}) உள்நுழைந்துள்ளீர்கள்.\nஎதிர்கால புதுப்பிப்பில் சாதன கணக்குகள் அகற்றப்படும்.\nஉங்கள் முன்னேற்றத்தைத் தொடர விரும்பினால், V2 கணக்கிற்கு மேம்படுத்தவும்.",
"difficultyEasyText": "சுலபம்",
@@ -558,6 +579,10 @@
"disableRemoteAppConnectionsText": "ரிமோட்-ஆப் இணைப்புகளை முடக்கு",
"disableXInputDescriptionText": "4 க்கும் மேற்பட்ட கட்டுப்பாட்டாளர்களை அனுமதிக்கிறது ஆனால் வேலை செய்யாமல் போகலாம்.",
"disableXInputText": "XInput ஐ முடக்கு",
+ "disabledText": "முடக்கப்பட்ட எழுத்து",
+ "discardText": "புறக்கணிடு",
+ "discordFriendsText": "விளையாட புதிய நபர்களைத் தேட வேண்டுமா?\nஎங்கள் டிஸ்கார்டில் சேர்ந்து புதிய நண்பர்களைக் கண்டறியவும்!",
+ "discordJoinText": "டிஸ்கார்டில் சேரவும்",
"doneText": "முடிந்தது",
"drawText": "டிரா",
"duplicateText": "நகல்எடுத்தல்",
@@ -590,6 +615,7 @@
"localProfileText": "(உள்ளூர் சுயவிவரம்)",
"nameDescriptionText": "வீரரின் பெயர்",
"nameText": "பெயர்",
+ "profileAlreadyExistsText": "அந்தப் பெயரில் ஒரு சுயவிவரம் ஏற்கனவே உள்ளது.",
"randomText": "சீரற்ற",
"titleEditText": "சுயவிவரத்தைத் திருத்து",
"titleNewText": "புதிய சுயவிவரம்",
@@ -625,6 +651,7 @@
"useMusicFolderText": "இசை கோப்புகளின் கோப்புறை"
},
"editText": "மாற்று",
+ "enabledText": "செயல்படுத்த",
"endText": "முற்று",
"enjoyText": "மகிழ்!",
"epicDescriptionFilterText": "${DESCRIPTION} காவிய மெதுவான இயக்கத்தில்.",
@@ -670,6 +697,8 @@
"duplicateText": "நகல்எடு்\nபிளேலிஸ்ட்",
"editText": "தொகு\nபிளேலிஸ்ட்",
"newText": "புதிய\nபிளேலிஸ்ட்",
+ "pointsToWinText": "வெற்றிக்கான புள்ளிகள்",
+ "seriesLengthText": "தொடர் நீளம்",
"showTutorialText": "டுடோரியலைக் காட்டு",
"shuffleGameOrderText": "விளையாட்டு ஆர்டரை கலக்கவும்",
"titleText": "${TYPE} பிளேலிஸ்ட்களைத் தனிப்பயனாக்கவும்"
@@ -707,10 +736,10 @@
"friendHasSentPromoCodeText": "${NAME} இலிருந்து ${COUNT} ${APP_NAME} டிக்கெட்டுகள்",
"friendPromoCodeAwardText": "ஒவ்வொரு முறையும் நீங்கள் பயன்படுத்தும்போது ${COUNT} டிக்கெட்டுகளைப் பெறுவீர்கள்.",
"friendPromoCodeExpireText": "குறியீடு ${EXPIRE_HOURS} மணிநேரத்தில் காலாவதியாகும் மற்றும் புதிய பிளேயர்களுக்கு மட்டுமே வேலை செய்யும்.",
- "friendPromoCodeInstructionsText": "இதைப் பயன்படுத்த, ${APP_NAME} ஐத் திறந்து \"அமைப்புகள்-> மேம்பட்ட-> குறியீட்டை உள்ளிடவும்\" என்பதற்குச் செல்லவும்.\nஆதரிக்கப்படும் அனைத்து தளங்களுக்கும் பதிவிறக்க இணைப்புகளுக்கு bombsquadgame.com ஐப் பார்க்கவும்.",
+ "friendPromoCodeInstructionsText": "இதைப் பயன்படுத்த, ${APP_NAME} ஐத் திறந்து \"அமைப்புகள்->மேம்பட்ட->தகவல் அனுப்பு\" என்பதற்குச் செல்லவும்.\nஆதரிக்கப்படும் அனைத்து தளங்களுக்கும் பதிவிறக்க இணைப்புகளுக்கு bombsquadgame.com ஐப் பார்க்கவும்.",
"friendPromoCodeRedeemLongText": "இதை ${MAX_USES} பேர் வரை ${COUNT} இலவச டிக்கெட்டுகளுக்கு மீட்டெடுக்கலாம்.",
"friendPromoCodeRedeemShortText": "விளையாட்டில் ${COUNT} டிக்கெட்டுகளுக்கு அதை மீட்டெடுக்கலாம்.",
- "friendPromoCodeWhereToEnterText": "(\"அமைப்புகள்-> மேம்பட்ட-> குறியீட்டை உள்ளிடவும்\")",
+ "friendPromoCodeWhereToEnterText": "(\"அமைப்புகள்->மேம்பட்ட->தகவல் அனுப்பு\")",
"getFriendInviteCodeText": "நண்பர் அழைப்புக் குறியீட்டைப் பெறுங்கள்",
"googlePlayDescriptionText": "உங்கள் விருந்துக்கு Google Play பிளேயர்களை அழைக்கவும்:",
"googlePlayInviteText": "அழை",
@@ -742,6 +771,7 @@
"manualYourLocalAddressText": "உங்கள் உள்ளூர் முகவரி:",
"nearbyText": "அருகில்",
"noConnectionText": "<இணைப்பு இல்லை>",
+ "noPartiesAddedText": "கூட்டங்கள் சேர்க்கப்படவில்லை",
"otherVersionsText": "(பிற பதிப்புகள்)",
"partyCodeText": "பார்ட்டி குறியீடு",
"partyInviteAcceptText": "ஏற்றுக்கொள்",
@@ -805,6 +835,12 @@
"youHaveShortText": "உங்களிடம் ${COUNT} உள்ளது",
"youHaveText": "உங்களிடம் ${COUNT} டிக்கெட்டுகள் உள்ளன"
},
+ "goldPass": {
+ "desc1InfTokensText": "எல்லையற்ற டோக்கன்கள்.",
+ "desc2NoAdsText": "விளம்பரங்கள் இல்லை.",
+ "desc3ForeverText": "எப்போதும்.",
+ "goldPassText": "தங்க நுழைவு அட்டை"
+ },
"googleMultiplayerDiscontinuedText": "மன்னிக்கவும், கூகுளின் மல்டிபிளேயர் சேவை இனி கிடைக்காது.\nநான் முடிந்தவரை விரைவாக மாற்றுவதற்கு வேலை செய்கிறேன்.\nஅதுவரை, வேறு இணைப்பு முறையை முயற்சிக்கவும்.\n-எரிக்",
"googlePlayPurchasesNotAvailableText": "Google Play வாங்குதல்கள் கிடைக்கவில்லை.\nஉங்கள் ஸ்டோர் பயன்பாட்டைப் புதுப்பிக்க வேண்டியிருக்கலாம்.",
"googlePlayServicesNotAvailableText": "Google Play சேவைகள் கிடைக்கவில்லை.\nசில ஆப்ஸ் செயல்பாடுகள் முடக்கப்பட்டிருக்கலாம்.",
@@ -813,10 +849,12 @@
"alwaysText": "எப்போதும்",
"fullScreenCmdText": "முழுத்திரை (Cmd-F)",
"fullScreenCtrlText": "முழுத்திரை (Ctrl-F)",
+ "fullScreenText": "முழு திரை",
"gammaText": "காமா",
"highText": "உயர்",
"higherText": "அதிக",
"lowText": "குறைந்த",
+ "maxFPSText": "அதிக FPS",
"mediumText": "நடுத்தர",
"neverText": "ஒருபோதும்",
"resolutionText": "பகுத்தல்",
@@ -986,6 +1024,7 @@
"tournamentLeagueText": "இந்த போட்டியில் நுழைய நீங்கள் ${NAME} லீக்கை அடைய வேண்டும்.",
"trophyCountsResetText": "அடுத்த சீசனில் கோப்பைகளின் எண்ணிக்கை மீட்டமைக்கப்படும்."
},
+ "learnMoreText": "மேலும் அறிக",
"levelBestScoresText": "${LEVEL} இல் சிறந்த மதிப்பெண்கள்",
"levelBestTimesText": "${LEVEL} இல் சிறந்த நேரங்கள்",
"levelIsLockedText": "${LEVEL} லாக் செய்யப்பட்டது.",
@@ -1045,6 +1084,7 @@
"nameSuicideText": "${NAME} தற்கொலை செய்து கொண்டார்.",
"nameText": "பெயர்",
"nativeText": "பூர்வீகம்",
+ "newExclaimText": "புதியது!",
"newPersonalBestText": "புதிய தனிப்பட்ட சிறந்த!",
"newTestBuildAvailableText": "ஒரு புதிய சோதனை உருவாக்கம் கிடைக்கிறது! (${VERSION} உருவாக்க ${BUILD}).\n${ADDRESS} இல் பெறுங்கள்.",
"newText": "புதிய",
@@ -1055,7 +1095,9 @@
"noContinuesText": "(தொடரும் இல்லை)",
"noExternalStorageErrorText": "இந்தச் சாதனத்தில் வெளிப்புறச் சேமிப்பு இல்லை",
"noGameCircleText": "பிழை: GameCircle இல் உள்நுழையவில்லை",
+ "noPluginsInstalledText": "செருகுநிரல்கள் எதுவும் நிறுவப்படவில்லை",
"noScoresYetText": "இன்னும் மதிப்பெண்கள் இல்லை.",
+ "noServersFoundText": "சேவையகங்கள் எதுவும் இல்லை.",
"noThanksText": "இல்லை, நன்றி!",
"noTournamentsInTestBuildText": "எச்சரிக்கை: இந்த சோதனை உருவாக்கத்தில் இருந்து போட்டியின் மதிப்பெண்கள் புறக்கணிக்கப்படும்.",
"noValidMapsErrorText": "இந்த விளையாட்டு வகைக்கு சரியான வரைபடங்கள் இல்லை.",
@@ -1124,7 +1166,11 @@
"pleaseWaitText": "தயவுசெய்து காத்திருங்கள்...",
"pluginClassLoadErrorText": "செருகுநிரல் வகுப்பை ஏற்றுவதில் பிழை '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "'${PLUGIN}' செருகுநிரலைத் தொடங்குவதில் பிழை: ${ERROR}",
+ "pluginSettingsText": "செருகுநிரல் அமைப்புகள்",
+ "pluginsAutoEnableNewText": "புதிய செருகுநிரல்களை தானாக இயக்கவும்",
"pluginsDetectedText": "புதிய செருகுநிரல்(கள்) கண்டறியப்பட்டது. அவற்றைச் செயல்படுத்த மீண்டும் தொடங்கவும் அல்லது அமைப்புகளில் உள்ளமைக்கவும்.",
+ "pluginsDisableAllText": "அனைத்து செருகுநிரல்களையும் முடக்கு",
+ "pluginsEnableAllText": "அனைத்து செருகுநிரல்களையும் இயக்கு",
"pluginsRemovedText": "${NUM} செருகுநிரல்(கள்) இனி காணப்படவில்லை.",
"pluginsText": "செருகுநிரல்கள்",
"practiceText": "பயிற்சி",
@@ -1156,6 +1202,8 @@
"punchText": "குத்து",
"purchaseForText": "${PRICE} க்கு வாங்கு",
"purchaseGameText": "வாங்கு விளையாட்டு",
+ "purchaseNeverAvailableText": "மன்னிக்கவும், இந்த உருவாக்கத்தில் வாங்குதல்கள் இல்லை.\nவேறொரு தளத்தில் உங்கள் கணக்கில் உள்நுழைந்து, அங்கிருந்து வாங்கவும்.",
+ "purchaseNotAvailableText": "இந்த கொள்முதல் கிடைக்கவில்லை.",
"purchasingText": "வாங்குகிறது...",
"quitGameText": "${APP_NAME} ஐ விட்டு வெளியேறவா?",
"quittingIn5SecondsText": "5 வினாடிகளில் வெளியேறும்...",
@@ -1217,7 +1265,9 @@
"revertText": "பின்செல்",
"runText": "ஓடு",
"saveText": "சேமி",
- "scanScriptsErrorText": "ஸ்கிரிப்ட்களை ஸ்கேன் செய்வதில் பிழை (கள்); விவரங்களுக்கு பதிவைப் பார்க்கவும்.",
+ "scanScriptsErrorText": "ஸ்கிரிப்ட்களை ஸ்கேன் செய்வதில் பிழை(கள்). விவரங்களுக்கு பதிவைப் பார்க்கவும்.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} மற்றும் ${NUM} பிற மாடுல்(கள்) APIக்காக புதுப்பிக்க படவேண்டும் ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} Api காக புதுப்பிக்க படவேண்டும் ${API}.",
"scoreChallengesText": "ஸ்கோர் சவால்கள்",
"scoreListUnavailableText": "மதிப்பெண் பட்டியல் கிடைக்கவில்லை.",
"scoreText": "மதிப்பெண் பெரு",
@@ -1228,6 +1278,7 @@
},
"scoreWasText": "(${COUNT} இருந்தது)",
"selectText": "தேர்ந்தெடு",
+ "sendInfoDescriptionText": "டெவெலப்பருக்கு கணக்கு மற்றும் பயன்பாட்டு நிலைத் தகவலை அனுப்புகிறது.\nஉங்கள் பெயர் அல்லது அனுப்புவதற்கான காரணத்தைச் சேர்க்கவும்.",
"seriesWinLine1PlayerText": "வெற்றி",
"seriesWinLine1TeamText": "வெற்றி",
"seriesWinLine1Text": "வெற்றி",
@@ -1245,6 +1296,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(உரை திருத்துவதற்கான ஒரு எளிய, கட்டுப்படுத்தி-நட்பு திரையில் விசைப்பலகை)",
"alwaysUseInternalKeyboardText": "எப்போதும் உள் விசைப்பலகையைப் பயன்படுத்தவும்",
"benchmarksText": "அளவுகோல்கள் மற்றும் மன அழுத்த சோதனைகள்",
+ "devToolsText": "டெவலப்பர் கருவிகள்",
"disableCameraGyroscopeMotionText": "கேமரா கைரோஸ்கோப் இயக்கத்தை முடக்கவும்",
"disableCameraShakeText": "கேமரா குலுக்கை முடக்கு",
"disableThisNotice": "(மேம்பட்ட அமைப்புகளில் இந்த அறிவிப்பை முடக்கலாம்)",
@@ -1257,10 +1309,16 @@
"kidFriendlyModeText": "குழந்தை நட்பு முறை (குறைந்த வன்முறை போன்றவை)",
"languageText": "மொழி",
"moddingGuideText": "மோடிங் வழிகாட்டி",
+ "moddingToolsText": "மாற்றியமைக்கும் கருவிகள்",
"mustRestartText": "இது நடைமுறைக்கு வர நீங்கள் விளையாட்டை மறுதொடக்கம் செய்ய வேண்டும்.",
"netTestingText": "நெட்வொர்க் சோதனை",
"resetText": "மீட்டு",
+ "sendInfoText": "தகவல் அனுப்பு",
"showBombTrajectoriesText": "வெடிகுண்டு பாதைகளைக் காட்டு",
+ "showDemosWhenIdleText": "செயலற்ற நிலையில் டெமோக்களைக் காட்டு",
+ "showDeprecatedLoginTypesText": "நிராகரிக்கப்பட்ட உள்நுழைவு வகைகளைக் காட்டு",
+ "showDevConsoleButtonText": "உருவாக்குபவர் பணியகத்தை காட்டு",
+ "showInGamePingText": "பிணைய தாமதத்தைக் காட்டு",
"showPlayerNamesText": "பிளேயர் பெயர்களைக் காட்டு",
"showUserModsText": "மோட்ஸ் கோப்புறையைக் காட்டு",
"titleText": "மேம்பட்ட அமைப்புகள்",
@@ -1268,8 +1326,8 @@
"translationFetchErrorText": "மொழிபெயர்ப்பு நிலை கிடைக்கவில்லை",
"translationFetchingStatusText": "மொழிபெயர்ப்பு நிலையை சரிபார்க்கிறது...",
"translationInformMe": "எனது மொழிக்கு புதுப்பிப்புகள் தேவைப்படும்போது எனக்குத் தெரியப்படுத்துங்கள்",
- "translationNoUpdateNeededText": "தற்போதைய மொழி புதுப்பித்த நிலையில் உள்ளது; வூஹூ!",
- "translationUpdateNeededText": "** தற்போதைய மொழிக்கு புதுப்பிப்புகள் தேவை !! **",
+ "translationNoUpdateNeededText": "தற்போதைய மொழி புதுப்பித்த நிலையில் உள்ளது; அடிதூள்!",
+ "translationUpdateNeededText": "** தற்போதைய மொழிக்கு புதுப்பிப்புகள் தேவை!! **",
"vrTestingText": "VR சோதனை"
},
"shareText": "பகிர்",
@@ -1279,6 +1337,9 @@
"signInWithGameCenterText": "Game Center கணக்கைப் பயன்படுத்த,\nGame Center ஆப் மூலம் உள்நுழையவும்.",
"singleGamePlaylistNameText": "வெறும் ${GAME}",
"singlePlayerCountText": "1 வீரர்",
+ "sizeLargeText": "பெரியது",
+ "sizeMediumText": "நடுத்தரம்",
+ "sizeSmallText": "சிறியது",
"soloNameFilterText": "தனி ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "குணம் தேர்ந்தெடுத்தல்",
@@ -1351,6 +1412,8 @@
"storeText": "ஸ்டோர்",
"submitText": "சமர்ப்பிக்கவும்",
"submittingPromoCodeText": "குறியீட்டைச் சமர்ப்பிக்கிறது...",
+ "successText": "வெற்றி!",
+ "supportEmailText": "நீங்கள் ஏதேனும் சிக்கல்களை எதிர்கொண்டால் பயன்பாடு,\nதயவுசெய்து ${EMAIL} க்கு மின்னஞ்சல் செய்யவும்.",
"teamNamesColorText": "அணியின் பெயர்கள்/நிறங்கள்...",
"telnetAccessGrantedText": "டெல்நெட் அணுகல் இயக்கப்பட்டது.",
"telnetAccessText": "டெல்நெட் அணுகல் கண்டறியப்பட்டது; அனுமதிக்கவா?",
@@ -1370,6 +1433,17 @@
"tipText": "உதவிக்குறிப்பு",
"titleText": "பாம்ஸ்குவாட்",
"titleVRText": "பாம்ஸ்குவாட் VR",
+ "tokens": {
+ "getTokensText": "டோக்கன்களைப் பெறுங்கள்",
+ "notEnoughTokensText": "போதுமான டோக்கன்கள் இல்லை!",
+ "numTokensText": "${COUNT} டோக்கன்கள்",
+ "shinyNewCurrencyText": "BombSquad இன் பளபளப்பான புதிய நாணயம்.",
+ "tokenPack1Text": "சிறிய டோக்கன் பேக்",
+ "tokenPack2Text": "நடுத்தர டோக்கன் பேக்",
+ "tokenPack3Text": "பெரிய டோக்கன் பேக்",
+ "tokenPack4Text": "மிகப்பெரிய டோக்கன் பேக்",
+ "youHaveGoldPassText": "உங்களிடம் தங்க நுழைவு அட்டை உள்ளது.\nஅனைத்து டோக்கன் வாங்குதல்களும் இலவசம்.\nமகிழுங்கள்!"
+ },
"topFriendsText": "சிறந்த நண்பர்கள்",
"tournamentCheckingStateText": "போட்டி நிலையை சரிபார்க்கிறது; தயவுசெய்து காத்திருங்கள்...",
"tournamentEndedText": "இந்த போட்டி முடிந்தது. புதியது விரைவில் தொடங்கும்.",
@@ -1534,12 +1608,12 @@
"Malay": "மலாய்",
"Persian": "பர்ஷியன்",
"Polish": "பலிஷ்",
- "Portuguese": "போர்சுகிஸ்",
+ "Portuguese": "போர்சுகிஸ் ",
"Romanian": "ரோமானியன்",
"Russian": "ரஷ்யன்",
"Serbian": "சர்பியன்",
"Slovak": "ஸ்லோவக்",
- "Spanish": "ஸ்பானிஷ்",
+ "Spanish": "ஸ்பானிஷ் ",
"Swedish": "ஸ்வீடிஷ்",
"Tamil": "தமிழ்",
"Thai": "தாய்",
@@ -1645,7 +1719,10 @@
"You don't own that.": "உங்களுக்கு அது சொந்தமில்லை.",
"You got ${COUNT} tickets!": "நீங்கள் ${COUNT} டிக்கெட்டுகளைப் பெற்றுள்ளீர்கள்!",
"You got a ${ITEM}!": "உங்களுக்கு ${ITEM} கிடைத்துள்ளது!",
+ "You got an achievement reward!": "நீங்கள் ஒரு சாதனை பரிசு பெற்றுள்ளீர்கள்!",
"You have been promoted to a new league; congratulations!": "நீங்கள் ஒரு புதிய லீக்கில் பதவி உயர்வு பெற்றுள்ளீர்கள்; வாழ்த்துக்கள்!",
+ "You lost a chest! (All your chest slots were full)": "நீங்கள் ஒரு பெட்டியை இழந்துவிட்டீர்கள்! (உங்கள் அனைத்து பெட்டி இடங்களும் நிரம்பியிருந்தன)",
+ "You must update the app to view this.": "நீங்கள் இதைப் பார்ப்பதற்கு செயலியை புதுப்பிக்க வேண்டும்.",
"You must update to a newer version of the app to do this.": "இதைச் செய்ய நீங்கள் பயன்பாட்டின் புதிய பதிப்பைப் புதுப்பிக்க வேண்டும்.",
"You must update to the newest version of the game to do this.": "இதைச் செய்ய நீங்கள் விளையாட்டின் புதிய பதிப்பைப் புதுப்பிக்க வேண்டும்.",
"You must wait a few seconds before entering a new code.": "புதிய குறியீட்டை உள்ளிடுவதற்கு சில வினாடிகள் காத்திருக்க வேண்டும்.",
@@ -1799,11 +1876,13 @@
"toSkipPressAnythingText": "(பயிற்சியைத் தவிர்க்க எதையும் தட்டவும் அல்லது அழுத்தவும்)"
},
"twoKillText": "இரட்டை கொலை!",
+ "uiScaleText": "பயனர் இடைமுக அளவு",
"unavailableText": "கிடைக்கவில்லை",
"unconfiguredControllerDetectedText": "கட்டமைக்கப்படாத கட்டுப்படுத்தி கண்டறியப்பட்டது:",
"unlockThisInTheStoreText": "இதை ஸ்டோரில் திறக்க வேண்டும்.",
"unlockThisProfilesText": "${NUM} க்கும் அதிகமான சுயவிவரங்களை உருவாக்க, உங்களுக்கு இது தேவை:",
"unlockThisText": "இதைத் திறக்க, உங்களுக்குத் தேவை:",
+ "unsupportedControllerText": "மன்னிக்கவும், கட்டுப்படுத்தி \"${NAME}\" ஆதரிக்கப்படவில்லை.",
"unsupportedHardwareText": "மன்னிக்கவும், இந்த வன்பொருள் விளையாட்டின் உருவாக்கத்தால் ஆதரிக்கப்படவில்லை.",
"upFirstText": "முதலில் மேலே:",
"upNextText": "${COUNT} விளையாட்டில் அடுத்தது:",
@@ -1811,10 +1890,14 @@
"upgradeText": "மேம்படுத்தல்",
"upgradeToPlayText": "இதை விளையாட கேம் ஸ்டோரில் \"${PRO}\" ஐத் திறக்கவும்.",
"useDefaultText": "இயல்புநிலையைப் பயன்படுத்தவும்",
+ "userSystemScriptsCreateText": "பயனர் கணினி ஸ்கிரிப்ட்களை உருவாக்கவும்",
+ "userSystemScriptsDeleteText": "பயனர் கணினி ஸ்கிரிப்ட்களை நீக்கவும்",
"usesExternalControllerText": "இந்த விளையாட்டு உள்ளீட்டிற்கு வெளிப்புற கட்டுப்படுத்தியைப் பயன்படுத்துகிறது.",
"usingItunesText": "ஒலிப்பதிவுக்காக மியூசிக் ஆப் பயன்படுத்துகிறது...",
"v2AccountLinkingInfoText": "V2 கணக்குகளை இணைக்க, 'கணக்கை நிர்வகி' பட்டனைப் பயன்படுத்தவும்.",
+ "v2AccountRequiredText": "இதற்கு V2 கணக்கு தேவை. உங்கள் கணக்கை மேம்படுத்தி மீண்டும் முயற்சிக்கவும்.",
"validatingTestBuildText": "சோதனை கட்டத்தை சரிபார்க்கிறது...",
+ "viaText": "வழியாக",
"victoryText": "வெற்றி!",
"voteDelayText": "நீங்கள் மற்றொரு வாக்கை ${NUMBER} வினாடிகளுக்குத் தொடங்க முடியாது",
"voteInProgressText": "வாக்கெடுப்பு ஏற்கனவே நடந்து கொண்டிருக்கிறது.",
@@ -1871,7 +1954,7 @@
"worldsBestScoresText": "உலகின் சிறந்த மதிப்பெண்கள்",
"worldsBestTimesText": "உலகின் சிறந்த நேரங்கள்",
"xbox360ControllersWindow": {
- "getDriverText": "Driver ஐ பெரு",
+ "getDriverText": "Driver ஐ பெரு ",
"macInstructions2Text": "கட்டுப்படுத்திகளை கம்பியில்லாமல் பயன்படுத்த, உங்களுக்கு ரிசீவரும் தேவை\nவிண்டோஸிற்கான எக்ஸ்பாக்ஸ் 360 வயர்லெஸ் கன்ட்ரோலருடன் வருகிறது.\nஒரு ரிசீவர் உங்களை 4 கட்டுப்படுத்திகளை இணைக்க அனுமதிக்கிறது.\n\nமுக்கியமானது: 3 வது தரப்பு பெறுநர்கள் இந்த டிரைவருடன் வேலை செய்ய மாட்டார்கள்;\nஉங்கள் ரிசீவர் அதில் 'மைக்ரோசாப்ட்' என்று கூறுவதை உறுதி செய்து கொள்ளுங்கள், 'எக்ஸ்பாக்ஸ் 360' அல்ல.\nமைக்ரோசாப்ட் இனி தனித்தனியாக விற்காது, எனவே நீங்கள் பெற வேண்டும்\nகட்டுப்பாட்டாளருடன் தொகுக்கப்பட்ட ஒன்று அல்லது வேறு ஈபேயைத் தேடுங்கள்.\n\nஇது உங்களுக்கு பயனுள்ளதாக இருந்தால், தயவுசெய்து ஒரு நன்கொடையைக் கருத்தில் கொள்ளவும்\nஅவரது தளத்தில் டிரைவர் டெவலப்பர்.",
"macInstructionsText": "எக்ஸ்பாக்ஸ் 360 கட்டுப்படுத்திகளைப் பயன்படுத்த, நீங்கள் நிறுவ வேண்டும்\nமேக் டிரைவர் கீழே உள்ள இணைப்பில் கிடைக்கிறது.\nஇது கம்பி மற்றும் வயர்லெஸ் கட்டுப்படுத்திகளுடன் வேலை செய்கிறது.",
"ouyaInstructionsText": "BombSquad உடன் கம்பி எக்ஸ்பாக்ஸ் 360 கட்டுப்படுத்திகளைப் பயன்படுத்த, வெறுமனே\nஅவற்றை உங்கள் சாதனத்தின் USB போர்ட்டில் செருகவும். நீங்கள் ஒரு USB ஹப் பயன்படுத்தலாம்\nபல கட்டுப்படுத்திகளை இணைக்க.\n\nவயர்லெஸ் கன்ட்ரோலர்களைப் பயன்படுத்த உங்களுக்கு வயர்லெஸ் ரிசீவர் தேவை,\n\"விண்டோஸிற்கான எக்ஸ்பாக்ஸ் 360 வயர்லெஸ் கன்ட்ரோலர்\" இன் ஒரு பகுதியாக கிடைக்கிறது\nதொகுப்பு அல்லது தனித்தனியாக விற்கப்படுகிறது. ஒவ்வொரு ரிசீவரும் USB போர்ட்டில் செருகப்படுகிறது மற்றும்\n4 வயர்லெஸ் கட்டுப்படுத்திகளை இணைக்க உங்களை அனுமதிக்கிறது.",
@@ -1879,5 +1962,6 @@
},
"yesAllowText": "ஆம், அனுமதி!",
"yourBestScoresText": "உங்கள் சிறந்த மதிப்பெண்கள்",
- "yourBestTimesText": "உங்கள் சிறந்த நேரங்கள்"
+ "yourBestTimesText": "உங்கள் சிறந்த நேரங்கள்",
+ "yourPrizeText": "உங்கள் பரிசு:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/thai.json b/dist/ba_data/data/languages/thai.json
index 6f006320..9a39c80a 100644
--- a/dist/ba_data/data/languages/thai.json
+++ b/dist/ba_data/data/languages/thai.json
@@ -1,44 +1,49 @@
{
"accountSettingsWindow": {
"accountNameRules": "ชื่อบัญชีต้องไม่มีอิโมจิหรือตัวอักษรพิเศษอื่นๆ",
- "accountsText": "บัญชี",
+ "accountsText": "บัญชีผู้ใช้",
"achievementProgressText": "ผ่านความสำเร็จ: ${COUNT} จาก ${TOTAL}",
"campaignProgressText": "ความคืบหน้าในภารกิจ [ยาก]: ${PROGRESS}",
"changeOncePerSeason": "คุณสามารถเปลี่ยนได้เพียงครั้งเดียวต่อฤดูกาล",
- "changeOncePerSeasonError": "คุณต้องรอจนกว่าฤดูกาลหน้าจะเปลี่ยนอีก (${NUM} days)",
+ "changeOncePerSeasonError": "คุณต้องรอจนกว่าฤดูกาลหน้าจะเปลี่ยนอีก (${NUM} วัน)",
+ "createAnAccountText": "สร้างบัญชี",
"customName": "ชื่อที่กำหนดเอง",
+ "deleteAccountText": "ลบบัญชีผู้ใช้",
"googlePlayGamesAccountSwitchText": "หากคุณต้องการใช้บัญชี Google อื่น\nใช้แอป Google Play Games เพื่อเปลี่ยน",
"linkAccountsEnterCodeText": "ใส่รหัส",
"linkAccountsGenerateCodeText": "สร้างรหัส",
"linkAccountsInfoText": "(ใช้ความคืบหน้าร่วมกันกับแพลตฟอร์มอื่นๆ)",
- "linkAccountsInstructionsNewText": "หากต้องการเชื่อมโยงสองบัญชีให้สร้างรหัสในบัญชีแรกและป้อนรหัสนั้นในวินาที ข้อมูลจากบัญชีที่สองจะถูกแชร์ระหว่างทั้งสอง(ข้อมูลจากบัญชีแรกจะหายไป): ${COUNT} ** .",
+ "linkAccountsInstructionsNewText": "หากต้องการเชื่อมโยงสองบัญชี ให้สร้างรหัสในบัญชีแรก\nและป้อนรหัสนั้นในบัญชีที่สอง ข้อมูลจาก\nบัญชีที่สองจะถูกแชร์ระหว่างทั้งสอง\n(ข้อมูลจากบัญชีแรกจะหายไป)\n\nคุณสามารถเชื่อมโยงได้ถึง ${COUNT} บัญชี\n\nข้อสำคัญ: เชื่อมโยงบัญชีที่คุณเป็นเจ้าของเท่านั้น\nหากคุณเชื่อมโยงกับบัญชีของเพื่อน คุณจะไม่ทำ\nสามารถเล่นออนไลน์ได้ในเวลาเดียวกัน",
"linkAccountsInstructionsText": "เพื่อที่จะผูกทั้งสองบัญชีเข้าด้วยกัน จะต้องสร้างรหัสรหัสหนึ่ง\nแล้วจะต้องใส่รหัสในบัญที่คุณต้องการจะเชื่อมโยงเข้าด้วยกัน\nความคืบหน้าและสิ่งของในคลังของทั้งสองบัญชีจะถูกรวมกัน\nคุณสามารถเชื่อมโยงได้ทั้งหมด ${COUNT} บัญชี\n\nระวัง! หลังจากผูกบัญชีแล้วจะไม่สามารถยกเลิกได้!",
"linkAccountsText": "ผูกบัญชี",
- "linkedAccountsText": "บัญชีที่เชื่อมโยงแล้ว",
+ "linkedAccountsText": "บัญชีที่เชื่อมโยงแล้ว:",
"manageAccountText": "จัดการบัญชี",
"nameChangeConfirm": "คุณต้องการเปลี่ยนชื่อบัญชีของคุณเป็น ${NAME} หรือไม่",
"resetProgressConfirmNoAchievementsText": "การทำสิ่งนี้จะรีเซ็ตความคืบหน้าต่างๆ ในโหมด co-op\nและคะแนนดีที่สุดในอุปกรณ์นี้ (แต่จะไม่รีเซ็ตตั๋วของคุณ) \nการทำสิ่งนี้ไม่สามารถยกเลิกได้! คุณแน่ใจหรือไม่?",
"resetProgressConfirmText": "การทำสิ่งนี้จะรีเซ็ตความคืบหน้าในโหมด co-op,\nความสำเร็จและคะแนนดีที่สุดในอุปกรณ์นี้\n(แต่จะไม่รีเซ็ตตั๋วของคุณ) การทำสิ่งนี้จะ\nไม่สามารถยกเลิกได้! คุณแน่ใจหรือไม่?",
"resetProgressText": "รีเซ็ตความคืบหน้า",
"setAccountName": "ตั้งชื่อบัญชี",
- "setAccountNameDesc": "เลือกชื่อที่จะแสดงสำหรับบัญชีของคุณคุณสามารถใช้ชื่อจากหนึ่งในการเชื่อมโยงของคุณบัญชีหรือสร้างชื่อที่กำหนดเองที่ไม่ซ้ำกัน:{Thanakorn}",
+ "setAccountNameDesc": "เลือกชื่อที่จะแสดงสำหรับบัญชีของคุณ\nคุณสามารถใช้ชื่อจากหนึ่งในบัญชีที่เชื่อมโยงของคุณ\nหรือสร้างชื่อที่กำหนดเองที่ไม่ซ้ำใคร",
"signInInfoText": "เข้าสู่ระบบเพื่อเก็บตั๋วในการเล่นแบบออนไลน์,\nและแบ่งปันความคืบหน้าของคุณกับอุปกรณ์อื่นๆ",
- "signInText": "ลงชื่อเข้าใช้",
+ "signInText": "เข้าสู่ระบบ",
+ "signInWithAnEmailAddressText": "เข้าสู่ระบบด้วยที่อยู่อีเมล",
"signInWithDeviceInfoText": "(บัญชีอัตโนมัติที่ใช้ได้เฉพาะในอุปกรณ์นี้)",
- "signInWithDeviceText": "เข้าสู่ระบบจากอุปกรณ์นี้",
+ "signInWithDeviceText": "เข้าสู่ระบบด้วยอุปกรณ์นี้",
"signInWithGameCircleText": "เข้าสู่ระบบด้วยบัญชี Game Circle",
"signInWithGooglePlayText": "ลงชื่อเข้าใช้ด้วยบัญชี Google Play",
"signInWithTestAccountInfoText": "(บัญชีทดลอง;เลือกตัวเลือกนี้เพื่อไปต่อ)",
"signInWithTestAccountText": "ลงชื่อเข้าใช้เพื่อทดลอง",
+ "signInWithText": "เข้าสู่ระบบด้วย ${SERVICE}",
"signInWithV2InfoText": "(บัญชีที่ใช้งานได้กับทุกแพลตฟอร์ม)",
- "signInWithV2Text": "ลงชื่อเข้าใช้ด้วยบัญชี BombSquad",
+ "signInWithV2Text": "เข้าสู่ระบบด้วยบัญชี ${APP_NAME}",
"signOutText": "ออกจากระบบ",
- "signingInText": "กำลังลงชื่อเข้าใช้...",
+ "signingInText": "กำลังเข้าสู่ระบบ...",
"signingOutText": "กำลังออกจากระบบ...",
- "ticketsText": "ตั๋ว: ${COUNT}",
+ "ticketsText": "ตั๋ว: ${COUNT} ใบ",
"titleText": "บัญชี",
"unlinkAccountsInstructionsText": "เลือกบัญชีที่จะยกเลิกการเชื่อมโยง",
"unlinkAccountsText": "ยกเลิกการเชื่อมโยงบัญชี",
+ "unlinkLegacyV1AccountsText": "ยกเลิกการเชื่อมโยงบัญชีแบบเก่า (V1)",
"v2LinkInstructionsText": "ใช้ลิงก์นี้เพื่อสร้างบัญชีหรือลงชื่อเข้าใช้",
"viaAccount": "ผ่านบัญชี ${NAME}",
"youAreSignedInAsText": "คุณลงชื่อเข้าใช้ในบัญชี:"
@@ -49,8 +54,8 @@
"Boom Goes the Dynamite": {
"description": "ฆ่าศัตรู 3 คนด้วย TNT",
"descriptionComplete": "ฆ่าศัตรู 3 คนด้วย TNT แล้ว",
- "descriptionFull": "ฆ่าศัตรู ${LEVEL} 3 คนด้วย TNT",
- "descriptionFullComplete": "ฆ่าศัตรู 3 คน ด้วย TNT ใน ${LEVEL}",
+ "descriptionFull": "ฆ่าศัตรู 3 คนด้วย TNT ใน ${LEVEL}",
+ "descriptionFullComplete": "ฆ่าศัตรู 3 คน ด้วย TNT ใน ${LEVEL} แล้ว",
"name": "ระเบิดดังสนั่นหวั่นไหวจากไดนาไมต์"
},
"Boxer": {
@@ -89,7 +94,7 @@
"descriptionComplete": "ชนะโดยไม่ต้องใช้หมัดหรือระเบิดแล้ว",
"descriptionFull": "ชนะ ${LEVEL} โดยไม่ต้องใช้หมัดหรือระเบิด",
"descriptionFullComplete": "ชนะ ${LEVEL} โดยไม่ต้องใช้หมัดหรือระเบิดแล้ว",
- "name": "เร่งรีบ"
+ "name": "พริ้วไหวดั่งสายลม"
},
"In Control": {
"descriptionFull": "เชื่อมต่อกับคอนโทรลเลอร์",
@@ -115,7 +120,7 @@
"descriptionComplete": "ทำคะแนน 500 คะแนนแล้ว",
"descriptionFull": "ทำคะแนน 500 คะแนนใน ${LEVEL}",
"descriptionFullComplete": "ทำคะแนน 500 คะแนนใน ${LEVEL} แล้ว",
- "name": "ผู้วิเศษ ${LEVEL}"
+ "name": "พ่อมด ${LEVEL}"
},
"Mine Games": {
"description": "ฆ่าศัตรู 3 คนด้วยกับระเบิด",
@@ -332,16 +337,21 @@
"getMoreGamesText": "รับเกมเพิ่มเติม",
"titleText": "เพิ่มเกม"
},
+ "addToFavoritesText": "เพื่มในรายการโปรด",
+ "addedToFavoritesText": "เพื่ม '${NAME}' ในรายการโปรดแล้ว",
+ "allText": "ทั้งหมด",
"allowText": "ยอมรับ",
- "alreadySignedInText": "บัญชีของคุณลงชื่อเข้าใช้จากอุปกรณ์อื่น\nโปรดเปลี่ยนบัญชีหรือปิดเกมของคุณ\nอุปกรณ์อื่นและลองอีกครั้ง",
+ "alreadySignedInText": "บัญชีของคุณลงชื่อเข้าใช้จากอุปกรณ์อื่น;\nโปรดเปลี่ยนบัญชีหรือปิดเกมบนอุปกรณ์อื่น\nของคุณและลองอีกครั้ง",
"apiVersionErrorText": "ไม่สามารถโหลดโมดูล ${NAME} ได้; มันอยู่ในเวอร์ชั่น api ${VERSION_USED}; แต่เราต้องการเวอร์ชั่น ${VERSION_REQUIRED}",
+ "applyText": "นำมาใช้ในเกม",
+ "areYouSureText": "คุณแน่ใจใช่มั้ย?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"อัติโนมัติ\" เปิดสิ่งนี้เฉพาะตอนที่เสียบหูฟังอยู่เท่านั้น)",
"headRelativeVRAudioText": "ระดับเสียงเครื่องสวมหัว VR",
"musicVolumeText": "ระดับเสียงเพลง",
"soundVolumeText": "ระดับเสียงประกอบ",
"soundtrackButtonText": "เพลงประกอบ",
- "soundtrackDescriptionText": "(นำเพลงของคุณเองมาใช้ในการเล่นเกม)",
+ "soundtrackDescriptionText": "(นำเพลงของคุณเองมาใช้เล่นในเกม)",
"titleText": "การตั้งค่าเสียง"
},
"autoText": "อัติโนมัติ",
@@ -356,14 +366,23 @@
"boostText": "บูสท์",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} กำลังค่าในตัวแอพเอง",
"buttonText": "ปุ่ม",
- "canWeDebugText": "คุณอยากให้ BombSquad แจ้งข้อผิดพลาด ปัญหา\nและข้อมูลการใช้งานทั่วไปกับผู้สร้างโดยอัติโนมัติหรือไม่?\n\nข้อมูลนี้จะไม่เกี่ยวข้องกับข้อมูลส่วนตัวและจะช่วยให้\nสามารถเล่นเกมได้อย่างราบรื่นและไม่มีข้อผิดพลาด",
+ "canWeDebugText": "คุณต้องการให้ ${APP_NAME} รายงานข้อบกพร่อง ข้อขัดข้อง และข้อมูลการใช้งานพื้นฐานไปยังผู้พัฒนาโดยอัตโนมัติหรือไม่\n\nข้อมูลนี้ไม่มีข้อมูลส่วนบุคคลและช่วยให้เกมทำงานได้อย่างราบรื่นและไม่มีข้อบกพร่อง",
"cancelText": "ยกเลิก",
"cantConfigureDeviceText": "ขออภัย, ${DEVICE} ไม่สามารถตั้งค่าได้",
"challengeEndedText": "การท้าทายนี้ได้จบลงแล้ว",
"chatMuteText": "ปิดเสียงแชท",
"chatMutedText": "ปิดเสียงการแชท",
"chatUnMuteText": "ยกเลิกการปิดเสียงแขท",
+ "chests": {
+ "prizeOddsText": "อัตราการได้รางวัล",
+ "reduceWaitText": "ลดเวลารอ",
+ "slotDescriptionText": "ช่องนี้ใช้สำหรับใส่หีบ\n\nรับหีบได้จากการเล่นด่านต่างๆ ในด่านแคมเปญ,\nการเข้าร่วมการแข่งขันและการทำความสำเร็จ\nให้สำเร็จ",
+ "slotText": "ช่องเก็บหีบที่ ${NUM}",
+ "slotsFullWarningText": "คำเตือน: ช่องเก็บหีบของคุณเต็มหมดแล้ว\nหีบใดๆ ที่คุณได้รับจากเกมนี้จะหายไป"
+ },
"choosingPlayerText": "<กำลังเลือกผู้เล่น>",
+ "claimText": "รับ",
+ "codesExplainText": "นักพัฒนาซอฟต์แวร์มอบรหัสเพื่อ\nวินิจฉัยและแก้ไขปัญหาบัญชี",
"completeThisLevelToProceedText": "คุณต้องผ่านด่านนี้\nก่อนจึงจะไปต่อได้!",
"completionBonusText": "รางวัลการผ่านด่าน",
"configControllersWindow": {
@@ -422,7 +441,7 @@
"twoInOneSetupText": "การตั้งค่าคอนโทรลเลอร์แบบ 2 ใน 1",
"uiOnlyDescriptionText": "(ป้องกันคอนโทรลเลอร์ตัวนี้ไม่ให้ใช้เข้าร่วมเกม)",
"uiOnlyText": "จำกัดในการใช้เมนู",
- "unassignedButtonsRunText": "วิ่งปุ่มที่ไม่ได้ตั้งทั้งหมด",
+ "unassignedButtonsRunText": "ใช้ปุ่มที่ไม่ได้กำหนดทั้งหมดในการวิ่ง",
"unsetText": "<ไม่ได้ตั้ง>",
"vrReorientButtonText": "ปรับทิศทางปุ่ม VR"
},
@@ -444,6 +463,7 @@
"swipeText": "การปัด",
"titleText": "การตั้งค่าหน้าจอสัมผัส"
},
+ "configureDeviceInSystemSettingsText": "",
"configureItNowText": "จะตั้งค่ามันตอนนี้หรือไม่?",
"configureText": "ตั้งค่า",
"connectMobileDevicesWindow": {
@@ -545,7 +565,8 @@
"deleteText": "ลบ",
"demoText": "ทดลอง",
"denyText": "ยกเลิก",
- "deprecatedText": "คัดค้าน",
+ "deprecatedText": "ไม่ถูกใช้งาน",
+ "descriptionText": "คำอธิบายเกม",
"desktopResText": "เดสก์ท็อป Res",
"deviceAccountUpgradeText": "คำเตือน:\nคุณลงชื่อเข้าใช้ด้วยบัญชีอุปกรณ์ (${NAME})\nบัญชีอุปกรณ์จะถูกลบออกในการอัปเดตในอนาคต\nอัปเกรดเป็นบัญชี V2 หากคุณต้องการติดตามความคืบหน้า",
"difficultyEasyText": "ง่าย",
@@ -556,6 +577,10 @@
"disableRemoteAppConnectionsText": "ปิดการใช้การเชื่อมต่อแอพรีโมต",
"disableXInputDescriptionText": "อนุญาตให้ใช้คอนโทรลเลอร์มากกว่า 4 ตัวแต่จะทำงานได้ไม่ค่อยดีเท่าไหร่",
"disableXInputText": "ปิด XInput",
+ "disabledText": "ปิด",
+ "discardText": "ทิ้ง",
+ "discordFriendsText": "ต้องการหาเพื่อนที่จะเล่นด้วยใช่ไหม\nเข้า Discord ของพวกเราและหาเพื่อนใหม่ๆ!",
+ "discordJoinText": "เข้าร่วม Discord",
"doneText": "เสร็จสิ้น",
"drawText": "เสมอ",
"duplicateText": "ทำซ้ำ",
@@ -588,6 +613,7 @@
"localProfileText": "(โปรไฟล์ส่วนตัว)",
"nameDescriptionText": "ชื่อผู้เล่น",
"nameText": "ชื่อ",
+ "profileAlreadyExistsText": "โปรไฟล์นี้ไม่สามารถใช้ชื่อนี้ได้",
"randomText": "สุ่มชื่อ",
"titleEditText": "แก้ไขโปรไฟล์",
"titleNewText": "สร้างโปรไฟล์ใหม่",
@@ -623,10 +649,11 @@
"useMusicFolderText": "โฟลเดอร์ของไฟล์เพลง"
},
"editText": "แก้ไข",
+ "enabledText": "เปิด",
"endText": "จบ",
"enjoyText": "ขอให้สนุก!",
"epicDescriptionFilterText": "${DESCRIPTION} ในการเคลื่อนไหวที่ช้ามากๆ",
- "epicNameFilterText": "${NAME} แบบช้ามหากาฬ",
+ "epicNameFilterText": "มหากาพย์ ${NAME}",
"errorAccessDeniedText": "การเข้าถึงถูกปฏิเสธ",
"errorDeviceTimeIncorrectText": "เวลาของอุปกรณ์ไม่ถูกต้อง ${HOURS} ชั่วโมง\nมีแนวโน้มที่จะทำให้เกิดปัญหา\nโปรดตรวจสอบการตั้งค่าเวลาและเขตเวลาของคุณ",
"errorOutOfDiskSpaceText": "พื้นที่ว่างในเครื่องหมด",
@@ -634,6 +661,8 @@
"errorText": "ข้อผิดพลาด",
"errorUnknownText": "ข้อผิดพลาดที่ไม่รู้จัก",
"exitGameText": "จะออกจาก ${APP_NAME} หรือไม่?",
+ "expiredAgoText": "หมดอายุเมื่อ ${T} ที่แล้ว",
+ "expiresInText": "หมดอายุใน ${T}",
"exportSuccessText": "'${NAME}' ถูกส่งออกแล้ว",
"externalStorageText": "พื้นที่ว่าง",
"failText": "ล้มเหลว",
@@ -668,6 +697,8 @@
"duplicateText": "ทำซ้ำ\nเพลย์ลิส",
"editText": "แก้ไข\nเพลย์ลิส",
"newText": "สร้าง\nเพลย์ลิสใหม่",
+ "pointsToWinText": "คะแนนและชัยชนะ",
+ "seriesLengthText": "ความยาวในการโชว์",
"showTutorialText": "โชว์การสอนก่อนเริ่ม",
"shuffleGameOrderText": "เรียงเกมตามลำดับ",
"titleText": "ปรับแต่งเพลย์ลิส ${TYPE}"
@@ -693,6 +724,7 @@
"copyCodeConfirmText": "คัดลอกรหัสไปยังคลิปบอร์ดแล้ว",
"copyCodeText": "คัดลอกรหัส",
"dedicatedServerInfoText": "เพื่อผลลัพธ์ที่ดีที่สุดตั้งค่าเซิร์ฟเวอร์เฉพาะ ดู bombsquadgame.com/server เพื่อเรียนรู้วิธีการ",
+ "descriptionShortText": "ใช้หน้าต่างรวมตัวเพื่อเข้าร่วมปาร์ตี้",
"disconnectClientsText": "สิ่งนี้จะตัดการเชื่อมต่อผู้เล่น ${COUNT} คน\nในงานปาร์ตี้ของคุณ คุณแน่ใจไหม?",
"earnTicketsForRecommendingAmountText": "เพื่อน ๆ จะได้รับตั๋ว ${COUNT} ถ้าพวกเขาลองเล่นเกม\n(และคุณจะได้รับ ${YOU_COUNT} สำหรับแต่ละคนที่ทำ)",
"earnTicketsForRecommendingText": "แชร์เกมนี้\nสำหรับตั๋วฟรี",
@@ -705,10 +737,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} ตั๋วจาก ${NAME}",
"friendPromoCodeAwardText": "คุณจะได้รับตั๋ว ${COUNT} ทุกครั้งที่ใช้",
"friendPromoCodeExpireText": "รหัสจะหมดอายุใน ${EXPIRE_HOURS} ชั่วโมงและใช้ได้กับผู้เล่นใหม่เท่านั้น",
- "friendPromoCodeInstructionsText": "หากต้องการใช้งานให้เปิด ${APP_NAME} แล้วไปที่ \"การตั้งค่า -> ขั้นสูง -> ใส่รหัส\"\nดู bombsquadgame.com สำหรับลิงก์ดาวน์โหลดสำหรับแพลตฟอร์มที่รองรับทั้งหมด",
+ "friendPromoCodeInstructionsText": "หากต้องการใช้ ให้เปิด ${APP_NAME} แล้วไปที่ \"การตั้งค่า->ขั้นสูง->ส่งข้อมูล\"\nไปที่ bombsquadgame.com เพื่อดูลิงก์ดาวน์โหลดสำหรับแพลตฟอร์มที่รองรับทั้งหมด",
"friendPromoCodeRedeemLongText": "สามารถแลกเป็นตั๋วฟรี ${COUNT} คนสูงถึง ${MAX_USES} คน",
"friendPromoCodeRedeemShortText": "สามารถแลกเป็นตั๋ว ${COUNT} ใบในเกม",
- "friendPromoCodeWhereToEnterText": "(ใน \"การตั้งค่า->ขั้นสูง->ป้อนรหัส\")",
+ "friendPromoCodeWhereToEnterText": "(ใน \"ตั้งค่า->ขั้นสูง->ส่งข้อมูล\")",
"getFriendInviteCodeText": "รับรหัสเชิญเพื่อน",
"googlePlayDescriptionText": "เชิญผู้เล่น Google Play เข้าร่วมปาร์ตี้ของคุณ:",
"googlePlayInviteText": "เชิญ",
@@ -740,6 +772,7 @@
"manualYourLocalAddressText": "ที่อยู่ในท้องถิ่นของคุณ:",
"nearbyText": "ใกล้เคียง",
"noConnectionText": "<ไม่มีการเชื่อมต่อ>",
+ "noPartiesAddedText": "ไม่มีปาร์ตี้เพื่มอยู่",
"otherVersionsText": "(เวอร์ชั่นอื่นๆ)",
"partyCodeText": "รหัสปาร์ตี้",
"partyInviteAcceptText": "ยอมรับ",
@@ -803,6 +836,12 @@
"youHaveShortText": "คุณมี ${COUNT} ใบ",
"youHaveText": "คุณมีตั๋ว ${COUNT} ใบ"
},
+ "goldPass": {
+ "desc1InfTokensText": "โทเค็นที่ไม่มีที่สิ้นสุด",
+ "desc2NoAdsText": "ไม่มีโฆษณา",
+ "desc3ForeverText": "ตลอดไป.",
+ "goldPassText": "บัตรทองคำ"
+ },
"googleMultiplayerDiscontinuedText": "ขออภัย บริการผู้เล่นหลายคนของ Google ไม่มีให้บริการอีกต่อไป\nฉันกำลังดำเนินการเปลี่ยนให้เร็วที่สุด\nในระหว่างนี้ โปรดลองวิธีการเชื่อมต่ออื่น\n-เอริค",
"googlePlayPurchasesNotAvailableText": "ไม่สามารถซื้อด้วย Google Play ได้\nคุณอาจต้องอัปเดตแอปร้านค้าของคุณ",
"googlePlayServicesNotAvailableText": "บริการ Google Play ไม่พร้อมใช้งาน\nฟังก์ชันบางอย่างของแอปอาจถูกปิดใช้งาน",
@@ -811,10 +850,12 @@
"alwaysText": "ตลอด",
"fullScreenCmdText": "เต็มหน้าจอ (Cmd-F)",
"fullScreenCtrlText": "เต็มหน้าจอ (Ctrl-F)",
+ "fullScreenText": "แสดงเต็มจอ",
"gammaText": "ส่องสว่าง",
"highText": "สูง",
"higherText": "สูงกว่า",
"lowText": "ต่ำ",
+ "maxFPSText": "อัตราเฟรมสูงสุด",
"mediumText": "ปานกลาง",
"neverText": "ไม่เคย",
"resolutionText": "ความละเอียด",
@@ -875,6 +916,7 @@
"importText": "นำเข้า",
"importingText": "กำลังนำเข้า...",
"inGameClippedNameText": "ในเกมจะเป็น\n\"${NAME}\"",
+ "inboxText": "กล่องข้อความ",
"installDiskSpaceErrorText": "ข้อผิดพลาด: ไม่สามารถทำการติดตั้งให้เสร็จสิ้นได้\nคุณอาจไม่มีที่ว่างบนอุปกรณ์ของคุณ\nล้างพื้นที่บางส่วนแล้วลองอีกครั้ง",
"internal": {
"arrowsToExitListText": "กด ${LEFT} หรือ ${RIGHT} เพื่อออกจากรายการ",
@@ -929,12 +971,14 @@
"timeOutText": "(หมดเวลาใน ${TIME} วินาที)",
"touchScreenJoinWarningText": "คุณได้เข้าร่วมกับหน้าจอสัมผัส\nหากนี่เป็นข้อผิดพลาด ให้แตะ 'เมนู -> ออกจากเกม' ด้วย",
"touchScreenText": "หน้าจอสัมผัส",
+ "unableToCompleteTryAgainText": "ไม่สามารถดำเนินการได้ในขณะนี้\nโปรดลองอีกครั้ง",
"unableToResolveHostText": "ข้อผิดพลาด: ไม่สามารถแก้ไขโฮสต์",
"unavailableNoConnectionText": "ไม่สามารถใช้งานได้ในขณะนี้ (ไม่มีการเชื่อมต่ออินเทอร์เน็ตหรอ?)",
"vrOrientationResetCardboardText": "ใช้เพื่อรีเซ็ตการวางแนว VR\nในการเล่นเกม คุณจะต้องมีคอนโทรลเลอร์ภายนอก",
"vrOrientationResetText": "รีเซ็ตการวางแนว VR",
"willTimeOutText": "(จะหมดเวลาถ้าว่าง)"
},
+ "inventoryText": "คลังเก็บของ",
"jumpBoldText": "กระโดด",
"jumpText": "กระโดด",
"keepText": "เก็บไว้",
@@ -981,8 +1025,11 @@
"seasonEndsMinutesText": "จะสิ้นสุดซีซั่นในอีก ${NUMBER} นาที",
"seasonText": "ซีซั่น ${NUMBER}",
"tournamentLeagueText": "คุณต้องไปถึงลีก ${NAME} เพื่อเข้าร่วมการแข่งขันนี้",
- "trophyCountsResetText": "จำนวนถ้วยรางวัลจะรีเซ็ตในซีซั่นหน้า"
+ "trophyCountsResetText": "จำนวนถ้วยรางวัลจะรีเซ็ตในซีซั่นหน้า",
+ "upToDateBonusDescriptionText": "ผู้เล่นที่รันเกมนี้ด้วยเวอร์ชันล่าสุด\nจะได้รับโบนัส ${PERCENT}% ที่นี่",
+ "upToDateBonusText": "โบนัสอัพเดท"
},
+ "learnMoreText": "เรียนรู้เพิ่มเติม",
"levelBestScoresText": "คะแนนที่ดีที่สุดใน ${LEVEL}",
"levelBestTimesText": "เวลาที่ดีที่สุดใน ${LEVEL}",
"levelIsLockedText": "${LEVEL} ถูกล็อก",
@@ -1022,14 +1069,17 @@
"maxConnectionsText": "จำนวนผู้ที่เชื่อมต่อได้สูงสุด",
"maxPartySizeText": "จำนวนคนในปาร์ตี้สูงสุด",
"maxPlayersText": "ผู้เล่นที่เล่นได้สูงสุด",
+ "merchText": "สินค้า!",
"modeArcadeText": "โหมดอาเขต",
"modeClassicText": "โหมดคลาสสิก",
"modeDemoText": "โหมดสาธิต",
+ "moreSoonText": "จะมีเพิ่มเติมในเร็วๆ นี้...",
+ "mostDestroyedPlayerText": "ผู้เล่นที่ถูกขยี้มากที่สุด",
"mostValuablePlayerText": "ผู้เล่นที่ทำคะแนนมากที่สุด",
"mostViolatedPlayerText": "ผู้เล่นที่ฆ่าน้อยที่สุด",
"mostViolentPlayerText": "ผู้เล่นที่ฆ่ามากที่สุด",
"moveText": "เคลื่อนไหว",
- "multiKillText": "ฆ่า ${COUNT}!!!",
+ "multiKillText": "ฆ่า ${COUNT} คน!!!",
"multiPlayerCountText": "ผู้เล่น ${COUNT} คน",
"mustInviteFriendsText": "หมายเหตุ: คุณต้องเชิญเพื่อนใน\nแผง \"${GATHER}\" หรือไฟล์แนบ\nตัวควบคุมเพื่อเล่นหลายคน",
"nameBetrayedText": "${NAME} หักหลัง ${VICTIM}",
@@ -1040,7 +1090,8 @@
"nameSuicideKidFriendlyText": "${NAME} ตายจากอุบัติเหตุ",
"nameSuicideText": "${NAME} ฆ่าตัวตาย",
"nameText": "ชื่อ",
- "nativeText": "พื้นเมือง",
+ "nativeText": "ดั้งเดิม",
+ "newExclaimText": "ใหม่!",
"newPersonalBestText": "ใหม่ส่วนตัวดีที่สุด!",
"newTestBuildAvailableText": "มีการสร้างการทดสอบที่ใหม่กว่า! (${VERSION} บิลด์ ${BUILD})\nรับได้ที่ ${ADDRESS}",
"newText": "ใหม่",
@@ -1051,17 +1102,21 @@
"noContinuesText": "(ไม่มีต่อ)",
"noExternalStorageErrorText": "ไม่พบที่จัดเก็บข้อมูลภายนอกในอุปกรณ์นี้",
"noGameCircleText": "ข้อผิดพลาด: ไม่ได้ลงชื่อเข้าใช้ GameCircle",
+ "noMessagesText": "ไม่มีข้อความ",
+ "noPluginsInstalledText": "ไม่มีปลั๊กอินติดตั้งอยู่",
"noScoresYetText": "ไม่มีคะแนน",
+ "noServersFoundText": "ไม่พบเซิร์ฟเวอร์",
"noThanksText": "ไม่เป็นไรขอบคุณ",
"noTournamentsInTestBuildText": "คำเตือน: คะแนนการแข่งขันจากรุ่นทดสอบนี้จะถูกละเว้น",
"noValidMapsErrorText": "ไม่พบแผนที่ที่ถูกต้องสำหรับเกมนี้",
"notEnoughPlayersRemainingText": "ไม่มีผู้เล่นเหลือพอ กรุณาออกแล้วเริ่มเกมใหม่",
"notEnoughPlayersText": "คุณต้องการผู้เล่นอย่างน้อย ${COUNT} คนจึงจะเริ่มเกมได้!",
+ "notEnoughTicketsText": "มีตั๋วไม่พอ!",
"notNowText": "ไม่ใช่ตอนนี้",
- "notSignedInErrorText": "คุณต้องลงชื่อเข้าใช้เพื่อทำสิ่งนี้",
- "notSignedInGooglePlayErrorText": "คุณต้องลงชื่อเข้าใช้ Google Play เพื่อดำเนินการนี้",
- "notSignedInText": "ไม่ได้ลงชื่อเข้าใช้",
- "notUsingAccountText": "หมายเหตุ: ละเว้นบัญชี ${SERVICE}\nไปที่ 'บัญชี -> ลงชื่อเข้าใช้ด้วย ${SERVICE}' หากคุณต้องการ",
+ "notSignedInErrorText": "คุณต้องเข้าสู่ระบบเพื่อทำสิ่งนี้",
+ "notSignedInGooglePlayErrorText": "คุณต้องเข้าสู่ระบบ Google Play เพื่อดำเนินการต่อ",
+ "notSignedInText": "ไม่ได้เข้าสู่ระบบ",
+ "notUsingAccountText": "หมายเหตุ: ละเว้นบัญชี ${SERVICE}\nไปที่ 'บัญชี -> เข้าสู่ระบบด้วย ${SERVICE}' หากคุณต้องการ",
"nothingIsSelectedErrorText": "ไม่มีอะไรถูกเลือก!",
"numberText": "#${NUMBER}",
"offText": "ปิด",
@@ -1069,9 +1124,12 @@
"onText": "เปิด",
"oneMomentText": "แป๊บนึง...",
"onslaughtRespawnText": "${PLAYER} จะเกิดใหม่ในรอบที่ ${WAVE}",
+ "openMeText": "เปิดฉันสิ!",
+ "openNowText": "เปิดตอนนี้",
+ "openText": "เปิด",
"orText": "${A} หรือ ${B}",
"otherText": "อื่น...",
- "outOfText": "(#${RANK} จาก ${ALL})",
+ "outOfText": "ที่ (#${RANK} จาก ${ALL})",
"ownFlagAtYourBaseWarning": "ธงของคุณจะต้องอยู่ที่\nฐานจึงจะทำคะแนนได้!",
"packageModsEnabledErrorText": "การเล่นแบบใช้เน็ตไม่มสามรถใช้งานได้ในเมื่อ \"แพ็คเกจม็อดท้องถิ่น\" กำลังเปิดอยู่ (ดูได้ใน การตั้งค่า-> ขั้นสูง)",
"partyWindow": {
@@ -1120,7 +1178,11 @@
"pleaseWaitText": "โปรดรอ...",
"pluginClassLoadErrorText": "เกิดข้อผิดพลาดในการโหลดคลาสปลั๊กอิน '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "เกิดข้อผิดพลาดในการเริ่มต้นปลั๊กอิน '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "การตั้งค่าปลั๊กอิน",
+ "pluginsAutoEnableNewText": "เปิดใช้งานปลั๊กอินใหม่โดยอัตโนมัติ",
"pluginsDetectedText": "ตรวจพบปลั๊กอินใหม่ รีสตาร์ทเกมเพื่อเปิดใช้งาน หรือกำหนดค่าได้ในการตั้งค่า",
+ "pluginsDisableAllText": "ปิดใช้งานปลั๊กอินทั้งหมด",
+ "pluginsEnableAllText": "เปิดใช้งานปลั๊กอินทั้งหมด",
"pluginsRemovedText": "ไม่พบปลั๊กอิน ${NUM} รายการอีกต่อไป",
"pluginsText": "ปลั๊กอิน",
"practiceText": "ฝึกฝน",
@@ -1150,6 +1212,8 @@
"punchText": "ต่อย",
"purchaseForText": "ซื้อในราคา ${PRICE}",
"purchaseGameText": "ซื้อเกม",
+ "purchaseNeverAvailableText": "ขออภัย ไม่สามารถซื้อได้ในขณะนี้\nลองลงชื่อเข้าใช้บัญชีของคุณบนอุปกรณ์อื่นแล้วซื้ออีกครั้ง",
+ "purchaseNotAvailableText": "ไม่สามารถซื้อได้ในขณะนี้",
"purchasingText": "กำลังจัดซื้อ...",
"quitGameText": "ออกจาก ${APP_NAME} ไหม?",
"quittingIn5SecondsText": "ออกจากระบบใน 5 วินาที...",
@@ -1191,6 +1255,7 @@
"version_mismatch": "เวอร์ชั่นตรงกัน.\nตรวจสอบให้แน่ใจว่า BombSquad และ BombSquad Remote\nเป็นเวอร์ชันล่าสุดแล้วลองอีกครั้ง"
},
"removeInGameAdsText": "ปลดล็อก \"${PRO}\" ในร้านค้าเพื่อลบโฆษณาในเกม",
+ "removeInGameAdsTokenPurchaseText": "ข้อเสนอจำกัดเวลา: ซื้อแพ็คโทเค็นใดๆ เพื่อลบโฆษณาในเกม",
"renameText": "เปลี่ยนชื่อ",
"replayEndText": "สิ้นสุดการเล่นซ้ำ",
"replayNameDefaultText": "รีเพลย์เกมล่าสุด",
@@ -1211,7 +1276,9 @@
"revertText": "ย้อนกลับ",
"runText": "วิ่ง",
"saveText": "บันทึก",
- "scanScriptsErrorText": "ข้อผิดพลาดในการสแกนสคริปต์; ดูบันทึกสำหรับรายละเอียด",
+ "scanScriptsErrorText": "เกิดข้อผิดพลาดในการสแกนสคริปต์ ดูบันทึกสำหรับรายละเอียด",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} และ ${NUM} โมดูลอื่นๆ (s) จำเป็นต้องมีการอัพเดตสำหรับ api นี้ ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} จำเป็นต้องมีการอัพเดตสำหรับ api นี้ ${API}.",
"scoreChallengesText": "คะแนนความท้าทาย",
"scoreListUnavailableText": "ไม่มีรายการคะแนน",
"scoreText": "คะแนน",
@@ -1222,10 +1289,11 @@
},
"scoreWasText": "(เดิมคือ ${COUNT})",
"selectText": "เลือก",
+ "sendInfoDescriptionText": "ส่งข้อมูลบัญชีและสถานะแอปให้กับนักพัฒนา\nโปรดระบุชื่อหรือเหตุผลในการส่ง",
"seriesWinLine1PlayerText": "ชนะ",
"seriesWinLine1TeamText": "ชนะ",
"seriesWinLine1Text": "ชนะ",
- "seriesWinLine2Text": "ซีรีส์",
+ "seriesWinLine2Text": "ซีรีส์!",
"settingsWindow": {
"accountText": "บัญชี",
"advancedText": "ขั้นสูง",
@@ -1239,40 +1307,52 @@
"alwaysUseInternalKeyboardDescriptionText": "(แป้นพิมพ์บนหน้าจอที่เรียบง่ายและเป็นมิตรกับตัวควบคุมสำหรับการแก้ไขข้อความ)",
"alwaysUseInternalKeyboardText": "ใช้แป้นพิมพ์ภายในเสมอ",
"benchmarksText": "เกณฑ์มาตรฐานและการทดสอบความเครียด",
- "disableCameraGyroscopeMotionText": "ปิดใช้งานการเคลื่อนไหวของกล้อง Gyroscope",
- "disableCameraShakeText": "ปิดใช้งานการสั่นของกล้อง",
+ "devToolsText": "เครื่องมือสำหรับนักพัฒนา",
+ "disableCameraGyroscopeMotionText": "ปิดใช้งานการเคลื่อนไหวของไจโรสโคปของกล้อง",
+ "disableCameraShakeText": "ปิดการสั่นของกล้อง",
"disableThisNotice": "(คุณสามารถปิดการใช้งานประกาศนี้ในการตั้งค่าขั้นสูง)",
"enablePackageModsDescriptionText": "(การเปิดใช้งานที่ทำให้ใช้ม็อดได้หลากหลายมากขึ้นแต่จะปิดระบบการเล่นแบบใช้เน็ต)",
"enablePackageModsText": "เปิดแพ็คเกจม็อดท้องถิ่น",
"enterPromoCodeText": "ใส่รหัส",
"forTestingText": "หมายเหตุ: ค่าเหล่านี้ใช้สำหรับการทดสอบเท่านั้นและจะสูญหายไปเมื่อออกจากแอป",
- "helpTranslateText": "การแปลที่ไม่ใช่ภาษาอังกฤษของ ${APP_NAME} เป็นชุมชน\nสนับสนุนความพยายาม หากคุณต้องการมีส่วนร่วมหรือแก้ไข\nแปลตามลิงค์ด้านล่างครับ ขอบคุณล่วงหน้า!",
+ "helpTranslateText": "การแปลที่ไม่ใช่ภาษาอังกฤษของเกม ${APP_NAME} ได้รับการ\nสนับสนุนจากชุมชน หากคุณต้องการมีส่วนร่วมหรือแก้ไขการแปล \nโปรดคลิ๊กลิงก์ด้านล่าง ขอบคุณล่วงหน้า!",
+ "insecureConnectionsDescriptionText": "ไม่แนะนำแต่สามารถเล่นออนไลน์ได้\nจากประเทศหรือเครือข่ายที่ถูกจำกัด",
+ "insecureConnectionsText": "ใช้การเชื่อมต่อที่ไม่ปลอดภัย",
"kickIdlePlayersText": "เตะผู้เล่นที่ไม่ได้ใช้งาน",
"kidFriendlyModeText": "โหมดเป็นมิตรกับเด็ก (ลดความรุนแรง ฯลฯ)",
"languageText": "ภาษา",
"moddingGuideText": "คู่มือการม็อด",
+ "moddingToolsText": "การดัดแปลงเครื่องมือเกม",
"mustRestartText": "คุณต้องเริ่มเกมใหม่เพื่อให้สิ่งนี้มีผล",
"netTestingText": "การทดสอบเครือข่าย",
"resetText": "รีเซ็ต",
+ "sendInfoText": "ส่งข้อมูล",
"showBombTrajectoriesText": "แสดงวิถีลูกระเบิด",
+ "showDemosWhenIdleText": "แสดงการสาธิตเมื่อไม่ได้ใช้งาน",
+ "showDeprecatedLoginTypesText": "แสดงประเภทการเข้าสู่ระบบที่ไม่ใช้แล้ว",
+ "showDevConsoleButtonText": "แสดงปุ่มคอนโซลสำรับนักพัฒนา",
+ "showInGamePingText": "แสดงค่า ping ในเกม",
"showPlayerNamesText": "แสดงชื่อผู้เล่น",
"showUserModsText": "แสดงโฟลเดอร์ Mods",
"titleText": "ขั้นสูง",
- "translationEditorButtonText": "${APP_NAME} ผู้แก้ไขการแปล",
+ "translationEditorButtonText": "หน้าแก้ไขการแปลภาษาของ ${APP_NAME}",
"translationFetchErrorText": "สถานะการแปลไม่พร้อมใช้งาน",
"translationFetchingStatusText": "กำลังตรวจสอบสถานะการแปล...",
"translationInformMe": "แจ้งฉันเมื่อภาษาของฉันต้องการการอัปเดต",
- "translationNoUpdateNeededText": "ภาษาปัจจุบันเป็นปัจจุบัน วู้ฮู!",
- "translationUpdateNeededText": "** ภาษาปัจจุบันต้องการการอัปเดต !! **",
+ "translationNoUpdateNeededText": "ภาษาปัจจุบันทันสมัยแล้ว",
+ "translationUpdateNeededText": "** ภาษาปัจจุบันต้องการการอัปเดตตอนนี้!! **",
"vrTestingText": "การทดสอบ VR"
},
"shareText": "แบ่งปัน",
"sharingText": "การแบ่งปัน...",
"showText": "แสดง",
- "signInForPromoCodeText": "คุณต้องลงชื่อเข้าใช้บัญชีเพื่อให้รหัสมีผล",
+ "signInForPromoCodeText": "คุณต้องเข้าสู่ระบบเพื่อให้รหัสมีผล",
"signInWithGameCenterText": "ในการใช้บัญชี Game Center\nลงชื่อเข้าใช้ด้วยแอพ Game Center",
"singleGamePlaylistNameText": "แค่ ${GAME}",
"singlePlayerCountText": "ผู้เล่น 1 คน",
+ "sizeLargeText": "ใหญ่",
+ "sizeMediumText": "ปานกลาง",
+ "sizeSmallText": "เล็ก",
"soloNameFilterText": "เดี่ยว ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "การเลือกตัวละคร",
@@ -1345,7 +1425,9 @@
"storeText": "ร้านค้า",
"submitText": "ส่ง",
"submittingPromoCodeText": "กำลังส่งรหัส...",
- "teamNamesColorText": "Team Names/Colors...",
+ "successText": "ความสำเร็จ!",
+ "supportEmailText": "หากคุณประสบปัญหาใดๆ กับแอป โปรดส่งอีเมลไปที่ ${EMAIL}",
+ "teamNamesColorText": "ชื่อทีม/สี...",
"telnetAccessGrantedText": "เปิดใช้งานการเข้าถึง Telnet",
"telnetAccessText": "ตรวจพบการเข้าถึง Telnet; อนุญาต?",
"testBuildErrorText": "รุ่นทดสอบนี้ไม่ทำงานอีกต่อไป โปรดตรวจสอบเวอร์ชันใหม่",
@@ -1354,6 +1436,7 @@
"testBuildValidatedText": "ทดสอบบิลด์ที่ตรวจสอบแล้ว; สนุก!",
"thankYouText": "ขอบคุณสำหรับการสนับสนุนของคุณ! สนุกกับเกม!!",
"threeKillText": "ฆ่าสามครั้ง!!",
+ "ticketsDescriptionText": "สามารถใช้ตั๋วเพื่อปลดล็อคตัวละคร,\nแผนที่, มินิเกมและอื่นๆ ได้ในร้านค้า\n\nสามารถพบตั๋วได้ในหีบที่ได้รับจาก\nแคมเปญ, ทัวร์นาเมนต์และความสำเร็จ",
"timeBonusText": "โบนัสเวลา",
"timeElapsedText": "เวลาที่ผ่านไป",
"timeExpiredText": "เวลาหมด",
@@ -1364,10 +1447,23 @@
"tipText": "เคล็ดลับ",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "รับโทเค็น",
+ "notEnoughTokensText": "โทเค็นไม่เพียงพอ!",
+ "numTokensText": "${COUNT} โทเค็น",
+ "shinyNewCurrencyText": "สกุลเงินใหม่อันแวววาวของ BombSquad",
+ "tokenPack1Text": "แพ็คโทเค็นขนาดเล็ก!",
+ "tokenPack2Text": "แพ็คโทเค็นขนาดกลาง!",
+ "tokenPack3Text": "แพ็คโทเค็นขนาดใหญ่",
+ "tokenPack4Text": "แพ็คโทเค็นจัมโบ้!!",
+ "tokensDescriptionText": "โทเค็นใช้เพื่อเร่งความเร็วในการปลดล็อกหีบ\nและสำหรับคุณสมบัติของเกมและบัญชีอื่นๆ\n\nคุณสามารถรับโทเค็นในเกมหรือซื้อเป็นแพ็ค \nหรือซื้อ Gold Pass เพื่อรับรางวัลไม่จำกัด\nและไม่ต้องพบเจอมันอีกต่อไป",
+ "youHaveGoldPassText": "คุณมี บัตรทองคำ\nการซื้อโทเค็นทั้งหมดฟรี\nสนุกได้เลย!"
+ },
"topFriendsText": "เพื่อนที่ดีที่สุด",
"tournamentCheckingStateText": "การตรวจสอบสถานะการแข่งขัน โปรดรอ...",
"tournamentEndedText": "การแข่งขันนี้สิ้นสุดลงแล้ว ใหม่จะเริ่มเร็ว ๆ นี้",
"tournamentEntryText": "รายการแข่งขัน",
+ "tournamentFinalStandingsText": "ตารางสรุปผลคะแนน",
"tournamentResultsRecentText": "ผลการแข่งขันล่าสุด",
"tournamentStandingsText": "อันดับการแข่งขัน",
"tournamentText": "การแข่งขัน",
@@ -1423,6 +1519,18 @@
"Uber Onslaught": "Uber Onslaught",
"Uber Runaround": "Uber Runaround"
},
+ "displayItemNames": {
+ "${C} Tickets": "ตั๋ว ${C} ใบ",
+ "${C} Tokens": "โทเคน ${C} เหรียญ",
+ "Chest": "หีบทั่วไป",
+ "L1 Chest": "หีบระดับ 1",
+ "L2 Chest": "หีบระดับ 2",
+ "L3 Chest": "หีบระดับ 3",
+ "L4 Chest": "หีบระดับ 4",
+ "L5 Chest": "หีบระดับ 5",
+ "L6 Chest": "หีบระดับ 6",
+ "Unknown Chest": "หีบที่ไม่รู้จัก"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "เป็นผู้ที่ได้รับเลือกเป็นระยะเวลาหนึ่งเพื่อชนะ\nฆ่าคนที่ถูกเลือกให้เป็น",
"Bomb as many targets as you can.": "วางระเบิดเป้าหมายให้ได้มากที่สุด",
@@ -1525,7 +1633,9 @@
"Italian": "ภาษาอิตาลี",
"Japanese": "ภาษาญี่ปุ่น",
"Korean": "ภาษาเกาหลี",
+ "Malay": "ภาษามาเลเซีย",
"Persian": "ภาษาเปอร์เซีย",
+ "PirateSpeak": "โจรสลัดพูดกับคุณ",
"Polish": "ภาษาโปแลนด์",
"Portuguese": "ภาษาโปรตุเกส",
"Romanian": "ภาษาโรมาเนีย",
@@ -1556,7 +1666,7 @@
"Football Stadium": "สนามฟุตบอล",
"Happy Thoughts": "ความคิดที่เป็นสุข",
"Hockey Stadium": "สนามฮอกกี้",
- "Lake Frigid": "ทะเลสาบฟริจิด",
+ "Lake Frigid": "ทะเลสาบเยือกแข็ง",
"Monkey Face": "หน้าลิง",
"Rampage": "อาละวาด",
"Roundabout": "วงเวียน",
@@ -1597,6 +1707,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "ตรวจพบการโกง; คะแนนและรางวัลถูกระงับเป็นเวลา ${COUNT} วัน",
"Could not establish a secure connection.": "ไม่สามารถสร้างการเชื่อมต่อที่ปลอดภัย",
"Daily maximum reached.": "ถึงสูงสุดรายวันแล้ว",
+ "Daily sign-in reward": "รางวัลการลงชื่อเข้าใช้รายวัน",
"Entering tournament...": "เข้าสู่การแข่งขัน...",
"Invalid code.": "รหัสไม่ถูกต้อง",
"Invalid payment; purchase canceled.": "การชำระเงินไม่ถูกต้อง การซื้อถูกยกเลิก",
@@ -1606,11 +1717,14 @@
"Item unlocked!": "ปลดล็อคไอเทมแล้ว!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "การเชื่อมโยงถูกปฏิเสธ ${ACCOUNT} ประกอบด้วย\nข้อมูลสำคัญที่จะสูญหายทั้งหมด\nคุณสามารถเชื่อมโยงในลำดับตรงกันข้ามหากคุณต้องการ\n(และสูญเสียข้อมูลของบัญชีนี้แทน)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "เชื่อมโยงบัญชี ${ACCOUNT} กับบัญชีนี้หรือไม่\nข้อมูลที่มีอยู่ทั้งหมดใน ${ACCOUNT} จะหายไป\nไม่สามารถยกเลิกได้ คุณแน่ใจไหม?",
+ "Longer streaks lead to better rewards.": "ยิ่งรับรางวัลต่อเนื่องนานเท่าไรก็จะยิ่งได้รับรางวัลที่ดียิ่งขึ้นเท่านั้น",
"Max number of playlists reached.": "ถึงจำนวนเพลย์ลิสต์สูงสุดแล้ว",
"Max number of profiles reached.": "ถึงจำนวนโปรไฟล์สูงสุดแล้ว",
"Maximum friend code rewards reached.": "รางวัลรหัสเพื่อนถึงขีดจำกัดแล้ว",
"Message is too long.": "ข้อความยาวเกินไป",
+ "New tournament result!": "ผลการแข่งขันใหม่!",
"No servers are available. Please try again soon.": "ไม่มีเซิร์ฟเวอร์ที่พร้อมใช้งาน โปรดลองอีกครั้งในเร็วๆ นี้",
+ "No slots available. Free a slot and try again.": "ไม่มีช่องว่าง ทำให้มีช่องเก็บหีบว่างแล้วลองใหม่อีกครั้ง",
"Profile \"${NAME}\" upgraded successfully.": "อัปเกรดโปรไฟล์ \"${NAME}\" สำเร็จแล้ว",
"Profile could not be upgraded.": "ไม่สามารถอัพเกรดโปรไฟล์ได้",
"Purchase successful!": "ซื้อสำเร็จ!",
@@ -1620,7 +1734,9 @@
"Sorry, this code has already been used.": "ขออภัย รหัสนี้ถูกใช้ไปแล้ว",
"Sorry, this code has expired.": "ขออภัย รหัสนี้หมดอายุแล้ว",
"Sorry, this code only works for new accounts.": "ขออภัย รหัสนี้ใช้ได้กับบัญชีใหม่เท่านั้น",
+ "Sorry, this has expired.": "ขออภัย หมดอายุแล้ว",
"Still searching for nearby servers; please try again soon.": "ยังคงค้นหาเซิร์ฟเวอร์ใกล้เคียง โปรดลองอีกครั้งในเร็วๆ นี้",
+ "Streak: ${NUM} days": "ต่อเนื่อง: ${NUM} วัน",
"Temporarily unavailable; please try again later.": "ปิดให้บริการชั่วคราว; โปรดลองอีกครั้งในภายหลัง.",
"The tournament ended before you finished.": "การแข่งขันสิ้นสุดลงก่อนที่คุณจะเสร็จสิ้น",
"This account cannot be unlinked for ${NUM} days.": "บัญชีนี้ไม่สามารถยกเลิกการเชื่อมโยงได้เป็นเวลา ${NUM} วัน",
@@ -1631,19 +1747,27 @@
"Tournaments require ${VERSION} or newer": "ทัวร์นาเมนต์ต้องใช้ ${VERSION} หรือใหม่กว่า",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "ยกเลิกการเชื่อมโยง ${ACCOUNT} จากบัญชีนี้หรือไม่\nข้อมูลทั้งหมดใน ${ACCOUNT} จะถูกรีเซ็ต\n(ยกเว้นความสำเร็จในบางกรณี)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "คำเตือน: มีการร้องเรียนเกี่ยวกับการแฮ็กบัญชีของคุณ\nบัญชีที่พบว่ามีการแฮ็คจะถูกแบน กรุณาเล่นอย่างยุติธรรม",
+ "Wait reduced!": "ลดเวลารอแล้ว!",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "คุณต้องการเชื่อมโยงบัญชีอุปกรณ์ของคุณกับบัญชีนี้หรือไม่?\n\nบัญชีอุปกรณ์ของคุณคือ ${ACCOUNT1}\nบัญชีนี้คือ ${ACCOUNT2}\n\nนี้จะช่วยให้คุณรักษาความคืบหน้าที่มีอยู่ของคุณ\nคำเตือน: สิ่งนี้ไม่สามารถยกเลิกได้!",
"You already own this!": "คุณเป็นเจ้าของสิ่งนี้แล้ว!",
"You can join in ${COUNT} seconds.": "คุณสามารถเข้าร่วมได้ภายในอีก ${COUNT} วินาที",
"You don't have enough tickets for this!": "คุณมีตั๋วไม่เพียงพอสำหรับสิ่งนี้!",
"You don't own that.": "คุณไม่ได้เป็นเจ้าของสิ่งนั้น",
"You got ${COUNT} tickets!": "คุณได้รับตั๋ว ${COUNT} ใบ!",
+ "You got ${COUNT} tokens!": "คุณได้รับโทเคน ${COUNT} เหรียญ!",
"You got a ${ITEM}!": "คุณได้รับ ${ITEM}!",
+ "You got a chest!": "คุณได้รับหีบ!",
+ "You got an achievement reward!": "คุณได้รับรางวัลความสำเร็จ!",
"You have been promoted to a new league; congratulations!": "คุณได้รับการเลื่อนตำแหน่งเป็นลีกใหม่ ยินดีด้วย!",
+ "You lost a chest! (All your chest slots were full)": "คุณเสียหีบไป! (ช่องเก็บหีบของคุณเต็มหมดแล้ว)",
+ "You must update the app to view this.": "คุณต้องอัปเดตแอปเพื่อดูสิ่งนี้",
"You must update to a newer version of the app to do this.": "คุณต้องอัปเดตแอปเป็นเวอร์ชันใหม่กว่าจึงจะทำได้",
"You must update to the newest version of the game to do this.": "คุณต้องอัปเดตเป็นเวอร์ชันใหม่ล่าสุดของเกมจึงจะสามารถทำได้",
"You must wait a few seconds before entering a new code.": "คุณต้องรอสักครู่ก่อนที่จะป้อนรหัสใหม่",
+ "You placed #${RANK} in a tournament!": "คุณอยู่อันดับที่ #${RANK} ในการแข่งขัน!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "คุณติดอันดับ #${RANK} ในทัวร์นาเมนต์ที่แล้ว ขอบคุณสำหรับการเล่น!",
- "Your account was rejected. Are you signed in?": "บัญชีของคุณถูกปฏิเสธ คุณลงชื่อเข้าใช้หรือไม่",
+ "Your account was rejected. Are you signed in?": "บัญชีของคุณถูกปฏิเสธ คุณได้เข้าสู่ระบบหรือไม่?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "การดูโฆษณาของคุณไม่ได้ถูกบันทึก ตัวเลือกโฆษณาจะถูกจำกัดชั่วคราว",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "สำเนาเกมของคุณได้รับการแก้ไขแล้ว\nโปรดยกเลิกการเปลี่ยนแปลงและลองอีกครั้ง",
"Your friend code was used by ${ACCOUNT}": "รหัสเพื่อนของคุณถูกใช้โดย ${ACCOUNT}"
},
@@ -1792,11 +1916,13 @@
"toSkipPressAnythingText": "(แตะหรือกดอะไรก็ได้เพื่อข้ามบทแนะนำ)"
},
"twoKillText": "ดับเบิ้ลคิล!",
+ "uiScaleText": "สเกล UI",
"unavailableText": "ไม่พร้อมใช้งาน",
"unconfiguredControllerDetectedText": "ตรวจพบคอนโทรลเลอร์ที่ไม่ได้กำหนดค่า:",
"unlockThisInTheStoreText": "สิ่งนี้จะต้องปลดล็อคในร้านค้า",
"unlockThisProfilesText": "ในการสร้างมากกว่า ${NUM} โปรไฟล์ คุณต้อง:",
"unlockThisText": "เพื่อปลดล็อกสิ่งนี้ คุณต้อง:",
+ "unsupportedControllerText": "ขออภัย ไม่รองรับตัวควบคุม \"${NAME}\"",
"unsupportedHardwareText": "ขออภัย ฮาร์ดแวร์นี้ไม่ได้รับการสนับสนุนโดยบิวด์ของเกมนี้",
"upFirstText": "ขึ้นก่อน:",
"upNextText": "ต่อไปในเกม ${COUNT}:",
@@ -1804,10 +1930,14 @@
"upgradeText": "อัพเกรด",
"upgradeToPlayText": "ปลดล็อก \"${PRO}\" ในร้านค้าในเกมเพื่อเล่นเกมนี้",
"useDefaultText": "ใช้ค่าเริ่มต้น",
+ "userSystemScriptsCreateText": "สร้างสคริปต์ระบบผู้ใช้",
+ "userSystemScriptsDeleteText": "ลบสคริปต์ระบบผู้ใช้",
"usesExternalControllerText": "เกมนี้ใช้คอนโทรลเลอร์ภายนอกสำหรับการป้อนข้อมูล",
"usingItunesText": "การใช้แอพ Music สำหรับซาวด์แทร็ก...",
"v2AccountLinkingInfoText": "หากต้องการเชื่อมโยงบัญชี V2 ให้ใช้ปุ่ม 'จัดการบัญชี'",
+ "v2AccountRequiredText": "จำเป็นต้องมีบัญชี V2 อัปเกรดบัญชีของคุณแล้วลองอีกครั้ง",
"validatingTestBuildText": "กำลังตรวจสอบการสร้างการทดสอบ...",
+ "viaText": "จาก",
"victoryText": "ชัยชนะ!",
"voteDelayText": "คุณไม่สามารถเริ่มโหวตได้อีกเป็นเวลา ${NUMBER} วินาที",
"voteInProgressText": "กำลังดำเนินการโหวทอยู่แล้ว",
@@ -1872,5 +2002,6 @@
},
"yesAllowText": "ใช่อนุญาต!",
"yourBestScoresText": "คะแนนที่ดีที่สุดของคุณ",
- "yourBestTimesText": "เวลาที่ดีที่สุดของคุณ"
+ "yourBestTimesText": "เวลาที่ดีที่สุดของคุณ",
+ "yourPrizeText": "รางวัลของคุณ:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/turkish.json b/dist/ba_data/data/languages/turkish.json
index 3b8de283..443481ae 100644
--- a/dist/ba_data/data/languages/turkish.json
+++ b/dist/ba_data/data/languages/turkish.json
@@ -7,7 +7,9 @@
"campaignProgressText": "Mücadele İlerlemesi [Zor]: ${PROGRESS}",
"changeOncePerSeason": "Bunu sezon başına sadece bir kere değiştirebilirsin",
"changeOncePerSeasonError": "Bunu tekrar değiştirmek için bir sonraki sezona kadar beklemelisin (${NUM}gün)",
+ "createAnAccountText": "Hesap Oluştur",
"customName": "Özel isim",
+ "deleteAccountText": "Hesabı Sil",
"googlePlayGamesAccountSwitchText": "Eğer farklı bir google hesabı kullanmak istiyorsanız,\nGoogle Play Oyunlar uygulamasını kullabilirsiniz.",
"linkAccountsEnterCodeText": "Kod Gir",
"linkAccountsGenerateCodeText": "Kod Oluştur",
@@ -25,14 +27,16 @@
"setAccountNameDesc": "Hesabın için gösterilecek bir isim seç. \nBağladığın hesaplardan birinin adını kullanabilir\nya da yeni bir tane oluşturabilirsin.",
"signInInfoText": "Bilet toplamak Çevrimiçi olmak ve ilerlemeyi \ndiğer cihazlarla paylaşmak için Giriş yap.",
"signInText": "Giriş Yap",
+ "signInWithAnEmailAddressText": "Bir e-posta adresiyle giriş yap",
"signInWithDeviceInfoText": "Otomatik bir hesap sadece bu cihaz için kullanılabilir",
"signInWithDeviceText": "Cihaz hesabı ile Giriş yap",
"signInWithGameCircleText": "Game Circle ile Giriş yap",
"signInWithGooglePlayText": "Google Play ile Giriş yap",
"signInWithTestAccountInfoText": "(miras hesabı;bu cihaz hesaplarını ileride de kullan)",
"signInWithTestAccountText": "Test hesabı ile Giriş yap",
+ "signInWithText": "${SERVICE} ile giriş yap.",
"signInWithV2InfoText": "(bütün platformlarda çalışan bir hesap)",
- "signInWithV2Text": "BombSquad hesabıyla giriş yap",
+ "signInWithV2Text": "${APP_NAME} hesabıyla giriş yap",
"signOutText": "Çıkış Yap",
"signingInText": "Giriş yapılıyor...",
"signingOutText": "Çıkış yapılıyor...",
@@ -334,9 +338,14 @@
"getMoreGamesText": "Daha Çok Oyun...",
"titleText": "Oyun Ekle"
},
+ "addToFavoritesText": "Favorilere ekle",
+ "addedToFavoritesText": "'${NAME}' Favorilere eklendi.",
+ "allText": "Hepsi",
"allowText": "Kabul Et",
"alreadySignedInText": "Başka bir cihazda hesabına giriş yapılmış;\nlütfen hesapları değiştir ya da diğer cihazlardaki\noyunu kapat ve tekrar dene.",
"apiVersionErrorText": "Modul yüklenemiyor ${NAME}; hedef api-versiyon ${VERSION_USED}; ihtiyacımız olan ${VERSION_REQUIRED}.",
+ "applyText": "Kaydet",
+ "areYouSureText": "Emin misin?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(\"Oto\" yalnızca kulaklıklar takılı iken etkinleşir)",
"headRelativeVRAudioText": "Head-Relative VR Ses",
@@ -359,14 +368,24 @@
"boostText": "Öne Geç",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} Uygulamayı kendisine yapılandır",
"buttonText": "buton",
- "canWeDebugText": "Oyun otomatik olarak hataları, çökmeleri ve basit \nkullanım istatistiklerini geliştiriciye gondersin mi?\n\nBu veri içeriği kişisel bilgilerinizi kullanmaz\noyunun daha iyi çalışmasına yardımcı olur.",
+ "canWeDebugText": "${APP_NAME} hataları, çökmeleri ve basit kullanım \nbilgilerini otomatik olarak geliştiriciye göndersin mi?\n\nBu veri hiçbir kişisel bilgi içermez ve oyunun daha \nakıcı ve hatasız çalısmasına yardımcı olur.",
"cancelText": "İptal",
"cantConfigureDeviceText": "Üzgünüz, ${DEVICE} ayarlanabilir değil.",
"challengeEndedText": "Bu mücadele sona erdi.",
"chatMuteText": "Konuşmayı sustur",
"chatMutedText": "Sohbet Susturuldu",
"chatUnMuteText": "Konuşmayı aç",
+ "chests": {
+ "prizeOddsText": "Olası Ödüller",
+ "reduceWaitText": "Beklemeyi Hızlandır",
+ "slotDescriptionText": "Bu yuvaya sandık koyulabilir.\n\nSandıklar mücadele bölümleri oynayarak, \nturnuvalara katılarak ve başarılar elde \nederek kazanılır.",
+ "slotText": "Sandık Yuvası ${NUM}",
+ "slotsFullWarningText": "UYARI: Bütün sandık yuvaları dolu.\nBu oyundan kazandığın sandıklar kaybolacak.",
+ "unlocksInText": "Açılacak"
+ },
"choosingPlayerText": "",
+ "claimText": "Topla",
+ "codesExplainText": "Kodlar geliştirici tarafından sağlanır\nhesap sorunlarını teşhis edin ve düzeltin.",
"completeThisLevelToProceedText": "İlerlemek için bu \nseviyeyi tamamlamalısınız!",
"completionBonusText": "Tamamlama Bonusu",
"configControllersWindow": {
@@ -447,6 +466,7 @@
"swipeText": "sürme",
"titleText": "Dokunmatikleri Yapılandır"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} Sistem ayarları uygulamasında yapılandırılabilir.",
"configureItNowText": "Şimdi yapılandır?",
"configureText": "Yapılandır",
"connectMobileDevicesWindow": {
@@ -498,7 +518,7 @@
"totalText": "toplam",
"tournamentInfoText": "Ligindeki diğer oyuncular arasında\nen yüksek skoru yap.\n\nÖdüller En fazla skor yapan oyuncular\narasında turnuva süresi bittiğinde verilir.",
"welcome1Text": "${LEAGUE} hoş geldiniz. Lig sıralamanı turnuvalarda\nyıldız derecesi kazanarak, başarıları tamamlayarak\nve kupalar kazanarak geliştirebilirsin.",
- "welcome2Text": "Ayrıca benzer aktivitelerden biletler kazanabilirsin.\nBiletler yeni karakterler, haritalar, mini-oyunlar\nve turnuvalara katılmak için kulanılabilir.",
+ "welcome2Text": "Ayrıca benzer aktivitelerden bilet kazanabilirsin.\nBiletler yeni karakterler, haritalar, mini-oyunlar\nve turnuvalara katılmak için kulanılabilir.",
"yourPowerRankingText": "Oyuncu Sıralaman:"
},
"copyConfirmText": "Panoya kopyalandı.",
@@ -549,6 +569,7 @@
"demoText": "Tanıtım",
"denyText": "Reddet",
"deprecatedText": "Kullanımdan kaldırıldı",
+ "descriptionText": "Açıklama",
"desktopResText": "PC Çözünürlüğü",
"deviceAccountUpgradeText": "Uyarı:\n(${NAME}) isimli bir cihaz hesabıyla giriş yaptın.\nCihaz hesapları gelecek güncellemelerde kaldırılacak.\nİlerlemeni tutmak istiyorsan V2 hesabına geçiş yap.",
"difficultyEasyText": "Kolay",
@@ -559,6 +580,10 @@
"disableRemoteAppConnectionsText": "Remote-App Bağlantılarını Engelle",
"disableXInputDescriptionText": "4 kontrolcüden fazla kullanılabilir fakat iyi çalışmayabilir.",
"disableXInputText": "XInput etkisizleştir",
+ "disabledText": "Kullanılmıyor",
+ "discardText": "İptal",
+ "discordFriendsText": "Yeni oyuncular mı arıyorsun?\nDiscord sunucumuza katılarak yeni arkadaşlar edinebilirsin!",
+ "discordJoinText": "Discord sunucumuza katıl",
"doneText": "Tamam",
"drawText": "Beraberlik",
"duplicateText": "Kopyala",
@@ -591,6 +616,7 @@
"localProfileText": "(yerel profil)",
"nameDescriptionText": "Oyuncu Adı",
"nameText": "Ad",
+ "profileAlreadyExistsText": "Bu ad ile bir profil zaten var.",
"randomText": "rastgele",
"titleEditText": "Profil Düzenle",
"titleNewText": "Yeni Profil",
@@ -626,6 +652,7 @@
"useMusicFolderText": "Müzik Dosyaları Klasörü"
},
"editText": "Düzenle",
+ "enabledText": "Onaylanmış",
"endText": "Bitir",
"enjoyText": "Keyfini Çıkar!",
"epicDescriptionFilterText": "${DESCRIPTION} epik ağırçekim.",
@@ -637,6 +664,8 @@
"errorText": "Hata",
"errorUnknownText": "bilinmeyen hata",
"exitGameText": "Çık ${APP_NAME}?",
+ "expiredAgoText": "${T} önce süresi doldu",
+ "expiresInText": "${T} sonra süresi dolacak",
"exportSuccessText": "'${NAME}' Dışa Aktarıldı.",
"externalStorageText": "Harici Depolama",
"failText": "Başarısızlık",
@@ -671,6 +700,8 @@
"duplicateText": "ÇalmaListesi\nKopyala",
"editText": "ÇalmaListesi\nDüzenle",
"newText": "ÇalmaListesi\nYarat",
+ "pointsToWinText": "Kazanmak İçin Gereken Puan",
+ "seriesLengthText": "Seri Uzunluğu",
"showTutorialText": "Öğreticiyi Göster",
"shuffleGameOrderText": "Oyun Sırasını Karıştır",
"titleText": "Özel ${TYPE} ÇalmaListeleri"
@@ -696,6 +727,7 @@
"copyCodeConfirmText": "Kod panoya kopyalandı",
"copyCodeText": "Kodu kopyala",
"dedicatedServerInfoText": "En iyi sonuçlar için ozel sunucu ayarlayın. Bakınız; bombsquadgame.com/server",
+ "descriptionShortText": "Lobi penceresini kullanarak bir parti oluştur.",
"disconnectClientsText": "Bu, partindeki ${COUNT} oyuncunun bağlantısını\nkesecek. Emin misin ?",
"earnTicketsForRecommendingAmountText": "Eğer arkadaşların oyunu denerler ise ${COUNT} bilet alacak\n(Sen ise bunu her yapan için ${YOU_COUNT} tane.)",
"earnTicketsForRecommendingText": "Bedave bilet için\nOyunu paylaş...",
@@ -708,10 +740,10 @@
"friendHasSentPromoCodeText": "${NAME} tarafından ${COUNT} ${APP_NAME} bileti",
"friendPromoCodeAwardText": "Kullanıldığı her zaman ${COUNT} bilet alacaksın.",
"friendPromoCodeExpireText": "Bu kodun ${EXPIRE_HOURS} saat içinde süresi dolacak ve sadece yeni oyuncularda çalışır.",
- "friendPromoCodeInstructionsText": "Kullanmak için ${APP_NAME} uygulamasını açın ve \"Ayarlar->Gelişmiş->Promo Kodu\"\nna gidin. Tüm platformlar arası İndirme bağlantıları için bombsquadgame.com'a gidin.",
+ "friendPromoCodeInstructionsText": "Kullanmak için ${APP_NAME} uygulamasını açın ve \"Ayarlar->Gelişmiş->Kodu gir\" \ngidin. Tüm platformlar arası İndirme bağlantıları için bombsquadgame.com'a gidin.",
"friendPromoCodeRedeemLongText": "Maksimum ${MAX_USES} kişi olmak üzere ${COUNT} bedava bilet alabilirsin.",
"friendPromoCodeRedeemShortText": "Oyun içi ${COUNT} bilet alabilirsin",
- "friendPromoCodeWhereToEnterText": "(Ayarlar>Gelişmiş>Promo kodu gir içinde)",
+ "friendPromoCodeWhereToEnterText": "(\"Ayarlar>Gelişmiş>Kodu gir\" içinde)",
"getFriendInviteCodeText": "Arkadaş Davet Kodu Al",
"googlePlayDescriptionText": "Partine Google Play oyuncularını davet et:",
"googlePlayInviteText": "Davet",
@@ -743,6 +775,7 @@
"manualYourLocalAddressText": "Yerel adresiniz:",
"nearbyText": "Yakında",
"noConnectionText": "",
+ "noPartiesAddedText": "Parti Eklenmedi",
"otherVersionsText": "(diğer sürümler)",
"partyCodeText": "Parti kodu",
"partyInviteAcceptText": "Kabul Et",
@@ -799,13 +832,19 @@
"ticketsFromASponsorText": "${COUNT} Bilet için\nbir reklam izle",
"ticketsText": "${COUNT} Bilet",
"titleText": "Bilet Al",
- "unavailableLinkAccountText": "Üzgünüz, Satın almalar bu patformda kullanılamaz.\nBu geçici oldugu gibi, bu hesabını diğer platformlardaki\nhesablara bağlayabilir oradan satın alma işlemi yapbilirsin.",
+ "unavailableLinkAccountText": "Üzgünüz, Satın almalar bu patformda kullanılamaz.\nBu geçici oldugu gibi, bu hesabını diğer platformlardaki\nhesaplara bağlayabilir oradan satın alma işlemi yapbilirsin.",
"unavailableTemporarilyText": "Bu şu anda müsait değil; lütfen daha sonra tekrar deneyin.",
"unavailableText": "Üzgünüz, Bu mümkün değil.",
"versionTooOldText": "Üzgünüz, Oyunun bu sürümü çok eski; lütfen yeni bir sürüme güncelleyin.",
"youHaveShortText": "${COUNT} Biletin var",
"youHaveText": "${COUNT} biletin var"
},
+ "goldPass": {
+ "desc1InfTokensText": "Sınırsız jeton.",
+ "desc2NoAdsText": "Reklamları kaldır.",
+ "desc3ForeverText": "Ebediyen.",
+ "goldPassText": "Gold Pass"
+ },
"googleMultiplayerDiscontinuedText": "Üzgünüz, Google'ın çok oyunculu servisi şu anda çalışmıyor.\nBir yer değişimi için olabildiğince hızlı çalışıyorum.\nO zamana kadar, lütfen başka bir bağlantı yöntemi deneyin.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Google Play satın alma işlemleri mevcut değildir.\nMağaza uygulamanızı güncellemeniz gerekebilir.",
"googlePlayServicesNotAvailableText": "Google Play Hizmetleri kullanılamıyor.\nBazı uygulama işlevleri devre dışı bırakılabilir.",
@@ -814,10 +853,12 @@
"alwaysText": "Her Zaman",
"fullScreenCmdText": "Tam Ekran (Cmd-F)",
"fullScreenCtrlText": "Tam Ekran (Ctrl-F)",
+ "fullScreenText": "Tam Ekran",
"gammaText": "Gama",
"highText": "Yüksek",
"higherText": "Çok Yüksek",
"lowText": "Düşük",
+ "maxFPSText": "Maksimum FPS",
"mediumText": "Orta",
"neverText": "Asla",
"resolutionText": "Çözünürlük",
@@ -878,6 +919,7 @@
"importText": "İçe Aktar",
"importingText": "İçe Aktarılıyor...",
"inGameClippedNameText": "Şöyle görünecek\n\"${NAME}\"",
+ "inboxText": "Gelen kutusu",
"installDiskSpaceErrorText": "HATA: Kurulum tamamlanamıyor.\nCihazınızda boş alan kalmamış olabilir.\nBiraz alan açın ve yeniden deneyin.",
"internal": {
"arrowsToExitListText": "Listeden çıkmak için ${LEFT} ya da ${RIGHT} basın.",
@@ -932,12 +974,14 @@
"timeOutText": "(${TIME} saniye içinde süre dolacak)",
"touchScreenJoinWarningText": "DokunmatikEkran ile katıldın.\nEğer yanlışlıkla olduysa 'Menü->Oyundan Ayrıl' ile düzelt.",
"touchScreenText": "DokunmatikEkran",
+ "unableToCompleteTryAgainText": "Şu anda bunu gerçekleştirmek mümkün değil.\nLütfen tekrar deneyin.",
"unableToResolveHostText": "Hata: kurucu çözümlenemiyor.",
"unavailableNoConnectionText": "Bu şu an kullanılamaz (internet bağlantısı yok?)",
"vrOrientationResetCardboardText": "Bunu kullanmak için VR oryantasyonunu sıfırla.\nOyunu oynamak için harici kontrolcüye ihtiyacın olacak.",
"vrOrientationResetText": "VR oryantasyonunu sıfırla.",
"willTimeOutText": "(boşta durursa süre dolacak)"
},
+ "inventoryText": "Envanter",
"jumpBoldText": "ZIPLA",
"jumpText": "Zıpla",
"keepText": "Koru",
@@ -984,8 +1028,11 @@
"seasonEndsMinutesText": "Sezon ${NUMBER} dakika içinde sonlanacak",
"seasonText": "Sezon ${NUMBER}",
"tournamentLeagueText": "Bu tunuvaya katılmak için ${NAME} olmalısın.",
- "trophyCountsResetText": "Kupalar bir sonraki sezon sıfırlanacak."
+ "trophyCountsResetText": "Kupalar bir sonraki sezon sıfırlanacak.",
+ "upToDateBonusDescriptionText": "En son sürümü çalıştıran oyuncular\n${PERCENT}% kadar bonus ödül alacak.",
+ "upToDateBonusText": "Son-Sürüm Bonusu"
},
+ "learnMoreText": "Fazlasını öğren",
"levelBestScoresText": "${LEVEL} En-İyi Skorlar",
"levelBestTimesText": "${LEVEL} En-İyi Süreler",
"levelIsLockedText": "${LEVEL} kilitli.",
@@ -1029,6 +1076,8 @@
"modeArcadeText": "Arcade Modu",
"modeClassicText": "Klasik Mod",
"modeDemoText": "Demo Modu",
+ "moreSoonText": "Daha fazlası yakında...",
+ "mostDestroyedPlayerText": "En Çok Öldürülen Oyuncu",
"mostValuablePlayerText": "En Değerli Oyuncu",
"mostViolatedPlayerText": "En Çok Saldırılan Oyuncu",
"mostViolentPlayerText": "En Saldırgan Oyuncu",
@@ -1045,6 +1094,7 @@
"nameSuicideText": "${NAME} intihar etti.",
"nameText": "İsim",
"nativeText": "Gerçek",
+ "newExclaimText": "Yeni!",
"newPersonalBestText": "Yeni kişisel rekor!",
"newTestBuildAvailableText": "Yeni bir test yapısı mevcut! (${VERSION} yapı ${BUILD}).\n${ADDRESS} buradan edinebilirsin",
"newText": "Yeni",
@@ -1055,12 +1105,16 @@
"noContinuesText": "(sürdürülemiyor)",
"noExternalStorageErrorText": "Bu cihazda harici depolama bulunamadı",
"noGameCircleText": "Hata: GameCircle girişi yapılamadı",
+ "noMessagesText": "Mesaj yok.",
+ "noPluginsInstalledText": "Yüklü Eklenti Yok",
"noScoresYetText": "Henüz skor yok.",
+ "noServersFoundText": "Sunucu Bulunamadı.",
"noThanksText": "Hayır Teşekkürler",
"noTournamentsInTestBuildText": "DİKKAT: Bu test sürümündeki turnuva skorları dikkate alınmayacaktır.",
"noValidMapsErrorText": "Bu oyun tipi için geçerli harita bulunamadı.",
"notEnoughPlayersRemainingText": "Yeterince oyuncu kalmadı; çık ve yeni bir oyun başlat.",
"notEnoughPlayersText": "Bu oyunu başlatmak için en az ${COUNT} oyuncuya ihtiyacın var!",
+ "notEnoughTicketsText": "Hiç biletin kalmadı",
"notNowText": "Şimdi Değil",
"notSignedInErrorText": "Bunu yapmak için giriş yapmalısın.",
"notSignedInGooglePlayErrorText": "Bunu yapmak için Google Play ile giriş yapmalısın.",
@@ -1073,6 +1127,9 @@
"onText": "Açık",
"oneMomentText": "Bir dakika...",
"onslaughtRespawnText": "${PLAYER} oyuncusu ${WAVE}. dalgada yeniden doğacak",
+ "openMeText": "Aç Beni",
+ "openNowText": "Şimdi Aç",
+ "openText": "Aç",
"orText": "${A} veya ${B}",
"otherText": "Diğer...",
"outOfText": "(${ALL} için #${RANK})",
@@ -1158,6 +1215,8 @@
"punchText": "yumruk",
"purchaseForText": "${PRICE} için Satın Al",
"purchaseGameText": "Oyun Satın Al",
+ "purchaseNeverAvailableText": "Üzgünüm, Satın alımlar bu sürümde mevcut değil.\nBaşka bir platformda profiline giriş yapmayı ve oradan satın alım yapmayı dene.",
+ "purchaseNotAvailableText": "Bu satın alım mevcut değildir.",
"purchasingText": "Satın Alınıyor...",
"quitGameText": "Çık ${APP_NAME}?",
"quittingIn5SecondsText": "5 saniye içinde çıkılacak...",
@@ -1199,6 +1258,7 @@
"version_mismatch": "Versiyon uyuşmuyor.\nBombSquad ve BombSquad Remote'nin son \nsürüm olduğundan emin ol ve tekrar dene."
},
"removeInGameAdsText": "Oyun-içi reklamları kaldırmak için \"${PRO}\" kilidini mağazadan aç.",
+ "removeInGameAdsTokenPurchaseText": "SINIRLI SÜRELİ TEKLİF: Oyun içi reklamları kaldırmak için HERHANGİ BİR jeton paketi satın alın.",
"renameText": "Yeniden Adlandır",
"replayEndText": "Tekrarı Kapat",
"replayNameDefaultText": "Son Oyun Tekrarı",
@@ -1219,7 +1279,9 @@
"revertText": "Eski Haline Döndür",
"runText": "Koş",
"saveText": "Kaydet",
- "scanScriptsErrorText": "Betikleri tararken hata oluştu; detaylar için logları kontrol edin.",
+ "scanScriptsErrorText": "Betik(ler) taranırken hata oluştu. Detaylar için logları kontrol edin.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} ve ${NUM} diğer modül(ler) api ${API} için güncellenmelidir.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} api ${API} için güncellenmelidir.",
"scoreChallengesText": "Mücadele Skoru",
"scoreListUnavailableText": "Skor listesi mevcut değil.",
"scoreText": "Skor",
@@ -1230,6 +1292,7 @@
},
"scoreWasText": "(${COUNT} idi)",
"selectText": "Seç",
+ "sendInfoDescriptionText": "Geliştiriciye hesap ve uygulama durumu bilgilerini gönderir.\nGöndermek için lütfen ad ve gönderme sebebini de ekleyin.",
"seriesWinLine1PlayerText": "SERİLERİ",
"seriesWinLine1TeamText": "SERİLERİ",
"seriesWinLine1Text": "SERİLERİ",
@@ -1245,25 +1308,33 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(Basitçe; yazı yazmak için daha kullanışlı ekran klavyesi)",
- "alwaysUseInternalKeyboardText": "Her zaman Dahili Klavye Kullan",
+ "alwaysUseInternalKeyboardText": "Her zaman dahili klavye kullan",
"benchmarksText": "Benchmark & Stres-Testleri",
- "disableCameraGyroscopeMotionText": "Kamera Jiroskop Hareketini Devre Dışı Bırak",
- "disableCameraShakeText": "Kamera Titremesini Devre Dışı Bırak",
+ "devToolsText": "Geliştirici Ayarları",
+ "disableCameraGyroscopeMotionText": "Kamera jiroskop hareketini devre dışı bırak",
+ "disableCameraShakeText": "Kamera titremesini devre dışı bırak",
"disableThisNotice": "(bu bildiriyi gelişmiş ayarlardan devre dışı bırakabilirsiniz)",
"enablePackageModsDescriptionText": "(ekstra modlama özelliği ekler fakat ağ-oyununu etkisiz kılar)",
"enablePackageModsText": "Yerel Paket Modlarını Etkinleştir",
"enterPromoCodeText": "Kodu gir",
"forTestingText": "Not: Bu değerler sadece test için ve uygulamadan çıkıldığında sıfırlanacak.",
"helpTranslateText": "${APP_NAME}'ın İngilizce olmayan çevirileri topluluk yardımı ile\nyapılabilir. Katkı veya düzgün çeviri yapmak istiyorsan aşağıdaki\nbağlantıya tıkla. Şimdiden teşekkürler!",
- "kickIdlePlayersText": "Boştaki Oyuncuları Çıkar",
+ "insecureConnectionsDescriptionText": "önerilmez, sınırlı ülke ve bağlantılarda\noynamanı sağlar",
+ "insecureConnectionsText": "Güvensiz bağlantılar kullan",
+ "kickIdlePlayersText": "Boştaki oyuncuları çıkar",
"kidFriendlyModeText": "Çoçuk Modu (Azaltılmış şiddet, vb)",
"languageText": "Dil",
"moddingGuideText": "Modlama Rehberi",
+ "moddingToolsText": "Modlama Araçları",
"mustRestartText": "Etkisini göstermesi için oyunu yeniden başlatmalısınız.",
"netTestingText": "Ağ Testi",
"resetText": "Sıfırla",
+ "sendInfoText": "Bilgi Gönder",
"showBombTrajectoriesText": "Bomba Gidişatını Göster",
- "showInGamePingText": "Oyun İçinde Gecikmeyi Göster",
+ "showDemosWhenIdleText": "Boşta iken demolar göster",
+ "showDeprecatedLoginTypesText": "Kullanımdan kaldırılmış oturum açma türlerini göster",
+ "showDevConsoleButtonText": "Geliştirici panelini aç",
+ "showInGamePingText": "Oyun içinde gecikmeyi göster",
"showPlayerNamesText": "Oyuncu Adlarını Göster",
"showUserModsText": "Mod Klasörünü Göster",
"titleText": "Gelişmiş",
@@ -1271,7 +1342,7 @@
"translationFetchErrorText": "çeviri durumu mevcut değil",
"translationFetchingStatusText": "Çeviri durumu kontrol ediliyor...",
"translationInformMe": "Benim dilimin güncellenmesi gerektiğinde bana haber ver",
- "translationNoUpdateNeededText": "Şu anki dil güncel; wohooo!",
+ "translationNoUpdateNeededText": "Şu anki dil güncel; wohoo!",
"translationUpdateNeededText": "** Şu anki dilin güncellenmeye ihtiyacı var!! **",
"vrTestingText": "VR Testi"
},
@@ -1282,6 +1353,9 @@
"signInWithGameCenterText": "Game Center hesabı kullanmak için\nGame Center uygulaması ile giriş yap.",
"singleGamePlaylistNameText": "Sadece ${GAME}",
"singlePlayerCountText": "1 oyuncu",
+ "sizeLargeText": "Büyük",
+ "sizeMediumText": "Orta",
+ "sizeSmallText": "Küçük",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Karakter Seçimi",
@@ -1307,6 +1381,7 @@
},
"spaceKeyText": "boşluk",
"statsText": "İstatistikler",
+ "stopRemindingMeText": "Bana hatırlatma",
"storagePermissionAccessText": "Bu depolama erişimine ihtiyaç duyuyor",
"store": {
"alreadyOwnText": "${NAME} zaten sende var!",
@@ -1355,6 +1430,8 @@
"storeText": "Mağaza",
"submitText": "Gönder",
"submittingPromoCodeText": "Kod Gönderiliyor...",
+ "successText": "Başarı!",
+ "supportEmailText": "Uygulama ile ilgili herhangi bir sorun yaşıyorsanız,\nlütfen ${EMAIL} adresine e-posta gönderin.",
"teamNamesColorText": "Takım isimleri/Renkler...",
"telnetAccessGrantedText": "Telnet Erişimi aktif.",
"telnetAccessText": "Telnet erişimi algılandı; izin ver?",
@@ -1364,6 +1441,7 @@
"testBuildValidatedText": "Test Yapısı Onaylandı; Keyfinı Çıkar!",
"thankYouText": "Desteğin için teşekkürler! Oyunun tadını çıkar!!",
"threeKillText": "ÜÇLÜ ÖLÜM!!",
+ "ticketsDescriptionText": "Biletler karakterler haritalar, mini oyunlar ve daha \nfazlasının kilidini açmak için mağazada kullanılabilir.\n\nBiletler mücadele , turnuvalar ve başarılarla \nkazanılan sandıklardan çıkabilir.",
"timeBonusText": "Süre Bonusu",
"timeElapsedText": "Geçen Süre",
"timeExpiredText": "Süre Doldu",
@@ -1374,10 +1452,24 @@
"tipText": "İpucu",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Jeton al",
+ "notEnoughTokensText": "Yeterli jetonun yok!",
+ "numTokensText": "${COUNT} Jeton",
+ "openNowDescriptionText": "Sandığı açmak için yeterince\njetonun var - beklemene\ngerek yok.",
+ "shinyNewCurrencyText": "BombSquad'ın parlak yeni para birimi.",
+ "tokenPack1Text": "Küçük Jeton Paketi",
+ "tokenPack2Text": "Orta Jeton Paketi",
+ "tokenPack3Text": "Büyük Jeton Paketi",
+ "tokenPack4Text": "Kocaman Jeton Paketi",
+ "tokensDescriptionText": "Jetonlar, sandık kilitlerinin açılmasını hızlandırmak ve \ndiğer oyun ve hesap özellikleri için kullanılır.\n\nOyunda jeton kazanabilir veya jeton paketleri satın \nalabilirsiniz. Veya Gold Pass'i alıp, sonsuz jetonun \nkeyfini çıkarır ve bir daha asla endişelenmezsiniz.",
+ "youHaveGoldPassText": "Bir Gold Pass'in var.\nTüm Jeton satın alımları ücretsiz.\nKeyfini çıkar!"
+ },
"topFriendsText": "En İyi Arkadaşlar",
"tournamentCheckingStateText": "Turnuva durumu denetleniyor; lütfen bekleyin...",
"tournamentEndedText": "Bu turnuva sonlandı. Yeni bir tanesi yakında başlayacak.",
"tournamentEntryText": "Turnuva Katılımı",
+ "tournamentFinalStandingsText": "Son Sıralama",
"tournamentResultsRecentText": "Son Turnıva Sonuçları",
"tournamentStandingsText": "Turnuva Kazananları",
"tournamentText": "Turnuva",
@@ -1433,6 +1525,18 @@
"Uber Onslaught": "Üst Düzey Saldırı",
"Uber Runaround": "Üst Düzey Dolambaç"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Bilet",
+ "${C} Tokens": "${C} Jeton",
+ "Chest": "Sandık",
+ "L1 Chest": "S1 Sandık",
+ "L2 Chest": "S2 Sandık",
+ "L3 Chest": "S3 Sandık",
+ "L4 Chest": "S4 Sandık",
+ "L5 Chest": "S5 Sandık",
+ "L6 Chest": "S6 Sandık",
+ "Unknown Chest": "Bilinmeyen Sandık"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Kazanmak için uzun süre seçilmiş kişi ol.\nseçilmiş kişi olmak için seçilmiş kişiyi öldür.",
"Bomb as many targets as you can.": "Yapabildiğin kadar hedefi bombala.",
@@ -1537,6 +1641,7 @@
"Korean": "Korece",
"Malay": "Malayca",
"Persian": "Farsça",
+ "PirateSpeak": "Korsan Dili",
"Polish": "Polonya Dili",
"Portuguese": "Portekizce",
"Romanian": "Romence",
@@ -1608,6 +1713,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Hile algılandı; skorlar ve ödüller ${COUNT} gün için askıya alındı.",
"Could not establish a secure connection.": "Güvenli bir bağlantı sağlanamadı.",
"Daily maximum reached.": "Günlük sınıra ulaşıldı.",
+ "Daily sign-in reward": "Günlük giriş ödülü",
"Entering tournament...": "Turnuvaya giriliyor...",
"Invalid code.": "Geçersiz kod.",
"Invalid payment; purchase canceled.": "Geçersiz ödeme; satın alma iptal edildi.",
@@ -1617,11 +1723,14 @@
"Item unlocked!": "Öğe kilidi açıldı!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "EŞLEŞTİRME ENGELLENDİ ${ACCOUNT}\nhesabının önemli verilerinin tümü kayıp olacak!\nKarşı taraftan eşleştirme yapabilirsiniz\n(Ve verileriniz kayıp olmaz)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "${ACCOUNT} hesabı bu hesaba bağlansın mı?\n${ACCOUNT} hesabı üzerindeki tüm mevcut veriler kaybolacak.\nBu işlem geri alınamaz. Emin misiniz?",
+ "Longer streaks lead to better rewards.": "Daha uzun seriler daha iyi ödüller verir.",
"Max number of playlists reached.": "Maksimum çalmaListesine ulaşıldı.",
"Max number of profiles reached.": "Profiller için maksimum sayıya ulaşıldı.",
"Maximum friend code rewards reached.": "Arkadaş kodu maksimuma ulaştı.",
"Message is too long.": "Mesaj çok uzun.",
+ "New tournament result!": "Yeni turnuva sonucu!",
"No servers are available. Please try again soon.": "Kullanılabilir sunucu yok. Lütfen kısa süre sonra tekrar deneyin.",
+ "No slots available. Free a slot and try again.": "Boş yuva mevcut değil. Bir yuva boşaltın ve tekrar deneyin.",
"Profile \"${NAME}\" upgraded successfully.": "\"${NAME}\" Profili başarı ile yükseltildi.",
"Profile could not be upgraded.": "Profil yükseltilemedi.",
"Purchase successful!": "Satın Alma Başarılı!",
@@ -1631,7 +1740,9 @@
"Sorry, this code has already been used.": "Üzgünüz, bu kod zaten kullanılmış.",
"Sorry, this code has expired.": "Üzgünüz, Bu kodun süresi doldu.",
"Sorry, this code only works for new accounts.": "Üzgünüz, bu kod yalnızca yeni hesaplar için çalışır.",
+ "Sorry, this has expired.": "Maalesef, bunun süresi dolmuş.",
"Still searching for nearby servers; please try again soon.": "Hala yakındaki sunucuları arıyor; lütfen kısa süre sonra tekrar deneyin.",
+ "Streak: ${NUM} days": "Seri: ${NUM} gün",
"Temporarily unavailable; please try again later.": "Geçici olarak kullanım dışı; lütfen daha sonra tekrar deneyiniz.",
"The tournament ended before you finished.": "Sen bitiremeden turnuva sona erdi.",
"This account cannot be unlinked for ${NUM} days.": "Bu hesap, ${NUM} gün boyunca kaldırılamaz.",
@@ -1642,19 +1753,28 @@
"Tournaments require ${VERSION} or newer": "Turnuvalar ${VERSION} veya daha yeni bir sürümü gerektirir",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "${ACCOUNT} hesabının bağlantısını kaldırmak mı istiyorsunuz?\n${ACCOUNT} hesabı üzerindeki tüm veriler sıfırlanacak.\n(bazı durumlarda başarılar hariç)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "UYARI: Hesabınız hile kullanımı nedeniyle şikayet edilmiştir.\nHile kullanıldığı tespit edilen hesaplar yasaklanacaktır. Lütfen adil oyna.",
+ "Wait reduced!": "Bekleme azaldı!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Uyarı: Oyunun bu sürümü eski hesap verileriyle sınırlıdır; bazı şeyler eksik veya güncelliğini yitirmiş görünebilir.\nLütfen en son hesap verilerinizi görmek için oyunun daha yeni bir sürümüne yükseltin.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Cihaz hesabınızı bununla bağlamak istermisiniz?\n\nCihaz hesabınız: ${ACCOUNT1}\nBu hesap: ${ACCOUNT2}\n\nUlaştığın ilerlemeler saklanacak.\nUyarı: Bu işlem geri alınamaz!",
"You already own this!": "Buna zaten sahipsin!",
"You can join in ${COUNT} seconds.": "\"${COUNT}\" saniye içinde katılabilirsin.",
"You don't have enough tickets for this!": "Bunun için yeterince biletiniz yok!",
"You don't own that.": "Buna sahip değilsin.",
"You got ${COUNT} tickets!": "${COUNT} Bilet kazandınız!",
+ "You got ${COUNT} tokens!": "${COUNT} jeton kazandın!",
"You got a ${ITEM}!": "Bir ${ITEM} kazandınız!",
+ "You got a chest!": "Sandık kazandın!",
+ "You got an achievement reward!": "Başarı ödülü kazandın!",
"You have been promoted to a new league; congratulations!": "Yeni bir lige terfi ettin; tebrikler!",
+ "You lost a chest! (All your chest slots were full)": "Bir sandık kaybettin! (Tüm sandık yuvaların doluydu)",
+ "You must update the app to view this.": "Bunu görmek için oyunu güncellemen gerekli.",
"You must update to a newer version of the app to do this.": "Bunu yapmak için uygulamayı yeni bir sürüme güncellemelisin.",
"You must update to the newest version of the game to do this.": "Bunu yapmak için oyunun en yeni sürümüne güncellemelisiniz.",
"You must wait a few seconds before entering a new code.": "Yeni bir kod girmeden önce biraz beklemelisin.",
+ "You placed #${RANK} in a tournament!": "Bir turnuvada #${RANK} sırada yer aldın!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Son turnuvada #${RANK}. oldun. Oynadığın için teşekkürler!",
"Your account was rejected. Are you signed in?": "Hesabın reddedildi. Oturum açtın mı?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Reklam bilgilerin kayıt altına alınamıyor. Reklam seçeneklerin bir sürelik kısıtlanacak.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Oyununun kopyası modifiye edilmiş.\nLütfen eski haline döndürüp tekrar deneyin.",
"Your friend code was used by ${ACCOUNT}": "Arkadaş kodun ${ACCOUNT} tarafından kullanılmış"
},
@@ -1803,11 +1923,14 @@
"toSkipPressAnythingText": "(öğreticiyi atlamak için herhangi bir tuşa bas)"
},
"twoKillText": "ÇİFTE ÖLÜM!",
+ "uiScaleText": "UI Boyutu",
"unavailableText": "mevcut değil",
+ "unclaimedPrizesText": "Alınmamış ödüllerin var!",
"unconfiguredControllerDetectedText": "Yapılandırılmamış kontrolcü tespit edildi:",
"unlockThisInTheStoreText": "Bunun mağazada kilidi açık olmalı.",
"unlockThisProfilesText": "${NUM} taneden daha fazla profil yaratmak için ihtiyacın olan:",
"unlockThisText": "Bu kilidi açmak için ihtiyacın olan:",
+ "unsupportedControllerText": "Üzgünüm, kontrolcü \"${NAME}\" desteklenmiyor.",
"unsupportedHardwareText": "Üzgünüz, bu donanım oyunun bu sürümü tarafından desteklenmiyor.",
"upFirstText": "İlki:",
"upNextText": "Sıradaki oyun ${COUNT}:",
@@ -1815,11 +1938,15 @@
"upgradeText": "Yükselt",
"upgradeToPlayText": "Bunu oynamak için \"${PRO}\" kilidini oyun-içi mağazadan aç.",
"useDefaultText": "Varsayılanı Kullan",
+ "userSystemScriptsCreateText": "Kullanıcı Sistem Kodlarını Oluştur",
+ "userSystemScriptsDeleteText": "Kullanıcı Sistem Kodlarını Sil",
"usesExternalControllerText": "Bu oyun girdi olarak harici kontrolcü kullanıyor.",
"usingItunesText": "Müzikler için iTunes kullanılıyor...",
"usingItunesTurnRepeatAndShuffleOnText": "Lütfen iTunes da karıştırmanın KAPALI oldugundan ve Yinelemenin TÜM oldugundan emin olun. ",
"v2AccountLinkingInfoText": "V2 hesapları bağlamak için, 'Hesabı yönet' butonuna tıklayın.",
+ "v2AccountRequiredText": "Bu bir V2 hesap gerektirir. Hesabını yükseltip tekrar dene.",
"validatingTestBuildText": "Test Yapısı Onaylanıyor...",
+ "viaText": "Böyle de bilinir",
"victoryText": "Galibiyet!",
"voteDelayText": "${NUMBER} saniye boyunca başka oylama başlatamazsın.",
"voteInProgressText": "Oylama zaten işlemde.",
@@ -1863,7 +1990,7 @@
"wiimoteSetupWindow": {
"copyrightText": "DarwiinRemote TelifHakkı",
"listenText": "Dinle",
- "macInstructionsText": "Wii nin kapalı olduğundan ve 'Dinle'ye bastığında\nMac'inde Bluetooth'un açık olduğundan emin ol.Wii\ndesteği biraz tuhaftır bu yüzden bağlanmadan önce\nbirkaç kere denemelisin.\n\nBluetooth çeşitli uzaklıklardan 7 cihaza\nkadar destek verir.\n\nBombSquad Orijinal Wiimoteleri Nunchukslari ve\nKlasik Kontrolcüleri destekler.\nYeni Wii Remote Plus'da şuanda çalışıyor\nfakat eklenmiş değil.",
+ "macInstructionsText": "Wii nin kapalı olduğundan ve 'Dinle'ye bastığında\nMac'inde Bluetooth'un açık olduğundan emin ol.Wii\ndesteği biraz tuhaftır bu yüzden bağlanmadan önce\nbirkaç kere denemelisin.\n\nBluetooth çeşitli uzaklıklardan 7 cihaza\nkadar destek verir.\n\nBombSquad Orijinal Wiimoteleri Nunchukslari ve\nKlasik Kontrolcüleri destekler.\nYeni Wii Remote Plus'da şuanda çalışıyor\nfakat eklenmiş değil. ",
"thanksText": "DarwiinRemote takımına bunu mümkün\nkıldığı için teşekkürler.",
"titleText": "Wiimote Kurulumu"
},
@@ -1885,5 +2012,6 @@
},
"yesAllowText": "Evet, Kabul!",
"yourBestScoresText": "En İyi Skorların",
- "yourBestTimesText": "En İyi Sürelerin"
+ "yourBestTimesText": "En İyi Sürelerin",
+ "yourPrizeText": "Ödülün:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/ukrainian.json b/dist/ba_data/data/languages/ukrainian.json
index 371b3dfe..33b5864e 100644
--- a/dist/ba_data/data/languages/ukrainian.json
+++ b/dist/ba_data/data/languages/ukrainian.json
@@ -7,7 +7,9 @@
"campaignProgressText": "Прогрес кампанії [Тяжко]: ${PROGRESS}",
"changeOncePerSeason": "Ви можете змінити це лише раз в сезон.",
"changeOncePerSeasonError": "Ви повинні дочекатися наступного сезону, щоб змінити це знову (${NUM} днів)",
+ "createAnAccountText": "Створити Акаунт",
"customName": "Ім'я акаунта",
+ "deleteAccountText": "Видалити аккаунт",
"googlePlayGamesAccountSwitchText": "Якщо ви хочете використовувати інший акаунт Google,\nперейдіть у додаток Google Play Games, щоб змінити його.",
"linkAccountsEnterCodeText": "Ввести Код",
"linkAccountsGenerateCodeText": "Створити Код",
@@ -25,14 +27,16 @@
"setAccountNameDesc": "Виберіть ім'я для відображення свого акаунту.\nВи можете використовувати ім'я одного з ваших прив'язаних\nакаунтів або створити своє унікальне ім'я.",
"signInInfoText": "Увійдіть, щоб збирати квитки, змагатися онлайн,\nі синхронізувати прогрес між пристроями.",
"signInText": "Увійти",
+ "signInWithAnEmailAddressText": "Увійдіть за допомогою електронної адреси",
"signInWithDeviceInfoText": "(для цього пристрою доступний тільки стандартний акаунт)",
"signInWithDeviceText": "Увійти використовуючи акаунт пристрою",
"signInWithGameCircleText": "Увійти через Game Circle",
"signInWithGooglePlayText": "Увійти через Google Play",
"signInWithTestAccountInfoText": "(тест-аккаунт; надалі використовуйте акаунт пристрою)",
"signInWithTestAccountText": "Увійти через тестовий акаунт",
+ "signInWithText": "Увійти за допомогою ${SERVICE}",
"signInWithV2InfoText": "(обліковий запис, який працює на всіх платформах)",
- "signInWithV2Text": "Увійдіть за допомогою облікового запису BombSquad",
+ "signInWithV2Text": "Увійдіть за допомогою облікового запису ${APP_NAME}",
"signOutText": "Вийти",
"signingInText": "Вхід…",
"signingOutText": "Вихід…",
@@ -336,9 +340,14 @@
"getMoreGamesText": "Ще ігри...",
"titleText": "Додати гру"
},
+ "addToFavoritesText": "Додати в обране",
+ "addedToFavoritesText": "Додано '${NAME}' до вибраного.",
+ "allText": "Все",
"allowText": "Дозволити",
"alreadySignedInText": "На вашому акаунті грають на іншому пристрої;\nбудь ласка зайдіть з іншого акаунта або закрийте гру на\nіншому пристрої та спробуйте знову.",
"apiVersionErrorText": "Неможливо завантажити модуль ${NAME}; він призначений для API версії ${VERSION_USED}; потрібна версія ${VERSION_REQUIRED}.",
+ "applyText": "Застосувати",
+ "areYouSureText": "Ти впевнений?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(Режим \"Auto\" включайте його тільки коли підключені навушники)",
"headRelativeVRAudioText": "Позиційно-залежне VR-аудіо",
@@ -360,14 +369,24 @@
"boostText": "Підсилення",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} налаштовується в самому додатку.",
"buttonText": "кнопка",
- "canWeDebugText": "Хочете, щоб BombSquad автоматично повідомляв розробнику\nпро помилки, збої і основну інформацію про використання?\n\nЦі дані не містять ніякої особистої інформації і допомагають\nпідтримувати гру в робочому стані без збоїв і помилок.",
+ "canWeDebugText": "Хочете, щоб ${APP_NAME} автоматично повідомляв розробнику\nпро помилки, збої і основну інформацію про використання?\n\nЦі дані не містять ніякої особистої інформації і допомагають\nпідтримувати гру в робочому стані без збоїв і помилок.",
"cancelText": "Скасувати",
"cantConfigureDeviceText": "Вибачте, ${DEVICE} неможливо налаштувати.",
"challengeEndedText": "Це змагання завершено.",
"chatMuteText": "Приглушити чат",
"chatMutedText": "Чат приглушений",
"chatUnMuteText": "Включити чат",
+ "chests": {
+ "prizeOddsText": "Ймовірність Виграшу",
+ "reduceWaitText": "Скоротити час",
+ "slotDescriptionText": "У цій комірці може бути скриня.\n\nЗаробляй скрині граючи в рівні кампанії,\nпосідаючи місця в турнірах та виконуючи\nдосягнення.",
+ "slotText": "Комірка для Скрині ${NUM}",
+ "slotsFullWarningText": "ЗАСТЕРЕЖЕННЯ: Усі комірки заповнені скринями.\nСкрині, що ти заробиш цієї гри, буде втрачено.",
+ "unlocksInText": "Відкривається Через"
+ },
"choosingPlayerText": "<вибір гравця>",
+ "claimText": "Забрати",
+ "codesExplainText": "Розробник надає коди для діагностики та\nусунення проблем з обліковим записом.",
"completeThisLevelToProceedText": "Щоб продовжити, потрібно\nпройти цей рівень!",
"completionBonusText": "Бонус за проходження",
"configControllersWindow": {
@@ -448,6 +467,7 @@
"swipeText": "змахнути",
"titleText": "Налаштування сенсорного екрану"
},
+ "configureDeviceInSystemSettingsText": "${DEVICE} можна налаштувати в налаштуваннях системи",
"configureItNowText": "Налаштувати зараз?",
"configureText": "Налаштувати",
"connectMobileDevicesWindow": {
@@ -550,6 +570,7 @@
"demoText": "Демо",
"denyText": "Відхилити",
"deprecatedText": "Застаріла",
+ "descriptionText": "Опис",
"desktopResText": "Розширення екрану",
"deviceAccountUpgradeText": "Увага!\nТи ввійшов за допомогою акаунта пристрою (${NAME}).\nАкаунти пристроїв будуть видалені у майбутньому оновленні.\nОновись до V2-акаунта, якщо ти хочеш зберегти свій прогрес.",
"difficultyEasyText": "Легкий",
@@ -560,6 +581,10 @@
"disableRemoteAppConnectionsText": "Відключення з'єднання RemoteApp",
"disableXInputDescriptionText": "Підключення більше 4 контролерів, але може не працювати.",
"disableXInputText": "Відключити XInput",
+ "disabledText": "Виключено",
+ "discardText": "Відкинути",
+ "discordFriendsText": "Хочете шукати нових людей для гри?\nПриєднуйтесь до нашого Discord і знайдіть нових друзів!",
+ "discordJoinText": "Приєднуйтесь до Discord",
"doneText": "Готово",
"drawText": "Нічия",
"duplicateText": "Дублювати",
@@ -592,6 +617,7 @@
"localProfileText": "(локальний профіль)",
"nameDescriptionText": "Ім'я гравця",
"nameText": "Ім'я",
+ "profileAlreadyExistsText": "Профіль з таким ім'ям вже існує.",
"randomText": "випадкове",
"titleEditText": "Змінити профіль",
"titleNewText": "Новий профіль",
@@ -627,6 +653,7 @@
"useMusicFolderText": "Тека з музикою"
},
"editText": "Редагувати",
+ "enabledText": "Включено",
"endText": "Кінець",
"enjoyText": "Успіхів!",
"epicDescriptionFilterText": "${DESCRIPTION} в епічному сповільненій дії.",
@@ -638,6 +665,8 @@
"errorText": "Помилка",
"errorUnknownText": "невідома помилка",
"exitGameText": "Вийти з ${APP_NAME}?",
+ "expiredAgoText": "Закінчився ${T} тому",
+ "expiresInText": "Закінчується через ${T}",
"exportSuccessText": "'${NAME}' експортовано.",
"externalStorageText": "Зовнішня пам'ять",
"failText": "Провал",
@@ -672,6 +701,8 @@
"duplicateText": "Дублювати\nплейлист",
"editText": "Змінити\nплейлист",
"newText": "Новий\nплейлист",
+ "pointsToWinText": "Очок до виграшу",
+ "seriesLengthText": "Довжина серії",
"showTutorialText": "Показати туторіал",
"shuffleGameOrderText": "Змішати порядок ігор",
"titleText": "Налаштувати плейлисти '${TYPE}'"
@@ -697,6 +728,7 @@
"copyCodeConfirmText": "Код скопійовано до буферу обміну",
"copyCodeText": "Скопіювати код",
"dedicatedServerInfoText": "Для кращого результату створіть окремий сервер. Дивись bombsquadgame.com/server",
+ "descriptionShortText": "",
"disconnectClientsText": "Це відключить ${COUNT} гравців\nУ вашому лобі. Ви впевнені?",
"earnTicketsForRecommendingAmountText": "Друзі отримають ${COUNT} квитки, якщо вони спробують гру \n(і ви будете отримувати ${YOU_COUNT} для кожного, це зробить)",
"earnTicketsForRecommendingText": "Поділися грою\nОтримай квитки ...",
@@ -709,10 +741,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} квитків від ${NAME}",
"friendPromoCodeAwardText": "Ви отримаєте ${COUNT} квитків за кожну активацію.",
"friendPromoCodeExpireText": "Код дійсний протягом ${EXPIRE_HOURS} годин і тільки для нових гравців.",
- "friendPromoCodeInstructionsText": "Для активації в ${APP_NAME} зайдіть в \"Налаштування->Додатково->Ввести код\".\nЗнайди на bombsquadgame.com версію гри для своєї платформи.",
+ "friendPromoCodeInstructionsText": "Щоб скористатися ним, відкрийте ${APP_NAME} і перейдіть у «Налаштування->Додатково->Надіслати інформацію».\nПосилання для завантаження для всіх підтримуваних платформ дивіться на bombsquadgame.com.",
"friendPromoCodeRedeemLongText": "Кожна активація приносить ${COUNT} квитків до ${MAX_USES} гравцям.",
"friendPromoCodeRedeemShortText": "Він принесе ${COUNT} квитків в грі.",
- "friendPromoCodeWhereToEnterText": "(В \"Налаштування->Додатково->Ввести код\")",
+ "friendPromoCodeWhereToEnterText": "(у \"Налаштування->Додатково->Надіслати інформацію\")",
"getFriendInviteCodeText": "Отримати промо-код",
"googlePlayDescriptionText": "Запросити гравців Google Play в ваше лобі:",
"googlePlayInviteText": "Запросити",
@@ -744,6 +776,7 @@
"manualYourLocalAddressText": "Ваш локальний адрес:",
"nearbyText": "Поблизу",
"noConnectionText": "<немає з'єднання>",
+ "noPartiesAddedText": "Партії не додано",
"otherVersionsText": "(інші версії)",
"partyCodeText": "Код групи",
"partyInviteAcceptText": "Прийняти",
@@ -807,6 +840,12 @@
"youHaveShortText": "у вас ${COUNT}",
"youHaveText": "У вас ${COUNT} квитків"
},
+ "goldPass": {
+ "desc1InfTokensText": "Нескінченні жетони.",
+ "desc2NoAdsText": "Без реклами.",
+ "desc3ForeverText": "Назавжди.",
+ "goldPassText": "золотий пропуск"
+ },
"googleMultiplayerDiscontinuedText": "Пробачте, але сервіс мультіплеєра від Google тепер не доступний.\nЯ працюю над зміною сервіса як можно скоріше.\nДо цього, будь ласка, подивіться інакші способи гри в мультіплеєр. \n-Ерік",
"googlePlayPurchasesNotAvailableText": "Покупки в Google Play недоступні.\nМожливо, вам знадобиться оновити програму магазину.",
"googlePlayServicesNotAvailableText": "Google Play сервіси недоступні.\nДеякі функції програми не роблять.",
@@ -815,10 +854,12 @@
"alwaysText": "Завжди",
"fullScreenCmdText": "Повноекранний (Cmd-F)",
"fullScreenCtrlText": "Повноекранний (Ctrl-F)",
+ "fullScreenText": "Повний екран",
"gammaText": "Гамма",
"highText": "Високий",
"higherText": "Вище",
"lowText": "Низький",
+ "maxFPSText": "Максимальна частота кадрів",
"mediumText": "Середній",
"neverText": "Ніколи",
"resolutionText": "Розширення",
@@ -879,6 +920,7 @@
"importText": "Імпорт",
"importingText": "Імпортую...",
"inGameClippedNameText": "У грі буде\n\"${NAME}\"",
+ "inboxText": "Вхідні",
"installDiskSpaceErrorText": "ПОМИЛКА: не вдалося завершити встановлення. \nМоже не вистачає вільного місця на вашому \nпристрої. Звільніть місце та спробуйте ще раз.",
"internal": {
"arrowsToExitListText": "Щоб вийти зі списку натисніть ${LEFT} або ${RIGHT}",
@@ -933,12 +975,14 @@
"timeOutText": "(залишилося ${TIME} секунд)",
"touchScreenJoinWarningText": "Ви приєдналися з сенсорним екраном.\nЯкщо це була помилка, натисніть 'Меню->Покинути гру'.",
"touchScreenText": "Сенсорний екран",
+ "unableToCompleteTryAgainText": "Не в змозі завершити це зараз.\nСпробуй ще раз, будь ласка.",
"unableToResolveHostText": "Помилка: неможливо досягти хоста.",
"unavailableNoConnectionText": "Зараз це недоступно (немає інтернет з'єднання?)",
"vrOrientationResetCardboardText": "Використовуйте це, щоб скинути орієнтацію VR.\nЩоб грати в гру вам буде потрібен зовнішній контролер.",
"vrOrientationResetText": "Скидання орієнтації VR.",
"willTimeOutText": "(час вийде при бездіяльності)"
},
+ "inventoryText": "Інтвентар",
"jumpBoldText": "СТРИБОК",
"jumpText": "Стрибнути",
"keepText": "Залишити",
@@ -985,8 +1029,11 @@
"seasonEndsMinutesText": "Сезон завершиться через ${NUMBER} хвилин.",
"seasonText": "Сезон ${NUMBER}",
"tournamentLeagueText": "Щоб брати участь в цьому турнірі, ви повинні досягти ліги ${NAME}.",
- "trophyCountsResetText": "Трофеї будуть скинуті в наступному сезоні."
+ "trophyCountsResetText": "Трофеї будуть скинуті в наступному сезоні.",
+ "upToDateBonusDescriptionText": "Гравці, що використовують останню версію гри,\nотримають ${PERCENT}% бонус",
+ "upToDateBonusText": "Бонус Прогресу"
},
+ "learnMoreText": "Вивчайте більше",
"levelBestScoresText": "Кращий рекорд на ${LEVEL}",
"levelBestTimesText": "Кращий час на ${LEVEL}",
"levelIsLockedText": "${LEVEL} заблокований.",
@@ -1030,6 +1077,8 @@
"modeArcadeText": "Аркадний режим",
"modeClassicText": "Класичний режим",
"modeDemoText": "Демо режим",
+ "moreSoonText": "Незабаром буде більше..",
+ "mostDestroyedPlayerText": "Найбільш Побитий Гравець",
"mostValuablePlayerText": "Найцінніший гравець",
"mostViolatedPlayerText": "Самий побитий гравець",
"mostViolentPlayerText": "Самий буйний гравець",
@@ -1046,6 +1095,7 @@
"nameSuicideText": "${NAME} скоїв суїцид.",
"nameText": "Ім'я",
"nativeText": "Власний",
+ "newExclaimText": "Новинка!",
"newPersonalBestText": "Новий особистий рекорд!",
"newTestBuildAvailableText": "Доступна нова тестова версія! (${VERSION} збірка ${BUILD}).\nОновити: ${ADDRESS}",
"newText": "Новий",
@@ -1056,12 +1106,16 @@
"noContinuesText": "(без продовжень)",
"noExternalStorageErrorText": "На цьому пристрої не знайдено зовнішньої пам'яті",
"noGameCircleText": "Помилка: не ввійшли в GameCircle",
+ "noMessagesText": "Немає повідомлень.",
+ "noPluginsInstalledText": "Плагіни не встановлено",
"noScoresYetText": "Рахунка поки немає.",
+ "noServersFoundText": "Серверів не знайдено",
"noThanksText": "Ні дякую",
"noTournamentsInTestBuildText": "ВАЖЛИВО: Турнірні Очки на цій тестовій версії будуть ігноровані.",
"noValidMapsErrorText": "Для даного типу гри не знайдено коректних карт.",
"notEnoughPlayersRemainingText": "Залишилося недостатньо гравців; вийдіть і почніть нову гру.",
"notEnoughPlayersText": "Для початку цієї гри потрібно як мінімум ${COUNT} гравця!",
+ "notEnoughTicketsText": "Не вистачає квитків!",
"notNowText": "Не зараз",
"notSignedInErrorText": "Увійдіть щоб зробити це.",
"notSignedInGooglePlayErrorText": "Увійдіть спочатку в Google Play, а там подивимося.",
@@ -1074,6 +1128,9 @@
"onText": "Вкл",
"oneMomentText": "Хвилинку...",
"onslaughtRespawnText": "${PLAYER} відродиться в ${WAVE} хвилі",
+ "openMeText": "Відкрий Мене!",
+ "openNowText": "Відчинити зараз",
+ "openText": "Відчинити",
"orText": "${A} або ${B}",
"otherText": "Інші...",
"outOfText": "(${RANK} з ${ALL})",
@@ -1159,6 +1216,8 @@
"punchText": "Вдарити",
"purchaseForText": "Купити за ${PRICE}",
"purchaseGameText": "Купити гру",
+ "purchaseNeverAvailableText": "На жаль, покупки недоступні для цієї збірки.\nСпробуйте ввійти у свій обліковий запис на іншій платформі та робити покупки звідти.",
+ "purchaseNotAvailableText": "Ця покупка недоступна.",
"purchasingText": "Покупка...",
"quitGameText": "Вийти з ${APP_NAME}?",
"quittingIn5SecondsText": "Вихід через 5 секунд...",
@@ -1200,6 +1259,7 @@
"version_mismatch": "Розбіжність версій.\nПереконайтеся, що BombSquad і контролер BombSquad Remote\nоновлені до останньої версії і спробуйте ще раз."
},
"removeInGameAdsText": "Розблокуйте \"${PRO}\" в магазині, щоб прибрати рекламу в грі.",
+ "removeInGameAdsTokenPurchaseText": "ОБМЕЖЕНА ЧАСОМ ПРОПОЗИЦІЯ: Придбай БУДЬ-ЯКИЙ набір жетонів, аби вилучити рекламу з гри.",
"renameText": "Перейменувати",
"replayEndText": "Завершити перегляд повтору",
"replayNameDefaultText": "Повтор останньої гри",
@@ -1221,6 +1281,8 @@
"runText": "Бігти",
"saveText": "Зберегти",
"scanScriptsErrorText": "Помилка(и) сканування скриптів; дивіться лог для деталей.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} і ${NUM} інших модулів потрібно оновити для api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} потрібно оновити для api ${API}.",
"scoreChallengesText": "Медалі за очки",
"scoreListUnavailableText": "Список очок недоступний.",
"scoreText": "Очки",
@@ -1231,6 +1293,7 @@
},
"scoreWasText": "(було ${COUNT})",
"selectText": "Вибрати",
+ "sendInfoDescriptionText": "Надсилає інформацію про обліковий запис і стан програми розробнику. Будь ласка, вкажіть своє ім'я або причину надсилання\nِ",
"seriesWinLine1PlayerText": "ПЕРЕМІГ У",
"seriesWinLine1TeamText": "ПЕРЕМОГЛИ У",
"seriesWinLine1Text": "ПЕРЕМІГ У",
@@ -1246,24 +1309,32 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(проста, зручна для контролера віртуальна клавіатура для введення тексту)",
- "alwaysUseInternalKeyboardText": "Завжди використовувати вбудовану клавіатуру",
+ "alwaysUseInternalKeyboardText": "Завжди використовуйте внутрішню клавіатуру",
"benchmarksText": "Тест продуктивності і навантаження",
- "disableCameraGyroscopeMotionText": "Вимкнути Рух Гіроскопу Камери",
- "disableCameraShakeText": "Вимкнути Тремтіння Камери",
+ "devToolsText": "Інструменти розробника",
+ "disableCameraGyroscopeMotionText": "Вимкнути рух гіроскопа камери",
+ "disableCameraShakeText": "Вимкнути тремтіння камери",
"disableThisNotice": "(ви можете відключити це повідомлення в налаштуваннях)",
"enablePackageModsDescriptionText": "(включає додаткові можливості для модінгу, але відключає мережеву гру)",
"enablePackageModsText": "Включити моди локального пакета",
"enterPromoCodeText": "Ввести код",
"forTestingText": "Примітка: ці значення використовуються тільки для тестування і будуть втрачені, коли додаток завершить роботу.",
"helpTranslateText": "Переклади гри ${APP_NAME} з англійської зроблені спільнотою. \nЯкщо ви хочете запропонувати або виправити переклад, \nПерейдіть за посиланню нижче. Заздалегідь дякую!",
- "kickIdlePlayersText": "Викидати неактивних гравців",
+ "insecureConnectionsDescriptionText": "не рекомендується, але може дозволити онлайн-гру\nз країн або мереж з обмеженим доступом",
+ "insecureConnectionsText": "Використання ненадійних з'єднань",
+ "kickIdlePlayersText": "Викидати непрацюючих гравців",
"kidFriendlyModeText": "Сімейний режим (менше насильства, і т.д.)",
"languageText": "Мова",
"moddingGuideText": "Інструкція по модінгу",
+ "moddingToolsText": "Інструменти для моддингу",
"mustRestartText": "Необхідно перезапустити гру, щоб зміни вступили в силу.",
"netTestingText": "Тестування мережі",
"resetText": "Скинути",
+ "sendInfoText": "Надіслати інформацію",
"showBombTrajectoriesText": "Показувати траєкторію бомби",
+ "showDemosWhenIdleText": "Показувати демонстрації в режимі очікування",
+ "showDeprecatedLoginTypesText": "Показати застарілі типи входу",
+ "showDevConsoleButtonText": "Показати кнопку консолі розробника",
"showInGamePingText": "Показувати пінг у грі",
"showPlayerNamesText": "Показувати імена гравців",
"showUserModsText": "Показати теку модів",
@@ -1272,8 +1343,8 @@
"translationFetchErrorText": "статус перекладу недоступний",
"translationFetchingStatusText": "перевірка статусу перекладу...",
"translationInformMe": "Повідомляйте мене, коли моя мова потребує оновлення",
- "translationNoUpdateNeededText": "дана мова повністю оновлена, ура!",
- "translationUpdateNeededText": "** дана мова потребує оновлення!! **",
+ "translationNoUpdateNeededText": "Поточна мова оновлена; ураа!",
+ "translationUpdateNeededText": "** Поточна мова потребує оновлення!! **",
"vrTestingText": "Тестування VR"
},
"shareText": "Поділитися",
@@ -1283,6 +1354,9 @@
"signInWithGameCenterText": "Щоб використовувати аккаунт GameCenter,\nувійдіть через GameCenter.",
"singleGamePlaylistNameText": "Просто ${GAME}",
"singlePlayerCountText": "1 гравець",
+ "sizeLargeText": "Великий",
+ "sizeMediumText": "Середній",
+ "sizeSmallText": "Малий",
"soloNameFilterText": "${NAME} соло",
"soundtrackTypeNames": {
"CharSelect": "Вибір персонажа",
@@ -1308,6 +1382,7 @@
},
"spaceKeyText": "пробіл",
"statsText": "Статистика",
+ "stopRemindingMeText": "Більше не нагадувати",
"storagePermissionAccessText": "Це вимагає доступу до сховища",
"store": {
"alreadyOwnText": "У вас вже є ${NAME}!",
@@ -1355,6 +1430,8 @@
"storeText": "Магазин",
"submitText": "Відправити",
"submittingPromoCodeText": "Активація коду...",
+ "successText": "Успішно!",
+ "supportEmailText": "Якщо у вас виникли проблеми з програмою,\nнадішліть електронний лист на ${EMAIL}.",
"teamNamesColorText": "імена/кольори команд",
"telnetAccessGrantedText": "Доступ Telnet включений.",
"telnetAccessText": "Виявлено доступ Telnet. Дозволити?",
@@ -1364,6 +1441,7 @@
"testBuildValidatedText": "Тестова збірка перевірена. Насолоджуйтесь!",
"thankYouText": "Дякую за вашу підтримку! Веселої гри!!",
"threeKillText": "ТРЬОХ ЗА РАЗ!!",
+ "ticketsDescriptionText": "За квитки можна розблокувати персонажів,\nкарти, міні-ігри та більше в магазині.\n\nКвитки можна знайти у скринях, виграних в\nкампаніях, турнірах та досягненнях.",
"timeBonusText": "Бонус часу",
"timeElapsedText": "Пройшло часу",
"timeExpiredText": "Час вийшов",
@@ -1374,10 +1452,24 @@
"tipText": "Підказка",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Отримати жетони",
+ "notEnoughTokensText": "Недостатньо жетонів!",
+ "numTokensText": "${COUNT} Жетонів",
+ "openNowDescriptionText": "Ти маєш достатньо жетонів щоб \nвідкрити це зараз - ти не \nмусиш чекати.",
+ "shinyNewCurrencyText": "Нова блискуча валюта BombSquad.",
+ "tokenPack1Text": "Малий пакет жетонів",
+ "tokenPack2Text": "Середній пакет жетонів",
+ "tokenPack3Text": "Великий пакет жетонів",
+ "tokenPack4Text": "Джамбо Пакет жетонів",
+ "tokensDescriptionText": "Жетони використовуються для прискорення відкриття скрині,\nа такох для інших функцій гри та акаунта.\n\nТи можеш виграти жетони у грі, чи придбати їх\nу наборі. Або ж придбай Золотий Пропуск для нескінченних\nжетонів і більше ніколи про них не чуй ані слова.",
+ "youHaveGoldPassText": "У вас є Gold Pass.\nУсі покупки жетонів безкоштовні.\nНасолоджуйтесь!"
+ },
"topFriendsText": "Топ друзів",
"tournamentCheckingStateText": "Перевірка статусу турніру, будь ласка, зачекайте...",
"tournamentEndedText": "Турнір закінчився. Скоро почнеться новий.",
"tournamentEntryText": "Вхід в турнір",
+ "tournamentFinalStandingsText": "Фінальна Таблиця",
"tournamentResultsRecentText": "Останні Результати турніру",
"tournamentStandingsText": "Позиції в турнірі",
"tournamentText": "Турнір",
@@ -1433,6 +1525,18 @@
"Uber Onslaught": "Убер атака",
"Uber Runaround": "Убер маневр"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Квитки(-ів)",
+ "${C} Tokens": "${C} Жетони(-ів)",
+ "Chest": "Скриня",
+ "L1 Chest": "Скриня 1Р",
+ "L2 Chest": "Скриня 2Р",
+ "L3 Chest": "Скриня 3Р",
+ "L4 Chest": "Скриня 4Р",
+ "L5 Chest": "Скриня 5Р",
+ "L6 Chest": "Скриня 6Р",
+ "Unknown Chest": "Невідома Скриня"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Щоб перемогти, стань обраним на деякий час.\nЩоб стати обраним, вбий обраного.",
"Bomb as many targets as you can.": "Підірвіть стільки мішеней, скільки зможете.",
@@ -1537,6 +1641,7 @@
"Korean": "Корейська",
"Malay": "Малайська",
"Persian": "Перська",
+ "PirateSpeak": "Піратська мова",
"Polish": "Польська",
"Portuguese": "Португальська",
"Romanian": "Румунська",
@@ -1608,6 +1713,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Ах ти, чітер; Очки і нагороди заморожені на ${COUNT} днів.",
"Could not establish a secure connection.": "Не вдалося встановити безпечне з'єднання.",
"Daily maximum reached.": "Досить на сьогодні.",
+ "Daily sign-in reward": "Щоденна Винагорода",
"Entering tournament...": "Вхід в турнір...",
"Invalid code.": "Невірний код.",
"Invalid payment; purchase canceled.": "Щось пішло не так. Купівля скасована.",
@@ -1617,11 +1723,14 @@
"Item unlocked!": "Предмет разблоковано!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "Об'єднання не дозволено. ${ACCOUNT} містить \nважливі дані і вони ВСІ ЗНИКНУТЬ.\nТи можеш об'єднанати у зворотньому порядку, якщо ти цього захочеш\n(І втратити дані ЦЬОГО акаунта)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Зв'язати ${ACCOUNT} акаунт з цим?\nВсі існуючі дані на ${ACCOUNT} будуть втрачені.\nЦя дія не може бути скасовано. Ви впевнені?",
+ "Longer streaks lead to better rewards.": "Довший страйк - краща винагорода",
"Max number of playlists reached.": "Досягнуто максимальну кількість плейлистів.",
"Max number of profiles reached.": "Максимальна кількість профілів досягнута.",
"Maximum friend code rewards reached.": "Досягнуто ліміт кодів",
"Message is too long.": "Повідомлення занадто довге.",
+ "New tournament result!": "Новий результат турніру!",
"No servers are available. Please try again soon.": "Немає доступних серверів. Будь ласка, поспробуйте пізніше.",
+ "No slots available. Free a slot and try again.": "Немає вільних комірок. Звільни комірку й спробуй ще раз.",
"Profile \"${NAME}\" upgraded successfully.": "Профіль \"${NAME}\" оновлений успішно.",
"Profile could not be upgraded.": "Профіль не може бути оновлений.",
"Purchase successful!": "Успішна транзакція!",
@@ -1631,7 +1740,9 @@
"Sorry, this code has already been used.": "Ой, цей код вже використаний.",
"Sorry, this code has expired.": "Ой, час дії коду минув.",
"Sorry, this code only works for new accounts.": "Ой, цей код працює тільки для нових акаунтів.",
+ "Sorry, this has expired.": "Вибач, це вже закінчилося.",
"Still searching for nearby servers; please try again soon.": "Все ще йде пошук сусідніх серверів; будь-ласка, спробуйте ще раз найближчим часом.",
+ "Streak: ${NUM} days": "Страйк: ${NUM} дня/днів",
"Temporarily unavailable; please try again later.": "Тимчасово недоступний; будь ласка, спробуйте ще раз пізніше.",
"The tournament ended before you finished.": "Турнір закінчився раніше, ніж ви закінчили.",
"This account cannot be unlinked for ${NUM} days.": "Цей обліковий запис неможливо відв'язати протягом ${NUM} днів.",
@@ -1642,19 +1753,28 @@
"Tournaments require ${VERSION} or newer": "Для турнірів потрібна версія ${VERSION} або вище.",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Відв'язати ${ACCOUNT} від цього акаунта?\nВсі дані на ${ACCOUNT} будуть скинуті.\n(За винятком досягнень в деяких випадках)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ПОПЕРЕДЖЕННЯ: скарги на хакерство були видані на ваш обліковий запис.\nОблікові записи, які вважаються зламаними, будуть заблоковані. Будь ласка, грайте чесно.",
+ "Wait reduced!": "Час скорочено!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Попередження: Ця версія гри обмежена старими даними облікового запису; деякі речі можуть бути відсутніми або застарілими. \nБудь ласка, оновіть гру до новішої версії, щоб побачити актуальні дані вашого облікового запису.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Бажаєте пов'язати обліковий запис пристрою з цим?\n\nАкаунт пристрою ${ACCOUNT1}\nПоточний акаунт ${ACCOUNT2}\n\nЦе дозволить зберегти ваші нинішні досягнення.\nУвага: скасування неможлива!",
"You already own this!": "Ви це вже придбали!",
"You can join in ${COUNT} seconds.": "Ти зможеш увійти через ${COUNT} секунд",
"You don't have enough tickets for this!": "У вас недостатньо квитків для цієї покупки!",
"You don't own that.": "Вам це не належить",
"You got ${COUNT} tickets!": "Ви отримали ${COUNT} квитків!",
+ "You got ${COUNT} tokens!": "Ти отримав ${COUNT} Жетонів!",
"You got a ${ITEM}!": "Ви отримали ${ITEM}!",
+ "You got a chest!": "Ти отримав скриню!",
+ "You got an achievement reward!": "Ви отримали нагороду за досягнення!",
"You have been promoted to a new league; congratulations!": "Вас підвищили і перевели в нову лігу; вітаємо!",
+ "You lost a chest! (All your chest slots were full)": "Ви втратили скриню! (Всі ваші слоти для скринь заповненні)",
+ "You must update the app to view this.": "Щоб переглянути це, потрібно оновити програму.",
"You must update to a newer version of the app to do this.": "Щоб це зробити, ви повинні оновити додаток.",
"You must update to the newest version of the game to do this.": "Ви повинні оновитися до нової версії гри, щоб зробити це.",
"You must wait a few seconds before entering a new code.": "Зачекайте кілька секунд, перш ніж вводити новий код.",
+ "You placed #${RANK} in a tournament!": "Ти посів #${RANK} місце в турнірі!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Ваш ранг в останньому турнірі: ${RANK}! Дякуємо за гру!",
"Your account was rejected. Are you signed in?": "Вашу обліковку відхилено. Ви ввійшли?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Твої перегляди реклами не реєструються. На деякий час можливості реклами будуть обмежені.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Ваша версія гри була модифікована.\nПриберіть всі зміни і спробуйте знову",
"Your friend code was used by ${ACCOUNT}": "Ваш код був використаний ${ACCOUNT}"
},
@@ -1803,11 +1923,14 @@
"toSkipPressAnythingText": "(торкніться або натисніть що-небудь щоб пропустити туторіал)"
},
"twoKillText": "ДВОХ ЗА РАЗ!",
+ "uiScaleText": "Зміна розміру інтерфейсу",
"unavailableText": "недоступно",
+ "unclaimedPrizesText": "В тебе залишились не зібрані призи!",
"unconfiguredControllerDetectedText": "Виявлено налаштований контролер:",
"unlockThisInTheStoreText": "Це повинно бути розблоковано в магазині.",
"unlockThisProfilesText": "Щоб створити більш ${NUM} профіль, Вам необхідно:",
"unlockThisText": "Щоб розблокувати це, вам потрібно:",
+ "unsupportedControllerText": "Вибачте, контролер \"${NAME}\" не підтримується.",
"unsupportedHardwareText": "На жаль, це устаткування не підтримується в цій збірці гри.",
"upFirstText": "Для початку:",
"upNextText": "Далі в грі ${COUNT}:",
@@ -1815,11 +1938,15 @@
"upgradeText": "Оновлення",
"upgradeToPlayText": "Розблокуйте \"${PRO}\" в магазині щоб грати в це.",
"useDefaultText": "Використовувати стандартні",
+ "userSystemScriptsCreateText": "Створення системних сценаріїв користувача",
+ "userSystemScriptsDeleteText": "Видалити системні сценарії користувача",
"usesExternalControllerText": "Ця гра може використовувати зовнішній контролер для управління.",
"usingItunesText": "Використання музикального додатку для саундтрека...",
"usingItunesTurnRepeatAndShuffleOnText": "Будь ласка, переконайтеся, що випадковий порядок і повтор усіх пісень включений в Itunes.",
"v2AccountLinkingInfoText": "Щоб підключити V2-акаунти, використовуйте кнопку 'Керування акаунтом'.",
+ "v2AccountRequiredText": "Для цього потрібен обліковий запис V2. Оновіть обліковий запис і повторіть спробу.",
"validatingTestBuildText": "Перевірка тестової збірки...",
+ "viaText": "через",
"victoryText": "Перемога!",
"voteDelayText": "Ви зможете почати голосування через ${NUMBER} секунд",
"voteInProgressText": "Голосування ще триває.",
@@ -1885,5 +2012,6 @@
},
"yesAllowText": "Так, дозволити!",
"yourBestScoresText": "Ваші кращі результати",
- "yourBestTimesText": "Ваш кращий час"
+ "yourBestTimesText": "Ваш кращий час",
+ "yourPrizeText": "Твій приз:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/venetian.json b/dist/ba_data/data/languages/venetian.json
index d87d9a87..88feeca3 100644
--- a/dist/ba_data/data/languages/venetian.json
+++ b/dist/ba_data/data/languages/venetian.json
@@ -6,7 +6,9 @@
"campaignProgressText": "Progreso canpagna [Defìsiłe]: ${PROGRESS}",
"changeOncePerSeason": "Te połi canbiar ’sto dato soło na volta par stajon.",
"changeOncePerSeasonError": "Par canbiarlo te ghè da spetar ła pròsema stajon (${NUM} days).",
+ "createAnAccountText": "Fà un Conto",
"customName": "Nome parsonałizà",
+ "deleteAccountText": "Cancellare 'sto account?",
"googlePlayGamesAccountSwitchText": "Se te vołi doparar un account Google defarente,\ndòpara l'apl Google Play Giochi par canbiarlo.",
"linkAccountsEnterCodeText": "Insarisi còdaze",
"linkAccountsGenerateCodeText": "Jènara còdaze",
@@ -14,30 +16,33 @@
"linkAccountsInstructionsNewText": "Par cołegar do account, jènara un còdaze inte'l primo\ndispozidivo e insarìseło inte’l segondo. I dati de’l\nsegondo account i vegnarà sparpagnài so tuti do i account\n(i dati de’l primo account i ndarà perdesti).\n\nTe połi cołegar fin a ${COUNT} account.\n\nINPORTANTE: cołega soło i account de to propiedà.\nSe te cołeghi account de calche to amigo, no sarè\npì boni de zugar online inte’l mèdemo momento.",
"linkAccountsText": "Cołega account",
"linkedAccountsText": "Account cołegài:",
- "manageAccountText": "Jestisi account",
+ "manageAccountText": "Gestir el conto",
"nameChangeConfirm": "Vutu canbiar el nome de’l to account co ${NAME}?",
"resetProgressConfirmNoAchievementsText": "Te si drio ełimenar i to progresi so ła modałidà\ncooparadiva e i to punteji łogałi (ma miga i to biłieti).\n’Sta asion no ła połe pì èsar anułada. Vutu ndar vanti?",
"resetProgressConfirmText": "Te si drio ełimenar i to progresi so ła\nmodałidà cooparadiva, i to obietivi e i to punteji\nłogałi (ma miga i to biłieti). ’Sta asion\nno ła połe pì èsar anułada. Vutu ndar vanti?",
"resetProgressText": "Ełìmena progresi",
"setAccountName": "Inposta un nome utente",
"setAccountNameDesc": "Sełesiona el nome da vizuałizar so’l to account.\nTe połi doparar el nome da uno de i to account\ncołegài o crear un nome parsonałizà ma ùnivogo.",
- "signInInfoText": "Conétate par tirar sù biłieti, batajar online e\nsparpagnar i to progresi infrà dispozidivi defarenti.",
- "signInText": "Conétate",
+ "signInInfoText": "Acedi par tirar sù biłieti, batajar online e\nsparpagnar i tó progresi infrà dispozidivi defarenti.",
+ "signInText": "Acedi",
+ "signInWithAnEmailAddressText": "Acedi co un ndariso mail",
"signInWithDeviceInfoText": "(par 'sto dispozidivo ze disponìbiłe un soło account automàtego)",
- "signInWithDeviceText": "Conétate co un account łogałe",
+ "signInWithDeviceText": "Acedi co un account łogałe",
"signInWithGameCircleText": "Conétate co Game Circle",
"signInWithGooglePlayText": "Conétate co Google Play",
"signInWithTestAccountInfoText": "(account de proa vecio: in fuduro dòpara un account łogałe)",
"signInWithTestAccountText": "Conétate co un account de proa",
+ "signInWithText": "Acedi co ${SERVICE}",
"signInWithV2InfoText": "(un account che fusiona so tute łe piataforme)",
- "signInWithV2Text": "Acedi co un account BombSquad",
- "signOutText": "Sortisi da l'account",
- "signingInText": "Conesion in corso...",
+ "signInWithV2Text": "Acedi co' un account ${APP_NAME}",
+ "signOutText": "Và fora",
+ "signingInText": "Aceso in corso...",
"signingOutText": "Sortìa in corso...",
"ticketsText": "Biłieti: ${COUNT}",
"titleText": "Account",
"unlinkAccountsInstructionsText": "Sełesiona un account da descołegar",
"unlinkAccountsText": "Descołega account",
+ "unlinkLegacyV1AccountsText": "Descołega i account veci (V1)",
"v2LinkInstructionsText": "Acedi o dòpara 'sto link par crear un account.",
"viaAccount": "(doparando ${NAME})",
"youAreSignedInAsText": "Te zugarè cofà:"
@@ -245,7 +250,7 @@
"Sharing is Caring": {
"descriptionFull": "Sparpagna el zugo co un amigo co suceso",
"descriptionFullComplete": "Zugo sparpagnà co suceso co un amigo",
- "name": "Sparpagnar A vołe dir tegnerghe"
+ "name": "Sparpagnar vołe dir tegnerghe"
},
"Stayin' Alive": {
"description": "Vinsi sensa mai crepar",
@@ -331,9 +336,14 @@
"getMoreGamesText": "Otien pì łevełi...",
"titleText": "Zonta zugo"
},
+ "addToFavoritesText": "Zonta so i prefarìi",
+ "addedToFavoritesText": "'${NAME}' zontà so i prefarìi.",
+ "allText": "Tuto",
"allowText": "Parmeti",
"alreadySignedInText": "El to account el ze in dòparo inte n’antro\ndispozidivo: canbia account o sara sù el zugo\ninte cheł’altro to dispozidivo e proa danovo.",
"apiVersionErrorText": "Inposìbiłe cargar el mòduło ${NAME}, el se refarise a ła varsion ${VERSION_USED}. Serve invese ła ${VERSION_REQUIRED}.",
+ "applyText": "Aplicar",
+ "areYouSureText": "Te sé secùro?",
"audioSettingsWindow": {
"headRelativeVRAudioInfoText": "(Ativa \"Auto\" soło co te tachi sù łe fonarołe par ła realtà virtuałe)",
"headRelativeVRAudioText": "Àudio par fonarołe VR",
@@ -355,14 +365,23 @@
"boostText": "Potensiador",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} el se configura rento l'apl mèdema.",
"buttonText": "boton",
- "canWeDebugText": "Ghetu caro che BombSquad el reporte in automàtego bai,\nblochi e informasion baze só'l so dòparo a'l dezviłupador?\n\n'Sti dati no i contien miga informasion parsonałi ma i ło\njuta a far ndar ben el zugo sensa blochi o bai.",
+ "canWeDebugText": "Ghetu caro che ${APP_NAME} el reporte in automàtego bai,\nblochi e informasion baze só'l so dòparo a'l dezviłupador?\n\n'Sti dati no i contien miga informasion parsonałi ma i ło\njuta a far ndar ben el zugo sensa blochi o bai.",
"cancelText": "Anuła",
"cantConfigureDeviceText": "Ne despiaze, ${DEVICE} no'l ze miga configuràbiłe.",
"challengeEndedText": "'Sta sfida ła ze fenìa.",
"chatMuteText": "Siłensia ciacołada",
"chatMutedText": "Ciacołada siłensiada",
"chatUnMuteText": "Reativa son",
+ "chests": {
+ "prizeOddsText": "Speriensa de vinzar",
+ "reduceWaitText": "Cala L'aspeto",
+ "slotDescriptionText": "Sto spaziò pò tener na cassa.\n\nCata casse zugando ai łivelli de la campagna,\nClasificandose nei tornei, e compiando\nobiettivi.",
+ "slotText": "Spaziò cassa ${NUM}",
+ "slotsFullWarningText": "ATENZION: Tuti i to spazi càsa xe pieni.\nQualsiasi càsa che te ciapi da 'sta partia la andrà persa."
+ },
"choosingPlayerText": "",
+ "claimText": "Ciapa",
+ "codesExplainText": "I còdazi i vien fornìi da'l dezviłupador par\ndiagnostegar e corèjar problemi so l'account.",
"completeThisLevelToProceedText": "Par ndar vanti te ghè\nda conpletar 'sto łeveło!",
"completionBonusText": "Premio de concruzion",
"configControllersWindow": {
@@ -439,10 +458,11 @@
"movementText": "Movimento a",
"resetText": "Reinposta",
"swipeControlsHiddenText": "Scondi i comandi a zlizo",
- "swipeInfoText": "Par bituarse co i controłi a \"zlizo\" A serve un fià de pì tenpo.\nMa sensa dover vardar i controłi, el zugo el deventarà pì senpio.",
+ "swipeInfoText": "Par bituarse co i controłi a \"zlizo\" serve un fià de tenpo.\nMa sensa dover vardar i controłi, el zugo el deventarà pì senpio.",
"swipeText": "zlizo",
"titleText": "Configura schermo tàtiłe"
},
+ "configureDeviceInSystemSettingsText": "Se połe configurar ${DEVICE} so łe Inpostasion de Sistema.",
"configureItNowText": "Vutu configurarlo deso?",
"configureText": "Configura",
"connectMobileDevicesWindow": {
@@ -470,7 +490,7 @@
"customText": "E in pì...",
"entryFeeText": "Costo",
"forfeitConfirmText": "Vutu dabon dàrgheła vinta?",
- "forfeitNotAllowedYetText": "Deso A no te połi miga dàrgheła vinta suito.",
+ "forfeitNotAllowedYetText": "No te połi miga dàrgheła vinta suito.",
"forfeitText": "Dàgheła vinta",
"multipliersText": "Moltiplegadori",
"nextChallengeText": "Sfida pròsema",
@@ -493,7 +513,7 @@
"toRankedText": "par ndar sù de pozision",
"totalText": "totałe",
"tournamentInfoText": "Conpeti co cheł'altri zugadori par\nndar sù de puntejo inte ła to łega.\n\nCo'l tornèo el fenirà, i zugadori pì\nbrai i vegnarà reconpensài co i premi.",
- "welcome1Text": "Benrivài inte ła ${LEAGUE}. A te połi mejorar ła to\npozision vadagnando stełe inte i łevełi, conpletando\ni obietivi o vinsendo i trofèi inte i tornèi.",
+ "welcome1Text": "Benrivài inte ła ${LEAGUE}. Te połi mejorar ła to\npozision vadagnando stełe inte i łevełi, conpletando\ni obietivi o vinsendo i trofèi inte i tornèi.",
"welcome2Text": "Fazendo racuante atividà de 'sto tipo te połi anca vadagnar biłieti.\nI biłieti i połe èsar doparài par dezblocar parsonaji novi, łevełi e\nminizughi ma anca par ndar rento a tornèi o ver funsion in pì.",
"yourPowerRankingText": "Ła to pozision:"
},
@@ -525,7 +545,7 @@
"deathsText": "Crepà",
"debugText": "dezbao",
"debugWindow": {
- "reloadBenchmarkBestResultsText": "Nota: par 'sta proa A sarìa mejo inpostar ła Defenision so 'Alta' so Inpostasion > Gràfega > Defenision.",
+ "reloadBenchmarkBestResultsText": "Nota: par 'sta proa sarìa mejo inpostar ła Defenision so 'Alta' so Inpostasion > Gràfega > Defenision.",
"runCPUBenchmarkText": "Saja prestasion CPU",
"runGPUBenchmarkText": "Saja prestasion GPU",
"runMediaReloadBenchmarkText": "Saja prestasion recargamento gràfega",
@@ -545,6 +565,7 @@
"demoText": "Demo",
"denyText": "Refuda",
"deprecatedText": "Roba vecia",
+ "descriptionText": "Descrision",
"desktopResText": "Resołusion PC",
"deviceAccountUpgradeText": "Ocio:\nte ghè fazesto l'aceso co l'account łogałe ${NAME}.\nCo un pròsemo ajornamento i account łogałi i vegnarà cavài via.\nSe te vołi tegnerte i to progresi ajorna el to account a ła varsion V2.",
"difficultyEasyText": "Fàsiłe",
@@ -555,6 +576,10 @@
"disableRemoteAppConnectionsText": "Dezativa conesion co BombSquad Remote",
"disableXInputDescriptionText": "Dòpara pì de 4 controładori (ma co'l riscio che no i funsione ben).",
"disableXInputText": "Dezativa XInput",
+ "disabledText": "Dezativà",
+ "discardText": "Scartà",
+ "discordFriendsText": "Ghetu caro catar parsone nove par zugarghe insenbre?\nZóntate so'l nostro canałe Discord e cata fora amighi novi!",
+ "discordJoinText": "Zóntate so Discord",
"doneText": "Fato",
"drawText": "Pata",
"duplicateText": "Zdopia",
@@ -579,7 +604,7 @@
"colorText": "cołor",
"getMoreCharactersText": "Otien pì parsonaji...",
"getMoreIconsText": "Otien pì icone...",
- "globalProfileInfoText": "I profiłi zugador globałi i gà nomi ùgnołi garantìi.\nIn pì A se połe zontarghe anca icone parsonałizàe.",
+ "globalProfileInfoText": "I profiłi zugador globałi i gà nomi ùgnołi garantìi.\nIn pì se połe zontarghe anca icone parsonałizàe.",
"globalProfileText": "(profiło globałe)",
"highlightText": "detaji",
"iconText": "icona",
@@ -587,6 +612,7 @@
"localProfileText": "(profiło łogałe)",
"nameDescriptionText": "Nome zugador",
"nameText": "Nome",
+ "profileAlreadyExistsText": "Eziste dezà un profiło co 'sto nome.",
"randomText": "",
"titleEditText": "Muda profiło",
"titleNewText": "Profiło novo",
@@ -622,6 +648,7 @@
"useMusicFolderText": "Carteła de file muzegałi"
},
"editText": "Muda",
+ "enabledText": "Ativà",
"endText": "Moła",
"enjoyText": "Profìtaghine e gòdateła!",
"epicDescriptionFilterText": "${DESCRIPTION} in movensa camoma.",
@@ -633,6 +660,8 @@
"errorText": "Eror",
"errorUnknownText": "eror miga conosesto",
"exitGameText": "Vutu ndar fora da ${APP_NAME}?",
+ "expiredAgoText": "Xe scadù ${T} fà.",
+ "expiresInText": "Scade tra ${T}",
"exportSuccessText": "'${NAME}' esportà.",
"externalStorageText": "Memoria esterna",
"failText": "Desfata",
@@ -667,6 +696,8 @@
"duplicateText": "Zdopia\nłista de zugo",
"editText": "Muda\nłista de zugo",
"newText": "Nova\nłista de zugo",
+ "pointsToWinText": "Punti par vìnsar",
+ "seriesLengthText": "Łonghesa serie",
"showTutorialText": "Demostrasion",
"shuffleGameOrderText": "Zmisia òrdene łevełi",
"titleText": "Parsonałiza łiste de zugo \"${TYPE}\""
@@ -692,6 +723,7 @@
"copyCodeConfirmText": "Còdaze copià inte łe note.",
"copyCodeText": "Copia còdaze",
"dedicatedServerInfoText": "Inposta un server dedegà par rezultài pì boni. Daghe un ocio so bombsquadgame.com/server par capir come far.",
+ "descriptionShortText": "Dota de usar el tasto \"crea grupo\" par far na festa.",
"disconnectClientsText": "'Sta oparasion ła desconetarà ${COUNT} zugador/i\nda'l to grupo. Vutu ndar vanti?",
"earnTicketsForRecommendingAmountText": "Se i provarà el zugo, i to amighi i resevarà ${COUNT} biłieti\n(e ti te ghin resevarè ${YOU_COUNT} par caun de łori che'l ło dopararà)",
"earnTicketsForRecommendingText": "Sparpagna el zugo par\nver biłieti gratùidi...",
@@ -704,14 +736,14 @@
"friendHasSentPromoCodeText": "Par ti ${COUNT} biłieti de ${APP_NAME} da ${NAME}!",
"friendPromoCodeAwardText": "Tute łe 'olte che'l vegnarà doparà te resevarè ${COUNT} biłieti.",
"friendPromoCodeExpireText": "El còdaze el ze soło par i zugaduri novi e el terminarà tenpo ${EXPIRE_HOURS} ore.",
- "friendPromoCodeInstructionsText": "Par dopararlo, verzi ${APP_NAME} e và so \"Inpostasion > Avansàe > Insarisi còdaze\".\nDaghe un ocio so bombsquadgame.com par i link de descargamento de'l zugo par tute łe piataforme conpatìbiłi.",
+ "friendPromoCodeInstructionsText": "Par dopararlo, verzi ${APP_NAME} e và so \"Inpostasion > Avansàe > Manda informasion\".\nVarda bombsquadgame.com par i link de descargamento de'l zugo par tute łe piataforme suportàe.",
"friendPromoCodeRedeemLongText": "El połe èsar scanbià par ${COUNT} biłieti gratùidi da ${MAX_USES} parsone.",
"friendPromoCodeRedeemShortText": "El połe èsar scanbià inte'l zugo par ${COUNT} biłieti gratùidi.",
- "friendPromoCodeWhereToEnterText": "(so \"Inpostasion > Avansàe > Insarisi còdaze\")",
+ "friendPromoCodeWhereToEnterText": "(so \"Inpostasion > Avansàe > Manda informasion\")",
"getFriendInviteCodeText": "Jènara còdaze de invido",
"googlePlayDescriptionText": "Invida zugadori de Google Play inte'l to grupo:",
"googlePlayInviteText": "Invida",
- "googlePlayReInviteText": "Se A te mandi un invido novo el/i ${COUNT} zugador(i) de\nGoogle Play inte'l to grupo el/i vegnarà desconetesto/i.\nPar tegnerlo/i in grupo màndaghe anca a łù/łori l'invido novo.",
+ "googlePlayReInviteText": "Se te mandi un invido novo el/i ${COUNT} zugador(i) de\nGoogle Play inte'l to grupo el/i vegnarà desconetesto/i.\nPar tegnerlo/i in grupo màndaghe anca a łù/łori l'invido novo.",
"googlePlaySeeInvitesText": "Mostra invidi",
"googlePlayText": "Google Play",
"googlePlayVersionOnlyText": "(soło inte ła varsion Android / Google Play)",
@@ -739,13 +771,14 @@
"manualYourLocalAddressText": "El to ndariso łogałe:",
"nearbyText": "Łogałe",
"noConnectionText": "",
+ "noPartiesAddedText": "Gnaun grupo zontà",
"otherVersionsText": "(par altre varsion)",
"partyCodeText": "Còdaze de'l grupo",
"partyInviteAcceptText": "Và ben",
"partyInviteDeclineText": "Miga deso",
"partyInviteGooglePlayExtraText": "(varda el paneło 'Google Play' inte ła fenestra 'Crea grupo')",
"partyInviteIgnoreText": "Ignora",
- "partyInviteText": "A te ze rivà un invido de ${NAME}\npar zontarte inte'l só grupo!",
+ "partyInviteText": "Te ze rivà un invido de ${NAME}\npar zontarte inte'l só grupo!",
"partyNameText": "Nome grupo",
"partyServerRunningText": "Server pa'l grupo ativo.",
"partySizeText": "grandesa",
@@ -777,7 +810,7 @@
"wifiDirectText": "Wifi direto",
"worksBetweenAllPlatformsText": "(el funsiona intrà tute łe piataforme)",
"worksWithGooglePlayDevicesText": "(el funsiona co tuti i dispozidivi co ła varsion de’l zugo de Google Play par Android)",
- "youHaveBeenSentAPromoCodeText": "A te ze stà mandà un còdaze promosionałe de ${APP_NAME}:"
+ "youHaveBeenSentAPromoCodeText": "Te ze stà mandà un còdaze promosionałe de ${APP_NAME}:"
},
"getTicketsWindow": {
"freeText": "GRATIS!",
@@ -795,12 +828,18 @@
"ticketsFromASponsorText": "Varda na reclan e\notien ${COUNT} biłieti",
"ticketsText": "${COUNT} biłieti",
"titleText": "Otien biłieti",
- "unavailableLinkAccountText": "No se połe miga cronpar so 'sta piataforma.\nVołendo, te połi cołegar 'sto account co uno inte\nn'antra piataforma e cronpar calcosa da łà.",
+ "unavailableLinkAccountText": "No se połe miga conprar so 'sta piataforma.\nVołendo, te połi cołegar 'sto account co uno inte\nn'antra piataforma e conprar calcosa da łà.",
"unavailableTemporarilyText": "'Sta funsion no ła ze miga disponìbiłe par deso: proa danovo pì tardi.",
"unavailableText": "Ne despiaze, 'sta funsion no ła ze miga disponìbiłe.",
"versionTooOldText": "Ne despiaze, 'sta varsion ła ze masa vecia: ajorna el zugo co cheła nova.",
- "youHaveShortText": "A te ghè ${COUNT}",
- "youHaveText": "A te ghè ${COUNT} biłieti"
+ "youHaveShortText": "Te ghè ${COUNT}",
+ "youHaveText": "Te ghè ${COUNT} biłieti"
+ },
+ "goldPass": {
+ "desc1InfTokensText": "Token infinidi.",
+ "desc2NoAdsText": "No reclan.",
+ "desc3ForeverText": "Par sempre.",
+ "goldPassText": "Pass Dorà"
},
"googleMultiplayerDiscontinuedText": "Me despiaze, el sarviso multizugador de Google no'l ze miga pì disponìbiłe.\nA sò drio łaorar a un renpiaso pì in presa che se połe.\nIntanto proa n'antro mètodo de conesion.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Łe cronpe vecie no łe ze miga disponìbiłi.\nPodarìa èsarghe bezogno de ajornar l'apl Google Play.",
@@ -810,10 +849,12 @@
"alwaysText": "Senpre",
"fullScreenCmdText": "Schermo pien (Cmd-F)",
"fullScreenCtrlText": "Schermo pien (Ctrl-F)",
+ "fullScreenText": "Schermo pien",
"gammaText": "Gama",
"highText": "Alta",
"higherText": "Màsema",
"lowText": "Basa",
+ "maxFPSText": "FPS màsemi",
"mediumText": "Mezana",
"neverText": "Mai",
"resolutionText": "Resołusion",
@@ -841,7 +882,7 @@
"pickUpInfoText": "- Łeva sù -\nBrinca sù bandiere, nemighi o calsìase\naltra roba miga inciodada par tera.\nStruca danovo par trarla in jiro.",
"powerupBombDescriptionText": "El te parmete de trar in jiro fin\na 3 bonbe drioman invese che 1.",
"powerupBombNameText": "Bonbe triple",
- "powerupCurseDescriptionText": "Probabilmente A te vorè schivarla\n'sta chive. ...o dìzitu de nò?",
+ "powerupCurseDescriptionText": "Probabilmente te vorè schivarla\n'sta cuà. ...o dìzitu de nò?",
"powerupCurseNameText": "Małedision",
"powerupHealthDescriptionText": "El te recarga de'l tuto ła vida.\nA no te ło gavarisi mai pensà, ahn?",
"powerupHealthNameText": "Parecio mèdego",
@@ -860,10 +901,10 @@
"powerupsSubtitleText": "Par forsa, gnaun zugo el sarìe conpleto sensa potensiadori:",
"powerupsText": "Potensiadori",
"punchInfoText": "- Crogno -\nPì che te te movi ràpidamente,\npì i to crogni i farà małe, donca\ncori, salta e và torno cofà un mato.",
- "runInfoText": "- Corsa -\nTien strucà CALSÌASE boton par córar. I botoni de testa o i griłeti nałòzeghi i ze i pì adati se\nA te łi ghè. Corendo A te rivarè prima inte i posti ma sarà pì dura voltar, donca ocio a łe crode.",
+ "runInfoText": "- Corsa -\nTien strucà CALSÌASE boton par córar. I botoni de testa o i griłeti nałòzeghi i ze i pì adati se\nte łi ghè. Corendo te rivarè prima inte i posti ma sarà pì dura voltar, donca ocio a łe crode.",
"someDaysText": "In serti dì A se gà soło voja de tirarghe crogni a calcosa. O de farla saltar par aria.",
"titleText": "Istrusion de ${APP_NAME}",
- "toGetTheMostText": "Par tirar fora el mejo da 'sto zugo A te serve:",
+ "toGetTheMostText": "Par tirar fora el mejo da 'sto zugo te serve:",
"welcomeText": "Benrivài so ${APP_NAME}!"
},
"holdAnyButtonText": "",
@@ -874,14 +915,15 @@
"importText": "Inporta",
"importingText": "Inportasion...",
"inGameClippedNameText": "rento el zugo:\n\"${NAME}\"",
+ "inboxText": "Posta",
"installDiskSpaceErrorText": "EROR: inposìbiłe fenir l’instałasion.\nEl to dispozidivo el podarìa èsar sensa spasio.\nŁìbara un fià de memoria e proa danovo.",
"internal": {
"arrowsToExitListText": "struca ${LEFT} o ${RIGHT} par ndar fora da ła serie",
"buttonText": "boton",
"cantKickHostError": "A no te połi miga parar vìa l'ospitador.",
"chatBlockedText": "${NAME} ze stà tajà fora da ła chat par ${TIME} segondi.",
- "connectedToGameText": "A te te si zontà so '${NAME}'",
- "connectedToPartyText": "A te te si zontà so'l grupo de ${NAME}!",
+ "connectedToGameText": "Te te si zontà so '${NAME}'",
+ "connectedToPartyText": "Te te si zontà so'l grupo de ${NAME}!",
"connectingToPartyText": "Conesion...",
"connectionFailedHostAlreadyInPartyText": "Conesion fałìa: l'ospitador el ze inte n'antro grupo.",
"connectionFailedPartyFullText": "Conesion fałìa: el grupo el ze pien.",
@@ -913,9 +955,9 @@
"keyboardText": "Botonera",
"kickIdlePlayersKickedText": "Ze stà parà fora ${NAME} par masa sonera.",
"kickIdlePlayersWarning1Text": "Se ła só sonera ła sèvita, ${NAME} vegnarà parà fora tenpo ${COUNT} segondi.",
- "kickIdlePlayersWarning2Text": "(A te połi dezativarlo so Inpostasion > Avansàe)",
- "leftGameText": "A te si ndà fora da '${NAME}'.",
- "leftPartyText": "A te si ndà fora da'l grupo de ${NAME}.",
+ "kickIdlePlayersWarning2Text": "(Te połi dezativarlo so Inpostasion > Avansàe)",
+ "leftGameText": "Te si ndà fora da '${NAME}'.",
+ "leftPartyText": "Te si ndà fora da'l grupo de ${NAME}.",
"noMusicFilesInFolderText": "Ła carteła no ła gà rento gnaun file muzegałe.",
"playerJoinedPartyText": "${NAME} l'se gà zontà inte'l grupo!",
"playerLeftPartyText": "${NAME} gà mołà el grupo!",
@@ -926,14 +968,16 @@
"signInNoConnectionText": "Inposìbiłe acédar. (sensa conesion internet?)",
"telnetAccessDeniedText": "EROR: l'utente no'l gà miga parmeso l'aceso co telnet.",
"timeOutText": "(tocarà a ti tenpo ${TIME} segondi)",
- "touchScreenJoinWarningText": "A te te si zontà co'l touchscreen.\nSe ła ze stà na capeła, struca 'Menù > Moła łeveło'.",
+ "touchScreenJoinWarningText": "Te te si zontà co'l touchscreen.\nSe ła ze stà na capeła, struca 'Menù > Moła łeveło'.",
"touchScreenText": "TouchScreen",
- "unableToResolveHostText": "Eror: A no ze mìa posìbiłe conétarse co l'ospitador.",
- "unavailableNoConnectionText": "Par deso mìa disponìbiłe (gnauna conesion a internet?)",
+ "unableToCompleteTryAgainText": "No se pol completar par deso.\nPar piaser, riprova.",
+ "unableToResolveHostText": "Eror: no ze miga posìbiłe conétarse co l'ospitador.",
+ "unavailableNoConnectionText": "Par deso miga disponìbiłe (gnauna conesion a internet?)",
"vrOrientationResetCardboardText": "Dopàreło par reinpostar l'orientasion de'l VR.\nA te servirà un controłador esterno par zugar.",
"vrOrientationResetText": "Reinposta orientasion VR.",
"willTimeOutText": "(ma se in sonera el ghe vegnarà cavà)."
},
+ "inventoryText": "Inventario",
"jumpBoldText": "SALTO",
"jumpText": "Salto",
"keepText": "Tien",
@@ -944,8 +988,8 @@
"kickOccurredText": "${NAME} ze stà parà fora.",
"kickQuestionText": "Vutu parar vìa ${NAME}?",
"kickText": "Para fora",
- "kickVoteCantKickAdminsText": "I aministradori no i połe mìa èsar parài vìa.",
- "kickVoteCantKickSelfText": "A no te połi mìa pararte vìa da soło.",
+ "kickVoteCantKickAdminsText": "I aministradori no i połe miga èsar parài vìa.",
+ "kickVoteCantKickSelfText": "No te połi miga pararte vìa da soło.",
"kickVoteFailedNotEnoughVotersText": "A ghe ze masa pochi zugadori par na votasion.",
"kickVoteFailedText": "Votasion de zlontanamento fałìa.",
"kickVoteStartedText": "A se gà tacà na votasion par parar vìa ${NAME}.",
@@ -979,13 +1023,16 @@
"seasonEndsHoursText": "Ła stajon ła fenirà tenpo ${NUMBER} ore.",
"seasonEndsMinutesText": "Ła stajon ła fenirà tenpo ${NUMBER} menuti.",
"seasonText": "Stajon ${NUMBER}",
- "tournamentLeagueText": "A te ghè da rivar inte ła łega ${NAME} par zugar inte 'sto tornèo.",
- "trophyCountsResetText": "Par ła stajon che ła vien el puntejo\nde i trofèi el se zerarà."
+ "tournamentLeagueText": "Par zugar inte 'sto tornèo te ghè da rivar inte ła łega ${NAME}.",
+ "trophyCountsResetText": "Par ła stajon che ła vien el puntejo\nde i trofèi el se zerarà.",
+ "upToDateBonusDescriptionText": "I zugadori che dopara 'na versiòn pì nuova de'l\nzugo i rivè 'na ${PERCENT}% de premia qua.",
+ "upToDateBonusText": "Premia atualizà"
},
+ "learnMoreText": "De Pì",
"levelBestScoresText": "I punteji mejo so ${LEVEL}",
"levelBestTimesText": "I tenpi mejo so ${LEVEL}",
"levelIsLockedText": "${LEVEL} el ze blocà.",
- "levelMustBeCompletedFirstText": "Prima A te ghè da conpletar ${LEVEL}.",
+ "levelMustBeCompletedFirstText": "Prima te ghè da conpletar ${LEVEL}.",
"levelText": "Łeveło ${NUMBER}",
"levelUnlockedText": "Łeveło dezblocà!",
"livesBonusText": "Vite bonus",
@@ -1021,9 +1068,12 @@
"maxConnectionsText": "Łìmite conesion",
"maxPartySizeText": "Łìmite grandesa grupo",
"maxPlayersText": "Łìmite zugadori",
+ "merchText": "Marcansìa BombSquad!",
"modeArcadeText": "Modałidà arcade",
"modeClassicText": "Modałidà clàsega",
"modeDemoText": "Modałidà demo",
+ "moreSoonText": "De pì in arrivo...",
+ "mostDestroyedPlayerText": "Zugador Pì Sbarazado",
"mostValuablePlayerText": "Zugador pì zgajo",
"mostViolatedPlayerText": "Zugador pì sacagnà",
"mostViolentPlayerText": "Zugador pì viołento",
@@ -1040,6 +1090,7 @@
"nameSuicideText": "${NAME} l'se gà eutanà.",
"nameText": "Nome",
"nativeText": "Nadiva",
+ "newExclaimText": "Nòvo!",
"newPersonalBestText": "Novo record parsonałe!",
"newTestBuildAvailableText": "A ze disponìbiłe na varsion de proa nova. (${VERSION} beta ${BUILD}).\nDescàrgheła da ${ADDRESS}",
"newText": "Novo",
@@ -1050,16 +1101,20 @@
"noContinuesText": "(sensa continui)",
"noExternalStorageErrorText": "So ’sto dispozidivo no ze stà catada gnauna memoria esterna",
"noGameCircleText": "Eror: no te si miga conetesto co GameCircle",
+ "noMessagesText": "Nisun messaggio.",
+ "noPluginsInstalledText": "Gnauna estension instałada",
"noScoresYetText": "Gnancora gnaun puntejo.",
+ "noServersFoundText": "Gnaun server catà.",
"noThanksText": "Nò, grasie",
"noTournamentsInTestBuildText": "AVERTENSA: i punteji de'l tornèo de 'sta varsion de proa i vegnarà ignorài.",
- "noValidMapsErrorText": "A no ze stà catà gnaun łeveło vàłido par 'sto tipo de zugo.",
+ "noValidMapsErrorText": "No ze stà catà gnaun łeveło vàłido par 'sto tipo de zugo.",
"notEnoughPlayersRemainingText": "A no ghe ze pì zugadori che basta: sortisi e taca na partìa nova.",
"notEnoughPlayersText": "A serve almanco ${COUNT} zugadori par tacar 'sta partìa!",
+ "notEnoughTicketsText": "Biłieti insuficienti!",
"notNowText": "Miga deso",
- "notSignedInErrorText": "Par partesipar A te ghè da conétarte.",
- "notSignedInGooglePlayErrorText": "Far farlo A te ghè da conétarte co Google Play.",
- "notSignedInText": "gnancora cołegà",
+ "notSignedInErrorText": "Par partesipar te ghè da acédar.",
+ "notSignedInGooglePlayErrorText": "Far farlo te ghè da acédar co Google Play.",
+ "notSignedInText": "serve l'aceso",
"notUsingAccountText": "Ocio: ze stà łasà in parte l'account ${SERVICE}.\nSe te vołi dopararlo và so 'Account > Acedi co ${SERVICE}'.",
"nothingIsSelectedErrorText": "A no ze sełesionà gnente!",
"numberText": "#${NUMBER}",
@@ -1068,6 +1123,8 @@
"onText": "Ativa",
"oneMomentText": "Un segondo...",
"onslaughtRespawnText": "Rejenerasion de ${PLAYER} inte l'ondada ${WAVE}",
+ "openNowText": "Dèsa Deso",
+ "openText": "Dèsa",
"orText": "${A} o ${B}",
"otherText": "Altro...",
"outOfText": "(#${RANK} de ${ALL})",
@@ -1111,15 +1168,19 @@
"titleText": "Profiłi zugador"
},
"playerText": "Zugador",
- "playlistNoValidGamesErrorText": "'Sta łista de zugo ła gà rento łevełi dezblocài mìa vàłidi.",
- "playlistNotFoundText": "łista de zugo mìa catada",
+ "playlistNoValidGamesErrorText": "'Sta łista de zugo ła gà rento łevełi dezblocài miga vàłidi.",
+ "playlistNotFoundText": "łista de zugo miga catada",
"playlistText": "Łista de zugo",
"playlistsText": "Łiste de zugo",
"pleaseRateText": "Se ${APP_NAME} el ze drio piazerte, tote un àtemo par\nłasarghe zó na vałudasion o scrìvarghe zó un comento. 'Ste\nopinion łe tornarà còmode par dezviłupi fuduri de'l zugo.\n\ngrasie!\n-eric",
"pleaseWaitText": "Speta n'àtemo...",
"pluginClassLoadErrorText": "Eror de cargamento de ła clase de estension '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Eror de inisiałizasion de l'estension '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Inpostasion estension",
+ "pluginsAutoEnableNewText": "Ativa in automàtego łe estension nove",
"pluginsDetectedText": "Estension nove rełevàe. Retaca el zugo par ativarle, o configùrełe so łe inpostasion.",
+ "pluginsDisableAllText": "Dezativa tute łe estension",
+ "pluginsEnableAllText": "Ativa tute łe estension",
"pluginsRemovedText": "Estension miga catàe: ${NUM}",
"pluginsText": "Estension",
"practiceText": "Pràtega",
@@ -1149,6 +1210,8 @@
"punchText": "Crogno",
"purchaseForText": "Cronpa par ${PRICE}",
"purchaseGameText": "Cronpa el zugo",
+ "purchaseNeverAvailableText": "Scusa, i comprì no se poł far in 'sta build.\nFai ‘na prova a fare la registrazión del to account su ‘na altra piattaforma e conpra lì.",
+ "purchaseNotAvailableText": "Conpera no disponibile.",
"purchasingText": "Cronpa in corso...",
"quitGameText": "Vutu sortir da ${APP_NAME}?",
"quittingIn5SecondsText": "Sortìa tenpo 5 segondi...",
@@ -1165,7 +1228,7 @@
"app_name_short": "BSRemote",
"button_position": "Pozision botoni",
"button_size": "Grandesa botoni",
- "cant_resolve_host": "A no ze mìa posìbiłe catar fora l'ospitador.",
+ "cant_resolve_host": "No ze miga posìbiłe catar fora l'ospitador.",
"capturing": "Drio spetar i zugadori…",
"connected": "Conetesto.",
"description": "Dòpara el to tełèfono o tołeto cofà controłador par BombSquad.\nPołe conétarse so un schermo ùgnoło fin a 8 dispozidivi insenbre, par un feston bueło multizugador!",
@@ -1190,12 +1253,13 @@
"version_mismatch": "Varsion zbałiada.\nSegùrate che BombSquad e BombSquad Remote i\nsipie ajornài a ła varsion ùltema e proa danovo."
},
"removeInGameAdsText": "Par cavar vìa łe reclan, dezbloca \"${PRO}\" inte ła botega.",
+ "removeInGameAdsTokenPurchaseText": "OFERTA PAR UN TEMPO LIMITÀ: cronpa qualsevò pacchète de getoni par cavare le reclan de'l zugo.",
"renameText": "Renòmena",
"replayEndText": "Sara sù Revardo",
"replayNameDefaultText": "Revardo partìa ùltema",
"replayReadErrorText": "Eror de łedura de'l file de revardo.",
"replayRenameWarningText": "Par salvar na partìa fenìa, renòmena \"${REPLAY}\". Senò te sevitarè sorascrìvarle.",
- "replayVersionErrorText": "Ne despiaze, 'sto revardo el ze stà fato co na varsion\nde'l zugo defarente e no'l połe mìa èsar doparà.",
+ "replayVersionErrorText": "'Sto revardo el ze stà fato co na varsion de'l\nzugo defarente e no'l połe miga èsar doparà.",
"replayWatchText": "Varda revardo",
"replayWriteErrorText": "Eror de salvatajo de'l revardo.",
"replaysText": "Revardi",
@@ -1210,9 +1274,11 @@
"revertText": "Anuła",
"runText": "Cori",
"saveText": "Salva",
- "scanScriptsErrorText": "Tirando sù i script A se gà catà erori: varda el rejistro eventi par i detaji.",
+ "scanScriptsErrorText": "Eror de scansion de i script: varda el rejistro eventi par i detaji.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} e ${NUM} n'antro/i mòduło/i el/i gà èsar ajornà/i par l'api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} el gà èsar ajornà par l'api ${API}.",
"scoreChallengesText": "Puntejo sfide",
- "scoreListUnavailableText": "Łista de puntejo mìa disponìbiłe.",
+ "scoreListUnavailableText": "Łista de puntejo miga disponìbiłe.",
"scoreText": "Puntejo",
"scoreUnits": {
"millisecondsText": "Miłesegondi",
@@ -1221,6 +1287,7 @@
},
"scoreWasText": "(prima ${COUNT})",
"selectText": "Sełesiona",
+ "sendInfoDescriptionText": "Par mandarghe informasion so'l stado de account e apl a'l dezviłupador.\nZóntaghe el tó nome e ła rajon de'l parché te ghe scrivi.",
"seriesWinLine1PlayerText": "GÀ VINTO ŁA",
"seriesWinLine1TeamText": "GÀ VINTO ŁA",
"seriesWinLine1Text": "GÀ VINTO ŁA",
@@ -1238,40 +1305,52 @@
"alwaysUseInternalKeyboardDescriptionText": "(na botonera so schermo, senpia e còmoda, par scrìvar testi)",
"alwaysUseInternalKeyboardText": "Dòpara botonera integrada",
"benchmarksText": "Prestasion & Proe soto sforso",
- "disableCameraGyroscopeMotionText": "Dezativa movimento de ła prospetiva łigada a'l jiroscopio",
- "disableCameraShakeText": "Dezativa i zgorlamenti de ła videocàmara",
- "disableThisNotice": "(A te połi dezativar 'sta notìfega inte łe inpostasion avansàe)",
+ "devToolsText": "Strumenti dezviłupador",
+ "disableCameraGyroscopeMotionText": "Dezativa movimento de ła prospetiva co'l jiroscopio",
+ "disableCameraShakeText": "Dezativa zgorlamenti de ła videocàmara",
+ "disableThisNotice": "(Te połi dezativar 'sta notìfega inte łe inpostasion avansàe)",
"enablePackageModsDescriptionText": "(l'ativasion de ła capasidà de modifegasion ła dezativa el zugo in rede)",
"enablePackageModsText": "Ativa pacheti mod łogałi",
"enterPromoCodeText": "Insarisi còdaze",
"forTestingText": "Nota: vałori vàłidi soło par proe. Sortendo da l'apl łi vegnarà perdesti.",
"helpTranslateText": "Łe tradusion de ${APP_NAME} łe ze curàe da vołontari.\nSe te vołi darghe na ociada a cheła veneta, struca so'l boton\ncuà soto. Curada da VeC: venetianlanguage@gmail.com",
+ "insecureConnectionsDescriptionText": "sconsiglià, ma podrìa dar la possibilità de zugar \nin-rete da reti o paesi restrèti",
+ "insecureConnectionsText": "Dòpara conesioni no sicurè",
"kickIdlePlayersText": "Para fora zugadori in sonera",
"kidFriendlyModeText": "Modałidà bocia (viołensa reduzesta, evc)",
"languageText": "Łengua",
"moddingGuideText": "Guida par modifegasion",
- "mustRestartText": "Par rèndar efetive łe modìfeghe, A te ghè da retacar el zugo.",
+ "moddingToolsText": "Strumenti de modifegasion",
+ "mustRestartText": "Par rèndar efetive łe modìfeghe, te ghè da retacar el zugo.",
"netTestingText": "Proa de rede",
"resetText": "Reinposta",
+ "sendInfoText": "Manda informasion",
"showBombTrajectoriesText": "Mostra trajetore bonbe",
+ "showDemosWhenIdleText": "Mostra demostrasion in sonera",
+ "showDeprecatedLoginTypesText": "Mostra tipi de aceso veci",
+ "showDevConsoleButtonText": "Mostra boton de i comandi dezviłupador",
+ "showInGamePingText": "Mostra łatensa de'l zugo",
"showPlayerNamesText": "Mostra nomi zugadori",
"showUserModsText": "Mostra carteła modifegasion",
"titleText": "Avansàe",
"translationEditorButtonText": "Piataforma de tradusion de ${APP_NAME}",
- "translationFetchErrorText": "stado de ła tradusion mìa disponìbiłe",
+ "translationFetchErrorText": "stado de ła tradusion miga disponìbiłe",
"translationFetchingStatusText": "controło stado de ła tradusion...",
- "translationInformMe": "Infòrmame co A ghe ze tochi novi da tradùzar",
- "translationNoUpdateNeededText": "ła tradusion in veneto ła ze aposto: un aereo!",
- "translationUpdateNeededText": "** A ghe ze testi novi da tradùzar!! **",
+ "translationInformMe": "Infòrmame co ghe ze tochi novi da tradùzar",
+ "translationNoUpdateNeededText": "Ła tradusion in veneto ła ze a posto: un aèreo!",
+ "translationUpdateNeededText": "** Ghe ze testi novi da tradùzar!! **",
"vrTestingText": "Proa VR"
},
"shareText": "Sparpagna",
"sharingText": "Sparpagnasion...",
"showText": "Mostra",
- "signInForPromoCodeText": "Conétate co un account par poder far funsionar el còdaze.",
+ "signInForPromoCodeText": "Par far funsionar el còdaze acedi co un account.",
"signInWithGameCenterText": "Par doparar un account Game Center,\nconétate da rento l'apl Game Center.",
"singleGamePlaylistNameText": "Tuti \"${GAME}\"",
"singlePlayerCountText": "1 zugador",
+ "sizeLargeText": "Granda",
+ "sizeMediumText": "Mezana",
+ "sizeSmallText": "Ceła",
"soloNameFilterText": "\"${NAME}\" 1 VS 1",
"soundtrackTypeNames": {
"CharSelect": "Sełesion parsonajo",
@@ -1312,14 +1391,14 @@
"howToUseIconsText": "(par dopararle, crea un profiło zugador globałe inte ła sesion account)",
"howToUseMapsText": "(dòpara 'sti łevełi inte łe to łiste de zugo: scuadre/tuti contro tuti)",
"iconsText": "Icone",
- "loadErrorText": "A no ze mìa posìbiłe cargar ła pàjina.\nDaghe na ociada a ła to conesion internet.",
+ "loadErrorText": "No ze miga posìbiłe cargar ła pàjina.\nDaghe na ociada a ła tó conesion internet.",
"loadingText": "cargamento",
"mapsText": "Łevełi",
"miniGamesText": "Minizughi",
"oneTimeOnlyText": "(ocazion ùgnoła)",
"purchaseAlreadyInProgressText": "Cronpa de 'sto ojeto dezà drio conpirse.",
"purchaseConfirmText": "Vutu cronpar ${ITEM}?",
- "purchaseNotValidError": "Cronpa mìa vàłida.\nSe'l ze un eror, contata ${EMAIL}.",
+ "purchaseNotValidError": "Cronpa miga vàłida.\nSe'l ze un eror, contata ${EMAIL}.",
"purchaseText": "Cronpa",
"saleBundleText": "Pacheto in oferta!",
"saleExclaimText": "Oferta!",
@@ -1344,15 +1423,18 @@
"storeText": "Botega",
"submitText": "Manda",
"submittingPromoCodeText": "Trazmision còdaze...",
+ "successText": "A posto!",
+ "supportEmailText": "Se te vedi calche problema so l'apl,\nmanda na mail a ${EMAIL}.",
"teamNamesColorText": "Nome/Cołor scuadra...",
"telnetAccessGrantedText": "Aceso a telnet ativà.",
"telnetAccessText": "Rełevà aceso a telnet: vutu autorizarlo?",
"testBuildErrorText": "'Sta varsion de proa no ła ze miga pì ativa. Controła se A ghin ze una pì resente.",
"testBuildText": "Varsion de proa",
- "testBuildValidateErrorText": "A no ze mìa posìbiłe varifegar ła varsion de proa. (gnauna conesion a internet?)",
+ "testBuildValidateErrorText": "No ze miga posìbiłe varifegar ła varsion de proa. (gnauna conesion a internet?)",
"testBuildValidatedText": "Varsion de proa aposto. Gòdateła!",
"thankYouText": "Grasie par el to suporto! Gùstate el zugo!",
"threeKillText": "NO GHE N'È 2 SENSA 3!!",
+ "ticketsDescriptionText": "I biłieti se pol usar par sbloccar parsonaji,\nmappe, minigiochi e altre robe ne la botega.\n\nI biłieti se pol trovar nelle càse\no vìnzi ne le campagne, nei tornei o nei obietivi.",
"timeBonusText": "Tenpo bonus",
"timeElapsedText": "Tenpo pasà",
"timeExpiredText": "Tenpo fenìo",
@@ -1363,10 +1445,23 @@
"tipText": "Drita",
"titleText": "BombSquad",
"titleVRText": "BombSquad VR",
+ "tokens": {
+ "getTokensText": "Ottieni Getoni",
+ "notEnoughTokensText": "Getoni insufficienti!",
+ "numTokensText": "${COUNT} Getoni",
+ "shinyNewCurrencyText": "Ła nova moneta brillante de BombSquad.",
+ "tokenPack1Text": "Pachetto de Getoni Pico",
+ "tokenPack2Text": "Pachetto de Getoni Mezo",
+ "tokenPack3Text": "Pachetto de Getoni Grande",
+ "tokenPack4Text": "Pachetto di Getoni Gigante",
+ "tokensDescriptionText": "I getoni se usa par velocizzar el sbloco de le càse\ne par altri vantagi de'l zogo e de'l conto.\n\nTe pol vinzer getoni nel zogo o comprargli\nin pacchetti. O cronpando el Pass Dorà par getoni\ninfiniti e no sentirli mai più.",
+ "youHaveGoldPassText": "Te gha na Pass Dorà.\nTuti i conpra de gettoni xè gratis.\nGodeli!"
+ },
"topFriendsText": "Mejori amighi",
"tournamentCheckingStateText": "Verìfega stado de'l tornèo: speta n'àtemo...",
"tournamentEndedText": "'Sto tornèo el ze fenìo. A ghin tacarà presto uno novo.",
"tournamentEntryText": "Entrada tornèo",
+ "tournamentFinalStandingsText": "Posti Finali",
"tournamentResultsRecentText": "Rezultài tornèi resenti",
"tournamentStandingsText": "Clasìfega tornèo",
"tournamentText": "Tornèo",
@@ -1422,9 +1517,21 @@
"Uber Onslaught": "Dezìo - ultra",
"Uber Runaround": "Mena torno - ultra"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Biłieti",
+ "${C} Tokens": "${C} Getoni",
+ "Chest": "Càsa",
+ "L1 Chest": "Càsa L1",
+ "L2 Chest": "Càsa L2",
+ "L3 Chest": "Càsa L3",
+ "L4 Chest": "Càsa L4",
+ "L5 Chest": "Càsa L5",
+ "L6 Chest": "Càsa L6",
+ "Unknown Chest": "Càsa Sconossùa"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Copa l'ełeto par ciapar el só posto!\nPar vìnsar resta l'ełeto par un serto tenpo.",
- "Bomb as many targets as you can.": "Bonbarda tuti i sentri che A te pol!",
+ "Bomb as many targets as you can.": "Bonbarda tuti i sentri che te połi!",
"Carry the flag for ${ARG1} seconds.": "Tiente ła bandiera par ${ARG1} segondi.",
"Carry the flag for a set length of time.": "Tiente ła bandiera par un serto tenpo.",
"Crush ${ARG1} of your enemies.": "Copa ${ARG1} nemighi.",
@@ -1524,7 +1631,9 @@
"Italian": "Itałian",
"Japanese": "Japoneze",
"Korean": "Corean",
+ "Malay": "Maleze",
"Persian": "Persian",
+ "PirateSpeak": "Léngua de pirati",
"Polish": "Połaco",
"Portuguese": "Portogheze",
"Romanian": "Romen",
@@ -1590,59 +1699,70 @@
"An error has occurred; please try again later.": "A se gà verifegà un eror: proa danovo pì tardi.",
"Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Vutu dabon cołegar 'sti profiłi?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\n'Sta asion no ła połe pì èsar anułada!",
"BombSquad Pro unlocked!": "BombSquad Pro dezblocà!",
- "Can't link 2 accounts of this type.": "A no se połe mìa cołegar 2 profiłi de 'sto tipo.",
- "Can't link 2 diamond league accounts.": "A no se połe mìa cołegar 2 profiłi de ła łega de damante.",
- "Can't link; would surpass maximum of ${COUNT} linked accounts.": "A no se połe mìa cołegarlo: A ze dezà stà cołegài un màsemo de ${COUNT} profiłi.",
+ "Can't link 2 accounts of this type.": "No se połe miga cołegar 2 profiłi de 'sto tipo.",
+ "Can't link 2 diamond league accounts.": "No se połe miga cołegar 2 profiłi de ła łega de damante.",
+ "Can't link; would surpass maximum of ${COUNT} linked accounts.": "No se połe miga cołegarlo: ze dezà stà cołegài un màsemo de ${COUNT} profiłi.",
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Rełevà un inbrojo: punteji e premi sospendesti par ${COUNT} dì.",
- "Could not establish a secure connection.": "A no ze mìa posìbiłe stabiłir na conesion segura.",
+ "Could not establish a secure connection.": "No ze miga posìbiłe stabiłir na conesion segura.",
"Daily maximum reached.": "Màsemo jornałiero pasà.",
"Entering tournament...": "Entrada inte'l tornèo...",
- "Invalid code.": "Còdaze mìa vàłido.",
+ "Invalid code.": "Còdaze miga vàłido.",
"Invalid payment; purchase canceled.": "Pagamento miga vàłido: cronpa anułada.",
- "Invalid promo code.": "Còdaze promosionałe mìa vàłido.",
- "Invalid purchase.": "Cronpa mìa vàłida.",
- "Invalid tournament entry; score will be ignored.": "Entrada inte'l tornèo mìa vàłida: el puntejo el vegnarà ignorà.",
+ "Invalid promo code.": "Còdaze promosionałe miga vàłido.",
+ "Invalid purchase.": "Cronpa miga vàłida.",
+ "Invalid tournament entry; score will be ignored.": "Entrada inte'l tornèo miga vàłida: el puntejo el vegnarà ignorà.",
"Item unlocked!": "Ojeto dezblocà!",
- "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "COŁEGAMENTO REFUDÀ. ${ACCOUNT} el contien dati\ninportanti che i ndarà PERDESTI.\nSe te vołi A te połi cołegarli in òrdane raverso\n(e pèrdar a'l só posto i dati de 'STO account cuà).",
+ "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "COŁEGAMENTO REFUDÀ. ${ACCOUNT} el contien dati\ninportanti che i ndarà PERDESTI.\nSe te vołi te połi cołegarli in òrdane raverso\n(e pèrdar a'l só posto i dati de 'STO account cuà).",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Vutu dabon cołegar l'account ${ACCOUNT} a 'sto account?\nTuti i dati so ${ACCOUNT} i ndarà perdesti.\n'Sta asion no ła połe pì èsar anułada: vutu ndar vanti?",
"Max number of playlists reached.": "Nùmaro màsemo de łiste de scolto pasà.",
"Max number of profiles reached.": "Nùmaro màsemo de profiłi pasà.",
"Maximum friend code rewards reached.": "Brincà el nùmaro màsemo de premi da'l còdaze amigo.",
"Message is too long.": "Mesajo masa łongo.",
+ "New tournament result!": "Novo risultato de'l tornèo!",
"No servers are available. Please try again soon.": "Gnaun server disponìbiłe. Proa pì tardi.",
+ "No slots available. Free a slot and try again.": "No ghe xe spazi disponibiłi, łibera un spazi e riprova.",
"Profile \"${NAME}\" upgraded successfully.": "Profiło \"${NAME}\" mejorà co suceso.",
- "Profile could not be upgraded.": "El profiło no'l połe mìa èsar mejorà.",
+ "Profile could not be upgraded.": "El profiło no'l połe miga èsar mejorà.",
"Purchase successful!": "Cronpà co suceso!",
"Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "A te ghè resevesto ${COUNT} biłieti par ver verto el zugo.\nTorna anca doman par brincàrghine ${TOMORROW_COUNT}.",
- "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "Ła funsionałidà de'l server no ła ze mìa pì suportada inte 'sta varsion de'l zugo.\nAjòrneło a ła varsion nova.",
+ "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "So 'sta varsion de'l zugo ła funsionałidà de'l server no ła ze miga pì suportada.\nAjòrneło a ła varsion nova.",
"Sorry, there are no uses remaining on this code.": "Ne despiaze, 'sto còdaze el ze dezà stà doparà a'l màsemo.",
"Sorry, this code has already been used.": "Ne despiaze, 'sto còdaze el ze dezà stà doparà.",
"Sorry, this code has expired.": "Ne despiaze, ła vałidità de 'sto còdaze ła ze terminada.",
"Sorry, this code only works for new accounts.": "Ne despiaze, 'sto còdaze el funsiona soło so i account novi.",
+ "Sorry, this has expired.": "Scusa, 'sto xe scadù.",
"Still searching for nearby servers; please try again soon.": "Reserca de server visini in corso: proa danovo pì tardi.",
"Temporarily unavailable; please try again later.": "Par deso miga disponìbiłe: proa danovo pì tardi.",
"The tournament ended before you finished.": "El tornèo el ze terminà prima che te ghesi fenìo.",
- "This account cannot be unlinked for ${NUM} days.": "'Sto account no'l połe mìa èsar descołegà prima de ${NUM} dì.",
- "This code cannot be used on the account that created it.": "'Sto còdaze no'l połe mìa èsar doparà inte l'account che'l ło gà creà.",
+ "This account cannot be unlinked for ${NUM} days.": "'Sto account no'l połe miga èsar descołegà prima de ${NUM} dì.",
+ "This code cannot be used on the account that created it.": "'Sto còdaze no'l połe miga èsar doparà inte l'account che'l ło gà creà.",
"This is currently unavailable; please try again later.": "Par deso, funsion miga disponìbiłe. Proa danovo pì tardi.",
"This requires version ${VERSION} or newer.": "A ghe serve ła varsion ${VERSION} o una pì nova.",
"Tournaments disabled due to rooted device.": "Tornèi dezativài parvìa de'l dispozidivo co'l root.",
- "Tournaments require ${VERSION} or newer": "Par i tornèi A serve ła varsion ${VERSION} o una pì resente",
+ "Tournaments require ${VERSION} or newer": "Par i tornèi serve ła varsion ${VERSION} o una pì resente",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Vutu descołegar l'account ${ACCOUNT} da 'sto account?\nTuti i dati de ${ACCOUNT} i vegnarà ełimenài.\n(obietivi a parte in calche cazo)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "AVERTENSA: el to account el ze stà segnałà par el dòparo de truchi.\nI zugaduri catài a doparar truchi i vegnarà blocài. Zuga da gałantomo.",
- "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Ghetu caro cołegar el to account łogałe co 'sto cuà?\n\nEl to account łogałe el ze ${ACCOUNT1}\n'Sto account el ze ${ACCOUNT2}\n\n'Sta oparasion ła te parmetarà de mantegner i to progresi ezistenti.\nOcio: 'sta asion no ła połe pì èsar anułada!",
+ "Wait reduced!": "Spèta calà!",
+ "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Ghetu caro cołegar el tó account łogałe co 'sto cuà?\n\nEl tó account łogałe el ze ${ACCOUNT1}\n'Sto account el ze ${ACCOUNT2}\n\n'Sta oparasion ła te parmetarà de mantegner i tó progresi ezistenti.\nOcio: 'sta asion no ła połe pì èsar anułada!",
"You already own this!": "Dezà cronpà!",
- "You can join in ${COUNT} seconds.": "A te połi zontarte tenpo ${COUNT} segondi.",
+ "You can join in ${COUNT} seconds.": "Te połi zontarte tenpo ${COUNT} segondi.",
"You don't have enough tickets for this!": "A no te ghè miga biłieti che basta par cronparlo!",
"You don't own that.": "Gnancora cronpà!",
"You got ${COUNT} tickets!": "A te ghè otegnesto ${COUNT} biłieti!",
+ "You got ${COUNT} tokens!": "A te ghè otegnesto ${COUNT} getoni!",
"You got a ${ITEM}!": "A te ghè otegnesto un ${ITEM}!",
+ "You got a chest!": "A te ghè otegnesto 'na càsa!",
+ "You got an achievement reward!": "A te ghè otegnesto 'na recompensa da obietivo!",
"You have been promoted to a new league; congratulations!": "Promosion a ła łega suparior: congratułasion!",
+ "You lost a chest! (All your chest slots were full)": "Te gh'è perduda 'na càsa!(Tuti i spazi càsa jera pieni)",
+ "You must update the app to view this.": "Bisogna ajornà pa' vedare",
"You must update to a newer version of the app to do this.": "Par ndar vanti A te ghè da ajornar l'apl a ła varsion pì resente.",
"You must update to the newest version of the game to do this.": "Par ndar vanti A te ghè da ajornar el zugo a ła varsion pì resente.",
"You must wait a few seconds before entering a new code.": "A te ghè da spetar calche segondo prima de insarir un còdaze novo.",
+ "You placed #${RANK} in a tournament!": "Te se ze clasificà #${RANK} ne'l tornèo!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Inte'l tornèo ùltemo A te si rivà #${RANK}. Grasie par ver zugà!",
"Your account was rejected. Are you signed in?": "El to account el ze stà refudà. Ghetu fato l'aceso?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Łe vostre vixuałixasion de l’inserission no łe se registra. Łe opsion publicitarie łe sarà limitae pa un fià.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Ła to copia de'l zugo ła ze stada modifegada.\nPar piaser, anuła łe modìfeghe e proa danovo.",
"Your friend code was used by ${ACCOUNT}": "El to còdaze amigo el ze stà doparà da ${ACCOUNT}"
},
@@ -1702,9 +1822,9 @@
"A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "Co'l justo tenpo de corsa, salto e rodasion, un crogno el połe copar inte un\ncolpo soło e farte vadagnar el respeto de i to amighi par tuta ła vida.",
"Always remember to floss.": "Recòrdate senpre de doparar el fiło intardentałe.",
"Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Invese de doparàrghine de fati a cazo, par ti e i to\namighi crea profiłi zugador co nomi e parense parsonałizàe.",
- "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Łe case małedision łe te transforma inte na bonba a tenpo.\nA te połi curarte soło tołendo in presa un pacheto sałude.",
+ "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Łe case małedision łe te transforma inte na bonba a tenpo.\nTe połi curarte soło tołendo in presa un pacheto sałude.",
"Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Anca se drio ła siera A no par, łe abiłidà de tuti i parsonaji\nłe ze conpagne, donca tote sù cheło che'l te połe somejar de pì.",
- "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Mai far masa i gałeti co'l scudo nerjètego: A te połi uncora farte trar baso da na croda.",
+ "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Mai far masa i gałeti co'l scudo nerjètego: te połi uncora farte trar baso da na croda.",
"Don't run all the time. Really. You will fall off cliffs.": "No stà córar tuto el tenpo. Dabon. Te fenirè zó par na croda.",
"Don't spin for too long; you'll become dizzy and fall.": "No stà ndar torno par masa tenpo: te vegnarà na storniroła e te cascarè.",
"Hold any button to run. (Trigger buttons work well if you have them)": "Tien strucà un boton calsìase par córar. (I griłeti nałòzeghi i ze i pì adati, se A te łi ghè)",
@@ -1719,14 +1839,14 @@
"If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Se te te cati tanti zugadori che và e vien, e inte'l cazo che calchedun el se dezménteghe de\nmołar el zugo, ativa ła funsion automàtega 'Para fora zugadori in sonera' inte łe inpostasion.",
"If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Se'l to dispozidivo el taca scotar o se te ghè caro sparagnar batarìa,\ncała ła \"Prospetiva\" o ła \"Resołusion\" so Inpostasion > Gràfega",
"If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Se el zugo el và a scati, proa całar ła resołusion\no ła prospetiva inte l'inpostasion gràfega.",
- "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "Par far ponto so 'Brinca ła bandiera', A te ghè da portar ła bandiera fin so ła to\nbaze. Se cheł'altra scuadra ła ze drio far ponto, A te połi fermarla anca robàndogheła.",
+ "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "Par far ponto so 'Brinca ła bandiera', te ghè da portar ła bandiera fin so ła tó\nbaze. Se cheł'altra scuadra ła ze drio far ponto, te połi fermarla anca robàndogheła.",
"In hockey, you'll maintain more speed if you turn gradually.": "Inte l'hockey, voltando gradualmente A te mantien alta ła vełosidà.",
"It's easier to win with a friend or two helping.": "A ze pì fàsiłe vìnsar se un amigo o do i te dà na man.",
"Jump just as you're throwing to get bombs up to the highest levels.": "Co A te si drio tirar na bonba, salta par farla rivar pì alta posìbiłe.",
"Land-mines are a good way to stop speedy enemies.": "Łe mine łe ze fantàsteghe par fermar i nemighi pì ràpidi.",
- "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "A te połi łevar sù e tirar racuante robe, anca cheł'altri zugadori. Trar zó da na croda\ni to nemighi ła połe èsar na stratejìa efisente che ła połe cavarte anca calche spisa.",
- "No, you can't get up on the ledge. You have to throw bombs.": "Nò, A no te połi mìa montar so'l bordo. A te ghè da tirar bonbe.",
- "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "I zugadori i połe zontarse e ndar vìa inte'l medo de ła majornasa de łe\npartìe. Ti A te połi anca tacar e destacar un controłador a'l voło.",
+ "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Te połi łevar sù e tirar racuante robe, anca cheł'altri zugadori. Trar zó da na croda\ni tó nemighi ła połe èsar na stratejìa efisente che ła połe cavarte anca calche spisa.",
+ "No, you can't get up on the ledge. You have to throw bombs.": "Nò, no te połi miga montar so'l bordo. Te ghè da tirar bonbe.",
+ "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "I zugadori i połe zontarse e ndar vìa inte'l medo de ła majornasa de łe\npartìe. Ti te połi anca tacar e destacar un controłador a'l voło.",
"Practice using your momentum to throw bombs more accurately.": "Fà pràtega tirardo bonbe corendo par far crèsar ła to presizion.",
"Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Pì vełosi che se move łe to man, pì dano i farà i to\ncrogni! Donca proa córar, saltar e ndar torno cofà un mato.",
"Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Prima de tirar na bonba cori prima indrìo e daspò in\nvanti par darghe na \"scuriatada\" e trarla pì distante.",
@@ -1739,9 +1859,9 @@
"Try tricking enemies into killing eachother or running off cliffs.": "Frega i to nemighi parché i se cope infrà de łori o i cora zó par na croda.",
"Use the pick-up button to grab the flag < ${PICKUP} >": "Dòpara el boton 'łeva sù' par brincar ła bandiera < ${PICKUP} >",
"Whip back and forth to get more distance on your throws..": "Cori prima indrìo e daspò in vanti par rivar pì distante co i to tiri...",
- "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "A te połi 'mirar' i to crogni ndando torno par drita o sanca. A torna\ncòmodo par trar baso i cataràdeghi da łe crode o par far ponto so l'hockey.",
- "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "A te połi capir el tenpo de esplozion de na bonba drio el cołor\nde łe fałive de ła micia: zało.. naranson.. roso.. e BUM!!",
- "You can throw bombs higher if you jump just before throwing.": "A te połi tirar łe bonbe pì alte, se te salti pena prima de tirarle.",
+ "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Te połi 'mirar' i tó crogni ndando torno par drita o sanca. Na comodidà\npar trar baso i cataràdeghi da łe crode o par far ponto so l'hockey.",
+ "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Te połi capir el tenpo de esplozion de na bonba drio el cołor\nde łe fałive de ła micia: zało.. naranson.. roso.. e BUM!!",
+ "You can throw bombs higher if you jump just before throwing.": "Se te salti pena prima de tirarle te trè łe bonbe pì alte.",
"You take damage when you whack your head on things,\nso try to not whack your head on things.": "Se A te bati ła testa da calche parte A te te fè małe,\ndonca proa a no zbàtar da gnauna parte.",
"Your punches do much more damage if you are running or spinning.": "I to crogni i fà pì małe se A te si drio córar o ndar torno."
}
@@ -1764,7 +1884,7 @@
"phrase11Text": "Tien strucà un boton CALSÌASE par córar.",
"phrase12Text": "Par crogni uncora pì fisi, proa córar e ndar torno INSENBRE.",
"phrase13Text": "Orpo! Colpa mia ${NAME}.",
- "phrase14Text": "A te połi łevar sù e tirar robe cofà łe bandiere o anca cofà... ${NAME}.",
+ "phrase14Text": "Te połi łevar sù e tirar robe cofà bandiere, ojeti o anca... ${NAME}.",
"phrase15Text": "In ùltema, A ghe ze łe bonbe.",
"phrase16Text": "A serve pràtega par tirar ben łe bonbe.",
"phrase17Text": "Òstrega! Un tiro miga masa beło...",
@@ -1791,22 +1911,28 @@
"toSkipPressAnythingText": "(toca o struca un boton par saltar ła demostrasion)"
},
"twoKillText": "E 2 DE COPÀI!",
+ "uiScaleText": "Grandesa interfasa",
"unavailableText": "miga disponìbiłe",
"unconfiguredControllerDetectedText": "Rełevà controłador miga configurà:",
"unlockThisInTheStoreText": "Da dezblocar inte ła botega.",
"unlockThisProfilesText": "Par crear pì de ${NUM} profiłi, A te serve:",
"unlockThisText": "Par dezblocar 'sta funsion A te serve:",
- "unsupportedHardwareText": "Ne despiaze, 'sto hardware no'l ze mìa conpatìbiłe co 'sta varsion de'l zugo.",
+ "unsupportedControllerText": "El controłador \"${NAME}\" no'l ze miga suportà.",
+ "unsupportedHardwareText": "'Sto hardware no'l ze miga conpatìbiłe co 'sta varsion de'l zugo.",
"upFirstText": "Par tacar:",
"upNextText": "Inte'l łeveło n°${COUNT}:",
"updatingAccountText": "Ajornamento de'l to account...",
"upgradeText": "Mejora",
"upgradeToPlayText": "Par zugarghe, dezbloca \"${PRO}\" inte ła botega.",
"useDefaultText": "Reinposta",
+ "userSystemScriptsCreateText": "Crea script de sistema de l'utente",
+ "userSystemScriptsDeleteText": "Ełìmena script de sistema de l'utente",
"usesExternalControllerText": "'Sto zugo el dòpara un controłador esterno cofà dispozidivo de entrada.",
"usingItunesText": "Doparar l'apl de mùzega par el son de fondo...",
"v2AccountLinkingInfoText": "Par łigar un account V2 dòpara el boton 'Jestisi account'.",
+ "v2AccountRequiredText": "Questo gà bisogno de un account V2. Agiorna el to account e riprova.",
"validatingTestBuildText": "Confermasion varsion de proa...",
+ "viaText": "co",
"victoryText": "Vitoria!",
"voteDelayText": "A no te połi tacar n'antra votasion par ${NUMBER} segondi",
"voteInProgressText": "A ze dezà in corso na votasion.",
@@ -1830,8 +1956,8 @@
"replayDeleteErrorText": "A se gà verifegà un eror ełimenando el revardo.",
"replayNameText": "Nome de'l revardo",
"replayRenameErrorAlreadyExistsText": "A eziste dezà un revardo co 'sto nome.",
- "replayRenameErrorInvalidName": "A no ze mìa posìbiłe renomenar el revardo: nome mìa vàłido.",
- "replayRenameErrorText": "A se gà verifegà un eror renomenando el revardo.",
+ "replayRenameErrorInvalidName": "No ze miga posìbiłe renomenar el revardo: nome miga vàłido.",
+ "replayRenameErrorText": "Se gà verifegà un eror renomenando el revardo.",
"sharedReplaysText": "Revardi sparpagnài",
"titleText": "Varda",
"watchReplayButtonText": "Varda\nrevardo"
@@ -1864,12 +1990,13 @@
"worldsBestTimesText": "I tenpi mejo de'l mondo",
"xbox360ControllersWindow": {
"getDriverText": "Descarga el driver",
- "macInstructions2Text": "Par doparar sensa fiło i controładori, A te serve anca el resevidor\nche'l riva co l''Xbox 360 Wireless Controller par Windows'.\nUn resevidor el te parmete de conétar fin a 4 controładori.\n\nInportante: i resevidori de terse parti no i funsionarà miga co 'sto driver;\nsegùrate che'l to resevidor el sipia 'Microsoft' e miga 'XBOX 360'.\nŁa Microsoft no łi vende pì destacài, donca te servirà par forsa cheło\nvendesto insebre co'l controłador, o senò, proa sercar so Ebay.\n\nSe te cati ùtiłe el driver, ciapa in considerasion de farghe na\ndonasion a'l só dezviłupador so 'sto sito.",
+ "macInstructions2Text": "Par doparar sensa fiło i controładori, te serve anca el resevidor\nche'l riva co l''Xbox 360 Wireless Controller par Windows'.\nUn resevidor el te parmete de conétar fin a 4 controładori.\n\nInportante: i resevidori de terse parti no i funsionarà miga co 'sto driver;\nsegùrate che'l to resevidor el sipia 'Microsoft' e miga 'XBOX 360'.\nŁa Microsoft no łi vende pì destacài, donca te servirà par forsa cheło\nvendesto insebre co'l controłador, o senò, proa sercar so Ebay.\n\nSe te cati ùtiłe el driver, ciapa in considerasion de farghe na\ndonasion a'l só dezviłupador so 'sto sito.",
"macInstructionsText": "Per doparar i controładori co'l fiło de ła Xbox 360, te ghè\nda instałar el driver Mac disponìbiłe so'l link cuà soto.\nEl funsiona co anbo i controładori, co'l fiło o sensa.",
"ouyaInstructionsText": "Par doparar so Bombsquad un controłador de l'Xbox 360 co'l fiło,\ntàcheło sù inte ła porta USB de’l to dispozidivo. Te połi anca\ntacar sù pì controładori insenbre doparando un hub USB.\n\nPar doparar i controładori sensa fiło invese, te serve un resevidor\nde segnałe. Te połi catarlo, o rento ła scàtoła \"Controładori sensa fiło\nXbox 360 par Windows\", o vendesto a parte. Caun resevidor el và tacà so\nna porta USB e el te parmete de conétar fin a 4 controładori.",
"titleText": "Doparar un controłador Xbox 360 co ${APP_NAME}:"
},
"yesAllowText": "Sì, parmeti!",
"yourBestScoresText": "I to punteji mejo",
- "yourBestTimesText": "I to tenpi mejo"
+ "yourBestTimesText": "I to tenpi mejo",
+ "yourPrizeText": "El to premio:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/languages/vietnamese.json b/dist/ba_data/data/languages/vietnamese.json
index 6165104b..940c04c1 100644
--- a/dist/ba_data/data/languages/vietnamese.json
+++ b/dist/ba_data/data/languages/vietnamese.json
@@ -2,62 +2,69 @@
"accountSettingsWindow": {
"accountNameRules": "Tên tài khoản không được chứa biểu tượng cảm xúc và kí tự đặc biệt",
"accountProfileText": "Tài Khoản",
- "accountsText": "Tài khoản",
- "achievementProgressText": "Huy Hiệu:${COUNT} trong ${TOTAL}",
- "campaignProgressText": "Tiến trình(khó) :${PROGRESS}",
+ "accountsText": "Tài Khoản",
+ "achievementProgressText": "Thành tựu: ${COUNT} trên ${TOTAL}",
+ "campaignProgressText": "Tiến độ chiến dịch [Khó]: ${PROGRESS}",
"changeOncePerSeason": "Bạn chỉ có thể thay đổi một lần mỗi mùa.",
- "changeOncePerSeasonError": "Bạn có thể đổi nó vào mùa sau (${NUM} days)",
+ "changeOncePerSeasonError": "Bạn chỉ có thể đổi vào mùa sau (${NUM} ngày)",
+ "createAnAccountText": "Tạo tài khoản",
"customName": "Tên tùy chỉnh",
+ "deleteAccountText": "Xóa Tài khoản",
+ "googlePlayGamesAccountSwitchText": "Nếu bạn muốn sử dụng một tài khoản Google khác,\nhãy sử dụng ứng dụng Google Play Games để đổi.",
"linkAccountsEnterCodeText": "Nhập Mã",
- "linkAccountsGenerateCodeText": "Tạo mã",
+ "linkAccountsGenerateCodeText": "Tạo Mã",
"linkAccountsInfoText": "(Chia sẽ dữ liệu giữa các máy)",
- "linkAccountsInstructionsNewText": "Để kết nối hai tài khoản, tạo mã trên tài khoản thứ\nnhất rồi nhập vào tài khoản thứ hai. Dữ liệu trên tài\nkhoản thứ hai sẽ được đồng bộ.\n(Dữ liệu trên tài khoản thứ nhất sẽ bị xóa vĩnh viễn)\n\nBạn có thể kết nối lên đến ${COUNT} tài khoản.\n\nLƯU Ý: chỉ kết nối tài khoản của bạn;\nNếu bạn kết nối tài khoản của người khác thì\ncả hai người sẽ không thể trực tuyến cùng một lúc.",
+ "linkAccountsInstructionsNewText": "Để liên kết hai tài khoản, tạo mã trên tài khoản thứ\nnhất và nhập vào tài khoản thứ hai. Dữ liệu trên tài\nkhoản thứ hai sẽ được đồng bộ.\n(Dữ liệu trên tài khoản thứ nhất sẽ bị xóa vĩnh viễn)\n\nBạn có thể kết nối lên đến ${COUNT} tài khoản.\n\nLƯU Ý: chỉ kết nối tài khoản của bạn;\nNếu bạn kết nối tài khoản của người khác\ncả hai sẽ không thể chơi trực tuyến cùng một lúc.",
"linkAccountsInstructionsText": "Để kết nối 2 tài khoản khác nhau, tạo mã ở\nmột máy và nhập mã ở máy còn lại.\nDữ liệu sẽ được liên kết giữa các máy\nBạn có thể kết nối đến ${COUNT} thiết bị.\n\nQUAN TRỌNG: Chỉ kết nối tài khoản của bạn!\nNếu bạn kết nối tài khoản với bạn bè\nbạn không thể chơi cùng một lúc!\n\nNgoài ra: nó không thể hoàn tác, nên hãy cẩn thận!",
- "linkAccountsText": "kết nối máy khác",
- "linkedAccountsText": "Tài khoản kết nối:",
+ "linkAccountsText": "Liên kết Tài khoản",
+ "linkedAccountsText": "Tài khoản đã liên kết:",
+ "manageAccountText": "Quản lý Tài khoản",
"nameChangeConfirm": "Đổi tên tài khoản thành ${NAME}?",
- "resetProgressConfirmNoAchievementsText": "Việc này sẽ đặt lại toàn bộ dữ liệu của bạn\nngoại trừ số tiền của ban\nđiều này không thể hoàn tác. Chắc chắn?",
- "resetProgressConfirmText": "Việc này sẽ đặt lại toàn bộ dữ liệu của bạn\nvà cả huy hiệu\nngoại trừ số tiền của ban\nđiều này không thể hoàn tác. Chắc chắn?",
- "resetProgressText": "Xóa dữ liệu",
- "setAccountName": "Đặt lại tên tài khoản",
- "setAccountNameDesc": "Chọn tên cho tài khoản của bạn.\nBạn có thể dùng tên từ tài khoản đã kết nối\nhoặc tạo tên khác.",
- "signInInfoText": "Đăng nhập để lưu dữ liệu giữa các máy \nchơi online và tham gia giải đấu",
+ "resetProgressConfirmNoAchievementsText": "Việc này sẽ đặt lại tiến trình của bạn \n(ngoại trừ vé của bạn).\nĐiều này không thể hoàn tác. Xác nhận?",
+ "resetProgressConfirmText": "Việc này sẽ đặt lại toàn bộ dữ liệu của bạn\nbao gồm cả thành tựu,\n(ngoại trừ vé của bạn). Điều này không thể hoàn tác. \nXác nhận?",
+ "resetProgressText": "Xóa Tiến trình",
+ "setAccountName": "Đặt lại Tên Tài khoản",
+ "setAccountNameDesc": "Chọn tên hiển thị cho tài khoản của bạn.\nBạn có thể dùng tên từ tài khoản đã liên kết\nhoặc tạo tên mới.",
+ "signInInfoText": "Đăng nhập để thu thập vé, chơi trực tuyến, \nvà lưu dữ liệu giữa các thiết bị.",
"signInText": "Đăng Nhập",
- "signInWithDeviceInfoText": "(một tài khoản ở máy khác sẽ tự động đăng nhập)",
- "signInWithDeviceText": "đăng nhập bằng tài khoản của máy tính",
+ "signInWithAnEmailAddressText": "Đăng nhập bằng địa chỉ email",
+ "signInWithDeviceInfoText": "(thiết bị này chỉ cho phép tài khoản mặc định)",
+ "signInWithDeviceText": "Đăng nhập bằng tài khoản thiết bị",
"signInWithGameCircleText": "Đăng nhập với Game Circle",
"signInWithGooglePlayText": "đăng nhập bằng google chơi trò chơi",
"signInWithTestAccountInfoText": "(loại tài khoản đặc biệt; chỉ đăng nhập trên máy này)",
"signInWithTestAccountText": "Đăng nhập bằng tài khoản máy tính",
- "signInWithV2InfoText": "(một tài khoản hoạt động trên tất cả các nền tảng)",
- "signInWithV2Text": "Đăng nhập bằng tài khoản BombSquad",
+ "signInWithText": "Đăng nhập bằng ${SERVICE}",
+ "signInWithV2InfoText": "(tài khoản hoạt động trên tất cả các nền tảng)",
+ "signInWithV2Text": "Đăng nhập bằng tài khoản ${APP_NAME}",
"signOutText": "Đăng Xuất",
"signingInText": "Đang đăng nhập...",
- "signingOutText": "Đang Đăng xuất...",
+ "signingOutText": "Đang đăng xuất...",
"testAccountWarningCardboardText": "Cảnh Báo: bạn đang Đang Chơi tài Khoản 'Thử'\ndữ liệu sẽ bị thay thế bởi tài khoản\nvà nó sẽ đè lên TK thử\n\nBây giờ bạn sẽ có tất cả tiền trong Game\n(Bạn hãy chơi Boomsquad Pro miẽn phí",
"testAccountWarningOculusText": "Cảnh báo:bạn đang đăng nhập với kí tự chữ.Chúng sẽ được thay thế bằng kí tự ô.\nTài khoản này sẽ được dùng để mua vé và các tính năng khác.\n\n\nVà bây giờ bạn sẽ được học cách thu thập các vé trong game.\n(Mách nhỏ bạn có thể cập nhật BombSquad Pro miễn phí bằng vé)",
"testAccountWarningText": "Cảnh báo:bạn đang đăng nhập bằng tài khoản thử nghiệm.\nTài khoản này sẽ xác thưc thiết bị của bạn và sẽ xóa mất dữ liệu.\n(vì vậy chúng tôi khuyên bạn đừng bỏ nhiều thời gian thu thập \nhoặc mở các vật phẩm trong game.\n\nHãy dùng phiên bản bày bán để có tài khoản thực(vd:Game-Center,Google Plus,...)\nViệc này sẽ giúp bạn lưu trữ các quá trình \nkhi chơi bằng dữ liệu đám mây \nvà bạn có thể chơi trên các thiết bị khác.",
- "ticketsText": "Số Tiền: ${COUNT}",
+ "ticketsText": "Vé: ${COUNT}",
"titleText": "Tài Khoản",
- "unlinkAccountsInstructionsText": "Chọn tài khoản để hủy kết nối",
- "unlinkAccountsText": "Hủy kết nối",
+ "unlinkAccountsInstructionsText": "Chọn tài khoản để hủy liên kết",
+ "unlinkAccountsText": "Hủy liên kết Tài khoản",
+ "unlinkLegacyV1AccountsText": "Hủy liên kết tài khoản (V1)",
"v2LinkInstructionsText": "Sử dụng liên kết này để tạo tài khoản hoặc đăng nhập.",
"viaAccount": "(qua tài khoản ${NAME})",
- "youAreSignedInAsText": "Bạn đang đăng nhập tài khoản:"
+ "youAreSignedInAsText": "Bạn đang đăng nhập bằng:"
},
- "achievementChallengesText": "Các thành tựu đạt được.",
+ "achievementChallengesText": "Thành tựu Thử thách",
"achievementText": "Thành tựu",
"achievements": {
"Boom Goes the Dynamite": {
"description": "Tiêu diệt 3 kẻ xấu bằng TNT",
- "descriptionComplete": "Giết 3 kẻ xấu với TNT",
- "descriptionFull": "Tiêu diệt 3 kẻ xấu bằng TNT với ${LEVEL}",
+ "descriptionComplete": "Tiêu diệt 3 kẻ xấu bằng TNT",
+ "descriptionFull": "Tiêu diệt 3 kẻ xấu bằng TNT trong ${LEVEL}",
"descriptionFullComplete": "Tiêu diệt 3 kẻ xấu bằng TNT với ${LEVEL}",
- "name": "Bom tạo ra sức mạnh"
+ "name": "Bom Tạo Ra Sức Mạnh"
},
"Boxer": {
"description": "Chiến thắng mà không sử dụng bom",
- "descriptionComplete": "Đã chiến thắng mà không sử dụng bom",
+ "descriptionComplete": "Chiến thắng mà không sử dụng bom",
"descriptionFull": "Hoàn thành ${LEVEL} mà không sử dụng bom",
"descriptionFullComplete": "Hoàn thành ${LEVEL} mà không sử dụng bom",
"name": "Tay đấm xuất sắc"
@@ -65,243 +72,243 @@
"Dual Wielding": {
"descriptionFull": "Kết nối 2 điều khiển (thiết bị hoặc ứng dụng)",
"descriptionFullComplete": "Kết nối 2 điều khiển (thiết bị hoặc ứng dụng)",
- "name": "Gấp đôi điều khiển"
+ "name": "Song Kiếm"
},
"Flawless Victory": {
- "description": "Chiến thắng mà không đánh đối thủ",
- "descriptionComplete": "Đã chiến thắng mà không đánh đối thủ",
- "descriptionFull": "Nhận được ${LEVEL} mà không đánh đối thủ",
- "descriptionFullComplete": "Đã thắng ${LEVEL} mà không đánh đối thủ",
- "name": "Chiến thắng vinh quang"
+ "description": "Chiến thắng mà không nhận sát thương",
+ "descriptionComplete": "Chiến thắng mà không nhận sát thương",
+ "descriptionFull": "Chiến thắng ${LEVEL} mà không nhận sát thương",
+ "descriptionFullComplete": "Chiến thắng ${LEVEL} mà không nhận sát thương",
+ "name": "Chiến thắng Hoàn hảo"
},
"Free Loader": {
- "descriptionFull": "Chơi Đánh đơn với 2+ người chơi",
- "descriptionFullComplete": "Chơi Đánh đơn với 2+ người chơi",
- "name": "Chơi Vô Hạn"
+ "descriptionFull": "Chơi một trận Đánh đơn với 2+ người chơi",
+ "descriptionFullComplete": "Chơi một trận Đánh đơn với 2+ người chơi",
+ "name": "Cuộc chiến Đơn độc"
},
"Gold Miner": {
"description": "Tiêu diệt 6 kẻ xấu bằng mìn",
- "descriptionComplete": "Đã tiêu diệt 6 kẻ xấu bằng mìn",
- "descriptionFull": "Tiêu diệt 6 kẻ xấu bằng mìn trên ${LEVEL}",
- "descriptionFullComplete": "Đã tiêu diệt 6 kẻ xấu bằng mìn trên ${LEVEL}",
- "name": "Người đào vàng"
+ "descriptionComplete": "Tiêu diệt 6 kẻ xấu bằng mìn",
+ "descriptionFull": "Tiêu diệt 6 kẻ xấu bằng mìn trong ${LEVEL}",
+ "descriptionFullComplete": "Tiêu diệt 6 kẻ xấu bằng mìn trong ${LEVEL}",
+ "name": "Kẻ Đào vàng"
},
"Got the Moves": {
- "description": "Chiến thắng mà không đấm đối thủ hoặc sử dụng bom",
- "descriptionComplete": "Đã thắng mà không đấm đối thủ hoặc sử dụng bom",
- "descriptionFull": "Nhận được ${LEVEL} mà không đấm đối thủ hoặc sử dụng bom",
- "descriptionFullComplete": "Đã thắng ${LEVEL} mà không đắm đối thủ hoặc không sử đụng bom",
- "name": "Hãy di chuyển"
+ "description": "Chiến thắng mà không sử dụng nắm đấm hoặc bom",
+ "descriptionComplete": "Chiến thắng mà không sử dụng nắm đấm hoặc bom",
+ "descriptionFull": "Chiến thắng ${LEVEL} mà không sử dụng nắm đấm hoặc bom",
+ "descriptionFullComplete": "Chiến thắng ${LEVEL} mà không sử dụng nắm đấm hoặc bom",
+ "name": "Bước chân Thanh thoát"
},
"In Control": {
- "descriptionFull": "Kết nối với điều khiển (thiết bị hoặc ứng dụng)",
- "descriptionFullComplete": "Kết nối với điều khiển (thiết bị hoặc ứng dụng)",
- "name": "Trong điều khiển"
+ "descriptionFull": "Kết nối điều khiển (thiết bị hoặc ứng dụng)",
+ "descriptionFullComplete": "Kết nối điều khiển (thiết bị hoặc ứng dụng)",
+ "name": "Trong Tầm Kiểm Soát"
},
"Last Stand God": {
"description": "Ghi 1000 điểm",
- "descriptionComplete": "Đã ghi được 1000 điểm",
- "descriptionFull": "Ghi 1000 điểm trên ${LEVEL}",
- "descriptionFullComplete": "Đã ghi 1000 điểm trên ${LEVEL}",
- "name": "${LEVEL} Thánh"
+ "descriptionComplete": "Ghi 1000 điểm",
+ "descriptionFull": "Ghi 1000 điểm trong ${LEVEL}",
+ "descriptionFullComplete": "Ghi 1000 điểm trong ${LEVEL}",
+ "name": "Bậc Thầy ${LEVEL}"
},
"Last Stand Master": {
"description": "Ghi 250 điểm",
"descriptionComplete": "Đạt 250 điểm",
- "descriptionFull": "Điểm 250 trong vòng ${LEVEL}",
- "descriptionFullComplete": "Đạt 250 điểm trong vòng ${LEVEL}",
- "name": "Sư phụ của vòng ${LEVEL}"
+ "descriptionFull": "Ghi 250 điểm trong ${LEVEL}",
+ "descriptionFullComplete": "Đạt 250 điểm trong ${LEVEL}",
+ "name": "Nắm vững ${LEVEL}"
},
"Last Stand Wizard": {
- "description": "Điểm đạt 500",
+ "description": "Ghi 500 điểm",
"descriptionComplete": "Đạt 500 điểm",
- "descriptionFull": "Đạt 500 điểm tại ${LEVEL}",
- "descriptionFullComplete": "Đạt 500 điểm tại ${LEVEL}",
- "name": "${LEVEL} Wizard"
+ "descriptionFull": "Ghi 500 điểm trong ${LEVEL}",
+ "descriptionFullComplete": "Đạt 500 điểm trong ${LEVEL}",
+ "name": "Thông thạo ${LEVEL}"
},
"Mine Games": {
- "description": "Giết 3 kẻ xấu vứi land-mines",
- "descriptionComplete": "Giết 3 kẻ xấu với land-mines",
- "descriptionFull": "Giết 3 kẻ xấu với land-mines tại ${LEVEL}",
- "descriptionFullComplete": "Giết 3 kẻ xấu với land-mines tại ${LEVEL}",
- "name": "Trò chơi Mine"
+ "description": "Tiêu diệt 3 kẻ xấu bằng mìn",
+ "descriptionComplete": "Tiêu diệt 3 kẻ xấu bằng mìn",
+ "descriptionFull": "Tiêu diệt 3 kẻ xấu bằng mìn trong ${LEVEL}",
+ "descriptionFullComplete": "Tiêu diệt 3 kẻ xấu bằng mìn trong ${LEVEL}",
+ "name": "Minesweeper"
},
"Off You Go Then": {
- "description": "Ném 3 đối thủ khỏi bản đồ",
- "descriptionComplete": "Ném 3 kẻ xấu ra khỏi bản đồ",
- "descriptionFull": "Ném 3 kẻ xấu ra khỏi bản đồ tại ${LEVEL}",
- "descriptionFullComplete": "Ném 3 kẻ xấu ra khỏi bản đồ tại ${LEVEL}",
- "name": "Đến Ai Tiếp Theo"
+ "description": "Ném 3 kẻ xấu xuống vực",
+ "descriptionComplete": "Ném 3 kẻ xấu xuống vực",
+ "descriptionFull": "Ném 3 kẻ xấu xuống vực trong ${LEVEL}",
+ "descriptionFullComplete": "Ném 3 kẻ xấu xuống vực trong ${LEVEL}",
+ "name": "Tiễn Khách"
},
"Onslaught God": {
- "description": "Đạt 5000 điểm",
+ "description": "Ghi 5000 điểm",
"descriptionComplete": "Đạt 5000 điểm",
- "descriptionFull": "Đạt 5000 điểm tại ${LEVEL}",
- "descriptionFullComplete": "Đạt 5000 điểm tại ${LEVEL}",
- "name": "${LEVEL} thánh"
+ "descriptionFull": "Ghi 5000 điểm trong ${LEVEL}",
+ "descriptionFullComplete": "Đạt 5000 điểm trong ${LEVEL}",
+ "name": "Bậc thầy ${LEVEL}"
},
"Onslaught Master": {
- "description": "Đạt 500 điểm",
+ "description": "Ghi 500 điểm",
"descriptionComplete": "Đạt 500 điểm",
- "descriptionFull": "Đạt 500 điểm tại ${LEVEL}",
- "descriptionFullComplete": "Đạt 500 điểm tại ${LEVEL}",
- "name": "${LEVEL} Sư phụ"
+ "descriptionFull": "Ghi 500 điểm trong ${LEVEL}",
+ "descriptionFullComplete": "Đạt 500 điểm trong ${LEVEL}",
+ "name": "Nắm vững ${LEVEL}"
},
"Onslaught Training Victory": {
- "description": "Thắng tất cả các ải",
- "descriptionComplete": "Thắng tất cả các ải",
- "descriptionFull": "Thắng tất cả các ải tại ${LEVEL}",
- "descriptionFullComplete": "Thắng tất cả các ải tại ${LEVEL}",
+ "description": "Thắng tất cả các vòng",
+ "descriptionComplete": "Thắng tất cả các vòng",
+ "descriptionFull": "Thắng tất cả các vòng trong ${LEVEL}",
+ "descriptionFullComplete": "Thắng tất cả các vòng trong ${LEVEL}",
"name": "${LEVEL} Chiến thắng"
},
"Onslaught Wizard": {
- "description": "Đạt 1000 điểm",
+ "description": "Ghi 1000 điểm",
"descriptionComplete": "Đạt 1000 điểm",
- "descriptionFull": "Đạt 1000 điểm tại ${LEVEL}",
- "descriptionFullComplete": "Đạt 1000 điểm tại ${LEVEL}",
- "name": "${LEVEL} phù thủy"
+ "descriptionFull": "Ghi 1000 điểm trong ${LEVEL}",
+ "descriptionFullComplete": "Đạt 1000 điểm trong ${LEVEL}",
+ "name": "Thông thạo ${LEVEL}"
},
"Precision Bombing": {
- "description": "Thắng mà không cần powerups",
- "descriptionComplete": "Thắng mà không cần powerups",
- "descriptionFull": "Thắng tại ${LEVEL} mà không cần powerups",
- "descriptionFullComplete": "Hoàn thành ${LEVEL} mà không sử dụng Power-ups",
- "name": "Tự Tin Ném Bom"
+ "description": "Chiến thắng mà không sử dụng vật phẩm",
+ "descriptionComplete": "Chiến thắng mà không sử dụng vật phẩm",
+ "descriptionFull": "Chiến thắng trong ${LEVEL} mà không sử dụng vật phẩm",
+ "descriptionFullComplete": "Chiến thắng trong ${LEVEL} mà không sử dụng vật phẩm",
+ "name": "Ném bom Chiến lược"
},
"Pro Boxer": {
"description": "Thắng mà không sử dụng bom",
"descriptionComplete": "Thắng mà không sử dụng bom",
"descriptionFull": "Hoàn thành ${LEVEL} không sử dụng bom",
"descriptionFullComplete": "Hoàn thành ${LEVEL} không sử dụng bom",
- "name": "Đấm Bốc Chuyên Nhiệp"
+ "name": "Đấm Bốc Chuyên Nghiệp"
},
"Pro Football Shutout": {
- "description": "Thắng mà không để đội bên ghi điểm",
- "descriptionComplete": "Thắng mà không để đội bên ghi điểm",
+ "description": "Chiến thắng mà không để đội đối thủ ghi điểm",
+ "descriptionComplete": "Chiến thắng mà không để đội đối thủ ghi điểm",
"descriptionFull": "Hoàn thành ${LEVEL} mà không để đội bên ghi điểm",
- "descriptionFullComplete": "Hoàn thành ${LEVEL} mà không để đội bên ghi điểm",
- "name": "Xuất Sắc ${LEVEL}"
+ "descriptionFullComplete": "Chiến thắng ${LEVEL} mà không để đội đối thủ ghi điểm",
+ "name": "${LEVEL} Chuyên nghiệp"
},
"Pro Football Victory": {
- "description": "Hoàn thành vòng",
- "descriptionComplete": "Hoàn thành vòng",
- "descriptionFull": "Hoàn thành vòng ${LEVEL}",
- "descriptionFullComplete": "Hoàn thành vòng ${LEVEL}",
+ "description": "Chiến thắng",
+ "descriptionComplete": "Chiến thắng",
+ "descriptionFull": "Chiến thắng trong ${LEVEL}",
+ "descriptionFullComplete": "Chiến thắng trong ${LEVEL}",
"name": "Chiến thắng ${LEVEL}"
},
"Pro Onslaught Victory": {
- "description": "Đánh bại tất cả",
- "descriptionComplete": "Đánh bại tất cả",
- "descriptionFull": "Đánh bại tất cả ở ${LEVEL}",
- "descriptionFullComplete": "Đánh bại tất cả ở ${LEVEL}",
- "name": "Chiến thang ${LEVEL}"
+ "description": "Thắng tất cả các vòng",
+ "descriptionComplete": "Thắng tất cả các vòng",
+ "descriptionFull": "Thắng tất cả các vòng trong ${LEVEL}",
+ "descriptionFullComplete": "Thắng tất cả các vòng trong ${LEVEL}",
+ "name": "Chiến thắng ${LEVEL}"
},
"Pro Runaround Victory": {
"description": "Hoàn thành tất cả các vòng",
- "descriptionComplete": "Đã hoàn thành tất cả các vòng",
- "descriptionFull": "Hoàn thành tất cả các vòng tại ${LEVEL}",
- "descriptionFullComplete": "Đã hoàn thành tất cả các vòng tại ${LEVEL}",
+ "descriptionComplete": "Hoàn thành tất cả các vòng",
+ "descriptionFull": "Hoàn thành tất cả các vòng trong ${LEVEL}",
+ "descriptionFullComplete": "Hoàn thành tất cả các vòng trong ${LEVEL}",
"name": "${LEVEL} Chiến thắng"
},
"Rookie Football Shutout": {
- "description": "Thắng mà không để đối phương ghi bàn nào",
- "descriptionComplete": "Chiến thắng mà không để kẻ xấu ghi điểm",
- "descriptionFull": "Chiến thắng ${LEVEL} mà không để kẻ xấu ghi điểm",
- "descriptionFullComplete": "Chiến thắng ${LEVEL} mà không để kẻ xấu ghi điểm",
- "name": "${LEVEL} Bắn ra"
+ "description": "Chiến thắng mà không để đội đối thủ ghi điểm",
+ "descriptionComplete": "Chiến thắng mà không để đội đối thủ ghi điểm",
+ "descriptionFull": "Chiến thắng ${LEVEL} mà không để đội đối thủ ghi điểm",
+ "descriptionFullComplete": "Chiến thắng ${LEVEL} mà không để đội đối thủ ghi điểm",
+ "name": "Chiến thắng ${LEVEL}"
},
"Rookie Football Victory": {
- "description": "Hoàn Thành Trò Chơi",
- "descriptionComplete": "Hoàn Thành Trò Chơi",
- "descriptionFull": "Hoàn Thành Trò Chơi ở ${LEVEL}",
- "descriptionFullComplete": "Hoàn Thành Trò Chơi ở ${LEVEL}",
+ "description": "Chiến thắng",
+ "descriptionComplete": "Chiến thắng",
+ "descriptionFull": "Chiến thắng trong ${LEVEL}",
+ "descriptionFullComplete": "Chiến thắng trong ${LEVEL}",
"name": "Chiến Thắng ${LEVEL}"
},
"Rookie Onslaught Victory": {
- "description": "Vượt qua tất cả vòng",
- "descriptionComplete": "Vượt qua tất cả vòng",
- "descriptionFull": "Vượt qua tất cả vòng ở ${LEVEL}",
- "descriptionFullComplete": "Vượt qua tất cả vòng ở ${LEVEL}",
+ "description": "Chiến thắng tất cả các vòng",
+ "descriptionComplete": "Chiến thắng tất cả các vòng",
+ "descriptionFull": "Chiến thắng tất cả các vòng trong ${LEVEL}",
+ "descriptionFullComplete": "Chiến thắng tất cả các vòng trong ${LEVEL}",
"name": "${LEVEL} Chiến thắng"
},
"Runaround God": {
- "description": "Đạt 2000 điểm",
+ "description": "Ghi 2000 điểm",
"descriptionComplete": "Đạt 2000 điểm",
- "descriptionFull": "Đạt 2000 điểm tại ${LEVEL}",
- "descriptionFullComplete": "Đạt 2000 điểm tại ${LEVEL}",
- "name": "${LEVEL} Thánh"
+ "descriptionFull": "Ghi 2000 điểm trong ${LEVEL}",
+ "descriptionFullComplete": "Ghi 2000 điểm trong ${LEVEL}",
+ "name": "${LEVEL} Bậc Thầy"
},
"Runaround Master": {
- "description": "Đạt 500 điểm",
+ "description": "Ghi 500 điểm",
"descriptionComplete": "Đạt 500 điểm",
- "descriptionFull": "Đạt 500 điểm tại ${LEVEL}",
+ "descriptionFull": "Ghi 500 điểm tại ${LEVEL}",
"descriptionFullComplete": "Đạt 500 điểm tại ${LEVEL}",
- "name": "${LEVEL} Sư phụ"
+ "name": "Nắm Vững ${LEVEL}"
},
"Runaround Wizard": {
- "description": "Đạt 1000 điểm",
+ "description": "Ghi 1000 điểm",
"descriptionComplete": "Đạt 1000 điểm",
- "descriptionFull": "Đạt 1000 điểm tại ${LEVEL}",
- "descriptionFullComplete": "Đạt 1000 điểm tại ${LEVEL}",
- "name": "${LEVEL} Phù thủy"
+ "descriptionFull": "Ghi 1000 điểm trong ${LEVEL}",
+ "descriptionFullComplete": "Đạt 1000 điểm trong ${LEVEL}",
+ "name": "${LEVEL} Thông Thạo"
},
"Sharing is Caring": {
- "descriptionFull": "Chia sẻ thành công trò chơi này với bạn bè",
- "descriptionFullComplete": "Đã chia sẻ trò chơi này với bạn bè",
- "name": "Chia sẻ là Quan tâm"
+ "descriptionFull": "Chia sẻ với bạn bè thành công",
+ "descriptionFullComplete": "Chia sẻ với bạn bè thành công",
+ "name": "Lá Lành Đùm Lá Rách"
},
"Stayin' Alive": {
"description": "Thắng mà không chết",
"descriptionComplete": "Thắng mà không chết",
"descriptionFull": "Thắng ${LEVEL} mà không chết",
- "descriptionFullComplete": "Đã thắng ${LEVEL} mà không chết",
- "name": "Sống sót"
+ "descriptionFullComplete": "Thắng ${LEVEL} mà không chết",
+ "name": "Sống Sót"
},
"Super Mega Punch": {
- "description": "Gây sát thương 100% với một cú đấm",
- "descriptionComplete": "Gây sát thương 100% với một cú đấm",
- "descriptionFull": "Gây sát thương 100% với một cú đấm trong ${LEVEL}",
- "descriptionFullComplete": "Gây sát thương 100% với một cú đấm trong ${LEVEL}",
- "name": "Cú đấm siêu hạng"
+ "description": "Gây 100% sát thương với một cú đấm",
+ "descriptionComplete": "Gây 100% sát thương với một cú đấm",
+ "descriptionFull": "Gây 100% sát thương với một cú đấm trong ${LEVEL}",
+ "descriptionFullComplete": "Gây 100% sát thương với một cú đấm ${LEVEL}",
+ "name": "Một Đấm Là Nằm"
},
"Super Punch": {
- "description": "Gây sát thương 50% với một cú đấm",
- "descriptionComplete": "Gây sát thương 50% với một cú đấm",
- "descriptionFull": "Gây sát thương 50% với một cú đấm trong ${LEVEL}",
- "descriptionFullComplete": "Gây sát thương 50% với một cú đấm trong ${LEVEL}",
+ "description": "Gây 50% sát thương với một cú đấm",
+ "descriptionComplete": "Gây 50% sát thương với một cú đấm",
+ "descriptionFull": "Gây 50% sát thương với một cú đấm trong ${LEVEL}",
+ "descriptionFullComplete": "Gây 50% sát thương với một cú đấm trong ${LEVEL}",
"name": "Siêu đấm"
},
"TNT Terror": {
- "description": "Giết 6 kẻ địch với TNT",
- "descriptionComplete": "Giết 6 kẻ địch với TNT",
- "descriptionFull": "Giết 6 kẻ địch với TNT trong ${LEVEL}",
- "descriptionFullComplete": "Giết 6 kẻ địch với TNT trong ${LEVEL}",
- "name": "Nỗi khiếp sợ TNT"
+ "description": "Tiêu diệt 6 kẻ xấu với TNT",
+ "descriptionComplete": "Tiêu diệt 6 kẻ xấu với TNT",
+ "descriptionFull": "Tiêu diệt 6 kẻ xấu với TNT trong ${LEVEL}",
+ "descriptionFullComplete": "Tiêu diệt 6 kẻ xấu với TNT trong ${LEVEL}",
+ "name": "Thuốc Nổ Tung"
},
"Team Player": {
- "descriptionFull": "Chơi cùng với 4+ người khác",
- "descriptionFullComplete": "Chơi cùng với 4+ người khác",
+ "descriptionFull": "Bắt đầu một Trận đấu đội với 4+ người chơi",
+ "descriptionFullComplete": "Bắt đầu một Trận đấu đội với 4+ người chơi",
"name": "Đồng đội"
},
"The Great Wall": {
- "description": "Chặn toàn bộ kẻ địch",
- "descriptionComplete": "Chặn toàn bộ kẻ địch",
- "descriptionFull": "Chặn toàn bộ kẻ địch trong ${LEVEL}",
- "descriptionFullComplete": "Chặn toàn bộ kẻ địch trong ${LEVEL}",
- "name": "Bức tường vĩ đại"
+ "description": "Chặn toàn bộ kẻ xấu",
+ "descriptionComplete": "Chặn toàn bộ kẻ xấu",
+ "descriptionFull": "Chặn toàn bộ kẻ xấu trong ${LEVEL}",
+ "descriptionFullComplete": "Chặn toàn bộ kẻ xấu trong ${LEVEL}",
+ "name": "Vạn Lý Trường Thành"
},
"The Wall": {
- "description": "Chặn tất cả kẻ địch",
- "descriptionComplete": "Chặn tất cả kẻ địch",
- "descriptionFull": "Chặn tất cả kẻ địch trong ${LEVEL}",
+ "description": "Chặn toàn bộ kẻ xấu",
+ "descriptionComplete": "Chặn toàn bộ kẻ xấu",
+ "descriptionFull": "Chặn toàn bộ kẻ xấu trong ${LEVEL}",
"descriptionFullComplete": "Chặn tất cả kẻ địch trong ${LEVEL}",
- "name": "Bức tường"
+ "name": "Bức Tường"
},
"Uber Football Shutout": {
- "description": "Chiến thấng mà không cho kẻ địch ghi điểm",
- "descriptionComplete": "Chiến thấng mà không cho kẻ địch ghi điểm",
- "descriptionFull": "Chiến thấng ${LEVEL} mà không cho kẻ địch ghi điểm",
- "descriptionFullComplete": "Chiến thấng ${LEVEL} mà không cho kẻ địch ghi điểm",
+ "description": "Chiến thắng mà không để đội đối thủ ghi điểm",
+ "descriptionComplete": "Chiến thắng mà không để đội đối thủ ghi điểm",
+ "descriptionFull": "Chiến thắng ${LEVEL} mà không để đội đối thủ ghi điểm",
+ "descriptionFullComplete": "Chiến thắng ${LEVEL} mà không để đội đối thủ ghi điểm",
"name": "${LEVEL} Áp đảo"
},
"Uber Football Victory": {
@@ -312,215 +319,231 @@
"name": "${LEVEL} Chiến thắng"
},
"Uber Onslaught Victory": {
- "description": "Thắng tất cả các vòng",
- "descriptionComplete": "Thấng tất cả các ải",
- "descriptionFull": "Thấng tất cả các ải trong ${LEVEL}",
- "descriptionFullComplete": "Thấng tất cả các ải trong ${LEVEL}",
+ "description": "Chiến thắng tất cả các vòng",
+ "descriptionComplete": "Chiến thắng tất cả các vòng",
+ "descriptionFull": "Chiến thắng tất cả các vòng trong ${LEVEL}",
+ "descriptionFullComplete": "Chiến thắng tất cả các vòng trong ${LEVEL}",
"name": "${LEVEL} Chiến thấng"
},
"Uber Runaround Victory": {
- "description": "Thấng tất cả các ải",
- "descriptionComplete": "Thấng tất cả các ải",
- "descriptionFull": "Thấng tất cả các ải trong ${LEVEL}",
- "descriptionFullComplete": "Thấng tất cả các ải trong ${LEVEL}",
+ "description": "Chiến thắng tất cả các vòng",
+ "descriptionComplete": "Chiến thắng tất cả các vòng",
+ "descriptionFull": "Chiến thắng tất cả các vòng trong ${LEVEL}",
+ "descriptionFullComplete": "Chiến thắng tất cả các vòng trong ${LEVEL}",
"name": "${LEVEL} Chiến thắng"
}
},
- "achievementsRemainingText": "Các thành tựu tiếp theo:",
- "achievementsText": "Các thành tựu",
- "achievementsUnavailableForOldSeasonsText": "Xin lỗi , huy hiệu này không có ở mùa trước",
+ "achievementsRemainingText": "Thành tựu Còn lại:",
+ "achievementsText": "Thành tựu",
+ "achievementsUnavailableForOldSeasonsText": "Xin lỗi, chi tiết thành tựu không có sẵn ở mùa cũ.",
"activatedText": "${THING} đã được kích hoạt.",
"addGameWindow": {
- "getMoreGamesText": "Thêm các thể loại chơi",
- "titleText": "Thêm trận đấu"
+ "getMoreGamesText": "Thêm chế độ chơi",
+ "titleText": "Thêm Trò chơi"
},
+ "addToFavoritesText": "Thêm vào Mục yêu thích",
+ "addedToFavoritesText": "Đã thêm '${NAME}' vào Mục yêu thích.",
+ "allText": "Tất cả",
"allowText": "Cho phép",
"alreadySignedInText": "Tài khoản của bạn đã được đăng nhập trên thiết bị khác;\nhãy đổi tài khoản hoặc đăng xuất khỏi thiết bị khác\nvà thử lại.",
- "apiVersionErrorText": "Không thể tải ${NAME}; phiên bản ${VERSION_USED}; yêu cầu ${VERSION_REQUIRED}.",
+ "apiVersionErrorText": "Không thể tải ${NAME}; phiên bản của bản Mod này là ${VERSION_USED}; yêu cầu phiên bản ${VERSION_REQUIRED}.",
+ "applyText": "Áp dụng",
+ "areYouSureText": "Xác nhận?",
"audioSettingsWindow": {
- "headRelativeVRAudioInfoText": "(tự động bật chức năng này khi cắm tai phone vào)",
- "headRelativeVRAudioText": "Tai nghe VR Audio",
- "musicVolumeText": "Mức âm lượng",
- "soundVolumeText": "Mức độ âm thanh nền",
- "soundtrackButtonText": "Các bản nhạc khác",
- "soundtrackDescriptionText": "(sử dụng bài nhạc của bạn khi đang chơi game)",
+ "headRelativeVRAudioInfoText": "(tự động bật chức năng này khi cắm tai nghe )",
+ "headRelativeVRAudioText": "Âm thanh tai nghe VR",
+ "musicVolumeText": "Âm lượng Nhạc",
+ "soundVolumeText": "Âm lượng Âm thanh",
+ "soundtrackButtonText": "Nhạc Nền",
+ "soundtrackDescriptionText": "(thiết lập nhạc của bạn trong trò chơi)",
"titleText": "Âm thanh"
},
"autoText": "Tự động",
"backText": "Quay lại",
- "banThisPlayerText": "Khóa người chơi này",
- "bestOfFinalText": "Đứng đầu ${COUNT} ván",
- "bestOfSeriesText": "Đứng đầu ${COUNT} ván",
+ "banThisPlayerText": "Cấm Người chơi",
+ "bestOfFinalText": "Tổng kết ${COUNT} ván",
+ "bestOfSeriesText": "Đứng đầu ${COUNT} ván:",
"bestRankText": "Thành tích cao nhất của bạn #${RANK}",
"bestRatingText": "Đánh giá cao nhất của bạn ${RATING}",
"bombBoldText": "BOM",
"bombText": "Bom",
"boostText": "Tăng Lực",
- "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} sẽ từ được điều chỉnh.",
+ "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} sẽ tự được điều chỉnh.",
"buttonText": "Nút",
- "canWeDebugText": "Bạn có muốn BombSquad tự động gửi bug,lỗi \ngame và thồn tin cơ bản cho nhà phát triển?\n\nNhững dữ liệu này không chứa thông tin \ncá nhân và chúng giúp game chạy mượt và không gặp bug.",
+ "canWeDebugText": "Bạn có muốn ${APP_NAME} tự động báo cáo\nlỗi, sự cố và thông tin sử dụng cơ bản cho nhà phát triển không?\n\nDữ liệu này không chứa thông tin cá nhân và giúp\ntrò chơi chạy ổn định và không có lỗi.",
"cancelText": "Hủy",
- "cantConfigureDeviceText": "Rất tiếc,${DEVICE} không định cấu hình được",
+ "cantConfigureDeviceText": "Rất tiếc, ${DEVICE} không thể điều chỉnh được",
"challengeEndedText": "Thử thách này đã kết thúc.",
"chatMuteText": "Ẩn trò chuyện",
"chatMutedText": "Đã ẩn trò chuyện",
"chatUnMuteText": "Khôi phục trò chuyện",
- "choosingPlayerText": "<đang chọn nhân vật>",
+ "chests": {
+ "prizeOddsText": "Xác Suất",
+ "reduceWaitText": "Giảm Thời Gian Chờ",
+ "slotDescriptionText": "Đây là ô chứa rương.\n\nKiếm rương bằng cách chơi chiến dịchl\nđạt thứ hạng trong giải đấu, và hoàn thành \nthành tựu.",
+ "slotText": "Ô Số ${NUM}",
+ "slotsFullWarningText": "CẢNH BÁO: Đã hết ô chứa rương.\nRương bạn nhận được thêm sẽ bị mất.",
+ "unlocksInText": "Mở khóa sau"
+ },
+ "choosingPlayerText": "<đang chọn>",
+ "claimText": "Nhận",
+ "codesExplainText": "Mã được nhà phát triển cung cấp để\nchẩn đoán và khắc phục các vấn đề về tài khoản.",
"completeThisLevelToProceedText": "Bạn phải hoàn thành \ncấp độ này để tiếp tục!",
- "completionBonusText": "Hoàn thành phần thưởng",
+ "completionBonusText": "Phần Thưởng Hoàn Thành",
"configControllersWindow": {
- "configureControllersText": "Điều chỉnh bộ điều khiển",
+ "configureControllersText": "Điều chỉnh Điều khiển",
"configureKeyboard2Text": "Điều chỉnh bàn phím P2",
"configureKeyboardText": "Điều chỉnh bàn phím",
- "configureMobileText": "Thiết bị di động đang là bộ điều khiển",
- "configureTouchText": "Điều chỉnh màn hình cảm ứng",
+ "configureMobileText": "Điều khiển Thiết bị di động",
+ "configureTouchText": "Điều chỉnh Màn hình cảm ứng",
"ps3Text": "Bộ điều khiển PS3",
- "titleText": "Các bộ điều khiển",
+ "titleText": "Bộ điều khiển",
"wiimotesText": "Bộ điều khiển Wii",
"xbox360Text": "Bộ điều khiển Xbox 360"
},
"configGamepadSelectWindow": {
- "androidNoteText": "Lưu ý:bộ điều khiển sẽ hỗ trợ khác nhau tùy theo thiết bị và hệ thống Android",
+ "androidNoteText": "Lưu ý: bộ điều khiển sẽ hỗ trợ khác nhau tùy theo thiết bị và hệ thống Android",
"pressAnyButtonText": "Nhấn phím bất kỳ trên bộ điều khiển \nmà bạn muốn điều chỉnh....",
- "titleText": "Điều chỉnh bộ điều khiển"
+ "titleText": "Điều chỉnh Bộ điều khiển"
},
"configGamepadWindow": {
- "advancedText": "Phát triển",
- "advancedTitleText": "Cài đặt bộ điều khiển",
- "analogStickDeadZoneDescriptionText": "(Bật cái này nếu nhân vật của bạn trượt khi bạn nhấn cần điều hướng)",
- "analogStickDeadZoneText": "Điểm chết trên Điều khiển Analog",
- "appliesToAllText": "(áp dụng cho tất cả các bộ điều khiển với kiểu này)",
- "autoRecalibrateDescriptionText": "(bật cái này nếu nhân vật không chạy được)",
+ "advancedText": "Nâng Cao",
+ "advancedTitleText": "Cài đặt Bộ điều khiển Nâng cao",
+ "analogStickDeadZoneDescriptionText": "(Bật nếu nhân vật của bạn 'trượt' khi bạn nhấn cần điều hướng)",
+ "analogStickDeadZoneText": "Điểm chết Trên Cần điều khiển Analog",
+ "appliesToAllText": "(áp dụng cho tất cả cần điều khiển cùng kiểu)",
+ "autoRecalibrateDescriptionText": "(bật lên nếu nhân vật không chạy được tốc độ tối đa)",
"autoRecalibrateText": "Tự Đông Hiệu Chỉnh Điều Khiển Analog",
"axisText": "Trục",
"clearText": "xóa",
- "dpadText": "Màn Hình",
- "extraStartButtonText": "Thêm nút Start",
- "ifNothingHappensTryAnalogText": "Nếu không sử dụng được,thử thay thế nút điều hướng khác",
- "ifNothingHappensTryDpadText": "Nếu không sử dụng được,thử thay thế D-pad",
+ "dpadText": "4 nút di chuyển",
+ "extraStartButtonText": "Nút Bắt đầu Khác",
+ "ifNothingHappensTryAnalogText": "Nếu không sử dụng được, thử thay thế bằng cần điều khiển.",
+ "ifNothingHappensTryDpadText": "Nếu không sử dụng được, thử thay thế bằng 4 nút di chuyển.",
"ignoreCompletelyDescriptionText": "(ngăn chặn bộ điều khiển ảnh hưởng tới trò chơi hay menus)",
- "ignoreCompletelyText": "Bỏ qua toàn bộ",
+ "ignoreCompletelyText": "Bỏ qua Toàn bộ",
"ignoredButton1Text": "Bỏ qua Nút 1",
"ignoredButton2Text": "Bỏ qua Nút 2",
"ignoredButton3Text": "Bỏ qua Nút 3",
"ignoredButton4Text": "Bỏ qua Nút 4",
"ignoredButtonDescriptionText": "(dùng để ngăn nút 'home' hoặc 'sync' ảnh hưởng đến giao diện)",
- "pressAnyAnalogTriggerText": "Nhấn bất kì nút trigger",
- "pressAnyButtonOrDpadText": "Nhấn bất kì nút hay dpad nào...",
+ "pressAnyAnalogTriggerText": "Nhấn nút vật lý bất kỳ...",
+ "pressAnyButtonOrDpadText": "Nhấn nút hoặc 4 nút điều khiển bất kỳ...",
"pressAnyButtonText": "Nhấn nút bất kỳ...",
- "pressLeftRightText": "Nhấn nút trái hay phải...",
- "pressUpDownText": "Nhấn nut lên hoặc xuống...",
+ "pressLeftRightText": "Nhấn trái hoặc phải...",
+ "pressUpDownText": "Nhấn lên hoặc xuống...",
"runButton1Text": "Bật nút 1",
"runButton2Text": "Bật nút 2",
"runTrigger1Text": "Bật nút Trigger 1",
"runTrigger2Text": "Bật nút Trigger 2",
"runTriggerDescriptionText": "(nút Triggers có thể chạy với tốc độ khác nhau)",
- "secondHalfText": "Sử dụng cái này để cấu hình nửa thứ hai\ncủa thiết bị 2 bộ điều khiển trong 1\nhiển thị như một bộ điều khiển duy nhất.",
+ "secondHalfText": "Sử dụng để cấu hình \nnửa thứ hai của 1 thiết bị \ncó 2 bộ điều khiển.",
"secondaryEnableText": "Kích hoạt",
"secondaryText": "Bộ điều khiển thứ hai",
- "startButtonActivatesDefaultDescriptionText": "(tắt cái này đi nếu nút bắt đầu của bạn có nhiều nút 'menu' hơn)",
- "startButtonActivatesDefaultText": "Nút bắt đầu kích hoạt widget mặc định",
- "titleText": "Thiết lập điều khiển",
- "twoInOneSetupText": "Thiết lập cần điều khiển 2-trong-1",
- "uiOnlyDescriptionText": "(ngăn bộ điều khiển này thực sự tham gia một trò chơi)",
- "uiOnlyText": "Giới hạn sử dụng Menu",
- "unassignedButtonsRunText": "Tất cả các nút chưa được gắn Chạy",
+ "startButtonActivatesDefaultDescriptionText": "(tắt đi nếu nút bắt đầu của bạn có chức năng như nút 'menu')",
+ "startButtonActivatesDefaultText": "Nút bắt đầu Kích hoạt Widget Mặc định",
+ "titleText": "Thiết lập Điều khiển",
+ "twoInOneSetupText": "Thiết lập Cần điều khiển 2-trong-1",
+ "uiOnlyDescriptionText": "(ngăn bộ điều khiển này tham gia trò chơi)",
+ "uiOnlyText": "Giới hạn cho Sử dụng điều khiển màn hình",
+ "unassignedButtonsRunText": "Nút chưa được gán sẽ là nút Chạy",
"unsetText": "",
"vrReorientButtonText": "Nút định hướng VR"
},
"configKeyboardWindow": {
"configuringText": "Cấu hình ${DEVICE}",
- "keyboard2NoteText": "Lưu ý: hầu hết các bàn phím chỉ có thể đăng ký một vài phím bấm tại\nmột lần, vì vậy có một trình phát bàn phím thứ hai có thể hoạt động tốt hơn\nnếu có một bàn phím riêng kèm theo để họ sử dụng.\nLưu ý rằng bạn vẫn sẽ cần gán các khóa duy nhất cho\nHai người chơi ngay cả trong trường hợp đó."
+ "keyboard2NoteText": "Lưu ý: hầu hết các bàn phím chỉ có thể nhận một vài phím trong \nmột lần, vì vậy người chơi bàn phím thứ hai nên có một bàn phím riêng \nsẽ mang lại trải nghiệm sử dụng tốt hơn.\nLưu ý rằng bạn vẫn sẽ cần gán nút khác nhau cho\nhai bàn phím."
},
"configTouchscreenWindow": {
- "actionControlScaleText": "Độ lớn phím hành động",
- "actionsText": "Các hành động",
- "buttonsText": "các nút",
- "dragControlsText": "< di chuyển phím điều khiển để thay đổi vi trí chúng>",
- "joystickText": "Phím xoay",
- "movementControlScaleText": "Độ lớn phím di chuyển",
+ "actionControlScaleText": "Độ lớn Các nút Hành động",
+ "actionsText": "Hành động",
+ "buttonsText": "nút",
+ "dragControlsText": "< di chuyển phím điều khiển để thay đổi vi trí >",
+ "joystickText": "phím xoay",
+ "movementControlScaleText": "Độ lớn Phím Di chuyển",
"movementText": "Di chuyển",
- "resetText": "Chơi lại từ đầu",
- "swipeControlsHiddenText": "Ân nút di chuyển",
- "swipeInfoText": "Kiểu điều khiển 'Swipe'làm cho việc điều khiển dễ dàng hơn \nmà không cần nhìn phím",
- "swipeText": "Trượt",
- "titleText": "Điều chinh màn hình cảm ứng"
+ "resetText": "Mặc Định",
+ "swipeControlsHiddenText": "Ẩn Nút Di chuyển",
+ "swipeInfoText": "Điều khiển kiểu 'Lướt' cần thời gian làm quen nhưng \nsẽ làm cho việc chơi không nhìn phím dễ dàng hơn.",
+ "swipeText": "lướt",
+ "titleText": "Điều chinh Màn hình cảm ứng"
},
- "configureItNowText": "Điều chỉnh nó ngay ?",
+ "configureDeviceInSystemSettingsText": "${DEVICE} có thể được điều khiển trong ứng dụng Cài đặt hệ thống.",
+ "configureItNowText": "Điều chỉnh ngay?",
"configureText": "Điều chỉnh",
"connectMobileDevicesWindow": {
"amazonText": "Cửa hàng Amazon",
- "appStoreText": "Cửa hàng",
- "bestResultsText": "Để chơi game tốt hơn bạn nên sử dụng wifi mạnh.\nBạn cũng có thể tắt các thiết bị đang sử dụng \nwifi khác để giảm lag,chơi game gần người chơi \nkhác trong vong phát sóng wifi và có thể kết nối wifi direct.",
- "explanationText": "Để sử dụng điên thoại thông minh hoặc máy tính bảng để làm thiết bị điều khiển,\ncài đặt ứng dụng \"${REMOTE_APP_NAME}\" lên cấc thiết bị đó.\nTất cả các thiêt bị đều có thể kết nối với ${APP_NAME} game thông qua wifi và hoàn toàn miễn phí",
- "forAndroidText": "Cho Adndroid:",
+ "appStoreText": "App Store",
+ "bestResultsText": "Để cho kết quả tốt nhất bạn nên sử dụng Ưifi với độ trễ thấp.\nBạn có thể giảm độ trễ bằng cách tắt các thiết bị sử dụng Wifi khác,\nchơi trò chơi gần bộ phát sóng Wifi, và bằng cách kết nối tới \nngười tổ chức trực tiếp qua Ethernet.",
+ "explanationText": "Để sử dụng điên thoại thông minh hoặc máy tính bảng để làm thiết bị điều khiển,\ncài đặt ứng dụng \"${REMOTE_APP_NAME}\" lên các thiết bị đó.\nKhông giới hạn thiết bị có thể kết nối với ${APP_NAME} thông qua Wifi, và nó hoàn toàn miễn phí!",
+ "forAndroidText": "cho Android:",
"forIOSText": "cho iOS:",
- "getItForText": "Tải ${REMOTE_APP_NAME} cho IOS và Android tại App Store \nhoặc cho Android tại cửa hàng Google Play hoặc Amazone Appstore",
+ "getItForText": "Tải ${REMOTE_APP_NAME} cho IOS tại Apple App Store \nhoặc cho Android tại cửa hàng Google Play hoặc Amazon Appstore",
"googlePlayText": "Google play",
- "titleText": "Sử dụng thiết bị di động như bộ điều khiển."
+ "titleText": "Sử dụng Thiết bị di động như Bộ điều khiển:"
},
- "continuePurchaseText": "Tiếp tục cho ${PRICE}?",
+ "continuePurchaseText": "Tiếp tục với giá ${PRICE}?",
"continueText": "Tiếp tục",
- "controlsText": "Các bộ điều khiển",
+ "controlsText": "Điều khiển",
"coopSelectWindow": {
- "activenessAllTimeInfoText": "Nó không được áp dụng cho tất cả các xếp hạng",
- "activenessInfoText": "Những người chơi cùng sẽ tăng khi \nbạn chơi hoặc giảm khi bạn nghỉ.",
+ "activenessAllTimeInfoText": "Điều này không áp dụng cho bảng xếp hạng toàn thời gian.",
+ "activenessInfoText": "Hệ số này sẽ tăng vào những ngày bạn chơi \nvà giảm vào những ngày bạn không hoạt động.",
"activityText": "Hoạt động",
- "campaignText": "Đi cảnh",
- "challengesInfoText": "Nhận giải thưởng khi hoàn thành xong các minigames.\n\nPhần thưởng và độ khó tăng \nmỗi khi hoàn thành thử thách và \ngiảm xuống khi thử thách đó bị hết hạn hoặc hủy bỏ",
+ "campaignText": "Chiến dịch",
+ "challengesInfoText": "Nhận giải thưởng khi hoàn thành các Minigames.\n\nPhần thưởng và độ khó tăng lên\nmỗi khi hoàn thành thử thách và \ngiảm xuống khi thử thách đó hết hạn hoặc bị hủy bỏ.",
"challengesText": "Thử thách",
- "currentBestText": "Cao nhất hiện tại",
- "customText": "Tùy chỉnh",
- "entryFeeText": "Mục",
- "forfeitConfirmText": "Thím muốn Hủy bỏ thử thách này ?",
- "forfeitNotAllowedYetText": "Thím chưa hủy bỏ đc cái thử thách này đâu.",
+ "currentBestText": "Cao nhất Hiện tại",
+ "customText": "Thêm",
+ "entryFeeText": "Phí tham gia",
+ "forfeitConfirmText": "Bạn muốn hủy bỏ thử thách này?",
+ "forfeitNotAllowedYetText": "Bạn chưa thể hủy bỏ thử thách này.",
"forfeitText": "Hủy bỏ",
- "multipliersText": "Người chơi khác",
- "nextChallengeText": "Thử thách tiếp",
- "nextPlayText": "Lần chơi tiếp theo",
- "ofTotalTimeText": "của ${TOTAL}",
- "playNowText": "Chơi bây giờ",
+ "multipliersText": "Hệ số",
+ "nextChallengeText": "Thử thách tiếp theo",
+ "nextPlayText": "Lần chơi Tiếp theo",
+ "ofTotalTimeText": "trên ${TOTAL}",
+ "playNowText": "Chơi Ngay",
"pointsText": "Điểm",
- "powerRankingFinishedSeasonUnrankedText": "(Hoàn thành mùa không đánh giá)",
- "powerRankingNotInTopText": "(không ở top ${NUMBER})",
- "powerRankingPointsEqualsText": "= ${NUMBER} Điểm",
- "powerRankingPointsMultText": "(x ${NUMBER} Điểm)",
+ "powerRankingFinishedSeasonUnrankedText": "(không có hạng)",
+ "powerRankingNotInTopText": "(không trong top ${NUMBER})",
+ "powerRankingPointsEqualsText": "= ${NUMBER} điểm",
+ "powerRankingPointsMultText": "(x ${NUMBER} điểm)",
"powerRankingPointsText": "${NUMBER} Điểm",
- "powerRankingPointsToRankedText": "(${CURRENT} của ${REMAINING} Điểm)",
- "powerRankingText": "Xếp hạng sức mạnh",
- "prizesText": "Thưởng",
- "proMultInfoText": "Người chơi với ${PRO} nâng cấp\nnhận thêm ${PERCENT}% điểm",
+ "powerRankingPointsToRankedText": "(${CURRENT} trên ${REMAINING} điểm)",
+ "powerRankingText": "Xếp Hạng",
+ "prizesText": "Phần Thưởng",
+ "proMultInfoText": "Người chơi với ${PRO} sẽ\nnhận thêm ${PERCENT}%.",
"seeMoreText": "Thêm...",
- "skipWaitText": "Bỏ qua việc chờ đợi",
- "timeRemainingText": "Thời gian kết thúc",
- "toRankedText": "Xêp hạng",
+ "skipWaitText": "Bỏ qua Thời gian chờ",
+ "timeRemainingText": "Thời gian Còn lại",
+ "toRankedText": "Để vào Xếp hạng",
"totalText": "tổng cộng",
- "tournamentInfoText": "Hoàn thành điểm cao để cùng thi\nđấu với người chơi khác cùng giải.\n\nGiải thưởng được trao cho những người\ncó điểm cao nhất khi giải đấu kết thúc.",
- "welcome1Text": "Chào mừng đến ${LEAGUE}.Bạn có thể nâng cao hạng giải đấu của bạn \nbằng cách đánh giá,hoàn thành các thành tựu và giành các cúp ở \nphần chơi hướng dẫn.",
- "welcome2Text": "Bạn có thể kiếm vé từ các hoạt động giống nhau.\nVé có thể sử dụng để mở khóa nhân vật,màn chơi mới \nvà mini games các hướng dẫn mới và nhiều cái khác",
- "yourPowerRankingText": "Xếp hạng sức mạnh của bạn"
+ "tournamentInfoText": "Thi đấu với người chơi \nkhác trong cùng giải đấu với bạn.\n\nGiải thưởng sẽ được trao cho những người chơi \ncó điểm cao nhất khi giải đấu kết thúc.",
+ "welcome1Text": "Chào mừng đến ${LEAGUE}. Bạn có thể nâng cao hạng giải đấu của bạn \nbằng cách kiếm điểm đánh giá, hoàn thành thành tựu và giành cúp ở \ncác giải đấu.",
+ "welcome2Text": "Bạn cũng có thể kiếm vé từ các hoạt động giống nhau.\nVé có thể sử dụng để mở khóa nhân vật mới, màn chơi mới \nvà mini games, tham gia các giải đấu và nhiều hơn nữa.",
+ "yourPowerRankingText": "Xếp hạng của bạn:"
},
- "copyConfirmText": "sao chép vào clipboard",
- "copyOfText": "${NAME} copy",
+ "copyConfirmText": "Đã sao chép.",
+ "copyOfText": "Bản sao của ${NAME}",
"copyText": "Sao chép",
- "createEditPlayerText": "",
+ "createEditPlayerText": "",
"createText": "Tạo",
"creditsWindow": {
- "additionalAudioArtIdeasText": "Thêm vào âm thanh,hình ảnh mới và ý kiến bởi ${NAME}",
- "additionalMusicFromText": "Thêm âm nhạc từ ${NAME}",
- "allMyFamilyText": "Người thân và bạn bè tôi đã thử nghiệm",
- "codingGraphicsAudioText": "Mã hóa,đồ họa và âm thanh bởi ${NAME}",
- "languageTranslationsText": "Phiên dịch:",
+ "additionalAudioArtIdeasText": "Âm thanh khác, Bản vẽ ban đầu, và Ý tưởng bởi ${NAME}",
+ "additionalMusicFromText": "Âm nhạc khác từ ${NAME}",
+ "allMyFamilyText": "Những người thân và bạn bè đã giúp chơi thử trò chơi",
+ "codingGraphicsAudioText": "Code, Đồ họa và Âm thanh bởi ${NAME}",
+ "languageTranslationsText": "Phiên dịch Ngôn ngữ:",
"legalText": "Pháp lý:",
- "publicDomainMusicViaText": "Nhạc của nhóm cộng đồng qua ${NAME}",
+ "publicDomainMusicViaText": "Nhạc của cộng đồng qua ${NAME}",
"softwareBasedOnText": "Phần mềm này được phát triển trong một dự án của ${NAME}",
- "songCreditText": "${TITLE} Phát triển bởi ${PERFORMER}\nTác giả ${COMPOSER}, Sắp xếp bởi ${ARRANGER},Phát hành bởi ${PUBLISHER},\nNguồn ${SOURCE}",
- "soundAndMusicText": "Âm thanh và nhạc:",
+ "songCreditText": "${TITLE} Được trình bày bởi ${PERFORMER}\nSoạn nhạc bởi ${COMPOSER}, Sắp xếp bởi ${ARRANGER}, Phát hành bởi ${PUBLISHER},\nNguồn ${SOURCE}",
+ "soundAndMusicText": "Âm thanh và Nhạc:",
"soundsText": "Âm thanh (${SOURCE}):",
- "specialThanksText": "Dành lời cảm ơn đặc biệt cho :",
+ "specialThanksText": "Cảm ơn tới:",
"thanksEspeciallyToText": "Vô cùng cảm ơn đến ${NAME}",
"titleText": "Nhóm Sáng Tạo ${APP_NAME}",
- "whoeverInventedCoffeeText": "Ai đó tạo ra cà phê"
+ "whoeverInventedCoffeeText": "Người tạo ra cà phê"
},
"currentStandingText": "Vị trí hiện tại của bạn là #${RANK}",
"customizeText": "Tùy chinh...",
@@ -528,18 +551,18 @@
"deathsText": "Chết",
"debugText": "Sửa lỗi",
"debugWindow": {
- "reloadBenchmarkBestResultsText": "Lưu ý:khuyến nghị bật Cài Đặt->Đồ Họa->Khung Cảnh thành cao khi thử nghiệm",
- "runCPUBenchmarkText": "Chấm điểm CPU benchmark",
- "runGPUBenchmarkText": "Chấm điểm đồ họa",
- "runMediaReloadBenchmarkText": "Chạy lại nội dung chuẩn",
- "runStressTestText": "Chạy thử nghiệm",
- "stressTestPlayerCountText": "Đếm người chơi",
- "stressTestPlaylistDescriptionText": "Danh sách thử độ trễ",
- "stressTestPlaylistNameText": "Danh sách tên",
- "stressTestPlaylistTypeText": "Kiểu danh sách",
+ "reloadBenchmarkBestResultsText": "Lưu ý: Bạn nên vào Cài Đặt->Đồ Họa->Kết Cấu thành 'Cao' khi thử nghiệm.",
+ "runCPUBenchmarkText": "Chạy Kiểm tra CPU",
+ "runGPUBenchmarkText": "Chạy Kiểm tra GPU",
+ "runMediaReloadBenchmarkText": "Chạy Kiểm tra Tải đồ họa",
+ "runStressTestText": "Chạy Kiểm tra độ nặng",
+ "stressTestPlayerCountText": "Số lượng Người chơi",
+ "stressTestPlaylistDescriptionText": "Danh sách Thử Độ nặng",
+ "stressTestPlaylistNameText": "Tên danh sách",
+ "stressTestPlaylistTypeText": "Loại danh sách",
"stressTestRoundDurationText": "Thời hạn Vòng",
- "stressTestTitleText": "Thử độ trễ",
- "titleText": "Chấm điểm và đo độ trễ",
+ "stressTestTitleText": "Kiểm tra độ nặng",
+ "titleText": "Kiểm tra và đo độ nặng",
"totalReloadTimeText": "Tổng cộng thời gian lặp lại :${TIME} (xem danh sách để biết chi tiết)"
},
"defaultGameListNameText": "Danh Sách Mặc Định ${PLAYMODE}",
@@ -547,7 +570,10 @@
"deleteText": "Xóa",
"demoText": "Giới thiệu",
"denyText": "Từ chối",
+ "deprecatedText": "Không thể dùng",
+ "descriptionText": "Mô tả",
"desktopResText": "Độ phân giải",
+ "deviceAccountUpgradeText": "Cảnh báo:\nBạn đã đăng nhập với tài khoản thiết bị (${NAME}).\nTài khoản thiết bị sẽ bị xóa trong những cập nhật tương lai.\nNâng cấp lên tài khoản V2 nếu bạn muốn giữ tiến trình.",
"difficultyEasyText": "Dễ",
"difficultyHardOnlyText": "Chỉ chế độ khó",
"difficultyHardText": "Khó",
@@ -556,6 +582,10 @@
"disableRemoteAppConnectionsText": "Tắt Trình Điều Khiên",
"disableXInputDescriptionText": "Cho phép trên 4 thiết bị điều khiển nhưng nó có thể hoạt động không tốt",
"disableXInputText": "Ngắt Kết NỐi XInput",
+ "disabledText": "Vô hiệu hóa",
+ "discardText": "Hủy",
+ "discordFriendsText": "Bạn muốn tìm người mới để chơi cùng?\nTham gia Discord của chúng tôi và tìm những người bạn mới!",
+ "discordJoinText": "Tham gia Disscord",
"doneText": "Xong",
"drawText": "Hòa",
"duplicateText": "Nhân Đôi",
@@ -589,6 +619,7 @@
"localProfileText": "(tài khoản cố định)",
"nameDescriptionText": "Tên nhân vật",
"nameText": "Tên",
+ "profileAlreadyExistsText": "Hồ sơ có tên đó đã tồn tại.",
"randomText": "Ngẫu nhiên",
"titleEditText": "Chỉnh sửa thông tin",
"titleNewText": "Tạo mới",
@@ -624,6 +655,7 @@
"useMusicFolderText": "Thư mục của files nhạc"
},
"editText": "Sửa",
+ "enabledText": "Hiển thị",
"endText": "kết thúc",
"enjoyText": "Chúc vui vẻ!",
"epicDescriptionFilterText": "${DESCRIPTION} trong chế độ quay chậm.",
@@ -635,6 +667,8 @@
"errorText": "Lỗi",
"errorUnknownText": "Không rõ lỗi",
"exitGameText": "Thoát ${APP_NAME}?",
+ "expiredAgoText": "Đã hết hạn ${T} trước",
+ "expiresInText": "Hết hạn sau ${T}",
"exportSuccessText": "'${NAME}' Đã xuất",
"externalStorageText": "Bộ nhớ ngoài",
"failText": "Thất bại",
@@ -669,6 +703,8 @@
"duplicateText": "Nhân đôi \nDanh sách",
"editText": "Đặt lại \nDanh sách",
"newText": "Danh sách\nMới",
+ "pointsToWinText": "Điểm để thắng",
+ "seriesLengthText": "Độ dài loạt phim",
"showTutorialText": "Hiện Hướng dẫn",
"shuffleGameOrderText": "Xáo trộn thứ tự trò chơi",
"titleText": "Tùy chỉnh ${TYPE} Danh sách phát"
@@ -694,6 +730,7 @@
"copyCodeConfirmText": "Mã đã sao chép vào bộ nhớ",
"copyCodeText": "Sao chép mã",
"dedicatedServerInfoText": "Để có kết quả tốt nhất, hãy thiết lập một máy chủ chuyên dụng.Vào bombsquadgame.com/server để tìm hiểu cách.",
+ "descriptionShortText": "Sử dụng cửa sổ thu thập để thành lập tổ đội.",
"disconnectClientsText": "Điều này sẽ ngắt kết nối (các) người chơi ${COUNT}\n trong tổ đội của bạn.Bạn có chắc không?",
"earnTicketsForRecommendingAmountText": "Bạn bè sẽ nhận được vé ${COUNT} nếu họ thử trò chơi\n (và bạn sẽ nhận được ${YOU_COUNT} cho mỗi người làm)",
"earnTicketsForRecommendingText": "Chia sẻ trò chơi này với bạn bè\nđể có thêm vé miễn phí...",
@@ -706,10 +743,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} vé từ ${NAME}",
"friendPromoCodeAwardText": "Bạn sẽ nhận được ${COUNT} vé mỗi lần nó được sử dụng",
"friendPromoCodeExpireText": "Mã code sẽ hết hạn trong ${EXPIRE_HOURS} và chỉ hoạt động với người chơi mới.",
- "friendPromoCodeInstructionsText": "Để dùng nó,mở ${APP_NAME} và tới \"Cài đặt ->Nâng cao->Nhập mã\".\nXem bombsquadgame.com cho đường dẫn tải xuống cho tất cả hệ điều hành hỗ trợ.",
+ "friendPromoCodeInstructionsText": "Để dùng nó, mở ${APP_NAME} và tới \"Cài đặt ->Nâng cao->Gửi Thông tin\".\nTruy cập bombsquadgame.com cho đường dẫn tải xuống cho tất cả hệ điều hành hỗ trợ.",
"friendPromoCodeRedeemLongText": "Nó có thể được đổi lấy ${COUNT} vé miễn phí cho tối đa ${MAX_USES} người",
"friendPromoCodeRedeemShortText": "Nó có thể được đổi lấy vé ${COUNT} trong trò chơi.",
- "friendPromoCodeWhereToEnterText": "(trong \"Cài đặt-> Nâng cao-> Nhập mã\")",
+ "friendPromoCodeWhereToEnterText": "(trong \"Cài đặt-> Nâng cao-> Gửi Thông tin\")",
"getFriendInviteCodeText": "Nhận mã mời bạn bè",
"googlePlayDescriptionText": "Mời bạn bè trên google play đến party của bạn:",
"googlePlayInviteText": "Mời",
@@ -741,6 +778,7 @@
"manualYourLocalAddressText": "Địa chỉ nội bộ:",
"nearbyText": "Gần nhất",
"noConnectionText": "(không có kết nối)",
+ "noPartiesAddedText": "Không có bên nào được thêm vào",
"otherVersionsText": "(phiên bản khác)",
"partyCodeText": "Mã phòng",
"partyInviteAcceptText": "Chấp nhận",
@@ -804,17 +842,26 @@
"youHaveShortText": "Bạn có ${COUNT}",
"youHaveText": "Bạn có ${COUNT} vé"
},
+ "goldPass": {
+ "desc1InfTokensText": "Mã thông báo vô hạn.",
+ "desc2NoAdsText": "Không có quảng cáo.",
+ "desc3ForeverText": "Mãi mãi.",
+ "goldPassText": "Thẻ Vàng"
+ },
"googleMultiplayerDiscontinuedText": "Xin lỗi, dịch vụ Google nhiều người chơi không còn nữa.\nTôi đang cố gắng thay thế nhanh nhất có thể.\nTrong lúc đó, vui lòng thử cách kết nối khác.\n-Eric",
"googlePlayPurchasesNotAvailableText": "Các giao dịch mua trên Google Play không khả dụng.\nBạn có thể cần cập nhật ứng dụng cửa hàng của mình.",
+ "googlePlayServicesNotAvailableText": "Dịch vụ của Google Play không có sẵn.\nMột số chức năng ứng dụng sẽ bụ vô hiệu hóa.",
"googlePlayText": "Google Trò chơi",
"graphicsSettingsWindow": {
"alwaysText": "Luôn Luôn",
"fullScreenCmdText": "Toàn màn hình (Cmd-F)",
"fullScreenCtrlText": "Toàn màn hình (Ctrl-F)",
+ "fullScreenText": "Toàn màn hình",
"gammaText": "Gam-ma",
"highText": "Cao",
"higherText": "Cao hơn",
"lowText": "Thấp",
+ "maxFPSText": "FPS tối đa",
"mediumText": "Vừa",
"neverText": "Không bao giờ",
"resolutionText": "Độ phân giải",
@@ -875,6 +922,7 @@
"importText": "Xuất",
"importingText": "Đang nhập...",
"inGameClippedNameText": "trong game sẽ là \n\"${NAME}\"",
+ "inboxText": "Hộp Thư",
"installDiskSpaceErrorText": "Lỗi: Không thể hoàn thành tải xuống.\nBạn có thể hết dung lượng trên thiết bị của bạn.\nDọn một số chỗ và thử lại.",
"internal": {
"arrowsToExitListText": "nhấn ${LEFT} hoặc ${RIGHT} để rời khỏi danh sách",
@@ -929,12 +977,14 @@
"timeOutText": "(hết giờ trong ${TIME} giây)",
"touchScreenJoinWarningText": "Bạn đã gia nhập với màn hình cảm ứng.\nNếu đây là lỗi, nhấn 'Menu-> Rời trò chơi '.",
"touchScreenText": "Màn hình Cảm ứng",
+ "unableToCompleteTryAgainText": "Không thể hoàn thành bây giờ.\nVui lòng thử lại sau.",
"unableToResolveHostText": "Lỗi: không thể giải quyết máy chủ.",
"unavailableNoConnectionText": "Hiện tại không có sẵn (không có kết nối mạng?)",
"vrOrientationResetCardboardText": "Sử dụng cái này để cài lại VR định hướng.\nĐể chơi trò chơi bạn sẽ cần một cần điều khiển bên ngoài.",
"vrOrientationResetText": "Cài lại định hướng VR.",
"willTimeOutText": "(sẽ hết giờ nếu không hoạt động)"
},
+ "inventoryText": "Túi Đồ",
"jumpBoldText": "NHẢY",
"jumpText": "Nhảy",
"keepText": "Giữ",
@@ -981,8 +1031,11 @@
"seasonEndsMinutesText": "Mùa kết thúc ${NUMBER} phúc trước.",
"seasonText": "Mùa ${NUMBER}",
"tournamentLeagueText": "Bạn phải đạt giải đấu ${NAME} để tham gia giải đấu này.",
- "trophyCountsResetText": "Số lượng cúp sẽ thiết lập lại vào mùa giải tới."
+ "trophyCountsResetText": "Số lượng cúp sẽ thiết lập lại vào mùa giải tới.",
+ "upToDateBonusDescriptionText": "Người chơi chạy phiên bản gần đây của trò chơi\nđược nhận thêm ${PERCENT}%.",
+ "upToDateBonusText": "Thưởng Phiên bản mới nhất"
},
+ "learnMoreText": "Tìm hiểu thêm",
"levelBestScoresText": "Điểm số tốt nhất trên ${LEVEL}",
"levelBestTimesText": "Thời gian tốt nhất trên ${LEVEL}",
"levelIsLockedText": "${LEVEL} đã bị khóa.",
@@ -1002,6 +1055,7 @@
"creditsText": "Giới thiệu",
"demoMenuText": "Cài đặt Demo",
"endGameText": "kết thúc game",
+ "endTestText": "Kết thúc thử nghiệm",
"exitGameText": "Thoat game",
"exitToMenuText": "Quay về Menu?",
"howToPlayText": "Hướng dẫn chơi",
@@ -1021,9 +1075,12 @@
"maxConnectionsText": "Kết nối tối đa",
"maxPartySizeText": "Số người trong bữa tiệc tối đa",
"maxPlayersText": "Người chơi tối đa",
+ "merchText": "Cửa hàng!",
"modeArcadeText": "Chế độ giải trí",
"modeClassicText": "Chế độ cổ điển",
"modeDemoText": "Chế độ thử nghiệm",
+ "moreSoonText": "Sắp có mặt...",
+ "mostDestroyedPlayerText": "Người chơi bị đánh bại nhiều nhất",
"mostValuablePlayerText": "Người chơi đáng giá nhất",
"mostViolatedPlayerText": "Người chơi bị chết nhiều nhất",
"mostViolentPlayerText": "Người chơi bạo lực nhất",
@@ -1040,6 +1097,7 @@
"nameSuicideText": "${NAME} tự tử.",
"nameText": "Tên",
"nativeText": "Tự nhiên",
+ "newExclaimText": "Mới!",
"newPersonalBestText": "Mới tốt nhất cá nhân!",
"newTestBuildAvailableText": "Một bản dựng thử nghiệm mới hơn có sẵn! (${VERSION} xây dựng ${BUILD}).\nNhận nó tại ${ADDRESS}",
"newText": "Mới",
@@ -1050,16 +1108,21 @@
"noContinuesText": "(không tiếp tục)",
"noExternalStorageErrorText": "Không tìm thấy bộ nhớ ngoài trên thiết bị này",
"noGameCircleText": "Lỗi: không đăng nhập vào GameCircle",
+ "noMessagesText": "Không có Tin nhắn",
+ "noPluginsInstalledText": "Không có plugin nào được cài đặt",
"noScoresYetText": "Chưa có điểm nào.",
+ "noServersFoundText": "Không tìm thấy máy chủ nào.",
"noThanksText": "Không cảm ơn",
"noTournamentsInTestBuildText": "CẢNH BÁO: Điểm thi đấu từ bản dựng thử nghiệm này sẽ bị bỏ qua.",
"noValidMapsErrorText": "Không tìm thấy bản đồ hợp lệ cho loại trò chơi này.",
"notEnoughPlayersRemainingText": "Không đủ người chơi còn lại; thoát ra và bắt đầu một trò chơi mới",
"notEnoughPlayersText": "Bạn cần ít nhất ${COUNT} người chơi để bắt đầu trò chơi này!",
+ "notEnoughTicketsText": "Không đủ vé!",
"notNowText": "Không phải bây giờ",
"notSignedInErrorText": "Bạn phải đăng nhập để làm điều này.",
"notSignedInGooglePlayErrorText": "Bạn phải đăng nhập bằng Google Play để làm điều này.",
"notSignedInText": "chưa đăng nhập",
+ "notUsingAccountText": "Ghi chú: phớt lờ cái tài khoản ${SERVICE} đi.\nHãy đi đến 'Tài khoản -> Đăng nhập với ${SERVICE}' nếu bạn muốn sử dụng nó.",
"nothingIsSelectedErrorText": "Bạn chưa chọn cái nào!",
"numberText": "#${NUMBER}",
"offText": "Tắt",
@@ -1067,6 +1130,9 @@
"onText": "Bật",
"oneMomentText": "Một lúc...",
"onslaughtRespawnText": "${PLAYER} sẽ hồi sinh trong ải ${WAVE}",
+ "openMeText": "Mở tôi ra!",
+ "openNowText": "Mở Ngay",
+ "openText": "Mở",
"orText": "${A} hoặc ${B}",
"otherText": "Khác ...",
"outOfText": "(#${RANK} ra khỏi ${ALL})",
@@ -1118,7 +1184,11 @@
"pleaseWaitText": "Vui lòng chờ...",
"pluginClassLoadErrorText": "Lỗi khi tải lớp plugin '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Lỗi khi nhập plugin '${PLUGIN}': ${ERROR}",
+ "pluginSettingsText": "Các thiết đặt giác cắm",
+ "pluginsAutoEnableNewText": "Tự động hiển thị những Giác cắm mới",
"pluginsDetectedText": "Đã phát hiện (các) plugin mới. Khởi động lại để kích hoạt chúng hoặc định cấu hình chúng trong cài đặt.",
+ "pluginsDisableAllText": "Vô hiệu hóa tất cả các giác cắm",
+ "pluginsEnableAllText": "Hiển thị tất cả các giác cắm",
"pluginsRemovedText": "Không còn tìm thấy ${NUM} plugin nào nữa.",
"pluginsText": "Cắm",
"practiceText": "Luyện tập",
@@ -1148,10 +1218,12 @@
"punchText": "Đấm",
"purchaseForText": "Mua với ${PRICE}",
"purchaseGameText": "Mua trò chơi",
+ "purchaseNeverAvailableText": "Rất tiếc, không có giao dịch mua nào khả dụng trên bản dựng này.\nHãy thử đăng nhập vào tài khoản của bạn trên nền tảng khác và thực hiện giao dịch mua từ đó.",
+ "purchaseNotAvailableText": "Giao dịch mua này không khả dụng.",
"purchasingText": "Đang mua...",
"quitGameText": "Rời ${APP_NAME}?",
"quittingIn5SecondsText": "Rời đi trong 5 giây...",
- "randomPlayerNamesText": "Tên_Mặcđịnh",
+ "randomPlayerNamesText": "Việt Nam, Anh, Dung, Hanh, Hoa, Hong, Khanh, Lan, Liem, Nhung, Duy, Xuan",
"randomText": "Ngẫu nhiên",
"rankText": "Xếp hạng",
"ratingText": "Đánh giá",
@@ -1189,6 +1261,7 @@
"version_mismatch": "Không trùng phiên bản.\nChắc chắn rằng Bombsquad và\nBombsquad Remote là phiên bản mới nhất và thử lại."
},
"removeInGameAdsText": "Mở khóa \"${PRO}\" trong cửa hàng để loại bỏ quảng cáo.",
+ "removeInGameAdsTokenPurchaseText": "KHUYẾN MÃI GIỚI HẠN: Mua gói xu BẤT KỲ để loại bỏ quảng cáo trong trò chơi.",
"renameText": "Đặt lại tên",
"replayEndText": "Kết thúc phát lại",
"replayNameDefaultText": "Xem lại trò chơi vừa rồi",
@@ -1209,7 +1282,9 @@
"revertText": "Hủy bỏ",
"runText": "Chạy",
"saveText": "Lưu",
- "scanScriptsErrorText": "Lỗi trong lúc quét mã bản thảo; xem bản thông báo cho chi tiết.",
+ "scanScriptsErrorText": "Lỗi trong lúc quét mã bản thảo. Xem bảng thông báo để biết thêm chi tiết.",
+ "scanScriptsMultipleModulesNeedUpdatesText": "${PATH} và ${NUM} mô-đun khác cần phải được cập nhật cho api ${API}.",
+ "scanScriptsSingleModuleNeedsUpdatesText": "${PATH} cần được nâng cấp cho api ${API}",
"scoreChallengesText": "Thử thách Điểm số",
"scoreListUnavailableText": "Danh sách điểm số không có sẵn.",
"scoreText": "Điểm số",
@@ -1220,6 +1295,7 @@
},
"scoreWasText": "(Cao nhất ${COUNT})",
"selectText": "Chọn",
+ "sendInfoDescriptionText": "Gửi thông tin trạng thái tài khoản và ứng dụng cho nhà phát triển.\nBao gồm tên của bạn và lý do cho việc gửi.",
"seriesWinLine1PlayerText": "ĐÃ THẮNG",
"seriesWinLine1TeamText": "ĐÃ THẮNG",
"seriesWinLine1Text": "ĐÃ THẮNG",
@@ -1234,25 +1310,34 @@
"titleText": "Cài đặt"
},
"settingsWindowAdvanced": {
- "alwaysUseInternalKeyboardDescriptionText": "(một bàn phím trên màn hình đơn giản, thân thiện với tay cầm cho nhập văn bản)",
- "alwaysUseInternalKeyboardText": "Luôn sử dụng bàn phím nội bộ",
+ "alwaysUseInternalKeyboardDescriptionText": "(một bàn phím trên màn hình đơn giản, thân thiện với bộ điều khiển để chỉnh sửa văn bản)",
+ "alwaysUseInternalKeyboardText": "Luôn sử dụng bàn phím của cục bộ.",
"benchmarksText": "Điểm chuẩn & Kiểm tra độ trễ",
- "disableCameraGyroscopeMotionText": "Vô hiệu hóa Camera Gyroscope Motion",
- "disableCameraShakeText": "Vô hiệu hóa Camera Shake",
+ "devToolsText": "Công cụ cho Nhà phát triển",
+ "disableCameraGyroscopeMotionText": "Vô hiệu hoá chuyển động con quay hồi chuyển",
+ "disableCameraShakeText": "Vô hiệu hoá lắc màn hình",
"disableThisNotice": "(bạn có thể tắt thông báo này trong cài đặt nâng cao)",
"enablePackageModsDescriptionText": "(thêm tối đa chỗ mod nhưng tắt chơi qua mạng)",
"enablePackageModsText": "Bật Gói Mod Cục bộ",
"enterPromoCodeText": "Nhập mã",
"forTestingText": "Ghi chú: những giá trị này chỉ dành cho kiểm tra và sẽ bị mất khi rời khỏi ứng dụng.",
"helpTranslateText": "Cộng đồng dịch ${APP_NAME} là một cộng đồng được hỗ trợ.\nNếu bạn muốn góp phần hoặc sửa bản dịch,\nđi theo đường dẫn bên dưới.",
- "kickIdlePlayersText": "Đuổi người chơi không hoạt động",
+ "insecureConnectionsDescriptionText": "không khuyến khích,nhưng có thể cho phép chơi online từ các quốc gia hoặc mạng bị hạn chế",
+ "insecureConnectionsText": "Sử dụng kết nối mạng không bảo mật",
+ "kickIdlePlayersText": "Đuổi người chơi AFK",
"kidFriendlyModeText": "Chế độ thân thiện với trẻ em (giảm bạo lực , vân vân)",
- "languageText": "Ngôn ngữ",
+ "languageText": "Ngôn ngữ vietnamese",
"moddingGuideText": "Hướng dẫn mod",
+ "moddingToolsText": "Công cụ sửa đổi",
"mustRestartText": "Bạn phải khởi động lại trò chơi để áp dụng cài đặt",
"netTestingText": "Kiểm tra mạng",
"resetText": "Cài lại",
+ "sendInfoText": "Gửi thông tin",
"showBombTrajectoriesText": "Hiển thị quỹ đạo của bom",
+ "showDemosWhenIdleText": "Hiện bản demo khi không hoạt động",
+ "showDeprecatedLoginTypesText": "Hiển thị các loại đăng nhập đã bay màu",
+ "showDevConsoleButtonText": "Hiện nút Bảng điều khiển cho nhà phát triển",
+ "showInGamePingText": "Hiển thị Ping trong Game",
"showPlayerNamesText": "Hiển thị tên người chơi",
"showUserModsText": "Hiển thị Thư mục Mod",
"titleText": "Nâng cao",
@@ -1260,8 +1345,8 @@
"translationFetchErrorText": "trạng thái bản dịch không có sẵn",
"translationFetchingStatusText": "kiểm tra trạng thái bản dịch...",
"translationInformMe": "Thông báo tôi khi ngôn ngữ cần được nâng cấp",
- "translationNoUpdateNeededText": "Ngôn ngữ hiện tại đã được nâng cấp; quẩy đi!",
- "translationUpdateNeededText": "** ngôn ngữ hiện tại cần được nâng cấp!! **",
+ "translationNoUpdateNeededText": "Ngôn ngữ hiện tại đã được nâng cấp; quẩy lên!",
+ "translationUpdateNeededText": "** Ngôn ngữ hiện tại cần được cập nhật!! **",
"vrTestingText": "Thử nghiệm VR"
},
"shareText": "Chia sẻ",
@@ -1271,6 +1356,9 @@
"signInWithGameCenterText": "Để sử dụng một tài khoản Trung tâm trò chơi,\n đăng nhập với ứng dụng Trung Tâm Trò Chơi",
"singleGamePlaylistNameText": "Chỉ ${GAME}",
"singlePlayerCountText": "1 người chơi",
+ "sizeLargeText": "Lớn",
+ "sizeMediumText": "Trung bình",
+ "sizeSmallText": "Nhỏ",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Chọn nhân vật",
@@ -1296,6 +1384,7 @@
},
"spaceKeyText": "dấu cách",
"statsText": "Thống kê",
+ "stopRemindingMeText": "Đừng nhắc lại tôi",
"storagePermissionAccessText": "Yêu cầu truy cập lưu trữ",
"store": {
"alreadyOwnText": "Bạn đã có ${NAME}!",
@@ -1343,6 +1432,8 @@
"storeText": "Cửa hàng",
"submitText": "Gửi",
"submittingPromoCodeText": "Đang xác nhận mã code...",
+ "successText": "Thành công!",
+ "supportEmailText": "Nếu bạn đang gặp bất kỳ vấn đề nào với\nứng dụng, vui lòng gửi email tới ${EMAIL}.",
"teamNamesColorText": "Tên/Màu sắc đội...",
"telnetAccessGrantedText": "Đã kích hoạt truy cập giao thức.",
"telnetAccessText": "Phát hiện truy cập giao thức; cho phép?",
@@ -1352,6 +1443,7 @@
"testBuildValidatedText": "Kiểm tra bản dựng được xác thực; Tận hưởng!",
"thankYouText": "Cảm ơn vì sự hỗ trợ của bạn! Hãy tận hưởng trò chơi!!",
"threeKillText": "Tam Sát!!",
+ "ticketsDescriptionText": "Vé có thể dùng để mở khóa nhân vật, bản đồ, \nmini-game, và nhiều thứ khác trong cửa hàng.\n\nVé có thể kiếm được từ rương nhận được từ \nchiến dịch, giải đấu, và thành tựu.",
"timeBonusText": "Thưởng thời gian",
"timeElapsedText": "Thời gian còn lại",
"timeExpiredText": "Hết giờ",
@@ -1362,10 +1454,24 @@
"tipText": "Gợi ý",
"titleText": "Bombsquad",
"titleVRText": "Bombsquad Thực tế ảo",
+ "tokens": {
+ "getTokensText": "Nhận Token",
+ "notEnoughTokensText": "Không đủ token!",
+ "numTokensText": "${COUNT} Mã thông báo",
+ "openNowDescriptionText": "Bạn có đủ token để\nmở ngay bây giờ - bạn không\ncần phải chờ đợi.",
+ "shinyNewCurrencyText": "Tiền tệ mới sáng bóng của BombSquad.",
+ "tokenPack1Text": "Gói Token Nhỏ",
+ "tokenPack2Text": "Gói Token trung bình",
+ "tokenPack3Text": "Gói Token Lớn",
+ "tokenPack4Text": "Gói Mã thông báo Jumbo",
+ "tokensDescriptionText": "Xu dùng để tăng tốc độ mở rương và \nnhiều chức năng trò chơi và tài khoản khác. \n\nBạn có thể nhận được Xu trong trò chơi hoặc \nmua theo gói. Hoặc bạn sẽ nhận được vô hạn xu khi mua Gold Pass và \nkhông bao giờ quan tâm tới chúng thêm lần nào nữa.",
+ "youHaveGoldPassText": "Bạn có Thẻ Vàng.\nTất cả các giao dịch mua token đều miễn phí.\nHãy tận hưởng!"
+ },
"topFriendsText": "Bạn bè đứng đầu",
"tournamentCheckingStateText": "Đang kiểm tra trạng thái giải đấu; vui lòng chờ...",
"tournamentEndedText": "Giải đấu này đã kết thúc. Giải đấu mới sẽ bắt đầu sớm.",
"tournamentEntryText": "Lệ phí",
+ "tournamentFinalStandingsText": "Thứ hạng Cuối cùng",
"tournamentResultsRecentText": "Kết quả giải đấu gần đây",
"tournamentStandingsText": "Bảng xếp hạng giải đấu",
"tournamentText": "Giải đấu",
@@ -1421,6 +1527,18 @@
"Uber Onslaught": "Tử chiến (Bậc thầy)",
"Uber Runaround": "Thủ thành (Bậc thầy)"
},
+ "displayItemNames": {
+ "${C} Tickets": "${C} Vé",
+ "${C} Tokens": "${C} Xu",
+ "Chest": "Rương",
+ "L1 Chest": "Rương cấp 1",
+ "L2 Chest": "Rương cấp 2",
+ "L3 Chest": "Rương cấp 3",
+ "L4 Chest": "Rương cấp 4",
+ "L5 Chest": "Rương cấp 5",
+ "L6 Chest": "Rương cấp 6",
+ "Unknown Chest": "Rương ???"
+ },
"gameDescriptions": {
"Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Làm người được chọn trong thời gian nhất định để chiến thắng.\nGiết người được chọn để trở thành họ.",
"Bomb as many targets as you can.": "Dội bom nhiều mục tiêu nhất có thể.",
@@ -1523,7 +1641,9 @@
"Italian": "Tiếng Ý",
"Japanese": "Tiếng Nhật",
"Korean": "Tiếng Hàn",
+ "Malay": "Tiếng Mã Lai",
"Persian": "Tiếng Ba Tư",
+ "PirateSpeak": "Tiếng Hải tặc",
"Polish": "Tiếng Polish",
"Portuguese": "Tiếng Bồ Đào Nha",
"Romanian": "Tiếng Rumani",
@@ -1595,6 +1715,7 @@
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Phát hiện gian lận; không được ghi điểm số và nhận giải thưởng trong ${COUNT} ngày.",
"Could not establish a secure connection.": "Không thể thiết lập kết nối an toàn.",
"Daily maximum reached.": "Đã đạt tối đa số lượng hàng ngày.",
+ "Daily sign-in reward": "Phần thưởng đăng nhập hàng ngày",
"Entering tournament...": "Gia nhập giải đấu...",
"Invalid code.": "Mã code không hợp lệ.",
"Invalid payment; purchase canceled.": "Thành toán không hợp lệ, mua thất bại.",
@@ -1604,11 +1725,14 @@
"Item unlocked!": "Vật phẩm đã mở khóa!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "LIÊN KẾT TỪ CHỐI. ${ACCOUNT} chứa\ndữ liệu quan trọng mà TẤT CẢ ĐƯỢC.\nBạn có thể liên kết theo thứ tự ngược lại nếu bạn muốn\n(và mất dữ liệu của tài khoản NÀY thay thế)",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Liên kết tài khoản ${ACCOUNT} với tài khoản này?\nTất cả dữ liệu tồn tại trên ${ACCOUNT} sẽ bị mất.\nKhông thể hủy. Bạn chắc chứ?",
+ "Longer streaks lead to better rewards.": "Chuỗi càng dài thì phần thưởng càng tốt.",
"Max number of playlists reached.": "Đã đạt tối đa danh sách.",
"Max number of profiles reached.": "Đã đạt tối đa số lượng hồ sơ.",
"Maximum friend code rewards reached.": "Đã đạt tối đa thưởng từ mã code bạn bè.",
"Message is too long.": "Tin nhắn quá dài.",
+ "New tournament result!": "Kết quả giải đấu!",
"No servers are available. Please try again soon.": "Không có server có sẵn. Hãy thử lại sau.",
+ "No slots available. Free a slot and try again.": "Không còn ô trống. Giải phóng một ô và thử lại.",
"Profile \"${NAME}\" upgraded successfully.": "Hồ sơ \"${NAME}\" nâng cấp thành công.",
"Profile could not be upgraded.": "Hồ sơ không thể nâng cấp.",
"Purchase successful!": "Mua thành công!",
@@ -1618,7 +1742,9 @@
"Sorry, this code has already been used.": "Xin lỗi bạn, mã code này đã đc sử dụng",
"Sorry, this code has expired.": "Xin lỗi, mã code này đã hết hạn.",
"Sorry, this code only works for new accounts.": "Xin lỗi,mã code này chỉ dành cho người chơi mới.",
+ "Sorry, this has expired.": "Xin lỗi, vật phẩm đã hết hạn.",
"Still searching for nearby servers; please try again soon.": "Vẫn đang tìm những server gần nhất; Hãy thử lại sau",
+ "Streak: ${NUM} days": "Chuỗi: ${NUM} ngày",
"Temporarily unavailable; please try again later.": "Tạm thời không có; vui lòng thử lại sau.",
"The tournament ended before you finished.": "Giải đấu đã kết thúc trước khi bạn hoàn thành.",
"This account cannot be unlinked for ${NUM} days.": "Tài khoản này không thể ngừng liên kết trong ${NUM} ngày.",
@@ -1629,19 +1755,28 @@
"Tournaments require ${VERSION} or newer": "Giải đấu yêu cầu phiên bản ${VERSION} hoặc mới hơn.",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Ngừng liên kết ${ACCOUNT} từ tài khoản này? \nTất cả dữ liệu trên ${ACCOUNT} sẽ bị cài lại.\n(ngoại trừ thành tựu trong một số trường hợp)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "Cảnh báo: Khiếu nại về hack đã được đưa ra về tài khoản của bạn.\nTài khoản phát hiện hack sẽ bị cấm chơi vĩnh viễn. Vui lòng chơi trung thực.",
+ "Wait reduced!": "Đã giảm thời gian!",
+ "Warning: This version of the game is limited to old account data; things may appear missing or out of date.\nPlease upgrade to a newer version of the game to see your latest account data.": "Cảnh báo: Phiên bản trò chơi này chỉ giới hạn ở dữ liệu tài khoản cũ; một số thứ có thể bị thiếu hoặc lỗi thời.\nVui lòng nâng cấp lên phiên bản trò chơi mới hơn để xem dữ liệu tài khoản mới nhất của bạn.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Bạn có muốn lên kết tài khoản thiết bị của bạn với cái này?\n\nTài khoản thiết bị là\n ${ACCOUNT1}\nTài khoản này là ${ACCOUNT2}",
"You already own this!": "Bạn đã có cái này!",
"You can join in ${COUNT} seconds.": "Bạn có thể tham gia trong ${COUNT} giây.",
"You don't have enough tickets for this!": "Bạn không đủ vé để mua!",
"You don't own that.": "Bạn không có cái đó.",
"You got ${COUNT} tickets!": "Bạn đã nhận được ${COUNT} vé!",
+ "You got ${COUNT} tokens!": "Bạn nhận được ${COUNT} xu!",
"You got a ${ITEM}!": "Bạn đã nhận được một ${ITEM}!",
+ "You got a chest!": "Bạn nhận được một rương!",
+ "You got an achievement reward!": "Bạn nhận được một phần thưởng từ thành tựu!",
"You have been promoted to a new league; congratulations!": "Bạn đã được thăng hạng lên một giải đấu mới; xin chúc mừng!",
+ "You lost a chest! (All your chest slots were full)": "Bạn đã mất một rương! (Tất cả ô rương đã đầy)",
+ "You must update the app to view this.": "Vui lòng cập nhật trò chơi để xem.",
"You must update to a newer version of the app to do this.": "Bạn phải nâng cấp lên phiên bản mới hơn của ứng dụng để làm điều này.",
"You must update to the newest version of the game to do this.": "Bạn phải nâng cấp trò chơi lên phiên bản mới nhất để làm điều này.",
"You must wait a few seconds before entering a new code.": "Bạn phải chờ một vài giây trước khi nhập một mã mới.",
+ "You placed #${RANK} in a tournament!": "Bạn đạt hạng #${RANK} trong giải đấu!",
"You ranked #${RANK} in the last tournament. Thanks for playing!": "Bạn đứng thứ #${RANK} trong giải đấu vừa rồi. Cảm ơn vì đã tham gia!",
"Your account was rejected. Are you signed in?": "Tài khoản của bạn đã bị từ chối. Bạn đã đăng nhập chưa?",
+ "Your ad views are not registering. Ad options will be limited for a while.": "Lượt xem quảng cáo của bạn không được ghi lại. Tùy chọn quảng cáo sẽ bị giới hạn trong một thời gian.",
"Your copy of the game has been modified.\nPlease revert any changes and try again.": "Bản sao của trò chơi đã bị sửa đổi.\nVui lòng sửa lại bất kỳ thay đổi lại như cũ và thử lại.",
"Your friend code was used by ${ACCOUNT}": "Mã của bạn bè của bạn đã được dùng bởi ${ACCOUNT}"
},
@@ -1790,11 +1925,14 @@
"toSkipPressAnythingText": "(chạm hoặc nhấn bất kì đâu để bỏ qua hướng dẩn)"
},
"twoKillText": "Hai Mạng!",
+ "uiScaleText": "Quy mô giao diện",
"unavailableText": "Không Khả Dụng",
+ "unclaimedPrizesText": "Bạn có giải thưởng chưa nhận!",
"unconfiguredControllerDetectedText": "Tay cầm không cấu hình được phát hiện:",
"unlockThisInTheStoreText": "Nó phải được mở khóa trong cửa hàng.",
"unlockThisProfilesText": "Để tạo nhiều hơn ${NUM} hồ sơ,bạn cần:",
"unlockThisText": "Để mở khóa bạn cần",
+ "unsupportedControllerText": "Rất tiếc, bộ điều khiển \"${NAME}\" không được hỗ trợ.",
"unsupportedHardwareText": "Xin lỗi, phần cứng này không được hỗ trợ bởi bản dựng này của trò chơi.",
"upFirstText": "Game đầu:",
"upNextText": "Trò chơi tiếp theo ${COUNT}:",
@@ -1802,9 +1940,14 @@
"upgradeText": "Nâng cấp",
"upgradeToPlayText": "Mở khóa \"${PRO}\" trong cửa hàng để chơi.",
"useDefaultText": "Sử dụng mặc định",
+ "userSystemScriptsCreateText": "Tạo tập lệnh hệ thống người dùng",
+ "userSystemScriptsDeleteText": "Xóa tập lệnh hệ thống người dùng",
"usesExternalControllerText": "Trò chơi này sử dụng tay cầm bên ngoài cho đầu vào.",
"usingItunesText": "Sử dụng Ứng dụng âm nhạc cho nhạc nền",
+ "v2AccountLinkingInfoText": "Để đến tài khoản V2, sử dụng nút 'Thiết đặt tài khoản'.",
+ "v2AccountRequiredText": "Điều này yêu cầu tài khoản V2. Hãy nâng cấp tài khoản của bạn và thử lại.",
"validatingTestBuildText": "Kiểm tra xác thực Xây dựng ...",
+ "viaText": "Thông qua",
"victoryText": "Chiến thắng!",
"voteDelayText": "Bạn không thể bắt đầu cuộc bầu chọn khác trong ${NUMBER} giây",
"voteInProgressText": "Một cuộc bầu chọn đang tiến hành.",
@@ -1836,6 +1979,7 @@
},
"waveText": "Vòng",
"wellSureText": "Chắc chắn rồi!",
+ "whatIsThisText": "Đây là cái gì vậy?",
"wiimoteLicenseWindow": {
"titleText": "DarwiinRemote Bản quyền"
},
@@ -1846,7 +1990,7 @@
},
"wiimoteSetupWindow": {
"copyrightText": "Bản quyền của DarwiinRemote",
- "listenText": "Lắng nghe",
+ "listenText": "Lắng nghe ",
"macInstructionsText": "Hãy chắc chắn rằng Wii của bạn là tắt và Bluetooth được kích hoạt\ntrên máy Mac của bạn, sau đó nhấn 'Nghe'. Wiimote hỗ trợ có thể\nmột chút flaky, do đó, bạn có thể phải thử một vài lần\ntrước khi bạn nhận được một kết nối.\n\nBluetooth nên xử lý lên đến 7 thiết bị kết nối,\nmặc dù mileage của bạn có thể khác nhau.\n\nBombSquad hỗ trợ Wiimotes gốc, Nunchuk,\nvà bộ điều khiển cổ điển.\nCác mới Wii Remote Plus bây giờ hoạt động quá\nnhưng không phải với tập tin đính kèm",
"thanksText": "Cảm ơn nhóm DarwiinRemote\nĐã làm thứ này có thật.",
"titleText": "Thiết lập Wiimote"
@@ -1868,5 +2012,6 @@
},
"yesAllowText": "Có, chấp nhận !",
"yourBestScoresText": "Điểm kỉ lục của bạn",
- "yourBestTimesText": "Thời gian kỉ lục của bạn"
+ "yourBestTimesText": "Thời gian kỉ lục của bạn",
+ "yourPrizeText": "Phần thưởng của bạn:"
}
\ No newline at end of file
diff --git a/dist/ba_data/data/maps/bridgit.json b/dist/ba_data/data/maps/bridgit.json
index 9a301226..96640a4d 100644
--- a/dist/ba_data/data/maps/bridgit.json
+++ b/dist/ba_data/data/maps/bridgit.json
@@ -53,41 +53,41 @@
"preview_texture": "bridgitPreview",
"terrain_nodes": [
{
- "collide_model": "bridgitLevelBottom",
+ "collision_mesh": "bridgitLevelBottom",
"color_texture": "bridgitLevelColor",
"comment": "Top portion of bridge.",
"materials": ["footing"],
- "model": "bridgitLevelTop"
+ "mesh": "bridgitLevelTop"
},
{
"color_texture": "bridgitLevelColor",
"comment": "Bottom portion of bridge with no lighting effects.",
"lighting": false,
- "model": "bridgitLevelBottom"
+ "mesh": "bridgitLevelBottom"
},
{
"background": true,
"color_texture": "natureBackgroundColor",
"comment": "Visible background.",
"lighting": false,
- "model": "natureBackground"
+ "mesh": "natureBackground"
},
{
"background": true,
- "color_texture": "model_bg_tex",
+ "color_texture": "mesh_bg_tex",
"comment": "360 degree bg for vr.",
"lighting": false,
- "model": "bg_vr_fill_model",
+ "mesh": "bg_vr_fill_mesh",
"vr_only": true
},
{
"bumper": true,
- "collide_model": "railing_collide_model",
+ "collision_mesh": "railing_collide_mesh",
"comment": "Invisible railing to help prevent falls.",
"materials": ["railing"]
},
{
- "collide_model": "collide_bg",
+ "collision_mesh": "collide_bg",
"comment": "Collision shape for bg",
"materials": ["footing", "friction@10", "death"]
}
diff --git a/dist/ba_data/models/alwaysLandLevelCollide.cob b/dist/ba_data/meshes/alwaysLandLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/alwaysLandLevelCollide.cob
rename to dist/ba_data/meshes/alwaysLandLevelCollide.cob
diff --git a/dist/ba_data/models/bigGBumper.cob b/dist/ba_data/meshes/bigGBumper.cob
similarity index 100%
rename from dist/ba_data/models/bigGBumper.cob
rename to dist/ba_data/meshes/bigGBumper.cob
diff --git a/dist/ba_data/models/bigGCollide.cob b/dist/ba_data/meshes/bigGCollide.cob
similarity index 100%
rename from dist/ba_data/models/bigGCollide.cob
rename to dist/ba_data/meshes/bigGCollide.cob
diff --git a/dist/ba_data/models/bridgitLevelCollide.cob b/dist/ba_data/meshes/bridgitLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/bridgitLevelCollide.cob
rename to dist/ba_data/meshes/bridgitLevelCollide.cob
diff --git a/dist/ba_data/models/bridgitLevelRailingCollide.cob b/dist/ba_data/meshes/bridgitLevelRailingCollide.cob
similarity index 100%
rename from dist/ba_data/models/bridgitLevelRailingCollide.cob
rename to dist/ba_data/meshes/bridgitLevelRailingCollide.cob
diff --git a/dist/ba_data/models/courtyardLevelCollide.cob b/dist/ba_data/meshes/courtyardLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/courtyardLevelCollide.cob
rename to dist/ba_data/meshes/courtyardLevelCollide.cob
diff --git a/dist/ba_data/models/courtyardPlayerWall.cob b/dist/ba_data/meshes/courtyardPlayerWall.cob
similarity index 100%
rename from dist/ba_data/models/courtyardPlayerWall.cob
rename to dist/ba_data/meshes/courtyardPlayerWall.cob
diff --git a/dist/ba_data/models/cragCastleLevelBumper.cob b/dist/ba_data/meshes/cragCastleLevelBumper.cob
similarity index 100%
rename from dist/ba_data/models/cragCastleLevelBumper.cob
rename to dist/ba_data/meshes/cragCastleLevelBumper.cob
diff --git a/dist/ba_data/models/cragCastleLevelCollide.cob b/dist/ba_data/meshes/cragCastleLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/cragCastleLevelCollide.cob
rename to dist/ba_data/meshes/cragCastleLevelCollide.cob
diff --git a/dist/ba_data/models/doomShroomLevelCollide.cob b/dist/ba_data/meshes/doomShroomLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/doomShroomLevelCollide.cob
rename to dist/ba_data/meshes/doomShroomLevelCollide.cob
diff --git a/dist/ba_data/models/doomShroomStemCollide.cob b/dist/ba_data/meshes/doomShroomStemCollide.cob
similarity index 100%
rename from dist/ba_data/models/doomShroomStemCollide.cob
rename to dist/ba_data/meshes/doomShroomStemCollide.cob
diff --git a/dist/ba_data/models/footballStadiumCollide.cob b/dist/ba_data/meshes/footballStadiumCollide.cob
similarity index 100%
rename from dist/ba_data/models/footballStadiumCollide.cob
rename to dist/ba_data/meshes/footballStadiumCollide.cob
diff --git a/dist/ba_data/models/hockeyStadiumCollide.cob b/dist/ba_data/meshes/hockeyStadiumCollide.cob
similarity index 100%
rename from dist/ba_data/models/hockeyStadiumCollide.cob
rename to dist/ba_data/meshes/hockeyStadiumCollide.cob
diff --git a/dist/ba_data/models/lakeFrigidCollide.cob b/dist/ba_data/meshes/lakeFrigidCollide.cob
similarity index 100%
rename from dist/ba_data/models/lakeFrigidCollide.cob
rename to dist/ba_data/meshes/lakeFrigidCollide.cob
diff --git a/dist/ba_data/models/monkeyFaceLevelBumper.cob b/dist/ba_data/meshes/monkeyFaceLevelBumper.cob
similarity index 100%
rename from dist/ba_data/models/monkeyFaceLevelBumper.cob
rename to dist/ba_data/meshes/monkeyFaceLevelBumper.cob
diff --git a/dist/ba_data/models/monkeyFaceLevelCollide.cob b/dist/ba_data/meshes/monkeyFaceLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/monkeyFaceLevelCollide.cob
rename to dist/ba_data/meshes/monkeyFaceLevelCollide.cob
diff --git a/dist/ba_data/models/natureBackgroundCollide.cob b/dist/ba_data/meshes/natureBackgroundCollide.cob
similarity index 100%
rename from dist/ba_data/models/natureBackgroundCollide.cob
rename to dist/ba_data/meshes/natureBackgroundCollide.cob
diff --git a/dist/ba_data/models/rampageBumper.cob b/dist/ba_data/meshes/rampageBumper.cob
similarity index 100%
rename from dist/ba_data/models/rampageBumper.cob
rename to dist/ba_data/meshes/rampageBumper.cob
diff --git a/dist/ba_data/models/rampageLevelCollide.cob b/dist/ba_data/meshes/rampageLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/rampageLevelCollide.cob
rename to dist/ba_data/meshes/rampageLevelCollide.cob
diff --git a/dist/ba_data/models/roundaboutLevelBumper.cob b/dist/ba_data/meshes/roundaboutLevelBumper.cob
similarity index 100%
rename from dist/ba_data/models/roundaboutLevelBumper.cob
rename to dist/ba_data/meshes/roundaboutLevelBumper.cob
diff --git a/dist/ba_data/models/roundaboutLevelCollide.cob b/dist/ba_data/meshes/roundaboutLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/roundaboutLevelCollide.cob
rename to dist/ba_data/meshes/roundaboutLevelCollide.cob
diff --git a/dist/ba_data/models/stepRightUpLevelCollide.cob b/dist/ba_data/meshes/stepRightUpLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/stepRightUpLevelCollide.cob
rename to dist/ba_data/meshes/stepRightUpLevelCollide.cob
diff --git a/dist/ba_data/models/thePadLevelBumper.cob b/dist/ba_data/meshes/thePadLevelBumper.cob
similarity index 100%
rename from dist/ba_data/models/thePadLevelBumper.cob
rename to dist/ba_data/meshes/thePadLevelBumper.cob
diff --git a/dist/ba_data/models/thePadLevelCollide.cob b/dist/ba_data/meshes/thePadLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/thePadLevelCollide.cob
rename to dist/ba_data/meshes/thePadLevelCollide.cob
diff --git a/dist/ba_data/models/tipTopLevelBumper.cob b/dist/ba_data/meshes/tipTopLevelBumper.cob
similarity index 100%
rename from dist/ba_data/models/tipTopLevelBumper.cob
rename to dist/ba_data/meshes/tipTopLevelBumper.cob
diff --git a/dist/ba_data/models/tipTopLevelCollide.cob b/dist/ba_data/meshes/tipTopLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/tipTopLevelCollide.cob
rename to dist/ba_data/meshes/tipTopLevelCollide.cob
diff --git a/dist/ba_data/models/towerDLevelCollide.cob b/dist/ba_data/meshes/towerDLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/towerDLevelCollide.cob
rename to dist/ba_data/meshes/towerDLevelCollide.cob
diff --git a/dist/ba_data/models/towerDPlayerWall.cob b/dist/ba_data/meshes/towerDPlayerWall.cob
similarity index 100%
rename from dist/ba_data/models/towerDPlayerWall.cob
rename to dist/ba_data/meshes/towerDPlayerWall.cob
diff --git a/dist/ba_data/models/zigZagLevelBumper.cob b/dist/ba_data/meshes/zigZagLevelBumper.cob
similarity index 100%
rename from dist/ba_data/models/zigZagLevelBumper.cob
rename to dist/ba_data/meshes/zigZagLevelBumper.cob
diff --git a/dist/ba_data/models/zigZagLevelCollide.cob b/dist/ba_data/meshes/zigZagLevelCollide.cob
similarity index 100%
rename from dist/ba_data/models/zigZagLevelCollide.cob
rename to dist/ba_data/meshes/zigZagLevelCollide.cob
diff --git a/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER
new file mode 100644
index 00000000..a1b589e3
--- /dev/null
+++ b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER
@@ -0,0 +1 @@
+pip
diff --git a/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst
new file mode 100644
index 00000000..9d227a0c
--- /dev/null
+++ b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst
@@ -0,0 +1,28 @@
+Copyright 2010 Pallets
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/METADATA b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/METADATA
new file mode 100644
index 00000000..dfe37d52
--- /dev/null
+++ b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/METADATA
@@ -0,0 +1,93 @@
+Metadata-Version: 2.1
+Name: MarkupSafe
+Version: 2.1.5
+Summary: Safely add untrusted strings to HTML/XML markup.
+Home-page: https://palletsprojects.com/p/markupsafe/
+Maintainer: Pallets
+Maintainer-email: contact@palletsprojects.com
+License: BSD-3-Clause
+Project-URL: Donate, https://palletsprojects.com/donate
+Project-URL: Documentation, https://markupsafe.palletsprojects.com/
+Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/
+Project-URL: Source Code, https://github.com/pallets/markupsafe/
+Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/
+Project-URL: Chat, https://discord.gg/pallets
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+Classifier: Topic :: Text Processing :: Markup :: HTML
+Requires-Python: >=3.7
+Description-Content-Type: text/x-rst
+License-File: LICENSE.rst
+
+MarkupSafe
+==========
+
+MarkupSafe implements a text object that escapes characters so it is
+safe to use in HTML and XML. Characters that have special meanings are
+replaced so that they display as the actual characters. This mitigates
+injection attacks, meaning untrusted user input can safely be displayed
+on a page.
+
+
+Installing
+----------
+
+Install and update using `pip`_:
+
+.. code-block:: text
+
+ pip install -U MarkupSafe
+
+.. _pip: https://pip.pypa.io/en/stable/getting-started/
+
+
+Examples
+--------
+
+.. code-block:: pycon
+
+ >>> from markupsafe import Markup, escape
+
+ >>> # escape replaces special characters and wraps in Markup
+ >>> escape("")
+ Markup('<script>alert(document.cookie);</script>')
+
+ >>> # wrap in Markup to mark text "safe" and prevent escaping
+ >>> Markup("Hello")
+ Markup('hello')
+
+ >>> escape(Markup("Hello"))
+ Markup('hello')
+
+ >>> # Markup is a str subclass
+ >>> # methods and operators escape their arguments
+ >>> template = Markup("Hello {name}")
+ >>> template.format(name='"World"')
+ Markup('Hello "World"')
+
+
+Donate
+------
+
+The Pallets organization develops and supports MarkupSafe and other
+popular packages. In order to grow the community of contributors and
+users, and allow the maintainers to devote more time to the projects,
+`please donate today`_.
+
+.. _please donate today: https://palletsprojects.com/donate
+
+
+Links
+-----
+
+- Documentation: https://markupsafe.palletsprojects.com/
+- Changes: https://markupsafe.palletsprojects.com/changes/
+- PyPI Releases: https://pypi.org/project/MarkupSafe/
+- Source Code: https://github.com/pallets/markupsafe/
+- Issue Tracker: https://github.com/pallets/markupsafe/issues/
+- Chat: https://discord.gg/pallets
diff --git a/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/RECORD b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/RECORD
new file mode 100644
index 00000000..648ebd81
--- /dev/null
+++ b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/RECORD
@@ -0,0 +1,14 @@
+MarkupSafe-2.1.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+MarkupSafe-2.1.5.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
+MarkupSafe-2.1.5.dist-info/METADATA,sha256=2dRDPam6OZLfpX0wg1JN5P3u9arqACxVSfdGmsJU7o8,3003
+MarkupSafe-2.1.5.dist-info/RECORD,,
+MarkupSafe-2.1.5.dist-info/WHEEL,sha256=vJMp7mUkE-fMIYyE5xJ9Q2cYPnWVgHf20clVdwMSXAg,152
+MarkupSafe-2.1.5.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
+markupsafe/__init__.py,sha256=r7VOTjUq7EMQ4v3p4R1LoVOGJg6ysfYRncLr34laRBs,10958
+markupsafe/__pycache__/__init__.cpython-312.pyc,,
+markupsafe/__pycache__/_native.cpython-312.pyc,,
+markupsafe/_native.py,sha256=GR86Qvo_GcgKmKreA1WmYN9ud17OFwkww8E-fiW-57s,1713
+markupsafe/_speedups.c,sha256=X2XvQVtIdcK4Usz70BvkzoOfjTCmQlDkkjYSn-swE0g,7083
+markupsafe/_speedups.cpython-312-x86_64-linux-gnu.so,sha256=Y2jIPiSLPZlb82iRu9UUj27sbTui5o7SSoi-2SIXEUg,54072
+markupsafe/_speedups.pyi,sha256=vfMCsOgbAXRNLUXkyuyonG8uEWKYU4PDqNuMaDELAYw,229
+markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
diff --git a/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/WHEEL b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/WHEEL
new file mode 100644
index 00000000..bd099b74
--- /dev/null
+++ b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/WHEEL
@@ -0,0 +1,6 @@
+Wheel-Version: 1.0
+Generator: bdist_wheel (0.42.0)
+Root-Is-Purelib: false
+Tag: cp312-cp312-manylinux_2_17_x86_64
+Tag: cp312-cp312-manylinux2014_x86_64
+
diff --git a/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt
new file mode 100644
index 00000000..75bf7292
--- /dev/null
+++ b/dist/ba_data/python-site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt
@@ -0,0 +1 @@
+markupsafe
diff --git a/dist/ba_data/python-site-packages/_cffi_backend.cpython-310-aarch64-linux-gnu.so b/dist/ba_data/python-site-packages/_cffi_backend.cpython-310-aarch64-linux-gnu.so
deleted file mode 100644
index f4b4204e..00000000
Binary files a/dist/ba_data/python-site-packages/_cffi_backend.cpython-310-aarch64-linux-gnu.so and /dev/null differ
diff --git a/dist/ba_data/python-site-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so b/dist/ba_data/python-site-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so
deleted file mode 100644
index af6999f6..00000000
Binary files a/dist/ba_data/python-site-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so and /dev/null differ
diff --git a/dist/ba_data/python-site-packages/_cffi_backend.cpython-312-x86_64-linux-gnu.so b/dist/ba_data/python-site-packages/_cffi_backend.cpython-312-x86_64-linux-gnu.so
new file mode 100644
index 00000000..867546ed
Binary files /dev/null and b/dist/ba_data/python-site-packages/_cffi_backend.cpython-312-x86_64-linux-gnu.so differ
diff --git a/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/INSTALLER b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/INSTALLER
new file mode 100644
index 00000000..a1b589e3
--- /dev/null
+++ b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/INSTALLER
@@ -0,0 +1 @@
+pip
diff --git a/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/LICENSE.txt b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/LICENSE.txt
new file mode 100644
index 00000000..e497a322
--- /dev/null
+++ b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/LICENSE.txt
@@ -0,0 +1,13 @@
+ Copyright aio-libs contributors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/METADATA b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/METADATA
new file mode 100644
index 00000000..cd312649
--- /dev/null
+++ b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/METADATA
@@ -0,0 +1,245 @@
+Metadata-Version: 2.1
+Name: aiohttp
+Version: 3.9.5
+Summary: Async http client/server framework (asyncio)
+Home-page: https://github.com/aio-libs/aiohttp
+Maintainer: aiohttp team
+Maintainer-email: team@aiohttp.org
+License: Apache 2
+Project-URL: Chat: Matrix, https://matrix.to/#/#aio-libs:matrix.org
+Project-URL: Chat: Matrix Space, https://matrix.to/#/#aio-libs-space:matrix.org
+Project-URL: CI: GitHub Actions, https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI
+Project-URL: Coverage: codecov, https://codecov.io/github/aio-libs/aiohttp
+Project-URL: Docs: Changelog, https://docs.aiohttp.org/en/stable/changes.html
+Project-URL: Docs: RTD, https://docs.aiohttp.org
+Project-URL: GitHub: issues, https://github.com/aio-libs/aiohttp/issues
+Project-URL: GitHub: repo, https://github.com/aio-libs/aiohttp
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Framework :: AsyncIO
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: POSIX
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Topic :: Internet :: WWW/HTTP
+Requires-Python: >=3.8
+Description-Content-Type: text/x-rst
+License-File: LICENSE.txt
+Requires-Dist: aiosignal >=1.1.2
+Requires-Dist: attrs >=17.3.0
+Requires-Dist: frozenlist >=1.1.1
+Requires-Dist: multidict <7.0,>=4.5
+Requires-Dist: yarl <2.0,>=1.0
+Requires-Dist: async-timeout <5.0,>=4.0 ; python_version < "3.11"
+Provides-Extra: speedups
+Requires-Dist: brotlicffi ; (platform_python_implementation != "CPython") and extra == 'speedups'
+Requires-Dist: Brotli ; (platform_python_implementation == "CPython") and extra == 'speedups'
+Requires-Dist: aiodns ; (sys_platform == "linux" or sys_platform == "darwin") and extra == 'speedups'
+
+==================================
+Async http client/server framework
+==================================
+
+.. image:: https://raw.githubusercontent.com/aio-libs/aiohttp/master/docs/aiohttp-plain.svg
+ :height: 64px
+ :width: 64px
+ :alt: aiohttp logo
+
+|
+
+.. image:: https://github.com/aio-libs/aiohttp/workflows/CI/badge.svg
+ :target: https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI
+ :alt: GitHub Actions status for master branch
+
+.. image:: https://codecov.io/gh/aio-libs/aiohttp/branch/master/graph/badge.svg
+ :target: https://codecov.io/gh/aio-libs/aiohttp
+ :alt: codecov.io status for master branch
+
+.. image:: https://badge.fury.io/py/aiohttp.svg
+ :target: https://pypi.org/project/aiohttp
+ :alt: Latest PyPI package version
+
+.. image:: https://readthedocs.org/projects/aiohttp/badge/?version=latest
+ :target: https://docs.aiohttp.org/
+ :alt: Latest Read The Docs
+
+.. image:: https://img.shields.io/matrix/aio-libs:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
+ :target: https://matrix.to/#/%23aio-libs:matrix.org
+ :alt: Matrix Room — #aio-libs:matrix.org
+
+.. image:: https://img.shields.io/matrix/aio-libs-space:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs-space%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
+ :target: https://matrix.to/#/%23aio-libs-space:matrix.org
+ :alt: Matrix Space — #aio-libs-space:matrix.org
+
+
+Key Features
+============
+
+- Supports both client and server side of HTTP protocol.
+- Supports both client and server Web-Sockets out-of-the-box and avoids
+ Callback Hell.
+- Provides Web-server with middleware and pluggable routing.
+
+
+Getting started
+===============
+
+Client
+------
+
+To get something from the web:
+
+.. code-block:: python
+
+ import aiohttp
+ import asyncio
+
+ async def main():
+
+ async with aiohttp.ClientSession() as session:
+ async with session.get('http://python.org') as response:
+
+ print("Status:", response.status)
+ print("Content-type:", response.headers['content-type'])
+
+ html = await response.text()
+ print("Body:", html[:15], "...")
+
+ asyncio.run(main())
+
+This prints:
+
+.. code-block::
+
+ Status: 200
+ Content-type: text/html; charset=utf-8
+ Body: ...
+
+Coming from `requests `_ ? Read `why we need so many lines `_.
+
+Server
+------
+
+An example using a simple server:
+
+.. code-block:: python
+
+ # examples/server_simple.py
+ from aiohttp import web
+
+ async def handle(request):
+ name = request.match_info.get('name', "Anonymous")
+ text = "Hello, " + name
+ return web.Response(text=text)
+
+ async def wshandle(request):
+ ws = web.WebSocketResponse()
+ await ws.prepare(request)
+
+ async for msg in ws:
+ if msg.type == web.WSMsgType.text:
+ await ws.send_str("Hello, {}".format(msg.data))
+ elif msg.type == web.WSMsgType.binary:
+ await ws.send_bytes(msg.data)
+ elif msg.type == web.WSMsgType.close:
+ break
+
+ return ws
+
+
+ app = web.Application()
+ app.add_routes([web.get('/', handle),
+ web.get('/echo', wshandle),
+ web.get('/{name}', handle)])
+
+ if __name__ == '__main__':
+ web.run_app(app)
+
+
+Documentation
+=============
+
+https://aiohttp.readthedocs.io/
+
+
+Demos
+=====
+
+https://github.com/aio-libs/aiohttp-demos
+
+
+External links
+==============
+
+* `Third party libraries
+ `_
+* `Built with aiohttp
+ `_
+* `Powered by aiohttp
+ `_
+
+Feel free to make a Pull Request for adding your link to these pages!
+
+
+Communication channels
+======================
+
+*aio-libs Discussions*: https://github.com/aio-libs/aiohttp/discussions
+
+*gitter chat* https://gitter.im/aio-libs/Lobby
+
+We support `Stack Overflow
+`_.
+Please add *aiohttp* tag to your question there.
+
+Requirements
+============
+
+- async-timeout_
+- attrs_
+- multidict_
+- yarl_
+- frozenlist_
+
+Optionally you may install the aiodns_ library (highly recommended for sake of speed).
+
+.. _aiodns: https://pypi.python.org/pypi/aiodns
+.. _attrs: https://github.com/python-attrs/attrs
+.. _multidict: https://pypi.python.org/pypi/multidict
+.. _frozenlist: https://pypi.org/project/frozenlist/
+.. _yarl: https://pypi.python.org/pypi/yarl
+.. _async-timeout: https://pypi.python.org/pypi/async_timeout
+
+License
+=======
+
+``aiohttp`` is offered under the Apache 2 license.
+
+
+Keepsafe
+========
+
+The aiohttp community would like to thank Keepsafe
+(https://www.getkeepsafe.com) for its support in the early days of
+the project.
+
+
+Source code
+===========
+
+The latest developer version is available in a GitHub repository:
+https://github.com/aio-libs/aiohttp
+
+Benchmarks
+==========
+
+If you are interested in efficiency, the AsyncIO community maintains a
+list of benchmarks on the official wiki:
+https://github.com/python/asyncio/wiki/Benchmarks
diff --git a/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/RECORD b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/RECORD
new file mode 100644
index 00000000..6da9ccfe
--- /dev/null
+++ b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/RECORD
@@ -0,0 +1,119 @@
+aiohttp-3.9.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+aiohttp-3.9.5.dist-info/LICENSE.txt,sha256=n4DQ2311WpQdtFchcsJw7L2PCCuiFd3QlZhZQu2Uqes,588
+aiohttp-3.9.5.dist-info/METADATA,sha256=TD5idczLj39MQNfk4DX6Dg33oZrl1YHK1vSnxNt5lOQ,7459
+aiohttp-3.9.5.dist-info/RECORD,,
+aiohttp-3.9.5.dist-info/WHEEL,sha256=OvtvnbpcaxHa5TgXgfC48E6JA7zLr7svMspPP7Vk5o8,152
+aiohttp-3.9.5.dist-info/top_level.txt,sha256=iv-JIaacmTl-hSho3QmphcKnbRRYx1st47yjz_178Ro,8
+aiohttp/.hash/_cparser.pxd.hash,sha256=hYa9Vje-oMs2eh_7MfCPOh2QW_1x1yCjcZuc7AmwLd0,121
+aiohttp/.hash/_find_header.pxd.hash,sha256=_mbpD6vM-CVCKq3ulUvsOAz5Wdo88wrDzfpOsMQaMNA,125
+aiohttp/.hash/_helpers.pyi.hash,sha256=Ew4BZDc2LqFwszgZZUHHrJvw5P8HBhJ700n1Ntg52hE,121
+aiohttp/.hash/_helpers.pyx.hash,sha256=5JQ6BlMBE4HnRaCGdkK9_wpL3ZSWpU1gyLYva0Wwx2c,121
+aiohttp/.hash/_http_parser.pyx.hash,sha256=4RMfISkoa9dJKvYXpa_Qe7b_32v4k7HXpaGhgXcNK4k,125
+aiohttp/.hash/_http_writer.pyx.hash,sha256=3Qg3T3D-Ud73elzPHBufK0yEu9tP5jsu6g-aPKQY9gE,125
+aiohttp/.hash/_websocket.pyx.hash,sha256=M97f-Yti-4vnE4GNTD1s_DzKs-fG_ww3jle6EUvixnE,123
+aiohttp/.hash/hdrs.py.hash,sha256=2oEszMWjYFTHoF2w4OcFCoM7osv4vY9KLLJCu9HP0xI,116
+aiohttp/__init__.py,sha256=f4PQQkLHI2og_KChLyaIzT1iOTIajtmT62yHfpn-XhU,7762
+aiohttp/__pycache__/__init__.cpython-312.pyc,,
+aiohttp/__pycache__/abc.cpython-312.pyc,,
+aiohttp/__pycache__/base_protocol.cpython-312.pyc,,
+aiohttp/__pycache__/client.cpython-312.pyc,,
+aiohttp/__pycache__/client_exceptions.cpython-312.pyc,,
+aiohttp/__pycache__/client_proto.cpython-312.pyc,,
+aiohttp/__pycache__/client_reqrep.cpython-312.pyc,,
+aiohttp/__pycache__/client_ws.cpython-312.pyc,,
+aiohttp/__pycache__/compression_utils.cpython-312.pyc,,
+aiohttp/__pycache__/connector.cpython-312.pyc,,
+aiohttp/__pycache__/cookiejar.cpython-312.pyc,,
+aiohttp/__pycache__/formdata.cpython-312.pyc,,
+aiohttp/__pycache__/hdrs.cpython-312.pyc,,
+aiohttp/__pycache__/helpers.cpython-312.pyc,,
+aiohttp/__pycache__/http.cpython-312.pyc,,
+aiohttp/__pycache__/http_exceptions.cpython-312.pyc,,
+aiohttp/__pycache__/http_parser.cpython-312.pyc,,
+aiohttp/__pycache__/http_websocket.cpython-312.pyc,,
+aiohttp/__pycache__/http_writer.cpython-312.pyc,,
+aiohttp/__pycache__/locks.cpython-312.pyc,,
+aiohttp/__pycache__/log.cpython-312.pyc,,
+aiohttp/__pycache__/multipart.cpython-312.pyc,,
+aiohttp/__pycache__/payload.cpython-312.pyc,,
+aiohttp/__pycache__/payload_streamer.cpython-312.pyc,,
+aiohttp/__pycache__/pytest_plugin.cpython-312.pyc,,
+aiohttp/__pycache__/resolver.cpython-312.pyc,,
+aiohttp/__pycache__/streams.cpython-312.pyc,,
+aiohttp/__pycache__/tcp_helpers.cpython-312.pyc,,
+aiohttp/__pycache__/test_utils.cpython-312.pyc,,
+aiohttp/__pycache__/tracing.cpython-312.pyc,,
+aiohttp/__pycache__/typedefs.cpython-312.pyc,,
+aiohttp/__pycache__/web.cpython-312.pyc,,
+aiohttp/__pycache__/web_app.cpython-312.pyc,,
+aiohttp/__pycache__/web_exceptions.cpython-312.pyc,,
+aiohttp/__pycache__/web_fileresponse.cpython-312.pyc,,
+aiohttp/__pycache__/web_log.cpython-312.pyc,,
+aiohttp/__pycache__/web_middlewares.cpython-312.pyc,,
+aiohttp/__pycache__/web_protocol.cpython-312.pyc,,
+aiohttp/__pycache__/web_request.cpython-312.pyc,,
+aiohttp/__pycache__/web_response.cpython-312.pyc,,
+aiohttp/__pycache__/web_routedef.cpython-312.pyc,,
+aiohttp/__pycache__/web_runner.cpython-312.pyc,,
+aiohttp/__pycache__/web_server.cpython-312.pyc,,
+aiohttp/__pycache__/web_urldispatcher.cpython-312.pyc,,
+aiohttp/__pycache__/web_ws.cpython-312.pyc,,
+aiohttp/__pycache__/worker.cpython-312.pyc,,
+aiohttp/_cparser.pxd,sha256=8jGIg-VJ9p3llwCakUYDsPGxA4HiZe9dmK9Jmtlz-5g,4318
+aiohttp/_find_header.pxd,sha256=0GfwFCPN2zxEKTO1_MA5sYq2UfzsG8kcV3aTqvwlz3g,68
+aiohttp/_headers.pxi,sha256=n701k28dVPjwRnx5j6LpJhLTfj7dqu2vJt7f0O60Oyg,2007
+aiohttp/_helpers.cpython-312-x86_64-linux-gnu.so,sha256=7Ontevet_I6TNceZkVobXKqqoYO7-I9LBHdQi6lPjFY,613312
+aiohttp/_helpers.pyi,sha256=ZoKiJSS51PxELhI2cmIr5737YjjZcJt7FbIRO3ym1Ss,202
+aiohttp/_helpers.pyx,sha256=XeLbNft5X_4ifi8QB8i6TyrRuayijMSO3IDHeSA89uM,1049
+aiohttp/_http_parser.cpython-312-x86_64-linux-gnu.so,sha256=5daeJlbYN2v_gGfCjycRsaUwkrNjX4YKktYVIFLULdc,2791056
+aiohttp/_http_parser.pyx,sha256=q68Rq06MpW-QwLxriE3hIJmWIKc4lVFaWHU3clsHd4Y,28125
+aiohttp/_http_writer.cpython-312-x86_64-linux-gnu.so,sha256=zwR7Su1KC-IPDnC4IUAbCR3oM3dbu5ZsLQaJNKvui5w,503160
+aiohttp/_http_writer.pyx,sha256=aIHAp8g4ZV5kbGRdmZce-vXjELw2M6fGKyJuOdgYQqw,4575
+aiohttp/_websocket.cpython-312-x86_64-linux-gnu.so,sha256=egxd5kxts0IOTTIWVaK15qDADrWbquvqAumjJzMxLv8,278192
+aiohttp/_websocket.pyx,sha256=1XuOSNDCbyDrzF5uMA2isqausSs8l2jWTLDlNDLM9Io,1561
+aiohttp/abc.py,sha256=WGZ5HH0hoCH77qaISTb689ygpS9CxfKkgUCOcgjU2lo,5500
+aiohttp/base_protocol.py,sha256=HJ5SxzbzYewj-sjoKMbD6i5rDYEv9Zo7Q_cyV3Wvn6o,2876
+aiohttp/client.py,sha256=PPUMNromtwqttMy5rzxmZ9ZjMFvqglvPdYG-A96lHhU,47499
+aiohttp/client_exceptions.py,sha256=7lx_YWAauUQVOxg_RehW9HZE344ak3lGmVJHfCrmb-A,9411
+aiohttp/client_proto.py,sha256=kCRlCOYxiuUv83cHz-gDYF0bK4Ye_KgkhYibjqTpN_M,9910
+aiohttp/client_reqrep.py,sha256=bt5woKRdhImzsEqg39a-O0yqswY8adguODtE-ui2RxE,40075
+aiohttp/client_ws.py,sha256=nNrwu1wA0U3B0cNsVr61QfV2S60bbKfaZXHfW7klFl4,11010
+aiohttp/compression_utils.py,sha256=GCkBNJqrybMhiTQGwqqhORnaTLpRFZD_-UvRtnZ5lEQ,5015
+aiohttp/connector.py,sha256=meq8urjMWelJnG26VgkA3ibrIioaEWqujg3jjNAKG28,53796
+aiohttp/cookiejar.py,sha256=PdvsOiDasDYYUOPaaAfuuFJzR4CJyHHjut02YiZ_N8M,14015
+aiohttp/formdata.py,sha256=WjHA1mieKlWwI5O3hi3-siqN0dWz_X04oXNNZje2z7Q,6521
+aiohttp/hdrs.py,sha256=uzn5agn_jXid2h-ky6Y0ZAQ8BrPeTGLDGr-weiMctso,4613
+aiohttp/helpers.py,sha256=EAZ1V0pGfv2xRiWfhjubBqgLBI0aK-CXlUlYss3EYzo,30988
+aiohttp/http.py,sha256=8o8j8xH70OWjnfTWA9V44NR785QPxEPrUtzMXiAVpwc,1842
+aiohttp/http_exceptions.py,sha256=7LOFFUwq04fZsnZA-NP5nukd6c2i8daM8-ejj3ndbSQ,2716
+aiohttp/http_parser.py,sha256=zuG3C-WOUVjoNTqgsrdCorzCGoXbR0gHhma3G___zOA,36507
+aiohttp/http_websocket.py,sha256=9Kfp5e4TU1JJfEvJ7l1Kt6Cr2HZX3z_RIojN8BAriPI,26732
+aiohttp/http_writer.py,sha256=fxpyRj_S3WcBl9fxxF05t8YYAUA-0jW5b_PjVSluT3Y,5933
+aiohttp/locks.py,sha256=wRYFo1U82LwBBdqwU24JEPaoTAlKaaJd2FtfDKhkTb4,1136
+aiohttp/log.py,sha256=BbNKx9e3VMIm0xYjZI0IcBBoS7wjdeIeSaiJE7-qK2g,325
+aiohttp/multipart.py,sha256=xBmudauxLHuXajWQMVl647sNS9IzzMYeEMKay4C0qVw,34937
+aiohttp/payload.py,sha256=xK04Z-TSao-qiYVMnphKG9-6yOvoqGsZBM7egUS4n9A,13542
+aiohttp/payload_streamer.py,sha256=eAS8S-UWfLkEMavRjP2Uu9amC3PnbV79wHTNDoRmYn8,2087
+aiohttp/py.typed,sha256=sow9soTwP9T_gEAQSVh7Gb8855h04Nwmhs2We-JRgZM,7
+aiohttp/pytest_plugin.py,sha256=3IwpuxtFiUVFGS_ZitWuqvECSGgXQWvCW312B2TaVLY,11605
+aiohttp/resolver.py,sha256=8peXjB482v0hg1ESn87op6f-UeLXk_fAMxQo_23Ek6M,5070
+aiohttp/streams.py,sha256=LWlr0gE44cjKzBU9I15vWwlorPW8ZAU-M2Sgz_UdjWM,21128
+aiohttp/tcp_helpers.py,sha256=BSadqVWaBpMFDRWnhaaR941N9MiDZ7bdTrxgCb0CW-M,961
+aiohttp/test_utils.py,sha256=8-McpBCAzFbA17yeEW9UYVKBypu-Hm_407ppQy76XWU,20475
+aiohttp/tracing.py,sha256=W94gFgxFtXSBWMU4ajbrOH61mJ4mElRmfyxNUw6FwIA,15132
+aiohttp/typedefs.py,sha256=f-EzBBgQAxNLiTUtkjgMAL5LQt81HloYTesxnhNM03U,1471
+aiohttp/web.py,sha256=HFTQaoYVK5pM3YmxNJtZl9fGrRIdFs_Nhloxe7_lJj0,19263
+aiohttp/web_app.py,sha256=4cXDqZV-KR0xMnUhQ471bsEACIsoI4_BkDJ3haXyG_I,18311
+aiohttp/web_exceptions.py,sha256=7nIuiwhZ39vJJ9KrWqArA5QcWbUdqkz2CLwEpJapeN8,10360
+aiohttp/web_fileresponse.py,sha256=33VS-6CQd4ZiezNBVZaVxWBCLuOUK_vPMNTU1ojiV80,11569
+aiohttp/web_log.py,sha256=DOfOxGyh2U7K5K_w6O7ILdfGcs4qOdzHxOwj2-k3c6c,7801
+aiohttp/web_middlewares.py,sha256=q6i0GGiVvUlpGtsbZmp88-zFIKQHwYtDd5SpBvKFdEY,4032
+aiohttp/web_protocol.py,sha256=8kAxmDpRYczyCFtUS4vDEIORgbD4WV0CTjVi-fZVykE,23060
+aiohttp/web_request.py,sha256=UyDR4JQwogyX12FS8PpMl-1d6ZG-TE02Bt2nPOEk0HI,28986
+aiohttp/web_response.py,sha256=3jfYnRpsNnxGRUAm-VNGu18Ekw5XyuYp7c7fzbOwbqY,27858
+aiohttp/web_routedef.py,sha256=Y5DPVa7D1uJp37HP6YXrO8Cd1BrEtDyS-fljOUdPk30,6132
+aiohttp/web_runner.py,sha256=rGI6zeIXZNDepvJajc8ZXue9hn0O2wSmh8S7CuXhkUI,11951
+aiohttp/web_server.py,sha256=5P-9uPCoPEDkK9ILbvEXmkkJWPhnTxBzdwAXwveyyDk,2587
+aiohttp/web_urldispatcher.py,sha256=e9QueGUecnOZq44CpfKJCjWi_IXHqHADUmIh_mzli18,40132
+aiohttp/web_ws.py,sha256=eiLuPZnB6HFXagcdZzU9jD9aKXP3K6YNDXDIoOpN8co,18960
+aiohttp/worker.py,sha256=bkozEd2rAzQS0qs4knnnplOmaZ4TNdYtqWXSXx9djEc,7965
diff --git a/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/WHEEL b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/WHEEL
new file mode 100644
index 00000000..db05d97d
--- /dev/null
+++ b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/WHEEL
@@ -0,0 +1,6 @@
+Wheel-Version: 1.0
+Generator: bdist_wheel (0.43.0)
+Root-Is-Purelib: false
+Tag: cp312-cp312-manylinux_2_17_x86_64
+Tag: cp312-cp312-manylinux2014_x86_64
+
diff --git a/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/top_level.txt b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/top_level.txt
new file mode 100644
index 00000000..ee4ba4f3
--- /dev/null
+++ b/dist/ba_data/python-site-packages/aiohttp-3.9.5.dist-info/top_level.txt
@@ -0,0 +1 @@
+aiohttp
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/_cparser.pxd.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/_cparser.pxd.hash
index 5d764977..65e3d4ba 100644
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/_cparser.pxd.hash
+++ b/dist/ba_data/python-site-packages/aiohttp/.hash/_cparser.pxd.hash
@@ -1 +1 @@
-c6fb0b975dd95d7c871b26f652ced6b0b9dc9dd42bc61c860782979ef6ec46d4 *D:/a/aiohttp/aiohttp/aiohttp/_cparser.pxd
+f2318883e549f69de597009a914603b0f1b10381e265ef5d98af499ad973fb98 /home/runner/work/aiohttp/aiohttp/aiohttp/_cparser.pxd
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/_find_header.pxd.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/_find_header.pxd.hash
index 8af9f81d..f006c2de 100644
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/_find_header.pxd.hash
+++ b/dist/ba_data/python-site-packages/aiohttp/.hash/_find_header.pxd.hash
@@ -1 +1 @@
-0455129b185e981b5b96ac738f31f7c74dc57f1696953cae0083b3f18679fe73 *D:/a/aiohttp/aiohttp/aiohttp/_find_header.pxd
+d067f01423cddb3c442933b5fcc039b18ab651fcec1bc91c577693aafc25cf78 /home/runner/work/aiohttp/aiohttp/aiohttp/_find_header.pxd
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/_frozenlist.pyx.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/_frozenlist.pyx.hash
deleted file mode 100644
index 01fdf2b1..00000000
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/_frozenlist.pyx.hash
+++ /dev/null
@@ -1 +0,0 @@
-481f39d4a9ad5a9889d99074e53a68e3ce795640b246d80cb3ce375b3f2415e8 *D:/a/aiohttp/aiohttp/aiohttp/_frozenlist.pyx
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/_helpers.pyi.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/_helpers.pyi.hash
index 82a670d9..6a30d632 100644
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/_helpers.pyi.hash
+++ b/dist/ba_data/python-site-packages/aiohttp/.hash/_helpers.pyi.hash
@@ -1 +1 @@
-d87779202d197f8613109e35dacbb2ca1b21d64572543bf9838b2d832a362ac7 *D:/a/aiohttp/aiohttp/aiohttp/_helpers.pyi
+6682a22524b9d4fc442e123672622be7bdfb6238d9709b7b15b2113b7ca6d52b /home/runner/work/aiohttp/aiohttp/aiohttp/_helpers.pyi
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/_helpers.pyx.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/_helpers.pyx.hash
index 251b846c..8f38727d 100644
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/_helpers.pyx.hash
+++ b/dist/ba_data/python-site-packages/aiohttp/.hash/_helpers.pyx.hash
@@ -1 +1 @@
-b6097b7d987440c4fa7237f88d227c89a3ba0dd403dc638ddbe487e0de7f1138 *D:/a/aiohttp/aiohttp/aiohttp/_helpers.pyx
+5de2db35fb795ffe227e2f1007c8ba4f2ad1b9aca28cc48edc80c779203cf6e3 /home/runner/work/aiohttp/aiohttp/aiohttp/_helpers.pyx
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/_http_parser.pyx.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/_http_parser.pyx.hash
index 5c431a9e..215a0da3 100644
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/_http_parser.pyx.hash
+++ b/dist/ba_data/python-site-packages/aiohttp/.hash/_http_parser.pyx.hash
@@ -1 +1 @@
-83c05185224ad57f133f7fd5d56c331f4f9e101cd52f91237e7b6568b5459e1c *D:/a/aiohttp/aiohttp/aiohttp/_http_parser.pyx
+abaf11ab4e8ca56f90c0bc6b884de120999620a73895515a587537725b077786 /home/runner/work/aiohttp/aiohttp/aiohttp/_http_parser.pyx
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/_http_writer.pyx.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/_http_writer.pyx.hash
index e2a14a87..8e1aaab0 100644
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/_http_writer.pyx.hash
+++ b/dist/ba_data/python-site-packages/aiohttp/.hash/_http_writer.pyx.hash
@@ -1 +1 @@
-ac1cdb93ec6b2163b6843d242a8e482ca48ab16fd4f177f5e4800f9ea487db74 *D:/a/aiohttp/aiohttp/aiohttp/_http_writer.pyx
+6881c0a7c838655e646c645d99971efaf5e310bc3633a7c62b226e39d81842ac /home/runner/work/aiohttp/aiohttp/aiohttp/_http_writer.pyx
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/_websocket.pyx.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/_websocket.pyx.hash
index 1a3346e3..ddbb4c7a 100644
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/_websocket.pyx.hash
+++ b/dist/ba_data/python-site-packages/aiohttp/.hash/_websocket.pyx.hash
@@ -1 +1 @@
-a3d27bca2f5cdbe8d3063137754917c610d62af456273e4665fc8bb202506b7f *D:/a/aiohttp/aiohttp/aiohttp/_websocket.pyx
+d57b8e48d0c26f20ebcc5e6e300da2b2a6aeb12b3c9768d64cb0e53432ccf48a /home/runner/work/aiohttp/aiohttp/aiohttp/_websocket.pyx
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/frozenlist.pyi.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/frozenlist.pyi.hash
deleted file mode 100644
index 918409f9..00000000
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/frozenlist.pyi.hash
+++ /dev/null
@@ -1 +0,0 @@
-9011bd27ad72982aa252f064ae3b1119599f6a49a4ce4e8a1e665b76044b0996 *D:/a/aiohttp/aiohttp/aiohttp/frozenlist.pyi
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/hdrs.py.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/hdrs.py.hash
index b69b16ad..e0b81d76 100644
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/hdrs.py.hash
+++ b/dist/ba_data/python-site-packages/aiohttp/.hash/hdrs.py.hash
@@ -1 +1 @@
-5f2bdc50368865ef87528ae8fd6820c8b35677209c5430b669c8857abedb9e94 *D:/a/aiohttp/aiohttp/aiohttp/hdrs.py
+bb39f96a09ff8d789dda1fa4cba63464043c06b3de4c62c31abfb07a231cb6ca /home/runner/work/aiohttp/aiohttp/aiohttp/hdrs.py
diff --git a/dist/ba_data/python-site-packages/aiohttp/.hash/signals.pyi.hash b/dist/ba_data/python-site-packages/aiohttp/.hash/signals.pyi.hash
deleted file mode 100644
index fc136a64..00000000
--- a/dist/ba_data/python-site-packages/aiohttp/.hash/signals.pyi.hash
+++ /dev/null
@@ -1 +0,0 @@
-1273686ce37b6b3150d5f1d28a496f6ebbd07d05273993e2de7ffaa4a1335e83 *D:/a/aiohttp/aiohttp/aiohttp/signals.pyi
diff --git a/dist/ba_data/python-site-packages/aiohttp/__init__.py b/dist/ba_data/python-site-packages/aiohttp/__init__.py
index 12c73f4a..e82e790b 100644
--- a/dist/ba_data/python-site-packages/aiohttp/__init__.py
+++ b/dist/ba_data/python-site-packages/aiohttp/__init__.py
@@ -1,6 +1,6 @@
-__version__ = "3.7.4.post0"
+__version__ = "3.9.5"
-from typing import Tuple
+from typing import TYPE_CHECKING, Tuple
from . import hdrs as hdrs
from .client import (
@@ -38,7 +38,7 @@
)
from .cookiejar import CookieJar as CookieJar, DummyCookieJar as DummyCookieJar
from .formdata import FormData as FormData
-from .helpers import BasicAuth as BasicAuth, ChainMapProxy as ChainMapProxy
+from .helpers import BasicAuth, ChainMapProxy, ETag
from .http import (
HttpVersion as HttpVersion,
HttpVersion10 as HttpVersion10,
@@ -78,7 +78,6 @@
DefaultResolver as DefaultResolver,
ThreadedResolver as ThreadedResolver,
)
-from .signals import Signal as Signal
from .streams import (
EMPTY_PAYLOAD as EMPTY_PAYLOAD,
DataQueue as DataQueue,
@@ -105,6 +104,13 @@
TraceResponseChunkReceivedParams as TraceResponseChunkReceivedParams,
)
+if TYPE_CHECKING:
+ # At runtime these are lazy-loaded at the bottom of the file.
+ from .worker import (
+ GunicornUVLoopWebWorker as GunicornUVLoopWebWorker,
+ GunicornWebWorker as GunicornWebWorker,
+ )
+
__all__: Tuple[str, ...] = (
"hdrs",
# client
@@ -147,6 +153,7 @@
# helpers
"BasicAuth",
"ChainMapProxy",
+ "ETag",
# http
"HttpVersion",
"HttpVersion10",
@@ -183,8 +190,7 @@
"AsyncResolver",
"DefaultResolver",
"ThreadedResolver",
- # signals
- "Signal",
+ # streams
"DataQueue",
"EMPTY_PAYLOAD",
"EofStream",
@@ -207,11 +213,28 @@
"TraceRequestRedirectParams",
"TraceRequestStartParams",
"TraceResponseChunkReceivedParams",
+ # workers (imported lazily with __getattr__)
+ "GunicornUVLoopWebWorker",
+ "GunicornWebWorker",
)
-try:
- from .worker import GunicornUVLoopWebWorker, GunicornWebWorker
- __all__ += ("GunicornWebWorker", "GunicornUVLoopWebWorker")
-except ImportError: # pragma: no cover
- pass
+def __dir__() -> Tuple[str, ...]:
+ return __all__ + ("__author__", "__doc__")
+
+
+def __getattr__(name: str) -> object:
+ global GunicornUVLoopWebWorker, GunicornWebWorker
+
+ # Importing gunicorn takes a long time (>100ms), so only import if actually needed.
+ if name in ("GunicornUVLoopWebWorker", "GunicornWebWorker"):
+ try:
+ from .worker import GunicornUVLoopWebWorker as guv, GunicornWebWorker as gw
+ except ImportError:
+ return None
+
+ GunicornUVLoopWebWorker = guv # type: ignore[misc]
+ GunicornWebWorker = gw # type: ignore[misc]
+ return guv if name == "GunicornUVLoopWebWorker" else gw
+
+ raise AttributeError(f"module {__name__} has no attribute {name}")
diff --git a/dist/ba_data/python-site-packages/aiohttp/_cparser.pxd b/dist/ba_data/python-site-packages/aiohttp/_cparser.pxd
index 0f9fc009..c2cd5a92 100644
--- a/dist/ba_data/python-site-packages/aiohttp/_cparser.pxd
+++ b/dist/ba_data/python-site-packages/aiohttp/_cparser.pxd
@@ -1,140 +1,158 @@
-from libc.stdint cimport uint16_t, uint32_t, uint64_t
+from libc.stdint cimport int32_t, uint8_t, uint16_t, uint64_t
-cdef extern from "../vendor/http-parser/http_parser.h":
- ctypedef int (*http_data_cb) (http_parser*,
- const char *at,
- size_t length) except -1
+cdef extern from "../vendor/llhttp/build/llhttp.h":
- ctypedef int (*http_cb) (http_parser*) except -1
-
- struct http_parser:
- unsigned int type
- unsigned int flags
- unsigned int state
- unsigned int header_state
- unsigned int index
-
- uint32_t nread
+ struct llhttp__internal_s:
+ int32_t _index
+ void* _span_pos0
+ void* _span_cb0
+ int32_t error
+ const char* reason
+ const char* error_pos
+ void* data
+ void* _current
uint64_t content_length
-
- unsigned short http_major
- unsigned short http_minor
- unsigned int status_code
- unsigned int method
- unsigned int http_errno
-
- unsigned int upgrade
-
- void *data
-
- struct http_parser_settings:
- http_cb on_message_begin
- http_data_cb on_url
- http_data_cb on_status
- http_data_cb on_header_field
- http_data_cb on_header_value
- http_cb on_headers_complete
- http_data_cb on_body
- http_cb on_message_complete
- http_cb on_chunk_header
- http_cb on_chunk_complete
-
- enum http_parser_type:
- HTTP_REQUEST,
- HTTP_RESPONSE,
- HTTP_BOTH
-
- enum http_errno:
+ uint8_t type
+ uint8_t method
+ uint8_t http_major
+ uint8_t http_minor
+ uint8_t header_state
+ uint8_t lenient_flags
+ uint8_t upgrade
+ uint8_t finish
+ uint16_t flags
+ uint16_t status_code
+ void* settings
+
+ ctypedef llhttp__internal_s llhttp__internal_t
+ ctypedef llhttp__internal_t llhttp_t
+
+ ctypedef int (*llhttp_data_cb)(llhttp_t*, const char *at, size_t length) except -1
+ ctypedef int (*llhttp_cb)(llhttp_t*) except -1
+
+ struct llhttp_settings_s:
+ llhttp_cb on_message_begin
+ llhttp_data_cb on_url
+ llhttp_data_cb on_status
+ llhttp_data_cb on_header_field
+ llhttp_data_cb on_header_value
+ llhttp_cb on_headers_complete
+ llhttp_data_cb on_body
+ llhttp_cb on_message_complete
+ llhttp_cb on_chunk_header
+ llhttp_cb on_chunk_complete
+
+ llhttp_cb on_url_complete
+ llhttp_cb on_status_complete
+ llhttp_cb on_header_field_complete
+ llhttp_cb on_header_value_complete
+
+ ctypedef llhttp_settings_s llhttp_settings_t
+
+ enum llhttp_errno:
HPE_OK,
- HPE_CB_message_begin,
- HPE_CB_url,
- HPE_CB_header_field,
- HPE_CB_header_value,
- HPE_CB_headers_complete,
- HPE_CB_body,
- HPE_CB_message_complete,
- HPE_CB_status,
- HPE_CB_chunk_header,
- HPE_CB_chunk_complete,
- HPE_INVALID_EOF_STATE,
- HPE_HEADER_OVERFLOW,
+ HPE_INTERNAL,
+ HPE_STRICT,
+ HPE_LF_EXPECTED,
+ HPE_UNEXPECTED_CONTENT_LENGTH,
HPE_CLOSED_CONNECTION,
- HPE_INVALID_VERSION,
- HPE_INVALID_STATUS,
HPE_INVALID_METHOD,
HPE_INVALID_URL,
- HPE_INVALID_HOST,
- HPE_INVALID_PORT,
- HPE_INVALID_PATH,
- HPE_INVALID_QUERY_STRING,
- HPE_INVALID_FRAGMENT,
- HPE_LF_EXPECTED,
+ HPE_INVALID_CONSTANT,
+ HPE_INVALID_VERSION,
HPE_INVALID_HEADER_TOKEN,
HPE_INVALID_CONTENT_LENGTH,
HPE_INVALID_CHUNK_SIZE,
- HPE_INVALID_CONSTANT,
- HPE_INVALID_INTERNAL_STATE,
- HPE_STRICT,
+ HPE_INVALID_STATUS,
+ HPE_INVALID_EOF_STATE,
+ HPE_INVALID_TRANSFER_ENCODING,
+ HPE_CB_MESSAGE_BEGIN,
+ HPE_CB_HEADERS_COMPLETE,
+ HPE_CB_MESSAGE_COMPLETE,
+ HPE_CB_CHUNK_HEADER,
+ HPE_CB_CHUNK_COMPLETE,
HPE_PAUSED,
- HPE_UNKNOWN
+ HPE_PAUSED_UPGRADE,
+ HPE_USER
- enum flags:
+ ctypedef llhttp_errno llhttp_errno_t
+
+ enum llhttp_flags:
F_CHUNKED,
- F_CONNECTION_KEEP_ALIVE,
- F_CONNECTION_CLOSE,
- F_CONNECTION_UPGRADE,
- F_TRAILING,
- F_UPGRADE,
- F_SKIPBODY,
- F_CONTENTLENGTH
-
- enum http_method:
- DELETE, GET, HEAD, POST, PUT, CONNECT, OPTIONS, TRACE, COPY,
- LOCK, MKCOL, MOVE, PROPFIND, PROPPATCH, SEARCH, UNLOCK, BIND,
- REBIND, UNBIND, ACL, REPORT, MKACTIVITY, CHECKOUT, MERGE,
- MSEARCH, NOTIFY, SUBSCRIBE, UNSUBSCRIBE, PATCH, PURGE, MKCALENDAR,
- LINK, UNLINK
-
- void http_parser_init(http_parser *parser, http_parser_type type)
-
- size_t http_parser_execute(http_parser *parser,
- const http_parser_settings *settings,
- const char *data,
- size_t len)
-
- int http_should_keep_alive(const http_parser *parser)
-
- void http_parser_settings_init(http_parser_settings *settings)
-
- const char *http_errno_name(http_errno err)
- const char *http_errno_description(http_errno err)
- const char *http_method_str(http_method m)
-
- # URL Parser
-
- enum http_parser_url_fields:
- UF_SCHEMA = 0,
- UF_HOST = 1,
- UF_PORT = 2,
- UF_PATH = 3,
- UF_QUERY = 4,
- UF_FRAGMENT = 5,
- UF_USERINFO = 6,
- UF_MAX = 7
-
- struct http_parser_url_field_data:
- uint16_t off
- uint16_t len
-
- struct http_parser_url:
- uint16_t field_set
- uint16_t port
- http_parser_url_field_data[UF_MAX] field_data
-
- void http_parser_url_init(http_parser_url *u)
-
- int http_parser_parse_url(const char *buf,
- size_t buflen,
- int is_connect,
- http_parser_url *u)
+ F_CONTENT_LENGTH
+
+ enum llhttp_type:
+ HTTP_REQUEST,
+ HTTP_RESPONSE,
+ HTTP_BOTH
+
+ enum llhttp_method:
+ HTTP_DELETE,
+ HTTP_GET,
+ HTTP_HEAD,
+ HTTP_POST,
+ HTTP_PUT,
+ HTTP_CONNECT,
+ HTTP_OPTIONS,
+ HTTP_TRACE,
+ HTTP_COPY,
+ HTTP_LOCK,
+ HTTP_MKCOL,
+ HTTP_MOVE,
+ HTTP_PROPFIND,
+ HTTP_PROPPATCH,
+ HTTP_SEARCH,
+ HTTP_UNLOCK,
+ HTTP_BIND,
+ HTTP_REBIND,
+ HTTP_UNBIND,
+ HTTP_ACL,
+ HTTP_REPORT,
+ HTTP_MKACTIVITY,
+ HTTP_CHECKOUT,
+ HTTP_MERGE,
+ HTTP_MSEARCH,
+ HTTP_NOTIFY,
+ HTTP_SUBSCRIBE,
+ HTTP_UNSUBSCRIBE,
+ HTTP_PATCH,
+ HTTP_PURGE,
+ HTTP_MKCALENDAR,
+ HTTP_LINK,
+ HTTP_UNLINK,
+ HTTP_SOURCE,
+ HTTP_PRI,
+ HTTP_DESCRIBE,
+ HTTP_ANNOUNCE,
+ HTTP_SETUP,
+ HTTP_PLAY,
+ HTTP_PAUSE,
+ HTTP_TEARDOWN,
+ HTTP_GET_PARAMETER,
+ HTTP_SET_PARAMETER,
+ HTTP_REDIRECT,
+ HTTP_RECORD,
+ HTTP_FLUSH
+
+ ctypedef llhttp_method llhttp_method_t;
+
+ void llhttp_settings_init(llhttp_settings_t* settings)
+ void llhttp_init(llhttp_t* parser, llhttp_type type,
+ const llhttp_settings_t* settings)
+
+ llhttp_errno_t llhttp_execute(llhttp_t* parser, const char* data, size_t len)
+
+ int llhttp_should_keep_alive(const llhttp_t* parser)
+
+ void llhttp_resume_after_upgrade(llhttp_t* parser)
+
+ llhttp_errno_t llhttp_get_errno(const llhttp_t* parser)
+ const char* llhttp_get_error_reason(const llhttp_t* parser)
+ const char* llhttp_get_error_pos(const llhttp_t* parser)
+
+ const char* llhttp_method_name(llhttp_method_t method)
+
+ void llhttp_set_lenient_headers(llhttp_t* parser, int enabled)
+ void llhttp_set_lenient_optional_cr_before_lf(llhttp_t* parser, int enabled)
+ void llhttp_set_lenient_spaces_after_chunk_size(llhttp_t* parser, int enabled)
diff --git a/dist/ba_data/python-site-packages/aiohttp/_find_header.c b/dist/ba_data/python-site-packages/aiohttp/_find_header.c
deleted file mode 100644
index 012cba33..00000000
--- a/dist/ba_data/python-site-packages/aiohttp/_find_header.c
+++ /dev/null
@@ -1,9870 +0,0 @@
-/* The file is autogenerated from aiohttp/hdrs.py
-Run ./tools/gen.py to update it after the origin changing. */
-
-#include "_find_header.h"
-
-#define NEXT_CHAR() \
-{ \
- count++; \
- if (count == size) { \
- /* end of search */ \
- return -1; \
- } \
- pchar++; \
- ch = *pchar; \
- last = (count == size -1); \
-} while(0);
-
-int
-find_header(const char *str, int size)
-{
- char *pchar = str;
- int last;
- char ch;
- int count = -1;
- pchar--;
-
-
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto A;
- case 'a':
- if (last) {
- return -1;
- }
- goto A;
- case 'C':
- if (last) {
- return -1;
- }
- goto C;
- case 'c':
- if (last) {
- return -1;
- }
- goto C;
- case 'D':
- if (last) {
- return -1;
- }
- goto D;
- case 'd':
- if (last) {
- return -1;
- }
- goto D;
- case 'E':
- if (last) {
- return -1;
- }
- goto E;
- case 'e':
- if (last) {
- return -1;
- }
- goto E;
- case 'F':
- if (last) {
- return -1;
- }
- goto F;
- case 'f':
- if (last) {
- return -1;
- }
- goto F;
- case 'H':
- if (last) {
- return -1;
- }
- goto H;
- case 'h':
- if (last) {
- return -1;
- }
- goto H;
- case 'I':
- if (last) {
- return -1;
- }
- goto I;
- case 'i':
- if (last) {
- return -1;
- }
- goto I;
- case 'K':
- if (last) {
- return -1;
- }
- goto K;
- case 'k':
- if (last) {
- return -1;
- }
- goto K;
- case 'L':
- if (last) {
- return -1;
- }
- goto L;
- case 'l':
- if (last) {
- return -1;
- }
- goto L;
- case 'M':
- if (last) {
- return -1;
- }
- goto M;
- case 'm':
- if (last) {
- return -1;
- }
- goto M;
- case 'O':
- if (last) {
- return -1;
- }
- goto O;
- case 'o':
- if (last) {
- return -1;
- }
- goto O;
- case 'P':
- if (last) {
- return -1;
- }
- goto P;
- case 'p':
- if (last) {
- return -1;
- }
- goto P;
- case 'R':
- if (last) {
- return -1;
- }
- goto R;
- case 'r':
- if (last) {
- return -1;
- }
- goto R;
- case 'S':
- if (last) {
- return -1;
- }
- goto S;
- case 's':
- if (last) {
- return -1;
- }
- goto S;
- case 'T':
- if (last) {
- return -1;
- }
- goto T;
- case 't':
- if (last) {
- return -1;
- }
- goto T;
- case 'U':
- if (last) {
- return -1;
- }
- goto U;
- case 'u':
- if (last) {
- return -1;
- }
- goto U;
- case 'V':
- if (last) {
- return -1;
- }
- goto V;
- case 'v':
- if (last) {
- return -1;
- }
- goto V;
- case 'W':
- if (last) {
- return -1;
- }
- goto W;
- case 'w':
- if (last) {
- return -1;
- }
- goto W;
- case 'X':
- if (last) {
- return -1;
- }
- goto X;
- case 'x':
- if (last) {
- return -1;
- }
- goto X;
- default:
- return -1;
- }
-
-A:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto AC;
- case 'c':
- if (last) {
- return -1;
- }
- goto AC;
- case 'G':
- if (last) {
- return -1;
- }
- goto AG;
- case 'g':
- if (last) {
- return -1;
- }
- goto AG;
- case 'L':
- if (last) {
- return -1;
- }
- goto AL;
- case 'l':
- if (last) {
- return -1;
- }
- goto AL;
- case 'U':
- if (last) {
- return -1;
- }
- goto AU;
- case 'u':
- if (last) {
- return -1;
- }
- goto AU;
- default:
- return -1;
- }
-
-AC:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto ACC;
- case 'c':
- if (last) {
- return -1;
- }
- goto ACC;
- default:
- return -1;
- }
-
-ACC:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCE;
- default:
- return -1;
- }
-
-ACCE:
- NEXT_CHAR();
- switch (ch) {
- case 'P':
- if (last) {
- return -1;
- }
- goto ACCEP;
- case 'p':
- if (last) {
- return -1;
- }
- goto ACCEP;
- case 'S':
- if (last) {
- return -1;
- }
- goto ACCES;
- case 's':
- if (last) {
- return -1;
- }
- goto ACCES;
- default:
- return -1;
- }
-
-ACCEP:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 0;
- }
- goto ACCEPT;
- case 't':
- if (last) {
- return 0;
- }
- goto ACCEPT;
- default:
- return -1;
- }
-
-ACCEPT:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto ACCEPT_;
- default:
- return -1;
- }
-
-ACCEPT_:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto ACCEPT_C;
- case 'c':
- if (last) {
- return -1;
- }
- goto ACCEPT_C;
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCEPT_E;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCEPT_E;
- case 'L':
- if (last) {
- return -1;
- }
- goto ACCEPT_L;
- case 'l':
- if (last) {
- return -1;
- }
- goto ACCEPT_L;
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCEPT_R;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCEPT_R;
- default:
- return -1;
- }
-
-ACCEPT_C:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto ACCEPT_CH;
- case 'h':
- if (last) {
- return -1;
- }
- goto ACCEPT_CH;
- default:
- return -1;
- }
-
-ACCEPT_CH:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCEPT_CHA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCEPT_CHA;
- default:
- return -1;
- }
-
-ACCEPT_CHA:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCEPT_CHAR;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCEPT_CHAR;
- default:
- return -1;
- }
-
-ACCEPT_CHAR:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto ACCEPT_CHARS;
- case 's':
- if (last) {
- return -1;
- }
- goto ACCEPT_CHARS;
- default:
- return -1;
- }
-
-ACCEPT_CHARS:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCEPT_CHARSE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCEPT_CHARSE;
- default:
- return -1;
- }
-
-ACCEPT_CHARSE:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 1;
- }
- goto ACCEPT_CHARSET;
- case 't':
- if (last) {
- return 1;
- }
- goto ACCEPT_CHARSET;
- default:
- return -1;
- }
-
-ACCEPT_E:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto ACCEPT_EN;
- case 'n':
- if (last) {
- return -1;
- }
- goto ACCEPT_EN;
- default:
- return -1;
- }
-
-ACCEPT_EN:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENC;
- case 'c':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENC;
- default:
- return -1;
- }
-
-ACCEPT_ENC:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENCO;
- case 'o':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENCO;
- default:
- return -1;
- }
-
-ACCEPT_ENCO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENCOD;
- case 'd':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENCOD;
- default:
- return -1;
- }
-
-ACCEPT_ENCOD:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENCODI;
- case 'i':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENCODI;
- default:
- return -1;
- }
-
-ACCEPT_ENCODI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENCODIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto ACCEPT_ENCODIN;
- default:
- return -1;
- }
-
-ACCEPT_ENCODIN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return 2;
- }
- goto ACCEPT_ENCODING;
- case 'g':
- if (last) {
- return 2;
- }
- goto ACCEPT_ENCODING;
- default:
- return -1;
- }
-
-ACCEPT_L:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCEPT_LA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCEPT_LA;
- default:
- return -1;
- }
-
-ACCEPT_LA:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto ACCEPT_LAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto ACCEPT_LAN;
- default:
- return -1;
- }
-
-ACCEPT_LAN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto ACCEPT_LANG;
- case 'g':
- if (last) {
- return -1;
- }
- goto ACCEPT_LANG;
- default:
- return -1;
- }
-
-ACCEPT_LANG:
- NEXT_CHAR();
- switch (ch) {
- case 'U':
- if (last) {
- return -1;
- }
- goto ACCEPT_LANGU;
- case 'u':
- if (last) {
- return -1;
- }
- goto ACCEPT_LANGU;
- default:
- return -1;
- }
-
-ACCEPT_LANGU:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCEPT_LANGUA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCEPT_LANGUA;
- default:
- return -1;
- }
-
-ACCEPT_LANGUA:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto ACCEPT_LANGUAG;
- case 'g':
- if (last) {
- return -1;
- }
- goto ACCEPT_LANGUAG;
- default:
- return -1;
- }
-
-ACCEPT_LANGUAG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 3;
- }
- goto ACCEPT_LANGUAGE;
- case 'e':
- if (last) {
- return 3;
- }
- goto ACCEPT_LANGUAGE;
- default:
- return -1;
- }
-
-ACCEPT_R:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCEPT_RA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCEPT_RA;
- default:
- return -1;
- }
-
-ACCEPT_RA:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto ACCEPT_RAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto ACCEPT_RAN;
- default:
- return -1;
- }
-
-ACCEPT_RAN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto ACCEPT_RANG;
- case 'g':
- if (last) {
- return -1;
- }
- goto ACCEPT_RANG;
- default:
- return -1;
- }
-
-ACCEPT_RANG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCEPT_RANGE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCEPT_RANGE;
- default:
- return -1;
- }
-
-ACCEPT_RANGE:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 4;
- }
- goto ACCEPT_RANGES;
- case 's':
- if (last) {
- return 4;
- }
- goto ACCEPT_RANGES;
- default:
- return -1;
- }
-
-ACCES:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto ACCESS;
- case 's':
- if (last) {
- return -1;
- }
- goto ACCESS;
- default:
- return -1;
- }
-
-ACCESS:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto ACCESS_;
- default:
- return -1;
- }
-
-ACCESS_:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto ACCESS_C;
- case 'c':
- if (last) {
- return -1;
- }
- goto ACCESS_C;
- default:
- return -1;
- }
-
-ACCESS_C:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto ACCESS_CO;
- case 'o':
- if (last) {
- return -1;
- }
- goto ACCESS_CO;
- default:
- return -1;
- }
-
-ACCESS_CO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto ACCESS_CON;
- case 'n':
- if (last) {
- return -1;
- }
- goto ACCESS_CON;
- default:
- return -1;
- }
-
-ACCESS_CON:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto ACCESS_CONT;
- case 't':
- if (last) {
- return -1;
- }
- goto ACCESS_CONT;
- default:
- return -1;
- }
-
-ACCESS_CONT:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTR;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTR;
- default:
- return -1;
- }
-
-ACCESS_CONTR:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTRO;
- case 'o':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTRO;
- default:
- return -1;
- }
-
-ACCESS_CONTRO:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL;
- case 'l':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL;
- default:
- return -1;
- }
-
-ACCESS_CONTROL:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_A;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_A;
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_E;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_E;
- case 'M':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_M;
- case 'm':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_M;
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_R;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_R;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_A:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_AL;
- case 'l':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_AL;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_AL:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALL;
- case 'l':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALL;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALL:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLO;
- case 'o':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLO;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLO:
- NEXT_CHAR();
- switch (ch) {
- case 'W':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW;
- case 'w':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_C;
- case 'c':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_C;
- case 'H':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_H;
- case 'h':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_H;
- case 'M':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_M;
- case 'm':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_M;
- case 'O':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_O;
- case 'o':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_O;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_C:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CR;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CR;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CR:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CRE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CRE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CRE:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CRED;
- case 'd':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CRED;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CRED:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CREDE:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDEN;
- case 'n':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDEN;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CREDEN:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENT;
- case 't':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENT;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CREDENT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENTI;
- case 'i':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENTI;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CREDENTI:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENTIA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENTIA;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CREDENTIA:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENTIAL;
- case 'l':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENTIAL;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_CREDENTIAL:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 5;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENTIALS;
- case 's':
- if (last) {
- return 5;
- }
- goto ACCESS_CONTROL_ALLOW_CREDENTIALS;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_H:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_HE:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HEA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HEA;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_HEA:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HEAD;
- case 'd':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HEAD;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_HEAD:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HEADE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HEADE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_HEADE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HEADER;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_HEADER;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_HEADER:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 6;
- }
- goto ACCESS_CONTROL_ALLOW_HEADERS;
- case 's':
- if (last) {
- return 6;
- }
- goto ACCESS_CONTROL_ALLOW_HEADERS;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_M:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_ME;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_ME;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_ME:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_MET;
- case 't':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_MET;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_MET:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_METH;
- case 'h':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_METH;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_METH:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_METHO;
- case 'o':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_METHO;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_METHO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_METHOD;
- case 'd':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_METHOD;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_METHOD:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 7;
- }
- goto ACCESS_CONTROL_ALLOW_METHODS;
- case 's':
- if (last) {
- return 7;
- }
- goto ACCESS_CONTROL_ALLOW_METHODS;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_O:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_OR;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_OR;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_OR:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_ORI;
- case 'i':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_ORI;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_ORI:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_ORIG;
- case 'g':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_ORIG;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_ORIG:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_ORIGI;
- case 'i':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_ALLOW_ORIGI;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_ALLOW_ORIGI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 8;
- }
- goto ACCESS_CONTROL_ALLOW_ORIGIN;
- case 'n':
- if (last) {
- return 8;
- }
- goto ACCESS_CONTROL_ALLOW_ORIGIN;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_E:
- NEXT_CHAR();
- switch (ch) {
- case 'X':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EX;
- case 'x':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EX;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EX:
- NEXT_CHAR();
- switch (ch) {
- case 'P':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXP;
- case 'p':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXP;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXP:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPO;
- case 'o':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPO;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPO:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOS;
- case 's':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOS;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOS:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOSE:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOSE_:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_H;
- case 'h':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_H;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOSE_H:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOSE_HE:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HEA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HEA;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOSE_HEA:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HEAD;
- case 'd':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HEAD;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOSE_HEAD:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HEADE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HEADE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOSE_HEADE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HEADER;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_EXPOSE_HEADER;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_EXPOSE_HEADER:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 9;
- }
- goto ACCESS_CONTROL_EXPOSE_HEADERS;
- case 's':
- if (last) {
- return 9;
- }
- goto ACCESS_CONTROL_EXPOSE_HEADERS;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_M:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MA;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_MA:
- NEXT_CHAR();
- switch (ch) {
- case 'X':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MAX;
- case 'x':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MAX;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_MAX:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MAX_;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_MAX_:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MAX_A;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MAX_A;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_MAX_A:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MAX_AG;
- case 'g':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_MAX_AG;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_MAX_AG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 10;
- }
- goto ACCESS_CONTROL_MAX_AGE;
- case 'e':
- if (last) {
- return 10;
- }
- goto ACCESS_CONTROL_MAX_AGE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_R:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_RE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_RE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_RE:
- NEXT_CHAR();
- switch (ch) {
- case 'Q':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQ;
- case 'q':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQ;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQ:
- NEXT_CHAR();
- switch (ch) {
- case 'U':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQU;
- case 'u':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQU;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQU:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUE:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUES;
- case 's':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUES;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUES:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST;
- case 't':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_H;
- case 'h':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_H;
- case 'M':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_M;
- case 'm':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_M;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_H:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_HE:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HEA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HEA;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_HEA:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HEAD;
- case 'd':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HEAD;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_HEAD:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HEADE;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HEADE;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_HEADE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HEADER;
- case 'r':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_HEADER;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_HEADER:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 11;
- }
- goto ACCESS_CONTROL_REQUEST_HEADERS;
- case 's':
- if (last) {
- return 11;
- }
- goto ACCESS_CONTROL_REQUEST_HEADERS;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_M:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_ME;
- case 'e':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_ME;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_ME:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_MET;
- case 't':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_MET;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_MET:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_METH;
- case 'h':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_METH;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_METH:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_METHO;
- case 'o':
- if (last) {
- return -1;
- }
- goto ACCESS_CONTROL_REQUEST_METHO;
- default:
- return -1;
- }
-
-ACCESS_CONTROL_REQUEST_METHO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return 12;
- }
- goto ACCESS_CONTROL_REQUEST_METHOD;
- case 'd':
- if (last) {
- return 12;
- }
- goto ACCESS_CONTROL_REQUEST_METHOD;
- default:
- return -1;
- }
-
-AG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 13;
- }
- goto AGE;
- case 'e':
- if (last) {
- return 13;
- }
- goto AGE;
- default:
- return -1;
- }
-
-AL:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return -1;
- }
- goto ALL;
- case 'l':
- if (last) {
- return -1;
- }
- goto ALL;
- default:
- return -1;
- }
-
-ALL:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto ALLO;
- case 'o':
- if (last) {
- return -1;
- }
- goto ALLO;
- default:
- return -1;
- }
-
-ALLO:
- NEXT_CHAR();
- switch (ch) {
- case 'W':
- if (last) {
- return 14;
- }
- goto ALLOW;
- case 'w':
- if (last) {
- return 14;
- }
- goto ALLOW;
- default:
- return -1;
- }
-
-AU:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto AUT;
- case 't':
- if (last) {
- return -1;
- }
- goto AUT;
- default:
- return -1;
- }
-
-AUT:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto AUTH;
- case 'h':
- if (last) {
- return -1;
- }
- goto AUTH;
- default:
- return -1;
- }
-
-AUTH:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto AUTHO;
- case 'o':
- if (last) {
- return -1;
- }
- goto AUTHO;
- default:
- return -1;
- }
-
-AUTHO:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto AUTHOR;
- case 'r':
- if (last) {
- return -1;
- }
- goto AUTHOR;
- default:
- return -1;
- }
-
-AUTHOR:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto AUTHORI;
- case 'i':
- if (last) {
- return -1;
- }
- goto AUTHORI;
- default:
- return -1;
- }
-
-AUTHORI:
- NEXT_CHAR();
- switch (ch) {
- case 'Z':
- if (last) {
- return -1;
- }
- goto AUTHORIZ;
- case 'z':
- if (last) {
- return -1;
- }
- goto AUTHORIZ;
- default:
- return -1;
- }
-
-AUTHORIZ:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto AUTHORIZA;
- case 'a':
- if (last) {
- return -1;
- }
- goto AUTHORIZA;
- default:
- return -1;
- }
-
-AUTHORIZA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto AUTHORIZAT;
- case 't':
- if (last) {
- return -1;
- }
- goto AUTHORIZAT;
- default:
- return -1;
- }
-
-AUTHORIZAT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto AUTHORIZATI;
- case 'i':
- if (last) {
- return -1;
- }
- goto AUTHORIZATI;
- default:
- return -1;
- }
-
-AUTHORIZATI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto AUTHORIZATIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto AUTHORIZATIO;
- default:
- return -1;
- }
-
-AUTHORIZATIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 15;
- }
- goto AUTHORIZATION;
- case 'n':
- if (last) {
- return 15;
- }
- goto AUTHORIZATION;
- default:
- return -1;
- }
-
-C:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto CA;
- case 'a':
- if (last) {
- return -1;
- }
- goto CA;
- case 'O':
- if (last) {
- return -1;
- }
- goto CO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CO;
- default:
- return -1;
- }
-
-CA:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto CAC;
- case 'c':
- if (last) {
- return -1;
- }
- goto CAC;
- default:
- return -1;
- }
-
-CAC:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto CACH;
- case 'h':
- if (last) {
- return -1;
- }
- goto CACH;
- default:
- return -1;
- }
-
-CACH:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto CACHE;
- case 'e':
- if (last) {
- return -1;
- }
- goto CACHE;
- default:
- return -1;
- }
-
-CACHE:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto CACHE_;
- default:
- return -1;
- }
-
-CACHE_:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto CACHE_C;
- case 'c':
- if (last) {
- return -1;
- }
- goto CACHE_C;
- default:
- return -1;
- }
-
-CACHE_C:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto CACHE_CO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CACHE_CO;
- default:
- return -1;
- }
-
-CACHE_CO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CACHE_CON;
- case 'n':
- if (last) {
- return -1;
- }
- goto CACHE_CON;
- default:
- return -1;
- }
-
-CACHE_CON:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto CACHE_CONT;
- case 't':
- if (last) {
- return -1;
- }
- goto CACHE_CONT;
- default:
- return -1;
- }
-
-CACHE_CONT:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto CACHE_CONTR;
- case 'r':
- if (last) {
- return -1;
- }
- goto CACHE_CONTR;
- default:
- return -1;
- }
-
-CACHE_CONTR:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto CACHE_CONTRO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CACHE_CONTRO;
- default:
- return -1;
- }
-
-CACHE_CONTRO:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return 16;
- }
- goto CACHE_CONTROL;
- case 'l':
- if (last) {
- return 16;
- }
- goto CACHE_CONTROL;
- default:
- return -1;
- }
-
-CO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CON;
- case 'n':
- if (last) {
- return -1;
- }
- goto CON;
- case 'O':
- if (last) {
- return -1;
- }
- goto COO;
- case 'o':
- if (last) {
- return -1;
- }
- goto COO;
- default:
- return -1;
- }
-
-CON:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONN;
- case 'T':
- if (last) {
- return -1;
- }
- goto CONT;
- case 't':
- if (last) {
- return -1;
- }
- goto CONT;
- default:
- return -1;
- }
-
-CONN:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto CONNE;
- case 'e':
- if (last) {
- return -1;
- }
- goto CONNE;
- default:
- return -1;
- }
-
-CONNE:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto CONNEC;
- case 'c':
- if (last) {
- return -1;
- }
- goto CONNEC;
- default:
- return -1;
- }
-
-CONNEC:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto CONNECT;
- case 't':
- if (last) {
- return -1;
- }
- goto CONNECT;
- default:
- return -1;
- }
-
-CONNECT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto CONNECTI;
- case 'i':
- if (last) {
- return -1;
- }
- goto CONNECTI;
- default:
- return -1;
- }
-
-CONNECTI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto CONNECTIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CONNECTIO;
- default:
- return -1;
- }
-
-CONNECTIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 17;
- }
- goto CONNECTION;
- case 'n':
- if (last) {
- return 17;
- }
- goto CONNECTION;
- default:
- return -1;
- }
-
-CONT:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto CONTE;
- case 'e':
- if (last) {
- return -1;
- }
- goto CONTE;
- default:
- return -1;
- }
-
-CONTE:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTEN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTEN;
- default:
- return -1;
- }
-
-CONTEN:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto CONTENT;
- case 't':
- if (last) {
- return -1;
- }
- goto CONTENT;
- default:
- return -1;
- }
-
-CONTENT:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto CONTENT_;
- default:
- return -1;
- }
-
-CONTENT_:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto CONTENT_D;
- case 'd':
- if (last) {
- return -1;
- }
- goto CONTENT_D;
- case 'E':
- if (last) {
- return -1;
- }
- goto CONTENT_E;
- case 'e':
- if (last) {
- return -1;
- }
- goto CONTENT_E;
- case 'L':
- if (last) {
- return -1;
- }
- goto CONTENT_L;
- case 'l':
- if (last) {
- return -1;
- }
- goto CONTENT_L;
- case 'M':
- if (last) {
- return -1;
- }
- goto CONTENT_M;
- case 'm':
- if (last) {
- return -1;
- }
- goto CONTENT_M;
- case 'R':
- if (last) {
- return -1;
- }
- goto CONTENT_R;
- case 'r':
- if (last) {
- return -1;
- }
- goto CONTENT_R;
- case 'T':
- if (last) {
- return -1;
- }
- goto CONTENT_T;
- case 't':
- if (last) {
- return -1;
- }
- goto CONTENT_T;
- default:
- return -1;
- }
-
-CONTENT_D:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto CONTENT_DI;
- case 'i':
- if (last) {
- return -1;
- }
- goto CONTENT_DI;
- default:
- return -1;
- }
-
-CONTENT_DI:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto CONTENT_DIS;
- case 's':
- if (last) {
- return -1;
- }
- goto CONTENT_DIS;
- default:
- return -1;
- }
-
-CONTENT_DIS:
- NEXT_CHAR();
- switch (ch) {
- case 'P':
- if (last) {
- return -1;
- }
- goto CONTENT_DISP;
- case 'p':
- if (last) {
- return -1;
- }
- goto CONTENT_DISP;
- default:
- return -1;
- }
-
-CONTENT_DISP:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPO;
- default:
- return -1;
- }
-
-CONTENT_DISPO:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOS;
- case 's':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOS;
- default:
- return -1;
- }
-
-CONTENT_DISPOS:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOSI;
- case 'i':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOSI;
- default:
- return -1;
- }
-
-CONTENT_DISPOSI:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOSIT;
- case 't':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOSIT;
- default:
- return -1;
- }
-
-CONTENT_DISPOSIT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOSITI;
- case 'i':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOSITI;
- default:
- return -1;
- }
-
-CONTENT_DISPOSITI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOSITIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CONTENT_DISPOSITIO;
- default:
- return -1;
- }
-
-CONTENT_DISPOSITIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 18;
- }
- goto CONTENT_DISPOSITION;
- case 'n':
- if (last) {
- return 18;
- }
- goto CONTENT_DISPOSITION;
- default:
- return -1;
- }
-
-CONTENT_E:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTENT_EN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTENT_EN;
- default:
- return -1;
- }
-
-CONTENT_EN:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto CONTENT_ENC;
- case 'c':
- if (last) {
- return -1;
- }
- goto CONTENT_ENC;
- default:
- return -1;
- }
-
-CONTENT_ENC:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto CONTENT_ENCO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CONTENT_ENCO;
- default:
- return -1;
- }
-
-CONTENT_ENCO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto CONTENT_ENCOD;
- case 'd':
- if (last) {
- return -1;
- }
- goto CONTENT_ENCOD;
- default:
- return -1;
- }
-
-CONTENT_ENCOD:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto CONTENT_ENCODI;
- case 'i':
- if (last) {
- return -1;
- }
- goto CONTENT_ENCODI;
- default:
- return -1;
- }
-
-CONTENT_ENCODI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTENT_ENCODIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTENT_ENCODIN;
- default:
- return -1;
- }
-
-CONTENT_ENCODIN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return 19;
- }
- goto CONTENT_ENCODING;
- case 'g':
- if (last) {
- return 19;
- }
- goto CONTENT_ENCODING;
- default:
- return -1;
- }
-
-CONTENT_L:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto CONTENT_LA;
- case 'a':
- if (last) {
- return -1;
- }
- goto CONTENT_LA;
- case 'E':
- if (last) {
- return -1;
- }
- goto CONTENT_LE;
- case 'e':
- if (last) {
- return -1;
- }
- goto CONTENT_LE;
- case 'O':
- if (last) {
- return -1;
- }
- goto CONTENT_LO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CONTENT_LO;
- default:
- return -1;
- }
-
-CONTENT_LA:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTENT_LAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTENT_LAN;
- default:
- return -1;
- }
-
-CONTENT_LAN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto CONTENT_LANG;
- case 'g':
- if (last) {
- return -1;
- }
- goto CONTENT_LANG;
- default:
- return -1;
- }
-
-CONTENT_LANG:
- NEXT_CHAR();
- switch (ch) {
- case 'U':
- if (last) {
- return -1;
- }
- goto CONTENT_LANGU;
- case 'u':
- if (last) {
- return -1;
- }
- goto CONTENT_LANGU;
- default:
- return -1;
- }
-
-CONTENT_LANGU:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto CONTENT_LANGUA;
- case 'a':
- if (last) {
- return -1;
- }
- goto CONTENT_LANGUA;
- default:
- return -1;
- }
-
-CONTENT_LANGUA:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto CONTENT_LANGUAG;
- case 'g':
- if (last) {
- return -1;
- }
- goto CONTENT_LANGUAG;
- default:
- return -1;
- }
-
-CONTENT_LANGUAG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 20;
- }
- goto CONTENT_LANGUAGE;
- case 'e':
- if (last) {
- return 20;
- }
- goto CONTENT_LANGUAGE;
- default:
- return -1;
- }
-
-CONTENT_LE:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTENT_LEN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTENT_LEN;
- default:
- return -1;
- }
-
-CONTENT_LEN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto CONTENT_LENG;
- case 'g':
- if (last) {
- return -1;
- }
- goto CONTENT_LENG;
- default:
- return -1;
- }
-
-CONTENT_LENG:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto CONTENT_LENGT;
- case 't':
- if (last) {
- return -1;
- }
- goto CONTENT_LENGT;
- default:
- return -1;
- }
-
-CONTENT_LENGT:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return 21;
- }
- goto CONTENT_LENGTH;
- case 'h':
- if (last) {
- return 21;
- }
- goto CONTENT_LENGTH;
- default:
- return -1;
- }
-
-CONTENT_LO:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto CONTENT_LOC;
- case 'c':
- if (last) {
- return -1;
- }
- goto CONTENT_LOC;
- default:
- return -1;
- }
-
-CONTENT_LOC:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto CONTENT_LOCA;
- case 'a':
- if (last) {
- return -1;
- }
- goto CONTENT_LOCA;
- default:
- return -1;
- }
-
-CONTENT_LOCA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto CONTENT_LOCAT;
- case 't':
- if (last) {
- return -1;
- }
- goto CONTENT_LOCAT;
- default:
- return -1;
- }
-
-CONTENT_LOCAT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto CONTENT_LOCATI;
- case 'i':
- if (last) {
- return -1;
- }
- goto CONTENT_LOCATI;
- default:
- return -1;
- }
-
-CONTENT_LOCATI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto CONTENT_LOCATIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CONTENT_LOCATIO;
- default:
- return -1;
- }
-
-CONTENT_LOCATIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 22;
- }
- goto CONTENT_LOCATION;
- case 'n':
- if (last) {
- return 22;
- }
- goto CONTENT_LOCATION;
- default:
- return -1;
- }
-
-CONTENT_M:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto CONTENT_MD;
- case 'd':
- if (last) {
- return -1;
- }
- goto CONTENT_MD;
- default:
- return -1;
- }
-
-CONTENT_MD:
- NEXT_CHAR();
- switch (ch) {
- case '5':
- if (last) {
- return 23;
- }
- goto CONTENT_MD5;
- default:
- return -1;
- }
-
-CONTENT_R:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto CONTENT_RA;
- case 'a':
- if (last) {
- return -1;
- }
- goto CONTENT_RA;
- default:
- return -1;
- }
-
-CONTENT_RA:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTENT_RAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTENT_RAN;
- default:
- return -1;
- }
-
-CONTENT_RAN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto CONTENT_RANG;
- case 'g':
- if (last) {
- return -1;
- }
- goto CONTENT_RANG;
- default:
- return -1;
- }
-
-CONTENT_RANG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 24;
- }
- goto CONTENT_RANGE;
- case 'e':
- if (last) {
- return 24;
- }
- goto CONTENT_RANGE;
- default:
- return -1;
- }
-
-CONTENT_T:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto CONTENT_TR;
- case 'r':
- if (last) {
- return -1;
- }
- goto CONTENT_TR;
- case 'Y':
- if (last) {
- return -1;
- }
- goto CONTENT_TY;
- case 'y':
- if (last) {
- return -1;
- }
- goto CONTENT_TY;
- default:
- return -1;
- }
-
-CONTENT_TR:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto CONTENT_TRA;
- case 'a':
- if (last) {
- return -1;
- }
- goto CONTENT_TRA;
- default:
- return -1;
- }
-
-CONTENT_TRA:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTENT_TRAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTENT_TRAN;
- default:
- return -1;
- }
-
-CONTENT_TRAN:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANS;
- case 's':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANS;
- default:
- return -1;
- }
-
-CONTENT_TRANS:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSF;
- case 'f':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSF;
- default:
- return -1;
- }
-
-CONTENT_TRANSF:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFE;
- case 'e':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFE;
- default:
- return -1;
- }
-
-CONTENT_TRANSFE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER;
- case 'r':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER_:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_E;
- case 'e':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_E;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER_E:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_EN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_EN;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER_EN:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENC;
- case 'c':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENC;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER_ENC:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENCO;
- case 'o':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENCO;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER_ENCO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENCOD;
- case 'd':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENCOD;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER_ENCOD:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENCODI;
- case 'i':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENCODI;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER_ENCODI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENCODIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto CONTENT_TRANSFER_ENCODIN;
- default:
- return -1;
- }
-
-CONTENT_TRANSFER_ENCODIN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return 25;
- }
- goto CONTENT_TRANSFER_ENCODING;
- case 'g':
- if (last) {
- return 25;
- }
- goto CONTENT_TRANSFER_ENCODING;
- default:
- return -1;
- }
-
-CONTENT_TY:
- NEXT_CHAR();
- switch (ch) {
- case 'P':
- if (last) {
- return -1;
- }
- goto CONTENT_TYP;
- case 'p':
- if (last) {
- return -1;
- }
- goto CONTENT_TYP;
- default:
- return -1;
- }
-
-CONTENT_TYP:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 26;
- }
- goto CONTENT_TYPE;
- case 'e':
- if (last) {
- return 26;
- }
- goto CONTENT_TYPE;
- default:
- return -1;
- }
-
-COO:
- NEXT_CHAR();
- switch (ch) {
- case 'K':
- if (last) {
- return -1;
- }
- goto COOK;
- case 'k':
- if (last) {
- return -1;
- }
- goto COOK;
- default:
- return -1;
- }
-
-COOK:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto COOKI;
- case 'i':
- if (last) {
- return -1;
- }
- goto COOKI;
- default:
- return -1;
- }
-
-COOKI:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 27;
- }
- goto COOKIE;
- case 'e':
- if (last) {
- return 27;
- }
- goto COOKIE;
- default:
- return -1;
- }
-
-D:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto DA;
- case 'a':
- if (last) {
- return -1;
- }
- goto DA;
- case 'E':
- if (last) {
- return -1;
- }
- goto DE;
- case 'e':
- if (last) {
- return -1;
- }
- goto DE;
- case 'I':
- if (last) {
- return -1;
- }
- goto DI;
- case 'i':
- if (last) {
- return -1;
- }
- goto DI;
- default:
- return -1;
- }
-
-DA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto DAT;
- case 't':
- if (last) {
- return -1;
- }
- goto DAT;
- default:
- return -1;
- }
-
-DAT:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 28;
- }
- goto DATE;
- case 'e':
- if (last) {
- return 28;
- }
- goto DATE;
- default:
- return -1;
- }
-
-DE:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto DES;
- case 's':
- if (last) {
- return -1;
- }
- goto DES;
- default:
- return -1;
- }
-
-DES:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto DEST;
- case 't':
- if (last) {
- return -1;
- }
- goto DEST;
- default:
- return -1;
- }
-
-DEST:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto DESTI;
- case 'i':
- if (last) {
- return -1;
- }
- goto DESTI;
- default:
- return -1;
- }
-
-DESTI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto DESTIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto DESTIN;
- default:
- return -1;
- }
-
-DESTIN:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto DESTINA;
- case 'a':
- if (last) {
- return -1;
- }
- goto DESTINA;
- default:
- return -1;
- }
-
-DESTINA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto DESTINAT;
- case 't':
- if (last) {
- return -1;
- }
- goto DESTINAT;
- default:
- return -1;
- }
-
-DESTINAT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto DESTINATI;
- case 'i':
- if (last) {
- return -1;
- }
- goto DESTINATI;
- default:
- return -1;
- }
-
-DESTINATI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto DESTINATIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto DESTINATIO;
- default:
- return -1;
- }
-
-DESTINATIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 29;
- }
- goto DESTINATION;
- case 'n':
- if (last) {
- return 29;
- }
- goto DESTINATION;
- default:
- return -1;
- }
-
-DI:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto DIG;
- case 'g':
- if (last) {
- return -1;
- }
- goto DIG;
- default:
- return -1;
- }
-
-DIG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto DIGE;
- case 'e':
- if (last) {
- return -1;
- }
- goto DIGE;
- default:
- return -1;
- }
-
-DIGE:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto DIGES;
- case 's':
- if (last) {
- return -1;
- }
- goto DIGES;
- default:
- return -1;
- }
-
-DIGES:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 30;
- }
- goto DIGEST;
- case 't':
- if (last) {
- return 30;
- }
- goto DIGEST;
- default:
- return -1;
- }
-
-E:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto ET;
- case 't':
- if (last) {
- return -1;
- }
- goto ET;
- case 'X':
- if (last) {
- return -1;
- }
- goto EX;
- case 'x':
- if (last) {
- return -1;
- }
- goto EX;
- default:
- return -1;
- }
-
-ET:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto ETA;
- case 'a':
- if (last) {
- return -1;
- }
- goto ETA;
- default:
- return -1;
- }
-
-ETA:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return 31;
- }
- goto ETAG;
- case 'g':
- if (last) {
- return 31;
- }
- goto ETAG;
- default:
- return -1;
- }
-
-EX:
- NEXT_CHAR();
- switch (ch) {
- case 'P':
- if (last) {
- return -1;
- }
- goto EXP;
- case 'p':
- if (last) {
- return -1;
- }
- goto EXP;
- default:
- return -1;
- }
-
-EXP:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto EXPE;
- case 'e':
- if (last) {
- return -1;
- }
- goto EXPE;
- case 'I':
- if (last) {
- return -1;
- }
- goto EXPI;
- case 'i':
- if (last) {
- return -1;
- }
- goto EXPI;
- default:
- return -1;
- }
-
-EXPE:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto EXPEC;
- case 'c':
- if (last) {
- return -1;
- }
- goto EXPEC;
- default:
- return -1;
- }
-
-EXPEC:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 32;
- }
- goto EXPECT;
- case 't':
- if (last) {
- return 32;
- }
- goto EXPECT;
- default:
- return -1;
- }
-
-EXPI:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto EXPIR;
- case 'r':
- if (last) {
- return -1;
- }
- goto EXPIR;
- default:
- return -1;
- }
-
-EXPIR:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto EXPIRE;
- case 'e':
- if (last) {
- return -1;
- }
- goto EXPIRE;
- default:
- return -1;
- }
-
-EXPIRE:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 33;
- }
- goto EXPIRES;
- case 's':
- if (last) {
- return 33;
- }
- goto EXPIRES;
- default:
- return -1;
- }
-
-F:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto FO;
- case 'o':
- if (last) {
- return -1;
- }
- goto FO;
- case 'R':
- if (last) {
- return -1;
- }
- goto FR;
- case 'r':
- if (last) {
- return -1;
- }
- goto FR;
- default:
- return -1;
- }
-
-FO:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto FOR;
- case 'r':
- if (last) {
- return -1;
- }
- goto FOR;
- default:
- return -1;
- }
-
-FOR:
- NEXT_CHAR();
- switch (ch) {
- case 'W':
- if (last) {
- return -1;
- }
- goto FORW;
- case 'w':
- if (last) {
- return -1;
- }
- goto FORW;
- default:
- return -1;
- }
-
-FORW:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto FORWA;
- case 'a':
- if (last) {
- return -1;
- }
- goto FORWA;
- default:
- return -1;
- }
-
-FORWA:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto FORWAR;
- case 'r':
- if (last) {
- return -1;
- }
- goto FORWAR;
- default:
- return -1;
- }
-
-FORWAR:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto FORWARD;
- case 'd':
- if (last) {
- return -1;
- }
- goto FORWARD;
- default:
- return -1;
- }
-
-FORWARD:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto FORWARDE;
- case 'e':
- if (last) {
- return -1;
- }
- goto FORWARDE;
- default:
- return -1;
- }
-
-FORWARDE:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return 34;
- }
- goto FORWARDED;
- case 'd':
- if (last) {
- return 34;
- }
- goto FORWARDED;
- default:
- return -1;
- }
-
-FR:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto FRO;
- case 'o':
- if (last) {
- return -1;
- }
- goto FRO;
- default:
- return -1;
- }
-
-FRO:
- NEXT_CHAR();
- switch (ch) {
- case 'M':
- if (last) {
- return 35;
- }
- goto FROM;
- case 'm':
- if (last) {
- return 35;
- }
- goto FROM;
- default:
- return -1;
- }
-
-H:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto HO;
- case 'o':
- if (last) {
- return -1;
- }
- goto HO;
- default:
- return -1;
- }
-
-HO:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto HOS;
- case 's':
- if (last) {
- return -1;
- }
- goto HOS;
- default:
- return -1;
- }
-
-HOS:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 36;
- }
- goto HOST;
- case 't':
- if (last) {
- return 36;
- }
- goto HOST;
- default:
- return -1;
- }
-
-I:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto IF;
- case 'f':
- if (last) {
- return -1;
- }
- goto IF;
- default:
- return -1;
- }
-
-IF:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto IF_;
- default:
- return -1;
- }
-
-IF_:
- NEXT_CHAR();
- switch (ch) {
- case 'M':
- if (last) {
- return -1;
- }
- goto IF_M;
- case 'm':
- if (last) {
- return -1;
- }
- goto IF_M;
- case 'N':
- if (last) {
- return -1;
- }
- goto IF_N;
- case 'n':
- if (last) {
- return -1;
- }
- goto IF_N;
- case 'R':
- if (last) {
- return -1;
- }
- goto IF_R;
- case 'r':
- if (last) {
- return -1;
- }
- goto IF_R;
- case 'U':
- if (last) {
- return -1;
- }
- goto IF_U;
- case 'u':
- if (last) {
- return -1;
- }
- goto IF_U;
- default:
- return -1;
- }
-
-IF_M:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto IF_MA;
- case 'a':
- if (last) {
- return -1;
- }
- goto IF_MA;
- case 'O':
- if (last) {
- return -1;
- }
- goto IF_MO;
- case 'o':
- if (last) {
- return -1;
- }
- goto IF_MO;
- default:
- return -1;
- }
-
-IF_MA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto IF_MAT;
- case 't':
- if (last) {
- return -1;
- }
- goto IF_MAT;
- default:
- return -1;
- }
-
-IF_MAT:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto IF_MATC;
- case 'c':
- if (last) {
- return -1;
- }
- goto IF_MATC;
- default:
- return -1;
- }
-
-IF_MATC:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return 37;
- }
- goto IF_MATCH;
- case 'h':
- if (last) {
- return 37;
- }
- goto IF_MATCH;
- default:
- return -1;
- }
-
-IF_MO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto IF_MOD;
- case 'd':
- if (last) {
- return -1;
- }
- goto IF_MOD;
- default:
- return -1;
- }
-
-IF_MOD:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto IF_MODI;
- case 'i':
- if (last) {
- return -1;
- }
- goto IF_MODI;
- default:
- return -1;
- }
-
-IF_MODI:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto IF_MODIF;
- case 'f':
- if (last) {
- return -1;
- }
- goto IF_MODIF;
- default:
- return -1;
- }
-
-IF_MODIF:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto IF_MODIFI;
- case 'i':
- if (last) {
- return -1;
- }
- goto IF_MODIFI;
- default:
- return -1;
- }
-
-IF_MODIFI:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto IF_MODIFIE;
- case 'e':
- if (last) {
- return -1;
- }
- goto IF_MODIFIE;
- default:
- return -1;
- }
-
-IF_MODIFIE:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED;
- case 'd':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED;
- default:
- return -1;
- }
-
-IF_MODIFIED:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_;
- default:
- return -1;
- }
-
-IF_MODIFIED_:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_S;
- case 's':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_S;
- default:
- return -1;
- }
-
-IF_MODIFIED_S:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_SI;
- case 'i':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_SI;
- default:
- return -1;
- }
-
-IF_MODIFIED_SI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_SIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_SIN;
- default:
- return -1;
- }
-
-IF_MODIFIED_SIN:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_SINC;
- case 'c':
- if (last) {
- return -1;
- }
- goto IF_MODIFIED_SINC;
- default:
- return -1;
- }
-
-IF_MODIFIED_SINC:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 38;
- }
- goto IF_MODIFIED_SINCE;
- case 'e':
- if (last) {
- return 38;
- }
- goto IF_MODIFIED_SINCE;
- default:
- return -1;
- }
-
-IF_N:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto IF_NO;
- case 'o':
- if (last) {
- return -1;
- }
- goto IF_NO;
- default:
- return -1;
- }
-
-IF_NO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto IF_NON;
- case 'n':
- if (last) {
- return -1;
- }
- goto IF_NON;
- default:
- return -1;
- }
-
-IF_NON:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto IF_NONE;
- case 'e':
- if (last) {
- return -1;
- }
- goto IF_NONE;
- default:
- return -1;
- }
-
-IF_NONE:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto IF_NONE_;
- default:
- return -1;
- }
-
-IF_NONE_:
- NEXT_CHAR();
- switch (ch) {
- case 'M':
- if (last) {
- return -1;
- }
- goto IF_NONE_M;
- case 'm':
- if (last) {
- return -1;
- }
- goto IF_NONE_M;
- default:
- return -1;
- }
-
-IF_NONE_M:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto IF_NONE_MA;
- case 'a':
- if (last) {
- return -1;
- }
- goto IF_NONE_MA;
- default:
- return -1;
- }
-
-IF_NONE_MA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto IF_NONE_MAT;
- case 't':
- if (last) {
- return -1;
- }
- goto IF_NONE_MAT;
- default:
- return -1;
- }
-
-IF_NONE_MAT:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto IF_NONE_MATC;
- case 'c':
- if (last) {
- return -1;
- }
- goto IF_NONE_MATC;
- default:
- return -1;
- }
-
-IF_NONE_MATC:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return 39;
- }
- goto IF_NONE_MATCH;
- case 'h':
- if (last) {
- return 39;
- }
- goto IF_NONE_MATCH;
- default:
- return -1;
- }
-
-IF_R:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto IF_RA;
- case 'a':
- if (last) {
- return -1;
- }
- goto IF_RA;
- default:
- return -1;
- }
-
-IF_RA:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto IF_RAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto IF_RAN;
- default:
- return -1;
- }
-
-IF_RAN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto IF_RANG;
- case 'g':
- if (last) {
- return -1;
- }
- goto IF_RANG;
- default:
- return -1;
- }
-
-IF_RANG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 40;
- }
- goto IF_RANGE;
- case 'e':
- if (last) {
- return 40;
- }
- goto IF_RANGE;
- default:
- return -1;
- }
-
-IF_U:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto IF_UN;
- case 'n':
- if (last) {
- return -1;
- }
- goto IF_UN;
- default:
- return -1;
- }
-
-IF_UN:
- NEXT_CHAR();
- switch (ch) {
- case 'M':
- if (last) {
- return -1;
- }
- goto IF_UNM;
- case 'm':
- if (last) {
- return -1;
- }
- goto IF_UNM;
- default:
- return -1;
- }
-
-IF_UNM:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto IF_UNMO;
- case 'o':
- if (last) {
- return -1;
- }
- goto IF_UNMO;
- default:
- return -1;
- }
-
-IF_UNMO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto IF_UNMOD;
- case 'd':
- if (last) {
- return -1;
- }
- goto IF_UNMOD;
- default:
- return -1;
- }
-
-IF_UNMOD:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto IF_UNMODI;
- case 'i':
- if (last) {
- return -1;
- }
- goto IF_UNMODI;
- default:
- return -1;
- }
-
-IF_UNMODI:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto IF_UNMODIF;
- case 'f':
- if (last) {
- return -1;
- }
- goto IF_UNMODIF;
- default:
- return -1;
- }
-
-IF_UNMODIF:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFI;
- case 'i':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFI;
- default:
- return -1;
- }
-
-IF_UNMODIFI:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIE;
- case 'e':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIE;
- default:
- return -1;
- }
-
-IF_UNMODIFIE:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED;
- case 'd':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED;
- default:
- return -1;
- }
-
-IF_UNMODIFIED:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_;
- default:
- return -1;
- }
-
-IF_UNMODIFIED_:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_S;
- case 's':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_S;
- default:
- return -1;
- }
-
-IF_UNMODIFIED_S:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_SI;
- case 'i':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_SI;
- default:
- return -1;
- }
-
-IF_UNMODIFIED_SI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_SIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_SIN;
- default:
- return -1;
- }
-
-IF_UNMODIFIED_SIN:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_SINC;
- case 'c':
- if (last) {
- return -1;
- }
- goto IF_UNMODIFIED_SINC;
- default:
- return -1;
- }
-
-IF_UNMODIFIED_SINC:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 41;
- }
- goto IF_UNMODIFIED_SINCE;
- case 'e':
- if (last) {
- return 41;
- }
- goto IF_UNMODIFIED_SINCE;
- default:
- return -1;
- }
-
-K:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto KE;
- case 'e':
- if (last) {
- return -1;
- }
- goto KE;
- default:
- return -1;
- }
-
-KE:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto KEE;
- case 'e':
- if (last) {
- return -1;
- }
- goto KEE;
- default:
- return -1;
- }
-
-KEE:
- NEXT_CHAR();
- switch (ch) {
- case 'P':
- if (last) {
- return -1;
- }
- goto KEEP;
- case 'p':
- if (last) {
- return -1;
- }
- goto KEEP;
- default:
- return -1;
- }
-
-KEEP:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto KEEP_;
- default:
- return -1;
- }
-
-KEEP_:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto KEEP_A;
- case 'a':
- if (last) {
- return -1;
- }
- goto KEEP_A;
- default:
- return -1;
- }
-
-KEEP_A:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return -1;
- }
- goto KEEP_AL;
- case 'l':
- if (last) {
- return -1;
- }
- goto KEEP_AL;
- default:
- return -1;
- }
-
-KEEP_AL:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto KEEP_ALI;
- case 'i':
- if (last) {
- return -1;
- }
- goto KEEP_ALI;
- default:
- return -1;
- }
-
-KEEP_ALI:
- NEXT_CHAR();
- switch (ch) {
- case 'V':
- if (last) {
- return -1;
- }
- goto KEEP_ALIV;
- case 'v':
- if (last) {
- return -1;
- }
- goto KEEP_ALIV;
- default:
- return -1;
- }
-
-KEEP_ALIV:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 42;
- }
- goto KEEP_ALIVE;
- case 'e':
- if (last) {
- return 42;
- }
- goto KEEP_ALIVE;
- default:
- return -1;
- }
-
-L:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto LA;
- case 'a':
- if (last) {
- return -1;
- }
- goto LA;
- case 'I':
- if (last) {
- return -1;
- }
- goto LI;
- case 'i':
- if (last) {
- return -1;
- }
- goto LI;
- case 'O':
- if (last) {
- return -1;
- }
- goto LO;
- case 'o':
- if (last) {
- return -1;
- }
- goto LO;
- default:
- return -1;
- }
-
-LA:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto LAS;
- case 's':
- if (last) {
- return -1;
- }
- goto LAS;
- default:
- return -1;
- }
-
-LAS:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto LAST;
- case 't':
- if (last) {
- return -1;
- }
- goto LAST;
- default:
- return -1;
- }
-
-LAST:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto LAST_;
- default:
- return -1;
- }
-
-LAST_:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto LAST_E;
- case 'e':
- if (last) {
- return -1;
- }
- goto LAST_E;
- case 'M':
- if (last) {
- return -1;
- }
- goto LAST_M;
- case 'm':
- if (last) {
- return -1;
- }
- goto LAST_M;
- default:
- return -1;
- }
-
-LAST_E:
- NEXT_CHAR();
- switch (ch) {
- case 'V':
- if (last) {
- return -1;
- }
- goto LAST_EV;
- case 'v':
- if (last) {
- return -1;
- }
- goto LAST_EV;
- default:
- return -1;
- }
-
-LAST_EV:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto LAST_EVE;
- case 'e':
- if (last) {
- return -1;
- }
- goto LAST_EVE;
- default:
- return -1;
- }
-
-LAST_EVE:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto LAST_EVEN;
- case 'n':
- if (last) {
- return -1;
- }
- goto LAST_EVEN;
- default:
- return -1;
- }
-
-LAST_EVEN:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto LAST_EVENT;
- case 't':
- if (last) {
- return -1;
- }
- goto LAST_EVENT;
- default:
- return -1;
- }
-
-LAST_EVENT:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto LAST_EVENT_;
- default:
- return -1;
- }
-
-LAST_EVENT_:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto LAST_EVENT_I;
- case 'i':
- if (last) {
- return -1;
- }
- goto LAST_EVENT_I;
- default:
- return -1;
- }
-
-LAST_EVENT_I:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return 43;
- }
- goto LAST_EVENT_ID;
- case 'd':
- if (last) {
- return 43;
- }
- goto LAST_EVENT_ID;
- default:
- return -1;
- }
-
-LAST_M:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto LAST_MO;
- case 'o':
- if (last) {
- return -1;
- }
- goto LAST_MO;
- default:
- return -1;
- }
-
-LAST_MO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto LAST_MOD;
- case 'd':
- if (last) {
- return -1;
- }
- goto LAST_MOD;
- default:
- return -1;
- }
-
-LAST_MOD:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto LAST_MODI;
- case 'i':
- if (last) {
- return -1;
- }
- goto LAST_MODI;
- default:
- return -1;
- }
-
-LAST_MODI:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto LAST_MODIF;
- case 'f':
- if (last) {
- return -1;
- }
- goto LAST_MODIF;
- default:
- return -1;
- }
-
-LAST_MODIF:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto LAST_MODIFI;
- case 'i':
- if (last) {
- return -1;
- }
- goto LAST_MODIFI;
- default:
- return -1;
- }
-
-LAST_MODIFI:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto LAST_MODIFIE;
- case 'e':
- if (last) {
- return -1;
- }
- goto LAST_MODIFIE;
- default:
- return -1;
- }
-
-LAST_MODIFIE:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return 44;
- }
- goto LAST_MODIFIED;
- case 'd':
- if (last) {
- return 44;
- }
- goto LAST_MODIFIED;
- default:
- return -1;
- }
-
-LI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto LIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto LIN;
- default:
- return -1;
- }
-
-LIN:
- NEXT_CHAR();
- switch (ch) {
- case 'K':
- if (last) {
- return 45;
- }
- goto LINK;
- case 'k':
- if (last) {
- return 45;
- }
- goto LINK;
- default:
- return -1;
- }
-
-LO:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto LOC;
- case 'c':
- if (last) {
- return -1;
- }
- goto LOC;
- default:
- return -1;
- }
-
-LOC:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto LOCA;
- case 'a':
- if (last) {
- return -1;
- }
- goto LOCA;
- default:
- return -1;
- }
-
-LOCA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto LOCAT;
- case 't':
- if (last) {
- return -1;
- }
- goto LOCAT;
- default:
- return -1;
- }
-
-LOCAT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto LOCATI;
- case 'i':
- if (last) {
- return -1;
- }
- goto LOCATI;
- default:
- return -1;
- }
-
-LOCATI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto LOCATIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto LOCATIO;
- default:
- return -1;
- }
-
-LOCATIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 46;
- }
- goto LOCATION;
- case 'n':
- if (last) {
- return 46;
- }
- goto LOCATION;
- default:
- return -1;
- }
-
-M:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto MA;
- case 'a':
- if (last) {
- return -1;
- }
- goto MA;
- default:
- return -1;
- }
-
-MA:
- NEXT_CHAR();
- switch (ch) {
- case 'X':
- if (last) {
- return -1;
- }
- goto MAX;
- case 'x':
- if (last) {
- return -1;
- }
- goto MAX;
- default:
- return -1;
- }
-
-MAX:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto MAX_;
- default:
- return -1;
- }
-
-MAX_:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto MAX_F;
- case 'f':
- if (last) {
- return -1;
- }
- goto MAX_F;
- default:
- return -1;
- }
-
-MAX_F:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto MAX_FO;
- case 'o':
- if (last) {
- return -1;
- }
- goto MAX_FO;
- default:
- return -1;
- }
-
-MAX_FO:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto MAX_FOR;
- case 'r':
- if (last) {
- return -1;
- }
- goto MAX_FOR;
- default:
- return -1;
- }
-
-MAX_FOR:
- NEXT_CHAR();
- switch (ch) {
- case 'W':
- if (last) {
- return -1;
- }
- goto MAX_FORW;
- case 'w':
- if (last) {
- return -1;
- }
- goto MAX_FORW;
- default:
- return -1;
- }
-
-MAX_FORW:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto MAX_FORWA;
- case 'a':
- if (last) {
- return -1;
- }
- goto MAX_FORWA;
- default:
- return -1;
- }
-
-MAX_FORWA:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto MAX_FORWAR;
- case 'r':
- if (last) {
- return -1;
- }
- goto MAX_FORWAR;
- default:
- return -1;
- }
-
-MAX_FORWAR:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto MAX_FORWARD;
- case 'd':
- if (last) {
- return -1;
- }
- goto MAX_FORWARD;
- default:
- return -1;
- }
-
-MAX_FORWARD:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 47;
- }
- goto MAX_FORWARDS;
- case 's':
- if (last) {
- return 47;
- }
- goto MAX_FORWARDS;
- default:
- return -1;
- }
-
-O:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto OR;
- case 'r':
- if (last) {
- return -1;
- }
- goto OR;
- default:
- return -1;
- }
-
-OR:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto ORI;
- case 'i':
- if (last) {
- return -1;
- }
- goto ORI;
- default:
- return -1;
- }
-
-ORI:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto ORIG;
- case 'g':
- if (last) {
- return -1;
- }
- goto ORIG;
- default:
- return -1;
- }
-
-ORIG:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto ORIGI;
- case 'i':
- if (last) {
- return -1;
- }
- goto ORIGI;
- default:
- return -1;
- }
-
-ORIGI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 48;
- }
- goto ORIGIN;
- case 'n':
- if (last) {
- return 48;
- }
- goto ORIGIN;
- default:
- return -1;
- }
-
-P:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto PR;
- case 'r':
- if (last) {
- return -1;
- }
- goto PR;
- default:
- return -1;
- }
-
-PR:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto PRA;
- case 'a':
- if (last) {
- return -1;
- }
- goto PRA;
- case 'O':
- if (last) {
- return -1;
- }
- goto PRO;
- case 'o':
- if (last) {
- return -1;
- }
- goto PRO;
- default:
- return -1;
- }
-
-PRA:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto PRAG;
- case 'g':
- if (last) {
- return -1;
- }
- goto PRAG;
- default:
- return -1;
- }
-
-PRAG:
- NEXT_CHAR();
- switch (ch) {
- case 'M':
- if (last) {
- return -1;
- }
- goto PRAGM;
- case 'm':
- if (last) {
- return -1;
- }
- goto PRAGM;
- default:
- return -1;
- }
-
-PRAGM:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return 49;
- }
- goto PRAGMA;
- case 'a':
- if (last) {
- return 49;
- }
- goto PRAGMA;
- default:
- return -1;
- }
-
-PRO:
- NEXT_CHAR();
- switch (ch) {
- case 'X':
- if (last) {
- return -1;
- }
- goto PROX;
- case 'x':
- if (last) {
- return -1;
- }
- goto PROX;
- default:
- return -1;
- }
-
-PROX:
- NEXT_CHAR();
- switch (ch) {
- case 'Y':
- if (last) {
- return -1;
- }
- goto PROXY;
- case 'y':
- if (last) {
- return -1;
- }
- goto PROXY;
- default:
- return -1;
- }
-
-PROXY:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto PROXY_;
- default:
- return -1;
- }
-
-PROXY_:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto PROXY_A;
- case 'a':
- if (last) {
- return -1;
- }
- goto PROXY_A;
- default:
- return -1;
- }
-
-PROXY_A:
- NEXT_CHAR();
- switch (ch) {
- case 'U':
- if (last) {
- return -1;
- }
- goto PROXY_AU;
- case 'u':
- if (last) {
- return -1;
- }
- goto PROXY_AU;
- default:
- return -1;
- }
-
-PROXY_AU:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto PROXY_AUT;
- case 't':
- if (last) {
- return -1;
- }
- goto PROXY_AUT;
- default:
- return -1;
- }
-
-PROXY_AUT:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto PROXY_AUTH;
- case 'h':
- if (last) {
- return -1;
- }
- goto PROXY_AUTH;
- default:
- return -1;
- }
-
-PROXY_AUTH:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHE;
- case 'e':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHE;
- case 'O':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHO;
- case 'o':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHO;
- default:
- return -1;
- }
-
-PROXY_AUTHE:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHEN;
- case 'n':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHEN;
- default:
- return -1;
- }
-
-PROXY_AUTHEN:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENT;
- case 't':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENT;
- default:
- return -1;
- }
-
-PROXY_AUTHENT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENTI;
- case 'i':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENTI;
- default:
- return -1;
- }
-
-PROXY_AUTHENTI:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENTIC;
- case 'c':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENTIC;
- default:
- return -1;
- }
-
-PROXY_AUTHENTIC:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENTICA;
- case 'a':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENTICA;
- default:
- return -1;
- }
-
-PROXY_AUTHENTICA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENTICAT;
- case 't':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHENTICAT;
- default:
- return -1;
- }
-
-PROXY_AUTHENTICAT:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 50;
- }
- goto PROXY_AUTHENTICATE;
- case 'e':
- if (last) {
- return 50;
- }
- goto PROXY_AUTHENTICATE;
- default:
- return -1;
- }
-
-PROXY_AUTHO:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHOR;
- case 'r':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHOR;
- default:
- return -1;
- }
-
-PROXY_AUTHOR:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORI;
- case 'i':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORI;
- default:
- return -1;
- }
-
-PROXY_AUTHORI:
- NEXT_CHAR();
- switch (ch) {
- case 'Z':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZ;
- case 'z':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZ;
- default:
- return -1;
- }
-
-PROXY_AUTHORIZ:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZA;
- case 'a':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZA;
- default:
- return -1;
- }
-
-PROXY_AUTHORIZA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZAT;
- case 't':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZAT;
- default:
- return -1;
- }
-
-PROXY_AUTHORIZAT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZATI;
- case 'i':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZATI;
- default:
- return -1;
- }
-
-PROXY_AUTHORIZATI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZATIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto PROXY_AUTHORIZATIO;
- default:
- return -1;
- }
-
-PROXY_AUTHORIZATIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 51;
- }
- goto PROXY_AUTHORIZATION;
- case 'n':
- if (last) {
- return 51;
- }
- goto PROXY_AUTHORIZATION;
- default:
- return -1;
- }
-
-R:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto RA;
- case 'a':
- if (last) {
- return -1;
- }
- goto RA;
- case 'E':
- if (last) {
- return -1;
- }
- goto RE;
- case 'e':
- if (last) {
- return -1;
- }
- goto RE;
- default:
- return -1;
- }
-
-RA:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto RAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto RAN;
- default:
- return -1;
- }
-
-RAN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto RANG;
- case 'g':
- if (last) {
- return -1;
- }
- goto RANG;
- default:
- return -1;
- }
-
-RANG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 52;
- }
- goto RANGE;
- case 'e':
- if (last) {
- return 52;
- }
- goto RANGE;
- default:
- return -1;
- }
-
-RE:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto REF;
- case 'f':
- if (last) {
- return -1;
- }
- goto REF;
- case 'T':
- if (last) {
- return -1;
- }
- goto RET;
- case 't':
- if (last) {
- return -1;
- }
- goto RET;
- default:
- return -1;
- }
-
-REF:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto REFE;
- case 'e':
- if (last) {
- return -1;
- }
- goto REFE;
- default:
- return -1;
- }
-
-REFE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto REFER;
- case 'r':
- if (last) {
- return -1;
- }
- goto REFER;
- default:
- return -1;
- }
-
-REFER:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto REFERE;
- case 'e':
- if (last) {
- return -1;
- }
- goto REFERE;
- default:
- return -1;
- }
-
-REFERE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return 53;
- }
- goto REFERER;
- case 'r':
- if (last) {
- return 53;
- }
- goto REFERER;
- default:
- return -1;
- }
-
-RET:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto RETR;
- case 'r':
- if (last) {
- return -1;
- }
- goto RETR;
- default:
- return -1;
- }
-
-RETR:
- NEXT_CHAR();
- switch (ch) {
- case 'Y':
- if (last) {
- return -1;
- }
- goto RETRY;
- case 'y':
- if (last) {
- return -1;
- }
- goto RETRY;
- default:
- return -1;
- }
-
-RETRY:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto RETRY_;
- default:
- return -1;
- }
-
-RETRY_:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto RETRY_A;
- case 'a':
- if (last) {
- return -1;
- }
- goto RETRY_A;
- default:
- return -1;
- }
-
-RETRY_A:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto RETRY_AF;
- case 'f':
- if (last) {
- return -1;
- }
- goto RETRY_AF;
- default:
- return -1;
- }
-
-RETRY_AF:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto RETRY_AFT;
- case 't':
- if (last) {
- return -1;
- }
- goto RETRY_AFT;
- default:
- return -1;
- }
-
-RETRY_AFT:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto RETRY_AFTE;
- case 'e':
- if (last) {
- return -1;
- }
- goto RETRY_AFTE;
- default:
- return -1;
- }
-
-RETRY_AFTE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return 54;
- }
- goto RETRY_AFTER;
- case 'r':
- if (last) {
- return 54;
- }
- goto RETRY_AFTER;
- default:
- return -1;
- }
-
-S:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto SE;
- case 'e':
- if (last) {
- return -1;
- }
- goto SE;
- default:
- return -1;
- }
-
-SE:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto SEC;
- case 'c':
- if (last) {
- return -1;
- }
- goto SEC;
- case 'R':
- if (last) {
- return -1;
- }
- goto SER;
- case 'r':
- if (last) {
- return -1;
- }
- goto SER;
- case 'T':
- if (last) {
- return -1;
- }
- goto SET;
- case 't':
- if (last) {
- return -1;
- }
- goto SET;
- default:
- return -1;
- }
-
-SEC:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto SEC_;
- default:
- return -1;
- }
-
-SEC_:
- NEXT_CHAR();
- switch (ch) {
- case 'W':
- if (last) {
- return -1;
- }
- goto SEC_W;
- case 'w':
- if (last) {
- return -1;
- }
- goto SEC_W;
- default:
- return -1;
- }
-
-SEC_W:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto SEC_WE;
- case 'e':
- if (last) {
- return -1;
- }
- goto SEC_WE;
- default:
- return -1;
- }
-
-SEC_WE:
- NEXT_CHAR();
- switch (ch) {
- case 'B':
- if (last) {
- return -1;
- }
- goto SEC_WEB;
- case 'b':
- if (last) {
- return -1;
- }
- goto SEC_WEB;
- default:
- return -1;
- }
-
-SEC_WEB:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto SEC_WEBS;
- case 's':
- if (last) {
- return -1;
- }
- goto SEC_WEBS;
- default:
- return -1;
- }
-
-SEC_WEBS:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto SEC_WEBSO;
- case 'o':
- if (last) {
- return -1;
- }
- goto SEC_WEBSO;
- default:
- return -1;
- }
-
-SEC_WEBSO:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOC;
- case 'c':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOC;
- default:
- return -1;
- }
-
-SEC_WEBSOC:
- NEXT_CHAR();
- switch (ch) {
- case 'K':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCK;
- case 'k':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCK;
- default:
- return -1;
- }
-
-SEC_WEBSOCK:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKE;
- case 'e':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKE;
- default:
- return -1;
- }
-
-SEC_WEBSOCKE:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET;
- case 't':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_A;
- case 'a':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_A;
- case 'E':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_E;
- case 'e':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_E;
- case 'K':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_K;
- case 'k':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_K;
- case 'P':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_P;
- case 'p':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_P;
- case 'V':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_V;
- case 'v':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_V;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_A:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_AC;
- case 'c':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_AC;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_AC:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_ACC;
- case 'c':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_ACC;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_ACC:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_ACCE;
- case 'e':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_ACCE;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_ACCE:
- NEXT_CHAR();
- switch (ch) {
- case 'P':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_ACCEP;
- case 'p':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_ACCEP;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_ACCEP:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 55;
- }
- goto SEC_WEBSOCKET_ACCEPT;
- case 't':
- if (last) {
- return 55;
- }
- goto SEC_WEBSOCKET_ACCEPT;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_E:
- NEXT_CHAR();
- switch (ch) {
- case 'X':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EX;
- case 'x':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EX;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_EX:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXT;
- case 't':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXT;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_EXT:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTE;
- case 'e':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTE;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_EXTE:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTEN;
- case 'n':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTEN;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_EXTEN:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTENS;
- case 's':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTENS;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_EXTENS:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTENSI;
- case 'i':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTENSI;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_EXTENSI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTENSIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTENSIO;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_EXTENSIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTENSION;
- case 'n':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_EXTENSION;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_EXTENSION:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return 56;
- }
- goto SEC_WEBSOCKET_EXTENSIONS;
- case 's':
- if (last) {
- return 56;
- }
- goto SEC_WEBSOCKET_EXTENSIONS;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_K:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_KE;
- case 'e':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_KE;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_KE:
- NEXT_CHAR();
- switch (ch) {
- case 'Y':
- if (last) {
- return 57;
- }
- goto SEC_WEBSOCKET_KEY;
- case 'y':
- if (last) {
- return 57;
- }
- goto SEC_WEBSOCKET_KEY;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_KEY:
- NEXT_CHAR();
- switch (ch) {
- case '1':
- if (last) {
- return 58;
- }
- goto SEC_WEBSOCKET_KEY1;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_P:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PR;
- case 'r':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PR;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_PR:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PRO;
- case 'o':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PRO;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_PRO:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PROT;
- case 't':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PROT;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_PROT:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PROTO;
- case 'o':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PROTO;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_PROTO:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PROTOC;
- case 'c':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PROTOC;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_PROTOC:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PROTOCO;
- case 'o':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_PROTOCO;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_PROTOCO:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return 59;
- }
- goto SEC_WEBSOCKET_PROTOCOL;
- case 'l':
- if (last) {
- return 59;
- }
- goto SEC_WEBSOCKET_PROTOCOL;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_V:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VE;
- case 'e':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VE;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_VE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VER;
- case 'r':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VER;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_VER:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VERS;
- case 's':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VERS;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_VERS:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VERSI;
- case 'i':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VERSI;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_VERSI:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VERSIO;
- case 'o':
- if (last) {
- return -1;
- }
- goto SEC_WEBSOCKET_VERSIO;
- default:
- return -1;
- }
-
-SEC_WEBSOCKET_VERSIO:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return 60;
- }
- goto SEC_WEBSOCKET_VERSION;
- case 'n':
- if (last) {
- return 60;
- }
- goto SEC_WEBSOCKET_VERSION;
- default:
- return -1;
- }
-
-SER:
- NEXT_CHAR();
- switch (ch) {
- case 'V':
- if (last) {
- return -1;
- }
- goto SERV;
- case 'v':
- if (last) {
- return -1;
- }
- goto SERV;
- default:
- return -1;
- }
-
-SERV:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto SERVE;
- case 'e':
- if (last) {
- return -1;
- }
- goto SERVE;
- default:
- return -1;
- }
-
-SERVE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return 61;
- }
- goto SERVER;
- case 'r':
- if (last) {
- return 61;
- }
- goto SERVER;
- default:
- return -1;
- }
-
-SET:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto SET_;
- default:
- return -1;
- }
-
-SET_:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto SET_C;
- case 'c':
- if (last) {
- return -1;
- }
- goto SET_C;
- default:
- return -1;
- }
-
-SET_C:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto SET_CO;
- case 'o':
- if (last) {
- return -1;
- }
- goto SET_CO;
- default:
- return -1;
- }
-
-SET_CO:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto SET_COO;
- case 'o':
- if (last) {
- return -1;
- }
- goto SET_COO;
- default:
- return -1;
- }
-
-SET_COO:
- NEXT_CHAR();
- switch (ch) {
- case 'K':
- if (last) {
- return -1;
- }
- goto SET_COOK;
- case 'k':
- if (last) {
- return -1;
- }
- goto SET_COOK;
- default:
- return -1;
- }
-
-SET_COOK:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto SET_COOKI;
- case 'i':
- if (last) {
- return -1;
- }
- goto SET_COOKI;
- default:
- return -1;
- }
-
-SET_COOKI:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 62;
- }
- goto SET_COOKIE;
- case 'e':
- if (last) {
- return 62;
- }
- goto SET_COOKIE;
- default:
- return -1;
- }
-
-T:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 63;
- }
- goto TE;
- case 'e':
- if (last) {
- return 63;
- }
- goto TE;
- case 'R':
- if (last) {
- return -1;
- }
- goto TR;
- case 'r':
- if (last) {
- return -1;
- }
- goto TR;
- default:
- return -1;
- }
-
-TR:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto TRA;
- case 'a':
- if (last) {
- return -1;
- }
- goto TRA;
- default:
- return -1;
- }
-
-TRA:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto TRAI;
- case 'i':
- if (last) {
- return -1;
- }
- goto TRAI;
- case 'N':
- if (last) {
- return -1;
- }
- goto TRAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto TRAN;
- default:
- return -1;
- }
-
-TRAI:
- NEXT_CHAR();
- switch (ch) {
- case 'L':
- if (last) {
- return -1;
- }
- goto TRAIL;
- case 'l':
- if (last) {
- return -1;
- }
- goto TRAIL;
- default:
- return -1;
- }
-
-TRAIL:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto TRAILE;
- case 'e':
- if (last) {
- return -1;
- }
- goto TRAILE;
- default:
- return -1;
- }
-
-TRAILE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return 64;
- }
- goto TRAILER;
- case 'r':
- if (last) {
- return 64;
- }
- goto TRAILER;
- default:
- return -1;
- }
-
-TRAN:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto TRANS;
- case 's':
- if (last) {
- return -1;
- }
- goto TRANS;
- default:
- return -1;
- }
-
-TRANS:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto TRANSF;
- case 'f':
- if (last) {
- return -1;
- }
- goto TRANSF;
- default:
- return -1;
- }
-
-TRANSF:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto TRANSFE;
- case 'e':
- if (last) {
- return -1;
- }
- goto TRANSFE;
- default:
- return -1;
- }
-
-TRANSFE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto TRANSFER;
- case 'r':
- if (last) {
- return -1;
- }
- goto TRANSFER;
- default:
- return -1;
- }
-
-TRANSFER:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto TRANSFER_;
- default:
- return -1;
- }
-
-TRANSFER_:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto TRANSFER_E;
- case 'e':
- if (last) {
- return -1;
- }
- goto TRANSFER_E;
- default:
- return -1;
- }
-
-TRANSFER_E:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto TRANSFER_EN;
- case 'n':
- if (last) {
- return -1;
- }
- goto TRANSFER_EN;
- default:
- return -1;
- }
-
-TRANSFER_EN:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENC;
- case 'c':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENC;
- default:
- return -1;
- }
-
-TRANSFER_ENC:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENCO;
- case 'o':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENCO;
- default:
- return -1;
- }
-
-TRANSFER_ENCO:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENCOD;
- case 'd':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENCOD;
- default:
- return -1;
- }
-
-TRANSFER_ENCOD:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENCODI;
- case 'i':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENCODI;
- default:
- return -1;
- }
-
-TRANSFER_ENCODI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENCODIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto TRANSFER_ENCODIN;
- default:
- return -1;
- }
-
-TRANSFER_ENCODIN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return 65;
- }
- goto TRANSFER_ENCODING;
- case 'g':
- if (last) {
- return 65;
- }
- goto TRANSFER_ENCODING;
- default:
- return -1;
- }
-
-U:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto UR;
- case 'r':
- if (last) {
- return -1;
- }
- goto UR;
- case 'P':
- if (last) {
- return -1;
- }
- goto UP;
- case 'p':
- if (last) {
- return -1;
- }
- goto UP;
- case 'S':
- if (last) {
- return -1;
- }
- goto US;
- case 's':
- if (last) {
- return -1;
- }
- goto US;
- default:
- return -1;
- }
-
-UR:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return 66;
- }
- goto URI;
- case 'i':
- if (last) {
- return 66;
- }
- goto URI;
- default:
- return -1;
- }
-
-UP:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto UPG;
- case 'g':
- if (last) {
- return -1;
- }
- goto UPG;
- default:
- return -1;
- }
-
-UPG:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto UPGR;
- case 'r':
- if (last) {
- return -1;
- }
- goto UPGR;
- default:
- return -1;
- }
-
-UPGR:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto UPGRA;
- case 'a':
- if (last) {
- return -1;
- }
- goto UPGRA;
- default:
- return -1;
- }
-
-UPGRA:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto UPGRAD;
- case 'd':
- if (last) {
- return -1;
- }
- goto UPGRAD;
- default:
- return -1;
- }
-
-UPGRAD:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 67;
- }
- goto UPGRADE;
- case 'e':
- if (last) {
- return 67;
- }
- goto UPGRADE;
- default:
- return -1;
- }
-
-US:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto USE;
- case 'e':
- if (last) {
- return -1;
- }
- goto USE;
- default:
- return -1;
- }
-
-USE:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto USER;
- case 'r':
- if (last) {
- return -1;
- }
- goto USER;
- default:
- return -1;
- }
-
-USER:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto USER_;
- default:
- return -1;
- }
-
-USER_:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto USER_A;
- case 'a':
- if (last) {
- return -1;
- }
- goto USER_A;
- default:
- return -1;
- }
-
-USER_A:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto USER_AG;
- case 'g':
- if (last) {
- return -1;
- }
- goto USER_AG;
- default:
- return -1;
- }
-
-USER_AG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto USER_AGE;
- case 'e':
- if (last) {
- return -1;
- }
- goto USER_AGE;
- default:
- return -1;
- }
-
-USER_AGE:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto USER_AGEN;
- case 'n':
- if (last) {
- return -1;
- }
- goto USER_AGEN;
- default:
- return -1;
- }
-
-USER_AGEN:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 68;
- }
- goto USER_AGENT;
- case 't':
- if (last) {
- return 68;
- }
- goto USER_AGENT;
- default:
- return -1;
- }
-
-V:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto VA;
- case 'a':
- if (last) {
- return -1;
- }
- goto VA;
- case 'I':
- if (last) {
- return -1;
- }
- goto VI;
- case 'i':
- if (last) {
- return -1;
- }
- goto VI;
- default:
- return -1;
- }
-
-VA:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto VAR;
- case 'r':
- if (last) {
- return -1;
- }
- goto VAR;
- default:
- return -1;
- }
-
-VAR:
- NEXT_CHAR();
- switch (ch) {
- case 'Y':
- if (last) {
- return 69;
- }
- goto VARY;
- case 'y':
- if (last) {
- return 69;
- }
- goto VARY;
- default:
- return -1;
- }
-
-VI:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return 70;
- }
- goto VIA;
- case 'a':
- if (last) {
- return 70;
- }
- goto VIA;
- default:
- return -1;
- }
-
-W:
- NEXT_CHAR();
- switch (ch) {
- case 'W':
- if (last) {
- return -1;
- }
- goto WW;
- case 'w':
- if (last) {
- return -1;
- }
- goto WW;
- case 'A':
- if (last) {
- return -1;
- }
- goto WA;
- case 'a':
- if (last) {
- return -1;
- }
- goto WA;
- default:
- return -1;
- }
-
-WW:
- NEXT_CHAR();
- switch (ch) {
- case 'W':
- if (last) {
- return -1;
- }
- goto WWW;
- case 'w':
- if (last) {
- return -1;
- }
- goto WWW;
- default:
- return -1;
- }
-
-WWW:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto WWW_;
- default:
- return -1;
- }
-
-WWW_:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto WWW_A;
- case 'a':
- if (last) {
- return -1;
- }
- goto WWW_A;
- default:
- return -1;
- }
-
-WWW_A:
- NEXT_CHAR();
- switch (ch) {
- case 'U':
- if (last) {
- return -1;
- }
- goto WWW_AU;
- case 'u':
- if (last) {
- return -1;
- }
- goto WWW_AU;
- default:
- return -1;
- }
-
-WWW_AU:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto WWW_AUT;
- case 't':
- if (last) {
- return -1;
- }
- goto WWW_AUT;
- default:
- return -1;
- }
-
-WWW_AUT:
- NEXT_CHAR();
- switch (ch) {
- case 'H':
- if (last) {
- return -1;
- }
- goto WWW_AUTH;
- case 'h':
- if (last) {
- return -1;
- }
- goto WWW_AUTH;
- default:
- return -1;
- }
-
-WWW_AUTH:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto WWW_AUTHE;
- case 'e':
- if (last) {
- return -1;
- }
- goto WWW_AUTHE;
- default:
- return -1;
- }
-
-WWW_AUTHE:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto WWW_AUTHEN;
- case 'n':
- if (last) {
- return -1;
- }
- goto WWW_AUTHEN;
- default:
- return -1;
- }
-
-WWW_AUTHEN:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENT;
- case 't':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENT;
- default:
- return -1;
- }
-
-WWW_AUTHENT:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENTI;
- case 'i':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENTI;
- default:
- return -1;
- }
-
-WWW_AUTHENTI:
- NEXT_CHAR();
- switch (ch) {
- case 'C':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENTIC;
- case 'c':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENTIC;
- default:
- return -1;
- }
-
-WWW_AUTHENTIC:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENTICA;
- case 'a':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENTICA;
- default:
- return -1;
- }
-
-WWW_AUTHENTICA:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENTICAT;
- case 't':
- if (last) {
- return -1;
- }
- goto WWW_AUTHENTICAT;
- default:
- return -1;
- }
-
-WWW_AUTHENTICAT:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return 71;
- }
- goto WWW_AUTHENTICATE;
- case 'e':
- if (last) {
- return 71;
- }
- goto WWW_AUTHENTICATE;
- default:
- return -1;
- }
-
-WA:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto WAN;
- case 'n':
- if (last) {
- return -1;
- }
- goto WAN;
- case 'R':
- if (last) {
- return -1;
- }
- goto WAR;
- case 'r':
- if (last) {
- return -1;
- }
- goto WAR;
- default:
- return -1;
- }
-
-WAN:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto WANT;
- case 't':
- if (last) {
- return -1;
- }
- goto WANT;
- default:
- return -1;
- }
-
-WANT:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto WANT_;
- default:
- return -1;
- }
-
-WANT_:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto WANT_D;
- case 'd':
- if (last) {
- return -1;
- }
- goto WANT_D;
- default:
- return -1;
- }
-
-WANT_D:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto WANT_DI;
- case 'i':
- if (last) {
- return -1;
- }
- goto WANT_DI;
- default:
- return -1;
- }
-
-WANT_DI:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return -1;
- }
- goto WANT_DIG;
- case 'g':
- if (last) {
- return -1;
- }
- goto WANT_DIG;
- default:
- return -1;
- }
-
-WANT_DIG:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto WANT_DIGE;
- case 'e':
- if (last) {
- return -1;
- }
- goto WANT_DIGE;
- default:
- return -1;
- }
-
-WANT_DIGE:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto WANT_DIGES;
- case 's':
- if (last) {
- return -1;
- }
- goto WANT_DIGES;
- default:
- return -1;
- }
-
-WANT_DIGES:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 72;
- }
- goto WANT_DIGEST;
- case 't':
- if (last) {
- return 72;
- }
- goto WANT_DIGEST;
- default:
- return -1;
- }
-
-WAR:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto WARN;
- case 'n':
- if (last) {
- return -1;
- }
- goto WARN;
- default:
- return -1;
- }
-
-WARN:
- NEXT_CHAR();
- switch (ch) {
- case 'I':
- if (last) {
- return -1;
- }
- goto WARNI;
- case 'i':
- if (last) {
- return -1;
- }
- goto WARNI;
- default:
- return -1;
- }
-
-WARNI:
- NEXT_CHAR();
- switch (ch) {
- case 'N':
- if (last) {
- return -1;
- }
- goto WARNIN;
- case 'n':
- if (last) {
- return -1;
- }
- goto WARNIN;
- default:
- return -1;
- }
-
-WARNIN:
- NEXT_CHAR();
- switch (ch) {
- case 'G':
- if (last) {
- return 73;
- }
- goto WARNING;
- case 'g':
- if (last) {
- return 73;
- }
- goto WARNING;
- default:
- return -1;
- }
-
-X:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto X_;
- default:
- return -1;
- }
-
-X_:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto X_F;
- case 'f':
- if (last) {
- return -1;
- }
- goto X_F;
- default:
- return -1;
- }
-
-X_F:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto X_FO;
- case 'o':
- if (last) {
- return -1;
- }
- goto X_FO;
- default:
- return -1;
- }
-
-X_FO:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto X_FOR;
- case 'r':
- if (last) {
- return -1;
- }
- goto X_FOR;
- default:
- return -1;
- }
-
-X_FOR:
- NEXT_CHAR();
- switch (ch) {
- case 'W':
- if (last) {
- return -1;
- }
- goto X_FORW;
- case 'w':
- if (last) {
- return -1;
- }
- goto X_FORW;
- default:
- return -1;
- }
-
-X_FORW:
- NEXT_CHAR();
- switch (ch) {
- case 'A':
- if (last) {
- return -1;
- }
- goto X_FORWA;
- case 'a':
- if (last) {
- return -1;
- }
- goto X_FORWA;
- default:
- return -1;
- }
-
-X_FORWA:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto X_FORWAR;
- case 'r':
- if (last) {
- return -1;
- }
- goto X_FORWAR;
- default:
- return -1;
- }
-
-X_FORWAR:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto X_FORWARD;
- case 'd':
- if (last) {
- return -1;
- }
- goto X_FORWARD;
- default:
- return -1;
- }
-
-X_FORWARD:
- NEXT_CHAR();
- switch (ch) {
- case 'E':
- if (last) {
- return -1;
- }
- goto X_FORWARDE;
- case 'e':
- if (last) {
- return -1;
- }
- goto X_FORWARDE;
- default:
- return -1;
- }
-
-X_FORWARDE:
- NEXT_CHAR();
- switch (ch) {
- case 'D':
- if (last) {
- return -1;
- }
- goto X_FORWARDED;
- case 'd':
- if (last) {
- return -1;
- }
- goto X_FORWARDED;
- default:
- return -1;
- }
-
-X_FORWARDED:
- NEXT_CHAR();
- switch (ch) {
- case '-':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_;
- default:
- return -1;
- }
-
-X_FORWARDED_:
- NEXT_CHAR();
- switch (ch) {
- case 'F':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_F;
- case 'f':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_F;
- case 'H':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_H;
- case 'h':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_H;
- case 'P':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_P;
- case 'p':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_P;
- default:
- return -1;
- }
-
-X_FORWARDED_F:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_FO;
- case 'o':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_FO;
- default:
- return -1;
- }
-
-X_FORWARDED_FO:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return 74;
- }
- goto X_FORWARDED_FOR;
- case 'r':
- if (last) {
- return 74;
- }
- goto X_FORWARDED_FOR;
- default:
- return -1;
- }
-
-X_FORWARDED_H:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_HO;
- case 'o':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_HO;
- default:
- return -1;
- }
-
-X_FORWARDED_HO:
- NEXT_CHAR();
- switch (ch) {
- case 'S':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_HOS;
- case 's':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_HOS;
- default:
- return -1;
- }
-
-X_FORWARDED_HOS:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return 75;
- }
- goto X_FORWARDED_HOST;
- case 't':
- if (last) {
- return 75;
- }
- goto X_FORWARDED_HOST;
- default:
- return -1;
- }
-
-X_FORWARDED_P:
- NEXT_CHAR();
- switch (ch) {
- case 'R':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_PR;
- case 'r':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_PR;
- default:
- return -1;
- }
-
-X_FORWARDED_PR:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_PRO;
- case 'o':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_PRO;
- default:
- return -1;
- }
-
-X_FORWARDED_PRO:
- NEXT_CHAR();
- switch (ch) {
- case 'T':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_PROT;
- case 't':
- if (last) {
- return -1;
- }
- goto X_FORWARDED_PROT;
- default:
- return -1;
- }
-
-X_FORWARDED_PROT:
- NEXT_CHAR();
- switch (ch) {
- case 'O':
- if (last) {
- return 76;
- }
- goto X_FORWARDED_PROTO;
- case 'o':
- if (last) {
- return 76;
- }
- goto X_FORWARDED_PROTO;
- default:
- return -1;
- }
-
-ACCEPT_CHARSET:
-ACCEPT_ENCODING:
-ACCEPT_LANGUAGE:
-ACCEPT_RANGES:
-ACCESS_CONTROL_ALLOW_CREDENTIALS:
-ACCESS_CONTROL_ALLOW_HEADERS:
-ACCESS_CONTROL_ALLOW_METHODS:
-ACCESS_CONTROL_ALLOW_ORIGIN:
-ACCESS_CONTROL_EXPOSE_HEADERS:
-ACCESS_CONTROL_MAX_AGE:
-ACCESS_CONTROL_REQUEST_HEADERS:
-ACCESS_CONTROL_REQUEST_METHOD:
-AGE:
-ALLOW:
-AUTHORIZATION:
-CACHE_CONTROL:
-CONNECTION:
-CONTENT_DISPOSITION:
-CONTENT_ENCODING:
-CONTENT_LANGUAGE:
-CONTENT_LENGTH:
-CONTENT_LOCATION:
-CONTENT_MD5:
-CONTENT_RANGE:
-CONTENT_TRANSFER_ENCODING:
-CONTENT_TYPE:
-COOKIE:
-DATE:
-DESTINATION:
-DIGEST:
-ETAG:
-EXPECT:
-EXPIRES:
-FORWARDED:
-FROM:
-HOST:
-IF_MATCH:
-IF_MODIFIED_SINCE:
-IF_NONE_MATCH:
-IF_RANGE:
-IF_UNMODIFIED_SINCE:
-KEEP_ALIVE:
-LAST_EVENT_ID:
-LAST_MODIFIED:
-LINK:
-LOCATION:
-MAX_FORWARDS:
-ORIGIN:
-PRAGMA:
-PROXY_AUTHENTICATE:
-PROXY_AUTHORIZATION:
-RANGE:
-REFERER:
-RETRY_AFTER:
-SEC_WEBSOCKET_ACCEPT:
-SEC_WEBSOCKET_EXTENSIONS:
-SEC_WEBSOCKET_KEY1:
-SEC_WEBSOCKET_PROTOCOL:
-SEC_WEBSOCKET_VERSION:
-SERVER:
-SET_COOKIE:
-TE:
-TRAILER:
-TRANSFER_ENCODING:
-UPGRADE:
-URI:
-USER_AGENT:
-VARY:
-VIA:
-WANT_DIGEST:
-WARNING:
-WWW_AUTHENTICATE:
-X_FORWARDED_FOR:
-X_FORWARDED_HOST:
-X_FORWARDED_PROTO:
-missing:
- /* nothing found */
- return -1;
-}
diff --git a/dist/ba_data/python-site-packages/aiohttp/_find_header.h b/dist/ba_data/python-site-packages/aiohttp/_find_header.h
deleted file mode 100644
index 99b7b4f8..00000000
--- a/dist/ba_data/python-site-packages/aiohttp/_find_header.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef _FIND_HEADERS_H
-#define _FIND_HEADERS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int find_header(const char *str, int size);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/dist/ba_data/python-site-packages/aiohttp/_frozenlist.c b/dist/ba_data/python-site-packages/aiohttp/_frozenlist.c
deleted file mode 100644
index 8588a951..00000000
--- a/dist/ba_data/python-site-packages/aiohttp/_frozenlist.c
+++ /dev/null
@@ -1,7512 +0,0 @@
-/* Generated by Cython 0.29.21 */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#ifndef Py_PYTHON_H
- #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
- #error Cython requires Python 2.6+ or Python 3.3+.
-#else
-#define CYTHON_ABI "0_29_21"
-#define CYTHON_HEX_VERSION 0x001D15F0
-#define CYTHON_FUTURE_DIVISION 1
-#include
-#ifndef offsetof
- #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
-#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
- #ifndef __stdcall
- #define __stdcall
- #endif
- #ifndef __cdecl
- #define __cdecl
- #endif
- #ifndef __fastcall
- #define __fastcall
- #endif
-#endif
-#ifndef DL_IMPORT
- #define DL_IMPORT(t) t
-#endif
-#ifndef DL_EXPORT
- #define DL_EXPORT(t) t
-#endif
-#define __PYX_COMMA ,
-#ifndef HAVE_LONG_LONG
- #if PY_VERSION_HEX >= 0x02070000
- #define HAVE_LONG_LONG
- #endif
-#endif
-#ifndef PY_LONG_LONG
- #define PY_LONG_LONG LONG_LONG
-#endif
-#ifndef Py_HUGE_VAL
- #define Py_HUGE_VAL HUGE_VAL
-#endif
-#ifdef PYPY_VERSION
- #define CYTHON_COMPILING_IN_PYPY 1
- #define CYTHON_COMPILING_IN_PYSTON 0
- #define CYTHON_COMPILING_IN_CPYTHON 0
- #undef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 0
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #if PY_VERSION_HEX < 0x03050000
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #elif !defined(CYTHON_USE_ASYNC_SLOTS)
- #define CYTHON_USE_ASYNC_SLOTS 1
- #endif
- #undef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 0
- #undef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 0
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #undef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 1
- #undef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 0
- #undef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 0
- #undef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 0
- #undef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 0
- #undef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT 0
- #undef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE 0
- #undef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS 0
- #undef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK 0
-#elif defined(PYSTON_VERSION)
- #define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 1
- #define CYTHON_COMPILING_IN_CPYTHON 0
- #ifndef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 1
- #endif
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #undef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 0
- #ifndef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 1
- #endif
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #ifndef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 0
- #endif
- #ifndef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 1
- #endif
- #ifndef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 1
- #endif
- #undef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 0
- #undef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 0
- #undef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT 0
- #undef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE 0
- #undef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS 0
- #undef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK 0
-#else
- #define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 0
- #define CYTHON_COMPILING_IN_CPYTHON 1
- #ifndef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 1
- #endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
- #define CYTHON_USE_PYTYPE_LOOKUP 1
- #endif
- #if PY_MAJOR_VERSION < 3
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #elif !defined(CYTHON_USE_ASYNC_SLOTS)
- #define CYTHON_USE_ASYNC_SLOTS 1
- #endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
- #define CYTHON_USE_PYLONG_INTERNALS 1
- #endif
- #ifndef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 1
- #endif
- #ifndef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 1
- #endif
- #if PY_VERSION_HEX < 0x030300F0
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #elif !defined(CYTHON_USE_UNICODE_WRITER)
- #define CYTHON_USE_UNICODE_WRITER 1
- #endif
- #ifndef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 0
- #endif
- #ifndef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 1
- #endif
- #ifndef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 1
- #endif
- #ifndef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 1
- #endif
- #ifndef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 1
- #endif
- #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
- #endif
- #ifndef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
- #endif
- #ifndef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
- #endif
- #ifndef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
- #endif
-#endif
-#if !defined(CYTHON_FAST_PYCCALL)
-#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
-#endif
-#if CYTHON_USE_PYLONG_INTERNALS
- #include "longintrepr.h"
- #undef SHIFT
- #undef BASE
- #undef MASK
- #ifdef SIZEOF_VOID_P
- enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
- #endif
-#endif
-#ifndef __has_attribute
- #define __has_attribute(x) 0
-#endif
-#ifndef __has_cpp_attribute
- #define __has_cpp_attribute(x) 0
-#endif
-#ifndef CYTHON_RESTRICT
- #if defined(__GNUC__)
- #define CYTHON_RESTRICT __restrict__
- #elif defined(_MSC_VER) && _MSC_VER >= 1400
- #define CYTHON_RESTRICT __restrict
- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define CYTHON_RESTRICT restrict
- #else
- #define CYTHON_RESTRICT
- #endif
-#endif
-#ifndef CYTHON_UNUSED
-# if defined(__GNUC__)
-# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-# define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-# define CYTHON_UNUSED
-# endif
-# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
-# define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-# define CYTHON_UNUSED
-# endif
-#endif
-#ifndef CYTHON_MAYBE_UNUSED_VAR
-# if defined(__cplusplus)
- template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
-# else
-# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
-# endif
-#endif
-#ifndef CYTHON_NCP_UNUSED
-# if CYTHON_COMPILING_IN_CPYTHON
-# define CYTHON_NCP_UNUSED
-# else
-# define CYTHON_NCP_UNUSED CYTHON_UNUSED
-# endif
-#endif
-#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
-#ifdef _MSC_VER
- #ifndef _MSC_STDINT_H_
- #if _MSC_VER < 1300
- typedef unsigned char uint8_t;
- typedef unsigned int uint32_t;
- #else
- typedef unsigned __int8 uint8_t;
- typedef unsigned __int32 uint32_t;
- #endif
- #endif
-#else
- #include
-#endif
-#ifndef CYTHON_FALLTHROUGH
- #if defined(__cplusplus) && __cplusplus >= 201103L
- #if __has_cpp_attribute(fallthrough)
- #define CYTHON_FALLTHROUGH [[fallthrough]]
- #elif __has_cpp_attribute(clang::fallthrough)
- #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
- #elif __has_cpp_attribute(gnu::fallthrough)
- #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
- #endif
- #endif
- #ifndef CYTHON_FALLTHROUGH
- #if __has_attribute(fallthrough)
- #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
- #else
- #define CYTHON_FALLTHROUGH
- #endif
- #endif
- #if defined(__clang__ ) && defined(__apple_build_version__)
- #if __apple_build_version__ < 7000000
- #undef CYTHON_FALLTHROUGH
- #define CYTHON_FALLTHROUGH
- #endif
- #endif
-#endif
-
-#ifndef CYTHON_INLINE
- #if defined(__clang__)
- #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
- #elif defined(__GNUC__)
- #define CYTHON_INLINE __inline__
- #elif defined(_MSC_VER)
- #define CYTHON_INLINE __inline
- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define CYTHON_INLINE inline
- #else
- #define CYTHON_INLINE
- #endif
-#endif
-
-#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
- #define Py_OptimizeFlag 0
-#endif
-#define __PYX_BUILD_PY_SSIZE_T "n"
-#define CYTHON_FORMAT_SSIZE_T "z"
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
- #define __Pyx_DefaultClassType PyClass_Type
-#else
- #define __Pyx_BUILTIN_MODULE_NAME "builtins"
-#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-#else
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-#endif
- #define __Pyx_DefaultClassType PyType_Type
-#endif
-#ifndef Py_TPFLAGS_CHECKTYPES
- #define Py_TPFLAGS_CHECKTYPES 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_INDEX
- #define Py_TPFLAGS_HAVE_INDEX 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
- #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_FINALIZE
- #define Py_TPFLAGS_HAVE_FINALIZE 0
-#endif
-#ifndef METH_STACKLESS
- #define METH_STACKLESS 0
-#endif
-#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
- #ifndef METH_FASTCALL
- #define METH_FASTCALL 0x80
- #endif
- typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
- typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
- Py_ssize_t nargs, PyObject *kwnames);
-#else
- #define __Pyx_PyCFunctionFast _PyCFunctionFast
- #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
-#endif
-#if CYTHON_FAST_PYCCALL
-#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
-#else
-#define __Pyx_PyFastCFunction_Check(func) 0
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
- #define PyObject_Malloc(s) PyMem_Malloc(s)
- #define PyObject_Free(p) PyMem_Free(p)
- #define PyObject_Realloc(p) PyMem_Realloc(p)
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
- #define PyMem_RawMalloc(n) PyMem_Malloc(n)
- #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
- #define PyMem_RawFree(p) PyMem_Free(p)
-#endif
-#if CYTHON_COMPILING_IN_PYSTON
- #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
- #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
-#else
- #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
- #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
-#endif
-#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
- #define __Pyx_PyThreadState_Current PyThreadState_GET()
-#elif PY_VERSION_HEX >= 0x03060000
- #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
-#elif PY_VERSION_HEX >= 0x03000000
- #define __Pyx_PyThreadState_Current PyThreadState_GET()
-#else
- #define __Pyx_PyThreadState_Current _PyThreadState_Current
-#endif
-#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
-#include "pythread.h"
-#define Py_tss_NEEDS_INIT 0
-typedef int Py_tss_t;
-static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
- *key = PyThread_create_key();
- return 0;
-}
-static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
- Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
- *key = Py_tss_NEEDS_INIT;
- return key;
-}
-static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
- PyObject_Free(key);
-}
-static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
- return *key != Py_tss_NEEDS_INIT;
-}
-static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
- PyThread_delete_key(*key);
- *key = Py_tss_NEEDS_INIT;
-}
-static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
- return PyThread_set_key_value(*key, value);
-}
-static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
- return PyThread_get_key_value(*key);
-}
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
-#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
-#else
-#define __Pyx_PyDict_NewPresized(n) PyDict_New()
-#endif
-#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
- #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
-#else
- #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
-#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
-#else
-#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name)
-#endif
-#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
- #define CYTHON_PEP393_ENABLED 1
- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
- 0 : _PyUnicode_Ready((PyObject *)(op)))
- #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
- #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
- #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
- #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
- #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
- #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
- #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
- #else
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
- #endif
-#else
- #define CYTHON_PEP393_ENABLED 0
- #define PyUnicode_1BYTE_KIND 1
- #define PyUnicode_2BYTE_KIND 2
- #define PyUnicode_4BYTE_KIND 4
- #define __Pyx_PyUnicode_READY(op) (0)
- #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
- #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
- #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
- #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
- #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
- #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
-#endif
-#if CYTHON_COMPILING_IN_PYPY
- #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
- #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
-#else
- #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
- #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
- PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
- #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
- #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
- #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
-#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
-#else
- #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
-#endif
-#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
- #define PyObject_ASCII(o) PyObject_Repr(o)
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyBaseString_Type PyUnicode_Type
- #define PyStringObject PyUnicodeObject
- #define PyString_Type PyUnicode_Type
- #define PyString_Check PyUnicode_Check
- #define PyString_CheckExact PyUnicode_CheckExact
-#ifndef PyObject_Unicode
- #define PyObject_Unicode PyObject_Str
-#endif
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
- #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
-#else
- #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
- #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
-#endif
-#ifndef PySet_CheckExact
- #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
-#endif
-#if PY_VERSION_HEX >= 0x030900A4
- #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
- #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
-#else
- #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
- #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
-#endif
-#if CYTHON_ASSUME_SAFE_MACROS
- #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
-#else
- #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyIntObject PyLongObject
- #define PyInt_Type PyLong_Type
- #define PyInt_Check(op) PyLong_Check(op)
- #define PyInt_CheckExact(op) PyLong_CheckExact(op)
- #define PyInt_FromString PyLong_FromString
- #define PyInt_FromUnicode PyLong_FromUnicode
- #define PyInt_FromLong PyLong_FromLong
- #define PyInt_FromSize_t PyLong_FromSize_t
- #define PyInt_FromSsize_t PyLong_FromSsize_t
- #define PyInt_AsLong PyLong_AsLong
- #define PyInt_AS_LONG PyLong_AS_LONG
- #define PyInt_AsSsize_t PyLong_AsSsize_t
- #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
- #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
- #define PyNumber_Int PyNumber_Long
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyBoolObject PyLongObject
-#endif
-#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
- #ifndef PyUnicode_InternFromString
- #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
- #endif
-#endif
-#if PY_VERSION_HEX < 0x030200A4
- typedef long Py_hash_t;
- #define __Pyx_PyInt_FromHash_t PyInt_FromLong
- #define __Pyx_PyInt_AsHash_t PyInt_AsLong
-#else
- #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
- #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
-#else
- #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
-#if CYTHON_USE_ASYNC_SLOTS
- #if PY_VERSION_HEX >= 0x030500B1
- #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
- #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
- #else
- #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
- #endif
-#else
- #define __Pyx_PyType_AsAsync(obj) NULL
-#endif
-#ifndef __Pyx_PyAsyncMethodsStruct
- typedef struct {
- unaryfunc am_await;
- unaryfunc am_aiter;
- unaryfunc am_anext;
- } __Pyx_PyAsyncMethodsStruct;
-#endif
-
-#if defined(WIN32) || defined(MS_WINDOWS)
- #define _USE_MATH_DEFINES
-#endif
-#include
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
- float value;
- memset(&value, 0xFF, sizeof(value));
- return value;
-}
-#endif
-#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
-#define __Pyx_truncl trunc
-#else
-#define __Pyx_truncl truncl
-#endif
-
-#define __PYX_MARK_ERR_POS(f_index, lineno) \
- { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
-#define __PYX_ERR(f_index, lineno, Ln_error) \
- { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
-
-#ifndef __PYX_EXTERN_C
- #ifdef __cplusplus
- #define __PYX_EXTERN_C extern "C"
- #else
- #define __PYX_EXTERN_C extern
- #endif
-#endif
-
-#define __PYX_HAVE__aiohttp___frozenlist
-#define __PYX_HAVE_API__aiohttp___frozenlist
-/* Early includes */
-#ifdef _OPENMP
-#include
-#endif /* _OPENMP */
-
-#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
-#define CYTHON_WITHOUT_ASSERTIONS
-#endif
-
-typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
- const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
-
-#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
-#define __PYX_DEFAULT_STRING_ENCODING ""
-#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
-#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#define __Pyx_uchar_cast(c) ((unsigned char)c)
-#define __Pyx_long_cast(x) ((long)x)
-#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
- (sizeof(type) < sizeof(Py_ssize_t)) ||\
- (sizeof(type) > sizeof(Py_ssize_t) &&\
- likely(v < (type)PY_SSIZE_T_MAX ||\
- v == (type)PY_SSIZE_T_MAX) &&\
- (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
- v == (type)PY_SSIZE_T_MIN))) ||\
- (sizeof(type) == sizeof(Py_ssize_t) &&\
- (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
- v == (type)PY_SSIZE_T_MAX))) )
-static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
- return (size_t) i < (size_t) limit;
-}
-#if defined (__cplusplus) && __cplusplus >= 201103L
- #include
- #define __Pyx_sst_abs(value) std::abs(value)
-#elif SIZEOF_INT >= SIZEOF_SIZE_T
- #define __Pyx_sst_abs(value) abs(value)
-#elif SIZEOF_LONG >= SIZEOF_SIZE_T
- #define __Pyx_sst_abs(value) labs(value)
-#elif defined (_MSC_VER)
- #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
-#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define __Pyx_sst_abs(value) llabs(value)
-#elif defined (__GNUC__)
- #define __Pyx_sst_abs(value) __builtin_llabs(value)
-#else
- #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
-#endif
-static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
-static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
-#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
-#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
-#define __Pyx_PyBytes_FromString PyBytes_FromString
-#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
- #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#else
- #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
- #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
-#endif
-#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
-#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
-#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
-#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
-#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
-static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
- const Py_UNICODE *u_end = u;
- while (*u_end++) ;
- return (size_t)(u_end - u - 1);
-}
-#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
-#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
-#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
-#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
-#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
-#define __Pyx_PySequence_Tuple(obj)\
- (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
-#if CYTHON_ASSUME_SAFE_MACROS
-#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
-#else
-#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
-#endif
-#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
-#if PY_MAJOR_VERSION >= 3
-#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
-#else
-#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
-#endif
-#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-static int __Pyx_sys_getdefaultencoding_not_ascii;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
- PyObject* sys;
- PyObject* default_encoding = NULL;
- PyObject* ascii_chars_u = NULL;
- PyObject* ascii_chars_b = NULL;
- const char* default_encoding_c;
- sys = PyImport_ImportModule("sys");
- if (!sys) goto bad;
- default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
- Py_DECREF(sys);
- if (!default_encoding) goto bad;
- default_encoding_c = PyBytes_AsString(default_encoding);
- if (!default_encoding_c) goto bad;
- if (strcmp(default_encoding_c, "ascii") == 0) {
- __Pyx_sys_getdefaultencoding_not_ascii = 0;
- } else {
- char ascii_chars[128];
- int c;
- for (c = 0; c < 128; c++) {
- ascii_chars[c] = c;
- }
- __Pyx_sys_getdefaultencoding_not_ascii = 1;
- ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
- if (!ascii_chars_u) goto bad;
- ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
- if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
- PyErr_Format(
- PyExc_ValueError,
- "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
- default_encoding_c);
- goto bad;
- }
- Py_DECREF(ascii_chars_u);
- Py_DECREF(ascii_chars_b);
- }
- Py_DECREF(default_encoding);
- return 0;
-bad:
- Py_XDECREF(default_encoding);
- Py_XDECREF(ascii_chars_u);
- Py_XDECREF(ascii_chars_b);
- return -1;
-}
-#endif
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
-#else
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
-static char* __PYX_DEFAULT_STRING_ENCODING;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
- PyObject* sys;
- PyObject* default_encoding = NULL;
- char* default_encoding_c;
- sys = PyImport_ImportModule("sys");
- if (!sys) goto bad;
- default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
- Py_DECREF(sys);
- if (!default_encoding) goto bad;
- default_encoding_c = PyBytes_AsString(default_encoding);
- if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
- if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
- strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
- Py_DECREF(default_encoding);
- return 0;
-bad:
- Py_XDECREF(default_encoding);
- return -1;
-}
-#endif
-#endif
-
-
-/* Test for GCC > 2.95 */
-#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
- #define likely(x) __builtin_expect(!!(x), 1)
- #define unlikely(x) __builtin_expect(!!(x), 0)
-#else /* !__GNUC__ or GCC < 2.95 */
- #define likely(x) (x)
- #define unlikely(x) (x)
-#endif /* __GNUC__ */
-static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
-
-static PyObject *__pyx_m = NULL;
-static PyObject *__pyx_d;
-static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime = NULL;
-static PyObject *__pyx_empty_tuple;
-static PyObject *__pyx_empty_bytes;
-static PyObject *__pyx_empty_unicode;
-static int __pyx_lineno;
-static int __pyx_clineno = 0;
-static const char * __pyx_cfilenm= __FILE__;
-static const char *__pyx_filename;
-
-
-static const char *__pyx_f[] = {
- "aiohttp\\_frozenlist.pyx",
- "stringsource",
-};
-
-/*--- Type declarations ---*/
-struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList;
-
-/* "aiohttp/_frozenlist.pyx":4
- *
- *
- * cdef class FrozenList: # <<<<<<<<<<<<<<
- *
- * cdef readonly bint frozen
- */
-struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList {
- PyObject_HEAD
- struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *__pyx_vtab;
- int frozen;
- PyObject *_items;
-};
-
-
-
-struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList {
- PyObject *(*_check_frozen)(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *);
- PyObject *(*_fast_len)(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *);
-};
-static struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *__pyx_vtabptr_7aiohttp_11_frozenlist_FrozenList;
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_11_frozenlist_10FrozenList__fast_len(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *);
-
-/* --- Runtime support code (head) --- */
-/* Refnanny.proto */
-#ifndef CYTHON_REFNANNY
- #define CYTHON_REFNANNY 0
-#endif
-#if CYTHON_REFNANNY
- typedef struct {
- void (*INCREF)(void*, PyObject*, int);
- void (*DECREF)(void*, PyObject*, int);
- void (*GOTREF)(void*, PyObject*, int);
- void (*GIVEREF)(void*, PyObject*, int);
- void* (*SetupContext)(const char*, int, const char*);
- void (*FinishContext)(void**);
- } __Pyx_RefNannyAPIStruct;
- static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
- static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
- #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
-#ifdef WITH_THREAD
- #define __Pyx_RefNannySetupContext(name, acquire_gil)\
- if (acquire_gil) {\
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
- PyGILState_Release(__pyx_gilstate_save);\
- } else {\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
- }
-#else
- #define __Pyx_RefNannySetupContext(name, acquire_gil)\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
-#endif
- #define __Pyx_RefNannyFinishContext()\
- __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
- #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
- #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
- #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
- #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
-#else
- #define __Pyx_RefNannyDeclarations
- #define __Pyx_RefNannySetupContext(name, acquire_gil)
- #define __Pyx_RefNannyFinishContext()
- #define __Pyx_INCREF(r) Py_INCREF(r)
- #define __Pyx_DECREF(r) Py_DECREF(r)
- #define __Pyx_GOTREF(r)
- #define __Pyx_GIVEREF(r)
- #define __Pyx_XINCREF(r) Py_XINCREF(r)
- #define __Pyx_XDECREF(r) Py_XDECREF(r)
- #define __Pyx_XGOTREF(r)
- #define __Pyx_XGIVEREF(r)
-#endif
-#define __Pyx_XDECREF_SET(r, v) do {\
- PyObject *tmp = (PyObject *) r;\
- r = v; __Pyx_XDECREF(tmp);\
- } while (0)
-#define __Pyx_DECREF_SET(r, v) do {\
- PyObject *tmp = (PyObject *) r;\
- r = v; __Pyx_DECREF(tmp);\
- } while (0)
-#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
-#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
-
-/* PyObjectGetAttrStr.proto */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
-#endif
-
-/* GetBuiltinName.proto */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name);
-
-/* RaiseDoubleKeywords.proto */
-static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
-
-/* ParseKeywords.proto */
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
- PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
- const char* function_name);
-
-/* RaiseArgTupleInvalid.proto */
-static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
- Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
-
-/* PyObjectCall.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
-#else
-#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
-#endif
-
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred() PyErr_Occurred()
-#endif
-
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
-#endif
-
-/* RaiseException.proto */
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
-
-/* GetItemInt.proto */
-#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
- (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
- __Pyx_GetItemInt_Generic(o, to_py_func(i))))
-#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
- (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
- (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
- int is_list, int wraparound, int boundscheck);
-
-/* ObjectGetItem.proto */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
-#else
-#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key)
-#endif
-
-/* PyFunctionFastCall.proto */
-#if CYTHON_FAST_PYCALL
-#define __Pyx_PyFunction_FastCall(func, args, nargs)\
- __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
-#if 1 || PY_VERSION_HEX < 0x030600B1
-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
-#else
-#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
-#endif
-#define __Pyx_BUILD_ASSERT_EXPR(cond)\
- (sizeof(char [1 - 2*!(cond)]) - 1)
-#ifndef Py_MEMBER_SIZE
-#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
-#endif
- static size_t __pyx_pyframe_localsplus_offset = 0;
- #include "frameobject.h"
- #define __Pxy_PyFrame_Initialize_Offsets()\
- ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
- (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
- #define __Pyx_PyFrame_GetLocalsplus(frame)\
- (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
-#endif
-
-/* PyObjectCallMethO.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-/* PyObjectCallNoArg.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
-#else
-#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
-#endif
-
-/* PyCFunctionFastCall.proto */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
-#else
-#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
-#endif
-
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-/* PyIntCompare.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
-
-/* PySequenceContains.proto */
-static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
- int result = PySequence_Contains(seq, item);
- return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
-
-/* PyObjectCall2Args.proto */
-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
-
-/* PyObjectGetMethod.proto */
-static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
-
-/* PyObjectCallMethod1.proto */
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
-
-/* pop_index.proto */
-static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix);
-static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix);
-#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
-static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix);
-#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
- (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\
- __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
- (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
- __Pyx__PyObject_PopIndex(L, py_ix)))
-#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
- __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\
- __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
- (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
- __Pyx__PyObject_PopIndex(L, py_ix)))
-#else
-#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\
- __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)
-#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
- (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
- __Pyx__PyObject_PopIndex(L, py_ix))
-#endif
-
-/* ListAppend.proto */
-#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
-static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
- PyListObject* L = (PyListObject*) list;
- Py_ssize_t len = Py_SIZE(list);
- if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
- Py_INCREF(x);
- PyList_SET_ITEM(list, len, x);
- __Pyx_SET_SIZE(list, len + 1);
- return 0;
- }
- return PyList_Append(list, x);
-}
-#else
-#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
-#endif
-
-/* PyErrExceptionMatches.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
-static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
-#else
-#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
-#endif
-
-/* GetAttr.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
-
-/* GetAttr3.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
-
-/* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
-#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
-#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
-#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
- (version_var) = __PYX_GET_DICT_VERSION(dict);\
- (cache_var) = (value);
-#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
- static PY_UINT64_T __pyx_dict_version = 0;\
- static PyObject *__pyx_dict_cached_value = NULL;\
- if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
- (VAR) = __pyx_dict_cached_value;\
- } else {\
- (VAR) = __pyx_dict_cached_value = (LOOKUP);\
- __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
- }\
-}
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
-static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
-#else
-#define __PYX_GET_DICT_VERSION(dict) (0)
-#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
-#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
-#endif
-
-/* GetModuleGlobalName.proto */
-#if CYTHON_USE_DICT_VERSIONS
-#define __Pyx_GetModuleGlobalName(var, name) {\
- static PY_UINT64_T __pyx_dict_version = 0;\
- static PyObject *__pyx_dict_cached_value = NULL;\
- (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
- (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
- __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
-#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
- PY_UINT64_T __pyx_dict_version;\
- PyObject *__pyx_dict_cached_value;\
- (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
-static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
-#else
-#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
-#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
-static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
-#endif
-
-/* Import.proto */
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
-
-/* ImportFrom.proto */
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
-
-/* HasAttr.proto */
-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
-
-/* PyObject_GenericGetAttrNoDict.proto */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
-#endif
-
-/* PyObject_GenericGetAttr.proto */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
-#endif
-
-/* SetVTable.proto */
-static int __Pyx_SetVtable(PyObject *dict, void *vtable);
-
-/* PyObjectGetAttrStrNoError.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
-
-/* SetupReduce.proto */
-static int __Pyx_setup_reduce(PyObject* type_obj);
-
-/* CLineInTraceback.proto */
-#ifdef CYTHON_CLINE_IN_TRACEBACK
-#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
-#else
-static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
-#endif
-
-/* CodeObjectCache.proto */
-typedef struct {
- PyCodeObject* code_object;
- int code_line;
-} __Pyx_CodeObjectCacheEntry;
-struct __Pyx_CodeObjectCache {
- int count;
- int max_count;
- __Pyx_CodeObjectCacheEntry* entries;
-};
-static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
-static PyCodeObject *__pyx_find_code_object(int code_line);
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
-
-/* AddTraceback.proto */
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
- int py_line, const char *filename);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-/* FastTypeChecks.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
-static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
-#else
-#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
-#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
-#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
-#endif
-#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
-
-/* CheckBinaryVersion.proto */
-static int __Pyx_check_binary_version(void);
-
-/* InitStrings.proto */
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
-
-static PyObject *__pyx_f_7aiohttp_11_frozenlist_10FrozenList__check_frozen(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto*/
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_11_frozenlist_10FrozenList__fast_len(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto*/
-
-/* Module declarations from 'aiohttp._frozenlist' */
-static PyTypeObject *__pyx_ptype_7aiohttp_11_frozenlist_FrozenList = 0;
-static PyObject *__pyx_f_7aiohttp_11_frozenlist___pyx_unpickle_FrozenList__set_state(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *, PyObject *); /*proto*/
-#define __Pyx_MODULE_NAME "aiohttp._frozenlist"
-extern int __pyx_module_is_main_aiohttp___frozenlist;
-int __pyx_module_is_main_aiohttp___frozenlist = 0;
-
-/* Implementation of 'aiohttp._frozenlist' */
-static PyObject *__pyx_builtin_RuntimeError;
-static const char __pyx_k_new[] = "__new__";
-static const char __pyx_k_pop[] = "pop";
-static const char __pyx_k_pos[] = "pos";
-static const char __pyx_k_dict[] = "__dict__";
-static const char __pyx_k_item[] = "item";
-static const char __pyx_k_iter[] = "__iter__";
-static const char __pyx_k_main[] = "__main__";
-static const char __pyx_k_name[] = "__name__";
-static const char __pyx_k_test[] = "__test__";
-static const char __pyx_k_clear[] = "clear";
-static const char __pyx_k_count[] = "count";
-static const char __pyx_k_index[] = "index";
-static const char __pyx_k_items[] = "items";
-static const char __pyx_k_format[] = "format";
-static const char __pyx_k_import[] = "__import__";
-static const char __pyx_k_pickle[] = "pickle";
-static const char __pyx_k_reduce[] = "__reduce__";
-static const char __pyx_k_remove[] = "remove";
-static const char __pyx_k_update[] = "update";
-static const char __pyx_k_getstate[] = "__getstate__";
-static const char __pyx_k_pyx_type[] = "__pyx_type";
-static const char __pyx_k_register[] = "register";
-static const char __pyx_k_reversed[] = "__reversed__";
-static const char __pyx_k_setstate[] = "__setstate__";
-static const char __pyx_k_pyx_state[] = "__pyx_state";
-static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
-static const char __pyx_k_FrozenList[] = "FrozenList";
-static const char __pyx_k_pyx_result[] = "__pyx_result";
-static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
-static const char __pyx_k_PickleError[] = "PickleError";
-static const char __pyx_k_RuntimeError[] = "RuntimeError";
-static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
-static const char __pyx_k_stringsource[] = "stringsource";
-static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
-static const char __pyx_k_MutableSequence[] = "MutableSequence";
-static const char __pyx_k_collections_abc[] = "collections.abc";
-static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
-static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
-static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
-static const char __pyx_k_FrozenList_frozen_r[] = "";
-static const char __pyx_k_aiohttp__frozenlist[] = "aiohttp._frozenlist";
-static const char __pyx_k_pyx_unpickle_FrozenList[] = "__pyx_unpickle_FrozenList";
-static const char __pyx_k_Cannot_modify_frozen_list[] = "Cannot modify frozen list.";
-static const char __pyx_k_Incompatible_checksums_s_vs_0x94[] = "Incompatible checksums (%s vs 0x949a143 = (_items, frozen))";
-static PyObject *__pyx_kp_u_Cannot_modify_frozen_list;
-static PyObject *__pyx_n_s_FrozenList;
-static PyObject *__pyx_kp_u_FrozenList_frozen_r;
-static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x94;
-static PyObject *__pyx_n_s_MutableSequence;
-static PyObject *__pyx_n_s_PickleError;
-static PyObject *__pyx_n_s_RuntimeError;
-static PyObject *__pyx_n_s_aiohttp__frozenlist;
-static PyObject *__pyx_n_s_clear;
-static PyObject *__pyx_n_s_cline_in_traceback;
-static PyObject *__pyx_n_s_collections_abc;
-static PyObject *__pyx_n_s_count;
-static PyObject *__pyx_n_s_dict;
-static PyObject *__pyx_n_s_format;
-static PyObject *__pyx_n_s_getstate;
-static PyObject *__pyx_n_s_import;
-static PyObject *__pyx_n_s_index;
-static PyObject *__pyx_n_s_item;
-static PyObject *__pyx_n_s_items;
-static PyObject *__pyx_n_s_iter;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_s_name;
-static PyObject *__pyx_n_s_new;
-static PyObject *__pyx_n_s_pickle;
-static PyObject *__pyx_n_s_pop;
-static PyObject *__pyx_n_s_pos;
-static PyObject *__pyx_n_s_pyx_PickleError;
-static PyObject *__pyx_n_s_pyx_checksum;
-static PyObject *__pyx_n_s_pyx_result;
-static PyObject *__pyx_n_s_pyx_state;
-static PyObject *__pyx_n_s_pyx_type;
-static PyObject *__pyx_n_s_pyx_unpickle_FrozenList;
-static PyObject *__pyx_n_s_pyx_vtable;
-static PyObject *__pyx_n_s_reduce;
-static PyObject *__pyx_n_s_reduce_cython;
-static PyObject *__pyx_n_s_reduce_ex;
-static PyObject *__pyx_n_s_register;
-static PyObject *__pyx_n_s_remove;
-static PyObject *__pyx_n_s_reversed;
-static PyObject *__pyx_n_s_setstate;
-static PyObject *__pyx_n_s_setstate_cython;
-static PyObject *__pyx_kp_s_stringsource;
-static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_update;
-static int __pyx_pf_7aiohttp_11_frozenlist_10FrozenList___init__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_items); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_2freeze(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_4__getitem__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
-static int __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_6__setitem__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_8__delitem__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
-static Py_ssize_t __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_10__len__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_12__iter__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_14__reversed__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_16__richcmp__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_op); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_18insert(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_pos, PyObject *__pyx_v_item); /* proto */
-static int __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_20__contains__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_22__iadd__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_items); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_24index(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_26remove(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_28clear(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_30extend(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_items); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_32reverse(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_34pop(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_36append(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_38count(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_40__repr__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_6frozen___get__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_42__reduce_cython__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_44__setstate_cython__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist___pyx_unpickle_FrozenList(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_tp_new_7aiohttp_11_frozenlist_FrozenList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_int_0;
-static PyObject *__pyx_int_1;
-static PyObject *__pyx_int_2;
-static PyObject *__pyx_int_3;
-static PyObject *__pyx_int_4;
-static PyObject *__pyx_int_5;
-static PyObject *__pyx_int_155820355;
-static PyObject *__pyx_int_neg_1;
-static PyObject *__pyx_tuple_;
-static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_codeobj__3;
-/* Late includes */
-
-/* "aiohttp/_frozenlist.pyx":9
- * cdef list _items
- *
- * def __init__(self, items=None): # <<<<<<<<<<<<<<
- * self.frozen = False
- * if items is not None:
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_items = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_items,0};
- PyObject* values[1] = {0};
- values[0] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items);
- if (value) { values[0] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 9, __pyx_L3_error)
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_items = values[0];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList___init__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), __pyx_v_items);
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_11_frozenlist_10FrozenList___init__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_items) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
- __Pyx_INCREF(__pyx_v_items);
-
- /* "aiohttp/_frozenlist.pyx":10
- *
- * def __init__(self, items=None):
- * self.frozen = False # <<<<<<<<<<<<<<
- * if items is not None:
- * items = list(items)
- */
- __pyx_v_self->frozen = 0;
-
- /* "aiohttp/_frozenlist.pyx":11
- * def __init__(self, items=None):
- * self.frozen = False
- * if items is not None: # <<<<<<<<<<<<<<
- * items = list(items)
- * else:
- */
- __pyx_t_1 = (__pyx_v_items != Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_frozenlist.pyx":12
- * self.frozen = False
- * if items is not None:
- * items = list(items) # <<<<<<<<<<<<<<
- * else:
- * items = []
- */
- __pyx_t_3 = PySequence_List(__pyx_v_items); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF_SET(__pyx_v_items, __pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "aiohttp/_frozenlist.pyx":11
- * def __init__(self, items=None):
- * self.frozen = False
- * if items is not None: # <<<<<<<<<<<<<<
- * items = list(items)
- * else:
- */
- goto __pyx_L3;
- }
-
- /* "aiohttp/_frozenlist.pyx":14
- * items = list(items)
- * else:
- * items = [] # <<<<<<<<<<<<<<
- * self._items = items
- *
- */
- /*else*/ {
- __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF_SET(__pyx_v_items, __pyx_t_3);
- __pyx_t_3 = 0;
- }
- __pyx_L3:;
-
- /* "aiohttp/_frozenlist.pyx":15
- * else:
- * items = []
- * self._items = items # <<<<<<<<<<<<<<
- *
- * cdef object _check_frozen(self):
- */
- if (!(likely(PyList_CheckExact(__pyx_v_items))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_items)->tp_name), 0))) __PYX_ERR(0, 15, __pyx_L1_error)
- __pyx_t_3 = __pyx_v_items;
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->_items);
- __Pyx_DECREF(__pyx_v_self->_items);
- __pyx_v_self->_items = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "aiohttp/_frozenlist.pyx":9
- * cdef list _items
- *
- * def __init__(self, items=None): # <<<<<<<<<<<<<<
- * self.frozen = False
- * if items is not None:
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_items);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":17
- * self._items = items
- *
- * cdef object _check_frozen(self): # <<<<<<<<<<<<<<
- * if self.frozen:
- * raise RuntimeError("Cannot modify frozen list.")
- */
-
-static PyObject *__pyx_f_7aiohttp_11_frozenlist_10FrozenList__check_frozen(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_check_frozen", 0);
-
- /* "aiohttp/_frozenlist.pyx":18
- *
- * cdef object _check_frozen(self):
- * if self.frozen: # <<<<<<<<<<<<<<
- * raise RuntimeError("Cannot modify frozen list.")
- *
- */
- __pyx_t_1 = (__pyx_v_self->frozen != 0);
- if (unlikely(__pyx_t_1)) {
-
- /* "aiohttp/_frozenlist.pyx":19
- * cdef object _check_frozen(self):
- * if self.frozen:
- * raise RuntimeError("Cannot modify frozen list.") # <<<<<<<<<<<<<<
- *
- * cdef inline object _fast_len(self):
- */
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_Raise(__pyx_t_2, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(0, 19, __pyx_L1_error)
-
- /* "aiohttp/_frozenlist.pyx":18
- *
- * cdef object _check_frozen(self):
- * if self.frozen: # <<<<<<<<<<<<<<
- * raise RuntimeError("Cannot modify frozen list.")
- *
- */
- }
-
- /* "aiohttp/_frozenlist.pyx":17
- * self._items = items
- *
- * cdef object _check_frozen(self): # <<<<<<<<<<<<<<
- * if self.frozen:
- * raise RuntimeError("Cannot modify frozen list.")
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList._check_frozen", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":21
- * raise RuntimeError("Cannot modify frozen list.")
- *
- * cdef inline object _fast_len(self): # <<<<<<<<<<<<<<
- * return len(self._items)
- *
- */
-
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_11_frozenlist_10FrozenList__fast_len(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_fast_len", 0);
-
- /* "aiohttp/_frozenlist.pyx":22
- *
- * cdef inline object _fast_len(self):
- * return len(self._items) # <<<<<<<<<<<<<<
- *
- * def freeze(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_v_self->_items;
- __Pyx_INCREF(__pyx_t_1);
- if (unlikely(__pyx_t_1 == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(0, 22, __pyx_L1_error)
- }
- __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 22, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":21
- * raise RuntimeError("Cannot modify frozen list.")
- *
- * cdef inline object _fast_len(self): # <<<<<<<<<<<<<<
- * return len(self._items)
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList._fast_len", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":24
- * return len(self._items)
- *
- * def freeze(self): # <<<<<<<<<<<<<<
- * self.frozen = True
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_3freeze(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_3freeze(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("freeze (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_2freeze(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_2freeze(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("freeze", 0);
-
- /* "aiohttp/_frozenlist.pyx":25
- *
- * def freeze(self):
- * self.frozen = True # <<<<<<<<<<<<<<
- *
- * def __getitem__(self, index):
- */
- __pyx_v_self->frozen = 1;
-
- /* "aiohttp/_frozenlist.pyx":24
- * return len(self._items)
- *
- * def freeze(self): # <<<<<<<<<<<<<<
- * self.frozen = True
- *
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":27
- * self.frozen = True
- *
- * def __getitem__(self, index): # <<<<<<<<<<<<<<
- * return self._items[index]
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_5__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_5__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_4__getitem__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_index));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_4__getitem__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_index) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__getitem__", 0);
-
- /* "aiohttp/_frozenlist.pyx":28
- *
- * def __getitem__(self, index):
- * return self._items[index] # <<<<<<<<<<<<<<
- *
- * def __setitem__(self, index, value):
- */
- __Pyx_XDECREF(__pyx_r);
- if (unlikely(__pyx_v_self->_items == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 28, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_self->_items, __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":27
- * self.frozen = True
- *
- * def __getitem__(self, index): # <<<<<<<<<<<<<<
- * return self._items[index]
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":30
- * return self._items[index]
- *
- * def __setitem__(self, index, value): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items[index] = value
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_7__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_7__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_6__setitem__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_6__setitem__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setitem__", 0);
-
- /* "aiohttp/_frozenlist.pyx":31
- *
- * def __setitem__(self, index, value):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * self._items[index] = value
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":32
- * def __setitem__(self, index, value):
- * self._check_frozen()
- * self._items[index] = value # <<<<<<<<<<<<<<
- *
- * def __delitem__(self, index):
- */
- if (unlikely(__pyx_v_self->_items == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 32, __pyx_L1_error)
- }
- if (unlikely(PyObject_SetItem(__pyx_v_self->_items, __pyx_v_index, __pyx_v_value) < 0)) __PYX_ERR(0, 32, __pyx_L1_error)
-
- /* "aiohttp/_frozenlist.pyx":30
- * return self._items[index]
- *
- * def __setitem__(self, index, value): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items[index] = value
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":34
- * self._items[index] = value
- *
- * def __delitem__(self, index): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * del self._items[index]
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_9__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
-static int __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_9__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_8__delitem__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_index));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_8__delitem__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_index) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__delitem__", 0);
-
- /* "aiohttp/_frozenlist.pyx":35
- *
- * def __delitem__(self, index):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * del self._items[index]
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":36
- * def __delitem__(self, index):
- * self._check_frozen()
- * del self._items[index] # <<<<<<<<<<<<<<
- *
- * def __len__(self):
- */
- if (unlikely(__pyx_v_self->_items == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 36, __pyx_L1_error)
- }
- if (unlikely(PyObject_DelItem(__pyx_v_self->_items, __pyx_v_index) < 0)) __PYX_ERR(0, 36, __pyx_L1_error)
-
- /* "aiohttp/_frozenlist.pyx":34
- * self._items[index] = value
- *
- * def __delitem__(self, index): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * del self._items[index]
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":38
- * del self._items[index]
- *
- * def __len__(self): # <<<<<<<<<<<<<<
- * return self._fast_len()
- *
- */
-
-/* Python wrapper */
-static Py_ssize_t __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_11__len__(PyObject *__pyx_v_self); /*proto*/
-static Py_ssize_t __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_11__len__(PyObject *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_10__len__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static Py_ssize_t __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_10__len__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__len__", 0);
-
- /* "aiohttp/_frozenlist.pyx":39
- *
- * def __len__(self):
- * return self._fast_len() # <<<<<<<<<<<<<<
- *
- * def __iter__(self):
- */
- __pyx_t_1 = __pyx_f_7aiohttp_11_frozenlist_10FrozenList__fast_len(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 39, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 39, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_2;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":38
- * del self._items[index]
- *
- * def __len__(self): # <<<<<<<<<<<<<<
- * return self._fast_len()
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":41
- * return self._fast_len()
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * return self._items.__iter__()
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_13__iter__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_13__iter__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_12__iter__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_12__iter__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__iter__", 0);
-
- /* "aiohttp/_frozenlist.pyx":42
- *
- * def __iter__(self):
- * return self._items.__iter__() # <<<<<<<<<<<<<<
- *
- * def __reversed__(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_items, __pyx_n_s_iter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":41
- * return self._fast_len()
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * return self._items.__iter__()
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":44
- * return self._items.__iter__()
- *
- * def __reversed__(self): # <<<<<<<<<<<<<<
- * return self._items.__reversed__()
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_15__reversed__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_15__reversed__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reversed__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_14__reversed__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_14__reversed__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reversed__", 0);
-
- /* "aiohttp/_frozenlist.pyx":45
- *
- * def __reversed__(self):
- * return self._items.__reversed__() # <<<<<<<<<<<<<<
- *
- * def __richcmp__(self, other, op):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_items, __pyx_n_s_reversed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":44
- * return self._items.__iter__()
- *
- * def __reversed__(self): # <<<<<<<<<<<<<<
- * return self._items.__reversed__()
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__reversed__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":47
- * return self._items.__reversed__()
- *
- * def __richcmp__(self, other, op): # <<<<<<<<<<<<<<
- * if op == 0: # <
- * return list(self) < other
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_17__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_arg_op); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_17__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_arg_op) {
- PyObject *__pyx_v_op = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
- __pyx_v_op = __Pyx_PyInt_From_int(__pyx_arg_op); if (unlikely(!__pyx_v_op)) __PYX_ERR(0, 47, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_v_op);
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_16__richcmp__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((PyObject *)__pyx_v_op));
-
- /* function exit code */
- __Pyx_XDECREF(__pyx_v_op);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_16__richcmp__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_op) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__richcmp__", 0);
-
- /* "aiohttp/_frozenlist.pyx":48
- *
- * def __richcmp__(self, other, op):
- * if op == 0: # < # <<<<<<<<<<<<<<
- * return list(self) < other
- * if op == 1: # <=
- */
- __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 48, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "aiohttp/_frozenlist.pyx":49
- * def __richcmp__(self, other, op):
- * if op == 0: # <
- * return list(self) < other # <<<<<<<<<<<<<<
- * if op == 1: # <=
- * return list(self) <= other
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":48
- *
- * def __richcmp__(self, other, op):
- * if op == 0: # < # <<<<<<<<<<<<<<
- * return list(self) < other
- * if op == 1: # <=
- */
- }
-
- /* "aiohttp/_frozenlist.pyx":50
- * if op == 0: # <
- * return list(self) < other
- * if op == 1: # <= # <<<<<<<<<<<<<<
- * return list(self) <= other
- * if op == 2: # ==
- */
- __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 50, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_2) {
-
- /* "aiohttp/_frozenlist.pyx":51
- * return list(self) < other
- * if op == 1: # <=
- * return list(self) <= other # <<<<<<<<<<<<<<
- * if op == 2: # ==
- * return list(self) == other
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_v_other, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":50
- * if op == 0: # <
- * return list(self) < other
- * if op == 1: # <= # <<<<<<<<<<<<<<
- * return list(self) <= other
- * if op == 2: # ==
- */
- }
-
- /* "aiohttp/_frozenlist.pyx":52
- * if op == 1: # <=
- * return list(self) <= other
- * if op == 2: # == # <<<<<<<<<<<<<<
- * return list(self) == other
- * if op == 3: # !=
- */
- __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 52, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "aiohttp/_frozenlist.pyx":53
- * return list(self) <= other
- * if op == 2: # ==
- * return list(self) == other # <<<<<<<<<<<<<<
- * if op == 3: # !=
- * return list(self) != other
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":52
- * if op == 1: # <=
- * return list(self) <= other
- * if op == 2: # == # <<<<<<<<<<<<<<
- * return list(self) == other
- * if op == 3: # !=
- */
- }
-
- /* "aiohttp/_frozenlist.pyx":54
- * if op == 2: # ==
- * return list(self) == other
- * if op == 3: # != # <<<<<<<<<<<<<<
- * return list(self) != other
- * if op == 4: # >
- */
- __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_3, 3, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 54, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_2) {
-
- /* "aiohttp/_frozenlist.pyx":55
- * return list(self) == other
- * if op == 3: # !=
- * return list(self) != other # <<<<<<<<<<<<<<
- * if op == 4: # >
- * return list(self) > other
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_v_other, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":54
- * if op == 2: # ==
- * return list(self) == other
- * if op == 3: # != # <<<<<<<<<<<<<<
- * return list(self) != other
- * if op == 4: # >
- */
- }
-
- /* "aiohttp/_frozenlist.pyx":56
- * if op == 3: # !=
- * return list(self) != other
- * if op == 4: # > # <<<<<<<<<<<<<<
- * return list(self) > other
- * if op == 5: # =>
- */
- __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 56, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "aiohttp/_frozenlist.pyx":57
- * return list(self) != other
- * if op == 4: # >
- * return list(self) > other # <<<<<<<<<<<<<<
- * if op == 5: # =>
- * return list(self) >= other
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":56
- * if op == 3: # !=
- * return list(self) != other
- * if op == 4: # > # <<<<<<<<<<<<<<
- * return list(self) > other
- * if op == 5: # =>
- */
- }
-
- /* "aiohttp/_frozenlist.pyx":58
- * if op == 4: # >
- * return list(self) > other
- * if op == 5: # => # <<<<<<<<<<<<<<
- * return list(self) >= other
- *
- */
- __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_5, 5, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 58, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_2) {
-
- /* "aiohttp/_frozenlist.pyx":59
- * return list(self) > other
- * if op == 5: # =>
- * return list(self) >= other # <<<<<<<<<<<<<<
- *
- * def insert(self, pos, item):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_v_other, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":58
- * if op == 4: # >
- * return list(self) > other
- * if op == 5: # => # <<<<<<<<<<<<<<
- * return list(self) >= other
- *
- */
- }
-
- /* "aiohttp/_frozenlist.pyx":47
- * return self._items.__reversed__()
- *
- * def __richcmp__(self, other, op): # <<<<<<<<<<<<<<
- * if op == 0: # <
- * return list(self) < other
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":61
- * return list(self) >= other
- *
- * def insert(self, pos, item): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items.insert(pos, item)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_19insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_19insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_pos = 0;
- PyObject *__pyx_v_item = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("insert (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pos,&__pyx_n_s_item,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- CYTHON_FALLTHROUGH;
- case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, 1); __PYX_ERR(0, 61, __pyx_L3_error)
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert") < 0)) __PYX_ERR(0, 61, __pyx_L3_error)
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_pos = values[0];
- __pyx_v_item = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 61, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_18insert(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), __pyx_v_pos, __pyx_v_item);
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_18insert(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_pos, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("insert", 0);
-
- /* "aiohttp/_frozenlist.pyx":62
- *
- * def insert(self, pos, item):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * self._items.insert(pos, item)
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":63
- * def insert(self, pos, item):
- * self._check_frozen()
- * self._items.insert(pos, item) # <<<<<<<<<<<<<<
- *
- * def __contains__(self, item):
- */
- if (unlikely(__pyx_v_self->_items == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "insert");
- __PYX_ERR(0, 63, __pyx_L1_error)
- }
- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_pos); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 63, __pyx_L1_error)
- __pyx_t_3 = PyList_Insert(__pyx_v_self->_items, __pyx_t_2, __pyx_v_item); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 63, __pyx_L1_error)
-
- /* "aiohttp/_frozenlist.pyx":61
- * return list(self) >= other
- *
- * def insert(self, pos, item): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items.insert(pos, item)
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":65
- * self._items.insert(pos, item)
- *
- * def __contains__(self, item): # <<<<<<<<<<<<<<
- * return item in self._items
- *
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_21__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static int __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_21__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_20__contains__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_20__contains__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__contains__", 0);
-
- /* "aiohttp/_frozenlist.pyx":66
- *
- * def __contains__(self, item):
- * return item in self._items # <<<<<<<<<<<<<<
- *
- * def __iadd__(self, items):
- */
- __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_item, __pyx_v_self->_items, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 66, __pyx_L1_error)
- __pyx_r = __pyx_t_1;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":65
- * self._items.insert(pos, item)
- *
- * def __contains__(self, item): # <<<<<<<<<<<<<<
- * return item in self._items
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":68
- * return item in self._items
- *
- * def __iadd__(self, items): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items += list(items)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_23__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_items); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_23__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_items) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_22__iadd__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_items));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_22__iadd__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_items) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__iadd__", 0);
-
- /* "aiohttp/_frozenlist.pyx":69
- *
- * def __iadd__(self, items):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * self._items += list(items)
- * return self
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":70
- * def __iadd__(self, items):
- * self._check_frozen()
- * self._items += list(items) # <<<<<<<<<<<<<<
- * return self
- *
- */
- __pyx_t_1 = PySequence_List(__pyx_v_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_self->_items, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->_items);
- __Pyx_DECREF(__pyx_v_self->_items);
- __pyx_v_self->_items = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "aiohttp/_frozenlist.pyx":71
- * self._check_frozen()
- * self._items += list(items)
- * return self # <<<<<<<<<<<<<<
- *
- * def index(self, item):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self));
- __pyx_r = ((PyObject *)__pyx_v_self);
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":68
- * return item in self._items
- *
- * def __iadd__(self, items): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items += list(items)
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":73
- * return self
- *
- * def index(self, item): # <<<<<<<<<<<<<<
- * return self._items.index(item)
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_25index(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_25index(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("index (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_24index(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_24index(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("index", 0);
-
- /* "aiohttp/_frozenlist.pyx":74
- *
- * def index(self, item):
- * return self._items.index(item) # <<<<<<<<<<<<<<
- *
- * def remove(self, item):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_items, __pyx_n_s_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_item) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_item);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":73
- * return self
- *
- * def index(self, item): # <<<<<<<<<<<<<<
- * return self._items.index(item)
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.index", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":76
- * return self._items.index(item)
- *
- * def remove(self, item): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items.remove(item)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_27remove(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_27remove(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("remove (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_26remove(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_26remove(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("remove", 0);
-
- /* "aiohttp/_frozenlist.pyx":77
- *
- * def remove(self, item):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * self._items.remove(item)
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":78
- * def remove(self, item):
- * self._check_frozen()
- * self._items.remove(item) # <<<<<<<<<<<<<<
- *
- * def clear(self):
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_items, __pyx_n_s_remove); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_item) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_item);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":76
- * return self._items.index(item)
- *
- * def remove(self, item): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items.remove(item)
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":80
- * self._items.remove(item)
- *
- * def clear(self): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items.clear()
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_29clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_29clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("clear (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_28clear(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_28clear(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("clear", 0);
-
- /* "aiohttp/_frozenlist.pyx":81
- *
- * def clear(self):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * self._items.clear()
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":82
- * def clear(self):
- * self._check_frozen()
- * self._items.clear() # <<<<<<<<<<<<<<
- *
- * def extend(self, items):
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_items, __pyx_n_s_clear); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":80
- * self._items.remove(item)
- *
- * def clear(self): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items.clear()
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":84
- * self._items.clear()
- *
- * def extend(self, items): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items += list(items)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_31extend(PyObject *__pyx_v_self, PyObject *__pyx_v_items); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_31extend(PyObject *__pyx_v_self, PyObject *__pyx_v_items) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("extend (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_30extend(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_items));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_30extend(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_items) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("extend", 0);
-
- /* "aiohttp/_frozenlist.pyx":85
- *
- * def extend(self, items):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * self._items += list(items)
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":86
- * def extend(self, items):
- * self._check_frozen()
- * self._items += list(items) # <<<<<<<<<<<<<<
- *
- * def reverse(self):
- */
- __pyx_t_1 = PySequence_List(__pyx_v_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_self->_items, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->_items);
- __Pyx_DECREF(__pyx_v_self->_items);
- __pyx_v_self->_items = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "aiohttp/_frozenlist.pyx":84
- * self._items.clear()
- *
- * def extend(self, items): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items += list(items)
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.extend", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":88
- * self._items += list(items)
- *
- * def reverse(self): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items.reverse()
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_33reverse(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_33reverse(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("reverse (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_32reverse(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_32reverse(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("reverse", 0);
-
- /* "aiohttp/_frozenlist.pyx":89
- *
- * def reverse(self):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * self._items.reverse()
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":90
- * def reverse(self):
- * self._check_frozen()
- * self._items.reverse() # <<<<<<<<<<<<<<
- *
- * def pop(self, index=-1):
- */
- if (unlikely(__pyx_v_self->_items == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "reverse");
- __PYX_ERR(0, 90, __pyx_L1_error)
- }
- __pyx_t_2 = PyList_Reverse(__pyx_v_self->_items); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 90, __pyx_L1_error)
-
- /* "aiohttp/_frozenlist.pyx":88
- * self._items += list(items)
- *
- * def reverse(self): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * self._items.reverse()
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.reverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":92
- * self._items.reverse()
- *
- * def pop(self, index=-1): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * return self._items.pop(index)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_35pop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_35pop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_index = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("pop (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,0};
- PyObject* values[1] = {0};
- values[0] = ((PyObject *)__pyx_int_neg_1);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_index);
- if (value) { values[0] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pop") < 0)) __PYX_ERR(0, 92, __pyx_L3_error)
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_index = values[0];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("pop", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 92, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.pop", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_34pop(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), __pyx_v_index);
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_34pop(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_index) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("pop", 0);
-
- /* "aiohttp/_frozenlist.pyx":93
- *
- * def pop(self, index=-1):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * return self._items.pop(index)
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":94
- * def pop(self, index=-1):
- * self._check_frozen()
- * return self._items.pop(index) # <<<<<<<<<<<<<<
- *
- * def append(self, item):
- */
- __Pyx_XDECREF(__pyx_r);
- if (unlikely(__pyx_v_self->_items == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
- __PYX_ERR(0, 94, __pyx_L1_error)
- }
- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 94, __pyx_L1_error)
- __pyx_t_1 = __Pyx_PyList_PopIndex(__pyx_v_self->_items, __pyx_v_index, __pyx_t_2, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":92
- * self._items.reverse()
- *
- * def pop(self, index=-1): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * return self._items.pop(index)
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.pop", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":96
- * return self._items.pop(index)
- *
- * def append(self, item): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * return self._items.append(item)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_37append(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_37append(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("append (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_36append(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_36append(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("append", 0);
-
- /* "aiohttp/_frozenlist.pyx":97
- *
- * def append(self, item):
- * self._check_frozen() # <<<<<<<<<<<<<<
- * return self._items.append(item)
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self->__pyx_vtab)->_check_frozen(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_frozenlist.pyx":98
- * def append(self, item):
- * self._check_frozen()
- * return self._items.append(item) # <<<<<<<<<<<<<<
- *
- * def count(self, item):
- */
- __Pyx_XDECREF(__pyx_r);
- if (unlikely(__pyx_v_self->_items == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(0, 98, __pyx_L1_error)
- }
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->_items, __pyx_v_item); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 98, __pyx_L1_error)
- __pyx_t_1 = __Pyx_Owned_Py_None(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":96
- * return self._items.pop(index)
- *
- * def append(self, item): # <<<<<<<<<<<<<<
- * self._check_frozen()
- * return self._items.append(item)
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.append", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":100
- * return self._items.append(item)
- *
- * def count(self, item): # <<<<<<<<<<<<<<
- * return self._items.count(item)
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_39count(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_39count(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("count (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_38count(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v_item));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_38count(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v_item) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("count", 0);
-
- /* "aiohttp/_frozenlist.pyx":101
- *
- * def count(self, item):
- * return self._items.count(item) # <<<<<<<<<<<<<<
- *
- * def __repr__(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_items, __pyx_n_s_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_item) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_item);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":100
- * return self._items.append(item)
- *
- * def count(self, item): # <<<<<<<<<<<<<<
- * return self._items.count(item)
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.count", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":103
- * return self._items.count(item)
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * return ''.format(self.frozen,
- * self._items)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_41__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_41__repr__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_40__repr__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_40__repr__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__repr__", 0);
-
- /* "aiohttp/_frozenlist.pyx":104
- *
- * def __repr__(self):
- * return ''.format(self.frozen, # <<<<<<<<<<<<<<
- * self._items)
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_FrozenList_frozen_r, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->frozen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
-
- /* "aiohttp/_frozenlist.pyx":105
- * def __repr__(self):
- * return ''.format(self.frozen,
- * self._items) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_4 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- __pyx_t_5 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_self->_items};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_self->_items};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
- __Pyx_INCREF(__pyx_v_self->_items);
- __Pyx_GIVEREF(__pyx_v_self->_items);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_self->_items);
- __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_frozenlist.pyx":103
- * return self._items.count(item)
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * return ''.format(self.frozen,
- * self._items)
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_frozenlist.pyx":6
- * cdef class FrozenList:
- *
- * cdef readonly bint frozen # <<<<<<<<<<<<<<
- * cdef list _items
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_6frozen_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_6frozen_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_6frozen___get__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_6frozen___get__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->frozen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.frozen.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_43__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_43__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_42__reduce_cython__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_42__reduce_cython__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self) {
- PyObject *__pyx_v_state = 0;
- PyObject *__pyx_v__dict = 0;
- int __pyx_v_use_setstate;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-
- /* "(tree fragment)":5
- * cdef object _dict
- * cdef bint use_setstate
- * state = (self._items, self.frozen) # <<<<<<<<<<<<<<
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->frozen); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_self->_items);
- __Pyx_GIVEREF(__pyx_v_self->_items);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_items);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_v_state = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "(tree fragment)":6
- * cdef bint use_setstate
- * state = (self._items, self.frozen)
- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
- * if _dict is not None:
- * state += (_dict,)
- */
- __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v__dict = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "(tree fragment)":7
- * state = (self._items, self.frozen)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- __pyx_t_3 = (__pyx_v__dict != Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
-
- /* "(tree fragment)":8
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- * state += (_dict,) # <<<<<<<<<<<<<<
- * use_setstate = True
- * else:
- */
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v__dict);
- __Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":9
- * if _dict is not None:
- * state += (_dict,)
- * use_setstate = True # <<<<<<<<<<<<<<
- * else:
- * use_setstate = self._items is not None
- */
- __pyx_v_use_setstate = 1;
-
- /* "(tree fragment)":7
- * state = (self._items, self.frozen)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- goto __pyx_L3;
- }
-
- /* "(tree fragment)":11
- * use_setstate = True
- * else:
- * use_setstate = self._items is not None # <<<<<<<<<<<<<<
- * if use_setstate:
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, None), state
- */
- /*else*/ {
- __pyx_t_4 = (__pyx_v_self->_items != ((PyObject*)Py_None));
- __pyx_v_use_setstate = __pyx_t_4;
- }
- __pyx_L3:;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self._items is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, None), state
- * else:
- */
- __pyx_t_4 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_4) {
-
- /* "(tree fragment)":13
- * use_setstate = self._items is not None
- * if use_setstate:
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, None), state # <<<<<<<<<<<<<<
- * else:
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, state)
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_FrozenList); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_155820355);
- __Pyx_GIVEREF(__pyx_int_155820355);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_155820355);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
- __pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L0;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self._items is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, None), state
- * else:
- */
- }
-
- /* "(tree fragment)":15
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, None), state
- * else:
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, state) # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_FrozenList__set_state(self, __pyx_state)
- */
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_FrozenList); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_155820355);
- __Pyx_GIVEREF(__pyx_int_155820355);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_155820355);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
- __pyx_t_5 = 0;
- __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
- }
-
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_state);
- __Pyx_XDECREF(__pyx_v__dict);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_FrozenList__set_state(self, __pyx_state)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_45__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_45__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist_10FrozenList_44__setstate_cython__(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist_10FrozenList_44__setstate_cython__(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-
- /* "(tree fragment)":17
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, state)
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_FrozenList__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
- */
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
- __pyx_t_1 = __pyx_f_7aiohttp_11_frozenlist___pyx_unpickle_FrozenList__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_FrozenList, (type(self), 0x949a143, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_FrozenList__set_state(self, __pyx_state)
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._frozenlist.FrozenList.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __pyx_unpickle_FrozenList(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_1__pyx_unpickle_FrozenList(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_7aiohttp_11_frozenlist_1__pyx_unpickle_FrozenList = {"__pyx_unpickle_FrozenList", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7aiohttp_11_frozenlist_1__pyx_unpickle_FrozenList, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_7aiohttp_11_frozenlist_1__pyx_unpickle_FrozenList(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v___pyx_type = 0;
- long __pyx_v___pyx_checksum;
- PyObject *__pyx_v___pyx_state = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__pyx_unpickle_FrozenList (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- CYTHON_FALLTHROUGH;
- case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FrozenList", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FrozenList", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_FrozenList") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v___pyx_type = values[0];
- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
- __pyx_v___pyx_state = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FrozenList", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._frozenlist.__pyx_unpickle_FrozenList", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_11_frozenlist___pyx_unpickle_FrozenList(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_11_frozenlist___pyx_unpickle_FrozenList(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_v___pyx_PickleError = 0;
- PyObject *__pyx_v___pyx_result = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle_FrozenList", 0);
-
- /* "(tree fragment)":4
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- * if __pyx_checksum != 0x949a143: # <<<<<<<<<<<<<<
- * from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x949a143 = (_items, frozen))" % __pyx_checksum)
- */
- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x949a143) != 0);
- if (__pyx_t_1) {
-
- /* "(tree fragment)":5
- * cdef object __pyx_result
- * if __pyx_checksum != 0x949a143:
- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x949a143 = (_items, frozen))" % __pyx_checksum)
- * __pyx_result = FrozenList.__new__(__pyx_type)
- */
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_n_s_PickleError);
- __Pyx_GIVEREF(__pyx_n_s_PickleError);
- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_2);
- __pyx_v___pyx_PickleError = __pyx_t_2;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "(tree fragment)":6
- * if __pyx_checksum != 0x949a143:
- * from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x949a143 = (_items, frozen))" % __pyx_checksum) # <<<<<<<<<<<<<<
- * __pyx_result = FrozenList.__new__(__pyx_type)
- * if __pyx_state is not None:
- */
- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x94, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_INCREF(__pyx_v___pyx_PickleError);
- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 6, __pyx_L1_error)
-
- /* "(tree fragment)":4
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- * if __pyx_checksum != 0x949a143: # <<<<<<<<<<<<<<
- * from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x949a143 = (_items, frozen))" % __pyx_checksum)
- */
- }
-
- /* "(tree fragment)":7
- * from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x949a143 = (_items, frozen))" % __pyx_checksum)
- * __pyx_result = FrozenList.__new__(__pyx_type) # <<<<<<<<<<<<<<
- * if __pyx_state is not None:
- * __pyx_unpickle_FrozenList__set_state( __pyx_result, __pyx_state)
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7aiohttp_11_frozenlist_FrozenList), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v___pyx_result = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x949a143 = (_items, frozen))" % __pyx_checksum)
- * __pyx_result = FrozenList.__new__(__pyx_type)
- * if __pyx_state is not None: # <<<<<<<<<<<<<<
- * __pyx_unpickle_FrozenList__set_state( __pyx_result, __pyx_state)
- * return __pyx_result
- */
- __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_6 = (__pyx_t_1 != 0);
- if (__pyx_t_6) {
-
- /* "(tree fragment)":9
- * __pyx_result = FrozenList.__new__(__pyx_type)
- * if __pyx_state is not None:
- * __pyx_unpickle_FrozenList__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<<
- * return __pyx_result
- * cdef __pyx_unpickle_FrozenList__set_state(FrozenList __pyx_result, tuple __pyx_state):
- */
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
- __pyx_t_3 = __pyx_f_7aiohttp_11_frozenlist___pyx_unpickle_FrozenList__set_state(((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x949a143 = (_items, frozen))" % __pyx_checksum)
- * __pyx_result = FrozenList.__new__(__pyx_type)
- * if __pyx_state is not None: # <<<<<<<<<<<<<<
- * __pyx_unpickle_FrozenList__set_state( __pyx_result, __pyx_state)
- * return __pyx_result
- */
- }
-
- /* "(tree fragment)":10
- * if __pyx_state is not None:
- * __pyx_unpickle_FrozenList__set_state( __pyx_result, __pyx_state)
- * return __pyx_result # <<<<<<<<<<<<<<
- * cdef __pyx_unpickle_FrozenList__set_state(FrozenList __pyx_result, tuple __pyx_state):
- * __pyx_result._items = __pyx_state[0]; __pyx_result.frozen = __pyx_state[1]
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v___pyx_result);
- __pyx_r = __pyx_v___pyx_result;
- goto __pyx_L0;
-
- /* "(tree fragment)":1
- * def __pyx_unpickle_FrozenList(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("aiohttp._frozenlist.__pyx_unpickle_FrozenList", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v___pyx_PickleError);
- __Pyx_XDECREF(__pyx_v___pyx_result);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":11
- * __pyx_unpickle_FrozenList__set_state( __pyx_result, __pyx_state)
- * return __pyx_result
- * cdef __pyx_unpickle_FrozenList__set_state(FrozenList __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_result._items = __pyx_state[0]; __pyx_result.frozen = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- */
-
-static PyObject *__pyx_f_7aiohttp_11_frozenlist___pyx_unpickle_FrozenList__set_state(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- Py_ssize_t __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle_FrozenList__set_state", 0);
-
- /* "(tree fragment)":12
- * return __pyx_result
- * cdef __pyx_unpickle_FrozenList__set_state(FrozenList __pyx_result, tuple __pyx_state):
- * __pyx_result._items = __pyx_state[0]; __pyx_result.frozen = __pyx_state[1] # <<<<<<<<<<<<<<
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- * __pyx_result.__dict__.update(__pyx_state[2])
- */
- if (unlikely(__pyx_v___pyx_state == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 12, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v___pyx_result->_items);
- __Pyx_DECREF(__pyx_v___pyx_result->_items);
- __pyx_v___pyx_result->_items = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
- if (unlikely(__pyx_v___pyx_state == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 12, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v___pyx_result->frozen = __pyx_t_2;
-
- /* "(tree fragment)":13
- * cdef __pyx_unpickle_FrozenList__set_state(FrozenList __pyx_result, tuple __pyx_state):
- * __pyx_result._items = __pyx_state[0]; __pyx_result.frozen = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
- * __pyx_result.__dict__.update(__pyx_state[2])
- */
- if (unlikely(__pyx_v___pyx_state == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(1, 13, __pyx_L1_error)
- }
- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_4 = ((__pyx_t_3 > 2) != 0);
- if (__pyx_t_4) {
- } else {
- __pyx_t_2 = __pyx_t_4;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_5 = (__pyx_t_4 != 0);
- __pyx_t_2 = __pyx_t_5;
- __pyx_L4_bool_binop_done:;
- if (__pyx_t_2) {
-
- /* "(tree fragment)":14
- * __pyx_result._items = __pyx_state[0]; __pyx_result.frozen = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<<
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(__pyx_v___pyx_state == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 14, __pyx_L1_error)
- }
- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "(tree fragment)":13
- * cdef __pyx_unpickle_FrozenList__set_state(FrozenList __pyx_result, tuple __pyx_state):
- * __pyx_result._items = __pyx_state[0]; __pyx_result.frozen = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
- * __pyx_result.__dict__.update(__pyx_state[2])
- */
- }
-
- /* "(tree fragment)":11
- * __pyx_unpickle_FrozenList__set_state( __pyx_result, __pyx_state)
- * return __pyx_result
- * cdef __pyx_unpickle_FrozenList__set_state(FrozenList __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_result._items = __pyx_state[0]; __pyx_result.frozen = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("aiohttp._frozenlist.__pyx_unpickle_FrozenList__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static struct __pyx_vtabstruct_7aiohttp_11_frozenlist_FrozenList __pyx_vtable_7aiohttp_11_frozenlist_FrozenList;
-
-static PyObject *__pyx_tp_new_7aiohttp_11_frozenlist_FrozenList(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *p;
- PyObject *o;
- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
- o = (*t->tp_alloc)(t, 0);
- } else {
- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
- }
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)o);
- p->__pyx_vtab = __pyx_vtabptr_7aiohttp_11_frozenlist_FrozenList;
- p->_items = ((PyObject*)Py_None); Py_INCREF(Py_None);
- return o;
-}
-
-static void __pyx_tp_dealloc_7aiohttp_11_frozenlist_FrozenList(PyObject *o) {
- struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *p = (struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)o;
- #if CYTHON_USE_TP_FINALIZE
- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
- if (PyObject_CallFinalizerFromDealloc(o)) return;
- }
- #endif
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->_items);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_7aiohttp_11_frozenlist_FrozenList(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *p = (struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)o;
- if (p->_items) {
- e = (*v)(p->_items, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_7aiohttp_11_frozenlist_FrozenList(PyObject *o) {
- PyObject* tmp;
- struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *p = (struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *)o;
- tmp = ((PyObject*)p->_items);
- p->_items = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *__pyx_sq_item_7aiohttp_11_frozenlist_FrozenList(PyObject *o, Py_ssize_t i) {
- PyObject *r;
- PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
- r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
- Py_DECREF(x);
- return r;
-}
-
-static int __pyx_mp_ass_subscript_7aiohttp_11_frozenlist_FrozenList(PyObject *o, PyObject *i, PyObject *v) {
- if (v) {
- return __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_7__setitem__(o, i, v);
- }
- else {
- return __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_9__delitem__(o, i);
- }
-}
-
-static PyObject *__pyx_getprop_7aiohttp_11_frozenlist_10FrozenList_frozen(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_6frozen_1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_7aiohttp_11_frozenlist_FrozenList[] = {
- {"freeze", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_3freeze, METH_NOARGS, 0},
- {"__reversed__", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_15__reversed__, METH_NOARGS, 0},
- {"insert", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_19insert, METH_VARARGS|METH_KEYWORDS, 0},
- {"index", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_25index, METH_O, 0},
- {"remove", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_27remove, METH_O, 0},
- {"clear", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_29clear, METH_NOARGS, 0},
- {"extend", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_31extend, METH_O, 0},
- {"reverse", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_33reverse, METH_NOARGS, 0},
- {"pop", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_35pop, METH_VARARGS|METH_KEYWORDS, 0},
- {"append", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_37append, METH_O, 0},
- {"count", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_39count, METH_O, 0},
- {"__reduce_cython__", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_43__reduce_cython__, METH_NOARGS, 0},
- {"__setstate_cython__", (PyCFunction)__pyx_pw_7aiohttp_11_frozenlist_10FrozenList_45__setstate_cython__, METH_O, 0},
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_7aiohttp_11_frozenlist_FrozenList[] = {
- {(char *)"frozen", __pyx_getprop_7aiohttp_11_frozenlist_10FrozenList_frozen, 0, (char *)0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PyNumberMethods __pyx_tp_as_number_FrozenList = {
- 0, /*nb_add*/
- 0, /*nb_subtract*/
- 0, /*nb_multiply*/
- #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
- 0, /*nb_divide*/
- #endif
- 0, /*nb_remainder*/
- 0, /*nb_divmod*/
- 0, /*nb_power*/
- 0, /*nb_negative*/
- 0, /*nb_positive*/
- 0, /*nb_absolute*/
- 0, /*nb_nonzero*/
- 0, /*nb_invert*/
- 0, /*nb_lshift*/
- 0, /*nb_rshift*/
- 0, /*nb_and*/
- 0, /*nb_xor*/
- 0, /*nb_or*/
- #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
- 0, /*nb_coerce*/
- #endif
- 0, /*nb_int*/
- #if PY_MAJOR_VERSION < 3
- 0, /*nb_long*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*nb_float*/
- #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
- 0, /*nb_oct*/
- #endif
- #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
- 0, /*nb_hex*/
- #endif
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_23__iadd__, /*nb_inplace_add*/
- 0, /*nb_inplace_subtract*/
- 0, /*nb_inplace_multiply*/
- #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
- 0, /*nb_inplace_divide*/
- #endif
- 0, /*nb_inplace_remainder*/
- 0, /*nb_inplace_power*/
- 0, /*nb_inplace_lshift*/
- 0, /*nb_inplace_rshift*/
- 0, /*nb_inplace_and*/
- 0, /*nb_inplace_xor*/
- 0, /*nb_inplace_or*/
- 0, /*nb_floor_divide*/
- 0, /*nb_true_divide*/
- 0, /*nb_inplace_floor_divide*/
- 0, /*nb_inplace_true_divide*/
- 0, /*nb_index*/
- #if PY_VERSION_HEX >= 0x03050000
- 0, /*nb_matrix_multiply*/
- #endif
- #if PY_VERSION_HEX >= 0x03050000
- 0, /*nb_inplace_matrix_multiply*/
- #endif
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_FrozenList = {
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_11__len__, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- __pyx_sq_item_7aiohttp_11_frozenlist_FrozenList, /*sq_item*/
- 0, /*sq_slice*/
- 0, /*sq_ass_item*/
- 0, /*sq_ass_slice*/
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_21__contains__, /*sq_contains*/
- 0, /*sq_inplace_concat*/
- 0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_FrozenList = {
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_11__len__, /*mp_length*/
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_5__getitem__, /*mp_subscript*/
- __pyx_mp_ass_subscript_7aiohttp_11_frozenlist_FrozenList, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_7aiohttp_11_frozenlist_FrozenList = {
- PyVarObject_HEAD_INIT(0, 0)
- "aiohttp._frozenlist.FrozenList", /*tp_name*/
- sizeof(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_7aiohttp_11_frozenlist_FrozenList, /*tp_dealloc*/
- #if PY_VERSION_HEX < 0x030800b4
- 0, /*tp_print*/
- #endif
- #if PY_VERSION_HEX >= 0x030800b4
- 0, /*tp_vectorcall_offset*/
- #endif
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #endif
- #if PY_MAJOR_VERSION >= 3
- 0, /*tp_as_async*/
- #endif
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_41__repr__, /*tp_repr*/
- &__pyx_tp_as_number_FrozenList, /*tp_as_number*/
- &__pyx_tp_as_sequence_FrozenList, /*tp_as_sequence*/
- &__pyx_tp_as_mapping_FrozenList, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_7aiohttp_11_frozenlist_FrozenList, /*tp_traverse*/
- __pyx_tp_clear_7aiohttp_11_frozenlist_FrozenList, /*tp_clear*/
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_17__richcmp__, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_13__iter__, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_7aiohttp_11_frozenlist_FrozenList, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_7aiohttp_11_frozenlist_FrozenList, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- __pyx_pw_7aiohttp_11_frozenlist_10FrozenList_1__init__, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_7aiohttp_11_frozenlist_FrozenList, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- 0, /*tp_version_tag*/
- #if PY_VERSION_HEX >= 0x030400a1
- 0, /*tp_finalize*/
- #endif
- #if PY_VERSION_HEX >= 0x030800b1
- 0, /*tp_vectorcall*/
- #endif
- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
- 0, /*tp_print*/
- #endif
-};
-
-static PyMethodDef __pyx_methods[] = {
- {0, 0, 0, 0}
-};
-
-#if PY_MAJOR_VERSION >= 3
-#if CYTHON_PEP489_MULTI_PHASE_INIT
-static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
-static int __pyx_pymod_exec__frozenlist(PyObject* module); /*proto*/
-static PyModuleDef_Slot __pyx_moduledef_slots[] = {
- {Py_mod_create, (void*)__pyx_pymod_create},
- {Py_mod_exec, (void*)__pyx_pymod_exec__frozenlist},
- {0, NULL}
-};
-#endif
-
-static struct PyModuleDef __pyx_moduledef = {
- PyModuleDef_HEAD_INIT,
- "_frozenlist",
- 0, /* m_doc */
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- 0, /* m_size */
- #else
- -1, /* m_size */
- #endif
- __pyx_methods /* m_methods */,
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- __pyx_moduledef_slots, /* m_slots */
- #else
- NULL, /* m_reload */
- #endif
- NULL, /* m_traverse */
- NULL, /* m_clear */
- NULL /* m_free */
-};
-#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
- #define CYTHON_SMALL_CODE __attribute__((cold))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
-
-static __Pyx_StringTabEntry __pyx_string_tab[] = {
- {&__pyx_kp_u_Cannot_modify_frozen_list, __pyx_k_Cannot_modify_frozen_list, sizeof(__pyx_k_Cannot_modify_frozen_list), 0, 1, 0, 0},
- {&__pyx_n_s_FrozenList, __pyx_k_FrozenList, sizeof(__pyx_k_FrozenList), 0, 0, 1, 1},
- {&__pyx_kp_u_FrozenList_frozen_r, __pyx_k_FrozenList_frozen_r, sizeof(__pyx_k_FrozenList_frozen_r), 0, 1, 0, 0},
- {&__pyx_kp_s_Incompatible_checksums_s_vs_0x94, __pyx_k_Incompatible_checksums_s_vs_0x94, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x94), 0, 0, 1, 0},
- {&__pyx_n_s_MutableSequence, __pyx_k_MutableSequence, sizeof(__pyx_k_MutableSequence), 0, 0, 1, 1},
- {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
- {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
- {&__pyx_n_s_aiohttp__frozenlist, __pyx_k_aiohttp__frozenlist, sizeof(__pyx_k_aiohttp__frozenlist), 0, 0, 1, 1},
- {&__pyx_n_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1},
- {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
- {&__pyx_n_s_collections_abc, __pyx_k_collections_abc, sizeof(__pyx_k_collections_abc), 0, 0, 1, 1},
- {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1},
- {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
- {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
- {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
- {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
- {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
- {&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1},
- {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
- {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1},
- {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
- {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
- {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
- {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
- {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1},
- {&__pyx_n_s_pos, __pyx_k_pos, sizeof(__pyx_k_pos), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_unpickle_FrozenList, __pyx_k_pyx_unpickle_FrozenList, sizeof(__pyx_k_pyx_unpickle_FrozenList), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
- {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
- {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
- {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
- {&__pyx_n_s_register, __pyx_k_register, sizeof(__pyx_k_register), 0, 0, 1, 1},
- {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1},
- {&__pyx_n_s_reversed, __pyx_k_reversed, sizeof(__pyx_k_reversed), 0, 0, 1, 1},
- {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
- {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
- {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
- {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
- {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
- {0, 0, 0, 0, 0, 0, 0}
-};
-static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
- __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 19, __pyx_L1_error)
- return 0;
- __pyx_L1_error:;
- return -1;
-}
-
-static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
-
- /* "aiohttp/_frozenlist.pyx":19
- * cdef object _check_frozen(self):
- * if self.frozen:
- * raise RuntimeError("Cannot modify frozen list.") # <<<<<<<<<<<<<<
- *
- * cdef inline object _fast_len(self):
- */
- __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_Cannot_modify_frozen_list); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 19, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple_);
- __Pyx_GIVEREF(__pyx_tuple_);
-
- /* "(tree fragment)":1
- * def __pyx_unpickle_FrozenList(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- */
- __pyx_tuple__2 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
- __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FrozenList, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_RefNannyFinishContext();
- return 0;
- __pyx_L1_error:;
- __Pyx_RefNannyFinishContext();
- return -1;
-}
-
-static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
- if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
- __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_int_155820355 = PyInt_FromLong(155820355L); if (unlikely(!__pyx_int_155820355)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
- return 0;
- __pyx_L1_error:;
- return -1;
-}
-
-static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
-
-static int __Pyx_modinit_global_init_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
- /*--- Global init code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_variable_export_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
- /*--- Variable export code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_function_export_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
- /*--- Function export code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_type_init_code(void) {
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
- /*--- Type init code ---*/
- __pyx_vtabptr_7aiohttp_11_frozenlist_FrozenList = &__pyx_vtable_7aiohttp_11_frozenlist_FrozenList;
- __pyx_vtable_7aiohttp_11_frozenlist_FrozenList._check_frozen = (PyObject *(*)(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *))__pyx_f_7aiohttp_11_frozenlist_10FrozenList__check_frozen;
- __pyx_vtable_7aiohttp_11_frozenlist_FrozenList._fast_len = (PyObject *(*)(struct __pyx_obj_7aiohttp_11_frozenlist_FrozenList *))__pyx_f_7aiohttp_11_frozenlist_10FrozenList__fast_len;
- if (PyType_Ready(&__pyx_type_7aiohttp_11_frozenlist_FrozenList) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
- #if PY_VERSION_HEX < 0x030800B1
- __pyx_type_7aiohttp_11_frozenlist_FrozenList.tp_print = 0;
- #endif
- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_7aiohttp_11_frozenlist_FrozenList.tp_dictoffset && __pyx_type_7aiohttp_11_frozenlist_FrozenList.tp_getattro == PyObject_GenericGetAttr)) {
- __pyx_type_7aiohttp_11_frozenlist_FrozenList.tp_getattro = __Pyx_PyObject_GenericGetAttr;
- }
- if (__Pyx_SetVtable(__pyx_type_7aiohttp_11_frozenlist_FrozenList.tp_dict, __pyx_vtabptr_7aiohttp_11_frozenlist_FrozenList) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FrozenList, (PyObject *)&__pyx_type_7aiohttp_11_frozenlist_FrozenList) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_7aiohttp_11_frozenlist_FrozenList) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
- __pyx_ptype_7aiohttp_11_frozenlist_FrozenList = &__pyx_type_7aiohttp_11_frozenlist_FrozenList;
- __Pyx_RefNannyFinishContext();
- return 0;
- __pyx_L1_error:;
- __Pyx_RefNannyFinishContext();
- return -1;
-}
-
-static int __Pyx_modinit_type_import_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
- /*--- Type import code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_variable_import_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
- /*--- Variable import code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_function_import_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
- /*--- Function import code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-
-#ifndef CYTHON_NO_PYINIT_EXPORT
-#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
-#elif PY_MAJOR_VERSION < 3
-#ifdef __cplusplus
-#define __Pyx_PyMODINIT_FUNC extern "C" void
-#else
-#define __Pyx_PyMODINIT_FUNC void
-#endif
-#else
-#ifdef __cplusplus
-#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
-#else
-#define __Pyx_PyMODINIT_FUNC PyObject *
-#endif
-#endif
-
-
-#if PY_MAJOR_VERSION < 3
-__Pyx_PyMODINIT_FUNC init_frozenlist(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC init_frozenlist(void)
-#else
-__Pyx_PyMODINIT_FUNC PyInit__frozenlist(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC PyInit__frozenlist(void)
-#if CYTHON_PEP489_MULTI_PHASE_INIT
-{
- return PyModuleDef_Init(&__pyx_moduledef);
-}
-static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
- #if PY_VERSION_HEX >= 0x030700A1
- static PY_INT64_T main_interpreter_id = -1;
- PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
- if (main_interpreter_id == -1) {
- main_interpreter_id = current_id;
- return (unlikely(current_id == -1)) ? -1 : 0;
- } else if (unlikely(main_interpreter_id != current_id))
- #else
- static PyInterpreterState *main_interpreter = NULL;
- PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
- if (!main_interpreter) {
- main_interpreter = current_interpreter;
- } else if (unlikely(main_interpreter != current_interpreter))
- #endif
- {
- PyErr_SetString(
- PyExc_ImportError,
- "Interpreter change detected - this module can only be loaded into one interpreter per process.");
- return -1;
- }
- return 0;
-}
-static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) {
- PyObject *value = PyObject_GetAttrString(spec, from_name);
- int result = 0;
- if (likely(value)) {
- if (allow_none || value != Py_None) {
- result = PyDict_SetItemString(moddict, to_name, value);
- }
- Py_DECREF(value);
- } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
- PyErr_Clear();
- } else {
- result = -1;
- }
- return result;
-}
-static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
- PyObject *module = NULL, *moddict, *modname;
- if (__Pyx_check_single_interpreter())
- return NULL;
- if (__pyx_m)
- return __Pyx_NewRef(__pyx_m);
- modname = PyObject_GetAttrString(spec, "name");
- if (unlikely(!modname)) goto bad;
- module = PyModule_NewObject(modname);
- Py_DECREF(modname);
- if (unlikely(!module)) goto bad;
- moddict = PyModule_GetDict(module);
- if (unlikely(!moddict)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
- return module;
-bad:
- Py_XDECREF(module);
- return NULL;
-}
-
-
-static CYTHON_SMALL_CODE int __pyx_pymod_exec__frozenlist(PyObject *__pyx_pyinit_module)
-#endif
-#endif
-{
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m) {
- if (__pyx_m == __pyx_pyinit_module) return 0;
- PyErr_SetString(PyExc_RuntimeError, "Module '_frozenlist' has already been imported. Re-initialisation is not supported.");
- return -1;
- }
- #elif PY_MAJOR_VERSION >= 3
- if (__pyx_m) return __Pyx_NewRef(__pyx_m);
- #endif
- #if CYTHON_REFNANNY
-__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
-if (!__Pyx_RefNanny) {
- PyErr_Clear();
- __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
- if (!__Pyx_RefNanny)
- Py_FatalError("failed to import 'refnanny' module");
-}
-#endif
- __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__frozenlist(void)", 0);
- if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #ifdef __Pxy_PyFrame_Initialize_Offsets
- __Pxy_PyFrame_Initialize_Offsets();
- #endif
- __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
- #ifdef __Pyx_CyFunction_USED
- if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_FusedFunction_USED
- if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_Coroutine_USED
- if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_Generator_USED
- if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_AsyncGen_USED
- if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_StopAsyncIteration_USED
- if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- /*--- Library function declarations ---*/
- /*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
- PyEval_InitThreads();
- #endif
- #endif
- /*--- Module creation code ---*/
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- __pyx_m = __pyx_pyinit_module;
- Py_INCREF(__pyx_m);
- #else
- #if PY_MAJOR_VERSION < 3
- __pyx_m = Py_InitModule4("_frozenlist", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
- #else
- __pyx_m = PyModule_Create(&__pyx_moduledef);
- #endif
- if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_d);
- __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_b);
- __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_cython_runtime);
- if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
- /*--- Initialize various global constants etc. ---*/
- if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
- if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- if (__pyx_module_is_main_aiohttp___frozenlist) {
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- }
- #if PY_MAJOR_VERSION >= 3
- {
- PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
- if (!PyDict_GetItemString(modules, "aiohttp._frozenlist")) {
- if (unlikely(PyDict_SetItemString(modules, "aiohttp._frozenlist", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
- }
- }
- #endif
- /*--- Builtin init code ---*/
- if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- /*--- Constants init code ---*/
- if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- /*--- Global type/function init code ---*/
- (void)__Pyx_modinit_global_init_code();
- (void)__Pyx_modinit_variable_export_code();
- (void)__Pyx_modinit_function_export_code();
- if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
- (void)__Pyx_modinit_type_import_code();
- (void)__Pyx_modinit_variable_import_code();
- (void)__Pyx_modinit_function_import_code();
- /*--- Execution code ---*/
- #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
- if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
-
- /* "aiohttp/_frozenlist.pyx":1
- * from collections.abc import MutableSequence # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_s_MutableSequence);
- __Pyx_GIVEREF(__pyx_n_s_MutableSequence);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_MutableSequence);
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_collections_abc, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_MutableSequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MutableSequence, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_frozenlist.pyx":108
- *
- *
- * MutableSequence.register(FrozenList) # <<<<<<<<<<<<<<
- */
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MutableSequence); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_register); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_ptype_7aiohttp_11_frozenlist_FrozenList)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "(tree fragment)":1
- * def __pyx_unpickle_FrozenList(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- */
- __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7aiohttp_11_frozenlist_1__pyx_unpickle_FrozenList, NULL, __pyx_n_s_aiohttp__frozenlist); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FrozenList, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_frozenlist.pyx":1
- * from collections.abc import MutableSequence # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /*--- Wrapped vars code ---*/
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- if (__pyx_m) {
- if (__pyx_d) {
- __Pyx_AddTraceback("init aiohttp._frozenlist", __pyx_clineno, __pyx_lineno, __pyx_filename);
- }
- Py_CLEAR(__pyx_m);
- } else if (!PyErr_Occurred()) {
- PyErr_SetString(PyExc_ImportError, "init aiohttp._frozenlist");
- }
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- return (__pyx_m != NULL) ? 0 : -1;
- #elif PY_MAJOR_VERSION >= 3
- return __pyx_m;
- #else
- return;
- #endif
-}
-
-/* --- Runtime support code --- */
-/* Refnanny */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
- PyObject *m = NULL, *p = NULL;
- void *r = NULL;
- m = PyImport_ImportModule(modname);
- if (!m) goto end;
- p = PyObject_GetAttrString(m, "RefNannyAPI");
- if (!p) goto end;
- r = PyLong_AsVoidPtr(p);
-end:
- Py_XDECREF(p);
- Py_XDECREF(m);
- return (__Pyx_RefNannyAPIStruct *)r;
-}
-#endif
-
-/* PyObjectGetAttrStr */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
- PyTypeObject* tp = Py_TYPE(obj);
- if (likely(tp->tp_getattro))
- return tp->tp_getattro(obj, attr_name);
-#if PY_MAJOR_VERSION < 3
- if (likely(tp->tp_getattr))
- return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
-#endif
- return PyObject_GetAttr(obj, attr_name);
-}
-#endif
-
-/* GetBuiltinName */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
- PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
- if (unlikely(!result)) {
- PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
- "name '%U' is not defined", name);
-#else
- "name '%.200s' is not defined", PyString_AS_STRING(name));
-#endif
- }
- return result;
-}
-
-/* RaiseDoubleKeywords */
-static void __Pyx_RaiseDoubleKeywordsError(
- const char* func_name,
- PyObject* kw_name)
-{
- PyErr_Format(PyExc_TypeError,
- #if PY_MAJOR_VERSION >= 3
- "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
- #else
- "%s() got multiple values for keyword argument '%s'", func_name,
- PyString_AsString(kw_name));
- #endif
-}
-
-/* ParseKeywords */
-static int __Pyx_ParseOptionalKeywords(
- PyObject *kwds,
- PyObject **argnames[],
- PyObject *kwds2,
- PyObject *values[],
- Py_ssize_t num_pos_args,
- const char* function_name)
-{
- PyObject *key = 0, *value = 0;
- Py_ssize_t pos = 0;
- PyObject*** name;
- PyObject*** first_kw_arg = argnames + num_pos_args;
- while (PyDict_Next(kwds, &pos, &key, &value)) {
- name = first_kw_arg;
- while (*name && (**name != key)) name++;
- if (*name) {
- values[name-argnames] = value;
- continue;
- }
- name = first_kw_arg;
- #if PY_MAJOR_VERSION < 3
- if (likely(PyString_Check(key))) {
- while (*name) {
- if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
- && _PyString_Eq(**name, key)) {
- values[name-argnames] = value;
- break;
- }
- name++;
- }
- if (*name) continue;
- else {
- PyObject*** argname = argnames;
- while (argname != first_kw_arg) {
- if ((**argname == key) || (
- (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
- && _PyString_Eq(**argname, key))) {
- goto arg_passed_twice;
- }
- argname++;
- }
- }
- } else
- #endif
- if (likely(PyUnicode_Check(key))) {
- while (*name) {
- int cmp = (**name == key) ? 0 :
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
- (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
- #endif
- PyUnicode_Compare(**name, key);
- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
- if (cmp == 0) {
- values[name-argnames] = value;
- break;
- }
- name++;
- }
- if (*name) continue;
- else {
- PyObject*** argname = argnames;
- while (argname != first_kw_arg) {
- int cmp = (**argname == key) ? 0 :
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
- (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
- #endif
- PyUnicode_Compare(**argname, key);
- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
- if (cmp == 0) goto arg_passed_twice;
- argname++;
- }
- }
- } else
- goto invalid_keyword_type;
- if (kwds2) {
- if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
- } else {
- goto invalid_keyword;
- }
- }
- return 0;
-arg_passed_twice:
- __Pyx_RaiseDoubleKeywordsError(function_name, key);
- goto bad;
-invalid_keyword_type:
- PyErr_Format(PyExc_TypeError,
- "%.200s() keywords must be strings", function_name);
- goto bad;
-invalid_keyword:
- PyErr_Format(PyExc_TypeError,
- #if PY_MAJOR_VERSION < 3
- "%.200s() got an unexpected keyword argument '%.200s'",
- function_name, PyString_AsString(key));
- #else
- "%s() got an unexpected keyword argument '%U'",
- function_name, key);
- #endif
-bad:
- return -1;
-}
-
-/* RaiseArgTupleInvalid */
-static void __Pyx_RaiseArgtupleInvalid(
- const char* func_name,
- int exact,
- Py_ssize_t num_min,
- Py_ssize_t num_max,
- Py_ssize_t num_found)
-{
- Py_ssize_t num_expected;
- const char *more_or_less;
- if (num_found < num_min) {
- num_expected = num_min;
- more_or_less = "at least";
- } else {
- num_expected = num_max;
- more_or_less = "at most";
- }
- if (exact) {
- more_or_less = "exactly";
- }
- PyErr_Format(PyExc_TypeError,
- "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
- func_name, more_or_less, num_expected,
- (num_expected == 1) ? "" : "s", num_found);
-}
-
-/* PyObjectCall */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
- PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
- if (unlikely(!call))
- return PyObject_Call(func, arg, kw);
- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
- return NULL;
- result = (*call)(func, arg, kw);
- Py_LeaveRecursiveCall();
- if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
- PyErr_SetString(
- PyExc_SystemError,
- "NULL result without error in PyObject_Call");
- }
- return result;
-}
-#endif
-
-/* PyErrFetchRestore */
-#if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- tmp_type = tstate->curexc_type;
- tmp_value = tstate->curexc_value;
- tmp_tb = tstate->curexc_traceback;
- tstate->curexc_type = type;
- tstate->curexc_value = value;
- tstate->curexc_traceback = tb;
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-}
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- *type = tstate->curexc_type;
- *value = tstate->curexc_value;
- *tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
-}
-#endif
-
-/* RaiseException */
-#if PY_MAJOR_VERSION < 3
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
- CYTHON_UNUSED PyObject *cause) {
- __Pyx_PyThreadState_declare
- Py_XINCREF(type);
- if (!value || value == Py_None)
- value = NULL;
- else
- Py_INCREF(value);
- if (!tb || tb == Py_None)
- tb = NULL;
- else {
- Py_INCREF(tb);
- if (!PyTraceBack_Check(tb)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: arg 3 must be a traceback or None");
- goto raise_error;
- }
- }
- if (PyType_Check(type)) {
-#if CYTHON_COMPILING_IN_PYPY
- if (!value) {
- Py_INCREF(Py_None);
- value = Py_None;
- }
-#endif
- PyErr_NormalizeException(&type, &value, &tb);
- } else {
- if (value) {
- PyErr_SetString(PyExc_TypeError,
- "instance exception may not have a separate value");
- goto raise_error;
- }
- value = type;
- type = (PyObject*) Py_TYPE(type);
- Py_INCREF(type);
- if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: exception class must be a subclass of BaseException");
- goto raise_error;
- }
- }
- __Pyx_PyThreadState_assign
- __Pyx_ErrRestore(type, value, tb);
- return;
-raise_error:
- Py_XDECREF(value);
- Py_XDECREF(type);
- Py_XDECREF(tb);
- return;
-}
-#else
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
- PyObject* owned_instance = NULL;
- if (tb == Py_None) {
- tb = 0;
- } else if (tb && !PyTraceBack_Check(tb)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: arg 3 must be a traceback or None");
- goto bad;
- }
- if (value == Py_None)
- value = 0;
- if (PyExceptionInstance_Check(type)) {
- if (value) {
- PyErr_SetString(PyExc_TypeError,
- "instance exception may not have a separate value");
- goto bad;
- }
- value = type;
- type = (PyObject*) Py_TYPE(value);
- } else if (PyExceptionClass_Check(type)) {
- PyObject *instance_class = NULL;
- if (value && PyExceptionInstance_Check(value)) {
- instance_class = (PyObject*) Py_TYPE(value);
- if (instance_class != type) {
- int is_subclass = PyObject_IsSubclass(instance_class, type);
- if (!is_subclass) {
- instance_class = NULL;
- } else if (unlikely(is_subclass == -1)) {
- goto bad;
- } else {
- type = instance_class;
- }
- }
- }
- if (!instance_class) {
- PyObject *args;
- if (!value)
- args = PyTuple_New(0);
- else if (PyTuple_Check(value)) {
- Py_INCREF(value);
- args = value;
- } else
- args = PyTuple_Pack(1, value);
- if (!args)
- goto bad;
- owned_instance = PyObject_Call(type, args, NULL);
- Py_DECREF(args);
- if (!owned_instance)
- goto bad;
- value = owned_instance;
- if (!PyExceptionInstance_Check(value)) {
- PyErr_Format(PyExc_TypeError,
- "calling %R should have returned an instance of "
- "BaseException, not %R",
- type, Py_TYPE(value));
- goto bad;
- }
- }
- } else {
- PyErr_SetString(PyExc_TypeError,
- "raise: exception class must be a subclass of BaseException");
- goto bad;
- }
- if (cause) {
- PyObject *fixed_cause;
- if (cause == Py_None) {
- fixed_cause = NULL;
- } else if (PyExceptionClass_Check(cause)) {
- fixed_cause = PyObject_CallObject(cause, NULL);
- if (fixed_cause == NULL)
- goto bad;
- } else if (PyExceptionInstance_Check(cause)) {
- fixed_cause = cause;
- Py_INCREF(fixed_cause);
- } else {
- PyErr_SetString(PyExc_TypeError,
- "exception causes must derive from "
- "BaseException");
- goto bad;
- }
- PyException_SetCause(value, fixed_cause);
- }
- PyErr_SetObject(type, value);
- if (tb) {
-#if CYTHON_COMPILING_IN_PYPY
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
- Py_INCREF(tb);
- PyErr_Restore(tmp_type, tmp_value, tb);
- Py_XDECREF(tmp_tb);
-#else
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- PyObject* tmp_tb = tstate->curexc_traceback;
- if (tb != tmp_tb) {
- Py_INCREF(tb);
- tstate->curexc_traceback = tb;
- Py_XDECREF(tmp_tb);
- }
-#endif
- }
-bad:
- Py_XDECREF(owned_instance);
- return;
-}
-#endif
-
-/* GetItemInt */
-static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
- PyObject *r;
- if (!j) return NULL;
- r = PyObject_GetItem(o, j);
- Py_DECREF(j);
- return r;
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- Py_ssize_t wrapped_i = i;
- if (wraparound & unlikely(i < 0)) {
- wrapped_i += PyList_GET_SIZE(o);
- }
- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
- PyObject *r = PyList_GET_ITEM(o, wrapped_i);
- Py_INCREF(r);
- return r;
- }
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-#else
- return PySequence_GetItem(o, i);
-#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- Py_ssize_t wrapped_i = i;
- if (wraparound & unlikely(i < 0)) {
- wrapped_i += PyTuple_GET_SIZE(o);
- }
- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
- PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
- Py_INCREF(r);
- return r;
- }
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-#else
- return PySequence_GetItem(o, i);
-#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
- if (is_list || PyList_CheckExact(o)) {
- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
- PyObject *r = PyList_GET_ITEM(o, n);
- Py_INCREF(r);
- return r;
- }
- }
- else if (PyTuple_CheckExact(o)) {
- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
- PyObject *r = PyTuple_GET_ITEM(o, n);
- Py_INCREF(r);
- return r;
- }
- } else {
- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
- if (likely(m && m->sq_item)) {
- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
- Py_ssize_t l = m->sq_length(o);
- if (likely(l >= 0)) {
- i += l;
- } else {
- if (!PyErr_ExceptionMatches(PyExc_OverflowError))
- return NULL;
- PyErr_Clear();
- }
- }
- return m->sq_item(o, i);
- }
- }
-#else
- if (is_list || PySequence_Check(o)) {
- return PySequence_GetItem(o, i);
- }
-#endif
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-}
-
-/* ObjectGetItem */
-#if CYTHON_USE_TYPE_SLOTS
-static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
- PyObject *runerr;
- Py_ssize_t key_value;
- PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence;
- if (unlikely(!(m && m->sq_item))) {
- PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name);
- return NULL;
- }
- key_value = __Pyx_PyIndex_AsSsize_t(index);
- if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
- return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
- }
- if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
- PyErr_Clear();
- PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name);
- }
- return NULL;
-}
-static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
- PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping;
- if (likely(m && m->mp_subscript)) {
- return m->mp_subscript(obj, key);
- }
- return __Pyx_PyObject_GetIndex(obj, key);
-}
-#endif
-
-/* PyFunctionFastCall */
-#if CYTHON_FAST_PYCALL
-static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
- PyObject *globals) {
- PyFrameObject *f;
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- PyObject **fastlocals;
- Py_ssize_t i;
- PyObject *result;
- assert(globals != NULL);
- /* XXX Perhaps we should create a specialized
- PyFrame_New() that doesn't take locals, but does
- take builtins without sanity checking them.
- */
- assert(tstate != NULL);
- f = PyFrame_New(tstate, co, globals, NULL);
- if (f == NULL) {
- return NULL;
- }
- fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
- for (i = 0; i < na; i++) {
- Py_INCREF(*args);
- fastlocals[i] = *args++;
- }
- result = PyEval_EvalFrameEx(f,0);
- ++tstate->recursion_depth;
- Py_DECREF(f);
- --tstate->recursion_depth;
- return result;
-}
-#if 1 || PY_VERSION_HEX < 0x030600B1
-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
- PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
- PyObject *globals = PyFunction_GET_GLOBALS(func);
- PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
- PyObject *closure;
-#if PY_MAJOR_VERSION >= 3
- PyObject *kwdefs;
-#endif
- PyObject *kwtuple, **k;
- PyObject **d;
- Py_ssize_t nd;
- Py_ssize_t nk;
- PyObject *result;
- assert(kwargs == NULL || PyDict_Check(kwargs));
- nk = kwargs ? PyDict_Size(kwargs) : 0;
- if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
- return NULL;
- }
- if (
-#if PY_MAJOR_VERSION >= 3
- co->co_kwonlyargcount == 0 &&
-#endif
- likely(kwargs == NULL || nk == 0) &&
- co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
- if (argdefs == NULL && co->co_argcount == nargs) {
- result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
- goto done;
- }
- else if (nargs == 0 && argdefs != NULL
- && co->co_argcount == Py_SIZE(argdefs)) {
- /* function called with no arguments, but all parameters have
- a default value: use default values as arguments .*/
- args = &PyTuple_GET_ITEM(argdefs, 0);
- result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
- goto done;
- }
- }
- if (kwargs != NULL) {
- Py_ssize_t pos, i;
- kwtuple = PyTuple_New(2 * nk);
- if (kwtuple == NULL) {
- result = NULL;
- goto done;
- }
- k = &PyTuple_GET_ITEM(kwtuple, 0);
- pos = i = 0;
- while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
- Py_INCREF(k[i]);
- Py_INCREF(k[i+1]);
- i += 2;
- }
- nk = i / 2;
- }
- else {
- kwtuple = NULL;
- k = NULL;
- }
- closure = PyFunction_GET_CLOSURE(func);
-#if PY_MAJOR_VERSION >= 3
- kwdefs = PyFunction_GET_KW_DEFAULTS(func);
-#endif
- if (argdefs != NULL) {
- d = &PyTuple_GET_ITEM(argdefs, 0);
- nd = Py_SIZE(argdefs);
- }
- else {
- d = NULL;
- nd = 0;
- }
-#if PY_MAJOR_VERSION >= 3
- result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
- args, (int)nargs,
- k, (int)nk,
- d, (int)nd, kwdefs, closure);
-#else
- result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
- args, (int)nargs,
- k, (int)nk,
- d, (int)nd, closure);
-#endif
- Py_XDECREF(kwtuple);
-done:
- Py_LeaveRecursiveCall();
- return result;
-}
-#endif
-#endif
-
-/* PyObjectCallMethO */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
- PyObject *self, *result;
- PyCFunction cfunc;
- cfunc = PyCFunction_GET_FUNCTION(func);
- self = PyCFunction_GET_SELF(func);
- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
- return NULL;
- result = cfunc(self, arg);
- Py_LeaveRecursiveCall();
- if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
- PyErr_SetString(
- PyExc_SystemError,
- "NULL result without error in PyObject_Call");
- }
- return result;
-}
-#endif
-
-/* PyObjectCallNoArg */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
-#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(func)) {
- return __Pyx_PyFunction_FastCall(func, NULL, 0);
- }
-#endif
-#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
-#else
- if (likely(PyCFunction_Check(func)))
-#endif
- {
- if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
- return __Pyx_PyObject_CallMethO(func, NULL);
- }
- }
- return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
-}
-#endif
-
-/* PyCFunctionFastCall */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
- PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
- PyCFunction meth = PyCFunction_GET_FUNCTION(func);
- PyObject *self = PyCFunction_GET_SELF(func);
- int flags = PyCFunction_GET_FLAGS(func);
- assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
- assert(nargs >= 0);
- assert(nargs == 0 || args != NULL);
- /* _PyCFunction_FastCallDict() must not be called with an exception set,
- because it may clear it (directly or indirectly) and so the
- caller loses its exception */
- assert(!PyErr_Occurred());
- if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
- } else {
- return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
- }
-}
-#endif
-
-/* PyObjectCallOneArg */
-#if CYTHON_COMPILING_IN_CPYTHON
-static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
- PyObject *result;
- PyObject *args = PyTuple_New(1);
- if (unlikely(!args)) return NULL;
- Py_INCREF(arg);
- PyTuple_SET_ITEM(args, 0, arg);
- result = __Pyx_PyObject_Call(func, args, NULL);
- Py_DECREF(args);
- return result;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(func)) {
- return __Pyx_PyFunction_FastCall(func, &arg, 1);
- }
-#endif
- if (likely(PyCFunction_Check(func))) {
- if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
- return __Pyx_PyObject_CallMethO(func, arg);
-#if CYTHON_FAST_PYCCALL
- } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
- return __Pyx_PyCFunction_FastCall(func, &arg, 1);
-#endif
- }
- }
- return __Pyx__PyObject_CallOneArg(func, arg);
-}
-#else
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
- PyObject *result;
- PyObject *args = PyTuple_Pack(1, arg);
- if (unlikely(!args)) return NULL;
- result = __Pyx_PyObject_Call(func, args, NULL);
- Py_DECREF(args);
- return result;
-}
-#endif
-
-/* PyIntCompare */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
- if (op1 == op2) {
- Py_RETURN_TRUE;
- }
- #if PY_MAJOR_VERSION < 3
- if (likely(PyInt_CheckExact(op1))) {
- const long b = intval;
- long a = PyInt_AS_LONG(op1);
- if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
- }
- #endif
- #if CYTHON_USE_PYLONG_INTERNALS
- if (likely(PyLong_CheckExact(op1))) {
- int unequal;
- unsigned long uintval;
- Py_ssize_t size = Py_SIZE(op1);
- const digit* digits = ((PyLongObject*)op1)->ob_digit;
- if (intval == 0) {
- if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
- } else if (intval < 0) {
- if (size >= 0)
- Py_RETURN_FALSE;
- intval = -intval;
- size = -size;
- } else {
- if (size <= 0)
- Py_RETURN_FALSE;
- }
- uintval = (unsigned long) intval;
-#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
- if (uintval >> (PyLong_SHIFT * 4)) {
- unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
- | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
- } else
-#endif
-#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
- if (uintval >> (PyLong_SHIFT * 3)) {
- unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
- | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
- } else
-#endif
-#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
- if (uintval >> (PyLong_SHIFT * 2)) {
- unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
- | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
- } else
-#endif
-#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
- if (uintval >> (PyLong_SHIFT * 1)) {
- unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
- | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
- } else
-#endif
- unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
- if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
- }
- #endif
- if (PyFloat_CheckExact(op1)) {
- const long b = intval;
- double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
- }
- return (
- PyObject_RichCompare(op1, op2, Py_EQ));
-}
-
-/* PyObjectCall2Args */
-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
- PyObject *args, *result = NULL;
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(function)) {
- PyObject *args[2] = {arg1, arg2};
- return __Pyx_PyFunction_FastCall(function, args, 2);
- }
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(function)) {
- PyObject *args[2] = {arg1, arg2};
- return __Pyx_PyCFunction_FastCall(function, args, 2);
- }
- #endif
- args = PyTuple_New(2);
- if (unlikely(!args)) goto done;
- Py_INCREF(arg1);
- PyTuple_SET_ITEM(args, 0, arg1);
- Py_INCREF(arg2);
- PyTuple_SET_ITEM(args, 1, arg2);
- Py_INCREF(function);
- result = __Pyx_PyObject_Call(function, args, NULL);
- Py_DECREF(args);
- Py_DECREF(function);
-done:
- return result;
-}
-
-/* PyObjectGetMethod */
-static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
- PyObject *attr;
-#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
- PyTypeObject *tp = Py_TYPE(obj);
- PyObject *descr;
- descrgetfunc f = NULL;
- PyObject **dictptr, *dict;
- int meth_found = 0;
- assert (*method == NULL);
- if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
- attr = __Pyx_PyObject_GetAttrStr(obj, name);
- goto try_unpack;
- }
- if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
- return 0;
- }
- descr = _PyType_Lookup(tp, name);
- if (likely(descr != NULL)) {
- Py_INCREF(descr);
-#if PY_MAJOR_VERSION >= 3
- #ifdef __Pyx_CyFunction_USED
- if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
- #else
- if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
- #endif
-#else
- #ifdef __Pyx_CyFunction_USED
- if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
- #else
- if (likely(PyFunction_Check(descr)))
- #endif
-#endif
- {
- meth_found = 1;
- } else {
- f = Py_TYPE(descr)->tp_descr_get;
- if (f != NULL && PyDescr_IsData(descr)) {
- attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
- Py_DECREF(descr);
- goto try_unpack;
- }
- }
- }
- dictptr = _PyObject_GetDictPtr(obj);
- if (dictptr != NULL && (dict = *dictptr) != NULL) {
- Py_INCREF(dict);
- attr = __Pyx_PyDict_GetItemStr(dict, name);
- if (attr != NULL) {
- Py_INCREF(attr);
- Py_DECREF(dict);
- Py_XDECREF(descr);
- goto try_unpack;
- }
- Py_DECREF(dict);
- }
- if (meth_found) {
- *method = descr;
- return 1;
- }
- if (f != NULL) {
- attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
- Py_DECREF(descr);
- goto try_unpack;
- }
- if (descr != NULL) {
- *method = descr;
- return 0;
- }
- PyErr_Format(PyExc_AttributeError,
-#if PY_MAJOR_VERSION >= 3
- "'%.50s' object has no attribute '%U'",
- tp->tp_name, name);
-#else
- "'%.50s' object has no attribute '%.400s'",
- tp->tp_name, PyString_AS_STRING(name));
-#endif
- return 0;
-#else
- attr = __Pyx_PyObject_GetAttrStr(obj, name);
- goto try_unpack;
-#endif
-try_unpack:
-#if CYTHON_UNPACK_METHODS
- if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
- PyObject *function = PyMethod_GET_FUNCTION(attr);
- Py_INCREF(function);
- Py_DECREF(attr);
- *method = function;
- return 1;
- }
-#endif
- *method = attr;
- return 0;
-}
-
-/* PyObjectCallMethod1 */
-static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
- PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
- Py_DECREF(method);
- return result;
-}
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
- PyObject *method = NULL, *result;
- int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
- if (likely(is_method)) {
- result = __Pyx_PyObject_Call2Args(method, obj, arg);
- Py_DECREF(method);
- return result;
- }
- if (unlikely(!method)) return NULL;
- return __Pyx__PyObject_CallMethod1(method, arg);
-}
-
-/* pop_index */
-static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix) {
- PyObject *r;
- if (unlikely(!py_ix)) return NULL;
- r = __Pyx__PyObject_PopIndex(L, py_ix);
- Py_DECREF(py_ix);
- return r;
-}
-static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix) {
- return __Pyx_PyObject_CallMethod1(L, __pyx_n_s_pop, py_ix);
-}
-#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
-static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix) {
- Py_ssize_t size = PyList_GET_SIZE(L);
- if (likely(size > (((PyListObject*)L)->allocated >> 1))) {
- Py_ssize_t cix = ix;
- if (cix < 0) {
- cix += size;
- }
- if (likely(__Pyx_is_valid_index(cix, size))) {
- PyObject* v = PyList_GET_ITEM(L, cix);
- __Pyx_SET_SIZE(L, Py_SIZE(L) - 1);
- size -= 1;
- memmove(&PyList_GET_ITEM(L, cix), &PyList_GET_ITEM(L, cix+1), (size_t)(size-cix)*sizeof(PyObject*));
- return v;
- }
- }
- if (py_ix == Py_None) {
- return __Pyx__PyObject_PopNewIndex(L, PyInt_FromSsize_t(ix));
- } else {
- return __Pyx__PyObject_PopIndex(L, py_ix);
- }
-}
-#endif
-
-/* PyErrExceptionMatches */
-#if CYTHON_FAST_THREAD_STATE
-static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
- Py_ssize_t i, n;
- n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
- for (i=0; icurexc_type;
- if (exc_type == err) return 1;
- if (unlikely(!exc_type)) return 0;
- if (unlikely(PyTuple_Check(err)))
- return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
- return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
-}
-#endif
-
-/* GetAttr */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
-#if CYTHON_USE_TYPE_SLOTS
-#if PY_MAJOR_VERSION >= 3
- if (likely(PyUnicode_Check(n)))
-#else
- if (likely(PyString_Check(n)))
-#endif
- return __Pyx_PyObject_GetAttrStr(o, n);
-#endif
- return PyObject_GetAttr(o, n);
-}
-
-/* GetAttr3 */
-static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
- return NULL;
- __Pyx_PyErr_Clear();
- Py_INCREF(d);
- return d;
-}
-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
- PyObject *r = __Pyx_GetAttr(o, n);
- return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
-}
-
-/* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
- PyObject *dict = Py_TYPE(obj)->tp_dict;
- return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
-}
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
- PyObject **dictptr = NULL;
- Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
- if (offset) {
-#if CYTHON_COMPILING_IN_CPYTHON
- dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
-#else
- dictptr = _PyObject_GetDictPtr(obj);
-#endif
- }
- return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
-}
-static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
- PyObject *dict = Py_TYPE(obj)->tp_dict;
- if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
- return 0;
- return obj_dict_version == __Pyx_get_object_dict_version(obj);
-}
-#endif
-
-/* GetModuleGlobalName */
-#if CYTHON_USE_DICT_VERSIONS
-static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
-#else
-static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
-#endif
-{
- PyObject *result;
-#if !CYTHON_AVOID_BORROWED_REFS
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
- result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- } else if (unlikely(PyErr_Occurred())) {
- return NULL;
- }
-#else
- result = PyDict_GetItem(__pyx_d, name);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- }
-#endif
-#else
- result = PyObject_GetItem(__pyx_d, name);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- }
- PyErr_Clear();
-#endif
- return __Pyx_GetBuiltinName(name);
-}
-
-/* Import */
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
- PyObject *empty_list = 0;
- PyObject *module = 0;
- PyObject *global_dict = 0;
- PyObject *empty_dict = 0;
- PyObject *list;
- #if PY_MAJOR_VERSION < 3
- PyObject *py_import;
- py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
- if (!py_import)
- goto bad;
- #endif
- if (from_list)
- list = from_list;
- else {
- empty_list = PyList_New(0);
- if (!empty_list)
- goto bad;
- list = empty_list;
- }
- global_dict = PyModule_GetDict(__pyx_m);
- if (!global_dict)
- goto bad;
- empty_dict = PyDict_New();
- if (!empty_dict)
- goto bad;
- {
- #if PY_MAJOR_VERSION >= 3
- if (level == -1) {
- if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) {
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, 1);
- if (!module) {
- if (!PyErr_ExceptionMatches(PyExc_ImportError))
- goto bad;
- PyErr_Clear();
- }
- }
- level = 0;
- }
- #endif
- if (!module) {
- #if PY_MAJOR_VERSION < 3
- PyObject *py_level = PyInt_FromLong(level);
- if (!py_level)
- goto bad;
- module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
- Py_DECREF(py_level);
- #else
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, level);
- #endif
- }
- }
-bad:
- #if PY_MAJOR_VERSION < 3
- Py_XDECREF(py_import);
- #endif
- Py_XDECREF(empty_list);
- Py_XDECREF(empty_dict);
- return module;
-}
-
-/* ImportFrom */
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
- PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
- if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
- PyErr_Format(PyExc_ImportError,
- #if PY_MAJOR_VERSION < 3
- "cannot import name %.230s", PyString_AS_STRING(name));
- #else
- "cannot import name %S", name);
- #endif
- }
- return value;
-}
-
-/* HasAttr */
-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
- PyObject *r;
- if (unlikely(!__Pyx_PyBaseString_Check(n))) {
- PyErr_SetString(PyExc_TypeError,
- "hasattr(): attribute name must be string");
- return -1;
- }
- r = __Pyx_GetAttr(o, n);
- if (unlikely(!r)) {
- PyErr_Clear();
- return 0;
- } else {
- Py_DECREF(r);
- return 1;
- }
-}
-
-/* PyObject_GenericGetAttrNoDict */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
- PyErr_Format(PyExc_AttributeError,
-#if PY_MAJOR_VERSION >= 3
- "'%.50s' object has no attribute '%U'",
- tp->tp_name, attr_name);
-#else
- "'%.50s' object has no attribute '%.400s'",
- tp->tp_name, PyString_AS_STRING(attr_name));
-#endif
- return NULL;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
- PyObject *descr;
- PyTypeObject *tp = Py_TYPE(obj);
- if (unlikely(!PyString_Check(attr_name))) {
- return PyObject_GenericGetAttr(obj, attr_name);
- }
- assert(!tp->tp_dictoffset);
- descr = _PyType_Lookup(tp, attr_name);
- if (unlikely(!descr)) {
- return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
- }
- Py_INCREF(descr);
- #if PY_MAJOR_VERSION < 3
- if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
- #endif
- {
- descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
- if (unlikely(f)) {
- PyObject *res = f(descr, obj, (PyObject *)tp);
- Py_DECREF(descr);
- return res;
- }
- }
- return descr;
-}
-#endif
-
-/* PyObject_GenericGetAttr */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
- if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
- return PyObject_GenericGetAttr(obj, attr_name);
- }
- return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
-}
-#endif
-
-/* SetVTable */
-static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
-#if PY_VERSION_HEX >= 0x02070000
- PyObject *ob = PyCapsule_New(vtable, 0, 0);
-#else
- PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
-#endif
- if (!ob)
- goto bad;
- if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
- goto bad;
- Py_DECREF(ob);
- return 0;
-bad:
- Py_XDECREF(ob);
- return -1;
-}
-
-/* PyObjectGetAttrStrNoError */
-static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
- __Pyx_PyErr_Clear();
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
- PyObject *result;
-#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
- PyTypeObject* tp = Py_TYPE(obj);
- if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
- return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
- }
-#endif
- result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
- if (unlikely(!result)) {
- __Pyx_PyObject_GetAttrStr_ClearAttributeError();
- }
- return result;
-}
-
-/* SetupReduce */
-static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
- int ret;
- PyObject *name_attr;
- name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name);
- if (likely(name_attr)) {
- ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
- } else {
- ret = -1;
- }
- if (unlikely(ret < 0)) {
- PyErr_Clear();
- ret = 0;
- }
- Py_XDECREF(name_attr);
- return ret;
-}
-static int __Pyx_setup_reduce(PyObject* type_obj) {
- int ret = 0;
- PyObject *object_reduce = NULL;
- PyObject *object_reduce_ex = NULL;
- PyObject *reduce = NULL;
- PyObject *reduce_ex = NULL;
- PyObject *reduce_cython = NULL;
- PyObject *setstate = NULL;
- PyObject *setstate_cython = NULL;
-#if CYTHON_USE_PYTYPE_LOOKUP
- if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
-#else
- if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
-#endif
-#if CYTHON_USE_PYTYPE_LOOKUP
- object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
-#else
- object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
-#endif
- reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
- if (reduce_ex == object_reduce_ex) {
-#if CYTHON_USE_PYTYPE_LOOKUP
- object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
-#else
- object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
-#endif
- reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
- if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
- reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
- if (likely(reduce_cython)) {
- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- } else if (reduce == object_reduce || PyErr_Occurred()) {
- goto __PYX_BAD;
- }
- setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
- if (!setstate) PyErr_Clear();
- if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
- setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
- if (likely(setstate_cython)) {
- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- } else if (!setstate || PyErr_Occurred()) {
- goto __PYX_BAD;
- }
- }
- PyType_Modified((PyTypeObject*)type_obj);
- }
- }
- goto __PYX_GOOD;
-__PYX_BAD:
- if (!PyErr_Occurred())
- PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
- ret = -1;
-__PYX_GOOD:
-#if !CYTHON_USE_PYTYPE_LOOKUP
- Py_XDECREF(object_reduce);
- Py_XDECREF(object_reduce_ex);
-#endif
- Py_XDECREF(reduce);
- Py_XDECREF(reduce_ex);
- Py_XDECREF(reduce_cython);
- Py_XDECREF(setstate);
- Py_XDECREF(setstate_cython);
- return ret;
-}
-
-/* CLineInTraceback */
-#ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {
- PyObject *use_cline;
- PyObject *ptype, *pvalue, *ptraceback;
-#if CYTHON_COMPILING_IN_CPYTHON
- PyObject **cython_runtime_dict;
-#endif
- if (unlikely(!__pyx_cython_runtime)) {
- return c_line;
- }
- __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
-#if CYTHON_COMPILING_IN_CPYTHON
- cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
- if (likely(cython_runtime_dict)) {
- __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
- use_cline, *cython_runtime_dict,
- __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
- } else
-#endif
- {
- PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
- if (use_cline_obj) {
- use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
- Py_DECREF(use_cline_obj);
- } else {
- PyErr_Clear();
- use_cline = NULL;
- }
- }
- if (!use_cline) {
- c_line = 0;
- PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
- }
- else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
- c_line = 0;
- }
- __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
- return c_line;
-}
-#endif
-
-/* CodeObjectCache */
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
- int start = 0, mid = 0, end = count - 1;
- if (end >= 0 && code_line > entries[end].code_line) {
- return count;
- }
- while (start < end) {
- mid = start + (end - start) / 2;
- if (code_line < entries[mid].code_line) {
- end = mid;
- } else if (code_line > entries[mid].code_line) {
- start = mid + 1;
- } else {
- return mid;
- }
- }
- if (code_line <= entries[mid].code_line) {
- return mid;
- } else {
- return mid + 1;
- }
-}
-static PyCodeObject *__pyx_find_code_object(int code_line) {
- PyCodeObject* code_object;
- int pos;
- if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
- return NULL;
- }
- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
- if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
- return NULL;
- }
- code_object = __pyx_code_cache.entries[pos].code_object;
- Py_INCREF(code_object);
- return code_object;
-}
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
- int pos, i;
- __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
- if (unlikely(!code_line)) {
- return;
- }
- if (unlikely(!entries)) {
- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
- if (likely(entries)) {
- __pyx_code_cache.entries = entries;
- __pyx_code_cache.max_count = 64;
- __pyx_code_cache.count = 1;
- entries[0].code_line = code_line;
- entries[0].code_object = code_object;
- Py_INCREF(code_object);
- }
- return;
- }
- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
- if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
- PyCodeObject* tmp = entries[pos].code_object;
- entries[pos].code_object = code_object;
- Py_DECREF(tmp);
- return;
- }
- if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
- int new_max = __pyx_code_cache.max_count + 64;
- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
- __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
- if (unlikely(!entries)) {
- return;
- }
- __pyx_code_cache.entries = entries;
- __pyx_code_cache.max_count = new_max;
- }
- for (i=__pyx_code_cache.count; i>pos; i--) {
- entries[i] = entries[i-1];
- }
- entries[pos].code_line = code_line;
- entries[pos].code_object = code_object;
- __pyx_code_cache.count++;
- Py_INCREF(code_object);
-}
-
-/* AddTraceback */
-#include "compile.h"
-#include "frameobject.h"
-#include "traceback.h"
-static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
- const char *funcname, int c_line,
- int py_line, const char *filename) {
- PyCodeObject *py_code = 0;
- PyObject *py_srcfile = 0;
- PyObject *py_funcname = 0;
- #if PY_MAJOR_VERSION < 3
- py_srcfile = PyString_FromString(filename);
- #else
- py_srcfile = PyUnicode_FromString(filename);
- #endif
- if (!py_srcfile) goto bad;
- if (c_line) {
- #if PY_MAJOR_VERSION < 3
- py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
- #else
- py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
- #endif
- }
- else {
- #if PY_MAJOR_VERSION < 3
- py_funcname = PyString_FromString(funcname);
- #else
- py_funcname = PyUnicode_FromString(funcname);
- #endif
- }
- if (!py_funcname) goto bad;
- py_code = __Pyx_PyCode_New(
- 0,
- 0,
- 0,
- 0,
- 0,
- __pyx_empty_bytes, /*PyObject *code,*/
- __pyx_empty_tuple, /*PyObject *consts,*/
- __pyx_empty_tuple, /*PyObject *names,*/
- __pyx_empty_tuple, /*PyObject *varnames,*/
- __pyx_empty_tuple, /*PyObject *freevars,*/
- __pyx_empty_tuple, /*PyObject *cellvars,*/
- py_srcfile, /*PyObject *filename,*/
- py_funcname, /*PyObject *name,*/
- py_line,
- __pyx_empty_bytes /*PyObject *lnotab*/
- );
- Py_DECREF(py_srcfile);
- Py_DECREF(py_funcname);
- return py_code;
-bad:
- Py_XDECREF(py_srcfile);
- Py_XDECREF(py_funcname);
- return NULL;
-}
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
- int py_line, const char *filename) {
- PyCodeObject *py_code = 0;
- PyFrameObject *py_frame = 0;
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- if (c_line) {
- c_line = __Pyx_CLineForTraceback(tstate, c_line);
- }
- py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
- if (!py_code) {
- py_code = __Pyx_CreateCodeObjectForTraceback(
- funcname, c_line, py_line, filename);
- if (!py_code) goto bad;
- __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
- }
- py_frame = PyFrame_New(
- tstate, /*PyThreadState *tstate,*/
- py_code, /*PyCodeObject *code,*/
- __pyx_d, /*PyObject *globals,*/
- 0 /*PyObject *locals*/
- );
- if (!py_frame) goto bad;
- __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
- PyTraceBack_Here(py_frame);
-bad:
- Py_XDECREF(py_code);
- Py_XDECREF(py_frame);
-}
-
-/* CIntToPy */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
- const int is_unsigned = neg_one > const_zero;
- if (is_unsigned) {
- if (sizeof(int) < sizeof(long)) {
- return PyInt_FromLong((long) value);
- } else if (sizeof(int) <= sizeof(unsigned long)) {
- return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
- }
- } else {
- if (sizeof(int) <= sizeof(long)) {
- return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
- return PyLong_FromLongLong((PY_LONG_LONG) value);
-#endif
- }
- }
- {
- int one = 1; int little = (int)*(unsigned char *)&one;
- unsigned char *bytes = (unsigned char *)&value;
- return _PyLong_FromByteArray(bytes, sizeof(int),
- little, !is_unsigned);
- }
-}
-
-/* CIntFromPyVerify */
-#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
-#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
-#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
- {\
- func_type value = func_value;\
- if (sizeof(target_type) < sizeof(func_type)) {\
- if (unlikely(value != (func_type) (target_type) value)) {\
- func_type zero = 0;\
- if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
- return (target_type) -1;\
- if (is_unsigned && unlikely(value < zero))\
- goto raise_neg_overflow;\
- else\
- goto raise_overflow;\
- }\
- }\
- return (target_type) value;\
- }
-
-/* CIntToPy */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
- const int is_unsigned = neg_one > const_zero;
- if (is_unsigned) {
- if (sizeof(long) < sizeof(long)) {
- return PyInt_FromLong((long) value);
- } else if (sizeof(long) <= sizeof(unsigned long)) {
- return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
- }
- } else {
- if (sizeof(long) <= sizeof(long)) {
- return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
- return PyLong_FromLongLong((PY_LONG_LONG) value);
-#endif
- }
- }
- {
- int one = 1; int little = (int)*(unsigned char *)&one;
- unsigned char *bytes = (unsigned char *)&value;
- return _PyLong_FromByteArray(bytes, sizeof(long),
- little, !is_unsigned);
- }
-}
-
-/* CIntFromPy */
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- if (sizeof(long) < sizeof(long)) {
- __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
- } else {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- goto raise_neg_overflow;
- }
- return (long) val;
- }
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (long) 0;
- case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
- case 2:
- if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
- return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
- }
- }
- break;
- case 3:
- if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
- return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
- }
- }
- break;
- case 4:
- if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
- return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
- }
- }
- break;
- }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
- if (unlikely(Py_SIZE(x) < 0)) {
- goto raise_neg_overflow;
- }
-#else
- {
- int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
- if (unlikely(result < 0))
- return (long) -1;
- if (unlikely(result == 1))
- goto raise_neg_overflow;
- }
-#endif
- if (sizeof(long) <= sizeof(unsigned long)) {
- __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
- __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-#endif
- }
- } else {
-#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (long) 0;
- case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
- case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0])
- case -2:
- if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case 2:
- if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case -3:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case 3:
- if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case -4:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case 4:
- if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- }
-#endif
- if (sizeof(long) <= sizeof(long)) {
- __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
- __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
-#endif
- }
- }
- {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
- PyErr_SetString(PyExc_RuntimeError,
- "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
- long val;
- PyObject *v = __Pyx_PyNumber_IntOrLong(x);
- #if PY_MAJOR_VERSION < 3
- if (likely(v) && !PyLong_Check(v)) {
- PyObject *tmp = v;
- v = PyNumber_Long(tmp);
- Py_DECREF(tmp);
- }
- #endif
- if (likely(v)) {
- int one = 1; int is_little = (int)*(unsigned char *)&one;
- unsigned char *bytes = (unsigned char *)&val;
- int ret = _PyLong_AsByteArray((PyLongObject *)v,
- bytes, sizeof(val),
- is_little, !is_unsigned);
- Py_DECREF(v);
- if (likely(!ret))
- return val;
- }
-#endif
- return (long) -1;
- }
- } else {
- long val;
- PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
- if (!tmp) return (long) -1;
- val = __Pyx_PyInt_As_long(tmp);
- Py_DECREF(tmp);
- return val;
- }
-raise_overflow:
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to long");
- return (long) -1;
-raise_neg_overflow:
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to long");
- return (long) -1;
-}
-
-/* CIntFromPy */
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- if (sizeof(int) < sizeof(long)) {
- __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
- } else {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- goto raise_neg_overflow;
- }
- return (int) val;
- }
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (int) 0;
- case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
- case 2:
- if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
- return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
- }
- }
- break;
- case 3:
- if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
- return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
- }
- }
- break;
- case 4:
- if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
- return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
- }
- }
- break;
- }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
- if (unlikely(Py_SIZE(x) < 0)) {
- goto raise_neg_overflow;
- }
-#else
- {
- int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
- if (unlikely(result < 0))
- return (int) -1;
- if (unlikely(result == 1))
- goto raise_neg_overflow;
- }
-#endif
- if (sizeof(int) <= sizeof(unsigned long)) {
- __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
- __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-#endif
- }
- } else {
-#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (int) 0;
- case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
- case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0])
- case -2:
- if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case 2:
- if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case -3:
- if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case 3:
- if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case -4:
- if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case 4:
- if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
- return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- }
-#endif
- if (sizeof(int) <= sizeof(long)) {
- __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
- __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
-#endif
- }
- }
- {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
- PyErr_SetString(PyExc_RuntimeError,
- "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
- int val;
- PyObject *v = __Pyx_PyNumber_IntOrLong(x);
- #if PY_MAJOR_VERSION < 3
- if (likely(v) && !PyLong_Check(v)) {
- PyObject *tmp = v;
- v = PyNumber_Long(tmp);
- Py_DECREF(tmp);
- }
- #endif
- if (likely(v)) {
- int one = 1; int is_little = (int)*(unsigned char *)&one;
- unsigned char *bytes = (unsigned char *)&val;
- int ret = _PyLong_AsByteArray((PyLongObject *)v,
- bytes, sizeof(val),
- is_little, !is_unsigned);
- Py_DECREF(v);
- if (likely(!ret))
- return val;
- }
-#endif
- return (int) -1;
- }
- } else {
- int val;
- PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
- if (!tmp) return (int) -1;
- val = __Pyx_PyInt_As_int(tmp);
- Py_DECREF(tmp);
- return val;
- }
-raise_overflow:
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to int");
- return (int) -1;
-raise_neg_overflow:
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to int");
- return (int) -1;
-}
-
-/* FastTypeChecks */
-#if CYTHON_COMPILING_IN_CPYTHON
-static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
- while (a) {
- a = a->tp_base;
- if (a == b)
- return 1;
- }
- return b == &PyBaseObject_Type;
-}
-static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
- PyObject *mro;
- if (a == b) return 1;
- mro = a->tp_mro;
- if (likely(mro)) {
- Py_ssize_t i, n;
- n = PyTuple_GET_SIZE(mro);
- for (i = 0; i < n; i++) {
- if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
- return 1;
- }
- return 0;
- }
- return __Pyx_InBases(a, b);
-}
-#if PY_MAJOR_VERSION == 2
-static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
- PyObject *exception, *value, *tb;
- int res;
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ErrFetch(&exception, &value, &tb);
- res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
- if (unlikely(res == -1)) {
- PyErr_WriteUnraisable(err);
- res = 0;
- }
- if (!res) {
- res = PyObject_IsSubclass(err, exc_type2);
- if (unlikely(res == -1)) {
- PyErr_WriteUnraisable(err);
- res = 0;
- }
- }
- __Pyx_ErrRestore(exception, value, tb);
- return res;
-}
-#else
-static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
- int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
- if (!res) {
- res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
- }
- return res;
-}
-#endif
-static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
- Py_ssize_t i, n;
- assert(PyExceptionClass_Check(exc_type));
- n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
- for (i=0; ip) {
- #if PY_MAJOR_VERSION < 3
- if (t->is_unicode) {
- *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
- } else if (t->intern) {
- *t->p = PyString_InternFromString(t->s);
- } else {
- *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
- }
- #else
- if (t->is_unicode | t->is_str) {
- if (t->intern) {
- *t->p = PyUnicode_InternFromString(t->s);
- } else if (t->encoding) {
- *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
- } else {
- *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
- }
- } else {
- *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
- }
- #endif
- if (!*t->p)
- return -1;
- if (PyObject_Hash(*t->p) == -1)
- return -1;
- ++t;
- }
- return 0;
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
- return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
-}
-static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
- Py_ssize_t ignore;
- return __Pyx_PyObject_AsStringAndSize(o, &ignore);
-}
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
-#if !CYTHON_PEP393_ENABLED
-static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
- char* defenc_c;
- PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
- if (!defenc) return NULL;
- defenc_c = PyBytes_AS_STRING(defenc);
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- {
- char* end = defenc_c + PyBytes_GET_SIZE(defenc);
- char* c;
- for (c = defenc_c; c < end; c++) {
- if ((unsigned char) (*c) >= 128) {
- PyUnicode_AsASCIIString(o);
- return NULL;
- }
- }
- }
-#endif
- *length = PyBytes_GET_SIZE(defenc);
- return defenc_c;
-}
-#else
-static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
- if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- if (likely(PyUnicode_IS_ASCII(o))) {
- *length = PyUnicode_GET_LENGTH(o);
- return PyUnicode_AsUTF8(o);
- } else {
- PyUnicode_AsASCIIString(o);
- return NULL;
- }
-#else
- return PyUnicode_AsUTF8AndSize(o, length);
-#endif
-}
-#endif
-#endif
-static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
- if (
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- __Pyx_sys_getdefaultencoding_not_ascii &&
-#endif
- PyUnicode_Check(o)) {
- return __Pyx_PyUnicode_AsStringAndSize(o, length);
- } else
-#endif
-#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
- if (PyByteArray_Check(o)) {
- *length = PyByteArray_GET_SIZE(o);
- return PyByteArray_AS_STRING(o);
- } else
-#endif
- {
- char* result;
- int r = PyBytes_AsStringAndSize(o, &result, length);
- if (unlikely(r < 0)) {
- return NULL;
- } else {
- return result;
- }
- }
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
- int is_true = x == Py_True;
- if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
- else return PyObject_IsTrue(x);
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
- int retval;
- if (unlikely(!x)) return -1;
- retval = __Pyx_PyObject_IsTrue(x);
- Py_DECREF(x);
- return retval;
-}
-static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
-#if PY_MAJOR_VERSION >= 3
- if (PyLong_Check(result)) {
- if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
- "__int__ returned non-int (type %.200s). "
- "The ability to return an instance of a strict subclass of int "
- "is deprecated, and may be removed in a future version of Python.",
- Py_TYPE(result)->tp_name)) {
- Py_DECREF(result);
- return NULL;
- }
- return result;
- }
-#endif
- PyErr_Format(PyExc_TypeError,
- "__%.4s__ returned non-%.4s (type %.200s)",
- type_name, type_name, Py_TYPE(result)->tp_name);
- Py_DECREF(result);
- return NULL;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
-#if CYTHON_USE_TYPE_SLOTS
- PyNumberMethods *m;
-#endif
- const char *name = NULL;
- PyObject *res = NULL;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x) || PyLong_Check(x)))
-#else
- if (likely(PyLong_Check(x)))
-#endif
- return __Pyx_NewRef(x);
-#if CYTHON_USE_TYPE_SLOTS
- m = Py_TYPE(x)->tp_as_number;
- #if PY_MAJOR_VERSION < 3
- if (m && m->nb_int) {
- name = "int";
- res = m->nb_int(x);
- }
- else if (m && m->nb_long) {
- name = "long";
- res = m->nb_long(x);
- }
- #else
- if (likely(m && m->nb_int)) {
- name = "int";
- res = m->nb_int(x);
- }
- #endif
-#else
- if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
- res = PyNumber_Int(x);
- }
-#endif
- if (likely(res)) {
-#if PY_MAJOR_VERSION < 3
- if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
-#else
- if (unlikely(!PyLong_CheckExact(res))) {
-#endif
- return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
- }
- }
- else if (!PyErr_Occurred()) {
- PyErr_SetString(PyExc_TypeError,
- "an integer is required");
- }
- return res;
-}
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
- Py_ssize_t ival;
- PyObject *x;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_CheckExact(b))) {
- if (sizeof(Py_ssize_t) >= sizeof(long))
- return PyInt_AS_LONG(b);
- else
- return PyInt_AsSsize_t(b);
- }
-#endif
- if (likely(PyLong_CheckExact(b))) {
- #if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)b)->ob_digit;
- const Py_ssize_t size = Py_SIZE(b);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- ival = likely(size) ? digits[0] : 0;
- if (size == -1) ival = -ival;
- return ival;
- } else {
- switch (size) {
- case 2:
- if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
- return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case -2:
- if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
- return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case 3:
- if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
- return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case -3:
- if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
- return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case 4:
- if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
- return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case -4:
- if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
- return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- }
- }
- #endif
- return PyLong_AsSsize_t(b);
- }
- x = PyNumber_Index(b);
- if (!x) return -1;
- ival = PyInt_AsSsize_t(x);
- Py_DECREF(x);
- return ival;
-}
-static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
- return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
-}
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
- return PyInt_FromSize_t(ival);
-}
-
-
-#endif /* Py_PYTHON_H */
diff --git a/dist/ba_data/python-site-packages/aiohttp/_frozenlist.cp39-win_amd64.pyd b/dist/ba_data/python-site-packages/aiohttp/_frozenlist.cp39-win_amd64.pyd
deleted file mode 100644
index db45bd98..00000000
Binary files a/dist/ba_data/python-site-packages/aiohttp/_frozenlist.cp39-win_amd64.pyd and /dev/null differ
diff --git a/dist/ba_data/python-site-packages/aiohttp/_helpers.c b/dist/ba_data/python-site-packages/aiohttp/_helpers.c
deleted file mode 100644
index e25f5ec9..00000000
--- a/dist/ba_data/python-site-packages/aiohttp/_helpers.c
+++ /dev/null
@@ -1,5433 +0,0 @@
-/* Generated by Cython 0.29.21 */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#ifndef Py_PYTHON_H
- #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
- #error Cython requires Python 2.6+ or Python 3.3+.
-#else
-#define CYTHON_ABI "0_29_21"
-#define CYTHON_HEX_VERSION 0x001D15F0
-#define CYTHON_FUTURE_DIVISION 1
-#include
-#ifndef offsetof
- #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
-#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
- #ifndef __stdcall
- #define __stdcall
- #endif
- #ifndef __cdecl
- #define __cdecl
- #endif
- #ifndef __fastcall
- #define __fastcall
- #endif
-#endif
-#ifndef DL_IMPORT
- #define DL_IMPORT(t) t
-#endif
-#ifndef DL_EXPORT
- #define DL_EXPORT(t) t
-#endif
-#define __PYX_COMMA ,
-#ifndef HAVE_LONG_LONG
- #if PY_VERSION_HEX >= 0x02070000
- #define HAVE_LONG_LONG
- #endif
-#endif
-#ifndef PY_LONG_LONG
- #define PY_LONG_LONG LONG_LONG
-#endif
-#ifndef Py_HUGE_VAL
- #define Py_HUGE_VAL HUGE_VAL
-#endif
-#ifdef PYPY_VERSION
- #define CYTHON_COMPILING_IN_PYPY 1
- #define CYTHON_COMPILING_IN_PYSTON 0
- #define CYTHON_COMPILING_IN_CPYTHON 0
- #undef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 0
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #if PY_VERSION_HEX < 0x03050000
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #elif !defined(CYTHON_USE_ASYNC_SLOTS)
- #define CYTHON_USE_ASYNC_SLOTS 1
- #endif
- #undef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 0
- #undef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 0
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #undef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 1
- #undef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 0
- #undef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 0
- #undef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 0
- #undef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 0
- #undef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT 0
- #undef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE 0
- #undef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS 0
- #undef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK 0
-#elif defined(PYSTON_VERSION)
- #define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 1
- #define CYTHON_COMPILING_IN_CPYTHON 0
- #ifndef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 1
- #endif
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #undef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 0
- #ifndef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 1
- #endif
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #ifndef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 0
- #endif
- #ifndef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 1
- #endif
- #ifndef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 1
- #endif
- #undef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 0
- #undef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 0
- #undef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT 0
- #undef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE 0
- #undef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS 0
- #undef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK 0
-#else
- #define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 0
- #define CYTHON_COMPILING_IN_CPYTHON 1
- #ifndef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 1
- #endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
- #define CYTHON_USE_PYTYPE_LOOKUP 1
- #endif
- #if PY_MAJOR_VERSION < 3
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #elif !defined(CYTHON_USE_ASYNC_SLOTS)
- #define CYTHON_USE_ASYNC_SLOTS 1
- #endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
- #define CYTHON_USE_PYLONG_INTERNALS 1
- #endif
- #ifndef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 1
- #endif
- #ifndef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 1
- #endif
- #if PY_VERSION_HEX < 0x030300F0
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #elif !defined(CYTHON_USE_UNICODE_WRITER)
- #define CYTHON_USE_UNICODE_WRITER 1
- #endif
- #ifndef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 0
- #endif
- #ifndef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 1
- #endif
- #ifndef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 1
- #endif
- #ifndef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 1
- #endif
- #ifndef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 1
- #endif
- #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
- #endif
- #ifndef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
- #endif
- #ifndef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
- #endif
- #ifndef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
- #endif
-#endif
-#if !defined(CYTHON_FAST_PYCCALL)
-#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
-#endif
-#if CYTHON_USE_PYLONG_INTERNALS
- #include "longintrepr.h"
- #undef SHIFT
- #undef BASE
- #undef MASK
- #ifdef SIZEOF_VOID_P
- enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
- #endif
-#endif
-#ifndef __has_attribute
- #define __has_attribute(x) 0
-#endif
-#ifndef __has_cpp_attribute
- #define __has_cpp_attribute(x) 0
-#endif
-#ifndef CYTHON_RESTRICT
- #if defined(__GNUC__)
- #define CYTHON_RESTRICT __restrict__
- #elif defined(_MSC_VER) && _MSC_VER >= 1400
- #define CYTHON_RESTRICT __restrict
- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define CYTHON_RESTRICT restrict
- #else
- #define CYTHON_RESTRICT
- #endif
-#endif
-#ifndef CYTHON_UNUSED
-# if defined(__GNUC__)
-# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-# define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-# define CYTHON_UNUSED
-# endif
-# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
-# define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-# define CYTHON_UNUSED
-# endif
-#endif
-#ifndef CYTHON_MAYBE_UNUSED_VAR
-# if defined(__cplusplus)
- template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
-# else
-# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
-# endif
-#endif
-#ifndef CYTHON_NCP_UNUSED
-# if CYTHON_COMPILING_IN_CPYTHON
-# define CYTHON_NCP_UNUSED
-# else
-# define CYTHON_NCP_UNUSED CYTHON_UNUSED
-# endif
-#endif
-#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
-#ifdef _MSC_VER
- #ifndef _MSC_STDINT_H_
- #if _MSC_VER < 1300
- typedef unsigned char uint8_t;
- typedef unsigned int uint32_t;
- #else
- typedef unsigned __int8 uint8_t;
- typedef unsigned __int32 uint32_t;
- #endif
- #endif
-#else
- #include
-#endif
-#ifndef CYTHON_FALLTHROUGH
- #if defined(__cplusplus) && __cplusplus >= 201103L
- #if __has_cpp_attribute(fallthrough)
- #define CYTHON_FALLTHROUGH [[fallthrough]]
- #elif __has_cpp_attribute(clang::fallthrough)
- #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
- #elif __has_cpp_attribute(gnu::fallthrough)
- #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
- #endif
- #endif
- #ifndef CYTHON_FALLTHROUGH
- #if __has_attribute(fallthrough)
- #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
- #else
- #define CYTHON_FALLTHROUGH
- #endif
- #endif
- #if defined(__clang__ ) && defined(__apple_build_version__)
- #if __apple_build_version__ < 7000000
- #undef CYTHON_FALLTHROUGH
- #define CYTHON_FALLTHROUGH
- #endif
- #endif
-#endif
-
-#ifndef CYTHON_INLINE
- #if defined(__clang__)
- #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
- #elif defined(__GNUC__)
- #define CYTHON_INLINE __inline__
- #elif defined(_MSC_VER)
- #define CYTHON_INLINE __inline
- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define CYTHON_INLINE inline
- #else
- #define CYTHON_INLINE
- #endif
-#endif
-
-#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
- #define Py_OptimizeFlag 0
-#endif
-#define __PYX_BUILD_PY_SSIZE_T "n"
-#define CYTHON_FORMAT_SSIZE_T "z"
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
- #define __Pyx_DefaultClassType PyClass_Type
-#else
- #define __Pyx_BUILTIN_MODULE_NAME "builtins"
-#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-#else
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-#endif
- #define __Pyx_DefaultClassType PyType_Type
-#endif
-#ifndef Py_TPFLAGS_CHECKTYPES
- #define Py_TPFLAGS_CHECKTYPES 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_INDEX
- #define Py_TPFLAGS_HAVE_INDEX 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
- #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_FINALIZE
- #define Py_TPFLAGS_HAVE_FINALIZE 0
-#endif
-#ifndef METH_STACKLESS
- #define METH_STACKLESS 0
-#endif
-#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
- #ifndef METH_FASTCALL
- #define METH_FASTCALL 0x80
- #endif
- typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
- typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
- Py_ssize_t nargs, PyObject *kwnames);
-#else
- #define __Pyx_PyCFunctionFast _PyCFunctionFast
- #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
-#endif
-#if CYTHON_FAST_PYCCALL
-#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
-#else
-#define __Pyx_PyFastCFunction_Check(func) 0
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
- #define PyObject_Malloc(s) PyMem_Malloc(s)
- #define PyObject_Free(p) PyMem_Free(p)
- #define PyObject_Realloc(p) PyMem_Realloc(p)
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
- #define PyMem_RawMalloc(n) PyMem_Malloc(n)
- #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
- #define PyMem_RawFree(p) PyMem_Free(p)
-#endif
-#if CYTHON_COMPILING_IN_PYSTON
- #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
- #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
-#else
- #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
- #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
-#endif
-#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
- #define __Pyx_PyThreadState_Current PyThreadState_GET()
-#elif PY_VERSION_HEX >= 0x03060000
- #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
-#elif PY_VERSION_HEX >= 0x03000000
- #define __Pyx_PyThreadState_Current PyThreadState_GET()
-#else
- #define __Pyx_PyThreadState_Current _PyThreadState_Current
-#endif
-#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
-#include "pythread.h"
-#define Py_tss_NEEDS_INIT 0
-typedef int Py_tss_t;
-static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
- *key = PyThread_create_key();
- return 0;
-}
-static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
- Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
- *key = Py_tss_NEEDS_INIT;
- return key;
-}
-static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
- PyObject_Free(key);
-}
-static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
- return *key != Py_tss_NEEDS_INIT;
-}
-static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
- PyThread_delete_key(*key);
- *key = Py_tss_NEEDS_INIT;
-}
-static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
- return PyThread_set_key_value(*key, value);
-}
-static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
- return PyThread_get_key_value(*key);
-}
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
-#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
-#else
-#define __Pyx_PyDict_NewPresized(n) PyDict_New()
-#endif
-#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
- #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
-#else
- #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
-#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
-#else
-#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name)
-#endif
-#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
- #define CYTHON_PEP393_ENABLED 1
- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
- 0 : _PyUnicode_Ready((PyObject *)(op)))
- #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
- #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
- #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
- #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
- #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
- #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
- #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
- #else
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
- #endif
-#else
- #define CYTHON_PEP393_ENABLED 0
- #define PyUnicode_1BYTE_KIND 1
- #define PyUnicode_2BYTE_KIND 2
- #define PyUnicode_4BYTE_KIND 4
- #define __Pyx_PyUnicode_READY(op) (0)
- #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
- #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
- #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
- #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
- #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
- #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
-#endif
-#if CYTHON_COMPILING_IN_PYPY
- #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
- #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
-#else
- #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
- #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
- PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
- #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
- #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
- #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
-#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
-#else
- #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
-#endif
-#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
- #define PyObject_ASCII(o) PyObject_Repr(o)
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyBaseString_Type PyUnicode_Type
- #define PyStringObject PyUnicodeObject
- #define PyString_Type PyUnicode_Type
- #define PyString_Check PyUnicode_Check
- #define PyString_CheckExact PyUnicode_CheckExact
-#ifndef PyObject_Unicode
- #define PyObject_Unicode PyObject_Str
-#endif
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
- #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
-#else
- #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
- #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
-#endif
-#ifndef PySet_CheckExact
- #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
-#endif
-#if PY_VERSION_HEX >= 0x030900A4
- #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
- #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
-#else
- #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
- #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
-#endif
-#if CYTHON_ASSUME_SAFE_MACROS
- #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
-#else
- #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyIntObject PyLongObject
- #define PyInt_Type PyLong_Type
- #define PyInt_Check(op) PyLong_Check(op)
- #define PyInt_CheckExact(op) PyLong_CheckExact(op)
- #define PyInt_FromString PyLong_FromString
- #define PyInt_FromUnicode PyLong_FromUnicode
- #define PyInt_FromLong PyLong_FromLong
- #define PyInt_FromSize_t PyLong_FromSize_t
- #define PyInt_FromSsize_t PyLong_FromSsize_t
- #define PyInt_AsLong PyLong_AsLong
- #define PyInt_AS_LONG PyLong_AS_LONG
- #define PyInt_AsSsize_t PyLong_AsSsize_t
- #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
- #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
- #define PyNumber_Int PyNumber_Long
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyBoolObject PyLongObject
-#endif
-#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
- #ifndef PyUnicode_InternFromString
- #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
- #endif
-#endif
-#if PY_VERSION_HEX < 0x030200A4
- typedef long Py_hash_t;
- #define __Pyx_PyInt_FromHash_t PyInt_FromLong
- #define __Pyx_PyInt_AsHash_t PyInt_AsLong
-#else
- #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
- #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
-#else
- #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
-#if CYTHON_USE_ASYNC_SLOTS
- #if PY_VERSION_HEX >= 0x030500B1
- #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
- #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
- #else
- #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
- #endif
-#else
- #define __Pyx_PyType_AsAsync(obj) NULL
-#endif
-#ifndef __Pyx_PyAsyncMethodsStruct
- typedef struct {
- unaryfunc am_await;
- unaryfunc am_aiter;
- unaryfunc am_anext;
- } __Pyx_PyAsyncMethodsStruct;
-#endif
-
-#if defined(WIN32) || defined(MS_WINDOWS)
- #define _USE_MATH_DEFINES
-#endif
-#include
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
- float value;
- memset(&value, 0xFF, sizeof(value));
- return value;
-}
-#endif
-#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
-#define __Pyx_truncl trunc
-#else
-#define __Pyx_truncl truncl
-#endif
-
-#define __PYX_MARK_ERR_POS(f_index, lineno) \
- { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
-#define __PYX_ERR(f_index, lineno, Ln_error) \
- { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
-
-#ifndef __PYX_EXTERN_C
- #ifdef __cplusplus
- #define __PYX_EXTERN_C extern "C"
- #else
- #define __PYX_EXTERN_C extern
- #endif
-#endif
-
-#define __PYX_HAVE__aiohttp___helpers
-#define __PYX_HAVE_API__aiohttp___helpers
-/* Early includes */
-#ifdef _OPENMP
-#include
-#endif /* _OPENMP */
-
-#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
-#define CYTHON_WITHOUT_ASSERTIONS
-#endif
-
-typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
- const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
-
-#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
-#define __PYX_DEFAULT_STRING_ENCODING ""
-#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
-#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#define __Pyx_uchar_cast(c) ((unsigned char)c)
-#define __Pyx_long_cast(x) ((long)x)
-#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
- (sizeof(type) < sizeof(Py_ssize_t)) ||\
- (sizeof(type) > sizeof(Py_ssize_t) &&\
- likely(v < (type)PY_SSIZE_T_MAX ||\
- v == (type)PY_SSIZE_T_MAX) &&\
- (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
- v == (type)PY_SSIZE_T_MIN))) ||\
- (sizeof(type) == sizeof(Py_ssize_t) &&\
- (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
- v == (type)PY_SSIZE_T_MAX))) )
-static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
- return (size_t) i < (size_t) limit;
-}
-#if defined (__cplusplus) && __cplusplus >= 201103L
- #include
- #define __Pyx_sst_abs(value) std::abs(value)
-#elif SIZEOF_INT >= SIZEOF_SIZE_T
- #define __Pyx_sst_abs(value) abs(value)
-#elif SIZEOF_LONG >= SIZEOF_SIZE_T
- #define __Pyx_sst_abs(value) labs(value)
-#elif defined (_MSC_VER)
- #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
-#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define __Pyx_sst_abs(value) llabs(value)
-#elif defined (__GNUC__)
- #define __Pyx_sst_abs(value) __builtin_llabs(value)
-#else
- #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
-#endif
-static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
-static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
-#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
-#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
-#define __Pyx_PyBytes_FromString PyBytes_FromString
-#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
- #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#else
- #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
- #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
-#endif
-#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
-#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
-#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
-#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
-#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
-static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
- const Py_UNICODE *u_end = u;
- while (*u_end++) ;
- return (size_t)(u_end - u - 1);
-}
-#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
-#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
-#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
-#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
-#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
-#define __Pyx_PySequence_Tuple(obj)\
- (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
-#if CYTHON_ASSUME_SAFE_MACROS
-#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
-#else
-#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
-#endif
-#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
-#if PY_MAJOR_VERSION >= 3
-#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
-#else
-#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
-#endif
-#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-static int __Pyx_sys_getdefaultencoding_not_ascii;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
- PyObject* sys;
- PyObject* default_encoding = NULL;
- PyObject* ascii_chars_u = NULL;
- PyObject* ascii_chars_b = NULL;
- const char* default_encoding_c;
- sys = PyImport_ImportModule("sys");
- if (!sys) goto bad;
- default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
- Py_DECREF(sys);
- if (!default_encoding) goto bad;
- default_encoding_c = PyBytes_AsString(default_encoding);
- if (!default_encoding_c) goto bad;
- if (strcmp(default_encoding_c, "ascii") == 0) {
- __Pyx_sys_getdefaultencoding_not_ascii = 0;
- } else {
- char ascii_chars[128];
- int c;
- for (c = 0; c < 128; c++) {
- ascii_chars[c] = c;
- }
- __Pyx_sys_getdefaultencoding_not_ascii = 1;
- ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
- if (!ascii_chars_u) goto bad;
- ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
- if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
- PyErr_Format(
- PyExc_ValueError,
- "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
- default_encoding_c);
- goto bad;
- }
- Py_DECREF(ascii_chars_u);
- Py_DECREF(ascii_chars_b);
- }
- Py_DECREF(default_encoding);
- return 0;
-bad:
- Py_XDECREF(default_encoding);
- Py_XDECREF(ascii_chars_u);
- Py_XDECREF(ascii_chars_b);
- return -1;
-}
-#endif
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
-#else
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
-static char* __PYX_DEFAULT_STRING_ENCODING;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
- PyObject* sys;
- PyObject* default_encoding = NULL;
- char* default_encoding_c;
- sys = PyImport_ImportModule("sys");
- if (!sys) goto bad;
- default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
- Py_DECREF(sys);
- if (!default_encoding) goto bad;
- default_encoding_c = PyBytes_AsString(default_encoding);
- if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
- if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
- strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
- Py_DECREF(default_encoding);
- return 0;
-bad:
- Py_XDECREF(default_encoding);
- return -1;
-}
-#endif
-#endif
-
-
-/* Test for GCC > 2.95 */
-#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
- #define likely(x) __builtin_expect(!!(x), 1)
- #define unlikely(x) __builtin_expect(!!(x), 0)
-#else /* !__GNUC__ or GCC < 2.95 */
- #define likely(x) (x)
- #define unlikely(x) (x)
-#endif /* __GNUC__ */
-static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
-
-static PyObject *__pyx_m = NULL;
-static PyObject *__pyx_d;
-static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime = NULL;
-static PyObject *__pyx_empty_tuple;
-static PyObject *__pyx_empty_bytes;
-static PyObject *__pyx_empty_unicode;
-static int __pyx_lineno;
-static int __pyx_clineno = 0;
-static const char * __pyx_cfilenm= __FILE__;
-static const char *__pyx_filename;
-
-
-static const char *__pyx_f[] = {
- "aiohttp\\_helpers.pyx",
- "stringsource",
-};
-
-/*--- Type declarations ---*/
-struct __pyx_obj_7aiohttp_8_helpers_reify;
-
-/* "aiohttp/_helpers.pyx":1
- * cdef class reify: # <<<<<<<<<<<<<<
- * """Use as a class method decorator. It operates almost exactly like
- * the Python `@property` decorator, but it puts the result of the
- */
-struct __pyx_obj_7aiohttp_8_helpers_reify {
- PyObject_HEAD
- PyObject *wrapped;
- PyObject *name;
-};
-
-
-/* --- Runtime support code (head) --- */
-/* Refnanny.proto */
-#ifndef CYTHON_REFNANNY
- #define CYTHON_REFNANNY 0
-#endif
-#if CYTHON_REFNANNY
- typedef struct {
- void (*INCREF)(void*, PyObject*, int);
- void (*DECREF)(void*, PyObject*, int);
- void (*GOTREF)(void*, PyObject*, int);
- void (*GIVEREF)(void*, PyObject*, int);
- void* (*SetupContext)(const char*, int, const char*);
- void (*FinishContext)(void**);
- } __Pyx_RefNannyAPIStruct;
- static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
- static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
- #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
-#ifdef WITH_THREAD
- #define __Pyx_RefNannySetupContext(name, acquire_gil)\
- if (acquire_gil) {\
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
- PyGILState_Release(__pyx_gilstate_save);\
- } else {\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
- }
-#else
- #define __Pyx_RefNannySetupContext(name, acquire_gil)\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
-#endif
- #define __Pyx_RefNannyFinishContext()\
- __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
- #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
- #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
- #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
- #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
-#else
- #define __Pyx_RefNannyDeclarations
- #define __Pyx_RefNannySetupContext(name, acquire_gil)
- #define __Pyx_RefNannyFinishContext()
- #define __Pyx_INCREF(r) Py_INCREF(r)
- #define __Pyx_DECREF(r) Py_DECREF(r)
- #define __Pyx_GOTREF(r)
- #define __Pyx_GIVEREF(r)
- #define __Pyx_XINCREF(r) Py_XINCREF(r)
- #define __Pyx_XDECREF(r) Py_XDECREF(r)
- #define __Pyx_XGOTREF(r)
- #define __Pyx_XGIVEREF(r)
-#endif
-#define __Pyx_XDECREF_SET(r, v) do {\
- PyObject *tmp = (PyObject *) r;\
- r = v; __Pyx_XDECREF(tmp);\
- } while (0)
-#define __Pyx_DECREF_SET(r, v) do {\
- PyObject *tmp = (PyObject *) r;\
- r = v; __Pyx_DECREF(tmp);\
- } while (0)
-#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
-#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
-
-/* PyObjectGetAttrStr.proto */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
-#endif
-
-/* GetBuiltinName.proto */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name);
-
-/* RaiseDoubleKeywords.proto */
-static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
-
-/* ParseKeywords.proto */
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
- PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
- const char* function_name);
-
-/* RaiseArgTupleInvalid.proto */
-static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
- Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
-
-/* GetItemInt.proto */
-#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
- (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
- __Pyx_GetItemInt_Generic(o, to_py_func(i))))
-#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
- (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
- (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
- int is_list, int wraparound, int boundscheck);
-
-/* ObjectGetItem.proto */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
-#else
-#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key)
-#endif
-
-/* GetTopmostException.proto */
-#if CYTHON_USE_EXC_INFO_STACK
-static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
-#endif
-
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred() PyErr_Occurred()
-#endif
-
-/* SaveResetException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-#else
-#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb)
-#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb)
-#endif
-
-/* PyErrExceptionMatches.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
-static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
-#else
-#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
-#endif
-
-/* GetException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb)
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
-#endif
-
-/* PyCFunctionFastCall.proto */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
-#else
-#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
-#endif
-
-/* PyFunctionFastCall.proto */
-#if CYTHON_FAST_PYCALL
-#define __Pyx_PyFunction_FastCall(func, args, nargs)\
- __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
-#if 1 || PY_VERSION_HEX < 0x030600B1
-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
-#else
-#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
-#endif
-#define __Pyx_BUILD_ASSERT_EXPR(cond)\
- (sizeof(char [1 - 2*!(cond)]) - 1)
-#ifndef Py_MEMBER_SIZE
-#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
-#endif
- static size_t __pyx_pyframe_localsplus_offset = 0;
- #include "frameobject.h"
- #define __Pxy_PyFrame_Initialize_Offsets()\
- ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
- (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
- #define __Pyx_PyFrame_GetLocalsplus(frame)\
- (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
-#endif
-
-/* PyObjectCall.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
-#else
-#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
-#endif
-
-/* PyObjectCall2Args.proto */
-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
-
-/* PyObjectCallMethO.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
-#endif
-
-/* RaiseException.proto */
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
-
-/* GetAttr.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
-
-/* GetAttr3.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
-
-/* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
-#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
-#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
-#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
- (version_var) = __PYX_GET_DICT_VERSION(dict);\
- (cache_var) = (value);
-#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
- static PY_UINT64_T __pyx_dict_version = 0;\
- static PyObject *__pyx_dict_cached_value = NULL;\
- if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
- (VAR) = __pyx_dict_cached_value;\
- } else {\
- (VAR) = __pyx_dict_cached_value = (LOOKUP);\
- __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
- }\
-}
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
-static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
-#else
-#define __PYX_GET_DICT_VERSION(dict) (0)
-#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
-#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
-#endif
-
-/* GetModuleGlobalName.proto */
-#if CYTHON_USE_DICT_VERSIONS
-#define __Pyx_GetModuleGlobalName(var, name) {\
- static PY_UINT64_T __pyx_dict_version = 0;\
- static PyObject *__pyx_dict_cached_value = NULL;\
- (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
- (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
- __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
-#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
- PY_UINT64_T __pyx_dict_version;\
- PyObject *__pyx_dict_cached_value;\
- (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
-static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
-#else
-#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
-#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
-static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
-#endif
-
-/* Import.proto */
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
-
-/* ImportFrom.proto */
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
-
-/* HasAttr.proto */
-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
-
-/* PyObject_GenericGetAttrNoDict.proto */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
-#endif
-
-/* PyObject_GenericGetAttr.proto */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
-#endif
-
-/* PyObjectGetAttrStrNoError.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
-
-/* SetupReduce.proto */
-static int __Pyx_setup_reduce(PyObject* type_obj);
-
-/* CLineInTraceback.proto */
-#ifdef CYTHON_CLINE_IN_TRACEBACK
-#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
-#else
-static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
-#endif
-
-/* CodeObjectCache.proto */
-typedef struct {
- PyCodeObject* code_object;
- int code_line;
-} __Pyx_CodeObjectCacheEntry;
-struct __Pyx_CodeObjectCache {
- int count;
- int max_count;
- __Pyx_CodeObjectCacheEntry* entries;
-};
-static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
-static PyCodeObject *__pyx_find_code_object(int code_line);
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
-
-/* AddTraceback.proto */
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
- int py_line, const char *filename);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-/* FastTypeChecks.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
-static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
-#else
-#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
-#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
-#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
-#endif
-#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
-
-/* CheckBinaryVersion.proto */
-static int __Pyx_check_binary_version(void);
-
-/* InitStrings.proto */
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
-
-
-/* Module declarations from 'aiohttp._helpers' */
-static PyTypeObject *__pyx_ptype_7aiohttp_8_helpers_reify = 0;
-static PyObject *__pyx_f_7aiohttp_8_helpers___pyx_unpickle_reify__set_state(struct __pyx_obj_7aiohttp_8_helpers_reify *, PyObject *); /*proto*/
-#define __Pyx_MODULE_NAME "aiohttp._helpers"
-extern int __pyx_module_is_main_aiohttp___helpers;
-int __pyx_module_is_main_aiohttp___helpers = 0;
-
-/* Implementation of 'aiohttp._helpers' */
-static PyObject *__pyx_builtin_KeyError;
-static PyObject *__pyx_builtin_AttributeError;
-static const char __pyx_k_doc[] = "__doc__";
-static const char __pyx_k_new[] = "__new__";
-static const char __pyx_k_dict[] = "__dict__";
-static const char __pyx_k_main[] = "__main__";
-static const char __pyx_k_name[] = "__name__";
-static const char __pyx_k_test[] = "__test__";
-static const char __pyx_k_cache[] = "_cache";
-static const char __pyx_k_reify[] = "reify";
-static const char __pyx_k_import[] = "__import__";
-static const char __pyx_k_pickle[] = "pickle";
-static const char __pyx_k_reduce[] = "__reduce__";
-static const char __pyx_k_update[] = "update";
-static const char __pyx_k_wrapped[] = "wrapped";
-static const char __pyx_k_KeyError[] = "KeyError";
-static const char __pyx_k_getstate[] = "__getstate__";
-static const char __pyx_k_pyx_type[] = "__pyx_type";
-static const char __pyx_k_setstate[] = "__setstate__";
-static const char __pyx_k_pyx_state[] = "__pyx_state";
-static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
-static const char __pyx_k_pyx_result[] = "__pyx_result";
-static const char __pyx_k_PickleError[] = "PickleError";
-static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
-static const char __pyx_k_stringsource[] = "stringsource";
-static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
-static const char __pyx_k_AttributeError[] = "AttributeError";
-static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
-static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
-static const char __pyx_k_aiohttp__helpers[] = "aiohttp._helpers";
-static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
-static const char __pyx_k_pyx_unpickle_reify[] = "__pyx_unpickle_reify";
-static const char __pyx_k_reified_property_is_read_only[] = "reified property is read-only";
-static const char __pyx_k_Incompatible_checksums_s_vs_0x77[] = "Incompatible checksums (%s vs 0x770cb8f = (name, wrapped))";
-static PyObject *__pyx_n_s_AttributeError;
-static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x77;
-static PyObject *__pyx_n_s_KeyError;
-static PyObject *__pyx_n_s_PickleError;
-static PyObject *__pyx_n_s_aiohttp__helpers;
-static PyObject *__pyx_n_s_cache;
-static PyObject *__pyx_n_s_cline_in_traceback;
-static PyObject *__pyx_n_s_dict;
-static PyObject *__pyx_n_s_doc;
-static PyObject *__pyx_n_s_getstate;
-static PyObject *__pyx_n_s_import;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_s_name;
-static PyObject *__pyx_n_s_new;
-static PyObject *__pyx_n_s_pickle;
-static PyObject *__pyx_n_s_pyx_PickleError;
-static PyObject *__pyx_n_s_pyx_checksum;
-static PyObject *__pyx_n_s_pyx_result;
-static PyObject *__pyx_n_s_pyx_state;
-static PyObject *__pyx_n_s_pyx_type;
-static PyObject *__pyx_n_s_pyx_unpickle_reify;
-static PyObject *__pyx_n_s_reduce;
-static PyObject *__pyx_n_s_reduce_cython;
-static PyObject *__pyx_n_s_reduce_ex;
-static PyObject *__pyx_kp_u_reified_property_is_read_only;
-static PyObject *__pyx_n_s_reify;
-static PyObject *__pyx_n_s_setstate;
-static PyObject *__pyx_n_s_setstate_cython;
-static PyObject *__pyx_kp_s_stringsource;
-static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_update;
-static PyObject *__pyx_n_s_wrapped;
-static int __pyx_pf_7aiohttp_8_helpers_5reify___init__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self, PyObject *__pyx_v_wrapped); /* proto */
-static PyObject *__pyx_pf_7aiohttp_8_helpers_5reify_7__doc_____get__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_8_helpers_5reify_2__get__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self, PyObject *__pyx_v_inst, CYTHON_UNUSED PyObject *__pyx_v_owner); /* proto */
-static int __pyx_pf_7aiohttp_8_helpers_5reify_4__set__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_inst, CYTHON_UNUSED PyObject *__pyx_v_value); /* proto */
-static PyObject *__pyx_pf_7aiohttp_8_helpers_5reify_6__reduce_cython__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_8_helpers_5reify_8__setstate_cython__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_7aiohttp_8_helpers___pyx_unpickle_reify(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_tp_new_7aiohttp_8_helpers_reify(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_int_124832655;
-static PyObject *__pyx_tuple_;
-static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_codeobj__3;
-/* Late includes */
-
-/* "aiohttp/_helpers.pyx":13
- * cdef object name
- *
- * def __init__(self, wrapped): # <<<<<<<<<<<<<<
- * self.wrapped = wrapped
- * self.name = wrapped.__name__
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_8_helpers_5reify_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_7aiohttp_8_helpers_5reify_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_wrapped = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_wrapped,0};
- PyObject* values[1] = {0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wrapped)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 13, __pyx_L3_error)
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- }
- __pyx_v_wrapped = values[0];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 13, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._helpers.reify.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_8_helpers_5reify___init__(((struct __pyx_obj_7aiohttp_8_helpers_reify *)__pyx_v_self), __pyx_v_wrapped);
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_8_helpers_5reify___init__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self, PyObject *__pyx_v_wrapped) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
-
- /* "aiohttp/_helpers.pyx":14
- *
- * def __init__(self, wrapped):
- * self.wrapped = wrapped # <<<<<<<<<<<<<<
- * self.name = wrapped.__name__
- *
- */
- __Pyx_INCREF(__pyx_v_wrapped);
- __Pyx_GIVEREF(__pyx_v_wrapped);
- __Pyx_GOTREF(__pyx_v_self->wrapped);
- __Pyx_DECREF(__pyx_v_self->wrapped);
- __pyx_v_self->wrapped = __pyx_v_wrapped;
-
- /* "aiohttp/_helpers.pyx":15
- * def __init__(self, wrapped):
- * self.wrapped = wrapped
- * self.name = wrapped.__name__ # <<<<<<<<<<<<<<
- *
- * @property
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_wrapped, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->name);
- __Pyx_DECREF(__pyx_v_self->name);
- __pyx_v_self->name = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_helpers.pyx":13
- * cdef object name
- *
- * def __init__(self, wrapped): # <<<<<<<<<<<<<<
- * self.wrapped = wrapped
- * self.name = wrapped.__name__
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._helpers.reify.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_helpers.pyx":18
- *
- * @property
- * def __doc__(self): # <<<<<<<<<<<<<<
- * return self.wrapped.__doc__
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_8_helpers_5reify_7__doc___1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_8_helpers_5reify_7__doc___1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_8_helpers_5reify_7__doc_____get__(((struct __pyx_obj_7aiohttp_8_helpers_reify *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_8_helpers_5reify_7__doc_____get__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
-
- /* "aiohttp/_helpers.pyx":19
- * @property
- * def __doc__(self):
- * return self.wrapped.__doc__ # <<<<<<<<<<<<<<
- *
- * def __get__(self, inst, owner):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->wrapped, __pyx_n_s_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_helpers.pyx":18
- *
- * @property
- * def __doc__(self): # <<<<<<<<<<<<<<
- * return self.wrapped.__doc__
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._helpers.reify.__doc__.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_helpers.pyx":21
- * return self.wrapped.__doc__
- *
- * def __get__(self, inst, owner): # <<<<<<<<<<<<<<
- * try:
- * try:
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_8_helpers_5reify_3__get__(PyObject *__pyx_v_self, PyObject *__pyx_v_inst, PyObject *__pyx_v_owner); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_8_helpers_5reify_3__get__(PyObject *__pyx_v_self, PyObject *__pyx_v_inst, PyObject *__pyx_v_owner) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_8_helpers_5reify_2__get__(((struct __pyx_obj_7aiohttp_8_helpers_reify *)__pyx_v_self), ((PyObject *)__pyx_v_inst), ((PyObject *)__pyx_v_owner));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_8_helpers_5reify_2__get__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self, PyObject *__pyx_v_inst, CYTHON_UNUSED PyObject *__pyx_v_owner) {
- PyObject *__pyx_v_val = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- int __pyx_t_14;
- int __pyx_t_15;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
-
- /* "aiohttp/_helpers.pyx":22
- *
- * def __get__(self, inst, owner):
- * try: # <<<<<<<<<<<<<<
- * try:
- * return inst._cache[self.name]
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
- __Pyx_XGOTREF(__pyx_t_1);
- __Pyx_XGOTREF(__pyx_t_2);
- __Pyx_XGOTREF(__pyx_t_3);
- /*try:*/ {
-
- /* "aiohttp/_helpers.pyx":23
- * def __get__(self, inst, owner):
- * try:
- * try: # <<<<<<<<<<<<<<
- * return inst._cache[self.name]
- * except KeyError:
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_4);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- /*try:*/ {
-
- /* "aiohttp/_helpers.pyx":24
- * try:
- * try:
- * return inst._cache[self.name] # <<<<<<<<<<<<<<
- * except KeyError:
- * val = self.wrapped(inst)
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_n_s_cache); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 24, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_v_self->name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 24, __pyx_L9_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_r = __pyx_t_8;
- __pyx_t_8 = 0;
- goto __pyx_L13_try_return;
-
- /* "aiohttp/_helpers.pyx":23
- * def __get__(self, inst, owner):
- * try:
- * try: # <<<<<<<<<<<<<<
- * return inst._cache[self.name]
- * except KeyError:
- */
- }
- __pyx_L9_error:;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "aiohttp/_helpers.pyx":25
- * try:
- * return inst._cache[self.name]
- * except KeyError: # <<<<<<<<<<<<<<
- * val = self.wrapped(inst)
- * inst._cache[self.name] = val
- */
- __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
- if (__pyx_t_9) {
- __Pyx_AddTraceback("aiohttp._helpers.reify.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_10) < 0) __PYX_ERR(0, 25, __pyx_L11_except_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_t_10);
-
- /* "aiohttp/_helpers.pyx":26
- * return inst._cache[self.name]
- * except KeyError:
- * val = self.wrapped(inst) # <<<<<<<<<<<<<<
- * inst._cache[self.name] = val
- * return val
- */
- __Pyx_INCREF(__pyx_v_self->wrapped);
- __pyx_t_12 = __pyx_v_self->wrapped; __pyx_t_13 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_13)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_13);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_12, function);
- }
- }
- __pyx_t_11 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_13, __pyx_v_inst) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_inst);
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 26, __pyx_L11_except_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_v_val = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_helpers.pyx":27
- * except KeyError:
- * val = self.wrapped(inst)
- * inst._cache[self.name] = val # <<<<<<<<<<<<<<
- * return val
- * except AttributeError:
- */
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_n_s_cache); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 27, __pyx_L11_except_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (unlikely(PyObject_SetItem(__pyx_t_11, __pyx_v_self->name, __pyx_v_val) < 0)) __PYX_ERR(0, 27, __pyx_L11_except_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-
- /* "aiohttp/_helpers.pyx":28
- * val = self.wrapped(inst)
- * inst._cache[self.name] = val
- * return val # <<<<<<<<<<<<<<
- * except AttributeError:
- * if inst is None:
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_val);
- __pyx_r = __pyx_v_val;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L12_except_return;
- }
- goto __pyx_L11_except_error;
- __pyx_L11_except_error:;
-
- /* "aiohttp/_helpers.pyx":23
- * def __get__(self, inst, owner):
- * try:
- * try: # <<<<<<<<<<<<<<
- * return inst._cache[self.name]
- * except KeyError:
- */
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
- goto __pyx_L3_error;
- __pyx_L13_try_return:;
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
- goto __pyx_L7_try_return;
- __pyx_L12_except_return:;
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
- goto __pyx_L7_try_return;
- }
-
- /* "aiohttp/_helpers.pyx":22
- *
- * def __get__(self, inst, owner):
- * try: # <<<<<<<<<<<<<<
- * try:
- * return inst._cache[self.name]
- */
- }
- __pyx_L3_error:;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "aiohttp/_helpers.pyx":29
- * inst._cache[self.name] = val
- * return val
- * except AttributeError: # <<<<<<<<<<<<<<
- * if inst is None:
- * return self
- */
- __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
- if (__pyx_t_9) {
- __Pyx_AddTraceback("aiohttp._helpers.reify.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 29, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_t_8);
-
- /* "aiohttp/_helpers.pyx":30
- * return val
- * except AttributeError:
- * if inst is None: # <<<<<<<<<<<<<<
- * return self
- * raise
- */
- __pyx_t_14 = (__pyx_v_inst == Py_None);
- __pyx_t_15 = (__pyx_t_14 != 0);
- if (__pyx_t_15) {
-
- /* "aiohttp/_helpers.pyx":31
- * except AttributeError:
- * if inst is None:
- * return self # <<<<<<<<<<<<<<
- * raise
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self));
- __pyx_r = ((PyObject *)__pyx_v_self);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L6_except_return;
-
- /* "aiohttp/_helpers.pyx":30
- * return val
- * except AttributeError:
- * if inst is None: # <<<<<<<<<<<<<<
- * return self
- * raise
- */
- }
-
- /* "aiohttp/_helpers.pyx":32
- * if inst is None:
- * return self
- * raise # <<<<<<<<<<<<<<
- *
- * def __set__(self, inst, value):
- */
- __Pyx_GIVEREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_7);
- __Pyx_XGIVEREF(__pyx_t_8);
- __Pyx_ErrRestoreWithState(__pyx_t_10, __pyx_t_7, __pyx_t_8);
- __pyx_t_10 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0;
- __PYX_ERR(0, 32, __pyx_L5_except_error)
- }
- goto __pyx_L5_except_error;
- __pyx_L5_except_error:;
-
- /* "aiohttp/_helpers.pyx":22
- *
- * def __get__(self, inst, owner):
- * try: # <<<<<<<<<<<<<<
- * try:
- * return inst._cache[self.name]
- */
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
- goto __pyx_L1_error;
- __pyx_L7_try_return:;
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
- goto __pyx_L0;
- __pyx_L6_except_return:;
- __Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
- goto __pyx_L0;
- }
-
- /* "aiohttp/_helpers.pyx":21
- * return self.wrapped.__doc__
- *
- * def __get__(self, inst, owner): # <<<<<<<<<<<<<<
- * try:
- * try:
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13);
- __Pyx_AddTraceback("aiohttp._helpers.reify.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_val);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_helpers.pyx":34
- * raise
- *
- * def __set__(self, inst, value): # <<<<<<<<<<<<<<
- * raise AttributeError("reified property is read-only")
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_8_helpers_5reify_5__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_inst, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_7aiohttp_8_helpers_5reify_5__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_inst, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_8_helpers_5reify_4__set__(((struct __pyx_obj_7aiohttp_8_helpers_reify *)__pyx_v_self), ((PyObject *)__pyx_v_inst), ((PyObject *)__pyx_v_value));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_8_helpers_5reify_4__set__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_inst, CYTHON_UNUSED PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
-
- /* "aiohttp/_helpers.pyx":35
- *
- * def __set__(self, inst, value):
- * raise AttributeError("reified property is read-only") # <<<<<<<<<<<<<<
- */
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 35, __pyx_L1_error)
-
- /* "aiohttp/_helpers.pyx":34
- * raise
- *
- * def __set__(self, inst, value): # <<<<<<<<<<<<<<
- * raise AttributeError("reified property is read-only")
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._helpers.reify.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_8_helpers_5reify_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_8_helpers_5reify_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_8_helpers_5reify_6__reduce_cython__(((struct __pyx_obj_7aiohttp_8_helpers_reify *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_8_helpers_5reify_6__reduce_cython__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self) {
- PyObject *__pyx_v_state = 0;
- PyObject *__pyx_v__dict = 0;
- int __pyx_v_use_setstate;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-
- /* "(tree fragment)":5
- * cdef object _dict
- * cdef bint use_setstate
- * state = (self.name, self.wrapped) # <<<<<<<<<<<<<<
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_self->name);
- __Pyx_GIVEREF(__pyx_v_self->name);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
- __Pyx_INCREF(__pyx_v_self->wrapped);
- __Pyx_GIVEREF(__pyx_v_self->wrapped);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->wrapped);
- __pyx_v_state = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":6
- * cdef bint use_setstate
- * state = (self.name, self.wrapped)
- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
- * if _dict is not None:
- * state += (_dict,)
- */
- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v__dict = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":7
- * state = (self.name, self.wrapped)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- __pyx_t_2 = (__pyx_v__dict != Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
-
- /* "(tree fragment)":8
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- * state += (_dict,) # <<<<<<<<<<<<<<
- * use_setstate = True
- * else:
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v__dict);
- __Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
- __pyx_t_4 = 0;
-
- /* "(tree fragment)":9
- * if _dict is not None:
- * state += (_dict,)
- * use_setstate = True # <<<<<<<<<<<<<<
- * else:
- * use_setstate = self.name is not None or self.wrapped is not None
- */
- __pyx_v_use_setstate = 1;
-
- /* "(tree fragment)":7
- * state = (self.name, self.wrapped)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- goto __pyx_L3;
- }
-
- /* "(tree fragment)":11
- * use_setstate = True
- * else:
- * use_setstate = self.name is not None or self.wrapped is not None # <<<<<<<<<<<<<<
- * if use_setstate:
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, None), state
- */
- /*else*/ {
- __pyx_t_2 = (__pyx_v_self->name != Py_None);
- __pyx_t_5 = (__pyx_t_2 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_3 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->wrapped != Py_None);
- __pyx_t_2 = (__pyx_t_5 != 0);
- __pyx_t_3 = __pyx_t_2;
- __pyx_L4_bool_binop_done:;
- __pyx_v_use_setstate = __pyx_t_3;
- }
- __pyx_L3:;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self.name is not None or self.wrapped is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, None), state
- * else:
- */
- __pyx_t_3 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_3) {
-
- /* "(tree fragment)":13
- * use_setstate = self.name is not None or self.wrapped is not None
- * if use_setstate:
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, None), state # <<<<<<<<<<<<<<
- * else:
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, state)
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_reify); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_124832655);
- __Pyx_GIVEREF(__pyx_int_124832655);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_124832655);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
- __pyx_t_4 = 0;
- __pyx_t_1 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
- goto __pyx_L0;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self.name is not None or self.wrapped is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, None), state
- * else:
- */
- }
-
- /* "(tree fragment)":15
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, None), state
- * else:
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, state) # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_reify__set_state(self, __pyx_state)
- */
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_reify); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_124832655);
- __Pyx_GIVEREF(__pyx_int_124832655);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_124832655);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
- __pyx_t_6 = 0;
- __pyx_t_1 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
- }
-
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("aiohttp._helpers.reify.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_state);
- __Pyx_XDECREF(__pyx_v__dict);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_reify__set_state(self, __pyx_state)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_8_helpers_5reify_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_8_helpers_5reify_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_8_helpers_5reify_8__setstate_cython__(((struct __pyx_obj_7aiohttp_8_helpers_reify *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_8_helpers_5reify_8__setstate_cython__(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-
- /* "(tree fragment)":17
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, state)
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_reify__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
- */
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
- __pyx_t_1 = __pyx_f_7aiohttp_8_helpers___pyx_unpickle_reify__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_reify, (type(self), 0x770cb8f, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_reify__set_state(self, __pyx_state)
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._helpers.reify.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __pyx_unpickle_reify(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_8_helpers_1__pyx_unpickle_reify(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_7aiohttp_8_helpers_1__pyx_unpickle_reify = {"__pyx_unpickle_reify", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7aiohttp_8_helpers_1__pyx_unpickle_reify, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_7aiohttp_8_helpers_1__pyx_unpickle_reify(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v___pyx_type = 0;
- long __pyx_v___pyx_checksum;
- PyObject *__pyx_v___pyx_state = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__pyx_unpickle_reify (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- CYTHON_FALLTHROUGH;
- case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_reify", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_reify", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_reify") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v___pyx_type = values[0];
- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
- __pyx_v___pyx_state = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_reify", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._helpers.__pyx_unpickle_reify", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_8_helpers___pyx_unpickle_reify(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_8_helpers___pyx_unpickle_reify(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_v___pyx_PickleError = 0;
- PyObject *__pyx_v___pyx_result = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle_reify", 0);
-
- /* "(tree fragment)":4
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- * if __pyx_checksum != 0x770cb8f: # <<<<<<<<<<<<<<
- * from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x770cb8f = (name, wrapped))" % __pyx_checksum)
- */
- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x770cb8f) != 0);
- if (__pyx_t_1) {
-
- /* "(tree fragment)":5
- * cdef object __pyx_result
- * if __pyx_checksum != 0x770cb8f:
- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x770cb8f = (name, wrapped))" % __pyx_checksum)
- * __pyx_result = reify.__new__(__pyx_type)
- */
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_n_s_PickleError);
- __Pyx_GIVEREF(__pyx_n_s_PickleError);
- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_2);
- __pyx_v___pyx_PickleError = __pyx_t_2;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "(tree fragment)":6
- * if __pyx_checksum != 0x770cb8f:
- * from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x770cb8f = (name, wrapped))" % __pyx_checksum) # <<<<<<<<<<<<<<
- * __pyx_result = reify.__new__(__pyx_type)
- * if __pyx_state is not None:
- */
- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x77, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_INCREF(__pyx_v___pyx_PickleError);
- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 6, __pyx_L1_error)
-
- /* "(tree fragment)":4
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- * if __pyx_checksum != 0x770cb8f: # <<<<<<<<<<<<<<
- * from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x770cb8f = (name, wrapped))" % __pyx_checksum)
- */
- }
-
- /* "(tree fragment)":7
- * from pickle import PickleError as __pyx_PickleError
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x770cb8f = (name, wrapped))" % __pyx_checksum)
- * __pyx_result = reify.__new__(__pyx_type) # <<<<<<<<<<<<<<
- * if __pyx_state is not None:
- * __pyx_unpickle_reify__set_state( __pyx_result, __pyx_state)
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7aiohttp_8_helpers_reify), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v___pyx_result = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x770cb8f = (name, wrapped))" % __pyx_checksum)
- * __pyx_result = reify.__new__(__pyx_type)
- * if __pyx_state is not None: # <<<<<<<<<<<<<<
- * __pyx_unpickle_reify__set_state( __pyx_result, __pyx_state)
- * return __pyx_result
- */
- __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_6 = (__pyx_t_1 != 0);
- if (__pyx_t_6) {
-
- /* "(tree fragment)":9
- * __pyx_result = reify.__new__(__pyx_type)
- * if __pyx_state is not None:
- * __pyx_unpickle_reify__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<<
- * return __pyx_result
- * cdef __pyx_unpickle_reify__set_state(reify __pyx_result, tuple __pyx_state):
- */
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
- __pyx_t_3 = __pyx_f_7aiohttp_8_helpers___pyx_unpickle_reify__set_state(((struct __pyx_obj_7aiohttp_8_helpers_reify *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "(tree fragment)":8
- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x770cb8f = (name, wrapped))" % __pyx_checksum)
- * __pyx_result = reify.__new__(__pyx_type)
- * if __pyx_state is not None: # <<<<<<<<<<<<<<
- * __pyx_unpickle_reify__set_state( __pyx_result, __pyx_state)
- * return __pyx_result
- */
- }
-
- /* "(tree fragment)":10
- * if __pyx_state is not None:
- * __pyx_unpickle_reify__set_state( __pyx_result, __pyx_state)
- * return __pyx_result # <<<<<<<<<<<<<<
- * cdef __pyx_unpickle_reify__set_state(reify __pyx_result, tuple __pyx_state):
- * __pyx_result.name = __pyx_state[0]; __pyx_result.wrapped = __pyx_state[1]
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v___pyx_result);
- __pyx_r = __pyx_v___pyx_result;
- goto __pyx_L0;
-
- /* "(tree fragment)":1
- * def __pyx_unpickle_reify(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("aiohttp._helpers.__pyx_unpickle_reify", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v___pyx_PickleError);
- __Pyx_XDECREF(__pyx_v___pyx_result);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":11
- * __pyx_unpickle_reify__set_state( __pyx_result, __pyx_state)
- * return __pyx_result
- * cdef __pyx_unpickle_reify__set_state(reify __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_result.name = __pyx_state[0]; __pyx_result.wrapped = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- */
-
-static PyObject *__pyx_f_7aiohttp_8_helpers___pyx_unpickle_reify__set_state(struct __pyx_obj_7aiohttp_8_helpers_reify *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- Py_ssize_t __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__pyx_unpickle_reify__set_state", 0);
-
- /* "(tree fragment)":12
- * return __pyx_result
- * cdef __pyx_unpickle_reify__set_state(reify __pyx_result, tuple __pyx_state):
- * __pyx_result.name = __pyx_state[0]; __pyx_result.wrapped = __pyx_state[1] # <<<<<<<<<<<<<<
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- * __pyx_result.__dict__.update(__pyx_state[2])
- */
- if (unlikely(__pyx_v___pyx_state == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 12, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v___pyx_result->name);
- __Pyx_DECREF(__pyx_v___pyx_result->name);
- __pyx_v___pyx_result->name = __pyx_t_1;
- __pyx_t_1 = 0;
- if (unlikely(__pyx_v___pyx_state == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 12, __pyx_L1_error)
- }
- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v___pyx_result->wrapped);
- __Pyx_DECREF(__pyx_v___pyx_result->wrapped);
- __pyx_v___pyx_result->wrapped = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":13
- * cdef __pyx_unpickle_reify__set_state(reify __pyx_result, tuple __pyx_state):
- * __pyx_result.name = __pyx_state[0]; __pyx_result.wrapped = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
- * __pyx_result.__dict__.update(__pyx_state[2])
- */
- if (unlikely(__pyx_v___pyx_state == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(1, 13, __pyx_L1_error)
- }
- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_4 = ((__pyx_t_3 > 2) != 0);
- if (__pyx_t_4) {
- } else {
- __pyx_t_2 = __pyx_t_4;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
- __pyx_t_5 = (__pyx_t_4 != 0);
- __pyx_t_2 = __pyx_t_5;
- __pyx_L4_bool_binop_done:;
- if (__pyx_t_2) {
-
- /* "(tree fragment)":14
- * __pyx_result.name = __pyx_state[0]; __pyx_result.wrapped = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<<
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(__pyx_v___pyx_state == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 14, __pyx_L1_error)
- }
- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
- if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_7, function);
- }
- }
- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "(tree fragment)":13
- * cdef __pyx_unpickle_reify__set_state(reify __pyx_result, tuple __pyx_state):
- * __pyx_result.name = __pyx_state[0]; __pyx_result.wrapped = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
- * __pyx_result.__dict__.update(__pyx_state[2])
- */
- }
-
- /* "(tree fragment)":11
- * __pyx_unpickle_reify__set_state( __pyx_result, __pyx_state)
- * return __pyx_result
- * cdef __pyx_unpickle_reify__set_state(reify __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_result.name = __pyx_state[0]; __pyx_result.wrapped = __pyx_state[1]
- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("aiohttp._helpers.__pyx_unpickle_reify__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_tp_new_7aiohttp_8_helpers_reify(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_7aiohttp_8_helpers_reify *p;
- PyObject *o;
- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
- o = (*t->tp_alloc)(t, 0);
- } else {
- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
- }
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_7aiohttp_8_helpers_reify *)o);
- p->wrapped = Py_None; Py_INCREF(Py_None);
- p->name = Py_None; Py_INCREF(Py_None);
- return o;
-}
-
-static void __pyx_tp_dealloc_7aiohttp_8_helpers_reify(PyObject *o) {
- struct __pyx_obj_7aiohttp_8_helpers_reify *p = (struct __pyx_obj_7aiohttp_8_helpers_reify *)o;
- #if CYTHON_USE_TP_FINALIZE
- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
- if (PyObject_CallFinalizerFromDealloc(o)) return;
- }
- #endif
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->wrapped);
- Py_CLEAR(p->name);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_7aiohttp_8_helpers_reify(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_7aiohttp_8_helpers_reify *p = (struct __pyx_obj_7aiohttp_8_helpers_reify *)o;
- if (p->wrapped) {
- e = (*v)(p->wrapped, a); if (e) return e;
- }
- if (p->name) {
- e = (*v)(p->name, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_7aiohttp_8_helpers_reify(PyObject *o) {
- PyObject* tmp;
- struct __pyx_obj_7aiohttp_8_helpers_reify *p = (struct __pyx_obj_7aiohttp_8_helpers_reify *)o;
- tmp = ((PyObject*)p->wrapped);
- p->wrapped = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->name);
- p->name = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyObject *__pyx_tp_descr_get_7aiohttp_8_helpers_reify(PyObject *o, PyObject *i, PyObject *c) {
- PyObject *r = 0;
- if (!i) i = Py_None;
- if (!c) c = Py_None;
- r = __pyx_pw_7aiohttp_8_helpers_5reify_3__get__(o, i, c);
- return r;
-}
-
-static int __pyx_tp_descr_set_7aiohttp_8_helpers_reify(PyObject *o, PyObject *i, PyObject *v) {
- if (v) {
- return __pyx_pw_7aiohttp_8_helpers_5reify_5__set__(o, i, v);
- }
- else {
- PyErr_SetString(PyExc_NotImplementedError, "__delete__");
- return -1;
- }
-}
-
-static PyObject *__pyx_getprop_7aiohttp_8_helpers_5reify___doc__(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_7aiohttp_8_helpers_5reify_7__doc___1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_7aiohttp_8_helpers_reify[] = {
- {"__reduce_cython__", (PyCFunction)__pyx_pw_7aiohttp_8_helpers_5reify_7__reduce_cython__, METH_NOARGS, 0},
- {"__setstate_cython__", (PyCFunction)__pyx_pw_7aiohttp_8_helpers_5reify_9__setstate_cython__, METH_O, 0},
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_7aiohttp_8_helpers_reify[] = {
- {(char *)"__doc__", __pyx_getprop_7aiohttp_8_helpers_5reify___doc__, 0, (char *)0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_7aiohttp_8_helpers_reify = {
- PyVarObject_HEAD_INIT(0, 0)
- "aiohttp._helpers.reify", /*tp_name*/
- sizeof(struct __pyx_obj_7aiohttp_8_helpers_reify), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_7aiohttp_8_helpers_reify, /*tp_dealloc*/
- #if PY_VERSION_HEX < 0x030800b4
- 0, /*tp_print*/
- #endif
- #if PY_VERSION_HEX >= 0x030800b4
- 0, /*tp_vectorcall_offset*/
- #endif
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #endif
- #if PY_MAJOR_VERSION >= 3
- 0, /*tp_as_async*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- "Use as a class method decorator. It operates almost exactly like\n the Python `@property` decorator, but it puts the result of the\n method it decorates into the instance dict after the first call,\n effectively replacing the function it decorates with an instance\n variable. It is, in Python parlance, a data descriptor.\n\n ", /*tp_doc*/
- __pyx_tp_traverse_7aiohttp_8_helpers_reify, /*tp_traverse*/
- __pyx_tp_clear_7aiohttp_8_helpers_reify, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_7aiohttp_8_helpers_reify, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_7aiohttp_8_helpers_reify, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- __pyx_tp_descr_get_7aiohttp_8_helpers_reify, /*tp_descr_get*/
- __pyx_tp_descr_set_7aiohttp_8_helpers_reify, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- __pyx_pw_7aiohttp_8_helpers_5reify_1__init__, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_7aiohttp_8_helpers_reify, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- 0, /*tp_version_tag*/
- #if PY_VERSION_HEX >= 0x030400a1
- 0, /*tp_finalize*/
- #endif
- #if PY_VERSION_HEX >= 0x030800b1
- 0, /*tp_vectorcall*/
- #endif
- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
- 0, /*tp_print*/
- #endif
-};
-
-static PyMethodDef __pyx_methods[] = {
- {0, 0, 0, 0}
-};
-
-#if PY_MAJOR_VERSION >= 3
-#if CYTHON_PEP489_MULTI_PHASE_INIT
-static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
-static int __pyx_pymod_exec__helpers(PyObject* module); /*proto*/
-static PyModuleDef_Slot __pyx_moduledef_slots[] = {
- {Py_mod_create, (void*)__pyx_pymod_create},
- {Py_mod_exec, (void*)__pyx_pymod_exec__helpers},
- {0, NULL}
-};
-#endif
-
-static struct PyModuleDef __pyx_moduledef = {
- PyModuleDef_HEAD_INIT,
- "_helpers",
- 0, /* m_doc */
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- 0, /* m_size */
- #else
- -1, /* m_size */
- #endif
- __pyx_methods /* m_methods */,
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- __pyx_moduledef_slots, /* m_slots */
- #else
- NULL, /* m_reload */
- #endif
- NULL, /* m_traverse */
- NULL, /* m_clear */
- NULL /* m_free */
-};
-#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
- #define CYTHON_SMALL_CODE __attribute__((cold))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
-
-static __Pyx_StringTabEntry __pyx_string_tab[] = {
- {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
- {&__pyx_kp_s_Incompatible_checksums_s_vs_0x77, __pyx_k_Incompatible_checksums_s_vs_0x77, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x77), 0, 0, 1, 0},
- {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1},
- {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
- {&__pyx_n_s_aiohttp__helpers, __pyx_k_aiohttp__helpers, sizeof(__pyx_k_aiohttp__helpers), 0, 0, 1, 1},
- {&__pyx_n_s_cache, __pyx_k_cache, sizeof(__pyx_k_cache), 0, 0, 1, 1},
- {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
- {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
- {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
- {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
- {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
- {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
- {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
- {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
- {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
- {&__pyx_n_s_pyx_unpickle_reify, __pyx_k_pyx_unpickle_reify, sizeof(__pyx_k_pyx_unpickle_reify), 0, 0, 1, 1},
- {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
- {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
- {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
- {&__pyx_kp_u_reified_property_is_read_only, __pyx_k_reified_property_is_read_only, sizeof(__pyx_k_reified_property_is_read_only), 0, 1, 0, 0},
- {&__pyx_n_s_reify, __pyx_k_reify, sizeof(__pyx_k_reify), 0, 0, 1, 1},
- {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
- {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
- {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
- {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
- {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
- {&__pyx_n_s_wrapped, __pyx_k_wrapped, sizeof(__pyx_k_wrapped), 0, 0, 1, 1},
- {0, 0, 0, 0, 0, 0, 0}
-};
-static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
- __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 25, __pyx_L1_error)
- __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 29, __pyx_L1_error)
- return 0;
- __pyx_L1_error:;
- return -1;
-}
-
-static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
-
- /* "aiohttp/_helpers.pyx":35
- *
- * def __set__(self, inst, value):
- * raise AttributeError("reified property is read-only") # <<<<<<<<<<<<<<
- */
- __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_reified_property_is_read_only); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 35, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple_);
- __Pyx_GIVEREF(__pyx_tuple_);
-
- /* "(tree fragment)":1
- * def __pyx_unpickle_reify(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- */
- __pyx_tuple__2 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
- __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_reify, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_RefNannyFinishContext();
- return 0;
- __pyx_L1_error:;
- __Pyx_RefNannyFinishContext();
- return -1;
-}
-
-static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
- if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
- __pyx_int_124832655 = PyInt_FromLong(124832655L); if (unlikely(!__pyx_int_124832655)) __PYX_ERR(0, 1, __pyx_L1_error)
- return 0;
- __pyx_L1_error:;
- return -1;
-}
-
-static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
-static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
-
-static int __Pyx_modinit_global_init_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
- /*--- Global init code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_variable_export_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
- /*--- Variable export code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_function_export_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
- /*--- Function export code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_type_init_code(void) {
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
- /*--- Type init code ---*/
- if (PyType_Ready(&__pyx_type_7aiohttp_8_helpers_reify) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #if PY_VERSION_HEX < 0x030800B1
- __pyx_type_7aiohttp_8_helpers_reify.tp_print = 0;
- #endif
- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_7aiohttp_8_helpers_reify.tp_dictoffset && __pyx_type_7aiohttp_8_helpers_reify.tp_getattro == PyObject_GenericGetAttr)) {
- __pyx_type_7aiohttp_8_helpers_reify.tp_getattro = __Pyx_PyObject_GenericGetAttr;
- }
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_reify, (PyObject *)&__pyx_type_7aiohttp_8_helpers_reify) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_7aiohttp_8_helpers_reify) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_ptype_7aiohttp_8_helpers_reify = &__pyx_type_7aiohttp_8_helpers_reify;
- __Pyx_RefNannyFinishContext();
- return 0;
- __pyx_L1_error:;
- __Pyx_RefNannyFinishContext();
- return -1;
-}
-
-static int __Pyx_modinit_type_import_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
- /*--- Type import code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_variable_import_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
- /*--- Variable import code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-static int __Pyx_modinit_function_import_code(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
- /*--- Function import code ---*/
- __Pyx_RefNannyFinishContext();
- return 0;
-}
-
-
-#ifndef CYTHON_NO_PYINIT_EXPORT
-#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
-#elif PY_MAJOR_VERSION < 3
-#ifdef __cplusplus
-#define __Pyx_PyMODINIT_FUNC extern "C" void
-#else
-#define __Pyx_PyMODINIT_FUNC void
-#endif
-#else
-#ifdef __cplusplus
-#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
-#else
-#define __Pyx_PyMODINIT_FUNC PyObject *
-#endif
-#endif
-
-
-#if PY_MAJOR_VERSION < 3
-__Pyx_PyMODINIT_FUNC init_helpers(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC init_helpers(void)
-#else
-__Pyx_PyMODINIT_FUNC PyInit__helpers(void) CYTHON_SMALL_CODE; /*proto*/
-__Pyx_PyMODINIT_FUNC PyInit__helpers(void)
-#if CYTHON_PEP489_MULTI_PHASE_INIT
-{
- return PyModuleDef_Init(&__pyx_moduledef);
-}
-static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
- #if PY_VERSION_HEX >= 0x030700A1
- static PY_INT64_T main_interpreter_id = -1;
- PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
- if (main_interpreter_id == -1) {
- main_interpreter_id = current_id;
- return (unlikely(current_id == -1)) ? -1 : 0;
- } else if (unlikely(main_interpreter_id != current_id))
- #else
- static PyInterpreterState *main_interpreter = NULL;
- PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
- if (!main_interpreter) {
- main_interpreter = current_interpreter;
- } else if (unlikely(main_interpreter != current_interpreter))
- #endif
- {
- PyErr_SetString(
- PyExc_ImportError,
- "Interpreter change detected - this module can only be loaded into one interpreter per process.");
- return -1;
- }
- return 0;
-}
-static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) {
- PyObject *value = PyObject_GetAttrString(spec, from_name);
- int result = 0;
- if (likely(value)) {
- if (allow_none || value != Py_None) {
- result = PyDict_SetItemString(moddict, to_name, value);
- }
- Py_DECREF(value);
- } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
- PyErr_Clear();
- } else {
- result = -1;
- }
- return result;
-}
-static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
- PyObject *module = NULL, *moddict, *modname;
- if (__Pyx_check_single_interpreter())
- return NULL;
- if (__pyx_m)
- return __Pyx_NewRef(__pyx_m);
- modname = PyObject_GetAttrString(spec, "name");
- if (unlikely(!modname)) goto bad;
- module = PyModule_NewObject(modname);
- Py_DECREF(modname);
- if (unlikely(!module)) goto bad;
- moddict = PyModule_GetDict(module);
- if (unlikely(!moddict)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
- return module;
-bad:
- Py_XDECREF(module);
- return NULL;
-}
-
-
-static CYTHON_SMALL_CODE int __pyx_pymod_exec__helpers(PyObject *__pyx_pyinit_module)
-#endif
-#endif
-{
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m) {
- if (__pyx_m == __pyx_pyinit_module) return 0;
- PyErr_SetString(PyExc_RuntimeError, "Module '_helpers' has already been imported. Re-initialisation is not supported.");
- return -1;
- }
- #elif PY_MAJOR_VERSION >= 3
- if (__pyx_m) return __Pyx_NewRef(__pyx_m);
- #endif
- #if CYTHON_REFNANNY
-__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
-if (!__Pyx_RefNanny) {
- PyErr_Clear();
- __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
- if (!__Pyx_RefNanny)
- Py_FatalError("failed to import 'refnanny' module");
-}
-#endif
- __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__helpers(void)", 0);
- if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #ifdef __Pxy_PyFrame_Initialize_Offsets
- __Pxy_PyFrame_Initialize_Offsets();
- #endif
- __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
- __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
- #ifdef __Pyx_CyFunction_USED
- if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_FusedFunction_USED
- if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_Coroutine_USED
- if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_Generator_USED
- if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_AsyncGen_USED
- if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- #ifdef __Pyx_StopAsyncIteration_USED
- if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- /*--- Library function declarations ---*/
- /*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
- PyEval_InitThreads();
- #endif
- #endif
- /*--- Module creation code ---*/
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- __pyx_m = __pyx_pyinit_module;
- Py_INCREF(__pyx_m);
- #else
- #if PY_MAJOR_VERSION < 3
- __pyx_m = Py_InitModule4("_helpers", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
- #else
- __pyx_m = PyModule_Create(&__pyx_moduledef);
- #endif
- if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_d);
- __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_b);
- __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
- Py_INCREF(__pyx_cython_runtime);
- if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
- /*--- Initialize various global constants etc. ---*/
- if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
- if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
- if (__pyx_module_is_main_aiohttp___helpers) {
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- }
- #if PY_MAJOR_VERSION >= 3
- {
- PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
- if (!PyDict_GetItemString(modules, "aiohttp._helpers")) {
- if (unlikely(PyDict_SetItemString(modules, "aiohttp._helpers", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
- }
- }
- #endif
- /*--- Builtin init code ---*/
- if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- /*--- Constants init code ---*/
- if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- /*--- Global type/function init code ---*/
- (void)__Pyx_modinit_global_init_code();
- (void)__Pyx_modinit_variable_export_code();
- (void)__Pyx_modinit_function_export_code();
- if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
- (void)__Pyx_modinit_type_import_code();
- (void)__Pyx_modinit_variable_import_code();
- (void)__Pyx_modinit_function_import_code();
- /*--- Execution code ---*/
- #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
- if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- #endif
-
- /* "(tree fragment)":1
- * def __pyx_unpickle_reify(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
- * cdef object __pyx_PickleError
- * cdef object __pyx_result
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7aiohttp_8_helpers_1__pyx_unpickle_reify, NULL, __pyx_n_s_aiohttp__helpers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_reify, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_helpers.pyx":1
- * cdef class reify: # <<<<<<<<<<<<<<
- * """Use as a class method decorator. It operates almost exactly like
- * the Python `@property` decorator, but it puts the result of the
- */
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /*--- Wrapped vars code ---*/
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- if (__pyx_m) {
- if (__pyx_d) {
- __Pyx_AddTraceback("init aiohttp._helpers", __pyx_clineno, __pyx_lineno, __pyx_filename);
- }
- Py_CLEAR(__pyx_m);
- } else if (!PyErr_Occurred()) {
- PyErr_SetString(PyExc_ImportError, "init aiohttp._helpers");
- }
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- #if CYTHON_PEP489_MULTI_PHASE_INIT
- return (__pyx_m != NULL) ? 0 : -1;
- #elif PY_MAJOR_VERSION >= 3
- return __pyx_m;
- #else
- return;
- #endif
-}
-
-/* --- Runtime support code --- */
-/* Refnanny */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
- PyObject *m = NULL, *p = NULL;
- void *r = NULL;
- m = PyImport_ImportModule(modname);
- if (!m) goto end;
- p = PyObject_GetAttrString(m, "RefNannyAPI");
- if (!p) goto end;
- r = PyLong_AsVoidPtr(p);
-end:
- Py_XDECREF(p);
- Py_XDECREF(m);
- return (__Pyx_RefNannyAPIStruct *)r;
-}
-#endif
-
-/* PyObjectGetAttrStr */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
- PyTypeObject* tp = Py_TYPE(obj);
- if (likely(tp->tp_getattro))
- return tp->tp_getattro(obj, attr_name);
-#if PY_MAJOR_VERSION < 3
- if (likely(tp->tp_getattr))
- return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
-#endif
- return PyObject_GetAttr(obj, attr_name);
-}
-#endif
-
-/* GetBuiltinName */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
- PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
- if (unlikely(!result)) {
- PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
- "name '%U' is not defined", name);
-#else
- "name '%.200s' is not defined", PyString_AS_STRING(name));
-#endif
- }
- return result;
-}
-
-/* RaiseDoubleKeywords */
-static void __Pyx_RaiseDoubleKeywordsError(
- const char* func_name,
- PyObject* kw_name)
-{
- PyErr_Format(PyExc_TypeError,
- #if PY_MAJOR_VERSION >= 3
- "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
- #else
- "%s() got multiple values for keyword argument '%s'", func_name,
- PyString_AsString(kw_name));
- #endif
-}
-
-/* ParseKeywords */
-static int __Pyx_ParseOptionalKeywords(
- PyObject *kwds,
- PyObject **argnames[],
- PyObject *kwds2,
- PyObject *values[],
- Py_ssize_t num_pos_args,
- const char* function_name)
-{
- PyObject *key = 0, *value = 0;
- Py_ssize_t pos = 0;
- PyObject*** name;
- PyObject*** first_kw_arg = argnames + num_pos_args;
- while (PyDict_Next(kwds, &pos, &key, &value)) {
- name = first_kw_arg;
- while (*name && (**name != key)) name++;
- if (*name) {
- values[name-argnames] = value;
- continue;
- }
- name = first_kw_arg;
- #if PY_MAJOR_VERSION < 3
- if (likely(PyString_Check(key))) {
- while (*name) {
- if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
- && _PyString_Eq(**name, key)) {
- values[name-argnames] = value;
- break;
- }
- name++;
- }
- if (*name) continue;
- else {
- PyObject*** argname = argnames;
- while (argname != first_kw_arg) {
- if ((**argname == key) || (
- (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
- && _PyString_Eq(**argname, key))) {
- goto arg_passed_twice;
- }
- argname++;
- }
- }
- } else
- #endif
- if (likely(PyUnicode_Check(key))) {
- while (*name) {
- int cmp = (**name == key) ? 0 :
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
- (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
- #endif
- PyUnicode_Compare(**name, key);
- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
- if (cmp == 0) {
- values[name-argnames] = value;
- break;
- }
- name++;
- }
- if (*name) continue;
- else {
- PyObject*** argname = argnames;
- while (argname != first_kw_arg) {
- int cmp = (**argname == key) ? 0 :
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
- (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
- #endif
- PyUnicode_Compare(**argname, key);
- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
- if (cmp == 0) goto arg_passed_twice;
- argname++;
- }
- }
- } else
- goto invalid_keyword_type;
- if (kwds2) {
- if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
- } else {
- goto invalid_keyword;
- }
- }
- return 0;
-arg_passed_twice:
- __Pyx_RaiseDoubleKeywordsError(function_name, key);
- goto bad;
-invalid_keyword_type:
- PyErr_Format(PyExc_TypeError,
- "%.200s() keywords must be strings", function_name);
- goto bad;
-invalid_keyword:
- PyErr_Format(PyExc_TypeError,
- #if PY_MAJOR_VERSION < 3
- "%.200s() got an unexpected keyword argument '%.200s'",
- function_name, PyString_AsString(key));
- #else
- "%s() got an unexpected keyword argument '%U'",
- function_name, key);
- #endif
-bad:
- return -1;
-}
-
-/* RaiseArgTupleInvalid */
-static void __Pyx_RaiseArgtupleInvalid(
- const char* func_name,
- int exact,
- Py_ssize_t num_min,
- Py_ssize_t num_max,
- Py_ssize_t num_found)
-{
- Py_ssize_t num_expected;
- const char *more_or_less;
- if (num_found < num_min) {
- num_expected = num_min;
- more_or_less = "at least";
- } else {
- num_expected = num_max;
- more_or_less = "at most";
- }
- if (exact) {
- more_or_less = "exactly";
- }
- PyErr_Format(PyExc_TypeError,
- "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
- func_name, more_or_less, num_expected,
- (num_expected == 1) ? "" : "s", num_found);
-}
-
-/* GetItemInt */
-static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
- PyObject *r;
- if (!j) return NULL;
- r = PyObject_GetItem(o, j);
- Py_DECREF(j);
- return r;
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- Py_ssize_t wrapped_i = i;
- if (wraparound & unlikely(i < 0)) {
- wrapped_i += PyList_GET_SIZE(o);
- }
- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
- PyObject *r = PyList_GET_ITEM(o, wrapped_i);
- Py_INCREF(r);
- return r;
- }
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-#else
- return PySequence_GetItem(o, i);
-#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- Py_ssize_t wrapped_i = i;
- if (wraparound & unlikely(i < 0)) {
- wrapped_i += PyTuple_GET_SIZE(o);
- }
- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
- PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
- Py_INCREF(r);
- return r;
- }
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-#else
- return PySequence_GetItem(o, i);
-#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
- CYTHON_NCP_UNUSED int wraparound,
- CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
- if (is_list || PyList_CheckExact(o)) {
- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
- PyObject *r = PyList_GET_ITEM(o, n);
- Py_INCREF(r);
- return r;
- }
- }
- else if (PyTuple_CheckExact(o)) {
- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
- PyObject *r = PyTuple_GET_ITEM(o, n);
- Py_INCREF(r);
- return r;
- }
- } else {
- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
- if (likely(m && m->sq_item)) {
- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
- Py_ssize_t l = m->sq_length(o);
- if (likely(l >= 0)) {
- i += l;
- } else {
- if (!PyErr_ExceptionMatches(PyExc_OverflowError))
- return NULL;
- PyErr_Clear();
- }
- }
- return m->sq_item(o, i);
- }
- }
-#else
- if (is_list || PySequence_Check(o)) {
- return PySequence_GetItem(o, i);
- }
-#endif
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-}
-
-/* ObjectGetItem */
-#if CYTHON_USE_TYPE_SLOTS
-static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
- PyObject *runerr;
- Py_ssize_t key_value;
- PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence;
- if (unlikely(!(m && m->sq_item))) {
- PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name);
- return NULL;
- }
- key_value = __Pyx_PyIndex_AsSsize_t(index);
- if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
- return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
- }
- if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
- PyErr_Clear();
- PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name);
- }
- return NULL;
-}
-static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
- PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping;
- if (likely(m && m->mp_subscript)) {
- return m->mp_subscript(obj, key);
- }
- return __Pyx_PyObject_GetIndex(obj, key);
-}
-#endif
-
-/* GetTopmostException */
-#if CYTHON_USE_EXC_INFO_STACK
-static _PyErr_StackItem *
-__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
-{
- _PyErr_StackItem *exc_info = tstate->exc_info;
- while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
- exc_info->previous_item != NULL)
- {
- exc_info = exc_info->previous_item;
- }
- return exc_info;
-}
-#endif
-
-/* SaveResetException */
-#if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if CYTHON_USE_EXC_INFO_STACK
- _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
- *type = exc_info->exc_type;
- *value = exc_info->exc_value;
- *tb = exc_info->exc_traceback;
- #else
- *type = tstate->exc_type;
- *value = tstate->exc_value;
- *tb = tstate->exc_traceback;
- #endif
- Py_XINCREF(*type);
- Py_XINCREF(*value);
- Py_XINCREF(*tb);
-}
-static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if CYTHON_USE_EXC_INFO_STACK
- _PyErr_StackItem *exc_info = tstate->exc_info;
- tmp_type = exc_info->exc_type;
- tmp_value = exc_info->exc_value;
- tmp_tb = exc_info->exc_traceback;
- exc_info->exc_type = type;
- exc_info->exc_value = value;
- exc_info->exc_traceback = tb;
- #else
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = type;
- tstate->exc_value = value;
- tstate->exc_traceback = tb;
- #endif
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-}
-#endif
-
-/* PyErrExceptionMatches */
-#if CYTHON_FAST_THREAD_STATE
-static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
- Py_ssize_t i, n;
- n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
- for (i=0; icurexc_type;
- if (exc_type == err) return 1;
- if (unlikely(!exc_type)) return 0;
- if (unlikely(PyTuple_Check(err)))
- return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
- return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
-}
-#endif
-
-/* GetException */
-#if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
-#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
-#endif
-{
- PyObject *local_type, *local_value, *local_tb;
-#if CYTHON_FAST_THREAD_STATE
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- local_type = tstate->curexc_type;
- local_value = tstate->curexc_value;
- local_tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
-#else
- PyErr_Fetch(&local_type, &local_value, &local_tb);
-#endif
- PyErr_NormalizeException(&local_type, &local_value, &local_tb);
-#if CYTHON_FAST_THREAD_STATE
- if (unlikely(tstate->curexc_type))
-#else
- if (unlikely(PyErr_Occurred()))
-#endif
- goto bad;
- #if PY_MAJOR_VERSION >= 3
- if (local_tb) {
- if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
- goto bad;
- }
- #endif
- Py_XINCREF(local_tb);
- Py_XINCREF(local_type);
- Py_XINCREF(local_value);
- *type = local_type;
- *value = local_value;
- *tb = local_tb;
-#if CYTHON_FAST_THREAD_STATE
- #if CYTHON_USE_EXC_INFO_STACK
- {
- _PyErr_StackItem *exc_info = tstate->exc_info;
- tmp_type = exc_info->exc_type;
- tmp_value = exc_info->exc_value;
- tmp_tb = exc_info->exc_traceback;
- exc_info->exc_type = local_type;
- exc_info->exc_value = local_value;
- exc_info->exc_traceback = local_tb;
- }
- #else
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = local_type;
- tstate->exc_value = local_value;
- tstate->exc_traceback = local_tb;
- #endif
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-#else
- PyErr_SetExcInfo(local_type, local_value, local_tb);
-#endif
- return 0;
-bad:
- *type = 0;
- *value = 0;
- *tb = 0;
- Py_XDECREF(local_type);
- Py_XDECREF(local_value);
- Py_XDECREF(local_tb);
- return -1;
-}
-
-/* PyCFunctionFastCall */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
- PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
- PyCFunction meth = PyCFunction_GET_FUNCTION(func);
- PyObject *self = PyCFunction_GET_SELF(func);
- int flags = PyCFunction_GET_FLAGS(func);
- assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
- assert(nargs >= 0);
- assert(nargs == 0 || args != NULL);
- /* _PyCFunction_FastCallDict() must not be called with an exception set,
- because it may clear it (directly or indirectly) and so the
- caller loses its exception */
- assert(!PyErr_Occurred());
- if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
- } else {
- return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
- }
-}
-#endif
-
-/* PyFunctionFastCall */
-#if CYTHON_FAST_PYCALL
-static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
- PyObject *globals) {
- PyFrameObject *f;
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- PyObject **fastlocals;
- Py_ssize_t i;
- PyObject *result;
- assert(globals != NULL);
- /* XXX Perhaps we should create a specialized
- PyFrame_New() that doesn't take locals, but does
- take builtins without sanity checking them.
- */
- assert(tstate != NULL);
- f = PyFrame_New(tstate, co, globals, NULL);
- if (f == NULL) {
- return NULL;
- }
- fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
- for (i = 0; i < na; i++) {
- Py_INCREF(*args);
- fastlocals[i] = *args++;
- }
- result = PyEval_EvalFrameEx(f,0);
- ++tstate->recursion_depth;
- Py_DECREF(f);
- --tstate->recursion_depth;
- return result;
-}
-#if 1 || PY_VERSION_HEX < 0x030600B1
-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
- PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
- PyObject *globals = PyFunction_GET_GLOBALS(func);
- PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
- PyObject *closure;
-#if PY_MAJOR_VERSION >= 3
- PyObject *kwdefs;
-#endif
- PyObject *kwtuple, **k;
- PyObject **d;
- Py_ssize_t nd;
- Py_ssize_t nk;
- PyObject *result;
- assert(kwargs == NULL || PyDict_Check(kwargs));
- nk = kwargs ? PyDict_Size(kwargs) : 0;
- if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
- return NULL;
- }
- if (
-#if PY_MAJOR_VERSION >= 3
- co->co_kwonlyargcount == 0 &&
-#endif
- likely(kwargs == NULL || nk == 0) &&
- co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
- if (argdefs == NULL && co->co_argcount == nargs) {
- result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
- goto done;
- }
- else if (nargs == 0 && argdefs != NULL
- && co->co_argcount == Py_SIZE(argdefs)) {
- /* function called with no arguments, but all parameters have
- a default value: use default values as arguments .*/
- args = &PyTuple_GET_ITEM(argdefs, 0);
- result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
- goto done;
- }
- }
- if (kwargs != NULL) {
- Py_ssize_t pos, i;
- kwtuple = PyTuple_New(2 * nk);
- if (kwtuple == NULL) {
- result = NULL;
- goto done;
- }
- k = &PyTuple_GET_ITEM(kwtuple, 0);
- pos = i = 0;
- while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
- Py_INCREF(k[i]);
- Py_INCREF(k[i+1]);
- i += 2;
- }
- nk = i / 2;
- }
- else {
- kwtuple = NULL;
- k = NULL;
- }
- closure = PyFunction_GET_CLOSURE(func);
-#if PY_MAJOR_VERSION >= 3
- kwdefs = PyFunction_GET_KW_DEFAULTS(func);
-#endif
- if (argdefs != NULL) {
- d = &PyTuple_GET_ITEM(argdefs, 0);
- nd = Py_SIZE(argdefs);
- }
- else {
- d = NULL;
- nd = 0;
- }
-#if PY_MAJOR_VERSION >= 3
- result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
- args, (int)nargs,
- k, (int)nk,
- d, (int)nd, kwdefs, closure);
-#else
- result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
- args, (int)nargs,
- k, (int)nk,
- d, (int)nd, closure);
-#endif
- Py_XDECREF(kwtuple);
-done:
- Py_LeaveRecursiveCall();
- return result;
-}
-#endif
-#endif
-
-/* PyObjectCall */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
- PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
- if (unlikely(!call))
- return PyObject_Call(func, arg, kw);
- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
- return NULL;
- result = (*call)(func, arg, kw);
- Py_LeaveRecursiveCall();
- if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
- PyErr_SetString(
- PyExc_SystemError,
- "NULL result without error in PyObject_Call");
- }
- return result;
-}
-#endif
-
-/* PyObjectCall2Args */
-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
- PyObject *args, *result = NULL;
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(function)) {
- PyObject *args[2] = {arg1, arg2};
- return __Pyx_PyFunction_FastCall(function, args, 2);
- }
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(function)) {
- PyObject *args[2] = {arg1, arg2};
- return __Pyx_PyCFunction_FastCall(function, args, 2);
- }
- #endif
- args = PyTuple_New(2);
- if (unlikely(!args)) goto done;
- Py_INCREF(arg1);
- PyTuple_SET_ITEM(args, 0, arg1);
- Py_INCREF(arg2);
- PyTuple_SET_ITEM(args, 1, arg2);
- Py_INCREF(function);
- result = __Pyx_PyObject_Call(function, args, NULL);
- Py_DECREF(args);
- Py_DECREF(function);
-done:
- return result;
-}
-
-/* PyObjectCallMethO */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
- PyObject *self, *result;
- PyCFunction cfunc;
- cfunc = PyCFunction_GET_FUNCTION(func);
- self = PyCFunction_GET_SELF(func);
- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
- return NULL;
- result = cfunc(self, arg);
- Py_LeaveRecursiveCall();
- if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
- PyErr_SetString(
- PyExc_SystemError,
- "NULL result without error in PyObject_Call");
- }
- return result;
-}
-#endif
-
-/* PyObjectCallOneArg */
-#if CYTHON_COMPILING_IN_CPYTHON
-static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
- PyObject *result;
- PyObject *args = PyTuple_New(1);
- if (unlikely(!args)) return NULL;
- Py_INCREF(arg);
- PyTuple_SET_ITEM(args, 0, arg);
- result = __Pyx_PyObject_Call(func, args, NULL);
- Py_DECREF(args);
- return result;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(func)) {
- return __Pyx_PyFunction_FastCall(func, &arg, 1);
- }
-#endif
- if (likely(PyCFunction_Check(func))) {
- if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
- return __Pyx_PyObject_CallMethO(func, arg);
-#if CYTHON_FAST_PYCCALL
- } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
- return __Pyx_PyCFunction_FastCall(func, &arg, 1);
-#endif
- }
- }
- return __Pyx__PyObject_CallOneArg(func, arg);
-}
-#else
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
- PyObject *result;
- PyObject *args = PyTuple_Pack(1, arg);
- if (unlikely(!args)) return NULL;
- result = __Pyx_PyObject_Call(func, args, NULL);
- Py_DECREF(args);
- return result;
-}
-#endif
-
-/* PyErrFetchRestore */
-#if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- tmp_type = tstate->curexc_type;
- tmp_value = tstate->curexc_value;
- tmp_tb = tstate->curexc_traceback;
- tstate->curexc_type = type;
- tstate->curexc_value = value;
- tstate->curexc_traceback = tb;
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-}
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- *type = tstate->curexc_type;
- *value = tstate->curexc_value;
- *tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
-}
-#endif
-
-/* RaiseException */
-#if PY_MAJOR_VERSION < 3
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
- CYTHON_UNUSED PyObject *cause) {
- __Pyx_PyThreadState_declare
- Py_XINCREF(type);
- if (!value || value == Py_None)
- value = NULL;
- else
- Py_INCREF(value);
- if (!tb || tb == Py_None)
- tb = NULL;
- else {
- Py_INCREF(tb);
- if (!PyTraceBack_Check(tb)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: arg 3 must be a traceback or None");
- goto raise_error;
- }
- }
- if (PyType_Check(type)) {
-#if CYTHON_COMPILING_IN_PYPY
- if (!value) {
- Py_INCREF(Py_None);
- value = Py_None;
- }
-#endif
- PyErr_NormalizeException(&type, &value, &tb);
- } else {
- if (value) {
- PyErr_SetString(PyExc_TypeError,
- "instance exception may not have a separate value");
- goto raise_error;
- }
- value = type;
- type = (PyObject*) Py_TYPE(type);
- Py_INCREF(type);
- if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: exception class must be a subclass of BaseException");
- goto raise_error;
- }
- }
- __Pyx_PyThreadState_assign
- __Pyx_ErrRestore(type, value, tb);
- return;
-raise_error:
- Py_XDECREF(value);
- Py_XDECREF(type);
- Py_XDECREF(tb);
- return;
-}
-#else
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
- PyObject* owned_instance = NULL;
- if (tb == Py_None) {
- tb = 0;
- } else if (tb && !PyTraceBack_Check(tb)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: arg 3 must be a traceback or None");
- goto bad;
- }
- if (value == Py_None)
- value = 0;
- if (PyExceptionInstance_Check(type)) {
- if (value) {
- PyErr_SetString(PyExc_TypeError,
- "instance exception may not have a separate value");
- goto bad;
- }
- value = type;
- type = (PyObject*) Py_TYPE(value);
- } else if (PyExceptionClass_Check(type)) {
- PyObject *instance_class = NULL;
- if (value && PyExceptionInstance_Check(value)) {
- instance_class = (PyObject*) Py_TYPE(value);
- if (instance_class != type) {
- int is_subclass = PyObject_IsSubclass(instance_class, type);
- if (!is_subclass) {
- instance_class = NULL;
- } else if (unlikely(is_subclass == -1)) {
- goto bad;
- } else {
- type = instance_class;
- }
- }
- }
- if (!instance_class) {
- PyObject *args;
- if (!value)
- args = PyTuple_New(0);
- else if (PyTuple_Check(value)) {
- Py_INCREF(value);
- args = value;
- } else
- args = PyTuple_Pack(1, value);
- if (!args)
- goto bad;
- owned_instance = PyObject_Call(type, args, NULL);
- Py_DECREF(args);
- if (!owned_instance)
- goto bad;
- value = owned_instance;
- if (!PyExceptionInstance_Check(value)) {
- PyErr_Format(PyExc_TypeError,
- "calling %R should have returned an instance of "
- "BaseException, not %R",
- type, Py_TYPE(value));
- goto bad;
- }
- }
- } else {
- PyErr_SetString(PyExc_TypeError,
- "raise: exception class must be a subclass of BaseException");
- goto bad;
- }
- if (cause) {
- PyObject *fixed_cause;
- if (cause == Py_None) {
- fixed_cause = NULL;
- } else if (PyExceptionClass_Check(cause)) {
- fixed_cause = PyObject_CallObject(cause, NULL);
- if (fixed_cause == NULL)
- goto bad;
- } else if (PyExceptionInstance_Check(cause)) {
- fixed_cause = cause;
- Py_INCREF(fixed_cause);
- } else {
- PyErr_SetString(PyExc_TypeError,
- "exception causes must derive from "
- "BaseException");
- goto bad;
- }
- PyException_SetCause(value, fixed_cause);
- }
- PyErr_SetObject(type, value);
- if (tb) {
-#if CYTHON_COMPILING_IN_PYPY
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
- Py_INCREF(tb);
- PyErr_Restore(tmp_type, tmp_value, tb);
- Py_XDECREF(tmp_tb);
-#else
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- PyObject* tmp_tb = tstate->curexc_traceback;
- if (tb != tmp_tb) {
- Py_INCREF(tb);
- tstate->curexc_traceback = tb;
- Py_XDECREF(tmp_tb);
- }
-#endif
- }
-bad:
- Py_XDECREF(owned_instance);
- return;
-}
-#endif
-
-/* GetAttr */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
-#if CYTHON_USE_TYPE_SLOTS
-#if PY_MAJOR_VERSION >= 3
- if (likely(PyUnicode_Check(n)))
-#else
- if (likely(PyString_Check(n)))
-#endif
- return __Pyx_PyObject_GetAttrStr(o, n);
-#endif
- return PyObject_GetAttr(o, n);
-}
-
-/* GetAttr3 */
-static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
- return NULL;
- __Pyx_PyErr_Clear();
- Py_INCREF(d);
- return d;
-}
-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
- PyObject *r = __Pyx_GetAttr(o, n);
- return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
-}
-
-/* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
- PyObject *dict = Py_TYPE(obj)->tp_dict;
- return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
-}
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
- PyObject **dictptr = NULL;
- Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
- if (offset) {
-#if CYTHON_COMPILING_IN_CPYTHON
- dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
-#else
- dictptr = _PyObject_GetDictPtr(obj);
-#endif
- }
- return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
-}
-static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
- PyObject *dict = Py_TYPE(obj)->tp_dict;
- if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
- return 0;
- return obj_dict_version == __Pyx_get_object_dict_version(obj);
-}
-#endif
-
-/* GetModuleGlobalName */
-#if CYTHON_USE_DICT_VERSIONS
-static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
-#else
-static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
-#endif
-{
- PyObject *result;
-#if !CYTHON_AVOID_BORROWED_REFS
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
- result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- } else if (unlikely(PyErr_Occurred())) {
- return NULL;
- }
-#else
- result = PyDict_GetItem(__pyx_d, name);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- }
-#endif
-#else
- result = PyObject_GetItem(__pyx_d, name);
- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
- if (likely(result)) {
- return __Pyx_NewRef(result);
- }
- PyErr_Clear();
-#endif
- return __Pyx_GetBuiltinName(name);
-}
-
-/* Import */
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
- PyObject *empty_list = 0;
- PyObject *module = 0;
- PyObject *global_dict = 0;
- PyObject *empty_dict = 0;
- PyObject *list;
- #if PY_MAJOR_VERSION < 3
- PyObject *py_import;
- py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
- if (!py_import)
- goto bad;
- #endif
- if (from_list)
- list = from_list;
- else {
- empty_list = PyList_New(0);
- if (!empty_list)
- goto bad;
- list = empty_list;
- }
- global_dict = PyModule_GetDict(__pyx_m);
- if (!global_dict)
- goto bad;
- empty_dict = PyDict_New();
- if (!empty_dict)
- goto bad;
- {
- #if PY_MAJOR_VERSION >= 3
- if (level == -1) {
- if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) {
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, 1);
- if (!module) {
- if (!PyErr_ExceptionMatches(PyExc_ImportError))
- goto bad;
- PyErr_Clear();
- }
- }
- level = 0;
- }
- #endif
- if (!module) {
- #if PY_MAJOR_VERSION < 3
- PyObject *py_level = PyInt_FromLong(level);
- if (!py_level)
- goto bad;
- module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
- Py_DECREF(py_level);
- #else
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, level);
- #endif
- }
- }
-bad:
- #if PY_MAJOR_VERSION < 3
- Py_XDECREF(py_import);
- #endif
- Py_XDECREF(empty_list);
- Py_XDECREF(empty_dict);
- return module;
-}
-
-/* ImportFrom */
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
- PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
- if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
- PyErr_Format(PyExc_ImportError,
- #if PY_MAJOR_VERSION < 3
- "cannot import name %.230s", PyString_AS_STRING(name));
- #else
- "cannot import name %S", name);
- #endif
- }
- return value;
-}
-
-/* HasAttr */
-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
- PyObject *r;
- if (unlikely(!__Pyx_PyBaseString_Check(n))) {
- PyErr_SetString(PyExc_TypeError,
- "hasattr(): attribute name must be string");
- return -1;
- }
- r = __Pyx_GetAttr(o, n);
- if (unlikely(!r)) {
- PyErr_Clear();
- return 0;
- } else {
- Py_DECREF(r);
- return 1;
- }
-}
-
-/* PyObject_GenericGetAttrNoDict */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
- PyErr_Format(PyExc_AttributeError,
-#if PY_MAJOR_VERSION >= 3
- "'%.50s' object has no attribute '%U'",
- tp->tp_name, attr_name);
-#else
- "'%.50s' object has no attribute '%.400s'",
- tp->tp_name, PyString_AS_STRING(attr_name));
-#endif
- return NULL;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
- PyObject *descr;
- PyTypeObject *tp = Py_TYPE(obj);
- if (unlikely(!PyString_Check(attr_name))) {
- return PyObject_GenericGetAttr(obj, attr_name);
- }
- assert(!tp->tp_dictoffset);
- descr = _PyType_Lookup(tp, attr_name);
- if (unlikely(!descr)) {
- return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
- }
- Py_INCREF(descr);
- #if PY_MAJOR_VERSION < 3
- if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
- #endif
- {
- descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
- if (unlikely(f)) {
- PyObject *res = f(descr, obj, (PyObject *)tp);
- Py_DECREF(descr);
- return res;
- }
- }
- return descr;
-}
-#endif
-
-/* PyObject_GenericGetAttr */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
- if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
- return PyObject_GenericGetAttr(obj, attr_name);
- }
- return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
-}
-#endif
-
-/* PyObjectGetAttrStrNoError */
-static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
- __Pyx_PyErr_Clear();
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
- PyObject *result;
-#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
- PyTypeObject* tp = Py_TYPE(obj);
- if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
- return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
- }
-#endif
- result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
- if (unlikely(!result)) {
- __Pyx_PyObject_GetAttrStr_ClearAttributeError();
- }
- return result;
-}
-
-/* SetupReduce */
-static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
- int ret;
- PyObject *name_attr;
- name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name);
- if (likely(name_attr)) {
- ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
- } else {
- ret = -1;
- }
- if (unlikely(ret < 0)) {
- PyErr_Clear();
- ret = 0;
- }
- Py_XDECREF(name_attr);
- return ret;
-}
-static int __Pyx_setup_reduce(PyObject* type_obj) {
- int ret = 0;
- PyObject *object_reduce = NULL;
- PyObject *object_reduce_ex = NULL;
- PyObject *reduce = NULL;
- PyObject *reduce_ex = NULL;
- PyObject *reduce_cython = NULL;
- PyObject *setstate = NULL;
- PyObject *setstate_cython = NULL;
-#if CYTHON_USE_PYTYPE_LOOKUP
- if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
-#else
- if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
-#endif
-#if CYTHON_USE_PYTYPE_LOOKUP
- object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
-#else
- object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
-#endif
- reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
- if (reduce_ex == object_reduce_ex) {
-#if CYTHON_USE_PYTYPE_LOOKUP
- object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
-#else
- object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
-#endif
- reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
- if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
- reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
- if (likely(reduce_cython)) {
- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- } else if (reduce == object_reduce || PyErr_Occurred()) {
- goto __PYX_BAD;
- }
- setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
- if (!setstate) PyErr_Clear();
- if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
- setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
- if (likely(setstate_cython)) {
- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
- } else if (!setstate || PyErr_Occurred()) {
- goto __PYX_BAD;
- }
- }
- PyType_Modified((PyTypeObject*)type_obj);
- }
- }
- goto __PYX_GOOD;
-__PYX_BAD:
- if (!PyErr_Occurred())
- PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
- ret = -1;
-__PYX_GOOD:
-#if !CYTHON_USE_PYTYPE_LOOKUP
- Py_XDECREF(object_reduce);
- Py_XDECREF(object_reduce_ex);
-#endif
- Py_XDECREF(reduce);
- Py_XDECREF(reduce_ex);
- Py_XDECREF(reduce_cython);
- Py_XDECREF(setstate);
- Py_XDECREF(setstate_cython);
- return ret;
-}
-
-/* CLineInTraceback */
-#ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {
- PyObject *use_cline;
- PyObject *ptype, *pvalue, *ptraceback;
-#if CYTHON_COMPILING_IN_CPYTHON
- PyObject **cython_runtime_dict;
-#endif
- if (unlikely(!__pyx_cython_runtime)) {
- return c_line;
- }
- __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
-#if CYTHON_COMPILING_IN_CPYTHON
- cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
- if (likely(cython_runtime_dict)) {
- __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
- use_cline, *cython_runtime_dict,
- __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
- } else
-#endif
- {
- PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
- if (use_cline_obj) {
- use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
- Py_DECREF(use_cline_obj);
- } else {
- PyErr_Clear();
- use_cline = NULL;
- }
- }
- if (!use_cline) {
- c_line = 0;
- PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
- }
- else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
- c_line = 0;
- }
- __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
- return c_line;
-}
-#endif
-
-/* CodeObjectCache */
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
- int start = 0, mid = 0, end = count - 1;
- if (end >= 0 && code_line > entries[end].code_line) {
- return count;
- }
- while (start < end) {
- mid = start + (end - start) / 2;
- if (code_line < entries[mid].code_line) {
- end = mid;
- } else if (code_line > entries[mid].code_line) {
- start = mid + 1;
- } else {
- return mid;
- }
- }
- if (code_line <= entries[mid].code_line) {
- return mid;
- } else {
- return mid + 1;
- }
-}
-static PyCodeObject *__pyx_find_code_object(int code_line) {
- PyCodeObject* code_object;
- int pos;
- if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
- return NULL;
- }
- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
- if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
- return NULL;
- }
- code_object = __pyx_code_cache.entries[pos].code_object;
- Py_INCREF(code_object);
- return code_object;
-}
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
- int pos, i;
- __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
- if (unlikely(!code_line)) {
- return;
- }
- if (unlikely(!entries)) {
- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
- if (likely(entries)) {
- __pyx_code_cache.entries = entries;
- __pyx_code_cache.max_count = 64;
- __pyx_code_cache.count = 1;
- entries[0].code_line = code_line;
- entries[0].code_object = code_object;
- Py_INCREF(code_object);
- }
- return;
- }
- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
- if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
- PyCodeObject* tmp = entries[pos].code_object;
- entries[pos].code_object = code_object;
- Py_DECREF(tmp);
- return;
- }
- if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
- int new_max = __pyx_code_cache.max_count + 64;
- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
- __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
- if (unlikely(!entries)) {
- return;
- }
- __pyx_code_cache.entries = entries;
- __pyx_code_cache.max_count = new_max;
- }
- for (i=__pyx_code_cache.count; i>pos; i--) {
- entries[i] = entries[i-1];
- }
- entries[pos].code_line = code_line;
- entries[pos].code_object = code_object;
- __pyx_code_cache.count++;
- Py_INCREF(code_object);
-}
-
-/* AddTraceback */
-#include "compile.h"
-#include "frameobject.h"
-#include "traceback.h"
-static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
- const char *funcname, int c_line,
- int py_line, const char *filename) {
- PyCodeObject *py_code = 0;
- PyObject *py_srcfile = 0;
- PyObject *py_funcname = 0;
- #if PY_MAJOR_VERSION < 3
- py_srcfile = PyString_FromString(filename);
- #else
- py_srcfile = PyUnicode_FromString(filename);
- #endif
- if (!py_srcfile) goto bad;
- if (c_line) {
- #if PY_MAJOR_VERSION < 3
- py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
- #else
- py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
- #endif
- }
- else {
- #if PY_MAJOR_VERSION < 3
- py_funcname = PyString_FromString(funcname);
- #else
- py_funcname = PyUnicode_FromString(funcname);
- #endif
- }
- if (!py_funcname) goto bad;
- py_code = __Pyx_PyCode_New(
- 0,
- 0,
- 0,
- 0,
- 0,
- __pyx_empty_bytes, /*PyObject *code,*/
- __pyx_empty_tuple, /*PyObject *consts,*/
- __pyx_empty_tuple, /*PyObject *names,*/
- __pyx_empty_tuple, /*PyObject *varnames,*/
- __pyx_empty_tuple, /*PyObject *freevars,*/
- __pyx_empty_tuple, /*PyObject *cellvars,*/
- py_srcfile, /*PyObject *filename,*/
- py_funcname, /*PyObject *name,*/
- py_line,
- __pyx_empty_bytes /*PyObject *lnotab*/
- );
- Py_DECREF(py_srcfile);
- Py_DECREF(py_funcname);
- return py_code;
-bad:
- Py_XDECREF(py_srcfile);
- Py_XDECREF(py_funcname);
- return NULL;
-}
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
- int py_line, const char *filename) {
- PyCodeObject *py_code = 0;
- PyFrameObject *py_frame = 0;
- PyThreadState *tstate = __Pyx_PyThreadState_Current;
- if (c_line) {
- c_line = __Pyx_CLineForTraceback(tstate, c_line);
- }
- py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
- if (!py_code) {
- py_code = __Pyx_CreateCodeObjectForTraceback(
- funcname, c_line, py_line, filename);
- if (!py_code) goto bad;
- __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
- }
- py_frame = PyFrame_New(
- tstate, /*PyThreadState *tstate,*/
- py_code, /*PyCodeObject *code,*/
- __pyx_d, /*PyObject *globals,*/
- 0 /*PyObject *locals*/
- );
- if (!py_frame) goto bad;
- __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
- PyTraceBack_Here(py_frame);
-bad:
- Py_XDECREF(py_code);
- Py_XDECREF(py_frame);
-}
-
-/* CIntFromPyVerify */
-#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
-#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
-#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
- {\
- func_type value = func_value;\
- if (sizeof(target_type) < sizeof(func_type)) {\
- if (unlikely(value != (func_type) (target_type) value)) {\
- func_type zero = 0;\
- if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
- return (target_type) -1;\
- if (is_unsigned && unlikely(value < zero))\
- goto raise_neg_overflow;\
- else\
- goto raise_overflow;\
- }\
- }\
- return (target_type) value;\
- }
-
-/* CIntToPy */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
- const int is_unsigned = neg_one > const_zero;
- if (is_unsigned) {
- if (sizeof(long) < sizeof(long)) {
- return PyInt_FromLong((long) value);
- } else if (sizeof(long) <= sizeof(unsigned long)) {
- return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
- }
- } else {
- if (sizeof(long) <= sizeof(long)) {
- return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
- return PyLong_FromLongLong((PY_LONG_LONG) value);
-#endif
- }
- }
- {
- int one = 1; int little = (int)*(unsigned char *)&one;
- unsigned char *bytes = (unsigned char *)&value;
- return _PyLong_FromByteArray(bytes, sizeof(long),
- little, !is_unsigned);
- }
-}
-
-/* CIntFromPy */
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- if (sizeof(long) < sizeof(long)) {
- __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
- } else {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- goto raise_neg_overflow;
- }
- return (long) val;
- }
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (long) 0;
- case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
- case 2:
- if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
- return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
- }
- }
- break;
- case 3:
- if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
- return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
- }
- }
- break;
- case 4:
- if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
- return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
- }
- }
- break;
- }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
- if (unlikely(Py_SIZE(x) < 0)) {
- goto raise_neg_overflow;
- }
-#else
- {
- int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
- if (unlikely(result < 0))
- return (long) -1;
- if (unlikely(result == 1))
- goto raise_neg_overflow;
- }
-#endif
- if (sizeof(long) <= sizeof(unsigned long)) {
- __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
- __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-#endif
- }
- } else {
-#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (long) 0;
- case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
- case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0])
- case -2:
- if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case 2:
- if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case -3:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case 3:
- if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case -4:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- case 4:
- if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
- }
- }
- break;
- }
-#endif
- if (sizeof(long) <= sizeof(long)) {
- __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
- __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
-#endif
- }
- }
- {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
- PyErr_SetString(PyExc_RuntimeError,
- "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
- long val;
- PyObject *v = __Pyx_PyNumber_IntOrLong(x);
- #if PY_MAJOR_VERSION < 3
- if (likely(v) && !PyLong_Check(v)) {
- PyObject *tmp = v;
- v = PyNumber_Long(tmp);
- Py_DECREF(tmp);
- }
- #endif
- if (likely(v)) {
- int one = 1; int is_little = (int)*(unsigned char *)&one;
- unsigned char *bytes = (unsigned char *)&val;
- int ret = _PyLong_AsByteArray((PyLongObject *)v,
- bytes, sizeof(val),
- is_little, !is_unsigned);
- Py_DECREF(v);
- if (likely(!ret))
- return val;
- }
-#endif
- return (long) -1;
- }
- } else {
- long val;
- PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
- if (!tmp) return (long) -1;
- val = __Pyx_PyInt_As_long(tmp);
- Py_DECREF(tmp);
- return val;
- }
-raise_overflow:
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to long");
- return (long) -1;
-raise_neg_overflow:
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to long");
- return (long) -1;
-}
-
-/* CIntFromPy */
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- if (sizeof(int) < sizeof(long)) {
- __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
- } else {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- goto raise_neg_overflow;
- }
- return (int) val;
- }
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (int) 0;
- case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
- case 2:
- if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
- return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
- }
- }
- break;
- case 3:
- if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
- return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
- }
- }
- break;
- case 4:
- if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
- return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
- }
- }
- break;
- }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
- if (unlikely(Py_SIZE(x) < 0)) {
- goto raise_neg_overflow;
- }
-#else
- {
- int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
- if (unlikely(result < 0))
- return (int) -1;
- if (unlikely(result == 1))
- goto raise_neg_overflow;
- }
-#endif
- if (sizeof(int) <= sizeof(unsigned long)) {
- __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
- __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-#endif
- }
- } else {
-#if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)x)->ob_digit;
- switch (Py_SIZE(x)) {
- case 0: return (int) 0;
- case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
- case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0])
- case -2:
- if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case 2:
- if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case -3:
- if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case 3:
- if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case -4:
- if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
- return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- case 4:
- if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
- if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
- __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
- } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
- return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
- }
- }
- break;
- }
-#endif
- if (sizeof(int) <= sizeof(long)) {
- __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
- __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
-#endif
- }
- }
- {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
- PyErr_SetString(PyExc_RuntimeError,
- "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
- int val;
- PyObject *v = __Pyx_PyNumber_IntOrLong(x);
- #if PY_MAJOR_VERSION < 3
- if (likely(v) && !PyLong_Check(v)) {
- PyObject *tmp = v;
- v = PyNumber_Long(tmp);
- Py_DECREF(tmp);
- }
- #endif
- if (likely(v)) {
- int one = 1; int is_little = (int)*(unsigned char *)&one;
- unsigned char *bytes = (unsigned char *)&val;
- int ret = _PyLong_AsByteArray((PyLongObject *)v,
- bytes, sizeof(val),
- is_little, !is_unsigned);
- Py_DECREF(v);
- if (likely(!ret))
- return val;
- }
-#endif
- return (int) -1;
- }
- } else {
- int val;
- PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
- if (!tmp) return (int) -1;
- val = __Pyx_PyInt_As_int(tmp);
- Py_DECREF(tmp);
- return val;
- }
-raise_overflow:
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to int");
- return (int) -1;
-raise_neg_overflow:
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to int");
- return (int) -1;
-}
-
-/* FastTypeChecks */
-#if CYTHON_COMPILING_IN_CPYTHON
-static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
- while (a) {
- a = a->tp_base;
- if (a == b)
- return 1;
- }
- return b == &PyBaseObject_Type;
-}
-static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
- PyObject *mro;
- if (a == b) return 1;
- mro = a->tp_mro;
- if (likely(mro)) {
- Py_ssize_t i, n;
- n = PyTuple_GET_SIZE(mro);
- for (i = 0; i < n; i++) {
- if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
- return 1;
- }
- return 0;
- }
- return __Pyx_InBases(a, b);
-}
-#if PY_MAJOR_VERSION == 2
-static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
- PyObject *exception, *value, *tb;
- int res;
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ErrFetch(&exception, &value, &tb);
- res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
- if (unlikely(res == -1)) {
- PyErr_WriteUnraisable(err);
- res = 0;
- }
- if (!res) {
- res = PyObject_IsSubclass(err, exc_type2);
- if (unlikely(res == -1)) {
- PyErr_WriteUnraisable(err);
- res = 0;
- }
- }
- __Pyx_ErrRestore(exception, value, tb);
- return res;
-}
-#else
-static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
- int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
- if (!res) {
- res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
- }
- return res;
-}
-#endif
-static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
- Py_ssize_t i, n;
- assert(PyExceptionClass_Check(exc_type));
- n = PyTuple_GET_SIZE(tuple);
-#if PY_MAJOR_VERSION >= 3
- for (i=0; ip) {
- #if PY_MAJOR_VERSION < 3
- if (t->is_unicode) {
- *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
- } else if (t->intern) {
- *t->p = PyString_InternFromString(t->s);
- } else {
- *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
- }
- #else
- if (t->is_unicode | t->is_str) {
- if (t->intern) {
- *t->p = PyUnicode_InternFromString(t->s);
- } else if (t->encoding) {
- *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
- } else {
- *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
- }
- } else {
- *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
- }
- #endif
- if (!*t->p)
- return -1;
- if (PyObject_Hash(*t->p) == -1)
- return -1;
- ++t;
- }
- return 0;
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
- return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
-}
-static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
- Py_ssize_t ignore;
- return __Pyx_PyObject_AsStringAndSize(o, &ignore);
-}
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
-#if !CYTHON_PEP393_ENABLED
-static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
- char* defenc_c;
- PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
- if (!defenc) return NULL;
- defenc_c = PyBytes_AS_STRING(defenc);
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- {
- char* end = defenc_c + PyBytes_GET_SIZE(defenc);
- char* c;
- for (c = defenc_c; c < end; c++) {
- if ((unsigned char) (*c) >= 128) {
- PyUnicode_AsASCIIString(o);
- return NULL;
- }
- }
- }
-#endif
- *length = PyBytes_GET_SIZE(defenc);
- return defenc_c;
-}
-#else
-static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
- if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- if (likely(PyUnicode_IS_ASCII(o))) {
- *length = PyUnicode_GET_LENGTH(o);
- return PyUnicode_AsUTF8(o);
- } else {
- PyUnicode_AsASCIIString(o);
- return NULL;
- }
-#else
- return PyUnicode_AsUTF8AndSize(o, length);
-#endif
-}
-#endif
-#endif
-static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
- if (
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- __Pyx_sys_getdefaultencoding_not_ascii &&
-#endif
- PyUnicode_Check(o)) {
- return __Pyx_PyUnicode_AsStringAndSize(o, length);
- } else
-#endif
-#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
- if (PyByteArray_Check(o)) {
- *length = PyByteArray_GET_SIZE(o);
- return PyByteArray_AS_STRING(o);
- } else
-#endif
- {
- char* result;
- int r = PyBytes_AsStringAndSize(o, &result, length);
- if (unlikely(r < 0)) {
- return NULL;
- } else {
- return result;
- }
- }
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
- int is_true = x == Py_True;
- if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
- else return PyObject_IsTrue(x);
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
- int retval;
- if (unlikely(!x)) return -1;
- retval = __Pyx_PyObject_IsTrue(x);
- Py_DECREF(x);
- return retval;
-}
-static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
-#if PY_MAJOR_VERSION >= 3
- if (PyLong_Check(result)) {
- if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
- "__int__ returned non-int (type %.200s). "
- "The ability to return an instance of a strict subclass of int "
- "is deprecated, and may be removed in a future version of Python.",
- Py_TYPE(result)->tp_name)) {
- Py_DECREF(result);
- return NULL;
- }
- return result;
- }
-#endif
- PyErr_Format(PyExc_TypeError,
- "__%.4s__ returned non-%.4s (type %.200s)",
- type_name, type_name, Py_TYPE(result)->tp_name);
- Py_DECREF(result);
- return NULL;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
-#if CYTHON_USE_TYPE_SLOTS
- PyNumberMethods *m;
-#endif
- const char *name = NULL;
- PyObject *res = NULL;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x) || PyLong_Check(x)))
-#else
- if (likely(PyLong_Check(x)))
-#endif
- return __Pyx_NewRef(x);
-#if CYTHON_USE_TYPE_SLOTS
- m = Py_TYPE(x)->tp_as_number;
- #if PY_MAJOR_VERSION < 3
- if (m && m->nb_int) {
- name = "int";
- res = m->nb_int(x);
- }
- else if (m && m->nb_long) {
- name = "long";
- res = m->nb_long(x);
- }
- #else
- if (likely(m && m->nb_int)) {
- name = "int";
- res = m->nb_int(x);
- }
- #endif
-#else
- if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
- res = PyNumber_Int(x);
- }
-#endif
- if (likely(res)) {
-#if PY_MAJOR_VERSION < 3
- if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
-#else
- if (unlikely(!PyLong_CheckExact(res))) {
-#endif
- return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
- }
- }
- else if (!PyErr_Occurred()) {
- PyErr_SetString(PyExc_TypeError,
- "an integer is required");
- }
- return res;
-}
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
- Py_ssize_t ival;
- PyObject *x;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_CheckExact(b))) {
- if (sizeof(Py_ssize_t) >= sizeof(long))
- return PyInt_AS_LONG(b);
- else
- return PyInt_AsSsize_t(b);
- }
-#endif
- if (likely(PyLong_CheckExact(b))) {
- #if CYTHON_USE_PYLONG_INTERNALS
- const digit* digits = ((PyLongObject*)b)->ob_digit;
- const Py_ssize_t size = Py_SIZE(b);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- ival = likely(size) ? digits[0] : 0;
- if (size == -1) ival = -ival;
- return ival;
- } else {
- switch (size) {
- case 2:
- if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
- return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case -2:
- if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
- return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case 3:
- if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
- return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case -3:
- if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
- return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case 4:
- if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
- return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- case -4:
- if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
- return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
- }
- break;
- }
- }
- #endif
- return PyLong_AsSsize_t(b);
- }
- x = PyNumber_Index(b);
- if (!x) return -1;
- ival = PyInt_AsSsize_t(x);
- Py_DECREF(x);
- return ival;
-}
-static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
- return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
-}
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
- return PyInt_FromSize_t(ival);
-}
-
-
-#endif /* Py_PYTHON_H */
diff --git a/dist/ba_data/python-site-packages/aiohttp/_helpers.cp39-win_amd64.pyd b/dist/ba_data/python-site-packages/aiohttp/_helpers.cp39-win_amd64.pyd
deleted file mode 100644
index 46b55ca1..00000000
Binary files a/dist/ba_data/python-site-packages/aiohttp/_helpers.cp39-win_amd64.pyd and /dev/null differ
diff --git a/dist/ba_data/python-site-packages/aiohttp/_helpers.cpython-312-x86_64-linux-gnu.so b/dist/ba_data/python-site-packages/aiohttp/_helpers.cpython-312-x86_64-linux-gnu.so
new file mode 100644
index 00000000..a94caf5d
Binary files /dev/null and b/dist/ba_data/python-site-packages/aiohttp/_helpers.cpython-312-x86_64-linux-gnu.so differ
diff --git a/dist/ba_data/python-site-packages/aiohttp/_http_parser.c b/dist/ba_data/python-site-packages/aiohttp/_http_parser.c
deleted file mode 100644
index 9920ca9f..00000000
--- a/dist/ba_data/python-site-packages/aiohttp/_http_parser.c
+++ /dev/null
@@ -1,24607 +0,0 @@
-/* Generated by Cython 0.29.21 */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#ifndef Py_PYTHON_H
- #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
- #error Cython requires Python 2.6+ or Python 3.3+.
-#else
-#define CYTHON_ABI "0_29_21"
-#define CYTHON_HEX_VERSION 0x001D15F0
-#define CYTHON_FUTURE_DIVISION 1
-#include
-#ifndef offsetof
- #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
-#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
- #ifndef __stdcall
- #define __stdcall
- #endif
- #ifndef __cdecl
- #define __cdecl
- #endif
- #ifndef __fastcall
- #define __fastcall
- #endif
-#endif
-#ifndef DL_IMPORT
- #define DL_IMPORT(t) t
-#endif
-#ifndef DL_EXPORT
- #define DL_EXPORT(t) t
-#endif
-#define __PYX_COMMA ,
-#ifndef HAVE_LONG_LONG
- #if PY_VERSION_HEX >= 0x02070000
- #define HAVE_LONG_LONG
- #endif
-#endif
-#ifndef PY_LONG_LONG
- #define PY_LONG_LONG LONG_LONG
-#endif
-#ifndef Py_HUGE_VAL
- #define Py_HUGE_VAL HUGE_VAL
-#endif
-#ifdef PYPY_VERSION
- #define CYTHON_COMPILING_IN_PYPY 1
- #define CYTHON_COMPILING_IN_PYSTON 0
- #define CYTHON_COMPILING_IN_CPYTHON 0
- #undef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 0
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #if PY_VERSION_HEX < 0x03050000
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #elif !defined(CYTHON_USE_ASYNC_SLOTS)
- #define CYTHON_USE_ASYNC_SLOTS 1
- #endif
- #undef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 0
- #undef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 0
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #undef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 1
- #undef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 0
- #undef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 0
- #undef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 0
- #undef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 0
- #undef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT 0
- #undef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE 0
- #undef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS 0
- #undef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK 0
-#elif defined(PYSTON_VERSION)
- #define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 1
- #define CYTHON_COMPILING_IN_CPYTHON 0
- #ifndef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 1
- #endif
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #undef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 0
- #ifndef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 1
- #endif
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #ifndef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 0
- #endif
- #ifndef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 1
- #endif
- #ifndef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 1
- #endif
- #undef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 0
- #undef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 0
- #undef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT 0
- #undef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE 0
- #undef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS 0
- #undef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK 0
-#else
- #define CYTHON_COMPILING_IN_PYPY 0
- #define CYTHON_COMPILING_IN_PYSTON 0
- #define CYTHON_COMPILING_IN_CPYTHON 1
- #ifndef CYTHON_USE_TYPE_SLOTS
- #define CYTHON_USE_TYPE_SLOTS 1
- #endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYTYPE_LOOKUP
- #define CYTHON_USE_PYTYPE_LOOKUP 0
- #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
- #define CYTHON_USE_PYTYPE_LOOKUP 1
- #endif
- #if PY_MAJOR_VERSION < 3
- #undef CYTHON_USE_ASYNC_SLOTS
- #define CYTHON_USE_ASYNC_SLOTS 0
- #elif !defined(CYTHON_USE_ASYNC_SLOTS)
- #define CYTHON_USE_ASYNC_SLOTS 1
- #endif
- #if PY_VERSION_HEX < 0x02070000
- #undef CYTHON_USE_PYLONG_INTERNALS
- #define CYTHON_USE_PYLONG_INTERNALS 0
- #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
- #define CYTHON_USE_PYLONG_INTERNALS 1
- #endif
- #ifndef CYTHON_USE_PYLIST_INTERNALS
- #define CYTHON_USE_PYLIST_INTERNALS 1
- #endif
- #ifndef CYTHON_USE_UNICODE_INTERNALS
- #define CYTHON_USE_UNICODE_INTERNALS 1
- #endif
- #if PY_VERSION_HEX < 0x030300F0
- #undef CYTHON_USE_UNICODE_WRITER
- #define CYTHON_USE_UNICODE_WRITER 0
- #elif !defined(CYTHON_USE_UNICODE_WRITER)
- #define CYTHON_USE_UNICODE_WRITER 1
- #endif
- #ifndef CYTHON_AVOID_BORROWED_REFS
- #define CYTHON_AVOID_BORROWED_REFS 0
- #endif
- #ifndef CYTHON_ASSUME_SAFE_MACROS
- #define CYTHON_ASSUME_SAFE_MACROS 1
- #endif
- #ifndef CYTHON_UNPACK_METHODS
- #define CYTHON_UNPACK_METHODS 1
- #endif
- #ifndef CYTHON_FAST_THREAD_STATE
- #define CYTHON_FAST_THREAD_STATE 1
- #endif
- #ifndef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 1
- #endif
- #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
- #endif
- #ifndef CYTHON_USE_TP_FINALIZE
- #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
- #endif
- #ifndef CYTHON_USE_DICT_VERSIONS
- #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
- #endif
- #ifndef CYTHON_USE_EXC_INFO_STACK
- #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
- #endif
-#endif
-#if !defined(CYTHON_FAST_PYCCALL)
-#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
-#endif
-#if CYTHON_USE_PYLONG_INTERNALS
- #include "longintrepr.h"
- #undef SHIFT
- #undef BASE
- #undef MASK
- #ifdef SIZEOF_VOID_P
- enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
- #endif
-#endif
-#ifndef __has_attribute
- #define __has_attribute(x) 0
-#endif
-#ifndef __has_cpp_attribute
- #define __has_cpp_attribute(x) 0
-#endif
-#ifndef CYTHON_RESTRICT
- #if defined(__GNUC__)
- #define CYTHON_RESTRICT __restrict__
- #elif defined(_MSC_VER) && _MSC_VER >= 1400
- #define CYTHON_RESTRICT __restrict
- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define CYTHON_RESTRICT restrict
- #else
- #define CYTHON_RESTRICT
- #endif
-#endif
-#ifndef CYTHON_UNUSED
-# if defined(__GNUC__)
-# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-# define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-# define CYTHON_UNUSED
-# endif
-# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
-# define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-# define CYTHON_UNUSED
-# endif
-#endif
-#ifndef CYTHON_MAYBE_UNUSED_VAR
-# if defined(__cplusplus)
- template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
-# else
-# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
-# endif
-#endif
-#ifndef CYTHON_NCP_UNUSED
-# if CYTHON_COMPILING_IN_CPYTHON
-# define CYTHON_NCP_UNUSED
-# else
-# define CYTHON_NCP_UNUSED CYTHON_UNUSED
-# endif
-#endif
-#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
-#ifdef _MSC_VER
- #ifndef _MSC_STDINT_H_
- #if _MSC_VER < 1300
- typedef unsigned char uint8_t;
- typedef unsigned int uint32_t;
- #else
- typedef unsigned __int8 uint8_t;
- typedef unsigned __int32 uint32_t;
- #endif
- #endif
-#else
- #include
-#endif
-#ifndef CYTHON_FALLTHROUGH
- #if defined(__cplusplus) && __cplusplus >= 201103L
- #if __has_cpp_attribute(fallthrough)
- #define CYTHON_FALLTHROUGH [[fallthrough]]
- #elif __has_cpp_attribute(clang::fallthrough)
- #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
- #elif __has_cpp_attribute(gnu::fallthrough)
- #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
- #endif
- #endif
- #ifndef CYTHON_FALLTHROUGH
- #if __has_attribute(fallthrough)
- #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
- #else
- #define CYTHON_FALLTHROUGH
- #endif
- #endif
- #if defined(__clang__ ) && defined(__apple_build_version__)
- #if __apple_build_version__ < 7000000
- #undef CYTHON_FALLTHROUGH
- #define CYTHON_FALLTHROUGH
- #endif
- #endif
-#endif
-
-#ifndef CYTHON_INLINE
- #if defined(__clang__)
- #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
- #elif defined(__GNUC__)
- #define CYTHON_INLINE __inline__
- #elif defined(_MSC_VER)
- #define CYTHON_INLINE __inline
- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define CYTHON_INLINE inline
- #else
- #define CYTHON_INLINE
- #endif
-#endif
-
-#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
- #define Py_OptimizeFlag 0
-#endif
-#define __PYX_BUILD_PY_SSIZE_T "n"
-#define CYTHON_FORMAT_SSIZE_T "z"
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
- #define __Pyx_DefaultClassType PyClass_Type
-#else
- #define __Pyx_BUILTIN_MODULE_NAME "builtins"
-#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-#else
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
- PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-#endif
- #define __Pyx_DefaultClassType PyType_Type
-#endif
-#ifndef Py_TPFLAGS_CHECKTYPES
- #define Py_TPFLAGS_CHECKTYPES 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_INDEX
- #define Py_TPFLAGS_HAVE_INDEX 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
- #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_FINALIZE
- #define Py_TPFLAGS_HAVE_FINALIZE 0
-#endif
-#ifndef METH_STACKLESS
- #define METH_STACKLESS 0
-#endif
-#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
- #ifndef METH_FASTCALL
- #define METH_FASTCALL 0x80
- #endif
- typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
- typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
- Py_ssize_t nargs, PyObject *kwnames);
-#else
- #define __Pyx_PyCFunctionFast _PyCFunctionFast
- #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
-#endif
-#if CYTHON_FAST_PYCCALL
-#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
-#else
-#define __Pyx_PyFastCFunction_Check(func) 0
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
- #define PyObject_Malloc(s) PyMem_Malloc(s)
- #define PyObject_Free(p) PyMem_Free(p)
- #define PyObject_Realloc(p) PyMem_Realloc(p)
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
- #define PyMem_RawMalloc(n) PyMem_Malloc(n)
- #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
- #define PyMem_RawFree(p) PyMem_Free(p)
-#endif
-#if CYTHON_COMPILING_IN_PYSTON
- #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
- #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
-#else
- #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
- #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
-#endif
-#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
- #define __Pyx_PyThreadState_Current PyThreadState_GET()
-#elif PY_VERSION_HEX >= 0x03060000
- #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
-#elif PY_VERSION_HEX >= 0x03000000
- #define __Pyx_PyThreadState_Current PyThreadState_GET()
-#else
- #define __Pyx_PyThreadState_Current _PyThreadState_Current
-#endif
-#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
-#include "pythread.h"
-#define Py_tss_NEEDS_INIT 0
-typedef int Py_tss_t;
-static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
- *key = PyThread_create_key();
- return 0;
-}
-static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
- Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
- *key = Py_tss_NEEDS_INIT;
- return key;
-}
-static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
- PyObject_Free(key);
-}
-static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
- return *key != Py_tss_NEEDS_INIT;
-}
-static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
- PyThread_delete_key(*key);
- *key = Py_tss_NEEDS_INIT;
-}
-static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
- return PyThread_set_key_value(*key, value);
-}
-static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
- return PyThread_get_key_value(*key);
-}
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
-#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
-#else
-#define __Pyx_PyDict_NewPresized(n) PyDict_New()
-#endif
-#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
- #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
-#else
- #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
-#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
-#else
-#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name)
-#endif
-#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
- #define CYTHON_PEP393_ENABLED 1
- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
- 0 : _PyUnicode_Ready((PyObject *)(op)))
- #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
- #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
- #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
- #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
- #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
- #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
- #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
- #else
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
- #endif
-#else
- #define CYTHON_PEP393_ENABLED 0
- #define PyUnicode_1BYTE_KIND 1
- #define PyUnicode_2BYTE_KIND 2
- #define PyUnicode_4BYTE_KIND 4
- #define __Pyx_PyUnicode_READY(op) (0)
- #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
- #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
- #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
- #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
- #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
- #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
- #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
-#endif
-#if CYTHON_COMPILING_IN_PYPY
- #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
- #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
-#else
- #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
- #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
- PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
- #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
- #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
- #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
-#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
-#else
- #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
-#endif
-#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
- #define PyObject_ASCII(o) PyObject_Repr(o)
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyBaseString_Type PyUnicode_Type
- #define PyStringObject PyUnicodeObject
- #define PyString_Type PyUnicode_Type
- #define PyString_Check PyUnicode_Check
- #define PyString_CheckExact PyUnicode_CheckExact
-#ifndef PyObject_Unicode
- #define PyObject_Unicode PyObject_Str
-#endif
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
- #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
-#else
- #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
- #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
-#endif
-#ifndef PySet_CheckExact
- #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
-#endif
-#if PY_VERSION_HEX >= 0x030900A4
- #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
- #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
-#else
- #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
- #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
-#endif
-#if CYTHON_ASSUME_SAFE_MACROS
- #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
-#else
- #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyIntObject PyLongObject
- #define PyInt_Type PyLong_Type
- #define PyInt_Check(op) PyLong_Check(op)
- #define PyInt_CheckExact(op) PyLong_CheckExact(op)
- #define PyInt_FromString PyLong_FromString
- #define PyInt_FromUnicode PyLong_FromUnicode
- #define PyInt_FromLong PyLong_FromLong
- #define PyInt_FromSize_t PyLong_FromSize_t
- #define PyInt_FromSsize_t PyLong_FromSsize_t
- #define PyInt_AsLong PyLong_AsLong
- #define PyInt_AS_LONG PyLong_AS_LONG
- #define PyInt_AsSsize_t PyLong_AsSsize_t
- #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
- #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
- #define PyNumber_Int PyNumber_Long
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyBoolObject PyLongObject
-#endif
-#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
- #ifndef PyUnicode_InternFromString
- #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
- #endif
-#endif
-#if PY_VERSION_HEX < 0x030200A4
- typedef long Py_hash_t;
- #define __Pyx_PyInt_FromHash_t PyInt_FromLong
- #define __Pyx_PyInt_AsHash_t PyInt_AsLong
-#else
- #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
- #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
-#else
- #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
-#if CYTHON_USE_ASYNC_SLOTS
- #if PY_VERSION_HEX >= 0x030500B1
- #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
- #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
- #else
- #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
- #endif
-#else
- #define __Pyx_PyType_AsAsync(obj) NULL
-#endif
-#ifndef __Pyx_PyAsyncMethodsStruct
- typedef struct {
- unaryfunc am_await;
- unaryfunc am_aiter;
- unaryfunc am_anext;
- } __Pyx_PyAsyncMethodsStruct;
-#endif
-
-#if defined(WIN32) || defined(MS_WINDOWS)
- #define _USE_MATH_DEFINES
-#endif
-#include
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
- float value;
- memset(&value, 0xFF, sizeof(value));
- return value;
-}
-#endif
-#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
-#define __Pyx_truncl trunc
-#else
-#define __Pyx_truncl truncl
-#endif
-
-#define __PYX_MARK_ERR_POS(f_index, lineno) \
- { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
-#define __PYX_ERR(f_index, lineno, Ln_error) \
- { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
-
-#ifndef __PYX_EXTERN_C
- #ifdef __cplusplus
- #define __PYX_EXTERN_C extern "C"
- #else
- #define __PYX_EXTERN_C extern
- #endif
-#endif
-
-#define __PYX_HAVE__aiohttp___http_parser
-#define __PYX_HAVE_API__aiohttp___http_parser
-/* Early includes */
-#include
-#include
-#include "pythread.h"
-#include
-#include
-#include "../vendor/http-parser/http_parser.h"
-#include "_find_header.h"
-#ifdef _OPENMP
-#include
-#endif /* _OPENMP */
-
-#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
-#define CYTHON_WITHOUT_ASSERTIONS
-#endif
-
-typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
- const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
-
-#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
-#define __PYX_DEFAULT_STRING_ENCODING ""
-#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
-#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#define __Pyx_uchar_cast(c) ((unsigned char)c)
-#define __Pyx_long_cast(x) ((long)x)
-#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
- (sizeof(type) < sizeof(Py_ssize_t)) ||\
- (sizeof(type) > sizeof(Py_ssize_t) &&\
- likely(v < (type)PY_SSIZE_T_MAX ||\
- v == (type)PY_SSIZE_T_MAX) &&\
- (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
- v == (type)PY_SSIZE_T_MIN))) ||\
- (sizeof(type) == sizeof(Py_ssize_t) &&\
- (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
- v == (type)PY_SSIZE_T_MAX))) )
-static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
- return (size_t) i < (size_t) limit;
-}
-#if defined (__cplusplus) && __cplusplus >= 201103L
- #include
- #define __Pyx_sst_abs(value) std::abs(value)
-#elif SIZEOF_INT >= SIZEOF_SIZE_T
- #define __Pyx_sst_abs(value) abs(value)
-#elif SIZEOF_LONG >= SIZEOF_SIZE_T
- #define __Pyx_sst_abs(value) labs(value)
-#elif defined (_MSC_VER)
- #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
-#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define __Pyx_sst_abs(value) llabs(value)
-#elif defined (__GNUC__)
- #define __Pyx_sst_abs(value) __builtin_llabs(value)
-#else
- #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
-#endif
-static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
-static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
-#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
-#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
-#define __Pyx_PyBytes_FromString PyBytes_FromString
-#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
- #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#else
- #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
- #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
-#endif
-#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
-#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
-#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
-#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
-#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
-#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
-static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
- const Py_UNICODE *u_end = u;
- while (*u_end++) ;
- return (size_t)(u_end - u - 1);
-}
-#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
-#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
-#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
-#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
-#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
-#define __Pyx_PySequence_Tuple(obj)\
- (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
-#if CYTHON_ASSUME_SAFE_MACROS
-#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
-#else
-#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
-#endif
-#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
-#if PY_MAJOR_VERSION >= 3
-#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
-#else
-#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
-#endif
-#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-static int __Pyx_sys_getdefaultencoding_not_ascii;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
- PyObject* sys;
- PyObject* default_encoding = NULL;
- PyObject* ascii_chars_u = NULL;
- PyObject* ascii_chars_b = NULL;
- const char* default_encoding_c;
- sys = PyImport_ImportModule("sys");
- if (!sys) goto bad;
- default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
- Py_DECREF(sys);
- if (!default_encoding) goto bad;
- default_encoding_c = PyBytes_AsString(default_encoding);
- if (!default_encoding_c) goto bad;
- if (strcmp(default_encoding_c, "ascii") == 0) {
- __Pyx_sys_getdefaultencoding_not_ascii = 0;
- } else {
- char ascii_chars[128];
- int c;
- for (c = 0; c < 128; c++) {
- ascii_chars[c] = c;
- }
- __Pyx_sys_getdefaultencoding_not_ascii = 1;
- ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
- if (!ascii_chars_u) goto bad;
- ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
- if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
- PyErr_Format(
- PyExc_ValueError,
- "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
- default_encoding_c);
- goto bad;
- }
- Py_DECREF(ascii_chars_u);
- Py_DECREF(ascii_chars_b);
- }
- Py_DECREF(default_encoding);
- return 0;
-bad:
- Py_XDECREF(default_encoding);
- Py_XDECREF(ascii_chars_u);
- Py_XDECREF(ascii_chars_b);
- return -1;
-}
-#endif
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
-#else
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
-static char* __PYX_DEFAULT_STRING_ENCODING;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
- PyObject* sys;
- PyObject* default_encoding = NULL;
- char* default_encoding_c;
- sys = PyImport_ImportModule("sys");
- if (!sys) goto bad;
- default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
- Py_DECREF(sys);
- if (!default_encoding) goto bad;
- default_encoding_c = PyBytes_AsString(default_encoding);
- if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
- if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
- strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
- Py_DECREF(default_encoding);
- return 0;
-bad:
- Py_XDECREF(default_encoding);
- return -1;
-}
-#endif
-#endif
-
-
-/* Test for GCC > 2.95 */
-#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
- #define likely(x) __builtin_expect(!!(x), 1)
- #define unlikely(x) __builtin_expect(!!(x), 0)
-#else /* !__GNUC__ or GCC < 2.95 */
- #define likely(x) (x)
- #define unlikely(x) (x)
-#endif /* __GNUC__ */
-static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
-
-static PyObject *__pyx_m = NULL;
-static PyObject *__pyx_d;
-static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime = NULL;
-static PyObject *__pyx_empty_tuple;
-static PyObject *__pyx_empty_bytes;
-static PyObject *__pyx_empty_unicode;
-static int __pyx_lineno;
-static int __pyx_clineno = 0;
-static const char * __pyx_cfilenm= __FILE__;
-static const char *__pyx_filename;
-
-
-static const char *__pyx_f[] = {
- "aiohttp\\_http_parser.pyx",
- "stringsource",
- "type.pxd",
- "bool.pxd",
- "complex.pxd",
- "aiohttp\\_headers.pxi",
-};
-
-/*--- Type declarations ---*/
-struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage;
-struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage;
-struct __pyx_obj_7aiohttp_12_http_parser_HttpParser;
-struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser;
-struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser;
-struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct____repr__;
-struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr;
-struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__;
-struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr;
-struct __pyx_opt_args_7aiohttp_12_http_parser_10HttpParser__init;
-
-/* "aiohttp/_http_parser.pyx":327
- * PyMem_Free(self._csettings)
- *
- * cdef _init(self, cparser.http_parser_type mode, # <<<<<<<<<<<<<<
- * object protocol, object loop, int limit,
- * object timer=None,
- */
-struct __pyx_opt_args_7aiohttp_12_http_parser_10HttpParser__init {
- int __pyx_n;
- PyObject *timer;
- size_t max_line_size;
- size_t max_headers;
- size_t max_field_size;
- PyObject *payload_exception;
- int response_with_body;
- int read_until_eof;
- int auto_decompress;
-};
-
-/* "aiohttp/_http_parser.pyx":110
- *
- * @cython.freelist(DEFAULT_FREELIST_SIZE)
- * cdef class RawRequestMessage: # <<<<<<<<<<<<<<
- * cdef readonly str method
- * cdef readonly str path
- */
-struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage {
- PyObject_HEAD
- PyObject *method;
- PyObject *path;
- PyObject *version;
- PyObject *headers;
- PyObject *raw_headers;
- PyObject *should_close;
- PyObject *compression;
- PyObject *upgrade;
- PyObject *chunked;
- PyObject *url;
-};
-
-
-/* "aiohttp/_http_parser.pyx":210
- *
- * @cython.freelist(DEFAULT_FREELIST_SIZE)
- * cdef class RawResponseMessage: # <<<<<<<<<<<<<<
- * cdef readonly object version # HttpVersion
- * cdef readonly int code
- */
-struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage {
- PyObject_HEAD
- PyObject *version;
- int code;
- PyObject *reason;
- PyObject *headers;
- PyObject *raw_headers;
- PyObject *should_close;
- PyObject *compression;
- PyObject *upgrade;
- PyObject *chunked;
-};
-
-
-/* "aiohttp/_http_parser.pyx":272
- *
- * @cython.internal
- * cdef class HttpParser: # <<<<<<<<<<<<<<
- *
- * cdef:
- */
-struct __pyx_obj_7aiohttp_12_http_parser_HttpParser {
- PyObject_HEAD
- struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpParser *__pyx_vtab;
- struct http_parser *_cparser;
- struct http_parser_settings *_csettings;
- PyObject *_raw_name;
- PyObject *_raw_value;
- int _has_value;
- PyObject *_protocol;
- PyObject *_loop;
- PyObject *_timer;
- size_t _max_line_size;
- size_t _max_field_size;
- size_t _max_headers;
- int _response_with_body;
- int _read_until_eof;
- int _started;
- PyObject *_url;
- PyObject *_buf;
- PyObject *_path;
- PyObject *_reason;
- PyObject *_headers;
- PyObject *_raw_headers;
- int _upgraded;
- PyObject *_messages;
- PyObject *_payload;
- int _payload_error;
- PyObject *_payload_exception;
- PyObject *_last_error;
- int _auto_decompress;
- int _limit;
- PyObject *_content_encoding;
- Py_buffer py_buf;
-};
-
-
-/* "aiohttp/_http_parser.pyx":563
- *
- *
- * cdef class HttpRequestParser(HttpParser): # <<<<<<<<<<<<<<
- *
- * def __init__(self, protocol, loop, int limit, timer=None,
- */
-struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser {
- struct __pyx_obj_7aiohttp_12_http_parser_HttpParser __pyx_base;
-};
-
-
-/* "aiohttp/_http_parser.pyx":591
- *
- *
- * cdef class HttpResponseParser(HttpParser): # <<<<<<<<<<<<<<
- *
- * def __init__(self, protocol, loop, int limit, timer=None,
- */
-struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser {
- struct __pyx_obj_7aiohttp_12_http_parser_HttpParser __pyx_base;
-};
-
-
-/* "aiohttp/_http_parser.pyx":135
- * self.url = url
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * info = []
- * info.append(("method", self.method))
- */
-struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct____repr__ {
- PyObject_HEAD
- PyObject *__pyx_v_info;
-};
-
-
-/* "aiohttp/_http_parser.pyx":147
- * info.append(("chunked", self.chunked))
- * info.append(("url", self.url))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info) # <<<<<<<<<<<<<<
- * return ''
- *
- */
-struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr {
- PyObject_HEAD
- struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct____repr__ *__pyx_outer_scope;
- PyObject *__pyx_v_name;
- PyObject *__pyx_v_val;
-};
-
-
-/* "aiohttp/_http_parser.pyx":233
- * self.chunked = chunked
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * info = []
- * info.append(("version", self.version))
- */
-struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__ {
- PyObject_HEAD
- PyObject *__pyx_v_info;
-};
-
-
-/* "aiohttp/_http_parser.pyx":244
- * info.append(("upgrade", self.upgrade))
- * info.append(("chunked", self.chunked))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info) # <<<<<<<<<<<<<<
- * return ''
- *
- */
-struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr {
- PyObject_HEAD
- struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__ *__pyx_outer_scope;
- PyObject *__pyx_v_name;
- PyObject *__pyx_v_val;
-};
-
-
-
-/* "aiohttp/_http_parser.pyx":272
- *
- * @cython.internal
- * cdef class HttpParser: # <<<<<<<<<<<<<<
- *
- * cdef:
- */
-
-struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpParser {
- PyObject *(*_init)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *, enum http_parser_type, PyObject *, PyObject *, int, struct __pyx_opt_args_7aiohttp_12_http_parser_10HttpParser__init *__pyx_optional_args);
- PyObject *(*_process_header)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *);
- PyObject *(*_on_header_field)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *, char *, size_t);
- PyObject *(*_on_header_value)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *, char *, size_t);
- PyObject *(*_on_headers_complete)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *);
- PyObject *(*_on_message_complete)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *);
- PyObject *(*_on_chunk_header)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *);
- PyObject *(*_on_chunk_complete)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *);
- PyObject *(*_on_status_complete)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *);
- PyObject *(*http_version)(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *);
-};
-static struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpParser *__pyx_vtabptr_7aiohttp_12_http_parser_HttpParser;
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser_http_version(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *);
-
-
-/* "aiohttp/_http_parser.pyx":563
- *
- *
- * cdef class HttpRequestParser(HttpParser): # <<<<<<<<<<<<<<
- *
- * def __init__(self, protocol, loop, int limit, timer=None,
- */
-
-struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpRequestParser {
- struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpParser __pyx_base;
-};
-static struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpRequestParser *__pyx_vtabptr_7aiohttp_12_http_parser_HttpRequestParser;
-
-
-/* "aiohttp/_http_parser.pyx":591
- *
- *
- * cdef class HttpResponseParser(HttpParser): # <<<<<<<<<<<<<<
- *
- * def __init__(self, protocol, loop, int limit, timer=None,
- */
-
-struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpResponseParser {
- struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpParser __pyx_base;
-};
-static struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpResponseParser *__pyx_vtabptr_7aiohttp_12_http_parser_HttpResponseParser;
-
-/* --- Runtime support code (head) --- */
-/* Refnanny.proto */
-#ifndef CYTHON_REFNANNY
- #define CYTHON_REFNANNY 0
-#endif
-#if CYTHON_REFNANNY
- typedef struct {
- void (*INCREF)(void*, PyObject*, int);
- void (*DECREF)(void*, PyObject*, int);
- void (*GOTREF)(void*, PyObject*, int);
- void (*GIVEREF)(void*, PyObject*, int);
- void* (*SetupContext)(const char*, int, const char*);
- void (*FinishContext)(void**);
- } __Pyx_RefNannyAPIStruct;
- static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
- static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
- #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
-#ifdef WITH_THREAD
- #define __Pyx_RefNannySetupContext(name, acquire_gil)\
- if (acquire_gil) {\
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
- PyGILState_Release(__pyx_gilstate_save);\
- } else {\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
- }
-#else
- #define __Pyx_RefNannySetupContext(name, acquire_gil)\
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
-#endif
- #define __Pyx_RefNannyFinishContext()\
- __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
- #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
- #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
- #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
- #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
-#else
- #define __Pyx_RefNannyDeclarations
- #define __Pyx_RefNannySetupContext(name, acquire_gil)
- #define __Pyx_RefNannyFinishContext()
- #define __Pyx_INCREF(r) Py_INCREF(r)
- #define __Pyx_DECREF(r) Py_DECREF(r)
- #define __Pyx_GOTREF(r)
- #define __Pyx_GIVEREF(r)
- #define __Pyx_XINCREF(r) Py_XINCREF(r)
- #define __Pyx_XDECREF(r) Py_XDECREF(r)
- #define __Pyx_XGOTREF(r)
- #define __Pyx_XGIVEREF(r)
-#endif
-#define __Pyx_XDECREF_SET(r, v) do {\
- PyObject *tmp = (PyObject *) r;\
- r = v; __Pyx_XDECREF(tmp);\
- } while (0)
-#define __Pyx_DECREF_SET(r, v) do {\
- PyObject *tmp = (PyObject *) r;\
- r = v; __Pyx_DECREF(tmp);\
- } while (0)
-#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
-#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
-
-/* PyObjectGetAttrStr.proto */
-#if CYTHON_USE_TYPE_SLOTS
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
-#endif
-
-/* GetBuiltinName.proto */
-static PyObject *__Pyx_GetBuiltinName(PyObject *name);
-
-/* GetItemInt.proto */
-#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
- (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
- __Pyx_GetItemInt_Generic(o, to_py_func(i))))
-#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
- (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
- (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
- __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
- (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
- int is_list, int wraparound, int boundscheck);
-
-/* decode_c_string_utf16.proto */
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
- int byteorder = 0;
- return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
- int byteorder = -1;
- return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
- int byteorder = 1;
- return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
-}
-
-/* decode_c_bytes.proto */
-static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
- const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
- const char* encoding, const char* errors,
- PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
-
-/* decode_bytes.proto */
-static CYTHON_INLINE PyObject* __Pyx_decode_bytes(
- PyObject* string, Py_ssize_t start, Py_ssize_t stop,
- const char* encoding, const char* errors,
- PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
- return __Pyx_decode_c_bytes(
- PyBytes_AS_STRING(string), PyBytes_GET_SIZE(string),
- start, stop, encoding, errors, decode_func);
-}
-
-/* RaiseArgTupleInvalid.proto */
-static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
- Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
-
-/* RaiseDoubleKeywords.proto */
-static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
-
-/* ParseKeywords.proto */
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
- PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
- const char* function_name);
-
-/* None.proto */
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);
-
-/* RaiseTooManyValuesToUnpack.proto */
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
-
-/* RaiseNeedMoreValuesToUnpack.proto */
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
-
-/* IterFinish.proto */
-static CYTHON_INLINE int __Pyx_IterFinish(void);
-
-/* UnpackItemEndCheck.proto */
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
-
-/* ListCompAppend.proto */
-#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
-static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
- PyListObject* L = (PyListObject*) list;
- Py_ssize_t len = Py_SIZE(list);
- if (likely(L->allocated > len)) {
- Py_INCREF(x);
- PyList_SET_ITEM(list, len, x);
- __Pyx_SET_SIZE(list, len + 1);
- return 0;
- }
- return PyList_Append(list, x);
-}
-#else
-#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
-#endif
-
-/* ListAppend.proto */
-#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
-static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
- PyListObject* L = (PyListObject*) list;
- Py_ssize_t len = Py_SIZE(list);
- if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
- Py_INCREF(x);
- PyList_SET_ITEM(list, len, x);
- __Pyx_SET_SIZE(list, len + 1);
- return 0;
- }
- return PyList_Append(list, x);
-}
-#else
-#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
-#endif
-
-/* KeywordStringCheck.proto */
-static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);
-
-/* ExtTypeTest.proto */
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
-
-/* PyDictContains.proto */
-static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
- int result = PyDict_Contains(dict, item);
- return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
-
-/* DictGetItem.proto */
-#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
-static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
-#define __Pyx_PyObject_Dict_GetItem(obj, name)\
- (likely(PyDict_CheckExact(obj)) ?\
- __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
-#else
-#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
-#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name)
-#endif
-
-/* PyErrExceptionMatches.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
-static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
-#else
-#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
-#endif
-
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred() PyErr_Occurred()
-#endif
-
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
-#endif
-
-/* GetAttr.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
-
-/* GetAttr3.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
-
-/* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
-#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
-#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
-#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
- (version_var) = __PYX_GET_DICT_VERSION(dict);\
- (cache_var) = (value);
-#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
- static PY_UINT64_T __pyx_dict_version = 0;\
- static PyObject *__pyx_dict_cached_value = NULL;\
- if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
- (VAR) = __pyx_dict_cached_value;\
- } else {\
- (VAR) = __pyx_dict_cached_value = (LOOKUP);\
- __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
- }\
-}
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
-static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
-static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
-#else
-#define __PYX_GET_DICT_VERSION(dict) (0)
-#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
-#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
-#endif
-
-/* GetModuleGlobalName.proto */
-#if CYTHON_USE_DICT_VERSIONS
-#define __Pyx_GetModuleGlobalName(var, name) {\
- static PY_UINT64_T __pyx_dict_version = 0;\
- static PyObject *__pyx_dict_cached_value = NULL;\
- (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
- (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
- __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
-#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
- PY_UINT64_T __pyx_dict_version;\
- PyObject *__pyx_dict_cached_value;\
- (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
-}
-static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
-#else
-#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
-#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
-static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
-#endif
-
-/* PyFunctionFastCall.proto */
-#if CYTHON_FAST_PYCALL
-#define __Pyx_PyFunction_FastCall(func, args, nargs)\
- __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
-#if 1 || PY_VERSION_HEX < 0x030600B1
-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
-#else
-#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
-#endif
-#define __Pyx_BUILD_ASSERT_EXPR(cond)\
- (sizeof(char [1 - 2*!(cond)]) - 1)
-#ifndef Py_MEMBER_SIZE
-#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
-#endif
- static size_t __pyx_pyframe_localsplus_offset = 0;
- #include "frameobject.h"
- #define __Pxy_PyFrame_Initialize_Offsets()\
- ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
- (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
- #define __Pyx_PyFrame_GetLocalsplus(frame)\
- (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
-#endif
-
-/* PyObjectCall.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
-#else
-#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
-#endif
-
-/* PyObjectCallMethO.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-/* PyObjectCallNoArg.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
-#else
-#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
-#endif
-
-/* PyCFunctionFastCall.proto */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
-#else
-#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
-#endif
-
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-/* PyObjectCall2Args.proto */
-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
-
-/* PySequenceContains.proto */
-static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
- int result = PySequence_Contains(seq, item);
- return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
-
-/* RaiseException.proto */
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
-
-/* IncludeStringH.proto */
-#include
-
-/* BytesEquals.proto */
-static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
-
-/* UnicodeEquals.proto */
-static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
-
-/* SliceObject.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
- PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
- PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
- int has_cstart, int has_cstop, int wraparound);
-
-/* decode_bytearray.proto */
-static CYTHON_INLINE PyObject* __Pyx_decode_bytearray(
- PyObject* string, Py_ssize_t start, Py_ssize_t stop,
- const char* encoding, const char* errors,
- PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
- return __Pyx_decode_c_bytes(
- PyByteArray_AS_STRING(string), PyByteArray_GET_SIZE(string),
- start, stop, encoding, errors, decode_func);
-}
-
-/* GetException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb)
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
-#endif
-
-/* SwapException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#else
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
-#endif
-
-/* GetTopmostException.proto */
-#if CYTHON_USE_EXC_INFO_STACK
-static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
-#endif
-
-/* SaveResetException.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-#else
-#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb)
-#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb)
-#endif
-
-/* decode_c_string.proto */
-static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
- const char* cstring, Py_ssize_t start, Py_ssize_t stop,
- const char* encoding, const char* errors,
- PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
-
-/* UnpackUnboundCMethod.proto */
-typedef struct {
- PyObject *type;
- PyObject **method_name;
- PyCFunction func;
- PyObject *method;
- int flag;
-} __Pyx_CachedCFunction;
-
-/* CallUnboundCMethod1.proto */
-static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
-#else
-#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg)
-#endif
-
-/* Import.proto */
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
-
-/* ImportFrom.proto */
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
-
-/* HasAttr.proto */
-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
-
-/* PyObject_GenericGetAttrNoDict.proto */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
-#endif
-
-/* PyObject_GenericGetAttr.proto */
-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
-static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
-#else
-#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
-#endif
-
-/* PyObjectGetAttrStrNoError.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
-
-/* SetupReduce.proto */
-static int __Pyx_setup_reduce(PyObject* type_obj);
-
-/* SetVTable.proto */
-static int __Pyx_SetVtable(PyObject *dict, void *vtable);
-
-/* TypeImport.proto */
-#ifndef __PYX_HAVE_RT_ImportType_proto
-#define __PYX_HAVE_RT_ImportType_proto
-enum __Pyx_ImportType_CheckSize {
- __Pyx_ImportType_CheckSize_Error = 0,
- __Pyx_ImportType_CheckSize_Warn = 1,
- __Pyx_ImportType_CheckSize_Ignore = 2
-};
-static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
-#endif
-
-/* CLineInTraceback.proto */
-#ifdef CYTHON_CLINE_IN_TRACEBACK
-#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
-#else
-static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
-#endif
-
-/* CodeObjectCache.proto */
-typedef struct {
- PyCodeObject* code_object;
- int code_line;
-} __Pyx_CodeObjectCacheEntry;
-struct __Pyx_CodeObjectCache {
- int count;
- int max_count;
- __Pyx_CodeObjectCacheEntry* entries;
-};
-static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
-static PyCodeObject *__pyx_find_code_object(int code_line);
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
-
-/* AddTraceback.proto */
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
- int py_line, const char *filename);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_short(unsigned short value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
-
-/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint16_t(uint16_t value);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE enum http_method __Pyx_PyInt_As_enum__http_method(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);
-
-/* CIntFromPy.proto */
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
-/* FastTypeChecks.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
-static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
-#else
-#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
-#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
-#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
-#endif
-#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
-
-/* FetchCommonType.proto */
-static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
-
-/* PyObjectGetMethod.proto */
-static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
-
-/* PyObjectCallMethod1.proto */
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
-
-/* CoroutineBase.proto */
-typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *);
-#if CYTHON_USE_EXC_INFO_STACK
-#define __Pyx_ExcInfoStruct _PyErr_StackItem
-#else
-typedef struct {
- PyObject *exc_type;
- PyObject *exc_value;
- PyObject *exc_traceback;
-} __Pyx_ExcInfoStruct;
-#endif
-typedef struct {
- PyObject_HEAD
- __pyx_coroutine_body_t body;
- PyObject *closure;
- __Pyx_ExcInfoStruct gi_exc_state;
- PyObject *gi_weakreflist;
- PyObject *classobj;
- PyObject *yieldfrom;
- PyObject *gi_name;
- PyObject *gi_qualname;
- PyObject *gi_modulename;
- PyObject *gi_code;
- int resume_label;
- char is_running;
-} __pyx_CoroutineObject;
-static __pyx_CoroutineObject *__Pyx__Coroutine_New(
- PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
- PyObject *name, PyObject *qualname, PyObject *module_name);
-static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
- __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
- PyObject *name, PyObject *qualname, PyObject *module_name);
-static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
-static int __Pyx_Coroutine_clear(PyObject *self);
-static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
-static PyObject *__Pyx_Coroutine_Close(PyObject *self);
-static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
-#if CYTHON_USE_EXC_INFO_STACK
-#define __Pyx_Coroutine_SwapException(self)
-#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
-#else
-#define __Pyx_Coroutine_SwapException(self) {\
- __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
- __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
- }
-#define __Pyx_Coroutine_ResetAndClearException(self) {\
- __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
- (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
- }
-#endif
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
- __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
-#else
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
- __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
-#endif
-static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
-static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);
-
-/* PatchModuleWithCoroutine.proto */
-static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);
-
-/* PatchGeneratorABC.proto */
-static int __Pyx_patch_abc(void);
-
-/* Generator.proto */
-#define __Pyx_Generator_USED
-static PyTypeObject *__pyx_GeneratorType = 0;
-#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
-#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
- __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
-static PyObject *__Pyx_Generator_Next(PyObject *self);
-static int __pyx_Generator_init(void);
-
-/* CheckBinaryVersion.proto */
-static int __Pyx_check_binary_version(void);
-
-/* InitStrings.proto */
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__init(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, enum http_parser_type __pyx_v_mode, PyObject *__pyx_v_protocol, PyObject *__pyx_v_loop, int __pyx_v_limit, struct __pyx_opt_args_7aiohttp_12_http_parser_10HttpParser__init *__pyx_optional_args); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__process_header(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_header_field(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, char *__pyx_v_at, size_t __pyx_v_length); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_header_value(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, char *__pyx_v_at, size_t __pyx_v_length); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_headers_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_message_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_chunk_header(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_chunk_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_status_complete(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto*/
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser_http_version(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_17HttpRequestParser__on_status_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *__pyx_v_self); /* proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_18HttpResponseParser__on_status_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *__pyx_v_self); /* proto*/
-
-/* Module declarations from 'cpython.version' */
-
-/* Module declarations from '__builtin__' */
-
-/* Module declarations from 'cpython.type' */
-static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
-
-/* Module declarations from 'libc.string' */
-
-/* Module declarations from 'libc.stdio' */
-
-/* Module declarations from 'cpython.object' */
-
-/* Module declarations from 'cpython.ref' */
-
-/* Module declarations from 'cpython.exc' */
-
-/* Module declarations from 'cpython.module' */
-
-/* Module declarations from 'cpython.mem' */
-
-/* Module declarations from 'cpython.tuple' */
-
-/* Module declarations from 'cpython.list' */
-
-/* Module declarations from 'cpython.sequence' */
-
-/* Module declarations from 'cpython.mapping' */
-
-/* Module declarations from 'cpython.iterator' */
-
-/* Module declarations from 'cpython.number' */
-
-/* Module declarations from 'cpython.int' */
-
-/* Module declarations from '__builtin__' */
-
-/* Module declarations from 'cpython.bool' */
-static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;
-
-/* Module declarations from 'cpython.long' */
-
-/* Module declarations from 'cpython.float' */
-
-/* Module declarations from '__builtin__' */
-
-/* Module declarations from 'cpython.complex' */
-static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;
-
-/* Module declarations from 'cpython.string' */
-
-/* Module declarations from 'cpython.unicode' */
-
-/* Module declarations from 'cpython.dict' */
-
-/* Module declarations from 'cpython.instance' */
-
-/* Module declarations from 'cpython.function' */
-
-/* Module declarations from 'cpython.method' */
-
-/* Module declarations from 'cpython.weakref' */
-
-/* Module declarations from 'cpython.getargs' */
-
-/* Module declarations from 'cpython.pythread' */
-
-/* Module declarations from 'cpython.pystate' */
-
-/* Module declarations from 'cpython.cobject' */
-
-/* Module declarations from 'cpython.oldbuffer' */
-
-/* Module declarations from 'cpython.set' */
-
-/* Module declarations from 'cpython.buffer' */
-
-/* Module declarations from 'cpython.bytes' */
-
-/* Module declarations from 'cpython.pycapsule' */
-
-/* Module declarations from 'cpython' */
-
-/* Module declarations from 'libc.limits' */
-
-/* Module declarations from 'cython' */
-
-/* Module declarations from 'aiohttp' */
-
-/* Module declarations from 'libc.stdint' */
-
-/* Module declarations from 'aiohttp._cparser' */
-
-/* Module declarations from 'aiohttp._find_header' */
-
-/* Module declarations from 'aiohttp._http_parser' */
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser_RawRequestMessage = 0;
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser_RawResponseMessage = 0;
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser_HttpParser = 0;
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser_HttpRequestParser = 0;
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser_HttpResponseParser = 0;
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser___pyx_scope_struct____repr__ = 0;
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr = 0;
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__ = 0;
-static PyTypeObject *__pyx_ptype_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_headers = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_URL = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_URL_build = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_CIMultiDict = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_CIMultiDictProxy = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_HttpVersion = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_HttpVersion10 = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_HttpVersion11 = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_SEC_WEBSOCKET_KEY1 = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_CONTENT_ENCODING = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_EMPTY_PAYLOAD = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_StreamReader = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser_DeflateBuffer = 0;
-static PyObject *__pyx_v_7aiohttp_12_http_parser__http_method = 0;
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_extend(PyObject *, char const *, size_t); /*proto*/
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_http_method_str(int); /*proto*/
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_find_header(PyObject *); /*proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser__new_request_message(PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, int, PyObject *, int, int, PyObject *); /*proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser__new_response_message(PyObject *, int, PyObject *, PyObject *, PyObject *, int, PyObject *, int, int); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_message_begin(struct http_parser *); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_url(struct http_parser *, char const *, size_t); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_status(struct http_parser *, char const *, size_t); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_header_field(struct http_parser *, char const *, size_t); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_header_value(struct http_parser *, char const *, size_t); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_headers_complete(struct http_parser *); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_body(struct http_parser *, char const *, size_t); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_message_complete(struct http_parser *); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_chunk_header(struct http_parser *); /*proto*/
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_chunk_complete(struct http_parser *); /*proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser_parser_error_from_errno(enum http_errno); /*proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser__parse_url(char *, size_t); /*proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser___pyx_unpickle_RawRequestMessage__set_state(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *, PyObject *); /*proto*/
-static PyObject *__pyx_f_7aiohttp_12_http_parser___pyx_unpickle_RawResponseMessage__set_state(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *, PyObject *); /*proto*/
-#define __Pyx_MODULE_NAME "aiohttp._http_parser"
-extern int __pyx_module_is_main_aiohttp___http_parser;
-int __pyx_module_is_main_aiohttp___http_parser = 0;
-
-/* Implementation of 'aiohttp._http_parser' */
-static PyObject *__pyx_builtin_range;
-static PyObject *__pyx_builtin_MemoryError;
-static PyObject *__pyx_builtin_TypeError;
-static PyObject *__pyx_builtin_BaseException;
-static const char __pyx_k_[] = "=";
-static const char __pyx_k_i[] = "i";
-static const char __pyx_k_TE[] = "TE";
-static const char __pyx_k__2[] = ", ";
-static const char __pyx_k__3[] = ")>";
-static const char __pyx_k__4[] = "";
-static const char __pyx_k_br[] = "br";
-static const char __pyx_k_AGE[] = "AGE";
-static const char __pyx_k_URI[] = "URI";
-static const char __pyx_k_URL[] = "URL";
-static const char __pyx_k_VIA[] = "VIA";
-static const char __pyx_k__11[] = ":";
-static const char __pyx_k_add[] = "add";
-static const char __pyx_k_all[] = "__all__";
-static const char __pyx_k_new[] = "__new__";
-static const char __pyx_k_url[] = "url";
-static const char __pyx_k_DATE[] = "DATE";
-static const char __pyx_k_ETAG[] = "ETAG";
-static const char __pyx_k_FROM[] = "FROM";
-static const char __pyx_k_HOST[] = "HOST";
-static const char __pyx_k_LINK[] = "LINK";
-static const char __pyx_k_VARY[] = "VARY";
-static const char __pyx_k_args[] = "args";
-static const char __pyx_k_code[] = "code";
-static const char __pyx_k_dict[] = "__dict__";
-static const char __pyx_k_gzip[] = "gzip";
-static const char __pyx_k_hdrs[] = "hdrs";
-static const char __pyx_k_host[] = "host";
-static const char __pyx_k_loop[] = "loop";
-static const char __pyx_k_main[] = "__main__";
-static const char __pyx_k_name[] = "__name__";
-static const char __pyx_k_path[] = "path";
-static const char __pyx_k_port[] = "port";
-static const char __pyx_k_send[] = "send";
-static const char __pyx_k_test[] = "__test__";
-static const char __pyx_k_user[] = "user";
-static const char __pyx_k_yarl[] = "yarl";
-static const char __pyx_k_ALLOW[] = "ALLOW";
-static const char __pyx_k_RANGE[] = "RANGE";
-static const char __pyx_k_URL_2[] = "_URL";
-static const char __pyx_k_build[] = "build";
-static const char __pyx_k_close[] = "close";
-static const char __pyx_k_limit[] = "limit";
-static const char __pyx_k_lower[] = "lower";
-static const char __pyx_k_range[] = "range";
-static const char __pyx_k_throw[] = "throw";
-static const char __pyx_k_timer[] = "timer";
-static const char __pyx_k_ACCEPT[] = "ACCEPT";
-static const char __pyx_k_COOKIE[] = "COOKIE";
-static const char __pyx_k_DIGEST[] = "DIGEST";
-static const char __pyx_k_EXPECT[] = "EXPECT";
-static const char __pyx_k_ORIGIN[] = "ORIGIN";
-static const char __pyx_k_PRAGMA[] = "PRAGMA";
-static const char __pyx_k_SERVER[] = "SERVER";
-static const char __pyx_k_format[] = "format";
-static const char __pyx_k_import[] = "__import__";
-static const char __pyx_k_method[] = "method";
-static const char __pyx_k_pickle[] = "pickle";
-static const char __pyx_k_py_buf[] = "py_buf";
-static const char __pyx_k_reason[] = "reason";
-static const char __pyx_k_reduce[] = "__reduce__";
-static const char __pyx_k_scheme[] = "scheme";
-static const char __pyx_k_update[] = "update";
-static const char __pyx_k_EXPIRES[] = "EXPIRES";
-static const char __pyx_k_REFERER[] = "REFERER";
-static const char __pyx_k_TRAILER[] = "TRAILER";
-static const char __pyx_k_UPGRADE[] = "UPGRADE";
-static const char __pyx_k_WARNING[] = "WARNING";
-static const char __pyx_k_aiohttp[] = "aiohttp";
-static const char __pyx_k_chunked[] = "chunked";
-static const char __pyx_k_deflate[] = "deflate";
-static const char __pyx_k_encoded[] = "encoded";
-static const char __pyx_k_genexpr[] = "genexpr";
-static const char __pyx_k_headers[] = "headers";
-static const char __pyx_k_streams[] = "streams";
-static const char __pyx_k_unknown[] = "";
-static const char __pyx_k_upgrade[] = "upgrade";
-static const char __pyx_k_version[] = "version";
-static const char __pyx_k_IF_MATCH[] = "IF_MATCH";
-static const char __pyx_k_IF_RANGE[] = "IF_RANGE";
-static const char __pyx_k_LOCATION[] = "LOCATION";
-static const char __pyx_k_buf_data[] = "buf_data";
-static const char __pyx_k_feed_eof[] = "feed_eof";
-static const char __pyx_k_fragment[] = "fragment";
-static const char __pyx_k_getstate[] = "__getstate__";
-static const char __pyx_k_password[] = "password";
-static const char __pyx_k_protocol[] = "protocol";
-static const char __pyx_k_pyx_type[] = "__pyx_type";
-static const char __pyx_k_setstate[] = "__setstate__";
-static const char __pyx_k_FORWARDED[] = "FORWARDED";
-static const char __pyx_k_TypeError[] = "TypeError";
-static const char __pyx_k_feed_data[] = "feed_data";
-static const char __pyx_k_multidict[] = "multidict";
-static const char __pyx_k_parse_url[] = "parse_url";
-static const char __pyx_k_partition[] = "partition";
-static const char __pyx_k_pyx_state[] = "__pyx_state";
-static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
-static const char __pyx_k_CONNECTION[] = "CONNECTION";
-static const char __pyx_k_KEEP_ALIVE[] = "KEEP_ALIVE";
-static const char __pyx_k_SET_COOKIE[] = "SET_COOKIE";
-static const char __pyx_k_USER_AGENT[] = "USER_AGENT";
-static const char __pyx_k_pyx_result[] = "__pyx_result";
-static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
-static const char __pyx_k_CIMultiDict[] = "CIMultiDict";
-static const char __pyx_k_CONTENT_MD5[] = "CONTENT_MD5";
-static const char __pyx_k_DESTINATION[] = "DESTINATION";
-static const char __pyx_k_HttpVersion[] = "HttpVersion";
-static const char __pyx_k_LineTooLong[] = "LineTooLong";
-static const char __pyx_k_MemoryError[] = "MemoryError";
-static const char __pyx_k_PickleError[] = "PickleError";
-static const char __pyx_k_RETRY_AFTER[] = "RETRY_AFTER";
-static const char __pyx_k_WANT_DIGEST[] = "WANT_DIGEST";
-static const char __pyx_k_compression[] = "compression";
-static const char __pyx_k_http_parser[] = "http_parser";
-static const char __pyx_k_http_writer[] = "http_writer";
-static const char __pyx_k_max_headers[] = "max_headers";
-static const char __pyx_k_raw_headers[] = "raw_headers";
-static const char __pyx_k_CONTENT_TYPE[] = "CONTENT_TYPE";
-static const char __pyx_k_MAX_FORWARDS[] = "MAX_FORWARDS";
-static const char __pyx_k_StreamReader[] = "StreamReader";
-static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
-static const char __pyx_k_query_string[] = "query_string";
-static const char __pyx_k_should_close[] = "should_close";
-static const char __pyx_k_stringsource[] = "stringsource";
-static const char __pyx_k_ACCEPT_RANGES[] = "ACCEPT_RANGES";
-static const char __pyx_k_AUTHORIZATION[] = "AUTHORIZATION";
-static const char __pyx_k_BadStatusLine[] = "BadStatusLine";
-static const char __pyx_k_BaseException[] = "BaseException";
-static const char __pyx_k_CACHE_CONTROL[] = "CACHE_CONTROL";
-static const char __pyx_k_CIMultiDict_2[] = "_CIMultiDict";
-static const char __pyx_k_CONTENT_RANGE[] = "CONTENT_RANGE";
-static const char __pyx_k_DeflateBuffer[] = "DeflateBuffer";
-static const char __pyx_k_EMPTY_PAYLOAD[] = "EMPTY_PAYLOAD";
-static const char __pyx_k_HttpVersion10[] = "HttpVersion10";
-static const char __pyx_k_HttpVersion11[] = "HttpVersion11";
-static const char __pyx_k_HttpVersion_2[] = "_HttpVersion";
-static const char __pyx_k_IF_NONE_MATCH[] = "IF_NONE_MATCH";
-static const char __pyx_k_InvalidHeader[] = "InvalidHeader";
-static const char __pyx_k_LAST_EVENT_ID[] = "LAST_EVENT_ID";
-static const char __pyx_k_LAST_MODIFIED[] = "LAST_MODIFIED";
-static const char __pyx_k_invalid_url_r[] = "invalid url {!r}";
-static const char __pyx_k_max_line_size[] = "max_line_size";
-static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
-static const char __pyx_k_set_exception[] = "set_exception";
-static const char __pyx_k_ACCEPT_CHARSET[] = "ACCEPT_CHARSET";
-static const char __pyx_k_BadHttpMessage[] = "BadHttpMessage";
-static const char __pyx_k_CONTENT_LENGTH[] = "CONTENT_LENGTH";
-static const char __pyx_k_StreamReader_2[] = "_StreamReader";
-static const char __pyx_k_max_field_size[] = "max_field_size";
-static const char __pyx_k_read_until_eof[] = "read_until_eof";
-static const char __pyx_k_ACCEPT_ENCODING[] = "ACCEPT_ENCODING";
-static const char __pyx_k_ACCEPT_LANGUAGE[] = "ACCEPT_LANGUAGE";
-static const char __pyx_k_DeflateBuffer_2[] = "_DeflateBuffer";
-static const char __pyx_k_EMPTY_PAYLOAD_2[] = "_EMPTY_PAYLOAD";
-static const char __pyx_k_HttpVersion10_2[] = "_HttpVersion10";
-static const char __pyx_k_HttpVersion11_2[] = "_HttpVersion11";
-static const char __pyx_k_InvalidURLError[] = "InvalidURLError";
-static const char __pyx_k_X_FORWARDED_FOR[] = "X_FORWARDED_FOR";
-static const char __pyx_k_auto_decompress[] = "auto_decompress";
-static const char __pyx_k_http_exceptions[] = "http_exceptions";
-static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
-static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
-static const char __pyx_k_CIMultiDictProxy[] = "CIMultiDictProxy";
-static const char __pyx_k_CONTENT_ENCODING[] = "CONTENT_ENCODING";
-static const char __pyx_k_CONTENT_LANGUAGE[] = "CONTENT_LANGUAGE";
-static const char __pyx_k_CONTENT_LOCATION[] = "CONTENT_LOCATION";
-static const char __pyx_k_WWW_AUTHENTICATE[] = "WWW_AUTHENTICATE";
-static const char __pyx_k_X_FORWARDED_HOST[] = "X_FORWARDED_HOST";
-static const char __pyx_k_HttpRequestParser[] = "HttpRequestParser";
-static const char __pyx_k_IF_MODIFIED_SINCE[] = "IF_MODIFIED_SINCE";
-static const char __pyx_k_RawRequestMessage[] = ".genexpr";
-static const char __pyx_k_ACCESS_CONTROL_MAX_AGE[] = "ACCESS_CONTROL_MAX_AGE";
-static const char __pyx_k_SEC_WEBSOCKET_PROTOCOL[] = "SEC_WEBSOCKET_PROTOCOL";
-static const char __pyx_k_Header_name_is_too_long[] = "Header name is too long";
-static const char __pyx_k_Status_line_is_too_long[] = "Status line is too long";
-static const char __pyx_k_Header_value_is_too_long[] = "Header value is too long";
-static const char __pyx_k_SEC_WEBSOCKET_EXTENSIONS[] = "SEC_WEBSOCKET_EXTENSIONS";
-static const char __pyx_k_aiohttp__http_parser_pyx[] = "aiohttp\\_http_parser.pyx";
-static const char __pyx_k_end_http_chunk_receiving[] = "end_http_chunk_receiving";
-static const char __pyx_k_CONTENT_TRANSFER_ENCODING[] = "CONTENT_TRANSFER_ENCODING";
-static const char __pyx_k_begin_http_chunk_receiving[] = "begin_http_chunk_receiving";
-static const char __pyx_k_ACCESS_CONTROL_ALLOW_ORIGIN[] = "ACCESS_CONTROL_ALLOW_ORIGIN";
-static const char __pyx_k_ACCESS_CONTROL_ALLOW_HEADERS[] = "ACCESS_CONTROL_ALLOW_HEADERS";
-static const char __pyx_k_ACCESS_CONTROL_ALLOW_METHODS[] = "ACCESS_CONTROL_ALLOW_METHODS";
-static const char __pyx_k_ACCESS_CONTROL_EXPOSE_HEADERS[] = "ACCESS_CONTROL_EXPOSE_HEADERS";
-static const char __pyx_k_ACCESS_CONTROL_REQUEST_METHOD[] = "ACCESS_CONTROL_REQUEST_METHOD";
-static const char __pyx_k_ACCESS_CONTROL_REQUEST_HEADERS[] = "ACCESS_CONTROL_REQUEST_HEADERS";
-static const char __pyx_k_pyx_unpickle_RawRequestMessage[] = "__pyx_unpickle_RawRequestMessage";
-static const char __pyx_k_pyx_unpickle_RawResponseMessag[] = "__pyx_unpickle_RawResponseMessage";
-static const char __pyx_k_ACCESS_CONTROL_ALLOW_CREDENTIALS[] = "ACCESS_CONTROL_ALLOW_CREDENTIALS";
-static const char __pyx_k_Incompatible_checksums_s_vs_0x14[] = "Incompatible checksums (%s vs 0x1408252 = (chunked, compression, headers, method, path, raw_headers, should_close, upgrade, url, version))";
-static const char __pyx_k_Incompatible_checksums_s_vs_0xc7[] = "Incompatible checksums (%s vs 0xc7706dc = (chunked, code, compression, headers, raw_headers, reason, should_close, upgrade, version))";
-static const char __pyx_k_Not_enough_data_for_satisfy_cont[] = "Not enough data for satisfy content length header.";
-static const char __pyx_k_Not_enough_data_for_satisfy_tran[] = "Not enough data for satisfy transfer length header.";
-static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
-static PyObject *__pyx_kp_u_;
-static PyObject *__pyx_n_s_ACCEPT;
-static PyObject *__pyx_n_s_ACCEPT_CHARSET;
-static PyObject *__pyx_n_s_ACCEPT_ENCODING;
-static PyObject *__pyx_n_s_ACCEPT_LANGUAGE;
-static PyObject *__pyx_n_s_ACCEPT_RANGES;
-static PyObject *__pyx_n_s_ACCESS_CONTROL_ALLOW_CREDENTIALS;
-static PyObject *__pyx_n_s_ACCESS_CONTROL_ALLOW_HEADERS;
-static PyObject *__pyx_n_s_ACCESS_CONTROL_ALLOW_METHODS;
-static PyObject *__pyx_n_s_ACCESS_CONTROL_ALLOW_ORIGIN;
-static PyObject *__pyx_n_s_ACCESS_CONTROL_EXPOSE_HEADERS;
-static PyObject *__pyx_n_s_ACCESS_CONTROL_MAX_AGE;
-static PyObject *__pyx_n_s_ACCESS_CONTROL_REQUEST_HEADERS;
-static PyObject *__pyx_n_s_ACCESS_CONTROL_REQUEST_METHOD;
-static PyObject *__pyx_n_s_AGE;
-static PyObject *__pyx_n_s_ALLOW;
-static PyObject *__pyx_n_s_AUTHORIZATION;
-static PyObject *__pyx_n_s_BadHttpMessage;
-static PyObject *__pyx_n_s_BadStatusLine;
-static PyObject *__pyx_n_s_BaseException;
-static PyObject *__pyx_n_s_CACHE_CONTROL;
-static PyObject *__pyx_n_s_CIMultiDict;
-static PyObject *__pyx_n_s_CIMultiDictProxy;
-static PyObject *__pyx_n_s_CIMultiDictProxy_2;
-static PyObject *__pyx_n_s_CIMultiDict_2;
-static PyObject *__pyx_n_s_CONNECTION;
-static PyObject *__pyx_n_s_CONTENT_DISPOSITION;
-static PyObject *__pyx_n_s_CONTENT_ENCODING;
-static PyObject *__pyx_n_s_CONTENT_LANGUAGE;
-static PyObject *__pyx_n_s_CONTENT_LENGTH;
-static PyObject *__pyx_n_s_CONTENT_LOCATION;
-static PyObject *__pyx_n_s_CONTENT_MD5;
-static PyObject *__pyx_n_s_CONTENT_RANGE;
-static PyObject *__pyx_n_s_CONTENT_TRANSFER_ENCODING;
-static PyObject *__pyx_n_s_CONTENT_TYPE;
-static PyObject *__pyx_n_s_COOKIE;
-static PyObject *__pyx_n_s_ContentLengthError;
-static PyObject *__pyx_n_s_DATE;
-static PyObject *__pyx_n_s_DESTINATION;
-static PyObject *__pyx_n_s_DIGEST;
-static PyObject *__pyx_n_s_DeflateBuffer;
-static PyObject *__pyx_n_s_DeflateBuffer_2;
-static PyObject *__pyx_n_s_EMPTY_PAYLOAD;
-static PyObject *__pyx_n_s_EMPTY_PAYLOAD_2;
-static PyObject *__pyx_n_s_ETAG;
-static PyObject *__pyx_n_s_EXPECT;
-static PyObject *__pyx_n_s_EXPIRES;
-static PyObject *__pyx_n_s_FORWARDED;
-static PyObject *__pyx_n_s_FROM;
-static PyObject *__pyx_n_s_HOST;
-static PyObject *__pyx_kp_u_Header_name_is_too_long;
-static PyObject *__pyx_kp_u_Header_value_is_too_long;
-static PyObject *__pyx_n_s_HttpRequestParser;
-static PyObject *__pyx_n_u_HttpRequestParser;
-static PyObject *__pyx_n_s_HttpResponseParser;
-static PyObject *__pyx_n_u_HttpResponseParser;
-static PyObject *__pyx_n_s_HttpVersion;
-static PyObject *__pyx_n_s_HttpVersion10;
-static PyObject *__pyx_n_s_HttpVersion10_2;
-static PyObject *__pyx_n_s_HttpVersion11;
-static PyObject *__pyx_n_s_HttpVersion11_2;
-static PyObject *__pyx_n_s_HttpVersion_2;
-static PyObject *__pyx_n_s_IF_MATCH;
-static PyObject *__pyx_n_s_IF_MODIFIED_SINCE;
-static PyObject *__pyx_n_s_IF_NONE_MATCH;
-static PyObject *__pyx_n_s_IF_RANGE;
-static PyObject *__pyx_n_s_IF_UNMODIFIED_SINCE;
-static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x14;
-static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xc7;
-static PyObject *__pyx_n_s_InvalidHeader;
-static PyObject *__pyx_n_s_InvalidURLError;
-static PyObject *__pyx_n_s_KEEP_ALIVE;
-static PyObject *__pyx_n_s_LAST_EVENT_ID;
-static PyObject *__pyx_n_s_LAST_MODIFIED;
-static PyObject *__pyx_n_s_LINK;
-static PyObject *__pyx_n_s_LOCATION;
-static PyObject *__pyx_n_s_LineTooLong;
-static PyObject *__pyx_n_s_MAX_FORWARDS;
-static PyObject *__pyx_n_s_MemoryError;
-static PyObject *__pyx_kp_u_Not_enough_data_for_satisfy_cont;
-static PyObject *__pyx_kp_u_Not_enough_data_for_satisfy_tran;
-static PyObject *__pyx_n_s_ORIGIN;
-static PyObject *__pyx_n_s_PRAGMA;
-static PyObject *__pyx_n_s_PROXY_AUTHENTICATE;
-static PyObject *__pyx_n_s_PROXY_AUTHORIZATION;
-static PyObject *__pyx_n_s_PayloadEncodingError;
-static PyObject *__pyx_n_s_PickleError;
-static PyObject *__pyx_n_s_RANGE;
-static PyObject *__pyx_n_s_REFERER;
-static PyObject *__pyx_n_s_RETRY_AFTER;
-static PyObject *__pyx_kp_u_RawRequestMessage;
-static PyObject *__pyx_n_s_RawRequestMessage_2;
-static PyObject *__pyx_n_u_RawRequestMessage_2;
-static PyObject *__pyx_kp_u_RawResponseMessage;
-static PyObject *__pyx_n_s_RawResponseMessage_2;
-static PyObject *__pyx_n_u_RawResponseMessage_2;
-static PyObject *__pyx_n_s_SEC_WEBSOCKET_ACCEPT;
-static PyObject *__pyx_n_s_SEC_WEBSOCKET_EXTENSIONS;
-static PyObject *__pyx_n_s_SEC_WEBSOCKET_KEY;
-static PyObject *__pyx_n_s_SEC_WEBSOCKET_KEY1;
-static PyObject *__pyx_n_s_SEC_WEBSOCKET_PROTOCOL;
-static PyObject *__pyx_n_s_SEC_WEBSOCKET_VERSION;
-static PyObject *__pyx_n_s_SERVER;
-static PyObject *__pyx_n_s_SET_COOKIE;
-static PyObject *__pyx_kp_u_Status_line_is_too_long;
-static PyObject *__pyx_n_s_StreamReader;
-static PyObject *__pyx_n_s_StreamReader_2;
-static PyObject *__pyx_n_s_TE;
-static PyObject *__pyx_n_s_TRAILER;
-static PyObject *__pyx_n_s_TRANSFER_ENCODING;
-static PyObject *__pyx_n_s_TransferEncodingError;
-static PyObject *__pyx_n_s_TypeError;
-static PyObject *__pyx_n_s_UPGRADE;
-static PyObject *__pyx_n_s_URI;
-static PyObject *__pyx_n_s_URL;
-static PyObject *__pyx_n_s_URL_2;
-static PyObject *__pyx_n_s_USER_AGENT;
-static PyObject *__pyx_n_s_VARY;
-static PyObject *__pyx_n_s_VIA;
-static PyObject *__pyx_n_s_WANT_DIGEST;
-static PyObject *__pyx_n_s_WARNING;
-static PyObject *__pyx_n_s_WWW_AUTHENTICATE;
-static PyObject *__pyx_n_s_X_FORWARDED_FOR;
-static PyObject *__pyx_n_s_X_FORWARDED_HOST;
-static PyObject *__pyx_n_s_X_FORWARDED_PROTO;
-static PyObject *__pyx_kp_u__11;
-static PyObject *__pyx_kp_u__2;
-static PyObject *__pyx_kp_u__3;
-static PyObject *__pyx_n_s__4;
-static PyObject *__pyx_kp_b__4;
-static PyObject *__pyx_kp_u__4;
-static PyObject *__pyx_n_s_add;
-static PyObject *__pyx_n_s_aiohttp;
-static PyObject *__pyx_n_s_aiohttp__http_parser;
-static PyObject *__pyx_kp_s_aiohttp__http_parser_pyx;
-static PyObject *__pyx_n_s_all;
-static PyObject *__pyx_n_s_args;
-static PyObject *__pyx_n_s_auto_decompress;
-static PyObject *__pyx_n_s_begin_http_chunk_receiving;
-static PyObject *__pyx_n_u_br;
-static PyObject *__pyx_n_s_buf_data;
-static PyObject *__pyx_n_s_build;
-static PyObject *__pyx_n_s_chunked;
-static PyObject *__pyx_n_u_chunked;
-static PyObject *__pyx_n_s_cline_in_traceback;
-static PyObject *__pyx_n_s_close;
-static PyObject *__pyx_n_s_code;
-static PyObject *__pyx_n_u_code;
-static PyObject *__pyx_n_s_compression;
-static PyObject *__pyx_n_u_compression;
-static PyObject *__pyx_n_u_deflate;
-static PyObject *__pyx_n_s_dict;
-static PyObject *__pyx_n_s_encoded;
-static PyObject *__pyx_n_s_end_http_chunk_receiving;
-static PyObject *__pyx_n_s_feed_data;
-static PyObject *__pyx_n_s_feed_eof;
-static PyObject *__pyx_n_s_format;
-static PyObject *__pyx_n_s_fragment;
-static PyObject *__pyx_n_s_genexpr;
-static PyObject *__pyx_n_s_getstate;
-static PyObject *__pyx_n_u_gzip;
-static PyObject *__pyx_n_s_hdrs;
-static PyObject *__pyx_n_s_headers;
-static PyObject *__pyx_n_u_headers;
-static PyObject *__pyx_n_s_host;
-static PyObject *__pyx_n_s_http_exceptions;
-static PyObject *__pyx_n_s_http_parser;
-static PyObject *__pyx_n_s_http_writer;
-static PyObject *__pyx_n_s_i;
-static PyObject *__pyx_n_s_import;
-static PyObject *__pyx_kp_u_invalid_url_r;
-static PyObject *__pyx_n_s_limit;
-static PyObject *__pyx_n_s_loop;
-static PyObject *__pyx_n_s_lower;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_s_max_field_size;
-static PyObject *__pyx_n_s_max_headers;
-static PyObject *__pyx_n_s_max_line_size;
-static PyObject *__pyx_n_s_method;
-static PyObject *__pyx_n_u_method;
-static PyObject *__pyx_n_s_multidict;
-static PyObject *__pyx_n_s_name;
-static PyObject *__pyx_n_s_new;
-static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
-static PyObject *__pyx_n_s_parse_url;
-static PyObject *__pyx_n_s_partition;
-static PyObject *__pyx_n_s_password;
-static PyObject *__pyx_n_s_path;
-static PyObject *__pyx_n_u_path;
-static PyObject *__pyx_n_s_payload_exception;
-static PyObject *__pyx_n_s_pickle;
-static PyObject *__pyx_n_s_port;
-static PyObject *__pyx_n_s_protocol;
-static PyObject *__pyx_n_s_py_buf;
-static PyObject *__pyx_n_s_pyx_PickleError;
-static PyObject *__pyx_n_s_pyx_checksum;
-static PyObject *__pyx_n_s_pyx_result;
-static PyObject *__pyx_n_s_pyx_state;
-static PyObject *__pyx_n_s_pyx_type;
-static PyObject *__pyx_n_s_pyx_unpickle_RawRequestMessage;
-static PyObject *__pyx_n_s_pyx_unpickle_RawResponseMessag;
-static PyObject *__pyx_n_s_pyx_vtable;
-static PyObject *__pyx_n_s_query_string;
-static PyObject *__pyx_n_s_range;
-static PyObject *__pyx_n_s_raw_headers;
-static PyObject *__pyx_n_u_raw_headers;
-static PyObject *__pyx_n_s_read_until_eof;
-static PyObject *__pyx_n_s_reason;
-static PyObject *__pyx_n_u_reason;
-static PyObject *__pyx_n_s_reduce;
-static PyObject *__pyx_n_s_reduce_cython;
-static PyObject *__pyx_n_s_reduce_ex;
-static PyObject *__pyx_n_s_repr___locals_genexpr;
-static PyObject *__pyx_n_s_response_with_body;
-static PyObject *__pyx_n_s_scheme;
-static PyObject *__pyx_n_s_send;
-static PyObject *__pyx_n_s_set_exception;
-static PyObject *__pyx_n_s_setstate;
-static PyObject *__pyx_n_s_setstate_cython;
-static PyObject *__pyx_n_s_should_close;
-static PyObject *__pyx_n_u_should_close;
-static PyObject *__pyx_n_s_streams;
-static PyObject *__pyx_kp_s_stringsource;
-static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_throw;
-static PyObject *__pyx_n_s_timer;
-static PyObject *__pyx_kp_u_unknown;
-static PyObject *__pyx_n_s_update;
-static PyObject *__pyx_n_s_upgrade;
-static PyObject *__pyx_n_u_upgrade;
-static PyObject *__pyx_n_s_url;
-static PyObject *__pyx_n_u_url;
-static PyObject *__pyx_n_s_user;
-static PyObject *__pyx_n_s_version;
-static PyObject *__pyx_n_u_version;
-static PyObject *__pyx_n_s_yarl;
-static int __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage___init__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_path, PyObject *__pyx_v_version, PyObject *__pyx_v_headers, PyObject *__pyx_v_raw_headers, PyObject *__pyx_v_should_close, PyObject *__pyx_v_compression, PyObject *__pyx_v_upgrade, PyObject *__pyx_v_chunked, PyObject *__pyx_v_url); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_8__repr___genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_2__repr__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_4_replace(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self, PyObject *__pyx_v_dct); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_6method___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_4path___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7version___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7headers___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_11raw_headers___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_12should_close___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_11compression___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7upgrade___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7chunked___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_3url___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_6__reduce_cython__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_8__setstate_cython__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static int __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage___init__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self, PyObject *__pyx_v_version, PyObject *__pyx_v_code, PyObject *__pyx_v_reason, PyObject *__pyx_v_headers, PyObject *__pyx_v_raw_headers, PyObject *__pyx_v_should_close, PyObject *__pyx_v_compression, PyObject *__pyx_v_upgrade, PyObject *__pyx_v_chunked); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_8__repr___genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_2__repr__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7version___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_4code___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_6reason___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7headers___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_11raw_headers___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_12should_close___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_11compression___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7upgrade___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7chunked___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_4__reduce_cython__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_6__setstate_cython__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
-static int __pyx_pf_7aiohttp_12_http_parser_10HttpParser___cinit__(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto */
-static void __pyx_pf_7aiohttp_12_http_parser_10HttpParser_2__dealloc__(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_4feed_eof(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_6feed_data(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_8set_upgraded(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
-static int __pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser___init__(struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_loop, int __pyx_v_limit, PyObject *__pyx_v_timer, size_t __pyx_v_max_line_size, size_t __pyx_v_max_headers, size_t __pyx_v_max_field_size, PyObject *__pyx_v_payload_exception, int __pyx_v_response_with_body, int __pyx_v_read_until_eof); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
-static int __pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser___init__(struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_loop, int __pyx_v_limit, PyObject *__pyx_v_timer, size_t __pyx_v_max_line_size, size_t __pyx_v_max_headers, size_t __pyx_v_max_field_size, PyObject *__pyx_v_payload_exception, int __pyx_v_response_with_body, int __pyx_v_read_until_eof, int __pyx_v_auto_decompress); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_parse_url(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_url); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_2__pyx_unpickle_RawRequestMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_4__pyx_unpickle_RawResponseMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser_RawRequestMessage(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser_RawResponseMessage(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser_HttpParser(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser_HttpRequestParser(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser_HttpResponseParser(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser___pyx_scope_struct____repr__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static __Pyx_CachedCFunction __pyx_umethod_PyUnicode_Type_partition = {0, &__pyx_n_s_partition, 0, 0, 0};
-static PyObject *__pyx_int_21004882;
-static PyObject *__pyx_int_209127132;
-static PyObject *__pyx_tuple__5;
-static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_tuple__7;
-static PyObject *__pyx_tuple__8;
-static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_tuple__10;
-static PyObject *__pyx_tuple__12;
-static PyObject *__pyx_tuple__13;
-static PyObject *__pyx_tuple__15;
-static PyObject *__pyx_tuple__17;
-static PyObject *__pyx_codeobj__14;
-static PyObject *__pyx_codeobj__16;
-static PyObject *__pyx_codeobj__18;
-/* Late includes */
-
-/* "aiohttp/_http_parser.pyx":74
- *
- *
- * cdef inline object extend(object buf, const char* at, size_t length): # <<<<<<<<<<<<<<
- * cdef Py_ssize_t s
- * cdef char* ptr
- */
-
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_extend(PyObject *__pyx_v_buf, char const *__pyx_v_at, size_t __pyx_v_length) {
- Py_ssize_t __pyx_v_s;
- char *__pyx_v_ptr;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- int __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("extend", 0);
-
- /* "aiohttp/_http_parser.pyx":77
- * cdef Py_ssize_t s
- * cdef char* ptr
- * s = PyByteArray_Size(buf) # <<<<<<<<<<<<<<
- * PyByteArray_Resize(buf, s + length)
- * ptr = PyByteArray_AsString(buf)
- */
- __pyx_t_1 = PyByteArray_Size(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 77, __pyx_L1_error)
- __pyx_v_s = __pyx_t_1;
-
- /* "aiohttp/_http_parser.pyx":78
- * cdef char* ptr
- * s = PyByteArray_Size(buf)
- * PyByteArray_Resize(buf, s + length) # <<<<<<<<<<<<<<
- * ptr = PyByteArray_AsString(buf)
- * memcpy(ptr + s, at, length)
- */
- __pyx_t_2 = PyByteArray_Resize(__pyx_v_buf, (__pyx_v_s + __pyx_v_length)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 78, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":79
- * s = PyByteArray_Size(buf)
- * PyByteArray_Resize(buf, s + length)
- * ptr = PyByteArray_AsString(buf) # <<<<<<<<<<<<<<
- * memcpy(ptr + s, at, length)
- *
- */
- __pyx_v_ptr = PyByteArray_AsString(__pyx_v_buf);
-
- /* "aiohttp/_http_parser.pyx":80
- * PyByteArray_Resize(buf, s + length)
- * ptr = PyByteArray_AsString(buf)
- * memcpy(ptr + s, at, length) # <<<<<<<<<<<<<<
- *
- *
- */
- (void)(memcpy((__pyx_v_ptr + __pyx_v_s), __pyx_v_at, __pyx_v_length));
-
- /* "aiohttp/_http_parser.pyx":74
- *
- *
- * cdef inline object extend(object buf, const char* at, size_t length): # <<<<<<<<<<<<<<
- * cdef Py_ssize_t s
- * cdef char* ptr
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.extend", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":92
- *
- *
- * cdef inline str http_method_str(int i): # <<<<<<<<<<<<<<
- * if i < METHODS_COUNT:
- * return _http_method[i]
- */
-
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_http_method_str(int __pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("http_method_str", 0);
-
- /* "aiohttp/_http_parser.pyx":93
- *
- * cdef inline str http_method_str(int i):
- * if i < METHODS_COUNT: # <<<<<<<<<<<<<<
- * return _http_method[i]
- * else:
- */
- __pyx_t_1 = ((__pyx_v_i < 34) != 0);
- if (__pyx_t_1) {
-
- /* "aiohttp/_http_parser.pyx":94
- * cdef inline str http_method_str(int i):
- * if i < METHODS_COUNT:
- * return _http_method[i] # <<<<<<<<<<<<<<
- * else:
- * return ""
- */
- __Pyx_XDECREF(__pyx_r);
- if (unlikely(__pyx_v_7aiohttp_12_http_parser__http_method == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 94, __pyx_L1_error)
- }
- __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_7aiohttp_12_http_parser__http_method, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject*)__pyx_t_2));
- __pyx_r = ((PyObject*)__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":93
- *
- * cdef inline str http_method_str(int i):
- * if i < METHODS_COUNT: # <<<<<<<<<<<<<<
- * return _http_method[i]
- * else:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":96
- * return _http_method[i]
- * else:
- * return "" # <<<<<<<<<<<<<<
- *
- * cdef inline object find_header(bytes raw_header):
- */
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_kp_u_unknown);
- __pyx_r = __pyx_kp_u_unknown;
- goto __pyx_L0;
- }
-
- /* "aiohttp/_http_parser.pyx":92
- *
- *
- * cdef inline str http_method_str(int i): # <<<<<<<<<<<<<<
- * if i < METHODS_COUNT:
- * return _http_method[i]
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("aiohttp._http_parser.http_method_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":98
- * return ""
- *
- * cdef inline object find_header(bytes raw_header): # <<<<<<<<<<<<<<
- * cdef Py_ssize_t size
- * cdef char *buf
- */
-
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_find_header(PyObject *__pyx_v_raw_header) {
- Py_ssize_t __pyx_v_size;
- char *__pyx_v_buf;
- int __pyx_v_idx;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("find_header", 0);
-
- /* "aiohttp/_http_parser.pyx":102
- * cdef char *buf
- * cdef int idx
- * PyBytes_AsStringAndSize(raw_header, &buf, &size) # <<<<<<<<<<<<<<
- * idx = _find_header.find_header(buf, size)
- * if idx == -1:
- */
- __pyx_t_1 = PyBytes_AsStringAndSize(__pyx_v_raw_header, (&__pyx_v_buf), (&__pyx_v_size)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 102, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":103
- * cdef int idx
- * PyBytes_AsStringAndSize(raw_header, &buf, &size)
- * idx = _find_header.find_header(buf, size) # <<<<<<<<<<<<<<
- * if idx == -1:
- * return raw_header.decode('utf-8', 'surrogateescape')
- */
- __pyx_v_idx = find_header(__pyx_v_buf, __pyx_v_size);
-
- /* "aiohttp/_http_parser.pyx":104
- * PyBytes_AsStringAndSize(raw_header, &buf, &size)
- * idx = _find_header.find_header(buf, size)
- * if idx == -1: # <<<<<<<<<<<<<<
- * return raw_header.decode('utf-8', 'surrogateescape')
- * return headers[idx]
- */
- __pyx_t_2 = ((__pyx_v_idx == -1L) != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":105
- * idx = _find_header.find_header(buf, size)
- * if idx == -1:
- * return raw_header.decode('utf-8', 'surrogateescape') # <<<<<<<<<<<<<<
- * return headers[idx]
- *
- */
- __Pyx_XDECREF(__pyx_r);
- if (unlikely(__pyx_v_raw_header == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
- __PYX_ERR(0, 105, __pyx_L1_error)
- }
- __pyx_t_3 = __Pyx_decode_bytes(__pyx_v_raw_header, 0, PY_SSIZE_T_MAX, NULL, ((char const *)"surrogateescape"), PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":104
- * PyBytes_AsStringAndSize(raw_header, &buf, &size)
- * idx = _find_header.find_header(buf, size)
- * if idx == -1: # <<<<<<<<<<<<<<
- * return raw_header.decode('utf-8', 'surrogateescape')
- * return headers[idx]
- */
- }
-
- /* "aiohttp/_http_parser.pyx":106
- * if idx == -1:
- * return raw_header.decode('utf-8', 'surrogateescape')
- * return headers[idx] # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- if (unlikely(__pyx_v_7aiohttp_12_http_parser_headers == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 106, __pyx_L1_error)
- }
- __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_7aiohttp_12_http_parser_headers, __pyx_v_idx, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":98
- * return ""
- *
- * cdef inline object find_header(bytes raw_header): # <<<<<<<<<<<<<<
- * cdef Py_ssize_t size
- * cdef char *buf
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._http_parser.find_header", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":122
- * cdef readonly object url # yarl.URL
- *
- * def __init__(self, method, path, version, headers, raw_headers, # <<<<<<<<<<<<<<
- * should_close, compression, upgrade, chunked, url):
- * self.method = method
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_method = 0;
- PyObject *__pyx_v_path = 0;
- PyObject *__pyx_v_version = 0;
- PyObject *__pyx_v_headers = 0;
- PyObject *__pyx_v_raw_headers = 0;
- PyObject *__pyx_v_should_close = 0;
- PyObject *__pyx_v_compression = 0;
- PyObject *__pyx_v_upgrade = 0;
- PyObject *__pyx_v_chunked = 0;
- PyObject *__pyx_v_url = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method,&__pyx_n_s_path,&__pyx_n_s_version,&__pyx_n_s_headers,&__pyx_n_s_raw_headers,&__pyx_n_s_should_close,&__pyx_n_s_compression,&__pyx_n_s_upgrade,&__pyx_n_s_chunked,&__pyx_n_s_url,0};
- PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
- CYTHON_FALLTHROUGH;
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- CYTHON_FALLTHROUGH;
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- CYTHON_FALLTHROUGH;
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- CYTHON_FALLTHROUGH;
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- CYTHON_FALLTHROUGH;
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- CYTHON_FALLTHROUGH;
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- CYTHON_FALLTHROUGH;
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- CYTHON_FALLTHROUGH;
- case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 1); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_version)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 2); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_headers)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 3); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_raw_headers)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 4); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 5:
- if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_should_close)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 5); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 6:
- if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_compression)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 6); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 7:
- if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_upgrade)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 7); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 8:
- if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_chunked)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 8); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 9:
- if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_url)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, 9); __PYX_ERR(0, 122, __pyx_L3_error)
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 122, __pyx_L3_error)
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
- }
- __pyx_v_method = values[0];
- __pyx_v_path = values[1];
- __pyx_v_version = values[2];
- __pyx_v_headers = values[3];
- __pyx_v_raw_headers = values[4];
- __pyx_v_should_close = values[5];
- __pyx_v_compression = values[6];
- __pyx_v_upgrade = values[7];
- __pyx_v_chunked = values[8];
- __pyx_v_url = values[9];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 122, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.RawRequestMessage.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage___init__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self), __pyx_v_method, __pyx_v_path, __pyx_v_version, __pyx_v_headers, __pyx_v_raw_headers, __pyx_v_should_close, __pyx_v_compression, __pyx_v_upgrade, __pyx_v_chunked, __pyx_v_url);
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage___init__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_path, PyObject *__pyx_v_version, PyObject *__pyx_v_headers, PyObject *__pyx_v_raw_headers, PyObject *__pyx_v_should_close, PyObject *__pyx_v_compression, PyObject *__pyx_v_upgrade, PyObject *__pyx_v_chunked, PyObject *__pyx_v_url) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
-
- /* "aiohttp/_http_parser.pyx":124
- * def __init__(self, method, path, version, headers, raw_headers,
- * should_close, compression, upgrade, chunked, url):
- * self.method = method # <<<<<<<<<<<<<<
- * self.path = path
- * self.version = version
- */
- if (!(likely(PyUnicode_CheckExact(__pyx_v_method))||((__pyx_v_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_method)->tp_name), 0))) __PYX_ERR(0, 124, __pyx_L1_error)
- __pyx_t_1 = __pyx_v_method;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->method);
- __Pyx_DECREF(__pyx_v_self->method);
- __pyx_v_self->method = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":125
- * should_close, compression, upgrade, chunked, url):
- * self.method = method
- * self.path = path # <<<<<<<<<<<<<<
- * self.version = version
- * self.headers = headers
- */
- if (!(likely(PyUnicode_CheckExact(__pyx_v_path))||((__pyx_v_path) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_path)->tp_name), 0))) __PYX_ERR(0, 125, __pyx_L1_error)
- __pyx_t_1 = __pyx_v_path;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->path);
- __Pyx_DECREF(__pyx_v_self->path);
- __pyx_v_self->path = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":126
- * self.method = method
- * self.path = path
- * self.version = version # <<<<<<<<<<<<<<
- * self.headers = headers
- * self.raw_headers = raw_headers
- */
- __Pyx_INCREF(__pyx_v_version);
- __Pyx_GIVEREF(__pyx_v_version);
- __Pyx_GOTREF(__pyx_v_self->version);
- __Pyx_DECREF(__pyx_v_self->version);
- __pyx_v_self->version = __pyx_v_version;
-
- /* "aiohttp/_http_parser.pyx":127
- * self.path = path
- * self.version = version
- * self.headers = headers # <<<<<<<<<<<<<<
- * self.raw_headers = raw_headers
- * self.should_close = should_close
- */
- __Pyx_INCREF(__pyx_v_headers);
- __Pyx_GIVEREF(__pyx_v_headers);
- __Pyx_GOTREF(__pyx_v_self->headers);
- __Pyx_DECREF(__pyx_v_self->headers);
- __pyx_v_self->headers = __pyx_v_headers;
-
- /* "aiohttp/_http_parser.pyx":128
- * self.version = version
- * self.headers = headers
- * self.raw_headers = raw_headers # <<<<<<<<<<<<<<
- * self.should_close = should_close
- * self.compression = compression
- */
- __Pyx_INCREF(__pyx_v_raw_headers);
- __Pyx_GIVEREF(__pyx_v_raw_headers);
- __Pyx_GOTREF(__pyx_v_self->raw_headers);
- __Pyx_DECREF(__pyx_v_self->raw_headers);
- __pyx_v_self->raw_headers = __pyx_v_raw_headers;
-
- /* "aiohttp/_http_parser.pyx":129
- * self.headers = headers
- * self.raw_headers = raw_headers
- * self.should_close = should_close # <<<<<<<<<<<<<<
- * self.compression = compression
- * self.upgrade = upgrade
- */
- __Pyx_INCREF(__pyx_v_should_close);
- __Pyx_GIVEREF(__pyx_v_should_close);
- __Pyx_GOTREF(__pyx_v_self->should_close);
- __Pyx_DECREF(__pyx_v_self->should_close);
- __pyx_v_self->should_close = __pyx_v_should_close;
-
- /* "aiohttp/_http_parser.pyx":130
- * self.raw_headers = raw_headers
- * self.should_close = should_close
- * self.compression = compression # <<<<<<<<<<<<<<
- * self.upgrade = upgrade
- * self.chunked = chunked
- */
- __Pyx_INCREF(__pyx_v_compression);
- __Pyx_GIVEREF(__pyx_v_compression);
- __Pyx_GOTREF(__pyx_v_self->compression);
- __Pyx_DECREF(__pyx_v_self->compression);
- __pyx_v_self->compression = __pyx_v_compression;
-
- /* "aiohttp/_http_parser.pyx":131
- * self.should_close = should_close
- * self.compression = compression
- * self.upgrade = upgrade # <<<<<<<<<<<<<<
- * self.chunked = chunked
- * self.url = url
- */
- __Pyx_INCREF(__pyx_v_upgrade);
- __Pyx_GIVEREF(__pyx_v_upgrade);
- __Pyx_GOTREF(__pyx_v_self->upgrade);
- __Pyx_DECREF(__pyx_v_self->upgrade);
- __pyx_v_self->upgrade = __pyx_v_upgrade;
-
- /* "aiohttp/_http_parser.pyx":132
- * self.compression = compression
- * self.upgrade = upgrade
- * self.chunked = chunked # <<<<<<<<<<<<<<
- * self.url = url
- *
- */
- __Pyx_INCREF(__pyx_v_chunked);
- __Pyx_GIVEREF(__pyx_v_chunked);
- __Pyx_GOTREF(__pyx_v_self->chunked);
- __Pyx_DECREF(__pyx_v_self->chunked);
- __pyx_v_self->chunked = __pyx_v_chunked;
-
- /* "aiohttp/_http_parser.pyx":133
- * self.upgrade = upgrade
- * self.chunked = chunked
- * self.url = url # <<<<<<<<<<<<<<
- *
- * def __repr__(self):
- */
- __Pyx_INCREF(__pyx_v_url);
- __Pyx_GIVEREF(__pyx_v_url);
- __Pyx_GOTREF(__pyx_v_self->url);
- __Pyx_DECREF(__pyx_v_self->url);
- __pyx_v_self->url = __pyx_v_url;
-
- /* "aiohttp/_http_parser.pyx":122
- * cdef readonly object url # yarl.URL
- *
- * def __init__(self, method, path, version, headers, raw_headers, # <<<<<<<<<<<<<<
- * should_close, compression, upgrade, chunked, url):
- * self.method = method
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.RawRequestMessage.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":135
- * self.url = url
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * info = []
- * info.append(("method", self.method))
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_3__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_3__repr__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_2__repr__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_7aiohttp_12_http_parser_17RawRequestMessage_8__repr___2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-
-/* "aiohttp/_http_parser.pyx":147
- * info.append(("chunked", self.chunked))
- * info.append(("url", self.url))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info) # <<<<<<<<<<<<<<
- * return ''
- *
- */
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_8__repr___genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr *)__pyx_tp_new_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr(__pyx_ptype_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __pyx_cur_scope = ((struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr *)Py_None);
- __Pyx_INCREF(Py_None);
- __PYX_ERR(0, 147, __pyx_L1_error)
- } else {
- __Pyx_GOTREF(__pyx_cur_scope);
- }
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct____repr__ *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7aiohttp_12_http_parser_17RawRequestMessage_8__repr___2generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_repr___locals_genexpr, __pyx_n_s_aiohttp__http_parser); if (unlikely(!gen)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.RawRequestMessage.__repr__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_7aiohttp_12_http_parser_17RawRequestMessage_8__repr___2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *(*__pyx_t_7)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("genexpr", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 147, __pyx_L1_error)
- __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_r);
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_info)) { __Pyx_RaiseClosureNameError("info"); __PYX_ERR(0, 147, __pyx_L1_error) }
- if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_info == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 147, __pyx_L1_error)
- }
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_info; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- for (;;) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 147, __pyx_L1_error)
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- #endif
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 147, __pyx_L1_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- #else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 147, __pyx_L1_error)
- __pyx_t_7 = NULL;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L7_unpacking_done;
- __pyx_L6_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 147, __pyx_L1_error)
- __pyx_L7_unpacking_done:;
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_name);
- __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_name, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_val);
- __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_val, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_name, __pyx_kp_u_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyObject_Repr(__pyx_cur_scope->__pyx_v_val); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
-
- /* function exit code */
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- #if !CYTHON_USE_EXC_INFO_STACK
- __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
- #endif
- __pyx_generator->resume_label = -1;
- __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":135
- * self.url = url
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * info = []
- * info.append(("method", self.method))
- */
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_2__repr__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct____repr__ *__pyx_cur_scope;
- PyObject *__pyx_v_sinfo = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__repr__", 0);
- __pyx_cur_scope = (struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct____repr__ *)__pyx_tp_new_7aiohttp_12_http_parser___pyx_scope_struct____repr__(__pyx_ptype_7aiohttp_12_http_parser___pyx_scope_struct____repr__, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __pyx_cur_scope = ((struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct____repr__ *)Py_None);
- __Pyx_INCREF(Py_None);
- __PYX_ERR(0, 135, __pyx_L1_error)
- } else {
- __Pyx_GOTREF(__pyx_cur_scope);
- }
-
- /* "aiohttp/_http_parser.pyx":136
- *
- * def __repr__(self):
- * info = [] # <<<<<<<<<<<<<<
- * info.append(("method", self.method))
- * info.append(("path", self.path))
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_info = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":137
- * def __repr__(self):
- * info = []
- * info.append(("method", self.method)) # <<<<<<<<<<<<<<
- * info.append(("path", self.path))
- * info.append(("version", self.version))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_method);
- __Pyx_GIVEREF(__pyx_n_u_method);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_method);
- __Pyx_INCREF(__pyx_v_self->method);
- __Pyx_GIVEREF(__pyx_v_self->method);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->method);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 137, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":138
- * info = []
- * info.append(("method", self.method))
- * info.append(("path", self.path)) # <<<<<<<<<<<<<<
- * info.append(("version", self.version))
- * info.append(("headers", self.headers))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_path);
- __Pyx_GIVEREF(__pyx_n_u_path);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_path);
- __Pyx_INCREF(__pyx_v_self->path);
- __Pyx_GIVEREF(__pyx_v_self->path);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->path);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 138, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":139
- * info.append(("method", self.method))
- * info.append(("path", self.path))
- * info.append(("version", self.version)) # <<<<<<<<<<<<<<
- * info.append(("headers", self.headers))
- * info.append(("raw_headers", self.raw_headers))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_version);
- __Pyx_GIVEREF(__pyx_n_u_version);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_version);
- __Pyx_INCREF(__pyx_v_self->version);
- __Pyx_GIVEREF(__pyx_v_self->version);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->version);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 139, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":140
- * info.append(("path", self.path))
- * info.append(("version", self.version))
- * info.append(("headers", self.headers)) # <<<<<<<<<<<<<<
- * info.append(("raw_headers", self.raw_headers))
- * info.append(("should_close", self.should_close))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_headers);
- __Pyx_GIVEREF(__pyx_n_u_headers);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_headers);
- __Pyx_INCREF(__pyx_v_self->headers);
- __Pyx_GIVEREF(__pyx_v_self->headers);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->headers);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 140, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":141
- * info.append(("version", self.version))
- * info.append(("headers", self.headers))
- * info.append(("raw_headers", self.raw_headers)) # <<<<<<<<<<<<<<
- * info.append(("should_close", self.should_close))
- * info.append(("compression", self.compression))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_raw_headers);
- __Pyx_GIVEREF(__pyx_n_u_raw_headers);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_raw_headers);
- __Pyx_INCREF(__pyx_v_self->raw_headers);
- __Pyx_GIVEREF(__pyx_v_self->raw_headers);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->raw_headers);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":142
- * info.append(("headers", self.headers))
- * info.append(("raw_headers", self.raw_headers))
- * info.append(("should_close", self.should_close)) # <<<<<<<<<<<<<<
- * info.append(("compression", self.compression))
- * info.append(("upgrade", self.upgrade))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_should_close);
- __Pyx_GIVEREF(__pyx_n_u_should_close);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_should_close);
- __Pyx_INCREF(__pyx_v_self->should_close);
- __Pyx_GIVEREF(__pyx_v_self->should_close);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->should_close);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 142, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":143
- * info.append(("raw_headers", self.raw_headers))
- * info.append(("should_close", self.should_close))
- * info.append(("compression", self.compression)) # <<<<<<<<<<<<<<
- * info.append(("upgrade", self.upgrade))
- * info.append(("chunked", self.chunked))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_compression);
- __Pyx_GIVEREF(__pyx_n_u_compression);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_compression);
- __Pyx_INCREF(__pyx_v_self->compression);
- __Pyx_GIVEREF(__pyx_v_self->compression);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->compression);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 143, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":144
- * info.append(("should_close", self.should_close))
- * info.append(("compression", self.compression))
- * info.append(("upgrade", self.upgrade)) # <<<<<<<<<<<<<<
- * info.append(("chunked", self.chunked))
- * info.append(("url", self.url))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_upgrade);
- __Pyx_GIVEREF(__pyx_n_u_upgrade);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_upgrade);
- __Pyx_INCREF(__pyx_v_self->upgrade);
- __Pyx_GIVEREF(__pyx_v_self->upgrade);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->upgrade);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 144, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":145
- * info.append(("compression", self.compression))
- * info.append(("upgrade", self.upgrade))
- * info.append(("chunked", self.chunked)) # <<<<<<<<<<<<<<
- * info.append(("url", self.url))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info)
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_chunked);
- __Pyx_GIVEREF(__pyx_n_u_chunked);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_chunked);
- __Pyx_INCREF(__pyx_v_self->chunked);
- __Pyx_GIVEREF(__pyx_v_self->chunked);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->chunked);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 145, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":146
- * info.append(("upgrade", self.upgrade))
- * info.append(("chunked", self.chunked))
- * info.append(("url", self.url)) # <<<<<<<<<<<<<<
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info)
- * return ''
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_url);
- __Pyx_GIVEREF(__pyx_n_u_url);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_url);
- __Pyx_INCREF(__pyx_v_self->url);
- __Pyx_GIVEREF(__pyx_v_self->url);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->url);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 146, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":147
- * info.append(("chunked", self.chunked))
- * info.append(("url", self.url))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info) # <<<<<<<<<<<<<<
- * return ''
- *
- */
- __pyx_t_1 = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_8__repr___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_Generator_Next(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyUnicode_Join(__pyx_kp_u__2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_sinfo = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":148
- * info.append(("url", self.url))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info)
- * return '' # <<<<<<<<<<<<<<
- *
- * def _replace(self, **dct):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyUnicode_ConcatSafe(__pyx_kp_u_RawRequestMessage, __pyx_v_sinfo); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_1, __pyx_kp_u__3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":135
- * self.url = url
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * info = []
- * info.append(("method", self.method))
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._http_parser.RawRequestMessage.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_sinfo);
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":150
- * return ''
- *
- * def _replace(self, **dct): # <<<<<<<<<<<<<<
- * cdef RawRequestMessage ret
- * ret = _new_request_message(self.method,
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_5_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_5_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_dct = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("_replace (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("_replace", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
- if (__pyx_kwds && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_replace", 1))) return NULL;
- __pyx_v_dct = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_dct)) return NULL;
- __Pyx_GOTREF(__pyx_v_dct);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_4_replace(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self), __pyx_v_dct);
-
- /* function exit code */
- __Pyx_XDECREF(__pyx_v_dct);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_4_replace(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self, PyObject *__pyx_v_dct) {
- struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_ret = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_t_8;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_replace", 0);
-
- /* "aiohttp/_http_parser.pyx":152
- * def _replace(self, **dct):
- * cdef RawRequestMessage ret
- * ret = _new_request_message(self.method, # <<<<<<<<<<<<<<
- * self.path,
- * self.version,
- */
- __pyx_t_1 = __pyx_v_self->method;
- __Pyx_INCREF(__pyx_t_1);
-
- /* "aiohttp/_http_parser.pyx":153
- * cdef RawRequestMessage ret
- * ret = _new_request_message(self.method,
- * self.path, # <<<<<<<<<<<<<<
- * self.version,
- * self.headers,
- */
- __pyx_t_2 = __pyx_v_self->path;
- __Pyx_INCREF(__pyx_t_2);
-
- /* "aiohttp/_http_parser.pyx":154
- * ret = _new_request_message(self.method,
- * self.path,
- * self.version, # <<<<<<<<<<<<<<
- * self.headers,
- * self.raw_headers,
- */
- __pyx_t_3 = __pyx_v_self->version;
- __Pyx_INCREF(__pyx_t_3);
-
- /* "aiohttp/_http_parser.pyx":155
- * self.path,
- * self.version,
- * self.headers, # <<<<<<<<<<<<<<
- * self.raw_headers,
- * self.should_close,
- */
- __pyx_t_4 = __pyx_v_self->headers;
- __Pyx_INCREF(__pyx_t_4);
-
- /* "aiohttp/_http_parser.pyx":156
- * self.version,
- * self.headers,
- * self.raw_headers, # <<<<<<<<<<<<<<
- * self.should_close,
- * self.compression,
- */
- __pyx_t_5 = __pyx_v_self->raw_headers;
- __Pyx_INCREF(__pyx_t_5);
-
- /* "aiohttp/_http_parser.pyx":157
- * self.headers,
- * self.raw_headers,
- * self.should_close, # <<<<<<<<<<<<<<
- * self.compression,
- * self.upgrade,
- */
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->should_close); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":158
- * self.raw_headers,
- * self.should_close,
- * self.compression, # <<<<<<<<<<<<<<
- * self.upgrade,
- * self.chunked,
- */
- __pyx_t_7 = __pyx_v_self->compression;
- __Pyx_INCREF(__pyx_t_7);
-
- /* "aiohttp/_http_parser.pyx":159
- * self.should_close,
- * self.compression,
- * self.upgrade, # <<<<<<<<<<<<<<
- * self.chunked,
- * self.url)
- */
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->upgrade); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 159, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":160
- * self.compression,
- * self.upgrade,
- * self.chunked, # <<<<<<<<<<<<<<
- * self.url)
- * if "method" in dct:
- */
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->chunked); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 160, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":161
- * self.upgrade,
- * self.chunked,
- * self.url) # <<<<<<<<<<<<<<
- * if "method" in dct:
- * ret.method = dct["method"]
- */
- __pyx_t_10 = __pyx_v_self->url;
- __Pyx_INCREF(__pyx_t_10);
-
- /* "aiohttp/_http_parser.pyx":152
- * def _replace(self, **dct):
- * cdef RawRequestMessage ret
- * ret = _new_request_message(self.method, # <<<<<<<<<<<<<<
- * self.path,
- * self.version,
- */
- __pyx_t_11 = __pyx_f_7aiohttp_12_http_parser__new_request_message(((PyObject*)__pyx_t_1), ((PyObject*)__pyx_t_2), __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_7aiohttp_12_http_parser_RawRequestMessage))))) __PYX_ERR(0, 152, __pyx_L1_error)
- __pyx_v_ret = ((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_t_11);
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":162
- * self.chunked,
- * self.url)
- * if "method" in dct: # <<<<<<<<<<<<<<
- * ret.method = dct["method"]
- * if "path" in dct:
- */
- __pyx_t_9 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_method, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 162, __pyx_L1_error)
- __pyx_t_8 = (__pyx_t_9 != 0);
- if (__pyx_t_8) {
-
- /* "aiohttp/_http_parser.pyx":163
- * self.url)
- * if "method" in dct:
- * ret.method = dct["method"] # <<<<<<<<<<<<<<
- * if "path" in dct:
- * ret.path = dct["path"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_method); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (!(likely(PyUnicode_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_11)->tp_name), 0))) __PYX_ERR(0, 163, __pyx_L1_error)
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->method);
- __Pyx_DECREF(__pyx_v_ret->method);
- __pyx_v_ret->method = ((PyObject*)__pyx_t_11);
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":162
- * self.chunked,
- * self.url)
- * if "method" in dct: # <<<<<<<<<<<<<<
- * ret.method = dct["method"]
- * if "path" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":164
- * if "method" in dct:
- * ret.method = dct["method"]
- * if "path" in dct: # <<<<<<<<<<<<<<
- * ret.path = dct["path"]
- * if "version" in dct:
- */
- __pyx_t_8 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_path, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 164, __pyx_L1_error)
- __pyx_t_9 = (__pyx_t_8 != 0);
- if (__pyx_t_9) {
-
- /* "aiohttp/_http_parser.pyx":165
- * ret.method = dct["method"]
- * if "path" in dct:
- * ret.path = dct["path"] # <<<<<<<<<<<<<<
- * if "version" in dct:
- * ret.version = dct["version"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_path); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (!(likely(PyUnicode_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_11)->tp_name), 0))) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->path);
- __Pyx_DECREF(__pyx_v_ret->path);
- __pyx_v_ret->path = ((PyObject*)__pyx_t_11);
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":164
- * if "method" in dct:
- * ret.method = dct["method"]
- * if "path" in dct: # <<<<<<<<<<<<<<
- * ret.path = dct["path"]
- * if "version" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":166
- * if "path" in dct:
- * ret.path = dct["path"]
- * if "version" in dct: # <<<<<<<<<<<<<<
- * ret.version = dct["version"]
- * if "headers" in dct:
- */
- __pyx_t_9 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_version, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 166, __pyx_L1_error)
- __pyx_t_8 = (__pyx_t_9 != 0);
- if (__pyx_t_8) {
-
- /* "aiohttp/_http_parser.pyx":167
- * ret.path = dct["path"]
- * if "version" in dct:
- * ret.version = dct["version"] # <<<<<<<<<<<<<<
- * if "headers" in dct:
- * ret.headers = dct["headers"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_version); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->version);
- __Pyx_DECREF(__pyx_v_ret->version);
- __pyx_v_ret->version = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":166
- * if "path" in dct:
- * ret.path = dct["path"]
- * if "version" in dct: # <<<<<<<<<<<<<<
- * ret.version = dct["version"]
- * if "headers" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":168
- * if "version" in dct:
- * ret.version = dct["version"]
- * if "headers" in dct: # <<<<<<<<<<<<<<
- * ret.headers = dct["headers"]
- * if "raw_headers" in dct:
- */
- __pyx_t_8 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_headers, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 168, __pyx_L1_error)
- __pyx_t_9 = (__pyx_t_8 != 0);
- if (__pyx_t_9) {
-
- /* "aiohttp/_http_parser.pyx":169
- * ret.version = dct["version"]
- * if "headers" in dct:
- * ret.headers = dct["headers"] # <<<<<<<<<<<<<<
- * if "raw_headers" in dct:
- * ret.raw_headers = dct["raw_headers"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_headers); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 169, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->headers);
- __Pyx_DECREF(__pyx_v_ret->headers);
- __pyx_v_ret->headers = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":168
- * if "version" in dct:
- * ret.version = dct["version"]
- * if "headers" in dct: # <<<<<<<<<<<<<<
- * ret.headers = dct["headers"]
- * if "raw_headers" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":170
- * if "headers" in dct:
- * ret.headers = dct["headers"]
- * if "raw_headers" in dct: # <<<<<<<<<<<<<<
- * ret.raw_headers = dct["raw_headers"]
- * if "should_close" in dct:
- */
- __pyx_t_9 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_raw_headers, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 170, __pyx_L1_error)
- __pyx_t_8 = (__pyx_t_9 != 0);
- if (__pyx_t_8) {
-
- /* "aiohttp/_http_parser.pyx":171
- * ret.headers = dct["headers"]
- * if "raw_headers" in dct:
- * ret.raw_headers = dct["raw_headers"] # <<<<<<<<<<<<<<
- * if "should_close" in dct:
- * ret.should_close = dct["should_close"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_raw_headers); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->raw_headers);
- __Pyx_DECREF(__pyx_v_ret->raw_headers);
- __pyx_v_ret->raw_headers = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":170
- * if "headers" in dct:
- * ret.headers = dct["headers"]
- * if "raw_headers" in dct: # <<<<<<<<<<<<<<
- * ret.raw_headers = dct["raw_headers"]
- * if "should_close" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":172
- * if "raw_headers" in dct:
- * ret.raw_headers = dct["raw_headers"]
- * if "should_close" in dct: # <<<<<<<<<<<<<<
- * ret.should_close = dct["should_close"]
- * if "compression" in dct:
- */
- __pyx_t_8 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_should_close, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 172, __pyx_L1_error)
- __pyx_t_9 = (__pyx_t_8 != 0);
- if (__pyx_t_9) {
-
- /* "aiohttp/_http_parser.pyx":173
- * ret.raw_headers = dct["raw_headers"]
- * if "should_close" in dct:
- * ret.should_close = dct["should_close"] # <<<<<<<<<<<<<<
- * if "compression" in dct:
- * ret.compression = dct["compression"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_should_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 173, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->should_close);
- __Pyx_DECREF(__pyx_v_ret->should_close);
- __pyx_v_ret->should_close = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":172
- * if "raw_headers" in dct:
- * ret.raw_headers = dct["raw_headers"]
- * if "should_close" in dct: # <<<<<<<<<<<<<<
- * ret.should_close = dct["should_close"]
- * if "compression" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":174
- * if "should_close" in dct:
- * ret.should_close = dct["should_close"]
- * if "compression" in dct: # <<<<<<<<<<<<<<
- * ret.compression = dct["compression"]
- * if "upgrade" in dct:
- */
- __pyx_t_9 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_compression, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 174, __pyx_L1_error)
- __pyx_t_8 = (__pyx_t_9 != 0);
- if (__pyx_t_8) {
-
- /* "aiohttp/_http_parser.pyx":175
- * ret.should_close = dct["should_close"]
- * if "compression" in dct:
- * ret.compression = dct["compression"] # <<<<<<<<<<<<<<
- * if "upgrade" in dct:
- * ret.upgrade = dct["upgrade"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_compression); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->compression);
- __Pyx_DECREF(__pyx_v_ret->compression);
- __pyx_v_ret->compression = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":174
- * if "should_close" in dct:
- * ret.should_close = dct["should_close"]
- * if "compression" in dct: # <<<<<<<<<<<<<<
- * ret.compression = dct["compression"]
- * if "upgrade" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":176
- * if "compression" in dct:
- * ret.compression = dct["compression"]
- * if "upgrade" in dct: # <<<<<<<<<<<<<<
- * ret.upgrade = dct["upgrade"]
- * if "chunked" in dct:
- */
- __pyx_t_8 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_upgrade, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 176, __pyx_L1_error)
- __pyx_t_9 = (__pyx_t_8 != 0);
- if (__pyx_t_9) {
-
- /* "aiohttp/_http_parser.pyx":177
- * ret.compression = dct["compression"]
- * if "upgrade" in dct:
- * ret.upgrade = dct["upgrade"] # <<<<<<<<<<<<<<
- * if "chunked" in dct:
- * ret.chunked = dct["chunked"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_upgrade); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 177, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->upgrade);
- __Pyx_DECREF(__pyx_v_ret->upgrade);
- __pyx_v_ret->upgrade = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":176
- * if "compression" in dct:
- * ret.compression = dct["compression"]
- * if "upgrade" in dct: # <<<<<<<<<<<<<<
- * ret.upgrade = dct["upgrade"]
- * if "chunked" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":178
- * if "upgrade" in dct:
- * ret.upgrade = dct["upgrade"]
- * if "chunked" in dct: # <<<<<<<<<<<<<<
- * ret.chunked = dct["chunked"]
- * if "url" in dct:
- */
- __pyx_t_9 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_chunked, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 178, __pyx_L1_error)
- __pyx_t_8 = (__pyx_t_9 != 0);
- if (__pyx_t_8) {
-
- /* "aiohttp/_http_parser.pyx":179
- * ret.upgrade = dct["upgrade"]
- * if "chunked" in dct:
- * ret.chunked = dct["chunked"] # <<<<<<<<<<<<<<
- * if "url" in dct:
- * ret.url = dct["url"]
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_chunked); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 179, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->chunked);
- __Pyx_DECREF(__pyx_v_ret->chunked);
- __pyx_v_ret->chunked = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":178
- * if "upgrade" in dct:
- * ret.upgrade = dct["upgrade"]
- * if "chunked" in dct: # <<<<<<<<<<<<<<
- * ret.chunked = dct["chunked"]
- * if "url" in dct:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":180
- * if "chunked" in dct:
- * ret.chunked = dct["chunked"]
- * if "url" in dct: # <<<<<<<<<<<<<<
- * ret.url = dct["url"]
- * return ret
- */
- __pyx_t_8 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_url, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 180, __pyx_L1_error)
- __pyx_t_9 = (__pyx_t_8 != 0);
- if (__pyx_t_9) {
-
- /* "aiohttp/_http_parser.pyx":181
- * ret.chunked = dct["chunked"]
- * if "url" in dct:
- * ret.url = dct["url"] # <<<<<<<<<<<<<<
- * return ret
- *
- */
- __pyx_t_11 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_n_u_url); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_GOTREF(__pyx_v_ret->url);
- __Pyx_DECREF(__pyx_v_ret->url);
- __pyx_v_ret->url = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "aiohttp/_http_parser.pyx":180
- * if "chunked" in dct:
- * ret.chunked = dct["chunked"]
- * if "url" in dct: # <<<<<<<<<<<<<<
- * ret.url = dct["url"]
- * return ret
- */
- }
-
- /* "aiohttp/_http_parser.pyx":182
- * if "url" in dct:
- * ret.url = dct["url"]
- * return ret # <<<<<<<<<<<<<<
- *
- * cdef _new_request_message(str method,
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_ret));
- __pyx_r = ((PyObject *)__pyx_v_ret);
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":150
- * return ''
- *
- * def _replace(self, **dct): # <<<<<<<<<<<<<<
- * cdef RawRequestMessage ret
- * ret = _new_request_message(self.method,
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_AddTraceback("aiohttp._http_parser.RawRequestMessage._replace", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_ret);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":111
- * @cython.freelist(DEFAULT_FREELIST_SIZE)
- * cdef class RawRequestMessage:
- * cdef readonly str method # <<<<<<<<<<<<<<
- * cdef readonly str path
- * cdef readonly object version # HttpVersion
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_6method_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_6method___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_6method___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->method);
- __pyx_r = __pyx_v_self->method;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":112
- * cdef class RawRequestMessage:
- * cdef readonly str method
- * cdef readonly str path # <<<<<<<<<<<<<<
- * cdef readonly object version # HttpVersion
- * cdef readonly object headers # CIMultiDict
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_4path_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_4path_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_4path___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_4path___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->path);
- __pyx_r = __pyx_v_self->path;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":113
- * cdef readonly str method
- * cdef readonly str path
- * cdef readonly object version # HttpVersion # <<<<<<<<<<<<<<
- * cdef readonly object headers # CIMultiDict
- * cdef readonly object raw_headers # tuple
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7version_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7version___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7version___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->version);
- __pyx_r = __pyx_v_self->version;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":114
- * cdef readonly str path
- * cdef readonly object version # HttpVersion
- * cdef readonly object headers # CIMultiDict # <<<<<<<<<<<<<<
- * cdef readonly object raw_headers # tuple
- * cdef readonly object should_close
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7headers_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7headers_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7headers___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7headers___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->headers);
- __pyx_r = __pyx_v_self->headers;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":115
- * cdef readonly object version # HttpVersion
- * cdef readonly object headers # CIMultiDict
- * cdef readonly object raw_headers # tuple # <<<<<<<<<<<<<<
- * cdef readonly object should_close
- * cdef readonly object compression
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_11raw_headers_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_11raw_headers_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_11raw_headers___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_11raw_headers___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->raw_headers);
- __pyx_r = __pyx_v_self->raw_headers;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":116
- * cdef readonly object headers # CIMultiDict
- * cdef readonly object raw_headers # tuple
- * cdef readonly object should_close # <<<<<<<<<<<<<<
- * cdef readonly object compression
- * cdef readonly object upgrade
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_12should_close_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_12should_close_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_12should_close___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_12should_close___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->should_close);
- __pyx_r = __pyx_v_self->should_close;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":117
- * cdef readonly object raw_headers # tuple
- * cdef readonly object should_close
- * cdef readonly object compression # <<<<<<<<<<<<<<
- * cdef readonly object upgrade
- * cdef readonly object chunked
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_11compression_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_11compression_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_11compression___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_11compression___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->compression);
- __pyx_r = __pyx_v_self->compression;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":118
- * cdef readonly object should_close
- * cdef readonly object compression
- * cdef readonly object upgrade # <<<<<<<<<<<<<<
- * cdef readonly object chunked
- * cdef readonly object url # yarl.URL
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7upgrade_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7upgrade_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7upgrade___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7upgrade___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->upgrade);
- __pyx_r = __pyx_v_self->upgrade;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":119
- * cdef readonly object compression
- * cdef readonly object upgrade
- * cdef readonly object chunked # <<<<<<<<<<<<<<
- * cdef readonly object url # yarl.URL
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7chunked_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7chunked_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7chunked___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_7chunked___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->chunked);
- __pyx_r = __pyx_v_self->chunked;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":120
- * cdef readonly object upgrade
- * cdef readonly object chunked
- * cdef readonly object url # yarl.URL # <<<<<<<<<<<<<<
- *
- * def __init__(self, method, path, version, headers, raw_headers,
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_3url_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_3url_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_3url___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_3url___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->url);
- __pyx_r = __pyx_v_self->url;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_6__reduce_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_6__reduce_cython__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self) {
- PyObject *__pyx_v_state = 0;
- PyObject *__pyx_v__dict = 0;
- int __pyx_v_use_setstate;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-
- /* "(tree fragment)":5
- * cdef object _dict
- * cdef bint use_setstate
- * state = (self.chunked, self.compression, self.headers, self.method, self.path, self.raw_headers, self.should_close, self.upgrade, self.url, self.version) # <<<<<<<<<<<<<<
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- */
- __pyx_t_1 = PyTuple_New(10); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_self->chunked);
- __Pyx_GIVEREF(__pyx_v_self->chunked);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->chunked);
- __Pyx_INCREF(__pyx_v_self->compression);
- __Pyx_GIVEREF(__pyx_v_self->compression);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->compression);
- __Pyx_INCREF(__pyx_v_self->headers);
- __Pyx_GIVEREF(__pyx_v_self->headers);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->headers);
- __Pyx_INCREF(__pyx_v_self->method);
- __Pyx_GIVEREF(__pyx_v_self->method);
- PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->method);
- __Pyx_INCREF(__pyx_v_self->path);
- __Pyx_GIVEREF(__pyx_v_self->path);
- PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->path);
- __Pyx_INCREF(__pyx_v_self->raw_headers);
- __Pyx_GIVEREF(__pyx_v_self->raw_headers);
- PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_self->raw_headers);
- __Pyx_INCREF(__pyx_v_self->should_close);
- __Pyx_GIVEREF(__pyx_v_self->should_close);
- PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_v_self->should_close);
- __Pyx_INCREF(__pyx_v_self->upgrade);
- __Pyx_GIVEREF(__pyx_v_self->upgrade);
- PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_v_self->upgrade);
- __Pyx_INCREF(__pyx_v_self->url);
- __Pyx_GIVEREF(__pyx_v_self->url);
- PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_v_self->url);
- __Pyx_INCREF(__pyx_v_self->version);
- __Pyx_GIVEREF(__pyx_v_self->version);
- PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_v_self->version);
- __pyx_v_state = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":6
- * cdef bint use_setstate
- * state = (self.chunked, self.compression, self.headers, self.method, self.path, self.raw_headers, self.should_close, self.upgrade, self.url, self.version)
- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
- * if _dict is not None:
- * state += (_dict,)
- */
- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v__dict = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":7
- * state = (self.chunked, self.compression, self.headers, self.method, self.path, self.raw_headers, self.should_close, self.upgrade, self.url, self.version)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- __pyx_t_2 = (__pyx_v__dict != Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
-
- /* "(tree fragment)":8
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- * state += (_dict,) # <<<<<<<<<<<<<<
- * use_setstate = True
- * else:
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v__dict);
- __Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
- __pyx_t_4 = 0;
-
- /* "(tree fragment)":9
- * if _dict is not None:
- * state += (_dict,)
- * use_setstate = True # <<<<<<<<<<<<<<
- * else:
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.method is not None or self.path is not None or self.raw_headers is not None or self.should_close is not None or self.upgrade is not None or self.url is not None or self.version is not None
- */
- __pyx_v_use_setstate = 1;
-
- /* "(tree fragment)":7
- * state = (self.chunked, self.compression, self.headers, self.method, self.path, self.raw_headers, self.should_close, self.upgrade, self.url, self.version)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- goto __pyx_L3;
- }
-
- /* "(tree fragment)":11
- * use_setstate = True
- * else:
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.method is not None or self.path is not None or self.raw_headers is not None or self.should_close is not None or self.upgrade is not None or self.url is not None or self.version is not None # <<<<<<<<<<<<<<
- * if use_setstate:
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, None), state
- */
- /*else*/ {
- __pyx_t_2 = (__pyx_v_self->chunked != Py_None);
- __pyx_t_5 = (__pyx_t_2 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_3 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->compression != Py_None);
- __pyx_t_2 = (__pyx_t_5 != 0);
- if (!__pyx_t_2) {
- } else {
- __pyx_t_3 = __pyx_t_2;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_2 = (__pyx_v_self->headers != Py_None);
- __pyx_t_5 = (__pyx_t_2 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_3 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->method != ((PyObject*)Py_None));
- __pyx_t_2 = (__pyx_t_5 != 0);
- if (!__pyx_t_2) {
- } else {
- __pyx_t_3 = __pyx_t_2;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_2 = (__pyx_v_self->path != ((PyObject*)Py_None));
- __pyx_t_5 = (__pyx_t_2 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_3 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->raw_headers != Py_None);
- __pyx_t_2 = (__pyx_t_5 != 0);
- if (!__pyx_t_2) {
- } else {
- __pyx_t_3 = __pyx_t_2;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_2 = (__pyx_v_self->should_close != Py_None);
- __pyx_t_5 = (__pyx_t_2 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_3 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->upgrade != Py_None);
- __pyx_t_2 = (__pyx_t_5 != 0);
- if (!__pyx_t_2) {
- } else {
- __pyx_t_3 = __pyx_t_2;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_2 = (__pyx_v_self->url != Py_None);
- __pyx_t_5 = (__pyx_t_2 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_3 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->version != Py_None);
- __pyx_t_2 = (__pyx_t_5 != 0);
- __pyx_t_3 = __pyx_t_2;
- __pyx_L4_bool_binop_done:;
- __pyx_v_use_setstate = __pyx_t_3;
- }
- __pyx_L3:;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.method is not None or self.path is not None or self.raw_headers is not None or self.should_close is not None or self.upgrade is not None or self.url is not None or self.version is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, None), state
- * else:
- */
- __pyx_t_3 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_3) {
-
- /* "(tree fragment)":13
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.method is not None or self.path is not None or self.raw_headers is not None or self.should_close is not None or self.upgrade is not None or self.url is not None or self.version is not None
- * if use_setstate:
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, None), state # <<<<<<<<<<<<<<
- * else:
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, state)
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_RawRequestMessage); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_21004882);
- __Pyx_GIVEREF(__pyx_int_21004882);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_21004882);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
- __pyx_t_4 = 0;
- __pyx_t_1 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
- goto __pyx_L0;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.method is not None or self.path is not None or self.raw_headers is not None or self.should_close is not None or self.upgrade is not None or self.url is not None or self.version is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, None), state
- * else:
- */
- }
-
- /* "(tree fragment)":15
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, None), state
- * else:
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, state) # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_RawRequestMessage__set_state(self, __pyx_state)
- */
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_RawRequestMessage); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_21004882);
- __Pyx_GIVEREF(__pyx_int_21004882);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_21004882);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
- __pyx_t_6 = 0;
- __pyx_t_1 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
- }
-
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("aiohttp._http_parser.RawRequestMessage.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_state);
- __Pyx_XDECREF(__pyx_v__dict);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_RawRequestMessage__set_state(self, __pyx_state)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17RawRequestMessage_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_8__setstate_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17RawRequestMessage_8__setstate_cython__(struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-
- /* "(tree fragment)":17
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, state)
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_RawRequestMessage__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
- */
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
- __pyx_t_1 = __pyx_f_7aiohttp_12_http_parser___pyx_unpickle_RawRequestMessage__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_RawRequestMessage, (type(self), 0x1408252, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_RawRequestMessage__set_state(self, __pyx_state)
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.RawRequestMessage.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":184
- * return ret
- *
- * cdef _new_request_message(str method, # <<<<<<<<<<<<<<
- * str path,
- * object version,
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser__new_request_message(PyObject *__pyx_v_method, PyObject *__pyx_v_path, PyObject *__pyx_v_version, PyObject *__pyx_v_headers, PyObject *__pyx_v_raw_headers, int __pyx_v_should_close, PyObject *__pyx_v_compression, int __pyx_v_upgrade, int __pyx_v_chunked, PyObject *__pyx_v_url) {
- struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *__pyx_v_ret = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_new_request_message", 0);
-
- /* "aiohttp/_http_parser.pyx":195
- * object url):
- * cdef RawRequestMessage ret
- * ret = RawRequestMessage.__new__(RawRequestMessage) # <<<<<<<<<<<<<<
- * ret.method = method
- * ret.path = path
- */
- __pyx_t_1 = ((PyObject *)__pyx_tp_new_7aiohttp_12_http_parser_RawRequestMessage(((PyTypeObject *)__pyx_ptype_7aiohttp_12_http_parser_RawRequestMessage), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error)
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_v_ret = ((struct __pyx_obj_7aiohttp_12_http_parser_RawRequestMessage *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":196
- * cdef RawRequestMessage ret
- * ret = RawRequestMessage.__new__(RawRequestMessage)
- * ret.method = method # <<<<<<<<<<<<<<
- * ret.path = path
- * ret.version = version
- */
- __Pyx_INCREF(__pyx_v_method);
- __Pyx_GIVEREF(__pyx_v_method);
- __Pyx_GOTREF(__pyx_v_ret->method);
- __Pyx_DECREF(__pyx_v_ret->method);
- __pyx_v_ret->method = __pyx_v_method;
-
- /* "aiohttp/_http_parser.pyx":197
- * ret = RawRequestMessage.__new__(RawRequestMessage)
- * ret.method = method
- * ret.path = path # <<<<<<<<<<<<<<
- * ret.version = version
- * ret.headers = headers
- */
- __Pyx_INCREF(__pyx_v_path);
- __Pyx_GIVEREF(__pyx_v_path);
- __Pyx_GOTREF(__pyx_v_ret->path);
- __Pyx_DECREF(__pyx_v_ret->path);
- __pyx_v_ret->path = __pyx_v_path;
-
- /* "aiohttp/_http_parser.pyx":198
- * ret.method = method
- * ret.path = path
- * ret.version = version # <<<<<<<<<<<<<<
- * ret.headers = headers
- * ret.raw_headers = raw_headers
- */
- __Pyx_INCREF(__pyx_v_version);
- __Pyx_GIVEREF(__pyx_v_version);
- __Pyx_GOTREF(__pyx_v_ret->version);
- __Pyx_DECREF(__pyx_v_ret->version);
- __pyx_v_ret->version = __pyx_v_version;
-
- /* "aiohttp/_http_parser.pyx":199
- * ret.path = path
- * ret.version = version
- * ret.headers = headers # <<<<<<<<<<<<<<
- * ret.raw_headers = raw_headers
- * ret.should_close = should_close
- */
- __Pyx_INCREF(__pyx_v_headers);
- __Pyx_GIVEREF(__pyx_v_headers);
- __Pyx_GOTREF(__pyx_v_ret->headers);
- __Pyx_DECREF(__pyx_v_ret->headers);
- __pyx_v_ret->headers = __pyx_v_headers;
-
- /* "aiohttp/_http_parser.pyx":200
- * ret.version = version
- * ret.headers = headers
- * ret.raw_headers = raw_headers # <<<<<<<<<<<<<<
- * ret.should_close = should_close
- * ret.compression = compression
- */
- __Pyx_INCREF(__pyx_v_raw_headers);
- __Pyx_GIVEREF(__pyx_v_raw_headers);
- __Pyx_GOTREF(__pyx_v_ret->raw_headers);
- __Pyx_DECREF(__pyx_v_ret->raw_headers);
- __pyx_v_ret->raw_headers = __pyx_v_raw_headers;
-
- /* "aiohttp/_http_parser.pyx":201
- * ret.headers = headers
- * ret.raw_headers = raw_headers
- * ret.should_close = should_close # <<<<<<<<<<<<<<
- * ret.compression = compression
- * ret.upgrade = upgrade
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_should_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_ret->should_close);
- __Pyx_DECREF(__pyx_v_ret->should_close);
- __pyx_v_ret->should_close = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":202
- * ret.raw_headers = raw_headers
- * ret.should_close = should_close
- * ret.compression = compression # <<<<<<<<<<<<<<
- * ret.upgrade = upgrade
- * ret.chunked = chunked
- */
- __Pyx_INCREF(__pyx_v_compression);
- __Pyx_GIVEREF(__pyx_v_compression);
- __Pyx_GOTREF(__pyx_v_ret->compression);
- __Pyx_DECREF(__pyx_v_ret->compression);
- __pyx_v_ret->compression = __pyx_v_compression;
-
- /* "aiohttp/_http_parser.pyx":203
- * ret.should_close = should_close
- * ret.compression = compression
- * ret.upgrade = upgrade # <<<<<<<<<<<<<<
- * ret.chunked = chunked
- * ret.url = url
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_upgrade); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_ret->upgrade);
- __Pyx_DECREF(__pyx_v_ret->upgrade);
- __pyx_v_ret->upgrade = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":204
- * ret.compression = compression
- * ret.upgrade = upgrade
- * ret.chunked = chunked # <<<<<<<<<<<<<<
- * ret.url = url
- * return ret
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_chunked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_ret->chunked);
- __Pyx_DECREF(__pyx_v_ret->chunked);
- __pyx_v_ret->chunked = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":205
- * ret.upgrade = upgrade
- * ret.chunked = chunked
- * ret.url = url # <<<<<<<<<<<<<<
- * return ret
- *
- */
- __Pyx_INCREF(__pyx_v_url);
- __Pyx_GIVEREF(__pyx_v_url);
- __Pyx_GOTREF(__pyx_v_ret->url);
- __Pyx_DECREF(__pyx_v_ret->url);
- __pyx_v_ret->url = __pyx_v_url;
-
- /* "aiohttp/_http_parser.pyx":206
- * ret.chunked = chunked
- * ret.url = url
- * return ret # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_ret));
- __pyx_r = ((PyObject *)__pyx_v_ret);
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":184
- * return ret
- *
- * cdef _new_request_message(str method, # <<<<<<<<<<<<<<
- * str path,
- * object version,
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser._new_request_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_ret);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":221
- * cdef readonly object chunked
- *
- * def __init__(self, version, code, reason, headers, raw_headers, # <<<<<<<<<<<<<<
- * should_close, compression, upgrade, chunked):
- * self.version = version
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_version = 0;
- PyObject *__pyx_v_code = 0;
- PyObject *__pyx_v_reason = 0;
- PyObject *__pyx_v_headers = 0;
- PyObject *__pyx_v_raw_headers = 0;
- PyObject *__pyx_v_should_close = 0;
- PyObject *__pyx_v_compression = 0;
- PyObject *__pyx_v_upgrade = 0;
- PyObject *__pyx_v_chunked = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_version,&__pyx_n_s_code,&__pyx_n_s_reason,&__pyx_n_s_headers,&__pyx_n_s_raw_headers,&__pyx_n_s_should_close,&__pyx_n_s_compression,&__pyx_n_s_upgrade,&__pyx_n_s_chunked,0};
- PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- CYTHON_FALLTHROUGH;
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- CYTHON_FALLTHROUGH;
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- CYTHON_FALLTHROUGH;
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- CYTHON_FALLTHROUGH;
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- CYTHON_FALLTHROUGH;
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- CYTHON_FALLTHROUGH;
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_version)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- CYTHON_FALLTHROUGH;
- case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 1); __PYX_ERR(0, 221, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reason)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 2); __PYX_ERR(0, 221, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_headers)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 3); __PYX_ERR(0, 221, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_raw_headers)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 4); __PYX_ERR(0, 221, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 5:
- if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_should_close)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 5); __PYX_ERR(0, 221, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 6:
- if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_compression)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 6); __PYX_ERR(0, 221, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 7:
- if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_upgrade)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 7); __PYX_ERR(0, 221, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 8:
- if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_chunked)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 8); __PYX_ERR(0, 221, __pyx_L3_error)
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 221, __pyx_L3_error)
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- }
- __pyx_v_version = values[0];
- __pyx_v_code = values[1];
- __pyx_v_reason = values[2];
- __pyx_v_headers = values[3];
- __pyx_v_raw_headers = values[4];
- __pyx_v_should_close = values[5];
- __pyx_v_compression = values[6];
- __pyx_v_upgrade = values[7];
- __pyx_v_chunked = values[8];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 221, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.RawResponseMessage.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage___init__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self), __pyx_v_version, __pyx_v_code, __pyx_v_reason, __pyx_v_headers, __pyx_v_raw_headers, __pyx_v_should_close, __pyx_v_compression, __pyx_v_upgrade, __pyx_v_chunked);
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage___init__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self, PyObject *__pyx_v_version, PyObject *__pyx_v_code, PyObject *__pyx_v_reason, PyObject *__pyx_v_headers, PyObject *__pyx_v_raw_headers, PyObject *__pyx_v_should_close, PyObject *__pyx_v_compression, PyObject *__pyx_v_upgrade, PyObject *__pyx_v_chunked) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
-
- /* "aiohttp/_http_parser.pyx":223
- * def __init__(self, version, code, reason, headers, raw_headers,
- * should_close, compression, upgrade, chunked):
- * self.version = version # <<<<<<<<<<<<<<
- * self.code = code
- * self.reason = reason
- */
- __Pyx_INCREF(__pyx_v_version);
- __Pyx_GIVEREF(__pyx_v_version);
- __Pyx_GOTREF(__pyx_v_self->version);
- __Pyx_DECREF(__pyx_v_self->version);
- __pyx_v_self->version = __pyx_v_version;
-
- /* "aiohttp/_http_parser.pyx":224
- * should_close, compression, upgrade, chunked):
- * self.version = version
- * self.code = code # <<<<<<<<<<<<<<
- * self.reason = reason
- * self.headers = headers
- */
- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_code); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 224, __pyx_L1_error)
- __pyx_v_self->code = __pyx_t_1;
-
- /* "aiohttp/_http_parser.pyx":225
- * self.version = version
- * self.code = code
- * self.reason = reason # <<<<<<<<<<<<<<
- * self.headers = headers
- * self.raw_headers = raw_headers
- */
- if (!(likely(PyUnicode_CheckExact(__pyx_v_reason))||((__pyx_v_reason) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_reason)->tp_name), 0))) __PYX_ERR(0, 225, __pyx_L1_error)
- __pyx_t_2 = __pyx_v_reason;
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->reason);
- __Pyx_DECREF(__pyx_v_self->reason);
- __pyx_v_self->reason = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":226
- * self.code = code
- * self.reason = reason
- * self.headers = headers # <<<<<<<<<<<<<<
- * self.raw_headers = raw_headers
- * self.should_close = should_close
- */
- __Pyx_INCREF(__pyx_v_headers);
- __Pyx_GIVEREF(__pyx_v_headers);
- __Pyx_GOTREF(__pyx_v_self->headers);
- __Pyx_DECREF(__pyx_v_self->headers);
- __pyx_v_self->headers = __pyx_v_headers;
-
- /* "aiohttp/_http_parser.pyx":227
- * self.reason = reason
- * self.headers = headers
- * self.raw_headers = raw_headers # <<<<<<<<<<<<<<
- * self.should_close = should_close
- * self.compression = compression
- */
- __Pyx_INCREF(__pyx_v_raw_headers);
- __Pyx_GIVEREF(__pyx_v_raw_headers);
- __Pyx_GOTREF(__pyx_v_self->raw_headers);
- __Pyx_DECREF(__pyx_v_self->raw_headers);
- __pyx_v_self->raw_headers = __pyx_v_raw_headers;
-
- /* "aiohttp/_http_parser.pyx":228
- * self.headers = headers
- * self.raw_headers = raw_headers
- * self.should_close = should_close # <<<<<<<<<<<<<<
- * self.compression = compression
- * self.upgrade = upgrade
- */
- __Pyx_INCREF(__pyx_v_should_close);
- __Pyx_GIVEREF(__pyx_v_should_close);
- __Pyx_GOTREF(__pyx_v_self->should_close);
- __Pyx_DECREF(__pyx_v_self->should_close);
- __pyx_v_self->should_close = __pyx_v_should_close;
-
- /* "aiohttp/_http_parser.pyx":229
- * self.raw_headers = raw_headers
- * self.should_close = should_close
- * self.compression = compression # <<<<<<<<<<<<<<
- * self.upgrade = upgrade
- * self.chunked = chunked
- */
- __Pyx_INCREF(__pyx_v_compression);
- __Pyx_GIVEREF(__pyx_v_compression);
- __Pyx_GOTREF(__pyx_v_self->compression);
- __Pyx_DECREF(__pyx_v_self->compression);
- __pyx_v_self->compression = __pyx_v_compression;
-
- /* "aiohttp/_http_parser.pyx":230
- * self.should_close = should_close
- * self.compression = compression
- * self.upgrade = upgrade # <<<<<<<<<<<<<<
- * self.chunked = chunked
- *
- */
- __Pyx_INCREF(__pyx_v_upgrade);
- __Pyx_GIVEREF(__pyx_v_upgrade);
- __Pyx_GOTREF(__pyx_v_self->upgrade);
- __Pyx_DECREF(__pyx_v_self->upgrade);
- __pyx_v_self->upgrade = __pyx_v_upgrade;
-
- /* "aiohttp/_http_parser.pyx":231
- * self.compression = compression
- * self.upgrade = upgrade
- * self.chunked = chunked # <<<<<<<<<<<<<<
- *
- * def __repr__(self):
- */
- __Pyx_INCREF(__pyx_v_chunked);
- __Pyx_GIVEREF(__pyx_v_chunked);
- __Pyx_GOTREF(__pyx_v_self->chunked);
- __Pyx_DECREF(__pyx_v_self->chunked);
- __pyx_v_self->chunked = __pyx_v_chunked;
-
- /* "aiohttp/_http_parser.pyx":221
- * cdef readonly object chunked
- *
- * def __init__(self, version, code, reason, headers, raw_headers, # <<<<<<<<<<<<<<
- * should_close, compression, upgrade, chunked):
- * self.version = version
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("aiohttp._http_parser.RawResponseMessage.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":233
- * self.chunked = chunked
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * info = []
- * info.append(("version", self.version))
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_3__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_3__repr__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_2__repr__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_7aiohttp_12_http_parser_18RawResponseMessage_8__repr___2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-
-/* "aiohttp/_http_parser.pyx":244
- * info.append(("upgrade", self.upgrade))
- * info.append(("chunked", self.chunked))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info) # <<<<<<<<<<<<<<
- * return ''
- *
- */
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_8__repr___genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr *)__pyx_tp_new_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr(__pyx_ptype_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __pyx_cur_scope = ((struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr *)Py_None);
- __Pyx_INCREF(Py_None);
- __PYX_ERR(0, 244, __pyx_L1_error)
- } else {
- __Pyx_GOTREF(__pyx_cur_scope);
- }
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__ *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7aiohttp_12_http_parser_18RawResponseMessage_8__repr___2generator1, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_repr___locals_genexpr, __pyx_n_s_aiohttp__http_parser); if (unlikely(!gen)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.RawResponseMessage.__repr__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_7aiohttp_12_http_parser_18RawResponseMessage_8__repr___2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_3_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *(*__pyx_t_7)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("genexpr", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 244, __pyx_L1_error)
- __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_r);
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_info)) { __Pyx_RaiseClosureNameError("info"); __PYX_ERR(0, 244, __pyx_L1_error) }
- if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_info == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 244, __pyx_L1_error)
- }
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_info; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- for (;;) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 244, __pyx_L1_error)
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- #endif
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 244, __pyx_L1_error)
- }
- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- #else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 244, __pyx_L1_error)
- __pyx_t_7 = NULL;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L7_unpacking_done;
- __pyx_L6_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 244, __pyx_L1_error)
- __pyx_L7_unpacking_done:;
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_name);
- __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_name, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_val);
- __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_val, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_name, __pyx_kp_u_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyObject_Repr(__pyx_cur_scope->__pyx_v_val); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
-
- /* function exit code */
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- #if !CYTHON_USE_EXC_INFO_STACK
- __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
- #endif
- __pyx_generator->resume_label = -1;
- __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":233
- * self.chunked = chunked
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * info = []
- * info.append(("version", self.version))
- */
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_2__repr__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__ *__pyx_cur_scope;
- PyObject *__pyx_v_sinfo = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__repr__", 0);
- __pyx_cur_scope = (struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__ *)__pyx_tp_new_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__(__pyx_ptype_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __pyx_cur_scope = ((struct __pyx_obj_7aiohttp_12_http_parser___pyx_scope_struct_2___repr__ *)Py_None);
- __Pyx_INCREF(Py_None);
- __PYX_ERR(0, 233, __pyx_L1_error)
- } else {
- __Pyx_GOTREF(__pyx_cur_scope);
- }
-
- /* "aiohttp/_http_parser.pyx":234
- *
- * def __repr__(self):
- * info = [] # <<<<<<<<<<<<<<
- * info.append(("version", self.version))
- * info.append(("code", self.code))
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_info = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":235
- * def __repr__(self):
- * info = []
- * info.append(("version", self.version)) # <<<<<<<<<<<<<<
- * info.append(("code", self.code))
- * info.append(("reason", self.reason))
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_n_u_version);
- __Pyx_GIVEREF(__pyx_n_u_version);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_version);
- __Pyx_INCREF(__pyx_v_self->version);
- __Pyx_GIVEREF(__pyx_v_self->version);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->version);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":236
- * info = []
- * info.append(("version", self.version))
- * info.append(("code", self.code)) # <<<<<<<<<<<<<<
- * info.append(("reason", self.reason))
- * info.append(("headers", self.headers))
- */
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_n_u_code);
- __Pyx_GIVEREF(__pyx_n_u_code);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_code);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 236, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":237
- * info.append(("version", self.version))
- * info.append(("code", self.code))
- * info.append(("reason", self.reason)) # <<<<<<<<<<<<<<
- * info.append(("headers", self.headers))
- * info.append(("raw_headers", self.raw_headers))
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_n_u_reason);
- __Pyx_GIVEREF(__pyx_n_u_reason);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_reason);
- __Pyx_INCREF(__pyx_v_self->reason);
- __Pyx_GIVEREF(__pyx_v_self->reason);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->reason);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 237, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":238
- * info.append(("code", self.code))
- * info.append(("reason", self.reason))
- * info.append(("headers", self.headers)) # <<<<<<<<<<<<<<
- * info.append(("raw_headers", self.raw_headers))
- * info.append(("should_close", self.should_close))
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_n_u_headers);
- __Pyx_GIVEREF(__pyx_n_u_headers);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_headers);
- __Pyx_INCREF(__pyx_v_self->headers);
- __Pyx_GIVEREF(__pyx_v_self->headers);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->headers);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 238, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":239
- * info.append(("reason", self.reason))
- * info.append(("headers", self.headers))
- * info.append(("raw_headers", self.raw_headers)) # <<<<<<<<<<<<<<
- * info.append(("should_close", self.should_close))
- * info.append(("compression", self.compression))
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_n_u_raw_headers);
- __Pyx_GIVEREF(__pyx_n_u_raw_headers);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_raw_headers);
- __Pyx_INCREF(__pyx_v_self->raw_headers);
- __Pyx_GIVEREF(__pyx_v_self->raw_headers);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->raw_headers);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 239, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":240
- * info.append(("headers", self.headers))
- * info.append(("raw_headers", self.raw_headers))
- * info.append(("should_close", self.should_close)) # <<<<<<<<<<<<<<
- * info.append(("compression", self.compression))
- * info.append(("upgrade", self.upgrade))
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_n_u_should_close);
- __Pyx_GIVEREF(__pyx_n_u_should_close);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_should_close);
- __Pyx_INCREF(__pyx_v_self->should_close);
- __Pyx_GIVEREF(__pyx_v_self->should_close);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->should_close);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 240, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":241
- * info.append(("raw_headers", self.raw_headers))
- * info.append(("should_close", self.should_close))
- * info.append(("compression", self.compression)) # <<<<<<<<<<<<<<
- * info.append(("upgrade", self.upgrade))
- * info.append(("chunked", self.chunked))
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_n_u_compression);
- __Pyx_GIVEREF(__pyx_n_u_compression);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_compression);
- __Pyx_INCREF(__pyx_v_self->compression);
- __Pyx_GIVEREF(__pyx_v_self->compression);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->compression);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":242
- * info.append(("should_close", self.should_close))
- * info.append(("compression", self.compression))
- * info.append(("upgrade", self.upgrade)) # <<<<<<<<<<<<<<
- * info.append(("chunked", self.chunked))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info)
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_n_u_upgrade);
- __Pyx_GIVEREF(__pyx_n_u_upgrade);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_upgrade);
- __Pyx_INCREF(__pyx_v_self->upgrade);
- __Pyx_GIVEREF(__pyx_v_self->upgrade);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->upgrade);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":243
- * info.append(("compression", self.compression))
- * info.append(("upgrade", self.upgrade))
- * info.append(("chunked", self.chunked)) # <<<<<<<<<<<<<<
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info)
- * return ''
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 243, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_n_u_chunked);
- __Pyx_GIVEREF(__pyx_n_u_chunked);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_chunked);
- __Pyx_INCREF(__pyx_v_self->chunked);
- __Pyx_GIVEREF(__pyx_v_self->chunked);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->chunked);
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_info, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 243, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":244
- * info.append(("upgrade", self.upgrade))
- * info.append(("chunked", self.chunked))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info) # <<<<<<<<<<<<<<
- * return ''
- *
- */
- __pyx_t_3 = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_8__repr___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyUnicode_Join(__pyx_kp_u__2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_sinfo = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":245
- * info.append(("chunked", self.chunked))
- * sinfo = ', '.join(name + '=' + repr(val) for name, val in info)
- * return '' # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_PyUnicode_ConcatSafe(__pyx_kp_u_RawResponseMessage, __pyx_v_sinfo); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_3, __pyx_kp_u__3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":233
- * self.chunked = chunked
- *
- * def __repr__(self): # <<<<<<<<<<<<<<
- * info = []
- * info.append(("version", self.version))
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._http_parser.RawResponseMessage.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_sinfo);
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":211
- * @cython.freelist(DEFAULT_FREELIST_SIZE)
- * cdef class RawResponseMessage:
- * cdef readonly object version # HttpVersion # <<<<<<<<<<<<<<
- * cdef readonly int code
- * cdef readonly str reason
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7version_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7version___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7version___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->version);
- __pyx_r = __pyx_v_self->version;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":212
- * cdef class RawResponseMessage:
- * cdef readonly object version # HttpVersion
- * cdef readonly int code # <<<<<<<<<<<<<<
- * cdef readonly str reason
- * cdef readonly object headers # CIMultiDict
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_4code_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_4code_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_4code___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_4code___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.RawResponseMessage.code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":213
- * cdef readonly object version # HttpVersion
- * cdef readonly int code
- * cdef readonly str reason # <<<<<<<<<<<<<<
- * cdef readonly object headers # CIMultiDict
- * cdef readonly object raw_headers # tuple
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_6reason_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_6reason_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_6reason___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_6reason___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->reason);
- __pyx_r = __pyx_v_self->reason;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":214
- * cdef readonly int code
- * cdef readonly str reason
- * cdef readonly object headers # CIMultiDict # <<<<<<<<<<<<<<
- * cdef readonly object raw_headers # tuple
- * cdef readonly object should_close
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7headers_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7headers_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7headers___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7headers___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->headers);
- __pyx_r = __pyx_v_self->headers;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":215
- * cdef readonly str reason
- * cdef readonly object headers # CIMultiDict
- * cdef readonly object raw_headers # tuple # <<<<<<<<<<<<<<
- * cdef readonly object should_close
- * cdef readonly object compression
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_11raw_headers_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_11raw_headers_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_11raw_headers___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_11raw_headers___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->raw_headers);
- __pyx_r = __pyx_v_self->raw_headers;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":216
- * cdef readonly object headers # CIMultiDict
- * cdef readonly object raw_headers # tuple
- * cdef readonly object should_close # <<<<<<<<<<<<<<
- * cdef readonly object compression
- * cdef readonly object upgrade
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_12should_close_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_12should_close_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_12should_close___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_12should_close___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->should_close);
- __pyx_r = __pyx_v_self->should_close;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":217
- * cdef readonly object raw_headers # tuple
- * cdef readonly object should_close
- * cdef readonly object compression # <<<<<<<<<<<<<<
- * cdef readonly object upgrade
- * cdef readonly object chunked
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_11compression_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_11compression_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_11compression___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_11compression___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->compression);
- __pyx_r = __pyx_v_self->compression;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":218
- * cdef readonly object should_close
- * cdef readonly object compression
- * cdef readonly object upgrade # <<<<<<<<<<<<<<
- * cdef readonly object chunked
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7upgrade_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7upgrade_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7upgrade___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7upgrade___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->upgrade);
- __pyx_r = __pyx_v_self->upgrade;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":219
- * cdef readonly object compression
- * cdef readonly object upgrade
- * cdef readonly object chunked # <<<<<<<<<<<<<<
- *
- * def __init__(self, version, code, reason, headers, raw_headers,
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7chunked_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7chunked_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7chunked___get__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_7chunked___get__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->chunked);
- __pyx_r = __pyx_v_self->chunked;
- goto __pyx_L0;
-
- /* function exit code */
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_4__reduce_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_4__reduce_cython__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self) {
- PyObject *__pyx_v_state = 0;
- PyObject *__pyx_v__dict = 0;
- int __pyx_v_use_setstate;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-
- /* "(tree fragment)":5
- * cdef object _dict
- * cdef bint use_setstate
- * state = (self.chunked, self.code, self.compression, self.headers, self.raw_headers, self.reason, self.should_close, self.upgrade, self.version) # <<<<<<<<<<<<<<
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- */
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->code); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(9); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_self->chunked);
- __Pyx_GIVEREF(__pyx_v_self->chunked);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->chunked);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
- __Pyx_INCREF(__pyx_v_self->compression);
- __Pyx_GIVEREF(__pyx_v_self->compression);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->compression);
- __Pyx_INCREF(__pyx_v_self->headers);
- __Pyx_GIVEREF(__pyx_v_self->headers);
- PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->headers);
- __Pyx_INCREF(__pyx_v_self->raw_headers);
- __Pyx_GIVEREF(__pyx_v_self->raw_headers);
- PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_self->raw_headers);
- __Pyx_INCREF(__pyx_v_self->reason);
- __Pyx_GIVEREF(__pyx_v_self->reason);
- PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_self->reason);
- __Pyx_INCREF(__pyx_v_self->should_close);
- __Pyx_GIVEREF(__pyx_v_self->should_close);
- PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_self->should_close);
- __Pyx_INCREF(__pyx_v_self->upgrade);
- __Pyx_GIVEREF(__pyx_v_self->upgrade);
- PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_v_self->upgrade);
- __Pyx_INCREF(__pyx_v_self->version);
- __Pyx_GIVEREF(__pyx_v_self->version);
- PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_v_self->version);
- __pyx_t_1 = 0;
- __pyx_v_state = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "(tree fragment)":6
- * cdef bint use_setstate
- * state = (self.chunked, self.code, self.compression, self.headers, self.raw_headers, self.reason, self.should_close, self.upgrade, self.version)
- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
- * if _dict is not None:
- * state += (_dict,)
- */
- __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v__dict = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "(tree fragment)":7
- * state = (self.chunked, self.code, self.compression, self.headers, self.raw_headers, self.reason, self.should_close, self.upgrade, self.version)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- __pyx_t_3 = (__pyx_v__dict != Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
-
- /* "(tree fragment)":8
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None:
- * state += (_dict,) # <<<<<<<<<<<<<<
- * use_setstate = True
- * else:
- */
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v__dict);
- __Pyx_GIVEREF(__pyx_v__dict);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
- __pyx_t_1 = 0;
-
- /* "(tree fragment)":9
- * if _dict is not None:
- * state += (_dict,)
- * use_setstate = True # <<<<<<<<<<<<<<
- * else:
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.raw_headers is not None or self.reason is not None or self.should_close is not None or self.upgrade is not None or self.version is not None
- */
- __pyx_v_use_setstate = 1;
-
- /* "(tree fragment)":7
- * state = (self.chunked, self.code, self.compression, self.headers, self.raw_headers, self.reason, self.should_close, self.upgrade, self.version)
- * _dict = getattr(self, '__dict__', None)
- * if _dict is not None: # <<<<<<<<<<<<<<
- * state += (_dict,)
- * use_setstate = True
- */
- goto __pyx_L3;
- }
-
- /* "(tree fragment)":11
- * use_setstate = True
- * else:
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.raw_headers is not None or self.reason is not None or self.should_close is not None or self.upgrade is not None or self.version is not None # <<<<<<<<<<<<<<
- * if use_setstate:
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, None), state
- */
- /*else*/ {
- __pyx_t_3 = (__pyx_v_self->chunked != Py_None);
- __pyx_t_5 = (__pyx_t_3 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_4 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->compression != Py_None);
- __pyx_t_3 = (__pyx_t_5 != 0);
- if (!__pyx_t_3) {
- } else {
- __pyx_t_4 = __pyx_t_3;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_3 = (__pyx_v_self->headers != Py_None);
- __pyx_t_5 = (__pyx_t_3 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_4 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->raw_headers != Py_None);
- __pyx_t_3 = (__pyx_t_5 != 0);
- if (!__pyx_t_3) {
- } else {
- __pyx_t_4 = __pyx_t_3;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_3 = (__pyx_v_self->reason != ((PyObject*)Py_None));
- __pyx_t_5 = (__pyx_t_3 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_4 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->should_close != Py_None);
- __pyx_t_3 = (__pyx_t_5 != 0);
- if (!__pyx_t_3) {
- } else {
- __pyx_t_4 = __pyx_t_3;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_3 = (__pyx_v_self->upgrade != Py_None);
- __pyx_t_5 = (__pyx_t_3 != 0);
- if (!__pyx_t_5) {
- } else {
- __pyx_t_4 = __pyx_t_5;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->version != Py_None);
- __pyx_t_3 = (__pyx_t_5 != 0);
- __pyx_t_4 = __pyx_t_3;
- __pyx_L4_bool_binop_done:;
- __pyx_v_use_setstate = __pyx_t_4;
- }
- __pyx_L3:;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.raw_headers is not None or self.reason is not None or self.should_close is not None or self.upgrade is not None or self.version is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, None), state
- * else:
- */
- __pyx_t_4 = (__pyx_v_use_setstate != 0);
- if (__pyx_t_4) {
-
- /* "(tree fragment)":13
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.raw_headers is not None or self.reason is not None or self.should_close is not None or self.upgrade is not None or self.version is not None
- * if use_setstate:
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, None), state # <<<<<<<<<<<<<<
- * else:
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, state)
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_RawResponseMessag); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_209127132);
- __Pyx_GIVEREF(__pyx_int_209127132);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_209127132);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
- __pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
- goto __pyx_L0;
-
- /* "(tree fragment)":12
- * else:
- * use_setstate = self.chunked is not None or self.compression is not None or self.headers is not None or self.raw_headers is not None or self.reason is not None or self.should_close is not None or self.upgrade is not None or self.version is not None
- * if use_setstate: # <<<<<<<<<<<<<<
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, None), state
- * else:
- */
- }
-
- /* "(tree fragment)":15
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, None), state
- * else:
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, state) # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_RawResponseMessage__set_state(self, __pyx_state)
- */
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_RawResponseMessag); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
- __Pyx_INCREF(__pyx_int_209127132);
- __Pyx_GIVEREF(__pyx_int_209127132);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_209127132);
- __Pyx_INCREF(__pyx_v_state);
- __Pyx_GIVEREF(__pyx_v_state);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
- __pyx_t_6 = 0;
- __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
- }
-
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * cdef tuple state
- * cdef object _dict
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("aiohttp._http_parser.RawResponseMessage.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_state);
- __Pyx_XDECREF(__pyx_v__dict);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_RawResponseMessage__set_state(self, __pyx_state)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18RawResponseMessage_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_6__setstate_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18RawResponseMessage_6__setstate_cython__(struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-
- /* "(tree fragment)":17
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, state)
- * def __setstate_cython__(self, __pyx_state):
- * __pyx_unpickle_RawResponseMessage__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
- */
- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
- __pyx_t_1 = __pyx_f_7aiohttp_12_http_parser___pyx_unpickle_RawResponseMessage__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "(tree fragment)":16
- * else:
- * return __pyx_unpickle_RawResponseMessage, (type(self), 0xc7706dc, state)
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * __pyx_unpickle_RawResponseMessage__set_state(self, __pyx_state)
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.RawResponseMessage.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":248
- *
- *
- * cdef _new_response_message(object version, # <<<<<<<<<<<<<<
- * int code,
- * str reason,
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser__new_response_message(PyObject *__pyx_v_version, int __pyx_v_code, PyObject *__pyx_v_reason, PyObject *__pyx_v_headers, PyObject *__pyx_v_raw_headers, int __pyx_v_should_close, PyObject *__pyx_v_compression, int __pyx_v_upgrade, int __pyx_v_chunked) {
- struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *__pyx_v_ret = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_new_response_message", 0);
-
- /* "aiohttp/_http_parser.pyx":258
- * bint chunked):
- * cdef RawResponseMessage ret
- * ret = RawResponseMessage.__new__(RawResponseMessage) # <<<<<<<<<<<<<<
- * ret.version = version
- * ret.code = code
- */
- __pyx_t_1 = ((PyObject *)__pyx_tp_new_7aiohttp_12_http_parser_RawResponseMessage(((PyTypeObject *)__pyx_ptype_7aiohttp_12_http_parser_RawResponseMessage), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error)
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_v_ret = ((struct __pyx_obj_7aiohttp_12_http_parser_RawResponseMessage *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":259
- * cdef RawResponseMessage ret
- * ret = RawResponseMessage.__new__(RawResponseMessage)
- * ret.version = version # <<<<<<<<<<<<<<
- * ret.code = code
- * ret.reason = reason
- */
- __Pyx_INCREF(__pyx_v_version);
- __Pyx_GIVEREF(__pyx_v_version);
- __Pyx_GOTREF(__pyx_v_ret->version);
- __Pyx_DECREF(__pyx_v_ret->version);
- __pyx_v_ret->version = __pyx_v_version;
-
- /* "aiohttp/_http_parser.pyx":260
- * ret = RawResponseMessage.__new__(RawResponseMessage)
- * ret.version = version
- * ret.code = code # <<<<<<<<<<<<<<
- * ret.reason = reason
- * ret.headers = headers
- */
- __pyx_v_ret->code = __pyx_v_code;
-
- /* "aiohttp/_http_parser.pyx":261
- * ret.version = version
- * ret.code = code
- * ret.reason = reason # <<<<<<<<<<<<<<
- * ret.headers = headers
- * ret.raw_headers = raw_headers
- */
- __Pyx_INCREF(__pyx_v_reason);
- __Pyx_GIVEREF(__pyx_v_reason);
- __Pyx_GOTREF(__pyx_v_ret->reason);
- __Pyx_DECREF(__pyx_v_ret->reason);
- __pyx_v_ret->reason = __pyx_v_reason;
-
- /* "aiohttp/_http_parser.pyx":262
- * ret.code = code
- * ret.reason = reason
- * ret.headers = headers # <<<<<<<<<<<<<<
- * ret.raw_headers = raw_headers
- * ret.should_close = should_close
- */
- __Pyx_INCREF(__pyx_v_headers);
- __Pyx_GIVEREF(__pyx_v_headers);
- __Pyx_GOTREF(__pyx_v_ret->headers);
- __Pyx_DECREF(__pyx_v_ret->headers);
- __pyx_v_ret->headers = __pyx_v_headers;
-
- /* "aiohttp/_http_parser.pyx":263
- * ret.reason = reason
- * ret.headers = headers
- * ret.raw_headers = raw_headers # <<<<<<<<<<<<<<
- * ret.should_close = should_close
- * ret.compression = compression
- */
- __Pyx_INCREF(__pyx_v_raw_headers);
- __Pyx_GIVEREF(__pyx_v_raw_headers);
- __Pyx_GOTREF(__pyx_v_ret->raw_headers);
- __Pyx_DECREF(__pyx_v_ret->raw_headers);
- __pyx_v_ret->raw_headers = __pyx_v_raw_headers;
-
- /* "aiohttp/_http_parser.pyx":264
- * ret.headers = headers
- * ret.raw_headers = raw_headers
- * ret.should_close = should_close # <<<<<<<<<<<<<<
- * ret.compression = compression
- * ret.upgrade = upgrade
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_should_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_ret->should_close);
- __Pyx_DECREF(__pyx_v_ret->should_close);
- __pyx_v_ret->should_close = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":265
- * ret.raw_headers = raw_headers
- * ret.should_close = should_close
- * ret.compression = compression # <<<<<<<<<<<<<<
- * ret.upgrade = upgrade
- * ret.chunked = chunked
- */
- __Pyx_INCREF(__pyx_v_compression);
- __Pyx_GIVEREF(__pyx_v_compression);
- __Pyx_GOTREF(__pyx_v_ret->compression);
- __Pyx_DECREF(__pyx_v_ret->compression);
- __pyx_v_ret->compression = __pyx_v_compression;
-
- /* "aiohttp/_http_parser.pyx":266
- * ret.should_close = should_close
- * ret.compression = compression
- * ret.upgrade = upgrade # <<<<<<<<<<<<<<
- * ret.chunked = chunked
- * return ret
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_upgrade); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_ret->upgrade);
- __Pyx_DECREF(__pyx_v_ret->upgrade);
- __pyx_v_ret->upgrade = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":267
- * ret.compression = compression
- * ret.upgrade = upgrade
- * ret.chunked = chunked # <<<<<<<<<<<<<<
- * return ret
- *
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_chunked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_ret->chunked);
- __Pyx_DECREF(__pyx_v_ret->chunked);
- __pyx_v_ret->chunked = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":268
- * ret.upgrade = upgrade
- * ret.chunked = chunked
- * return ret # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_ret));
- __pyx_r = ((PyObject *)__pyx_v_ret);
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":248
- *
- *
- * cdef _new_response_message(object version, # <<<<<<<<<<<<<<
- * int code,
- * str reason,
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser._new_response_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_ret);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":312
- * Py_buffer py_buf
- *
- * def __cinit__(self): # <<<<<<<<<<<<<<
- * self._cparser = \
- * PyMem_Malloc(sizeof(cparser.http_parser))
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_12_http_parser_10HttpParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_7aiohttp_12_http_parser_10HttpParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_10HttpParser___cinit__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_12_http_parser_10HttpParser___cinit__(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "aiohttp/_http_parser.pyx":313
- *
- * def __cinit__(self):
- * self._cparser = \ # <<<<<<<<<<<<<<
- * PyMem_Malloc(sizeof(cparser.http_parser))
- * if self._cparser is NULL:
- */
- __pyx_v_self->_cparser = ((struct http_parser *)PyMem_Malloc((sizeof(struct http_parser))));
-
- /* "aiohttp/_http_parser.pyx":315
- * self._cparser = \
- * PyMem_Malloc(sizeof(cparser.http_parser))
- * if self._cparser is NULL: # <<<<<<<<<<<<<<
- * raise MemoryError()
- *
- */
- __pyx_t_1 = ((__pyx_v_self->_cparser == NULL) != 0);
- if (unlikely(__pyx_t_1)) {
-
- /* "aiohttp/_http_parser.pyx":316
- * PyMem_Malloc(sizeof(cparser.http_parser))
- * if self._cparser is NULL:
- * raise MemoryError() # <<<<<<<<<<<<<<
- *
- * self._csettings = \
- */
- PyErr_NoMemory(); __PYX_ERR(0, 316, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":315
- * self._cparser = \
- * PyMem_Malloc(sizeof(cparser.http_parser))
- * if self._cparser is NULL: # <<<<<<<<<<<<<<
- * raise MemoryError()
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":318
- * raise MemoryError()
- *
- * self._csettings = \ # <<<<<<<<<<<<<<
- * PyMem_Malloc(sizeof(cparser.http_parser_settings))
- * if self._csettings is NULL:
- */
- __pyx_v_self->_csettings = ((struct http_parser_settings *)PyMem_Malloc((sizeof(struct http_parser_settings))));
-
- /* "aiohttp/_http_parser.pyx":320
- * self._csettings = \
- * PyMem_Malloc(sizeof(cparser.http_parser_settings))
- * if self._csettings is NULL: # <<<<<<<<<<<<<<
- * raise MemoryError()
- *
- */
- __pyx_t_1 = ((__pyx_v_self->_csettings == NULL) != 0);
- if (unlikely(__pyx_t_1)) {
-
- /* "aiohttp/_http_parser.pyx":321
- * PyMem_Malloc(sizeof(cparser.http_parser_settings))
- * if self._csettings is NULL:
- * raise MemoryError() # <<<<<<<<<<<<<<
- *
- * def __dealloc__(self):
- */
- PyErr_NoMemory(); __PYX_ERR(0, 321, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":320
- * self._csettings = \
- * PyMem_Malloc(sizeof(cparser.http_parser_settings))
- * if self._csettings is NULL: # <<<<<<<<<<<<<<
- * raise MemoryError()
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":312
- * Py_buffer py_buf
- *
- * def __cinit__(self): # <<<<<<<<<<<<<<
- * self._cparser = \
- * PyMem_Malloc(sizeof(cparser.http_parser))
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":323
- * raise MemoryError()
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * PyMem_Free(self._cparser)
- * PyMem_Free(self._csettings)
- */
-
-/* Python wrapper */
-static void __pyx_pw_7aiohttp_12_http_parser_10HttpParser_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_7aiohttp_12_http_parser_10HttpParser_3__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_7aiohttp_12_http_parser_10HttpParser_2__dealloc__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
-}
-
-static void __pyx_pf_7aiohttp_12_http_parser_10HttpParser_2__dealloc__(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- /* "aiohttp/_http_parser.pyx":324
- *
- * def __dealloc__(self):
- * PyMem_Free(self._cparser) # <<<<<<<<<<<<<<
- * PyMem_Free(self._csettings)
- *
- */
- PyMem_Free(__pyx_v_self->_cparser);
-
- /* "aiohttp/_http_parser.pyx":325
- * def __dealloc__(self):
- * PyMem_Free(self._cparser)
- * PyMem_Free(self._csettings) # <<<<<<<<<<<<<<
- *
- * cdef _init(self, cparser.http_parser_type mode,
- */
- PyMem_Free(__pyx_v_self->_csettings);
-
- /* "aiohttp/_http_parser.pyx":323
- * raise MemoryError()
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * PyMem_Free(self._cparser)
- * PyMem_Free(self._csettings)
- */
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
-}
-
-/* "aiohttp/_http_parser.pyx":327
- * PyMem_Free(self._csettings)
- *
- * cdef _init(self, cparser.http_parser_type mode, # <<<<<<<<<<<<<<
- * object protocol, object loop, int limit,
- * object timer=None,
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__init(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, enum http_parser_type __pyx_v_mode, PyObject *__pyx_v_protocol, PyObject *__pyx_v_loop, int __pyx_v_limit, struct __pyx_opt_args_7aiohttp_12_http_parser_10HttpParser__init *__pyx_optional_args) {
-
- /* "aiohttp/_http_parser.pyx":329
- * cdef _init(self, cparser.http_parser_type mode,
- * object protocol, object loop, int limit,
- * object timer=None, # <<<<<<<<<<<<<<
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- */
- PyObject *__pyx_v_timer = ((PyObject *)Py_None);
- size_t __pyx_v_max_line_size = ((size_t)0x1FFE);
- size_t __pyx_v_max_headers = ((size_t)0x8000);
- size_t __pyx_v_max_field_size = ((size_t)0x1FFE);
-
- /* "aiohttp/_http_parser.pyx":331
- * object timer=None,
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None, # <<<<<<<<<<<<<<
- * bint response_with_body=True, bint read_until_eof=False,
- * bint auto_decompress=True):
- */
- PyObject *__pyx_v_payload_exception = ((PyObject *)Py_None);
-
- /* "aiohttp/_http_parser.pyx":332
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- * bint response_with_body=True, bint read_until_eof=False, # <<<<<<<<<<<<<<
- * bint auto_decompress=True):
- * cparser.http_parser_init(self._cparser, mode)
- */
- int __pyx_v_response_with_body = ((int)1);
- int __pyx_v_read_until_eof = ((int)0);
-
- /* "aiohttp/_http_parser.pyx":333
- * size_t max_field_size=8190, payload_exception=None,
- * bint response_with_body=True, bint read_until_eof=False,
- * bint auto_decompress=True): # <<<<<<<<<<<<<<
- * cparser.http_parser_init(self._cparser, mode)
- * self._cparser.data = self
- */
- int __pyx_v_auto_decompress = ((int)1);
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_init", 0);
- if (__pyx_optional_args) {
- if (__pyx_optional_args->__pyx_n > 0) {
- __pyx_v_timer = __pyx_optional_args->timer;
- if (__pyx_optional_args->__pyx_n > 1) {
- __pyx_v_max_line_size = __pyx_optional_args->max_line_size;
- if (__pyx_optional_args->__pyx_n > 2) {
- __pyx_v_max_headers = __pyx_optional_args->max_headers;
- if (__pyx_optional_args->__pyx_n > 3) {
- __pyx_v_max_field_size = __pyx_optional_args->max_field_size;
- if (__pyx_optional_args->__pyx_n > 4) {
- __pyx_v_payload_exception = __pyx_optional_args->payload_exception;
- if (__pyx_optional_args->__pyx_n > 5) {
- __pyx_v_response_with_body = __pyx_optional_args->response_with_body;
- if (__pyx_optional_args->__pyx_n > 6) {
- __pyx_v_read_until_eof = __pyx_optional_args->read_until_eof;
- if (__pyx_optional_args->__pyx_n > 7) {
- __pyx_v_auto_decompress = __pyx_optional_args->auto_decompress;
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- /* "aiohttp/_http_parser.pyx":334
- * bint response_with_body=True, bint read_until_eof=False,
- * bint auto_decompress=True):
- * cparser.http_parser_init(self._cparser, mode) # <<<<<<<<<<<<<<
- * self._cparser.data = self
- * self._cparser.content_length = 0
- */
- http_parser_init(__pyx_v_self->_cparser, __pyx_v_mode);
-
- /* "aiohttp/_http_parser.pyx":335
- * bint auto_decompress=True):
- * cparser.http_parser_init(self._cparser, mode)
- * self._cparser.data = self # <<<<<<<<<<<<<<
- * self._cparser.content_length = 0
- *
- */
- __pyx_v_self->_cparser->data = ((void *)__pyx_v_self);
-
- /* "aiohttp/_http_parser.pyx":336
- * cparser.http_parser_init(self._cparser, mode)
- * self._cparser.data = self
- * self._cparser.content_length = 0 # <<<<<<<<<<<<<<
- *
- * cparser.http_parser_settings_init(self._csettings)
- */
- __pyx_v_self->_cparser->content_length = 0;
-
- /* "aiohttp/_http_parser.pyx":338
- * self._cparser.content_length = 0
- *
- * cparser.http_parser_settings_init(self._csettings) # <<<<<<<<<<<<<<
- *
- * self._protocol = protocol
- */
- http_parser_settings_init(__pyx_v_self->_csettings);
-
- /* "aiohttp/_http_parser.pyx":340
- * cparser.http_parser_settings_init(self._csettings)
- *
- * self._protocol = protocol # <<<<<<<<<<<<<<
- * self._loop = loop
- * self._timer = timer
- */
- __Pyx_INCREF(__pyx_v_protocol);
- __Pyx_GIVEREF(__pyx_v_protocol);
- __Pyx_GOTREF(__pyx_v_self->_protocol);
- __Pyx_DECREF(__pyx_v_self->_protocol);
- __pyx_v_self->_protocol = __pyx_v_protocol;
-
- /* "aiohttp/_http_parser.pyx":341
- *
- * self._protocol = protocol
- * self._loop = loop # <<<<<<<<<<<<<<
- * self._timer = timer
- *
- */
- __Pyx_INCREF(__pyx_v_loop);
- __Pyx_GIVEREF(__pyx_v_loop);
- __Pyx_GOTREF(__pyx_v_self->_loop);
- __Pyx_DECREF(__pyx_v_self->_loop);
- __pyx_v_self->_loop = __pyx_v_loop;
-
- /* "aiohttp/_http_parser.pyx":342
- * self._protocol = protocol
- * self._loop = loop
- * self._timer = timer # <<<<<<<<<<<<<<
- *
- * self._buf = bytearray()
- */
- __Pyx_INCREF(__pyx_v_timer);
- __Pyx_GIVEREF(__pyx_v_timer);
- __Pyx_GOTREF(__pyx_v_self->_timer);
- __Pyx_DECREF(__pyx_v_self->_timer);
- __pyx_v_self->_timer = __pyx_v_timer;
-
- /* "aiohttp/_http_parser.pyx":344
- * self._timer = timer
- *
- * self._buf = bytearray() # <<<<<<<<<<<<<<
- * self._payload = None
- * self._payload_error = 0
- */
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyByteArray_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->_buf);
- __Pyx_DECREF(__pyx_v_self->_buf);
- __pyx_v_self->_buf = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":345
- *
- * self._buf = bytearray()
- * self._payload = None # <<<<<<<<<<<<<<
- * self._payload_error = 0
- * self._payload_exception = payload_exception
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->_payload);
- __Pyx_DECREF(__pyx_v_self->_payload);
- __pyx_v_self->_payload = Py_None;
-
- /* "aiohttp/_http_parser.pyx":346
- * self._buf = bytearray()
- * self._payload = None
- * self._payload_error = 0 # <<<<<<<<<<<<<<
- * self._payload_exception = payload_exception
- * self._messages = []
- */
- __pyx_v_self->_payload_error = 0;
-
- /* "aiohttp/_http_parser.pyx":347
- * self._payload = None
- * self._payload_error = 0
- * self._payload_exception = payload_exception # <<<<<<<<<<<<<<
- * self._messages = []
- *
- */
- __Pyx_INCREF(__pyx_v_payload_exception);
- __Pyx_GIVEREF(__pyx_v_payload_exception);
- __Pyx_GOTREF(__pyx_v_self->_payload_exception);
- __Pyx_DECREF(__pyx_v_self->_payload_exception);
- __pyx_v_self->_payload_exception = __pyx_v_payload_exception;
-
- /* "aiohttp/_http_parser.pyx":348
- * self._payload_error = 0
- * self._payload_exception = payload_exception
- * self._messages = [] # <<<<<<<<<<<<<<
- *
- * self._raw_name = bytearray()
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 348, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->_messages);
- __Pyx_DECREF(__pyx_v_self->_messages);
- __pyx_v_self->_messages = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":350
- * self._messages = []
- *
- * self._raw_name = bytearray() # <<<<<<<<<<<<<<
- * self._raw_value = bytearray()
- * self._has_value = False
- */
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyByteArray_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->_raw_name);
- __Pyx_DECREF(__pyx_v_self->_raw_name);
- __pyx_v_self->_raw_name = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":351
- *
- * self._raw_name = bytearray()
- * self._raw_value = bytearray() # <<<<<<<<<<<<<<
- * self._has_value = False
- *
- */
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyByteArray_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->_raw_value);
- __Pyx_DECREF(__pyx_v_self->_raw_value);
- __pyx_v_self->_raw_value = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":352
- * self._raw_name = bytearray()
- * self._raw_value = bytearray()
- * self._has_value = False # <<<<<<<<<<<<<<
- *
- * self._max_line_size = max_line_size
- */
- __pyx_v_self->_has_value = 0;
-
- /* "aiohttp/_http_parser.pyx":354
- * self._has_value = False
- *
- * self._max_line_size = max_line_size # <<<<<<<<<<<<<<
- * self._max_headers = max_headers
- * self._max_field_size = max_field_size
- */
- __pyx_v_self->_max_line_size = __pyx_v_max_line_size;
-
- /* "aiohttp/_http_parser.pyx":355
- *
- * self._max_line_size = max_line_size
- * self._max_headers = max_headers # <<<<<<<<<<<<<<
- * self._max_field_size = max_field_size
- * self._response_with_body = response_with_body
- */
- __pyx_v_self->_max_headers = __pyx_v_max_headers;
-
- /* "aiohttp/_http_parser.pyx":356
- * self._max_line_size = max_line_size
- * self._max_headers = max_headers
- * self._max_field_size = max_field_size # <<<<<<<<<<<<<<
- * self._response_with_body = response_with_body
- * self._read_until_eof = read_until_eof
- */
- __pyx_v_self->_max_field_size = __pyx_v_max_field_size;
-
- /* "aiohttp/_http_parser.pyx":357
- * self._max_headers = max_headers
- * self._max_field_size = max_field_size
- * self._response_with_body = response_with_body # <<<<<<<<<<<<<<
- * self._read_until_eof = read_until_eof
- * self._upgraded = False
- */
- __pyx_v_self->_response_with_body = __pyx_v_response_with_body;
-
- /* "aiohttp/_http_parser.pyx":358
- * self._max_field_size = max_field_size
- * self._response_with_body = response_with_body
- * self._read_until_eof = read_until_eof # <<<<<<<<<<<<<<
- * self._upgraded = False
- * self._auto_decompress = auto_decompress
- */
- __pyx_v_self->_read_until_eof = __pyx_v_read_until_eof;
-
- /* "aiohttp/_http_parser.pyx":359
- * self._response_with_body = response_with_body
- * self._read_until_eof = read_until_eof
- * self._upgraded = False # <<<<<<<<<<<<<<
- * self._auto_decompress = auto_decompress
- * self._content_encoding = None
- */
- __pyx_v_self->_upgraded = 0;
-
- /* "aiohttp/_http_parser.pyx":360
- * self._read_until_eof = read_until_eof
- * self._upgraded = False
- * self._auto_decompress = auto_decompress # <<<<<<<<<<<<<<
- * self._content_encoding = None
- *
- */
- __pyx_v_self->_auto_decompress = __pyx_v_auto_decompress;
-
- /* "aiohttp/_http_parser.pyx":361
- * self._upgraded = False
- * self._auto_decompress = auto_decompress
- * self._content_encoding = None # <<<<<<<<<<<<<<
- *
- * self._csettings.on_url = cb_on_url
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->_content_encoding);
- __Pyx_DECREF(__pyx_v_self->_content_encoding);
- __pyx_v_self->_content_encoding = ((PyObject*)Py_None);
-
- /* "aiohttp/_http_parser.pyx":363
- * self._content_encoding = None
- *
- * self._csettings.on_url = cb_on_url # <<<<<<<<<<<<<<
- * self._csettings.on_status = cb_on_status
- * self._csettings.on_header_field = cb_on_header_field
- */
- __pyx_v_self->_csettings->on_url = __pyx_f_7aiohttp_12_http_parser_cb_on_url;
-
- /* "aiohttp/_http_parser.pyx":364
- *
- * self._csettings.on_url = cb_on_url
- * self._csettings.on_status = cb_on_status # <<<<<<<<<<<<<<
- * self._csettings.on_header_field = cb_on_header_field
- * self._csettings.on_header_value = cb_on_header_value
- */
- __pyx_v_self->_csettings->on_status = __pyx_f_7aiohttp_12_http_parser_cb_on_status;
-
- /* "aiohttp/_http_parser.pyx":365
- * self._csettings.on_url = cb_on_url
- * self._csettings.on_status = cb_on_status
- * self._csettings.on_header_field = cb_on_header_field # <<<<<<<<<<<<<<
- * self._csettings.on_header_value = cb_on_header_value
- * self._csettings.on_headers_complete = cb_on_headers_complete
- */
- __pyx_v_self->_csettings->on_header_field = __pyx_f_7aiohttp_12_http_parser_cb_on_header_field;
-
- /* "aiohttp/_http_parser.pyx":366
- * self._csettings.on_status = cb_on_status
- * self._csettings.on_header_field = cb_on_header_field
- * self._csettings.on_header_value = cb_on_header_value # <<<<<<<<<<<<<<
- * self._csettings.on_headers_complete = cb_on_headers_complete
- * self._csettings.on_body = cb_on_body
- */
- __pyx_v_self->_csettings->on_header_value = __pyx_f_7aiohttp_12_http_parser_cb_on_header_value;
-
- /* "aiohttp/_http_parser.pyx":367
- * self._csettings.on_header_field = cb_on_header_field
- * self._csettings.on_header_value = cb_on_header_value
- * self._csettings.on_headers_complete = cb_on_headers_complete # <<<<<<<<<<<<<<
- * self._csettings.on_body = cb_on_body
- * self._csettings.on_message_begin = cb_on_message_begin
- */
- __pyx_v_self->_csettings->on_headers_complete = __pyx_f_7aiohttp_12_http_parser_cb_on_headers_complete;
-
- /* "aiohttp/_http_parser.pyx":368
- * self._csettings.on_header_value = cb_on_header_value
- * self._csettings.on_headers_complete = cb_on_headers_complete
- * self._csettings.on_body = cb_on_body # <<<<<<<<<<<<<<
- * self._csettings.on_message_begin = cb_on_message_begin
- * self._csettings.on_message_complete = cb_on_message_complete
- */
- __pyx_v_self->_csettings->on_body = __pyx_f_7aiohttp_12_http_parser_cb_on_body;
-
- /* "aiohttp/_http_parser.pyx":369
- * self._csettings.on_headers_complete = cb_on_headers_complete
- * self._csettings.on_body = cb_on_body
- * self._csettings.on_message_begin = cb_on_message_begin # <<<<<<<<<<<<<<
- * self._csettings.on_message_complete = cb_on_message_complete
- * self._csettings.on_chunk_header = cb_on_chunk_header
- */
- __pyx_v_self->_csettings->on_message_begin = __pyx_f_7aiohttp_12_http_parser_cb_on_message_begin;
-
- /* "aiohttp/_http_parser.pyx":370
- * self._csettings.on_body = cb_on_body
- * self._csettings.on_message_begin = cb_on_message_begin
- * self._csettings.on_message_complete = cb_on_message_complete # <<<<<<<<<<<<<<
- * self._csettings.on_chunk_header = cb_on_chunk_header
- * self._csettings.on_chunk_complete = cb_on_chunk_complete
- */
- __pyx_v_self->_csettings->on_message_complete = __pyx_f_7aiohttp_12_http_parser_cb_on_message_complete;
-
- /* "aiohttp/_http_parser.pyx":371
- * self._csettings.on_message_begin = cb_on_message_begin
- * self._csettings.on_message_complete = cb_on_message_complete
- * self._csettings.on_chunk_header = cb_on_chunk_header # <<<<<<<<<<<<<<
- * self._csettings.on_chunk_complete = cb_on_chunk_complete
- *
- */
- __pyx_v_self->_csettings->on_chunk_header = __pyx_f_7aiohttp_12_http_parser_cb_on_chunk_header;
-
- /* "aiohttp/_http_parser.pyx":372
- * self._csettings.on_message_complete = cb_on_message_complete
- * self._csettings.on_chunk_header = cb_on_chunk_header
- * self._csettings.on_chunk_complete = cb_on_chunk_complete # <<<<<<<<<<<<<<
- *
- * self._last_error = None
- */
- __pyx_v_self->_csettings->on_chunk_complete = __pyx_f_7aiohttp_12_http_parser_cb_on_chunk_complete;
-
- /* "aiohttp/_http_parser.pyx":374
- * self._csettings.on_chunk_complete = cb_on_chunk_complete
- *
- * self._last_error = None # <<<<<<<<<<<<<<
- * self._limit = limit
- *
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->_last_error);
- __Pyx_DECREF(__pyx_v_self->_last_error);
- __pyx_v_self->_last_error = Py_None;
-
- /* "aiohttp/_http_parser.pyx":375
- *
- * self._last_error = None
- * self._limit = limit # <<<<<<<<<<<<<<
- *
- * cdef _process_header(self):
- */
- __pyx_v_self->_limit = __pyx_v_limit;
-
- /* "aiohttp/_http_parser.pyx":327
- * PyMem_Free(self._csettings)
- *
- * cdef _init(self, cparser.http_parser_type mode, # <<<<<<<<<<<<<<
- * object protocol, object loop, int limit,
- * object timer=None,
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":377
- * self._limit = limit
- *
- * cdef _process_header(self): # <<<<<<<<<<<<<<
- * if self._raw_name:
- * raw_name = bytes(self._raw_name)
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__process_header(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- PyObject *__pyx_v_raw_name = NULL;
- PyObject *__pyx_v_raw_value = NULL;
- PyObject *__pyx_v_name = NULL;
- PyObject *__pyx_v_value = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
- int __pyx_t_8;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_process_header", 0);
-
- /* "aiohttp/_http_parser.pyx":378
- *
- * cdef _process_header(self):
- * if self._raw_name: # <<<<<<<<<<<<<<
- * raw_name = bytes(self._raw_name)
- * raw_value = bytes(self._raw_value)
- */
- __pyx_t_1 = (__pyx_v_self->_raw_name != Py_None)&&(PyByteArray_GET_SIZE(__pyx_v_self->_raw_name) != 0);
- if (__pyx_t_1) {
-
- /* "aiohttp/_http_parser.pyx":379
- * cdef _process_header(self):
- * if self._raw_name:
- * raw_name = bytes(self._raw_name) # <<<<<<<<<<<<<<
- * raw_value = bytes(self._raw_value)
- *
- */
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_self->_raw_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_raw_name = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":380
- * if self._raw_name:
- * raw_name = bytes(self._raw_name)
- * raw_value = bytes(self._raw_value) # <<<<<<<<<<<<<<
- *
- * name = find_header(raw_name)
- */
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_self->_raw_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_raw_value = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":382
- * raw_value = bytes(self._raw_value)
- *
- * name = find_header(raw_name) # <<<<<<<<<<<<<<
- * value = raw_value.decode('utf-8', 'surrogateescape')
- *
- */
- __pyx_t_2 = __pyx_f_7aiohttp_12_http_parser_find_header(__pyx_v_raw_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_name = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":383
- *
- * name = find_header(raw_name)
- * value = raw_value.decode('utf-8', 'surrogateescape') # <<<<<<<<<<<<<<
- *
- * self._headers.add(name, value)
- */
- __pyx_t_2 = __Pyx_decode_bytes(__pyx_v_raw_value, 0, PY_SSIZE_T_MAX, NULL, ((char const *)"surrogateescape"), PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_value = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":385
- * value = raw_value.decode('utf-8', 'surrogateescape')
- *
- * self._headers.add(name, value) # <<<<<<<<<<<<<<
- *
- * if name is CONTENT_ENCODING:
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_headers, __pyx_n_s_add); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 385, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = NULL;
- __pyx_t_5 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_5 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_name, __pyx_v_value};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 385, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_name, __pyx_v_value};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 385, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 385, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
- }
- __Pyx_INCREF(__pyx_v_name);
- __Pyx_GIVEREF(__pyx_v_name);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_name);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_value);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 385, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":387
- * self._headers.add(name, value)
- *
- * if name is CONTENT_ENCODING: # <<<<<<<<<<<<<<
- * self._content_encoding = value
- *
- */
- __pyx_t_1 = (__pyx_v_name == __pyx_v_7aiohttp_12_http_parser_CONTENT_ENCODING);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
-
- /* "aiohttp/_http_parser.pyx":388
- *
- * if name is CONTENT_ENCODING:
- * self._content_encoding = value # <<<<<<<<<<<<<<
- *
- * PyByteArray_Resize(self._raw_name, 0)
- */
- if (!(likely(PyUnicode_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 388, __pyx_L1_error)
- __pyx_t_2 = __pyx_v_value;
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->_content_encoding);
- __Pyx_DECREF(__pyx_v_self->_content_encoding);
- __pyx_v_self->_content_encoding = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":387
- * self._headers.add(name, value)
- *
- * if name is CONTENT_ENCODING: # <<<<<<<<<<<<<<
- * self._content_encoding = value
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":390
- * self._content_encoding = value
- *
- * PyByteArray_Resize(self._raw_name, 0) # <<<<<<<<<<<<<<
- * PyByteArray_Resize(self._raw_value, 0)
- * self._has_value = False
- */
- __pyx_t_2 = __pyx_v_self->_raw_name;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_5 = PyByteArray_Resize(__pyx_t_2, 0); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 390, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":391
- *
- * PyByteArray_Resize(self._raw_name, 0)
- * PyByteArray_Resize(self._raw_value, 0) # <<<<<<<<<<<<<<
- * self._has_value = False
- * self._raw_headers.append((raw_name, raw_value))
- */
- __pyx_t_2 = __pyx_v_self->_raw_value;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_5 = PyByteArray_Resize(__pyx_t_2, 0); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 391, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":392
- * PyByteArray_Resize(self._raw_name, 0)
- * PyByteArray_Resize(self._raw_value, 0)
- * self._has_value = False # <<<<<<<<<<<<<<
- * self._raw_headers.append((raw_name, raw_value))
- *
- */
- __pyx_v_self->_has_value = 0;
-
- /* "aiohttp/_http_parser.pyx":393
- * PyByteArray_Resize(self._raw_value, 0)
- * self._has_value = False
- * self._raw_headers.append((raw_name, raw_value)) # <<<<<<<<<<<<<<
- *
- * cdef _on_header_field(self, char* at, size_t length):
- */
- if (unlikely(__pyx_v_self->_raw_headers == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(0, 393, __pyx_L1_error)
- }
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 393, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_raw_name);
- __Pyx_GIVEREF(__pyx_v_raw_name);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_raw_name);
- __Pyx_INCREF(__pyx_v_raw_value);
- __Pyx_GIVEREF(__pyx_v_raw_value);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_raw_value);
- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_raw_headers, __pyx_t_2); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 393, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":378
- *
- * cdef _process_header(self):
- * if self._raw_name: # <<<<<<<<<<<<<<
- * raw_name = bytes(self._raw_name)
- * raw_value = bytes(self._raw_value)
- */
- }
-
- /* "aiohttp/_http_parser.pyx":377
- * self._limit = limit
- *
- * cdef _process_header(self): # <<<<<<<<<<<<<<
- * if self._raw_name:
- * raw_name = bytes(self._raw_name)
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser._process_header", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_raw_name);
- __Pyx_XDECREF(__pyx_v_raw_value);
- __Pyx_XDECREF(__pyx_v_name);
- __Pyx_XDECREF(__pyx_v_value);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":395
- * self._raw_headers.append((raw_name, raw_value))
- *
- * cdef _on_header_field(self, char* at, size_t length): # <<<<<<<<<<<<<<
- * cdef Py_ssize_t size
- * cdef char *buf
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_header_field(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, char *__pyx_v_at, size_t __pyx_v_length) {
- Py_ssize_t __pyx_v_size;
- char *__pyx_v_buf;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- int __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_on_header_field", 0);
-
- /* "aiohttp/_http_parser.pyx":398
- * cdef Py_ssize_t size
- * cdef char *buf
- * if self._has_value: # <<<<<<<<<<<<<<
- * self._process_header()
- *
- */
- __pyx_t_1 = (__pyx_v_self->_has_value != 0);
- if (__pyx_t_1) {
-
- /* "aiohttp/_http_parser.pyx":399
- * cdef char *buf
- * if self._has_value:
- * self._process_header() # <<<<<<<<<<<<<<
- *
- * size = PyByteArray_Size(self._raw_name)
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self->__pyx_vtab)->_process_header(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":398
- * cdef Py_ssize_t size
- * cdef char *buf
- * if self._has_value: # <<<<<<<<<<<<<<
- * self._process_header()
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":401
- * self._process_header()
- *
- * size = PyByteArray_Size(self._raw_name) # <<<<<<<<<<<<<<
- * PyByteArray_Resize(self._raw_name, size + length)
- * buf = PyByteArray_AsString(self._raw_name)
- */
- __pyx_t_2 = __pyx_v_self->_raw_name;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = PyByteArray_Size(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_size = __pyx_t_3;
-
- /* "aiohttp/_http_parser.pyx":402
- *
- * size = PyByteArray_Size(self._raw_name)
- * PyByteArray_Resize(self._raw_name, size + length) # <<<<<<<<<<<<<<
- * buf = PyByteArray_AsString(self._raw_name)
- * memcpy(buf + size, at, length)
- */
- __pyx_t_2 = __pyx_v_self->_raw_name;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_4 = PyByteArray_Resize(__pyx_t_2, (__pyx_v_size + __pyx_v_length)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":403
- * size = PyByteArray_Size(self._raw_name)
- * PyByteArray_Resize(self._raw_name, size + length)
- * buf = PyByteArray_AsString(self._raw_name) # <<<<<<<<<<<<<<
- * memcpy(buf + size, at, length)
- *
- */
- __pyx_t_2 = __pyx_v_self->_raw_name;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_v_buf = PyByteArray_AsString(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":404
- * PyByteArray_Resize(self._raw_name, size + length)
- * buf = PyByteArray_AsString(self._raw_name)
- * memcpy(buf + size, at, length) # <<<<<<<<<<<<<<
- *
- * cdef _on_header_value(self, char* at, size_t length):
- */
- (void)(memcpy((__pyx_v_buf + __pyx_v_size), __pyx_v_at, __pyx_v_length));
-
- /* "aiohttp/_http_parser.pyx":395
- * self._raw_headers.append((raw_name, raw_value))
- *
- * cdef _on_header_field(self, char* at, size_t length): # <<<<<<<<<<<<<<
- * cdef Py_ssize_t size
- * cdef char *buf
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser._on_header_field", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":406
- * memcpy(buf + size, at, length)
- *
- * cdef _on_header_value(self, char* at, size_t length): # <<<<<<<<<<<<<<
- * cdef Py_ssize_t size
- * cdef char *buf
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_header_value(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, char *__pyx_v_at, size_t __pyx_v_length) {
- Py_ssize_t __pyx_v_size;
- char *__pyx_v_buf;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_on_header_value", 0);
-
- /* "aiohttp/_http_parser.pyx":410
- * cdef char *buf
- *
- * size = PyByteArray_Size(self._raw_value) # <<<<<<<<<<<<<<
- * PyByteArray_Resize(self._raw_value, size + length)
- * buf = PyByteArray_AsString(self._raw_value)
- */
- __pyx_t_1 = __pyx_v_self->_raw_value;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyByteArray_Size(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 410, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_size = __pyx_t_2;
-
- /* "aiohttp/_http_parser.pyx":411
- *
- * size = PyByteArray_Size(self._raw_value)
- * PyByteArray_Resize(self._raw_value, size + length) # <<<<<<<<<<<<<<
- * buf = PyByteArray_AsString(self._raw_value)
- * memcpy(buf + size, at, length)
- */
- __pyx_t_1 = __pyx_v_self->_raw_value;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_3 = PyByteArray_Resize(__pyx_t_1, (__pyx_v_size + __pyx_v_length)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":412
- * size = PyByteArray_Size(self._raw_value)
- * PyByteArray_Resize(self._raw_value, size + length)
- * buf = PyByteArray_AsString(self._raw_value) # <<<<<<<<<<<<<<
- * memcpy(buf + size, at, length)
- * self._has_value = True
- */
- __pyx_t_1 = __pyx_v_self->_raw_value;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_buf = PyByteArray_AsString(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":413
- * PyByteArray_Resize(self._raw_value, size + length)
- * buf = PyByteArray_AsString(self._raw_value)
- * memcpy(buf + size, at, length) # <<<<<<<<<<<<<<
- * self._has_value = True
- *
- */
- (void)(memcpy((__pyx_v_buf + __pyx_v_size), __pyx_v_at, __pyx_v_length));
-
- /* "aiohttp/_http_parser.pyx":414
- * buf = PyByteArray_AsString(self._raw_value)
- * memcpy(buf + size, at, length)
- * self._has_value = True # <<<<<<<<<<<<<<
- *
- * cdef _on_headers_complete(self):
- */
- __pyx_v_self->_has_value = 1;
-
- /* "aiohttp/_http_parser.pyx":406
- * memcpy(buf + size, at, length)
- *
- * cdef _on_header_value(self, char* at, size_t length): # <<<<<<<<<<<<<<
- * cdef Py_ssize_t size
- * cdef char *buf
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser._on_header_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":416
- * self._has_value = True
- *
- * cdef _on_headers_complete(self): # <<<<<<<<<<<<<<
- * self._process_header()
- *
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_headers_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- PyObject *__pyx_v_method = NULL;
- int __pyx_v_should_close;
- unsigned int __pyx_v_upgrade;
- unsigned int __pyx_v_chunked;
- PyObject *__pyx_v_raw_headers = NULL;
- PyObject *__pyx_v_headers = NULL;
- PyObject *__pyx_v_encoding = NULL;
- PyObject *__pyx_v_enc = NULL;
- PyObject *__pyx_v_msg = NULL;
- PyObject *__pyx_v_payload = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- unsigned int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_t_8;
- int __pyx_t_9;
- int __pyx_t_10;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_on_headers_complete", 0);
-
- /* "aiohttp/_http_parser.pyx":417
- *
- * cdef _on_headers_complete(self):
- * self._process_header() # <<<<<<<<<<<<<<
- *
- * method = http_method_str(self._cparser.method)
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self->__pyx_vtab)->_process_header(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":419
- * self._process_header()
- *
- * method = http_method_str(self._cparser.method) # <<<<<<<<<<<<<<
- * should_close = not cparser.http_should_keep_alive(self._cparser)
- * upgrade = self._cparser.upgrade
- */
- __pyx_t_1 = __pyx_f_7aiohttp_12_http_parser_http_method_str(__pyx_v_self->_cparser->method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_method = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":420
- *
- * method = http_method_str(self._cparser.method)
- * should_close = not cparser.http_should_keep_alive(self._cparser) # <<<<<<<<<<<<<<
- * upgrade = self._cparser.upgrade
- * chunked = self._cparser.flags & cparser.F_CHUNKED
- */
- __pyx_v_should_close = (!(http_should_keep_alive(__pyx_v_self->_cparser) != 0));
-
- /* "aiohttp/_http_parser.pyx":421
- * method = http_method_str(self._cparser.method)
- * should_close = not cparser.http_should_keep_alive(self._cparser)
- * upgrade = self._cparser.upgrade # <<<<<<<<<<<<<<
- * chunked = self._cparser.flags & cparser.F_CHUNKED
- *
- */
- __pyx_t_2 = __pyx_v_self->_cparser->upgrade;
- __pyx_v_upgrade = __pyx_t_2;
-
- /* "aiohttp/_http_parser.pyx":422
- * should_close = not cparser.http_should_keep_alive(self._cparser)
- * upgrade = self._cparser.upgrade
- * chunked = self._cparser.flags & cparser.F_CHUNKED # <<<<<<<<<<<<<<
- *
- * raw_headers = tuple(self._raw_headers)
- */
- __pyx_v_chunked = (__pyx_v_self->_cparser->flags & F_CHUNKED);
-
- /* "aiohttp/_http_parser.pyx":424
- * chunked = self._cparser.flags & cparser.F_CHUNKED
- *
- * raw_headers = tuple(self._raw_headers) # <<<<<<<<<<<<<<
- * headers = CIMultiDictProxy(self._headers)
- *
- */
- if (unlikely(__pyx_v_self->_raw_headers == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 424, __pyx_L1_error)
- }
- __pyx_t_1 = PyList_AsTuple(__pyx_v_self->_raw_headers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_raw_headers = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":425
- *
- * raw_headers = tuple(self._raw_headers)
- * headers = CIMultiDictProxy(self._headers) # <<<<<<<<<<<<<<
- *
- * if upgrade or self._cparser.method == 5: # cparser.CONNECT:
- */
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_CIMultiDictProxy);
- __pyx_t_3 = __pyx_v_7aiohttp_12_http_parser_CIMultiDictProxy; __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- }
- }
- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_self->_headers) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->_headers);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_headers = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":427
- * headers = CIMultiDictProxy(self._headers)
- *
- * if upgrade or self._cparser.method == 5: # cparser.CONNECT: # <<<<<<<<<<<<<<
- * self._upgraded = True
- *
- */
- __pyx_t_6 = (__pyx_v_upgrade != 0);
- if (!__pyx_t_6) {
- } else {
- __pyx_t_5 = __pyx_t_6;
- goto __pyx_L4_bool_binop_done;
- }
- __pyx_t_6 = ((__pyx_v_self->_cparser->method == 5) != 0);
- __pyx_t_5 = __pyx_t_6;
- __pyx_L4_bool_binop_done:;
- if (__pyx_t_5) {
-
- /* "aiohttp/_http_parser.pyx":428
- *
- * if upgrade or self._cparser.method == 5: # cparser.CONNECT:
- * self._upgraded = True # <<<<<<<<<<<<<<
- *
- * # do not support old websocket spec
- */
- __pyx_v_self->_upgraded = 1;
-
- /* "aiohttp/_http_parser.pyx":427
- * headers = CIMultiDictProxy(self._headers)
- *
- * if upgrade or self._cparser.method == 5: # cparser.CONNECT: # <<<<<<<<<<<<<<
- * self._upgraded = True
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":431
- *
- * # do not support old websocket spec
- * if SEC_WEBSOCKET_KEY1 in headers: # <<<<<<<<<<<<<<
- * raise InvalidHeader(SEC_WEBSOCKET_KEY1)
- *
- */
- __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_v_7aiohttp_12_http_parser_SEC_WEBSOCKET_KEY1, __pyx_v_headers, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 431, __pyx_L1_error)
- __pyx_t_6 = (__pyx_t_5 != 0);
- if (unlikely(__pyx_t_6)) {
-
- /* "aiohttp/_http_parser.pyx":432
- * # do not support old websocket spec
- * if SEC_WEBSOCKET_KEY1 in headers:
- * raise InvalidHeader(SEC_WEBSOCKET_KEY1) # <<<<<<<<<<<<<<
- *
- * encoding = None
- */
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InvalidHeader); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 432, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- }
- }
- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_7aiohttp_12_http_parser_SEC_WEBSOCKET_KEY1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_7aiohttp_12_http_parser_SEC_WEBSOCKET_KEY1);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 432, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":431
- *
- * # do not support old websocket spec
- * if SEC_WEBSOCKET_KEY1 in headers: # <<<<<<<<<<<<<<
- * raise InvalidHeader(SEC_WEBSOCKET_KEY1)
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":434
- * raise InvalidHeader(SEC_WEBSOCKET_KEY1)
- *
- * encoding = None # <<<<<<<<<<<<<<
- * enc = self._content_encoding
- * if enc is not None:
- */
- __Pyx_INCREF(Py_None);
- __pyx_v_encoding = Py_None;
-
- /* "aiohttp/_http_parser.pyx":435
- *
- * encoding = None
- * enc = self._content_encoding # <<<<<<<<<<<<<<
- * if enc is not None:
- * self._content_encoding = None
- */
- __pyx_t_1 = __pyx_v_self->_content_encoding;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_enc = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":436
- * encoding = None
- * enc = self._content_encoding
- * if enc is not None: # <<<<<<<<<<<<<<
- * self._content_encoding = None
- * enc = enc.lower()
- */
- __pyx_t_6 = (__pyx_v_enc != Py_None);
- __pyx_t_5 = (__pyx_t_6 != 0);
- if (__pyx_t_5) {
-
- /* "aiohttp/_http_parser.pyx":437
- * enc = self._content_encoding
- * if enc is not None:
- * self._content_encoding = None # <<<<<<<<<<<<<<
- * enc = enc.lower()
- * if enc in ('gzip', 'deflate', 'br'):
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->_content_encoding);
- __Pyx_DECREF(__pyx_v_self->_content_encoding);
- __pyx_v_self->_content_encoding = ((PyObject*)Py_None);
-
- /* "aiohttp/_http_parser.pyx":438
- * if enc is not None:
- * self._content_encoding = None
- * enc = enc.lower() # <<<<<<<<<<<<<<
- * if enc in ('gzip', 'deflate', 'br'):
- * encoding = enc
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_enc, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 438, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- }
- }
- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_enc, __pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":439
- * self._content_encoding = None
- * enc = enc.lower()
- * if enc in ('gzip', 'deflate', 'br'): # <<<<<<<<<<<<<<
- * encoding = enc
- *
- */
- __Pyx_INCREF(__pyx_v_enc);
- __pyx_t_1 = __pyx_v_enc;
- __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_gzip, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 439, __pyx_L1_error)
- if (!__pyx_t_6) {
- } else {
- __pyx_t_5 = __pyx_t_6;
- goto __pyx_L9_bool_binop_done;
- }
- __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_deflate, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 439, __pyx_L1_error)
- if (!__pyx_t_6) {
- } else {
- __pyx_t_5 = __pyx_t_6;
- goto __pyx_L9_bool_binop_done;
- }
- __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_br, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 439, __pyx_L1_error)
- __pyx_t_5 = __pyx_t_6;
- __pyx_L9_bool_binop_done:;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = (__pyx_t_5 != 0);
- if (__pyx_t_6) {
-
- /* "aiohttp/_http_parser.pyx":440
- * enc = enc.lower()
- * if enc in ('gzip', 'deflate', 'br'):
- * encoding = enc # <<<<<<<<<<<<<<
- *
- * if self._cparser.type == cparser.HTTP_REQUEST:
- */
- __Pyx_INCREF(__pyx_v_enc);
- __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_v_enc);
-
- /* "aiohttp/_http_parser.pyx":439
- * self._content_encoding = None
- * enc = enc.lower()
- * if enc in ('gzip', 'deflate', 'br'): # <<<<<<<<<<<<<<
- * encoding = enc
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":436
- * encoding = None
- * enc = self._content_encoding
- * if enc is not None: # <<<<<<<<<<<<<<
- * self._content_encoding = None
- * enc = enc.lower()
- */
- }
-
- /* "aiohttp/_http_parser.pyx":442
- * encoding = enc
- *
- * if self._cparser.type == cparser.HTTP_REQUEST: # <<<<<<<<<<<<<<
- * msg = _new_request_message(
- * method, self._path,
- */
- __pyx_t_6 = ((__pyx_v_self->_cparser->type == HTTP_REQUEST) != 0);
- if (__pyx_t_6) {
-
- /* "aiohttp/_http_parser.pyx":444
- * if self._cparser.type == cparser.HTTP_REQUEST:
- * msg = _new_request_message(
- * method, self._path, # <<<<<<<<<<<<<<
- * self.http_version(), headers, raw_headers,
- * should_close, encoding, upgrade, chunked, self._url)
- */
- __pyx_t_1 = __pyx_v_self->_path;
- __Pyx_INCREF(__pyx_t_1);
-
- /* "aiohttp/_http_parser.pyx":445
- * msg = _new_request_message(
- * method, self._path,
- * self.http_version(), headers, raw_headers, # <<<<<<<<<<<<<<
- * should_close, encoding, upgrade, chunked, self._url)
- * else:
- */
- __pyx_t_3 = __pyx_f_7aiohttp_12_http_parser_10HttpParser_http_version(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 445, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
-
- /* "aiohttp/_http_parser.pyx":446
- * method, self._path,
- * self.http_version(), headers, raw_headers,
- * should_close, encoding, upgrade, chunked, self._url) # <<<<<<<<<<<<<<
- * else:
- * msg = _new_response_message(
- */
- __pyx_t_4 = __pyx_v_self->_url;
- __Pyx_INCREF(__pyx_t_4);
-
- /* "aiohttp/_http_parser.pyx":443
- *
- * if self._cparser.type == cparser.HTTP_REQUEST:
- * msg = _new_request_message( # <<<<<<<<<<<<<<
- * method, self._path,
- * self.http_version(), headers, raw_headers,
- */
- __pyx_t_7 = __pyx_f_7aiohttp_12_http_parser__new_request_message(__pyx_v_method, ((PyObject*)__pyx_t_1), __pyx_t_3, __pyx_v_headers, __pyx_v_raw_headers, __pyx_v_should_close, __pyx_v_encoding, __pyx_v_upgrade, __pyx_v_chunked, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 443, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_msg = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "aiohttp/_http_parser.pyx":442
- * encoding = enc
- *
- * if self._cparser.type == cparser.HTTP_REQUEST: # <<<<<<<<<<<<<<
- * msg = _new_request_message(
- * method, self._path,
- */
- goto __pyx_L12;
- }
-
- /* "aiohttp/_http_parser.pyx":448
- * should_close, encoding, upgrade, chunked, self._url)
- * else:
- * msg = _new_response_message( # <<<<<<<<<<<<<<
- * self.http_version(), self._cparser.status_code, self._reason,
- * headers, raw_headers, should_close, encoding,
- */
- /*else*/ {
-
- /* "aiohttp/_http_parser.pyx":449
- * else:
- * msg = _new_response_message(
- * self.http_version(), self._cparser.status_code, self._reason, # <<<<<<<<<<<<<<
- * headers, raw_headers, should_close, encoding,
- * upgrade, chunked)
- */
- __pyx_t_7 = __pyx_f_7aiohttp_12_http_parser_10HttpParser_http_version(__pyx_v_self); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 449, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = __pyx_v_self->_reason;
- __Pyx_INCREF(__pyx_t_4);
-
- /* "aiohttp/_http_parser.pyx":448
- * should_close, encoding, upgrade, chunked, self._url)
- * else:
- * msg = _new_response_message( # <<<<<<<<<<<<<<
- * self.http_version(), self._cparser.status_code, self._reason,
- * headers, raw_headers, should_close, encoding,
- */
- __pyx_t_3 = __pyx_f_7aiohttp_12_http_parser__new_response_message(__pyx_t_7, __pyx_v_self->_cparser->status_code, ((PyObject*)__pyx_t_4), __pyx_v_headers, __pyx_v_raw_headers, __pyx_v_should_close, __pyx_v_encoding, __pyx_v_upgrade, __pyx_v_chunked); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 448, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_msg = __pyx_t_3;
- __pyx_t_3 = 0;
- }
- __pyx_L12:;
-
- /* "aiohttp/_http_parser.pyx":453
- * upgrade, chunked)
- *
- * if (ULLONG_MAX > self._cparser.content_length > 0 or chunked or # <<<<<<<<<<<<<<
- * self._cparser.method == 5 or # CONNECT: 5
- * (self._cparser.status_code >= 199 and
- */
- __pyx_t_5 = (ULLONG_MAX > __pyx_v_self->_cparser->content_length);
- if (__pyx_t_5) {
- __pyx_t_5 = (__pyx_v_self->_cparser->content_length > 0);
- }
- __pyx_t_8 = (__pyx_t_5 != 0);
- if (!__pyx_t_8) {
- } else {
- __pyx_t_6 = __pyx_t_8;
- goto __pyx_L14_bool_binop_done;
- }
- __pyx_t_8 = (__pyx_v_chunked != 0);
- if (!__pyx_t_8) {
- } else {
- __pyx_t_6 = __pyx_t_8;
- goto __pyx_L14_bool_binop_done;
- }
-
- /* "aiohttp/_http_parser.pyx":454
- *
- * if (ULLONG_MAX > self._cparser.content_length > 0 or chunked or
- * self._cparser.method == 5 or # CONNECT: 5 # <<<<<<<<<<<<<<
- * (self._cparser.status_code >= 199 and
- * self._cparser.content_length == ULLONG_MAX and
- */
- __pyx_t_8 = ((__pyx_v_self->_cparser->method == 5) != 0);
- if (!__pyx_t_8) {
- } else {
- __pyx_t_6 = __pyx_t_8;
- goto __pyx_L14_bool_binop_done;
- }
-
- /* "aiohttp/_http_parser.pyx":455
- * if (ULLONG_MAX > self._cparser.content_length > 0 or chunked or
- * self._cparser.method == 5 or # CONNECT: 5
- * (self._cparser.status_code >= 199 and # <<<<<<<<<<<<<<
- * self._cparser.content_length == ULLONG_MAX and
- * self._read_until_eof)
- */
- __pyx_t_8 = ((__pyx_v_self->_cparser->status_code >= 0xC7) != 0);
- if (__pyx_t_8) {
- } else {
- __pyx_t_6 = __pyx_t_8;
- goto __pyx_L14_bool_binop_done;
- }
-
- /* "aiohttp/_http_parser.pyx":456
- * self._cparser.method == 5 or # CONNECT: 5
- * (self._cparser.status_code >= 199 and
- * self._cparser.content_length == ULLONG_MAX and # <<<<<<<<<<<<<<
- * self._read_until_eof)
- * ):
- */
- __pyx_t_8 = ((__pyx_v_self->_cparser->content_length == ULLONG_MAX) != 0);
- if (__pyx_t_8) {
- } else {
- __pyx_t_6 = __pyx_t_8;
- goto __pyx_L14_bool_binop_done;
- }
-
- /* "aiohttp/_http_parser.pyx":457
- * (self._cparser.status_code >= 199 and
- * self._cparser.content_length == ULLONG_MAX and
- * self._read_until_eof) # <<<<<<<<<<<<<<
- * ):
- * payload = StreamReader(
- */
- __pyx_t_8 = (__pyx_v_self->_read_until_eof != 0);
- __pyx_t_6 = __pyx_t_8;
- __pyx_L14_bool_binop_done:;
-
- /* "aiohttp/_http_parser.pyx":453
- * upgrade, chunked)
- *
- * if (ULLONG_MAX > self._cparser.content_length > 0 or chunked or # <<<<<<<<<<<<<<
- * self._cparser.method == 5 or # CONNECT: 5
- * (self._cparser.status_code >= 199 and
- */
- if (__pyx_t_6) {
-
- /* "aiohttp/_http_parser.pyx":459
- * self._read_until_eof)
- * ):
- * payload = StreamReader( # <<<<<<<<<<<<<<
- * self._protocol, timer=self._timer, loop=self._loop,
- * limit=self._limit)
- */
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_self->_protocol);
- __Pyx_GIVEREF(__pyx_v_self->_protocol);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->_protocol);
-
- /* "aiohttp/_http_parser.pyx":460
- * ):
- * payload = StreamReader(
- * self._protocol, timer=self._timer, loop=self._loop, # <<<<<<<<<<<<<<
- * limit=self._limit)
- * else:
- */
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_timer, __pyx_v_self->_timer) < 0) __PYX_ERR(0, 460, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_loop, __pyx_v_self->_loop) < 0) __PYX_ERR(0, 460, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":461
- * payload = StreamReader(
- * self._protocol, timer=self._timer, loop=self._loop,
- * limit=self._limit) # <<<<<<<<<<<<<<
- * else:
- * payload = EMPTY_PAYLOAD
- */
- __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->_limit); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 461, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_limit, __pyx_t_7) < 0) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
- /* "aiohttp/_http_parser.pyx":459
- * self._read_until_eof)
- * ):
- * payload = StreamReader( # <<<<<<<<<<<<<<
- * self._protocol, timer=self._timer, loop=self._loop,
- * limit=self._limit)
- */
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_7aiohttp_12_http_parser_StreamReader, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 459, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_payload = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "aiohttp/_http_parser.pyx":453
- * upgrade, chunked)
- *
- * if (ULLONG_MAX > self._cparser.content_length > 0 or chunked or # <<<<<<<<<<<<<<
- * self._cparser.method == 5 or # CONNECT: 5
- * (self._cparser.status_code >= 199 and
- */
- goto __pyx_L13;
- }
-
- /* "aiohttp/_http_parser.pyx":463
- * limit=self._limit)
- * else:
- * payload = EMPTY_PAYLOAD # <<<<<<<<<<<<<<
- *
- * self._payload = payload
- */
- /*else*/ {
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_EMPTY_PAYLOAD);
- __pyx_v_payload = __pyx_v_7aiohttp_12_http_parser_EMPTY_PAYLOAD;
- }
- __pyx_L13:;
-
- /* "aiohttp/_http_parser.pyx":465
- * payload = EMPTY_PAYLOAD
- *
- * self._payload = payload # <<<<<<<<<<<<<<
- * if encoding is not None and self._auto_decompress:
- * self._payload = DeflateBuffer(payload, encoding)
- */
- __Pyx_INCREF(__pyx_v_payload);
- __Pyx_GIVEREF(__pyx_v_payload);
- __Pyx_GOTREF(__pyx_v_self->_payload);
- __Pyx_DECREF(__pyx_v_self->_payload);
- __pyx_v_self->_payload = __pyx_v_payload;
-
- /* "aiohttp/_http_parser.pyx":466
- *
- * self._payload = payload
- * if encoding is not None and self._auto_decompress: # <<<<<<<<<<<<<<
- * self._payload = DeflateBuffer(payload, encoding)
- *
- */
- __pyx_t_8 = (__pyx_v_encoding != Py_None);
- __pyx_t_5 = (__pyx_t_8 != 0);
- if (__pyx_t_5) {
- } else {
- __pyx_t_6 = __pyx_t_5;
- goto __pyx_L21_bool_binop_done;
- }
- __pyx_t_5 = (__pyx_v_self->_auto_decompress != 0);
- __pyx_t_6 = __pyx_t_5;
- __pyx_L21_bool_binop_done:;
- if (__pyx_t_6) {
-
- /* "aiohttp/_http_parser.pyx":467
- * self._payload = payload
- * if encoding is not None and self._auto_decompress:
- * self._payload = DeflateBuffer(payload, encoding) # <<<<<<<<<<<<<<
- *
- * if not self._response_with_body:
- */
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_DeflateBuffer);
- __pyx_t_4 = __pyx_v_7aiohttp_12_http_parser_DeflateBuffer; __pyx_t_3 = NULL;
- __pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_9 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_payload, __pyx_v_encoding};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_payload, __pyx_v_encoding};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
- }
- __Pyx_INCREF(__pyx_v_payload);
- __Pyx_GIVEREF(__pyx_v_payload);
- PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_9, __pyx_v_payload);
- __Pyx_INCREF(__pyx_v_encoding);
- __Pyx_GIVEREF(__pyx_v_encoding);
- PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_9, __pyx_v_encoding);
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GIVEREF(__pyx_t_7);
- __Pyx_GOTREF(__pyx_v_self->_payload);
- __Pyx_DECREF(__pyx_v_self->_payload);
- __pyx_v_self->_payload = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "aiohttp/_http_parser.pyx":466
- *
- * self._payload = payload
- * if encoding is not None and self._auto_decompress: # <<<<<<<<<<<<<<
- * self._payload = DeflateBuffer(payload, encoding)
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":469
- * self._payload = DeflateBuffer(payload, encoding)
- *
- * if not self._response_with_body: # <<<<<<<<<<<<<<
- * payload = EMPTY_PAYLOAD
- *
- */
- __pyx_t_6 = ((!(__pyx_v_self->_response_with_body != 0)) != 0);
- if (__pyx_t_6) {
-
- /* "aiohttp/_http_parser.pyx":470
- *
- * if not self._response_with_body:
- * payload = EMPTY_PAYLOAD # <<<<<<<<<<<<<<
- *
- * self._messages.append((msg, payload))
- */
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_EMPTY_PAYLOAD);
- __Pyx_DECREF_SET(__pyx_v_payload, __pyx_v_7aiohttp_12_http_parser_EMPTY_PAYLOAD);
-
- /* "aiohttp/_http_parser.pyx":469
- * self._payload = DeflateBuffer(payload, encoding)
- *
- * if not self._response_with_body: # <<<<<<<<<<<<<<
- * payload = EMPTY_PAYLOAD
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":472
- * payload = EMPTY_PAYLOAD
- *
- * self._messages.append((msg, payload)) # <<<<<<<<<<<<<<
- *
- * cdef _on_message_complete(self):
- */
- if (unlikely(__pyx_v_self->_messages == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(0, 472, __pyx_L1_error)
- }
- __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 472, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_INCREF(__pyx_v_msg);
- __Pyx_GIVEREF(__pyx_v_msg);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_msg);
- __Pyx_INCREF(__pyx_v_payload);
- __Pyx_GIVEREF(__pyx_v_payload);
- PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_payload);
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_self->_messages, __pyx_t_7); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 472, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
- /* "aiohttp/_http_parser.pyx":416
- * self._has_value = True
- *
- * cdef _on_headers_complete(self): # <<<<<<<<<<<<<<
- * self._process_header()
- *
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser._on_headers_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_method);
- __Pyx_XDECREF(__pyx_v_raw_headers);
- __Pyx_XDECREF(__pyx_v_headers);
- __Pyx_XDECREF(__pyx_v_encoding);
- __Pyx_XDECREF(__pyx_v_enc);
- __Pyx_XDECREF(__pyx_v_msg);
- __Pyx_XDECREF(__pyx_v_payload);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":474
- * self._messages.append((msg, payload))
- *
- * cdef _on_message_complete(self): # <<<<<<<<<<<<<<
- * self._payload.feed_eof()
- * self._payload = None
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_message_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_on_message_complete", 0);
-
- /* "aiohttp/_http_parser.pyx":475
- *
- * cdef _on_message_complete(self):
- * self._payload.feed_eof() # <<<<<<<<<<<<<<
- * self._payload = None
- *
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_payload, __pyx_n_s_feed_eof); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 475, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":476
- * cdef _on_message_complete(self):
- * self._payload.feed_eof()
- * self._payload = None # <<<<<<<<<<<<<<
- *
- * cdef _on_chunk_header(self):
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->_payload);
- __Pyx_DECREF(__pyx_v_self->_payload);
- __pyx_v_self->_payload = Py_None;
-
- /* "aiohttp/_http_parser.pyx":474
- * self._messages.append((msg, payload))
- *
- * cdef _on_message_complete(self): # <<<<<<<<<<<<<<
- * self._payload.feed_eof()
- * self._payload = None
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser._on_message_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":478
- * self._payload = None
- *
- * cdef _on_chunk_header(self): # <<<<<<<<<<<<<<
- * self._payload.begin_http_chunk_receiving()
- *
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_chunk_header(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_on_chunk_header", 0);
-
- /* "aiohttp/_http_parser.pyx":479
- *
- * cdef _on_chunk_header(self):
- * self._payload.begin_http_chunk_receiving() # <<<<<<<<<<<<<<
- *
- * cdef _on_chunk_complete(self):
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_payload, __pyx_n_s_begin_http_chunk_receiving); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 479, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 479, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":478
- * self._payload = None
- *
- * cdef _on_chunk_header(self): # <<<<<<<<<<<<<<
- * self._payload.begin_http_chunk_receiving()
- *
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser._on_chunk_header", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":481
- * self._payload.begin_http_chunk_receiving()
- *
- * cdef _on_chunk_complete(self): # <<<<<<<<<<<<<<
- * self._payload.end_http_chunk_receiving()
- *
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_chunk_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_on_chunk_complete", 0);
-
- /* "aiohttp/_http_parser.pyx":482
- *
- * cdef _on_chunk_complete(self):
- * self._payload.end_http_chunk_receiving() # <<<<<<<<<<<<<<
- *
- * cdef object _on_status_complete(self):
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_payload, __pyx_n_s_end_http_chunk_receiving); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 482, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 482, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":481
- * self._payload.begin_http_chunk_receiving()
- *
- * cdef _on_chunk_complete(self): # <<<<<<<<<<<<<<
- * self._payload.end_http_chunk_receiving()
- *
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser._on_chunk_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":484
- * self._payload.end_http_chunk_receiving()
- *
- * cdef object _on_status_complete(self): # <<<<<<<<<<<<<<
- * pass
- *
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser__on_status_complete(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("_on_status_complete", 0);
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":487
- * pass
- *
- * cdef inline http_version(self): # <<<<<<<<<<<<<<
- * cdef cparser.http_parser* parser = self._cparser
- *
- */
-
-static CYTHON_INLINE PyObject *__pyx_f_7aiohttp_12_http_parser_10HttpParser_http_version(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- struct http_parser *__pyx_v_parser;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- struct http_parser *__pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("http_version", 0);
-
- /* "aiohttp/_http_parser.pyx":488
- *
- * cdef inline http_version(self):
- * cdef cparser.http_parser* parser = self._cparser # <<<<<<<<<<<<<<
- *
- * if parser.http_major == 1:
- */
- __pyx_t_1 = __pyx_v_self->_cparser;
- __pyx_v_parser = __pyx_t_1;
-
- /* "aiohttp/_http_parser.pyx":490
- * cdef cparser.http_parser* parser = self._cparser
- *
- * if parser.http_major == 1: # <<<<<<<<<<<<<<
- * if parser.http_minor == 0:
- * return HttpVersion10
- */
- __pyx_t_2 = ((__pyx_v_parser->http_major == 1) != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":491
- *
- * if parser.http_major == 1:
- * if parser.http_minor == 0: # <<<<<<<<<<<<<<
- * return HttpVersion10
- * elif parser.http_minor == 1:
- */
- switch (__pyx_v_parser->http_minor) {
- case 0:
-
- /* "aiohttp/_http_parser.pyx":492
- * if parser.http_major == 1:
- * if parser.http_minor == 0:
- * return HttpVersion10 # <<<<<<<<<<<<<<
- * elif parser.http_minor == 1:
- * return HttpVersion11
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_HttpVersion10);
- __pyx_r = __pyx_v_7aiohttp_12_http_parser_HttpVersion10;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":491
- *
- * if parser.http_major == 1:
- * if parser.http_minor == 0: # <<<<<<<<<<<<<<
- * return HttpVersion10
- * elif parser.http_minor == 1:
- */
- break;
- case 1:
-
- /* "aiohttp/_http_parser.pyx":494
- * return HttpVersion10
- * elif parser.http_minor == 1:
- * return HttpVersion11 # <<<<<<<<<<<<<<
- *
- * return HttpVersion(parser.http_major, parser.http_minor)
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_HttpVersion11);
- __pyx_r = __pyx_v_7aiohttp_12_http_parser_HttpVersion11;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":493
- * if parser.http_minor == 0:
- * return HttpVersion10
- * elif parser.http_minor == 1: # <<<<<<<<<<<<<<
- * return HttpVersion11
- *
- */
- break;
- default: break;
- }
-
- /* "aiohttp/_http_parser.pyx":490
- * cdef cparser.http_parser* parser = self._cparser
- *
- * if parser.http_major == 1: # <<<<<<<<<<<<<<
- * if parser.http_minor == 0:
- * return HttpVersion10
- */
- }
-
- /* "aiohttp/_http_parser.pyx":496
- * return HttpVersion11
- *
- * return HttpVersion(parser.http_major, parser.http_minor) # <<<<<<<<<<<<<<
- *
- * ### Public API ###
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyInt_From_unsigned_short(__pyx_v_parser->http_major); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyInt_From_unsigned_short(__pyx_v_parser->http_minor); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 496, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_HttpVersion);
- __pyx_t_6 = __pyx_v_7aiohttp_12_http_parser_HttpVersion; __pyx_t_7 = NULL;
- __pyx_t_8 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- __pyx_t_8 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_t_5};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_t_5};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- if (__pyx_t_7) {
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
- }
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
- __pyx_t_4 = 0;
- __pyx_t_5 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":487
- * pass
- *
- * cdef inline http_version(self): # <<<<<<<<<<<<<<
- * cdef cparser.http_parser* parser = self._cparser
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser.http_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":500
- * ### Public API ###
- *
- * def feed_eof(self): # <<<<<<<<<<<<<<
- * cdef bytes desc
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_5feed_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_5feed_eof(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("feed_eof (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_10HttpParser_4feed_eof(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_4feed_eof(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- PyObject *__pyx_v_desc = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("feed_eof", 0);
-
- /* "aiohttp/_http_parser.pyx":503
- * cdef bytes desc
- *
- * if self._payload is not None: # <<<<<<<<<<<<<<
- * if self._cparser.flags & cparser.F_CHUNKED:
- * raise TransferEncodingError(
- */
- __pyx_t_1 = (__pyx_v_self->_payload != Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":504
- *
- * if self._payload is not None:
- * if self._cparser.flags & cparser.F_CHUNKED: # <<<<<<<<<<<<<<
- * raise TransferEncodingError(
- * "Not enough data for satisfy transfer length header.")
- */
- __pyx_t_2 = ((__pyx_v_self->_cparser->flags & F_CHUNKED) != 0);
- if (unlikely(__pyx_t_2)) {
-
- /* "aiohttp/_http_parser.pyx":505
- * if self._payload is not None:
- * if self._cparser.flags & cparser.F_CHUNKED:
- * raise TransferEncodingError( # <<<<<<<<<<<<<<
- * "Not enough data for satisfy transfer length header.")
- * elif self._cparser.flags & cparser.F_CONTENTLENGTH:
- */
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_TransferEncodingError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 505, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_Not_enough_data_for_satisfy_tran) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_Not_enough_data_for_satisfy_tran);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(0, 505, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":504
- *
- * if self._payload is not None:
- * if self._cparser.flags & cparser.F_CHUNKED: # <<<<<<<<<<<<<<
- * raise TransferEncodingError(
- * "Not enough data for satisfy transfer length header.")
- */
- }
-
- /* "aiohttp/_http_parser.pyx":507
- * raise TransferEncodingError(
- * "Not enough data for satisfy transfer length header.")
- * elif self._cparser.flags & cparser.F_CONTENTLENGTH: # <<<<<<<<<<<<<<
- * raise ContentLengthError(
- * "Not enough data for satisfy content length header.")
- */
- __pyx_t_2 = ((__pyx_v_self->_cparser->flags & F_CONTENTLENGTH) != 0);
- if (unlikely(__pyx_t_2)) {
-
- /* "aiohttp/_http_parser.pyx":508
- * "Not enough data for satisfy transfer length header.")
- * elif self._cparser.flags & cparser.F_CONTENTLENGTH:
- * raise ContentLengthError( # <<<<<<<<<<<<<<
- * "Not enough data for satisfy content length header.")
- * elif self._cparser.http_errno != cparser.HPE_OK:
- */
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ContentLengthError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 508, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_Not_enough_data_for_satisfy_cont) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_Not_enough_data_for_satisfy_cont);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 508, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(0, 508, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":507
- * raise TransferEncodingError(
- * "Not enough data for satisfy transfer length header.")
- * elif self._cparser.flags & cparser.F_CONTENTLENGTH: # <<<<<<<<<<<<<<
- * raise ContentLengthError(
- * "Not enough data for satisfy content length header.")
- */
- }
-
- /* "aiohttp/_http_parser.pyx":510
- * raise ContentLengthError(
- * "Not enough data for satisfy content length header.")
- * elif self._cparser.http_errno != cparser.HPE_OK: # <<<<<<<<<<<<<<
- * desc = cparser.http_errno_description(
- * self._cparser.http_errno)
- */
- __pyx_t_2 = ((__pyx_v_self->_cparser->http_errno != HPE_OK) != 0);
- if (unlikely(__pyx_t_2)) {
-
- /* "aiohttp/_http_parser.pyx":511
- * "Not enough data for satisfy content length header.")
- * elif self._cparser.http_errno != cparser.HPE_OK:
- * desc = cparser.http_errno_description( # <<<<<<<<<<<<<<
- * self._cparser.http_errno)
- * raise PayloadEncodingError(desc.decode('latin-1'))
- */
- __pyx_t_3 = __Pyx_PyBytes_FromString(http_errno_description(((enum http_errno)__pyx_v_self->_cparser->http_errno))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_desc = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":513
- * desc = cparser.http_errno_description(
- * self._cparser.http_errno)
- * raise PayloadEncodingError(desc.decode('latin-1')) # <<<<<<<<<<<<<<
- * else:
- * self._payload.feed_eof()
- */
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PayloadEncodingError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 513, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_decode_bytes(__pyx_v_desc, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 513, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 513, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(0, 513, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":510
- * raise ContentLengthError(
- * "Not enough data for satisfy content length header.")
- * elif self._cparser.http_errno != cparser.HPE_OK: # <<<<<<<<<<<<<<
- * desc = cparser.http_errno_description(
- * self._cparser.http_errno)
- */
- }
-
- /* "aiohttp/_http_parser.pyx":515
- * raise PayloadEncodingError(desc.decode('latin-1'))
- * else:
- * self._payload.feed_eof() # <<<<<<<<<<<<<<
- * elif self._started:
- * self._on_headers_complete()
- */
- /*else*/ {
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_payload, __pyx_n_s_feed_eof); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
-
- /* "aiohttp/_http_parser.pyx":503
- * cdef bytes desc
- *
- * if self._payload is not None: # <<<<<<<<<<<<<<
- * if self._cparser.flags & cparser.F_CHUNKED:
- * raise TransferEncodingError(
- */
- goto __pyx_L3;
- }
-
- /* "aiohttp/_http_parser.pyx":516
- * else:
- * self._payload.feed_eof()
- * elif self._started: # <<<<<<<<<<<<<<
- * self._on_headers_complete()
- * if self._messages:
- */
- __pyx_t_2 = (__pyx_v_self->_started != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":517
- * self._payload.feed_eof()
- * elif self._started:
- * self._on_headers_complete() # <<<<<<<<<<<<<<
- * if self._messages:
- * return self._messages[-1][0]
- */
- __pyx_t_3 = ((struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self->__pyx_vtab)->_on_headers_complete(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 517, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":518
- * elif self._started:
- * self._on_headers_complete()
- * if self._messages: # <<<<<<<<<<<<<<
- * return self._messages[-1][0]
- *
- */
- __pyx_t_2 = (__pyx_v_self->_messages != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_messages) != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":519
- * self._on_headers_complete()
- * if self._messages:
- * return self._messages[-1][0] # <<<<<<<<<<<<<<
- *
- * def feed_data(self, data):
- */
- __Pyx_XDECREF(__pyx_r);
- if (unlikely(__pyx_v_self->_messages == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 519, __pyx_L1_error)
- }
- __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_self->_messages, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 519, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 519, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":518
- * elif self._started:
- * self._on_headers_complete()
- * if self._messages: # <<<<<<<<<<<<<<
- * return self._messages[-1][0]
- *
- */
- }
-
- /* "aiohttp/_http_parser.pyx":516
- * else:
- * self._payload.feed_eof()
- * elif self._started: # <<<<<<<<<<<<<<
- * self._on_headers_complete()
- * if self._messages:
- */
- }
- __pyx_L3:;
-
- /* "aiohttp/_http_parser.pyx":500
- * ### Public API ###
- *
- * def feed_eof(self): # <<<<<<<<<<<<<<
- * cdef bytes desc
- *
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser.feed_eof", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_desc);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":521
- * return self._messages[-1][0]
- *
- * def feed_data(self, data): # <<<<<<<<<<<<<<
- * cdef:
- * size_t data_len
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_7feed_data(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_7feed_data(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("feed_data (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_10HttpParser_6feed_data(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self), ((PyObject *)__pyx_v_data));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_6feed_data(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, PyObject *__pyx_v_data) {
- size_t __pyx_v_data_len;
- size_t __pyx_v_nb;
- PyObject *__pyx_v_ex = NULL;
- PyObject *__pyx_v_messages = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("feed_data", 0);
-
- /* "aiohttp/_http_parser.pyx":526
- * size_t nb
- *
- * PyObject_GetBuffer(data, &self.py_buf, PyBUF_SIMPLE) # <<<<<<<<<<<<<<
- * data_len = self.py_buf.len
- *
- */
- __pyx_t_1 = PyObject_GetBuffer(__pyx_v_data, (&__pyx_v_self->py_buf), PyBUF_SIMPLE); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 526, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":527
- *
- * PyObject_GetBuffer(data, &self.py_buf, PyBUF_SIMPLE)
- * data_len = self.py_buf.len # <<<<<<<<<<<<<<
- *
- * nb = cparser.http_parser_execute(
- */
- __pyx_v_data_len = ((size_t)__pyx_v_self->py_buf.len);
-
- /* "aiohttp/_http_parser.pyx":529
- * data_len = self.py_buf.len
- *
- * nb = cparser.http_parser_execute( # <<<<<<<<<<<<<<
- * self._cparser,
- * self._csettings,
- */
- __pyx_v_nb = http_parser_execute(__pyx_v_self->_cparser, __pyx_v_self->_csettings, ((char *)__pyx_v_self->py_buf.buf), __pyx_v_data_len);
-
- /* "aiohttp/_http_parser.pyx":535
- * data_len)
- *
- * PyBuffer_Release(&self.py_buf) # <<<<<<<<<<<<<<
- *
- * if (self._cparser.http_errno != cparser.HPE_OK):
- */
- PyBuffer_Release((&__pyx_v_self->py_buf));
-
- /* "aiohttp/_http_parser.pyx":537
- * PyBuffer_Release(&self.py_buf)
- *
- * if (self._cparser.http_errno != cparser.HPE_OK): # <<<<<<<<<<<<<<
- * if self._payload_error == 0:
- * if self._last_error is not None:
- */
- __pyx_t_2 = ((__pyx_v_self->_cparser->http_errno != HPE_OK) != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":538
- *
- * if (self._cparser.http_errno != cparser.HPE_OK):
- * if self._payload_error == 0: # <<<<<<<<<<<<<<
- * if self._last_error is not None:
- * ex = self._last_error
- */
- __pyx_t_2 = ((__pyx_v_self->_payload_error == 0) != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":539
- * if (self._cparser.http_errno != cparser.HPE_OK):
- * if self._payload_error == 0:
- * if self._last_error is not None: # <<<<<<<<<<<<<<
- * ex = self._last_error
- * self._last_error = None
- */
- __pyx_t_2 = (__pyx_v_self->_last_error != Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
-
- /* "aiohttp/_http_parser.pyx":540
- * if self._payload_error == 0:
- * if self._last_error is not None:
- * ex = self._last_error # <<<<<<<<<<<<<<
- * self._last_error = None
- * else:
- */
- __pyx_t_4 = __pyx_v_self->_last_error;
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_ex = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "aiohttp/_http_parser.pyx":541
- * if self._last_error is not None:
- * ex = self._last_error
- * self._last_error = None # <<<<<<<<<<<<<<
- * else:
- * ex = parser_error_from_errno(
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->_last_error);
- __Pyx_DECREF(__pyx_v_self->_last_error);
- __pyx_v_self->_last_error = Py_None;
-
- /* "aiohttp/_http_parser.pyx":539
- * if (self._cparser.http_errno != cparser.HPE_OK):
- * if self._payload_error == 0:
- * if self._last_error is not None: # <<<<<<<<<<<<<<
- * ex = self._last_error
- * self._last_error = None
- */
- goto __pyx_L5;
- }
-
- /* "aiohttp/_http_parser.pyx":543
- * self._last_error = None
- * else:
- * ex = parser_error_from_errno( # <<<<<<<<<<<<<<
- * self._cparser.http_errno)
- * self._payload = None
- */
- /*else*/ {
-
- /* "aiohttp/_http_parser.pyx":544
- * else:
- * ex = parser_error_from_errno(
- * self._cparser.http_errno) # <<<<<<<<<<<<<<
- * self._payload = None
- * raise ex
- */
- __pyx_t_4 = __pyx_f_7aiohttp_12_http_parser_parser_error_from_errno(((enum http_errno)__pyx_v_self->_cparser->http_errno)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 543, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_v_ex = __pyx_t_4;
- __pyx_t_4 = 0;
- }
- __pyx_L5:;
-
- /* "aiohttp/_http_parser.pyx":545
- * ex = parser_error_from_errno(
- * self._cparser.http_errno)
- * self._payload = None # <<<<<<<<<<<<<<
- * raise ex
- *
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->_payload);
- __Pyx_DECREF(__pyx_v_self->_payload);
- __pyx_v_self->_payload = Py_None;
-
- /* "aiohttp/_http_parser.pyx":546
- * self._cparser.http_errno)
- * self._payload = None
- * raise ex # <<<<<<<<<<<<<<
- *
- * if self._messages:
- */
- __Pyx_Raise(__pyx_v_ex, 0, 0, 0);
- __PYX_ERR(0, 546, __pyx_L1_error)
-
- /* "aiohttp/_http_parser.pyx":538
- *
- * if (self._cparser.http_errno != cparser.HPE_OK):
- * if self._payload_error == 0: # <<<<<<<<<<<<<<
- * if self._last_error is not None:
- * ex = self._last_error
- */
- }
-
- /* "aiohttp/_http_parser.pyx":537
- * PyBuffer_Release(&self.py_buf)
- *
- * if (self._cparser.http_errno != cparser.HPE_OK): # <<<<<<<<<<<<<<
- * if self._payload_error == 0:
- * if self._last_error is not None:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":548
- * raise ex
- *
- * if self._messages: # <<<<<<<<<<<<<<
- * messages = self._messages
- * self._messages = []
- */
- __pyx_t_3 = (__pyx_v_self->_messages != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_messages) != 0);
- if (__pyx_t_3) {
-
- /* "aiohttp/_http_parser.pyx":549
- *
- * if self._messages:
- * messages = self._messages # <<<<<<<<<<<<<<
- * self._messages = []
- * else:
- */
- __pyx_t_4 = __pyx_v_self->_messages;
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_messages = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "aiohttp/_http_parser.pyx":550
- * if self._messages:
- * messages = self._messages
- * self._messages = [] # <<<<<<<<<<<<<<
- * else:
- * messages = ()
- */
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_v_self->_messages);
- __Pyx_DECREF(__pyx_v_self->_messages);
- __pyx_v_self->_messages = ((PyObject*)__pyx_t_4);
- __pyx_t_4 = 0;
-
- /* "aiohttp/_http_parser.pyx":548
- * raise ex
- *
- * if self._messages: # <<<<<<<<<<<<<<
- * messages = self._messages
- * self._messages = []
- */
- goto __pyx_L6;
- }
-
- /* "aiohttp/_http_parser.pyx":552
- * self._messages = []
- * else:
- * messages = () # <<<<<<<<<<<<<<
- *
- * if self._upgraded:
- */
- /*else*/ {
- __Pyx_INCREF(__pyx_empty_tuple);
- __pyx_v_messages = __pyx_empty_tuple;
- }
- __pyx_L6:;
-
- /* "aiohttp/_http_parser.pyx":554
- * messages = ()
- *
- * if self._upgraded: # <<<<<<<<<<<<<<
- * return messages, True, data[nb:]
- * else:
- */
- __pyx_t_3 = (__pyx_v_self->_upgraded != 0);
- if (__pyx_t_3) {
-
- /* "aiohttp/_http_parser.pyx":555
- *
- * if self._upgraded:
- * return messages, True, data[nb:] # <<<<<<<<<<<<<<
- * else:
- * return messages, False, b''
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_data, __pyx_v_nb, 0, NULL, NULL, NULL, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 555, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_v_messages);
- __Pyx_GIVEREF(__pyx_v_messages);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_messages);
- __Pyx_INCREF(Py_True);
- __Pyx_GIVEREF(Py_True);
- PyTuple_SET_ITEM(__pyx_t_5, 1, Py_True);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":554
- * messages = ()
- *
- * if self._upgraded: # <<<<<<<<<<<<<<
- * return messages, True, data[nb:]
- * else:
- */
- }
-
- /* "aiohttp/_http_parser.pyx":557
- * return messages, True, data[nb:]
- * else:
- * return messages, False, b'' # <<<<<<<<<<<<<<
- *
- * def set_upgraded(self, val):
- */
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 557, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_v_messages);
- __Pyx_GIVEREF(__pyx_v_messages);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_messages);
- __Pyx_INCREF(Py_False);
- __Pyx_GIVEREF(Py_False);
- PyTuple_SET_ITEM(__pyx_t_5, 1, Py_False);
- __Pyx_INCREF(__pyx_kp_b__4);
- __Pyx_GIVEREF(__pyx_kp_b__4);
- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_b__4);
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L0;
- }
-
- /* "aiohttp/_http_parser.pyx":521
- * return self._messages[-1][0]
- *
- * def feed_data(self, data): # <<<<<<<<<<<<<<
- * cdef:
- * size_t data_len
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser.feed_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_ex);
- __Pyx_XDECREF(__pyx_v_messages);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":559
- * return messages, False, b''
- *
- * def set_upgraded(self, val): # <<<<<<<<<<<<<<
- * self._upgraded = val
- *
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_9set_upgraded(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_9set_upgraded(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("set_upgraded (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_10HttpParser_8set_upgraded(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self), ((PyObject *)__pyx_v_val));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_8set_upgraded(struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, PyObject *__pyx_v_val) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("set_upgraded", 0);
-
- /* "aiohttp/_http_parser.pyx":560
- *
- * def set_upgraded(self, val):
- * self._upgraded = val # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_val); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 560, __pyx_L1_error)
- __pyx_v_self->_upgraded = __pyx_t_1;
-
- /* "aiohttp/_http_parser.pyx":559
- * return messages, False, b''
- *
- * def set_upgraded(self, val): # <<<<<<<<<<<<<<
- * self._upgraded = val
- *
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser.set_upgraded", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_10HttpParser_10__reduce_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-
- /* "(tree fragment)":2
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(1, 2, __pyx_L1_error)
-
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":3
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_10HttpParser_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_10HttpParser_12__setstate_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_10HttpParser_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-
- /* "(tree fragment)":4
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
- */
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(1, 4, __pyx_L1_error)
-
- /* "(tree fragment)":3
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpParser.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":565
- * cdef class HttpRequestParser(HttpParser):
- *
- * def __init__(self, protocol, loop, int limit, timer=None, # <<<<<<<<<<<<<<
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_12_http_parser_17HttpRequestParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_7aiohttp_12_http_parser_17HttpRequestParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_protocol = 0;
- PyObject *__pyx_v_loop = 0;
- int __pyx_v_limit;
- PyObject *__pyx_v_timer = 0;
- size_t __pyx_v_max_line_size;
- size_t __pyx_v_max_headers;
- size_t __pyx_v_max_field_size;
- PyObject *__pyx_v_payload_exception = 0;
- int __pyx_v_response_with_body;
- int __pyx_v_read_until_eof;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol,&__pyx_n_s_loop,&__pyx_n_s_limit,&__pyx_n_s_timer,&__pyx_n_s_max_line_size,&__pyx_n_s_max_headers,&__pyx_n_s_max_field_size,&__pyx_n_s_payload_exception,&__pyx_n_s_response_with_body,&__pyx_n_s_read_until_eof,0};
- PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
- values[3] = ((PyObject *)Py_None);
-
- /* "aiohttp/_http_parser.pyx":567
- * def __init__(self, protocol, loop, int limit, timer=None,
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None, # <<<<<<<<<<<<<<
- * bint response_with_body=True, bint read_until_eof=False,
- * ):
- */
- values[7] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
- CYTHON_FALLTHROUGH;
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- CYTHON_FALLTHROUGH;
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- CYTHON_FALLTHROUGH;
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- CYTHON_FALLTHROUGH;
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- CYTHON_FALLTHROUGH;
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- CYTHON_FALLTHROUGH;
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- CYTHON_FALLTHROUGH;
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_protocol)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- CYTHON_FALLTHROUGH;
- case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 10, 1); __PYX_ERR(0, 565, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_limit)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 10, 2); __PYX_ERR(0, 565, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timer);
- if (value) { values[3] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_line_size);
- if (value) { values[4] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 5:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_headers);
- if (value) { values[5] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 6:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_field_size);
- if (value) { values[6] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 7:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_payload_exception);
- if (value) { values[7] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 8:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_response_with_body);
- if (value) { values[8] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 9:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_read_until_eof);
- if (value) { values[9] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 565, __pyx_L3_error)
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
- CYTHON_FALLTHROUGH;
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- CYTHON_FALLTHROUGH;
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- CYTHON_FALLTHROUGH;
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- CYTHON_FALLTHROUGH;
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- CYTHON_FALLTHROUGH;
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- CYTHON_FALLTHROUGH;
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- CYTHON_FALLTHROUGH;
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_protocol = values[0];
- __pyx_v_loop = values[1];
- __pyx_v_limit = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_limit == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 565, __pyx_L3_error)
- __pyx_v_timer = values[3];
- if (values[4]) {
- __pyx_v_max_line_size = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_max_line_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 566, __pyx_L3_error)
- } else {
- __pyx_v_max_line_size = ((size_t)0x1FFE);
- }
- if (values[5]) {
- __pyx_v_max_headers = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_max_headers == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 566, __pyx_L3_error)
- } else {
- __pyx_v_max_headers = ((size_t)0x8000);
- }
- if (values[6]) {
- __pyx_v_max_field_size = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_max_field_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 567, __pyx_L3_error)
- } else {
- __pyx_v_max_field_size = ((size_t)0x1FFE);
- }
- __pyx_v_payload_exception = values[7];
- if (values[8]) {
- __pyx_v_response_with_body = __Pyx_PyObject_IsTrue(values[8]); if (unlikely((__pyx_v_response_with_body == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 568, __pyx_L3_error)
- } else {
-
- /* "aiohttp/_http_parser.pyx":568
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- * bint response_with_body=True, bint read_until_eof=False, # <<<<<<<<<<<<<<
- * ):
- * self._init(cparser.HTTP_REQUEST, protocol, loop, limit, timer,
- */
- __pyx_v_response_with_body = ((int)1);
- }
- if (values[9]) {
- __pyx_v_read_until_eof = __Pyx_PyObject_IsTrue(values[9]); if (unlikely((__pyx_v_read_until_eof == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 568, __pyx_L3_error)
- } else {
- __pyx_v_read_until_eof = ((int)0);
- }
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 565, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.HttpRequestParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser___init__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *)__pyx_v_self), __pyx_v_protocol, __pyx_v_loop, __pyx_v_limit, __pyx_v_timer, __pyx_v_max_line_size, __pyx_v_max_headers, __pyx_v_max_field_size, __pyx_v_payload_exception, __pyx_v_response_with_body, __pyx_v_read_until_eof);
-
- /* "aiohttp/_http_parser.pyx":565
- * cdef class HttpRequestParser(HttpParser):
- *
- * def __init__(self, protocol, loop, int limit, timer=None, # <<<<<<<<<<<<<<
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- */
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser___init__(struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_loop, int __pyx_v_limit, PyObject *__pyx_v_timer, size_t __pyx_v_max_line_size, size_t __pyx_v_max_headers, size_t __pyx_v_max_field_size, PyObject *__pyx_v_payload_exception, int __pyx_v_response_with_body, int __pyx_v_read_until_eof) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- struct __pyx_opt_args_7aiohttp_12_http_parser_10HttpParser__init __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
-
- /* "aiohttp/_http_parser.pyx":570
- * bint response_with_body=True, bint read_until_eof=False,
- * ):
- * self._init(cparser.HTTP_REQUEST, protocol, loop, limit, timer, # <<<<<<<<<<<<<<
- * max_line_size, max_headers, max_field_size,
- * payload_exception, response_with_body, read_until_eof)
- */
- __pyx_t_2.__pyx_n = 7;
- __pyx_t_2.timer = __pyx_v_timer;
- __pyx_t_2.max_line_size = __pyx_v_max_line_size;
- __pyx_t_2.max_headers = __pyx_v_max_headers;
- __pyx_t_2.max_field_size = __pyx_v_max_field_size;
- __pyx_t_2.payload_exception = __pyx_v_payload_exception;
- __pyx_t_2.response_with_body = __pyx_v_response_with_body;
- __pyx_t_2.read_until_eof = __pyx_v_read_until_eof;
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpRequestParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self), HTTP_REQUEST, __pyx_v_protocol, __pyx_v_loop, __pyx_v_limit, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":565
- * cdef class HttpRequestParser(HttpParser):
- *
- * def __init__(self, protocol, loop, int limit, timer=None, # <<<<<<<<<<<<<<
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpRequestParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":574
- * payload_exception, response_with_body, read_until_eof)
- *
- * cdef object _on_status_complete(self): # <<<<<<<<<<<<<<
- * cdef Py_buffer py_buf
- * if not self._buf:
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_17HttpRequestParser__on_status_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *__pyx_v_self) {
- Py_buffer __pyx_v_py_buf;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_t_7;
- char const *__pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- PyObject *__pyx_t_14 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_on_status_complete", 0);
-
- /* "aiohttp/_http_parser.pyx":576
- * cdef object _on_status_complete(self):
- * cdef Py_buffer py_buf
- * if not self._buf: # <<<<<<<<<<<<<<
- * return
- * self._path = self._buf.decode('utf-8', 'surrogateescape')
- */
- __pyx_t_1 = (__pyx_v_self->__pyx_base._buf != Py_None)&&(PyByteArray_GET_SIZE(__pyx_v_self->__pyx_base._buf) != 0);
- __pyx_t_2 = ((!__pyx_t_1) != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":577
- * cdef Py_buffer py_buf
- * if not self._buf:
- * return # <<<<<<<<<<<<<<
- * self._path = self._buf.decode('utf-8', 'surrogateescape')
- * if self._cparser.method == 5: # CONNECT
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":576
- * cdef object _on_status_complete(self):
- * cdef Py_buffer py_buf
- * if not self._buf: # <<<<<<<<<<<<<<
- * return
- * self._path = self._buf.decode('utf-8', 'surrogateescape')
- */
- }
-
- /* "aiohttp/_http_parser.pyx":578
- * if not self._buf:
- * return
- * self._path = self._buf.decode('utf-8', 'surrogateescape') # <<<<<<<<<<<<<<
- * if self._cparser.method == 5: # CONNECT
- * self._url = URL(self._path)
- */
- if (unlikely(__pyx_v_self->__pyx_base._buf == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
- __PYX_ERR(0, 578, __pyx_L1_error)
- }
- __pyx_t_3 = __Pyx_decode_bytearray(__pyx_v_self->__pyx_base._buf, 0, PY_SSIZE_T_MAX, NULL, ((char const *)"surrogateescape"), PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 578, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->__pyx_base._path);
- __Pyx_DECREF(__pyx_v_self->__pyx_base._path);
- __pyx_v_self->__pyx_base._path = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":579
- * return
- * self._path = self._buf.decode('utf-8', 'surrogateescape')
- * if self._cparser.method == 5: # CONNECT # <<<<<<<<<<<<<<
- * self._url = URL(self._path)
- * else:
- */
- __pyx_t_2 = ((__pyx_v_self->__pyx_base._cparser->method == 5) != 0);
- if (__pyx_t_2) {
-
- /* "aiohttp/_http_parser.pyx":580
- * self._path = self._buf.decode('utf-8', 'surrogateescape')
- * if self._cparser.method == 5: # CONNECT
- * self._url = URL(self._path) # <<<<<<<<<<<<<<
- * else:
- * PyObject_GetBuffer(self._buf, &py_buf, PyBUF_SIMPLE)
- */
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_URL);
- __pyx_t_4 = __pyx_v_7aiohttp_12_http_parser_URL; __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_self->__pyx_base._path) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_self->__pyx_base._path);
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 580, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->__pyx_base._url);
- __Pyx_DECREF(__pyx_v_self->__pyx_base._url);
- __pyx_v_self->__pyx_base._url = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":579
- * return
- * self._path = self._buf.decode('utf-8', 'surrogateescape')
- * if self._cparser.method == 5: # CONNECT # <<<<<<<<<<<<<<
- * self._url = URL(self._path)
- * else:
- */
- goto __pyx_L4;
- }
-
- /* "aiohttp/_http_parser.pyx":582
- * self._url = URL(self._path)
- * else:
- * PyObject_GetBuffer(self._buf, &py_buf, PyBUF_SIMPLE) # <<<<<<<<<<<<<<
- * try:
- * self._url = _parse_url(py_buf.buf,
- */
- /*else*/ {
- __pyx_t_3 = __pyx_v_self->__pyx_base._buf;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_t_6 = PyObject_GetBuffer(__pyx_t_3, (&__pyx_v_py_buf), PyBUF_SIMPLE); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 582, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":583
- * else:
- * PyObject_GetBuffer(self._buf, &py_buf, PyBUF_SIMPLE)
- * try: # <<<<<<<<<<<<<<
- * self._url = _parse_url(py_buf.buf,
- * py_buf.len)
- */
- /*try:*/ {
-
- /* "aiohttp/_http_parser.pyx":584
- * PyObject_GetBuffer(self._buf, &py_buf, PyBUF_SIMPLE)
- * try:
- * self._url = _parse_url(py_buf.buf, # <<<<<<<<<<<<<<
- * py_buf.len)
- * finally:
- */
- __pyx_t_3 = __pyx_f_7aiohttp_12_http_parser__parse_url(((char *)__pyx_v_py_buf.buf), __pyx_v_py_buf.len); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 584, __pyx_L6_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->__pyx_base._url);
- __Pyx_DECREF(__pyx_v_self->__pyx_base._url);
- __pyx_v_self->__pyx_base._url = __pyx_t_3;
- __pyx_t_3 = 0;
- }
-
- /* "aiohttp/_http_parser.pyx":587
- * py_buf.len)
- * finally:
- * PyBuffer_Release(&py_buf) # <<<<<<<<<<<<<<
- * PyByteArray_Resize(self._buf, 0)
- *
- */
- /*finally:*/ {
- /*normal exit:*/{
- PyBuffer_Release((&__pyx_v_py_buf));
- goto __pyx_L7;
- }
- __pyx_L6_error:;
- /*exception exit:*/{
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_9);
- __Pyx_XGOTREF(__pyx_t_10);
- __Pyx_XGOTREF(__pyx_t_11);
- __Pyx_XGOTREF(__pyx_t_12);
- __Pyx_XGOTREF(__pyx_t_13);
- __Pyx_XGOTREF(__pyx_t_14);
- __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
- {
- PyBuffer_Release((&__pyx_v_py_buf));
- }
- if (PY_MAJOR_VERSION >= 3) {
- __Pyx_XGIVEREF(__pyx_t_12);
- __Pyx_XGIVEREF(__pyx_t_13);
- __Pyx_XGIVEREF(__pyx_t_14);
- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
- }
- __Pyx_XGIVEREF(__pyx_t_9);
- __Pyx_XGIVEREF(__pyx_t_10);
- __Pyx_XGIVEREF(__pyx_t_11);
- __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
- __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
- __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8;
- goto __pyx_L1_error;
- }
- __pyx_L7:;
- }
- }
- __pyx_L4:;
-
- /* "aiohttp/_http_parser.pyx":588
- * finally:
- * PyBuffer_Release(&py_buf)
- * PyByteArray_Resize(self._buf, 0) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_3 = __pyx_v_self->__pyx_base._buf;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_t_7 = PyByteArray_Resize(__pyx_t_3, 0); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 588, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "aiohttp/_http_parser.pyx":574
- * payload_exception, response_with_body, read_until_eof)
- *
- * cdef object _on_status_complete(self): # <<<<<<<<<<<<<<
- * cdef Py_buffer py_buf
- * if not self._buf:
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpRequestParser._on_status_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17HttpRequestParser_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17HttpRequestParser_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser_2__reduce_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-
- /* "(tree fragment)":2
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(1, 2, __pyx_L1_error)
-
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpRequestParser.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":3
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17HttpRequestParser_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_17HttpRequestParser_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser_4__setstate_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_17HttpRequestParser_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpRequestParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-
- /* "(tree fragment)":4
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
- */
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(1, 4, __pyx_L1_error)
-
- /* "(tree fragment)":3
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpRequestParser.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":593
- * cdef class HttpResponseParser(HttpParser):
- *
- * def __init__(self, protocol, loop, int limit, timer=None, # <<<<<<<<<<<<<<
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- */
-
-/* Python wrapper */
-static int __pyx_pw_7aiohttp_12_http_parser_18HttpResponseParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_7aiohttp_12_http_parser_18HttpResponseParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_protocol = 0;
- PyObject *__pyx_v_loop = 0;
- int __pyx_v_limit;
- PyObject *__pyx_v_timer = 0;
- size_t __pyx_v_max_line_size;
- size_t __pyx_v_max_headers;
- size_t __pyx_v_max_field_size;
- PyObject *__pyx_v_payload_exception = 0;
- int __pyx_v_response_with_body;
- int __pyx_v_read_until_eof;
- int __pyx_v_auto_decompress;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_protocol,&__pyx_n_s_loop,&__pyx_n_s_limit,&__pyx_n_s_timer,&__pyx_n_s_max_line_size,&__pyx_n_s_max_headers,&__pyx_n_s_max_field_size,&__pyx_n_s_payload_exception,&__pyx_n_s_response_with_body,&__pyx_n_s_read_until_eof,&__pyx_n_s_auto_decompress,0};
- PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
- values[3] = ((PyObject *)Py_None);
-
- /* "aiohttp/_http_parser.pyx":595
- * def __init__(self, protocol, loop, int limit, timer=None,
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None, # <<<<<<<<<<<<<<
- * bint response_with_body=True, bint read_until_eof=False,
- * bint auto_decompress=True
- */
- values[7] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
- CYTHON_FALLTHROUGH;
- case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
- CYTHON_FALLTHROUGH;
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- CYTHON_FALLTHROUGH;
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- CYTHON_FALLTHROUGH;
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- CYTHON_FALLTHROUGH;
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- CYTHON_FALLTHROUGH;
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- CYTHON_FALLTHROUGH;
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- CYTHON_FALLTHROUGH;
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- CYTHON_FALLTHROUGH;
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- CYTHON_FALLTHROUGH;
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- CYTHON_FALLTHROUGH;
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_protocol)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- CYTHON_FALLTHROUGH;
- case 1:
- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 1); __PYX_ERR(0, 593, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_limit)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 2); __PYX_ERR(0, 593, __pyx_L3_error)
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timer);
- if (value) { values[3] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_line_size);
- if (value) { values[4] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 5:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_headers);
- if (value) { values[5] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 6:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_field_size);
- if (value) { values[6] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 7:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_payload_exception);
- if (value) { values[7] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 8:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_response_with_body);
- if (value) { values[8] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 9:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_read_until_eof);
- if (value) { values[9] = value; kw_args--; }
- }
- CYTHON_FALLTHROUGH;
- case 10:
- if (kw_args > 0) {
- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_auto_decompress);
- if (value) { values[10] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 593, __pyx_L3_error)
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
- CYTHON_FALLTHROUGH;
- case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
- CYTHON_FALLTHROUGH;
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- CYTHON_FALLTHROUGH;
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- CYTHON_FALLTHROUGH;
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- CYTHON_FALLTHROUGH;
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- CYTHON_FALLTHROUGH;
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- CYTHON_FALLTHROUGH;
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- CYTHON_FALLTHROUGH;
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_protocol = values[0];
- __pyx_v_loop = values[1];
- __pyx_v_limit = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_limit == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 593, __pyx_L3_error)
- __pyx_v_timer = values[3];
- if (values[4]) {
- __pyx_v_max_line_size = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_max_line_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 594, __pyx_L3_error)
- } else {
- __pyx_v_max_line_size = ((size_t)0x1FFE);
- }
- if (values[5]) {
- __pyx_v_max_headers = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_max_headers == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 594, __pyx_L3_error)
- } else {
- __pyx_v_max_headers = ((size_t)0x8000);
- }
- if (values[6]) {
- __pyx_v_max_field_size = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_max_field_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 595, __pyx_L3_error)
- } else {
- __pyx_v_max_field_size = ((size_t)0x1FFE);
- }
- __pyx_v_payload_exception = values[7];
- if (values[8]) {
- __pyx_v_response_with_body = __Pyx_PyObject_IsTrue(values[8]); if (unlikely((__pyx_v_response_with_body == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 596, __pyx_L3_error)
- } else {
-
- /* "aiohttp/_http_parser.pyx":596
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- * bint response_with_body=True, bint read_until_eof=False, # <<<<<<<<<<<<<<
- * bint auto_decompress=True
- * ):
- */
- __pyx_v_response_with_body = ((int)1);
- }
- if (values[9]) {
- __pyx_v_read_until_eof = __Pyx_PyObject_IsTrue(values[9]); if (unlikely((__pyx_v_read_until_eof == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 596, __pyx_L3_error)
- } else {
- __pyx_v_read_until_eof = ((int)0);
- }
- if (values[10]) {
- __pyx_v_auto_decompress = __Pyx_PyObject_IsTrue(values[10]); if (unlikely((__pyx_v_auto_decompress == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 597, __pyx_L3_error)
- } else {
-
- /* "aiohttp/_http_parser.pyx":597
- * size_t max_field_size=8190, payload_exception=None,
- * bint response_with_body=True, bint read_until_eof=False,
- * bint auto_decompress=True # <<<<<<<<<<<<<<
- * ):
- * self._init(cparser.HTTP_RESPONSE, protocol, loop, limit, timer,
- */
- __pyx_v_auto_decompress = ((int)1);
- }
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 593, __pyx_L3_error)
- __pyx_L3_error:;
- __Pyx_AddTraceback("aiohttp._http_parser.HttpResponseParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser___init__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *)__pyx_v_self), __pyx_v_protocol, __pyx_v_loop, __pyx_v_limit, __pyx_v_timer, __pyx_v_max_line_size, __pyx_v_max_headers, __pyx_v_max_field_size, __pyx_v_payload_exception, __pyx_v_response_with_body, __pyx_v_read_until_eof, __pyx_v_auto_decompress);
-
- /* "aiohttp/_http_parser.pyx":593
- * cdef class HttpResponseParser(HttpParser):
- *
- * def __init__(self, protocol, loop, int limit, timer=None, # <<<<<<<<<<<<<<
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- */
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser___init__(struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_loop, int __pyx_v_limit, PyObject *__pyx_v_timer, size_t __pyx_v_max_line_size, size_t __pyx_v_max_headers, size_t __pyx_v_max_field_size, PyObject *__pyx_v_payload_exception, int __pyx_v_response_with_body, int __pyx_v_read_until_eof, int __pyx_v_auto_decompress) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- struct __pyx_opt_args_7aiohttp_12_http_parser_10HttpParser__init __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
-
- /* "aiohttp/_http_parser.pyx":599
- * bint auto_decompress=True
- * ):
- * self._init(cparser.HTTP_RESPONSE, protocol, loop, limit, timer, # <<<<<<<<<<<<<<
- * max_line_size, max_headers, max_field_size,
- * payload_exception, response_with_body, read_until_eof,
- */
- __pyx_t_2.__pyx_n = 8;
- __pyx_t_2.timer = __pyx_v_timer;
- __pyx_t_2.max_line_size = __pyx_v_max_line_size;
- __pyx_t_2.max_headers = __pyx_v_max_headers;
- __pyx_t_2.max_field_size = __pyx_v_max_field_size;
- __pyx_t_2.payload_exception = __pyx_v_payload_exception;
- __pyx_t_2.response_with_body = __pyx_v_response_with_body;
- __pyx_t_2.read_until_eof = __pyx_v_read_until_eof;
- __pyx_t_2.auto_decompress = __pyx_v_auto_decompress;
- __pyx_t_1 = ((struct __pyx_vtabstruct_7aiohttp_12_http_parser_HttpResponseParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._init(((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_v_self), HTTP_RESPONSE, __pyx_v_protocol, __pyx_v_loop, __pyx_v_limit, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":593
- * cdef class HttpResponseParser(HttpParser):
- *
- * def __init__(self, protocol, loop, int limit, timer=None, # <<<<<<<<<<<<<<
- * size_t max_line_size=8190, size_t max_headers=32768,
- * size_t max_field_size=8190, payload_exception=None,
- */
-
- /* function exit code */
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpResponseParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":604
- * auto_decompress)
- *
- * cdef object _on_status_complete(self): # <<<<<<<<<<<<<<
- * if self._buf:
- * self._reason = self._buf.decode('utf-8', 'surrogateescape')
- */
-
-static PyObject *__pyx_f_7aiohttp_12_http_parser_18HttpResponseParser__on_status_complete(struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_on_status_complete", 0);
-
- /* "aiohttp/_http_parser.pyx":605
- *
- * cdef object _on_status_complete(self):
- * if self._buf: # <<<<<<<<<<<<<<
- * self._reason = self._buf.decode('utf-8', 'surrogateescape')
- * PyByteArray_Resize(self._buf, 0)
- */
- __pyx_t_1 = (__pyx_v_self->__pyx_base._buf != Py_None)&&(PyByteArray_GET_SIZE(__pyx_v_self->__pyx_base._buf) != 0);
- if (__pyx_t_1) {
-
- /* "aiohttp/_http_parser.pyx":606
- * cdef object _on_status_complete(self):
- * if self._buf:
- * self._reason = self._buf.decode('utf-8', 'surrogateescape') # <<<<<<<<<<<<<<
- * PyByteArray_Resize(self._buf, 0)
- * else:
- */
- if (unlikely(__pyx_v_self->__pyx_base._buf == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
- __PYX_ERR(0, 606, __pyx_L1_error)
- }
- __pyx_t_2 = __Pyx_decode_bytearray(__pyx_v_self->__pyx_base._buf, 0, PY_SSIZE_T_MAX, NULL, ((char const *)"surrogateescape"), PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->__pyx_base._reason);
- __Pyx_DECREF(__pyx_v_self->__pyx_base._reason);
- __pyx_v_self->__pyx_base._reason = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":607
- * if self._buf:
- * self._reason = self._buf.decode('utf-8', 'surrogateescape')
- * PyByteArray_Resize(self._buf, 0) # <<<<<<<<<<<<<<
- * else:
- * self._reason = self._reason or ''
- */
- __pyx_t_2 = __pyx_v_self->__pyx_base._buf;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = PyByteArray_Resize(__pyx_t_2, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 607, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "aiohttp/_http_parser.pyx":605
- *
- * cdef object _on_status_complete(self):
- * if self._buf: # <<<<<<<<<<<<<<
- * self._reason = self._buf.decode('utf-8', 'surrogateescape')
- * PyByteArray_Resize(self._buf, 0)
- */
- goto __pyx_L3;
- }
-
- /* "aiohttp/_http_parser.pyx":609
- * PyByteArray_Resize(self._buf, 0)
- * else:
- * self._reason = self._reason or '' # <<<<<<<<<<<<<<
- *
- * cdef int cb_on_message_begin(cparser.http_parser* parser) except -1:
- */
- /*else*/ {
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->__pyx_base._reason); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 609, __pyx_L1_error)
- if (!__pyx_t_1) {
- } else {
- __Pyx_INCREF(__pyx_v_self->__pyx_base._reason);
- __pyx_t_2 = __pyx_v_self->__pyx_base._reason;
- goto __pyx_L4_bool_binop_done;
- }
- __Pyx_INCREF(__pyx_kp_u__4);
- __pyx_t_2 = __pyx_kp_u__4;
- __pyx_L4_bool_binop_done:;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->__pyx_base._reason);
- __Pyx_DECREF(__pyx_v_self->__pyx_base._reason);
- __pyx_v_self->__pyx_base._reason = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
- }
- __pyx_L3:;
-
- /* "aiohttp/_http_parser.pyx":604
- * auto_decompress)
- *
- * cdef object _on_status_complete(self): # <<<<<<<<<<<<<<
- * if self._buf:
- * self._reason = self._buf.decode('utf-8', 'surrogateescape')
- */
-
- /* function exit code */
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpResponseParser._on_status_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18HttpResponseParser_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18HttpResponseParser_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser_2__reduce_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *)__pyx_v_self));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__reduce_cython__", 0);
-
- /* "(tree fragment)":2
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
- * def __setstate_cython__(self, __pyx_state):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(1, 2, __pyx_L1_error)
-
- /* "(tree fragment)":1
- * def __reduce_cython__(self): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpResponseParser.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "(tree fragment)":3
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18HttpResponseParser_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
-static PyObject *__pyx_pw_7aiohttp_12_http_parser_18HttpResponseParser_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
- __pyx_r = __pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser_4__setstate_cython__(((struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
-
- /* function exit code */
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_7aiohttp_12_http_parser_18HttpResponseParser_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7aiohttp_12_http_parser_HttpResponseParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setstate_cython__", 0);
-
- /* "(tree fragment)":4
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
- */
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(1, 4, __pyx_L1_error)
-
- /* "(tree fragment)":3
- * def __reduce_cython__(self):
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
- * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("aiohttp._http_parser.HttpResponseParser.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":611
- * self._reason = self._reason or ''
- *
- * cdef int cb_on_message_begin(cparser.http_parser* parser) except -1: # <<<<<<<<<<<<<<
- * cdef HttpParser pyparser = parser.data
- *
- */
-
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_message_begin(struct http_parser *__pyx_v_parser) {
- struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_pyparser = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("cb_on_message_begin", 0);
-
- /* "aiohttp/_http_parser.pyx":612
- *
- * cdef int cb_on_message_begin(cparser.http_parser* parser) except -1:
- * cdef HttpParser pyparser = parser.data # <<<<<<<<<<<<<<
- *
- * pyparser._started = True
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_parser->data);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_pyparser = ((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":614
- * cdef HttpParser pyparser = parser.data
- *
- * pyparser._started = True # <<<<<<<<<<<<<<
- * pyparser._headers = CIMultiDict()
- * pyparser._raw_headers = []
- */
- __pyx_v_pyparser->_started = 1;
-
- /* "aiohttp/_http_parser.pyx":615
- *
- * pyparser._started = True
- * pyparser._headers = CIMultiDict() # <<<<<<<<<<<<<<
- * pyparser._raw_headers = []
- * PyByteArray_Resize(pyparser._buf, 0)
- */
- __Pyx_INCREF(__pyx_v_7aiohttp_12_http_parser_CIMultiDict);
- __pyx_t_2 = __pyx_v_7aiohttp_12_http_parser_CIMultiDict; __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_pyparser->_headers);
- __Pyx_DECREF(__pyx_v_pyparser->_headers);
- __pyx_v_pyparser->_headers = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":616
- * pyparser._started = True
- * pyparser._headers = CIMultiDict()
- * pyparser._raw_headers = [] # <<<<<<<<<<<<<<
- * PyByteArray_Resize(pyparser._buf, 0)
- * pyparser._path = None
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_pyparser->_raw_headers);
- __Pyx_DECREF(__pyx_v_pyparser->_raw_headers);
- __pyx_v_pyparser->_raw_headers = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":617
- * pyparser._headers = CIMultiDict()
- * pyparser._raw_headers = []
- * PyByteArray_Resize(pyparser._buf, 0) # <<<<<<<<<<<<<<
- * pyparser._path = None
- * pyparser._reason = None
- */
- __pyx_t_1 = __pyx_v_pyparser->_buf;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_4 = PyByteArray_Resize(__pyx_t_1, 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 617, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":618
- * pyparser._raw_headers = []
- * PyByteArray_Resize(pyparser._buf, 0)
- * pyparser._path = None # <<<<<<<<<<<<<<
- * pyparser._reason = None
- * return 0
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_pyparser->_path);
- __Pyx_DECREF(__pyx_v_pyparser->_path);
- __pyx_v_pyparser->_path = ((PyObject*)Py_None);
-
- /* "aiohttp/_http_parser.pyx":619
- * PyByteArray_Resize(pyparser._buf, 0)
- * pyparser._path = None
- * pyparser._reason = None # <<<<<<<<<<<<<<
- * return 0
- *
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_pyparser->_reason);
- __Pyx_DECREF(__pyx_v_pyparser->_reason);
- __pyx_v_pyparser->_reason = ((PyObject*)Py_None);
-
- /* "aiohttp/_http_parser.pyx":620
- * pyparser._path = None
- * pyparser._reason = None
- * return 0 # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = 0;
- goto __pyx_L0;
-
- /* "aiohttp/_http_parser.pyx":611
- * self._reason = self._reason or ''
- *
- * cdef int cb_on_message_begin(cparser.http_parser* parser) except -1: # <<<<<<<<<<<<<<
- * cdef HttpParser pyparser = parser.data
- *
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("aiohttp._http_parser.cb_on_message_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_pyparser);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":623
- *
- *
- * cdef int cb_on_url(cparser.http_parser* parser, # <<<<<<<<<<<<<<
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data
- */
-
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_url(struct http_parser *__pyx_v_parser, char const *__pyx_v_at, size_t __pyx_v_length) {
- struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_pyparser = 0;
- PyObject *__pyx_v_ex = NULL;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
- int __pyx_t_10;
- PyObject *__pyx_t_11 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("cb_on_url", 0);
-
- /* "aiohttp/_http_parser.pyx":625
- * cdef int cb_on_url(cparser.http_parser* parser,
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data # <<<<<<<<<<<<<<
- * try:
- * if length > pyparser._max_line_size:
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_parser->data);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_pyparser = ((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":626
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data
- * try: # <<<<<<<<<<<<<<
- * if length > pyparser._max_line_size:
- * raise LineTooLong(
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
- __Pyx_XGOTREF(__pyx_t_2);
- __Pyx_XGOTREF(__pyx_t_3);
- __Pyx_XGOTREF(__pyx_t_4);
- /*try:*/ {
-
- /* "aiohttp/_http_parser.pyx":627
- * cdef HttpParser pyparser = parser.data
- * try:
- * if length > pyparser._max_line_size: # <<<<<<<<<<<<<<
- * raise LineTooLong(
- * 'Status line is too long', pyparser._max_line_size, length)
- */
- __pyx_t_5 = ((__pyx_v_length > __pyx_v_pyparser->_max_line_size) != 0);
- if (unlikely(__pyx_t_5)) {
-
- /* "aiohttp/_http_parser.pyx":628
- * try:
- * if length > pyparser._max_line_size:
- * raise LineTooLong( # <<<<<<<<<<<<<<
- * 'Status line is too long', pyparser._max_line_size, length)
- * extend(pyparser._buf, at, length)
- */
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_LineTooLong); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 628, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_6);
-
- /* "aiohttp/_http_parser.pyx":629
- * if length > pyparser._max_line_size:
- * raise LineTooLong(
- * 'Status line is too long', pyparser._max_line_size, length) # <<<<<<<<<<<<<<
- * extend(pyparser._buf, at, length)
- * except BaseException as ex:
- */
- __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_pyparser->_max_line_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 629, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 629, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_kp_u_Status_line_is_too_long, __pyx_t_7, __pyx_t_8};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 628, __pyx_L3_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_kp_u_Status_line_is_too_long, __pyx_t_7, __pyx_t_8};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 628, __pyx_L3_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 628, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (__pyx_t_9) {
- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
- }
- __Pyx_INCREF(__pyx_kp_u_Status_line_is_too_long);
- __Pyx_GIVEREF(__pyx_kp_u_Status_line_is_too_long);
- PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_kp_u_Status_line_is_too_long);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_8);
- __pyx_t_7 = 0;
- __pyx_t_8 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 628, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 628, __pyx_L3_error)
-
- /* "aiohttp/_http_parser.pyx":627
- * cdef HttpParser pyparser = parser.data
- * try:
- * if length > pyparser._max_line_size: # <<<<<<<<<<<<<<
- * raise LineTooLong(
- * 'Status line is too long', pyparser._max_line_size, length)
- */
- }
-
- /* "aiohttp/_http_parser.pyx":630
- * raise LineTooLong(
- * 'Status line is too long', pyparser._max_line_size, length)
- * extend(pyparser._buf, at, length) # <<<<<<<<<<<<<<
- * except BaseException as ex:
- * pyparser._last_error = ex
- */
- __pyx_t_1 = __pyx_v_pyparser->_buf;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_6 = __pyx_f_7aiohttp_12_http_parser_extend(__pyx_t_1, __pyx_v_at, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 630, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "aiohttp/_http_parser.pyx":626
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data
- * try: # <<<<<<<<<<<<<<
- * if length > pyparser._max_line_size:
- * raise LineTooLong(
- */
- }
-
- /* "aiohttp/_http_parser.pyx":635
- * return -1
- * else:
- * return 0 # <<<<<<<<<<<<<<
- *
- *
- */
- /*else:*/ {
- __pyx_r = 0;
- goto __pyx_L6_except_return;
- }
- __pyx_L3_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-
- /* "aiohttp/_http_parser.pyx":631
- * 'Status line is too long', pyparser._max_line_size, length)
- * extend(pyparser._buf, at, length)
- * except BaseException as ex: # <<<<<<<<<<<<<<
- * pyparser._last_error = ex
- * return -1
- */
- __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
- if (__pyx_t_10) {
- __Pyx_AddTraceback("aiohttp._http_parser.cb_on_url", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_1, &__pyx_t_11) < 0) __PYX_ERR(0, 631, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_ex = __pyx_t_1;
- /*try:*/ {
-
- /* "aiohttp/_http_parser.pyx":632
- * extend(pyparser._buf, at, length)
- * except BaseException as ex:
- * pyparser._last_error = ex # <<<<<<<<<<<<<<
- * return -1
- * else:
- */
- __Pyx_INCREF(__pyx_v_ex);
- __Pyx_GIVEREF(__pyx_v_ex);
- __Pyx_GOTREF(__pyx_v_pyparser->_last_error);
- __Pyx_DECREF(__pyx_v_pyparser->_last_error);
- __pyx_v_pyparser->_last_error = __pyx_v_ex;
-
- /* "aiohttp/_http_parser.pyx":633
- * except BaseException as ex:
- * pyparser._last_error = ex
- * return -1 # <<<<<<<<<<<<<<
- * else:
- * return 0
- */
- __pyx_r = -1;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L14_return;
- }
-
- /* "aiohttp/_http_parser.pyx":631
- * 'Status line is too long', pyparser._max_line_size, length)
- * extend(pyparser._buf, at, length)
- * except BaseException as ex: # <<<<<<<<<<<<<<
- * pyparser._last_error = ex
- * return -1
- */
- /*finally:*/ {
- __pyx_L14_return: {
- __pyx_t_10 = __pyx_r;
- __Pyx_DECREF(__pyx_v_ex);
- __pyx_v_ex = NULL;
- __pyx_r = __pyx_t_10;
- goto __pyx_L6_except_return;
- }
- }
- }
- goto __pyx_L5_except_error;
- __pyx_L5_except_error:;
-
- /* "aiohttp/_http_parser.pyx":626
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data
- * try: # <<<<<<<<<<<<<<
- * if length > pyparser._max_line_size:
- * raise LineTooLong(
- */
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
- goto __pyx_L1_error;
- __pyx_L6_except_return:;
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
- goto __pyx_L0;
- }
-
- /* "aiohttp/_http_parser.pyx":623
- *
- *
- * cdef int cb_on_url(cparser.http_parser* parser, # <<<<<<<<<<<<<<
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_AddTraceback("aiohttp._http_parser.cb_on_url", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_pyparser);
- __Pyx_XDECREF(__pyx_v_ex);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":638
- *
- *
- * cdef int cb_on_status(cparser.http_parser* parser, # <<<<<<<<<<<<<<
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data
- */
-
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_status(struct http_parser *__pyx_v_parser, char const *__pyx_v_at, size_t __pyx_v_length) {
- struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_pyparser = 0;
- PyObject *__pyx_v_ex = NULL;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
- int __pyx_t_10;
- PyObject *__pyx_t_11 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("cb_on_status", 0);
-
- /* "aiohttp/_http_parser.pyx":640
- * cdef int cb_on_status(cparser.http_parser* parser,
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data # <<<<<<<<<<<<<<
- * cdef str reason
- * try:
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_parser->data);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_pyparser = ((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":642
- * cdef HttpParser pyparser = parser.data
- * cdef str reason
- * try: # <<<<<<<<<<<<<<
- * if length > pyparser._max_line_size:
- * raise LineTooLong(
- */
- {
- __Pyx_PyThreadState_declare
- __Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
- __Pyx_XGOTREF(__pyx_t_2);
- __Pyx_XGOTREF(__pyx_t_3);
- __Pyx_XGOTREF(__pyx_t_4);
- /*try:*/ {
-
- /* "aiohttp/_http_parser.pyx":643
- * cdef str reason
- * try:
- * if length > pyparser._max_line_size: # <<<<<<<<<<<<<<
- * raise LineTooLong(
- * 'Status line is too long', pyparser._max_line_size, length)
- */
- __pyx_t_5 = ((__pyx_v_length > __pyx_v_pyparser->_max_line_size) != 0);
- if (unlikely(__pyx_t_5)) {
-
- /* "aiohttp/_http_parser.pyx":644
- * try:
- * if length > pyparser._max_line_size:
- * raise LineTooLong( # <<<<<<<<<<<<<<
- * 'Status line is too long', pyparser._max_line_size, length)
- * extend(pyparser._buf, at, length)
- */
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_LineTooLong); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 644, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_6);
-
- /* "aiohttp/_http_parser.pyx":645
- * if length > pyparser._max_line_size:
- * raise LineTooLong(
- * 'Status line is too long', pyparser._max_line_size, length) # <<<<<<<<<<<<<<
- * extend(pyparser._buf, at, length)
- * except BaseException as ex:
- */
- __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_pyparser->_max_line_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 645, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 645, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = NULL;
- __pyx_t_10 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- __pyx_t_10 = 1;
- }
- }
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_kp_u_Status_line_is_too_long, __pyx_t_7, __pyx_t_8};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 644, __pyx_L3_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_kp_u_Status_line_is_too_long, __pyx_t_7, __pyx_t_8};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 644, __pyx_L3_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 644, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (__pyx_t_9) {
- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
- }
- __Pyx_INCREF(__pyx_kp_u_Status_line_is_too_long);
- __Pyx_GIVEREF(__pyx_kp_u_Status_line_is_too_long);
- PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_kp_u_Status_line_is_too_long);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_8);
- __pyx_t_7 = 0;
- __pyx_t_8 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 644, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 644, __pyx_L3_error)
-
- /* "aiohttp/_http_parser.pyx":643
- * cdef str reason
- * try:
- * if length > pyparser._max_line_size: # <<<<<<<<<<<<<<
- * raise LineTooLong(
- * 'Status line is too long', pyparser._max_line_size, length)
- */
- }
-
- /* "aiohttp/_http_parser.pyx":646
- * raise LineTooLong(
- * 'Status line is too long', pyparser._max_line_size, length)
- * extend(pyparser._buf, at, length) # <<<<<<<<<<<<<<
- * except BaseException as ex:
- * pyparser._last_error = ex
- */
- __pyx_t_1 = __pyx_v_pyparser->_buf;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_6 = __pyx_f_7aiohttp_12_http_parser_extend(__pyx_t_1, __pyx_v_at, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 646, __pyx_L3_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "aiohttp/_http_parser.pyx":642
- * cdef HttpParser pyparser = parser.data
- * cdef str reason
- * try: # <<<<<<<<<<<<<<
- * if length > pyparser._max_line_size:
- * raise LineTooLong(
- */
- }
-
- /* "aiohttp/_http_parser.pyx":651
- * return -1
- * else:
- * return 0 # <<<<<<<<<<<<<<
- *
- *
- */
- /*else:*/ {
- __pyx_r = 0;
- goto __pyx_L6_except_return;
- }
- __pyx_L3_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-
- /* "aiohttp/_http_parser.pyx":647
- * 'Status line is too long', pyparser._max_line_size, length)
- * extend(pyparser._buf, at, length)
- * except BaseException as ex: # <<<<<<<<<<<<<<
- * pyparser._last_error = ex
- * return -1
- */
- __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
- if (__pyx_t_10) {
- __Pyx_AddTraceback("aiohttp._http_parser.cb_on_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_1, &__pyx_t_11) < 0) __PYX_ERR(0, 647, __pyx_L5_except_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_ex = __pyx_t_1;
- /*try:*/ {
-
- /* "aiohttp/_http_parser.pyx":648
- * extend(pyparser._buf, at, length)
- * except BaseException as ex:
- * pyparser._last_error = ex # <<<<<<<<<<<<<<
- * return -1
- * else:
- */
- __Pyx_INCREF(__pyx_v_ex);
- __Pyx_GIVEREF(__pyx_v_ex);
- __Pyx_GOTREF(__pyx_v_pyparser->_last_error);
- __Pyx_DECREF(__pyx_v_pyparser->_last_error);
- __pyx_v_pyparser->_last_error = __pyx_v_ex;
-
- /* "aiohttp/_http_parser.pyx":649
- * except BaseException as ex:
- * pyparser._last_error = ex
- * return -1 # <<<<<<<<<<<<<<
- * else:
- * return 0
- */
- __pyx_r = -1;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L14_return;
- }
-
- /* "aiohttp/_http_parser.pyx":647
- * 'Status line is too long', pyparser._max_line_size, length)
- * extend(pyparser._buf, at, length)
- * except BaseException as ex: # <<<<<<<<<<<<<<
- * pyparser._last_error = ex
- * return -1
- */
- /*finally:*/ {
- __pyx_L14_return: {
- __pyx_t_10 = __pyx_r;
- __Pyx_DECREF(__pyx_v_ex);
- __pyx_v_ex = NULL;
- __pyx_r = __pyx_t_10;
- goto __pyx_L6_except_return;
- }
- }
- }
- goto __pyx_L5_except_error;
- __pyx_L5_except_error:;
-
- /* "aiohttp/_http_parser.pyx":642
- * cdef HttpParser pyparser = parser.data
- * cdef str reason
- * try: # <<<<<<<<<<<<<<
- * if length > pyparser._max_line_size:
- * raise LineTooLong(
- */
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
- goto __pyx_L1_error;
- __pyx_L6_except_return:;
- __Pyx_XGIVEREF(__pyx_t_2);
- __Pyx_XGIVEREF(__pyx_t_3);
- __Pyx_XGIVEREF(__pyx_t_4);
- __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
- goto __pyx_L0;
- }
-
- /* "aiohttp/_http_parser.pyx":638
- *
- *
- * cdef int cb_on_status(cparser.http_parser* parser, # <<<<<<<<<<<<<<
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data
- */
-
- /* function exit code */
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_AddTraceback("aiohttp._http_parser.cb_on_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_pyparser);
- __Pyx_XDECREF(__pyx_v_ex);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "aiohttp/_http_parser.pyx":654
- *
- *
- * cdef int cb_on_header_field(cparser.http_parser* parser, # <<<<<<<<<<<<<<
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data
- */
-
-static int __pyx_f_7aiohttp_12_http_parser_cb_on_header_field(struct http_parser *__pyx_v_parser, char const *__pyx_v_at, size_t __pyx_v_length) {
- struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *__pyx_v_pyparser = 0;
- Py_ssize_t __pyx_v_size;
- PyObject *__pyx_v_ex = NULL;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- Py_ssize_t __pyx_t_5;
- int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("cb_on_header_field", 0);
-
- /* "aiohttp/_http_parser.pyx":656
- * cdef int cb_on_header_field(cparser.http_parser* parser,
- * const char *at, size_t length) except -1:
- * cdef HttpParser pyparser = parser.data # <<<<<<<<<<<<<<
- * cdef Py_ssize_t size
- * try:
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_parser->data);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_pyparser = ((struct __pyx_obj_7aiohttp_12_http_parser_HttpParser *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "aiohttp/_http_parser.pyx":658
- * cdef HttpParser pyparser =