Merge branch 'main' into embeddedurlfix

This commit is contained in:
Ryan
2026-03-06 16:45:26 +00:00
committed by GitHub
308 changed files with 17928 additions and 6135 deletions
+4
View File
@@ -21,6 +21,7 @@ on:
options:
- masters
- staging
- falk2
- falk1
target_subdomain:
description: "Deployment Subdomain"
@@ -94,6 +95,7 @@ jobs:
env:
SERVER_HOST_MASTERS: ${{ secrets.SERVER_HOST_MASTERS }}
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }}
SERVER_HOST_STAGING: ${{ secrets.SERVER_HOST_STAGING }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
@@ -102,6 +104,7 @@ jobs:
echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa
test -n "$SERVER_HOST_MASTERS" && ssh-keyscan -H "$SERVER_HOST_MASTERS" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_FALK1" && ssh-keyscan -H "$SERVER_HOST_FALK1" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_FALK2" && ssh-keyscan -H "$SERVER_HOST_FALK2" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_STAGING" && ssh-keyscan -H "$SERVER_HOST_STAGING" >> ~/.ssh/known_hosts
chmod 600 ~/.ssh/id_rsa
- name: 🚢 Deploy
@@ -118,6 +121,7 @@ jobs:
API_KEY: ${{ secrets.API_KEY }}
SERVER_HOST_MASTERS: ${{ secrets.SERVER_HOST_MASTERS }}
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }}
SERVER_HOST_STAGING: ${{ secrets.SERVER_HOST_STAGING }}
SSH_KEY: ~/.ssh/id_rsa
VERSION_TAG: latest
+12 -12
View File
@@ -105,13 +105,13 @@ jobs:
- uses: actions/checkout@v4
- name: 🔑 Create SSH private key
env:
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
set -euxo pipefail
mkdir -p ~/.ssh
echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa
test -n "$SERVER_HOST_FALK1" && ssh-keyscan -H "$SERVER_HOST_FALK1" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_FALK2" && ssh-keyscan -H "$SERVER_HOST_FALK2" >> ~/.ssh/known_hosts
chmod 600 ~/.ssh/id_rsa
- name: 🚀 Deploy image
env:
@@ -125,11 +125,11 @@ jobs:
OTEL_AUTH_HEADER: ${{ secrets.OTEL_AUTH_HEADER }}
TURNSTILE_SECRET_KEY: ${{ secrets.TURNSTILE_SECRET_KEY }}
API_KEY: ${{ secrets.API_KEY }}
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }}
SSH_KEY: ~/.ssh/id_rsa
run: |
set -euxo pipefail
./deploy.sh prod falk1 "${IMAGE_ID}" beta
./deploy.sh prod falk2 "${IMAGE_ID}" beta
- name: ⏳ Wait for deployment to start
env:
FQDN: beta.${{ vars.DOMAIN }}
@@ -156,13 +156,13 @@ jobs:
- uses: actions/checkout@v4
- name: 🔑 Create SSH private key
env:
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
set -euxo pipefail
mkdir -p ~/.ssh
echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa
test -n "$SERVER_HOST_FALK1" && ssh-keyscan -H "$SERVER_HOST_FALK1" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_FALK2" && ssh-keyscan -H "$SERVER_HOST_FALK2" >> ~/.ssh/known_hosts
chmod 600 ~/.ssh/id_rsa
- name: 🚀 Deploy image
env:
@@ -176,11 +176,11 @@ jobs:
OTEL_AUTH_HEADER: ${{ secrets.OTEL_AUTH_HEADER }}
TURNSTILE_SECRET_KEY: ${{ secrets.TURNSTILE_SECRET_KEY }}
API_KEY: ${{ secrets.API_KEY }}
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }}
SSH_KEY: ~/.ssh/id_rsa
run: |
set -euxo pipefail
./deploy.sh prod falk1 "${IMAGE_ID}" blue
./deploy.sh prod falk2 "${IMAGE_ID}" blue
- name: ⏳ Wait for deployment to start
env:
FQDN: blue.${{ vars.DOMAIN }}
@@ -207,13 +207,13 @@ jobs:
- uses: actions/checkout@v4
- name: 🔑 Create SSH private key
env:
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
set -euxo pipefail
mkdir -p ~/.ssh
echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa
test -n "$SERVER_HOST_FALK1" && ssh-keyscan -H "$SERVER_HOST_FALK1" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_FALK2" && ssh-keyscan -H "$SERVER_HOST_FALK2" >> ~/.ssh/known_hosts
chmod 600 ~/.ssh/id_rsa
- name: 🚀 Deploy image
env:
@@ -227,11 +227,11 @@ jobs:
OTEL_AUTH_HEADER: ${{ secrets.OTEL_AUTH_HEADER }}
TURNSTILE_SECRET_KEY: ${{ secrets.TURNSTILE_SECRET_KEY }}
API_KEY: ${{ secrets.API_KEY }}
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }}
SSH_KEY: ~/.ssh/id_rsa
run: |
set -euxo pipefail
./deploy.sh prod falk1 "${IMAGE_ID}" green
./deploy.sh prod falk2 "${IMAGE_ID}" green
- name: ⏳ Wait for deployment to start
env:
FQDN: green.${{ vars.DOMAIN }}
+5
View File
@@ -13,3 +13,8 @@ CLAUDE.md
.idea/
# this is autogenerated by script
src/assets/
# Debug / Log Outputs
*.log
*debug*.txt
eslint_out.txt
+3 -1
View File
@@ -1,3 +1,5 @@
{
"html.validate.scripts": false
"html.validate.scripts": false,
"tailwindCSS.lint.suggestCanonicalClasses": "ignore",
"lit-plugin.rules.suggestCanonicalClasses": "off"
}
+15
View File
@@ -44,6 +44,21 @@ Licensed under [Open Data Commons Open Database License (ODbL)](https://opendata
Copernicus Global Digital Elevation Models distributed by OpenTopography.
Copyright © opentopography.org. All Rights Reserved. [Terms of Use](https://opentopography.org/usageterms)
### Hawaii Relief Map
[USA Hawaii relief location map](https://commons.wikimedia.org/wiki/File:USA_Hawaii_relief_location_map.svg) by NordNordWest
Licensed under [CC BY-SA 3.0 DE](https://creativecommons.org/licenses/by-sa/3.0/de/deed.en)
### Nile Delta Map
[Niledelta 33](https://commons.wikimedia.org/wiki/File:Niledelta_33.svg) by John187
Licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
### Arctic Map
[Arctic SDI](https://catalogue.arctic-sdi.org/geonetwork/srv/spa/catalog.search#/metadata/8b4f2b34-2d0d-4744-ae0f-d7989b9f7a02)
Licensed under [CC0 1.0.](https://creativecommons.org/publicdomain/zero/1.0/legalcode.en)
## Icons
### [The Noun Project](https://thenounproject.com/)
+6 -6
View File
@@ -15,34 +15,34 @@ print_header "BUILD AND DEPLOY WRAPPER"
echo "This script will run build.sh and deploy.sh in sequence."
echo "You can also run them separately:"
echo " ./build.sh [prod|staging] [version_tag]"
echo " ./deploy.sh [prod|staging] [falk1|nbg1|staging|masters] [version_tag] [subdomain]"
echo " ./deploy.sh [prod|staging] [falk1|falk2|nbg1|staging|masters] [version_tag] [subdomain]"
echo ""
# Check command line arguments
if [ $# -lt 3 ] || [ $# -gt 5 ]; then
echo "Error: Please specify environment, host, and subdomain"
echo "Usage: $0 [prod|staging] [falk1|nbg1|staging|masters] [subdomain]"
echo "Usage: $0 [prod|staging] [falk1|falk2|nbg1|staging|masters] [subdomain]"
exit 1
fi
# Validate first argument (environment)
if [ "$1" != "prod" ] && [ "$1" != "staging" ]; then
echo "Error: First argument must be either 'prod' or 'staging'"
echo "Usage: $0 [prod|staging] [falk1|nbg1|staging|masters] [subdomain]"
echo "Usage: $0 [prod|staging] [falk1|falk2|nbg1|staging|masters] [subdomain]"
exit 1
fi
# Validate second argument (host)
if [ "$2" != "falk1" ] && [ "$2" != "nbg1" ] && [ "$2" != "staging" ] && [ "$2" != "masters" ]; then
if [ "$2" != "falk1" ] && [ "$2" != "falk2" ] && [ "$2" != "nbg1" ] && [ "$2" != "staging" ] && [ "$2" != "masters" ]; then
echo "Error: Second argument must be either 'falk1', 'nbg1', 'staging', or 'masters'"
echo "Usage: $0 [prod|staging] [falk1|nbg1|staging|masters] [subdomain]"
echo "Usage: $0 [prod|staging] [falk1|falk2|nbg1|staging|masters] [subdomain]"
exit 1
fi
# Validate third argument (subdomain)
if [ -z "$3" ]; then
echo "Error: Subdomain is required"
echo "Usage: $0 [prod|staging] [falk1|nbg1|staging|masters] [subdomain]"
echo "Usage: $0 [prod|staging] [falk1|falk2|nbg1|staging|masters] [subdomain]"
exit 1
fi
+6 -3
View File
@@ -28,9 +28,9 @@ if [ "$1" != "prod" ] && [ "$1" != "staging" ]; then
fi
# Validate second argument (host)
if [ "$2" != "falk1" ] && [ "$2" != "nbg1" ] && [ "$2" != "staging" ] && [ "$2" != "masters" ]; then
echo "Error: Second argument must be either 'falk1', 'nbg1', 'staging', or 'masters'"
echo "Usage: $0 [prod|staging] [falk1|nbg1|staging|masters] [version_tag] [subdomain]"
if [ "$2" != "falk1" ] && [ "$2" != "falk2" ] && [ "$2" != "nbg1" ] && [ "$2" != "staging" ] && [ "$2" != "masters" ]; then
echo "Error: Second argument must be either 'falk1', 'falk2', 'nbg1', 'staging', or 'masters'"
echo "Usage: $0 [prod|staging] [falk1|falk2|nbg1|staging|masters] [version_tag] [subdomain]"
exit 1
fi
@@ -75,6 +75,9 @@ elif [ "$HOST" == "nbg1" ]; then
elif [ "$HOST" == "masters" ]; then
print_header "DEPLOYING TO MASTERS HOST"
SERVER_HOST=$SERVER_HOST_MASTERS
elif [ "$HOST" == "falk2" ]; then
print_header "DEPLOYING TO FALK2 HOST"
SERVER_HOST=$SERVER_HOST_FALK2
else
print_header "DEPLOYING TO FALK1 HOST"
SERVER_HOST=$SERVER_HOST_FALK1
+62 -28
View File
@@ -8,7 +8,7 @@
/>
<title data-i18n="main.title">OpenFront (ALPHA)</title>
<link rel="manifest" href="/manifest.json" />
<link rel="icon" type="image/x-icon" href="/images/Favicon.svg" />
<link rel="icon" type="image/svg+xml" href="/images/Favicon.svg" />
<!-- Preload styles -->
<style>
@@ -122,12 +122,29 @@
<body
class="h-full select-none font-sans min-h-screen bg-cover bg-center bg-fixed transition-opacity duration-300 ease-in-out flex flex-row overflow-hidden"
>
<div
class="fixed inset-0 w-full h-full -z-50 bg-cover bg-center bg-fixed pointer-events-none brightness-[0.5]"
style="
background-image: url(&quot;/images/EuropeBackgroundBlurred.webp&quot;);
"
></div>
<div id="hex-grid" class="fixed inset-0 -z-50 pointer-events-none">
<div
id="background-layer"
class="absolute inset-0 bg-cover bg-center opacity-60 [filter:brightness(0.5)_saturate(1.4)] dark:[filter:sepia(0.2)_saturate(1.2)_hue-rotate(180deg)_brightness(0.4)]"
style="
background-image: url(&quot;/resources/images/background.webp&quot;);
"
></div>
<div
class="absolute inset-0 bg-center bg-no-repeat bg-contain hidden lg:block"
style="
background-image: url(&quot;/resources/images/OpenFront.webp&quot;);
opacity: 0.25;
"
></div>
<div
class="absolute inset-0 bg-center bg-no-repeat bg-contain lg:hidden"
style="
background-image: url(&quot;/resources/images/OF.webp&quot;);
opacity: 0.25;
"
></div>
</div>
<!-- LEFT SIDEBAR MENU -->
@@ -140,10 +157,9 @@
<mobile-nav-bar
id="sidebar-menu"
class="peer in-[.in-game]:hidden z-40001 fixed left-0 top-0 h-full flex flex-col justify-start overflow-visible bg-black/60 backdrop-blur-md transition-transform duration-500 ease-out transform -translate-x-full w-[80%] [&.open]:translate-x-0 lg:hidden"
class="peer [.in-game_&]:hidden z-[40001] fixed left-0 top-0 h-full flex flex-col justify-start overflow-visible bg-black/70 backdrop-blur-xl border-r border-white/10 transition-transform duration-500 ease-out transform -translate-x-full w-[70%] [&.open]:translate-x-0 lg:hidden"
role="dialog"
data-i18n-aria-label="main.menu"
aria-hidden="true"
></mobile-nav-bar>
<!-- MAIN CONTENT AREA -->
@@ -163,68 +179,77 @@
<!-- Main container with responsive padding -->
<main-layout class="contents">
<play-page class="contents"></play-page>
<matchmaking-modal
id="page-matchmaking"
inline
class="hidden w-full h-full page-content relative z-50"
></matchmaking-modal>
<news-modal
id="page-news"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></news-modal>
<single-player-modal
id="page-single-player"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></single-player-modal>
<host-lobby-modal
id="page-host-lobby"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></host-lobby-modal>
<join-lobby-modal
id="page-join-lobby"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></join-lobby-modal>
<territory-patterns-modal
id="page-item-store"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></territory-patterns-modal>
<user-setting
id="page-settings"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></user-setting>
<leaderboard-modal
id="page-leaderboard"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></leaderboard-modal>
<troubleshooting-modal
id="page-troubleshooting"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></troubleshooting-modal>
<account-modal
id="page-account"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></account-modal>
<help-modal
id="page-help"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></help-modal>
<language-modal
id="page-language"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></language-modal>
<flag-input-modal
id="flag-input-modal"
inline
class="hidden w-full h-full page-content"
class="hidden w-full h-full page-content relative z-50"
></flag-input-modal>
<ranked-modal
id="page-ranked"
inline
class="hidden w-full h-full page-content relative z-50"
></ranked-modal>
</main-layout>
<!-- Desktop Footer -->
@@ -242,14 +267,21 @@
<div
class="fixed left-0 bottom-0 min-[1200px]:left-4 min-[1200px]:bottom-4 w-full flex flex-col sm:flex-row sm:items-end z-50 pointer-events-none"
>
<div class="order-2 sm:order-none w-full sm:w-1/2 min-[1200px]:w-auto">
<control-panel></control-panel>
<div
class="contents sm:flex sm:flex-col sm:w-1/2 min-[1200px]:w-auto lg:max-w-[400px]"
>
<attacks-display class="order-2 sm:order-none w-full"></attacks-display>
<control-panel class="order-4 sm:order-none w-full"></control-panel>
</div>
<div
class="order-1 sm:order-none w-full sm:w-1/2 min-[1200px]:w-auto min-[1200px]:fixed min-[1200px]:right-0 min-[1200px]:bottom-0 flex flex-col sm:items-end pointer-events-none"
class="contents sm:flex sm:flex-col sm:flex-1 min-[1200px]:w-auto min-[1200px]:fixed min-[1200px]:right-0 min-[1200px]:bottom-0 sm:items-end pointer-events-none"
>
<chat-display></chat-display>
<events-display></events-display>
<chat-display
class="order-1 sm:order-none w-full sm:w-auto"
></chat-display>
<events-display
class="order-3 sm:order-none w-full sm:w-auto"
></events-display>
</div>
</div>
@@ -259,7 +291,9 @@
<win-modal></win-modal>
<game-starting-modal></game-starting-modal>
<unit-display></unit-display>
<div class="flex flex-col items-end fixed top-4 right-4 z-1000 gap-2">
<div
class="flex flex-col items-end fixed top-0 right-0 min-[1200px]:top-4 min-[1200px]:right-4 z-1000 gap-2"
>
<game-right-sidebar></game-right-sidebar>
<replay-panel></replay-panel>
</div>
Binary file not shown.

After

Width:  |  Height:  |  Size: 730 KiB

+45
View File
@@ -0,0 +1,45 @@
{
"name": "Alps",
"nations": [
{
"coordinates": [740, 620],
"name": "Savoy",
"flag": "fr"
},
{
"coordinates": [980, 580],
"name": "Switzerland",
"flag": "ch"
},
{
"coordinates": [1220, 560],
"name": "Tyrol",
"flag": "at"
},
{
"coordinates": [980, 820],
"name": "Lombardy",
"flag": "it"
},
{
"coordinates": [1180, 820],
"name": "Veneto",
"flag": "venice"
},
{
"coordinates": [1320, 690],
"name": "Bavaria",
"flag": "de"
},
{
"coordinates": [1450, 820],
"name": "Slovenia",
"flag": "si"
},
{
"coordinates": [1100, 650],
"name": "Liechtenstein",
"flag": "li"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 719 KiB

+225
View File
@@ -0,0 +1,225 @@
{
"name": "Arctic",
"nations": [
{
"coordinates": [622, 1171],
"name": "Greenland",
"flag": "gl"
},
{
"coordinates": [632, 1438],
"name": "Iceland",
"flag": "is"
},
{
"coordinates": [90, 1046],
"name": "Quebec",
"flag": "Quebec"
},
{
"coordinates": [747, 336],
"name": "Alaska",
"flag": "Alaska"
},
{
"coordinates": [485, 927],
"name": "Nunavut",
"flag": "ca"
},
{
"coordinates": [432, 550],
"name": "Northwest Territories",
"flag": "ca"
},
{
"coordinates": [608, 447],
"name": "Yukon",
"flag": "ca"
},
{
"coordinates": [344, 320],
"name": "British Columbia",
"flag": "ca"
},
{
"coordinates": [64, 601],
"name": "Manitoba",
"flag": "ca"
},
{
"coordinates": [247, 571],
"name": "Saskatchewan",
"flag": "ca"
},
{
"coordinates": [136, 401],
"name": "Alberta",
"flag": "ca"
},
{
"coordinates": [67, 795],
"name": "Ontario",
"flag": "ca"
},
{
"coordinates": [49, 1313],
"name": "Newfoundland and Labrador",
"flag": "ca"
},
{
"coordinates": [74, 226],
"name": "United States of America",
"flag": "us"
},
{
"coordinates": [1457, 1381],
"name": "Soviet Union",
"flag": "Communist flag"
},
{
"coordinates": [1683, 1414],
"name": "Kazakh SSR",
"flag": "Communist flag"
},
{
"coordinates": [1709, 1603],
"name": "Uzbek SSR",
"flag": "Communist flag"
},
{
"coordinates": [1784, 1744],
"name": "Turkmen SSR",
"flag": "Communist flag"
},
{
"coordinates": [1803, 1265],
"name": "Kirghiz SSR",
"flag": "Communist flag"
},
{
"coordinates": [745, 1736],
"name": "United Kingdom",
"flag": "gb"
},
{
"coordinates": [893, 1773],
"name": "West Germany",
"flag": "west_germany"
},
{
"coordinates": [987, 1792],
"name": "East Germany",
"flag": "east_germany"
},
{
"coordinates": [1333, 1774],
"name": "Ukrainian SSR",
"flag": "Communist flag"
},
{
"coordinates": [1194, 1814],
"name": "Moldovan SSR",
"flag": "Communist flag"
},
{
"coordinates": [1197, 1626],
"name": "Belorussian SSR",
"flag": "Communist flag"
},
{
"coordinates": [1091, 1744],
"name": "Poland",
"flag": "pl"
},
{
"coordinates": [1805, 1486],
"name": "Tajik SSR",
"flag": "Communist flag"
},
{
"coordinates": [1442, 1807],
"name": "Georgian SSR",
"flag": "Communist flag"
},
{
"coordinates": [1573, 1790],
"name": "Azerbaijan SSR",
"flag": "Communist flag"
},
{
"coordinates": [1089, 1519],
"name": "Finland",
"flag": "fi"
},
{
"coordinates": [987, 1538],
"name": "Sweden",
"flag": "se"
},
{
"coordinates": [889, 1587],
"name": "Norway",
"flag": "no"
},
{
"coordinates": [1793, 156],
"name": "Japan",
"flag": "jp"
},
{
"coordinates": [1776, 517],
"name": "China",
"flag": "cn"
},
{
"coordinates": [1792, 774],
"name": "Mongolia",
"flag": "mn"
},
{
"coordinates": [1773, 961],
"name": "Tannu Tuva",
"flag": "Communist flag"
},
{
"coordinates": [1142, 382],
"name": "Far East",
"flag": "Communist flag"
},
{
"coordinates": [1410, 625],
"name": "Yakut ASSR",
"flag": "Communist flag"
},
{
"coordinates": [1817, 364],
"name": "North Korea",
"flag": "kp"
},
{
"coordinates": [1664, 689],
"name": "Buryat ASSR",
"flag": "Communist flag"
},
{
"coordinates": [1440, 1170],
"name": "Komi ASSR",
"flag": "Communist flag"
},
{
"coordinates": [1383, 875],
"name": "Siberia",
"flag": "Siberia"
},
{
"coordinates": [950, 1174],
"name": "Svalbard",
"flag": "sj"
},
{
"coordinates": [789, 1823],
"name": "France",
"flag": "fr"
}
]
}
@@ -1,4 +1,10 @@
{
"name": "Baikal (Nuke Wars)",
"nations": []
"nations": [],
"teamGameSpawnAreas": {
"2": [
{ "x": 0, "y": 0, "width": 1330, "height": 1564 },
{ "x": 1430, "y": 0, "width": 1070, "height": 1564 }
]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 525 KiB

@@ -0,0 +1,15 @@
{
"name": "BeringStrait",
"nations": [
{
"coordinates": [1297, 287],
"name": "Alaska",
"flag": "us"
},
{
"coordinates": [186, 427],
"name": "Russia",
"flag": "ru"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

@@ -0,0 +1,65 @@
{
"name": "Bosphorus Straits",
"nations": [
{
"coordinates": [520, 300],
"name": "Istanbul",
"flag": "tr"
},
{
"coordinates": [360, 280],
"name": "Thrace",
"flag": "tr"
},
{
"coordinates": [220, 260],
"name": "Edirne",
"flag": "tr"
},
{
"coordinates": [650, 360],
"name": "Bursa",
"flag": "tr"
},
{
"coordinates": [690, 290],
"name": "Izmit",
"flag": "tr"
},
{
"coordinates": [430, 430],
"name": "Canakkale",
"flag": "tr"
},
{
"coordinates": [320, 330],
"name": "Tekirdag",
"flag": "tr"
},
{
"coordinates": [610, 320],
"name": "Yalova",
"flag": "tr"
},
{
"coordinates": [720, 260],
"name": "Kocaeli",
"flag": "tr"
},
{
"coordinates": [160, 120],
"name": "Varna",
"flag": "bg"
},
{
"coordinates": [220, 150],
"name": "Burgas",
"flag": "bg"
},
{
"coordinates": [820, 470],
"name": "Aegean Isles",
"flag": "gr"
}
]
}
@@ -21,5 +21,17 @@
"flag": "",
"name": "Myrkwind"
}
]
],
"teamGameSpawnAreas": {
"2": [
{ "x": 0, "y": 0, "width": 750, "height": 1500 },
{ "x": 750, "y": 0, "width": 750, "height": 1500 }
],
"4": [
{ "x": 0, "y": 0, "width": 750, "height": 750 },
{ "x": 750, "y": 0, "width": 750, "height": 750 },
{ "x": 0, "y": 750, "width": 750, "height": 750 },
{ "x": 750, "y": 750, "width": 750, "height": 750 }
]
}
}
@@ -58,7 +58,7 @@
},
{
"coordinates": [1609, 1837],
"name": "Algeria'",
"name": "Algeria",
"flag": "dz"
},
{
Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

@@ -0,0 +1,50 @@
{
"name": "Hawaii",
"nations": [
{
"coordinates": [283, 281],
"name": "Niihau",
"flag": "us"
},
{
"coordinates": [613, 189],
"name": "Kauai",
"flag": "us"
},
{
"coordinates": [1424, 525],
"name": "Oahu",
"flag": "us"
},
{
"coordinates": [1930, 708],
"name": "Molokai",
"flag": "us"
},
{
"coordinates": [1977, 874],
"name": "Lanai",
"flag": "us"
},
{
"coordinates": [2145, 1036],
"name": "Kahoolawe",
"flag": "us"
},
{
"coordinates": [2287, 900],
"name": "Maui",
"flag": "us"
},
{
"coordinates": [2550, 1550],
"name": "Kona",
"flag": "us"
},
{
"coordinates": [2900, 1500],
"name": "Hilo",
"flag": "us"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

@@ -0,0 +1,60 @@
{
"name": "Nile Delta",
"nations": [
{
"coordinates": [305, 414],
"name": "Alexandria",
"flag": "eg"
},
{
"coordinates": [1146, 303],
"name": "Damietta",
"flag": "eg"
},
{
"coordinates": [1100, 348],
"name": "Faraskur",
"flag": "eg"
},
{
"coordinates": [1050, 423],
"name": "Sheremsah",
"flag": "eg"
},
{
"coordinates": [954, 492],
"name": "El Senbellawein",
"flag": "eg"
},
{
"coordinates": [920, 963],
"name": "Aga",
"flag": "eg"
},
{
"coordinates": [915, 547],
"name": "Mit Ghamr",
"flag": "eg"
},
{
"coordinates": [888, 1012],
"name": "Cairo",
"flag": "eg"
},
{
"coordinates": [895, 1108],
"name": "Heliopolis",
"flag": "eg"
},
{
"coordinates": [895, 663],
"name": "Memphis",
"flag": "eg"
},
{
"coordinates": [993, 579],
"name": "El Mansoura",
"flag": "eg"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 520 KiB

@@ -0,0 +1,69 @@
{
"name": "Passage",
"nations": [
{
"coordinates": [256, 80],
"name": "Weston"
},
{
"coordinates": [1028, 286],
"name": "Ellach"
},
{
"coordinates": [1437, 149],
"name": "Prina"
},
{
"coordinates": [1652, 141],
"name": "Aros"
},
{
"coordinates": [1867, 270],
"name": "Elos"
},
{
"coordinates": [2138, 127],
"name": "Eban"
},
{
"coordinates": [2383, 182],
"name": "Kene"
},
{
"coordinates": [640, 136],
"name": "Sore"
},
{
"coordinates": [2789, 152],
"name": "Deno"
},
{
"coordinates": [3267, 275],
"name": "Calphe"
},
{
"coordinates": [3653, 147],
"name": "Modwyn"
},
{
"coordinates": [3888, 270],
"name": "Echur"
},
{
"coordinates": [4579, 142],
"name": "Eris"
},
{
"coordinates": [5408, 228],
"name": "Tuage"
},
{
"coordinates": [5475, 115],
"name": "Vola"
},
{
"coordinates": [5906, 364],
"name": "Eastos"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

@@ -0,0 +1,70 @@
{
"name": "Traders Dream",
"nations": [
{
"coordinates": [1010, 120],
"flag": "",
"name": "Fort Profit"
},
{
"coordinates": [900, 400],
"flag": "",
"name": "Taxhaven"
},
{
"coordinates": [1350, 370],
"flag": "",
"name": "Markup Mesa"
},
{
"coordinates": [1100, 1290],
"flag": "",
"name": "Ledgerland"
},
{
"coordinates": [850, 1550],
"flag": "",
"name": "Isle of Margins"
},
{
"coordinates": [1350, 1550],
"flag": "",
"name": "Port Folio"
},
{
"coordinates": [430, 810],
"flag": "",
"name": "Barter Bluffs"
},
{
"coordinates": [1770, 810],
"flag": "",
"name": "Dividend Shores"
},
{
"coordinates": [1210, 660],
"flag": "",
"name": "Market Peaks"
},
{
"coordinates": [1150, 1830],
"flag": "",
"name": "Cape Commerce"
},
{
"coordinates": [1890, 1390],
"flag": "",
"name": "Anchorspire"
},
{
"coordinates": [310, 1420],
"flag": "",
"name": "Inflation Island"
},
{
"coordinates": [1870, 400],
"flag": "",
"name": "Harborwick"
}
]
}
+9 -1
View File
@@ -25,10 +25,13 @@ var maps = []struct {
{Name: "asia"},
{Name: "australia"},
{Name: "achiran"},
{Name: "alps"},
{Name: "baikal"},
{Name: "baikalnukewars"},
{Name: "betweentwoseas"},
{Name: "beringstrait"},
{Name: "blacksea"},
{Name: "bosphorusstraits"},
{Name: "britannia"},
{Name: "britanniaclassic"},
{Name: "deglaciatedantarctica"},
@@ -54,6 +57,7 @@ var maps = []struct {
{Name: "northamerica"},
{Name: "oceania"},
{Name: "pangaea"},
{Name: "passage"},
{Name: "pluto"},
{Name: "sierpinski"},
{Name: "southamerica"},
@@ -63,11 +67,15 @@ var maps = []struct {
{Name: "world"},
{Name: "lemnos"},
{Name: "twolakes"},
{Name: "thebox"},
{Name: "thebox"},
{Name: "didier"},
{Name: "didierfrance"},
{Name: "amazonriver"},
{Name: "yenisei"},
{Name: "tradersdream"},
{Name: "hawaii"},
{Name: "niledelta"},
{Name: "arctic"},
{Name: "big_plains", IsTest: true},
{Name: "half_land_half_ocean", IsTest: true},
{Name: "ocean_and_land", IsTest: true},
+20 -1
View File
@@ -120,6 +120,25 @@ server {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# /api/health endpoint - No caching, always hit the backend
location = /api/health {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
# Cache configuration - No caching for health checks
proxy_cache off;
add_header X-Cache-Status "BYPASS";
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
# Standard proxy headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# /commit.txt endpoint - Cache for 5 seconds
location = /commit.txt {
@@ -250,4 +269,4 @@ server {
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
+238 -169
View File
@@ -100,7 +100,8 @@
"vite-plugin-html": "^3.2.2",
"vite-plugin-static-copy": "^3.1.4",
"vite-tsconfig-paths": "^6.0.3",
"vitest": "^4.0.16"
"vitest": "^4.0.16",
"vitest-canvas-mock": "^1.1.3"
}
},
"node_modules/@acemir/cssom": {
@@ -1021,13 +1022,13 @@
}
},
"node_modules/@aws-sdk/xml-builder": {
"version": "3.972.4",
"resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.4.tgz",
"integrity": "sha512-0zJ05ANfYqI6+rGqj8samZBFod0dPPousBjLEqg8WdxSgbMAkRgLyn81lP215Do0rFJ/17LIXwr7q0yK24mP6Q==",
"version": "3.972.9",
"resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.9.tgz",
"integrity": "sha512-ItnlMgSqkPrUfJs7EsvU/01zw5UeIb2tNPhD09LBLHbg+g+HDiKibSLwpkuz/ZIlz4F2IMn+5XgE4AK/pfPuog==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.12.0",
"fast-xml-parser": "5.3.4",
"@smithy/types": "^4.13.0",
"fast-xml-parser": "5.4.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -1232,7 +1233,6 @@
}
],
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
@@ -1276,7 +1276,6 @@
}
],
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
}
@@ -2046,29 +2045,6 @@
"url": "https://github.com/sponsors/nzakas"
}
},
"node_modules/@isaacs/balanced-match": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
"integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/@isaacs/brace-expansion": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz",
"integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@isaacs/balanced-match": "^4.0.1"
},
"engines": {
"node": "20 || >=22"
}
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
@@ -2210,7 +2186,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
"integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
"license": "Apache-2.0",
"peer": true,
"engines": {
"node": ">=8.0.0"
}
@@ -2694,9 +2669,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz",
"integrity": "sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz",
"integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==",
"cpu": [
"arm"
],
@@ -2708,9 +2683,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz",
"integrity": "sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz",
"integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==",
"cpu": [
"arm64"
],
@@ -2722,9 +2697,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz",
"integrity": "sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz",
"integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==",
"cpu": [
"arm64"
],
@@ -2736,9 +2711,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz",
"integrity": "sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz",
"integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==",
"cpu": [
"x64"
],
@@ -2750,9 +2725,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz",
"integrity": "sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz",
"integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==",
"cpu": [
"arm64"
],
@@ -2764,9 +2739,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz",
"integrity": "sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz",
"integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==",
"cpu": [
"x64"
],
@@ -2778,9 +2753,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz",
"integrity": "sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz",
"integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==",
"cpu": [
"arm"
],
@@ -2792,9 +2767,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz",
"integrity": "sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz",
"integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==",
"cpu": [
"arm"
],
@@ -2806,9 +2781,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz",
"integrity": "sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz",
"integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==",
"cpu": [
"arm64"
],
@@ -2820,9 +2795,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz",
"integrity": "sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz",
"integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==",
"cpu": [
"arm64"
],
@@ -2834,9 +2809,23 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz",
"integrity": "sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz",
"integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-loong64-musl": {
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz",
"integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==",
"cpu": [
"loong64"
],
@@ -2848,9 +2837,23 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz",
"integrity": "sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz",
"integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-ppc64-musl": {
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz",
"integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==",
"cpu": [
"ppc64"
],
@@ -2862,9 +2865,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz",
"integrity": "sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz",
"integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==",
"cpu": [
"riscv64"
],
@@ -2876,9 +2879,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz",
"integrity": "sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz",
"integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==",
"cpu": [
"riscv64"
],
@@ -2890,9 +2893,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz",
"integrity": "sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz",
"integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==",
"cpu": [
"s390x"
],
@@ -2904,9 +2907,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz",
"integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz",
"integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==",
"cpu": [
"x64"
],
@@ -2918,9 +2921,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz",
"integrity": "sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz",
"integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==",
"cpu": [
"x64"
],
@@ -2931,10 +2934,24 @@
"linux"
]
},
"node_modules/@rollup/rollup-openbsd-x64": {
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz",
"integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
]
},
"node_modules/@rollup/rollup-openharmony-arm64": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz",
"integrity": "sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz",
"integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==",
"cpu": [
"arm64"
],
@@ -2946,9 +2963,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz",
"integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz",
"integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==",
"cpu": [
"arm64"
],
@@ -2960,9 +2977,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz",
"integrity": "sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz",
"integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==",
"cpu": [
"ia32"
],
@@ -2974,9 +2991,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz",
"integrity": "sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz",
"integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==",
"cpu": [
"x64"
],
@@ -2988,9 +3005,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz",
"integrity": "sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz",
"integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==",
"cpu": [
"x64"
],
@@ -3530,9 +3547,9 @@
}
},
"node_modules/@smithy/types": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz",
"integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==",
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.0.tgz",
"integrity": "sha512-COuLsZILbbQsdrwKQpkkpyep7lCsByxwj7m0Mg5v66/ZTyenlfBc40/QFQ5chO0YN/PNEH1Bi3fGtfXPnYNeDw==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
@@ -4604,7 +4621,6 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.32.tgz",
"integrity": "sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==",
"license": "MIT",
"peer": true,
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -4770,7 +4786,6 @@
"integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.34.1",
"@typescript-eslint/types": "8.34.1",
@@ -4915,13 +4930,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"version": "9.0.9",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
"brace-expansion": "^2.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
@@ -5250,7 +5265,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -5650,7 +5664,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001718",
"electron-to-chromium": "^1.5.160",
@@ -5804,7 +5817,6 @@
"integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"assertion-error": "^2.0.1",
"check-error": "^2.1.1",
@@ -6369,6 +6381,13 @@
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/cssfontparser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz",
"integrity": "sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==",
"dev": true,
"license": "MIT"
},
"node_modules/cssstyle": {
"version": "5.3.5",
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.5.tgz",
@@ -6726,7 +6745,6 @@
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"dev": true,
"license": "ISC",
"peer": true,
"engines": {
"node": ">=12"
}
@@ -7296,7 +7314,6 @@
"integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -7737,10 +7754,22 @@
"dev": true,
"license": "MIT"
},
"node_modules/fast-xml-builder": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz",
"integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT"
},
"node_modules/fast-xml-parser": {
"version": "5.3.4",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.4.tgz",
"integrity": "sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==",
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz",
"integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==",
"funding": [
{
"type": "github",
@@ -7749,7 +7778,8 @@
],
"license": "MIT",
"dependencies": {
"strnum": "^2.1.0"
"fast-xml-builder": "^1.0.0",
"strnum": "^2.1.2"
},
"bin": {
"fxparser": "src/cli/cli.js"
@@ -7807,9 +7837,9 @@
}
},
"node_modules/filelist/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"version": "5.1.9",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
"integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
@@ -8088,17 +8118,40 @@
"node": ">=10.13.0"
}
},
"node_modules/glob/node_modules/balanced-match": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "18 || 20 || >=22"
}
},
"node_modules/glob/node_modules/brace-expansion": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz",
"integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^4.0.2"
},
"engines": {
"node": "18 || 20 || >=22"
}
},
"node_modules/glob/node_modules/minimatch": {
"version": "10.1.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
"integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
"version": "10.2.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
"integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/brace-expansion": "^5.0.0"
"brace-expansion": "^5.0.2"
},
"engines": {
"node": "20 || >=22"
"node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -8627,7 +8680,6 @@
"integrity": "sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@acemir/cssom": "^0.9.28",
"@asamuzakjp/dom-selector": "^6.7.6",
@@ -9669,9 +9721,9 @@
}
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -9719,6 +9771,16 @@
"dev": true,
"license": "MIT"
},
"node_modules/moo-color": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.3.tgz",
"integrity": "sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-name": "^1.1.4"
}
},
"node_modules/mrmime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
@@ -10223,7 +10285,6 @@
"integrity": "sha512-dyuThzncsgEgJZnvd/A/5x6IkUERbK+phXqUQrI+0C6WE+8xqGH5VChRTLecemhgZF0kQ+gZOM3tJTX9937xpg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@pixi/colord": "^2.9.6",
"@types/css-font-loading-module": "^0.0.12",
@@ -10268,7 +10329,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -10371,7 +10431,6 @@
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -10488,9 +10547,9 @@
}
},
"node_modules/qs": {
"version": "6.14.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
"integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
"version": "6.14.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
"integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
@@ -10742,9 +10801,9 @@
"license": "Unlicense"
},
"node_modules/rollup": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz",
"integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==",
"version": "4.59.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz",
"integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10758,28 +10817,31 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.54.0",
"@rollup/rollup-android-arm64": "4.54.0",
"@rollup/rollup-darwin-arm64": "4.54.0",
"@rollup/rollup-darwin-x64": "4.54.0",
"@rollup/rollup-freebsd-arm64": "4.54.0",
"@rollup/rollup-freebsd-x64": "4.54.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.54.0",
"@rollup/rollup-linux-arm-musleabihf": "4.54.0",
"@rollup/rollup-linux-arm64-gnu": "4.54.0",
"@rollup/rollup-linux-arm64-musl": "4.54.0",
"@rollup/rollup-linux-loong64-gnu": "4.54.0",
"@rollup/rollup-linux-ppc64-gnu": "4.54.0",
"@rollup/rollup-linux-riscv64-gnu": "4.54.0",
"@rollup/rollup-linux-riscv64-musl": "4.54.0",
"@rollup/rollup-linux-s390x-gnu": "4.54.0",
"@rollup/rollup-linux-x64-gnu": "4.54.0",
"@rollup/rollup-linux-x64-musl": "4.54.0",
"@rollup/rollup-openharmony-arm64": "4.54.0",
"@rollup/rollup-win32-arm64-msvc": "4.54.0",
"@rollup/rollup-win32-ia32-msvc": "4.54.0",
"@rollup/rollup-win32-x64-gnu": "4.54.0",
"@rollup/rollup-win32-x64-msvc": "4.54.0",
"@rollup/rollup-android-arm-eabi": "4.59.0",
"@rollup/rollup-android-arm64": "4.59.0",
"@rollup/rollup-darwin-arm64": "4.59.0",
"@rollup/rollup-darwin-x64": "4.59.0",
"@rollup/rollup-freebsd-arm64": "4.59.0",
"@rollup/rollup-freebsd-x64": "4.59.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.59.0",
"@rollup/rollup-linux-arm-musleabihf": "4.59.0",
"@rollup/rollup-linux-arm64-gnu": "4.59.0",
"@rollup/rollup-linux-arm64-musl": "4.59.0",
"@rollup/rollup-linux-loong64-gnu": "4.59.0",
"@rollup/rollup-linux-loong64-musl": "4.59.0",
"@rollup/rollup-linux-ppc64-gnu": "4.59.0",
"@rollup/rollup-linux-ppc64-musl": "4.59.0",
"@rollup/rollup-linux-riscv64-gnu": "4.59.0",
"@rollup/rollup-linux-riscv64-musl": "4.59.0",
"@rollup/rollup-linux-s390x-gnu": "4.59.0",
"@rollup/rollup-linux-x64-gnu": "4.59.0",
"@rollup/rollup-linux-x64-musl": "4.59.0",
"@rollup/rollup-openbsd-x64": "4.59.0",
"@rollup/rollup-openharmony-arm64": "4.59.0",
"@rollup/rollup-win32-arm64-msvc": "4.59.0",
"@rollup/rollup-win32-ia32-msvc": "4.59.0",
"@rollup/rollup-win32-x64-gnu": "4.59.0",
"@rollup/rollup-win32-x64-msvc": "4.59.0",
"fsevents": "~2.3.2"
}
},
@@ -11194,7 +11256,6 @@
"integrity": "sha512-Z0NVCW45W8Mg5oC/27/+fCqIHFnW8kpkFOq0j9XJIev4Ld0mKmERaZv5DMLAb9fGCevjKwaEeIQz5+MBXfZcDw==",
"dev": true,
"license": "BSD-3-Clause",
"peer": true,
"dependencies": {
"@sinonjs/commons": "^3.0.1",
"@sinonjs/fake-timers": "^15.1.0",
@@ -11367,9 +11428,9 @@
}
},
"node_modules/strnum": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz",
"integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz",
"integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==",
"funding": [
{
"type": "github",
@@ -11616,7 +11677,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@@ -11859,7 +11919,6 @@
"resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz",
"integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "~0.25.0",
"get-tsconfig": "^4.7.5"
@@ -11928,7 +11987,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -12075,7 +12133,6 @@
"integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.27.0",
"fdir": "^6.5.0",
@@ -12825,7 +12882,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@@ -12839,7 +12895,6 @@
"integrity": "sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@vitest/expect": "4.0.16",
"@vitest/mocker": "4.0.16",
@@ -12912,6 +12967,20 @@
}
}
},
"node_modules/vitest-canvas-mock": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/vitest-canvas-mock/-/vitest-canvas-mock-1.1.3.tgz",
"integrity": "sha512-zlKJR776Qgd+bcACPh0Pq5MG3xWq+CdkACKY/wX4Jyija0BSz8LH3aCCgwFKYFwtm565+050YFEGG9Ki0gE/Hw==",
"dev": true,
"license": "MIT",
"dependencies": {
"cssfontparser": "^1.2.1",
"moo-color": "^1.0.3"
},
"peerDependencies": {
"vitest": "^3.0.0 || ^4.0.0"
}
},
"node_modules/vitest/node_modules/pathe": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+3 -2
View File
@@ -12,7 +12,7 @@
"docs:map-generator": "cd map-generator && go doc -cmd -u -all",
"tunnel": "npm run build-prod && npm run start:server",
"test": "vitest run && vitest run tests/server",
"perf": "npx tsx tests/perf/*.ts",
"perf": "npx tsx tests/perf/run-all.ts",
"test:coverage": "vitest run --coverage",
"format": "prettier --ignore-unknown --write .",
"format:map-generator": "cd map-generator && go fmt .",
@@ -85,7 +85,8 @@
"vite-plugin-html": "^3.2.2",
"vite-plugin-static-copy": "^3.1.4",
"vite-tsconfig-paths": "^6.0.3",
"vitest": "^4.0.16"
"vitest": "^4.0.16",
"vitest-canvas-mock": "^1.1.3"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.758.0",
+5
View File
@@ -1533,6 +1533,11 @@
"continent": "Europe",
"name": "Norway"
},
{
"code": "1_Occitania",
"continent": "Europe",
"name": "Occitania"
},
{
"code": "Ohio",
"continent": "North America",
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

+7
View File
@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<rect x="3" y="3" width="18" height="18" fill="none" stroke="white" stroke-width="2" />
<line x1="9" y1="3" x2="9" y2="21" stroke="white" stroke-width="2" />
<line x1="15" y1="3" x2="15" y2="21" stroke="white" stroke-width="2" />
<line x1="3" y1="9" x2="21" y2="9" stroke="white" stroke-width="2" />
<line x1="3" y1="15" x2="21" y2="15" stroke="white" stroke-width="2" />
</svg>

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

+114 -106
View File
@@ -7,6 +7,8 @@
},
"common": {
"close": "Затвори",
"copy": "Копиране",
"paste": "Поставяне",
"back": "Назад",
"available": "Наличен",
"preset_max": "Макс",
@@ -20,44 +22,70 @@
"target_dead_note": "Не можеш да изпращаш ресурси на елиминиран играч.",
"none": "Няма",
"copied": "Копирано!",
"click_to_copy": "Кликни, за да копираш"
"click_to_copy": "Кликни, за да копираш",
"enabled": "Включено"
},
"main": {
"title": "OpenFront (АЛФА)",
"join_discord": "Discord",
"login_discord": "Влез с Discord",
"sign_in": "Вход",
"discord_avatar_alt": "Discord профилна снимка",
"user_avatar_alt": "Профилната снимка на {username}",
"checking_login": "Проверяване на входа...",
"logged_in": "Влезли сте!",
"log_out": "Излез от профила си",
"create": "Създай частна игра",
"join": "Присъедини се към частна игра",
"solo": "Самостоятелно",
"instructions": "Инструкции",
"game_info": "Информация за играта",
"wiki": "Wiki",
"privacy_policy": "Поверителност",
"terms_of_service": "Условия за ползване",
"copyright": "© OpenFront™ and Contributors",
"reddit": "Reddit",
"play": "Играй",
"news": "Новини",
"store": "Магазин",
"store_new_badge": "НОВО",
"settings": "Настройки",
"keys": "Клавиши",
"stats": "Статистики",
"leaderboard": "Класация",
"account": "Акаунт",
"help": "Помощ",
"menu": "Меню",
"pick_pattern": "Избери шаблон!"
"troubleshooting": "Отстраняване на проблеми",
"go_to_troubleshooting": "Отиди на страницата ни за отстраняване на проблеми"
},
"news": {
"github_link": "в GitHub",
"title": "Бележки по изданието"
},
"troubleshooting": {
"title": "Отстраняване на проблеми",
"environment": "Среда",
"rendering": "Изобразяване",
"power": "Захранване",
"browser": "Браузър",
"platform": "Платформа",
"copied_to_clipboard": "Информацията бе копирана в клипборда! Чувствай се свободен да я споделиш в Discord-а ни, ако имаш нужда от помощ.",
"os": "ОС",
"device_pixel_ratio": "Съотношение на пикселите на устройството",
"chromium_tip": "OpenFront работи най-добре в браузъри, базирани на Chromium.",
"hardware_acceleration_tip": "Увери се, че хардуерното ускорение е активирано в настройките на браузъра ти за оптимална производителност.",
"renderer": "Изобразител",
"max_texture_size": "Максимален размер на текстурата",
"high_precision_shaders": "Шейдъри с висока точност",
"gpu": "Видеокарта",
"unavailable": "Неналично",
"gpu_tip": "Провери дали това е специализираната видеокарта, ако има такава.",
"battery": "Батерия",
"charging": "Зареждане",
"battery_level": "Ниво на батерията",
"power_saving_tip": "Увери се, че браузърът ти не е пуснат в режим за пестене на енергия.",
"yes": "Да",
"no": "Не",
"unknown": "Неизвестно",
"software_rendering": "Софтуерно изобразяване",
"canvas_2d_no_gpu": "Canvas 2D (без видеокарта)"
},
"help_modal": {
"video_tutorial": "Видео урок за игра",
"video_tutorial_title": "Урок за игра на OpenFront.io",
"hotkeys": "Бързи клавиши",
"table_key": "Бутон",
"table_action": "Действие",
@@ -77,7 +105,6 @@
"ui_leaderboard_desc": "Показва най-напредналите играчи в играта и имената им, % притежавана земя, злато и войници. Използването на \"Показване на всички\" показва всички играчи в играта. Ако не искате да виждате класацията, кликнете \"Скриване\".",
"ui_control": "Контролен панел",
"ui_control_desc": "Контролният панел съдържа следните елементи:",
"ui_pop": "Поп - Количеството популация, с която разполагаш, максималната ти популация и скоростта, с която тя се увеличава.",
"ui_gold": "Злато - Количеството злато, което притежаваш и скоростта, с която го получаваш.",
"ui_attack_ratio": "Съотношение на атака - Количеството войници, които ще се използват при атака. Можеш да коригираш съотношението на атака, използвайки плъзгача. Притежаването на повече атакуващи войници от тези в защита ще доведе до по-малка загуба на войници при атака, докато разполагането с по-малко ще увеличи щетите, нанесени на атакуващите ти войници. Ефектът не надхвърля съотношения 2:1.",
"ui_events": "Панел за събития",
@@ -97,12 +124,10 @@
"radial_title": "Радиално меню",
"radial_desc": "Кликането с десен бутон (или докосване при мобилно устройство) отваря радиалното меню. Кликането с десен бутон извън него го затваря. От менюто можеш да:",
"radial_build": "Отвориш менюто за строене.",
"radial_attack": "Отвориш менюто за атака.",
"radial_info": "Отвориш информационното меню.",
"radial_boat": "Изпратиш лодка (транспортен кораб) за атака на избраното място. Възможно е само, ако имаш достъп до вода.",
"radial_donate_troops": "Дариш войници на съюзника, на когото си отворил радиалното меню, еквивалентни на процента на плъзгача за съотношение на атака.",
"radial_donate_gold": "Отваря плъзгащото меню за даряване на злато, за да можеш бързо да изпратиш злато на съюзниците.",
"radial_close": "Затвориш менюто.",
"info_title": "Информационно меню",
"info_enemy_desc": "Съдържа информация като име на избрания играч, злато, войници, дали е спряна търговията с теб, изпратени ракети към теб и дали играчът е предател. Спряната търговия означава, че няма да получаваш злато от него и той няма да ти изпраща злато чрез търговски кораби. Ръчно (ако играчът кликне върху „Прекратяване на търговия“, което продължава, докато и двамата не кликнат върху „Започване на търговия“) или автоматично (ако си предал съюзника си, което продължава, докато не станете съюзници отново или след 5 минути). Показва се \"Да\" на \"Предател\" за 30 секунди, когато играчът е предал и нападнал играч, който е бил в съюз с него. Иконките по-долу представляват следните взаимодействия:",
"info_chat": "Изпрати бързо чат съобщение до играча. Избери категория, фраза и ако фразата съдържа [P1], избери име на играч, с което да го замениш. Натисни \"Изпрати\".",
@@ -141,6 +166,7 @@
"build_mirv": "МИРВ",
"build_mirv_desc": "Най-мощната бомба в играта. Разделя се на по-малки бомби, които покриват огромна територия. Поврежда само играча, върху който първо си щракнал, за да го построиш. Поражда се от най-близкия ракетен силоз и се приземява в областта, в която първо си щракнал, за да го построиш.",
"player_icons": "Иконки на играча",
"troubleshooting_desc": "Ако имаш проблеми с производителността, сривове или други проблеми, докато играеш OpenFront, моля, посети страницата ни за отстраняване на проблеми за помощ при диагностицирането и отстраняването на често срещани проблеми:",
"icon_desc": "Примери за някои от иконките в играта, които ще срещнеш, и какво означават:",
"icon_crown": "Корона - номер 1. Това е най-напредналият играч в класацията.",
"icon_traitor": "Счупен щит - Предател. Този играч е атакувал съюзник.",
@@ -149,18 +175,17 @@
"icon_request": "Пликче за писмо - молба за съюз. Този играч ти е изпратил молба за съюз.",
"info_enemy_panel": "Информационно меню за врагове",
"exit_confirmation": "Сигурен ли си, че искаш да излезеш от играта?",
"bomb_direction": "Посока на дъгата на атомна/водородна бомба"
"bomb_direction": "Посока на дъгата на атомна/водородна бомба",
"icon_alt_player_leaderboard": "Икона на играча в класацията",
"icon_alt_team_leaderboard": "Икона на отбора в класацията"
},
"single_modal": {
"title": "Самостоятелно",
"random_spawn": "Случайно появяване",
"allow_alliances": "Позволяване на съюзничества",
"toggle_achievements": "Превключване на постижения",
"sign_in_for_achievements": "Впиши се, за да получаваш постижения",
"options_title": "Опции",
"bots": "Ботове: ",
"bots_disabled": "Изключени",
"nations": "Нации: ",
"disable_nations": "Изключване на нации",
"instant_build": "Незабавно построяване",
"infinite_gold": "Безкрайно злато",
@@ -169,9 +194,13 @@
"max_timer": "Продължителност на играта (в минути)",
"max_timer_placeholder": "Минути",
"max_timer_invalid": "Моля, въведи валидна максимална стойност на таймера (1-120 минути)",
"disable_nukes": "Изключване на ядрени оръжия",
"enables_title": "Активиране на настройки",
"start": "Започване на игра"
"start": "Започване на игра",
"options_changed_no_achievements": "Персонализирани настройки – постиженията са деактивирани",
"gold_multiplier": "Златен множител",
"gold_multiplier_placeholder": "2.0x",
"starting_gold": "Начално злато",
"starting_gold_placeholder": "5М"
},
"token_login_modal": {
"title": "Вписване...",
@@ -194,17 +223,22 @@
"not_found": "Не е намерен",
"clear_session": "Изчисти сесията",
"failed_to_send_recovery_email": "Грешка при изпращането на имейл за възстановяване",
"enter_email_address": "Моля, въведи имейл адрес"
"enter_email_address": "Моля, въведи имейл адрес",
"personal_player_id": "Лично ID на играча:"
},
"stats_modal": {
"title": "Статистики",
"clan_stats": "Кланови статистики",
"leaderboard_modal": {
"title": "Класация",
"ranked_tab": "1v1 Ранково",
"clans_tab": "Кланове",
"refresh_time": "Опреснява се на всеки 1 час",
"loading": "Зареждане...",
"error": "Грешка при зареждането на клановите статистики",
"no_stats": "Няма налични кланови статистики",
"error": "Грешка при зареждането на класацията",
"no_stats": "Няма налични статистики",
"no_data_yet": "Все още няма данни",
"clan": "Клан",
"player": "Играч",
"games": "Игри",
"elo": "ЕЛО",
"win_score": "Резултат на победи",
"win_score_tooltip": "Претеглени победи въз основа на участието на клана и трудността на мача",
"loss_score": "Резултат на загуби",
@@ -212,7 +246,8 @@
"win_loss_ratio": "П/З",
"ratio": "Съотношение",
"rank": "Ранк",
"try_again": "Опитай отново"
"try_again": "Опитай отново",
"your_ranking": "Твоето класиране"
},
"game_info_modal": {
"title": "Информация за играта",
@@ -224,9 +259,12 @@
"total_gold": "Общо",
"all_gold": "Всичко злато",
"trade": "Търговия",
"train_trade": "Влак",
"naval_trade": "Търговски кораб",
"conquest_gold": "Завладяно злато от играч",
"stolen_gold": "Откраднато с военни кораби",
"num_of_conquests": "Брой завладяни играчи",
"num_of_conquests_humans": "Превзети играчи",
"num_of_conquests_bots": "Превзети ботове",
"duration": "Продължителност",
"survival_time": "Време на оцеляване",
"war": "Война",
@@ -239,6 +277,8 @@
},
"map": {
"map": "Карта",
"featured": "Подбрани",
"all": "Всички",
"world": "Свят",
"giantworldmap": "Гигантска световна карта",
"europe": "Европа",
@@ -281,14 +321,18 @@
"manicouagan": "Маникуаган",
"lemnos": "Лемнос",
"sierpinski": "Серпински",
"thebox": "Кутията",
"twolakes": "Две езера",
"straitofhormuz": "Ормузки проток",
"surrounded": "Обкражен",
"didier": "Дидиер",
"didierfrance": "Дидиер (Франция)",
"amazonriver": "Река Амазонка"
"amazonriver": "Река Амазонка",
"tradersdream": "Мечта на търговците",
"hawaii": "Хавай"
},
"map_categories": {
"featured": "Подбрани",
"continental": "Континентално",
"regional": "Регионално",
"fantasy": "Друго",
@@ -302,10 +346,7 @@
"private_lobby": {
"title": "Присъединяване към частна игра",
"enter_id": "Въведи ID на частната игра",
"player": "Играч",
"players": "Играчи",
"join_lobby": "Присъединяване към частна игра",
"checking": "Проверяване на частна игра...",
"not_found": "Не е намерена частната игра. Моля, провери ID-то и опитай отново.",
"error": "Възникна грешка. Моля, опитай отново или се свържи с екипа за поддръжка.",
"joined_waiting": "Присъедини се към лобито! Чакаме хостът да започне...",
@@ -313,18 +354,22 @@
"disabled_units": "Изключване на военни единици"
},
"public_lobby": {
"title": "Изчаква се да започне играта...",
"join": "Присъединяване към следващата игра",
"waiting": "чакащи играчи",
"teams_Duos": "{team_count} отбора по 2-ма (Дуос)",
"teams_Trios": "{team_count} отбора по 3-ма (Триос)",
"teams_Quads": "{team_count} отбора по 4-ма (Куадс)",
"waiting_for_players": "Изчакване на играчи",
"connecting": "Свързване с играта...",
"starting_in": "Започва след {time}",
"starting_game": "Играта се стартира…",
"teams_hvn": "Хора срещу Нации",
"teams_hvn_detailed": "{num} Души vs {num} Нации",
"teams": "{num} отбора",
"players_per_team": "по {num}",
"started": "Стартирана"
"started": "Стартирана",
"status": "Състояние",
"join_timeout": "Не си влязъл в играта навреме."
},
"matchmaking_modal": {
"title": "1v1 Ранков мачмейкинг (АЛФА)",
@@ -353,7 +398,6 @@
"bots": "Ботове: ",
"bots_disabled": "Изключени",
"player_immunity_duration": "Продължителност на военния имунитет (минути)",
"nations": "Нации: ",
"disable_nations": "Изключване на нации",
"max_timer": "Продължителност на играта (в минути)",
"mins_placeholder": "Минути",
@@ -379,7 +423,9 @@
"teams_Duos": "Дуос (отбори по 2-ма)",
"teams_Trios": "Триос (отбори по 3-ма)",
"teams_Quads": "Куадс (отбори по 4-ма)",
"teams_Humans Vs Nations": "Хора срещу Нации"
"teams_Humans Vs Nations": "Хора срещу Нации",
"starting_gold": "Начално злато",
"crowded": "Модификатор на претъпкване"
},
"team_colors": {
"red": "Червен",
@@ -409,7 +455,9 @@
},
"public_game_modifier": {
"random_spawn": "Случайно появяване",
"compact_map": "Компактна карта"
"compact_map": "Компактна карта",
"crowded": "Претъпкано",
"starting_gold": "5М начално злато"
},
"select_lang": {
"title": "Изберете език"
@@ -644,19 +692,15 @@
"exit": "Напускане на играта",
"keep": "Продължаване на играта",
"spectate": "Наблюдаване",
"requeue": "Играй отново",
"wishlist": "Добавяне към списъка с желания в Steam!",
"ofm_winter": "OpenFront Masters зимен турнир!",
"ofm_winter_description": "Присъедини се към състезателния турнир и се състезавай срещу най-добрите играчи",
"join_tournament": "Присъедини се към турнира",
"join_discord": "Присъедини се към общността ни в Discord!",
"discord_description": "Свържи се с играчи, открий нови функции и спечели награди!",
"join_server": "Влез в сървъра",
"youtube_tutorial": "Нужда от помощ?"
},
"leaderboard": {
"title": "Класация",
"hide": "Скриване",
"rank": "Позиция",
"player": "Играч",
"team": "Отбор",
"owned": "Притежавано",
@@ -669,36 +713,14 @@
"show_control": "Показване на контрол",
"show_units": "Показване на единици"
},
"player_info_overlay": {
"type": "Вид",
"bot": "Бот",
"nation": "Нация",
"player": "Играч",
"team": "Отбор",
"alliance_timeout": "Съюзът изтича след",
"troops": "Войници",
"maxtroops": "Максимални войници",
"a_troops": "Атакуващи войници",
"gold": "Злато",
"ports": "Пристанища",
"cities": "Градове",
"factories": "Фабрики",
"missile_launchers": "Ракетни силози",
"sams": "Противоракетни установки земя-въздух SAM",
"warships": "Бойни кораби",
"health": "Живот",
"attitude": "Становище",
"levels": "Нива",
"wilderness_title": "Пустош",
"irradiated_wilderness_title": "Облъчена пустош"
},
"events_display": {
"events": "Събития",
"retreating": "отстъпване",
"retaliate": "Отвръщане на удара",
"boat": "Лодка",
"alliance_request_status": "{name} {status} заявката ти за съюз",
"alliance_accepted": "прие",
"alliance_rejected": "отхвърли",
"alliance_nukes_destroyed_outgoing": "{count, plural, one {# изстреляна към {name} бомба бе унищожена заради съюза} other {# изстреляни към {name} бомби бяха унищожени заради съюза}}",
"alliance_nukes_destroyed_incoming": "{count, plural, one {# изстреляна от {name} бомба бе унищожена заради съюза} other {# изстреляни от {name} бомби бяха унищожени заради съюза}}",
"duration_second": "1 секунда",
"betrayal_description": "Ти прекрати съюза си с {name}, което те прави ПРЕДАТЕЛ ({malusPercent}% понижаване на защитата ти за {durationText})",
"duration_seconds_plural": "{seconds} секунди",
@@ -720,26 +742,19 @@
"attack_cancelled_retreat": "Атаката бе отменена, {troops} войници бяха убити по време на отстъплението",
"received_gold_from_captured_ship": "Получи {gold} злато от лодка на {name}, превзета от теб",
"received_gold_from_trade": "Получи {gold} злато от търговия с {name}",
"received_gold_from_conquest": "Превзе {name}, получи {gold} злато",
"conquered_no_gold": "Превзе {name} (не е играл, не получаваш злато)",
"missile_intercepted": "Противоракетната установка прихвана {unit}",
"mirv_warheads_intercepted": "{count, plural, one {{count} МИРВ бе прихванат} other {{count} МИРВ-а бяха прихванати}}",
"sent_troops_to_player": "Изпрати {troops} войници на {name}",
"received_troops_from_player": "Получи {troops} войници от {name}",
"sent_gold_to_player": "Изпрати {gold} злато на {name}",
"received_gold_from_player": "Получи {gold} злато от {name}",
"unit_captured_by_enemy": "Твоят/а {unit} бе превзет от {name}",
"unit_captured_by_enemy": "Твоят {unit} бе превзет от {name}",
"captured_enemy_unit": "Превзе {unit} от {name}",
"unit_destroyed": "Твоят/а {unit} бе унищожен",
"unit_destroyed": "Твоят {unit} бе унищожен",
"no_boats_available": "Няма свободни кораби, максимум {max}"
},
"unit_info_modal": {
"structure_info": "Информация за постройката",
"unit_type_unknown": "Неизвестно",
"close": "Затваряне",
"cooldown": "Време за охлаждане",
"type": "Вид",
"upgrade": "Надграждане",
"level": "Ниво"
},
"player_type": {
"player": "Играч",
"nation": "Нация",
@@ -752,11 +767,6 @@
"friendly": "Приятелско",
"default": "Стандартно"
},
"control_panel": {
"gold": "Злато",
"troops": "Войници",
"attack_ratio": "Съотношение на атака"
},
"player_panel": {
"gold": "Злато",
"troops": "Войници",
@@ -766,39 +776,42 @@
"active": "Активна",
"stopped": "Спряна",
"alliance_time_remaining": "Съюзът изтича след",
"embargo": "Спряна е търговията с теб",
"nuke": "Изпратени ракети към теб",
"start_trade": "Започване на търговия",
"stop_trade": "Прекратяване на търговията",
"stop_trade_all": "Прекратяване на търговията с всички",
"start_trade_all": "Започване на търговия с всички",
"alliances": "Съюзници",
"flag": "Знаме",
"chat": "Чат",
"target": "Нацели",
"break_alliance": "Прекъсни съюза",
"alliance": "Съюз",
"send_alliance": "Изпрати съюз",
"send_troops": "Изпрати войници",
"send_gold": "Изпрати злато",
"emotes": "Емоджита",
"moderation": "Модерация",
"kick": "Изхвърляне на играч",
"kicked": "Вече е изхвърлен",
"kick_confirm": "Да се ​изгони {name}?\n\nНяма да може да се присъедини отново към тази игра.",
"arc_up": "Възходяща дъга",
"arc_down": "Низходяща дъга",
"flip_rocket_trajectory": "Обърни траекторията на ракетата"
},
"kick_reason": {
"duplicate_session": "Бе изхвърлен от играта (възможно е и да си играл от друг таб)",
"lobby_creator": "Изгонен от създателя на лобито"
},
"send_troops_modal": {
"title_with_name": "Изпрати войници на {name}",
"available_tooltip": "Текущите ти войници на разположение",
"min_keep": "Минимално запазени",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "Плъзгач за войници",
"capacity_note": "Получателят може да приеме само {{amount}} в момента."
"capacity_note": "Получателят може да приеме само {amount} в момента."
},
"send_gold_modal": {
"title_with_name": "Изпрати злато на {name}",
"available_tooltip": "Текущото ти злато на разположение",
"aria_slider": "Количествен плъзгач",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Скорост на повторението",
@@ -835,7 +848,9 @@
"choose_spawn": "Изберете начална локация",
"random_spawn": "Случайното появяване е активирано. Избиране на начална локация за теб...",
"singleplayer_game_paused": "Играта е на пауза",
"multiplayer_game_paused": "Играта е паузирана от създателя на лобито"
"multiplayer_game_paused": "Играта е паузирана от създателя на лобито",
"pvp_immunity_active": "Бойният имунитет е активен за {seconds} секунди",
"catching_up": "Наваксва се..."
},
"territory_patterns": {
"title": "Териториални шаблони",
@@ -844,13 +859,16 @@
"show_only_owned": "Моите шаблони",
"all_owned": "Имаш всички шаблони! Провери отново по-късно за нови артикули.",
"not_logged_in": "Не си се вписал в профил",
"blocked": {
"login": "Трябва да сте влезли в профила си, за да получите достъп до този шаблон.",
"purchase": "Закупете този шаблон, за да го отключите."
},
"pattern": {
"default": "Стандартен"
},
"try_me": "Изпробвай ме!",
"trial_remaining": "оставащи",
"trial_granted": "Даден е шаблона за временно изпробване!",
"trial_cooldown": "Само едно изпробване на 24 часа. Моля, опитай отново по-късно.",
"trial_login_required": "Трябва да влезеш в профила си, за да можеш да изпробваш шаблон",
"reward_countdown": "Награда след {seconds} секунди...",
"steam_wishlist_prompt": "Подкрепи OpenFront, като го добавиш към списъка си с желания в Steam",
"select_skin": "Избери шаблон",
"selected": "е избран"
},
@@ -859,15 +877,6 @@
"button_title": "Избери знаме!",
"search_flag": "Търси..."
},
"spawn_ad": {
"loading": "Зарежда се реклама..."
},
"auth": {
"login_required": "За достъп до този уебсайт е необходим вход.",
"redirecting": "Пренасочваме ви...",
"not_authorized": "Нямате право да достъпите до този уебсайт.",
"contact_admin": "Ако смятате, че виждате това съобщение по погрешка, моля, свържете се с администратора на уебсайта."
},
"radial_menu": {
"delete_unit_title": "Изтриване на елемент",
"delete_unit_description": "Кликни, за да изтриеш най-близкия елемент"
@@ -926,7 +935,6 @@
"replay": "Повторение",
"details": "Детайли",
"ranking": "Класиране",
"started": "Стартирана",
"map": "Карта",
"difficulty": "Трудност",
"type": "Вид"
@@ -934,7 +942,7 @@
"player_stats_tree": {
"public": "Публична",
"private": "Частна",
"singleplayer": "Самостоятелно",
"solo": "Самостоятелно",
"mode": "Вид",
"stats_wins": "Победи",
"stats_losses": "Загуби",
+961
View File
@@ -0,0 +1,961 @@
{
"lang": {
"en": "Catalan",
"native": "Català",
"svg": "catalonia",
"lang_code": "ca"
},
"common": {
"close": "Tancar",
"copy": "Copiar",
"paste": "Enganxar",
"back": "Enrere",
"available": "Disponible",
"preset_max": "Màx",
"summary_send": "Enviar",
"summary_keep": "Quedar-se",
"cancel": "Cancel·lar",
"send": "Enviar",
"cap_label": "Cap",
"cap_tooltip": "Capacitat restant del destinatari",
"target_dead": "Objectiu eliminat",
"target_dead_note": "No pots enviar recursos a un jugador eliminat.",
"none": "Cap",
"copied": "Copiat!",
"click_to_copy": "Clica per copiar",
"enabled": "Activat"
},
"main": {
"title": "OpenFront (ALFA)",
"login_discord": "Inicia sessió amb Discord",
"sign_in": "Iniciar sessió",
"discord_avatar_alt": "Foto de perfil Discord",
"user_avatar_alt": "L'avatar de {username}",
"create": "Crear Aula",
"join": "Unir-se a l'Aula",
"solo": "Sol",
"game_info": "Informació del joc",
"wiki": "Wiki",
"privacy_policy": "Política de Privacitat",
"terms_of_service": "Condicions de Servei",
"copyright": "© OpenFront™ i Col·laboradors",
"play": "Jugar",
"news": "Notícies",
"store": "Botiga",
"store_new_badge": "NOU",
"settings": "Configuració",
"leaderboard": "Classificació",
"account": "Compte",
"help": "Ajuda",
"menu": "Menú",
"troubleshooting": "Resolució de problemes",
"go_to_troubleshooting": "Ves a la nostra pàgina per resolució problemes"
},
"news": {
"github_link": "a GitHub",
"title": "Notes de publicació"
},
"troubleshooting": {
"title": "Resolució de problemes",
"environment": "Entorn",
"rendering": "Renderització",
"power": "Poder",
"browser": "Navegador",
"platform": "Plataforma",
"copied_to_clipboard": "Informació copiada en el porta-retalls! Sigues lliure de compartir-la en el nostre Discord si necessites ajuda.",
"os": "OS",
"device_pixel_ratio": "Ràtio de píxels del dispositiu",
"chromium_tip": "OpenFront funciona millor en navegadors Chromium.",
"hardware_acceleration_tip": "Assegura't que l'acceleració de maquinari estigui habilitada a la configuració del teu navegador per a un rendiment òptim.",
"renderer": "Rendidor",
"max_texture_size": "Mida màxima de la textura",
"high_precision_shaders": "Shaders d'alta precisió",
"gpu": "GPU",
"unavailable": "No disponible",
"gpu_tip": "Verifiqueu que aquesta sigui la GPU dedicada, si n'hi ha una disponible.",
"battery": "Bateria",
"charging": "Carregant",
"battery_level": "Nivell de la bateria",
"power_saving_tip": "Assegura-te'n que el teu navegador no estigui en mode de baix consum.",
"yes": "Sí",
"no": "No",
"unknown": "Desconegut",
"software_rendering": "Rendiment per programari",
"canvas_2d_no_gpu": "Canvas 2D (no GPU)"
},
"help_modal": {
"video_tutorial": "Vídeo Tutorial",
"video_tutorial_title": "Tutorial de OpenFront.io",
"hotkeys": "Tecles d'accés ràpid",
"table_key": "Clau",
"table_action": "Acció",
"action_alt_view": "Vista alternativa (terreny/països)",
"action_attack_altclick": "Ataca (quan el clic esquerre està configurat per obrir el menú)",
"action_build": "Obrir menú de construcció",
"action_emote": "Obrir menú de reaccions",
"action_center": "Enfocar càmera al jugador",
"action_zoom": "Allunyar/apropar",
"action_move_camera": "Moure càmera",
"action_ratio_change": "Reduir/Augmentar la ràtio d'atac",
"action_reset_gfx": "Restablir gràfics",
"action_auto_upgrade": "Millora automàtica de l'estructura més propera",
"ui_section": "Interfície del joc",
"ui_leaderboard": "Taulell de classificació",
"ui_your_team": "El teu equip:",
"ui_leaderboard_desc": "Mostra els millors jugadors de la partida i els seus noms, el % de territori i la quantitat d'or i tropes que posseeixen. Clicar Mostra-ho tot mostra tots els jugadors del joc. Si no vols veure la classificació, fes clic a Oculta.",
"ui_control": "Panell de control",
"ui_control_desc": "El tauler de control conté els elements següents:",
"ui_gold": "Or - La quantitat d'or que tens i el ritme amb el qual en guanyes més.",
"ui_attack_ratio": "Ràtio d'atac - La quantitat de tropes que s'utilitzaran quan ataquis. Pots ajustar la ràtio d'atac amb el control lliscant. Tenir més tropes d'atac que de defensa farà que perdis menys tropes en l'atac, mentre que tenir-ne menys augmentarà els danys rebuts per les teves tropes atacants. L'efecte no va més enllà d'una ràtio de 2:1.",
"ui_events": "Tauler d'esdeveniments",
"ui_events_desc": "El tauler d'esdeveniments mostra els darrers esdeveniments, sol·licituds i missatges de xat ràpid. Alguns exemples són:",
"ui_events_alliance": "Aliança - Les sol·licituds d'aliança es poden acceptar o rebutjar. Els aliats poden compartir recursos i tropes, però no es poden atacar a uns els altres. En fer clic a Focalitzar, la vista es desplaça al jugador que ha enviat la sol·licitud.",
"ui_events_attack": "Atacs - S'hi mostren els atacs entrants i els teus atacs sortints. Fes clic al missatge per centrar la vista en l'atac, la bomba nuclear o el vaixell de transport. Pots retirar les tropes fent clic a la X vermella. Això costarà la vida al 25 % de les teves tropes atacants. Si retires un atac de vaixell, aquest tornarà al seu punt d'origen i atacarà allà si la terra ha estat capturada des de llavors. Les bombes nuclears no es poden retirar un cop llançades.",
"ui_events_quickchat": "Xat ràpid - Aquí pots veure els missatges de xat enviats i rebuts. Envia un missatge a un jugador fent clic a la icona de xat ràpid al seu menú d'informació.",
"ui_options": "Opcions",
"ui_options_desc": "A l'interior es poden trobar els elements següents:",
"ui_playeroverlay": "Tauler d'informació del jugador",
"ui_playeroverlay_desc": "Quan hi passes el cursor per sobre d'un país, es mostra el tauler d'informació del jugador sota Opcions. Mostra el tipus de jugador: Humà, Nació (bot intel·ligent) o Bot. L'actitud d'una nació envers a tu, que va de hostil a amistosa. I les tropes de defensa, l'or, a més del nombre de vaixells de guerra i dels diverses estructures que té el jugador.",
"ui_wilderness": "Terreny salvatge",
"option_pause": "Pausa/Reinicia el joc - Només disponible en mode d'un jugador.",
"option_timer": "Temporitzador - Temps transcorregut des de l'inici del joc.",
"option_exit": "Botó de sortida.",
"option_settings": "Configuració - Obre el menú de configuració. A dins pots activar la vista alternada, els emojis, el mode fosc, el mode ninja (nom anònim/aleatori) i l'acció amb el clic esquerre.",
"radial_title": "Menú circular",
"radial_desc": "Fent clic amb el botó dret (o tocant a mòbil) s'obre el menú circular. Fent clic amb el botó dret fora d'aquest, el tanques. Des del menú pots:",
"radial_build": "Obre el Menú de construcció.",
"radial_info": "Obre el Menú d'informació.",
"radial_boat": "Envia un vaixell de transport a atacar la localització seleccionada. Només funciona si hi tens accés per l'aigua.",
"radial_donate_troops": "Dona tropes equivalents al percentatge del lliscador de ràtio d'atac a l'aliat sobre el qual has obert el menú circular.",
"radial_donate_gold": "Obre el menú amb lliscador de donacions d'or perquè puguis enviar or als aliats ràpidament.",
"info_title": "Menú d'informació",
"info_enemy_desc": "Conté informació com ara el nom del jugador seleccionat, l'or, les tropes, si ha aturat el comerç amb tu, les bombes nuclears llançades contra tu i si el jugador és traïdor. Aturar el comerç significa que no rebràs or d'ells ni enviaran vaixells de comerç. Manualment (si el jugador ha fet clic a «Aturar el comerç», cosa que dura fins que tots dos feu clic a «Iniciar el comerç») o automàticament (si has traït la teva aliança, cosa que dura fins que torneu a ser aliats o si no, 5 minuts). Traïdor mostra «Sí» durant 30 segons quan el jugador ha traït i atacat un jugador que formava part de la seva aliança. Les icones següents representen les interaccions següents:",
"info_chat": "Envia un missatge de xat ràpid al jugador. Selecciona una categoria, una frase i, si la frase conté [P1], selecciona un nom de jugador per substituir-lo. Prem Envia.",
"info_target": "Col·loca una marca de blanc sobre el jugador, que la fa visible per a tots els aliats, utilitzada per coordinar atacs.",
"info_alliance": "Envia una sol·licitud d'aliança al jugador. Els aliats poden compartir recursos i tropes, però no es poden atacar mútuament.",
"info_emoji": "Envia un emoji al jugador.",
"info_trade": "Utilitza \"Atura el comerç\" per deixar de donar or al jugador i de rebre el seu or a través de vaixells de comerç. Si tots dos feu clic a \"Comença el comerç\", es reprendrà.",
"info_ally_panel": "Tauler d'informació d'aliat",
"info_ally_desc": "Quan t'aliïs amb un jugador, les icones noves següents es fan disponibles:",
"ally_betray": "Traïu el vostre aliat, posant fi a l'aliança, aturant el comerç i debilitant la vostra defensa. El comerç entre vosaltres estarà aturat durant 5 minuts (o fins que torneu a ser aliats) i altres també poden deixar de comerciar. I tret que l'altre jugador fos traïdor, seràs marcat com a traïdor durant 30 segons. Durant aquest temps hi haurà una icona sobre el teu nom i tindràs un debilitament de defensa del 50%. Els bots tindran menys probabilitats d'aliar-se amb tu i els jugadors s'ho pensaran dues vegades abans de fer-ho.",
"ally_donate": "Dona algunes de les teves tropes al teu aliat. S'utilitza quan tenen tropes escasses i estan sent atacats, o quan necessiten força addicional per esclafar un enemic.",
"ally_donate_gold": "Dona or al teu aliat, per exemple si necessiten estructures o estan estalviant per una MIRV.",
"build_menu_title": "Menú de construcció",
"build_menu_desc": "Construïu aquests o mireu quants de cadascun ja heu construït:",
"build_name": "Nom",
"build_icon": "Icona",
"build_desc": "Descripció",
"build_city": "Ciutat",
"build_city_desc": "Augmenta la teva població màxima. Útil quan no pots expandir el teu territori o estàs a punt d'assolir el límit de població.",
"build_factory": "Fàbrica",
"build_factory_desc": "Construeix automàticament ferrocarrils cap a ciutats properes, ports i altres fàbriques, i també es pot connectar amb veïns amistosos. Els trens apareixen regularment i et donen una quantitat fixa d'or per cada edifici que visiten al llarg de la ruta, amb or addicional per visitar els edificis dels teus veïns.",
"build_defense": "Torre defensiva",
"build_defense_desc": "Reforça les defenses de les fronteres properes. Les tropes de l'enemic seran més lentes i moriran més.",
"build_port": "Port",
"build_port_desc": "Només es pot construir a prop de l'aigua. Permet construir vaixells de guerra. Envia automàticament vaixells de comerç entre els ports del teu país i els d'altres països (excepte quan el comerç està aturat), donant or a tots dos. El comerç amb un jugador s'atura automàticament quan ataques o ets atacat per un jugador. Es reprèn després de 5 minuts o si us alieu. Pots activar o desactivar manualment el comerç amb \"Atura el comerç\" i \"Comença el comerç\".",
"build_warship": "Vaixell de Guerra",
"build_warship_desc": "Patrulla per una zona, captura vaixells de comerç enemics i destrueix els seus vaixells de transport i vaixells de guerra. Apareix al port més proper i patrulla la zona que vas clicar primer per construir-lo. Pots controlar els vaixells de guerra fent clic amb el botó d'atac sobre ells (vegeu l'acció Atac a les Tecles de drecers) i després fent clic amb el botó d'atac a la nova zona on vols que es desplacin.",
"build_silo": "Llançador de Míssils",
"build_silo_desc": "Et permet llançar míssils.",
"build_sam": "Defensor Aeri",
"build_sam_desc": "Pot interceptar míssils de l'enemic en un rang de 100 píxels. El defensor aeri necessita 7,5 segons per recarregar-se.",
"build_atom": "Bomba Atòmica",
"build_atom_desc": "Una petita explosió que destrueix terreny, estructures i vaixells. Surt del Llançador de míssils més proper.",
"build_hydrogen": "Bomba d'Hidrogen",
"build_hydrogen_desc": "Bomba amb una gran explosió. Surt del Llançador de Míssils més proper i cau a on has clicat per llançar-la.",
"build_mirv": "MIRV",
"build_mirv_desc": "La bomba més poderosa del joc. Es trenca en nombroses bombes petites que cobriran un vast terreny. Només danya al jugador que has seleccionat. Surt del Llançador de Míssils més proper i cau a on has clicat per llançar-la.",
"player_icons": "Icones de jugador",
"troubleshooting_desc": "Si experimenteu problemes de rendiment, bloquejos o altres problemes mentre jugueu a OpenFront, visiteu la nostra pàgina de resolució de problemes per obtenir ajuda per diagnosticar i solucionar els problemes més comuns:",
"icon_desc": "Exemples d'algunes de les icones del joc que trobaràs i què volen dir:",
"icon_crown": "Corona - Número 1. Aquest és el jugador número u de la classificació.",
"icon_traitor": "Escut trencat - Traïdor. Aquest jugador ha atacat un aliat.",
"icon_ally": "Apretó de mans - Aliat. Aquest jugador és el teu aliat.",
"icon_embargo": "Signe de dòlar ratllat - Bloqueig. Aquest jugador ha deixat de comerciar amb tu automàticament o manualment.",
"icon_request": "Sobre - Sol·licitud d'aliança. Aquest jugador t'ha enviat una sol·licitud d'aliança.",
"info_enemy_panel": "Tauler d'informació de l'enemic",
"exit_confirmation": "Estàs segur que vols sortir de la partida?",
"bomb_direction": "Direcció de l'arc de la bomba",
"icon_alt_player_leaderboard": "Icona del Taulell de classificació",
"icon_alt_team_leaderboard": "Icona de la classificació de l'equip"
},
"single_modal": {
"random_spawn": "Punt de partida aleatori",
"toggle_achievements": "Activa o desactiva els assoliments",
"sign_in_for_achievements": "Inicia la sessió per rebre assoliments",
"options_title": "Opcions",
"bots": "Bots: ",
"bots_disabled": "Desactivat",
"disable_nations": "Desactiva les Nacions",
"instant_build": "Construcció instantània",
"infinite_gold": "Or infinit",
"infinite_troops": "Tropes infinites",
"compact_map": "Mapa Compacte",
"max_timer": "Durada de la partida (minuts)",
"max_timer_placeholder": "Minuts",
"max_timer_invalid": "Introduïu un valor vàlid per la duració màxima (1-120 minuts)",
"enables_title": "Activa les configuracions",
"start": "Iniciar Partida",
"options_changed_no_achievements": "Configuracions personalitzades assoliments desactivats",
"gold_multiplier": "Multiplicador d'or",
"gold_multiplier_placeholder": "2,0x",
"starting_gold": "Or inicial",
"starting_gold_placeholder": "5000000"
},
"token_login_modal": {
"title": "Iniciant la sessió...",
"logging_in": "Iniciant la sessió...",
"success": "Has iniciat la sessió com a {email}!"
},
"account_modal": {
"title": "Compte",
"connected_as": "Connectat com a",
"stats_overview": "Visió general d'estadístiques",
"link_discord": "Enllaça compte de Discord",
"log_out": "Tanca la sessió",
"sign_in_desc": "Inicia la sessió per desar les teves estadístiques i el teu progrés",
"or": "O",
"email_placeholder": "Introdueix la teva adreça de correu electrònic",
"get_magic_link": "Obtén Magic Link",
"linked_account": "Has iniciat la sessió com a {account_name}",
"fetching_account": "Obtenint la informació del compte...",
"recovery_email_sent": "Correu electrònic de recuperació enviat a {email}",
"not_found": "No Trobat",
"clear_session": "Borra la Sessió",
"failed_to_send_recovery_email": "S'ha fallat l'enviament del correu electrònic de recuperació",
"enter_email_address": "Introduïu una adreça de correu electrònic",
"personal_player_id": "ID de jugador personal:"
},
"leaderboard_modal": {
"title": "Taulell de classificació",
"ranked_tab": "1 contra 1 Classificat",
"clans_tab": "Clans",
"refresh_time": "Es refresca cada hora",
"loading": "S'està carregant...",
"error": "Error carregant classificació",
"no_stats": "No hi ha estadístiques disponibles",
"no_data_yet": "Encara sense dades",
"clan": "Clan",
"player": "Jugador",
"games": "Partides",
"elo": "ELO",
"win_score": "Puntuació Victòries",
"win_score_tooltip": "Victòries equilibrades basades en la participació del clan i la dificultat del partit",
"loss_score": "Puntuació Derrotes",
"loss_score_tooltip": "Victòries equilibrades basades en la participació del clan i la dificultat del partit",
"win_loss_ratio": "Victòries/Derrotes",
"ratio": "Ràtio",
"rank": "Posició",
"try_again": "Torneu-ho a provar",
"your_ranking": "La teva posició"
},
"game_info_modal": {
"title": "Informació de la partida",
"players": "Jugadors",
"atoms": "Atòmiques",
"hydros": "d'Hidrogen",
"mirv": "MIRV",
"bombs": "Bombes",
"total_gold": "Total",
"all_gold": "Tot l'or",
"trade": "Comerç",
"train_trade": "Tren",
"naval_trade": "Vaixell de Comerç",
"conquest_gold": "Or de jugadors conquistats",
"stolen_gold": "Robat amb vaixells de guerra",
"num_of_conquests_humans": "Jugadors matats",
"num_of_conquests_bots": "Bots matats",
"duration": "Duració",
"survival_time": "Temps sobreviscut",
"war": "Guerra",
"economy": "Economia",
"conquests": "Conquistes",
"pirate": "Pirata",
"conquered": "Conquistat",
"loading_game_info": "Carregant les estadístiques de la partida",
"no_winner": "La partida s'ha acabat sense guanyador (o ha guanyat una Nació)"
},
"map": {
"map": "Mapa",
"featured": "Destacat",
"all": "Tots",
"world": "Món",
"giantworldmap": "Mapa Mundi Gegant",
"europe": "Europa",
"mena": "El Mediterrani i el Nord d'Àfrica",
"northamerica": "Amèrica del Nord",
"oceania": "Oceania",
"blacksea": "El Mar Negre",
"africa": "Àfrica",
"asia": "Àsia",
"mars": "Mart",
"southamerica": "Amèrica del Sud",
"britanniaclassic": "Bretanya (Clàssic)",
"britannia": "Bretanya",
"gatewaytotheatlantic": "Països Catalans i la península Ibèrica",
"australia": "Austràlia",
"random": "Aleatori",
"iceland": "Islàndia",
"pangaea": "Pangea",
"eastasia": "Àsia Oriental",
"betweentwoseas": "Entremig de Dos Mars",
"faroeislands": "Illes Faroe",
"deglaciatedantarctica": "Antàrtida Desglaçada",
"europeclassic": "Europa (Clàssic)",
"falklandislands": "Illes Malvines",
"baikal": "Baikal",
"halkidiki": "Calcídica",
"straitofgibraltar": "L'estret de Gibraltar",
"italia": "Itàlia",
"japan": "Japó",
"yenisei": "Ienissei",
"pluto": "Plutó",
"montreal": "Mont-real",
"newyorkcity": "Nova York",
"achiran": "Achiran",
"baikalnukewars": "Baikal (Guerra Nuclear)",
"fourislands": "Quatre Illes",
"gulfofstlawrence": "Golf de Sant Llorenç",
"lisbon": "Lisboa",
"svalmel": "Svalmel",
"manicouagan": "Llac Manicouagan",
"lemnos": "Lemnos",
"sierpinski": "Sierpinski",
"thebox": "La Capsa",
"twolakes": "Dos Llacs",
"straitofhormuz": "Estret d'Ormuz",
"surrounded": "Envoltat",
"didier": "Didier",
"didierfrance": "Didier (França)",
"amazonriver": "Riu Amazon",
"tradersdream": "El Somni del Comerciant",
"hawaii": "Hawaiʻi"
},
"map_categories": {
"featured": "Destacats",
"continental": "Continentals",
"regional": "Regionals",
"fantasy": "Altres",
"special": "Especial",
"arcade": "Arcada"
},
"map_component": {
"loading": "Carregant...",
"error": "Error"
},
"private_lobby": {
"title": "Uneix-te a una Aula privada",
"enter_id": "Introduïu l'ID de l'Aula",
"join_lobby": "Unir-se a l'Aula",
"not_found": "Aula no trobada. Comproveu el codi ID i torneu-ho a provar.",
"error": "S'ha produït un error. Torni a provar o contacti amb el servei d'assistència.",
"joined_waiting": "T'has afegit a l'aula! Esperant que l'amfitrió comenci la partida...",
"version_mismatch": "Aquesta partida s'ha creat amb una versió diferent. No et pots unir.",
"disabled_units": "Característiques desactivades"
},
"public_lobby": {
"title": "Esperant l'inici de la partida...",
"join": "Uneix-te a la pròxima partida",
"teams_Duos": "{team_count} equips de 2 (Parelles)",
"teams_Trios": "{team_count} equips de 3 (Trios)",
"teams_Quads": "{team_count} equips de 4 (Quartets)",
"waiting_for_players": "Esperant jugadors",
"connecting": "Connectant a l'aula...",
"starting_in": "Comencem en {time}",
"starting_game": "Començant la partida…",
"teams_hvn": "Humans contra Nacions",
"teams_hvn_detailed": "{num} Humans contra {num} Nacions",
"teams": "{num} equips",
"players_per_team": "de {num}",
"started": "Iniciat",
"status": "Estat",
"join_timeout": "No has entrat a la partida a temps."
},
"matchmaking_modal": {
"title": "Enfrontament Classificat 1 contra 1 (ALFA)",
"connecting": "Connectant-se al servidor de matchmaking...",
"searching": "Buscant partida...",
"waiting_for_game": "Esperant l'inici de la partida...",
"elo": "El teu ELO: {elo}"
},
"username": {
"enter_username": "Escriu el teu nom d'usuari",
"not_string": "El nom d'usuari ha de ser una cadena de caràcters.",
"too_short": "El nom d'usuari ha de ser d'almenys {min} caràcters de llargada.",
"too_long": "El nom d'usuari no pot ser més llarg que {max} caràcters.",
"invalid_chars": "El nom d'usuari només pot contenir lletres, números, espais i guions baixos.",
"tag": "ETIQUETA",
"tag_too_short": "L'etiqueta del clan ha de tenir entre 2 i 5 caràcters alfanumèrics.",
"tag_invalid_chars": "L'etiqueta de clan només pot contenir lletres i números."
},
"host_modal": {
"title": "Crea una Aula Privada",
"label": "Privat",
"mode": "Mode",
"team_count": "Quantitat d'Equips",
"team_type": "Tipus d'Equip",
"options_title": "Opcions",
"bots": "Bots: ",
"bots_disabled": "Desactivat",
"player_immunity_duration": "Durada de la immunitat PVP (minuts)",
"disable_nations": "Desactiva les Nacions",
"max_timer": "Durada de la partida (minuts)",
"mins_placeholder": "Minuts",
"instant_build": "Construcció instantània",
"infinite_gold": "Or infinit",
"donate_gold": "Dona or",
"infinite_troops": "Tropes infinites",
"donate_troops": "Envia tropes",
"compact_map": "Mapa Compacte",
"enables_title": "Activa les configuracions",
"player": "Jugador",
"players": "Jugadors",
"nation_players": "Nacions",
"nation_player": "Nació",
"waiting": "Esperant jugadors...",
"random_spawn": "Punt de partida aleatori",
"start": "Iniciar Partida",
"host_badge": "Amfitrió",
"assigned_teams": "Equips Assignats",
"empty_teams": "Equips Buits",
"empty_team": "Buit",
"remove_player": "Elimina a {username}",
"teams_Duos": "Parelles (equips de 2)",
"teams_Trios": "Trios (equips de 3)",
"teams_Quads": "Quartets (equips de 4)",
"teams_Humans Vs Nations": "Humans contra Nacions",
"starting_gold": "Or inicial",
"crowded": "Modificador atapeït"
},
"team_colors": {
"red": "Vermell",
"blue": "Blau",
"teal": "Turquesa",
"purple": "Lila",
"yellow": "Groc",
"orange": "Taronja",
"green": "Verd",
"bot": "Bot"
},
"game_starting_modal": {
"title": "Iniciant la partida...",
"credits": "Crèdits",
"code_license": "Codi llicenciat sota l'AGPL-3.0 (sense garantia)"
},
"difficulty": {
"difficulty": "Dificultat de les Nacions",
"easy": "Fàcil",
"medium": "Mitjana",
"hard": "Difícil",
"impossible": "Impossible"
},
"game_mode": {
"ffa": "Tots contra Tots",
"teams": "Equips"
},
"public_game_modifier": {
"random_spawn": "Punt de partida aleatori",
"compact_map": "Mapa Compacte",
"crowded": "Atapeït",
"starting_gold": "5M d'Or Inicial"
},
"select_lang": {
"title": "Seleccionar l'Idioma"
},
"unit_type": {
"city": "Ciutat",
"defense_post": "Torre Defensiva",
"port": "Port",
"warship": "Vaixell de Guerra",
"missile_silo": "Llançador de Míssils",
"sam_launcher": "Defensor Aeri",
"atom_bomb": "Bomba Atòmica",
"hydrogen_bomb": "Bomba d'Hidrogen",
"mirv": "MIRV",
"factory": "Fàbrica"
},
"user_setting": {
"title": "Configuració",
"tab_basic": "Configuracions bàsiques",
"tab_keybinds": "Dreceres",
"dark_mode_label": "Mode Fosc",
"dark_mode_desc": "Canvia l'aspecte de la pàgina entre el tema clar i el tema fosc",
"emojis_label": "Emojis",
"emojis_desc": "Canvia si els emojis es mostren al joc",
"alert_frame_label": "Marc d'alerta",
"alert_frame_desc": "Activa o desactiva el marc d'alerta. Quan estigui activat, el marc es mostrarà quan siguis traït o atacat per terra.",
"special_effects_label": "Efectes especials",
"special_effects_desc": "Activa/desactiva els efectes especials. Desactiva per millorar el rendiment",
"structure_sprites_label": "Estructures Animades",
"structure_sprites_desc": "Activa/desactiva les estructures animades",
"cursor_cost_label_label": "Cost de construcció al cursor",
"cursor_cost_label_desc": "Mostra el preu de construcció sota el cursor",
"anonymous_names_label": "Noms Amagats",
"anonymous_names_desc": "Amaga els noms reals dels jugadors amb noms aleatoris a la teva pantalla.",
"lobby_id_visibility_label": "ID d'aula ocults",
"lobby_id_visibility_desc": "Amagar l'ID de l'aula en la creació d'aula privada",
"toggle_visibility": "Canvia la visibilitat",
"left_click_label": "Fes clic amb el botó esquerre per obrir el menú",
"left_click_desc": "Quan està activat, fer clic amb el botó esquerre obre el menú i el botó d'espasa ataca. Quan està desactivat, fer clic amb el botó esquerre ataca directament.",
"left_click_menu": "Menú de clic esquerre",
"attack_ratio_label": "⚔️ Ràtio d'Atac",
"attack_ratio_desc": "Quin percentatge de les teves tropes s'envien en un atac (1100%)",
"territory_patterns_label": "🏳️Aspectes de Territori",
"territory_patterns_desc": "Tria si mostrar els dissenys d'aspectes de territori al joc",
"performance_overlay_label": "Superposició de rendiment",
"performance_overlay_desc": "Activa o desactiva la superposició de rendiment. Quan estigui habilitada, es mostrarà la superposició de rendiment. Premeu Shift+D durant el joc per alternar-la.",
"easter_writing_speed_label": "Multiplicador de velocitat d'escriptura",
"easter_writing_speed_desc": "Ajusta la velocitat amb la qual fas veure que programes (x1x100)",
"easter_bug_count_label": "Compte d'errors",
"easter_bug_count_desc": "Quants errors et semblen acceptables (01000, emocionalment)",
"press_a_key": "Premeu una tecla",
"view_options": "Veure opcions",
"toggle_view": "Canviar Visualització",
"toggle_view_desc": "Alterna la visualització (terreny/països)",
"build_controls": "Controls de Construcció",
"build_city": "Construeix una Ciutat",
"build_city_desc": "Construeix una Ciutat al teu cursor.",
"build_factory": "Construeix una Fàbrica",
"build_factory_desc": "Construeix una Fàbrica al teu cursor.",
"build_defense_post": "Construeix una Torre Defensiva",
"build_defense_post_desc": "Construeix una Torre Defensiva al teu cursor.",
"build_port": "Construeix un Port",
"build_port_desc": "Construeix un Port al teu cursor.",
"build_warship": "Construeix un Vaixell de Guerra",
"build_warship_desc": "Envia un Vaixell de Guerra al teu cursor.",
"build_missile_silo": "Construeix un Llançador de Míssils",
"build_missile_silo_desc": "Construeix un Llançador de Míssils al teu cursor.",
"build_sam_launcher": "Construeix un Defensor Aeri",
"build_sam_launcher_desc": "Construeix un Defensor Aeri al teu cursor.",
"build_atom_bomb": "Llança una Bomba Atòmica",
"build_atom_bomb_desc": "Llança una Bomba Atòmica al teu cursor.",
"build_hydrogen_bomb": "Llança una Bomba d'Hidrogen",
"build_hydrogen_bomb_desc": "Llança una Bomba d'Hidrogen al teu cursor.",
"build_mirv": "Llança una MIRV",
"build_mirv_desc": "Llança una MIRV al teu cursor.",
"menu_shortcuts": "Dreceres del Menú",
"build_menu_modifier": "Modificador del menú de construcció",
"build_menu_modifier_desc": "Mantingueu premuda aquesta tecla mentre feu clic per obrir el menú de construcció.",
"emoji_menu_modifier": "Modificador del menú d'emoji",
"emoji_menu_modifier_desc": "Mantingueu premuda aquesta tecla mentre feu clic per obrir el menú d'emojis.",
"attack_ratio_controls": "Controls de la ràtio d'atac",
"attack_ratio_up": "Augmentar la ràtio d'atac",
"attack_ratio_up_desc": "Augmentar la ràtio d'atac per un 10%",
"attack_ratio_down": "Reduir la ràtio d'atac",
"attack_ratio_down_desc": "Reduir la ràtio d'atac per un 10%",
"attack_keybinds": "Dreceres d'atac",
"boat_attack": "Atac Marítim",
"boat_attack_desc": "Envia un atac amb vaixell de transport al teu cursor.",
"ground_attack": "Atac",
"ground_attack_desc": "Envia un atac terrestre sota el teu cursor.",
"swap_direction": "Canvia la direcció del míssil",
"swap_direction_desc": "Canvia la direcció de l'arc de llançament del míssil (amunt/avall).",
"zoom_controls": "Controls de zoom",
"zoom_out": "Allunya",
"zoom_out_desc": "Allunya el mapa",
"zoom_in": "Apropa",
"zoom_in_desc": "Apropa el mapa",
"camera_movement": "Moviment de la càmera",
"center_camera": "Centra la càmera",
"center_camera_desc": "Enfocar càmera al jugador",
"move_up": "Mou la càmera amunt",
"move_up_desc": "Mou la càmera cap amunt",
"move_left": "Mou la càmera a l'esquerra",
"move_left_desc": "Mou la càmera cap a l'esquerra",
"move_down": "Mou la càmera avall",
"move_down_desc": "Mou la càmera cap avall",
"move_right": "Mou la càmera a la dreta",
"move_right_desc": "Mou la càmera cap a la dreta",
"reset": "Restableix",
"unbind": "Desvincula",
"on": "Activat",
"off": "Desactivat",
"toggle_terrain": "Canvia la visualització del terreny",
"exit_game_label": "Surt de la Partida",
"exit_game_info": "Torna al menú principal",
"background_music_volume": "Volum de la música de fons",
"sound_effects_volume": "Volum d'efectes sonors",
"keybind_conflict_error": "La tecla {key} ja està vinculada amb una altra acció."
},
"chat": {
"title": "Xat ràpid",
"to": "Enviat a {user}: {msg}",
"from": "De {user}: {msg}",
"category": "Categoria",
"phrase": "Frase",
"player": "Jugador",
"send": "Envia",
"search": "Busca un jugador...",
"build": "Construeix el teu missatge...",
"cat": {
"help": "Ajut",
"attack": "Atac",
"defend": "Defensa",
"greet": "Salutacions",
"misc": "Altres",
"warnings": "Advertències"
},
"help": {
"troops": "Envia'm tropes, si us plau!",
"troops_frontlines": "Envia tropes a les línies de front!",
"gold": "Dona'm or, si us plau!",
"no_attack": "Per favor, no m'ataquis!",
"sorry_attack": "Perdona'm, no et volia atacar.",
"alliance": "Aliança?",
"help_defend": "Ajuda'm a defensar contra [P1]!",
"trade_partners": "Siguem companys de comerç!"
},
"attack": {
"attack": "Ataca a [P1]!",
"mirv": "Llança una MIRV a [P1]!",
"focus": "Enfoquem les armes a [P1]!",
"finish": "Eliminem a [P1], que està a les últimes!",
"build_warships": "Construeix Vaixells de Guerra!"
},
"defend": {
"defend": "Defèn a [P1]!",
"defend_from": "Defèn contra [P1]!",
"dont_attack": "No ataquis a [P1]!",
"ally": "[P1] es el meu aliat!",
"build_posts": "Construeix Torres Defensives!"
},
"greet": {
"hello": "Hola!",
"good_job": "Bona feina!",
"good_luck": "Bona sort!",
"have_fun": "Passa-t'ho bé!",
"gg": "Bona partida!",
"nice_to_meet": "Encantat de conèixer-te!",
"well_played": "Ben jugat!",
"hi_again": "Hola, un altre cop!",
"bye": "Adeu!",
"thanks": "Gràcies!",
"oops": "Ups, botó equivocat!",
"trust_me": "Pots fiar-t'en de mi. T'ho prometo!",
"trust_broken": "Confiava en tu...",
"ruining_games": "Estàs enderrocant la partida per tots dos de nosaltres.",
"dont_do_that": "No facis això!",
"same_team": "Estic al teu bàndol!"
},
"misc": {
"go": "Som-hi!",
"strategy": "Bona estratègia!",
"fun": "Aquest joc és divertit!",
"team_up": "Unim-nos contra [P1]!",
"pr": "Quan s'afegirà la meva PR...?",
"build_closer": "Construeix més a prop perquè t'arribin trens!",
"coastline": "Si us plau, deixa'm aconseguir costa."
},
"warnings": {
"strong": "[P1] està fort.",
"weak": "[P1] està fluix.",
"mirv_soon": "[P1] podrà llençar una MIRV aviat!",
"number1_warning": "El jugador número 1 guanyarà aviat si no ens aliem!",
"stalemate": "Fem les paus. Estem empatats, perdrem tots dos.",
"has_allies": "[P1] té molts aliats.",
"no_allies": "[P1] no té aliats.",
"betrayed": "[P1] ha traït al seu aliat!",
"betrayed_me": "[P1] m'ha traït!",
"getting_big": "[P1] està creixent massa ràpid!",
"danger_base": "[P1] no està protegit!",
"saving_for_mirv": "[P1] està estalviant per llançar una MIRV.",
"mirv_ready": "[P1] té prou or per llançar una MIRV!",
"snowballing": "[P1] s'està expandint massa ràpidament!",
"cheating": "[P1] està fent trampes!",
"stop_trading": "Atura el comerç amb [P1]!"
}
},
"build_menu": {
"desc": {
"atom_bomb": "Explosió petita",
"hydrogen_bomb": "Explosió gran",
"mirv": "Explosió immensa al jugador seleccionat",
"missile_silo": "Per llençar bombes nuclears",
"sam_launcher": "Defensa't contra bombes nuclears",
"warship": "Captura Vaixells de Comerç, destrueix Vaixells de Guerra i de Comerç",
"port": "Envia Vaixells de Comerç per generar or",
"defense_post": "Reforça les defenses de les fronteres properes",
"city": "Augmenta la població màxima",
"factory": "Crea ferrocarrils i genera trens"
},
"not_enough_money": "No tens prou diners"
},
"win_modal": {
"support_openfront": "Dona suport a OpenFront!",
"territory_pattern": "Compra un Aspecte de Territori per eliminar els anuncis!",
"died": "Has mort",
"your_team": "El teu equip ha guanyat!",
"other_team": "L'equip {team} ha guanyat!",
"you_won": "Has Guanyat!",
"other_won": "{player} ha guanyat!",
"nation_won": "La Nació {nation} ha guanyat!",
"exit": "Surt de la Partida",
"keep": "Segueix Jugant",
"spectate": "Mira com a espectador",
"requeue": "Torna a Jugar",
"wishlist": "Afegeix-ho a la llista de desitjos a Steam!",
"join_discord": "Uneix-te a la nostra comunitat de Discord!",
"discord_description": "Connecta amb jugadors, descobreix noves funcions i guanya premis!",
"join_server": "Uneix-te al Servidor",
"youtube_tutorial": "Necessites ajuda?"
},
"leaderboard": {
"hide": "Amaga",
"player": "Jugador",
"team": "Equip",
"owned": "Posseït",
"gold": "Or",
"maxtroops": "Tropes màximes",
"launchers": "Llançadors",
"sams": "Defensors Aeris",
"warships": "Vaixell de Guerra",
"cities": "Ciutats",
"show_control": "Mostra el control",
"show_units": "Mostra les unitats"
},
"events_display": {
"events": "Esdeveniments",
"retreating": "retirant",
"alliance_request_status": "{name} ha {status} la teva sol·licitud d'aliança",
"alliance_accepted": "acceptat",
"alliance_rejected": "rebutjat",
"alliance_nukes_destroyed_outgoing": "{count, plural, one {# bomba llançada contra {name} ha estat destruïda per causa de l'aliança} other {# bombes llençades contra {name} han estrat destruïdes per causa de l'aliança}}",
"alliance_nukes_destroyed_incoming": "{count, plural, one {# bomba llançada per {name} ha estat destruïda per causa de l'aliança} other {# bombes llençades per {name} han estrat destruïdes per causa de l'aliança}}",
"duration_second": "1 segon",
"betrayal_description": "Has trencat l'aliança amb {name}, el qual et fa un TRAIDOR (defensa {malusPercent} pitjor per {durationText})",
"duration_seconds_plural": "{seconds} segons",
"betrayed_you": "{name} ha trencat la vostra aliança",
"about_to_expire": "La teva aliança amb {name} està a punt d'expirar!",
"alliance_expired": "La teva aliança amb {name} s'ha expirat",
"attack_request": "{name} et demana que ataquis a {target}",
"sent_emoji": "Enviat a {name}: {emoji}",
"renew_alliance": "Demana renovació",
"request_alliance": "{name} et sol·licita l'aliança!",
"focus": "Focalitza",
"accept_alliance": "Accepta",
"reject_alliance": "Rebutja",
"alliance_renewed": "La teva aliança amb {name} ha estat renovada",
"wants_to_renew_alliance": "{name} vol renovar la vostra aliança",
"ignore": "Ignora",
"unit_voluntarily_deleted": "Estructura esborrada voluntàriament",
"betrayal_debuff_ends": "Defenses empitjorades per la traïció per {time}",
"attack_cancelled_retreat": "Atac cancel·lat, {troops} soldats morts durant la retirada",
"received_gold_from_captured_ship": "Has rebut {gold} or d'un vaixell de comerç capturat de {name}",
"received_gold_from_trade": "Has rebut {gold} or d'un negoci amb {name}",
"received_gold_from_conquest": "Has conquerit a {name} i guanyat {gold} or",
"conquered_no_gold": "Has conquerit a {name} (no ha jugat, or no donat)",
"missile_intercepted": "Un míssil interceptat a {unit}",
"mirv_warheads_intercepted": "{count, plural, one {{count} míssil de MIRV interceptat} other {{count} míssils de MIRV interceptats}}",
"sent_troops_to_player": "Enviat {troops} tropes a {name}",
"received_troops_from_player": "Has rebut {troops} tropes de {name}",
"sent_gold_to_player": "Enviat {gold} or a{name}",
"received_gold_from_player": "Has rebut {gold} or de {name}",
"unit_captured_by_enemy": "{unit} ha estat capturat per {name}",
"captured_enemy_unit": "Has capturat {unit} de {name}",
"unit_destroyed": "{unit} ha estat destruït",
"no_boats_available": "No et queden vaixells, en pots enviar com a molt {max}"
},
"player_type": {
"player": "Jugador",
"nation": "Nació",
"bot": "Bot"
},
"relation": {
"hostile": "Hostil",
"distrustful": "En desconfiança",
"neutral": "Neutral",
"friendly": "Amigable",
"default": "Predeterminat"
},
"player_panel": {
"gold": "Or",
"troops": "Tropes",
"betrayals": "Traïcions",
"traitor": "Traïdor",
"trading": "Fent comerç",
"active": "Actiu",
"stopped": "Aturat",
"alliance_time_remaining": "L'aliança s'acaba d'aquí",
"start_trade": "Comença el comerç",
"stop_trade": "Atura el comerç",
"stop_trade_all": "Atura el comerç amb tothom",
"start_trade_all": "Comença el comerç amb tothom",
"alliances": "Aliances",
"chat": "Xat",
"target": "Demana que l'ataquin",
"break_alliance": "Trenca l'Aliança",
"send_alliance": "Sol·licita l'Aliança",
"send_troops": "Envia Tropes",
"send_gold": "Dona Or",
"emotes": "Emojis",
"moderation": "Moderació",
"kick": "Expulsa el jugador",
"kicked": "Jugador ja expulsat",
"kick_confirm": "Expulsa a {name}?\n\nNo podran tornar a unir-se a aquesta partida.",
"arc_up": "Arc ascendent",
"arc_down": "Arc descendent",
"flip_rocket_trajectory": "Invertir la trajectòria del míssil"
},
"kick_reason": {
"duplicate_session": "Desconnectat del joc (potser estaves jugant en una altra pestanya)",
"lobby_creator": "Expulsat per l'amfitrió de la partida"
},
"send_troops_modal": {
"title_with_name": "Envia Tropes a {name}",
"available_tooltip": "Les teves tropes",
"slider_tooltip": "{percent}% •{amount}",
"aria_slider": "Control lliscant de tropes",
"capacity_note": "El receptor només pot acceptar {amount} ara mateix."
},
"send_gold_modal": {
"title_with_name": "Envia Or a {name}",
"available_tooltip": "El teu or",
"aria_slider": "Control lliscant de quantitat",
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Velocitat de reproducció",
"game_speed": "Velocitat de joc",
"fastest_game_speed": "Màx"
},
"error_modal": {
"crashed": "El joc s'ha tancat de forma inesperada.",
"connection_error": "Error de connexió!",
"paste_discord": "Si us plau, enganxeu el següent al vostre informe d'errors a Discord:",
"copy_clipboard": "Copia al porta-retalls",
"copied": "Copiat!",
"failed_copy": "No s'ha pogut copiar",
"spawn_failed": {
"title": "Aparició fallada",
"description": "La selecció automàtica del teu punt de partida ha fallat. No pots jugar aquesta partida."
},
"desync_notice": "Estàs dessincronitzat dels altres jugadors. El que veus pot ser diferent del que veuen els altres jugadors."
},
"performance_overlay": {
"reset": "Restableix",
"copy_json_title": "Copiar les mètriques de rendiment actuals com a JSON",
"copy_clipboard": "Copiar JSON",
"copied": "Copiat!",
"failed_copy": "No s'ha pogut copiar",
"fps": "FPS:",
"avg_60s": "Mitjana (60s):",
"frame": "Frame:",
"tick_exec": "Tick Exec:",
"tick_delay": "Tick Delay:",
"layers_header": "Capes (mitjana / màxima, ordenades pel temps total):"
},
"heads_up_message": {
"choose_spawn": "Tria un punt de partida",
"random_spawn": "Està activada la selecció aleatòria del punt de partida. Tria'n-te un punt de partida...",
"singleplayer_game_paused": "Partida en pausa",
"multiplayer_game_paused": "Partida aturada per l'Amfitrió",
"pvp_immunity_active": "Immunitat PVP activa per {seconds}s",
"catching_up": "Atrapant la partida..."
},
"territory_patterns": {
"title": "Aparences de Terreny",
"colors": "Colors",
"purchase": "Compra",
"show_only_owned": "Les teves Aparences de Terreny",
"all_owned": "Totes les Aparences aconseguides! Torna més tard per veure nous articles.",
"not_logged_in": "No heu iniciat sessió",
"pattern": {
"default": "Predeterminat"
},
"try_me": "Prova'm!",
"trial_remaining": "restant",
"trial_granted": "Prova de l'aparença concedida!",
"trial_cooldown": "Només una prova per cada 24 hores. Torni a provar més tard.",
"trial_login_required": "Cal iniciar sessió per provar una Aparença",
"reward_countdown": "Premi en {seconds} segons...",
"steam_wishlist_prompt": "Dona suport a OpenFront afegint-lo a la teva llista de desitjos de Steam",
"select_skin": "Tria l'Aparença",
"selected": "seleccionat"
},
"flag_input": {
"title": "Tria la Bandera",
"button_title": "Escull una bandera!",
"search_flag": "Busca..."
},
"radial_menu": {
"delete_unit_title": "Elimina l'estructura",
"delete_unit_description": "Clica per esborrar l'estructura més propera"
},
"discord_user_header": {
"avatar_alt": "Avatar"
},
"player_stats_table": {
"building_stats": "Estadístiques d'Estructures",
"ship_arrivals": "Vaixells Arribats",
"nuke_stats": "Estadístiques Nuclears",
"player_metrics": "Mètriques del jugador",
"building": "Estructura",
"ship_type": "Tipus de Vaixell",
"weapon": "Arma",
"built": "Construït",
"destroyed": "Destruït",
"captured": "Capturat",
"lost": "Perdut",
"hits": "Encertades",
"launched": "Llançat",
"landed": "Aterrat",
"sent": "Enviat",
"arrived": "Arribat",
"attack": "Atac",
"received": "Rebut",
"cancelled": "Cancel·lat",
"count": "Compte",
"gold": "Or",
"workers": "Treballadors",
"war": "Guerra",
"trade": "Comerç",
"steal": "Roba",
"unit": {
"city": "Ciutat",
"port": "Port",
"defp": "Torre Defensiva",
"saml": "Defensor Aeri",
"silo": "Llançador de Míssils",
"wshp": "Vaixell de Guerra",
"fact": "Fàbrica",
"trade": "Vaixell de Comerç",
"trans": "Vaixell de Transport",
"abomb": "Bomba Atòmica",
"hbomb": "Bomba d'Hidrogen",
"mirv": "MIRV",
"mirvw": "Míssil de MIRV"
}
},
"game_list": {
"recent_games": "Partides recents",
"game_id": "ID de la partida",
"mode": "Mode",
"mode_ffa": "Tots contra Tots",
"mode_team": "Equip",
"replay": "Reproducció",
"details": "Detalls",
"ranking": "Classificació",
"map": "Mapa",
"difficulty": "Dificultat",
"type": "Tipus"
},
"player_stats_tree": {
"public": "Públic",
"private": "Privat",
"solo": "Solo",
"mode": "Mode",
"stats_wins": "Victòries",
"stats_losses": "Derrotes",
"stats_wlr": "Ràtio de Victories/Derrotes",
"stats_games_played": "Partides Jugades",
"mode_ffa": "Tots contra Tots",
"mode_team": "Equip",
"no_stats": "No s'han registrat estadístiques per a aquesta selecció."
},
"matchmaking_button": {
"play_ranked": "Enfrontament Classificat 1 contra 1",
"description": "(ALFA)",
"login_required": "Inicia sessió per jugar classificat!",
"must_login": "Has d'iniciar sessió per jugar a partides classificades."
}
}
+3 -3
View File
@@ -659,15 +659,15 @@
"title_with_name": "Truppen an {name} senden",
"available_tooltip": "Verfügbare Truppen",
"min_keep": "Mindestbestand",
"slider_tooltip": "{{percent}} % • {{amount}}",
"slider_tooltip": "{percent} % • {amount}",
"aria_slider": "Truppenregler",
"capacity_note": "Der Empfänger kann derzeit nur {{amount}} annehmen."
"capacity_note": "Der Empfänger kann derzeit nur {amount} annehmen."
},
"send_gold_modal": {
"title_with_name": "Gold an {name} senden",
"available_tooltip": "Verfügbares Gold",
"aria_slider": "Mengenregler",
"slider_tooltip": "{{percent}} % • {{amount}}"
"slider_tooltip": "{percent} % • {amount}"
},
"replay_panel": {
"replay_speed": "Wiedergabegeschwindigkeit",
+3 -3
View File
@@ -631,17 +631,17 @@
"available_tooltip": "Τα τρέχοντα διαθέσιμα στρατεύματά σου",
"min_keep": "Ελάχιστη διατήρηση",
"min_keep_pct": "(30%)",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"toggle_attack_bar_mode": "Χρησιμοποίησε την μπάρα επίθεσης για να στείλεις στρατεύματα",
"warning_attackbar": "Μόλις ενεργοποιηθεί, δεν θα μπορείς να ανοίξεις απευθείας αυτό το modal. Θα στέλνεις στρατεύματα μόνο μέσω της μπάρας επίθεσης.",
"aria_slider": "Ρυθμιστής στρατευμάτων",
"capacity_note": "Ο παραλήπτης μπορεί να δεχτεί μόνο {{amount}} τώρα."
"capacity_note": "Ο παραλήπτης μπορεί να δεχτεί μόνο {amount} τώρα."
},
"send_gold_modal": {
"title_with_name": "Αποστολή Χρυσού στον {name}",
"available_tooltip": "Διαθέσιμος χρυσός",
"aria_slider": "Ρυθμιστικό ποσού",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Ταχύτητα επανάληψης",
+70 -36
View File
@@ -23,7 +23,8 @@
"none": "None",
"copied": "Copied!",
"click_to_copy": "Click to copy",
"enabled": "Enabled"
"enabled": "Enabled",
"map_default": "Map default"
},
"main": {
"title": "OpenFront (ALPHA)",
@@ -42,7 +43,6 @@
"play": "Play",
"news": "News",
"store": "Store",
"store_new_badge": "NEW",
"settings": "Settings",
"leaderboard": "Leaderboard",
"account": "Account",
@@ -90,6 +90,7 @@
"table_key": "Key",
"table_action": "Action",
"action_alt_view": "Alternate view (terrain/countries)",
"action_coordinate_grid": "Toggle coordinate grid overlay",
"action_attack_altclick": "Attack (when left click is set to open menu)",
"action_build": "Open build menu",
"action_emote": "Open emote menu",
@@ -115,7 +116,7 @@
"ui_options": "Options",
"ui_options_desc": "The following elements can be found inside:",
"ui_playeroverlay": "Player info overlay",
"ui_playeroverlay_desc": "When you hover over a country, the Player info overlay is displayed under Options. It shows the type of player: Human, Nation (smart bot), or Bot. A Nation's attitude towards you, ranging from Hostile to Friendly. And defending troops, gold, plus the number of Warships and various buildings the player has.",
"ui_playeroverlay_desc": "When you hover over a country, the Player info overlay is displayed under Options. It shows the type of player: Human, Nation, or Tribe. A Nation's attitude towards you, ranging from Hostile to Friendly. And defending troops, gold, plus the number of Warships and various buildings the player has.",
"ui_wilderness": "Wilderness",
"option_pause": "Pause/Unpause the game - Only available in single player mode.",
"option_timer": "Timer - Time passed since the start of the game.",
@@ -137,7 +138,7 @@
"info_trade": "Use \"Stop trading\" to stop giving the player gold and receiving their gold via trade ships. If you both click \"Start trading\" it will start again.",
"info_ally_panel": "Ally info panel",
"info_ally_desc": "When you ally with a player, the following new icons become available:",
"ally_betray": "Betray your ally, ending the alliance, halting trade, and weakening your defense. Trading between you is paused for 5 minutes (or until you become allies again) and others may stop trading too. And unless the other player was a traitor themselves, you'll be marked a traitor for 30 seconds. During this time an icon will be above your name and you will have a 50% defense debuff. Bots are less likely to ally with you and players will think twice before doing so.",
"ally_betray": "Betray your ally, ending the alliance, halting trade, and weakening your defense. Trading between you is paused for 5 minutes (or until you become allies again) and others may stop trading too. And unless the other player was a traitor themselves, you'll be marked a traitor for 30 seconds. During this time an icon will be above your name and you will have a 50% defense debuff. Tribes are less likely to ally with you and players will think twice before doing so.",
"ally_donate": "Donate some of your troops to your ally. Used when they're low on troops and are being attacked, or when they need that extra power to crush an enemy.",
"ally_donate_gold": "Donate some of your gold to your ally. Used when they're low on gold and need it for buildings, or when your team member is saving for that MIRV.",
"build_menu_title": "Build menu",
@@ -184,9 +185,10 @@
"toggle_achievements": "Toggle achievements",
"sign_in_for_achievements": "Sign in for achievements",
"options_title": "Options",
"bots": "Bots: ",
"bots": "Tribes: ",
"bots_disabled": "Disabled",
"disable_nations": "Disable Nations",
"nations": "Nations: ",
"nations_disabled": "Disabled",
"instant_build": "Instant build",
"infinite_gold": "Infinite gold",
"infinite_troops": "Infinite troops",
@@ -199,8 +201,8 @@
"options_changed_no_achievements": "Custom settings achievements disabled",
"gold_multiplier": "Gold multiplier",
"gold_multiplier_placeholder": "2.0x",
"starting_gold": "Starting gold",
"starting_gold_placeholder": "5000000"
"starting_gold": "Starting Gold (Millions)",
"starting_gold_placeholder": "5"
},
"token_login_modal": {
"title": "Logging in...",
@@ -230,6 +232,7 @@
"title": "Leaderboard",
"ranked_tab": "1v1 Ranked",
"clans_tab": "Clans",
"refresh_time": "Refreshed every 1 hour",
"loading": "Loading...",
"error": "Error loading leaderboard",
"no_stats": "No stats available",
@@ -263,7 +266,7 @@
"conquest_gold": "Conquered player gold",
"stolen_gold": "Stolen with warships",
"num_of_conquests_humans": "Player kills",
"num_of_conquests_bots": "Bot kills",
"num_of_conquests_bots": "Tribe kills",
"duration": "Duration",
"survival_time": "Survival time",
"war": "War",
@@ -319,6 +322,7 @@
"svalmel": "Svalmel",
"manicouagan": "Manicouagan",
"lemnos": "Lemnos",
"passage": "Passage",
"sierpinski": "Sierpinski",
"thebox": "The Box",
"twolakes": "Two Lakes",
@@ -326,7 +330,14 @@
"surrounded": "Surrounded",
"didier": "Didier",
"didierfrance": "Didier (France)",
"amazonriver": "Amazon River"
"amazonriver": "Amazon River",
"bosphorusstraits": "Bosphorus Straits",
"beringstrait": "Bering Strait",
"tradersdream": "Traders Dream",
"hawaii": "Hawaii",
"alps": "Alps",
"niledelta": "Nile Delta",
"arctic": "Arctic"
},
"map_categories": {
"featured": "Featured",
@@ -352,14 +363,10 @@
},
"public_lobby": {
"title": "Waiting for Game Start...",
"join": "Join next Game",
"teams_Duos": "{team_count} teams of 2 (Duos)",
"teams_Trios": "{team_count} teams of 3 (Trios)",
"teams_Quads": "{team_count} teams of 4 (Quads)",
"waiting_for_players": "Waiting for players",
"connecting": "Connecting to lobby...",
"starting_in": "Starting in {time}",
"starting_game": "Starting game…",
"starting_game": "Starting…",
"teams_hvn": "Humans vs Nations",
"teams_hvn_detailed": "{num} Humans vs {num} Nations",
"teams": "{num} teams",
@@ -373,7 +380,8 @@
"connecting": "Connecting to matchmaking server...",
"searching": "Searching for game...",
"waiting_for_game": "Waiting for game to start...",
"elo": "Your ELO: {elo}"
"elo": "Your ELO: {elo}",
"no_elo": "No ELO yet"
},
"username": {
"enter_username": "Enter your username",
@@ -387,15 +395,15 @@
},
"host_modal": {
"title": "Create Private Lobby",
"label": "Private",
"mode": "Mode",
"team_count": "Number of Teams",
"team_type": "Team Type",
"options_title": "Options",
"bots": "Bots: ",
"bots": "Tribes: ",
"bots_disabled": "Disabled",
"nations": "Nations: ",
"nations_disabled": "Disabled",
"player_immunity_duration": "PVP immunity duration (minutes)",
"disable_nations": "Disable Nations",
"max_timer": "Game length (minutes)",
"mins_placeholder": "Mins",
"instant_build": "Instant build",
@@ -422,7 +430,9 @@
"teams_Quads": "Quads (teams of 4)",
"teams_Humans Vs Nations": "Humans vs Nations",
"starting_gold": "Starting gold",
"crowded": "Crowded modifier"
"crowded": "Crowded modifier",
"hard_nations": "Hard Nations",
"leave_confirmation": "Are you sure you want to leave the lobby?"
},
"team_colors": {
"red": "Red",
@@ -432,7 +442,9 @@
"yellow": "Yellow",
"orange": "Orange",
"green": "Green",
"bot": "Bot"
"bot": "Tribes",
"humans": "Humans",
"nations": "Nations"
},
"game_starting_modal": {
"title": "Game is Starting...",
@@ -450,16 +462,27 @@
"ffa": "Free for All",
"teams": "Teams"
},
"mode_selector": {
"teams_title": "Teams",
"teams_count": "{teamCount} teams",
"teams_of": "{teamCount} teams of {playersPerTeam}",
"ranked_title": "Ranked",
"ranked_1v1_title": "1v1",
"ranked_2v2_title": "2v2",
"coming_soon": "Coming Soon"
},
"public_game_modifier": {
"random_spawn": "Random Spawn",
"compact_map": "Compact Map",
"crowded": "Crowded",
"starting_gold": "5M Starting Gold"
"hard_nations": "Hard Nations",
"starting_gold": "{amount}M Starting Gold"
},
"select_lang": {
"title": "Select Language"
},
"unit_type": {
"boat": "Boat",
"city": "City",
"defense_post": "Defense Post",
"port": "Port",
@@ -499,6 +522,8 @@
"attack_ratio_desc": "What percentage of your troops to send in an attack (1100%)",
"territory_patterns_label": "🏳️ Territory Skins",
"territory_patterns_desc": "Choose whether to display territory skin designs in game",
"coordinate_grid_label": "Coordinate Grid",
"coordinate_grid_desc": "Toggle the alphanumeric grid overlay",
"performance_overlay_label": "Performance Overlay",
"performance_overlay_desc": "Toggle the performance overlay. When enabled, the performance overlay will be displayed. Press shift-D during game to toggle.",
"easter_writing_speed_label": "Writing Speed Multiplier",
@@ -537,9 +562,11 @@
"emoji_menu_modifier_desc": "Hold this key while clicking to open the emoji menu.",
"attack_ratio_controls": "Attack Ratio Controls",
"attack_ratio_up": "Increase Attack Ratio",
"attack_ratio_up_desc": "Increase attack ratio by 10%",
"attack_ratio_up_desc": "Increase attack ratio by {amount}%",
"attack_ratio_down": "Decrease Attack Ratio",
"attack_ratio_down_desc": "Decrease attack ratio by 10%",
"attack_ratio_down_desc": "Decrease attack ratio by {amount}%",
"attack_ratio_increment_label": "Attack Ratio Keybind Increment",
"attack_ratio_increment_desc": "How much the attack ratio keybinds change per press.",
"attack_keybinds": "Attack Keybinds",
"boat_attack": "Boat Attack",
"boat_attack_desc": "Send a boat attack to the tile under your cursor.",
@@ -711,9 +738,8 @@
"show_units": "Show Units"
},
"events_display": {
"events": "Events",
"retreating": "retreating",
"retaliate": "Retaliate",
"boat": "Boat",
"alliance_request_status": "{name} {status} your alliance request",
"alliance_accepted": "accepted",
"alliance_rejected": "rejected",
@@ -756,7 +782,7 @@
"player_type": {
"player": "Player",
"nation": "Nation",
"bot": "Bot"
"bot": "Tribe"
},
"relation": {
"hostile": "Hostile",
@@ -801,15 +827,15 @@
"send_troops_modal": {
"title_with_name": "Send Troops to {name}",
"available_tooltip": "Your current available troops",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "Troops slider",
"capacity_note": "Receiver can accept only {{amount}} right now."
"capacity_note": "Receiver can accept only {amount} right now."
},
"send_gold_modal": {
"title_with_name": "Send Gold to {name}",
"available_tooltip": "Your current available gold",
"aria_slider": "Amount slider",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Replay speed",
@@ -838,15 +864,27 @@
"fps": "FPS:",
"avg_60s": "Avg (60s):",
"frame": "Frame:",
"tps": "TPS:",
"tps_avg_60s": "Avg:",
"tick_exec": "Tick Exec:",
"max_label": "max:",
"tick_delay": "Tick Delay:",
"layers_header": "Layers (avg / max, sorted by total time):"
"layers_header": "Render Layers",
"render_layers_table_header": "avg / max | tick avg",
"render_layers_summary": "Last tick: {frames} frames, {ms}ms",
"tick_layers_header": "Tick Layers",
"tick_layers_table_header": "avg / max",
"tick_layers_summary": "Last tick: {count} layers, {ms}ms",
"expand": "Expand",
"collapse": "Collapse"
},
"heads_up_message": {
"choose_spawn": "Choose a starting location",
"random_spawn": "Random spawn is enabled. Selecting starting location for you...",
"singleplayer_game_paused": "Game paused",
"multiplayer_game_paused": "Game paused by Lobby Creator"
"multiplayer_game_paused": "Game paused by Lobby Creator",
"pvp_immunity_active": "PVP immunity active for {seconds}s",
"catching_up": "Catching up..."
},
"territory_patterns": {
"title": "Skins",
@@ -919,8 +957,6 @@
"recent_games": "Recent Games",
"game_id": "Game ID",
"mode": "Mode",
"mode_ffa": "Free-for-All",
"mode_team": "Team",
"replay": "Replay",
"details": "Details",
"ranking": "Ranking",
@@ -937,8 +973,6 @@
"stats_losses": "Losses",
"stats_wlr": "Win:Loss Ratio",
"stats_games_played": "Games Played",
"mode_ffa": "Free-for-All",
"mode_team": "Team",
"no_stats": "No stats recorded for this selection."
},
"matchmaking_button": {
+961
View File
@@ -0,0 +1,961 @@
{
"lang": {
"en": "Estonian",
"native": "Eesti keel",
"svg": "estonia",
"lang_code": "et"
},
"common": {
"close": "Sulge",
"copy": "Kopeeri",
"paste": "Kleebi",
"back": "Tagasi",
"available": "Saadaval",
"preset_max": "Max",
"summary_send": "Saada",
"summary_keep": "Hoia",
"cancel": "Tühista",
"send": "Saada",
"cap_label": "Kapsel",
"cap_tooltip": "Saaja järelejäänud mahutavus",
"target_dead": "Sihtmärk hävitatud",
"target_dead_note": "Sa ei saa saata ressursse hävitatud mängijale.",
"none": "Puudub",
"copied": "Kopeeritud!",
"click_to_copy": "Klõpsa kopeerimiseks",
"enabled": "Sees"
},
"main": {
"title": "OpenFront (ALPHA)",
"login_discord": "Logi sisse Discordiga",
"sign_in": "Logi sisse",
"discord_avatar_alt": "Discordi profiili avatar",
"user_avatar_alt": "{userName}'i profiil",
"create": "Loo lobby",
"join": "Liitu Lobby'ga",
"solo": "Üksi",
"game_info": "Mängu info",
"wiki": "Viki",
"privacy_policy": "Privaatsuspoliitika",
"terms_of_service": "Kasutustingimused",
"copyright": "© OpenFront™ ja kaastöölised",
"play": "Mängi",
"news": "Uudised",
"store": "Pood",
"store_new_badge": "UUS",
"settings": "Seaded",
"leaderboard": "Edetabel",
"account": "Konto",
"help": "Abi",
"menu": "Menüü",
"troubleshooting": "Tõrkeotsing",
"go_to_troubleshooting": "Mine meie tõrkeotsingu lehele"
},
"news": {
"github_link": "GitHub'is",
"title": "Väljalaskemärkmed"
},
"troubleshooting": {
"title": "Tõrkeotsing",
"environment": "Keskkond",
"rendering": "Renderdamine",
"power": "Võimsus",
"browser": "Brauser",
"platform": "Platvorm",
"copied_to_clipboard": "Info kopeeritud lõikelauale! Võid jagada seda julgesti meie Discordis, kui sul on abi vaja.",
"os": "OS",
"device_pixel_ratio": "Seadme pikslite suhe",
"chromium_tip": "OpenFront töötab kõige paremini Cromiumil põhinevatel brauseritel.",
"hardware_acceleration_tip": "Veendu, et sinu brauseri seadetes oleks lubatud riistvarakiirendus(hardware acceleration), et saavutada parim jõudlus.",
"renderer": "Renderdaja",
"max_texture_size": "Maksimaalne tekstuuri suurus",
"high_precision_shaders": "Kõrge täpsusega shaderid",
"gpu": "GPU",
"unavailable": "Pole saadaval",
"gpu_tip": "Kontrolli, et see oleks pühendatud GPU, kui see on saadaval.",
"battery": "Aku",
"charging": "Laadimine",
"battery_level": "Aku tase",
"power_saving_tip": "Veendu, et sinu brauser ei oleks energiasäästurežiimis.",
"yes": "Jah",
"no": "Ei",
"unknown": "Tundmatu",
"software_rendering": "Tarkvaraline renderdamine",
"canvas_2d_no_gpu": "Canvas 2D (ilma GPU-ta)"
},
"help_modal": {
"video_tutorial": "Videoõpetus",
"video_tutorial_title": "OpenFront.io õpetus",
"hotkeys": "Kiirklahvid",
"table_key": "Klahv",
"table_action": "Tegevus",
"action_alt_view": "Alternatiivne vaade (maastik/riigid)",
"action_attack_altclick": "Ründa (kui vasak klõps on seatud menüü avamiseks)",
"action_build": "Ava ehitiste menüü",
"action_emote": "Ava emotsioonide menüü",
"action_center": "Keskenda kaamera mängijale",
"action_zoom": "Suumi välja/sisse",
"action_move_camera": "Liiguta kaamerat",
"action_ratio_change": "Rünnaku suhte vähendamine/suurendamine",
"action_reset_gfx": "Graafikate lähtestamine",
"action_auto_upgrade": "Lähima ehitise automaatne uuendamine",
"ui_section": "Mängu UI",
"ui_leaderboard": "Edetabel",
"ui_your_team": "Sinu tiim:",
"ui_leaderboard_desc": "Kuvab mängu parimad mängijad koos nende nimede, valduses oleva maa protsendi, kulla ja vägede arvuga. „Kuva kõik“ näitab kõiki mängijaid mängus. Kui sa ei soovi edetabelit näha, klõpsa „Peida“.",
"ui_control": "Juhtpaneel",
"ui_control_desc": "Juhtpaneel sisaldab järgmisi elemente:",
"ui_gold": "Kuld - Sinu kulla kogus ja kiirus, millega seda teenid.",
"ui_attack_ratio": "Rünnaku suhe vägede arv, mida kasutatakse rünnaku ajal. Rünnaku suhet saab reguleerida liuguri abil. Kui ründavaid vägesid on rohkem kui kaitsevägesid, kaotad rünnaku käigus vähem vägesid; kui vähem, suureneb kahju sinu ründavatele vägedele. Mõju ei ületa suhet 2:1.",
"ui_events": "Sündmuste tabel",
"ui_events_desc": "Sündmuste paneel kuvab viimaseid sündmusi, päringuid ja Kiirvestluse sõnumeid. Mõned näited on:",
"ui_events_alliance": "Liit liidupäringuid saab aktsepteerida või tagasi lükata. Liitlased saavad jagada ressursse ja vägesid, kuid ei saa üksteist rünnata. Klõpsates „Fookusseeri“ viib vaate mängijale, kes päringu saatis.",
"ui_events_attack": "Rünnakud kuvatakse saabuvad ja sinu väljaminevad rünnakud. Klõpsa sõnumile, et keskendada vaade rünnakule, tuumapommile või paadile (transpordilaev). Vägesid saab tagasi tõmmata, klõpsates punasele X-nupule. See maksab 25% sinu ründavatest vägedest. Kui paadi rünnak tõmmatakse tagasi, naaseb paat alguspunkti ja ründab seal uuesti, kui maa on selle ajaga vallutatud. Tuumapomme ei saa pärast saatmist tagasi võtta.",
"ui_events_quickchat": "Kiirvestlus siin näed saadetud ja vastu võetud sõnumeid. Mängijale sõnumi saatmiseks klõpsa tema Info-menüüs Kiirvestluse ikoonil.",
"ui_options": "Valikud",
"ui_options_desc": "Järgmised elemendid on selles:",
"ui_playeroverlay": "Mängija info ülevaade",
"ui_playeroverlay_desc": "Kui hõljud kursoriga riigi kohal, kuvatakse valikute all mängija info ülevaade. See näitab mängija tüüpi: Inimene, Robot-riik (bot, aga targem) või bot. Samuti Robot-riigi suhtumist sinusse, vahemikus Vaenulik kuni Sõbralik, kaitsevägesid, kulda ning mängija omatavate sõjalaevade ja erinevate ehitiste arvu.",
"ui_wilderness": "Avamaa",
"option_pause": "Peata/Jätka mängu saadaval ainult üksi(solo)mängu režiimis.",
"option_timer": "Taimer - aeg, mis on möödunud mängu algusest.",
"option_exit": "Väljumisnupp.",
"option_settings": "Seaded ava seadete menüü. Seal saad sisse või välja lülitada Alternatiivse vaate, Emotikonid, Tume režiimi, Ninja (anonüümsete/juhuslike nimede režiimi) ja tegevuse vasakul klõpsul.",
"radial_title": "Radiaalmenüü",
"radial_desc": "Paremklõps (või puudutus telefonis) avab radiaalmenüü. Sulge menüü, klõpsates väljaspool seda. Menüüst saad:",
"radial_build": "Ava ehitusmenüü.",
"radial_info": "Ava info menüü.",
"radial_boat": "Saada paat (transportlaev) rünnakule valitud alale. Saadaval ainult siis, kui sul on juurdepääs veele.",
"radial_donate_troops": "Anneta vägesid liitlasele, kelle peale klõpsates radiaalmenüü avasid, vastavalt rünnaku suhte liuguri protsendile.",
"radial_donate_gold": "Avab kulla annetamise liuguri, kust sa saad liitlastele kiiresti kulda saata.",
"info_title": "Infomenüü",
"info_enemy_desc": "Sisaldab teavet, nagu valitud mängija nimi, kuld, väed, kas ta on lõpetanud sinuga kaubanduse, sulle saadetud tuumapommid ja kas mängija on reetur. „Lõpetatud kaubandus“ tähendab, et sa ei saa temalt kulda ja ta ei saada sulle kulda kaubalaevade kaudu kulda. See võib toimuda käsitsi (kui mängija klõpsas „Lõpeta kaubandus“, mis kestab kuni mõlemad klõpsavad „Alusta kaubandust“) või automaatselt (kui sa reetsid oma liitlast, kestab kuni saate uuesti liitlasteks või 5 minutit). „Reetur“ kuvatakse Jah-ina 30 sekundiks, kui mängija reetis ja ründas liidus olevat mängijat. Allpool olevad ikoonid tähistavad järgmisi tegevusi:",
"info_chat": "Saada mängijale kiirvestluse sõnum. Vali kategooria, fraas ja kui fraas sisaldab [P1], vali mängija nimi, millega see asendada. Klõpsa „Saada“.",
"info_target": "Aseta mängijale sihtmärgi märk, mis kuvatakse kõigile liitlastele ja mida kasutatakse rünnakute koordineerimiseks.",
"info_alliance": "Saada mängijale liidupäring. Liitlased saavad jagada ressursse ja vägesid, kuid ei saa üksteist rünnata.",
"info_emoji": "Saada emotikon mängijale.",
"info_trade": "Kasuta „Lõpeta kaubandus“, et lõpetada mängijale kulla andmine ja tema kulla saamine kaubalaevade kaudu. Kui mõlemad klõpsate „Alusta kaubandust“, algab see uuesti.",
"info_ally_panel": "Liitlase infopaneel",
"info_ally_desc": "Kui sa teed teise mängijaga liidu, siis muutuvad järgmised uued ikoonid kättesaadavaks:",
"ally_betray": "Reeda oma liitlast, lõpetades liidu, peatades kaubanduse ja nõrgendades oma kaitset. Kaubandus teie vahel peatatakse 5 minutiks (või kuni saate uuesti liitlasteks) ning teised võivad samuti kaubanduse peatada. Kui teine mängija ei olnud ise reetur, märgitakse sind 30 sekundiks reeturiks. Selle aja jooksul kuvatakse ikoon sinu nime kohal ja sul on 50% kaitse vähendus. Robot-riigid liituvad sinuga harvemini ja mängijad mõtlevad kaks korda enne sinuga liitumist.",
"ally_donate": "Anna osa oma vägedest liitlasele. Kasutatakse siis, kui neil on vähe vägesid ja neid rünnatakse või kui nad vajavad lisajõudu vaenlase purustamiseks.",
"ally_donate_gold": "Anna osa oma kullast liitlasele. Kasutatakse siis, kui neil on kulda vähe ja nad vajavad seda ehitiste jaoks või kui sinu meeskonnaliige kogub raha MIRV'i jaoks.",
"build_menu_title": "Ehitusmenüü",
"build_menu_desc": "Ehita need või vaata, kui palju igat ehitist sa juba oled ehitanud:",
"build_name": "Nimi",
"build_icon": "Ikoon",
"build_desc": "Kirjeldus",
"build_city": "Linn",
"build_city_desc": "Suurendab sinu maksimaalset populatsiooni. Kasulik, kui sa ei saa oma territooriumi laiendada või oled peaaegu oma max populatsiooni piirini jõudnud.",
"build_factory": "Tehas",
"build_factory_desc": "Ehitatab automaatselt raudteed lähedaste linnade, sadamate ja teiste tehaste vahel ning need võivad ühendada ka sõbralike naabritega. Rongid tekivad regulaarselt ja annavad fikseeritud koguse kulda iga ehitise eest, mida nad tee peal külastavad, lisaks saad ekstra kulda, kui külastad naabrite ehitisi.",
"build_defense": "Kaitsepunker",
"build_defense_desc": "Suurendab kaitset lähedal asuvate piiridele, mis on märgitud ruudulise mustriga. Vaenlase rünnakud on aeglasemad ja vastase vägede kaotused suuremad.",
"build_port": "Sadam",
"build_port_desc": "Saab ehitada ainult vee juurde. Võimaldab ehitada sõjalaevu. Saadab automaatselt kaubalaevu sinu riigi sadamate ja teiste riikide sadamate vahel (välja arvatud juhul, kui kaubandus on peatatud), andes kulda mõlemale poolele. Kaubandus mängijaga peatub automaatselt, kui ründad või sind rünnatakse; see jätkub 5 minuti pärast või kui saate liitlasteks. Kaubandust saab käsitsi sisse või välja lülitada, kasutades „Lõpeta kaubandus“ või „Alusta kaubandust“ nuppu.",
"build_warship": "Sõjalaev",
"build_warship_desc": "Patrullib piirkonnas, vallutades vaenlase kaubalaevu ja hävitades nende paate (transpordilaevu) ning teisi sõjalaevu. Tekib lähimast sadamast ja patrullib piirkonnas, kuhu selle ehitamiseks esimesena klõpsasid. Sõjalaevu saab juhtida klõpsates nende peale rünnaku nupuga (vaata tegevust „Rünnak“ Kiirklahvidest) ja seejärel klõpsates uude piirkonda, kuhu soovid seda liigutada.",
"build_silo": "Raketi Silo",
"build_silo_desc": "Võimaldab rakette saata.",
"build_sam": "Õhutõrjeraketi raketiheitja",
"build_sam_desc": "Suudab oma 100-pikslises ulatuses vaenlase rakette tõkestada. SAM'il on 7,5-sekundiline jahutusperiood.",
"build_atom": "Tuumapomm",
"build_atom_desc": "Väike plahvatav pomm, mis hävitab territooriumi, hooneid, laevu ja paate. Tekib lähimast raketisilost ning langeb piirkonda, kuhu selle saatmiseks esimesena klõpsasid.",
"build_hydrogen": "Vesinikupomm",
"build_hydrogen_desc": "Suur plahvtatv pomm, Tekib lähimast raktisilost ja langeb piirkonda, kuhu selle saatmiseks esimesena vajutasid.",
"build_mirv": "MIRV",
"build_mirv_desc": "Mängu kõige võimsam pomm. Jaguneb väiksemateks pommideks, mis katavad väga suure ala. Kahjustab ainult seda mängijat, kellele peale esimesena klõpsasid. Tekib lähimast raketisilost ja langeb piirkonda, kuhu algselt klõpsasid.",
"player_icons": "Mängija ikoonid",
"troubleshooting_desc": "Kui sul tekib OpenFronti mängimise ajal jõudlusprobleeme, krahhe või muid tõrkeid, külasta palun meie tõrkeotsingu lehte, et saada abi levinud probleemide tuvastamisel ja lahendamisel:",
"icon_desc": "Näited mõningatest mängusisestest ikoonidest, millega võid kokku puutuda, ja nende tähendused:",
"icon_crown": "Kroon - Esimene koht edetabelil.",
"icon_traitor": "Katkine kilp - Reetur. See mängija on rünnanud oma liitlast.",
"icon_ally": "Kätlus - Liitlane. See mängija on sinu liitlane.",
"icon_embargo": "Dollarimärgiga stoppsilt embargo. See mängija on sinuga kaubanduse peatanud kas automaatselt või käsitsi.",
"icon_request": "Ümbrik liidupäring. See mängija on sulle saatnud liidupäringu.",
"info_enemy_panel": "Vaenlase infopaneel",
"exit_confirmation": "Kas oled kindel, et soovid mängust lahkuda?",
"bomb_direction": "Tuuma- või vesinikupommi kaare suund",
"icon_alt_player_leaderboard": "Mängija edetabeli ikoon",
"icon_alt_team_leaderboard": "Tiimi edetabeli ikoon"
},
"single_modal": {
"random_spawn": "Juhuslik tekkekoht",
"toggle_achievements": "Lülita sisse/välja saavutused",
"sign_in_for_achievements": "Logi sisse, et teenida saavutusi",
"options_title": "Valikud",
"bots": "Botid: ",
"bots_disabled": "Keelatud",
"disable_nations": "Keela Robot-riigid",
"instant_build": "Kohene ehitamine",
"infinite_gold": "Lõpmatu kuld",
"infinite_troops": "Lõpmatu vägesid",
"compact_map": "Kompaktne kaart",
"max_timer": "Mängu pikkus (minutites)",
"max_timer_placeholder": "Min.",
"max_timer_invalid": "Palun sisesta kehtiv maksimaalne taimeri väärtus (1120 minutit)",
"enables_title": "Luba seaded",
"start": "Alusta Mängu",
"options_changed_no_achievements": "Kohandatud seaded - saavutused välja lülitatud",
"gold_multiplier": "Kulla kordaja",
"gold_multiplier_placeholder": "2.0x",
"starting_gold": "Alguskuld",
"starting_gold_placeholder": "5000000 (5mil)"
},
"token_login_modal": {
"title": "Sisse logimine...",
"logging_in": "Sisse logimine...",
"success": "Edukalt sisse logitud kui {email}!"
},
"account_modal": {
"title": "Konto",
"connected_as": "Ühendatud kui",
"stats_overview": "Statistika ülevaade",
"link_discord": "Ühenda Discordi konto",
"log_out": "Logi välja",
"sign_in_desc": "Logi sisse, et salvestada enda statistika ja edenemine",
"or": "VÕI",
"email_placeholder": "Sisesta oma emaili aadress",
"get_magic_link": "Hangi Maagiline Link",
"linked_account": "Sisse logitud kui {account_name}",
"fetching_account": "Konto informatsiooni laadimine...",
"recovery_email_sent": "Taastamise e-kiri saadetud aadressile {email}",
"not_found": "Ei Leitud",
"clear_session": "Seansi tühjendamine",
"failed_to_send_recovery_email": "Taastamise e-kirja saatmine nurjus",
"enter_email_address": "Palun sisesta oma e-posti aadress",
"personal_player_id": "Personaalne Mängija ID:"
},
"leaderboard_modal": {
"title": "Edetabel",
"ranked_tab": "1v1 Edetabelimäng",
"clans_tab": "Klanid",
"refresh_time": "Värskendatakse iga ühe tunni tagant",
"loading": "Laadimine...",
"error": "Edetabeli laadimine nurjus",
"no_stats": "Statistika puudub",
"no_data_yet": "Andmeid veel pole",
"clan": "Klan",
"player": "Mängija",
"games": "Mängud",
"elo": "ELO",
"win_score": "Võidupunktid",
"win_score_tooltip": "Võitude kaalutud arv, arvestades klani osalust ning mängu raskust",
"loss_score": "Kaotuspunktid",
"loss_score_tooltip": "Kaotuste kaalutud arv, arvestades klani osalust ning mängu raskust",
"win_loss_ratio": "Võit/Kaotus",
"ratio": "Suhe",
"rank": "Asetus",
"try_again": "Proovi uuesti",
"your_ranking": "Sinu asetus"
},
"game_info_modal": {
"title": "Mängu info",
"players": "Mängijad",
"atoms": "Aatomid",
"hydros": "Vesinikud",
"mirv": "MIRV",
"bombs": "Pommid",
"total_gold": "Kogusumma",
"all_gold": "Kogu kuld",
"trade": "Kaubandus",
"train_trade": "Rong",
"naval_trade": "Kaubalaev",
"conquest_gold": "Vallutatud mängija kuld",
"stolen_gold": "Varastatud sõjalaevadega",
"num_of_conquests_humans": "Mängija tapmised",
"num_of_conquests_bots": "Botide tapmised",
"duration": "Kestvus",
"survival_time": "Ellujäämise aeg",
"war": "Sõda",
"economy": "Majandus",
"conquests": "Vallutused",
"pirate": "Piraat",
"conquered": "Vallutatud",
"loading_game_info": "Mängu statistika laadimine",
"no_winner": "See mäng lõppes võitjata (või Robot-riik võitis)"
},
"map": {
"map": "Kaart",
"featured": "Esile toodud",
"all": "Kõik",
"world": "Maailm",
"giantworldmap": "Hiiglaslik maalilmakaart",
"europe": "Euroopa",
"mena": "MENA",
"northamerica": "Põhja-Ameerika",
"oceania": "Okeaania",
"blacksea": "Must Meri",
"africa": "Aafrika",
"asia": "Aasia",
"mars": "Mars",
"southamerica": "Lõuna-Ameerika",
"britanniaclassic": "Britannia (klassikaline)",
"britannia": "Britannia",
"gatewaytotheatlantic": "Sissepääs Atlandi ookeani",
"australia": "Austraalia",
"random": "Suvaline",
"iceland": "Island",
"pangaea": "Panguea",
"eastasia": "Ida-Aasia",
"betweentwoseas": "Kahe Mere Vahel",
"faroeislands": "Fääri Saared",
"deglaciatedantarctica": "Jäävaba Antarktika",
"europeclassic": "Euroopa (klassikaline)",
"falklandislands": "Falklandi Saared",
"baikal": "Baikali järv",
"halkidiki": "Halkidiki",
"straitofgibraltar": "Giblartari väin",
"italia": "Itaalia",
"japan": "Jaapan",
"yenisei": "Jeneissei",
"pluto": "Pluuto",
"montreal": "Montreal",
"newyorkcity": "New-Yorki Linn",
"achiran": "Achiran",
"baikalnukewars": "Baikali järv (Tummasõda)",
"fourislands": "Neli Saart",
"gulfofstlawrence": "Saint Lawrencei laht",
"lisbon": "Lisbon",
"svalmel": "Svalmel",
"manicouagan": "Manicouagan",
"lemnos": "Lemnos",
"sierpinski": "Sierpinski",
"thebox": "Kast",
"twolakes": "Kaks järve",
"straitofhormuz": "Hormuzi väin",
"surrounded": "Ümbritsetud",
"didier": "Didier",
"didierfrance": "Didier (Prantsusmaa)",
"amazonriver": "Amazoni jõgi",
"tradersdream": "Kaupmehe Unistus",
"hawaii": "Havai"
},
"map_categories": {
"featured": "Esile toodud",
"continental": "Mandriline",
"regional": "Piirkondlik",
"fantasy": "Muu",
"special": "Eriline",
"arcade": "Arkaad"
},
"map_component": {
"loading": "Laadimine...",
"error": "Viga"
},
"private_lobby": {
"title": "Ühine Privaatse Lobbyga",
"enter_id": "Sisesta Lobby ID",
"join_lobby": "Liitu lobbyga",
"not_found": "Lobby ei leitud. Palun kontrolli ID'd ja proovi uuesti.",
"error": "Viga tekkis. Proovi uuesti või võta ühendust tugiteenusega.",
"joined_waiting": "Liitusid lobbyga! Ootame kuni host alustab...",
"version_mismatch": "See mäng tehti teise versiooniga. Ei saa ühenduda.",
"disabled_units": "Keelatud Üksused"
},
"public_lobby": {
"title": "Mängu alguse ootamine...",
"join": "Liitu järgmise mänguga",
"teams_Duos": "{team_count} kahelist meeskonda (Duod)",
"teams_Trios": "{team_count} kolmelist meeskonda (Triod)",
"teams_Quads": "{team_count} neljalist meeskonda (Quadid)",
"waiting_for_players": "Mängijate ootamine",
"connecting": "Lobbyga ühendamine...",
"starting_in": "Alustamine {time}",
"starting_game": "Mängu alustamine…",
"teams_hvn": "Inim-mängijad vs robot-riigid",
"teams_hvn_detailed": "{num} Inim-mängijat vs {num} robot-riiki",
"teams": "{num} meeskonda,",
"players_per_team": "igas {num} mängijat",
"started": "Algas",
"status": "Seisund",
"join_timeout": "Sa ei liitunud mänguga õigel ajal."
},
"matchmaking_modal": {
"title": "1v1 edetabelimängu Otsing (ALFA)",
"connecting": "Ühendamine mängu otsingu serveriga...",
"searching": "Mängu otsing...",
"waiting_for_game": "Mängu alguse ootamine...",
"elo": "Sinu ELO: {elo}"
},
"username": {
"enter_username": "Sisestage oma kasutajanimi",
"not_string": "Kasutajanimi peab olema tekst.",
"too_short": "Kasutajanimi peab olema vähemalt {min} tähte pikk.",
"too_long": "Kasutajanimi ei tohi pikem olla, kui {max} tähte.",
"invalid_chars": "Kasutajanimi saab sisaldada ainult tähti, numbreid, tühikuid ja allkriipsusid.",
"tag": "SILT",
"tag_too_short": "Klani silt peab sisaldama 2-5 tähestiku- või numbrimärki.",
"tag_invalid_chars": "Klani silt saab sisaldada ainult tähte ja numbreid."
},
"host_modal": {
"title": "Loo Privaatne Lobby",
"label": "Privaatne",
"mode": "Režiim",
"team_count": "Meeskondade arv",
"team_type": "Meeskonna tüüp",
"options_title": "Valikud",
"bots": "Botid: ",
"bots_disabled": "Keelatud",
"player_immunity_duration": "PVP immunsuse kestvus (minutites)",
"disable_nations": "Keela Robot-riigid",
"max_timer": "Mängu pikkus (minutites)",
"mins_placeholder": "Min.",
"instant_build": "Kohene ehitamine",
"infinite_gold": "Lõpmatu kuld",
"donate_gold": "Anneta kulda",
"infinite_troops": "Lõpmatu vägesid",
"donate_troops": "Anneta vägesid",
"compact_map": "Kompaktne kaart",
"enables_title": "Luba seaded",
"player": "Mängija",
"players": "Mängijad",
"nation_players": "Robot-riigid",
"nation_player": "Robot-riik",
"waiting": "Mängijate ootamine...",
"random_spawn": "Juhuslik tekkekoht",
"start": "Alusta Mängu",
"host_badge": "Korraldaja",
"assigned_teams": "Määratud Meeskonnad",
"empty_teams": "Tühjad Tiimid",
"empty_team": "Tühi",
"remove_player": "Eemalda {username}",
"teams_Duos": "Duod (Kahesed meeskonnad)",
"teams_Trios": "Triod (Kolmesed meeskonnad)",
"teams_Quads": "Quadid (Neljased meeskonnad)",
"teams_Humans Vs Nations": "Inim-mängijad vs robot-riigid",
"starting_gold": "Alguskuld",
"crowded": "Rahvarohke modifikaator"
},
"team_colors": {
"red": "Punane",
"blue": "Sinine",
"teal": "Sinakasroheline",
"purple": "Lilla",
"yellow": "Kollane",
"orange": "Oranž",
"green": "Roheline",
"bot": "Bot"
},
"game_starting_modal": {
"title": "Mäng algab...",
"credits": "Krediit",
"code_license": "Kood litsentseeritud AGPL-3.0 alusel (garantiid ei ole)"
},
"difficulty": {
"difficulty": "Robot-riigi raskustase",
"easy": "Lihtne",
"medium": "Keskmine",
"hard": "Raske",
"impossible": "Võimatu"
},
"game_mode": {
"ffa": "Igaüks enda eest",
"teams": "Tiimid"
},
"public_game_modifier": {
"random_spawn": "Juhuslik Tekkekoht",
"compact_map": "Kompaktne kaart",
"crowded": "Rahvarohke",
"starting_gold": "5Mil. Alguskuld"
},
"select_lang": {
"title": "Vali keel"
},
"unit_type": {
"city": "Linn",
"defense_post": "Kaitsepunker",
"port": "Sadam",
"warship": "Sõjalaev",
"missile_silo": "Raketi Silo",
"sam_launcher": "Õhutõrjeraketi raketiheitja",
"atom_bomb": "Tuumapomm",
"hydrogen_bomb": "Vesinikupomm",
"mirv": "MIRV",
"factory": "Tehas"
},
"user_setting": {
"title": "Seaded",
"tab_basic": "Põhisätted",
"tab_keybinds": "Otseteed",
"dark_mode_label": "Tume režiim",
"dark_mode_desc": "Lülita saidi välimus heleda ja tumeda teema vahel",
"emojis_label": "Emojid",
"emojis_desc": "Lülita, kas emotikone mängus kuvatakse või mitte",
"alert_frame_label": "Hoiatusraam",
"alert_frame_desc": "Lülita hoiatusraam. Kui see on sisse lülitatud, kuvatakse raam, kui sind reedetakse või rünnatakse maismaal.\n",
"special_effects_label": "Eriefektid",
"special_effects_desc": "Lülita eriefektid sisse/välja. Lülita välja, et parandada jõudlust",
"structure_sprites_label": "Struktuuri Ikoonid",
"structure_sprites_desc": "Lülita struktuuri ikoonid sissa/välja",
"cursor_cost_label_label": "Kursori ehituskulu",
"cursor_cost_label_desc": "Näita ehituskulude märki hiirekursori ikooni all\n",
"anonymous_names_label": "Peidetud nimed",
"anonymous_names_desc": "Peida päris mängijate nimed suvalistega enda ekraanil.",
"lobby_id_visibility_label": "Peidetud Lobby ID'd",
"lobby_id_visibility_desc": "Peida Lobby ID, kui teed privaatse lobby seanssi",
"toggle_visibility": "Lülita Nähtavus",
"left_click_label": "Tee Vasak Klõps, et avada menüü",
"left_click_desc": "Kui SEES, siis vasak klõps avab menüü ja mõõga nupp ründab. Kui VÄLJAS, siis vasak klõps ründab otse.",
"left_click_menu": "Vasak Klõps Menüü",
"attack_ratio_label": "⚔️Rünnakusuhe",
"attack_ratio_desc": "Kui suur protsent oma väest saata rünnakule (1100%)",
"territory_patterns_label": "🏳️ Territooriumi Skinid",
"territory_patterns_desc": "Vali, kas näidata territooriumi skini disaini mängus",
"performance_overlay_label": "Jõudluse ülevaade",
"performance_overlay_desc": "Lülita jõudluse ülevaadet. Kui see on sisse lülitatud, kuvatakse ülevaade. Mängu ajal saab seda lülitada klahvikombinatsiooniga Shift+D.",
"easter_writing_speed_label": "Kirjututamise kiiruse kordaja",
"easter_writing_speed_desc": "Muuda, kui kiiresti sa teeskled koodimist (x1x100)",
"easter_bug_count_label": "Bug'ide arv",
"easter_bug_count_desc": "Kui paljude bug'idega sa nõus oled (01000, emotsionaalselt)",
"press_a_key": "Vajuta klahvi",
"view_options": "Vaata Valikuid",
"toggle_view": "Muuda vaadet",
"toggle_view_desc": "Alternatiivne vaade (maastik/riigid)",
"build_controls": "Ehituse kontrollid",
"build_city": "Ehita Linn",
"build_city_desc": "Ehita Linn oma cursori alla.",
"build_factory": "Ehita Tehas",
"build_factory_desc": "Ehita Tehas oma cursori alla.",
"build_defense_post": "Ehita Kaitsepunker",
"build_defense_post_desc": "Ehita Kaitsepunker oma kursori alla.",
"build_port": "Ehita Sadam",
"build_port_desc": "Ehita Sadam oma cursori alla.",
"build_warship": "Ehita Sõjalaev",
"build_warship_desc": "Ehita Sõjalaev oma cursori alla.",
"build_missile_silo": "Ehita Raketi silo",
"build_missile_silo_desc": "Ehita Raketi silo oma cursori alla.",
"build_sam_launcher": "Ehita Õhutõrjeraketi raketiheitja",
"build_sam_launcher_desc": "Ehita Õhutõrjeraketi raketiheitja oma cursori alla.",
"build_atom_bomb": "Ehita Tuumapomm",
"build_atom_bomb_desc": "Ehita Tuumapomm oma cursori alla.",
"build_hydrogen_bomb": "Ehita Vesinikpomm",
"build_hydrogen_bomb_desc": "Ehita Vesinikpomm oma cursori alla.",
"build_mirv": "Ehita MIRV",
"build_mirv_desc": "Ehita MIRV oma cursori alla.",
"menu_shortcuts": "Menüü Otseteed",
"build_menu_modifier": "Ehita Menüü Modifikaator.",
"build_menu_modifier_desc": "Hoia seda klahvi all samal ajal, kui avad ehitusmenüü.",
"emoji_menu_modifier": "Emoij Menüü Modifikaator",
"emoji_menu_modifier_desc": "Hoia seda klahvi all samal ajal, kui avad emoij menüü.",
"attack_ratio_controls": "Ründesuhe kontrollid",
"attack_ratio_up": "Tõsta Ründesuhet",
"attack_ratio_up_desc": "Tõsta Ründesuhet 10% võrra",
"attack_ratio_down": "Alanda Ründesuhet",
"attack_ratio_down_desc": "Alanda Ründesuhet 10% võrra",
"attack_keybinds": "Ründe Kiirklahv",
"boat_attack": "Laeva Rünne",
"boat_attack_desc": "Saada laevarünnak oma cursori alla olevasse ruutu.",
"ground_attack": "Maarünne",
"ground_attack_desc": "Saada maarünne oma cursori alla olevasse ruutu.",
"swap_direction": "Pööra Raketi Trajektoori",
"swap_direction_desc": "Vali raketi laskmise Trajektoor (Ülesse/alla).",
"zoom_controls": "Suumi juhtimine",
"zoom_out": "Suumi välja",
"zoom_out_desc": "Suumi välja kaardil",
"zoom_in": "Suumi sisse",
"zoom_in_desc": "Suumi kaardi sisse",
"camera_movement": "Kaamera liigutamine",
"center_camera": "Tsentreeri Kaamera",
"center_camera_desc": "Tsentreeri kaamera mängija peale",
"move_up": "Liiguta Kaamera Ülesse",
"move_up_desc": "Liiguta Kaamerat ülesse poole",
"move_left": "Liiguta Kaamerat Vasakule",
"move_left_desc": "Liiguta kaamerat vasakule poole",
"move_down": "Liiguta Kaamerat Alla",
"move_down_desc": "Liiguta Kaamerat alla poole",
"move_right": "Liiguta Kaamerat Paremale",
"move_right_desc": "Liiguta Kaamerat paremale poole",
"reset": "Lähtesta",
"unbind": "Tühista määrang",
"on": "Sees",
"off": "Väljas",
"toggle_terrain": "Lülita sisse/välja maa-alasid",
"exit_game_label": "Välju Mängust",
"exit_game_info": "Tagasi peamenüüle",
"background_music_volume": "Taustamuusika helitugevus",
"sound_effects_volume": "Eriefektide helitugevus",
"keybind_conflict_error": "Nupp {key} on juba määratud teisele tegevusele."
},
"chat": {
"title": "Kiirvestlus",
"to": "Saadetud {user}'le: {msg}",
"from": "Sõnum {user}'lt: {msg}",
"category": "Kategooria",
"phrase": "Fraas",
"player": "Mängija",
"send": "Saada",
"search": "Otsi Mängijat...",
"build": "Tee oma sõnum...",
"cat": {
"help": "Abi",
"attack": "Ründa",
"defend": "Kaitse",
"greet": "Tervist",
"misc": "Varia",
"warnings": "Hoiatused"
},
"help": {
"troops": "Palun anna mulle vägesid!",
"troops_frontlines": "Saada vägesid eesliinidele!",
"gold": "Palun anna mulle kulda!",
"no_attack": "Palun ära ründa mind!",
"sorry_attack": "Vabandan, ma ei tahtnud sind rünnata.",
"alliance": "Soovid teha liitu?",
"help_defend": "Aita mul kaitsta [P1] vastu!",
"trade_partners": "Saame kaubanduspartneriteks!"
},
"attack": {
"attack": "Ründa [P1]!",
"mirv": "Saada MIRV [P1]'le!",
"focus": "Fokuseeri tuld [P1] peale!",
"finish": "Tapame lõplikult [P1]!",
"build_warships": "Ehita sõjalaevu!"
},
"defend": {
"defend": "Kaitse [P1]!",
"defend_from": "Kaitse [P1] eest!",
"dont_attack": "Ära ründa [P1]!",
"ally": "[P1] on mu liitlane!",
"build_posts": "Ehita kaitsepunkreid!"
},
"greet": {
"hello": "Tere!",
"good_job": "Hästi tehtud!",
"good_luck": "Edu!",
"have_fun": "Lõbutse!",
"gg": "Hea Mäng!",
"nice_to_meet": "Tore sinuga tutvuda!",
"well_played": "Hästi Mängisid!",
"hi_again": "Tere jälle!",
"bye": "Head aega!",
"thanks": "Aitäh!",
"oops": "Oih, vale nupp!",
"trust_me": "Sa saad mind usaldada!",
"trust_broken": "Ma usaldasin sind...",
"ruining_games": "Sa rikud meie mõlema mängu ära.",
"dont_do_that": "Ära tee seda!",
"same_team": "Ma olen sinu poolel!"
},
"misc": {
"go": "Lähme!",
"strategy": "Hea strateegia sul!",
"fun": "See mäng on lõbus!",
"team_up": "Teeme koostööd [P1] vastu!",
"pr": "Kunas küll mu PR saab ühendatud...?",
"build_closer": "Ehita lähemale, et saaks ronge!",
"coastline": "Palun lase mul saada merepiir."
},
"warnings": {
"strong": "[P1] on tugev.",
"weak": "[P1] on nõrk.",
"mirv_soon": "[P1] saab lasta MIRV'i varsti!",
"number1_warning": "Esimene koht edetabelis saab võidu varsti, kui just me ei tee koostööd!",
"stalemate": "Teeme rahu. See on viik, me mõlemad muidu kaotame.",
"has_allies": "[P1]'l on palju liitlasi.",
"no_allies": "[P1]'l pole liitlasi.",
"betrayed": "[P1] reetis oma liitlase!",
"betrayed_me": "[P1] reetis mind!",
"getting_big": "[P1] kasvab liiga kiiresti!",
"danger_base": "[P1] on kaitseta!",
"saving_for_mirv": "[P1] kogub MIRV'i jaoks raha, et seda lasta.",
"mirv_ready": "[P1]'l on piisavalt kulda, et lasta MIRV!",
"snowballing": "[P1] snowballib liiga kiiresti!",
"cheating": "[P1] Petab!",
"stop_trading": "Lõpeta kaubandus [P1]'ga!"
}
},
"build_menu": {
"desc": {
"atom_bomb": "Väike plahvatus",
"hydrogen_bomb": "Suur plahvatus",
"mirv": "Hiiglaslik plahvatus, suunatud ainult ühe mängija poole",
"missile_silo": "Kasutatakse, et lasta tuumapomme",
"sam_launcher": "Kaitseb tulevate tuumapommide eest",
"warship": "Püüab kinni kaubalaevu, hävitab teisi sõjalaevu ja transportlaevu",
"port": "Saada kaubalaevu, et genereerida kulda",
"defense_post": "Tugevdab lähedalasuvaid piire teiste riikidega",
"city": "Suurendab maksimaalset populatsiooni",
"factory": "Teeb raudteid ja ronge"
},
"not_enough_money": "Pole piisavalt raha"
},
"win_modal": {
"support_openfront": "Toeta OpenFront'i!",
"territory_pattern": "Osta territooriumi skin, et minna reklaami-vabaks!",
"died": "Sa said surma",
"your_team": "Sinu tiim võitis!",
"other_team": "{team} tiim võitis!",
"you_won": "Sa võitsid!",
"other_won": "{player} võitis!",
"nation_won": "Robot-riik {nation} võitis!",
"exit": "Välju Mängust",
"keep": "Jätka mängu",
"spectate": "Hakka pealtvaatajaks",
"requeue": "Mängi uuesti",
"wishlist": "Pane soovilisti Steam'is!",
"join_discord": "Ühine meie Discordi kogukonnaga!",
"discord_description": "Liitu teiste mängijatega, avasta uusi fuktsioone ja võida auhindu!",
"join_server": "Mine serverisse",
"youtube_tutorial": "Vajad abi?"
},
"leaderboard": {
"hide": "Peida",
"player": "Mängija",
"team": "Tiim",
"owned": "Omastatud",
"gold": "Kuld",
"maxtroops": "Maks. väed",
"launchers": "Käivitajad",
"sams": "Õhutõrjeraketi raketiheitjad",
"warships": "Sõjalaevad",
"cities": "Linnad",
"show_control": "Näita kontrolli",
"show_units": "Näita vägesid"
},
"events_display": {
"events": "Sündmused",
"retreating": "Taganemine",
"alliance_request_status": "{name} {status} sinu liidulepingu",
"alliance_accepted": "võttis vastu",
"alliance_rejected": "lükkas tagasi",
"alliance_nukes_destroyed_outgoing": "{count, plural,one {# tuumapomm lastud {name} poole hävitati liidu pärast}other {# Tummapommi lastud {name} poole hävitati liidu pärast}}",
"alliance_nukes_destroyed_incoming": "{count, plural,one {# tuumapomm lastud {name} poolt hävitati liidu pärast}other {# tummapommi lastud {name} poolt hävitati liidu pärast}}",
"duration_second": "1 sekund",
"betrayal_description": "Sa lõpetasid liidu {name}'ga, mis teeb su REETURIKS (sul on nüüd {malusPercent}% kaitsenõrgesus {durationText})",
"duration_seconds_plural": "{seconds} sekundit",
"betrayed_you": "{name} lõpetas liidu sinuga",
"about_to_expire": "Su liiduleping {name}'ga on aegumas!",
"alliance_expired": "Su liiduleping {name}'ga aegus",
"attack_request": "{name} soovib, et sa ründaksid {target}",
"sent_emoji": "Saadetud {name}'le: {emoji}",
"renew_alliance": "Küsi uuendust",
"request_alliance": "{name} Soovib sinuga liidulepingu sõlmida!",
"focus": "Fokuseeri",
"accept_alliance": "Nõustu",
"reject_alliance": "Lükka tagasi",
"alliance_renewed": "Sinu liiduleping {name}'ga on uuendatud",
"wants_to_renew_alliance": "{name} soovib uuendata sinuga liitu",
"ignore": "Ignoreeri",
"unit_voluntarily_deleted": "Üksus kustutati vabatahtlikult",
"betrayal_debuff_ends": "{time} sekundit veel, kuni reeturi nõrgestus lõpeb",
"attack_cancelled_retreat": "Rünnak tühistatud, {troops} sõdurit tapetud taganemise ajal",
"received_gold_from_captured_ship": "Teenisid {gold} kulda kaubalaevast, mis üle võtsid {name}'lt",
"received_gold_from_trade": "Teenisid {gold} kulda kaubandusest koos {name}'ga",
"received_gold_from_conquest": "Vallutasid {name} ja said {gold} kulda",
"conquered_no_gold": "Vallutasid {name} (ei mänginud, kulla auhinda pole)",
"missile_intercepted": "Rakett tõkestatud {unit}",
"mirv_warheads_intercepted": "{count, plural,one {{count} MIRV'i tuumapea tõkestatud}other {{count} MIRV'i tuumapead tõkestatud}}",
"sent_troops_to_player": "Saatsid {troops} sõdurit {name}'le",
"received_troops_from_player": "Said {troops} sõdurit {name}'lt",
"sent_gold_to_player": "Saatsid {gold} kulda {name}'le",
"received_gold_from_player": "Said {gold} kulda {name}'lt",
"unit_captured_by_enemy": "Sinu {unit} püüti kinni {name} poolt",
"captured_enemy_unit": "Püüdsid kinni {unit} {name} poolt",
"unit_destroyed": "Sinu {unit} hävitati",
"no_boats_available": "Laevu pole rohkem saadaval, maks. {max}"
},
"player_type": {
"player": "Mängija",
"nation": "Robot-riik",
"bot": "Bot"
},
"relation": {
"hostile": "Vaenulik",
"distrustful": "Umbusklik",
"neutral": "Neutraalne",
"friendly": "Sõbralik",
"default": "Tavaline"
},
"player_panel": {
"gold": "Kuld",
"troops": "Väed",
"betrayals": "Reetmised",
"traitor": "Reetur",
"trading": "Kaubandus",
"active": "Aktiivne",
"stopped": "Peatatud",
"alliance_time_remaining": "Liit aegub",
"start_trade": "Alusta kaubandust",
"stop_trade": "Lõpeta kaubandus",
"stop_trade_all": "Lõpeta kaubandus kõigiga",
"start_trade_all": "Alusta kaubandust kõigiga",
"alliances": "Liidud",
"chat": "Vestlus",
"target": "Sihtmärk",
"break_alliance": "Lõpeta liit",
"send_alliance": "Saada Liidupäring",
"send_troops": "Saada vägesid",
"send_gold": "Saada kulda",
"emotes": "Emoijd",
"moderation": "Modereerimine",
"kick": "Mängija välja viskamine",
"kicked": "Juba välja visatud",
"kick_confirm": "Kas visata välja {name}?\n\nNad ei saa siia mängu tagasi tulla.",
"arc_up": "Ülespoole kaar",
"arc_down": "Allapoole kaar",
"flip_rocket_trajectory": "Pööra raketi trajektoori"
},
"kick_reason": {
"duplicate_session": "Mängust välja visatud (võib-olla mängisid teisel aknal)",
"lobby_creator": "Välja visatud lobby tegija poolt"
},
"send_troops_modal": {
"title_with_name": "Saada vägesid {name}'le",
"available_tooltip": "Hetkel sinul kõik saadaval olevad väed",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "Vägede liugur",
"capacity_note": "Vastuvõttja sab ainult vastu võtta praegu {amount}."
},
"send_gold_modal": {
"title_with_name": "Saada kulda {name}'le",
"available_tooltip": "Hetkel sinul kõik saadaval olev kuld",
"aria_slider": "Koguse liugur",
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Taasesituse kiirus",
"game_speed": "Mängu kiirus",
"fastest_game_speed": "Maks."
},
"error_modal": {
"crashed": "Mäng jooksis kokku!",
"connection_error": "Ühenduse viga!",
"paste_discord": "Palu kleebi järgnev oma bug reporti Discordis:",
"copy_clipboard": "Kopeeri clipboard'i",
"copied": "Kopeeritud!",
"failed_copy": "Kopeerimine nurjus",
"spawn_failed": {
"title": "Tekkimine nurjus",
"description": "Automaatne tekkimisvalik nurjus. Sa ei saa seda mängu mängida."
},
"desync_notice": "Sul puudub sünkroon teiste mängijatega. See, mida näed, võib erineda teiste mängijate vaadetest."
},
"performance_overlay": {
"reset": "Lähtesta",
"copy_json_title": "Kopeeri praegused jõudlus mõõtmed JSON'ina",
"copy_clipboard": "Kopeeri JSON",
"copied": "Kopeeritud!",
"failed_copy": "Kopeerimine nurjus",
"fps": "FPS:",
"avg_60s": "Keskmine(60s):",
"frame": "Kaader:",
"tick_exec": "Tick Exec:",
"tick_delay": "Ticki Viivitus:",
"layers_header": "Kihid (keskmine / maksimaalne, järjestatud koguaegade järgi):"
},
"heads_up_message": {
"choose_spawn": "Vali alguse koht",
"random_spawn": "Suvaline tekke asukoht on sisse lülitatud. Sulle tekke asukohe valimine...",
"singleplayer_game_paused": "Mäng pausil",
"multiplayer_game_paused": "Mäng pausile pandud Lobby Tegija poolt",
"pvp_immunity_active": "PVP immuunsus töötab {seconds} sekundit",
"catching_up": "Jõuan järgi..."
},
"territory_patterns": {
"title": "Skinid",
"colors": "Värvid",
"purchase": "Osta",
"show_only_owned": "Minu Skinid",
"all_owned": "Sa omad kõiki skine! Tule hiljem tagasi, et näha uusi.",
"not_logged_in": "Sisse logimata",
"pattern": {
"default": "Vaikimisi"
},
"try_me": "Proovi mind!",
"trial_remaining": "jäänud",
"trial_granted": "Skini prooviperiood antud!",
"trial_cooldown": "Ainult üks prooviperiood 24 tunni jooksul. Proovi hiljem uuesti.",
"trial_login_required": "Pead olema sisse logitud, et proovida skine",
"reward_countdown": "Tasu {seconds} sekundi pärast...",
"steam_wishlist_prompt": "Toeta OpenFront'i lisades selle oma Steam wishlist'i",
"select_skin": "Vali Skin",
"selected": "valitud"
},
"flag_input": {
"title": "Vali Lipp",
"button_title": "Vali Lipp!",
"search_flag": "Otsi..."
},
"radial_menu": {
"delete_unit_title": "Kustuta Üksus",
"delete_unit_description": "Klõpsa, et kustutada lähim üksus"
},
"discord_user_header": {
"avatar_alt": "Avatar"
},
"player_stats_table": {
"building_stats": "Ehitus statistika",
"ship_arrivals": "Laevade saabumised",
"nuke_stats": "Tuumapommide statistikad",
"player_metrics": "Mängija mõõdikud",
"building": "Ehitis",
"ship_type": "Laeva tüüp",
"weapon": "Relv",
"built": "Ehitatud",
"destroyed": "Hävitatud",
"captured": "Vallutatud",
"lost": "Kaotatud",
"hits": "Hitid",
"launched": "Käivitatud",
"landed": "Maandunud",
"sent": "Saadetud",
"arrived": "Saabunud",
"attack": "Ründa",
"received": "Saadud",
"cancelled": "Tühistatud",
"count": "Kogus",
"gold": "Kuld",
"workers": "Töötajad",
"war": "Sõda",
"trade": "Kauple",
"steal": "Varasta",
"unit": {
"city": "Linn",
"port": "Sadam",
"defp": "Kaitsepunker",
"saml": "Õhutõrjeraketi raketiheitja",
"silo": "Raketi Silo",
"wshp": "Sõjalaev",
"fact": "Tehas",
"trade": "Kaubalaev",
"trans": "Transportlaev",
"abomb": "Tuumapomm",
"hbomb": "Vesinikupomm",
"mirv": "MIRV",
"mirvw": "MIRV'i tuumapea"
}
},
"game_list": {
"recent_games": "Hiljutised mängud",
"game_id": "Mängu ID",
"mode": "Režiim",
"mode_ffa": "Igaüks enda eest",
"mode_team": "Tiim",
"replay": "Taasesitus",
"details": "Üksikasjad",
"ranking": "Reitingud",
"map": "Kaart",
"difficulty": "Raskusaste",
"type": "Tüüp"
},
"player_stats_tree": {
"public": "Avalik",
"private": "Privaatne",
"solo": "Üksi",
"mode": "Režiim",
"stats_wins": "Võidud",
"stats_losses": "Kaotused",
"stats_wlr": "Võitude ja kaotuste suhe",
"stats_games_played": "Mänge mängitud",
"mode_ffa": "Igaüks enda eest",
"mode_team": "Tiim",
"no_stats": "Selle valiku jaoks pole andmeid salvestatud."
},
"matchmaking_button": {
"play_ranked": "1v1 edetabelimängu Otsing (ALFA",
"description": "(ALFA)",
"login_required": "Logi sisse, et mängida edetabelimänge!",
"must_login": "Sa pead olema sisse logitud, et mängida edetabelimänge!"
}
}
+3 -3
View File
@@ -659,15 +659,15 @@
"title_with_name": "ارسال نیروها به {name}",
"available_tooltip": "نیروهای فعلی در دسترس شما",
"min_keep": "حداقل نگهداری",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "نوار نیروها",
"capacity_note": "گیرنده فقط می‌تواند {{amount}} را در حال حاضر بپذیرد."
"capacity_note": "گیرنده فقط می‌تواند {amount} را در حال حاضر بپذیرد."
},
"send_gold_modal": {
"title_with_name": "ارسال طلا به {name}",
"available_tooltip": "طلا فعلی در دسترس شما",
"aria_slider": "اسلاید مقدار",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "سرعت بازپخش",
+3 -3
View File
@@ -790,15 +790,15 @@
"title_with_name": "Envoyer des troupes à {name}",
"available_tooltip": "Vos troupes actuellement disponibles",
"min_keep": "Garder au minimum",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "Curseur de troupes",
"capacity_note": "Le destinataire ne peut accepter que {{amount}} pour le moment."
"capacity_note": "Le destinataire ne peut accepter que {amount} pour le moment."
},
"send_gold_modal": {
"title_with_name": "Envoyer de l'or à {name}",
"available_tooltip": "Votre or disponible",
"aria_slider": "Curseur de quantité",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Vitesse de relecture",
+115 -107
View File
@@ -7,6 +7,8 @@
},
"common": {
"close": "Keluar",
"copy": "Salin",
"paste": "Tempel",
"back": "Kembali",
"available": "Tersedia",
"preset_max": "Maks",
@@ -20,44 +22,70 @@
"target_dead_note": "Anda tidak dapat mengirim sumber daya ke pemain yang telah tereliminasi.",
"none": "Tidak Satupun",
"copied": "Tersalin",
"click_to_copy": "Klik untuk salin"
"click_to_copy": "Klik untuk salin",
"enabled": "Diaktifkan"
},
"main": {
"title": "OpenFront (ALPHA)",
"join_discord": "Discord",
"login_discord": "Masuk dengan Discord",
"sign_in": "Masuk",
"discord_avatar_alt": "Avatar profil Discord",
"user_avatar_alt": "Avatar {username}",
"checking_login": "Memeriksa login...",
"logged_in": "Berhasil masuk!",
"log_out": "Keluar",
"create": "Buat Lobi",
"join": "Bergabung ke Lobi",
"solo": "Sendiri",
"instructions": "Petunjuk",
"solo": "Solo",
"game_info": "Informasi Permainan",
"wiki": "Wiki",
"privacy_policy": "Kebijakan Privasi",
"terms_of_service": "Ketentuan Layanan",
"copyright": "© OpenFront™ dan para kontributor",
"reddit": "Reddit",
"play": "Main",
"news": "Berita",
"store": "Toko",
"store_new_badge": "BARU",
"settings": "Pengaturan",
"keys": "Tombol",
"stats": "Statistik",
"leaderboard": "Papan Peringkat",
"account": "Akun",
"help": "Bantuan",
"menu": "Menu",
"pick_pattern": "Pilih pola!"
"troubleshooting": "Penyelesaian masalah",
"go_to_troubleshooting": "Pergi ke halaman penyelesaian masalah kami"
},
"news": {
"github_link": "di GitHub",
"title": "Catatan Rilis"
},
"troubleshooting": {
"title": "Penyelesaian masalah",
"environment": "Lingkungan",
"rendering": "Rendering",
"power": "Daya",
"browser": "Peramban",
"platform": "Platform",
"copied_to_clipboard": "Informasinya sudah disalin ke clipboard! Silakan bagikan di Discord kami jika Anda membutuhkan bantuan.",
"os": "OS",
"device_pixel_ratio": "Rasio Piksel Perangkat",
"chromium_tip": "OpenFront berjalan paling baik pada browser berbasis Chromium.",
"hardware_acceleration_tip": "Pastikan akselerasi perangkat keras diaktifkan di pengaturan browser Anda untuk performa optimal.",
"renderer": "Renderer",
"max_texture_size": "Maks Ukuran Tekstur",
"high_precision_shaders": "Shader Presisi Tinggi",
"gpu": "GPU",
"unavailable": "Tidak tersedia",
"gpu_tip": "Pastikan bahwa ini adalah GPU khusus, jika tersedia.",
"battery": "Baterai",
"charging": "Pengisian daya",
"battery_level": "Level Baterai",
"power_saving_tip": "Pastikan peramban Anda tidak dalam mode hemat daya.",
"yes": "Ya",
"no": "Tidak",
"unknown": "Tidak Diketahui",
"software_rendering": "Rendering perangkat lunak",
"canvas_2d_no_gpu": "Canvas 2D (tanpa GPU)"
},
"help_modal": {
"video_tutorial": "Video Panduan",
"video_tutorial_title": "Panduan OpenFront.io",
"hotkeys": "Tombol pintas",
"table_key": "Kunci",
"table_action": "Tindakan",
@@ -77,7 +105,6 @@
"ui_leaderboard_desc": "Menampilkan pemain teratas dalam permainan beserta nama mereka, persentase wilayah yang dikuasai, jumlah emas, dan pasukan. Opsi Tampilkan Semua akan menampilkan seluruh pemain dalam permainan. Jika tidak ingin melihat papan peringkat, klik Sembunyikan.",
"ui_control": "Panel kendali",
"ui_control_desc": "Panel kontrol berisi elemen berikut:",
"ui_pop": "Populasi - Jumlah unit yang kamu miliki, batas populasi maksimum, serta laju pertambahannya.",
"ui_gold": "Emas - Jumlah emas yang kamu miliki dan laju perolehannya.",
"ui_attack_ratio": "Rasio Serangan - Jumlah pasukan yang akan digunakan saat kamu menyerang. Kamu dapat menyesuaikan rasio serangan menggunakan penggeser. Memiliki pasukan penyerang lebih banyak daripada pasukan bertahan akan mengurangi jumlah pasukan yang hilang saat menyerang, sedangkan jumlah pasukan yang lebih sedikit akan meningkatkan kerusakan yang diterima pasukan penyerang. Efek ini tidak berlaku di atas rasio 2:1.",
"ui_events": "Panel Event",
@@ -97,12 +124,10 @@
"radial_title": "Menu Radial",
"radial_desc": "Klik kanan (atau sentuhan di perangkat seluler) akan membuka Menu Radial. Klik kanan di luar menu untuk menutupnya. Dari menu ini kamu dapat:",
"radial_build": "Buka menu Pembangunan.",
"radial_attack": "Buka menu Serangan.",
"radial_info": "Buka menu informasi.",
"radial_boat": "Kirim Kapal (kapal pengangkut) untuk menyerang lokasi yang dipilih. Hanya tersedia jika kamu memiliki akses ke perairan.",
"radial_donate_troops": "Donasikan pasukan kepada sekutu sesuai dengan persentase pada penggeser rasio serangan yang sedang kamu gunakan pada menu radial tersebut.",
"radial_donate_gold": "Membuka menu penggeser donasi emas sehingga kamu dapat dengan cepat mengirim emas kepada sekutu.",
"radial_close": "Tutup menu.",
"info_title": "Menu Informasi",
"info_enemy_desc": "Berisi informasi seperti nama pemain yang dipilih, jumlah emas, pasukan, status berhenti berdagang dengan kamu, nuklir yang dikirim ke arahmu, serta apakah pemain tersebut adalah pengkhianat.\nStatus Berhenti Berdagang berarti kamu tidak akan menerima emas dari pemain tersebut dan mereka juga tidak akan mengirimkan emas kepadamu melalui kapal dagang. Status ini dapat terjadi secara manual (jika pemain menekan tombol “Hentikan Perdagangan”, yang akan berlangsung sampai kalian berdua menekan “Mulai Perdagangan”) atau secara otomatis (jika kamu mengkhianati aliansi, yang akan berlangsung sampai kalian kembali menjadi sekutu atau setelah 5 menit).\nStatus Pengkhianat akan menampilkan “Ya” selama 30 detik ketika pemain tersebut mengkhianati dan menyerang pemain yang sebelumnya berada dalam aliansi dengannya.\nIkon-ikon di bawah ini mewakili interaksi berikut:",
"info_chat": "Kirim pesan Obrolan Cepat ke pemain. Pilih Kategori, Frasa, dan jika frasa berisi [P1], pilih nama pemain untuk menggantikannya. Lalu tekan Kirim.",
@@ -141,6 +166,7 @@
"build_mirv": "MIRV",
"build_mirv_desc": "Bom paling kuat di dalam permainan. Akan terpecah menjadi bom-bom yang lebih kecil dan mencakup area wilayah yang sangat luas. Hanya memberikan kerusakan kepada pemain yang pertama kali kamu klik saat membangunnya.\nSenjata ini muncul dari Silo Rudal terdekat dan akan mendarat di area yang pertama kali kamu klik saat membangunnya.",
"player_icons": "Ikon Pemain",
"troubleshooting_desc": "Jika Anda mengalami masalah performa, crash, atau masalah lain saat memainkan OpenFront, silakan kunjungi halaman Penyelesaian Masalah kami untuk mendapatkan bantuan dalam mendiagnosis dan memperbaiki masalah umum:",
"icon_desc": "Berikut beberapa ikon yang akan kamu temui di dalam permainan beserta artinya:",
"icon_crown": "Mahkota Peringkat 1. Pemain teratas di papan peringkat.",
"icon_traitor": "Perisai Retak Pengkhianat. Pemain ini menyerang sekutu.",
@@ -149,18 +175,17 @@
"icon_request": "Amplop Permintaan Aliansi. Pemain ini mengirim permintaan aliansi kepadamu.",
"info_enemy_panel": "Panel Info Musuh",
"exit_confirmation": "Apakah yakin keluar dari game?",
"bomb_direction": "Arah busur bom atom/hidrogen"
"bomb_direction": "Arah busur bom atom/hidrogen",
"icon_alt_player_leaderboard": "Ikon Papan Peringkat Pemain",
"icon_alt_team_leaderboard": "Ikon Papan Peringkat Tim"
},
"single_modal": {
"title": "Sendiri",
"random_spawn": "Kemunculan acak",
"allow_alliances": "Perbolehkan Aliansi",
"toggle_achievements": "Tampilkan / Sembunyikan pencapaian",
"sign_in_for_achievements": "Masuk untuk melihat pencapaian",
"options_title": "Opsi",
"bots": "Bot: ",
"bots_disabled": "Dinonaktifkan",
"nations": "Bangsa-bangsa: ",
"disable_nations": "Nonaktifkan negara",
"instant_build": "Bangun instan",
"infinite_gold": "Emas tak terbatas",
@@ -169,9 +194,13 @@
"max_timer": "Lama permainan (menit)",
"max_timer_placeholder": "Menit",
"max_timer_invalid": "Silakan masukkan nilai pengatur waktu maksimum yang valid (1-120 menit)",
"disable_nukes": "Nonaktifkan Senjata Nuklir",
"enables_title": "Aktifkan Pengaturan",
"start": "Mulai Permainan"
"start": "Mulai Permainan",
"options_changed_no_achievements": "Pengaturan khusus pencapaian dinonaktifkan",
"gold_multiplier": "Pengganda emas",
"gold_multiplier_placeholder": "2.0x",
"starting_gold": "Emas awal",
"starting_gold_placeholder": "5000000"
},
"token_login_modal": {
"title": "Sedang masuk...",
@@ -194,17 +223,22 @@
"not_found": "Tidak Ditemukan",
"clear_session": "Hapus Sesi",
"failed_to_send_recovery_email": "Gagal mengirim pemulihan email",
"enter_email_address": "Silahkan masukan alamat email"
"enter_email_address": "Silahkan masukan alamat email",
"personal_player_id": "ID Pemain Pribadi:"
},
"stats_modal": {
"title": "Statistik",
"clan_stats": "Statistik Klan",
"loading": "Loading...",
"error": "Error saat memuat statistik klan",
"no_stats": "Tidak ada klan yang tersedia",
"leaderboard_modal": {
"title": "Papan Peringkat",
"ranked_tab": "Pertandingan Peringkat 1v1",
"clans_tab": "Klan",
"refresh_time": "Diperbarui setiap 1 jam",
"loading": "Memuat...",
"error": "Kesalahan memuat leaderboard",
"no_stats": "Statistik tidak tersedia",
"no_data_yet": "Data belum tersedia",
"clan": "Klan",
"player": "Pemain",
"games": "Permainan",
"elo": "ELO",
"win_score": "Skor Kemenangan",
"win_score_tooltip": "Kemenangan dihitung berdasarkan bobot partisipasi klan dan tingkat kesulitan pertandingan",
"loss_score": "Skor Kekalahan",
@@ -212,7 +246,8 @@
"win_loss_ratio": "Menang/Kalah",
"ratio": "Rasio",
"rank": "Peringkat",
"try_again": "Coba Lagi"
"try_again": "Coba lagi",
"your_ranking": "Peringkat Anda"
},
"game_info_modal": {
"title": "Informasi Permainan",
@@ -224,9 +259,12 @@
"total_gold": "Total",
"all_gold": "Semua emas",
"trade": "Perdagangan",
"train_trade": "Kereta",
"naval_trade": "Kapal Dagang",
"conquest_gold": "Emas pemain yang ditaklukan",
"stolen_gold": "Dicuri oleh Kapal Perang",
"num_of_conquests": "Jumlah pemain yang ditaklukan",
"num_of_conquests_humans": "Pemain membunuh",
"num_of_conquests_bots": "Bot membunuh",
"duration": "Durasi",
"survival_time": "Menit Bertahan",
"war": "Perang",
@@ -239,6 +277,8 @@
},
"map": {
"map": "Peta",
"featured": "Unggulan",
"all": "Semua",
"world": "Dunia",
"giantworldmap": "Map Dunia Besar",
"europe": "Eropa",
@@ -281,14 +321,18 @@
"manicouagan": "Manicouagan",
"lemnos": "Lemnos",
"sierpinski": "Sierpinski",
"thebox": "Kotak",
"twolakes": "Dua Danau",
"straitofhormuz": "Selat Hormuz",
"surrounded": "Surrourded",
"didier": "Didier",
"didierfrance": "Didier (Prancis)",
"amazonriver": "Sungai Amazon"
"amazonriver": "Sungai Amazon",
"tradersdream": "Mimpi para Pedagang",
"hawaii": "Hawaii"
},
"map_categories": {
"featured": "Unggulan",
"continental": "Kontinental",
"regional": "Regional",
"fantasy": "Lain",
@@ -302,10 +346,7 @@
"private_lobby": {
"title": "Gabung Lobi Privat",
"enter_id": "Masukan ID Lobi",
"player": "Pemain",
"players": "Pemain",
"join_lobby": "Bergabung ke Lobi",
"checking": "Memeriksa Lobi...",
"not_found": "Lobi tidak ditemukan. Mohon periksa ID dan coba lagi.",
"error": "Beberapa kesalahan terjadi. Silakan coba lagi atau hubungi dukungan.",
"joined_waiting": "Berhasil gabung ke lobi! Menunggu untuk penyelenggara untuk memulai...",
@@ -313,18 +354,22 @@
"disabled_units": "Nonaktfikan Units"
},
"public_lobby": {
"title": "Menunggu permainan untuk dimulai...",
"join": "Gabung ke permainan selanjutnya",
"waiting": "Pemain menunggu",
"teams_Duos": "{team_count} tim berisi 2 pemain (Berdua)",
"teams_Trios": "{team_count} tim berisi 3 pemain (Bertiga)",
"teams_Quads": "{team_count} tim berisi 4 pemain (Berempat)",
"waiting_for_players": "Menunggu pemain",
"connecting": "Menghubungkan ke lobi...",
"starting_in": "Dimulai dalam {time}",
"starting_game": "Memulai permainan…",
"teams_hvn": "Pemain vs Negara",
"teams_hvn_detailed": "{num} Pemain vs {num} Negara",
"teams": "{num} tim",
"players_per_team": "dari {num}",
"started": "Dimulai"
"started": "Dimulai",
"status": "Status",
"join_timeout": "Anda tidak masuk ke dalam permainan tepat waktu."
},
"matchmaking_modal": {
"title": "Pertandingan 1v1 Ranked (ALPHA)",
@@ -353,7 +398,6 @@
"bots": "Bot: ",
"bots_disabled": "Nonaktif",
"player_immunity_duration": "Durasi imunitas PVP (menit)",
"nations": "Bangsa-bangsa: ",
"disable_nations": "Nonaktifkan Negara",
"max_timer": "Lama permainan (menit)",
"mins_placeholder": "Menit",
@@ -379,7 +423,9 @@
"teams_Duos": "Berdua (tim yang terdiri dari 2 orang)",
"teams_Trios": "Bertiga (tim yang terdiri dari 3 orang)",
"teams_Quads": "Berempat (tim yang teridri dari 4 orang)",
"teams_Humans Vs Nations": "Pemain vs Negara"
"teams_Humans Vs Nations": "Pemain vs Negara",
"starting_gold": "Emas awal",
"crowded": "Pengubah yang ramai"
},
"team_colors": {
"red": "Merah",
@@ -409,7 +455,9 @@
},
"public_game_modifier": {
"random_spawn": "Kemunculan Acak",
"compact_map": "Peta Kecil"
"compact_map": "Peta Kecil",
"crowded": "Ramai",
"starting_gold": "Emas awal 5 Juta"
},
"select_lang": {
"title": "Pilih Bahasa"
@@ -644,19 +692,15 @@
"exit": "Keluar Game",
"keep": "Terus Main",
"spectate": "Menonton",
"requeue": "Main lagi",
"wishlist": "Wishlist di Steam!",
"ofm_winter": "Turnamen Musim Dingin OpenFront Masters!",
"ofm_winter_description": "Ikuti turnamen kompetitif dan bersaing melawan pemain terbaik",
"join_tournament": "Ikut Turnamen",
"join_discord": "Gabung Komunitas Discord Kami!",
"discord_description": "Terhubung dengan pemain lain, temukan fitur baru, dan menangkan hadiah!",
"join_server": "Bergabung dengan Server",
"youtube_tutorial": "Butuh bantuan?"
},
"leaderboard": {
"title": "Papan Peringkat",
"hide": "Sembunyikan",
"rank": "Peringkat",
"player": "Pemain",
"team": "Tim",
"owned": "Dimiliki",
@@ -669,36 +713,14 @@
"show_control": "Tampilkan Kontrol",
"show_units": "Tampilkan Unit"
},
"player_info_overlay": {
"type": "Jenis",
"bot": "Bot",
"nation": "Bangsa",
"player": "Pemain",
"team": "Tim",
"alliance_timeout": "Aliansi berakhir dalam",
"troops": "Pasukan",
"maxtroops": "Maksimal pasukan",
"a_troops": "Pasukan menyerang",
"gold": "Emas",
"ports": "Pelabuhan-Pelabuhan",
"cities": "Kota-kota",
"factories": "Pabrik-pabrik",
"missile_launchers": "Peluncur rudal",
"sams": "SAM",
"warships": "Kapal Perang",
"health": "Kesehatan",
"attitude": "Sikap",
"levels": "Tingkat",
"wilderness_title": "Alam Liar",
"irradiated_wilderness_title": "Hutan Belantara yang Terkena Radiasi"
},
"events_display": {
"events": "Acara",
"retreating": "mundur",
"retaliate": "Membalas",
"boat": "Perahu",
"alliance_request_status": "{name} {status} permintaan aliansi Anda",
"alliance_accepted": "diterima",
"alliance_accepted": "menerima",
"alliance_rejected": "ditolak",
"alliance_nukes_destroyed_outgoing": "{count, plural,other {# nuklir yang diluncurkan menuju {name} dihancurkan karena aliansi}}",
"alliance_nukes_destroyed_incoming": "{count, plural,other {# nuklir yang diluncurkan oleh {name} dihancurkan karena aliansi}}",
"duration_second": "1 detik",
"betrayal_description": "Kamu memutus aliansi dengan {name}, menjadikanmu PENGKHIANAT ({malusPercent}% pengurangan pertahanan selama {durationText})",
"duration_seconds_plural": "{seconds} detik",
@@ -720,6 +742,8 @@
"attack_cancelled_retreat": "Penyerangan dibatalkan, {troops} pasukan terbunuh saat mundur",
"received_gold_from_captured_ship": "Menerima {gold} emas dari kapal yang di tawan dari {name}",
"received_gold_from_trade": "Menerima {gold} emas dari perdagangan dengan {name}",
"received_gold_from_conquest": "Menaklukan {name}, mendapatkan {gold} emas",
"conquered_no_gold": "Menaklukan {name} (tidak main, tidak ada emas yang diberikan)",
"missile_intercepted": "Rudal dicegat {unit}",
"mirv_warheads_intercepted": "{count, plural, one {{count} hulu ledak MIRV berhasil dicegat} other {{count} hulu ledak MIRV berhasil dicegat}}",
"sent_troops_to_player": "Mengirim {troops} pasukan ke {name}",
@@ -731,15 +755,6 @@
"unit_destroyed": "{unit} Anda dihancurkan",
"no_boats_available": "Tidak ada kapal yang tersedia, maksmial {max}"
},
"unit_info_modal": {
"structure_info": "Informasi Struktur",
"unit_type_unknown": "Tidak Diketahui",
"close": "Keluar",
"cooldown": "Cooldown",
"type": "Jenis",
"upgrade": "Tingkatkan",
"level": "Tingkat"
},
"player_type": {
"player": "Pemain",
"nation": "Bangsa",
@@ -752,11 +767,6 @@
"friendly": "Ramah",
"default": "Default"
},
"control_panel": {
"gold": "Emas",
"troops": "Pasukan",
"attack_ratio": "Rasio Serangan"
},
"player_panel": {
"gold": "Emas",
"troops": "Pasukan",
@@ -766,39 +776,42 @@
"active": "Aktif",
"stopped": "Berhenti",
"alliance_time_remaining": "Aliansi Berakhir Dalam",
"embargo": "Berhenti berdangan dengan Anda",
"nuke": "Nuklir dikirim oleh mereka kepada Anda",
"start_trade": "Mulai Berdagang",
"stop_trade": "Stop Berdagang",
"stop_trade_all": "Stop Berdagang degnan Semuanya",
"start_trade_all": "Mulai Berdagang dengan Semuanya",
"alliances": "Aliansi",
"flag": "Bendera",
"chat": "Chat",
"target": "Sasaran",
"break_alliance": "Rusak Aliansi",
"alliance": "Aliansi",
"send_alliance": "Kirim Proposal Aliansi",
"send_troops": "Kirim Pasukan",
"send_gold": "Kirim Emas",
"emotes": "Emoji",
"moderation": "Moderasi",
"kick": "Keluarkan pemain",
"kicked": "Sudah dikeluarkan",
"kick_confirm": "Keluarkan {name}?\n\nDia tidak dapat bergabung kembali dalam permainan ini.",
"arc_up": "Lengkungan ke Atas",
"arc_down": "Lengkungan ke Bawah",
"flip_rocket_trajectory": "Balikkan lintasan roket"
},
"kick_reason": {
"duplicate_session": "Dikeluarkan dari permainan (kamu mungkin bermain di tab yang lain)",
"lobby_creator": "Dikeluarkan oleh pembuat lobi"
},
"send_troops_modal": {
"title_with_name": "Kirim Pasukan ke {name}",
"available_tooltip": "Pasukan Anda yang tersedia saat ini",
"min_keep": "Minimal yang ditinggalkan",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "Penggeser pasukan",
"capacity_note": "Penerima hanya dapat menerima {{amount}} saat ini."
"capacity_note": "Penerima hanya dapat menerima {amount} saat ini."
},
"send_gold_modal": {
"title_with_name": "Kirim Emas ke {name}",
"available_tooltip": "Emas yang Anda miliki saat ini",
"aria_slider": "Penggeser jumlah",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Kecepatan tanyangan ulang",
@@ -835,7 +848,9 @@
"choose_spawn": "Pilih lokasi awal",
"random_spawn": "Kemunculan acak diaktifkan. Memilih lokasi awal untuk Anda...",
"singleplayer_game_paused": "Permainan dijeda",
"multiplayer_game_paused": "Permainan di tunda oleh Pembuat Lobi"
"multiplayer_game_paused": "Permainan di tunda oleh Pembuat Lobi",
"pvp_immunity_active": "Imunitas PVP aktif selama {seconds} detik",
"catching_up": "Menyusul..."
},
"territory_patterns": {
"title": "Tampilan",
@@ -844,13 +859,16 @@
"show_only_owned": "Skin Saya",
"all_owned": "Semua skin sudah dimiliki! Silakan periksa kembali nanti untuk item baru.",
"not_logged_in": "Belum masuk",
"blocked": {
"login": "Anda harus login untuk mengakses skin ini.",
"purchase": "Beli skin ini untuk membukanya."
},
"pattern": {
"default": "Default"
},
"try_me": "Coba aku!",
"trial_remaining": "tersisa",
"trial_granted": "Skin trial didapatkan!",
"trial_cooldown": "Hanya satu trial dalam 24 jam. Mohon coba lagi nanti.",
"trial_login_required": "Harus masuk untuk mencoba skin",
"reward_countdown": "Hadiah dalam {seconds} detik...",
"steam_wishlist_prompt": "Dukung OpenFront dengan cara menambahkannya di wishlist Steam Anda",
"select_skin": "Pilih Skin",
"selected": "dipilih"
},
@@ -859,15 +877,6 @@
"button_title": "Pilih bendera!",
"search_flag": "Cari..."
},
"spawn_ad": {
"loading": "Memuat iklan..."
},
"auth": {
"login_required": "Masuk dibutuhkan untuk mengakses website ini.",
"redirecting": "Anda sedang diarahkan...",
"not_authorized": "Anda tidak punya izin untuk mengakses website ini.",
"contact_admin": "Jika Anda yakin melihat pesan ini karena kesalahan, silakan hubungi administrator situs web."
},
"radial_menu": {
"delete_unit_title": "Hapus Unit",
"delete_unit_description": "Klik untuk menghapus unit terdekat"
@@ -926,7 +935,6 @@
"replay": "Tayangan ulang",
"details": "Detail",
"ranking": "Peringkat",
"started": "Dimulai",
"map": "Peta",
"difficulty": "Tingkat Kesulitan",
"type": "Jenis"
@@ -934,7 +942,7 @@
"player_stats_tree": {
"public": "Publik",
"private": "Tertutup",
"singleplayer": "Sendiri",
"solo": "Solo",
"mode": "Mode",
"stats_wins": "Jumlah Kemenangan",
"stats_losses": "Jumlah Kehilangan",
+3 -3
View File
@@ -790,15 +790,15 @@
"title_with_name": "{name}へ軍隊を送信",
"available_tooltip": "あなたの兵士数",
"min_keep": "最小値を保つ",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "軍隊スライダー",
"capacity_note": "現在、受取主は {{amount}} のみ受け取ることができます。"
"capacity_note": "現在、受取主は {amount} のみ受け取ることができます。"
},
"send_gold_modal": {
"title_with_name": "{name}へゴールドを送信",
"available_tooltip": "現在利用可能な資金",
"aria_slider": "スライダー",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "再生速度",
+287 -134
View File
@@ -7,6 +7,9 @@
},
"common": {
"close": "닫기",
"copy": "복사",
"paste": "붙여넣기",
"back": "뒤로가기",
"available": "사용 가능",
"preset_max": "최댓값",
"summary_send": "보내기",
@@ -17,30 +20,72 @@
"cap_tooltip": "수령자 잔여 수용량",
"target_dead": "목표 제거 완료",
"target_dead_note": "제거된 플레이어에게 자원을 보낼수 없습니다.",
"none": "없음"
"none": "없음",
"copied": "복사 완료!",
"click_to_copy": "클릭하여 복사",
"enabled": "켜짐"
},
"main": {
"title": "오픈 프론트 (시험판)",
"join_discord": "디스코드",
"login_discord": "디스코드로 로그인하기",
"checking_login": "로그인 확인 중...",
"logged_in": "로그인되었습니다!",
"log_out": "로그아웃",
"create_lobby": "로비 만들기",
"join_lobby": "로비에 참여하기",
"single_player": "혼자 하기",
"instructions": "소개",
"sign_in": "로그인",
"discord_avatar_alt": "디스코드 프사",
"user_avatar_alt": "{username}의 프사",
"create": "로비 만들기",
"join": "로비 입장",
"solo": "혼자 하기",
"game_info": "게임 정보",
"wiki": "위키",
"privacy_policy": "개인정보보호정책",
"terms_of_service": "서비스 이용 약관",
"reddit": "레딧"
"copyright": "© OpenFront™ 및 기여자",
"play": "플레이",
"news": "소식",
"store": "상점",
"store_new_badge": "신규",
"settings": "설정",
"leaderboard": "순위표",
"account": "계정",
"help": "도움말",
"menu": "메뉴",
"troubleshooting": "문제 해결하기",
"go_to_troubleshooting": "문제 해결 페이지로 이동"
},
"news": {
"see_all_releases": "모든 버전 보기",
"github_link": " (깃허브)",
"title": "배포 요약"
},
"troubleshooting": {
"title": "문제 해결하기",
"environment": "환경",
"rendering": "렌더링",
"power": "파워",
"browser": "브라우저",
"platform": "플랫폼",
"copied_to_clipboard": "클립보드에 정보가 복사되었습니다! 도움이 필요하시면 저희 디스코드에 자유롭게 공유해주세요.",
"os": "운영 체제",
"device_pixel_ratio": "장치 픽셀 비율",
"chromium_tip": "오픈프론트는 크로미움 기반 브라우저에서 가장 잘 작동합니다.",
"hardware_acceleration_tip": "최적의 성능을 위해 브라우저 설정에서 하드웨어 가속이 활성화되어 있는지 확인하세요.",
"renderer": "렌더러",
"max_texture_size": "최대 텍스처 크기",
"high_precision_shaders": "고정밀 셰이더",
"gpu": "GPU",
"unavailable": "사용할 수 없음",
"gpu_tip": "사용 가능한 경우, 이것이 전용 GPU인지 확인하십시오.",
"battery": "배터리",
"charging": "충전",
"battery_level": "배터리 잔량",
"power_saving_tip": "브라우저가 절전 모드로 설정되어 있지 않은지 확인하세요.",
"yes": "네",
"no": "아니요",
"unknown": "알 수 없음",
"software_rendering": "소프트웨어 렌더링",
"canvas_2d_no_gpu": "캔버스 2D (GPU 없음)"
},
"help_modal": {
"video_tutorial": "동영상 튜토리얼",
"video_tutorial_title": "오픈프론트 튜토리얼",
"hotkeys": "단축키",
"table_key": "키",
"table_action": "동작",
@@ -60,12 +105,11 @@
"ui_leaderboard_desc": "게임의 상위 플레이어와 이름, 소유한 영토(%), 재화, 병력을 표시합니다. '\"모두 표시\"를 선택하면 게임에 참여한 모든 플레이어가 표시됩니다. 순위표를 보고 싶지 않으면 \"숨기기\"를 클릭하세요.",
"ui_control": "제어판",
"ui_control_desc": "컨트롤 패널에는 다음과 같은 요소들이 포함되어 있습니다:",
"ui_pop": "인구 - 현재 보유한 유닛 수, 최대 인구 수, 그리고 인구 증가 속도를 나타냅니다.",
"ui_gold": "금 - 현재 보유한 금 양과 금 획득 속도를 나타냅니다.",
"ui_attack_ratio": "공격 비율 - 공격 시 사용할 병력의 비율을 나타냅니다. 슬라이더로 공격 비율을 조절할 수 있습니다. 공격군이 방어군보다 많으면 공격 중 손실되는 병력이 줄어들고, 적으면 공격군이 더 큰 피해를 입게 됩니다. 이 효과는 최대 2:1 비율까지만 적용됩니다.",
"ui_events": "이벤트판",
"ui_events_desc": "이벤트판은 최신 이벤트, 요청사항, 그리고 빠른 채팅 메시지를 보여줍니다. 예시로는 다음과 같은 것들이 있습니다:",
"ui_events_alliance": "동맹 - 동맹 요청은 수락하거나 거절할 수 있습니다. 동맹 간에는 자원과 병력을 공유할 수 있지만 서로 공격할 수는 없습니다. ‘집중’ 버튼을 누르면 요청을 보낸 플레이어 쪽으로 화면이 이동합니다.",
"ui_events_alliance": "التحالف - يمكن قبول طلبات التحالف أو رفضها. يمكن للحلفاء مشاركة الموارد والقوات، ولكن لا يمكنهم مهاجمة بعضهم البعض. النقر على \"تركيز\" ينقل العرض إلى اللاعب الذي أرسل الطلب.",
"ui_events_attack": "공격 - 들어오는 공격과 당신이 보내는 공격이 표시됩니다. 메시지를 클릭하면 공격, 핵무기, 또는 수송선(보트) 위치로 화면이 이동합니다. 빨간 X 버튼을 클릭하면 병력을 철수시킬 수 있으며, 이 경우 공격군의 25%가 희생됩니다. 보트 공격을 철수시키면 보트가 출발지로 돌아가고, 그 사이에 땅이 점령되었다면 출발지에서 다시 공격합니다. 핵무기는 발사 후 철수가 불가능합니다.",
"ui_events_quickchat": "빠른 채팅 - 여기서 주고받은 채팅 메시지를 확인할 수 있습니다. 상대방 프로필의 빠른 채팅 아이콘을 클릭해 메시지를 보낼 수 있습니다.",
"ui_options": "설정",
@@ -80,10 +124,10 @@
"radial_title": "방사 메뉴",
"radial_desc": "마우스 오른쪽 버튼을 클릭하면 방사형 메뉴가 열립니다. (모바일에서는 터치) 방사형 메뉴 바깥쪽을 마우스 오른쪽 버튼으로 클릭하면 메뉴가 닫힙니다. 메뉴에서 다음 작업을 수행할 수 있습니다.",
"radial_build": "건설 메뉴를 엽니다.",
"radial_attack": "정보 메뉴를 엽니다.",
"radial_info": "정보 메뉴를 엽니다.",
"radial_boat": "선택한 위치를 공격하기 위해 함선(수송선)을 보냅니다. 물에 접근할 수 있는 경우에만 사용 가능합니다.",
"radial_close": "메뉴를 닫습니다.",
"radial_donate_troops": "공격 비율 슬라이더 백분율에 해당하는 병력을 방사형 메뉴를 연 아군에게 기부합니다.",
"radial_donate_gold": "아군에게 골드를 빠르게 보낼 수 있도록 골드 기부 슬라이더 메뉴를 엽니다.",
"info_title": "정보 메뉴",
"info_enemy_desc": "선택한 플레이어의 이름, 금, 병력 수, 당신과의 거래 중단 여부, 당신에게 발사한 핵무기 수, 그리고 배신자인지 여부 등의 정보가 포함되어 있습니다.\n‘거래 중단’은 해당 플레이어가 골드를 보내지 않고, 무역선을 통한 골드 거래도 중단한 상태를 의미합니다. 이는 플레이어가 직접 ‘거래 중단’을 선택했을 때(서로 ‘거래 시작’을 누를 때까지 지속) 또는 자동으로 적용됩니다(동맹을 배신했을 경우, 다시 동맹이 되거나 5분 후 해제).\n‘배신자’는 플레이어가 동맹인 상대를 배신하고 공격했을 때 30초 동안 ‘예’로 표시됩니다.\n아래 아이콘들은 다음과 같은 상호작용을 나타냅니다:",
"info_chat": "플레이어에게 빠른 채팅 메시지를 보냅니다. 카테고리와 문구를 선택하고, 문구에 [P1]이 포함되어 있다면 해당 부분을 대체할 플레이어 이름을 선택하세요. 마지막으로 ‘전송’을 누르면 메시지가 발송됩니다.",
@@ -114,7 +158,7 @@
"build_silo": "미사일 발사대",
"build_silo_desc": "미사일을 발사할 수 있습니다.",
"build_sam": "지대공 미사일 발사기",
"build_sam_desc": "반경 100픽셀 내에서 적 미사일을 요격할 수 있습니다. 원자폭탄은 100%, 수소폭탄은 80%, 개별 다탄두 미사일의 탄두는 50%의 명중 확률을 가집니다. 지대공 미사일은 7.5초의 재사용 대기시간이 있습니다.",
"build_sam_desc": "지대공 미사일은 100픽셀 범위 내에서 적 미사일을 요격할 수 있습니다. 지대공 미사일은 7.5초의 재사용 대기시간을 가집니다.",
"build_atom": "원자폭탄",
"build_atom_desc": "작은 폭발물로, 영토와 건물, 선박 및 보트를 파괴합니다. 가장 가까운 미사일 사일로에서 발사되며, 처음 클릭한 지역에 착륙합니다.",
"build_hydrogen": "수소폭탄",
@@ -122,6 +166,7 @@
"build_mirv": "다탄두 미사일",
"build_mirv_desc": "게임 내에서 가장 강력한 폭탄입니다. 여러 개의 작은 폭탄으로 분리되어 넓은 지역을 동시에 공격합니다. 처음 클릭한 플레이어에게만 피해를 줍니다. 가장 가까운 미사일 사일로에서 발사되며, 처음 클릭한 지역에 착륙합니다.",
"player_icons": "플레이어 아이콘",
"troubleshooting_desc": "오픈프론트 플레이 중 성능 문제, 충돌 또는 기타 문제가 발생하는 경우, 일반적인 문제의 진단 및 해결에 대한 도움을 받으려면 문제 해결 페이지를 방문하세요.",
"icon_desc": "게임 내에서 볼 수 있는 아이콘 중 일부와 그 의미는 다음과 같습니다.",
"icon_crown": "왕관 - 1등. 순위에서 최상위 플레이어를 의미합니다.",
"icon_traitor": "깨진 방패 - 배신자. 이 플레이어는 동맹을 공격했습니다.",
@@ -129,25 +174,33 @@
"icon_embargo": "달러 금지 표지 - 금수 조치. 이 플레이어는 자동 또는 수동으로 당신과의 교역을 중단했습니다.",
"icon_request": "봉투 - 동맹 요청. 이 플레이어가 당신에게 동맹을 요청했습니다.",
"info_enemy_panel": "적 정보판",
"exit_confirmation": "정말 게임을 종료 하시겠습니까?"
"exit_confirmation": "정말 게임을 종료 하시겠습니까?",
"bomb_direction": "원자 / 수소 폭탄 궤적 방향",
"icon_alt_player_leaderboard": "플레이어 순위표 아이콘",
"icon_alt_team_leaderboard": "팀 순위표 아이콘"
},
"single_modal": {
"title": "혼자 하기",
"random_spawn": "무작위 생성",
"allow_alliances": "동맹 허용",
"toggle_achievements": "업적 토글",
"sign_in_for_achievements": "업적을 달성하려면 로그인하세요",
"options_title": "설정",
"bots": "봇: ",
"bots_disabled": "사용 안 함",
"nations": "국가:",
"disable_nations": "국가 비활성화",
"instant_build": "빠른 건설",
"infinite_gold": "무한 금",
"infinite_troops": "무한 병력",
"compact_map": "초소형 맵",
"max_timer": "게임 길이 (분)",
"disable_nukes": "핵 금지",
"max_timer_placeholder": "",
"max_timer_invalid": "유효한 최대 타이머 값(1-120분)을 입력하세요",
"enables_title": "설정 활성화",
"start": "게임 시작하기"
"start": "게임 시작하기",
"options_changed_no_achievements": "사용자 지정 설정 – 지대공 미사일 비활성화",
"gold_multiplier": "금 배율",
"gold_multiplier_placeholder": "2.0배",
"starting_gold": "초기 자금",
"starting_gold_placeholder": "5000000"
},
"token_login_modal": {
"title": "로그인 중...",
@@ -156,25 +209,76 @@
},
"account_modal": {
"title": "계정",
"logged_in_as": "{email}(으)로 로그인됨",
"connected_as": "연결됨: ",
"stats_overview": "통계 개요",
"link_discord": "Discord 계정 연결",
"log_out": "로그아웃",
"sign_in_desc": "통계와 진행 상황을 저장하려면 로그인하세요",
"or": "또는",
"email_placeholder": "이메일 주소를 입력하세요",
"get_magic_link": "마법 링크 받기",
"linked_account": "{account_name}(으)로 로그인했습니다",
"fetching_account": "계정 정보 불러오는중...",
"logged_in_with_discord": "디스코드 로그인 완료",
"recovery_email_sent": "{email}(으)로 복구 이메일을 보냈습니다."
"recovery_email_sent": "{email}(으)로 복구 이메일을 보냈습니다.",
"not_found": "찾을 수 없음",
"clear_session": "세션 지우기",
"failed_to_send_recovery_email": "복구 이메일 전송에 실패했습니다",
"enter_email_address": "이메일 주소를 입력해주세요",
"personal_player_id": "개인 플레이어 ID:"
},
"stats_modal": {
"title": "정보",
"clan_stats": "클랜 정보",
"loading": "로딩 중...",
"error": "클랜 정보 불러오기 실패",
"no_stats": "클랜 정보 없음",
"leaderboard_modal": {
"title": "리더보드",
"ranked_tab": "1대1 승급전",
"clans_tab": "클랜",
"refresh_time": "1시간마다 새로고침",
"loading": "불러오는 중...",
"error": "순위표 불러오기 오류",
"no_stats": "사용 가능한 통계 없음",
"no_data_yet": "아직 데이터 없음",
"clan": "클랜",
"player": "플레이어",
"games": "게임",
"elo": "ELO",
"win_score": "승점",
"win_score_tooltip": "클랜 참여도와 경기 난이도를 기반으로 한 가중치 승리",
"loss_score": "패배 점수",
"win_loss_ratio": "승/패"
"loss_score_tooltip": "클랜 참여도와 경기 난이도를 기반으로 한 가중치 손실",
"win_loss_ratio": "승/패",
"ratio": "비율",
"rank": "순위",
"try_again": "다시 시도",
"your_ranking": "나의 순위"
},
"game_info_modal": {
"title": "게임 정보",
"players": "플레이어",
"atoms": "원자",
"hydros": "수소",
"mirv": "다탄두 미사일",
"bombs": "폭탄",
"total_gold": "합계",
"all_gold": "모든 금",
"trade": "무역",
"train_trade": "기차",
"naval_trade": "무역선",
"conquest_gold": "정복한 플레이어 금",
"stolen_gold": "전함으로 약탈함",
"num_of_conquests_humans": "죽인 플레이어",
"num_of_conquests_bots": "죽인 봇",
"duration": "지속 시간",
"survival_time": "생존 시간",
"war": "전쟁",
"economy": "경제",
"conquests": "정복",
"pirate": "해적질",
"conquered": "정복함",
"loading_game_info": "게임 정보 불러오는 중",
"no_winner": "이 게임은 승자 없이 종료되었습니다 (또는 국가가 승리했습니다)"
},
"map": {
"map": "지도",
"featured": "추천",
"all": "전체",
"world": "세계",
"giantworldmap": "거대한 세계",
"europe": "유럽",
@@ -186,6 +290,7 @@
"asia": "아시아",
"mars": "화성",
"southamerica": "남미",
"britanniaclassic": "브리타니아 (클래식)",
"britannia": "브리튼 제도",
"gatewaytotheatlantic": "대서양으로의 관문",
"australia": "호주",
@@ -206,65 +311,96 @@
"yenisei": "예니셰이 강",
"pluto": "명왕성",
"montreal": "몬트리올",
"newyorkcity": "뉴욕",
"achiran": "아치란",
"baikalnukewars": "바이칼 (핵전쟁용)",
"fourislands": "네 개의 섬",
"gulfofstlawrence": "생로렌스만",
"lisbon": "리스본"
"lisbon": "리스본",
"svalmel": "스발멜",
"manicouagan": "마니쿠아간",
"lemnos": "림노스섬",
"sierpinski": "시어핀스키",
"thebox": "더 박스",
"twolakes": "두개의 호수",
"straitofhormuz": "호르무즈 해협",
"surrounded": "포위",
"didier": "디디에",
"didierfrance": "디디에 (프랑스)",
"amazonriver": "아마존 강",
"tradersdream": "무역가의 꿈",
"hawaii": "하와이"
},
"map_categories": {
"featured": "추천",
"continental": "대륙",
"regional": "지역",
"fantasy": "기타"
"fantasy": "기타",
"special": "특별",
"arcade": "아케이드"
},
"map_component": {
"loading": "로딩중..."
"loading": "로딩중...",
"error": "오류"
},
"private_lobby": {
"title": "비공개 로비 참가",
"enter_id": "로비 아이디를 입력하세요",
"player": "플레이어",
"players": "플레이어",
"join_lobby": "로비에 참여하기",
"checking": "로비 확인중...",
"not_found": "로비를 찾을 수 없습니다. 로비 ID를 확인하고 다시 시도해 주세요.",
"error": "오류가 발생했습니다. 다시 시도해주세요.",
"joined_waiting": "성공적으로 참여했습니다! 게임 시작 때까지 기다리는 중입니다...",
"version_mismatch": "."
"joined_waiting": "로비에 참여했습니다! 방장이 게임 시작 까지 기다리고 있습니다...",
"version_mismatch": ".",
"disabled_units": "비활성화된 유닛"
},
"public_lobby": {
"title": "게임 시작 기다리는 중...",
"join": "다음 게임 참가",
"waiting": "기다리는 플레이어들",
"teams_Duos": "2인 1조",
"teams_Trios": "3인 1조",
"teams_Quads": "4인 1조",
"teams_hvn": "인간 VS 국가",
"teams_Duos": "2인 1조 팀 {team_count}개 (듀오)",
"teams_Trios": "3인 1조 팀 {team_count}개 (트리오)",
"teams_Quads": "4인 1조 팀 {team_count}개 (쿼드)",
"waiting_for_players": "플레이어를 기다리는 중",
"connecting": "로비에 연결 중...",
"starting_in": "{time}후에 시작",
"starting_game": "게임 시작 중…",
"teams_hvn": "인간 대 국가",
"teams_hvn_detailed": "인간 {num}명 대 국가 {num}개",
"teams": "{num} 팀",
"players_per_team": "{num}인 1조"
"players_per_team": "{num}인 1조",
"started": "시작됨",
"status": "상태",
"join_timeout": "제시간 안에 게임에 참여하지 못했습니다."
},
"matchmaking_modal": {
"title": "매치메이킹",
"title": "1ㄷ1 승급전 매치메이킹 (시험판)",
"connecting": "매치메이킹 서버에 연결 중...",
"searching": "게임 찾는 중...",
"waiting_for_game": "게임 시작 대기 중..."
"waiting_for_game": "게임 시작 대기 중...",
"elo": "당신의 ELO: {elo}"
},
"username": {
"enter_username": "사용자 이름을 입력하세요",
"not_string": "사용자 이름은 문자열이어야 합니다.",
"too_short": "사용자 이름은 최소 {min}자 이상이어야 합니다.",
"too_long": "사용자 이름은 {max}자를 넘을 수 없습니다.",
"invalid_chars": "사용자 이름에는 문, 숫자, 공백, 밑줄, [대괄호]만 사용할 수 있습니다."
"invalid_chars": "사용자 이름에는 문, 숫자, 띄어쓰기, 밑줄만 사용할 수 있습니다.",
"tag": "태그",
"tag_too_short": "클랜 태그는 2~5개의 영숫자여야 합니다.",
"tag_invalid_chars": "클랜 태그는 문자 및 숫자만 포함할 수 있습니다."
},
"host_modal": {
"title": "비공개 로비",
"title": "비공개 로비 만들기",
"label": "비공개",
"mode": "모드",
"team_count": "팀 수",
"team_type": "팀 유형",
"options_title": "설정",
"bots": "봇: ",
"bots_disabled": "사용 안 함",
"nations": "국가:",
"player_immunity_duration": "PVP 면역 지속 시간 (분)",
"disable_nations": "국가 비활성화",
"max_timer": "게임 길이 (분)",
"mins_placeholder": "분",
"instant_build": "빠른 건설",
"infinite_gold": "무한 금",
"donate_gold": "금 지원",
@@ -283,7 +419,13 @@
"assigned_teams": "할당된 팀",
"empty_teams": "빈 팀",
"empty_team": "비어 있음",
"remove_player": "{username} 추방하기"
"remove_player": "{username} 추방하기",
"teams_Duos": "듀오 (2인 1조)",
"teams_Trios": "트리오 (3인 1조)",
"teams_Quads": "쿼드 (4인 1조)",
"teams_Humans Vs Nations": "인간 대 국가",
"starting_gold": "초기 자금",
"crowded": "혼잡 수정자"
},
"team_colors": {
"red": "빨강",
@@ -301,16 +443,22 @@
"code_license": "코드는 AGPL-3.0 라이선스에 따르며, 보증은 제공되지 않습니다."
},
"difficulty": {
"difficulty": "난이도",
"Easy": "느긋함",
"Medium": "보통",
"Hard": "치열함",
"Impossible": "불가능"
"difficulty": "국가 난이도",
"easy": "쉬움",
"medium": "보통",
"hard": "어려움",
"impossible": "불지옥"
},
"game_mode": {
"ffa": "개인전",
"teams": "팀전"
},
"public_game_modifier": {
"random_spawn": "랜덤 스폰",
"compact_map": "초소형 맵",
"crowded": "혼잡함",
"starting_gold": "500만 초지 자금"
},
"select_lang": {
"title": "언어 선택"
},
@@ -327,7 +475,7 @@
"factory": "공장"
},
"user_setting": {
"title": "사용자 설정",
"title": "설정",
"tab_basic": "기본 설정",
"tab_keybinds": "키 설정",
"dark_mode_label": "다크 모드",
@@ -340,16 +488,18 @@
"special_effects_desc": "특수 효과를 켜고 끕니다. 성능을 향상시키려면 비활성화하세요.",
"structure_sprites_label": "건물 스프라이트",
"structure_sprites_desc": "건물 스프라이트 켜기/끄기",
"cursor_cost_label_label": "커서 건설 비용",
"cursor_cost_label_desc": "건설 커서 아이콘 아래에 비용 표시를 표시",
"anonymous_names_label": "이름 감추기",
"anonymous_names_desc": "화면에 무작위 이름을 표시하여 실제 플레이어 이름을 숨깁니다.",
"lobby_id_visibility_label": "로비 ID 숨기기",
"lobby_id_visibility_desc": "비공개 로비 생성 시 로비 ID 숨기기",
"toggle_visibility": "가시성 전환",
"left_click_label": "좌클릭으로 메뉴 열기",
"left_click_desc": "켜짐 상태에서는 마우스 왼쪽 클릭 시 메뉴가 열리고 검 버튼 공격이 활성화됩니다. 꺼짐 상태에서는 마우스 왼쪽 클릭 시 바로 공격이 활성화됩니다.",
"left_click_menu": "좌클릭 메뉴",
"attack_ratio_label": "⚔️ 공격 비율",
"attack_ratio_desc": "공격에 보낼 병력 비율 (1~100%)",
"troop_ratio_desc": "전투를 위한 병력과 재화 생산을 위한 일꾼의 균형을 조정합니다. (1~100%)",
"territory_patterns_label": "🏳️ 영토 스킨",
"territory_patterns_desc": "게임 내에서 영토 패턴 패턴을 표시할지 여부를 선택하세요",
"performance_overlay_label": "성능 오버레이",
@@ -358,6 +508,7 @@
"easter_writing_speed_desc": "코딩하는 척하는 속도 조정 (x1~x100)",
"easter_bug_count_label": "버그 수",
"easter_bug_count_desc": "감당할 수 있는 버그의 수 (0~1000, 멘탈 기준)",
"press_a_key": "키 누르기",
"view_options": "옵션 보기",
"toggle_view": "보기 전환",
"toggle_view_desc": "지도 보기 전환 (지형/국가)",
@@ -382,6 +533,11 @@
"build_hydrogen_bomb_desc": "커서 위치에 수소 폭탄을 제조합니다.",
"build_mirv": "탄도미사일 제조",
"build_mirv_desc": "커서 위치에 탄도미사일을 제조합니다.",
"menu_shortcuts": "메뉴 바로가기",
"build_menu_modifier": "건설 메뉴 수정기",
"build_menu_modifier_desc": "빌드 메뉴를 열려면 이 키를 누른 상태로 클릭하십시오.",
"emoji_menu_modifier": "이모티콘 메뉴 수정자",
"emoji_menu_modifier_desc": "이 키를 누른 상태에서 클릭하면 이모지 메뉴가 열립니다.",
"attack_ratio_controls": "공격 비율 제어",
"attack_ratio_up": "공격 비율 높이기",
"attack_ratio_up_desc": "공격 비율을 10% 증가",
@@ -392,6 +548,8 @@
"boat_attack_desc": "커서 아래 타일에 상륙 공격을 보내보세요.",
"ground_attack": "지상 공격",
"ground_attack_desc": "커서 아래 타일에 지상 공격을 보냅니다.",
"swap_direction": "로켓 방향 전환",
"swap_direction_desc": "로켓 발사 방향 전환 (상/하).",
"zoom_controls": "확대 / 축소 제어",
"zoom_out": "축소",
"zoom_out_desc": "지도로 축소",
@@ -410,13 +568,14 @@
"move_right_desc": "카메라를 오른쪽으로 이동",
"reset": "초기화",
"unbind": "바인딩 해제",
"on": "",
"on": "",
"off": "끔",
"toggle_terrain": "지형 보기",
"exit_game_label": "게임 나가기",
"exit_game_info": "주 메뉴로 돌아가기",
"background_music_volume": "배경 음악 음량",
"sound_effects_volume": "효과음 음량"
"sound_effects_volume": "효과음 음량",
"keybind_conflict_error": "키 {key}는 이미 다른 동작에 바인딩되어 있습니다."
},
"chat": {
"title": "빠른 채팅",
@@ -503,7 +662,7 @@
"mirv_ready": "[P1]은(는) 다탄두 미사일 발사를 위한 금이 충분히 있어!",
"snowballing": "[P1]이(가) 너무 빨리 커지고 있어!",
"cheating": "[P1] 핵쓰는거 아니냐?",
"stop_trading": "[P1]과의 무역을 중단해!"
"stop_trading": ""
}
},
"build_menu": {
@@ -529,27 +688,24 @@
"other_team": "{team} 팀이 이겼습니다!",
"you_won": "나의 승리!",
"other_won": "{player} 이(가) 이겼습니다!",
"nation_won": "{nation} 국가가 승리했습니다!",
"exit": "게임 나가기",
"keep": "계속 플레이하기",
"spectate": "관전하기",
"requeue": "다시 하기",
"wishlist": "Steam에서 찜하기!",
"ofm_winter": "오픈프론트 마스터즈 겨울 토너먼트!",
"ofm_winter_description": "경쟁 토너먼트에 참여하여 최고의 플레이어들과 실력을 겨루세요",
"join_tournament": "토너먼트 참가",
"join_discord": "저희 디스코드 커뮤니티에 참여하세요!",
"discord_description": "다른 플레이어들과 소통하고, 업데이트 소식을 받고, 전략을 공유하세요",
"discord_description": "플레이어와 연결하고, 새로운 기능을 발견하고, 상품을 획득하세요!",
"join_server": "서버 참가",
"youtube_tutorial": "도움이 필요하신가요?"
},
"leaderboard": {
"title": "순위표",
"hide": "숨기기",
"rank": "순위",
"player": "플레이어",
"team": "팀",
"owned": "소유함",
"gold": "금",
"troops": "병력",
"maxtroops": "최대 병력",
"launchers": "발사대",
"sams": "지대공 미사일",
"warships": "군함",
@@ -557,33 +713,14 @@
"show_control": "조작 표시",
"show_units": "유닛 표시"
},
"player_info_overlay": {
"type": "유형",
"bot": "봇",
"nation": "국가",
"player": "플레이어",
"team": "팀",
"alliance_timeout": "동맹 종료까지",
"troops": "병력",
"a_troops": "공격 병력",
"gold": "금",
"ports": "항구",
"cities": "도시",
"factories": "공장",
"missile_launchers": "미사일 발사대",
"sams": "지대공 미사일들",
"warships": "군함",
"health": "체력",
"attitude": "태도",
"levels": "레벨"
},
"events_display": {
"events": "이벤트",
"retreating": "후퇴 중",
"retaliate": "반격",
"boat": "배",
"alliance_request_status": "{name}이(가) 당신의 동맹 요청을 {status}했습니다",
"alliance_accepted": "수락",
"alliance_rejected": "거부",
"alliance_nukes_destroyed_outgoing": "{count, plural, one {#개의 핵이 동맹으로 인해 {name}을 향해 발사되었으나 파괴되었습니다} other {#개의 핵이 동맹으로 인해 {name}을 향해 발사되었으나 파괴되었습니다}}",
"alliance_nukes_destroyed_incoming": "{count, plural, one {#개의 {name}가 발사한 핵이 동맹에 의해 파괴되었습니다} other {#개의 {name}가 발사한 핵이 동맹에 의해 파괴되었습니다}}",
"duration_second": "1초",
"betrayal_description": "{name}와의 동맹을 파기했습니다. 당신은 이제 배신자입니다. (방어력 {malusPercent}% 감소, 지속 시간: {durationText})",
"duration_seconds_plural": "{seconds}초",
@@ -601,16 +738,22 @@
"wants_to_renew_alliance": "{name}님이 동맹을 갱신을 원합니다",
"ignore": "무시하기",
"unit_voluntarily_deleted": "유닛이 해산되었습니다",
"betrayal_debuff_ends": "배신 디버프가 끝나기까지 {time}초 남았습니다"
},
"unit_info_modal": {
"structure_info": "건축물 정보",
"unit_type_unknown": "알 수 없음",
"close": "닫기",
"cooldown": "재사용 대기시간",
"type": "타입",
"upgrade": "업그레이드",
"level": "레벨"
"betrayal_debuff_ends": "배신 디버프가 끝나기까지 {time}초 남았습니다",
"attack_cancelled_retreat": "공격 취소됨, 퇴각 중 %s명의 병사 사망",
"received_gold_from_captured_ship": "{name}에게서 나포한 함선으로부터 {gold} 금을 받았습니다",
"received_gold_from_trade": "{name}님과의 거래로 {gold} 금을 받았습니다",
"received_gold_from_conquest": "{name}을 정복하여 {gold} 금을 획득했습니다",
"conquered_no_gold": "{name} 정복 (플레이하지 않음, 금 미지급)",
"missile_intercepted": "{unit} 요격됨",
"mirv_warheads_intercepted": "{count, plural, one {{count}개의 다탄두 미사일의 탄두가 요격됨} other {{count}개의 다탄두 미사일의 탄두가 요격됨}}",
"sent_troops_to_player": "{troops}명의 병력을 {name}에게 보냈습니다",
"received_troops_from_player": "{name}님으로부터 {troops}명의 병력을 받았습니다",
"sent_gold_to_player": "{gold} 금을 {name}님께 보냈습니다",
"received_gold_from_player": "{name}님께 금 {gold}개를 받았습니다",
"unit_captured_by_enemy": "당신의 {unit}이(가) {name}에게 점령당했습니다",
"captured_enemy_unit": "{name}에게서 {unit}을(를) 포획했습니다",
"unit_destroyed": "당신의 {unit}이(가) 파괴되었습니다",
"no_boats_available": "배를 사용할 수 없습니다. 최대 {max}대"
},
"player_type": {
"player": "플레이어",
@@ -624,11 +767,6 @@
"friendly": "우호적",
"default": "기본"
},
"control_panel": {
"gold": "금",
"troops": "병력",
"attack_ratio": "공격 비율"
},
"player_panel": {
"gold": "금",
"troops": "병력",
@@ -638,36 +776,42 @@
"active": "활성화 됨",
"stopped": "중지 됨",
"alliance_time_remaining": "동맹 만료: ",
"embargo": "당신과의 무역을 중단함",
"nuke": "당신에게 발사한 핵무기",
"start_trade": "무역 시작",
"stop_trade": "무역 중단",
"stop_trade_all": "모두와 무역 중단",
"start_trade_all": "모두와 무역 시작",
"alliances": "동맹",
"flag": "깃발",
"chat": "대화",
"target": "목표",
"break_alliance": "동맹 파기",
"alliance": "동맹",
"send_alliance": "동맹 제안",
"send_troops": "병력 보내기",
"send_gold": "금 보내기",
"emotes": "이모지"
"emotes": "이모지",
"moderation": "관리",
"kick": "플레이어 추방",
"kicked": "이미 추방됨",
"kick_confirm": "{name}님을 추방하시겠습니까?\n이 게임에 다시 참여할 수 없습니다.",
"arc_up": "위쪽 호",
"arc_down": "아래쪽 호",
"flip_rocket_trajectory": "로켓 궤적 뒤집기"
},
"kick_reason": {
"duplicate_session": "게임에서 추방되었습니다 (다른 탭에서 플레이 중이었을 수 있습니다)",
"lobby_creator": "로비 생성자가 추방했습니다"
},
"send_troops_modal": {
"title_with_name": "{name}에게 병력 보내기",
"available_tooltip": "현재 지원 가능한 병력",
"min_keep": "최소 보유량",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount} 금",
"aria_slider": "병력 슬라이더",
"capacity_note": "상대방은 지금 {{amount}}까지만 받을 수 있습니다."
"capacity_note": "수신자는 지금 {amount}만 받을 수 있습니다."
},
"send_gold_modal": {
"title_with_name": "{name}에게 금 보내기",
"available_tooltip": "현재 보유 중인 금",
"aria_slider": "수량 슬라이더",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "리플레이 속도",
@@ -702,35 +846,37 @@
},
"heads_up_message": {
"choose_spawn": "시작 위치를 선택하세요",
"random_spawn": "무작위 시작이 활성화되었습니다. 시작 위치를 선택하는 중..."
"random_spawn": "무작위 시작이 활성화되었습니다. 시작 위치를 선택하는 중...",
"singleplayer_game_paused": "게임 일시 중지됨",
"multiplayer_game_paused": "로비 생성자가 게임을 일시 중지함",
"pvp_immunity_active": "{seconds}초 동안 PVP 면역이 활성화되었습니다",
"catching_up": "따라잡는 중..."
},
"territory_patterns": {
"title": "스킨",
"colors": "색상",
"purchase": "구매",
"show_only_owned": "나의 스킨",
"blocked": {
"login": "이 스킨에 액세스하려면 로그인해야 합니다.",
"purchase": "이 스킨을 구매하여 잠금 해제하세요."
},
"all_owned": "모든 스킨을 보유했습니다! 나중에 새로운 아이템을 확인하세요.",
"not_logged_in": "로그인하지 않음",
"pattern": {
"default": "기본값"
}
},
"try_me": "마음껏 덤벼봐라!",
"trial_remaining": "남은",
"trial_granted": "스킨 시험 사용이 허가되었습니다!",
"trial_cooldown": "24시간에 한 번만 시도할 수 있습니다. 나중에 다시 시도해주세요.",
"trial_login_required": "체험판 스킨을 사용하려면 로그인해야 합니다",
"reward_countdown": "{seconds}초 후에 보상이 지급됩니다...",
"steam_wishlist_prompt": "오픈프론트를 스팀 찜목록에 추가하여 지원해주세요",
"select_skin": "스킨 선택",
"selected": "선택됨"
},
"flag_input": {
"title": "깃발 선택",
"button_title": "깃발을 선택하세요!",
"search_flag": "검색..."
},
"spawn_ad": {
"loading": "광고 로딩 중..."
},
"auth": {
"login_required": "이 웹사이트에 접속하려면 로그인해야 합니다.",
"redirecting": "다른 페이지로 이동 중입니다...",
"not_authorized": "이 웹사이트에 접근할 권한이 없습니다.",
"contact_admin": "이 메시지가 잘못 표시되었다고 생각되면 웹사이트 관리자에게 문의하십시오."
},
"radial_menu": {
"delete_unit_title": "유닛 삭제",
"delete_unit_description": "클릭하여 가장 가까운 유닛을 삭제합니다"
@@ -786,9 +932,9 @@
"mode": "모드",
"mode_ffa": "개인전",
"mode_team": "팀전",
"view": "보기",
"replay": "다시보기",
"details": "세부 정보",
"started": "시작됨",
"ranking": "순위",
"map": "지도",
"difficulty": "난이도",
"type": "유형"
@@ -796,13 +942,20 @@
"player_stats_tree": {
"public": "공개",
"private": "비공개",
"singleplayer": "혼자 하기",
"solo": "솔로",
"mode": "모드",
"stats_wins": "승",
"stats_losses": "패",
"stats_wlr": "승패 비율",
"stats_games_played": "플레이 횟수",
"mode_ffa": "개인전",
"mode_team": "팀전"
"mode_team": "팀전",
"no_stats": "이 선택에 대한 기록된 통계가 없습니다."
},
"matchmaking_button": {
"play_ranked": "1대1 승급전 매치메이킹",
"description": "(시험판)",
"login_required": "승급전을 플레이하려면 로그인하세요!",
"must_login": "승급전 매치메이킹을 플레이하려면 로그인해야 합니다."
}
}
+12
View File
@@ -17,6 +17,12 @@
"en": "Bengali",
"svg": "bd"
},
{
"code": "ca",
"native": "Català",
"en": "Catalan",
"svg": "catalonia"
},
{
"code": "cs",
"native": "Čeština",
@@ -59,6 +65,12 @@
"en": "Spanish",
"svg": "es"
},
{
"code": "et",
"native": "Eesti keel",
"en": "Estonian",
"svg": "estonia"
},
{
"code": "fa",
"native": "فارسی",
+3 -3
View File
@@ -790,15 +790,15 @@
"title_with_name": "Stuur Troepen naar {name}",
"available_tooltip": "Jouw nu beschikbare troepen",
"min_keep": "Min. houden",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "Troepen schuifbalk",
"capacity_note": "Ontvanger kan slechts {{amount}} accepteren momenteel."
"capacity_note": "Ontvanger kan slechts {amount} accepteren momenteel."
},
"send_gold_modal": {
"title_with_name": "Stuur Goud naar {name}",
"available_tooltip": "Jouw nu beschikbare goud",
"aria_slider": "Bedrag schuifbalk",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Afspeelsnelheid",
+3 -3
View File
@@ -631,17 +631,17 @@
"available_tooltip": "Obecnie dostępne wojsko",
"min_keep": "Min. utrzymanie",
"min_keep_pct": "(30%)",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"toggle_attack_bar_mode": "Użyj suwaka ataku, aby wysłać wojsko",
"warning_attackbar": "Po włączeniu tej opcji nie możesz bezpośrednio otworzyć tego modułu. Będziesz wysyłał wojsko tylko przez suwak ataku.",
"aria_slider": "Suwak Jednostek",
"capacity_note": "Odbiorca może teraz zaakceptować tylko {{amount}}."
"capacity_note": "Odbiorca może teraz zaakceptować tylko {amount}."
},
"send_gold_modal": {
"title_with_name": "Wyślij Złoto do {name}",
"available_tooltip": "Obecnie dostępne złoto",
"aria_slider": "Suwak Ilości Złota",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Prędkość powtórki",
+130 -122
View File
@@ -7,64 +7,92 @@
},
"common": {
"close": "Закрыть",
"copy": "Копировать",
"paste": "Вставить",
"back": "Назад",
"available": "Доступно",
"preset_max": "Максимум",
"preset_max": "Макс.",
"summary_send": "Перевод",
"summary_keep": "Остаток",
"cancel": "Отменить",
"send": "Отправить",
"cap_label": "Лимит",
"cap_tooltip": "Оставшаяся ёмкость получателя",
"cap_tooltip": "Остаток вместимости получателя",
"target_dead": "Цель устранена",
"target_dead_note": "Невозможно отправить ресурсы устранённому игроку.",
"none": "Ничего",
"copied": "Скопировано!",
"click_to_copy": "Нажмите, чтобы скопировать"
"click_to_copy": "Нажмите, чтобы скопировать",
"enabled": "Включено"
},
"main": {
"title": "OpenFront (АЛЬФА)",
"join_discord": "Discord",
"login_discord": "Войти через Discord",
"sign_in": "Войти",
"discord_avatar_alt": "Аватар профиля Discord",
"user_avatar_alt": "Аватар {username}",
"checking_login": "Проверка авторизации...",
"logged_in": "Вход выполнен!",
"log_out": "Выйти",
"create": "Создать лобби",
"join": "Присоединиться к лобби",
"solo": "Соло",
"instructions": "Инструкции",
"game_info": "Информация об игре",
"wiki": "Вики",
"privacy_policy": "Политика конфиденциальности",
"terms_of_service": "Пользовательское соглашение",
"copyright": "© OpenFront™ и участники",
"reddit": "Reddit",
"play": "Играть",
"news": "Новости",
"store": "Магазин",
"store_new_badge": "НОВОЕ",
"settings": "Настройки",
"keys": "Клавиши",
"stats": "Статистика",
"leaderboard": "Таблица лидеров",
"account": "Аккаунт",
"help": "Помощь",
"menu": "Меню",
"pick_pattern": "Выберите узор!"
"troubleshooting": "Устранение неполадок",
"go_to_troubleshooting": "На страницу устранения неполадок"
},
"news": {
"github_link": "на GitHub",
"title": "Список изменений"
},
"troubleshooting": {
"title": "Устранение неполадок",
"environment": "Среда",
"rendering": "Отрисовка",
"power": "Питание",
"browser": "Браузер",
"platform": "Платформа",
"copied_to_clipboard": "Информация скопирована в буфер обмена! Не забудьте поделиться ней в нашем Discord, если вам нужна помощь.",
"os": "ОС",
"device_pixel_ratio": "Соотношение пикселей устройства",
"chromium_tip": "OpenFront лучше всего работает в браузерах на базе Chromium.",
"hardware_acceleration_tip": "Для оптимальной производительности включите аппаратное ускорение в настройках браузера.",
"renderer": "Визуализатор",
"max_texture_size": "Максимальный размер текстур",
"high_precision_shaders": "Высокоточные шейдеры",
"gpu": "Видеокарта",
"unavailable": "Недоступно",
"gpu_tip": "Убедитесь, что это выделенная видеокарта, если она доступна.",
"battery": "Аккумулятор",
"charging": "Зарядка",
"battery_level": "Уровень заряда",
"power_saving_tip": "Убедитесь, что в вашем браузере не включён режим энергосбережения.",
"yes": "Да",
"no": "Нет",
"unknown": "Неизвестно",
"software_rendering": "Программная визуализация",
"canvas_2d_no_gpu": "2D-полотно (без видеокарты)"
},
"help_modal": {
"video_tutorial": "Видеоинструкция",
"video_tutorial_title": "Руководство OpenFront.io",
"hotkeys": "Горячие клавиши",
"table_key": "Клавиша",
"table_action": "Действие",
"action_alt_view": "Альтернативное представление (рельеф/страны)",
"action_attack_altclick": "Атака (если левая кнопка мыши назначена на открытие меню)",
"action_build": "Открыть меню строительства",
"action_emote": "Открыть меню смайлов",
"action_emote": "Открыть меню эмодзи",
"action_center": "Центрировать камеру на игроке",
"action_zoom": "Отдалить/Приблизить",
"action_move_camera": "Перемещение камеры",
@@ -77,7 +105,6 @@
"ui_leaderboard_desc": "Показывает лучших игроков игры и их имена, % принадлежащих территорий, количество золота и войск. При помощи кнопки «Показать всё» вы можете показать всех игроков в игре. Если вы не хотите видеть таблицу лидеров, нажмите «Скрыть».",
"ui_control": "Панель управления",
"ui_control_desc": "Панель управления содержит следующие элементы:",
"ui_pop": "Население — количество ваших подразделений, максимальное население и темп его роста.",
"ui_gold": "Золото — Количество золота и скорость, с которой вы его получаете.",
"ui_attack_ratio": "Соотношение атаки — Количество войск, которое будет использовано при атаке. Вы можете настроить соотношение атаки с помощью ползунка. Имея больше войск атаки, чем войск защиты, вы уменьшите потери во время атаки, а меньше — увеличите потери, наносимые вашим атакующим войскам. Эффект не превышает соотношения 2:1.",
"ui_events": "Панель событий",
@@ -97,22 +124,20 @@
"radial_title": "Круговое меню",
"radial_desc": "Щелчок правой кнопкой мыши (или нажатие на мобильном устройстве) открывает круговое меню. Щёлкните правой кнопкой мыши за его пределами, чтобы закрыть его. С этого меню вы можете:",
"radial_build": "Открыть меню строительства.",
"radial_attack": "Открыть меню атаки.",
"radial_info": "Открыть меню информации.",
"radial_boat": "Отправить судно (транспортный корабль) для атаки указанного места. Доступно только при наличии доступа к воде.",
"radial_donate_troops": "Пожертвовать войска, равные соотношению вашего ползунка атаки тому союзнику, на котором вы открыли круговое меню.",
"radial_donate_gold": "Открывает меню ползунка пожертвования золота для быстрой отправки золота союзникам.",
"radial_close": "Закрыть меню.",
"info_title": "Меню информации",
"info_enemy_desc": "Содержит такую информацию о выбранном игроке, как его имя, количество золота, войск, состояние торговли с вами, запущенные на вас ракеты и метку предателя. Прекращённая торговля значит, что вы не будете получать от игрока золото и он не будет отправлять вам золото через торговые корабли. Вручную (если игрок нажал «Прекратить торговлю», что длится до тех пор, пока вы оба не нажмёте «Начать торговлю») или автоматически (если вы предали ваш союз, что длится до тех пор, пока вы не станете союзниками снова или через 5 минут). В поле «Предатель» будет указана метка «Да» в течение 30 секунд после того, как игрок предал и напал на игрока, который был в союзе с ними. Значки ниже обозначают следующие взаимодействия:",
"info_chat": "Отправьте игроку быстрое сообщение. Выберите категорию, фразу и, если фраза содержит слово «[P1]», выберите имя игрока, которым хотите заменить его. Нажмите «Отправить».",
"info_chat": "Отправить игроку быстрое сообщение. Выберите категорию, фразу и, если фраза содержит слово «[P1]», выберите имя игрока, которым хотите заменить его. Нажмите «Отправить».",
"info_target": "Поместить метку цели на игрока, отметив его для всех союзников. Используется для координирования атак.",
"info_alliance": "Отправить игроку запрос на союз. Союзники могут обмениваться ресурсами и войсками, но не могут атаковать друг друга.",
"info_emoji": "Отправить эмодзи игроку.",
"info_trade": "Используйте «Прекратить торговлю», чтобы перестать давать игроку золото и получать золото от него через торговые корабли. Если вы оба нажмете «Начать торговлю», то он начнется снова.",
"info_trade": "Используйте «Прекратить торговлю», чтобы перестать давать игроку золото и получать золото от него через торговые корабли. Если вы оба нажмёте «Начать торговлю», то она начнётся снова.",
"info_ally_panel": "Панель информации о союзнике",
"info_ally_desc": "Когда вы заключите союз с игроком, станут доступны следующие значки:",
"ally_betray": "Предайте своего союзника, разорвав союз, прекратив торговлю и ослабив свою защиту. Торговля между вами приостановиться на 5 минут (или до возобновления союза), а другие игроки также могут перестать торговать с вами. Если другой игрок не был предателем, вы получите метку предателя на 30 секунд. В это время над вашим именем появится особый значок и ваша защита будет снижена на 50%. Боты с меньшей вероятность будут заключать с вами союзы, а игроки дважды подумают перед тем, как иметь с вами дело.",
"ally_betray": "Предать своего союзника, разорвав союз, прекратив торговлю и ослабив свою защиту. Торговля между вами приостановиться на 5 минут (или до возобновления союза), а другие игроки также могут перестать торговать с вами. Если другой игрок не был предателем, вы получите метку предателя на 30 секунд. В это время над вашим именем появится особый значок и ваша защита будет снижена на 50%. Боты с меньшей вероятность будут заключать с вами союзы, а игроки дважды подумают перед тем, как иметь с вами дело.",
"ally_donate": "Пожертвовать часть войска союзнику. Используется, когда у него мало войск и его атакуют, или когда ему нужна дополнительная мощь для уничтожения врага.",
"ally_donate_gold": "Пожертвовать немного золота союзнику. Используйте, когда у него мало золота, необходимого для сооружений, или когда член команды копит на РГЧ ИН.",
"build_menu_title": "Меню строительства",
@@ -141,6 +166,7 @@
"build_mirv": "РГЧ ИН",
"build_mirv_desc": "Самая мощная бомба в игре. Разделяется на бомбы меньшего размера, которые покрывают огромную территорию. Наносит урон только выбранному игроку. Запускается из ближайшей ракетной шахты и наносит удар по области, выбранной нажатием кнопкой мыши.",
"player_icons": "Значки игрока",
"troubleshooting_desc": "Если вы испытываете проблемы с производительностью, сбои или другие проблемы во время игры в OpenFront, пожалуйста, посетите страницу устранения неполадок для диагностики и устранения распространённых проблем:",
"icon_desc": "Примеры некоторых иконок в игре, которые вы встретите и их значения:",
"icon_crown": "Корона — Номер 1. Это — лучший игрок в таблице лидеров.",
"icon_traitor": "Сломанный щит — Предатель. Этот игрок напал на союзника.",
@@ -149,18 +175,17 @@
"icon_request": "Конверт — Запрос на союз. Этот игрок отправил вам запрос на заключение союза.",
"info_enemy_panel": "Панель информации о враге",
"exit_confirmation": "Вы уверены, что хотите выйти из игры?",
"bomb_direction": "Траектория полёта ядерной/водородной бомбы"
"bomb_direction": "Траектория полёта ядерной/водородной бомбы",
"icon_alt_player_leaderboard": "Значок таблицы лидеров игроков",
"icon_alt_team_leaderboard": "Значок таблицы лидеров команд"
},
"single_modal": {
"title": "Соло",
"random_spawn": "Случайное появление",
"allow_alliances": "Разрешить союзы",
"toggle_achievements": "Переключение достижений",
"sign_in_for_achievements": "Войдите, чтобы получать достижения",
"options_title": "Настройки",
"bots": "Боты: ",
"bots_disabled": "Отключены",
"nations": "Нации: ",
"disable_nations": "Отключить нации",
"instant_build": "Мгновенная стройка",
"infinite_gold": "Неограниченное золото",
@@ -169,9 +194,13 @@
"max_timer": "Продолжительность игры (минуты)",
"max_timer_placeholder": "Минуты",
"max_timer_invalid": "Пожалуйста, введите допустимое максимальное значение таймера (1–120 минут)",
"disable_nukes": "Отключить бомбы",
"enables_title": "Разрешения",
"start": "Начать игру"
"start": "Начать игру",
"options_changed_no_achievements": "Пользовательские настройки – достижения выключены",
"gold_multiplier": "Множитель золота",
"gold_multiplier_placeholder": "2.0x",
"starting_gold": "Начальное золото",
"starting_gold_placeholder": "5000000"
},
"token_login_modal": {
"title": "Вход...",
@@ -194,17 +223,22 @@
"not_found": "Не найдено",
"clear_session": "Очистить сессию",
"failed_to_send_recovery_email": "Не удалось отправить письмо для восстановления",
"enter_email_address": "Пожалуйста, введите адрес электронной почты"
"enter_email_address": "Пожалуйста, введите адрес электронной почты",
"personal_player_id": "Персональный ID игрока:"
},
"stats_modal": {
"title": "Статистика",
"clan_stats": "Статистика кланов",
"leaderboard_modal": {
"title": "Таблица лидеров",
"ranked_tab": "Рейтинговые игры 1v1",
"clans_tab": "Кланы",
"refresh_time": "Обновляется каждый час",
"loading": "Загрузка...",
"error": "Ошибка загрузки статистики кланов",
"no_stats": "Статистика кланов недоступна",
"no_data_yet": "Пока нет данных",
"error": "Ошибка загрузки таблицы лидеров",
"no_stats": "Статистика недоступна",
"no_data_yet": "Данные отсутствуют",
"clan": "Клан",
"player": "Игрок",
"games": "Игры",
"elo": "ELO",
"win_score": "Счёт побед",
"win_score_tooltip": "Взвешенные победы на основе участия клана и сложности матча",
"loss_score": "Счёт поражений",
@@ -212,7 +246,8 @@
"win_loss_ratio": "Победы/Поражения",
"ratio": "Соотношение",
"rank": "Ранг",
"try_again": "Попробуйте ещё раз"
"try_again": "Попробовать ещё раз",
"your_ranking": "Ваш рейтинг"
},
"game_info_modal": {
"title": "Информация об игре",
@@ -224,9 +259,12 @@
"total_gold": "Всего",
"all_gold": "Всё золото",
"trade": "Торговля",
"train_trade": "Поезд",
"naval_trade": "Торговый корабль",
"conquest_gold": "Захваченное золото игроков",
"stolen_gold": "Украдено с помощью военных кораблей",
"num_of_conquests": "Количество покорённых игроков",
"num_of_conquests_humans": "Убийства игроков",
"num_of_conquests_bots": "Убийства ботов",
"duration": "Продолжительность",
"survival_time": "Время выживания",
"war": "Война",
@@ -239,6 +277,8 @@
},
"map": {
"map": "Карта",
"featured": "Рекомендованные",
"all": "Все",
"world": "Мир",
"giantworldmap": "Гигантская карта мира",
"europe": "Европа",
@@ -281,14 +321,18 @@
"manicouagan": "Маникуаган",
"lemnos": "Лемнос",
"sierpinski": "Серпинский",
"thebox": "Коробка",
"twolakes": "Два озера",
"straitofhormuz": "Ормузский пролив",
"surrounded": "Окружение",
"didier": "Дидье",
"didierfrance": "Дидье (Франция)",
"amazonriver": "Река Амазонка"
"amazonriver": "Река Амазонка",
"tradersdream": "Мечта торговца",
"hawaii": "Гавайи"
},
"map_categories": {
"featured": "Рекомендованные",
"continental": "Континентальные",
"regional": "Региональные",
"fantasy": "Прочие",
@@ -302,29 +346,30 @@
"private_lobby": {
"title": "Присоединение к приватному лобби",
"enter_id": "Введите ID лобби",
"player": "Игрок",
"players": "Игрока(-ов)",
"join_lobby": "Присоединиться к лобби",
"checking": "Проверка лобби...",
"not_found": "Лобби не найдено. Пожалуйста, проверьте правильность ID и попробуйте ещё раз.",
"error": "Произошла ошибка. Пожалуйста, попробуйте ещё раз или обратитесь в службу поддержки.",
"joined_waiting": "Лобби подключено! Ждём, пока хост начнёт игру...",
"version_mismatch": "Эта игра была создана в другой версии. Невозможно присоединиться.",
"disabled_units": "Отключённые сооружения"
"disabled_units": "Отключённые юниты"
},
"public_lobby": {
"title": "Ожидание начала игры...",
"join": "Присоединиться к следующей игре",
"waiting": "игрока(-ов) в ожидании",
"teams_Duos": "{team_count} команды по 2 (дуо)",
"teams_Trios": "{team_count} команды по 3 (трио)",
"teams_Quads": "{team_count} команды по 4 (квады)",
"waiting_for_players": "Ожидание игроков",
"connecting": "Подключение к лобби...",
"starting_in": "Начало через {time}",
"starting_game": "Запуск игры…",
"teams_hvn": "Люди против наций",
"teams_hvn_detailed": "{num} людей против {num} наций",
"teams": "Команд: {num}",
"players_per_team": "по {num}",
"started": "Начато"
"started": "Начато",
"status": "Статус",
"join_timeout": "Вы не присоединились к игре вовремя."
},
"matchmaking_modal": {
"title": "Рейтинговый подбор 1v1 (АЛЬФА)",
@@ -353,7 +398,6 @@
"bots": "Боты: ",
"bots_disabled": "Отключены",
"player_immunity_duration": "Продолжительность иммунитета в PVP (минуты)",
"nations": "Нации: ",
"disable_nations": "Отключить нации",
"max_timer": "Продолжительность игры (минуты)",
"mins_placeholder": "Минуты",
@@ -379,7 +423,9 @@
"teams_Duos": "Дуо (команды по 2)",
"teams_Trios": "Трио (команды по 3)",
"teams_Quads": "Квады (команды по 4)",
"teams_Humans Vs Nations": "Люди против наций"
"teams_Humans Vs Nations": "Люди против наций",
"starting_gold": "Начальное золото",
"crowded": "Модификатор перенаселения"
},
"team_colors": {
"red": "Красный",
@@ -409,7 +455,9 @@
},
"public_game_modifier": {
"random_spawn": "Случайное появления",
"compact_map": "Компактная карта"
"compact_map": "Компактная карта",
"crowded": "Перенаселение",
"starting_gold": "5 млн начального золота"
},
"select_lang": {
"title": "Выбор языка"
@@ -459,7 +507,7 @@
"easter_writing_speed_label": "Множитель скорости печати",
"easter_writing_speed_desc": "Настройте скорость, с которой вы делаете вид, что программируете (x1–x100)",
"easter_bug_count_label": "Количество багов",
"easter_bug_count_desc": "Количество багов, которое вы считаете приемлемым (0–1000, эмоционально)",
"easter_bug_count_desc": "Количество багов, которое вы считаете приемлемым (0–1000, по настроению)",
"press_a_key": "Нажмите клавишу",
"view_options": "Настройки просмотра",
"toggle_view": "Переключить представление",
@@ -644,19 +692,15 @@
"exit": "Выйти из игры",
"keep": "Продолжить игру",
"spectate": "Наблюдать",
"requeue": "Играть ещё раз",
"wishlist": "Добавляйте в список желаемого в Steam!",
"ofm_winter": "Зимний турнир OpenFront Masters!",
"ofm_winter_description": "Присоединяйтесь к турниру и состязайтесь с лучшими игроками",
"join_tournament": "Присоединиться к турниру",
"join_discord": "Присоединяйтесь к нашему сообществу в Discord!",
"discord_description": "Связывайтесь с игроками, открывайте новые возможности и выигрывайте призы!",
"join_server": "Присоединиться к серверу",
"youtube_tutorial": "Нужна помощь?"
},
"leaderboard": {
"title": "Таблица лидеров",
"hide": "Скрыть",
"rank": "Место",
"player": "Игрок",
"team": "Команда",
"owned": "Территории",
@@ -667,38 +711,16 @@
"warships": "Военные корабли",
"cities": "Города",
"show_control": "Показать подконтрольные территории",
"show_units": "Показать сооружения"
},
"player_info_overlay": {
"type": "Тип",
"bot": "Бот",
"nation": "Нация",
"player": "Игрок",
"team": "Команда",
"alliance_timeout": "Конец союза через",
"troops": "Войска",
"maxtroops": "Максимум войск",
"a_troops": "Войска атаки",
"gold": "Золото",
"ports": "Порты",
"cities": "Города",
"factories": "Фабрики",
"missile_launchers": "Ракетные установки",
"sams": "ЗРК",
"warships": "Военные корабли",
"health": "Здоровье",
"attitude": "Отношение",
"levels": "Уровни",
"wilderness_title": "Пустошь",
"irradiated_wilderness_title": "Радиоактивная пустошь"
"show_units": "Показать юниты"
},
"events_display": {
"events": "События",
"retreating": "отступает",
"retaliate": "Напасть в ответ",
"boat": "Судно",
"alliance_request_status": "{name} {status} ваш запрос",
"alliance_accepted": "принял",
"alliance_rejected": "отклонил",
"alliance_nukes_destroyed_outgoing": "{count, plural, one {# ракета, запущенная на {name}, была уничтожена благодаря союзу} few {# ракеты, запущенные на {name}, были уничтожены благодаря союзу} many {# ракет, запущенных на {name}, были уничтожены благодаря союзу} other {# ракет, запущенных на {name}, были уничтожены благодаря союзу}}",
"alliance_nukes_destroyed_incoming": "{count, plural, one {# ракета, запущенная от {name}, была уничтожена благодаря союзу} few {# ракеты, запущенные от {name}, были уничтожены благодаря союзу} many {# ракет, запущенных от {name}, были уничтожены благодаря союзу} other {# ракет, запущенных от {name}, были уничтожены благодаря союзу}}",
"duration_second": "1 сек",
"betrayal_description": "Вы порвали союз с {name}, став ПРЕДАТЕЛЕМ (защита снижена на {malusPercent}% на {durationText})",
"duration_seconds_plural": "{seconds} сек",
@@ -715,31 +737,24 @@
"alliance_renewed": "Ваш союз с {name} был продлён",
"wants_to_renew_alliance": "{name} хочет продлить ваш союз",
"ignore": "Игнорировать",
"unit_voluntarily_deleted": "Сооружение добровольно удалено",
"unit_voluntarily_deleted": "Юнит добровольно удалён",
"betrayal_debuff_ends": "Осталось {time} сек до окончания наказания предателя",
"attack_cancelled_retreat": "Атака отменена, {troops} солдат погибло во время отступления",
"received_gold_from_captured_ship": "Получено {gold} золота с корабля, захваченного у {name}",
"received_gold_from_trade": "Получено {gold} золота от торговли с {name}",
"received_gold_from_conquest": "Завоёвано {name}, получено {gold} ед. золота",
"conquered_no_gold": "Завоёвано {name} (не играл, золото не получено)",
"missile_intercepted": "{unit} перехватывает ракету",
"mirv_warheads_intercepted": "{count, plural, one {Перехвачено {count} боеголовку РГЧ ИН} few {Перехвачено {count} боеголовки РГЧ ИН} many {Перехвачено {count} боеголовок РГЧ ИН} other {Перехвачено {count} боеголовок РГЧ ИН}}",
"sent_troops_to_player": "Отправлено {troops} войск к {name}",
"received_troops_from_player": "Получено {troops} войск от {name}",
"sent_gold_to_player": "Отправлено {gold} золота для {name}",
"received_gold_from_player": "Получено {gold} золота от {name}",
"unit_captured_by_enemy": "{name} захватывает ваше сооружение «{unit}»",
"captured_enemy_unit": "Захвачено сооружение «{unit}» у {name}",
"unit_destroyed": "Ваше сооружение «{unit}» было уничтожено",
"unit_captured_by_enemy": "{name} захватывает ваш юнит «{unit}»",
"captured_enemy_unit": "Захвачен юнит «{unit}» у {name}",
"unit_destroyed": "Ваш юнит «{unit}» был уничтожен",
"no_boats_available": "Нет доступных судов, максимум — {max}"
},
"unit_info_modal": {
"structure_info": "Информация о структуре",
"unit_type_unknown": "Неизвестно",
"close": "Закрыть",
"cooldown": "Перезарядка",
"type": "Тип",
"upgrade": "Улучшить",
"level": "Уровень"
},
"player_type": {
"player": "Игрок",
"nation": "Нация",
@@ -752,11 +767,6 @@
"friendly": "Дружеское",
"default": "По умолчанию"
},
"control_panel": {
"gold": "Золото",
"troops": "Войска",
"attack_ratio": "Соотношение атаки"
},
"player_panel": {
"gold": "Золото",
"troops": "Войска",
@@ -766,39 +776,42 @@
"active": "Активна",
"stopped": "Прекращена",
"alliance_time_remaining": "Союз закончится через",
"embargo": "Прекратил торговлю с вами",
"nuke": "Ракеты, запущенные ими на вас",
"start_trade": "Начать торговлю",
"stop_trade": "Прекратить торговлю",
"stop_trade_all": "Прекратите торговать со всеми",
"start_trade_all": "Начать торговлю со всеми",
"alliances": "Союзы",
"flag": "Флаг",
"chat": "Чат",
"target": "Цель",
"break_alliance": "Разорвать союз",
"alliance": "Союз",
"send_alliance": "Отправить предложение союза",
"send_troops": "Отправить войска",
"send_gold": "Отправить золото",
"emotes": "Эмодзи",
"moderation": "Модерация",
"kick": "Выгнать участника",
"kicked": "Уже выгнан",
"kick_confirm": "Выгнать {name}?\n\nОн не сможет вернуться к этой игре.",
"arc_up": "Верхняя дуга",
"arc_down": "Нижняя дуга",
"flip_rocket_trajectory": "Отразить траекторию ракеты"
},
"kick_reason": {
"duplicate_session": "Выгнано из игры (возможно, вы играли на другой вкладке)",
"lobby_creator": "Выгнано создателем лобби"
},
"send_troops_modal": {
"title_with_name": "Отправить войска игроку {name}",
"available_tooltip": "Ваши доступные в данный момент войска",
"min_keep": "Минимальный остаток",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "Ползунок войск",
"capacity_note": "Получатель в данный момент может принять только {{amount}}."
"capacity_note": "Получатель в данный момент может принять только {amount}."
},
"send_gold_modal": {
"title_with_name": "Отправить золото игроку {name}",
"available_tooltip": "Ваше доступное в данный момент золото",
"aria_slider": "Ползунок количества",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Скорость повтора",
@@ -835,23 +848,28 @@
"choose_spawn": "Выберите стартовое местоположение",
"random_spawn": "Случайное появление включено. Выбираем стартовое местоположение за вас...",
"singleplayer_game_paused": "Игра приостановлена",
"multiplayer_game_paused": "Игра приостановлена владельцем лобби"
"multiplayer_game_paused": "Игра приостановлена владельцем лобби",
"pvp_immunity_active": "Иммунитет в PVP активен на {seconds} сек",
"catching_up": "Синхронизация..."
},
"territory_patterns": {
"title": "Скины",
"colors": "Цвета",
"purchase": "Купить",
"show_only_owned": "Мои скины",
"all_owned": "Все узоры куплены! Возвращайтесь позже за новыми товарами.",
"all_owned": "Все скины куплены! Возвращайтесь позже за новыми товарами.",
"not_logged_in": "Вы не авторизованы",
"blocked": {
"login": "Вы должны войти, чтобы получить доступ к этому скину.",
"purchase": "Купите этот скин, чтобы разблокировать его."
},
"pattern": {
"default": "По умолчанию"
},
"select_skin": "Выберете узор",
"try_me": "Примерь меня!",
"trial_remaining": "осталось",
"trial_granted": "Пробный скин предоставлен!",
"trial_cooldown": "Можно примерить только один скин в течение 24 часов. Пожалуйста, попробуйте ещё раз позже.",
"trial_login_required": "Необходимо войти в систему, чтобы получить пробный скин",
"reward_countdown": "Вознаграждение через {seconds} сек...",
"steam_wishlist_prompt": "Поддержите OpenFront, добавив его в список желаемого Steam",
"select_skin": "Выберете скин",
"selected": "выбрано"
},
"flag_input": {
@@ -859,18 +877,9 @@
"button_title": "Выбери флаг!",
"search_flag": "Поиск..."
},
"spawn_ad": {
"loading": "Загрузка рекламы..."
},
"auth": {
"login_required": "Для доступа к этому сайту требуется войти в систему.",
"redirecting": "Вы будете перенаправлены...",
"not_authorized": "У вас нет прав для доступа на этот сайт.",
"contact_admin": "Если вы считаете, что видите это сообщение по ошибке, пожалуйста, свяжитесь с администратором сайта."
},
"radial_menu": {
"delete_unit_title": "Удалить сооружение",
"delete_unit_description": "Нажмите, чтобы удалить ближайшее сооружение"
"delete_unit_title": "Удалить юнит",
"delete_unit_description": "Нажмите, чтобы удалить ближайший юнит"
},
"discord_user_header": {
"avatar_alt": "Аватар"
@@ -926,7 +935,6 @@
"replay": "Повтор",
"details": "Подробности",
"ranking": "Рейтинг",
"started": "Начато",
"map": "Карта",
"difficulty": "Сложность",
"type": "Тип"
@@ -934,7 +942,7 @@
"player_stats_tree": {
"public": "Публичный",
"private": "Приватный",
"singleplayer": "Соло",
"solo": "Соло",
"mode": "Режим",
"stats_wins": "Победы",
"stats_losses": "Поражения",
+3 -3
View File
@@ -790,15 +790,15 @@
"title_with_name": "{name}'e Birlik Gönder",
"available_tooltip": "Şu anda mevcut olan birliklerin",
"min_keep": "Minimum Elinde Tutma",
"slider_tooltip": "%{{percent}} •{{amount}}",
"slider_tooltip": "%{percent} •{amount}",
"aria_slider": "Birlik çubuğu",
"capacity_note": "Alıcı ancak {{amount}} kadar alabilir."
"capacity_note": "Alıcı ancak {amount} kadar alabilir."
},
"send_gold_modal": {
"title_with_name": "{name}'e Altın Gönder",
"available_tooltip": "Mevcut altının",
"aria_slider": "Miktar çubuğu",
"slider_tooltip": "%{{percent}}{{amount}}"
"slider_tooltip": "%{percent} • {amount}"
},
"replay_panel": {
"replay_speed": "Tekrar oynatma hızı",
+134 -126
View File
@@ -7,57 +7,85 @@
},
"common": {
"close": "Закрити",
"copy": "Копіювати",
"paste": "Вставити",
"back": "Назад",
"available": "Доступно",
"preset_max": "Максимум",
"preset_max": "Макс.",
"summary_send": "Переказ",
"summary_keep": "Залишок",
"cancel": "Скасувати",
"send": "Надіслати",
"cap_label": "Ліміт",
"cap_tooltip": "Залишкова місткість отримувача",
"cap_tooltip": "Залишок місткості отримувача",
"target_dead": "Ціль знищено",
"target_dead_note": "Неможливо надіслати ресурси полеглому гравцю.",
"none": "Немає",
"copied": "Скопійовано!",
"click_to_copy": "Натисніть, щоб скопіювати"
"click_to_copy": "Натисніть, щоб скопіювати",
"enabled": "Увімкнено"
},
"main": {
"title": "OpenFront (АЛЬФА)",
"join_discord": "Discord",
"login_discord": "Увійти з Discord",
"sign_in": "Увійти",
"discord_avatar_alt": "Аватар профілю Discord",
"user_avatar_alt": "Аватар {username}",
"checking_login": "Перевірка входу...",
"logged_in": "Вхід здійснено!",
"log_out": "Вийти",
"create": "Створити лобі",
"join": "Приєднатися до лобі",
"solo": "Соло",
"instructions": "Інструкції",
"game_info": "Інформація про гру",
"wiki": "Вікі",
"privacy_policy": "Політика конфіденційності",
"terms_of_service": "Умови користування",
"copyright": "© OpenFront™ і співавтори",
"reddit": "Reddit",
"play": "Грати",
"news": "Новини",
"store": "Крамниця",
"store_new_badge": "НОВЕ",
"settings": "Налаштування",
"keys": "Клавіші",
"stats": "Статистика",
"leaderboard": "Таблиця лідерів",
"account": "Акаунт",
"help": "Допомога",
"menu": "Меню",
"pick_pattern": "Оберіть візерунок!"
"troubleshooting": "Усунення неполадок",
"go_to_troubleshooting": "До сторінки усунення неполадок"
},
"news": {
"github_link": "на GitHub",
"title": "Список змін"
},
"troubleshooting": {
"title": "Усунення неполадок",
"environment": "Середовище",
"rendering": "Візуалізація",
"power": "Живлення",
"browser": "Браузер",
"platform": "Платформа",
"copied_to_clipboard": "Інформацію скопійовано до буфера обміну! Не забудьте поділитися нею на нашому Discord, якщо вам потрібна допомога.",
"os": "ОС",
"device_pixel_ratio": "Коефіцієнт пікселів пристрою",
"chromium_tip": "OpenFront працює найкраще у Chromium-браузерах.",
"hardware_acceleration_tip": "Для оптимальної продуктивності увімкніть апаратне прискорення в налаштуваннях браузера.",
"renderer": "Візуалізатор",
"max_texture_size": "Максимальний розмір текстур",
"high_precision_shaders": "Високоточні шейдери",
"gpu": "Відеокарта",
"unavailable": "Недоступно",
"gpu_tip": "Переконайтеся, що це виділена відеокарта, якщо вона наявна.",
"battery": "Акумулятор",
"charging": "Заряджання",
"battery_level": "Рівень заряду",
"power_saving_tip": "Переконайтеся, що у вашому браузері не увімкнено режим заощадження енергії.",
"yes": "Так",
"no": "Ні",
"unknown": "Невідомо",
"software_rendering": "Програмна візуалізація",
"canvas_2d_no_gpu": "2D-полотно (без відеокарти)"
},
"help_modal": {
"video_tutorial": "Відеоінструкція",
"video_tutorial_title": "Довідник з OpenFront.io",
"hotkeys": "Гарячі клавіші",
"table_key": "Клавіша",
"table_action": "Дія",
@@ -77,9 +105,8 @@
"ui_leaderboard_desc": "Показує найкращих гравців гри та їхні імена, % підконтрольних територій, кількість золота та військ. За допомогою кнопки «Показати все» ви можете переглянути всіх гравців у грі. Якщо ви не бажаєте бачити таблицю лідерів, натисніть «Приховати».",
"ui_control": "Панель керування",
"ui_control_desc": "Панель керування містить наступні елементи:",
"ui_pop": "Населення — Кількість ваших підрозділів, ліміт населення та темп його приросту.",
"ui_gold": "Золото — Обсяг вашого золота та швидкість, з якою ви отримуєте його.",
"ui_attack_ratio": "Коефіцієнт атаки — Кількість військ, що беруть участь в атаці. Ви можете налаштувати коефіцієнт атаки за допомогою повзунка. Якщо наступальних військ більше ніж оборонних, то буде зменшено втрати під час атаки, а якщо менше — буде збільшено шкоду, що буде завдано вашим наступальним військам. Ефективність не збільшується після коефіцієнту 2:1.",
"ui_attack_ratio": "Коефіцієнт атаки — Чисельність військ, що беруть участь в атаці. Ви можете налаштувати коефіцієнт атаки за допомогою повзунка. Якщо наступальних військ більше ніж оборонних, то буде зменшено втрати під час атаки, а якщо менше — буде збільшено шкоду, завдану вашим наступальним військам. Ефективність не збільшується після коефіцієнту 2:1.",
"ui_events": "Панель подій",
"ui_events_desc": "На панелі подій показуються останні події, запити та повідомлення швидкого чату. Деякими прикладами є:",
"ui_events_alliance": "Союз — Запрошення до союзів можуть бути прийняті або відхилені. Союзники можуть ділитися ресурсами та військами, але не можуть атакувати один одного. Клацання на кнопку «Оглянути» переміщає камеру на гравця, який надіслав запит.",
@@ -97,22 +124,20 @@
"radial_title": "Кругове меню",
"radial_desc": "Правий клац (або дотик на мобільних пристроях) відкриває кругове меню. Клацніть правою кнопкою миші поза ним, щоб закрити його. У меню ви можете:",
"radial_build": "Відкрити меню будівництва.",
"radial_attack": "Відкрити меню атаки.",
"radial_info": "Відкрити меню інформації.",
"radial_boat": "Відправити човен (транспортний корабель) атакувати вибране розташування. Доступно лише якщо ви маєте доступ до води.",
"radial_boat": "Відправити човен (транспортний корабель) атакувати вибране розташування. Доступно лише якщо у вас є доступ до води.",
"radial_donate_troops": "Пожертвувати кількість військ, що дорівнює коефіцієнту повзунку атаки тому союзнику, на якому ви відкрили кругове меню.",
"radial_donate_gold": "Відкриває меню повзунка пожертвування золота для швидкого надсилання золота союзникам.",
"radial_close": "Закрити меню.",
"radial_donate_gold": "Відкрити меню повзунка пожертвування золота для швидкого надсилання золота союзникам.",
"info_title": "Меню інформації",
"info_enemy_desc": "Містить таку інформацію про вибраного гравця, як його імʼя, кількість золота, військ, стан торгувілі з вами, кількість запущених на вас ракет і мітку зрадника. Припинення торгівля означає, що ви не отримуватиме золото від гравця, а він не надсилатиме вам золото торговельними кораблями. Свідомо (якщо гравець натиснув «Припинити торгівлю», що триває, поки ви обидва не натиснете «Розпочати торгівлю») або автоматично (якщо ви зрадили союз, що триває, поки ви знову не станете союзниками або через 5 хвилин). Поле «Зрадник» показує стан «Так» протягом 30 секунд після того, як гравець зрадив й атакував гравця, який перебував у союзні з ним. Значки нижче позначають такі взаємодії:",
"info_chat": "Надсилає швидке повідомлення гравцю. Виберіть категорію, фразу та, якщо фраза містить слово «[P1]», оберіть імʼя гравця, котрим бажаєте заміни його. Тицьніть «Надіслати».",
"info_chat": "Надіслати швидке повідомлення гравцю. Виберіть категорію, фразу та, якщо фраза містить слово «[P1]», оберіть імʼя гравця, котрим бажаєте заміни його. Тицьніть «Надіслати».",
"info_target": "Розмістити мітку цілі на гравці, позначивши його для всіх союзників. Використовується для координації атак.",
"info_alliance": "Надіслати гравцю запит на союз. Союзники можуть ділитися ресурсами та військами, але не можуть атакувати один одного.",
"info_emoji": "Надіслати емоджі гравцю.",
"info_trade": "Використайте «Припинити торгівлю», щоб припинити давати гравцеві золото та отримувати золото від нього через торгові кораблі. Якщо ви обидва натиснете «Розпочати торгівлю», вона розпочнеться знову.",
"info_ally_panel": "Панель інформації про союзника",
"info_ally_desc": "Коли ви укладете союз із гравцем, буде розблоковано наступні значки:",
"ally_betray": "Зрадьте свого союзника, розірвавши союз, припинивши торгівлю та послабивши свою оборону. Торгівля між вами призупиняється на 5 хвилин (або до відновлення союзу), і інші також можуть припинити торгівлю з вами. Якщо інший гравець сам не був зрадником, ви отримаєте мітку зрадника на 30 секунд. У цей час над вашим імʼям зʼявиться особливий значок, а ваша оборона знизиться на 50%. Боти рідше укладатимуть із вами союзи, а гравці двічі подумають, перш ніж мати з вами справу.",
"ally_betray": "Зрадити свого союзника, розірвавши союз, припинивши торгівлю та послабивши свою оборону. Торгівля між вами призупиняється на 5 хвилин (або до відновлення союзу), і інші також можуть припинити торгівлю з вами. Якщо інший гравець сам не був зрадником, ви отримаєте мітку зрадника на 30 секунд. У цей час над вашим імʼям зʼявиться особливий значок, а ваша оборона знизиться на 50%. Боти рідше укладатимуть із вами союзи, а гравці двічі подумають, перш ніж мати з вами справу.",
"ally_donate": "Пожертвувати частину своїх військ союзнику. Використовується, коли в нього мало військ і його атакують, або коли йому необхідна додаткова сила для знищення ворога.",
"ally_donate_gold": "Пожертвувати частину свого золота союзнику. Використовуйте, коли в нього мало золота, яке він потребує для будівель, або коли член команди заощаджує на РГЧ ІН.",
"build_menu_title": "Меню будівництва",
@@ -127,7 +152,7 @@
"build_defense": "Пункт оборони",
"build_defense_desc": "Підсилює оборону навколо найближчих кордонів, що показано візерунком у клітинку. Атаки ворогів уповільнені та несуть більше жертв.",
"build_port": "Порт",
"build_port_desc": "Можуть бути збудовані лише біля води. Дозволяє будувати військові кораблі. Автоматично відправляє торгові кораблі між портами вашої та інших країн (крім випадків, коли торгівлю припинено), даючи золото обом сторонам. Торгівля автоматично припиняється, коли ви атакуєте гравця або він атакує вас. Її буде відновлено через 5 хвилин або при укладанні союзу. Можна керувати торгівлею вручну за допомогою кнопок «Припинити торгівлю» та «Розпочати торгівлю».",
"build_port_desc": "Може бути збудований лише біля води. Дозволяє будувати військові кораблі. Автоматично відправляє торгові кораблі між портами вашої та інших країн (крім випадків, коли торгівлю припинено), даючи золото обом сторонам. Торгівля автоматично припиняється, коли ви атакуєте гравця або він атакує вас. Її буде відновлено через 5 хвилин або при укладанні союзу. Можна керувати торгівлею вручну за допомогою кнопок «Припинити торгівлю» та «Розпочати торгівлю».",
"build_warship": "Військовий корабель",
"build_warship_desc": "Розвідує територію, захоплюючи ворожі торгові кораблі й знищуючи їхні човни (транспортні кораблі) та військові кораблі. Зʼявляється з найближчого порту та розвідує ділянку, вибрану клацанням при створенні. Військовими кораблями можна керувати кнопкою атаки (див. дія «Атака» в розділі «Гарячі клавіші»): спочатку клацніть на корабель, а потім — на ділянку, до якої бажаєте його перемістити.",
"build_silo": "Ракетна шахта",
@@ -141,6 +166,7 @@
"build_mirv": "РГЧ ІН",
"build_mirv_desc": "Найпотужніша бомба в грі. Розділяється на менші бомби, які покривають величезну територію. Завдає шкоду лише вибраному гравцю. Запускається з найближчої ракетної шахти та вражає область, вибрану клацанням кнопкою миші.",
"player_icons": "Значки гравця",
"troubleshooting_desc": "Якщо у вас виникають проблеми з продуктивністю, збої чи інші проблеми під час гри в OpenFront, будь ласка, відвідайте нашу сторінку усунення неполадок, щоб отримати поради з діагностування та виправлення поширених проблем:",
"icon_desc": "Приклади деяких значків, з якими ви зіткнетесь, і їхнє значення:",
"icon_crown": "Корона — Перше місце. Найкращий гравець у таблиці лідерів.",
"icon_traitor": "Зламаний щит — Зрадник. Цей гравець атакував союзника.",
@@ -149,18 +175,17 @@
"icon_request": "Конверт — Запрошення до союзу. Гравець надіслав вам запит на укладення союзу.",
"info_enemy_panel": "Панель інформації про ворога",
"exit_confirmation": "Ви впевнені, що хочете вийти з гри?",
"bomb_direction": "Траєкторія польоту атомної/водородної бомби"
"bomb_direction": "Траєкторія польоту атомної/водородної бомби",
"icon_alt_player_leaderboard": "Значок таблиці лідерів гравців",
"icon_alt_team_leaderboard": "Значок таблиці лідерів команди"
},
"single_modal": {
"title": "Соло",
"random_spawn": "Випадкова поява",
"allow_alliances": "Дозволити союзи",
"toggle_achievements": "Перемикання досягнень",
"sign_in_for_achievements": "Увійдіть, щоб отримувати досягнення",
"options_title": "Налаштування",
"bots": "Боти: ",
"bots_disabled": "Відключені",
"nations": "Нації: ",
"disable_nations": "Вимкнути нації",
"instant_build": "Миттєве будівництво",
"infinite_gold": "Необмежене золото",
@@ -169,9 +194,13 @@
"max_timer": "Тривалість гри (хвилини)",
"max_timer_placeholder": "Хвилини",
"max_timer_invalid": "Будь ласка, введіть дійсне максимальне значення таймера (1–120 хвилин)",
"disable_nukes": "Вимкнути бомби",
"enables_title": "Дозволи",
"start": "Розпочати гру"
"start": "Розпочати гру",
"options_changed_no_achievements": "Власні налаштування — досягнення вимкнені",
"gold_multiplier": "Множник золота",
"gold_multiplier_placeholder": "2.0х",
"starting_gold": "Початкове золото",
"starting_gold_placeholder": "5000000"
},
"token_login_modal": {
"title": "Вхід...",
@@ -194,17 +223,22 @@
"not_found": "Не знайдено",
"clear_session": "Очистити сесію",
"failed_to_send_recovery_email": "Не вдалося надіслати електронний лист для відновлення",
"enter_email_address": "Будь ласка, введіть адресу електронної пошти"
"enter_email_address": "Будь ласка, введіть адресу електронної пошти",
"personal_player_id": "Персональний ID гравця:"
},
"stats_modal": {
"title": "Статистика",
"clan_stats": "Статистика кланів",
"leaderboard_modal": {
"title": "Таблиця лідерів",
"ranked_tab": "Рейтингові ігри 1v1",
"clans_tab": "Клани",
"refresh_time": "Оновлюється щогодини",
"loading": "Завантаження...",
"error": "Помилка завантаження статистики кланів",
"no_stats": "Статистика кланів недоступна",
"no_data_yet": "Дані поки що відсутні",
"error": "Помилка завантаження таблиці лідерів",
"no_stats": "Статистика недоступна",
"no_data_yet": "Дані відсутні",
"clan": "Клан",
"player": "Гравець",
"games": "Ігри",
"elo": "ELO",
"win_score": "Рахунок перемог",
"win_score_tooltip": "Зважені перемоги на основі участі клану та складності матчу",
"loss_score": "Рахунок поразок",
@@ -212,7 +246,8 @@
"win_loss_ratio": "Перемоги/Поразки",
"ratio": "Коефіцієнт",
"rank": "Ранг",
"try_again": "Спробуйте ще раз"
"try_again": "Спробувати ще раз",
"your_ranking": "Ваш рейтинг"
},
"game_info_modal": {
"title": "Інформація про гру",
@@ -224,9 +259,12 @@
"total_gold": "Загалом",
"all_gold": "Усе золото",
"trade": "Торгівля",
"train_trade": "Поїзд",
"naval_trade": "Торговий корабель",
"conquest_gold": "Загарбане золото гравців",
"stolen_gold": "Викрадено воєнними кораблями",
"num_of_conquests": "Кількість підкорених гравців",
"num_of_conquests_humans": "Убивства гравців",
"num_of_conquests_bots": "Убивства ботів",
"duration": "Тривалість",
"survival_time": "Час виживання",
"war": "Війна",
@@ -239,6 +277,8 @@
},
"map": {
"map": "Мапа",
"featured": "Рекомендовані",
"all": "Усі",
"world": "Світ",
"giantworldmap": "Велетенська мапа світу",
"europe": "Європа",
@@ -281,14 +321,18 @@
"manicouagan": "Манікуаган",
"lemnos": "Лемнос",
"sierpinski": "Серпінський",
"thebox": "Коробка",
"twolakes": "Два озера",
"straitofhormuz": "Ормузька протока",
"surrounded": "Оточення",
"didier": "Дідьє",
"didierfrance": "Дідьє (Франція)",
"amazonriver": "Річка Амазонка"
"amazonriver": "Річка Амазонка",
"tradersdream": "Мрія крамаря",
"hawaii": "Гаваї"
},
"map_categories": {
"featured": "Рекомендовані",
"continental": "Континентальні",
"regional": "Регіональні",
"fantasy": "Інші",
@@ -302,29 +346,30 @@
"private_lobby": {
"title": "Приєднання до приватного лобі",
"enter_id": "Введіть ID лобі",
"player": "Гравець",
"players": "Гравці(в)",
"join_lobby": "Приєднатися до лобі",
"checking": "Перевірка лобі...",
"not_found": "Лобі не знайдено. Будь ласка, перевірте дійсність ID і спробуйте знову.",
"not_found": "Лобі не знайдено. Будь ласка, перевірте дійсність ID і спробуйте ще раз.",
"error": "Сталася помилка. Спробуйте ще раз або зверніться до служби підтримки.",
"joined_waiting": "Лобі приєднано! Очікуємо, доки хост почне гру...",
"version_mismatch": "Цю гру створено в іншій версії. Неможливо приєднатися.",
"disabled_units": "Вимкнені споруди"
"disabled_units": "Вимкнені юніти"
},
"public_lobby": {
"title": "Очікування початку гри...",
"join": "Приєднатися до наступної гри",
"waiting": "гравці(в) очікують",
"teams_Duos": "{team_count} команд по 2 (дуо)",
"teams_Trios": "{team_count} команд по 3 (тріо)",
"teams_Quads": "{team_count} команд по 4 (квади)",
"waiting_for_players": "Очікування гравців",
"connecting": "Підключення до лобі...",
"starting_in": "Початок через {time}",
"starting_game": "Початок гри…",
"teams_hvn": "Люди проти націй",
"teams_hvn_detailed": "{num} людей проти {num} націй",
"teams": "Команди: {num}",
"players_per_team": "по {num}",
"started": "Почато"
"started": "Почато",
"status": "Статус",
"join_timeout": "Ви не доєдналися до гри вчасно."
},
"matchmaking_modal": {
"title": "Рейтинговий підбір 1v1 (АЛЬФА)",
@@ -353,7 +398,6 @@
"bots": "Боти: ",
"bots_disabled": "Відключені",
"player_immunity_duration": "Тривалість імунітету в PVP (хвилини)",
"nations": "Нації: ",
"disable_nations": "Вимкнути нації",
"max_timer": "Тривалість гри (хвилини)",
"mins_placeholder": "Хвилини",
@@ -379,7 +423,9 @@
"teams_Duos": "Дуо (команди по 2)",
"teams_Trios": "Тріо (команди по 3)",
"teams_Quads": "Квади (команди по 4)",
"teams_Humans Vs Nations": "Люди проти націй"
"teams_Humans Vs Nations": "Люди проти націй",
"starting_gold": "Початкове золото",
"crowded": "Модифікатор перенаселення"
},
"team_colors": {
"red": "Червоний",
@@ -409,7 +455,9 @@
},
"public_game_modifier": {
"random_spawn": "Випадкова поява",
"compact_map": "Компактна мапа"
"compact_map": "Компактна мапа",
"crowded": "Перенаселення",
"starting_gold": "5 млн початкового золота"
},
"select_lang": {
"title": "Вибір мови"
@@ -459,7 +507,7 @@
"easter_writing_speed_label": "Множник швидкості друку",
"easter_writing_speed_desc": "Налаштуйте швидкість, з якою ви удаєте, що програмуєте (x1–x100)",
"easter_bug_count_label": "Кількість багів",
"easter_bug_count_desc": "Кількість багів, що ви вважаєте прийнятною (0–1000, емоційно)",
"easter_bug_count_desc": "Кількість багів, яку ви вважаєте прийнятною (0–1000, за настроєм)",
"press_a_key": "Натисніть клавішу",
"view_options": "Налаштування вигляду",
"toggle_view": "Перемкнути вигляд",
@@ -644,19 +692,15 @@
"exit": "Вийти з гри",
"keep": "Продовжити гру",
"spectate": "Спостерігати",
"requeue": "Грати ще раз",
"wishlist": "Додавайте до списку бажаного в Steam!",
"ofm_winter": "Зимовий турнір OpenFront Masters!",
"ofm_winter_description": "Приєднуйтеся до турніру та змагайтеся з найкращими гравцями",
"join_tournament": "Приєднатися до турніру",
"join_discord": "Приєднуйтеся до нашої спільноти Discord!",
"discord_description": "Звʼязуйтеся з гравцями, відкривайте нові можливості та вигравайте призи!",
"join_server": "Приєднатися до сервера",
"youtube_tutorial": "Потрібна допомога?"
},
"leaderboard": {
"title": "Таблиця лідерів",
"hide": "Приховати",
"rank": "Ранг",
"player": "Гравець",
"team": "Команда",
"owned": "Влада",
@@ -667,38 +711,16 @@
"warships": "Військові кораблі",
"cities": "Міста",
"show_control": "Показати підконтрольні території",
"show_units": "Показати споруди"
},
"player_info_overlay": {
"type": "Тип",
"bot": "Бот",
"nation": "Нація",
"player": "Гравець",
"team": "Команда",
"alliance_timeout": "Кінець союзу через",
"troops": "Війська",
"maxtroops": "Ліміт військ",
"a_troops": "Наступальні війська",
"gold": "Золото",
"ports": "Порти",
"cities": "Міста",
"factories": "Фабрики",
"missile_launchers": "Ракетні установки",
"sams": "ЗРК",
"warships": "Військові кораблі",
"health": "Здоровʼя",
"attitude": "Ставлення",
"levels": "Рівні",
"wilderness_title": "Пустир",
"irradiated_wilderness_title": "Радіоактивний пустир"
"show_units": "Показати юніти"
},
"events_display": {
"events": "Події",
"retreating": "відступає",
"retaliate": "Напасти у відповідь",
"boat": "Човен",
"alliance_request_status": "{name} {status} запрошення до союзу",
"alliance_accepted": "приймає",
"alliance_rejected": "відхиляє",
"alliance_nukes_destroyed_outgoing": "{count, plural, one {# ракету, запущену на {name}, було знищено завдяки союзу} few {# ракети, запущені на {name}, було знищено завдяки союзу} many {# ракет, запущених на {name}, було знищено завдяки союзу} other {# ракет, запущених на {name}, було знищено завдяки союзу}}",
"alliance_nukes_destroyed_incoming": "{count, plural, one {# ракету, запущену від {name}, було знищено завдяки союзу} few {# ракети, запущені від {name}, було знищено завдяки союзу} many {# ракет, запущених від {name}, було знищено завдяки союзу} other {# ракет, запущених від {name}, було знищено завдяки союзу}}",
"duration_second": "1 сек",
"betrayal_description": "Ви розірвали союз із {name}, ставши ЗРАДНИКОМ (оборону знижено на {malusPercent}% протягом {durationText})",
"duration_seconds_plural": "{seconds} сек",
@@ -715,31 +737,24 @@
"alliance_renewed": "Союз із {name} було поновлено",
"wants_to_renew_alliance": "{name} хоче поновити ваш союз",
"ignore": "Ігнорувати",
"unit_voluntarily_deleted": "Споруду добровільно видалено",
"unit_voluntarily_deleted": "Юніт добровільно видалено",
"betrayal_debuff_ends": "Залишилося {time} сек до закінчення покарання зрадника",
"attack_cancelled_retreat": "Атаку скасовано, {troops} солдатів загинули під час відступу",
"received_gold_from_captured_ship": "Отримано {gold} золота з корабля, захопленого у {name}",
"received_gold_from_trade": "Отримано {gold} золота від торгівлі з {name}",
"received_gold_from_conquest": "Завойовано {name}, отримано {gold} од. золота",
"conquered_no_gold": "Завойовано {name} (не грав, золота не отримано)",
"missile_intercepted": "{unit} перехоплює ракету",
"mirv_warheads_intercepted": "{count, plural, one {Перехоплено {count} боєголовку РГЧ ІН} few {Перехоплено {count} боєголовки РГЧ ІН} many {Перехоплено {count} боєголовок РГЧ ІН} other {Перехоплено {count} боєголовок РГЧ ІН}}",
"sent_troops_to_player": "Відправлено {troops} військ до {name}",
"received_troops_from_player": "Отримано {troops} військ від {name}",
"sent_gold_to_player": "Надіслано {gold} золота для {name}",
"received_gold_from_player": "Отримано {gold} золота від {name}",
"unit_captured_by_enemy": "{name} захоплює вашу споруду «{unit}»",
"captured_enemy_unit": "Захоплено споруду «{unit}» у {name}",
"unit_destroyed": "Вашу споруду «{unit}» було знищено",
"unit_captured_by_enemy": "{name} захоплює ваш юніт «{unit}»",
"captured_enemy_unit": "Захоплено юніт «{unit}» у {name}",
"unit_destroyed": "Ваш юніт «{unit}» було знищено",
"no_boats_available": "Немає доступних човнів, максимум — {max}"
},
"unit_info_modal": {
"structure_info": "Інформація про споруду",
"unit_type_unknown": "Невідомо",
"close": "Закрити",
"cooldown": "Час відновлення",
"type": "Тип",
"upgrade": "Покращити",
"level": "Рівень"
},
"player_type": {
"player": "Гравець",
"nation": "Нація",
@@ -752,11 +767,6 @@
"friendly": "Товариське",
"default": "Типове"
},
"control_panel": {
"gold": "Золото",
"troops": "Війська",
"attack_ratio": "Коефіцієнт атаки"
},
"player_panel": {
"gold": "Золото",
"troops": "Війська",
@@ -766,39 +776,42 @@
"active": "Активна",
"stopped": "Припинена",
"alliance_time_remaining": "Кінець союзу через",
"embargo": "Припинено торгівлю з вами",
"nuke": "Ракети, запущені на вас",
"start_trade": "Розпочати торгівлю",
"stop_trade": "Припинити торгівлю",
"stop_trade_all": "Припинити торгівлю з усіма",
"start_trade_all": "Розпочати торгівлю з усіма",
"alliances": "Союзи",
"flag": "Прапор",
"chat": "Чат",
"target": "Ціль",
"break_alliance": "Розірвати союз",
"alliance": "Союз",
"send_alliance": "Надіслати союз",
"send_troops": "Надіслати війська",
"send_gold": "Надіслати золото",
"emotes": "Емоджі",
"moderation": "Модерація",
"kick": "Вигнати гравця",
"kicked": "Уже вигнано",
"kick_confirm": "Вигнати {name}?\n\nВін не зможе повернутися до цієї гри.",
"arc_up": "Верхня дуга",
"arc_down": "Нижня дуга",
"flip_rocket_trajectory": "Обернути траєкторію ракети"
},
"kick_reason": {
"duplicate_session": "Вигнано з гри (можливо, ви грали на іншій вкладці)",
"lobby_creator": "Вигнано власником лобі"
},
"send_troops_modal": {
"title_with_name": "Надіслати війська до {name}",
"available_tooltip": "Ваші поточні доступні війська",
"min_keep": "Мінімальний залишок",
"slider_tooltip": "{{percent}}% • {{amount}}",
"available_tooltip": "Ваші доступні війська",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "Повзунок військ",
"capacity_note": "Зараз отримувач може прийняти лише {{amount}}."
"capacity_note": "Зараз отримувач може прийняти лише {amount}."
},
"send_gold_modal": {
"title_with_name": "Надіслати золото до {name}",
"available_tooltip": "Ваше поточне доступне золото",
"available_tooltip": "Ваше доступне золото",
"aria_slider": "Повзунок кількості",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "Швидкість відтворення",
@@ -835,7 +848,9 @@
"choose_spawn": "Оберіть стартове розташування",
"random_spawn": "Випадкову появу увімкнено. Обираємо стартове розташування за вас...",
"singleplayer_game_paused": "Гру призупинено",
"multiplayer_game_paused": "Гра призупинена творцем лобі"
"multiplayer_game_paused": "Гра призупинена творцем лобі",
"pvp_immunity_active": "Імунітет у PVP активний на {seconds} сек",
"catching_up": "Синхронізація..."
},
"territory_patterns": {
"title": "Скіни",
@@ -844,13 +859,16 @@
"show_only_owned": "Мої скіни",
"all_owned": "Усі скіни придбані! Повертайтеся пізніше за новими товарами.",
"not_logged_in": "Вхід не здійснено",
"blocked": {
"login": "Ви повинні ввійти, щоб отримати доступ до цього скіна.",
"purchase": "Придбайте цей скін, щоб розблокувати його."
},
"pattern": {
"default": "Типово"
},
"try_me": "Примір мене!",
"trial_remaining": "залишилися",
"trial_granted": "Пробний скін надано!",
"trial_cooldown": "Можна приміряти лише один скін протягом 24 годин. Будь ласка, спробуйте ще раз пізніше.",
"trial_login_required": "Ви повинні увійти, щоб отримати пробний скін",
"reward_countdown": "Нагородження через {seconds} сек...",
"steam_wishlist_prompt": "Підтримайте OpenFront, додавши його до списку бажаного Steam",
"select_skin": "Оберіть скін",
"selected": "обрано"
},
@@ -859,18 +877,9 @@
"button_title": "Обери прапор!",
"search_flag": "Пошук..."
},
"spawn_ad": {
"loading": "Завантаження реклами..."
},
"auth": {
"login_required": "Для доступу до цього сайту потрібно ввійти в систему.",
"redirecting": "Вас буде переспрямовано...",
"not_authorized": "Ви не маєте права на доступ до цього вебсайту.",
"contact_admin": "Якщо ви вважаєте, що бачите це повідомлення помилково, зверніться до адміністратора сайту."
},
"radial_menu": {
"delete_unit_title": "Видалити споруду",
"delete_unit_description": "Клацніть, щоб видалити найближчу споруду"
"delete_unit_title": "Видалити юніт",
"delete_unit_description": "Клацніть, щоб видалити найближчий юніт"
},
"discord_user_header": {
"avatar_alt": "Аватар"
@@ -880,7 +889,7 @@
"ship_arrivals": "Прибуття кораблів",
"nuke_stats": "Статистика бомбардувань",
"player_metrics": "Статистика гравця",
"building": "Споруда",
"building": "Будівля",
"ship_type": "Тип корабля",
"weapon": "Зброя",
"built": "Побудовано",
@@ -926,7 +935,6 @@
"replay": "Повтор",
"details": "Подробиці",
"ranking": "Рейтинг",
"started": "Почато",
"map": "Мапа",
"difficulty": "Складність",
"type": "Тип"
@@ -934,7 +942,7 @@
"player_stats_tree": {
"public": "Публічний",
"private": "Приватний",
"singleplayer": "Соло",
"solo": "Соло",
"mode": "Режим",
"stats_wins": "Перемоги",
"stats_losses": "Поразки",
+3 -3
View File
@@ -790,15 +790,15 @@
"title_with_name": "向 {name} 发送军队",
"available_tooltip": "你的剩余军队",
"min_keep": "最小保留值",
"slider_tooltip": "{{percent}}% • {{amount}}",
"slider_tooltip": "{percent}% • {amount}",
"aria_slider": "军队滑块",
"capacity_note": "接收者现在仅能接收 {{amount}}。"
"capacity_note": "接收者现在仅能接收 {amount}。"
},
"send_gold_modal": {
"title_with_name": "向 {name} 发送黄金",
"available_tooltip": "你的剩余黄金",
"aria_slider": "数量滑块",
"slider_tooltip": "{{percent}}% • {{amount}}"
"slider_tooltip": "{percent}% • {amount}"
},
"replay_panel": {
"replay_speed": "回放速度",
+60
View File
@@ -0,0 +1,60 @@
{
"map": {
"height": 1836,
"num_land_tiles": 3672000,
"width": 2000
},
"map16x": {
"height": 459,
"num_land_tiles": 229500,
"width": 500
},
"map4x": {
"height": 918,
"num_land_tiles": 918000,
"width": 1000
},
"name": "Alps",
"nations": [
{
"coordinates": [740, 620],
"flag": "fr",
"name": "Savoy"
},
{
"coordinates": [980, 580],
"flag": "ch",
"name": "Switzerland"
},
{
"coordinates": [1220, 560],
"flag": "at",
"name": "Tyrol"
},
{
"coordinates": [980, 820],
"flag": "it",
"name": "Lombardy"
},
{
"coordinates": [1180, 820],
"flag": "venice",
"name": "Veneto"
},
{
"coordinates": [1320, 690],
"flag": "de",
"name": "Bavaria"
},
{
"coordinates": [1450, 820],
"flag": "si",
"name": "Slovenia"
},
{
"coordinates": [1100, 650],
"flag": "li",
"name": "Liechtenstein"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

+284
View File
@@ -0,0 +1,284 @@
{
"map": {
"height": 1828,
"num_land_tiles": 1678775,
"width": 1828
},
"map16x": {
"height": 457,
"num_land_tiles": 97927,
"width": 457
},
"map4x": {
"height": 914,
"num_land_tiles": 409832,
"width": 914
},
"name": "arctic_circle",
"nations": [
{
"coordinates": [622, 1171],
"flag": "gl",
"name": "Greenland",
"strength": 2
},
{
"coordinates": [632, 1438],
"flag": "is",
"name": "Iceland",
"strength": 1
},
{
"coordinates": [90, 1046],
"flag": "Quebec",
"name": "Quebec",
"strength": 1
},
{
"coordinates": [747, 336],
"flag": "Alaska",
"name": "Alaska",
"strength": 2
},
{
"coordinates": [485, 927],
"flag": "ca",
"name": "Nunavut",
"strength": 1
},
{
"coordinates": [432, 550],
"flag": "ca",
"name": "Northwest Territories",
"strength": 1
},
{
"coordinates": [608, 447],
"flag": "ca",
"name": "Yukon",
"strength": 1
},
{
"coordinates": [344, 320],
"flag": "ca",
"name": "British Columbia",
"strength": 1
},
{
"coordinates": [64, 601],
"flag": "ca",
"name": "Manitoba",
"strength": 1
},
{
"coordinates": [247, 571],
"flag": "ca",
"name": "Saskatchewan",
"strength": 1
},
{
"coordinates": [136, 401],
"flag": "ca",
"name": "Alberta",
"strength": 1
},
{
"coordinates": [67, 795],
"flag": "ca",
"name": "Ontario",
"strength": 2
},
{
"coordinates": [49, 1313],
"flag": "ca",
"name": "Newfoundland and Labrador",
"strength": 1
},
{
"coordinates": [74, 226],
"flag": "us",
"name": "United States of America",
"strength": 3
},
{
"coordinates": [1457, 1381],
"flag": "Communist flag",
"name": "Soviet Union",
"strength": 3
},
{
"coordinates": [1683, 1414],
"flag": "Communist flag",
"name": "Kazakh SSR",
"strength": 2
},
{
"coordinates": [1709, 1603],
"flag": "Communist flag",
"name": "Uzbek SSR",
"strength": 1
},
{
"coordinates": [1784, 1744],
"flag": "Communist flag",
"name": "Turkmen SSR",
"strength": 2
},
{
"coordinates": [1803, 1265],
"flag": "Communist flag",
"name": "Kirghiz SSR",
"strength": 1
},
{
"coordinates": [745, 1736],
"flag": "gb",
"name": "United Kingdom",
"strength": 3
},
{
"coordinates": [893, 1773],
"flag": "west_germany",
"name": "West Germany",
"strength": 1
},
{
"coordinates": [987, 1792],
"flag": "east_germany",
"name": "East Germany",
"strength": 2
},
{
"coordinates": [1333, 1774],
"flag": "Communist flag",
"name": "Ukrainian SSR",
"strength": 2
},
{
"coordinates": [1194, 1814],
"flag": "Communist flag",
"name": "Moldovan SSR",
"strength": 1
},
{
"coordinates": [1197, 1626],
"flag": "Communist flag",
"name": "Belorussian SSR",
"strength": 1
},
{
"coordinates": [1091, 1744],
"flag": "pl",
"name": "Poland",
"strength": 2
},
{
"coordinates": [1805, 1486],
"flag": "Communist flag",
"name": "Tajik SSR",
"strength": 1
},
{
"coordinates": [1442, 1807],
"flag": "Communist flag",
"name": "Georgian SSR",
"strength": 1
},
{
"coordinates": [1573, 1790],
"flag": "Communist flag",
"name": "Azerbaijan SSR",
"strength": 1
},
{
"coordinates": [1089, 1519],
"flag": "fi",
"name": "Finland",
"strength": 2
},
{
"coordinates": [987, 1538],
"flag": "se",
"name": "Sweden",
"strength": 1
},
{
"coordinates": [889, 1587],
"flag": "no",
"name": "Norway",
"strength": 1
},
{
"coordinates": [1793, 156],
"flag": "jp",
"name": "Japan",
"strength": 2
},
{
"coordinates": [1776, 517],
"flag": "cn",
"name": "China",
"strength": 3
},
{
"coordinates": [1792, 774],
"flag": "mn",
"name": "Mongolia",
"strength": 1
},
{
"coordinates": [1773, 961],
"flag": "Communist flag",
"name": "Tannu Tuva",
"strength": 2
},
{
"coordinates": [1142, 382],
"flag": "Communist flag",
"name": "Far East",
"strength": 1
},
{
"coordinates": [1410, 625],
"flag": "Communist flag",
"name": "Yakut ASSR",
"strength": 1
},
{
"coordinates": [1817, 364],
"flag": "kp",
"name": "North Korea",
"strength": 2
},
{
"coordinates": [1664, 689],
"flag": "Communist flag",
"name": "Buryat ASSR",
"strength": 1
},
{
"coordinates": [1440, 1170],
"flag": "Communist flag",
"name": "Komi ASSR",
"strength": 1
},
{
"coordinates": [1383, 875],
"flag": "Siberia",
"name": "Siberia",
"strength": 2
},
{
"coordinates": [950, 1174],
"flag": "sj",
"name": "Svalbard",
"strength": 1
},
{
"coordinates": [789, 1823],
"flag": "fr",
"name": "France",
"strength": 1
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+17 -1
View File
@@ -15,5 +15,21 @@
"width": 1250
},
"name": "Baikal (Nuke Wars)",
"nations": []
"nations": [],
"teamGameSpawnAreas": {
"2": [
{
"height": 1564,
"width": 1330,
"x": 0,
"y": 0
},
{
"height": 1564,
"width": 1070,
"x": 1430,
"y": 0
}
]
}
}
+30
View File
@@ -0,0 +1,30 @@
{
"map": {
"height": 916,
"num_land_tiles": 596318,
"width": 1500
},
"map16x": {
"height": 229,
"num_land_tiles": 35567,
"width": 375
},
"map4x": {
"height": 458,
"num_land_tiles": 146741,
"width": 750
},
"name": "BeringStrait",
"nations": [
{
"coordinates": [1297, 287],
"flag": "us",
"name": "Alaska"
},
{
"coordinates": [186, 427],
"flag": "ru",
"name": "Russia"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

@@ -0,0 +1,80 @@
{
"map": {
"height": 612,
"num_land_tiles": 387974,
"width": 1000
},
"map16x": {
"height": 153,
"num_land_tiles": 22991,
"width": 250
},
"map4x": {
"height": 306,
"num_land_tiles": 95321,
"width": 500
},
"name": "Bosphorus Straits",
"nations": [
{
"coordinates": [520, 300],
"flag": "tr",
"name": "Istanbul"
},
{
"coordinates": [360, 280],
"flag": "tr",
"name": "Thrace"
},
{
"coordinates": [220, 260],
"flag": "tr",
"name": "Edirne"
},
{
"coordinates": [650, 360],
"flag": "tr",
"name": "Bursa"
},
{
"coordinates": [690, 290],
"flag": "tr",
"name": "Izmit"
},
{
"coordinates": [430, 430],
"flag": "tr",
"name": "Canakkale"
},
{
"coordinates": [320, 330],
"flag": "tr",
"name": "Tekirdag"
},
{
"coordinates": [610, 320],
"flag": "tr",
"name": "Yalova"
},
{
"coordinates": [720, 260],
"flag": "tr",
"name": "Kocaeli"
},
{
"coordinates": [160, 120],
"flag": "bg",
"name": "Varna"
},
{
"coordinates": [220, 150],
"flag": "bg",
"name": "Burgas"
},
{
"coordinates": [820, 470],
"flag": "gr",
"name": "Aegean Isles"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

+43 -1
View File
@@ -36,5 +36,47 @@
"flag": "",
"name": "Myrkwind"
}
]
],
"teamGameSpawnAreas": {
"2": [
{
"height": 1500,
"width": 750,
"x": 0,
"y": 0
},
{
"height": 1500,
"width": 750,
"x": 750,
"y": 0
}
],
"4": [
{
"height": 750,
"width": 750,
"x": 0,
"y": 0
},
{
"height": 750,
"width": 750,
"x": 750,
"y": 0
},
{
"height": 750,
"width": 750,
"x": 0,
"y": 750
},
{
"height": 750,
"width": 750,
"x": 750,
"y": 750
}
]
}
}
+65
View File
@@ -0,0 +1,65 @@
{
"map": {
"height": 2076,
"num_land_tiles": 408264,
"width": 3200
},
"map16x": {
"height": 519,
"num_land_tiles": 24703,
"width": 800
},
"map4x": {
"height": 1038,
"num_land_tiles": 100951,
"width": 1600
},
"name": "Hawaii",
"nations": [
{
"coordinates": [283, 281],
"flag": "us",
"name": "Niihau"
},
{
"coordinates": [613, 189],
"flag": "us",
"name": "Kauai"
},
{
"coordinates": [1424, 525],
"flag": "us",
"name": "Oahu"
},
{
"coordinates": [1930, 708],
"flag": "us",
"name": "Molokai"
},
{
"coordinates": [1977, 874],
"flag": "us",
"name": "Lanai"
},
{
"coordinates": [2145, 1036],
"flag": "us",
"name": "Kahoolawe"
},
{
"coordinates": [2287, 900],
"flag": "us",
"name": "Maui"
},
{
"coordinates": [2550, 1550],
"flag": "us",
"name": "Kona"
},
{
"coordinates": [2900, 1500],
"flag": "us",
"name": "Hilo"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

+75
View File
@@ -0,0 +1,75 @@
{
"map": {
"height": 1280,
"num_land_tiles": 1363238,
"width": 1556
},
"map16x": {
"height": 320,
"num_land_tiles": 82743,
"width": 389
},
"map4x": {
"height": 640,
"num_land_tiles": 337280,
"width": 778
},
"name": "Nile Delta",
"nations": [
{
"coordinates": [305, 414],
"flag": "eg",
"name": "Alexandria"
},
{
"coordinates": [1146, 303],
"flag": "eg",
"name": "Damietta"
},
{
"coordinates": [1100, 348],
"flag": "eg",
"name": "Faraskur"
},
{
"coordinates": [1050, 423],
"flag": "eg",
"name": "Sheremsah"
},
{
"coordinates": [954, 492],
"flag": "eg",
"name": "El Senbellawein"
},
{
"coordinates": [920, 963],
"flag": "eg",
"name": "Aga"
},
{
"coordinates": [915, 547],
"flag": "eg",
"name": "Mit Ghamr"
},
{
"coordinates": [888, 1012],
"flag": "eg",
"name": "Cairo"
},
{
"coordinates": [895, 1108],
"flag": "eg",
"name": "Heliopolis"
},
{
"coordinates": [895, 663],
"flag": "eg",
"name": "Memphis"
},
{
"coordinates": [993, 579],
"flag": "eg",
"name": "El Mansoura"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

+84
View File
@@ -0,0 +1,84 @@
{
"map": {
"height": 400,
"num_land_tiles": 803994,
"width": 6000
},
"map16x": {
"height": 100,
"num_land_tiles": 46347,
"width": 1500
},
"map4x": {
"height": 200,
"num_land_tiles": 195775,
"width": 3000
},
"name": "Passage",
"nations": [
{
"coordinates": [256, 80],
"name": "Weston"
},
{
"coordinates": [1028, 286],
"name": "Ellach"
},
{
"coordinates": [1437, 149],
"name": "Prina"
},
{
"coordinates": [1652, 141],
"name": "Aros"
},
{
"coordinates": [1867, 270],
"name": "Elos"
},
{
"coordinates": [2138, 127],
"name": "Eban"
},
{
"coordinates": [2383, 182],
"name": "Kene"
},
{
"coordinates": [640, 136],
"name": "Sore"
},
{
"coordinates": [2789, 152],
"name": "Deno"
},
{
"coordinates": [3267, 275],
"name": "Calphe"
},
{
"coordinates": [3653, 147],
"name": "Modwyn"
},
{
"coordinates": [3888, 270],
"name": "Echur"
},
{
"coordinates": [4579, 142],
"name": "Eris"
},
{
"coordinates": [5408, 228],
"name": "Tuage"
},
{
"coordinates": [5475, 115],
"name": "Vola"
},
{
"coordinates": [5906, 364],
"name": "Eastos"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+85
View File
@@ -0,0 +1,85 @@
{
"map": {
"height": 1920,
"num_land_tiles": 972041,
"width": 2200
},
"map16x": {
"height": 480,
"num_land_tiles": 58992,
"width": 550
},
"map4x": {
"height": 960,
"num_land_tiles": 240669,
"width": 1100
},
"name": "Traders Dream",
"nations": [
{
"coordinates": [1010, 120],
"flag": "",
"name": "Fort Profit"
},
{
"coordinates": [900, 400],
"flag": "",
"name": "Taxhaven"
},
{
"coordinates": [1350, 370],
"flag": "",
"name": "Markup Mesa"
},
{
"coordinates": [1100, 1290],
"flag": "",
"name": "Ledgerland"
},
{
"coordinates": [850, 1550],
"flag": "",
"name": "Isle of Margins"
},
{
"coordinates": [1350, 1550],
"flag": "",
"name": "Port Folio"
},
{
"coordinates": [430, 810],
"flag": "",
"name": "Barter Bluffs"
},
{
"coordinates": [1770, 810],
"flag": "",
"name": "Dividend Shores"
},
{
"coordinates": [1210, 660],
"flag": "",
"name": "Market Peaks"
},
{
"coordinates": [1150, 1830],
"flag": "",
"name": "Cape Commerce"
},
{
"coordinates": [1890, 1390],
"flag": "",
"name": "Anchorspire"
},
{
"coordinates": [310, 1420],
"flag": "",
"name": "Inflation Island"
},
{
"coordinates": [1870, 400],
"flag": "",
"name": "Harborwick"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

+115 -2
View File
@@ -7,10 +7,32 @@ echo "====================================================="
echo "🚀 STARTING SERVER SETUP"
echo "====================================================="
# Load environment variables from .env.setup if present
ENV_FILE="$(dirname "$0")/.env.setup"
if [ -f "$ENV_FILE" ]; then
echo "📂 Loading environment from $ENV_FILE"
set -a
# shellcheck source=/dev/null
source "$ENV_FILE"
set +a
else
echo "️ No .env.setup file found"
exit 1
fi
# Verify required environment variables
if [ -z "$OTEL_EXPORTER_OTLP_ENDPOINT" ] || [ -z "$OTEL_AUTH_HEADER" ]; then
echo "❌ ERROR: Required environment variables are not set!"
echo "Please set OTEL_EXPORTER_OTLP_ENDPOINT and OTEL_AUTH_HEADER"
echo "Please set OTEL_EXPORTER_OTLP_ENDPOINT and OTEL_AUTH_HEADER in .env.setup"
exit 1
fi
# CF_ORIGIN_CERT and CF_ORIGIN_KEY: Cloudflare Origin Certificate and private key.
# Generate at: Cloudflare dashboard → SSL/TLS → Origin Server → Create Certificate
if [ -z "$CF_ORIGIN_CERT" ] || [ -z "$CF_ORIGIN_KEY" ]; then
echo "❌ ERROR: CF_ORIGIN_CERT and CF_ORIGIN_KEY are not set!"
echo "Generate an origin certificate at: Cloudflare → SSL/TLS → Origin Server → Create Certificate"
echo "Then add CF_ORIGIN_CERT and CF_ORIGIN_KEY to .env.setup"
exit 1
fi
@@ -82,6 +104,96 @@ fi
chown -R openfront:openfront /home/openfront
echo "Set proper ownership for openfront's home directory"
# Set up Traefik reverse proxy
echo "🔀 Setting up Traefik..."
# Create the shared Docker network used by Traefik and app containers
if docker network ls --format '{{.Name}}' | grep -q '^web$'; then
echo "Docker network 'web' already exists"
else
docker network create web
echo "Created Docker network 'web'"
fi
TRAEFIK_CONFIG_DIR="/home/openfront/traefik"
TRAEFIK_CERTS_DIR="$TRAEFIK_CONFIG_DIR/certs"
mkdir -p "$TRAEFIK_CERTS_DIR"
# Write Cloudflare origin certificate and key (passed as env vars)
echo "$CF_ORIGIN_CERT" > "$TRAEFIK_CERTS_DIR/origin.crt"
echo "$CF_ORIGIN_KEY" > "$TRAEFIK_CERTS_DIR/origin.key"
chmod 600 "$TRAEFIK_CERTS_DIR/origin.crt" "$TRAEFIK_CERTS_DIR/origin.key"
# No [api] block — dashboard is disabled for production.
# To access it for debugging, SSH tunnel: ssh -L 8080:localhost:8080 user@server
cat > "$TRAEFIK_CONFIG_DIR/traefik.toml" << 'EOF'
[log]
level = "INFO"
[entryPoints]
[entryPoints.websecure]
address = ":443"
[providers]
[providers.docker]
endpoint = "unix:///var/run/docker.sock"
exposedByDefault = false # Only route containers with traefik.enable=true
network = "web"
watch = true
[providers.file]
filename = "/etc/traefik/tls.toml"
watch = true
EOF
# Static TLS configuration referencing the Cloudflare origin cert
cat > "$TRAEFIK_CONFIG_DIR/tls.toml" << 'EOF'
[[tls.certificates]]
certFile = "/certs/origin.crt"
keyFile = "/certs/origin.key"
[tls.options]
[tls.options.default]
minVersion = "VersionTLS12"
EOF
cat > "$TRAEFIK_CONFIG_DIR/compose.yaml" << 'EOF'
networks:
web:
# External so blue/green containers can join independently.
external: true
services:
traefik:
image: traefik:v3.6
container_name: traefik
restart: unless-stopped
ports:
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /home/openfront/traefik/traefik.toml:/etc/traefik/traefik.toml:ro
- /home/openfront/traefik/tls.toml:/etc/traefik/tls.toml:ro
- /home/openfront/traefik/certs:/certs:ro
networks:
- web
EOF
# Give openfront ownership of config files but keep certs owned by root.
# Traefik runs as root inside its container so it can read them, but the
# openfront app user cannot access the TLS private key.
chown -R openfront:openfront "$TRAEFIK_CONFIG_DIR"
chown root:root "$TRAEFIK_CERTS_DIR" "$TRAEFIK_CERTS_DIR/origin.crt" "$TRAEFIK_CERTS_DIR/origin.key"
docker compose -f "$TRAEFIK_CONFIG_DIR/compose.yaml" pull
docker compose -f "$TRAEFIK_CONFIG_DIR/compose.yaml" up -d
if docker ps | grep -q traefik; then
echo "✅ Traefik started successfully!"
else
echo "❌ Failed to start Traefik. Check logs with: docker logs traefik"
exit 1
fi
# Create directory for OpenTelemetry configuration
echo "📊 Setting up Node Exporter and OpenTelemetry Collector..."
OTEL_CONFIG_DIR="/home/openfront/otel"
@@ -117,7 +229,7 @@ exporters:
otlphttp:
endpoint: "${OTEL_EXPORTER_OTLP_ENDPOINT}"
headers:
Authorization: "${OTEL_AUTH_HEADER}"
Authorization: "Basic ${OTEL_AUTH_HEADER}"
tls:
insecure: true # Set to false in production with proper certs
@@ -176,6 +288,7 @@ echo "🎉 SETUP COMPLETE!"
echo "====================================================="
echo "The openfront user has been set up and has Docker permissions."
echo "UDP buffer sizes have been configured for optimal QUIC/WebSocket performance."
echo "Traefik reverse proxy is running (HTTP :80, HTTPS :443 with Cloudflare origin cert)."
echo "Node Exporter is collecting system metrics."
echo "OpenTelemetry Collector is forwarding metrics to your endpoint."
echo ""

Some files were not shown because too many files have changed in this diff Show More