diff --git a/dist/ba_data/data/langdata.json b/dist/ba_data/data/langdata.json index bf5e68c..540fdd3 100644 --- a/dist/ba_data/data/langdata.json +++ b/dist/ba_data/data/langdata.json @@ -75,7 +75,7 @@ "adan", "Adeel (AdeZ {@adez_})", "Adel", - "Rio Adi", + "Rio adi", "Rayhan Adiansyah", "Yonas Adiel", "admin", @@ -96,6 +96,7 @@ "ahmed", "ahmedzabara", "Collin Ainge", + "Akash", "Akbar", "Bekir Akdemir", "Akhanyile", @@ -306,6 +307,7 @@ "Brojas", "Brojasko", "BrotheRuzz11", + "Brunoazocar", "bsam", "Bsamhero", "BSODPK", @@ -374,6 +376,7 @@ "Cpt crook", "Prashanth CrossFire", "Cryfter", + "cuddles98", "cukomus", "CYCL0YT", "D", @@ -408,6 +411,7 @@ "Dennys", "Alex Derbenew", "df", + "Santanu Dhar", "Guilherme Dias", "Diase7en", "ferbie Dicen", @@ -416,6 +420,7 @@ "dikivan2000", "Dimitriy", "Martin Dimitrov", + "DinoWattz", "Diprone", "djaber djafer", "Fadhil djibran", @@ -439,6 +444,7 @@ "Dudow", "Dustin", "Paul Duvernay", + "Emir İslam Dündar", "Ebutahapro07tr", "Edson", "Glen Edwards", @@ -487,6 +493,7 @@ "Jakub Fafek", "Syed Fahrin (Mr.Lemoyne)", "faizal.faiz.ms@gmail.com", + "Fakih", "FanDolz.", "Faqih", "Muhammad Faqih ''None''", @@ -679,7 +686,7 @@ "Tobias Dencker Israelsen", "Kegyes István", "Itamar", - "Ivan", + "ivan", "iViietZ", "Al jabbar", "Jacek", @@ -699,6 +706,7 @@ "Jembhut", "CrackerKSR (Kishor Jena)", "CrackerKSR (Kishor Jena))", + "Jenqa", "Jeroen", "jesus", "Jetty", @@ -759,6 +767,7 @@ "Kaushik", "KawaiiON", "KD", + "Kejuxs", "Mani kelidari", "Kelmine", "Kenjie", @@ -790,6 +799,7 @@ "Nikolay Korolyov", "Kostas", "Viktor Kostohryz", + "Kozmo909", "Mikhail Krasovsky", "kripanshu", "kris", @@ -842,6 +852,7 @@ "Linux44313", "LiteBalt", "LittleNyanCat", + "Lizzetc", "Lkham", "Loex", "Loko", @@ -933,6 +944,7 @@ "Meryu07", "Meysam", "MGH", + "Davis Michelle", "Mick", "Miguel", "Miguelterrazas123", @@ -1254,6 +1266,7 @@ "ShadowQ", "shafay", "Manan Shah", + "shakesm", "Sharvesh", "Nalam Shashwath", "Haige Shi", @@ -1271,6 +1284,7 @@ "Igor Slobodchuk", "Rasim Smaili", "Nicola Smaniotto", + "smertfhg", "Nico Smit", "Snack", "Mahteus Soares", @@ -1549,6 +1563,7 @@ "مُحمَّد الأول", "البطل", "بسام البطل", + "رفيق العشي", "ابو العواصف2020", "عبدالرحمن النجم", "امیرعلی", @@ -1585,6 +1600,7 @@ "حسین وفایی‌فرد", "انا يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا", "١٢٣٤٥", + "٦٤٦٦٤٦٤٦", "علیرضا پودینه", "वेदाँश त्यागी", "അർഷഖ് ഹസ്സൻ", @@ -1618,6 +1634,7 @@ "神仙", "药药Medic", "蔚蓝枫叶", + "鲨鱼服·Medic", "鲲鹏元帅", "꧁ℤephyro꧂", "공팔이", diff --git a/dist/ba_data/data/languages/arabic.json b/dist/ba_data/data/languages/arabic.json index c3455df..0b1e000 100644 --- a/dist/ba_data/data/languages/arabic.json +++ b/dist/ba_data/data/languages/arabic.json @@ -56,8 +56,8 @@ "Boxer": { "description": "فز بدون استخدامك للقنابل", "descriptionComplete": "لقد فزت بدون استخدام القنابل", - "descriptionFull": "قم بإكمال ${LEVEL} بدون استخدام أية قنابل", - "descriptionFullComplete": "اكمل ${LEVEL} بدون استخدام أية قنابل", + "descriptionFull": "بدون استخدام اي قنابل${LEVEL} قم بإكمال", + "descriptionFullComplete": "دون استخدام اي قنابل${LEVEL} اكمل", "name": "مُلاكِمْ" }, "Dual Wielding": { @@ -66,10 +66,10 @@ "name": "اللكمة المزدوجة" }, "Flawless Victory": { - "description": "انتصر بدون تعرض للأذى", + "description": "انتصر بدون التعرض للأذى", "descriptionComplete": "لقد فزت بدون تعرضك للأذى", - "descriptionFull": "انتصر في ${LEVEL} بدون تعرضك للأذى", - "descriptionFullComplete": "لقد فزت في ${LEVEL} بدون تعرضك للأذى", + "descriptionFull": "دون تعرضك للأذى${LEVEL} فُزْ", + "descriptionFullComplete": "دون تعرضك للأذى ${LEVEL} لقد فُزتَ", "name": "الفوز المستحق" }, "Free Loader": { @@ -89,7 +89,7 @@ "descriptionComplete": "لقد انتصرت بدون استخدامك للكمات او القنابل", "descriptionFull": "بدون استخدام اللكمات أو القنابل ${LEVEL} فز في", "descriptionFullComplete": "بدون استخدام اللكمات أو القنابل ${LEVEL} لقد ربحت في", - "name": "الأسلحة المخفية" + "name": "حصلت على الحركات" }, "In Control": { "descriptionFull": "(قم بتوصيل جهاز تحكم (جهاز أو تطبيق", @@ -136,7 +136,7 @@ "descriptionComplete": "!لقد سجلت 5000 نقطة", "descriptionFull": "${LEVEL} سجِّل 5000 نقطة في", "descriptionFullComplete": "${LEVEL} لقد سجَّلتَ 5000 نقطة في", - "name": "إله ${LEVEL}" + "name": "زعيم ${LEVEL}" }, "Onslaught Master": { "description": "سجل 500 نقطة", @@ -160,10 +160,10 @@ "name": "${LEVEL} ساحر" }, "Precision Bombing": { - "description": "powerups فز بدون اي", - "descriptionComplete": "powerups لقد فزتَ بدون أي", - "descriptionFull": "power-ups بدون اي ${LEVEL} فز في", - "descriptionFullComplete": "power-ups بدون اي ${LEVEL} لقد فزتَ في", + "description": "فُزْ بدون اي قوى خارقة", + "descriptionComplete": "لقد فزتَ بدون أي قوى خارقة", + "descriptionFull": "بدون اي قوى خارقة${LEVEL} فز في", + "descriptionFullComplete": "بدون اي قوى خارقة${LEVEL} لقد فزتَ في", "name": "دقة القصف" }, "Pro Boxer": { @@ -218,7 +218,7 @@ "Rookie Onslaught Victory": { "description": "هزيمة كل الجولات", "descriptionComplete": "هزم كل الجولات", - "descriptionFull": "${LEVEL} اكسب كل الجولات في", + "descriptionFull": "${LEVEL} اهزم كل الجولات في", "descriptionFullComplete": "${LEVEL} هزم كل الجولات في", "name": "${LEVEL} لقد انتصرت" }, @@ -250,9 +250,9 @@ }, "Stayin' Alive": { "description": "فز بدون أن تموت", - "descriptionComplete": "فاز بدون أن يموت", + "descriptionComplete": "لقد فُزت بدون ان تموت", "descriptionFull": "بدون أن تموت ${LEVEL} فز", - "descriptionFullComplete": "بدون أن يموت ${LEVEL} فاز", + "descriptionFullComplete": "بدون أن يموت ${LEVEL} لقد فزت", "name": "البقاء حيا" }, "Super Mega Punch": { @@ -265,8 +265,8 @@ "Super Punch": { "description": "إلحاق الضرر 50٪ بلكمة واحدة", "descriptionComplete": "ألحق الضرر 50٪ بلكمة واحدة", - "descriptionFull": "${LEVEL} إلحاق الضرر 50٪ بلكمة واحدة", - "descriptionFullComplete": "${LEVEL} ألحق الضرر 50٪ بلكمة واحدة", + "descriptionFull": "${LEVEL} إلحاق الضرر 50٪ بلكمة واحدة في", + "descriptionFullComplete": "${LEVEL} ألحق الضرر 50٪ بلكمة واحدة في", "name": "لكمة خارقة" }, "TNT Terror": { diff --git a/dist/ba_data/data/languages/chinese.json b/dist/ba_data/data/languages/chinese.json index 7c092d6..f21259e 100644 --- a/dist/ba_data/data/languages/chinese.json +++ b/dist/ba_data/data/languages/chinese.json @@ -1122,7 +1122,7 @@ "playlistsText": "列表", "pleaseRateText": "如果你喜欢 ${APP_NAME},请考虑花一点时间\n来评价一下它或为它写一篇评论。这将为我们提供\n有用的反馈建议,为游戏的未来开发给予支持。\n\n感谢您!\n-eric", "pleaseWaitText": "请稍等...", - "pluginsDetectedText": "新的插件已经加载.请在设置中启用它们.", + "pluginsDetectedText": "新插件安装成功,请重启游戏或在设置中设置它们~", "pluginsText": "插件", "practiceText": "练习", "pressAnyButtonPlayAgainText": "按任意按钮再玩一次...", diff --git a/dist/ba_data/data/languages/croatian.json b/dist/ba_data/data/languages/croatian.json index 4f5fbbf..f8e14a9 100644 --- a/dist/ba_data/data/languages/croatian.json +++ b/dist/ba_data/data/languages/croatian.json @@ -720,14 +720,15 @@ "internetText": "Internet", "inviteAFriendText": "Prijatelji nemaju igru? Pozovi ih da je\nprobaju i oni će dobiti ${COUNT} besplatnih ulaznica.", "inviteFriendsText": "Pozovi Prijatelje", - "joinPublicPartyDescriptionText": "Pridruži se javnoj partiji:", - "localNetworkDescriptionText": "Uključi se u partiju na tvojoj mreži:", + "joinPublicPartyDescriptionText": "Pridruži se javnoj partiji", + "localNetworkDescriptionText": "Uđi u blisku partiju (Lan, Bluetooth, itd.)", "localNetworkText": "Lokalna mreža", "makePartyPrivateText": "Postavi moju partiju privatnom", "makePartyPublicText": "Postavi moju partiju javnom", "manualAddressText": "Adresa", "manualConnectText": "Spoji se", "manualDescriptionText": "Uljuči se u partiju po adresi:", + "manualJoinSectionText": "Uđi s Adresom", "manualJoinableFromInternetText": "Mogu li se drugi priključiti tebi s Interneta?:", "manualJoinableNoWithAsteriskText": "NE*", "manualJoinableYesText": "DA", @@ -735,14 +736,17 @@ "manualText": "Ručno", "manualYourAddressFromInternetText": "Tvoja adresa s Interneta:", "manualYourLocalAddressText": "Tvoja lokalna adresa:", + "nearbyText": "Blizu", "noConnectionText": "", "otherVersionsText": "(druge verzije)", + "partyCodeText": "Grupna šifra", "partyInviteAcceptText": "Prihvati", "partyInviteDeclineText": "Odbij", "partyInviteGooglePlayExtraText": "(pogledaj 'Google Play' karticu u prozoru 'Sakupi')", "partyInviteIgnoreText": "Odbaci", "partyInviteText": "${NAME} te pozvao\nda se priključiš njegovoj partiji!", "partyNameText": "Naziv igre", + "partyServerRunningText": "Tvoj grupni server radi.", "partySizeText": "Veličina žurke", "partyStatusCheckingText": "provjeravam status...", "partyStatusJoinableText": "tvoja igra je spremna za povezivanje s interneta", @@ -751,11 +755,21 @@ "partyStatusNotPublicText": "tvoja igra nije javna", "pingText": "ping", "portText": "Port", + "privatePartyCloudDescriptionText": "Privatne grupe radu na posvećenim cloud serverima; Nikakvih ruter konfiguracija potrebno", + "privatePartyHostText": "Napravi privatnu grupu", + "privatePartyJoinText": "Uđi u privatnu grupu", + "privateText": "Privatno", + "publicHostRouterConfigText": "Za ovo možda bude trebalo konfiguriranje \"port-forwarding\"-a na vašem ruteru. Za lakšu opciju napravite privatnu grupu", + "publicText": "Javno", "requestingAPromoCodeText": "Dohvaćam kod...", "sendDirectInvitesText": "Pošalji izravni poziv", "sendThisToAFriendText": "Posalji ovaj kod prijatelju:", "shareThisCodeWithFriendsText": "Podijeli ovaj kod s prijateljima:", "showMyAddressText": "Prikaži moju IP adresu", + "startHostingPaidText": "Napravi sada za ${COST}", + "startHostingText": "Napravi", + "startStopHostingMinutesText": "Možeš početi i zaustaviti server besplatno za slijedećih ${MINUTES} minuta.", + "stopHostingText": "Prestani server", "titleText": "Okupljanje", "wifiDirectDescriptionBottomText": "Ako svi uređaji imaju 'Wi-Fi Direct' opciju, trebali bi ga moći iskoristiti da pronađu jedan\ndrugoga i povežu se. Kad su svi uređaji povezani, možeš kreiratu igru\nkoristeći karticu 'Lokalna mreža', isto kao i kod obične Wi-Fi mreže. \n\nZa najbolje rezultate, domaćin Wi-Fi Directa također bi trebao biti domaćin ${APP_NAME} igre.", "wifiDirectDescriptionTopText": "Wi-Fi Direct možete koristiti da povežete Android uređaje direktno bez \npotrebe za Wi-Fi mrežom. Ovo najbolje radi na Android verziji 4.2 ili novijoj. \n\nZa korištenje, otvori Wi-Fi postavke i potraži 'Wi-Fi Direct' u izborniku.", @@ -813,6 +827,7 @@ "bombInfoText": "- Bomba -\nJača od udaraca, ali može rezultirati \nsamoubojstvom. Za najbolje \nrezultate, baci je prema neprijatelju \nprije nego što fitilj potpuno izgori.", "canHelpText": "${APP_NAME} može pomoći.", "controllersInfoText": "Možeš igrati ${APP_NAME} s prijeteljima preko mreže, ili svi\nmožete igrati na istom uređaju ako imate dovoljno kontrolera. \n${APP_NAME} podržava razne kontrolere; čak možete koristiti telefone\nkao kontrolere pomoću besplatne '${REMOTE_APP_NAME}' aplikacije. \nZa više informacija pogledaj pod Postavke->Kontroleri.", + "controllersInfoTextRemoteOnly": "Možete igrati ${APP_NAME} sa prijateljima \nPreko wifi-a ili\npreko istog uređaju koristeći mobitele kao kontrolere pomoću besplatnom aplikacijom '${REMOTE_APP_NAME}'", "controllersText": "Kontroleri", "controlsSubtitleText": "Tvoj prijateljski ${APP_NAME} lik ima par osnovnih kretnji:", "controlsText": "Kontrole", @@ -1051,6 +1066,7 @@ "offText": "Isključeno", "okText": "U redu", "onText": "Uključeno", + "oneMomentText": "Jedan trenutak...", "onslaughtRespawnText": "${PLAYER} će se ponovno pojaviti u naletu ${WAVE}", "orText": "${A} ili ${B}", "otherText": "Drugo...", @@ -1097,10 +1113,11 @@ "playerText": "Igrač", "playlistNoValidGamesErrorText": "Ova lista igara ne sadrži nijednu valjanu otključanu igru.", "playlistNotFoundText": "lista igara nije pronađena", + "playlistText": "Playlista", "playlistsText": "Liste igara", "pleaseRateText": "Ako ti se sviđa ${APP_NAME}, molim te razmisli o tome\nda ga ocijeniš ili napišeš recenziju.\nOvako šalješ korisnu povratnu informaciju koja pomaže u daljnjem razvoju.\n\nHvala!\n-eric", "pleaseWaitText": "Molimo sačekajte...", - "pluginsDetectedText": "Novi dodatak(ci) detektiraju. Osposobi/konfiguriraj ih u postavkama.", + "pluginsDetectedText": "Novi dodatak(ci) detektiran(i) Resetiraj da ih ukljućiš ili ih konfiguriraj u postavkima", "pluginsText": "Dodatci", "practiceText": "Vježba", "pressAnyButtonPlayAgainText": "Pritisni bilo koju tipku za ponovnu igru...", @@ -1496,6 +1513,7 @@ "Dutch": "Nizozemski", "English": "Engleski", "Esperanto": "Esperanto", + "Filipino": "Filipinski", "Finnish": "Finski", "French": "Francuski", "German": "Njemački", @@ -1516,6 +1534,8 @@ "Slovak": "Slovački", "Spanish": "Španjolski", "Swedish": "Švedski", + "Tamil": "Tamil", + "Thai": "tajlandski", "Turkish": "Turski", "Ukrainian": "Ukrajinski", "Venetian": "Venecijanski", @@ -1564,6 +1584,7 @@ "Account linking successful!": "Povezivanje računa uspješno!", "Account unlinking successful!": "Odspajanje računa uspješno!", "Accounts are already linked.": "Računi su već povezani.", + "Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Prikaz oglasa se nije mogao provjeriti.\nMolim vas budite sigurni da koristite službenu i suvremenu verziju ove igre", "An error has occurred; (${ERROR})": "Greška se pojavila; (${ERROR})", "An error has occurred; please contact support. (${ERROR})": "Greška se pojavila; molimo vas pozovite pomoć. (${ERROR})", "An error has occurred; please contact support@froemling.net.": "Greška se pojavila; molim vas pozovite support@froemling.net.", @@ -1589,6 +1610,7 @@ "Max number of profiles reached.": "Max broj dosegao profila.", "Maximum friend code rewards reached.": "Maksimalne nagrade od prijateljskih kodova dostignute.", "Message is too long.": "Poruka je prevelika.", + "No servers are available. Please try again soon.": "Nema dostupnih servera. Pokušajte opet kasnije.", "Profile \"${NAME}\" upgraded successfully.": "Profil \"${NAME}\" uspjesno upgrajdovan", "Profile could not be upgraded.": "Profil se ne može ažurirati.", "Purchase successful!": "Kupovina uspješna!", @@ -1598,10 +1620,12 @@ "Sorry, this code has already been used.": "Izvini, ovaj kod je već iskorišćen.", "Sorry, this code has expired.": "Izvini, ovaj kod je istekao.", "Sorry, this code only works for new accounts.": "Izvini, ovaj kod radi samo za nove igrače.", + "Still searching for nearby servers; please try again soon.": "Još pretražuješ za bliske servere; pokušajte opet kasnije", "Temporarily unavailable; please try again later.": "Privremeno nedostupno; molimo vas pokušajte kasnije.", "The tournament ended before you finished.": "Turnir je šio prije nego što si ti završio.", "This account cannot be unlinked for ${NUM} days.": "Ovaj se račun ne može odvezati ${NUM} dana.", "This code cannot be used on the account that created it.": "Ovaj kod se nemoze koristiti na akauntu koji je stvorio.", + "This is currently unavailable; please try again later.": "Ovo je trenutačno nedostupno; pokušajte opet kasnije.", "This requires version ${VERSION} or newer.": "Ovo zahtijeva verziju ${VERSION} ili noviju.", "Tournaments disabled due to rooted device.": "Turniri nedostupni zbog rootanog uređaja.", "Tournaments require ${VERSION} or newer": "Turniri koriste ${VERSION} ili noviju", diff --git a/dist/ba_data/data/languages/english.json b/dist/ba_data/data/languages/english.json index 12f6f79..a5fa606 100644 --- a/dist/ba_data/data/languages/english.json +++ b/dist/ba_data/data/languages/english.json @@ -324,6 +324,7 @@ "achievementsRemainingText": "Achievements Remaining:", "achievementsText": "Achievements", "achievementsUnavailableForOldSeasonsText": "Sorry, achievement specifics are not available for old seasons.", + "activatedText": "${THING} activated.", "addGameWindow": { "getMoreGamesText": "Get More Games...", "titleText": "Add Game" @@ -1115,7 +1116,10 @@ "playlistsText": "Playlists", "pleaseRateText": "If you're enjoying ${APP_NAME}, please consider taking a\nmoment and rating it or writing a review. This provides\nuseful feedback and helps support future development.\n\nthanks!\n-eric", "pleaseWaitText": "Please wait...", - "pluginsDetectedText": "New plugin(s) detected. Enable/configure them in settings.", + "pluginClassLoadErrorText": "Error loading plugin class '${PLUGIN}': ${ERROR}", + "pluginInitErrorText": "Error initing plugin '${PLUGIN}': ${ERROR}", + "pluginsDetectedText": "New plugin(s) detected. Restart to activate them, or configure them in settings.", + "pluginsRemovedText": "${NUM} plugin(s) no longer found.", "pluginsText": "Plugins", "practiceText": "Practice", "pressAnyButtonPlayAgainText": "Press any button to play again...", @@ -1851,6 +1855,8 @@ "winsPlayerText": "${NAME} Wins!", "winsTeamText": "${NAME} Wins!", "winsText": "${NAME} Wins!", + "workspaceSyncErrorText": "Error syncing ${WORKSPACE}. See log for details.", + "workspaceSyncReuseText": "Can't sync ${WORKSPACE}. Reusing previous synced version.", "worldScoresUnavailableText": "World scores unavailable.", "worldsBestScoresText": "World's Best Scores", "worldsBestTimesText": "World's Best Times", diff --git a/dist/ba_data/data/languages/filipino.json b/dist/ba_data/data/languages/filipino.json index e85c851..499ebf6 100644 --- a/dist/ba_data/data/languages/filipino.json +++ b/dist/ba_data/data/languages/filipino.json @@ -211,14 +211,14 @@ "descriptionComplete": "Naipanalo ang laro", "descriptionFull": "Panalunin ang laro sa ${LEVEL}", "descriptionFullComplete": "Pinanalo ang laro sa ${LEVEL}", - "name": "${LEVEL} Panalo" + "name": "Nanalo sa ${LEVEL}" }, "Rookie Onslaught Victory": { "description": "Italo lahat ang mga kaway", "descriptionComplete": "Natalo lahat ang mga kaway", "descriptionFull": "Italo lahat ang mga kaway sa ${LEVEL}", "descriptionFullComplete": "Natalo lahat ng mga kaway sa ${LEVEL}", - "name": "${LEVEL} Panalo" + "name": "Nanalo sa ${LEVEL}" }, "Runaround God": { "description": "Maka-iskor ng 2000 na Puntos", @@ -312,7 +312,7 @@ "descriptionComplete": "Natalo ang lahat na mga kaway", "descriptionFull": "Talunin ang lahat na mga kaway sa ${LEVEL}", "descriptionFullComplete": "Natalo ang lahat na mga kaway sa ${LEVEL}", - "name": "${LEVEL} Panalo" + "name": "Nanalo sa ${LEVEL}" }, "Uber Runaround Victory": { "description": "Tapusin ang lahat na kaway", @@ -1110,7 +1110,7 @@ "playlistsText": "Mga Playlist", "pleaseRateText": "Kung nae-enjoy mo ang ${APP_NAME}, mangyaring isaalang-alang ang \npagkuha na sandali lang at i-rate ito o pagsulat ng isang pagsusuri. Nagbibigay ito ngkapaki-pakinabang na feedback at \ntumutulong sa pagsuporta sa pag-unlad sa hinaharap.\n\nsalamat!\n-eric", "pleaseWaitText": "Hintay lang…", - "pluginsDetectedText": "May nakitang bagong (mga) plugin. Paganahin/i-configure ang mga ito sa mga setting.", + "pluginsDetectedText": "May nakitang bagong (mga) plugin. I-restart para i-activate ang mga ito, o i-configure ang mga ito sa mga setting.", "pluginsText": "Mga Plugin", "practiceText": "Pagsasagawa", "pressAnyButtonPlayAgainText": "Pindutin ang anumang button para maglaro muli...", @@ -1801,13 +1801,13 @@ "votedAlreadyText": "Nakaboto ka na", "votesNeededText": "Kailangan ng ${NUMBER} (na) boto", "vsText": "vs.", - "waitingForHostText": "(naghihintay para sa ${HOST} na magpatuloy)", + "waitingForHostText": "(naghihintay para kay ${HOST} na magpatuloy)", "waitingForPlayersText": "naghihintay ng mga manlalaro na sumali...", "waitingInLineText": "Naghihintay sa pila (puno ang party)...", "watchAVideoText": "Manood ng Isang video", "watchAnAdText": "Manood ng Ad", "watchWindow": { - "deleteConfirmText": "Tangalin \"${REPLAY}\"?", + "deleteConfirmText": "Tangalin ang \"${REPLAY}\"?", "deleteReplayButtonText": "Itanggal ang \nReplay", "myReplaysText": "Ang Mga Replay Ko", "noReplaySelectedErrorText": "Walang Napiling Replay", @@ -1825,7 +1825,7 @@ "watchReplayButtonText": "Ipanood ang\nReplay" }, "waveText": "Kaway", - "wellSureText": "Oo syempre", + "wellSureText": "Oo Syempre!", "wiimoteLicenseWindow": { "titleText": "Copyright ni DarwiinRemote" }, @@ -1839,10 +1839,10 @@ "listenText": "Makinig", "macInstructionsText": "Tiyaking naka-off ang iyong Wii at naka-enable ang Bluetooth\nsa iyong Mac, pagkatapos ay pindutin ang 'Makinig'. Maaari ang suporta ng Wiimote\nmaging medyo patumpik-tumpik, kaya maaaring kailanganin mong subukan ng ilang beses\nbago ka magkaroon ng koneksyon.\n\nDapat hawakan ng Bluetooth ang hanggang 7 konektadong device,\nkahit na ang iyong mileage ay maaaring mag-iba.\n\nSinusuportahan ng BombSquad ang orihinal na Wiimotes, Nunchuks,\nat ang Klasikong Controller.\nGumagana na rin ang mas bagong Wii Remote Plus\nngunit hindi sa mga kalakip.", "thanksText": "Salamat sa DarwiinRemote team\nPara maging posible ito.", - "titleText": "Wiimote Setup" + "titleText": "Pag-setup ng Wiimote" }, - "winsPlayerText": "${NAME} Nanalo!", - "winsTeamText": "${NAME} Nanalo!", + "winsPlayerText": "Nanalo si ${NAME}!", + "winsTeamText": "Nanalo ang ${NAME}!", "winsText": "${NAME} Nanalo!", "worldScoresUnavailableText": "Ang scores sa buong mundo ay hindi pa handa", "worldsBestScoresText": "Pinakamahusay na Iskor ng Mundo", diff --git a/dist/ba_data/data/languages/german.json b/dist/ba_data/data/languages/german.json index c036ff9..7f48b5d 100644 --- a/dist/ba_data/data/languages/german.json +++ b/dist/ba_data/data/languages/german.json @@ -1191,7 +1191,7 @@ "playlistsText": "Playlists", "pleaseRateText": "Wenn dir ${APP_NAME} Spaß macht, nimm dir kurz die Zeit\nund bewerte es oder schreib ein Review. Durch das Feedback\nwird zukünftige Arbeit an dem Spiel unterstützt.\n\nVielen Dank!\n-eric", "pleaseWaitText": "Bitte warte...", - "pluginsDetectedText": "Neue Plugins erkannt. Aktivieren / konfigurieren Sie sie in den Einstellungen.", + "pluginsDetectedText": "Neue Plugins erkannt. Neustarten, um sie zu aktivieren oder in den Einstellungen konfigurieren.", "pluginsText": "Plugins", "practiceText": "Übung", "pressAnyButtonPlayAgainText": "Drücke einen Knopf um nochmal zu spielen...", diff --git a/dist/ba_data/data/languages/gibberish.json b/dist/ba_data/data/languages/gibberish.json index af5d8f0..2963c66 100644 --- a/dist/ba_data/data/languages/gibberish.json +++ b/dist/ba_data/data/languages/gibberish.json @@ -333,6 +333,7 @@ "achievementsRemainingText": "Azhiévemúnts Rzmáinzng:", "achievementsText": "Achéevúmentz", "achievementsUnavailableForOldSeasonsText": "Srrrz, chi faow co wjefo iwefo wef;oiajwf asodvjoa sdfj odfjsodf.", + "activatedText": "${THING} cjwoeifjwer.", "addGameWindow": { "getMoreGamesText": "Gztz Mrrz Gmzz...", "titleText": "Ádzd Gámzé", @@ -1196,7 +1197,10 @@ "playlistsText": "Plzlntsfs", "pleaseRateText": "If yóu're énjoyíng ${APP_NAME}, pléase cónsider táking z\nmúment ánd rúting zt ór wrúting í reváew. Thzs próvidzs\níseful fzédbíck ánd hélps súpport fútúre dévelópmént.\n\nthénkz!\n-eric", "pleaseWaitText": "Poke focwoe fjowef.", - "pluginsDetectedText": "Nz pweo woe dfowocewr. Enfwoc/cowefe thzm incowrdss.", + "pluginClassLoadErrorText": "Erori cojflw cwoej woer erwe '${PLUGIN}': ${ERROR}", + "pluginInitErrorText": "Error cowejwoer plugins ${PLUGIN}: ${ERROR}", + "pluginsDetectedText": "Now cow rwoejcw. Wnewoiow rwepwot ghowcoweior weorjdfdfs.", + "pluginsRemovedText": "${NUM} powefjwj no legate fcwdf.", "pluginsText": "Plfzlfez", "practiceText": "Pcoifjzzz", "pressAnyButtonPlayAgainText": "Prézs ánz búttún tóz pláy agánz...", @@ -1990,6 +1994,8 @@ "winsSingularText": "${NAME} WinzfjlzSS!", "winsTeamText": "${NAME} Wnttm!", "winsText": "${NAME} Wínsz!", + "workspaceSyncErrorText": "Eeror ocijo itself ${WORKSPACE}. See zoo crew tcowdf.", + "workspaceSyncReuseText": "Cnoiwj zoo ${WORKSPACE}. ROI cw cwoerpwer housers.", "worldScoresUnavailableText": "Wrlzld scrzzl unvlfldsjbzl.", "worldsBestScoresText": "Wúrld's Bést Scórzs", "worldsBestTimesText": "Wúrld's Bzst Tímés", diff --git a/dist/ba_data/data/languages/italian.json b/dist/ba_data/data/languages/italian.json index e9f6d87..e9ba48c 100644 --- a/dist/ba_data/data/languages/italian.json +++ b/dist/ba_data/data/languages/italian.json @@ -1162,7 +1162,7 @@ "playlistsText": "Scalette", "pleaseRateText": "Se ti sta piacendo ${APP_NAME}, prenditi\nun momento per valutarlo o scriverci su una recensione.\nQuesto aiuterà a supportare futuri sviluppi.\n\nGrazie!\n-eric", "pleaseWaitText": "Attendi...", - "pluginsDetectedText": "Nuovo/i Plugin rilevato/i. Abilitali/configurali nelle impostazioni.", + "pluginsDetectedText": "nuovo/i plugin rilevato. Riavvia per attivarli, o configurali nelle impostazioni.", "pluginsText": "Plugin", "practiceText": "Allenamento", "pressAnyButtonPlayAgainText": "Premi un pulsante qualunque per rigiocare...", diff --git a/dist/ba_data/data/languages/polish.json b/dist/ba_data/data/languages/polish.json index feb123e..8aa800d 100644 --- a/dist/ba_data/data/languages/polish.json +++ b/dist/ba_data/data/languages/polish.json @@ -1161,7 +1161,7 @@ "playlistsText": "Listy gier", "pleaseRateText": "Jeśli polubiłeś ${APP_NAME}, proszę o poddanie go ocenie\nlub napisanie krótkiej recenzji. Pozwoli to zebrać przydatne\ninformacje, które pomogą wesprzeć rozwój gry w przyszłości.\n\nDziękuję!\n-Eric", "pleaseWaitText": "Czekaj chwilkę...", - "pluginsDetectedText": "Nowe pluginy wykryte. Włącz/skonfiguruj je w ustawieniach.", + "pluginsDetectedText": "Wykryto nowe pluginy. Uruchom ponownie grę, aby je aktywować, lub skonfiguruje je w ustawieniach.", "pluginsText": "Pluginy", "practiceText": "Praktyka", "pressAnyButtonPlayAgainText": "Naciśnij dowolny przycisk aby zagrać ponownie...", diff --git a/dist/ba_data/data/languages/portuguese.json b/dist/ba_data/data/languages/portuguese.json index 97ec479..0b514c1 100644 --- a/dist/ba_data/data/languages/portuguese.json +++ b/dist/ba_data/data/languages/portuguese.json @@ -1183,7 +1183,7 @@ "playlistsText": "Playlists", "pleaseRateText": "Se você está curtindo ${APP_NAME}, por favor, dê um tempinho\npara avaliar e comentar. Isso nos dá uma opinião útil\ne ajuda no desenvolvimento do jogo.\n\nobrigado!\n-eric", "pleaseWaitText": "Por favor, aguarde...", - "pluginsDetectedText": "Novo(s) plugin(s) detected. Ative-os/configure-os em configurações.", + "pluginsDetectedText": "Novo(s) plugin(s) detetados. Reinicie o jogo para ativá-los ou configure-os nas configurações.", "pluginsText": "Plugins", "practiceText": "Praticar", "pressAnyButtonPlayAgainText": "Aperte qualquer botão para jogar novamente...", diff --git a/dist/ba_data/data/languages/romanian.json b/dist/ba_data/data/languages/romanian.json index c3bf193..7b9eed9 100644 --- a/dist/ba_data/data/languages/romanian.json +++ b/dist/ba_data/data/languages/romanian.json @@ -1,52 +1,52 @@ { "accountSettingsWindow": { - "accountNameRules": "Numele Contulurilor nu pot conține emoji-uri sau alte semne speciale", + "accountNameRules": "Numele contulurilor nu pot conține emoji-uri sau alte semne speciale", "accountProfileText": "(profil de cont)", "accountsText": "Conturi", "achievementProgressText": "Realizări: ${COUNT} din ${TOTAL}", - "campaignProgressText": "Progres campanie [Greu]: ${PROGRESS}", - "changeOncePerSeason": "Acesta poate fi schimbat o singură dată pe sezon", - "changeOncePerSeasonError": "Trebuie să aștepți până la următorul sezon dacă vrei să schimbi asta din nou timp de (${NUM} zile)", - "customName": "Nume personalizat", + "campaignProgressText": "Progres Campanie [Greu]: ${PROGRESS}", + "changeOncePerSeason": "Acest lucru poate fi schimbat o singură dată pe sezon.", + "changeOncePerSeasonError": "Trebuie să aștepți până la următorul sezon (timp de ${NUM} (de) zile) dacă vrei să schimbi acest lucru din nou", + "customName": "Nume Personalizat", "deviceSpecificAccountText": "Foloseşti un cont specific dispozitivului: ${NAME}", "linkAccountsEnterCodeText": "Introdu Codul", "linkAccountsGenerateCodeText": "Generează Codul", - "linkAccountsInfoText": "(împărtăşeşte progresul între platforme diferite)", - "linkAccountsInstructionsNewText": "Pentru a conecta două conturi, generați un cod pe primul\nși introduceți acel cod pe al doilea. Date din\nal doilea cont va fi apoi partajat între amândouă.\n(Datele din primul cont se vor pierde)\n\nPuteți conecta până la ${COUNT} conturi.\n\nIMPORTANT: conectați numai conturile pe care le dețineți;\nDacă vă conectați la conturile prietenilor, nu veți putea\nsă jucați online în același timp.", + "linkAccountsInfoText": "(împărtășeşte-ți progresul făcut pe platforme diferite)", + "linkAccountsInstructionsNewText": "Pentru a conecta două conturi între ele, generează un cod pe primul\nși introdu acel cod pe al doilea. Datele din cel\nde-al doilea cont vor fi apoi partajate între ambele conturi.\n(Datele de pe primul cont se vor pierde)\n\nPoți conecta până la ${COUNT} conturi.\n\nIMPORTANT: conectează-te numai la conturile pe care le deții;\nDacă te conectezi la conturile prietenilor tăi, nu vei\nputea să te joci online cu aceștia în același timp.", "linkAccountsInstructionsText": "Pentru a conecta 2 conturi, generează un cod pe\nunul din ele şi introdu acelmcod pe celălalt.\nProgresul şi inventarul tău vor fi combinate.\nPoți conecta până la ${COUNT} conturi.\n\nAi grijă; acest lucru nu poate fi şters!", "linkAccountsText": "Conectează Conturi", - "linkedAccountsText": "Conturi conectate:", - "nameChangeConfirm": "Vrei să-ți schimbi numele contului in ${NAME}?", - "resetProgressConfirmNoAchievementsText": "Această acțiune va reseta progresul co-op\nși high-score-urile (dar nu și biletele) și nu\npoate fi anulată. Ești sigur(ă)?", - "resetProgressConfirmText": "Această acțiune va reseta progresul\nco-op, realizările și high-scoreurile\n(dar nu și biletele) și nu poate fi\nanulată. Ești sigur(ă)?", - "resetProgressText": "Resetează progresul", - "setAccountName": "Setează-ți numele contului", - "setAccountNameDesc": "Selectează-ți numele dorit pentru contul tău.\nPoți folosi și numele unui cont de-al tău\nsau să creezi un joc unic personalizat.", - "signInInfoText": "Conectează-te pentru a colecta bilete, a juca online,\nşi a juca cu acelaşi cont pe dispozitive diferite.", + "linkedAccountsText": "Conturi Conectate:", + "nameChangeConfirm": "Vrei să schimbi numele contului tău în ${NAME}?", + "resetProgressConfirmNoAchievementsText": "Această acțiune îți va reseta progresul co-op\nși high-score-urile locale (dar nu și biletele).\nAcest lucru nu este reversibil. Sigur vrei să continui?", + "resetProgressConfirmText": "Această acțiune îți va reseta progresul\nco-op, realizările și high-score-urile\n(dar nu și biletele). Acest lucru nu\neste reversibil. Ești sigur(ă) că vrei să continui?", + "resetProgressText": "Resetează-ți Progresul", + "setAccountName": "Setează-ți Numele Contului", + "setAccountNameDesc": "Scrie un nume dorit de tine care vrei să se afișeze pe contul tău.\nPoți folosi și numele unui alt cont conectat de tine\nsau poți să creezi un nume unic personalizat.", + "signInInfoText": "Conectează-te cu un cont pentru a colecta bilete, a concura online,\nşi pentru a te juca cu acelaşi cont pe dispozitive diferite.", "signInText": "Conectează-te", "signInWithDeviceInfoText": "(un cont automat care este disponibil doar pe acest dispozitiv)", - "signInWithDeviceText": "Conectează-te cu un cont de tip dispozitiv", + "signInWithDeviceText": "Conectează-te cu contul dispozitivului", "signInWithGameCircleText": "Conectează-te cu Game Circle", "signInWithGooglePlayText": "Conectează-te cu Google Play", - "signInWithTestAccountInfoText": "(tip de cont normal; foloseşte conturile de tip dispozitiv şi cele noi)", - "signInWithTestAccountText": "Conectează-te cu un cont de test.", + "signInWithTestAccountInfoText": "(tip de cont normal; foloseşte conturile de tip 'dispozitiv' şi cele noi)", + "signInWithTestAccountText": "Conectează-te cu un cont de test", "signInWithV2InfoText": "(un cont care funcționează pe toate platformele)", "signInWithV2Text": "Conectează-te cu un cont Bombsquad", - "signOutText": "Decoectează-te", - "signingInText": "Se conecteză...", + "signOutText": "Deconectează-te", + "signingInText": "Se conectează...", "signingOutText": "Se deconectează...", "testAccountWarningCardboardText": "Atenție: Te conectezi cu un cont \"de test\". Aceste\nconturi vor fi înlocuite cu conturi Google atunci\ncând vor fi suportate în aplicații cardboard.\n\nDeocamdată vei avea să obții toate biletele în joc.\n(Însă vei primi upgrade-ul BombSquad Pro gratis)", "testAccountWarningOculusText": "Atenție: Te conectezi cu un cont \"de test\". Aceste\nconturi vor fi înlocuite cu conturi Oculus mai încolo anul\nacesta ce vor oferi cumpărarea de bilete și alte funcționalități.\n\nDeocamdată vei avea să obții toate biletele în joc.\n(Însă vei primi upgrade-ul BombSquad Pro gratis)", "testAccountWarningText": "Atenție: te conectezi cu un cont \"de test\". Acest cont\nva fi legat numai de acest dispozitiv și va fi resetat\nperiodic. (deci nu pierde prea mult timp colectând/\ndeblocând lucruri pe el)\n\nFolosește o versiune retail a jocului pentru a folosi\ncontul \"real\" (Game-Center, Google+ etc.). Aceasta te\nlasă să iți și salvezi progresul pe cloud și să îl\nîmparți pe mai multe dispozitive.", "ticketsText": "Bilete: ${COUNT}", - "titleText": "Cont", + "titleText": "Contul tău", "unlinkAccountsInstructionsText": "Selectează un cont pentru a-l deconecta", "unlinkAccountsText": "Deconectează Conturi", - "v2LinkInstructionsText": "Folosește acest link pentru a creea un cont sau a te înregistra.", + "v2LinkInstructionsText": "Folosește acest link pentru a creea un cont sau pentru a te autentifica.", "viaAccount": "(prin contul ${NAME})", "youAreSignedInAsText": "Ești conectat ca și:" }, - "achievementChallengesText": "Provocări pentru Realizări", + "achievementChallengesText": "Provocări Pentru Realizări", "achievementText": "Realizare", "achievements": { "Boom Goes the Dynamite": { @@ -54,13 +54,13 @@ "descriptionComplete": "Ai omorât 3 inamici folosind TNT", "descriptionFull": "Omoară 3 inamici folosind TNT în ${LEVEL}", "descriptionFullComplete": "Ai omorât 3 inamici folosind TNT în ${LEVEL}", - "name": "Bum Face Dinamita" + "name": "*Bum* Face Dinamita" }, "Boxer": { "description": "Câștigă fără să folosești vreo bombă", "descriptionComplete": "Ai câștigat fără să folosești vreo bombă", "descriptionFull": "Completează ${LEVEL} fără să folosești vreo bombă", - "descriptionFullComplete": "Ai completat ${LEVEL} fără sa folosești vreo bombă", + "descriptionFullComplete": "Ai completat ${LEVEL} fără să folosești vreo bombă", "name": "Boxer" }, "Dual Wielding": { @@ -73,11 +73,11 @@ "descriptionComplete": "Ai câștigat fără să fii lovit", "descriptionFull": "Câștigă ${LEVEL} fără să fii lovit", "descriptionFullComplete": "Ai câștigat ${LEVEL} fără să fii lovit", - "name": "Victorie perfectă" + "name": "Victorie Impecabilă" }, "Free Loader": { - "descriptionFull": "Porneşte un joc Fiecare-Pentru-El cu 2+ jucători", - "descriptionFullComplete": "Ai pornit un joc Fiecare-Pentru-El cu 2+ jucători", + "descriptionFull": "Începe un joc Fiecare-Pentru-El cu 2+ jucători", + "descriptionFullComplete": "Ai început un joc Fiecare-Pentru-El cu 2+ jucători", "name": "Încărcător Liber" }, "Gold Miner": { @@ -91,55 +91,55 @@ "description": "Câștigă fără să folosești pumni sau bombe", "descriptionComplete": "Ai câștigat fără să folosești pumnii sau bombele", "descriptionFull": "Câștigă ${LEVEL} fără să folosești pumni sau bombe", - "descriptionFullComplete": "Ai câștigat ${LEVEL} fără să folosești pumni sau bombe", - "name": "Știi mișcările" + "descriptionFullComplete": "Ai câștigat ${LEVEL} fără să folosești pumnii sau bombele", + "name": "Știi Mișcările" }, "In Control": { "descriptionFull": "Conectează un controller (fizic sau prin aplicație)", "descriptionFullComplete": "Ai conectat un controller. (fizic sau prin aplicație)", - "name": "În control" + "name": "În Control" }, "Last Stand God": { - "description": "Marchează 1000 de puncte", - "descriptionComplete": "Ai marcat 1000 de puncte", - "descriptionFull": "Înscrie 1000 de punctele în ${LEVEL}", + "description": "Înscrie 1000 de puncte", + "descriptionComplete": "Ai înscris 1000 de puncte", + "descriptionFull": "Înscrie 1000 de puncte în ${LEVEL}", "descriptionFullComplete": "Ai înscris 1000 de puncte în ${LEVEL}", - "name": "Zeu la ${LEVEL}" + "name": "Zeul, ${LEVEL}" }, "Last Stand Master": { "description": "Înscrie 250 de puncte", "descriptionComplete": "Ai înscris 250 de puncte", "descriptionFull": "Înscrie 250 puncte în ${LEVEL}", "descriptionFullComplete": "Ai înscris 250 puncte în ${LEVEL}", - "name": "Maestru ${LEVEL}" + "name": "Maestru la ${LEVEL}" }, "Last Stand Wizard": { "description": "Înscrie 500 de puncte", "descriptionComplete": "Ai înscris 500 de puncte", "descriptionFull": "Înscrie 500 de puncte în ${LEVEL}", "descriptionFullComplete": "Ai înscris 500 de puncte în ${LEVEL}", - "name": "Vrăjitor ${LEVEL}" + "name": "Vrăjitorul din ${LEVEL}" }, "Mine Games": { "description": "Omoară 3 inamici folosind mine", "descriptionComplete": "Ai omorât 3 inamici folosind mine", "descriptionFull": "Omoară 3 inamici folosind mine în ${LEVEL}", "descriptionFullComplete": "Ai omorât 3 inamici folosind mine în ${LEVEL}", - "name": "Jocurile minelor" + "name": "Jocurile Minelor" }, "Off You Go Then": { "description": "Aruncă 3 inamici de pe hartă", "descriptionComplete": "Ai aruncat 3 inamici de pe hartă", "descriptionFull": "Aruncă 3 inamici de pe hartă în ${LEVEL}", "descriptionFullComplete": "Ai aruncat 3 inamici de pe hartă în ${LEVEL}", - "name": "Jos cu tine" + "name": "Jos Cu tine" }, "Onslaught God": { "description": "Înscrie 5000 de puncte", "descriptionComplete": "Ai înscris 5000 de puncte", "descriptionFull": "Înscrie 5000 de puncte în ${LEVEL}", "descriptionFullComplete": "Ai înscris 5000 de puncte în ${LEVEL}", - "name": "Zeu la ${LEVEL}" + "name": "Zeul din ${LEVEL}" }, "Onslaught Master": { "description": "Înscrie 500 de puncte", @@ -149,25 +149,25 @@ "name": "Maestru la ${LEVEL}" }, "Onslaught Training Victory": { - "description": "Înfrânge toate valurile", - "descriptionComplete": "Ai înfrânt toate valurile", - "descriptionFull": "Înfrânge toate valurile în ${LEVEL}", - "descriptionFullComplete": "Ai înfrânt toate valurile în ${LEVEL}", - "name": "Victorie ${LEVEL}" + "description": "Ieși învingător în toate valurile", + "descriptionComplete": "Ai ieșit învingător în toate valurile", + "descriptionFull": "Ieși învingător în toate valurile din ${LEVEL}", + "descriptionFullComplete": "Ai ieșit învingător în toate valurile din ${LEVEL}", + "name": "Victorie în ${LEVEL}" }, "Onslaught Wizard": { "description": "Înscrie 1000 de puncte", "descriptionComplete": "Ai înscris 1000 de puncte", "descriptionFull": "Înscrie 1000 de puncte în ${LEVEL}", "descriptionFullComplete": "Ai înscris 1000 de puncte în ${LEVEL}", - "name": "Vrăjitor ${LEVEL}" + "name": "Vrăjitorul din ${LEVEL}" }, "Precision Bombing": { "description": "Câștigă fără să folosești powerup-uri", "descriptionComplete": "Ai câștigat fără să folosești powerup-uri", "descriptionFull": "Câștigă ${LEVEL} fără să folosești powerup-uri", "descriptionFullComplete": "Ai câștigat ${LEVEL} fără să folosești powerup-uri", - "name": "Bombardament de precizie" + "name": "Bombardament De Precizie" }, "Pro Boxer": { "description": "Câștigă fără să folosești vreo bombă", @@ -181,48 +181,48 @@ "descriptionComplete": "Ai câștigat fără să-i lași pe inamici să înscrie", "descriptionFull": "Câștigă ${LEVEL} fără să-i lași pe inamici să înscrie", "descriptionFullComplete": "Ai câștigat ${LEVEL} fără să-i lași pe inamici să înscrie", - "name": "Shut-out ${LEVEL}" + "name": "Shut-out în ${LEVEL}" }, "Pro Football Victory": { - "description": "Câștigă jocul", - "descriptionComplete": "Ai câștigat jocul", - "descriptionFull": "Câștigă jocul din ${LEVEL}", - "descriptionFullComplete": "Ai câștigat jocul din ${LEVEL}", + "description": "Câștigă meciul", + "descriptionComplete": "Ai câștigat meciul", + "descriptionFull": "Câștigă meciul din ${LEVEL}", + "descriptionFullComplete": "Ai câștigat meciul din ${LEVEL}", "name": "Victorie în ${LEVEL}" }, "Pro Onslaught Victory": { - "description": "Înfrânge toate valurile", - "descriptionComplete": "Ai înfrânt toate valurile", - "descriptionFull": "Înfrânge toate valurile din ${LEVEL}", - "descriptionFullComplete": "Ai înfrânt toate valurile din ${LEVEL}", - "name": "Victorie ${LEVEL}" + "description": "Ieși învingător în toate valurile", + "descriptionComplete": "Ai ieșit învingător în toate valurile", + "descriptionFull": "Ieși învingător în toate valurile din ${LEVEL}", + "descriptionFullComplete": "Ai ieșit învingător în toate valurile din ${LEVEL}", + "name": "Victorie în ${LEVEL}" }, "Pro Runaround Victory": { "description": "Completează toate valurile", "descriptionComplete": "Ai completat toate valurile", "descriptionFull": "Completează toate valurile din ${LEVEL}", "descriptionFullComplete": "Ai completat toate valurile din ${LEVEL}", - "name": "Victorie ${LEVEL}" + "name": "Victorie în ${LEVEL}" }, "Rookie Football Shutout": { "description": "Câștigă fără să-i lași pe tipii răi să înscrie", "descriptionComplete": "Ai câștigat fără să-i lași pe tipii răi să înscrie", "descriptionFull": "Câștigă ${LEVEL} fără să-i lași pe tipii răi să înscrie", "descriptionFullComplete": "Ai câștigat ${LEVEL} fără să-i lași pe tipii răi să înscrie", - "name": "Shut-out ${LEVEL}" + "name": "Shut-out în ${LEVEL}" }, "Rookie Football Victory": { - "description": "Câștigă jocul", - "descriptionComplete": "Ai câștigat jocul", - "descriptionFull": "Câștigă jocul din ${LEVEL}", - "descriptionFullComplete": "Ai câștigat jocul din ${LEVEL}", - "name": "Victorie ${LEVEL}" + "description": "Câștigă meciul", + "descriptionComplete": "Ai câștigat meciul", + "descriptionFull": "Câștigă meciul din ${LEVEL}", + "descriptionFullComplete": "Ai câștigat meciul din ${LEVEL}", + "name": "Victorie în ${LEVEL}" }, "Rookie Onslaught Victory": { - "description": "Înfrânge toate valurile", - "descriptionComplete": "Ai înfrânt toate valurile", - "descriptionFull": "Înfrânge toate valurile din ${LEVEL}", - "descriptionFullComplete": "Ai înfrânt toate valurile din ${LEVEL}", + "description": "Ieși învingător în toate valurile", + "descriptionComplete": "Ai ieșit învingător în toate valurile", + "descriptionFull": "Ieși învingător în toate valurile din ${LEVEL}", + "descriptionFullComplete": "Ai ieșit învingător în toate valurile din ${LEVEL}", "name": "Victorie în ${LEVEL}" }, "Runaround God": { @@ -241,7 +241,7 @@ }, "Runaround Wizard": { "description": "Înscrie 1000 de puncte", - "descriptionComplete": "Ai strâns 1000 de puncte", + "descriptionComplete": "Ai înscris 1000 de puncte", "descriptionFull": "Înscrie 1000 de puncte în ${LEVEL}", "descriptionFullComplete": "Ai înscris 1000 de puncte în ${LEVEL}", "name": "Vrăjitorul din ${LEVEL}" @@ -263,7 +263,7 @@ "descriptionComplete": "Ai cauzat o daună de 100% cu o singură lovitură", "descriptionFull": "Cauzează o daună de 100% cu o singură lovitură în ${LEVEL}", "descriptionFullComplete": "Ai cauzat o daună de 100% cu o singură lovitură în ${LEVEL}", - "name": "Super Mega Lovitură" + "name": "Super-Mega Pumn" }, "Super Punch": { "description": "Cauzează o daună de 50% cu o singură lovitură", @@ -282,20 +282,20 @@ "Team Player": { "descriptionFull": "Porneşte un joc pe Echipe cu 4+ jucători", "descriptionFullComplete": "Ai pornit un joc pe Echipe cu 4+ jucători", - "name": "Jucător în Echipă" + "name": "Jucătorul Din Echipă" }, "The Great Wall": { - "description": "Opreşte fiecare tip rău", - "descriptionComplete": "Ai oprit fiecare tip rău", - "descriptionFull": "Opreşte fiecare tip rău din ${LEVEL}", - "descriptionFullComplete": "Ai oprit fiecare tip rău din ${LEVEL}", + "description": "Opreşte fiecare inamic", + "descriptionComplete": "Ai oprit fiecare inamic", + "descriptionFull": "Opreşte fiecare inamic din ${LEVEL}", + "descriptionFullComplete": "Ai oprit fiecare inamic din ${LEVEL}", "name": "Marele Zid" }, "The Wall": { - "description": "Oprește fiecare tip rău", - "descriptionComplete": "Ai oprit fiecare tip rău", - "descriptionFull": "Oprește fiecare tip rău din ${LEVEL}", - "descriptionFullComplete": "Ai oprit fiecare tip rău din ${LEVEL}", + "description": "Oprește fiecare inamic", + "descriptionComplete": "Ai oprit fiecare inamic", + "descriptionFull": "Oprește fiecare inamic din ${LEVEL}", + "descriptionFullComplete": "Ai oprit fiecare inamic din ${LEVEL}", "name": "Zidul" }, "Uber Football Shutout": { @@ -303,108 +303,109 @@ "descriptionComplete": "Ai câștigat fără să-i lași pe inamici să înscrie", "descriptionFull": "Câștigă ${LEVEL} fără să-i lași pe inamici să înscrie", "descriptionFullComplete": "Ai câștigat ${LEVEL} fără să-i lași pe inamici să înscrie", - "name": "Shut-out ${LEVEL}" + "name": "Shut-out în ${LEVEL}" }, "Uber Football Victory": { - "description": "Câștigă jocul", - "descriptionComplete": "Ai câștigat jocul", - "descriptionFull": "Câștigă jocul din ${LEVEL}", - "descriptionFullComplete": "Ai câștigat jocul din ${LEVEL}", + "description": "Câștigă meciul", + "descriptionComplete": "Ai câștigat meciul", + "descriptionFull": "Câștigă meciul din ${LEVEL}", + "descriptionFullComplete": "Ai câștigat meciul din ${LEVEL}", "name": "Victorie în ${LEVEL}" }, "Uber Onslaught Victory": { - "description": "Înfrânge toate valurile", - "descriptionComplete": "Ai înfrânt toate valurile", - "descriptionFull": "Înfrânge toate valurile din ${LEVEL}", - "descriptionFullComplete": "Ai înfrânt toate valurile din ${LEVEL}", + "description": "Învinge în toate valurile", + "descriptionComplete": "Ai învins în toate valurile", + "descriptionFull": "Învinge în toate valurile din ${LEVEL}", + "descriptionFullComplete": "Ai învins în toate valurile din ${LEVEL}", "name": "Victorie în ${LEVEL}" }, "Uber Runaround Victory": { "description": "Completează toate valurile", "descriptionComplete": "Ai completat toate valurile", "descriptionFull": "Completează toate valurile din ${LEVEL}", - "descriptionFullComplete": "Ai terminat toate valurile din ${LEVEL}", + "descriptionFullComplete": "Ai completat toate valurile din ${LEVEL}", "name": "Victorie în ${LEVEL}" } }, - "achievementsRemainingText": "Realizări rămase:", + "achievementsRemainingText": "Realizări Rămase:", "achievementsText": "Realizări", "achievementsUnavailableForOldSeasonsText": "Scuze, dar detaliile realizărilor din sezoanele trecute sunt indisponibile.", "addGameWindow": { - "getMoreGamesText": "Ia mai multe jocuri...", + "getMoreGamesText": "Ia mai multe MiniJocuri...", "titleText": "Adaugă un joc" }, "allowText": "Permite", "alreadySignedInText": "Contul tău este deja conectat de pe un alt dispozitiv;\nte rog să schimbi conturile sau să închizi jocul de pe\nalte dispozitive și să încerci din nou.", - "apiVersionErrorText": "Nu se poate deschide moduluL ${NAME}; acela accesează versiunea api ${VERSION_USED}, pe când versiunea ${VERSION_REQUIRED} este nevoită.", + "apiVersionErrorText": "Nu se poate încărca modulul ${NAME}; acesta țintește versiunea API ${VERSION_USED}, iar versiunea ${VERSION_REQUIRED} nu îl mai suportă.", "audioSettingsWindow": { "headRelativeVRAudioInfoText": "(\"Auto\" activează asta doar când căștile sunt conectate)", "headRelativeVRAudioText": "Audio VR relativ capului", "musicVolumeText": "Volumul Muzicii", "soundVolumeText": "Volumul Sunetelor", - "soundtrackButtonText": "Coloană sonoră", - "soundtrackDescriptionText": "(selectează muzica care vrei să cânte în timpul jocului)", + "soundtrackButtonText": "Soundtrack Personalizat", + "soundtrackDescriptionText": "(selectează melodiile care vrei să cânte în timpul jocului)", "titleText": "Audio" }, "autoText": "Automat", "backText": "Înapoi", "banThisPlayerText": "Interzice Accesul Acestui Jucător", - "bestOfFinalText": "Finala cel-mai-bun-din-${COUNT}", - "bestOfSeriesText": "Seriile cel mai bun din ${COUNT}:", + "bestOfFinalText": "Finala Primul-La-${COUNT}", + "bestOfSeriesText": "Seriile Primul-La-${COUNT}:", + "bestOfUseFirstToInstead": 1, "bestRankText": "Cea mai bună poziție a ta este: #${RANK}", - "bestRatingText": "Cel mai bun rating al tău este ${RATING}", + "bestRatingText": "Cea mai bună notă a ta este ${RATING}", "bombBoldText": "BOMBĂ", "bombText": "Bombă", "boostText": "Crește-ți", - "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} este configurat în aplicație", + "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} este configurat în aplicația în sine.", "buttonText": "buton", - "canWeDebugText": "Ai vrea ca BombSquad să trimită automat bug-uri,\ncrash-uri și informații de bază programatorului jocului?\n\nAceste informații nu conțin date personale ci doar\najută la îmbunătățirea jocului.", + "canWeDebugText": "Ai vrea ca BombSquad să trimită automat bug-uri,\ncrash-uri și informații de bază programatorului jocului?\n\nAceste informații nu conțin date personale, ci doar\najută la îmbunătățirea jocului.", "cancelText": "Anulează", "cantConfigureDeviceText": "Scuze, dar ${DEVICE} nu este configurabil.", "challengeEndedText": "Acest concurs s-a terminat.", - "chatMuteText": "Dezactiveaza chat-ul", - "chatMutedText": "Chat Dezactivat", - "chatUnMuteText": "Reactiveaza chat-ul", + "chatMuteText": "Amuțește Chat-ul", + "chatMutedText": "Chat-ul Este Amuțit", + "chatUnMuteText": "Dezamuțește Chat-ul", "choosingPlayerText": "", "completeThisLevelToProceedText": "Trebuie să completezi\nacest nivel pentru a continua!", - "completionBonusText": "Bonus de completare", + "completionBonusText": "Bonus De Completare", "configControllersWindow": { - "configureControllersText": "Configurează controllere", - "configureKeyboard2Text": "Configurează tastatura pentru P2", - "configureKeyboardText": "Configurează tastatura", - "configureMobileText": "Dispozitive mobile ca și controllere", - "configureTouchText": "Configurează Touchscreen", + "configureControllersText": "Configurează Controllere", + "configureKeyboard2Text": "Configurează Tastatura Pentru P2", + "configureKeyboardText": "Configurează Tastatura", + "configureMobileText": "Dispozitive Mobile Drept Controllere", + "configureTouchText": "Configurează Touchscreen-ul", "ps3Text": "Controllere de PS3", "titleText": "Controllere", "wiimotesText": "Controllere pentru Wii", - "xbox360Text": "Controllere de X-Box 360" + "xbox360Text": "Controllere de Xbox 360" }, "configGamepadSelectWindow": { - "androidNoteText": "Notă: suportul pentru controllere poate varia de la versiunea android și de la dispozitiv.", + "androidNoteText": "Notă: suportul pentru controllere poate varia de la un dispozitiv la altul și de la o versiune Android la alta.", "pressAnyButtonText": "Apasă pe orice buton de pe controllerul\npe care ai vrea să-l configurezi...", - "titleText": "Configurează controllere" + "titleText": "Configurează Controllere" }, "configGamepadWindow": { - "advancedText": "Avansat", - "advancedTitleText": "Setări controller avansate", - "analogStickDeadZoneDescriptionText": "(Ridică valoarea acestuia dacă iți \"alunecă\" caracterul când dai drumul la \"stick\")", + "advancedText": "Avansate", + "advancedTitleText": "Setări Avansate Pentru Controller", + "analogStickDeadZoneDescriptionText": "(Ridică această valoare dacă îți \"alunecă\" caracterul când iei mâna de pe \"stick\")", "analogStickDeadZoneText": "Zona-Moartă a Stick-ului Analog", "appliesToAllText": "(se aplică la toate controllerele de acest fel)", "autoRecalibrateDescriptionText": "(activează asta dacă caracterul tău nu se mișcă la viteza maximă)", "autoRecalibrateText": "Recalibrare Automată a Stick-ului Analog", "axisText": "axă", "clearText": "șterge", - "dpadText": "D-pad", - "extraStartButtonText": "Buton Start Secundar", + "dpadText": "D-Pad", + "extraStartButtonText": "Buton De Start Secundar", "ifNothingHappensTryAnalogText": "Dacă nu se întâmplă nimic, încearcă să folosești stick-ul analog.", - "ifNothingHappensTryDpadText": "Dacă nu se întâmplă nimic, încearcă D-pad-ul.", - "ignoreCompletelyDescriptionText": "(fă în așa fel încât acest controller sa nu afecteze jocul sau meniul)", - "ignoreCompletelyText": "Ignoră-l Complet", + "ifNothingHappensTryDpadText": "Dacă nu se întâmplă nimic, încearcă D-Pad-ul.", + "ignoreCompletelyDescriptionText": "(fă în așa fel încât acest controller să nu afecteze jocul sau meniul)", + "ignoreCompletelyText": "Ignorare Completă", "ignoredButton1Text": "Buton Ignorat 1", "ignoredButton2Text": "Buton Ignorat 2", "ignoredButton3Text": "Buton Ignorat 3", "ignoredButton4Text": "Buton Ignorat 4", - "ignoredButtonDescriptionText": "(folosește asta pentru ca butoanele 'home' sau 'sync' să fie ignorate în timpul jocului)", + "ignoredButtonDescriptionText": "(folosește asta pentru ignorarea butoanelor 'home' sau 'sync' în timpul jocului)", "pressAnyAnalogTriggerText": "Apasă orice trigger analog...", "pressAnyButtonOrDpadText": "Apasă orice buton sau D-Pad-ul", "pressAnyButtonText": "Apasă orice buton...", @@ -422,26 +423,26 @@ "startButtonActivatesDefaultText": "Butonul de Start Activează Widget-ul Implicit", "titleText": "Setup Pentru Controller", "twoInOneSetupText": "Setup Pentru Un Controller 2-în-1", - "uiOnlyDescriptionText": "(nu-i permite acestui controller să intre în joc)", + "uiOnlyDescriptionText": "(permite-i acestui controller doar navigarea prin meniuri)", "uiOnlyText": "Limitează la Folosirea Meniului", - "unassignedButtonsRunText": "Toate Butoanele Neatribuite Rulează", - "unsetText": "<șterge>", - "vrReorientButtonText": "Buton de Reorientare VR" + "unassignedButtonsRunText": "Rularea Tuturor Butoanelor Neatribuite", + "unsetText": "", + "vrReorientButtonText": "Buton De Reorientare VR" }, "configKeyboardWindow": { "configuringText": "${DEVICE} se configurează", - "keyboard2NoteText": "Notă: multe tastaturi pot inregistra doar câteva apăsări\nde-odată, deci avănd altă tastatură ar merge mai bine\ndacă există un al doilea jucător.\nȚine minte că va trebui să aplici controale diferite celor doi jucători,\nchiar şi în cazul de mai sus." + "keyboard2NoteText": "Notă: majoritatea tastaturilor pot înregistra doar câteva apăsări\nde-odată, deci având o altă tastatură ar merge mai bine\ndacă există un al doilea jucător.\nȚine minte faptul că tot va trebui să atribui controale diferite \ncelor doi jucători, chiar şi în cazul de mai sus." }, "configTouchscreenWindow": { - "actionControlScaleText": "Dimensiune Controluri Acțiuni", + "actionControlScaleText": "Dimensiunea Butoanelor De Acțiuni", "actionsText": "Acțiuni", "buttonsText": "butoane", - "dragControlsText": "< trage de controluri pentru a le repoziționa >", + "dragControlsText": "< trage de controale pentru a le repoziționa >", "joystickText": "joystick", - "movementControlScaleText": "Dimensiune Control Mișcare", + "movementControlScaleText": "Dimensiunea Săgeților De Mișcare", "movementText": "Mișcare", "resetText": "Resetare", - "swipeControlsHiddenText": "Ascunde Iconițele De Glisare", + "swipeControlsHiddenText": "Ascunde Săgețile", "swipeInfoText": "Durează ceva timp până te înveți cu controalele de tip 'Glisare'\ndar o să-ți fie mult mai ușor să te joci fără să te uiți la controale.", "swipeText": "glisare", "titleText": "Configurează Touchscreen-ul" @@ -451,29 +452,29 @@ "connectMobileDevicesWindow": { "amazonText": "Amazon Appstore", "appStoreText": "App Store", - "bestResultsText": "Pentru cele mai bune rezultate vei avea nevoie de o rețea Wi-Fi \nfără lag. Poți să reduci lag-ul prin oprirea Wi-Fi-ului de pe alte telefoane,\nprin jucarea lângă router, sau prin conectarea \"jocului-mamă\" direct la rețea\nprin Ethernet.", - "explanationText": "Pentru a folosi un telefon sau o tabletă drept controller, instalează\naplicația \"${REMOTE_APP_NAME}\" pe acestea. Orice dispozitiv se poate conecta la\nun joc ${APP_NAME} prin Wi-Fi, şi este gratis!", + "bestResultsText": "Pentru cele mai bune rezultate vei avea nevoie de o rețea Wi-Fi \nfără lag. Poți să reduci lag-ul prin oprirea Wi-Fi-ului de pe alte dispozitive,\nprin jucarea lângă router, sau prin conectarea directă la \"jocul-mamă\"\ncu ajutorul Ethernet-ului.", + "explanationText": "Pentru a folosi un telefon sau o tabletă drept controller, instalează\naplicația \"${REMOTE_APP_NAME}\" pe acestea. Orice dispozitiv se poate conecta la\nun joc ${APP_NAME} prin Wi-Fi, şi este gratuită!", "forAndroidText": "pentru Android:", "forIOSText": "Pentru iOS:", - "getItForText": "Ia-ți aplicația ${REMOTE_APP_NAME} pentru iOS din Apple App Store,\npentru Android din Google Play Store sau de pe Amazon Appstore", + "getItForText": "Instalează-ți aplicația ${REMOTE_APP_NAME} pentru iOS din Apple App Store,\npentru Android din Google Play Store sau de pe Amazon Appstore", "googlePlayText": "Google Play", - "titleText": "Folosirea Dispozitivelor Mobile drept Controllere:" + "titleText": "Folosirea Dispozitivelor Mobile Drept Controllere:" }, "continuePurchaseText": "Continui pentru ${PRICE}?", - "continueText": "Continui", + "continueText": "Continuă", "controlsText": "Controale", "coopSelectWindow": { - "activenessAllTimeInfoText": "Acesta nu se aplică clasamentelor din totdeauna.", - "activenessInfoText": "Acest multiplicator crește în zilele în\ncare joci și scade în cele in care nu joci.", + "activenessAllTimeInfoText": "Asta nu se aplică clasamentelor din totdeauna.", + "activenessInfoText": "Acest multiplicator crește în zilele în\ncare joci și scade în cele în care nu joci.", "activityText": "Activitate", "campaignText": "Campanie", - "challengesInfoText": "Primeşte premii pentru completarea minijocurilor.\n\nPremiile şi dificultatea nivelelor cresc\nde fiecare dată când un Challenge este făcut\nşi scade când unul expiră sau este abandonat.", + "challengesInfoText": "Câștigă premii pentru completarea minijocurilor.\n\nPremiile şi dificultatea nivelelor cresc\nde fiecare dată când un challenge este făcut\nşi scade când unul expiră sau este abandonat.", "challengesText": "Provocări", "currentBestText": "Cel mai bun de până acum", - "customText": "Particularizare", - "entryFeeText": "Intrarea", + "customText": "Particularizate", + "entryFeeText": "Intrare", "forfeitConfirmText": "Abandonezi acest challenge?", - "forfeitNotAllowedYetText": "Acest concurs nu poate fi abandonat chiar acum.", + "forfeitNotAllowedYetText": "Acest challenge nu poate fi abandonat chiar acum.", "forfeitText": "Abandonează", "multipliersText": "Multiplicatori", "nextChallengeText": "Challenge-ul Următor", @@ -483,40 +484,40 @@ "pointsText": "Puncte", "powerRankingFinishedSeasonUnrankedText": "(ai terminat sezonul fără rank)", "powerRankingNotInTopText": "(nu eşti în top ${NUMBER})", - "powerRankingPointsEqualsText": "= ${NUMBER} (de) puncte", - "powerRankingPointsMultText": "(x ${NUMBER} puncte)", - "powerRankingPointsText": "${NUMBER} puncte", - "powerRankingPointsToRankedText": "(${CURRENT} din ${REMAINING} puncte)", - "powerRankingText": "Rank-ul Tău de Putere", + "powerRankingPointsEqualsText": "= ${NUMBER} pte", + "powerRankingPointsMultText": "(x ${NUMBER} pte)", + "powerRankingPointsText": "${NUMBER} pte", + "powerRankingPointsToRankedText": "(${CURRENT} din ${REMAINING} pte)", + "powerRankingText": "Rank-ul tău de putere", "prizesText": "Premii", "proMultInfoText": "Jucătorii cu upgrade-ul ${PRO} \nprimesc aici un bonus de ${PERCENT}% la puncte.", "seeMoreText": "Mai multe...", "skipWaitText": "Treci fără să mai aștepți", "timeRemainingText": "Timp Rămas", - "toRankedText": "Către Rank", + "toRankedText": "Pentru Rankare", "totalText": "total", - "tournamentInfoText": "Întrece-te pentru scoruri mari\ncu alți jucători din liga ta.\n\nPremiile sunt dăruite jucătorilor cu\nscoruri din top când expiră concursul.", + "tournamentInfoText": "Întrece-te pentru scoruri mari\ncu alți jucători din liga ta.\n\nPremiile sunt dăruite jucătorilor cu\nscoruri din lista de top când expiră concursul.", "welcome1Text": "Bine ai venit în ${LEAGUE}. Poți să-ți măreşti\nrankul prin adunarea medaliilor, câştigarea trofeelor\nîn concursuri şi prin rankul de 3 stele în jocuri.", "welcome2Text": "Mai poți primi bilete şi prin alte activități de acelaşi fel.\nBiletele se pot folosi pentru a debloca charactere, hărți,\nmini-jocuri, pentru a intra în concursurii, şi multe altele.", "yourPowerRankingText": "Rankul tău de Putere:" }, - "copyOfText": "Copie ${NAME}", + "copyOfText": "Copie de ${NAME}", "copyText": "Copiază", - "createEditPlayerText": "", + "createEditPlayerText": "", "createText": "Creează", "creditsWindow": { "additionalAudioArtIdeasText": "Sunet Adițional, Artă, și Idei de ${NAME}", "additionalMusicFromText": "Muzică Adițională de ${NAME}", - "allMyFamilyText": "Toți prietenii și familia care m-au ajutat să testez jocul", + "allMyFamilyText": "Familiei mele și tuturor prietenilor mei care m-au ajutat să testez jocul", "codingGraphicsAudioText": "Cod, Grafice, şi Audio de ${NAME}", "languageTranslationsText": "Traduceri:", "legalText": "Legal:", - "publicDomainMusicViaText": "Muzica din domeniul Public ${NAME}", - "softwareBasedOnText": "Acest software este bazat în partea de lucru al lui ${NAME}", + "publicDomainMusicViaText": "Muzică din domeniul Public ${NAME}", + "softwareBasedOnText": "Acest software este bazat în partea de lucru a lui ${NAME}", "songCreditText": "${TITLE} Performat de ${PERFORMER}\nCompus de ${COMPOSER}, Aranjat de ${ARRANGER}, Publicat de ${PUBLISHER},\ncurtoazie din ${SOURCE}", "soundAndMusicText": "Sunete & Muzică:", "soundsText": "Sunete (${SOURCE}):", - "specialThanksText": "Mulțumiri speciale:", + "specialThanksText": "Mulțumiri Speciale:", "thanksEspeciallyToText": "Mulțumiri deosebite: ${NAME}", "titleText": "Credite ${APP_NAME}", "whoeverInventedCoffeeText": "Celui care a inventat cafeaua" @@ -525,32 +526,32 @@ "customizeText": "Particularizează...", "deathsTallyText": "${COUNT} vieți pierdute", "deathsText": "Vieți pierdute", - "debugText": "Eliminare de buguri", + "debugText": "Debug", "debugWindow": { "reloadBenchmarkBestResultsText": "Notă: Este recomandat ca tu să te duci la Setări->Grafici->Texturi și să le dai pe 'Înalte' când testezi asta.", "runCPUBenchmarkText": "Rulează test CPU", "runGPUBenchmarkText": "Rulează test GPU", - "runMediaReloadBenchmarkText": "Pornește test de Încărcare Media", + "runMediaReloadBenchmarkText": "Pornește Test De Reîncărcare Media", "runStressTestText": "Pornește testul de stres", "stressTestPlayerCountText": "Număr de Jucători", "stressTestPlaylistDescriptionText": "Lista de Jocuri pentru Testele de Stres", - "stressTestPlaylistNameText": "Numele listei de jocuri", + "stressTestPlaylistNameText": "Numele Listei de Jocuri", "stressTestPlaylistTypeText": "Tipul Listei de Jocuri", - "stressTestRoundDurationText": "Durata rundei", + "stressTestRoundDurationText": "Durata Rundei", "stressTestTitleText": "Test de Stres", - "titleText": "Teste de Stres şi repere", + "titleText": "Teste de Stres şi Repere", "totalReloadTimeText": "Timp total de reîncărcare: ${TIME} (vezi jurnalul de activități pentru detalii)" }, - "defaultGameListNameText": "Lista de jocuri de ${PLAYMODE} normală", - "defaultNewGameListNameText": "Lista mea de jocuri de ${PLAYMODE}", + "defaultGameListNameText": "Lista de Jocuri de \"${PLAYMODE}\" Implicită", + "defaultNewGameListNameText": "Lista mea de jocuri de \"${PLAYMODE}\"", "deleteText": "Șterge", "demoText": "Demo", "denyText": "Refuză", - "desktopResText": "Rezoluție desktop", + "desktopResText": "Rezoluție Desktop", "difficultyEasyText": "Ușor", "difficultyHardOnlyText": "Numai pe \"Greu\"", "difficultyHardText": "Greu", - "difficultyHardUnlockOnlyText": "Acest nivel poate fi deblocat numai pe \"Greu\".\nCrezi că poți s-o faci!?!?!", + "difficultyHardUnlockOnlyText": "Acest nivel poate fi deblocat numai pe modul \"Greu\".\nTe crezi în stare!?!?!", "directBrowserToURLText": "Te rog să direcționezi un browser web la următorul URL:", "disableRemoteAppConnectionsText": "Dezactivează conexiunile de pe Remote-App", "disableXInputDescriptionText": "Permite mai mult de 4 controlere dar nu va merge chiar așa de bine.", @@ -560,7 +561,7 @@ "duplicateText": "Multiplică", "editGameListWindow": { "addGameText": "Adaugă\nun joc", - "cantOverwriteDefaultText": "Nu poți înlocui lista de jocuri normală!", + "cantOverwriteDefaultText": "Nu poți modifica lista de jocuri implicită!", "cantSaveAlreadyExistsText": "O listă de jocuri cu acelaşi nume deja există!", "cantSaveEmptyListText": "Nu poți salva o listă goală!", "editGameText": "Editează\nJocul", @@ -572,7 +573,7 @@ }, "editProfileWindow": { "accountProfileInfoText": "Acest profil special are nume\nşi o imagine bazată pe contul tău.\n\n${ICONS}\n\nCreează profile personalizate\npentru a folosi nume sau iconițe personalizate.", - "accountProfileText": "(profil al contului)", + "accountProfileText": "(profilul contului)", "availableText": "Numele \"${NAME}\" este utilizabil.", "changesNotAffectText": "Notă: schimbările nu vor afecta caracterele care sunt deja în joc", "characterText": "caracter", @@ -584,7 +585,7 @@ "globalProfileText": "(profil global)", "highlightText": "accent", "iconText": "iconiță", - "localProfileInfoText": "Profilurile locale nu au iconițe şi numele lor nu sunt \ngarantate să fie speciale. Upgradează-ți profilul\npentru a rezerva un nume special şi să adaugi o iconiță.", + "localProfileInfoText": "Profilurile locale nu au iconițe şi numele lor nu sunt \ngarantate să fie speciale. Upgradează-ți profilul\npentru a-ți rezerva un nume special şi pentru a adăuga o iconiță la acesta.", "localProfileText": "(profil local)", "nameDescriptionText": "Numele Jucătorului", "nameText": "Nume", @@ -593,15 +594,15 @@ "titleNewText": "Profil nou", "unavailableText": "Numele \"${NAME}\" nu este disponibil; încearcă alt nume.", "upgradeProfileInfoText": "Acest lucru îți va rezerva numele de jucător\nşi te va lăsa să introduci o iconiță pentru acesta.", - "upgradeToGlobalProfileText": "Îmbunătățește-l la un Profil Global" + "upgradeToGlobalProfileText": "Transformă-l în Profil Global" }, "editSoundtrackWindow": { - "cantDeleteDefaultText": "Nu poți şterge soundtrackul normal.", - "cantEditDefaultText": "Nu poți edita soundtrackul normal. Duplică-l sau creează unul nou.", - "cantOverwriteDefaultText": "Nu poți înlocui soundtrackul normal", - "cantSaveAlreadyExistsText": "Un soundtrack cu acelaşi nume deja există!", - "defaultGameMusicText": "", - "defaultSoundtrackNameText": "Soundtrack-ul Normal", + "cantDeleteDefaultText": "Nu poți şterge soundtrack-ul implicit.", + "cantEditDefaultText": "Nu poți edita soundtrack-ul implicit. Duplică-l sau creează altul nou.", + "cantOverwriteDefaultText": "Nu poți înlocui soundtrack-ul implicit", + "cantSaveAlreadyExistsText": "Un soundtrack cu acelaşi nume există deja!", + "defaultGameMusicText": "", + "defaultSoundtrackNameText": "Soundtrack-ul Implicit", "deleteConfirmText": "Ştergi Soundtrack-ul:\n\n'${NAME}'?", "deleteText": "Şterge\nSoundtrack-ul", "duplicateText": "Duplică\nSoundtrack-ul", @@ -617,10 +618,10 @@ "selectASourceText": "Sursa Muzicii", "testText": "testează", "titleText": "Soundtrack-uri", - "useDefaultGameMusicText": "Muzica Normală din Joc", + "useDefaultGameMusicText": "Folosește Muzica Implicită", "useITunesPlaylistText": "Lista de Redare a Aplicației Muzicale", - "useMusicFileText": "Fişier de Muzică (mp3, etc)", - "useMusicFolderText": "Dosar cu Fişiere de Muzică" + "useMusicFileText": "Fişier Audio (MP3, etc)", + "useMusicFolderText": "Dosar cu Fişiere Audio" }, "editText": "Editează", "endText": "Sfârșește", @@ -632,22 +633,22 @@ "errorText": "Eroare", "errorUnknownText": "eroare necunoscută", "exitGameText": "Ieși din ${APP_NAME}?", - "exportSuccessText": "'${NAME}' exportat cu succes.", + "exportSuccessText": "'${NAME}' a fost exportat cu succes.", "externalStorageText": "Memorie Externă", "failText": "Eșec", - "fatalErrorText": "Oh nu; ceva lipseşte sau este stricat.\nTe rog încearcă să reinstalezi aplicația sau\ncontactează E-Mail-ul ${EMAIL} pentru ajutor.", + "fatalErrorText": "Oh nu; ceva lipseşte sau este stricat.\nTe rog încearcă să reinstalezi aplicația sau\ncontactează adresa de E-mail ${EMAIL} pentru ajutor.", "fileSelectorWindow": { "titleFileFolderText": "Selectează un Fișier sau un Dosar", "titleFileText": "Selectează un fișier", "titleFolderText": "Selectează un Dosar", "useThisFolderButtonText": "Folosește Acest Dosar" }, - "filterText": "Filtru", + "filterText": "Caută", "finalScoreText": "Scor Final", "finalScoresText": "Scoruri Finale", "finalTimeText": "Timp Final", "finishingInstallText": "Se termină de instalat; un moment...", - "fireTVRemoteWarningText": "* Pentru o experiență mai bună,\nfolosiți Controllere sau instalați\naplicația '${REMOTE_APP_NAME}' pe telefon\nsau tabletă.", + "fireTVRemoteWarningText": "* Pentru o experiență mai bună,\nfolosiți Controllere sau instalați\naplicația '${REMOTE_APP_NAME}' pe \ntelefoane sau pe tablete.", "firstToFinalText": "Finala Primul-la-${COUNT}", "firstToSeriesText": "Seriile Primul-la-${COUNT}", "fiveKillText": "Penta-omor!!!", @@ -658,17 +659,17 @@ "gameCircleText": "GameCircle", "gameLeadersText": "Liderii Jocului ${COUNT}", "gameListWindow": { - "cantDeleteDefaultText": "Nu poți şterge lista de jocuri normală.", + "cantDeleteDefaultText": "Nu poți şterge lista de jocuri implicită.", "cantEditDefaultText": "Nu poți edita lista de jocuri normală! Duplic-o sau creează una nouă.", - "cantShareDefaultText": "Nu poti trimite mai departe playlist-ul normal", + "cantShareDefaultText": "Nu poti trimite mai departe lista de jocuri implicită.", "deleteConfirmText": "Ştergi \"${LIST}\"?", "deleteText": "Şterge\nLista de Jocuri", "duplicateText": "Duplică\nLista de Jocuri", "editText": "Editează\nLista de Jocuri", "newText": "Listă de Jocuri\nNouă", "showTutorialText": "Arată Tutorialul", - "shuffleGameOrderText": "Hărți Aleatorii", - "titleText": "Particularizează Listele de Jocuri de tip ${TYPE}" + "shuffleGameOrderText": "Jocuri Aleatorii", + "titleText": "Particularizează Listele de Jocuri de tip \"${TYPE}\"" }, "gameSettingsWindow": { "addGameText": "Adaugă un Joc" @@ -676,13 +677,13 @@ "gamesToText": "${WINCOUNT} jocuri la ${LOSECOUNT}", "gatherWindow": { "aboutDescriptionLocalMultiplayerExtraText": "Ține minte: orice dispozitiv dintr-o petrecere poate avea\nmai mult de un jucător dacă sunt destule controllere.", - "aboutDescriptionText": "Folosește aceste file pentru a asambla o petrecere.\n\nPetrecerile te lasă să joci jocuri și turnee împreună\ncu prietenii tăi, folosind mai multe dispozitive.\n\nFolosește butonul ${PARTY} din dreapta-sus pentru a\nvorbi și interacționa cu grupul.\n(dacă folosești un controller, folosește ${BUTTON} cât timp ești într-un meniu)", - "aboutText": "Despre", - "addressFetchErrorText": "", + "aboutDescriptionText": "Folosește aceste file pentru a asambla un grup.\n\nGrupurile te lasă să joci jocuri și turnee împreună\ncu prietenii tăi, cu ajutorul mai multor dispozitive.\n\nFolosește butonul ${PARTY} din colțul din dreapta-sus pentru a\nvorbi și interacționa cu grupul.\n(dacă folosești un controller, folosește ${BUTTON} cât timp ești într-un meniu)", + "aboutText": "Ajutor", + "addressFetchErrorText": "", "appInviteInfoText": "Invită-ți prietenii să încerce BombSquad și\nvor primii ${COUNT} bilete gratis. Tu vei primi\n${YOU_COUNT} pentru fiecare care o face.", "appInviteMessageText": "${NAME} ți-a trimis ${COUNT} de bilete în ${APP_NAME}", - "appInviteSendACodeText": "Trimite-i Un Cod", - "appInviteTitleText": "Invitație Pentru A Încerca ${APP_NAME}", + "appInviteSendACodeText": "Trimite-le Un Cod", + "appInviteTitleText": "Invitație Pentru a Încerca ${APP_NAME}", "bluetoothAndroidSupportText": "(funcționează cu orice dispozitiv Android care suportă Bluetooth)", "bluetoothDescriptionText": "Ține un joc/intră într-un joc folosind Bluetooth:", "bluetoothHostText": "Ține un joc pe Bluetooth", @@ -692,40 +693,40 @@ "copyCodeConfirmText": "Codul a fost copiat în clipboard.", "copyCodeText": "Copiază Codul", "dedicatedServerInfoText": "Pentru cele mai bune rezultate, configurează un server dedicat. Consultă bombsquadgame.com/server pentru a afla cum.", - "disconnectClientsText": "Aceasta va deconecta ${COUNT} jucător(i) din\ngrupul tău curent. Ești sigur?", - "earnTicketsForRecommendingAmountText": "Prietenii tăi vor primii ${COUNT} de bilete dacă vor încerca jocul \n(iar tu vei primi ${YOU_COUNT} pentru fiecare care încearcă)", + "disconnectClientsText": "Această opțiune va deconecta ${COUNT} jucător(i) din\njocul tău curent. Ești sigur?", + "earnTicketsForRecommendingAmountText": "Prietenii tăi vor primi ${COUNT} de bilete dacă vor încerca jocul \n(iar tu vei primi ${YOU_COUNT} pentru fiecare care încearcă)", "earnTicketsForRecommendingText": "Împărtăşeşte jocul\npentru bilete gratuite...", "emailItText": "Dă-l prin Email", "favoritesSaveText": "Salvează ca favorit", "favoritesText": "Favorite", - "freeCloudServerAvailableMinutesText": "Următorul server cloud gratuit va fi disponibil în ${MINUTES} minute.", - "freeCloudServerAvailableNowText": "Server cloud gratuit disponibil!", - "freeCloudServerNotAvailableText": "Nu sunt disponibile servere cloud gratuite.", + "freeCloudServerAvailableMinutesText": "Următorul server gratuit va fi disponibil în ${MINUTES} minute.", + "freeCloudServerAvailableNowText": "Server gratuit disponibil!", + "freeCloudServerNotAvailableText": "Nu sunt disponibile servere gratuite.", "friendHasSentPromoCodeText": "${COUNT} Bilete pe ${APP_NAME} de la ${NAME}", "friendPromoCodeAwardText": "Vei primi ${COUNT} de bilete de fiecare dată când este folosit.", - "friendPromoCodeExpireText": "Codul va expira în ${EXPIRE_HOURS} de ore şi merge doar pentru jucătorii noi.", + "friendPromoCodeExpireText": "Codul va expira în ${EXPIRE_HOURS} de ore şi este valabil doar pentru jucătorii noi.", "friendPromoCodeInstructionsText": "Pentru a-l utiliza, deschide ${APP_NAME} și accesează „Setări-> Avansat-> Introdu codul”.\nConsultă bombsquadgame.com pentru linkuri de descărcare pentru toate platformele acceptate.", "friendPromoCodeRedeemLongText": "Poate fi introdus pentru ${COUNT} de bilete gratuite de către un maxim de ${MAX_USES} de persoane.", "friendPromoCodeRedeemShortText": "Poate fi introdus în joc pentru ${COUNT} de bilete.", "friendPromoCodeWhereToEnterText": "(în „Setări-> Avansat-> Introdu codul”)", - "getFriendInviteCodeText": "Cere un Cod de Invitare Pentru Prieteni", + "getFriendInviteCodeText": "Cere un Cod pentru Prieteni", "googlePlayDescriptionText": "Invită jucători Google Play la petrecerea ta:", "googlePlayInviteText": "Invită", "googlePlayReInviteText": "Sunt ${COUNT} jucători Google Play în grupul tău care vor\nfi deconectați dacă faci o altă invitație. Include-i și\npe ei în noua invitație pentru a-i avea înapoi la petrecere.", "googlePlaySeeInvitesText": "Vezi Invitații", "googlePlayText": "Google Play", - "googlePlayVersionOnlyText": "(Numai pentru versiunea Android / Google Play)", - "hostPublicPartyDescriptionText": "Creează Un Joc Public", + "googlePlayVersionOnlyText": "(Numai pentru Google Play / Android)", + "hostPublicPartyDescriptionText": "Creează Un Server Public", "hostingUnavailableText": "Creeare Indisponibilă", - "inDevelopmentWarningText": "Notă:\n\nJocul peste rețea este încă o opțiune în dezvoltare.\nDeocamdată se recomandă ca toți jucătorii să fie pe\naceeași rețea Wi-Fi.", + "inDevelopmentWarningText": "Notă:\n\nJocul peste rețea este încă o opțiune în dezvoltare.\nDeocamdată este recomandat ca toți jucătorii să fie pe\naceeași rețea Wi-Fi.", "internetText": "Internet", "inviteAFriendText": "Prietenii tăi nu au jocul? Invită-i să-l\nîncerce şi vor primii ${COUNT} de bilete gratis.", "inviteFriendsText": "Invită-ți Prietenii", - "joinPublicPartyDescriptionText": "Alăturați-vă unui joc public", - "localNetworkDescriptionText": "Alătură-te unui joc din apropiere (LAN, Bluetooth etc.)", + "joinPublicPartyDescriptionText": "Alătură-te Unui Server Public", + "localNetworkDescriptionText": "Alătură-te unui grup din apropiere (LAN, Bluetooth etc.)", "localNetworkText": "Rețea Locală", - "makePartyPrivateText": "Fă-mi Jocul Privat", - "makePartyPublicText": "Fă-mi Jocul Public", + "makePartyPrivateText": "Închide-mi Server-ul", + "makePartyPublicText": "Fă-mi Server-ul Public", "manualAddressText": "Adresa", "manualConnectText": "Conectează-te", "manualDescriptionText": "Intră într-un joc cu adresa:", @@ -733,30 +734,30 @@ "manualJoinableFromInternetText": "Se pot conecta alții de pe internet la jocul tău?:", "manualJoinableNoWithAsteriskText": "NU*", "manualJoinableYesText": "DA", - "manualRouterForwardingText": "*pentru a repara asta, configurează-ți router-ul ca acesta să dea forward la portul UDP ${PORT} către adresa ta locală", + "manualRouterForwardingText": "*pentru a repara asta, configurează-ți router-ul încât acesta să dea forward la portul UDP ${PORT} către adresa ta locală", "manualText": "Manual", "manualYourAddressFromInternetText": "Adresa ta de pe internet:", "manualYourLocalAddressText": "Adresa ta locală:", "nearbyText": "Din apropiere", "noConnectionText": "", "otherVersionsText": "(alte versiuni)", - "partyCodeText": "Codul Jocului", + "partyCodeText": "Codul Server-ului", "partyInviteAcceptText": "Acceptă", "partyInviteDeclineText": "Refuză", "partyInviteGooglePlayExtraText": "(vezi tab-ul 'Google Play' din fereastra 'Adunare')", "partyInviteIgnoreText": "Ignoră", "partyInviteText": "${NAME} te-a invitat\nsă intri în grupul lui/ei!", "partyNameText": "Numele Server-ului", - "partyServerRunningText": "Server-ul tău de joc este activ.", - "partySizeText": "nr. de locuri", + "partyServerRunningText": "Server-ul tău privat este activ.", + "partySizeText": "Jucători", "partyStatusCheckingText": "Se verifică starea...", "partyStatusJoinableText": "Server-ul tău este acum accesibil de pe internet", "partyStatusNoConnectionText": "nu se poate conecta la server", "partyStatusNotJoinableText": "nimeni de pe internet nu poate intra pe server-ul tău", "partyStatusNotPublicText": "server-ul tău nu este public", - "pingText": "latența", + "pingText": "Ping", "portText": "Port", - "privatePartyCloudDescriptionText": "Jocurile private rulează pe servere cloud dedicate; nu este necesară configurarea router-ului.", + "privatePartyCloudDescriptionText": "Serverele private rulează pe servere cloud dedicate; nu este necesară configurarea router-ului.", "privatePartyHostText": "Creează un Server Privat", "privatePartyJoinText": "Alătură-te unui Server Privat", "privateText": "Privat", @@ -764,15 +765,15 @@ "publicText": "Public", "requestingAPromoCodeText": "Se obține codul...", "sendDirectInvitesText": "Trimite Invitații Directe", - "shareThisCodeWithFriendsText": "Împărtăşeşte codul ăsta cu prietenii:", - "showMyAddressText": "Afișează Adresa Mea", + "shareThisCodeWithFriendsText": "Trimite-le prietenilor tăi acest cod:", + "showMyAddressText": "Afișează-mi Adresa", "startHostingPaidText": "Creează Acum Pentru ${COST}", - "startHostingText": "Creează", - "startStopHostingMinutesText": "Poți creea și opri servere gratis pentru următoarele ${MINUTES} minute.", - "stopHostingText": "Oprește Server-ul", + "startHostingText": "Creează Server", + "startStopHostingMinutesText": "Poți crea și închide servere gratis pentru următoarele ${MINUTES} minute.", + "stopHostingText": "Închide Server-ul", "titleText": "Adunare", "wifiDirectDescriptionBottomText": "Dacă toate dispozitivele au un panou 'Wi-Fi Direct', ar trebui să poată să îl folosească să\nse găsească și să se conecteze unii la alții. Când toate dispozitivele sunt conectate se pot\nforma grupuri, aici, folosind tab-ul 'Rețea locală', ca și când ați fi pe aceiași rețea Wi-Fi.\n\nPentru cele mai bune rezultate, host-ul Wi-Fi Direct ar trebui să fie și host-ul server-ului ${APP_NAME}.", - "wifiDirectDescriptionTopText": "Funcția de Wi-Fi direct se poate folosi la conectarea dispozitivelor Android fără\na folosi o rețea Wi-Fi. Aceasta funcționează cel mai bine de la Android 4.2 în sus.\n\nPentru a folosi funcția de Wi-Fi direct, deschide setările Wi-Fi și caută 'Wi-Fi Direct' în meniu.", + "wifiDirectDescriptionTopText": "Funcția de Wi-Fi direct se poate folosi la conectarea dispozitivelor Android fără\na folosi o rețea Wi-Fi. Aceasta funcționează cel mai bine de la Android 4.2 în sus.\n\nPentru a folosi funcția de Wi-Fi direct, deschide setările Wi-Fi-ului și caută 'Wi-Fi Direct' în meniu.", "wifiDirectOpenWiFiSettingsText": "Deschide setările Wi-Fi", "wifiDirectText": "Wi-Fi Direct", "worksBetweenAllPlatformsText": "(funcționează pe toate platformele)", @@ -781,11 +782,11 @@ }, "getTicketsWindow": { "freeText": "GRATIS!", - "freeTicketsText": "Bilete Gratis", + "freeTicketsText": "Bilete Gratuite", "inProgressText": "O tranzacție e în progres; reîncearcă în câteva secunde.", - "purchasesRestoredText": "Cumpărături Resetate.", + "purchasesRestoredText": "Cumpărături Restaurate.", "receivedTicketsText": "Ai primit ${COUNT} (de) bilete!", - "restorePurchasesText": "Resetează Cumpărături", + "restorePurchasesText": "Restaurează Cumpărăturile", "ticketDoublerText": "Dublator Bilete", "ticketPack1Text": "Pachet de Bilete Mic", "ticketPack2Text": "Pachet de Bilete Mediu", @@ -796,7 +797,7 @@ "ticketsFromASponsorText": "Ia ${COUNT} bilete\nde la un sponsor", "ticketsText": "${COUNT} de Bilete", "titleText": "Ia Bilete", - "unavailableLinkAccountText": "Ne pare rău, dar achizițiile nu sunt disponibile pe această platformă.\nCa soluție, puteți conecta acest cont la un cont de pe\no altă platformă și faceți cumpărături acolo.", + "unavailableLinkAccountText": "Scuze, dar achizițiile nu sunt disponibile pe această platformă.\nCa soluție, poți conecta acest cont la un alt cont de pe\no altă platformă și să faci cumpărături acolo.", "unavailableTemporarilyText": "Acest serviciu este indisponibil deocamdată; încearcă din nou mai târziu.", "unavailableText": "Scuze, această ofertă este indisponibilă.", "versionTooOldText": "Scuze, dar versiunea jocului e prea veche; actualizează-l la o versiune mai nouă.", @@ -804,7 +805,7 @@ "youHaveText": "ai ${COUNT} (de) bilete" }, "googleMultiplayerDiscontinuedText": "Ne pare rău, serviciul multiplayer de pe Google nu mai este disponibil.\nLucrez la un înlocuitor cât mai repede posibil.\nPână atunci, te rog să încerci o altă metodă de conectare.\n-Eric", - "googlePlayText": "Magazin Play", + "googlePlayText": "Google Play", "graphicsSettingsWindow": { "alwaysText": "Întotdeauna", "fullScreenCmdText": "Fullscreen (Cmd+F)", @@ -819,25 +820,26 @@ "showFPSText": "Arată FPS-urile", "texturesText": "Texturi", "titleText": "Grafici", - "tvBorderText": "Margine Televizor", + "tvBorderText": "Margine Pentru Televizor", "verticalSyncText": "V-sync", "visualsText": "Vizuale" }, "helpWindow": { - "bombInfoText": "- Bomba -\nMai puternică decât pumnii, dar poate\nrezulta în a te lovi pe tine însuți.\nPentru rezultate pozitive, arunc-o înspre\ninamici înainte să se termine fitilul.", + "bombInfoText": "- Bomba -\nMai puternică decât pumnii, dar poate\nrezulta în a te răni pe tine însuți.\nPentru rezultate pozitive, arunc-o înspre\ninamici înainte să i se termine fitilul.", "canHelpText": "${APP_NAME} te poate ajuta.", - "controllersInfoText": "Te poți juca ${APP_NAME} cu prietenii dintr-o rețea sau \nputeți juca cu toții pe același dispozitiv dacă aveți suficiente controllere.\n${APP_NAME} acceptă o varietate de ele; puteți folosi chiar și telefoane\ndrept controllere cu ajutorul aplicației gratuite „${REMOTE_APP_NAME}”.\nConsultă Setări-> Controlere pentru mai multe informații.", - "controllersInfoTextRemoteOnly": "Te poți juca ${APP_NAME} cu prietenii pe o rețea de Wi-Fi/Bluetooth, sau\nvă puteți juca cu toții pe același dispozitiv folosind telefoane \ndrept controllere cu ajutorul aplicației gratuite '${REMOTE_APP_NAME}'.", + "controllersInfoText": "Te poți juca ${APP_NAME} cu prietenii cu ajutorul unei rețele de internet sau vă\nputeți juca cu toții pe același dispozitiv dacă aveți suficiente controllere.\n${APP_NAME} suportă o varietate mare de controllere; poți folosi chiar și telefoane\ndrept controllere cu ajutorul aplicației gratuite „${REMOTE_APP_NAME}”.\nConsultă Setări-> Controlere pentru mai multe informații.", + "controllersInfoTextRemoteOnly": "Te poți juca ${APP_NAME} cu prietenii tăi pe o rețea de Wi-Fi/Bluetooth, sau\nvă puteți juca cu toții pe același dispozitiv folosindu-vă telefoanele\ndrept controllere cu ajutorul aplicației gratuite '${REMOTE_APP_NAME}'.", "controllersText": "Controllere", "controlsSubtitleText": "Caracterul tău prietenos din ${APP_NAME} are câteva acțiuni de bază:", "controlsText": "Controalele", - "devicesInfoText": "Te poți juca pe internet pe versiunea VR de ${APP_NAME}\nla fel ca pe cea originală așa că scoateți-vă telefoanele,tabletele,\nporniți computerele și începeți jocul. Poate fi folositor\nși să conectezi versiunea originală la cea VR doar ca cei\ndin afară să poată vdedea acțiunea.", + "devicesInfoText": "Te poți juca pe internet pe versiunea VR de ${APP_NAME}\nla fel ca pe cea originală așa că scoateți-vă telefoanele, tabletele,\nporniți computerele și începeți jocul. Poate fi folositor\nși să conectezi versiunea originală la cea VR doar ca cei\ndin afară să poată vedea acțiunea.", "devicesText": "Dispozitive", "friendsGoodText": "E bine să ai și din aceștia. ${APP_NAME} e și mai amuzant cu mai\nmulți jucători și suportă până la 8 deodată, ceea ce ne duce la:", "friendsText": "Prieteni", - "jumpInfoText": "- Săritura -\nSari ca să trecipeste gropi mici,\nsă arunci lucruri mai sus,\nși să-ți exprimi fericirea.", + "jumpInfoText": "- Săritura -\nSari ca să treci peste gropi mici,\nsă arunci lucruri mai sus,\nși să-ți exprimi fericirea.", "orPunchingSomethingText": "Sau să dai cu pumnii în ceva, să arunci acel ceva într-o prăpastie și să explodeze până jos de la o bombă lipicioasă.", - "pickUpInfoText": "- Ridicarea -\nIa steaguri, inamici, sau orice \nlucru care nu e fixat de pământ.\nApasă-l încă odată pentru a arunca.", + "pickUpInfoText": "- Ridicarea -\nRidică steaguri, inamici, sau orice \nlucru care nu e fixat de pământ.\nApasă-l încă odată pentru a arunca lucrul respectiv.", + "pickUpInfoTextScale": 0.5, "powerupBombDescriptionText": "Te lasă să arunci 3 bombe\nîn loc de una singură.", "powerupBombNameText": "Bombe Triple", "powerupCurseDescriptionText": "Ar fi mai bine să eviți astea.\n ...sau oare?", @@ -846,11 +848,11 @@ "powerupHealthNameText": "Trusă de Prim-Ajutor", "powerupIceBombsDescriptionText": "Mai slabe decât bombele\nnormale, dar îți lasă inamicii\nînghețați și aparent fragili.", "powerupIceBombsNameText": "Bombe de Gheață", - "powerupImpactBombsDescriptionText": "Mai slabe decât bombele normale,\ndar explodează odată ce ating ceva.", + "powerupImpactBombsDescriptionText": "Mai slabe decât bombele normale,\ndar explodează imediat ce ating ceva.", "powerupImpactBombsNameText": "Bombe cu Impact", "powerupLandMinesDescriptionText": "Acestea vin câte 3; Folositoare\npentru apărarea bazelor sau\npentru oprirea inamicilor vitezomani.", "powerupLandMinesNameText": "Mine", - "powerupPunchDescriptionText": "Îți va face pumnii mai tari,\nmai rapizi, mai buni și mai puternici.", + "powerupPunchDescriptionText": "Îți va face pumnii mai tari,\nmai rapizi și mai buni.", "powerupPunchNameText": "Mănuși de Box", "powerupShieldDescriptionText": "Absoarbe daunele ca să\nnu o faci tu.", "powerupShieldNameText": "Scut-Energic", @@ -858,7 +860,7 @@ "powerupStickyBombsNameText": "Bombe Lipicioase", "powerupsSubtitleText": "Desigur, nici un joc nu e complet fără powerup-uri:", "powerupsText": "Powerup-uri", - "punchInfoText": "- Pumnii -\nPumnii dăunează mai mult cu cât\nse mișcă mai rapid, deci aleargă\nși rotește-te ca un dement!", + "punchInfoText": "- Pumnii -\nPumnii dăunează mai mult cu cât\nîi miști mai rapid, deci aleargă\nși rotește-te ca un dement!", "runInfoText": "- Fuga -\nȚine apăsat ORICE buton pentru a fugi. Triggerele sau butoanele de umăr funcționează bine dacă le ai.\nFugitul te ajută să ajungi mai repede în alte locuri, deși virezi greu, deci ai grijă la prăpastii.", "someDaysText": "În unele zile pur și simplu vrei să lovești ceva. Sau să explodezi altceva.", "titleText": "Ajutor pentru ${APP_NAME}", @@ -877,12 +879,12 @@ "internal": { "arrowsToExitListText": "Apasă ${LEFT} sau ${RIGHT} pentru a ieși din listă", "buttonText": "buton", - "cantKickHostError": "Nu poți da afară creeatorul server-ului.", + "cantKickHostError": "Nu poți da afară hostul server-ului.", "chatBlockedText": "${NAME} este blocat în chat timp de ${TIME} (de) secunde.", "connectedToGameText": "a intrat în „${NAME}”", "connectedToPartyText": "Ai intrat în server-ul lui ${NAME}!", "connectingToPartyText": "Se conectează...", - "connectionFailedHostAlreadyInPartyText": "Conexiunea a eşuat; hostul este în alt joc.", + "connectionFailedHostAlreadyInPartyText": "Conexiunea a eşuat; hostul este în alt joc.", "connectionFailedPartyFullText": "Conexiune eșuată; server-ul este plin.", "connectionFailedText": "Conexiunea a eşuat.", "connectionFailedVersionMismatchText": "Conexiunea a eşuat; hostul rulează o versiune diferită a jocului.\nAsigurați-vă că ambii aveți cea mai nouă versiune a jocului şi încercați din nou.", @@ -897,7 +899,7 @@ "controllersDetectedText": "${COUNT} controllere detectate.", "controllersDisconnectedText": "${COUNT} controllere s-au deconectat.", "corruptFileText": "Fişiere Corupte detectate. Reinstalează jocul, sau trimite un email la adresa ${EMAIL}", - "errorPlayingMusicText": "Eroare la pornirea muzicii: ${MUSIC}", + "errorPlayingMusicText": "Nu s-a putut porni muzica: ${MUSIC}", "errorResettingAchievementsText": "Nu se pot reseta medaliile; încearcă din nou mai tărziu.", "hasMenuControlText": "${NAME} are controlul meniului.", "incompatibleNewerVersionHostText": "Hostul rulează o versiune mai nouă a jocului.\nActualizează-ți jocul la cea mai recentă versiune și încearcă din nou.", @@ -908,30 +910,30 @@ "invalidPortErrorText": "Eroare: port invalid.", "invitationSentText": "Invitație Trimisă.", "invitationsSentText": "${COUNT} (de) invitații trimise.", - "joinedPartyInstructionsText": "Cineva s-a alăturat partidului tău.\nAccesează meniul „Joacă” pentru a începe un joc.", + "joinedPartyInstructionsText": "Cineva s-a alăturat server-ului tău.\nAccesează meniul „Joacă” pentru a începe un joc.", "keyboardText": "Tastatură", - "kickIdlePlayersKickedText": "${NAME} va fi dat afară pentru că este inactiv.", - "kickIdlePlayersWarning1Text": "${NAME} va fi dat afară în ${COUNT} (de) secunde dacă continuă să fie inactiv.", - "kickIdlePlayersWarning2Text": "(poți opri asta în Setări->Avansat)", + "kickIdlePlayersKickedText": "${NAME} a fost dat afară deoarece era inactiv.", + "kickIdlePlayersWarning1Text": "${NAME} va fi dat afară în următoarele ${COUNT} secunde dacă continuă să fie inactiv.", + "kickIdlePlayersWarning2Text": "(Poți dezactiva această setare în Setări -> Avansat)", "leftGameText": "A ieșit din ${NAME}", "leftPartyText": "Ai ieşit din server-ul lui ${NAME}.", "noMusicFilesInFolderText": "Folder-ul nu conține niciun fişier de muzică.", "playerJoinedPartyText": "${NAME} a intrat în joc!", "playerLeftPartyText": "${NAME} a ieșit.", "rejectingInviteAlreadyInPartyText": "Se respinge invitația (eşti deja într-un alt server).", - "serverRestartingText": "Server-ul se restartează. Te rog să intri din nou într-o clipă...", + "serverRestartingText": "Server-ul se restartează. Te rog să reintri într-o clipă...", "serverShuttingDownText": "Server-ul se închide...", "signInErrorText": "Eroare la Conectare.", "signInNoConnectionText": "Nu se poate conecta. (nu există o conexiune la internet?)", "telnetAccessDeniedText": "Eroare: utilizatorul nu are acces la telnet.", "timeOutText": "(i se va pierde controlul meniului în ${TIME} (de) secunde)", - "touchScreenJoinWarningText": "Ai intrat cu touchscreen-ul.\nDacă ai făcut-o din greşeală, apasă 'Meniu->Sfârşeşte Joc' cu acesta.", + "touchScreenJoinWarningText": "Ai intrat cu touchscreen-ul.\nDacă ai făcut-o din greşeală, apasă 'Meniu -> Devino Spectator' cu acesta.", "touchScreenText": "TouchScreen", - "unableToResolveHostText": "Eroare:imposibil de găsit hostul.", + "unableToResolveHostText": "Eroare: imposibil de găsit hostul.", "unavailableNoConnectionText": "Acest serviciu nu este disponibil acum (fără conexiune la internet?)", "vrOrientationResetCardboardText": "Foloseşte această opțiune pentru resetare orientării VR.\nDacă vrei să te joci vei avea nevoie de un controller external.", "vrOrientationResetText": "Orientare VR resetată.", - "willTimeOutText": "(se va reseta dacă este inactiv)" + "willTimeOutText": "(i se va lua controlul dacă este inactiv)" }, "jumpBoldText": "SARI", "jumpText": "Sari", @@ -941,15 +943,15 @@ "keyboardNoOthersAvailableText": "Nu a fost detectată altă tastatură.", "keyboardSwitchText": "Tastatura schimbată va fi \"${NAME}\".", "kickOccurredText": "${NAME} a fost dat afară.", - "kickQuestionText": "Vrei să-l dai afară pe ${NAME}?", + "kickQuestionText": "Vrei să dai afară pe ${NAME}?", "kickText": "Dă-l afară", "kickVoteCantKickAdminsText": "Administratorii nu pot fi dați afară.", - "kickVoteCantKickSelfText": "Nu te poți da afară.", + "kickVoteCantKickSelfText": "De ce ai vrea să te dai afară?", "kickVoteFailedNotEnoughVotersText": "Nu sunt destui jucători pentru un vot.", "kickVoteFailedText": "Votul a eșuat.", - "kickVoteStartedText": "un vot de eliminare pentru ${NAME} a fost cerut.", - "kickVoteText": "Votează-l afară", - "kickVotingDisabledText": "Votul de eliminare este dezactivat.", + "kickVoteStartedText": "Un vot de a da afară pe ${NAME} a fost cerut.", + "kickVoteText": "Votează pentru a-l da afară", + "kickVotingDisabledText": "Datul afară este dezactivat.", "kickWithChatText": "Scrie ${YES} în chat pentru a-l vota sau scrie ${NO} pentru a nu-l vota.", "killsTallyText": "${COUNT} (de) ucideri", "killsText": "Ucideri", @@ -1000,15 +1002,15 @@ "macControllerSubsystemTitleText": "Suport Pentru Controller", "mainMenu": { "creditsText": "Credite", - "demoMenuText": "Meniu Demo", + "demoMenuText": "Meniu Demonstrativ", "endGameText": "Sfârșește Jocul", "exitGameText": "Ieși Din Joc", "exitToMenuText": "Revii la meniu?", - "howToPlayText": "Cum Se Joacă?", + "howToPlayText": "Cum se Joacă?", "justPlayerText": "(Doar ${NAME})", - "leaveGameText": "Părăsește Jocul", + "leaveGameText": "Devino Spectator", "leavePartyConfirmText": "Sigur vrei să părăsești grupul?", - "leavePartyText": "Părăsește Jocul", + "leavePartyText": "Părăsește Grupul", "quitText": "Ieși", "resumeText": "Continuă", "settingsText": "Setări" @@ -1024,9 +1026,9 @@ "modeArcadeText": "Mod Pentru Arcade", "modeClassicText": "Modul Clasic", "modeDemoText": "Modul Demonstrativ", - "mostValuablePlayerText": "Cel mai valoros jucător este", - "mostViolatedPlayerText": "Cel mai ucis jucător este", - "mostViolentPlayerText": "Cel mai violent jucător este", + "mostValuablePlayerText": "Cel mai valoros jucător este:", + "mostViolatedPlayerText": "Cel mai ucis jucător este:", + "mostViolentPlayerText": "Cel mai violent jucător este:", "moveText": "Te miști din", "multiKillText": "${COUNT} ucideri!!!", "multiPlayerCountText": "${COUNT} jucători", @@ -1036,12 +1038,12 @@ "nameKilledText": "${NAME} a omorât pe ${VICTIM}", "nameNotEmptyText": "Trebubie să-ți pui un nume!", "nameScoresText": "${NAME} înscrie!", - "nameSuicideKidFriendlyText": "${NAME} a pierit accidental.", + "nameSuicideKidFriendlyText": "${NAME} a dat colțul.", "nameSuicideText": "${NAME} s-a sinucis.", "nameText": "Numele", "nativeText": "Nativă", "newPersonalBestText": "Un nou record personal a fost atins!", - "newTestBuildAvailableText": "O nouă versiune Beta a fost lansată: (${VERSION} build ${BUILD}).\nIa-o de pe ${ADDRESS}", + "newTestBuildAvailableText": "O nouă versiune de test a fost lansată: (${VERSION} build ${BUILD}).\nIa-o de pe ${ADDRESS}", "newText": "Nou", "newVersionAvailableText": "O versiune nouă de ${APP_NAME} este disponibilă,aceasta fiind (${VERSION})!", "nextAchievementsText": "Realizările Următoare:", @@ -1053,7 +1055,7 @@ "noProfilesErrorText": "Nu ai niciun Profil de Jucător, deci eşti blocat cu '${NAME}'.\nDute la Setări->Profile de Jucător pentru a-ți face un profil.", "noScoresYetText": "Niciun scor deocamdată.", "noThanksText": "Nu Mulțumesc", - "noTournamentsInTestBuildText": "ATENȚIE: Scorurile obținute în turnee vor fi ignorate în această versiune beta.", + "noTournamentsInTestBuildText": "ATENȚIE: Scorurile obținute în turnee vor fi ignorate în această versiune de test.", "noValidMapsErrorText": "Nu sunt hărți disponibile pentru acest mod de joc.", "notEnoughPlayersRemainingText": "Nu mai sunt destui jucători; ieși din joc și creează altul nou.", "notEnoughPlayersText": "Ai nevoie de cel puțin ${COUNT} jucători pentru a începe acest joc!", @@ -1078,7 +1080,7 @@ "emptyText": "Petrecerea ta este goală", "hostText": "(hostul)", "sendText": "Trimite", - "titleText": "Petrecerea Ta" + "titleText": "Server-ul Tău" }, "pausedByHostText": "(pus pe pauză de către host)", "perfectWaveText": "Val Perfect!", @@ -1115,9 +1117,9 @@ "playlistNotFoundText": "lista nu a fost găsită", "playlistText": "Lista de jocuri", "playlistsText": "Liste de Jocuri", - "pleaseRateText": "Dacă îți place ${APP_NAME}, te rog să stai\no clipă și să evaluezi jocul scriind o recenzie pentru acesta.\nAceasta furnizează feedback folositor și ajută la dezvoltarea jocului în viitor.\n\nmulțumesc!\n-Eric", + "pleaseRateText": "Dacă îți place ${APP_NAME}, te rog să stai\no clipă și să evaluezi jocul, scriind o recenzie pentru acesta.\nAceasta furnizează feedback folositor și ajută la dezvoltarea jocului în viitor.\n\nmulțumesc!\n-Eric", "pleaseWaitText": "Te rog să aștepți...", - "pluginsDetectedText": "Plugin(uri) noi detectate. Activează-le/configurează-le în setări.", + "pluginsDetectedText": "Plugin(uri) noi detectate. Restartează jocul pentru a le activa / configura în setări.", "pluginsText": "Plugin-uri", "practiceText": "Antrenament", "pressAnyButtonPlayAgainText": "Apasă orice buton pentru a juca din nou...", @@ -1126,15 +1128,15 @@ "pressAnyKeyButtonPlayAgainText": "Apasă orice buton/tastă pentru a juca din nou...", "pressAnyKeyButtonText": "Apasă orice buton/tastă pentru a continua...", "pressAnyKeyText": "Apasă orice tastă...", - "pressJumpToFlyText": "** Apasă butonul de sărit repetat pentru a zbura **", + "pressJumpToFlyText": "** Apasă butonul de sărit de mai multe ori pentru a zbura **", "pressPunchToJoinText": "apasă PUMN pentru a intra...", "pressToOverrideCharacterText": "apasă ${BUTTONS} pentru a-ți schimba caracterul", - "pressToSelectProfileText": "apasă ${BUTTONS} pentru a-ți selecta caracterul", + "pressToSelectProfileText": "apasă ${BUTTONS} pentru a-ți selecta profilul", "pressToSelectTeamText": "apasă ${BUTTONS} pentru a-ți selecta echipa", "promoCodeWindow": { - "codeText": "Introdu Codul", + "codeText": "Codul:", "codeTextDescription": "Cod Promoțional", - "enterText": "Trimite Codul" + "enterText": "Trimite-l" }, "promoSubmitErrorText": "Eroare la trimiterea codului; verifică-ți conexiunea la internet", "ps3ControllersWindow": { @@ -1168,7 +1170,7 @@ "cant_resolve_host": "Nu se poate găsi hostul.", "capturing": "Atribuie un buton...", "connected": "Conectat.", - "description": "Folosește-ți telefonul sau tableta drept controller pentru BombSquad\nPoți conecta 8 dispozitive simultan pentru un mod multiplayer nebunesc pe un Televizor sau pe o tabletă.", + "description": "Folosește-ți telefonul sau tableta drept controller pentru BombSquad.\nPoți conecta 8 dispozitive simultan pentru un mod de multiplayer nebunesc pe un Televizor sau pe o tabletă.", "disconnected": "Deconectat de către server.", "dpad_fixed": "fixat", "dpad_floating": "liber", @@ -1200,7 +1202,7 @@ "replayWriteErrorText": "Eroare la scrierea fişierului de reluare.", "replaysText": "Reluări", "reportPlayerExplanationText": "Foloseşte această adresă de E-Mail pentru a raporta trişori, limbaj vulgar, sau alte tipuri de comportamente inadecvate.\nTe rog descrie subiectul mai jos:", - "reportThisPlayerCheatingText": "Trișori", + "reportThisPlayerCheatingText": "Trișat", "reportThisPlayerLanguageText": "Limbaj Vulgar", "reportThisPlayerReasonText": "Ce ai vrea să reclami?", "reportThisPlayerText": "Raportează Acest Jucător", @@ -1236,22 +1238,22 @@ "titleText": "Setări" }, "settingsWindowAdvanced": { - "alwaysUseInternalKeyboardDescriptionText": "(o tastatură simplă, în special pentru controllere, ce ajută la editarea textului)", + "alwaysUseInternalKeyboardDescriptionText": "(o tastatură simplă, folositoare pentru controllere, care ajută la editarea textului)", "alwaysUseInternalKeyboardText": "Foloseşte Mereu Tastatura Internală", - "benchmarksText": "Teste-Stres şi referințe", - "disableCameraGyroscopeMotionText": "Oprește Camera De Tip Giroscop", - "disableCameraShakeText": "Oprește Zguduirea Camerei", - "disableThisNotice": "(poți opri această notificare în setările avansate)", + "benchmarksText": "Teste-Stres & Referințe", + "disableCameraGyroscopeMotionText": "Oprește Mișcarea Camerei De Tip Giroscop", + "disableCameraShakeText": "Dezactivează Cutremurarea Camerei", + "disableThisNotice": "(Poți dezactiva această notificare în setările avansate)", "enablePackageModsDescriptionText": "Permite mai multe capabilități pentru modare, dar dezactivează net-play-ul)", "enablePackageModsText": "Activează Moduri cu Pachete Locale", - "enterPromoCodeText": "Introdu Codul", + "enterPromoCodeText": "Codul:", "forTestingText": "Notă: aceste valori sunt doar pentru teste şi vor fi resetate când jocul va fi închis.", - "helpTranslateText": "Translațiile din ${APP_NAME} sunt un efort depus de comunitate.\nDacă ai dori să te implici la translatarea unei limbi,\nurmează linkul de mai jos. Multe mulțumiri!", + "helpTranslateText": "Translațiile din ${APP_NAME} sunt un efort depus de comunitate.\nDacă ai dori să te implici la translatarea/corectarea unei limbi,\nurmează linkul de mai jos. Mulțumiri anticipate!", "kickIdlePlayersText": "Dă Afară Jucătorii Inactivi", "kidFriendlyModeText": "Modul Pentru Copii (mai puțină violență, etc)", "languageText": "Limbă", "moddingGuideText": "Ghid pentru Modare", - "mustRestartText": "Va trebui să restartezi jocul dacă vrei ca acest lucru să aibă efect.", + "mustRestartText": "Va trebui să restartezi jocul dacă vrei ca acest lucru să își facă efectul.", "netTestingText": "Testarea Internetului", "resetText": "Resetează", "showBombTrajectoriesText": "Arată Traiectoriile Bombelor", @@ -1278,7 +1280,7 @@ "CharSelect": "Selecția Caracterului", "Chosen One": "Alesul", "Epic": "Jocurile în Slow Motion", - "Epic Race": "Cursă Epică", + "Epic Race": "Cursă în Slow Motion", "FlagCatcher": "Capturează Steagul", "Flying": "Amintiri Fericite", "Football": "TouchDown", @@ -1291,10 +1293,10 @@ "Onslaught": "Măcel", "Race": "Cursă", "Scary": "Regele Dealului", - "Scores": "Meniul de Scoruri", + "Scores": "Ecranul Cu Scoruri", "Survival": "Eliminare", "ToTheDeath": "Meciul Morții", - "Victory": "Meniul de Scoruri Finale" + "Victory": "Ecranul cu Scorurile Finale" }, "spaceKeyText": "spacebar", "statsText": "Statistici", @@ -1334,16 +1336,16 @@ "totalWorthText": "*** ofertă cu valoare de ${TOTAL_WORTH}! ***", "upgradeQuestionText": "Vrei să-ți îmbunătățești versiunea?", "winterSpecialText": "Speciale pe timp de Iarnă", - "youOwnThisText": "-deja ai cumpărat asta-" + "youOwnThisText": "- deja ai cumpărat asta -" }, - "storeDescriptionText": "Nebunie pentru 8 Jucători!\n\nExplodează-ți prietenii (sau computerul) într-un concurs de mini-jocuri explozive cum ar fi Capturează Steagul, Hockey-Bombist, şi Meci-de-Moarte-În-Slow-Motion-Epic!\n\nControllurile simple şi suportul pentru diferite tipuri de controller fac posibilă joaca cu un maxim de 8 jucători; poți folosi chiar şi telefonul drept controller cu ajutorul aplicației 'BombSquad Remote'!\n\nScoate Bombele Afară!\n\nVezi www.froemling.net/bombsquad pentru mai multe informații.", + "storeDescriptionText": "Nebunie pentru 8 Jucători!\n\nExplodează-ți prietenii (sau computerul) într-un concurs de mini-jocuri explozive cum ar fi Capturează Steagul, Hockey-Bombist, şi Meci-de-Moarte-În-Slow-Motion-Epic!\n\nControalele simple şi suportul pentru diferite tipuri de controller fac posibilă joaca cu un maxim de 8 jucători; îți poți folosi chiar şi telefonul drept controller cu ajutorul aplicației 'BombSquad Remote'!\n\nScoate Bombele La Iveală!\n\nVezi www.froemling.net/bombsquad pentru mai multe informații.", "storeDescriptions": { "blowUpYourFriendsText": "Explodează-ți prietenii.", "competeInMiniGamesText": "Întrece-te în mini-jocuri începând de la curse până la zburat.", "customize2Text": "Particularizează caractere, mini-jocuri, chiar și muzica jocului.", "customizeText": "Particularizează-ți caracterele şi creează-ți listele de jocuri cu mini-jocuri cum vrei tu.", "sportsMoreFunText": "Sporturile sunt mai distractive cu explozibile.", - "teamUpAgainstComputerText": "Fă echipă contra computerului." + "teamUpAgainstComputerText": "Fă echipă împotriva computerului." }, "storeText": "Magazin", "submitText": "Trimite", @@ -1369,13 +1371,13 @@ "titleVRText": "BombSquad VR", "topFriendsText": "Prieteni de Top", "tournamentCheckingStateText": "Se verifică starea campionatului; aşteaptă...", - "tournamentEndedText": "Acest campionat s-a terminat. Altul nou va începe în curând.", - "tournamentEntryText": "Preț Pentru Campionat", - "tournamentResultsRecentText": "Rezultatele Recente ale Campionatului", - "tournamentStandingsText": "Clasamentele Campionatului", - "tournamentText": "Campionat", - "tournamentTimeExpiredText": "Timpul Campionatului a Expirat", - "tournamentsText": "Campionate", + "tournamentEndedText": "Acest turneu s-a terminat. Altul nou va începe în curând.", + "tournamentEntryText": "Prețul Pentru Intrare", + "tournamentResultsRecentText": "Rezultatele Recente ale Turneului", + "tournamentStandingsText": "Clasamentele Turneului", + "tournamentText": "Turneu", + "tournamentTimeExpiredText": "Timpul Turneului a Expirat", + "tournamentsText": "Turnee", "translations": { "characterNames": { "Agent Johnson": "Agentul Johnson", @@ -1426,23 +1428,23 @@ "Uber Runaround": "MEGA Runaround" }, "gameDescriptions": { - "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Fii cel ales pentru o perioadă de timp pentru a câştiga.\nOmoară-l pe ales pentru a deveni tu acela.", + "Be the chosen one for a length of time to win.\nKill the chosen one to become it.": "Fii cel ales pentru o perioadă de timp pentru a câştiga.\nOmoară alesul pentru a deveni tu acela.", "Bomb as many targets as you can.": "Bombează cât mai multe ținte.", "Carry the flag for ${ARG1} seconds.": "Ține steagul pentru ${ARG1} (de) secunde.", - "Carry the flag for a set length of time.": "Ține steagul pentru o perioadă de timp.", + "Carry the flag for a set length of time.": "Ține steagul pentru o perioadă anumită de timp.", "Crush ${ARG1} of your enemies.": "Ucide ${ARG1} (de) inamici.", "Defeat all enemies.": "Înfrânge toți inamicii.", "Dodge the falling bombs.": "Ai grijă la bombe.", "Final glorious epic slow motion battle to the death.": "Bătălie finală glorioasă până la moarte în slow motion epic .", - "Gather eggs!": "Colectează ouă!", - "Get the flag to the enemy end zone.": "Cară steagul către partea inamică.", + "Gather eggs!": "Adună ouăle!", + "Get the flag to the enemy end zone.": "Cară steagul către partea inamicilor.", "How fast can you defeat the ninjas?": "Cât de rapid îi poți învinge pe ninja?", "Kill a set number of enemies to win.": "Ucide un număr anumit de inamici pentru a câştiga.", "Last one standing wins.": "Ultimul rămas în picioare câştigă.", "Last remaining alive wins.": "Ultimul rămas în viață câştigă.", "Last team standing wins.": "Ultima echipă rămasă în picioare câştigă.", "Prevent enemies from reaching the exit.": "Nu lăsa inamicii să ajungă la sfârşit.", - "Reach the enemy flag to score.": "Atinge steagul inamic pentru a înscrie.", + "Reach the enemy flag to score.": "Atinge steagul inamicilor pentru a înscrie.", "Return the enemy flag to score.": "Returnează steagul inamicilor pentru a puncta.", "Run ${ARG1} laps.": "Fugi ${ARG1} ture.", "Run ${ARG1} laps. Your entire team has to finish.": "Fugi ${ARG1} ture. Toată echipa ta trebuie să termine.", @@ -1458,8 +1460,8 @@ "Secure all flags on the map to win.": "Toate steagurile trebuiesc cucerite de echipa ta pentru a câştiga.", "Secure the flag for ${ARG1} seconds.": "Ține steagul pentru ${ARG1} (de) secunde.", "Secure the flag for a set length of time.": "Ține steagul pentru o perioadă anumită de timp.", - "Steal the enemy flag ${ARG1} times.": "Fură steagul inamic de ${ARG1} ori.", - "Steal the enemy flag.": "Fură steagul inamic.", + "Steal the enemy flag ${ARG1} times.": "Fură steagul inamicilor tăi de ${ARG1} ori.", + "Steal the enemy flag.": "Fură steagul inamicilor tăi.", "There can be only one.": "Aici poate fi numai unul.", "Touch the enemy flag ${ARG1} times.": "Atinge steagul inamic de ${ARG1} ori", "Touch the enemy flag.": "Atinge steagul inamicilor.", @@ -1482,7 +1484,7 @@ }, "gameNames": { "Assault": "Asalt", - "Capture the Flag": "Capturează steagul", + "Capture the Flag": "Capturează Steagul", "Chosen One": "Alesul", "Conquest": "Cucerire", "Death Match": "Meciul Morții", @@ -1501,8 +1503,8 @@ "The Last Stand": "Ultimul Rămas" }, "inputDeviceNames": { - "Keyboard": "Tastatură", - "Keyboard P2": "Tastatură P2" + "Keyboard": "Tastatura", + "Keyboard P2": "Tastatura pentru P2" }, "languages": { "Arabic": "Arabă", @@ -1569,7 +1571,7 @@ "Zigzag": "Zig zag" }, "playlistNames": { - "Just Epic": "Doar Epice", + "Just Epic": "Doar Slow Motion", "Just Sports": "Doar Sporturi" }, "scoreNames": { @@ -1578,7 +1580,7 @@ "Score": "Scor", "Survived": "Supraviețuit", "Time": "Timp", - "Time Held": "Timp ținut" + "Time Held": "Timp Ținut" }, "serverResponses": { "A code has already been used on this account.": "Un cod a fost deja folosit pe acest cont.", @@ -1591,26 +1593,26 @@ "An error has occurred; please contact support. (${ERROR})": "A intervenit o eroare; Te rog să contactezi asistența. (${ERROR})", "An error has occurred; please contact support@froemling.net.": "A apărut o eroare; te rog să contactezi support@froemling.net.", "An error has occurred; please try again later.": "O eroare a intervenit; te rog să încerci din nou mai târziu.", - "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Eşti sigur că vrei să conectezi aceste 2 conturi între ele?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nacest lucru nu poate fi reversibil!", + "Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Eşti sigur că vrei să conectezi aceste 2 conturi între ele?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nAcest lucru nu este reversibil!", "BombSquad Pro unlocked!": "Versiunea BombSquad Pro a fost deblocată!", "Can't link 2 accounts of this type.": "Nu se pot conecta 2 conturi de acest fel.", "Can't link 2 diamond league accounts.": "Nu se pot conecta 2 conturi cu liga de diamant.", "Can't link; would surpass maximum of ${COUNT} linked accounts.": "Nu se poate conecta; s-ar depăși numărul maxim de ${COUNT} conturi conectate.", - "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Trişare detectată; scorurile şi premiile sunt suspendate pentru ${COUNT} (de) zile.", + "Cheating detected; scores and prizes suspended for ${COUNT} days.": "Ai fost detectat trișând; scorurile şi premiile vor fi suspendate timp de ${COUNT} (de) zile.", "Could not establish a secure connection.": "Nu s-a putut stabili o conexiune sigură.", "Daily maximum reached.": "Limită Zilnică Atinsă.", - "Entering tournament...": "Se intră în campionat...", + "Entering tournament...": "Se intră în turneu...", "Invalid code.": "Cod Invalid.", "Invalid payment; purchase canceled.": "Plată invalidă; achiziționare anulată.", - "Invalid promo code.": "Cod Promo invalid.", - "Invalid purchase.": "Achiziționare Invalidă.", - "Invalid tournament entry; score will be ignored.": "Intrare invalidă în campionat; scorul va fi ignorat.", + "Invalid promo code.": "Cod promo invalid.", + "Invalid purchase.": "Achiziționare invalidă.", + "Invalid tournament entry; score will be ignored.": "Intrare invalidă în turneu; scorul tău va fi ignorat.", "Item unlocked!": "Lucru deblocat!", "LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "CONECTARE ÎNTRE CONTURI RESPINSĂ.Contul ${ACCOUNT} conține\ndate semnificative care ar putea FI PIERDUTE PE VECI.\nPoți să conectezi conturile în ordinea opusă acesteia dacă dorești\n(și să pierzi datele ACESTUI cont în locul celuilalt)", "Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Îți legi progresul contului ${ACCOUNT} cu acest cont?\nTot progresul de pe ${ACCOUNT} va fi șters.\nAcest lucru nu poate fi reversibil. Ești sigur?", - "Max number of playlists reached.": "Număr maxim de liste atins.", - "Max number of profiles reached.": "Număr maxim de profile atins.", - "Maximum friend code rewards reached.": "Limita codurilor pentru prieteni atinsă.", + "Max number of playlists reached.": "Numărul maxim de liste a fost atins.", + "Max number of profiles reached.": "Numărul maxim de profile a fost atins.", + "Maximum friend code rewards reached.": "Limita codurilor pentru prieteni a fost atinsă.", "Message is too long.": "Mesajul este prea lung.", "No servers are available. Please try again soon.": "Niciun server nu este disponibil. Încearcă din nou mai târziu.", "Profile \"${NAME}\" upgraded successfully.": "Profilul \"${NAME}\" a fost îmbunătățit cu succes.", @@ -1618,26 +1620,26 @@ "Purchase successful!": "Achiziționare reuşită!", "Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "Ai primit ${COUNT} (de) bilete pentru conectare.\nRevino mâine pentru a primi ${TOMORROW_COUNT}.", "Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "Serverele nu mai sunt suportate în această versiune a jocului;\nTe rog să actualizezi jocul la o versiune mai nouă.", - "Sorry, there are no uses remaining on this code.": "Scuze, codul nu mai poate fi folosit.", - "Sorry, this code has already been used.": "Scuze, codul acesta a fost folosit deja.", - "Sorry, this code has expired.": "Scuze, acest cod a expirat.", - "Sorry, this code only works for new accounts.": "Scuze, acest cod merge doar pentru conturile noi.", + "Sorry, there are no uses remaining on this code.": "Scuze, dar codul nu mai poate fi folosit.", + "Sorry, this code has already been used.": "Scuze, dar codul acesta a fost deja folosit.", + "Sorry, this code has expired.": "Scuze, dar acest cod a expirat.", + "Sorry, this code only works for new accounts.": "Scuze, dar acest cod merge numai pentru jucătorii cu conturi noi.", "Still searching for nearby servers; please try again soon.": "Încă se caută servere din apropiere; te rog să încerci din nou într-un moment.", "Temporarily unavailable; please try again later.": "Nevalabil temporar; te rog să încerci din nou mai târziu.", - "The tournament ended before you finished.": "Campionatul s-a sfârşit înainte să-l termini.", + "The tournament ended before you finished.": "Turneul s-a sfârşit înainte să-l termini.", "This account cannot be unlinked for ${NUM} days.": "Acest cont nu poate fi deconectat timp de ${NUM} (de) zile.", "This code cannot be used on the account that created it.": "Acest cod nu poate fi folosit pe contul pe care l-a creat.", "This is currently unavailable; please try again later.": "Nevalabil momentan; te rog să încerci din nou mai târziu.", - "This requires version ${VERSION} or newer.": "Acest lucru are nevoie de versiunea ${VERSION} sau chiar una mai nouă.", - "Tournaments disabled due to rooted device.": "Campionatele sunt dezactivate deoarece dispozitivul este înrădăcinat (rootat).", - "Tournaments require ${VERSION} or newer": "Campionatele sunt valabile de la versiunea ${VERSION} în sus", + "This requires version ${VERSION} or newer.": "Acest lucru este valabil numai de la versiunea ${VERSION} până la cea curentă.", + "Tournaments disabled due to rooted device.": "Turneele sunt dezactivate deoarece dispozitivul este înrădăcinat (rootat).", + "Tournaments require ${VERSION} or newer": "Turneele sunt valabile de la versiunea ${VERSION} în sus", "Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Deconectezi contul ${ACCOUNT} de la acest cont?\nTot progresul de pe ${ACCOUNT} va fi resetat.\n(exceptând realizările în unele cazuri)", - "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ADVERTISMENT: Reclamații cum că ai fost acuzat de trișat/hackuit au fost legate de contul tău.\nConturile prinse trișând/hackuind vor fi restricționate. Te rog să joci cinstit.", + "WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "ADVERTISMENT: Reclamații cum că ai fost acuzat de trișat/hackuit au fost legate de contul tău.\nConturile persoanelor prinse trișând/hackuind vor fi restricționate. Te rog să joci cinstit.", "Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Ai dori să îți conectezi contul tău de pe dispozitiv cu acesta?\n\nContul tău de pe dispozitiv este ${ACCOUNT1}\nAcest cont este ${ACCOUNT2}\n\nAcest lucru îți va salva progresul existent.\nAtenție: acest lucru nu poate fi reversibil!", "You already own this!": "Deja ai acest lucru!", "You can join in ${COUNT} seconds.": "Poți reintra în ${COUNT} secunde.", "You don't have enough tickets for this!": "Nu ai destule bilete pentru acest lucru!", - "You don't own that.": "Nu ai cumpărat asta.", + "You don't own that.": "Nu deți asta.", "You got ${COUNT} tickets!": "Ai primit ${COUNT} (de) bilete!", "You got a ${ITEM}!": "Ai primit 1 ${ITEM}!", "You have been promoted to a new league; congratulations!": "Ai fost promovat la o ligă noua; felicitări!", @@ -1646,7 +1648,7 @@ "You must wait a few seconds before entering a new code.": "Va trebui să aştepți câteva secunde înainte să introduci un cod nou.", "You ranked #${RANK} in the last tournament. Thanks for playing!": "Ai avut rankul #${RANK} în ultimul campionat. Mulțumesc pentru participare!", "Your account was rejected. Are you signed in?": "Contul tău a fost respins. Ești conectat?", - "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Copia ta de joc a fost modificată.\nTe rog să treci la normal orice schimbare făcută şi să încerci din nou.", + "Your copy of the game has been modified.\nPlease revert any changes and try again.": "Copia ta de joc deținută a fost modificată.\nTe rog să treci la normal orice schimbare făcută şi să încerci din nou.", "Your friend code was used by ${ACCOUNT}": "${ACCOUNT} a folosit codul tău de prieten" }, "settingNames": { @@ -1659,22 +1661,22 @@ "4 Seconds": "4 Secunde", "5 Minutes": "5 Minute", "8 Seconds": "8 Secunde", - "Allow Negative Scores": "Permite Scoruri Negative", + "Allow Negative Scores": "Permite Scorurile Negative", "Balance Total Lives": "Balansează Numărul De Vieți", "Bomb Spawning": "Spaunarea Bombelor", "Chosen One Gets Gloves": "Alesul Primește Mănuși", "Chosen One Gets Shield": "Alesul Primește Un Scut", "Chosen One Time": "Timpul Alesului", - "Enable Impact Bombs": "Permite Bombe cu Impact", - "Enable Triple Bombs": "Permite Bombe Triple", + "Enable Impact Bombs": "Folosește Bombele cu Impact", + "Enable Triple Bombs": "Permite Bombele Triple", "Entire Team Must Finish": "Toată Echipa Ta Trebuie Să Termine", "Epic Mode": "Modul Epic", - "Flag Idle Return Time": "Timp Setat Pentru Reapariția Steagurilor", - "Flag Touch Return Time": "Timp Rămas Până la Respaunarea Steagurilor", + "Flag Idle Return Time": "Timp Pentru Readucerea Steagului Neatins La Bază", + "Flag Touch Return Time": "Timp Pentru Readucerea Steagului Atins La Bază", "Hold Time": "Timp de Ținut", "Kills to Win Per Player": "Omoruri Pe Echipă/Jucător Pentru a Câștiga", "Laps": "Ture", - "Lives Per Player": "Viețile Jucătorului", + "Lives Per Player": "Vieți Pe Jucător", "Long": "Lung", "Longer": "Foarte Lung", "Mine Spawning": "Spaunarea Minelor", @@ -1686,14 +1688,14 @@ "Score to Win": "Înscrieri Pentru a Câştiga", "Short": "Scurt", "Shorter": "Foarte Scurt", - "Solo Mode": "Mod Solo", + "Solo Mode": "Modul Solo", "Target Count": "Număr de Ținte", "Time Limit": "Limită de Timp" }, "statements": { "${TEAM} is disqualified because ${PLAYER} left": "Echipa ${TEAM} este descalificată deoarece ${PLAYER} a ieșit", "Killing ${NAME} for skipping part of the track!": "${NAME} a murit deoarece a luat o scurtătură!", - "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Atenție, ${NAME}: Apăsatul turbo/spamatul butoanelor te pune la pământ." + "Warning to ${NAME}: turbo / button-spamming knocks you out.": "Atenție, ${NAME}: Apăsatul turbo / spamatul butoanelor te pune la pământ." }, "teamNames": { "Bad Guys": "Tipii Răi", @@ -1703,80 +1705,80 @@ }, "tips": { "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "O lovitură alergat-sărit-rotit-pumn perfect sincronizată poate omorî\npe cineva dintr-o singură lovitură și-ți poate câștiga respectul prietenilor.", - "Always remember to floss.": "Nu uita să te speli pe dinți.", - "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Creează profile de jucător pentru tine şi prietenii tăi cu\nnumele şi caracterele voastre preferate în loc să le folosiți pe cele generate la nimereală.", + "Always remember to floss.": "Nu uita să te speli pe dinți!", + "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "Creează profile de jucător pentru tine şi prietenii tăi cu numele şi\ncaracterele voastre preferate în loc să le folosiți pe cele generate automat.", "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "Blestemele te transformă înntr-o bombă cu ceas.\nSingurul remediu este de a prinde rapid o trusă de prim-ajutor.", - "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Înafară de aparențele lor, toate caracterele au abilități identice,\nașa că alegeți unul cu care te asemeni cel mai mult.", - "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Nu te împăuna cu scutul ăla de energie; tot poți fi aruncat de pe hartă.", - "Don't run all the time. Really. You will fall off cliffs.": "Nu fugii tot timpul. Pe bune. Vei cădea de pe hărți.", - "Don't spin for too long; you'll become dizzy and fall.": "Nu te învârti prea mult timp; vei ameți și vei cădea la pământ.", + "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "Nu te lăsa păcălit de aparențele caracterelor pe care le poți cumpăra din magazin,\ntoate au abilități identice, așa că alege-ți unul cu care te asemeni cel mai mult.", + "Don't get too cocky with that energy shield; you can still get yourself thrown off a cliff.": "Nu te împăuna cu scutul ăla de energie; tot poți fi aruncat de pe hărți.", + "Don't run all the time. Really. You will fall off cliffs.": "Nu fugi tot timpul. Pe bune. Vei cădea de pe hărți.", + "Don't spin for too long; you'll become dizzy and fall.": "Nu te învârti prea mult timp; vei ameți și vei fi pus la pământ.", "Hold any button to run. (Trigger buttons work well if you have them)": "Ține apăsat orice buton pentru a fugi. (Butoanele 'Trigger' funcționează bine şi ele dacă le ai)", - "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Ține apăsat orice buton pentru a fugi. Vei ajunge mai repede unde vrei,\ndar nu vei flua curba prea bine, așa că ai grijă să nu cazi de pe hărți.", + "Hold down any button to run. You'll get places faster\nbut won't turn very well, so watch out for cliffs.": "Pentru a fugi,ține apăsat orice buton. Vei ajunge mai repede unde vrei,\ndar nu vei lua curba prea bine, așa că ai grijă să nu cazi de pe hărți.", "Ice bombs are not very powerful, but they freeze\nwhoever they hit, leaving them vulnerable to shattering.": "Bombele de gheață nu sunt foarte puternice, dar îngheață\npe oricine lovesc, lăsând victimele vulnerabile la spargere.", - "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Dacă cineva te ia pe sus, dă-i un pumn și te va lăsa jos.\nApropo, merge și în viața reală.", - "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Dacă nu ai destule controllere,instalează aplicația '${REMOTE_APP_NAME}' \npe dispozitivele tale mobile pentru a le folosi drept controllere.", + "If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Dacă cineva te ia pe sus, dă-i un pumn și îți va da drumul.\n (Apropo, merge și în viața reală)", + "If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Dacă nu ai destule controllere, instalează aplicația '${REMOTE_APP_NAME}' \npe dispozitivele tale mobile pentru a le folosi drept controllere.", "If you are short on controllers, install the 'BombSquad Remote' app\non your iOS or Android devices to use them as controllers.": "Dacă nu ai destule controllere, instalează 'BombSquad Remote' pe\nun dispozitiv Android sau iOS pentru a-l folosi ca pe un controller.", - "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Dacă o bombă lipicioasă se lipește de tine,sari și rotește-te în cercuri.S-ar putea \nsă scapi de aceasta, în caz contrar vei face un spectacol din ultimele tale momente în viață", + "If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Dacă o bombă lipicioasă se lipește de tine, sari și rotește-te în cercuri. S-ar putea \nsă scapi de aceasta, dar dacă nu, vei face un spectacol minunat din ultimele tale momente rămase în viață.", "If you kill an enemy in one hit you get double points for it.": "Dacă omori un inamic dintr-o singură lovitură vei primi puncte duble.", - "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Dacă atingi un Blestem, singura ta şansă de viața este să\nprinzi o trusă de prim-ajutor în următoarele 5 secunde.", - "If you stay in one place, you're toast. Run and dodge to survive..": "Dacă stai într-un singur loc, vei ajunge ca o pâine prăjită. Fugi şi fereşte-te pentru a supraviețui..", - "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Dacă sunt foarte mulți jucători care intră și devin inactivi, bifează 'Dă afară jucătorii inactivi'\nîn Setări în caz că cineva uită să iasă din joc.", - "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Dacă dispozitivul tău se încălzeşte prea rapid sau ai vrea să-i conservi bateria,\ndu-te în meniul de \"Vizuale\" sau \"Rezoluție\" în Setări->Grafici.", - "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Dacă jocul rulează mai puțin bine, încearcă să lași mai jos rezoluția \nsau vizualele din setările grafice ale jocului.", - "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "În Capturează-Steagul, steagul tău trebuie să fie la baza ta pentru a înscrie. Dacă\nechipa opusă e pe cale să înscrie, o opțiune bună pentru a-i opri din a face asta este să le furi steagul.", - "In hockey, you'll maintain more speed if you turn gradually.": "În Hockey, vei menține mai multă viteză dacă te roteşti când trebuie.", + "If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Dacă atingi un blestem, singura ta şansă de a trăi este să\nprinzi o trusă de prim-ajutor în următoarele 5 secunde.", + "If you stay in one place, you're toast. Run and dodge to survive..": "Dacă stai într-un singur loc, vei muri ca un fraier. Ferește-te și aleargă din loc în loc pentru a supraviețui..", + "If you've got lots of players coming and going, turn on 'auto-kick-idle-players'\nunder settings in case anyone forgets to leave the game.": "Dacă sunt foarte mulți jucători care intră și devin inactivi,\nbifează caseta 'Dă Afară Jucătorii Inactivi' din Setări în caz că cineva uită să iasă din joc.", + "If your device gets too warm or you'd like to conserve battery power,\nturn down \"Visuals\" or \"Resolution\" in Settings->Graphics": "Dacă dispozitivul tău se încălzeşte prea rapid sau ai vrea să-i conservi bateria,\ndu-te în meniul de \"Vizuale\" sau \"Rezoluție\" în Setări -> Grafici și dă-le la un nivel mai slab.", + "If your framerate is choppy, try turning down resolution\nor visuals in the game's graphics settings.": "Dacă jocul nu rulează chiar așa de bine cum ar trebui, \nîncearcă să lași mai jos rezoluția sau vizualele din setările grafice ale jocului.", + "In Capture-the-Flag, your own flag must be at your base to score, If the other\nteam is about to score, stealing their flag can be a good way to stop them.": "În Capturează-Steagul, steagul tău trebuie să fie la baza echipei tale pentru a înscrie. Dacă\nechipa opusă e pe cale să înscrie, o bună opțiune pentru a-i opri din a face asta este să le furi steagul.", + "In hockey, you'll maintain more speed if you turn gradually.": "În Hockey, vei menține mai multă viteză dacă te întorci când trebuie.", "It's easier to win with a friend or two helping.": "E mai ușor să câștigi cu un prieten sau 2 care te ajută.", - "Jump just as you're throwing to get bombs up to the highest levels.": "Sari fix înainte să arunci pentru a trimite bombele către cele mai înalte nivele.", - "Land-mines are a good way to stop speedy enemies.": "Minele sunt folositoare pentru a opri inamicii rapizi.", - "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Multe lucruri pot fi ridicate şi aruncate, inclusiv și alți jucători. Aruncarea\ninamicilor de pe hărți poate fi o strategie efectivă şi plină de emoții.", - "No, you can't get up on the ledge. You have to throw bombs.": "Nu, nu te poți urca pe platformă. Trebuie să arunci cu bombele.", - "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Jucătorii pot intra şi ieşii în mijlocul unelor jocuri,\nşi mai poți conecta/deconecta controllerele când vrei tu.", + "Jump just as you're throwing to get bombs up to the highest levels.": "Sari imediat ce arunci bombele pentru a le trimite către cele mai înalte nivele.", + "Land-mines are a good way to stop speedy enemies.": "Minele sunt folositoare la oprirea inamicilor rapizi.", + "Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Multe lucruri pot fi ridicate şi aruncate, inclusiv alți jucători. Aruncarea\ninamicilor de pe hărți poate fi o strategie efectivă şi plină de emoții.", + "No, you can't get up on the ledge. You have to throw bombs.": "Nu, nu te poți urca pe platformă. Trebuie să arunci cu bombele înspre inamici.", + "Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "Jucătorii pot să intre și să iasă din majoritatea jocurilor când vor ei,\nși nu uita că poți conecta și deconecta controllere când vrei tu.", "Practice using your momentum to throw bombs more accurately.": "Antrenează-te folosindu-ți momentum-ul pentru a arunca bombele mai corect.", - "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Pumnii cauzează mai multe daune când te mişti,\ndeci încearcă să fugi, să sari, şi să te învârți ca un nebun.", - "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Fugi în față şi în spate înainte să arunci o bombă\npentru a învârti-o şi a o arunca mai departe.", + "Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Pumnii tăi cauzează mai multe daune când te mişti,\ndeci încearcă să fugi, să sari, şi să te învârți ca un nebun.", + "Run back and forth before throwing a bomb\nto 'whiplash' it and throw it farther.": "Mergi în față şi în spate înainte să arunci o bombă\npentru a o 'învârti', aruncând-o mai departe.", "Take out a group of enemies by\nsetting off a bomb near a TNT box.": "Omoară un grup de inamici cu ajutorul\nunei bombe lângă o cutie cu TNT.", - "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "Capul este cea mai vulnerabilă parte a corpului tău, deci o Bombă Lipicioasă\nîn ceafă înseamnă în cele mai multe cazuri game-over.", - "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Acest nivel nu se termină niciodată, dar un scor mare\nîți poate aduce foarte mult respect prin lume.", - "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Puterea aruncării este bazată pe direcția pe care o ții.\nDacă vrei să arunci ceva în fața ta într-un mod gentil, va trebui să nu te miști.", - "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Te-ai săturat de muzica originală din joc? Schimb-o cu a ta!\nVezi Setări->Audio->Coloană Sonoră", + "The head is the most vulnerable area, so a sticky-bomb\nto the noggin usually means game-over.": "Capul este cea mai vulnerabilă parte a corpului tău, \ndeci o bombă lipicioasă în ceafă înseamnă game-over.", + "This level never ends, but a high score here\nwill earn you eternal respect throughout the world.": "Acest nivel nu se termină niciodată, dar un scor mare\nîn acesta îți poate aduce foarte mult respect prin lume.", + "Throw strength is based on the direction you are holding.\nTo toss something gently in front of you, don't hold any direction.": "Puterea aruncării este bazată pe direcția ținută de tine.\nDacă vrei să arunci ceva în fața ta ușurel, va trebui să nu ții nici o direcție și să dai drumul obiectului respectiv.", + "Tired of the soundtrack? Replace it with your own!\nSee Settings->Audio->Soundtrack": "Te-ai săturat de muzica originală din joc? Schimb-o cu a ta!\n Vezi Setări -> Audio -> Soundtrack Personalizat", "Try 'Cooking off' bombs for a second or two before throwing them.": "Încearcă să ții bombele în mână pentru o secundă sau două înainte să le arunci.", - "Try tricking enemies into killing eachother or running off cliffs.": "Încearcă să păcăleşti inamicii să se omoare între ei sau să cadă de pe hărți.", - "Use the pick-up button to grab the flag < ${PICKUP} >": "Foloseşte butonul de ridicare pentru a ridica steagul < ${PICKUP} >", - "Whip back and forth to get more distance on your throws..": "Mergi în față şi în spate pentru a avea o distanță mai mare la aruncări..", - "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Poți să dai cu pumnii în stânga sau în dreapta dacă te învârți.\nAcest lucru este folositor pentru a da tipii răi jos de pe dealuri sau pentru a înscrie în hockey.", - "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Poți să îți dai seama când o bombă va exploda după culoarea\nscânteilor făcute de fitil: galben..portocaliu..roşu..BOOM.", - "You can throw bombs higher if you jump just before throwing.": "Poți arunca bombe mai sus dacă sari exact înainte să arunci.", - "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Iei daune când îți trânteşti capul de lucruri,\ndeci nu-ți trânti capul de lucruri.", + "Try tricking enemies into killing eachother or running off cliffs.": "Încearcă să-ți păcăleşti inamicii în așa fel încât aceștia încep să se omoare între ei sau să cadă de pe hărți.", + "Use the pick-up button to grab the flag < ${PICKUP} >": "Foloseşte butonul de ridicare < ${PICKUP} > pentru a ridica steagul", + "Whip back and forth to get more distance on your throws..": "Mergi în spate și în față pentru a arunca lucrurile la o distanță mai mare..", + "You can 'aim' your punches by spinning left or right.\nThis is useful for knocking bad guys off edges or scoring in hockey.": "Poți să 'țintești' cu pumnii rotindu-te la stânga și la dreapta.\nAcest lucru este folositor pentru a da tipii răi jos de pe marginile hărților sau pentru a înscrie în hockey.", + "You can judge when a bomb is going to explode based on the\ncolor of sparks from its fuse: yellow..orange..red..BOOM.": "Poți să îți dai seama când o bombă va exploda după culoarea\nscânteilor făcute de fitilul acesteia: galben..portocaliu..roşu..*BOOM*.", + "You can throw bombs higher if you jump just before throwing.": "Poți arunca bombe mai sus dacă le arunci imediat după ce sari.", + "You take damage when you whack your head on things,\nso try to not whack your head on things.": "Iei daune când îți trânteşti capul de lucruri,\ndeci încearcă să nu-ți trântești capul de lucruri.", "Your punches do much more damage if you are running or spinning.": "Pumnii tăi dau mai multe daune dacă fugi sau te învârți." } }, - "trophiesRequiredText": "Asta necesită măcar ${NUMBER} trofee.", + "trophiesRequiredText": "Acest lucru necesită cel puțin ${NUMBER} trofee.", "trophiesText": "Trofee", "trophiesThisSeasonText": "Trofeele Din Acest Sezon", "tutorial": { - "cpuBenchmarkText": "Se rulează tutorialul la viteze ridicole (în principal testează viteza CPU-ului)", + "cpuBenchmarkText": "Se rulează tutorialul la o viteză ridicolă (în principal testează viteza CPU-ului)", "phrase01Text": "Salut!", - "phrase02Text": "Bun Venit în ${APP_NAME}!", + "phrase02Text": "Bun venit în ${APP_NAME}!", "phrase03Text": "Uite niște sfaturi pentru a-ți controla caracterul:", "phrase04Text": "Multe lucruri din ${APP_NAME} sunt bazate pe FIZICĂ.", "phrase05Text": "De exemplu, când dai cu pumnul...", "phrase06Text": "...daunele sunt bazate pe viteza pumnilor tăi.", - "phrase07Text": "Vezi? Nu ne mișcăm, deci ${NAME} de-abia a simțit ceva.", - "phrase08Text": "Acum hai să sărim și să ne rotim pentru a avea viteză mai mare.", + "phrase07Text": "Vezi? Nu ne mișcăm, deci ${NAME} de-abia dacă a simțit ceva.", + "phrase08Text": "Acum hai să sărim și să ne rotim pentru a avea o viteză mai mare.", "phrase09Text": "Aha, așa mai merge.", "phrase10Text": "De asemenea, și alergatul ajută.", "phrase11Text": "Ține apăsat ORICE buton pentru a alerga.", - "phrase12Text": "Pentru pumni super puternici, încearcă să te rotești și să fugi.", + "phrase12Text": "Pentru lovituri super-puternice, încearcă să te rotești și să fugi.", "phrase13Text": "Ups; scuze pentru asta, ${NAME}.", "phrase14Text": "Poți ridica și arunca obiecte cum ar fi steaguri... sau îl poți arunca pe ${NAME}.", "phrase15Text": "În final, sunt bombele.", "phrase16Text": "Aruncatul lor are nevoie de antrenament.", "phrase17Text": "Au! Nu a fost o aruncare chiar bună.", - "phrase18Text": "Mișcatul te ajută să arunci mai departe.", - "phrase19Text": "Săritul te ajută să arunci mai sus.", - "phrase20Text": "Iar învârtirea lor te ajută să le arunci mult mai departe.", + "phrase18Text": "Mișcatul te ajută să le arunci mai departe.", + "phrase19Text": "Săritul te ajută să le arunci mai sus.", + "phrase20Text": "Iar învârtirea lor te ajută să le arunci și mai departe.", "phrase21Text": "Cronometrarea bombelor poate fi complicată.", - "phrase22Text": "Fir-ar să fie.", + "phrase22Text": "Fir-ar să fie!", "phrase23Text": "Încearcă să lași fitilul să ardă pentru un moment.", "phrase24Text": "Ura! Bine ars.", "phrase25Text": "Păi, cam asta-i tot.", @@ -1790,7 +1792,7 @@ "randomName4Text": "Marius", "randomName5Text": "Ștefan", "skipConfirmText": "Sigur vrei să treci peste tutorial? Apasă din nou orice buton pentru a confirma.", - "skipVoteCountText": "${COUNT}/${TOTAL} voturi pentru a trece peste", + "skipVoteCountText": "${COUNT}/${TOTAL} voturi pentru a trece peste tutorial", "skippingText": "Se trece peste tutorial...", "toSkipPressAnythingText": "(apasă orice buton pentru a trece peste tutorial)" }, @@ -1806,9 +1808,9 @@ "updatingAccountText": "Se îmbunătățeşte contul tău...", "upgradeText": "Îmbunătățeşte", "upgradeToPlayText": "Deblochează \"${PRO}\" în magazinul din joc pentru a juca această hartă.", - "useDefaultText": "Folosește setările prestabilite", + "useDefaultText": "Folosește Setările Prestabilite", "usesExternalControllerText": "Acest joc folosește un controller extern ca dispozitiv de intrare.", - "usingItunesText": "Se folosește Aplicația de Muzică pentru coloana sonoră...", + "usingItunesText": "Se folosește Aplicația de Muzică pentru soundtrack...", "usingItunesTurnRepeatAndShuffleOnText": "Fii sigur(ă) că shuffle e activat și repeat e pus pe ALL în iTunes.", "validatingTestBuildText": "Se Validează Versiunea De Test...", "victoryText": "Victorie!", @@ -1816,17 +1818,17 @@ "voteInProgressText": "Un vot este deja în progres.", "votedAlreadyText": "Ai votat deja", "votesNeededText": "${NUMBER} voturi necesare", - "vsText": "versus", + "vsText": "vs", "waitingForHostText": "(așteaptă ca ${HOST} să continue)", "waitingForPlayersText": "se așteaptă pentru jucători noi...", "waitingInLineText": "Așteaptă la coadă (server-ul este plin)...", - "watchAVideoText": "Uită-te la o reclamă", + "watchAVideoText": "Uită-te la o Reclamă", "watchAnAdText": "Uită-te la o Reclamă", "watchWindow": { "deleteConfirmText": "Sigur vrei să ștergi reluarea \"${REPLAY}\"?", "deleteReplayButtonText": "Șterge\nReluarea", "myReplaysText": "Reluările mele", - "noReplaySelectedErrorText": "Nicio rReluare Selectată", + "noReplaySelectedErrorText": "Nicio Reluare Selectată", "playbackSpeedText": "Viteză de redare: ${SPEED}", "renameReplayButtonText": "Redenumește\nReluarea", "renameReplayText": "Redenumește \"${REPLAY}\" în:", @@ -1840,7 +1842,7 @@ "titleText": "Vizionează", "watchReplayButtonText": "Vezi\nReluarea" }, - "waveText": "Val", + "waveText": "Valul", "wellSureText": "Sigur!", "wiimoteLicenseWindow": { "titleText": "Copyright de către DarwiinRemote" diff --git a/dist/ba_data/data/languages/russian.json b/dist/ba_data/data/languages/russian.json index 58ec990..3549696 100644 --- a/dist/ba_data/data/languages/russian.json +++ b/dist/ba_data/data/languages/russian.json @@ -1166,7 +1166,7 @@ "playlistsText": "Плей-листы", "pleaseRateText": "Если вам нравится игра ${APP_NAME}, пожалуйста, подумайте о том,\nчтобы оценить ее или написать рецензию. Это обеспечивает полезную\nобратную связь и помогает поддержать дальнейшую разработку.\n\nСпасибо!\n- Эрик", "pleaseWaitText": "Пожалуйста, подождите...", - "pluginsDetectedText": "Обнаружены новые плагины. Включите/настройте их в настройках.", + "pluginsDetectedText": "Обнаружены новые плагины! Перезапустите игру, чтобы активировать их, или настройте их в настройках.", "pluginsText": "Плагины", "practiceText": "Тренировка", "pressAnyButtonPlayAgainText": "Нажмите любую кнопку чтобы играть снова...", diff --git a/dist/ba_data/data/languages/spanish.json b/dist/ba_data/data/languages/spanish.json index 35859f4..14ed2c7 100644 --- a/dist/ba_data/data/languages/spanish.json +++ b/dist/ba_data/data/languages/spanish.json @@ -1178,7 +1178,7 @@ "playlistsText": "Listas de Juego", "pleaseRateText": "Si te gusta ${APP_NAME}, por favor tomate un momento\npara calificar o escribir una reseña. Esto proporcionará\ninformación útil y ayuda al soporte del futuro desarrollo del juego.\n\n¡gracias!\n-eric", "pleaseWaitText": "Por favor, espera...", - "pluginsDetectedText": "Nuevos plugin(s) detectados. Activar/configurarlos en los ajustes.", + "pluginsDetectedText": "Nuevos complemento(s) detectados. Reinicie para activarlos, o configúrelos en la configuración", "pluginsText": "Plugins", "practiceText": "Práctica", "pressAnyButtonPlayAgainText": "Oprime cualquier botón jugar de nuevo...", diff --git a/dist/ba_data/data/languages/tamil.json b/dist/ba_data/data/languages/tamil.json index 241e76f..4d3821c 100644 --- a/dist/ba_data/data/languages/tamil.json +++ b/dist/ba_data/data/languages/tamil.json @@ -1043,7 +1043,7 @@ "noExternalStorageErrorText": "இந்தச் சாதனத்தில் வெளிப்புறச் சேமிப்பு இல்லை", "noGameCircleText": "பிழை: GameCircle இல் உள்நுழையவில்லை", "noScoresYetText": "இன்னும் மதிப்பெண்கள் இல்லை.", - "noThanksText": "இல்லை நன்றி", + "noThanksText": "இல்லை, நன்றி!", "noTournamentsInTestBuildText": "எச்சரிக்கை: இந்த சோதனை உருவாக்கத்தில் இருந்து போட்டியின் மதிப்பெண்கள் புறக்கணிக்கப்படும்.", "noValidMapsErrorText": "இந்த விளையாட்டு வகைக்கு சரியான வரைபடங்கள் இல்லை.", "notEnoughPlayersRemainingText": "போதுமான வீரர்கள் மீதமில்லை; வெளியேறி ஒரு புதிய விளையாட்டைத் தொடங்கவும்.", @@ -1108,7 +1108,7 @@ "playlistsText": "பிளேலிஸ்ட்கள்", "pleaseRateText": "நீங்கள் ${APP_NAME} ஐ அனுபவிக்கிறீர்கள் என்றால், தயவுசெய்து எடுப்பதைக் கவனியுங்கள்\nதருணம் மற்றும் மதிப்பிடுதல் அல்லது விமர்சனம் எழுதுதல். இது வழங்குகிறது\nபயனுள்ள கருத்து மற்றும் எதிர்கால வளர்ச்சிக்கு உதவுகிறது.\n\nநன்றி!\n-எரிக்", "pleaseWaitText": "தயவுசெய்து காத்திருங்கள்...", - "pluginsDetectedText": "புதிய செருகுநிரல் (கள்) கண்டறியப்பட்டது. அமைப்புகளில் அவற்றை இயக்கவும்/கட்டமைக்கவும்.", + "pluginsDetectedText": "புதிய செருகுநிரல்(கள்) கண்டறியப்பட்டது. அவற்றைச் செயல்படுத்த மீண்டும் தொடங்கவும் அல்லது அமைப்புகளில் உள்ளமைக்கவும்.", "pluginsText": "செருகுநிரல்கள்", "practiceText": "பயிற்சி", "pressAnyButtonPlayAgainText": "மீண்டும் விளையாட எந்த பட்டனையும் அழுத்தவும்...", @@ -1304,7 +1304,7 @@ "iconsText": "சின்னங்கள்", "loadErrorText": "பக்கத்தை ஏற்ற முடியவில்லை.\nஉங்கள் இணைய இணைப்பைச் சரிபார்க்கவும்.", "loadingText": "ஏற்றுகிறது", - "mapsText": "Maps", + "mapsText": "வரைபடங்கள்", "miniGamesText": "மினிகேம்ஸ்", "oneTimeOnlyText": "(ஒரு முறை மட்டும்)", "purchaseAlreadyInProgressText": "இந்த பொருளை வாங்குவது ஏற்கனவே நடந்து கொண்டிருக்கிறது.", @@ -1361,11 +1361,11 @@ "tournamentStandingsText": "போட்டி நிலைகள்", "tournamentText": "போட்டி", "tournamentTimeExpiredText": "போட்டி நேரம் காலாவதியானது", - "tournamentsText": "Tournaments", + "tournamentsText": "போட்டிகள்", "translations": { "characterNames": { "Agent Johnson": "ஏஜெண்ட் ஜான்சன்", - "B-9000": "B-9000", + "B-9000": "பி-9000", "Bernard": "பர்னார்ட்", "Bones": "போன்ஸ்", "Butch": "பட்ச்", @@ -1526,7 +1526,7 @@ "Thai": "தாய்", "Turkish": "டர்கிஷ்", "Ukrainian": "உக்ரைனியன்", - "Venetian": "வெநெடியன்", + "Venetian": "வெனிசியன்", "Vietnamese": "வியெட்னமீஸ்" }, "leagueNames": { @@ -1536,7 +1536,7 @@ "Silver": "வெள்ளி" }, "mapsNames": { - "Big G": "Big G", + "Big G": "பிக் சி", "Bridgit": "பிரிட்சிட்", "Courtyard": "கோர்ட்யார்ட்", "Crag Castle": "கிரக் கோட்டை", @@ -1689,7 +1689,7 @@ }, "tips": { "A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "ஒரு சரியான நேர ஓட்டம்-ஜம்பிங்-ஸ்பின்-பஞ்ச் ஒரே வெற்றியில் கொல்லலாம்\nமற்றும் உங்கள் நண்பர்களிடமிருந்து உங்களுக்கு வாழ்நாள் முழுவதும் மரியாதை கிடைக்கும்.", - "Always remember to floss.": "எப்போதும் floss செய்ய நினைவில் கொள்ளுங்கள்.", + "Always remember to floss.": "எப்போதும் ஃப்ளோஸ் செய்ய நினைவில் கொள்ளுங்கள்.", "Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "உங்களுக்கும் உங்கள் நண்பர்களுக்கும் பிளேயர் சுயவிவரங்களை உருவாக்கவும்\nசீரற்றவற்றைப் பயன்படுத்துவதற்குப் பதிலாக உங்கள் விருப்பமான பெயர்கள் மற்றும் தோற்றங்கள்.", "Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "சாபப் பெட்டிகள் உங்களை ஒரு டிக்கிங் டைம் பாம்டாக மாற்றும்.\nஒரே ஒரு ஹெல்த் பேக் சீக்கிரம் பிடிப்பதுதான்.", "Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "அவற்றின் தோற்றம் இருந்தபோதிலும், அனைத்து கதாபாத்திரங்களின் திறன்களும் ஒரே மாதிரியானவை,\nஎனவே நீங்கள் மிகவும் நெருக்கமாக ஒத்திருப்பதைத் தேர்ந்தெடுக்கவும்.", @@ -1750,7 +1750,7 @@ "phrase08Text": "இப்போது அதிக வேகத்தைப் பெற குதித்து சுழலலாம்.", "phrase09Text": "ஆ, அது சிறந்தது.", "phrase10Text": "ஓடுவதும் உதவுகிறது.", - "phrase11Text": "இயக்க எந்த பொத்தானையும் அழுத்திப் பிடிக்கவும்.", + "phrase11Text": "இயக்க எந்த பட்டனையும் அழுத்திப் பிடிக்கவும்.", "phrase12Text": "கூடுதல் அற்புதமான குத்துகளுக்கு, ஓடவும் சுழலவும் முயற்சிக்கவும்.", "phrase13Text": "அச்சச்சோ; ${NAME} பற்றி மன்னிக்கவும்.", "phrase14Text": "கொடிகள் .. அல்லது ${NAME} போன்றவற்றை எடுத்து எறியலாம்.", @@ -1761,11 +1761,11 @@ "phrase19Text": "குதிப்பது உயரத்தை எறிய உதவுகிறது.", "phrase20Text": "உங்கள் குண்டுகளை இன்னும் நீண்ட தூரத்திற்கு \"சவுக்கடி\".", "phrase21Text": "உங்கள் குண்டுகளை டைமிங் செய்வது தந்திரமானதாக இருக்கலாம்.", - "phrase22Text": "Dang.", + "phrase22Text": "அச்சச்சோ.", "phrase23Text": "ஒன்றிரண்டு அல்லது இரண்டு நிமிடங்களுக்கு உருகி \"Cooking off\" முயற்சிக்கவும்.", "phrase24Text": "ஹூரே! நன்றாக போடப்பட்டது", "phrase25Text": "சரி, அது பற்றி தான்.", - "phrase26Text": "இப்போது அவர்களைப் போய் புலி!", + "phrase26Text": "இப்போது அவர்களைப் போய் புடி புலியே!", "phrase27Text": "உங்கள் பயிற்சியை நினைவில் கொள்ளுங்கள், நீங்கள் உயிருடன் திரும்பி வருவீர்கள்!", "phrase28Text": "...நன்று,இருக்கலாம்...", "phrase29Text": "நல்ல அதிர்ஷ்டம்!", diff --git a/dist/ba_data/data/languages/turkish.json b/dist/ba_data/data/languages/turkish.json index 98961ee..8a8dae0 100644 --- a/dist/ba_data/data/languages/turkish.json +++ b/dist/ba_data/data/languages/turkish.json @@ -216,7 +216,7 @@ }, "Rookie Onslaught Victory": { "description": "Tüm dalgaları kazan", - "descriptionComplete": "Tüm dalgalar kazanıldı", + "descriptionComplete": "Tüm dalgaları kazan", "descriptionFull": "${LEVEL} da tüm dalgaları kazan", "descriptionFullComplete": "${LEVEL} da tüm dalgalar kazanıldı", "name": "${LEVEL} Galibiyeti" @@ -226,7 +226,7 @@ "descriptionComplete": "2000 puan kazanıldı", "descriptionFull": "${LEVEL} da 2000 puan kazan", "descriptionFullComplete": "${LEVEL} da 2000 puan kazanıldı", - "name": "${LEVEL} Tanrısı" + "name": "${LEVEL} Tanrı" }, "Runaround Master": { "description": "500 puan kazan", @@ -237,7 +237,7 @@ }, "Runaround Wizard": { "description": "1000 puan kazan", - "descriptionComplete": "1000 puan kazanıldı", + "descriptionComplete": "1000 puan kazan", "descriptionFull": "${LEVEL} da 1000 puan kazan", "descriptionFullComplete": "${LEVEL} da 1000 puan kazanıldı", "name": "${LEVEL} Büyücüsü" @@ -249,7 +249,7 @@ }, "Stayin' Alive": { "description": "Hiç ölmeden Kazan", - "descriptionComplete": "Hiç ölmeden kazanıldı", + "descriptionComplete": "Hiç ölmeden kazan", "descriptionFull": "Hiç ölmeden ${LEVEL} da kazan", "descriptionFullComplete": "Hiç ölmeden ${LEVEL} da kazanıldı", "name": "Hayatta Kal" @@ -259,7 +259,7 @@ "descriptionComplete": "Tek yumruk ile %100 hasar verildi", "descriptionFull": "${LEVEL} da tek yumruk ile %100 hasar ver", "descriptionFullComplete": "${LEVEL} da tek yumruk ile %100 hasar verildi", - "name": "Super Mega Yumruk" + "name": "Süper Mega Yumruk" }, "Super Punch": { "description": "Tek yumruk ile %50 hasar ver", @@ -277,19 +277,19 @@ }, "Team Player": { "descriptionFull": "4+ oyuncu ile bir Takımlar oyunu başlat", - "descriptionFullComplete": "4+ oyuncu ile bir Takımlar oyunu başlatıldı", + "descriptionFullComplete": "4+ oyuncu ile bir Takım oyunu başlat", "name": "Takım Oyuncusu" }, "The Great Wall": { "description": "Bütün haylazları durdur", - "descriptionComplete": "Bütün haylazlar durduruldu", + "descriptionComplete": "Bütün haylazları durdur", "descriptionFull": "${LEVEL} da bütün haylazları durdur", "descriptionFullComplete": "${LEVEL} da bütün haylazlar durduruldu", "name": "Muhteşem Bariyer" }, "The Wall": { "description": "Bütün haylazları durdur", - "descriptionComplete": "Bütün haylazlar durduruldu", + "descriptionComplete": "Bütün haylazları durdur", "descriptionFull": "${LEVEL} da bütün haylazları durdur", "descriptionFullComplete": "${LEVEL} da bütün haylazlar durduruldu", "name": "Bariyer" @@ -320,7 +320,7 @@ "descriptionComplete": "Tüm dalgalar tamamlandı", "descriptionFull": "${LEVEL} da tüm dalgaları tamamla", "descriptionFullComplete": "${LEVEL} da tüm dalgalar tamamlandı", - "name": "${LEVEL} Galibiyeti" + "name": "${LEVEL} Galibiyet" } }, "achievementsRemainingText": "Kalan Başarılar;", @@ -353,14 +353,14 @@ "bombBoldText": "BOMBA", "bombText": "Bomba", "boostText": "Öne Geç", - "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} Uygulaması kendisini yapılandırdı", + "bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} Uygulamayı kendisine yapılandır", "buttonText": "buton", "canWeDebugText": "Oyun otomatik olarak hataları, çökmeleri ve basit \nkullanım istatistiklerini geliştiriciye gondersin mi?\n\nBu veri içeriği kişisel bilgilerinizi kullanmaz\noyunun daha iyi çalışmasına yardımcı olur.", "cancelText": "İptal", "cantConfigureDeviceText": "Üzgünüz, ${DEVICE} ayarlanabilir değil.", "challengeEndedText": "Bu mücadele sona erdi.", "chatMuteText": "Konuşmayı sustur", - "chatMutedText": "Konuşma Susturuldu", + "chatMutedText": "Sohbet Susturuldu", "chatUnMuteText": "Konuşmayı aç", "choosingPlayerText": "", "completeThisLevelToProceedText": "İlerlemek için bu \nseviyeyi tamamlamalısınız!", @@ -438,7 +438,7 @@ "movementControlScaleText": "Hareket Kontrolü Ölçeği", "movementText": "Hareket", "resetText": "Sıfırla", - "swipeControlsHiddenText": "Sürme Simgelerini Gizle", + "swipeControlsHiddenText": "Joystick'i gizle", "swipeInfoText": "\"Sürme\" kontrol stilleri kullanışlıdır fakat\nkontrollere bakmadan oynamak daha kolaydır.", "swipeText": "sürme", "titleText": "Dokunmatikleri Yapılandır" @@ -1108,7 +1108,7 @@ "playlistsText": "ÇalmaListesi", "pleaseRateText": "Eğer ${APP_NAME}'dan zevk aldıysan, lütfen oyunu değerlerdir\nve yorumunu yaz. Bu oyunun daha fazla geliştirilmesine\nyardımcı olur.\n\nteşekkürler!\n-eric", "pleaseWaitText": "Lütfen bekle...", - "pluginsDetectedText": "Yeni eklenti(ler) tespit edildi. Bunları ayarlardan etkinleştirin / yapılandırın.", + "pluginsDetectedText": "Yeni eklentiler tespit edildi. Onları etkinleştirmek veya ayarlarda yapılandırmak için oyunu yeniden başlatın.", "pluginsText": "Eklentiler", "practiceText": "Alıştırma", "pressAnyButtonPlayAgainText": "Tekrar oynamak için bir tuşa basın...", diff --git a/dist/ba_data/data/languages/venetian.json b/dist/ba_data/data/languages/venetian.json index 30ea63e..448e980 100644 --- a/dist/ba_data/data/languages/venetian.json +++ b/dist/ba_data/data/languages/venetian.json @@ -1105,7 +1105,7 @@ "playlistsText": "Łiste de zugo", "pleaseRateText": "Se ${APP_NAME} el ze drio piazerte, tote un àtemo par\nłasarghe zó na vałudasion o scrìvarghe zó un comento. 'Ste\nopinion łe tornarà còmode par dezviłupi fuduri de'l zugo.\n\ngrasie!\n-eric", "pleaseWaitText": "Speta n'àtemo...", - "pluginsDetectedText": "Estension nove rełevàe. Atìvełe/configùrełe inte łe inpostasion.", + "pluginsDetectedText": "Estension nove rełevàe. Retaca el zugo par ativarle, o configùrełe so łe inpostasion.", "pluginsText": "Estension", "practiceText": "Pràtega", "pressAnyButtonPlayAgainText": "Struca un boton calsìase par zugar danovo...", diff --git a/dist/ba_data/python/ba/_accountv1.py b/dist/ba_data/python/ba/_accountv1.py index 0b07457..825a19a 100644 --- a/dist/ba_data/python/ba/_accountv1.py +++ b/dist/ba_data/python/ba/_accountv1.py @@ -74,7 +74,7 @@ class AccountV1Subsystem: def get_league_rank_points(self, data: dict[str, Any] | None, - subset: str = None) -> int: + subset: str | None = None) -> int: """(internal)""" if data is None: return 0 diff --git a/dist/ba_data/python/ba/_achievement.py b/dist/ba_data/python/ba/_achievement.py index 5a81d30..22b1bc5 100644 --- a/dist/ba_data/python/ba/_achievement.py +++ b/dist/ba_data/python/ba/_achievement.py @@ -610,8 +610,8 @@ class Achievement: x: float, y: float, delay: float, - outdelay: float = None, - color: Sequence[float] = None, + outdelay: float | None = None, + color: Sequence[float] | None = None, style: str = 'post_game') -> list[ba.Actor]: """Create a display for the Achievement. diff --git a/dist/ba_data/python/ba/_ads.py b/dist/ba_data/python/ba/_ads.py index fbf5696..ff688fd 100644 --- a/dist/ba_data/python/ba/_ads.py +++ b/dist/ba_data/python/ba/_ads.py @@ -53,14 +53,15 @@ class AdsSubsystem: def show_ad(self, purpose: str, - on_completion_call: Callable[[], Any] = None) -> None: + on_completion_call: Callable[[], Any] | None = None) -> None: """(internal)""" self.last_ad_purpose = purpose _ba.show_ad(purpose, on_completion_call) - def show_ad_2(self, - purpose: str, - on_completion_call: Callable[[bool], Any] = None) -> None: + def show_ad_2( + self, + purpose: str, + on_completion_call: Callable[[bool], Any] | None = None) -> None: """(internal)""" self.last_ad_purpose = purpose _ba.show_ad_2(purpose, on_completion_call) diff --git a/dist/ba_data/python/ba/_app.py b/dist/ba_data/python/ba/_app.py index 82216d4..97cfbdc 100644 --- a/dist/ba_data/python/ba/_app.py +++ b/dist/ba_data/python/ba/_app.py @@ -341,7 +341,6 @@ class App: from bastd import maps as stdmaps from bastd.actor import spazappearance from ba._generated.enums import TimeType - self._aioloop = _asyncio.setup_asyncio() @@ -430,8 +429,6 @@ class App: self.meta.on_app_running() self.plugins.on_app_running() - import custom_hooks - custom_hooks.on_app_running() # from ba._dependency import test_depset # test_depset() @@ -580,7 +577,7 @@ class App: def launch_coop_game(self, game: str, force: bool = False, - args: dict = None) -> bool: + args: dict | None = None) -> bool: """High level way to launch a local co-op session.""" # pylint: disable=cyclic-import from ba._campaign import getcampaign diff --git a/dist/ba_data/python/ba/_apputils.py b/dist/ba_data/python/ba/_apputils.py index ea88890..de13b82 100644 --- a/dist/ba_data/python/ba/_apputils.py +++ b/dist/ba_data/python/ba/_apputils.py @@ -177,9 +177,10 @@ def garbage_collect() -> None: gc.collect() -def print_live_object_warnings(when: Any, - ignore_session: ba.Session = None, - ignore_activity: ba.Activity = None) -> None: +def print_live_object_warnings( + when: Any, + ignore_session: ba.Session | None = None, + ignore_activity: ba.Activity | None = None) -> None: """Print warnings for remaining objects in the current context.""" # pylint: disable=cyclic-import from ba._session import Session diff --git a/dist/ba_data/python/ba/_coopgame.py b/dist/ba_data/python/ba/_coopgame.py index 2e98781..f48fbc5 100644 --- a/dist/ba_data/python/ba/_coopgame.py +++ b/dist/ba_data/python/ba/_coopgame.py @@ -177,7 +177,7 @@ class CoopGameActivity(GameActivity[PlayerType, TeamType]): def spawn_player_spaz(self, player: PlayerType, position: Sequence[float] = (0.0, 0.0, 0.0), - angle: float = None) -> PlayerSpaz: + angle: float | None = None) -> PlayerSpaz: """Spawn and wire up a standard player spaz.""" spaz = super().spawn_player_spaz(player, position, angle) diff --git a/dist/ba_data/python/ba/_gameactivity.py b/dist/ba_data/python/ba/_gameactivity.py index c432e17..0d22185 100644 --- a/dist/ba_data/python/ba/_gameactivity.py +++ b/dist/ba_data/python/ba/_gameactivity.py @@ -841,7 +841,7 @@ class GameActivity(Activity[PlayerType, TeamType]): def spawn_player_spaz(self, player: PlayerType, position: Sequence[float] = (0, 0, 0), - angle: float = None) -> PlayerSpaz: + angle: float | None = None) -> PlayerSpaz: """Create and wire up a ba.PlayerSpaz for the provided ba.Player.""" # pylint: disable=too-many-locals # pylint: disable=cyclic-import diff --git a/dist/ba_data/python/ba/_general.py b/dist/ba_data/python/ba/_general.py index 090e81a..d32b933 100644 --- a/dist/ba_data/python/ba/_general.py +++ b/dist/ba_data/python/ba/_general.py @@ -360,7 +360,7 @@ def _verify_object_death(wref: weakref.ref) -> None: print_active_refs(obj) -def storagename(suffix: str = None) -> str: +def storagename(suffix: str | None = None) -> str: """Generate a unique name for storing class data in shared places. Category: **General Utility Functions** diff --git a/dist/ba_data/python/ba/_language.py b/dist/ba_data/python/ba/_language.py index 8047a13..dbd740e 100644 --- a/dist/ba_data/python/ba/_language.py +++ b/dist/ba_data/python/ba/_language.py @@ -240,7 +240,7 @@ class LanguageSubsystem: def get_resource(self, resource: str, - fallback_resource: str = None, + fallback_resource: str | None = None, fallback_value: Any = None) -> Any: """Return a translation resource by name. diff --git a/dist/ba_data/python/ba/_level.py b/dist/ba_data/python/ba/_level.py index b3c0237..124f068 100644 --- a/dist/ba_data/python/ba/_level.py +++ b/dist/ba_data/python/ba/_level.py @@ -25,7 +25,7 @@ class Level: gametype: type[ba.GameActivity], settings: dict, preview_texture_name: str, - displayname: str = None): + displayname: str | None = None): self._name = name self._gametype = gametype self._settings = settings diff --git a/dist/ba_data/python/ba/_map.py b/dist/ba_data/python/ba/_map.py index db70c76..b8510a0 100644 --- a/dist/ba_data/python/ba/_map.py +++ b/dist/ba_data/python/ba/_map.py @@ -388,7 +388,8 @@ class Map(Actor): assert farthestpt is not None return tuple(farthestpt) - def get_flag_position(self, team_index: int = None) -> Sequence[float]: + def get_flag_position(self, + team_index: int | None = None) -> Sequence[float]: """Return a flag position on the map for the given team index. Pass None to get the default flag point. diff --git a/dist/ba_data/python/ba/_messages.py b/dist/ba_data/python/ba/_messages.py index 2e0a97f..1ea794c 100644 --- a/dist/ba_data/python/ba/_messages.py +++ b/dist/ba_data/python/ba/_messages.py @@ -236,17 +236,17 @@ class HitMessage: """ def __init__(self, - srcnode: ba.Node = None, - pos: Sequence[float] = None, - velocity: Sequence[float] = None, + srcnode: ba.Node | None = None, + pos: Sequence[float] | None = None, + velocity: Sequence[float] | None = None, magnitude: float = 1.0, velocity_magnitude: float = 0.0, radius: float = 1.0, - source_player: ba.Player = None, + source_player: ba.Player | None = None, kick_back: float = 1.0, - flat_damage: float = None, + flat_damage: float | None = None, hit_type: str = 'generic', - force_direction: Sequence[float] = None, + force_direction: Sequence[float] | None = None, hit_subtype: str = 'default'): """Instantiate a message with given values.""" diff --git a/dist/ba_data/python/ba/_music.py b/dist/ba_data/python/ba/_music.py index 2944f29..0c5bbae 100644 --- a/dist/ba_data/python/ba/_music.py +++ b/dist/ba_data/python/ba/_music.py @@ -273,7 +273,7 @@ class MusicSubsystem: musictype: MusicType | str | None, continuous: bool = False, mode: MusicPlayMode = MusicPlayMode.REGULAR, - testsoundtrack: dict[str, Any] = None) -> None: + testsoundtrack: dict[str, Any] | None = None) -> None: """Plays the requested music type/mode. For most cases, setmusic() is the proper call to use, which itself diff --git a/dist/ba_data/python/ba/_plugin.py b/dist/ba_data/python/ba/_plugin.py index d59cb63..6a3f2e8 100644 --- a/dist/ba_data/python/ba/_plugin.py +++ b/dist/ba_data/python/ba/_plugin.py @@ -66,6 +66,7 @@ class PluginSubsystem: def load_plugins(self) -> None: """(internal)""" from ba._general import getclass + from ba._language import Lstr # Note: the plugins we load is purely based on what's enabled # in the app config. Our meta-scan gives us a list of available @@ -76,15 +77,21 @@ class PluginSubsystem: assert isinstance(plugstates, dict) plugkeys: list[str] = sorted(key for key, val in plugstates.items() if val.get('enabled', False)) + disappeared_plugs: set[str] = set() for plugkey in plugkeys: try: cls = getclass(plugkey, Plugin) + except ModuleNotFoundError: + disappeared_plugs.add(plugkey) + continue except Exception as exc: _ba.playsound(_ba.getsound('error')) - # TODO: Lstr. - errstr = f"Error loading plugin class '{plugkey}': {exc}" - _ba.screenmessage(errstr, color=(1, 0, 0)) - _ba.log(errstr, to_server=False) + _ba.screenmessage(Lstr(resource='pluginClassLoadErrorText', + subs=[('${PLUGIN}', plugkey), + ('${ERROR}', str(exc))]), + color=(1, 0, 0)) + _ba.log(f"Error loading plugin class '{plugkey}': {exc}", + to_server=False) continue try: plugin = cls() @@ -93,10 +100,29 @@ class PluginSubsystem: except Exception as exc: from ba import _error _ba.playsound(_ba.getsound('error')) - # TODO: Lstr. - _ba.screenmessage(f"Error loading plugin: '{plugkey}': {exc}", + _ba.screenmessage(Lstr(resource='pluginInitErrorText', + subs=[('${PLUGIN}', plugkey), + ('${ERROR}', str(exc))]), color=(1, 0, 0)) - _error.print_exception(f"Error loading plugin: '{plugkey}'.") + _error.print_exception(f"Error initing plugin: '{plugkey}'.") + + # If plugins disappeared, let the user know gently and remove them + # from the config so we'll again let the user know if they later + # reappear. This makes it much smoother to switch between users + # or workspaces. + if disappeared_plugs: + _ba.playsound(_ba.getsound('shieldDown')) + _ba.screenmessage(Lstr(resource='pluginsRemovedText', + subs=[('${NUM}', + str(len(disappeared_plugs)))]), + color=(1, 1, 0)) + _ba.log( + f'{len(disappeared_plugs)} plugin(s) no longer found:' + f' {disappeared_plugs}', + to_server=False) + for goneplug in disappeared_plugs: + del _ba.app.config['Plugins'][goneplug] + _ba.app.config.commit() @dataclass diff --git a/dist/ba_data/python/ba/_profile.py b/dist/ba_data/python/ba/_profile.py index be0a831..308b6bf 100644 --- a/dist/ba_data/python/ba/_profile.py +++ b/dist/ba_data/python/ba/_profile.py @@ -50,7 +50,7 @@ def get_player_profile_icon(profilename: str) -> str: def get_player_profile_colors( profilename: str | None, - profiles: dict[str, dict[str, Any]] = None + profiles: dict[str, dict[str, Any]] | None = None ) -> tuple[tuple[float, float, float], tuple[float, float, float]]: """Given a profile, return colors for them.""" appconfig = _ba.app.config diff --git a/dist/ba_data/python/ba/_session.py b/dist/ba_data/python/ba/_session.py index f5d9775..5413499 100644 --- a/dist/ba_data/python/ba/_session.py +++ b/dist/ba_data/python/ba/_session.py @@ -72,8 +72,8 @@ class Session: def __init__(self, depsets: Sequence[ba.DependencySet], - team_names: Sequence[str] = None, - team_colors: Sequence[Sequence[float]] = None, + team_names: Sequence[str] | None = None, + team_colors: Sequence[Sequence[float]] | None = None, min_players: int = 1, max_players: int = 8): """Instantiate a session. diff --git a/dist/ba_data/python/ba/_stats.py b/dist/ba_data/python/ba/_stats.py index 62fc662..71f088d 100644 --- a/dist/ba_data/python/ba/_stats.py +++ b/dist/ba_data/python/ba/_stats.py @@ -314,11 +314,11 @@ class Stats: def player_scored(self, player: ba.Player, base_points: int = 1, - target: Sequence[float] = None, + target: Sequence[float] | None = None, kill: bool = False, - victim_player: ba.Player = None, + victim_player: ba.Player | None = None, scale: float = 1.0, - color: Sequence[float] = None, + color: Sequence[float] | None = None, title: str | ba.Lstr | None = None, screenmessage: bool = True, display: bool = True, @@ -422,7 +422,7 @@ class Stats: def player_was_killed(self, player: ba.Player, killed: bool = False, - killer: ba.Player = None) -> None: + killer: ba.Player | None = None) -> None: """Should be called when a player is killed.""" from ba._language import Lstr name = player.getname() diff --git a/dist/ba_data/python/ba/_store.py b/dist/ba_data/python/ba/_store.py index ec63803..81a2e21 100644 --- a/dist/ba_data/python/ba/_store.py +++ b/dist/ba_data/python/ba/_store.py @@ -398,7 +398,7 @@ def get_clean_price(price_string: str) -> str: return psubs.get(price_string, price_string) -def get_available_purchase_count(tab: str = None) -> int: +def get_available_purchase_count(tab: str | None = None) -> int: """(internal)""" try: if _ba.get_v1_account_state() != 'signed_in': diff --git a/dist/ba_data/python/ba/_teamgame.py b/dist/ba_data/python/ba/_teamgame.py index 4efe5c8..ccf9418 100644 --- a/dist/ba_data/python/ba/_teamgame.py +++ b/dist/ba_data/python/ba/_teamgame.py @@ -91,8 +91,8 @@ class TeamGameActivity(GameActivity[PlayerType, TeamType]): def spawn_player_spaz(self, player: PlayerType, - position: Sequence[float] = None, - angle: float = None) -> PlayerSpaz: + position: Sequence[float] | None = None, + angle: float | None = None) -> PlayerSpaz: """ Method override; spawns and wires up a standard ba.PlayerSpaz for a ba.Player. diff --git a/dist/ba_data/python/ba/_ui.py b/dist/ba_data/python/ba/_ui.py index 4bf2b70..8ec2e27 100644 --- a/dist/ba_data/python/ba/_ui.py +++ b/dist/ba_data/python/ba/_ui.py @@ -144,7 +144,7 @@ class UISubsystem: _ba.timer(1.0, _delay_kill, timetype=TimeType.REAL) self._main_menu_window = window - def clear_main_menu_window(self, transition: str = None) -> None: + def clear_main_menu_window(self, transition: str | None = None) -> None: """Clear any existing 'main' window with the provided transition.""" if self._main_menu_window: if transition is not None: diff --git a/dist/ba_data/python/ba/_workspace.py b/dist/ba_data/python/ba/_workspace.py index debbdb1..72f7343 100644 --- a/dist/ba_data/python/ba/_workspace.py +++ b/dist/ba_data/python/ba/_workspace.py @@ -52,17 +52,17 @@ class WorkspaceSubsystem: daemon=True, ).start() - def _errmsg(self, msg: str | ba.Lstr) -> None: + def _errmsg(self, msg: ba.Lstr) -> None: _ba.screenmessage(msg, color=(1, 0, 0)) _ba.playsound(_ba.getsound('error')) - def _successmsg(self, msg: str | ba.Lstr) -> None: + def _successmsg(self, msg: ba.Lstr) -> None: _ba.screenmessage(msg, color=(0, 1, 0)) _ba.playsound(_ba.getsound('gunCocking')) def _set_active_workspace_bg(self, workspaceid: str, workspacename: str, on_completed: Callable[[], None]) -> None: - # pylint: disable=too-many-branches + from ba._language import Lstr class _SkipSyncError(RuntimeError): pass @@ -101,45 +101,42 @@ class WorkspaceSubsystem: break state.iteration += 1 - extras: list[str] = [] - # Hmm; let's not show deletes for now since currently lots of - # .pyc files get deleted. - if bool(False): - if state.total_deletes: - extras.append(f'{state.total_deletes} files deleted') - if state.total_downloads: - extras.append(f'{state.total_downloads} files downloaded') - if state.total_up_to_date: - extras.append(f'{state.total_up_to_date} files up-to-date') - # Actually let's try with none of this; seems a bit excessive. - if bool(False) and extras: - extras_s = '\n' + ', '.join(extras) + '.' - else: - extras_s = '' - _ba.pushcall(tpartial(self._successmsg, - f'{workspacename} activated.{extras_s}'), - from_other_thread=True) + _ba.pushcall( + tpartial( + self._successmsg, + Lstr(resource='activatedText', + subs=[('${THING}', workspacename)]), + ), + from_other_thread=True, + ) except _SkipSyncError: - _ba.pushcall(tpartial( - self._errmsg, f'Can\'t sync {workspacename}' - f'. Reusing previous synced version.'), - from_other_thread=True) + _ba.pushcall( + tpartial( + self._errmsg, + Lstr(resource='workspaceSyncReuseText', + subs=[('$WORKSPACE', workspacename)])), + from_other_thread=True, + ) except CleanError as exc: # Avoid reusing existing if we fail in the middle; could # be in wonky state. set_path = False - _ba.pushcall(tpartial(self._errmsg, str(exc)), + _ba.pushcall(tpartial(self._errmsg, Lstr(value=str(exc))), from_other_thread=True) except Exception: # Ditto. set_path = False - logging.exception('Error syncing workspace.') - # TODO: Lstr. - _ba.pushcall(tpartial( - self._errmsg, 'Error syncing workspace. See log for details.'), - from_other_thread=True) + logging.exception("Error syncing workspace '%s'.", workspacename) + _ba.pushcall( + tpartial( + self._errmsg, + Lstr(resource='workspaceSyncErrorText', + subs=[('${WORKSPACE}', workspacename)]), + ), + from_other_thread=True, + ) if set_path and wspath.is_dir(): # Add to Python paths and also to list of stuff to be scanned diff --git a/dist/ba_data/python/bastd/actor/bomb.py b/dist/ba_data/python/bastd/actor/bomb.py index 96e5aa7..626a25a 100644 --- a/dist/ba_data/python/bastd/actor/bomb.py +++ b/dist/ba_data/python/bastd/actor/bomb.py @@ -327,7 +327,7 @@ class Blast(ba.Actor): velocity: Sequence[float] = (0.0, 0.0, 0.0), blast_radius: float = 2.0, blast_type: str = 'normal', - source_player: ba.Player = None, + source_player: ba.Player | None = None, hit_type: str = 'explosion', hit_subtype: str = 'normal'): """Instantiate with given values.""" @@ -657,8 +657,8 @@ class Bomb(ba.Actor): bomb_type: str = 'normal', blast_radius: float = 2.0, bomb_scale: float = 1.0, - source_player: ba.Player = None, - owner: ba.Node = None): + source_player: ba.Player | None = None, + owner: ba.Node | None = None): """Create a new Bomb. bomb_type can be 'ice','impact','land_mine','normal','sticky', or diff --git a/dist/ba_data/python/bastd/actor/controlsguide.py b/dist/ba_data/python/bastd/actor/controlsguide.py index 827c260..92a1115 100644 --- a/dist/ba_data/python/bastd/actor/controlsguide.py +++ b/dist/ba_data/python/bastd/actor/controlsguide.py @@ -27,7 +27,7 @@ class ControlsGuide(ba.Actor): position: tuple[float, float] = (390.0, 120.0), scale: float = 1.0, delay: float = 0.0, - lifespan: float = None, + lifespan: float | None = None, bright: bool = False): """Instantiate an overlay. diff --git a/dist/ba_data/python/bastd/actor/flag.py b/dist/ba_data/python/bastd/actor/flag.py index ff5d210..deaa620 100644 --- a/dist/ba_data/python/bastd/actor/flag.py +++ b/dist/ba_data/python/bastd/actor/flag.py @@ -167,9 +167,9 @@ class Flag(ba.Actor): def __init__(self, position: Sequence[float] = (0.0, 1.0, 0.0), color: Sequence[float] = (1.0, 1.0, 1.0), - materials: Sequence[ba.Material] = None, + materials: Sequence[ba.Material] | None = None, touchable: bool = True, - dropped_timeout: int = None): + dropped_timeout: int | None = None): """Instantiate a flag. If 'touchable' is False, the flag will only touch terrain; diff --git a/dist/ba_data/python/bastd/actor/image.py b/dist/ba_data/python/bastd/actor/image.py index 383926f..71f23ef 100644 --- a/dist/ba_data/python/bastd/actor/image.py +++ b/dist/ba_data/python/bastd/actor/image.py @@ -40,9 +40,9 @@ class Image(ba.Actor): attach: Attach = Attach.CENTER, color: Sequence[float] = (1.0, 1.0, 1.0, 1.0), scale: tuple[float, float] = (100.0, 100.0), - transition_out_delay: float = None, - model_opaque: ba.Model = None, - model_transparent: ba.Model = None, + transition_out_delay: float | None = None, + model_opaque: ba.Model | None = None, + model_transparent: ba.Model | None = None, vr_depth: float = 0.0, host_only: bool = False, front: bool = False): diff --git a/dist/ba_data/python/bastd/actor/onscreencountdown.py b/dist/ba_data/python/bastd/actor/onscreencountdown.py index 309ccb7..618c0c4 100644 --- a/dist/ba_data/python/bastd/actor/onscreencountdown.py +++ b/dist/ba_data/python/bastd/actor/onscreencountdown.py @@ -20,7 +20,9 @@ class OnScreenCountdown(ba.Actor): Useful for time-based games that count down to zero. """ - def __init__(self, duration: int, endcall: Callable[[], Any] = None): + def __init__(self, + duration: int, + endcall: Callable[[], Any] | None = None): """Duration is provided in seconds.""" super().__init__() self._timeremaining = duration @@ -73,7 +75,7 @@ class OnScreenCountdown(ba.Actor): # Release callbacks/refs. self._endcall = None - def _update(self, forcevalue: int = None) -> None: + def _update(self, forcevalue: int | None = None) -> None: if forcevalue is not None: tval = forcevalue else: diff --git a/dist/ba_data/python/bastd/actor/powerupbox.py b/dist/ba_data/python/bastd/actor/powerupbox.py index fe01304..868667c 100644 --- a/dist/ba_data/python/bastd/actor/powerupbox.py +++ b/dist/ba_data/python/bastd/actor/powerupbox.py @@ -137,8 +137,8 @@ class PowerupBoxFactory: self._powerupdist.append(powerup) def get_random_powerup_type(self, - forcetype: str = None, - excludetypes: list[str] = None) -> str: + forcetype: str | None = None, + excludetypes: list[str] | None = None) -> str: """Returns a random powerup type (string). See ba.Powerup.poweruptype for available type values. diff --git a/dist/ba_data/python/bastd/actor/scoreboard.py b/dist/ba_data/python/bastd/actor/scoreboard.py index 16b996e..d72e883 100644 --- a/dist/ba_data/python/bastd/actor/scoreboard.py +++ b/dist/ba_data/python/bastd/actor/scoreboard.py @@ -241,7 +241,7 @@ class _Entry: def set_value(self, score: float, - max_score: float = None, + max_score: float | None = None, countdown: bool = False, flash: bool = True, show_value: bool = True) -> None: @@ -327,7 +327,7 @@ class Scoreboard: _ENTRYSTORENAME = ba.storagename('entry') - def __init__(self, label: ba.Lstr = None, score_split: float = 0.7): + def __init__(self, label: ba.Lstr | None = None, score_split: float = 0.7): """Instantiate a scoreboard. Label can be something like 'points' and will @@ -356,7 +356,7 @@ class Scoreboard: def set_team_value(self, team: ba.Team, score: float, - max_score: float = None, + max_score: float | None = None, countdown: bool = False, flash: bool = True, show_value: bool = True) -> None: diff --git a/dist/ba_data/python/bastd/actor/spawner.py b/dist/ba_data/python/bastd/actor/spawner.py index 16693bd..41e2c33 100644 --- a/dist/ba_data/python/bastd/actor/spawner.py +++ b/dist/ba_data/python/bastd/actor/spawner.py @@ -54,7 +54,7 @@ class Spawner: pt: Sequence[float] = (0, 0, 0), # pylint: disable=invalid-name spawn_time: float = 1.0, send_spawn_message: bool = True, - spawn_callback: Callable[[], Any] = None): + spawn_callback: Callable[[], Any] | None = None): """Instantiate a Spawner. Requires some custom data, a position, diff --git a/dist/ba_data/python/bastd/actor/spaz.py b/dist/ba_data/python/bastd/actor/spaz.py index 12e60b5..194ac82 100644 --- a/dist/ba_data/python/bastd/actor/spaz.py +++ b/dist/ba_data/python/bastd/actor/spaz.py @@ -67,7 +67,7 @@ class Spaz(ba.Actor): color: Sequence[float] = (1.0, 1.0, 1.0), highlight: Sequence[float] = (0.5, 0.5, 0.5), character: str = 'Spaz', - source_player: ba.Player = None, + source_player: ba.Player | None = None, start_invincible: bool = True, can_accept_powerups: bool = True, powerups_expire: bool = False, @@ -177,6 +177,7 @@ class Spaz(ba.Actor): self._bomb_wear_off_timer: ba.Timer | None = None self._bomb_wear_off_flash_timer: ba.Timer | None = None self._multi_bomb_wear_off_timer: ba.Timer | None = None + self._multi_bomb_wear_off_flash_timer: ba.Timer | None = None self.bomb_count = self.default_bomb_count self._max_bomb_count = self.default_bomb_count self.bomb_type_default = self.default_bomb_type @@ -704,7 +705,7 @@ class Spaz(ba.Actor): self.node.mini_billboard_1_start_time = t_ms self.node.mini_billboard_1_end_time = ( t_ms + POWERUP_WEAR_OFF_TIME) - self._multi_bomb_wear_off_timer = (ba.Timer( + self._multi_bomb_wear_off_flash_timer = (ba.Timer( (POWERUP_WEAR_OFF_TIME - 2000), ba.WeakCall(self._multi_bomb_wear_off_flash), timeformat=ba.TimeFormat.MILLISECONDS)) @@ -1266,7 +1267,7 @@ class Spaz(ba.Actor): else: self.node.counter_text = '' - def curse_explode(self, source_player: ba.Player = None) -> None: + def curse_explode(self, source_player: ba.Player | None = None) -> None: """Explode the poor spaz spectacularly.""" if self._cursed and self.node: self.shatter(extreme=True) diff --git a/dist/ba_data/python/bastd/actor/spazbot.py b/dist/ba_data/python/bastd/actor/spazbot.py index 2204216..cccf070 100644 --- a/dist/ba_data/python/bastd/actor/spazbot.py +++ b/dist/ba_data/python/bastd/actor/spazbot.py @@ -888,11 +888,12 @@ class SpazBotSet: def __del__(self) -> None: self.clear() - def spawn_bot(self, - bot_type: type[SpazBot], - pos: Sequence[float], - spawn_time: float = 3.0, - on_spawn_call: Callable[[SpazBot], Any] = None) -> None: + def spawn_bot( + self, + bot_type: type[SpazBot], + pos: Sequence[float], + spawn_time: float = 3.0, + on_spawn_call: Callable[[SpazBot], Any] | None = None) -> None: """Spawn a bot from this set.""" from bastd.actor import spawner spawner.Spawner(pt=pos, diff --git a/dist/ba_data/python/bastd/actor/text.py b/dist/ba_data/python/bastd/actor/text.py index 992ddc4..fc56076 100644 --- a/dist/ba_data/python/bastd/actor/text.py +++ b/dist/ba_data/python/bastd/actor/text.py @@ -60,8 +60,8 @@ class Text(ba.Actor): v_attach: VAttach = VAttach.CENTER, h_attach: HAttach = HAttach.CENTER, scale: float = 1.0, - transition_out_delay: float = None, - maxwidth: float = None, + transition_out_delay: float | None = None, + maxwidth: float | None = None, shadow: float = 0.5, flatness: float = 0.0, vr_depth: float = 0.0, diff --git a/dist/ba_data/python/bastd/actor/zoomtext.py b/dist/ba_data/python/bastd/actor/zoomtext.py index c91df93..708d943 100644 --- a/dist/ba_data/python/bastd/actor/zoomtext.py +++ b/dist/ba_data/python/bastd/actor/zoomtext.py @@ -24,9 +24,9 @@ class ZoomText(ba.Actor): def __init__(self, text: str | ba.Lstr, position: tuple[float, float] = (0.0, 0.0), - shiftposition: tuple[float, float] = None, - shiftdelay: float = None, - lifespan: float = None, + shiftposition: tuple[float, float] | None = None, + shiftdelay: float | None = None, + lifespan: float | None = None, flash: bool = True, trail: bool = True, h_align: str = 'center', @@ -36,7 +36,7 @@ class ZoomText(ba.Actor): scale: float = 1.0, project_scale: float = 1.0, tilt_translate: float = 0.0, - maxwidth: float = None): + maxwidth: float | None = None): # pylint: disable=too-many-locals super().__init__() self._dying = False diff --git a/dist/ba_data/python/bastd/game/capturetheflag.py b/dist/ba_data/python/bastd/game/capturetheflag.py index 781ce8c..de3fb7e 100644 --- a/dist/ba_data/python/bastd/game/capturetheflag.py +++ b/dist/ba_data/python/bastd/game/capturetheflag.py @@ -492,8 +492,8 @@ class CaptureTheFlagGame(ba.TeamGameActivity[Player, Team]): def spawn_player_spaz(self, player: Player, - position: Sequence[float] = None, - angle: float = None) -> PlayerSpaz: + position: Sequence[float] | None = None, + angle: float | None = None) -> PlayerSpaz: """Intercept new spazzes and add our team material for them.""" spaz = super().spawn_player_spaz(player, position, angle) player = spaz.getplayer(Player, True) diff --git a/dist/ba_data/python/bastd/game/chosenone.py b/dist/ba_data/python/bastd/game/chosenone.py index ba99d35..6f75748 100644 --- a/dist/ba_data/python/bastd/game/chosenone.py +++ b/dist/ba_data/python/bastd/game/chosenone.py @@ -137,9 +137,6 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]): self.setup_standard_powerup_drops() self._flag_spawn_pos = self.map.get_flag_position(None) Flag.project_stand(self._flag_spawn_pos) - self._set_chosen_one_player(None) - - pos = self._flag_spawn_pos ba.timer(1.0, call=self._tick, repeat=True) mat = self._reset_region_material = ba.Material() @@ -156,14 +153,20 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]): ), ) - self._reset_region = ba.newnode('region', - attrs={ - 'position': (pos[0], pos[1] + 0.75, - pos[2]), - 'scale': (0.5, 0.5, 0.5), - 'type': 'sphere', - 'materials': [mat] - }) + self._set_chosen_one_player(None) + + def _create_reset_region(self) -> None: + assert self._reset_region_material is not None + assert self._flag_spawn_pos is not None + pos = self._flag_spawn_pos + self._reset_region = ba.newnode( + 'region', + attrs={ + 'position': (pos[0], pos[1] + 0.75, pos[2]), + 'scale': (0.5, 0.5, 0.5), + 'type': 'sphere', + 'materials': [self._reset_region_material] + }) def _get_chosen_one_player(self) -> Player | None: # Should never return invalid references; return None in that case. @@ -176,14 +179,14 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]): if self._get_chosen_one_player() is not None: return - # Attempt to get a Player controlling a Spaz that we hit. + # Attempt to get a Actor that we hit. try: - player = ba.getcollision().opposingnode.getdelegate( - PlayerSpaz, True).getplayer(Player, True) + spaz = ba.getcollision().opposingnode.getdelegate(PlayerSpaz, True) + player = spaz.getplayer(Player, True) except ba.NotFoundError: return - if player.is_alive(): + if spaz.is_alive(): self._set_chosen_one_player(player) def _flash_flag_spawn(self) -> None: @@ -278,6 +281,10 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]): # Also an extra momentary flash. self._flash_flag_spawn() + + # Re-create our flag region in case if someone is waiting for + # flag right there: + self._create_reset_region() else: if player.actor: self._flag = None diff --git a/dist/ba_data/python/bastd/game/football.py b/dist/ba_data/python/bastd/game/football.py index ff1b735..2bf0bd9 100644 --- a/dist/ba_data/python/bastd/game/football.py +++ b/dist/ba_data/python/bastd/game/football.py @@ -596,7 +596,9 @@ class FootballCoopGame(ba.CoopGameActivity[Player, Team]): if closest_bot is not None: closest_bot.target_flag = self._flag - def _drop_powerup(self, index: int, poweruptype: str = None) -> None: + def _drop_powerup(self, + index: int, + poweruptype: str | None = None) -> None: if poweruptype is None: poweruptype = (PowerupBoxFactory.get().get_random_powerup_type( excludetypes=self._exclude_powerups)) @@ -610,7 +612,7 @@ class FootballCoopGame(ba.CoopGameActivity[Player, Team]): def _drop_powerups(self, standard_points: bool = False, - poweruptype: str = None) -> None: + poweruptype: str | None = None) -> None: """Generic powerup drop.""" if standard_points: spawnpoints = self.map.powerup_spawn_points diff --git a/dist/ba_data/python/bastd/game/onslaught.py b/dist/ba_data/python/bastd/game/onslaught.py index 2664858..d44600a 100644 --- a/dist/ba_data/python/bastd/game/onslaught.py +++ b/dist/ba_data/python/bastd/game/onslaught.py @@ -690,7 +690,9 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]): del player, bomb # Unused. self._player_has_dropped_bomb = True - def _drop_powerup(self, index: int, poweruptype: str = None) -> None: + def _drop_powerup(self, + index: int, + poweruptype: str | None = None) -> None: poweruptype = (PowerupBoxFactory.get().get_random_powerup_type( forcetype=poweruptype, excludetypes=self._excluded_powerups)) PowerupBox(position=self.map.powerup_spawn_points[index], @@ -703,7 +705,7 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]): def _drop_powerups(self, standard_points: bool = False, - poweruptype: str = None) -> None: + poweruptype: str | None = None) -> None: """Generic powerup drop.""" if standard_points: points = self.map.powerup_spawn_points diff --git a/dist/ba_data/python/bastd/game/runaround.py b/dist/ba_data/python/bastd/game/runaround.py index 58ae628..da4d15b 100644 --- a/dist/ba_data/python/bastd/game/runaround.py +++ b/dist/ba_data/python/bastd/game/runaround.py @@ -497,7 +497,9 @@ class RunaroundGame(ba.CoopGameActivity[Player, Team]): del player # Unused. self._player_has_picked_up_powerup = True - def _drop_powerup(self, index: int, poweruptype: str = None) -> None: + def _drop_powerup(self, + index: int, + poweruptype: str | None = None) -> None: if poweruptype is None: poweruptype = (PowerupBoxFactory.get().get_random_powerup_type( excludetypes=self._exclude_powerups)) @@ -509,7 +511,7 @@ class RunaroundGame(ba.CoopGameActivity[Player, Team]): def _drop_powerups(self, standard_points: bool = False, - force_first: str = None) -> None: + force_first: str | None = None) -> None: """Generic powerup drop.""" # If its been a minute since our last wave finished emerging, stop diff --git a/dist/ba_data/python/bastd/game/thelaststand.py b/dist/ba_data/python/bastd/game/thelaststand.py index 0d40c0b..3cf84ae 100644 --- a/dist/ba_data/python/bastd/game/thelaststand.py +++ b/dist/ba_data/python/bastd/game/thelaststand.py @@ -132,7 +132,9 @@ class TheLastStandGame(ba.CoopGameActivity[Player, Team]): self._bot_update_timer = ba.Timer(self._bot_update_interval, ba.WeakCall(self._update_bots)) - def _drop_powerup(self, index: int, poweruptype: str = None) -> None: + def _drop_powerup(self, + index: int, + poweruptype: str | None = None) -> None: if poweruptype is None: poweruptype = (PowerupBoxFactory.get().get_random_powerup_type( excludetypes=self._excludepowerups)) @@ -146,7 +148,7 @@ class TheLastStandGame(ba.CoopGameActivity[Player, Team]): def _drop_powerups(self, standard_points: bool = False, - force_first: str = None) -> None: + force_first: str | None = None) -> None: """Generic powerup drop.""" from bastd.actor import powerupbox if standard_points: diff --git a/dist/ba_data/python/bastd/mainmenu.py b/dist/ba_data/python/bastd/mainmenu.py index d883688..d5afa32 100644 --- a/dist/ba_data/python/bastd/mainmenu.py +++ b/dist/ba_data/python/bastd/mainmenu.py @@ -767,7 +767,7 @@ class MainMenuActivity(ba.Activity[ba.Player, ba.Team]): y: float, scale: float, delay: float, - custom_texture: str = None, + custom_texture: str | None = None, jitter_scale: float = 1.0, rotate: float = 0.0, vr_depth_offset: float = 0.0) -> None: diff --git a/dist/ba_data/python/bastd/tutorial.py b/dist/ba_data/python/bastd/tutorial.py index 4d424bb..0cb2c7b 100644 --- a/dist/ba_data/python/bastd/tutorial.py +++ b/dist/ba_data/python/bastd/tutorial.py @@ -178,7 +178,7 @@ class Team(ba.Team[Player]): class TutorialActivity(ba.Activity[Player, Team]): - def __init__(self, settings: dict = None): + def __init__(self, settings: dict | None = None): from bastd.maps import Rampage if settings is None: settings = {} @@ -492,7 +492,7 @@ class TutorialActivity(ba.Activity[Player, Team]): position: Sequence[float], color: Sequence[float] = (1.0, 1.0, 1.0), make_current: bool = False, - relative_to: int = None, + relative_to: int | None = None, name: str | ba.Lstr = '', flash: bool = True, angle: float = 0.0): @@ -550,7 +550,7 @@ class TutorialActivity(ba.Activity[Player, Team]): position: Sequence[float], color: Sequence[float] = (1.0, 1.0, 1.0), make_current: bool = False, - relative_to: int = None): + relative_to: int | None = None): self._position = position self._relative_to = relative_to @@ -761,7 +761,7 @@ class TutorialActivity(ba.Activity[Player, Team]): class PrintPos: - def __init__(self, spaz_num: int = None): + def __init__(self, spaz_num: int | None = None): self._spaz_num = spaz_num def run(self, a: TutorialActivity) -> None: @@ -787,7 +787,7 @@ class TutorialActivity(ba.Activity[Player, Team]): def __init__(self, celebrate_type: str = 'both', - spaz_num: int = None, + spaz_num: int | None = None, duration: int = 1000): self._spaz_num = spaz_num self._celebrate_type = celebrate_type diff --git a/dist/ba_data/python/bastd/ui/account/__init__.py b/dist/ba_data/python/bastd/ui/account/__init__.py index 9b56244..1ce8461 100644 --- a/dist/ba_data/python/bastd/ui/account/__init__.py +++ b/dist/ba_data/python/bastd/ui/account/__init__.py @@ -8,7 +8,7 @@ import _ba import ba -def show_sign_in_prompt(account_type: str = None) -> None: +def show_sign_in_prompt(account_type: str | None = None) -> None: """Bring up a prompt telling the user they must sign in.""" from bastd.ui.confirm import ConfirmWindow from bastd.ui.account import settings diff --git a/dist/ba_data/python/bastd/ui/account/link.py b/dist/ba_data/python/bastd/ui/account/link.py index 8c026a0..f92c9da 100644 --- a/dist/ba_data/python/bastd/ui/account/link.py +++ b/dist/ba_data/python/bastd/ui/account/link.py @@ -18,7 +18,7 @@ if TYPE_CHECKING: class AccountLinkWindow(ba.Window): """Window for linking accounts.""" - def __init__(self, origin_widget: ba.Widget = None): + def __init__(self, origin_widget: ba.Widget | None = None): scale_origin: tuple[float, float] | None if origin_widget is not None: self._transition_out = 'out_scale' diff --git a/dist/ba_data/python/bastd/ui/account/settings.py b/dist/ba_data/python/bastd/ui/account/settings.py index f5b180f..cdfb1c7 100644 --- a/dist/ba_data/python/bastd/ui/account/settings.py +++ b/dist/ba_data/python/bastd/ui/account/settings.py @@ -21,7 +21,7 @@ class AccountSettingsWindow(ba.Window): def __init__(self, transition: str = 'in_right', modal: bool = False, - origin_widget: ba.Widget = None, + origin_widget: ba.Widget | None = None, close_once_signed_in: bool = False): # pylint: disable=too-many-statements diff --git a/dist/ba_data/python/bastd/ui/account/unlink.py b/dist/ba_data/python/bastd/ui/account/unlink.py index 8e9955b..6cff2c4 100644 --- a/dist/ba_data/python/bastd/ui/account/unlink.py +++ b/dist/ba_data/python/bastd/ui/account/unlink.py @@ -17,7 +17,7 @@ if TYPE_CHECKING: class AccountUnlinkWindow(ba.Window): """A window to kick off account unlinks.""" - def __init__(self, origin_widget: ba.Widget = None): + def __init__(self, origin_widget: ba.Widget | None = None): scale_origin: tuple[float, float] | None if origin_widget is not None: self._transition_out = 'out_scale' diff --git a/dist/ba_data/python/bastd/ui/account/viewer.py b/dist/ba_data/python/bastd/ui/account/viewer.py index 549207e..da5fb74 100644 --- a/dist/ba_data/python/bastd/ui/account/viewer.py +++ b/dist/ba_data/python/bastd/ui/account/viewer.py @@ -19,9 +19,9 @@ class AccountViewerWindow(popup.PopupWindow): def __init__(self, account_id: str, - profile_id: str = None, + profile_id: str | None = None, position: tuple[float, float] = (0.0, 0.0), - scale: float = None, + scale: float | None = None, offset: tuple[float, float] = (0.0, 0.0)): from ba.internal import is_browser_likely_available, master_server_get diff --git a/dist/ba_data/python/bastd/ui/achievements.py b/dist/ba_data/python/bastd/ui/achievements.py index 5ca7d51..c5bc5d2 100644 --- a/dist/ba_data/python/bastd/ui/achievements.py +++ b/dist/ba_data/python/bastd/ui/achievements.py @@ -16,7 +16,9 @@ if TYPE_CHECKING: class AchievementsWindow(popup.PopupWindow): """Popup window to view achievements.""" - def __init__(self, position: tuple[float, float], scale: float = None): + def __init__(self, + position: tuple[float, float], + scale: float | None = None): # pylint: disable=too-many-locals uiscale = ba.app.ui.uiscale if scale is None: diff --git a/dist/ba_data/python/bastd/ui/characterpicker.py b/dist/ba_data/python/bastd/ui/characterpicker.py index 9fc9bac..353ee38 100644 --- a/dist/ba_data/python/bastd/ui/characterpicker.py +++ b/dist/ba_data/python/bastd/ui/characterpicker.py @@ -22,11 +22,11 @@ class CharacterPicker(popup.PopupWindow): parent: ba.Widget, position: tuple[float, float] = (0.0, 0.0), delegate: Any = None, - scale: float = None, + scale: float | None = None, offset: tuple[float, float] = (0.0, 0.0), tint_color: Sequence[float] = (1.0, 1.0, 1.0), tint2_color: Sequence[float] = (1.0, 1.0, 1.0), - selected_character: str = None): + selected_character: str | None = None): # pylint: disable=too-many-locals from bastd.actor import spazappearance del parent # unused here diff --git a/dist/ba_data/python/bastd/ui/colorpicker.py b/dist/ba_data/python/bastd/ui/colorpicker.py index 1d7faa0..13384e8 100644 --- a/dist/ba_data/python/bastd/ui/colorpicker.py +++ b/dist/ba_data/python/bastd/ui/colorpicker.py @@ -24,7 +24,7 @@ class ColorPicker(PopupWindow): position: tuple[float, float], initial_color: Sequence[float] = (1.0, 1.0, 1.0), delegate: Any = None, - scale: float = None, + scale: float | None = None, offset: tuple[float, float] = (0.0, 0.0), tag: Any = ''): # pylint: disable=too-many-locals @@ -162,7 +162,7 @@ class ColorPickerExact(PopupWindow): position: tuple[float, float], initial_color: Sequence[float] = (1.0, 1.0, 1.0), delegate: Any = None, - scale: float = None, + scale: float | None = None, offset: tuple[float, float] = (0.0, 0.0), tag: Any = ''): # pylint: disable=too-many-locals diff --git a/dist/ba_data/python/bastd/ui/config.py b/dist/ba_data/python/bastd/ui/config.py index fbd7720..e8a6cc1 100644 --- a/dist/ba_data/python/bastd/ui/config.py +++ b/dist/ba_data/python/bastd/ui/config.py @@ -28,10 +28,10 @@ class ConfigCheckBox: position: tuple[float, float], size: tuple[float, float], displayname: str | ba.Lstr | None = None, - scale: float = None, - maxwidth: float = None, + scale: float | None = None, + maxwidth: float | None = None, autoselect: bool = True, - value_change_call: Callable[[Any], Any] = None): + value_change_call: Callable[[Any], Any] | None = None): if displayname is None: displayname = configkey self._value_change_call = value_change_call @@ -84,7 +84,7 @@ class ConfigNumberEdit: minval: float = 0.0, maxval: float = 100.0, increment: float = 1.0, - callback: Callable[[float], Any] = None, + callback: Callable[[float], Any] | None = None, xoffset: float = 0.0, displayname: str | ba.Lstr | None = None, changesound: bool = True, diff --git a/dist/ba_data/python/bastd/ui/confirm.py b/dist/ba_data/python/bastd/ui/confirm.py index 3136a7c..11c76d9 100644 --- a/dist/ba_data/python/bastd/ui/confirm.py +++ b/dist/ba_data/python/bastd/ui/confirm.py @@ -18,7 +18,7 @@ class ConfirmWindow: def __init__(self, text: str | ba.Lstr = 'Are you sure?', - action: Callable[[], Any] = None, + action: Callable[[], Any] | None = None, width: float = 360.0, height: float = 100.0, cancel_button: bool = True, @@ -27,7 +27,7 @@ class ConfirmWindow: text_scale: float = 1.0, ok_text: str | ba.Lstr | None = None, cancel_text: str | ba.Lstr | None = None, - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-locals if ok_text is None: ok_text = ba.Lstr(resource='okText') @@ -127,7 +127,7 @@ class QuitWindow: def __init__(self, swish: bool = False, back: bool = False, - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): ui = ba.app.ui app = ba.app self._back = back diff --git a/dist/ba_data/python/bastd/ui/coop/browser.py b/dist/ba_data/python/bastd/ui/coop/browser.py index aeabeaf..9ea7a9d 100644 --- a/dist/ba_data/python/bastd/ui/coop/browser.py +++ b/dist/ba_data/python/bastd/ui/coop/browser.py @@ -37,7 +37,7 @@ class CoopBrowserWindow(ba.Window): def __init__(self, transition: str | None = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=cyclic-import import threading @@ -1415,7 +1415,7 @@ class CoopBrowserWindow(ba.Window): def run(self, game: str | None, - tournament_button: dict[str, Any] = None) -> None: + tournament_button: dict[str, Any] | None = None) -> None: """Run the provided game.""" # pylint: disable=too-many-branches # pylint: disable=too-many-statements diff --git a/dist/ba_data/python/bastd/ui/creditslist.py b/dist/ba_data/python/bastd/ui/creditslist.py index 722fd7a..322c864 100644 --- a/dist/ba_data/python/bastd/ui/creditslist.py +++ b/dist/ba_data/python/bastd/ui/creditslist.py @@ -16,7 +16,7 @@ if TYPE_CHECKING: class CreditsListWindow(ba.Window): """Window for displaying game credits.""" - def __init__(self, origin_widget: ba.Widget = None): + def __init__(self, origin_widget: ba.Widget | None = None): # pylint: disable=too-many-locals # pylint: disable=too-many-statements import json diff --git a/dist/ba_data/python/bastd/ui/fileselector.py b/dist/ba_data/python/bastd/ui/fileselector.py index 8af14da..bb6dc65 100644 --- a/dist/ba_data/python/bastd/ui/fileselector.py +++ b/dist/ba_data/python/bastd/ui/fileselector.py @@ -21,9 +21,9 @@ class FileSelectorWindow(ba.Window): def __init__(self, path: str, - callback: Callable[[str | None], Any] = None, + callback: Callable[[str | None], Any] | None = None, show_base_path: bool = True, - valid_file_extensions: Sequence[str] = None, + valid_file_extensions: Sequence[str] | None = None, allow_folders: bool = False): if valid_file_extensions is None: valid_file_extensions = [] diff --git a/dist/ba_data/python/bastd/ui/gather/__init__.py b/dist/ba_data/python/bastd/ui/gather/__init__.py index 2eaa49c..f3a1eb9 100644 --- a/dist/ba_data/python/bastd/ui/gather/__init__.py +++ b/dist/ba_data/python/bastd/ui/gather/__init__.py @@ -68,7 +68,7 @@ class GatherWindow(ba.Window): def __init__(self, transition: str | None = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=too-many-locals # pylint: disable=cyclic-import diff --git a/dist/ba_data/python/bastd/ui/getcurrency.py b/dist/ba_data/python/bastd/ui/getcurrency.py index e0ef860..bc16517 100644 --- a/dist/ba_data/python/bastd/ui/getcurrency.py +++ b/dist/ba_data/python/bastd/ui/getcurrency.py @@ -20,8 +20,8 @@ class GetCurrencyWindow(ba.Window): transition: str = 'in_right', from_modal_store: bool = False, modal: bool = False, - origin_widget: ba.Widget = None, - store_back_location: str = None): + origin_widget: ba.Widget | None = None, + store_back_location: str | None = None): # pylint: disable=too-many-statements # pylint: disable=too-many-locals @@ -105,8 +105,8 @@ class GetCurrencyWindow(ba.Window): position: tuple[float, float], size: tuple[float, float], label: ba.Lstr, - price: str = None, - tex_name: str = None, + price: str | None = None, + tex_name: str | None = None, tex_opacity: float = 1.0, tex_scale: float = 1.0, enabled: bool = True, diff --git a/dist/ba_data/python/bastd/ui/helpui.py b/dist/ba_data/python/bastd/ui/helpui.py index 09bc4d5..79369a9 100644 --- a/dist/ba_data/python/bastd/ui/helpui.py +++ b/dist/ba_data/python/bastd/ui/helpui.py @@ -18,7 +18,7 @@ class HelpWindow(ba.Window): def __init__(self, main_menu: bool = False, - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=too-many-locals from ba.internal import get_remote_app_name diff --git a/dist/ba_data/python/bastd/ui/iconpicker.py b/dist/ba_data/python/bastd/ui/iconpicker.py index a9d5727..9bd98fe 100644 --- a/dist/ba_data/python/bastd/ui/iconpicker.py +++ b/dist/ba_data/python/bastd/ui/iconpicker.py @@ -22,11 +22,11 @@ class IconPicker(popup.PopupWindow): parent: ba.Widget, position: tuple[float, float] = (0.0, 0.0), delegate: Any = None, - scale: float = None, + scale: float | None = None, offset: tuple[float, float] = (0.0, 0.0), tint_color: Sequence[float] = (1.0, 1.0, 1.0), tint2_color: Sequence[float] = (1.0, 1.0, 1.0), - selected_icon: str = None): + selected_icon: str | None = None): # pylint: disable=too-many-locals del parent # unused here del tint_color # unused_here diff --git a/dist/ba_data/python/bastd/ui/league/rankbutton.py b/dist/ba_data/python/bastd/ui/league/rankbutton.py index 9b62fc1..8509eb8 100644 --- a/dist/ba_data/python/bastd/ui/league/rankbutton.py +++ b/dist/ba_data/python/bastd/ui/league/rankbutton.py @@ -21,11 +21,11 @@ class LeagueRankButton: position: tuple[float, float], size: tuple[float, float], scale: float, - on_activate_call: Callable[[], Any] = None, - transition_delay: float = None, - color: tuple[float, float, float] = None, - textcolor: tuple[float, float, float] = None, - smooth_update_delay: float = None): + on_activate_call: Callable[[], Any] | None = None, + transition_delay: float | None = None, + color: tuple[float, float, float] | None = None, + textcolor: tuple[float, float, float] | None = None, + smooth_update_delay: float | None = None): if on_activate_call is None: on_activate_call = ba.WeakCall(self._default_on_activate_call) self._on_activate_call = on_activate_call diff --git a/dist/ba_data/python/bastd/ui/league/rankwindow.py b/dist/ba_data/python/bastd/ui/league/rankwindow.py index 3a23f89..a29f618 100644 --- a/dist/ba_data/python/bastd/ui/league/rankwindow.py +++ b/dist/ba_data/python/bastd/ui/league/rankwindow.py @@ -21,7 +21,7 @@ class LeagueRankWindow(ba.Window): def __init__(self, transition: str = 'in_right', modal: bool = False, - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): ba.set_analytics_screen('League Rank Window') self._league_rank_data: dict[str, Any] | None = None diff --git a/dist/ba_data/python/bastd/ui/play.py b/dist/ba_data/python/bastd/ui/play.py index 62809b0..6f872f8 100644 --- a/dist/ba_data/python/bastd/ui/play.py +++ b/dist/ba_data/python/bastd/ui/play.py @@ -18,7 +18,7 @@ class PlayWindow(ba.Window): def __init__(self, transition: str = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=too-many-locals import threading diff --git a/dist/ba_data/python/bastd/ui/playlist/browser.py b/dist/ba_data/python/bastd/ui/playlist/browser.py index 9dcab82..eace126 100644 --- a/dist/ba_data/python/bastd/ui/playlist/browser.py +++ b/dist/ba_data/python/bastd/ui/playlist/browser.py @@ -21,7 +21,7 @@ class PlaylistBrowserWindow(ba.Window): def __init__(self, sessiontype: type[ba.Session], transition: str | None = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=cyclic-import from bastd.ui.playlist import PlaylistTypeVars diff --git a/dist/ba_data/python/bastd/ui/playlist/customizebrowser.py b/dist/ba_data/python/bastd/ui/playlist/customizebrowser.py index c786aea..6befcfd 100644 --- a/dist/ba_data/python/bastd/ui/playlist/customizebrowser.py +++ b/dist/ba_data/python/bastd/ui/playlist/customizebrowser.py @@ -21,8 +21,8 @@ class PlaylistCustomizeBrowserWindow(ba.Window): def __init__(self, sessiontype: type[ba.Session], transition: str = 'in_right', - select_playlist: str = None, - origin_widget: ba.Widget = None): + select_playlist: str | None = None, + origin_widget: ba.Widget | None = None): # Yes this needs tidying. # pylint: disable=too-many-locals # pylint: disable=too-many-statements @@ -297,7 +297,7 @@ class PlaylistCustomizeBrowserWindow(ba.Window): _ba.fade_screen(False, endcall=self._run_selected_playlist) _ba.lock_all_input() - def _refresh(self, select_playlist: str = None) -> None: + def _refresh(self, select_playlist: str | None = None) -> None: from efro.util import asserttype old_selection = self._selected_playlist_name diff --git a/dist/ba_data/python/bastd/ui/playlist/editcontroller.py b/dist/ba_data/python/bastd/ui/playlist/editcontroller.py index a2a1c0b..c780135 100644 --- a/dist/ba_data/python/bastd/ui/playlist/editcontroller.py +++ b/dist/ba_data/python/bastd/ui/playlist/editcontroller.py @@ -18,10 +18,10 @@ class PlaylistEditController: def __init__(self, sessiontype: type[ba.Session], - existing_playlist_name: str = None, + existing_playlist_name: str | None = None, transition: str = 'in_right', - playlist: list[dict[str, Any]] = None, - playlist_name: str = None): + playlist: list[dict[str, Any]] | None = None, + playlist_name: str | None = None): from ba.internal import preload_map_preview_media, filter_playlist from bastd.ui.playlist import PlaylistTypeVars from bastd.ui.playlist.edit import PlaylistEditWindow diff --git a/dist/ba_data/python/bastd/ui/playlist/editgame.py b/dist/ba_data/python/bastd/ui/playlist/editgame.py index a4c0007..9674357 100644 --- a/dist/ba_data/python/bastd/ui/playlist/editgame.py +++ b/dist/ba_data/python/bastd/ui/playlist/editgame.py @@ -23,9 +23,9 @@ class PlaylistEditGameWindow(ba.Window): sessiontype: type[ba.Session], config: dict[str, Any] | None, completion_call: Callable[[dict[str, Any] | None], Any], - default_selection: str = None, + default_selection: str | None = None, transition: str = 'in_right', - edit_info: dict[str, Any] = None): + edit_info: dict[str, Any] | None = None): # pylint: disable=too-many-branches # pylint: disable=too-many-statements # pylint: disable=too-many-locals diff --git a/dist/ba_data/python/bastd/ui/playlist/share.py b/dist/ba_data/python/bastd/ui/playlist/share.py index f2987ca..084fca6 100644 --- a/dist/ba_data/python/bastd/ui/playlist/share.py +++ b/dist/ba_data/python/bastd/ui/playlist/share.py @@ -19,8 +19,8 @@ class SharePlaylistImportWindow(promocode.PromoCodeWindow): """Window for importing a shared playlist.""" def __init__(self, - origin_widget: ba.Widget = None, - on_success_callback: Callable[[], Any] = None): + origin_widget: ba.Widget | None = None, + on_success_callback: Callable[[], Any] | None = None): promocode.PromoCodeWindow.__init__(self, modal=True, origin_widget=origin_widget) diff --git a/dist/ba_data/python/bastd/ui/popup.py b/dist/ba_data/python/bastd/ui/popup.py index 2146263..0315b94 100644 --- a/dist/ba_data/python/bastd/ui/popup.py +++ b/dist/ba_data/python/bastd/ui/popup.py @@ -26,7 +26,7 @@ class PopupWindow: offset: tuple[float, float] = (0, 0), bg_color: tuple[float, float, float] = (0.35, 0.55, 0.15), focus_position: tuple[float, float] = (0, 0), - focus_size: tuple[float, float] = None, + focus_size: tuple[float, float] | None = None, toolbar_visibility: str = 'menu_minimal_no_back'): # pylint: disable=too-many-locals if focus_size is None: @@ -108,10 +108,10 @@ class PopupMenuWindow(PopupWindow): current_choice: str, delegate: Any = None, width: float = 230.0, - maxwidth: float = None, + maxwidth: float | None = None, scale: float = 1.0, - choices_disabled: Sequence[str] = None, - choices_display: Sequence[ba.Lstr] = None): + choices_disabled: Sequence[str] | None = None, + choices_display: Sequence[ba.Lstr] | None = None): # FIXME: Clean up a bit. # pylint: disable=too-many-branches # pylint: disable=too-many-locals @@ -268,15 +268,15 @@ class PopupMenu: parent: ba.Widget, position: tuple[float, float], choices: Sequence[str], - current_choice: str = None, - on_value_change_call: Callable[[str], Any] = None, - opening_call: Callable[[], Any] = None, - closing_call: Callable[[], Any] = None, + current_choice: str | None = None, + on_value_change_call: Callable[[str], Any] | None = None, + opening_call: Callable[[], Any] | None = None, + closing_call: Callable[[], Any] | None = None, width: float = 230.0, - maxwidth: float = None, - scale: float = None, - choices_disabled: Sequence[str] = None, - choices_display: Sequence[ba.Lstr] = None, + maxwidth: float | None = None, + scale: float | None = None, + choices_disabled: Sequence[str] | None = None, + choices_display: Sequence[ba.Lstr] | None = None, button_size: tuple[float, float] = (160.0, 50.0), autoselect: bool = True): # pylint: disable=too-many-locals diff --git a/dist/ba_data/python/bastd/ui/profile/browser.py b/dist/ba_data/python/bastd/ui/profile/browser.py index febfa83..676b491 100644 --- a/dist/ba_data/python/bastd/ui/profile/browser.py +++ b/dist/ba_data/python/bastd/ui/profile/browser.py @@ -19,8 +19,8 @@ class ProfileBrowserWindow(ba.Window): def __init__(self, transition: str = 'in_right', in_main_menu: bool = True, - selected_profile: str = None, - origin_widget: ba.Widget = None): + selected_profile: str | None = None, + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=too-many-locals self._in_main_menu = in_main_menu diff --git a/dist/ba_data/python/bastd/ui/promocode.py b/dist/ba_data/python/bastd/ui/promocode.py index eb3bf01..dc39078 100644 --- a/dist/ba_data/python/bastd/ui/promocode.py +++ b/dist/ba_data/python/bastd/ui/promocode.py @@ -17,7 +17,9 @@ if TYPE_CHECKING: class PromoCodeWindow(ba.Window): """Window for entering promo codes.""" - def __init__(self, modal: bool = False, origin_widget: ba.Widget = None): + def __init__(self, + modal: bool = False, + origin_widget: ba.Widget | None = None): scale_origin: tuple[float, float] | None if origin_widget is not None: diff --git a/dist/ba_data/python/bastd/ui/purchase.py b/dist/ba_data/python/bastd/ui/purchase.py index e5da106..8b729c7 100644 --- a/dist/ba_data/python/bastd/ui/purchase.py +++ b/dist/ba_data/python/bastd/ui/purchase.py @@ -19,7 +19,7 @@ class PurchaseWindow(ba.Window): def __init__(self, items: list[str], transition: str = 'in_right', - header_text: ba.Lstr = None): + header_text: ba.Lstr | None = None): from ba.internal import get_store_item_display_size from bastd.ui.store import item as storeitemui if header_text is None: diff --git a/dist/ba_data/python/bastd/ui/settings/advanced.py b/dist/ba_data/python/bastd/ui/settings/advanced.py index 665d86f..7336a99 100644 --- a/dist/ba_data/python/bastd/ui/settings/advanced.py +++ b/dist/ba_data/python/bastd/ui/settings/advanced.py @@ -19,7 +19,7 @@ class AdvancedSettingsWindow(ba.Window): def __init__(self, transition: str = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements from ba.internal import master_server_get import threading @@ -542,6 +542,14 @@ class AdvancedSettingsWindow(ba.Window): def _on_net_test_press(self) -> None: from bastd.ui.settings.nettesting import NetTestingWindow + + # Net-testing requires a signed in v1 account. + if _ba.get_v1_account_state() != 'signed_in': + ba.screenmessage(ba.Lstr(resource='notSignedInErrorText'), + color=(1, 0, 0)) + ba.playsound(ba.getsound('error')) + return + self._save_state() ba.containerwidget(edit=self._root_widget, transition='out_left') ba.app.ui.set_main_menu_window( diff --git a/dist/ba_data/python/bastd/ui/settings/allsettings.py b/dist/ba_data/python/bastd/ui/settings/allsettings.py index 8b18773..bec6f05 100644 --- a/dist/ba_data/python/bastd/ui/settings/allsettings.py +++ b/dist/ba_data/python/bastd/ui/settings/allsettings.py @@ -18,7 +18,7 @@ class AllSettingsWindow(ba.Window): def __init__(self, transition: str = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=too-many-locals import threading diff --git a/dist/ba_data/python/bastd/ui/settings/audio.py b/dist/ba_data/python/bastd/ui/settings/audio.py index 9ca2979..bf93f6b 100644 --- a/dist/ba_data/python/bastd/ui/settings/audio.py +++ b/dist/ba_data/python/bastd/ui/settings/audio.py @@ -18,7 +18,7 @@ class AudioSettingsWindow(ba.Window): def __init__(self, transition: str = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=too-many-locals # pylint: disable=cyclic-import diff --git a/dist/ba_data/python/bastd/ui/settings/controls.py b/dist/ba_data/python/bastd/ui/settings/controls.py index 0c17fe8..017568d 100644 --- a/dist/ba_data/python/bastd/ui/settings/controls.py +++ b/dist/ba_data/python/bastd/ui/settings/controls.py @@ -18,7 +18,7 @@ class ControlsSettingsWindow(ba.Window): def __init__(self, transition: str = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # FIXME: should tidy up here. # pylint: disable=too-many-statements # pylint: disable=too-many-branches diff --git a/dist/ba_data/python/bastd/ui/settings/gamepad.py b/dist/ba_data/python/bastd/ui/settings/gamepad.py index 7f6f184..ea86a95 100644 --- a/dist/ba_data/python/bastd/ui/settings/gamepad.py +++ b/dist/ba_data/python/bastd/ui/settings/gamepad.py @@ -21,7 +21,7 @@ class GamepadSettingsWindow(ba.Window): is_main_menu: bool = True, transition: str = 'in_right', transition_out: str = 'out_right', - settings: dict = None): + settings: dict | None = None): self._input = gamepad # If our input-device went away, just return an empty zombie. @@ -652,8 +652,8 @@ class GamepadSettingsWindow(ba.Window): texture: ba.Texture, button: str, scale: float = 1.0, - message: ba.Lstr = None, - message2: ba.Lstr = None, + message: ba.Lstr | None = None, + message2: ba.Lstr | None = None, maxwidth: float = 80.0) -> ba.Widget: if message is None: message = ba.Lstr(resource=self._r + '.pressAnyButtonText') @@ -754,8 +754,8 @@ class AwaitGamepadInputWindow(ba.Window): button: str, callback: Callable[[str, dict[str, Any], AwaitGamepadInputWindow], Any], - message: ba.Lstr = None, - message2: ba.Lstr = None): + message: ba.Lstr | None = None, + message2: ba.Lstr | None = None): if message is None: print('AwaitGamepadInputWindow message is None!') # Shouldn't get here. diff --git a/dist/ba_data/python/bastd/ui/settings/gamepadadvanced.py b/dist/ba_data/python/bastd/ui/settings/gamepadadvanced.py index d0eb646..e97b318 100644 --- a/dist/ba_data/python/bastd/ui/settings/gamepadadvanced.py +++ b/dist/ba_data/python/bastd/ui/settings/gamepadadvanced.py @@ -404,7 +404,7 @@ class GamepadAdvancedSettingsWindow(ba.Window): increment: float = 1.0, change_sound: bool = True, x_offset: float = 0.0, - displayname: ba.Lstr = None) -> tuple[ba.Widget, ba.Widget]: + displayname: ba.Lstr | None = None) -> tuple[ba.Widget, ba.Widget]: if displayname is None: displayname = name diff --git a/dist/ba_data/python/bastd/ui/settings/graphics.py b/dist/ba_data/python/bastd/ui/settings/graphics.py index 7a0da71..8d0fff0 100644 --- a/dist/ba_data/python/bastd/ui/settings/graphics.py +++ b/dist/ba_data/python/bastd/ui/settings/graphics.py @@ -18,7 +18,7 @@ class GraphicsSettingsWindow(ba.Window): def __init__(self, transition: str = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-locals # pylint: disable=too-many-branches # pylint: disable=too-many-statements diff --git a/dist/ba_data/python/bastd/ui/settings/nettesting.py b/dist/ba_data/python/bastd/ui/settings/nettesting.py index 536e4e0..0435584 100644 --- a/dist/ba_data/python/bastd/ui/settings/nettesting.py +++ b/dist/ba_data/python/bastd/ui/settings/nettesting.py @@ -131,7 +131,8 @@ def _run_diagnostics(weakwin: weakref.ref[NetTestingWindow]) -> None: # We're running in a background thread but UI stuff needs to run # in the logic thread; give ourself a way to pass stuff to it. - def _print(text: str, color: tuple[float, float, float] = None) -> None: + def _print(text: str, + color: tuple[float, float, float] | None = None) -> None: def _print_in_logic_thread() -> None: win = weakwin() diff --git a/dist/ba_data/python/bastd/ui/settings/plugins.py b/dist/ba_data/python/bastd/ui/settings/plugins.py index b872368..f4eb5d8 100644 --- a/dist/ba_data/python/bastd/ui/settings/plugins.py +++ b/dist/ba_data/python/bastd/ui/settings/plugins.py @@ -17,7 +17,7 @@ class PluginSettingsWindow(ba.Window): def __init__(self, transition: str = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-locals app = ba.app diff --git a/dist/ba_data/python/bastd/ui/soundtrack/browser.py b/dist/ba_data/python/bastd/ui/soundtrack/browser.py index dd98728..b208815 100644 --- a/dist/ba_data/python/bastd/ui/soundtrack/browser.py +++ b/dist/ba_data/python/bastd/ui/soundtrack/browser.py @@ -19,7 +19,7 @@ class SoundtrackBrowserWindow(ba.Window): def __init__(self, transition: str = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-locals # pylint: disable=too-many-statements @@ -355,7 +355,7 @@ class SoundtrackBrowserWindow(ba.Window): return ba.Lstr(resource=self._r + '.defaultSoundtrackNameText') return ba.Lstr(value=soundtrack) - def _refresh(self, select_soundtrack: str = None) -> None: + def _refresh(self, select_soundtrack: str | None = None) -> None: from efro.util import asserttype self._allow_changing_soundtracks = False old_selection = self._selected_soundtrack diff --git a/dist/ba_data/python/bastd/ui/store/browser.py b/dist/ba_data/python/bastd/ui/store/browser.py index 3966567..042a225 100644 --- a/dist/ba_data/python/bastd/ui/store/browser.py +++ b/dist/ba_data/python/bastd/ui/store/browser.py @@ -31,10 +31,10 @@ class StoreBrowserWindow(ba.Window): def __init__(self, transition: str = 'in_right', modal: bool = False, - show_tab: StoreBrowserWindow.TabID = None, - on_close_call: Callable[[], Any] = None, - back_location: str = None, - origin_widget: ba.Widget = None): + show_tab: StoreBrowserWindow.TabID | None = None, + on_close_call: Callable[[], Any] | None = None, + back_location: str | None = None, + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-statements # pylint: disable=too-many-locals from bastd.ui.tabs import TabRow diff --git a/dist/ba_data/python/bastd/ui/store/button.py b/dist/ba_data/python/bastd/ui/store/button.py index c525fec..b766464 100644 --- a/dist/ba_data/python/bastd/ui/store/button.py +++ b/dist/ba_data/python/bastd/ui/store/button.py @@ -20,12 +20,12 @@ class StoreButton: position: Sequence[float], size: Sequence[float], scale: float, - on_activate_call: Callable[[], Any] = None, - transition_delay: float = None, - color: Sequence[float] = None, - textcolor: Sequence[float] = None, + on_activate_call: Callable[[], Any] | None = None, + transition_delay: float | None = None, + color: Sequence[float] | None = None, + textcolor: Sequence[float] | None = None, show_tickets: bool = False, - button_type: str = None, + button_type: str | None = None, sale_scale: float = 1.0): self._position = position self._size = size diff --git a/dist/ba_data/python/bastd/ui/tabs.py b/dist/ba_data/python/bastd/ui/tabs.py index 99ae0db..fce571f 100644 --- a/dist/ba_data/python/bastd/ui/tabs.py +++ b/dist/ba_data/python/bastd/ui/tabs.py @@ -35,7 +35,7 @@ class TabRow(Generic[T]): tabdefs: list[tuple[T, ba.Lstr]], pos: tuple[float, float], size: tuple[float, float], - on_select_call: Callable[[T], None] = None) -> None: + on_select_call: Callable[[T], None] | None = None) -> None: if not tabdefs: raise ValueError('At least one tab def is required') self.tabs: dict[T, Tab] = {} diff --git a/dist/ba_data/python/bastd/ui/tournamententry.py b/dist/ba_data/python/bastd/ui/tournamententry.py index f521380..e77a5c7 100644 --- a/dist/ba_data/python/bastd/ui/tournamententry.py +++ b/dist/ba_data/python/bastd/ui/tournamententry.py @@ -19,12 +19,12 @@ class TournamentEntryWindow(popup.PopupWindow): def __init__(self, tournament_id: str, - tournament_activity: ba.Activity = None, + tournament_activity: ba.Activity | None = None, position: tuple[float, float] = (0.0, 0.0), delegate: Any = None, - scale: float = None, + scale: float | None = None, offset: tuple[float, float] = (0.0, 0.0), - on_close_call: Callable[[], Any] = None): + on_close_call: Callable[[], Any] | None = None): # Needs some tidying. # pylint: disable=too-many-branches # pylint: disable=too-many-statements diff --git a/dist/ba_data/python/bastd/ui/tournamentscores.py b/dist/ba_data/python/bastd/ui/tournamentscores.py index c3ba873..609bde0 100644 --- a/dist/ba_data/python/bastd/ui/tournamentscores.py +++ b/dist/ba_data/python/bastd/ui/tournamentscores.py @@ -19,14 +19,14 @@ class TournamentScoresWindow(popup_ui.PopupWindow): def __init__(self, tournament_id: str, - tournament_activity: ba.GameActivity = None, + tournament_activity: ba.GameActivity | None = None, position: tuple[float, float] = (0.0, 0.0), - scale: float = None, + scale: float | None = None, offset: tuple[float, float] = (0.0, 0.0), tint_color: Sequence[float] = (1.0, 1.0, 1.0), tint2_color: Sequence[float] = (1.0, 1.0, 1.0), - selected_character: str = None, - on_close_call: Callable[[], Any] = None): + selected_character: str | None = None, + on_close_call: Callable[[], Any] | None = None): del tournament_activity # unused arg del tint_color # unused arg diff --git a/dist/ba_data/python/bastd/ui/trophies.py b/dist/ba_data/python/bastd/ui/trophies.py index 4e0ceac..140fea5 100644 --- a/dist/ba_data/python/bastd/ui/trophies.py +++ b/dist/ba_data/python/bastd/ui/trophies.py @@ -19,7 +19,7 @@ class TrophiesWindow(popup.PopupWindow): def __init__(self, position: tuple[float, float], data: dict[str, Any], - scale: float = None): + scale: float | None = None): self._data = data uiscale = ba.app.ui.uiscale if scale is None: diff --git a/dist/ba_data/python/bastd/ui/watch.py b/dist/ba_data/python/bastd/ui/watch.py index fc870c8..296bc36 100644 --- a/dist/ba_data/python/bastd/ui/watch.py +++ b/dist/ba_data/python/bastd/ui/watch.py @@ -25,7 +25,7 @@ class WatchWindow(ba.Window): def __init__(self, transition: str | None = 'in_right', - origin_widget: ba.Widget = None): + origin_widget: ba.Widget | None = None): # pylint: disable=too-many-locals # pylint: disable=too-many-statements from bastd.ui.tabs import TabRow diff --git a/dist/ba_data/python/efro/dataclassio/_pathcapture.py b/dist/ba_data/python/efro/dataclassio/_pathcapture.py index af7113f..b0b34ad 100644 --- a/dist/ba_data/python/efro/dataclassio/_pathcapture.py +++ b/dist/ba_data/python/efro/dataclassio/_pathcapture.py @@ -19,7 +19,7 @@ T = TypeVar('T') class _PathCapture: """Utility for obtaining dataclass storage paths in a type safe way.""" - def __init__(self, obj: Any, pathparts: list[str] = None): + def __init__(self, obj: Any, pathparts: list[str] | None = None): self._is_dataclass = dataclasses.is_dataclass(obj) if pathparts is None: pathparts = [] diff --git a/dist/ba_data/python/efro/dataclassio/_prep.py b/dist/ba_data/python/efro/dataclassio/_prep.py index 704fb72..d49a132 100644 --- a/dist/ba_data/python/efro/dataclassio/_prep.py +++ b/dist/ba_data/python/efro/dataclassio/_prep.py @@ -38,7 +38,7 @@ PREP_ATTR = '_DCIOPREP' PREP_SESSION_ATTR = '_DCIOPREPSESSION' -def ioprep(cls: type, globalns: dict = None) -> None: +def ioprep(cls: type, globalns: dict | None = None) -> None: """Prep a dataclass type for use with this module's functionality. Prepping ensures that all types contained in a data class as well as diff --git a/dist/ba_data/python/efro/rpc.py b/dist/ba_data/python/efro/rpc.py index 6afc310..c9e52ae 100644 --- a/dist/ba_data/python/efro/rpc.py +++ b/dist/ba_data/python/efro/rpc.py @@ -115,7 +115,7 @@ class RPCEndpoint: label: str, debug_print: bool = False, debug_print_io: bool = False, - debug_print_call: Callable[[str], None] = None, + debug_print_call: Callable[[str], None] | None = None, keepalive_interval: float = DEFAULT_KEEPALIVE_INTERVAL, keepalive_timeout: float = DEFAULT_KEEPALIVE_TIMEOUT) -> None: self._handle_raw_message_call = handle_raw_message_call diff --git a/dist/ba_data/python/efro/util.py b/dist/ba_data/python/efro/util.py index d18e505..cc4342a 100644 --- a/dist/ba_data/python/efro/util.py +++ b/dist/ba_data/python/efro/util.py @@ -176,7 +176,7 @@ class DirtyBit: dirty: bool = False, retry_interval: float = 5.0, use_lock: bool = False, - auto_dirty_seconds: float = None, + auto_dirty_seconds: float | None = None, min_update_interval: float | None = None): curtime = time.time() self._retry_interval = retry_interval