updating ba_data to 1.7.35

This commit is contained in:
Ayush Saini 2024-05-19 18:25:43 +05:30
parent d6e457c821
commit ae30ed15ec
234 changed files with 5670 additions and 2718 deletions

View file

@ -9,7 +9,7 @@
"Danish": "Dansk",
"Dutch": "Nederlands",
"Esperanto": "Esperanto",
"Filipino": "Wikang Tagalog ",
"Filipino": "Wikang Pilipino",
"French": "Français",
"German": "Deutsch",
"Gibberish": "Abuktarika",
@ -43,6 +43,7 @@
"!ParkuristTurist!",
"\"9۝ÅЇρѺ۝ƬǀGΞЯ",
"\"Unknown\"",
"3alTemp (Temp)",
"/in/dev/",
"0Globalsters",
"1.4.139",
@ -57,6 +58,7 @@
"26885",
"3alTemp",
"43210",
"4e6yre4ek",
"5PH3X",
"99",
"@sametsunal",
@ -81,6 +83,7 @@
"Gifasa abidjahsi",
"Abinav",
"Abir",
"ABITDANTON",
"Abne",
"Abolfadl",
"Abolfazl",
@ -106,6 +109,7 @@
"Aga<3",
"Carlos Mario Agamez",
"ageng",
"Agenteby20",
"Dimitris Aggelou",
"AGØTI",
"ariyan ahir",
@ -114,6 +118,7 @@
"Ahmed",
"ahmedzabara",
"Collin Ainge",
"Ajnaz",
"Akash",
"Akbar",
"Bekir Akdemir",
@ -145,10 +150,10 @@
"Alexyze",
"Algene123456",
"Alguien_201",
"ALI",
"Ali",
"Mohamed ali",
"Shadiq Ali",
"alireza",
"Alireza",
"alirezaalidokht",
"AliSh8787",
"ALISSON",
@ -183,6 +188,7 @@
"Ange Kevin Amlaman",
"AMOGUSS85",
"amr",
"AN218",
"Anandchaursiya",
"Anas",
"Anastasija",
@ -227,6 +233,7 @@
"Arimaru",
"Arin",
"arjanex",
"Armando",
"Arroz",
"ARSHAD",
"Arshia",
@ -336,10 +343,11 @@
"BomBillo",
"The Bomboler 💣",
"bombsquad",
"Wheezy bombsquad",
"Bombsquadzueira",
"Bomby",
"Zeleni bomby",
"Alex BONYOMA",
"Alex Bonyoma",
"Book",
"Guilherme Borges",
"Lucas Borges",
@ -433,12 +441,14 @@
"David Cot",
"Nayib Méndez Coto",
"Dylan cotten",
"Coutinho",
"covcheg",
"COVER",
"crac",
"CrazyBear",
"Frederick Cretton",
"crisroco10",
"Crispiymini",
"Crisroco10",
"Cristhian",
"Cristian",
"Cristóbal",
@ -464,6 +474,7 @@
"Daniel",
"Daniel3505",
"DaniesAlex007",
"Daniozo",
"Dančo",
"Iman Darius",
"DarkAnarcy",
@ -475,8 +486,9 @@
"David",
"Davide",
"DavidPlayzLol",
"Davidplayzloll",
"DavidPlayzLoll",
"DaymanLP",
"DD87",
"Ddávid",
"Die or Dead",
"Привет от детей DeadLine",
@ -496,6 +508,7 @@
"df",
"Santanu Dhar",
"DHRUVIL",
"DIAbli",
"Guilherme Dias",
"Diase7en",
"ferbie Dicen",
@ -523,6 +536,7 @@
"Gerardo Doro",
"DottorMorte",
"Doubleknig",
"Dr",
"Dragomir",
"Dreaming",
"Drellsan",
@ -554,6 +568,7 @@
"ElderLink",
"elfree",
"Elian",
"Elmakyt",
"ELMEX95",
"Elsans320_YT",
"Elskoser",
@ -573,10 +588,13 @@
"Endless_jk",
"EnglandFirst",
"Enrico",
"Entakos",
"enzo",
"Era",
"Era0S",
"Eric-fan",
"Erick",
"Erik",
"Erkam",
"Jonas Ernst",
"NO es",
@ -635,6 +653,7 @@
"FluffyPal",
"FLᎧRᏋᏁTIᏁᎧ",
"Angelo Fontana",
"Forcedpood",
"FortKing",
"Freaku",
"Golden Freddy",
@ -646,6 +665,7 @@
"FuckIndoDick",
"Lukas Funk",
"Gustavo FunnyGuard28",
"fyroove",
"Erick G",
"Roberto G",
"George G.",
@ -671,6 +691,7 @@
"krish gator",
"gene.mTs",
"GeoMatHeo",
"Gerakl",
"Gerry",
"GG (9.2)",
"ggMustaGD0",
@ -712,6 +733,7 @@
"SHOBHIT GUPTA",
"Gurad",
"Max Guskov",
"Gustavo",
"Rachmat Gusti",
"Aditya Gwala",
"Tódor Gábor",
@ -719,6 +741,7 @@
"Thomas Günther",
"Hamza Emin GÜRLER",
"Paşa Güven",
"Muhammad H",
"H.J.N",
"Haasaani",
"Hack",
@ -786,13 +809,16 @@
"Umair Hussain",
"Hussam",
"Huy",
"HyMr",
"HYr",
"Adrian Höfer",
"Davide Iaccarino",
"Ian",
"iBearzGaming",
"Iboyindyza",
"Ibrahim",
"Iddrejiot",
"idiomat738",
"Ignacio",
"IgnUp21",
"Igomen15",
@ -820,8 +846,9 @@
"InvisibleDude",
"Anestis Ioakimidis",
"Dragomir Ioan",
"IorYou4600 (V2)",
"IorYou4600",
"Isa",
"IsaacStar ★",
"Israelme03",
"Tobias Dencker Israelsen",
"Kegyes István",
@ -837,11 +864,12 @@
"Jhon Jairo",
"jakecato1602@gmail.com",
"wahid jamaludin",
"Jameszambrana",
"Tarun Jangra",
"Aleksandar Janic",
"Martin Jansson",
"JasimGamer",
"Jason",
"jason",
"Javvaed",
"Jbo",
"JCIBravo",
@ -863,17 +891,20 @@
"jimmy",
"Jiren",
"jitues",
"JJ",
"JM",
"Joan",
"JoaoVitorBF",
"joaquin",
"Joaquin",
"Lex Johannes",
"John",
"Ksteven john",
"Steven john",
"Johnny",
"Johnwick",
"joke",
"Jonatas",
"Jonathan",
"Jop",
"Jor",
"JoseANG3L",
@ -921,6 +952,7 @@
"Kasra",
"Kaushik",
"KawaiiON",
"kazoo081",
"kazooicek",
"KD",
"Kejuxs",
@ -950,6 +982,7 @@
"kirill",
"KirillMasich",
"Kittycat41",
"Dominic Klein",
"Andrew Kmitto",
"Philipp Koch",
"Kolmat",
@ -968,8 +1001,10 @@
"krishAngad",
"krishuroy",
"kroш)",
"Mikuláš Krtička",
"Patel krumil",
"Krunal",
"Kubixpro1",
"kueue",
"Alok Kumar",
"Parth Kumar",
@ -988,6 +1023,7 @@
"Labrador",
"labrosggv",
"John Patrick Lachica",
"Osama bin ladin",
"laikrai",
"m a lakum",
"Dmitry Lamperujev",
@ -999,11 +1035,13 @@
"Lazered",
"Lazydog",
"Elia Lazzari",
"LEANKEAN",
"이지민 (Ji-Min Lee)",
"legended",
"Mick Lemmens",
"Leo",
"Mr. LeoLeo",
"Leonid",
"Lester",
"Szajkajkó Levente",
"Szajkajó Levente",
@ -1051,6 +1089,7 @@
"Chenging Lu",
"Chengming Lu",
"João Lucas",
"Pedro Lucas",
"Simone Luconi",
"Ludicrouswizard",
"satrio ludji",
@ -1080,19 +1119,24 @@
"Djawad madi",
"MadNightr",
"Mads Beier Madsen",
"Magomed",
"Mahan",
"Ondřej Mahdalík",
"mahdi",
"Mahdi",
"mahdimahabadi",
"Mose saef maher",
"Mahmoud",
"Mahmoudrabe",
"Mahziyar",
"maicol",
"Majestozão",
"Makar",
"Maks1212",
"Malaysian",
"Amirali Malekshahi",
"EMILIO MALQUIN",
"MAMAD",
"Mamax400",
"Wagdy mamdouh",
"Mani",
"Manimutharu",
@ -1190,16 +1234,18 @@
"Mohammadhosain",
"Mohammadpl",
"Mohammed",
"MOHAMMEDTALAL1ST",
"MohammedTalal1st",
"1n Mohhaamad",
"Shaygan mohsenian",
"Moin",
"MONIRIE",
"Carlos Montalvo",
"carlos montalvo",
"Ederson Moraes",
"Eduardo Moreira",
"Danteo Moriarty",
"Kabir morya",
"Moses",
"Iasonasss Mourelatos",
"mr",
"mr.Dark",
"Mr.Smoothy",
@ -1225,10 +1271,12 @@
"MYSENIOR",
"mythbrk00@gmail.com",
"محمدحسین MZZ",
"Mzz85moh",
"Sajti Márk",
"Samuel Mörling",
"Luca Müller",
"nacho",
"Nabil",
"Nacho",
"Nagaarjun(pongal)",
"Nahuelgomez1607",
"Nasser",
@ -1267,6 +1315,7 @@
"Frederik Nielsen",
"Nifujini",
"Nikali2007",
"NikeOvSky",
"Nima",
"XU NING",
"طارق محمد رضا سعيد NinjaStarXD",
@ -1283,6 +1332,7 @@
"NoNameC3698241",
"None",
"NOOBPEDAR",
"NoobPilotPlayz",
"Noobslaya101",
"noorjandle1",
"Petter Nordlander",
@ -1310,9 +1360,13 @@
"Oscar",
"Osmanlı2002",
"Osmanys",
"otd",
"oualiabdou",
"OyUnBoZaN (NEMUTLUTURKUMDİYENE)",
"pablo",
"pack",
"PALASH",
"Buddy pall",
"Giorgio Palmieri",
"Abhinay Pandey",
"PangpondTH",
@ -1325,11 +1379,13 @@
"Pastis69",
"Sagar patil",
"pato",
"patrick",
"Patrick",
"paulo",
"Dominik Pavešić",
"BARLAS PAVLOS-IASON",
"Payu",
"PC1003436",
"pc100756",
"PC189085",
"PC192082",
"pc192089",
@ -1342,7 +1398,9 @@
"pebikristia",
"Pedro",
"Jiren/Juan Pedro",
"João Pedro",
"Penta :D",
"Peppone0071",
"Peque",
"Rode Liliana Miranda Pereira",
"Jura Perić",
@ -1360,7 +1418,9 @@
"piga",
"Stefano Pigozzi",
"Mario Donato Pilla",
"PillTek",
"Pinchidino",
"pinguino",
"Danilo \"Logan\" Pirrone",
"PivotStickfigure12",
"Pixelcube",
@ -1374,6 +1434,7 @@
"Anestis Plithos",
"Pluisbaard",
"Jaideep Kumar PM",
"Pmans",
"podolianyn",
"Pofani",
"poggersCat",
@ -1382,7 +1443,7 @@
"Pooya",
"pouriya",
"Pouya",
"Pranav",
"pranav",
"Luca Preibsch",
"Prem",
"Fabian Prinz",
@ -1414,6 +1475,7 @@
"raghul",
"khaled rahma",
"Rayhan Rahmats",
"Raiyan",
"Babang Raja",
"Ralfreengz",
"1. Ramagister",
@ -1465,6 +1527,7 @@
"Ridzuan",
"Samuel Rieger",
"RieJoemar",
"RiLa",
"Rings3467",
"Jeroen Rinzema",
"RioAdir",
@ -1505,6 +1568,7 @@
"Justin Saephan",
"sahel",
"Abdullah Saim",
"Saints557",
"Audinta Sakti",
"Bassam bu salh",
"Bsam bu salh",
@ -1513,6 +1577,7 @@
"Matteo Salvini",
"Salvo04",
"Samen",
"Samir",
"Samsep10l",
"San",
"SaNt0RiNiKits577YT",
@ -1548,6 +1613,8 @@
"shakesm",
"Sharvesh",
"Nalam Shashwath",
"A sheep",
"A small sheep",
"shemas",
"Haige Shi",
"ShockedGaming",
@ -1555,6 +1622,7 @@
"Shayan Shokry",
"Dominik Sikora",
"Leonardo Henrique da Silva",
"Lucas Silva",
"Sebastian Silva",
"silver_volt4",
"Aviv Simel",
@ -1620,8 +1688,10 @@
"Shannon Sy",
"syaifudib",
"Daniel Sykora",
"Syumza",
"Sz™",
"Jorge Luis Sánchez",
"Kevin Nicola Ríos Sánchez",
"Daniel Sýkora",
"Aleksandar Tadic",
"Arung Taftazani",
@ -1638,6 +1708,7 @@
"Tarma",
"tarun",
"Tauras",
"TAWILE",
"tcnuhgv",
"tdho",
"Teals53",
@ -1666,6 +1737,7 @@
"TheMikirog",
"Theo",
"Thiago_TRZ",
"ThirdStar248",
"ThisIsBad",
"Trevon Thrasher",
"Tiberiu",
@ -1678,9 +1750,11 @@
"Thura Tint",
"Nishant Tiwari",
"tjkffndeupwfbkh",
"Juraj Tlach",
"Toloche",
"Tom",
"Juan Pablo Montoya Tomalá",
"Tomasekvata",
"TomasNoobCz",
"tomo",
"tongtong",
@ -1693,6 +1767,7 @@
"TrialTemp",
"Trivago",
"El Trolax",
"Quang Truøng",
"tseringlama",
"Konstantin Tsvetkov",
"Kontantin Tsvetkov",
@ -1707,6 +1782,7 @@
"Atchy-Dalama--Ancelly Ulrich",
"Syed Umar",
"Unknown",
"Unlette659",
"Uros",
"clarins usap",
"utyrrwq",
@ -1722,6 +1798,7 @@
"Dmitry \"SqdDoom\" Verigo",
"Deepanshu Verma",
"Jop Vernooij",
"Veroyatnolevlev",
"Via",
"Vickey",
"Victor",
@ -1790,21 +1867,25 @@
"amr yasser",
"Yatoku",
"YellowTractor",
"YelowGlow",
"Yasin YILMAZ",
"Ymgfr",
"yoksoudraft",
"Yones",
"Kenneth Yoneyama",
"yossef",
"youcef",
"Youssef",
"ahmed youssef",
"Yousuf",
"Yovan182Sunbreaker",
"Yrtking",
"YRTKING",
"All Star YT",
"Dark Fgg5 YT",
"Yudhis",
"yugo",
"yullian",
"YuriBombSquad",
"Yuslendo",
"NEEROOA Muhammad Yusuf",
"Yuuki",
@ -1824,6 +1905,8 @@
"Zangar",
"ZaraMax",
"zecharaiah",
"ArShAm ZED",
"Zeinab1391",
"Daniele Zennaro",
"Zenotaiko",
"zFliws",
@ -1896,6 +1979,7 @@
"!SW сосут мой член!",
"Эмир",
"Өмүрзаков Эрсултан",
"Forton123 ютубер",
"Ярослав \"Noiseaholic\"",
"қуатжан",
"اا",
@ -1920,6 +2004,7 @@
"محمد خالد",
"امیرحسین دهقان",
"امید رضازاده",
"كريستيانو رونالدو",
"فاطمه عباس زاده ۸۴",
"فاطمه عباس زاده۸۴",
"زينب",
@ -2016,6 +2101,6 @@
"Zona-BombSquad",
"CrazySquad",
"Stazzy",
"Slida"
"slida"
]
}

View file

@ -1,6 +1,6 @@
{
"accountSettingsWindow": {
"accountNameRules": ".لا يمكن لاسماء الحِسابَات أن تحتوي على رموز تعبيرية أو حروف غير ألفبائية",
"accountNameRules": "لا يمكن أن تحتوي أسماء الحسابات على رموز تعبيرية أو أحرف خاصة أخرى",
"accountProfileText": "معلومات اللاعبين",
"accountsText": "حسابات",
"achievementProgressText": "${TOTAL} من أصل ${COUNT} إنجازاتك: أنجزت",
@ -8,13 +8,13 @@
"changeOncePerSeason": "يمكنك تغييره مرة واحدة في الموسم",
"changeOncePerSeasonError": "يجب عليك الانتظار حتى الموسم القادم لتغيير هذا مجددا (${NUM} أيام )",
"customName": "الاسم المخصص",
"googlePlayGamesAccountSwitchText": "اذا اردت استخدام حساب غوغل بلاي اخر،\nقم بإستعمال تطبيق غوغل بلاي العاب لتحويله.",
"googlePlayGamesAccountSwitchText": "اذا اردت استخدام حساب غوغل بلاي اخر،\nقم بإستعمال تطبيق العاب غوغل بلاي لتحويله.",
"linkAccountsEnterCodeText": "ادخل الرمز",
"linkAccountsGenerateCodeText": "انشئ رمز",
"linkAccountsInfoText": "(مشاركة تقدمك مع الاجهزة الاخرى)",
"linkAccountsInstructionsNewText": "لربط حسابين،- انشئ رمز من الجهاز المراد انشاء الحساب فيه\n- وقم بإدخال الرمز في الجهاز الآخر\n\nالبيانات من الحساب الأول سوف يتم مشاركتها بين الجهازين\n\n من الحسابات كحد أقصى ${COUNT} يمكنك انشاء\n\n تنويه : فقط اربط الحسابات التي تملكها، إذا ربطت حسابك مع الأصدقاء،\n\n .لن يمكنكما اللعب معًا في نفس الوقت",
"linkAccountsInstructionsText": "لربط حسابين, انتج كود على احد الحسابين \nو ادخل هذا الكود على الاخر.\nالتقدم و المخزون سيشتركا.\nيمكنك ربط حتى ${COUNT} حسابات.\n\nكن حذراً; هذا لا يمكن استرجاعه",
"linkAccountsText": "ربط حساب",
"linkAccountsText": "ربط الحسابات",
"linkedAccountsText": ": حساباتي المرتبطة",
"manageAccountText": "إدارة الحساب",
"nameChangeConfirm": "هل تريد تغيير اسم حسابك إلى ${NAME}؟",
@ -33,7 +33,7 @@
"signInWithTestAccountText": "تسجيل الدخول بحساب تجريبي",
"signInWithText": "تسجيل دخول مع ${SERVICE}",
"signInWithV2InfoText": "حساب يعمل على جميع المنصات",
"signInWithV2Text": "قم بتسجيل الدخول باستخدام حساب BombSquad",
"signInWithV2Text": "قم بتسجيل الدخول باستخدام حساب فرقة القنبلة",
"signOutText": "تسجيل الخروج",
"signingInText": "...جارٍ تسجيل دخولك",
"signingOutText": "...جارٍ تسجيل خروجك",
@ -79,7 +79,7 @@
"Free Loader": {
"descriptionFull": "ابدأ بلعب الوضع الحر للجميع مع لاعبين أو أكثر",
"descriptionFullComplete": "تم بدء لعبة بوضع الحرية للجميع مع لاعِبَيْنْ أو أكثر",
"name": "الفريق المجاني"
"name": "محمل مجاني"
},
"Gold Miner": {
"description": "اقتل 6 خصوم بأستخدام الألغام الأرضيَّة",
@ -196,7 +196,7 @@
"descriptionComplete": "لقد هزمْتَ كل الموجات",
"descriptionFull": "${LEVEL} اهزم كل الموجات في",
"descriptionFullComplete": "${LEVEL} لقد هزمتَ كل الموجات في",
"name": "${LEVEL} نصر"
"name": "${LEVEL} إنتصار"
},
"Pro Runaround Victory": {
"description": "اكمل كل الموجات",
@ -351,7 +351,7 @@
"soundtrackDescriptionText": "(اختر موسيقاك الخاصة لتعمل خلال اللعب)",
"titleText": "الصوت"
},
"autoText": "ذاتي الاختيار",
"autoText": "تلقائيا",
"backText": "للخلف",
"banThisPlayerText": "حظر هاذا الاعب",
"bestOfFinalText": "الافضل في ${COUNT}",
@ -601,6 +601,7 @@
"localProfileText": "(الملف الشخصي المحلي)",
"nameDescriptionText": "اسم اللاعب",
"nameText": "الاسم",
"profileAlreadyExistsText": ".يوجد ملف شخصي بهذا الإسم بالفِعل",
"randomText": "عشوائي",
"titleEditText": "تعديل الملف الشخصي",
"titleNewText": "ملف شخصي جديد",
@ -612,7 +613,7 @@
"cantDeleteDefaultText": "لا يمكنك حذف الصوت الافتراضي.",
"cantEditDefaultText": "لا يمكن التعديل على تسجيل الصوت الاساسي. قم بنسخه او أنشئ واحدا جديدا",
"cantOverwriteDefaultText": "لا يمكن الكتابة فوق الصوت الافتراضي",
"cantSaveAlreadyExistsText": "يوجد مقطع صوتي بهذا الاسم من قبل.",
"cantSaveAlreadyExistsText": "يوجد مقطع صوتي بهذا الاسم.",
"defaultGameMusicText": "<موسيقى اللعبة الافتراضية>",
"defaultSoundtrackNameText": "الصوت الافتراضي",
"deleteConfirmText": "حذف الموسيقى التصويرية:\n\n'${NAME}'؟",
@ -682,6 +683,8 @@
"duplicateText": "مكرر\nقائمة التشغيل",
"editText": "تصحيح\nقائمة التشغيل",
"newText": "الجديد\nقائمة التشغيل",
"pointsToWinText": "نقاط للفوز",
"seriesLengthText": "طول السلسلة",
"showTutorialText": "عرض البرنامج التعليمي",
"shuffleGameOrderText": "ترتيب لعبة المراوغة",
"titleText": "تخصيص ${TYPE} قوائم تشغيل"
@ -789,7 +792,7 @@
"titleText": "متعدد الاعبين",
"wifiDirectDescriptionBottomText": "إذا كانت جميع الأجهزة تحتوي على لوحة \"واي-في مباشر\"، فيجب أن تكون قادرة على استخدامها للعثور عليها\nوالتواصل مع بعضها البعض. مرة واحدة يتم توصيل جميع الأجهزة، يمكنك تشكيل الأطراف\nهنا باستخدام علامة التبويب \"الشبكة المحلية\"، تماما كما هو الحال مع شبكة واي فاي العادية.\n\nللحصول على أفضل النتائج، يجب أن يكون مضيف واي-في ديريكت أيضا مضيف الطرف ${APP_NAME}.",
"wifiDirectDescriptionTopText": "واي فاي المباشر يمكن استخدامها لتوصيل أجهزة الروبوت مباشرة دون\nوالتي تحتاج إلى شبكة واي فاي. هذا يعمل بشكل أفضل على الروبوت 4.2 أو أحدث.\n\nلاستخدامه، افتح إعدادات واي-في وابحث عن \"واي-في ديريكت\" في القائمة.",
"wifiDirectOpenWiFiSettingsText": "افتح إعدادات واي-في",
"wifiDirectOpenWiFiSettingsText": "افتح إعدادات واي-فاي",
"wifiDirectText": "واي فاي مباشر",
"worksBetweenAllPlatformsText": "(يعمل بين جميع المنصات)",
"worksWithGooglePlayDevicesText": "(يعمل مع الأجهزة التي تعمل على جوجل بلاي (أندرويد) نسخة من اللعبة)",
@ -1277,10 +1280,12 @@
"kidFriendlyModeText": "وضع الأطفال (يقلل العنف، إلخ)",
"languageText": "لغة",
"moddingGuideText": "دليل التعديلات البرمجية",
"moddingToolsText": "أدوات التعديلات البرمجية",
"mustRestartText": ".يجب أن تقوم بإعادة تشغيل اللعبة لكي يعمل هذا",
"netTestingText": "اختبار الشبكة",
"resetText": "إعادة تعيين",
"showBombTrajectoriesText": "عرض مسارات القنبلة",
"showDemosWhenIdleText": "عرض العروض التوضيحية عند الخمول",
"showDevConsoleButtonText": "إظهار زر وحدة تحكم المطورين",
"showInGamePingText": "عرض التأخير الداخلي للعبة",
"showPlayerNamesText": "إظهار اسماء اللاعبين",
@ -1301,6 +1306,9 @@
"signInWithGameCenterText": "لاستخدام حساب مركز الألعاب،\nسجل الدخول باستخدام تطبيق مركز الألعاب.",
"singleGamePlaylistNameText": "فقط ${GAME}",
"singlePlayerCountText": "1 لاعب",
"sizeLargeText": "كبير",
"sizeMediumText": "وسط",
"sizeSmallText": "صغير",
"soloNameFilterText": "منفردا ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "اختر شخصية",
@ -1823,6 +1831,7 @@
"toSkipPressAnythingText": "(إلمس او إضغظ اي شئ لتخطي البرنامج التعليمي)"
},
"twoKillText": "!قتل مزدوج",
"uiScaleText": "مقياس واجهة المستخدم",
"unavailableText": "غير متوفر",
"unconfiguredControllerDetectedText": ":تم الكشف على يد تحكم غير مهيئة",
"unlockThisInTheStoreText": "هذا يجب ان يفتح في المتجر",
@ -1836,6 +1845,8 @@
"upgradeText": "احصل على ترقية",
"upgradeToPlayText": "في متجر اللعبة لتلعب هذا \"${PRO}\" اشتري",
"useDefaultText": "استخدام الإفتراضي",
"userSystemScriptsCreateText": "إنشاء البرامج النصية لنظام المستخدم",
"userSystemScriptsDeleteText": "حذف البرامج النصية لنظام المستخدم",
"usesExternalControllerText": "هذه اللعبة تستخدم يد تحكم خارجية للإدخال",
"usingItunesText": "...استخدام تطبيق الموسيقى للموسيقى التصويرية",
"v2AccountLinkingInfoText": "اذا اردت ربط حسابات V2، قم بالتوجه الى 'ادارة الحساب'.",

View file

@ -556,6 +556,7 @@
"demoText": "Дэманстрацыя",
"denyText": "Адхіліць",
"deprecatedText": "Састарэў",
"descriptionText": "Апісанне",
"desktopResText": "Дазвол Экрана",
"deviceAccountUpgradeText": "Увага:\nВы ўзайшлі ў акаўнт дэвайса\n(${NAME}).\nАкаўнты дэвайса будуць Выдалены ў будучай абнове.",
"difficultyEasyText": "Лёгка",
@ -602,6 +603,7 @@
"localProfileText": "(лакальны профіль)",
"nameDescriptionText": "Імя Гульца",
"nameText": "Імя",
"profileAlreadyExistsText": "Профіль з такім імем ужо існуе.",
"randomText": "выпадкова",
"titleEditText": "Рэдагаваць Профіль",
"titleNewText": "Новы Профіль",
@ -683,6 +685,8 @@
"duplicateText": "Прадубляваць\nПлэйліст",
"editText": "Рэдагаваць\nПлэйліст",
"newText": "Новы\nПлэйліст",
"pointsToWinText": "Ачкоў Для Перамогі",
"seriesLengthText": "Даўжыня Чарады",
"showTutorialText": "Паказаць Туторыял",
"shuffleGameOrderText": "Выпадковы Парадак Гульняў",
"titleText": "Наладзіць ${TYPE} Плэйлісты"
@ -1287,10 +1291,14 @@
"kidFriendlyModeText": "Дзіцячы Рэжым (менш гвалту і г.д.)",
"languageText": "Мова",
"moddingGuideText": "Кіраўніцтва па Модынгу",
"moddingToolsText": "Прылады Для Модынгу",
"mustRestartText": "Вы павінны перазагрузіць гульню, каб прымяніць новыя налады.",
"netTestingText": "Тэсціраванне Сеткі",
"resetText": "Скінуць",
"sendInfoText": "Даслаць інфармацыю",
"showBombTrajectoriesText": "Паказваць Траекторыi Бомб",
"showDemosWhenIdleText": "Паказваць Дэма ў Рэжыме Чаканьня",
"showDeprecatedLoginTypesText": "Паказаць састарэлыя тыпы ўваходу",
"showDevConsoleButtonText": "Паказаць Кнопку Кансолі Распрацоўніка",
"showInGamePingText": "Паказываць Пынг Гульні",
"showPlayerNamesText": "Паказваць Імёны Гульцоў",
@ -1300,7 +1308,7 @@
"translationFetchErrorText": "статус перакладу недаступны",
"translationFetchingStatusText": "праверка статуса перакладу...",
"translationInformMe": "Паведаміце мне, калі мая мова мае патрэбу ў абнаўленнях",
"translationNoUpdateNeededText": "гэтая мова абноўлена; ура!",
"translationNoUpdateNeededText": "Бягучая мова актуальная; Ура!",
"translationUpdateNeededText": "** гэтая мова патрабуе абнаўлення!! **",
"vrTestingText": "VR Тэстіраванне"
},
@ -1311,6 +1319,9 @@
"signInWithGameCenterText": "Каб карыстацца акаўнтам Game Centerб\nувайдзіце з дапамогаю прыкладання Game Center.",
"singleGamePlaylistNameText": "Толькі ${GAME}",
"singlePlayerCountText": "1 гулец",
"sizeLargeText": "Вялікі",
"sizeMediumText": "Сярэдні",
"sizeSmallText": "Маленькі",
"soloNameFilterText": "Сола ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Выбар Героя",
@ -1839,6 +1850,7 @@
"toSkipPressAnythingText": "(націсніце, каб прапусціць туторыял)"
},
"twoKillText": "ДВА ЗАБОЙСТВЫ!",
"uiScaleText": "Маштаб КІ",
"unavailableText": "недаступна",
"unconfiguredControllerDetectedText": "Невядомы кантролер знойдзены:",
"unlockThisInTheStoreText": "Гэта павінна быць адкрыта ў магазіне.",
@ -1852,6 +1864,8 @@
"upgradeText": "Палепшыць",
"upgradeToPlayText": "Адкрыйце \"${PRO}\" у магазіне, каб гуляць у гэта.",
"useDefaultText": "Вярнуць Стандартныя",
"userSystemScriptsCreateText": "Стварыць Карыстацкі Сыстэмны Сцэнар",
"userSystemScriptsDeleteText": "Выдаліць Карыстацкі Сыстэмны Сцэнар",
"usesExternalControllerText": "Гэта гульня можа выкарыстоўваць знешні кантролер для кіравання.",
"usingItunesText": "Выкарыстанне музычнага прыкладання для саўндтрэка ...",
"usingItunesTurnRepeatAndShuffleOnText": "Калі ласка, праверце, што ператасаванне і паўтор усяго ў iTunes ўключаны. ",

View file

@ -558,6 +558,7 @@
"demoText": "演示",
"denyText": "拒绝",
"deprecatedText": "已弃用",
"descriptionText": "描述",
"desktopResText": "桌面分辨率",
"deviceAccountUpgradeText": "紧急警告:\n你正在使用本地账户登录 (${NAME})\n此账户会在未来升级中被删除\n~如果想保持账号请升级到v2账户~",
"difficultyEasyText": "简单",
@ -605,6 +606,7 @@
"localProfileText": "(本地档案)",
"nameDescriptionText": "角色名称",
"nameText": "名称",
"profileAlreadyExistsText": "具有该名称的配置文件已存在",
"randomText": "随机",
"titleEditText": "编辑档案",
"titleNewText": "新建档案",
@ -687,6 +689,8 @@
"editText": "编辑比\n赛列表",
"gameListText": "比赛列表",
"newText": "新建比\n赛列表",
"pointsToWinText": "获胜点数",
"seriesLengthText": "列表长度",
"showTutorialText": "播放教程",
"shuffleGameOrderText": "随机比赛模式",
"titleText": "自定义${TYPE}列表"
@ -1262,6 +1266,7 @@
},
"scoreWasText": "(是${COUNT}",
"selectText": "选择",
"sendInfoDescriptionText": "向开发者发送账户和应用状态信息\n清附上您的姓名和寄送原因",
"seriesWinLine1PlayerText": "获得",
"seriesWinLine1TeamText": "获得",
"seriesWinLine1Text": "获得",
@ -1292,9 +1297,11 @@
"kidFriendlyModeText": "儿童友好模式(低暴力等)",
"languageText": "语言",
"moddingGuideText": "Mod文档",
"moddingToolsText": "Mod工具",
"mustRestartText": "您必须重启游戏来使之生效",
"netTestingText": "网络测试",
"resetText": "恢复默认值",
"sendInfoText": "发送消息",
"showBombTrajectoriesText": "显示炸弹轨迹",
"showDemosWhenIdleText": "当游戏空闲时播放演示画面",
"showDevConsoleButtonText": "显示开发者控制台按钮",
@ -1307,7 +1314,7 @@
"translationFetchingStatusText": "正在检查翻译进度喵…",
"translationInformMe": "中文需要更新翻译时请通知我!",
"translationNoUpdateNeededText": "当前语言是最新的;喵呜!",
"translationUpdateNeededText": "**当前语言需要更新!! **",
"translationUpdateNeededText": "**当前语言需要更新!!**",
"vrTestingText": "VR测试"
},
"shareText": "分享",
@ -1317,6 +1324,9 @@
"signInWithGameCenterText": "使用游戏中心\n应用程序登录。",
"singleGamePlaylistNameText": "仅${GAME}",
"singlePlayerCountText": "一个玩家",
"sizeLargeText": "大",
"sizeMediumText": "中",
"sizeSmallText": "小",
"soloNameFilterText": "单挑模式 ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "角色选择",
@ -1843,6 +1853,7 @@
"toSkipPressAnythingText": "(点击或按下任何按钮以跳过教程)"
},
"twoKillText": "双杀!",
"uiScaleText": "UI缩放",
"unavailableText": "不可用",
"unconfiguredControllerDetectedText": "检测到未配置的手柄:",
"unlockThisInTheStoreText": "这必须在商店中解锁。",
@ -1856,6 +1867,8 @@
"upgradeText": "升级",
"upgradeToPlayText": "在游戏商店中解锁\"${PRO}\",以体验该游戏。",
"useDefaultText": "使用默认值",
"userSystemScriptsCreateText": "创建用户系统脚本",
"userSystemScriptsDeleteText": "删除用户系统脚本",
"usesExternalControllerText": "该游戏使用外部手柄进行输入。",
"usingItunesText": "使用音乐应用设置背景音乐……",
"usingItunesTurnRepeatAndShuffleOnText": "请确认iTunes中随机播放已开启且重复全部歌曲。",

View file

@ -1895,7 +1895,7 @@
"xbox360ControllersWindow": {
"getDriverText": "Nabavi driver",
"macInstructions2Text": "Da možeš koristiti kontrolere bežično, trebat ćeš i reciever koji\ndolazi u 'Xbox 360 Wireless Controller for Windows' paketu.\nJedan reciever omogućuje ti da povežeš do 4 kontrolera.\n\nVažno: recieveri trećih strana neće raditi s ovim driverom; \nprovjeri da na tvom recieveru piše 'Microsoft', a ne 'XBOX 360'.\nMicrosoft ih više ne prodaje odvojeno, pa ćeš morati nabaviti\njednoga u paketu s kontrolerom ili potraži na ebayu.\n\nAko ti je ovo bilo korisno, molim te razmisli o donaciji\nprogrameru drivera na njegovoj stranici.",
"macInstructionsText": "Da možeš koristiti Xbox 360 kontrolere, morat ćeš instalirati\nMac driver dostupan na poveznici ispod. \nRadi i sa žičnim i s bežičnim kontrolerima.",
"macInstructionsText": "Da možeš koristiti Xbox 360 kontrolere, morat ćeš instalirati\nMac driver dostupan na poveznici ispod. \nRadi i sa žičnim i s bežičnim kontrolerima. ",
"ouyaInstructionsText": "Za korištenje žičnih Xbox 360 kontrolera s BombSquadom, jednostavno\nih uključi u USB ulaz tvog uređaja. Možeš koristiti USB hub\nda priključiš više kontrolera.\n\nZa korištenje bežičnih kontrolera trebat ćeš bežični reciever, \nkoji je dostupan kao dio \"Xbox 360 wireless Controller for Windows\" \npaketa ili u slobodnoj prodaji. Svaki se reciever priključuje u USB ulaz i\nomogućuje ti da povežeš do 4 bežična kontrolera.",
"titleText": "Korišćenje Xbox 360 kontrolera sa $(APP_NAME)"
},

View file

@ -26,6 +26,7 @@
"setAccountNameDesc": "Vyberte si jméno pro váš účet.\nMůžete použít jedno ze svých již\npoužitých nebo si vytvořit nové.",
"signInInfoText": "Přihlašte se, abyste mohli sbírat kupóny, soupeřit online\na sdílet postup mezi zařízeními.",
"signInText": "Přihlásit",
"signInWithAnEmailAddressText": "Přihlášení s emailem",
"signInWithDeviceInfoText": "(automaticky vytvořený účet dostupný pouze na tomto zařízení)",
"signInWithDeviceText": "Přihlásit se s účtem zařízení",
"signInWithGameCircleText": "Přihlásit se s přes Game Circle",
@ -562,6 +563,7 @@
"demoText": "Demo",
"denyText": "Zakázat",
"deprecatedText": "Zastaralé",
"descriptionText": "Popisek",
"desktopResText": "Rozlišení plochy",
"deviceAccountUpgradeText": "Varování:\nJste přihlášeni na účet dostupný pouze na tomto zařízení (${NAME}).\nTyto účty budou v nastávající aktualizaci odstraněny.\nPřejděte na účet V2, chcete-li si ponechat Váš postup.",
"difficultyEasyText": "Lehká",
@ -608,6 +610,7 @@
"localProfileText": "(lokální profil)",
"nameDescriptionText": "Přezdívka",
"nameText": "Jméno",
"profileAlreadyExistsText": "Profil s tímto jménem již existuje.",
"randomText": "náhodně",
"titleEditText": "Upravit profil",
"titleNewText": "Nový profil",
@ -690,6 +693,8 @@
"duplicateText": "Duplikovat\nplaylist",
"editText": "Upravit\nplaylist",
"newText": "Nový\nplaylist",
"pointsToWinText": "Bodů Do Výhry",
"seriesLengthText": "Délka Série",
"showTutorialText": "Zobrazit návod",
"shuffleGameOrderText": "Náhodné seřazení her",
"titleText": "Přizpůsobit ${TYPE} playlisty"
@ -728,10 +733,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} kupónů od ${NAME}",
"friendPromoCodeAwardText": "Získáte ${COUNT} kupónů pokaždé, jakmile je použit.",
"friendPromoCodeExpireText": "Kód vyprší za ${EXPIRE_HOURS} hodin a je funkční pouze pro nové hráče.",
"friendPromoCodeInstructionsText": "Pro použití otevřete ${APP_NAME} a jděte do „Nastavení->Pokročilé->Vložit kód“\nNa bombsquadgame.com na odkazy k stažení na všechny podporované platformy.",
"friendPromoCodeInstructionsText": "Pro použití otevřete ${APP_NAME} a jděte do „Nastavení->Pokročilé->Poslat info“\nNa bombsquadgame.com na odkazy k stažení na všechny podporované platformy.",
"friendPromoCodeRedeemLongText": "Může z něj být získáno ${COUNT} kupónů zdarma až ${MAX_USES} lidmi.",
"friendPromoCodeRedeemShortText": "Může být použit pro získání ${COUNT} kupónů do hry.",
"friendPromoCodeWhereToEnterText": "(v „Nastavení->Pokročilé->Vložit Kód“)",
"friendPromoCodeWhereToEnterText": "(v „Nastavení->Pokročilé->Poslat info“)",
"getFriendInviteCodeText": "Získat kód pro pozvání přátel",
"googlePlayDescriptionText": "Pozvěte Google Play hráče do vaší Party:",
"googlePlayInviteText": "Pozvat",
@ -1263,6 +1268,7 @@
},
"scoreWasText": "(předchozí ${COUNT})",
"selectText": "Zvolit",
"sendInfoDescriptionText": "Pošle informace stavu aplikace a účtu vývojářovi.\nProsím zahrňte své jméno nebo důvod k poslání.",
"seriesWinLine1PlayerText": "VYHRÁVÁ",
"seriesWinLine1TeamText": "VYHRÁVÁ",
"seriesWinLine1Text": "VYHRÁVÁ",
@ -1281,6 +1287,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(jednoduchá, ovládáním přátelská klávesnice na obrazovce pro úpravu textu)",
"alwaysUseInternalKeyboardText": "Vždy použít interní klávesnici",
"benchmarksText": "Benchmarky a testy výdrže",
"devToolsText": "Nástroje pro Vývojáře",
"disableCameraGyroscopeMotionText": "Vypnout gyroskopický pohyb kamery",
"disableCameraShakeText": "Vypnout otřes kamery",
"disableThisNotice": "(můžete si toto oznámení vypnout v pokročilých nastaveních)",
@ -1289,17 +1296,20 @@
"enterPromoCodeText": "Zadat kód",
"forTestingText": "Poznámka: Tyto hodnoty sou pouze pro test. Obnoví se po restartu.",
"helpTranslateText": "Jiné než anglické verze ${APP_NAME} jsou komunitně\npodporovanou záležitostí. Pokud byste chtěli přidat\nnebo opravit překlad, následujte odkaz níže. Předem děkujeme!",
"kickIdlePlayersText": "Vyhazovat neaktivní hráče",
"kickIdlePlayersText": "Vykopnout neaktivní hráče",
"kidFriendlyModeText": "Dětský mód (snížené násilí, atd.)",
"languageText": "Jazyk",
"moddingGuideText": "Příručka módů",
"moddingToolsText": "Modovací možnosti",
"mustRestartText": "Musíte restartovat hru, aby se změny projevily.",
"netTestingText": "Testování sítě",
"resetText": "Obnovit",
"sendInfoText": "Poslat info",
"showBombTrajectoriesText": "Ukazovat trajektorii bomb",
"showDemosWhenIdleText": "Zobrazit ukázky při nečinnosti",
"showDevConsoleButtonText": "Ukaž tlačítko vývojářské konzoly",
"showInGamePingText": "Ukazovat ping při hře",
"showDemosWhenIdleText": "Zobrazit demo při nečinnosti",
"showDeprecatedLoginTypesText": "Zobrazit zastaralé způsoby přihlášení",
"showDevConsoleButtonText": "Zobrazit tlačítko vývojářské konzole",
"showInGamePingText": "Zobrazit herní ping",
"showPlayerNamesText": "Ukazovat jména hráčů",
"showUserModsText": "Zobrazit složku s módy",
"titleText": "Pokročilé",
@ -1307,8 +1317,8 @@
"translationFetchErrorText": "stav překladu nedostupný",
"translationFetchingStatusText": "zjišťuji stav překladu...",
"translationInformMe": "Oznamte mi když bude můj jazyk potřebovat aktualizaci",
"translationNoUpdateNeededText": "tento jazyk je aktuální; hurá!",
"translationUpdateNeededText": "** jazyk potřebuje aktualizovat!! **",
"translationNoUpdateNeededText": "Tento jazyk je aktuální; hurá! :)",
"translationUpdateNeededText": "** Jazyk potřebuje aktualizovat!! **",
"vrTestingText": "VR Test"
},
"shareText": "Sdílet",
@ -1318,6 +1328,9 @@
"signInWithGameCenterText": "Pro použití účtu Game Center se přihlaste\ns pomocí aplikace Game Center.",
"singleGamePlaylistNameText": "Jen ${GAME}",
"singlePlayerCountText": "1 hráč",
"sizeLargeText": "Velký",
"sizeMediumText": "Středně velký",
"sizeSmallText": "Malý",
"soloNameFilterText": "Sólo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Vybírání postavy",
@ -1844,6 +1857,7 @@
"toSkipPressAnythingText": "(stiskněte cokoliv pro přeskočení návodu)"
},
"twoKillText": "DVĚ ZABITÍ!!!",
"uiScaleText": "Velikost UI",
"unavailableText": "Nedostupné",
"unconfiguredControllerDetectedText": "Zaznamenán nenakonfigurovaný ovladač:",
"unlockThisInTheStoreText": "Toto musí být nejdříve odemknuto v obchodě.",
@ -1857,6 +1871,8 @@
"upgradeText": "Přeměnit",
"upgradeToPlayText": "Upgradujte na „${PRO}“ v herním obchodě, abyste toto mohli hrát.",
"useDefaultText": "Použít výchozí",
"userSystemScriptsCreateText": "Vytvořit Uživatelská Systémová Skripta",
"userSystemScriptsDeleteText": "Smazat Uživatelská Systémová Skripta",
"usesExternalControllerText": "Tato hra používá jako vstup externí ovladač.",
"usingItunesText": "Používám aplikaci hudby pro soundtrack...",
"usingItunesTurnRepeatAndShuffleOnText": "Ujistěte se prosím, že je zaplý shuffle, a opakovat VŠE v iTunes,",

View file

@ -1616,7 +1616,7 @@
"macInstructions2TextScale": 0.76,
"macInstructionsText": "For at bruge Xbox 360-controllere skal du installere en\nMacdriver, der er tilgængelig i linket herunder.\nDet virker både med controllere med og uden ledninger.",
"macInstructionsTextScale": 0.8,
"ouyaInstructionsText": "For at bruge Xbox 360-controllere til BombSquad, tilslut dem din enheds USB-port.\nDu kan bruge en USB-hub\ntil at forbinde flere controllere. \n\nFor at bruge trådløse controllere skal du bruge en trådløs modtager,\ntilgængelig som en del af \"Xbox 360 wireless Controller for Windows\"-\npakken eller solgt seperat. Hver modtager puttes ind i en USB port\nog tillader dig at forbinde op til 4 trådløse controllers.",
"ouyaInstructionsText": "For at bruge Xbox 360-controllere til BombSquad, tilslut dem din enheds USB-port.\nDu kan bruge en USB-hub\ntil at forbinde flere controllere. \n\nFor at bruge trådløse controllere skal du bruge en trådløs modtager,\ntilgængelig som en del af \"Xbox 360 wireless Controller for Windows\"-\npakken eller solgt seperat. Hver modtager puttes ind i en USB port\nog tillader dig at forbinde op til 4 trådløse controllers. ",
"ouyaInstructionsTextScale": 0.8,
"titleText": "Hvordan man bruger Xbox 360-controllere med BombSquad:"
},

View file

@ -23,6 +23,7 @@
"setAccountNameDesc": "Select the name to display for your account.\nYou can use the name from one of your linked\naccounts or create a unique custom name.",
"signInInfoText": "Sign in to collect tickets, compete online,\nand share progress across devices.",
"signInText": "Sign In",
"signInWithAnEmailAddressText": "Sign in with an email address",
"signInWithDeviceInfoText": "(an automatic account only available from this device)",
"signInWithDeviceText": "Sign in with device account",
"signInWithText": "Sign in with ${SERVICE}",
@ -550,6 +551,7 @@
"demoText": "Demo",
"denyText": "Deny",
"deprecatedText": "Deprecated",
"descriptionText": "Description",
"desktopResText": "Desktop Res",
"deviceAccountUpgradeText": "Warning:\nYou are signed in with a device account (${NAME}).\nDevice accounts will be removed in a future update.\nUpgrade to a V2 Account if you want to keep your progress.",
"difficultyEasyText": "Easy",
@ -595,6 +597,7 @@
"localProfileText": "(local profile)",
"nameDescriptionText": "Player Name",
"nameText": "Name",
"profileAlreadyExistsText": "A profile with that name already exists.",
"randomText": "random",
"titleEditText": "Edit Profile",
"titleNewText": "New Profile",
@ -674,6 +677,8 @@
"duplicateText": "Duplicate\nPlaylist",
"editText": "Edit\nPlaylist",
"newText": "New\nPlaylist",
"pointsToWinText": "Points To Win",
"seriesLengthText": "Series Length",
"showTutorialText": "Show Tutorial",
"shuffleGameOrderText": "Shuffle Game Order",
"titleText": "Customize ${TYPE} Playlists"
@ -711,10 +716,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} tickets from ${NAME}",
"friendPromoCodeAwardText": "You will receive ${COUNT} tickets each time it is used.",
"friendPromoCodeExpireText": "The code will expire in ${EXPIRE_HOURS} hours and only works for new players.",
"friendPromoCodeInstructionsText": "To use it, open ${APP_NAME} and go to \"Settings->Advanced->Enter Code\".\nSee bombsquadgame.com for download links for all supported platforms.",
"friendPromoCodeInstructionsText": "To use it, open ${APP_NAME} and go to \"Settings->Advanced->Send Info\".\nSee bombsquadgame.com for download links for all supported platforms.",
"friendPromoCodeRedeemLongText": "It can be redeemed for ${COUNT} free tickets by up to ${MAX_USES} people.",
"friendPromoCodeRedeemShortText": "It can be redeemed for ${COUNT} tickets in the game.",
"friendPromoCodeWhereToEnterText": "(in \"Settings->Advanced->Enter Code\")",
"friendPromoCodeWhereToEnterText": "(in \"Settings->Advanced->Send Info\")",
"getFriendInviteCodeText": "Get Friend Invite Code",
"googlePlayDescriptionText": "Invite Google Play players to your party:",
"googlePlayInviteText": "Invite",
@ -1246,6 +1251,7 @@
},
"scoreWasText": "(was ${COUNT})",
"selectText": "Select",
"sendInfoDescriptionText": "Sends account and app state info to the developer.\nPlease include your name or reason for sending.",
"seriesWinLine1PlayerText": "WINS THE",
"seriesWinLine1TeamText": "WINS THE",
"seriesWinLine1Text": "WINS THE",
@ -1261,25 +1267,29 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(a simple, controller-friendly on-screen keyboard for text editing)",
"alwaysUseInternalKeyboardText": "Always Use Internal Keyboard",
"alwaysUseInternalKeyboardText": "Always use internal keyboard",
"benchmarksText": "Benchmarks & Stress-Tests",
"disableCameraGyroscopeMotionText": "Disable Camera Gyroscope Motion",
"disableCameraShakeText": "Disable Camera Shake",
"devToolsText": "Dev Tools",
"disableCameraGyroscopeMotionText": "Disable camera gyroscope motion",
"disableCameraShakeText": "Disable camera shake",
"disableThisNotice": "(you can disable this notice in advanced settings)",
"enterPromoCodeText": "Enter Code",
"forTestingText": "Note: these values are only for testing and will be lost when the app exits.",
"helpTranslateText": "${APP_NAME}'s non-English translations are a community\nsupported effort. If you'd like to contribute or correct\na translation, follow the link below. Thanks in advance!",
"kickIdlePlayersText": "Kick Idle Players",
"kickIdlePlayersText": "Kick idle players",
"kidFriendlyModeText": "Kid-Friendly Mode (reduced violence, etc)",
"languageText": "Language",
"moddingGuideText": "Modding Guide",
"moddingToolsText": "Modding Tools",
"mustRestartText": "You must restart the game for this to take effect.",
"netTestingText": "Network Testing",
"resetText": "Reset",
"sendInfoText": "Send Info",
"showBombTrajectoriesText": "Show Bomb Trajectories",
"showDemosWhenIdleText": "Show Demos When Idle",
"showDevConsoleButtonText": "Show Dev Console Button",
"showInGamePingText": "Show In-Game Ping",
"showDemosWhenIdleText": "Show demos when idle",
"showDeprecatedLoginTypesText": "Show deprecated login types",
"showDevConsoleButtonText": "Show dev console button",
"showInGamePingText": "Show in-game ping",
"showPlayerNamesText": "Show Player Names",
"showUserModsText": "Show Mods Folder",
"titleText": "Advanced",
@ -1287,8 +1297,8 @@
"translationFetchErrorText": "translation status unavailable",
"translationFetchingStatusText": "checking translation status...",
"translationInformMe": "Inform me when my language needs updates",
"translationNoUpdateNeededText": "the current language is up to date; woohoo!",
"translationUpdateNeededText": "** the current language needs updates!! **",
"translationNoUpdateNeededText": "The current language is up to date; woohoo!",
"translationUpdateNeededText": "** The current language needs updates!! **",
"vrTestingText": "VR Testing"
},
"shareText": "Share",
@ -1297,6 +1307,9 @@
"signInForPromoCodeText": "You must sign in to an account for codes to take effect.",
"singleGamePlaylistNameText": "Just ${GAME}",
"singlePlayerCountText": "1 player",
"sizeLargeText": "Large",
"sizeMediumText": "Medium",
"sizeSmallText": "Small",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Character Selection",
@ -1819,6 +1832,7 @@
"toSkipPressAnythingText": "(tap or press anything to skip tutorial)"
},
"twoKillText": "DOUBLE KILL!",
"uiScaleText": "UI Scale",
"unavailableText": "unavailable",
"unconfiguredControllerDetectedText": "Unconfigured controller detected:",
"unlockThisInTheStoreText": "This must be unlocked in the store.",
@ -1832,6 +1846,8 @@
"upgradeText": "Upgrade",
"upgradeToPlayText": "Unlock \"${PRO}\" in the in-game store to play this.",
"useDefaultText": "Use Default",
"userSystemScriptsCreateText": "Create User System Scripts",
"userSystemScriptsDeleteText": "Delete User System Scripts",
"usesExternalControllerText": "This game uses an external controller for input.",
"usingItunesText": "Using Music App for soundtrack...",
"v2AccountLinkingInfoText": "To link V2 accounts, use the 'Manage Account' button.",
@ -1892,14 +1908,6 @@
"worldScoresUnavailableText": "World scores unavailable.",
"worldsBestScoresText": "World's Best Scores",
"worldsBestTimesText": "World's Best Times",
"xbox360ControllersWindow": {
"getDriverText": "Get Driver",
"macInstructions2Text": "To use controllers wirelessly, you'll also need the receiver that\ncomes with the 'Xbox 360 Wireless Controller for Windows'.\nOne receiver allows you to connect up to 4 controllers.\n\nImportant: 3rd-party receivers will not work with this driver;\nmake sure your receiver says 'Microsoft' on it, not 'XBOX 360'.\nMicrosoft no longer sells these separately, so you'll need to get\nthe one bundled with the controller or else search ebay.\n\nIf you find this useful, please consider a donation to the\ndriver developer at his site.",
"macInstructionsText": "To use Xbox 360 controllers, you'll need to install\nthe Mac driver available at the link below.\nIt works with both wired and wireless controllers.",
"macInstructionsTextScale": 0.8,
"ouyaInstructionsText": "To use wired Xbox 360 controllers with BombSquad, simply\nplug them into your device's USB port. You can use a USB hub\nto connect multiple controllers.\n\nTo use wireless controllers you'll need a wireless receiver,\navailable as part of the \"Xbox 360 wireless Controller for Windows\"\npackage or sold separately. Each receiver plugs into a USB port and\nallows you to connect up to 4 wireless controllers.",
"titleText": "Using Xbox 360 Controllers with ${APP_NAME}:"
},
"yesAllowText": "Yes, Allow!",
"yourBestScoresText": "Your Best Scores",
"yourBestTimesText": "Your Best Times"

File diff suppressed because it is too large Load diff

View file

@ -621,6 +621,7 @@
"localProfileText": "(profil local)",
"nameDescriptionText": "Nom du Joueur",
"nameText": "Nom",
"profileAlreadyExistsText": "Un profile avec ce nom existe deja",
"randomText": "aléatoire",
"titleEditText": "Éditer ce Profil",
"titleNewText": "Nouveau Profil",
@ -708,6 +709,8 @@
"editText": "Modifier\nLa Playlist",
"gameListText": "Liste de jeu",
"newText": "Nouvelle\nPlaylist",
"pointsToWinText": "Point pour gagner",
"seriesLengthText": "Longueur de la série",
"showTutorialText": "Voir le Tutoriel",
"shuffleGameOrderText": "Mélanger l'ordre des jeux",
"titleText": "Personnaliser les Playlists ${TYPE}"
@ -1346,8 +1349,9 @@
"helpTranslateText": "Les traductions de ${APP_NAME} proviennent des efforts de \nla communauté. Si vous voulez contribuer ou corriger une \ntraduction, suivez le lien ci-dessous. Merci d'avance!",
"kickIdlePlayersText": "Déconnecter les joueurs inactifs",
"kidFriendlyModeText": "Mode Enfant-Gentil (moins de violence, etc)",
"languageText": "Langage",
"languageText": "Langue",
"moddingGuideText": "Guide pour Modder",
"moddingToolsText": "Outils de mod",
"mustRestartText": "Vous devez redémarrer le jeu pour que les changements prennent effet.",
"netTestingText": "Tester Votre Réseau",
"resetText": "Réinitialiser",
@ -1373,6 +1377,9 @@
"signInWithGameCenterText": "Pour l'utilisation d'un compte Game \nCenter, connectez-vous avec l'application Game Center.",
"singleGamePlaylistNameText": "Seulement ${GAME}",
"singlePlayerCountText": "1 joueur",
"sizeLargeText": "Large",
"sizeMediumText": "Moyen",
"sizeSmallText": "Petit",
"soloNameFilterText": "${NAME} Solo",
"soundtrackTypeNames": {
"CharSelect": "Sélection du Personnage",
@ -1927,6 +1934,7 @@
"toSkipPressAnythingText": "(appuyez n'importe où pour passer le tutoriel)"
},
"twoKillText": "DOUBLE MEURTRE!",
"uiScaleText": "Échelle UI",
"unavailableText": "indisponible",
"unconfiguredControllerDetectedText": "Contrôleur non-configuré détecté:",
"unlockThisInTheStoreText": "Cela doit être débloqué dans le magasin.",

View file

@ -1,6 +1,6 @@
{
"accountSettingsWindow": {
"accountNameRules": "Der Konto Name darf kein Emoji oder andere spezielle Buchstaben enthalten.",
"accountNameRules": "Der Konto Name darf kein Emoji oder andere spezielle Zeichen enthalten",
"accountProfileText": "Benutzerprofil",
"accountsText": "Konten",
"achievementProgressText": "Erfolge: ${COUNT} von ${TOTAL}",
@ -340,6 +340,8 @@
"titleText": "Spiel hinzufügen",
"titleTextScale": 1.0
},
"addToFavoritesText": "Zu Favoriten hinzufügen",
"addedToFavoritesText": "'${NAME}' zu Favoriten hinzugefügt.",
"allText": "Alle",
"allowText": "Erlauben",
"alreadySignedInText": "Dein Account wird schon von einem anderen Gerät verwendet;\nbitte wechsle den Account oder schließe das Spiel auf\ndeinem anderen Gerät und versuche es nochmal.",
@ -589,6 +591,7 @@
"disableXInputDescriptionText": "Erlaubt mehr als 4 Controller aber kann schlechter funktionieren.",
"disableXInputText": "XInput deaktivieren",
"disabledText": "Deaktiviert",
"discordFriendsText": "Suchst du neue Leute mit denen du spielen kannst? Trete unserem Discord bei und finde neue Freunde!",
"doneText": "Fertig",
"drawText": "Unentschieden",
"duplicateText": "dublizieren",
@ -623,6 +626,7 @@
"localProfileText": "Lokales Profil",
"nameDescriptionText": "Spielername",
"nameText": "Name",
"profileAlreadyExistsText": "Ein Profil mit diesem Namen existiert schon.",
"randomText": "zufällig",
"titleEditText": "Profil bearbeiten",
"titleNewText": "Neues Profil",
@ -710,6 +714,7 @@
"editText": "Playlist\nbearbeiten",
"gameListText": "Spieleliste",
"newText": "Neue\nPlaylist",
"pointsToWinText": "Punkte um zu Gewinnen",
"showTutorialText": "Tutorial anzeigen",
"shuffleGameOrderText": "Zufällige Spielreihenfolge",
"titleText": "${TYPE}-Playlists bearbeiten"
@ -867,6 +872,7 @@
"autoText": "Automatisch",
"fullScreenCmdText": "Vollbildmodus (Cmd-F)",
"fullScreenCtrlText": "Vollbildmodus (Strg-F)",
"fullScreenText": "Vollbild",
"gammaText": "Gamma",
"highText": "Hoch",
"higherText": "Höher",
@ -1138,6 +1144,7 @@
"noJoinCoopMidwayText": "Koop-Spiele können nicht während des Spiels betreten werden.",
"noProfilesErrorText": "Du hast kein Spielerprofil, deshalb ist dein Name \"${NAME}\".\nGehe zu Einstellungen->Spielerprofile um ein Profil anzulegen.",
"noScoresYetText": "Noch kein Punktestand.",
"noServersFoundText": "Keine Server gefunden.",
"noThanksText": "Nein Danke",
"noTournamentsInTestBuildText": "WARNUNG: Turnierpunkte von dieser Testversion werden ignoriert.",
"noValidMapsErrorText": "Keine gültigen Karten für diesen Spieltyp gefunden.",
@ -1383,6 +1390,9 @@
"signInWithGameCenterText": "Nutze die Game Center app,\num dich anzumelden.",
"singleGamePlaylistNameText": "Nur ${GAME}",
"singlePlayerCountText": "1 Spieler",
"sizeLargeText": "Groß",
"sizeMediumText": "Mittel",
"sizeSmallText": "Klein",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Charakterauswahl",

View file

@ -1,7 +1,7 @@
{
"accountRejectedText": "You ac woefije obj acwoew. Aj cowier wore cs?",
"accountSettingsWindow": {
"accountNameRules": "Acoief coej. \n woejf. cwoef ocoweofwjfj c wjefowfowef wocjowefffz",
"accountNameRules": "Acoief coej. woejf. cwoef ocoweofwjfj c wjefowfowef wocjoweffz",
"accountProfileText": "(acczntl prfflzlf)",
"accountsText": "Acctntzz",
"achievementProgressText": "Achilfjasdflz: ${COUNT} ouzt of ${TOTAL}",
@ -28,6 +28,7 @@
"setAccountNameDesc": "Selcow f cjwo ot afoa fw jcpaoewj fwocowefj.\nYou wolf wc. weowyc oawe awoefm mcapowefi \ncoat aocjweo towirowmcowiefownr.",
"signInInfoText": "Sgn inz tz strz yr prograrzz inz\nthz cld, rnzr tckrz, rnz",
"signInText": "Sggnz Inz",
"signInWithAnEmailAddressText": "Sif c woe w oo wefwioje ofiewj dfjdf",
"signInWithDeviceInfoText": "(an coiwjfow fcoa cowj efj woj cowij eofjwoj foijs aofij )",
"signInWithDeviceText": "Sngi foicj oj de voa cwoiejfw",
"signInWithGameCircleText": "Sgn in gh Gm Cirflc",
@ -585,6 +586,7 @@
"demoText": "Dmfwef",
"denyText": "Dénziy",
"deprecatedText": "Dowefowicjwer",
"descriptionText": "Djcowiejfwdf",
"desktopResText": "Dzlflfjz Rzflz",
"deviceAccountUpgradeText": "Wowierj:\nWofiwj c weojfw duo wdjfo weir are(${NAME}).\nDowjc weowje r ofjowei fjwoeodjfowdofijwodfjf.\nUpeworwe coweoijwV2 ocwoe roweijroidjjfj owejowejd.",
"difficultyEasyText": "Ezrz",
@ -610,8 +612,10 @@
"gameListText": "Gámé Lzúst",
"listNameText": "Plzljlfz Nmflf",
"nameText": "Néáme",
"pointsToWinText": "JWP er OWejrd",
"removeGameText": "Rzmóve\nGzmze",
"saveText": "Sézve Lzést",
"seriesLengthText": "S oere cowejrd",
"titleText": "Plzltls Edirtzlr"
},
"editProfileWindow": {
@ -632,6 +636,7 @@
"localProfileText": "(lcllf proriocf)",
"nameDescriptionText": "Pléyzr Náme",
"nameText": "Núme",
"profileAlreadyExistsText": "We c weir wet fj c where jggafjw fweworer jdfdf.",
"randomText": "rándzm",
"titleEditText": "Edít Prófílze",
"titleNewText": "Néw Prófílze",
@ -719,6 +724,8 @@
"editText": "Ezltjf\nPlaflfzlz",
"gameListText": "Gzéme Lízt",
"newText": "Núw\nPlzlrlrzl",
"pointsToWinText": "Peer c word fdjfw",
"seriesLengthText": "Soft cwojerr",
"showTutorialText": "Shzwlf Trltlrjlzjf",
"shuffleGameOrderText": "Shúfflze Gáme Oéder",
"titleText": "Cmtlajrz ${TYPE} Plzlsfwz"
@ -764,7 +771,7 @@
"friendPromoCodeInstructionsText": "To Us ocj , ofijwe ${APP_NAME} oafn aco\"segoingaf- aocij weoifjwoe fowiejoijcowijcoiwjef.\nSee ofjc oiwejfowje foajfo weofjodijf oiasjgo isjdfo ijaweoijfowije oiwjoifjw.",
"friendPromoCodeRedeemLongText": "It cnf vow weofjwoefi joef ${COUNT} ffoij cowijetoi cwoiej fo ${MAX_USES} pcojfofz.",
"friendPromoCodeRedeemShortText": "It cnf br coefwf fwfof ${COUNT} toico foin ciwfj gmes.",
"friendPromoCodeWhereToEnterText": "(inz \"Settdfings->Adwefwced->Eftcer Codze\")",
"friendPromoCodeWhereToEnterText": "(inz \"Settdfings->Adwefwced->Eftcder Codze\")",
"getFriendInviteCodeText": "Gz Frjor Infivo Cdz",
"googlePlayDescriptionText": "Invlt Gglglz Plzlz plzlfer tz yzr prtaryz:",
"googlePlayInviteText": "Invtlzz",
@ -1345,6 +1352,7 @@
},
"scoreWasText": "(wús ${COUNT})",
"selectText": "Slézcz",
"sendInfoDescriptionText": "Snff ac c woof wc owei. jf;woef; a gwoiefj.\ncc c woe cw Rowe orijwg gwpofij wpeoifjwefd.",
"seriesWinLine1PlayerText": "WZNNPLL THZ",
"seriesWinLine1Scale": 0.65,
"seriesWinLine1TeamText": "WNZTTTM THZ",
@ -1368,6 +1376,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(a smpd a, condofia efjwefoajewofoiaj;s a sodifj a;osdfjoitest f)",
"alwaysUseInternalKeyboardText": "Alzlt usl Intenralf kyBerz",
"benchmarksText": "Bnchmkwr & Staf-Tsfsfz",
"devToolsText": "Dow Aocjwe",
"disableCameraGyroscopeMotion": "Disa fe come won aweGowyeo CMosndf",
"disableCameraGyroscopeMotionText": "Dislike og wefo cwei oweiaMowerdns",
"disableCameraShakeText": "SDi Cmanan Blobofs",
@ -1381,11 +1390,14 @@
"kidFriendlyModeText": "Krz-Frjijglfz-Mzdz (rdfjifz voioifjf, fz)",
"languageText": "Lnglfjslfd",
"moddingGuideText": "Mddzng Gdufnzsd",
"moddingToolsText": "Meowed eFwefwf",
"mustRestartText": "Yz msg restar thz gmm fof this tk ttk effectsz.",
"netTestingText": "Ntwkrz Tsstcg",
"resetText": "Rsttz",
"sendInfoText": "Show cowdf",
"showBombTrajectoriesText": "Shzlz Bomf Tfwoejcwoefz",
"showDemosWhenIdleText": "Sho cwoefj c wdofdfjdfwf",
"showDeprecatedLoginTypesText": "Show woe fjwoc woejoweo fwef",
"showDevConsoleButtonText": "Sho c weroiw c wo cwoije fwois",
"showInGamePingText": "Shoe o co fowl Png",
"showPlayerNamesText": "SHzlfjl Plzlrr Nmzlzlls",
@ -1406,6 +1418,9 @@
"signInWithGameCenterText": "To loci wo gamg wofiw efoiwjef.\ncoaej goajb oaj Game foc etapp.",
"singleGamePlaylistNameText": "Jzff ${GAME}",
"singlePlayerCountText": "1 pláyzr",
"sizeLargeText": "Lwfefwdf",
"sizeMediumText": "MFwefwf",
"sizeSmallText": "WSDfjwf",
"soloNameFilterText": "${NAME} Sólzo",
"soundtrackTypeNames": {
"CharSelect": "Czárazter Sélection",
@ -1961,6 +1976,7 @@
"toSkipPressAnythingText": "(tpz rz pzrzl anthfljzf tz skpfz tuzfjrlrrz)"
},
"twoKillText": "DÓÚBLZ KÍLL!",
"uiScaleText": "SUFwfef",
"unavailableText": "unavlfldsfjlbz",
"unconfiguredControllerDetectedText": "Uncónfzgúred cúntrzllír dítzctíd:",
"unlockThisInTheStoreText": "Thz mf voi eunlcoef owef joiefsfrwe.",
@ -1974,6 +1990,8 @@
"upgradeText": "Upgrorz",
"upgradeToPlayText": "Upgglf tz \"${PRO}\" iz j wojcwoef paljf zs.",
"useDefaultText": "Uzl Dflfjtzlz",
"userSystemScriptsCreateText": "Cwjof come rw dfoodwijfdf",
"userSystemScriptsDeleteText": "Down wc old. owiejf odfdf",
"usesExternalControllerText": "Thz gjf coiwjef oif owicoiwefj owejf owejoojof",
"usingItunesText": "Ufwefw Mfwoef co ef srnweoicjowe...",
"usingItunesTurnRepeatAndShuffleOnText": "Plzelz mkdk srzlc shfflds isON anz andpreld is ALZ unz iTunes",

View file

@ -30,6 +30,7 @@
"signInWithGooglePlayText": "Σύνδεση με Google Play",
"signInWithTestAccountInfoText": "(προσωρινός λογαριασμός. Δημιουργήστε λογαριασμό συσκευής για συνέχιση προόδου)",
"signInWithTestAccountText": "Σύνδεση με δοκιμαστικό λογαριασμό",
"signInWithText": "Σύνδεση μέσω ${SERVICE}",
"signInWithV2InfoText": "ένας λογαριασμός που λειτουργεί σε όλες τις πλατφορμες",
"signInWithV2Text": "Συνδεθείτε με ένα λογαριασμό BombSquad",
"signOutText": "Αποσύνδεση",
@ -333,6 +334,9 @@
"getMoreGamesText": "Περισσότερα Παιχνίδια...",
"titleText": "Προσθήκη Παιχνιδιού"
},
"addToFavoritesText": "Προσθήκη στα αγαπημένα",
"addedToFavoritesText": "Προστέθηκε το '${NAME}' στα αγαπημένα.",
"allText": "Όλα",
"allowText": "Να Επιτρέπεται",
"alreadySignedInText": "Ο λογαριασμός σας είναι συνδεδεμένος από άλλη συσκευή.\nΠαρακαλώ, άλλαξε το λογαριασμό σας ή απενεργοποίησε \nτο παιχνίδι από τις άλλες συσκευες σας και ξαναπροσπάθηστε.",
"apiVersionErrorText": "Can't load module ${NAME}; it targets api-version ${VERSION_USED}; we require ${VERSION_REQUIRED}.",
@ -365,6 +369,7 @@
"chatMutedText": "Συζήτηση σε Σίγαση",
"chatUnMuteText": "Απενεργοποίηση Σίγασης",
"choosingPlayerText": "<επιλογή παίκτη>",
"codesExplainText": "Οι κωδικοί παρέχονται από τον δημιουργό για τη\nδιάγνωση και την επιδιόρθωση προβλημάτων λογαριασμού.",
"completeThisLevelToProceedText": "Πρέπει να ολοκληρώσετε αυτό\nτο επίπεδο για να προχωρήσετε!",
"completionBonusText": "Μπόνους Ολοκλήρωσης",
"configControllersWindow": {
@ -445,6 +450,7 @@
"swipeText": "swipe",
"titleText": "Οριστικοποίηση Οθόνης Αφής"
},
"configureDeviceInSystemSettingsText": "Η συσκευή ${DEVICE} μπορεί να προσαρμοστεί απο τις ρυθμίσεις της συσκευής σας.",
"configureItNowText": "Οριστικοποίηση τώρα;",
"configureText": "Οριστικοποίηση",
"connectMobileDevicesWindow": {
@ -558,6 +564,9 @@
"disableRemoteAppConnectionsText": "Απενεργοποίηση Συνδέσεων Ασύρματης Εφαρμογής",
"disableXInputDescriptionText": "Επιτρέπει περισσότερα από 4 χειριστήρια αλλά μπορεί να μη λειτουργήσει.",
"disableXInputText": "Απενεργοποίηση XIinput",
"disabledText": "Απενεργοποιημένο",
"discordFriendsText": "Θέλετε να βρείτε νέους φίλους για να παίξετε;\nΜπείτε στο Discord μας και βρείτε νέους φίλους!",
"discordJoinText": "Μπείτε στο Discord",
"doneText": "Έγινε",
"drawText": "Ισοπαλία",
"duplicateText": "Διπλοτυπία",
@ -590,6 +599,7 @@
"localProfileText": "(τοπικό προφίλ)",
"nameDescriptionText": "Όνομα Παίκτη",
"nameText": "Όνομα",
"profileAlreadyExistsText": "Υπάρχει ήδη προφίλ με αυτό το όνομα.",
"randomText": "τυχαίο",
"titleEditText": "Επεξεργασία Προφίλ",
"titleNewText": "Νέο Προφίλ",
@ -625,6 +635,7 @@
"useMusicFolderText": "Φάκελος Αρχείων Μουσικής"
},
"editText": "Επεξεργασία",
"enabledText": "Ενεργοποιημένο",
"endText": "Τέλος",
"enjoyText": "Απολαύστε!",
"epicDescriptionFilterText": "${DESCRIPTION} Σε επικά αργή κίνηση.",
@ -670,6 +681,8 @@
"duplicateText": "Διπλοτυπία\nΛίστας",
"editText": "Επεξεργασία\nΛίστας",
"newText": "Νέα\nΛίστα",
"pointsToWinText": "Πόντοι Έως Νίκη",
"seriesLengthText": "Μήκος Σειράς",
"showTutorialText": "Προβολή Εκπαιδευτικού Βίντεο",
"shuffleGameOrderText": "Ανακάτεμα Ουράς Παιχνιδιών",
"titleText": "Προσαρμογή Λίστων Παιχνιδιών ${TYPE}"
@ -742,6 +755,7 @@
"manualYourLocalAddressText": "Η τοπική σας διεύθυνση:",
"nearbyText": "Κοντινά",
"noConnectionText": "<εκτός σύνδεσης>",
"noPartiesAddedText": "Δεν Προστέθηκαν Πάρτι",
"otherVersionsText": "(άλλες εκδόσεις)",
"partyCodeText": "Κωδικός Party",
"partyInviteAcceptText": "Αποδοχή",
@ -813,6 +827,7 @@
"alwaysText": "Πάντα",
"fullScreenCmdText": "Πλήρης Οθόνη (Cmd-F)",
"fullScreenCtrlText": "Πλήρης Οθόνη (Ctrl-F)",
"fullScreenText": "Πλήρης Οθόνη",
"gammaText": "Gamma",
"highText": "Υψηλό",
"higherText": "Υψηλότερο",
@ -1059,7 +1074,9 @@
"noContinuesText": "(χωρίς \"Συνέχιση\")",
"noExternalStorageErrorText": "Δεν βρέθηκε εξωτερικός αποθηκευτικός χώρος σε αυτή τη συσκευή",
"noGameCircleText": "Σφάλμα: δεν έχετε συνδεθεί στο GameCircle",
"noPluginsInstalledText": "Καθόλου Πρόσθετα Εγκατεστημένα",
"noScoresYetText": "Δεν υπάρχουν βαθμολογίες ακόμη.",
"noServersFoundText": "Δεν βρέθηκαν διακομηστές.",
"noThanksText": "Όχι Ευχαριστώ",
"noTournamentsInTestBuildText": "ΠΡΟΣΟΧΗ: Τα σκορ του τουρνουά από αυτή τη δοκιμαστική έκδοση θα αγνοηθούν.",
"noValidMapsErrorText": "Δεν βρέθηκαν έγκυροι χάρτες γι' αυτόν τον τύπο παιχνιδιού.",
@ -1226,6 +1243,7 @@
"runText": "Τρέξιμο",
"saveText": "Αποθήκευση",
"scanScriptsErrorText": "Σφάλμα(α) κατά τη σάρωση σεναρίων. Δείτε το αρχείο καταγραφής για λεπτομέρειες.",
"scanScriptsMultipleModulesNeedUpdatesText": "${PATH} και ${NUM} άλλη(ες) λειτουργείες χρειάζεται(ονται) για το api ${API}.",
"scanScriptsSingleModuleNeedsUpdatesText": "Το ${PATH} χρειάζεται να αναβαθμιστεί για το api ${API}",
"scoreChallengesText": "Προκλήσεις Βαθμολογίας",
"scoreListUnavailableText": "Λίστα βαθμολογίας μη διαθέσιμη.",
@ -1266,10 +1284,12 @@
"kidFriendlyModeText": "Λειτουργία για Παιδιά (μειωμένη βία, κτλ)",
"languageText": "Γλώσσα",
"moddingGuideText": "Οδηγός Τροποποίησης",
"moddingToolsText": "Εργαλεία Τροποποίησης",
"mustRestartText": "Για να λειτουργήσει, πρέπει να επανεκκινήσετε το παιχνίδι.",
"netTestingText": "Έλεγχος Δικτύου",
"resetText": "Επαναφορά",
"showBombTrajectoriesText": "Εμφάνιση Πορείας Βόμβας",
"showDemosWhenIdleText": "Προβολή Ντέμο Σε Αδράνεια",
"showDevConsoleButtonText": "Εμφάνιση κονσόλας προγραμματιστών",
"showInGamePingText": "Εμφάνιση Καθυστέρησης Εντός-Παιχνιδιού",
"showPlayerNamesText": "Προβολή Ονομάτων Παικτών",
@ -1290,6 +1310,9 @@
"signInWithGameCenterText": "Για να χρησιμοποιήσετε έναν λογαριασμό Game Center,\nσυνδεθείτε σε αυτόν με την εφαρμογή Game Center.",
"singleGamePlaylistNameText": "Μόνο ${GAME}",
"singlePlayerCountText": "1 παίκτης",
"sizeLargeText": "Μεγάλο",
"sizeMediumText": "Μέτριο",
"sizeSmallText": "Μικρό",
"soloNameFilterText": "Σόλο ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Επιλογή Χαρακτήρα",
@ -1362,6 +1385,8 @@
"storeText": "Κατάστημα",
"submitText": "Υποβολή",
"submittingPromoCodeText": "Υποβολή Κωδικού...",
"successText": "Επιτυχία!",
"supportEmailText": "Εάν αντιμετωπίζετε προβλήματα με την εφαρμογή, παρακαλώ να στείλετε e-mail \nστο ${EMAIL}",
"teamNamesColorText": "Ονόματα/Χρώμματα Ομάδων...",
"telnetAccessGrantedText": "Πρόσβαση telnet ενεργοποιημένη.",
"telnetAccessText": "Πρόσβαση telnet εντοπίστηκε. Να επιτρέπεται;",
@ -1810,11 +1835,13 @@
"toSkipPressAnythingText": "(πατήστε ή πιέστε οτιδήποτε για να παραλείψετε το εκπαιδευτικό βίντεο)"
},
"twoKillText": "ΔΙΠΛΟΣ ΦΟΝΟΣ!",
"uiScaleText": "Κλίμακα UI",
"unavailableText": "μη διαθέσιμο",
"unconfiguredControllerDetectedText": "Εντοπίστηκε μη διαμορφωμένο χειριστήριο:",
"unlockThisInTheStoreText": "Αυτό πρέπει να ξεκλειδωθεί στο κατάστημα.",
"unlockThisProfilesText": "Για να δημιουργήσετε περισσότερα από ${NUM} προφίλ, χρειάζεστε:",
"unlockThisText": "Για να το ξεκλειδώσετε, χρειάζεστε:",
"unsupportedControllerText": "Συγνώμη, το χειρηστήριο \"${NAME}\" δεν υποστηρίζεται.",
"unsupportedHardwareText": "Συγνώμη, αυτό το υλισμικό δεν υποστηρίζεται από αυτή την έκδοση του παιχνιδιού.",
"upFirstText": "Για αρχή:",
"upNextText": "Στη συνέχεια, παιχνίδι ${COUNT}:",
@ -1822,10 +1849,13 @@
"upgradeText": "Αναβάθμιση",
"upgradeToPlayText": "Ξεκλειδώστε το \"${PRO}\" στο κατάστημα του παιχνιδιού για να μπορείτε να το παίξετε.",
"useDefaultText": "Χρήση Προκαθορισμένων",
"userSystemScriptsCreateText": "Δημιουργία Κωδικών Συστήματος Χρήστη",
"userSystemScriptsDeleteText": "Διαγραφή Κωδικών Συστήματος Χρήστη",
"usesExternalControllerText": "Αυτό το παιχνίδι χρησιμοποιεί ένα εξωτερικό χειριστήριο για είσοδο.",
"usingItunesText": "Χρήση εφαρμογής μουσικής για ηχητική υπόκρουση...",
"v2AccountLinkingInfoText": "Για να δεσμεύσετε λογαριασμούς V2, χρησιμοιποιήστε το κουμπί 'Διαχείριση Λογαριασμού'.",
"validatingTestBuildText": "Επικύρωση Δοκιμαστικής Έκδοσης...",
"viaText": "μέσω",
"victoryText": "Νίκη!",
"voteDelayText": "Δεν μπορείτε να ξαναξεκινήσετε ψηφοφορία για ${NUMBER} δευτ.",
"voteInProgressText": "Μια ψηφοφορία βρίσκεται ήδη σε εξέλιξη.",

View file

@ -31,7 +31,7 @@
"signInWithGooglePlayText": "गूगल प्ले से साईन ईन करे",
"signInWithTestAccountInfoText": "(पुराना खाते का प्ररूप; आगे के लिए यंत्र खाते का प्रयोग करें)",
"signInWithTestAccountText": "परीक्षण के खाते से साइन इन करें",
"signInWithText": "${service} के साथ साइन इन करें",
"signInWithText": "${SERVICE} से साइन इन करे।",
"signInWithV2InfoText": "(एक खाता जो सभी प्लेटफार्मों पर काम करता है)",
"signInWithV2Text": "BombSquad खाते से साइन इन करें",
"signOutText": "साइन आउट",
@ -47,7 +47,7 @@
"unlinkLegacyV1AccountsText": "लैगेसी (V1) खाते को एनलिंक करे",
"v2LinkInstructionsText": "खाता बनाने या साइन इन करने के लिए इस लिंक का उपयोग करें।",
"viaAccount": "(खाता ${NAME} के माध्यम से)",
"youAreSignedInAsText": "आप इस खाते से साइनड इन हो: "
"youAreSignedInAsText": "आप इस खाते से साइनड इन हो:"
},
"achievementChallengesText": "उपलब्धि की चुनौतियां",
"achievementText": "उपलब्धि",
@ -338,8 +338,8 @@
"getMoreGamesText": "और गेम्स कि जानकारी पायें",
"titleText": "गेम जोड़ें"
},
"addToFavoritesText": "पसंदीदा में जोड़े",
"addedToFavoritesText": "\"${NAME}\"को पसंदीदा में जोड़ा गया।",
"addToFavoritesText": "पसंदीदा में जोड़े",
"addedToFavoritesText": "'${NAME}' को पसंदीदा में जोड़ा गया हैं।",
"allText": "सभी",
"allowText": "अनुमति दें",
"alreadySignedInText": "आपका खाता किसी अन्य डिवाइस से साइन किया गया है; \nकृपया खातों को स्विच करें या अपने गेम को अन्य डिवाइस \nपर बंद करें और फिर से प्रयास करें",
@ -373,7 +373,7 @@
"chatMutedText": "बातचीत मौन हो गई है",
"chatUnMuteText": "बातचीत दोबारा शुरू करें",
"choosingPlayerText": "<खिलाड़ी चुना जा रहा है>",
"codesExplainText": "डेवलपर द्वारा कोड प्रदान किए जाते हैं\nखाता समस्याओं का निदान और सुधार करें।",
"codesExplainText": "खाता समस्याओं के निदान और सुधार के लिए डेवलपर \nद्वारा कोड प्रदान किए जाते हैं ।",
"completeThisLevelToProceedText": "आपको यह पड़ाव पार करना पड़ेगा आगे बढ़ने के लिए !",
"completionBonusText": "पूर्णता पुरस्कार",
"configControllersWindow": {
@ -454,7 +454,7 @@
"swipeText": "स्वाइप",
"titleText": "टच स्क्रीन को कॉन्फ़िगर करें"
},
"configureDeviceInSystemSettingsText": "${DEVICE}को सिस्टम सेटिंग्स ऐप में कॉन्फ़िगर किया जा सकता है।",
"configureDeviceInSystemSettingsText": "${DEVICE} को सिस्टम सेटिंग्स एप में कंफीगर कर सकते हैं।",
"configureItNowText": "अभी कॉन्फ़िगर करें ?",
"configureText": "कॉन्फ़िगर",
"connectMobileDevicesWindow": {
@ -466,7 +466,7 @@
"forIOSText": "आई-ओ-एस के लिए:",
"getItForText": "${REMOTE_APP_NAME} पायें आई-ओ-एस के लिए एप्पल एप्लीकेशन भंडार से \nव एंड्राइड के लिए गूगल प्ले भंडार या अमेज़न एप्लीकेशन भंडार से |",
"googlePlayText": "गूगल प्ले स्टोर",
"titleText": "मोबाइल यंत्र का नियंत्रक के रूप में प्रयोग करते हुए: "
"titleText": "मोबाइल यंत्र का नियंत्रक के रूप में प्रयोग करते हुए:"
},
"continuePurchaseText": "${PRICE} के खर्चे पर जारी रखें ?",
"continueText": "जारी रखें",
@ -557,6 +557,7 @@
"demoText": "डेमो",
"denyText": "अस्वीकृत करें",
"deprecatedText": "पदावनत",
"descriptionText": "डीसकरिपषण",
"desktopResText": "डेस्कटॉप रेज़ोल्यूशन",
"deviceAccountUpgradeText": "चेतावनी:\n आप डिवाइस खाते (${NAME}) से साइन इन हैं।\n डिवाइस खातों को भविष्य के अपडेट में हटा दिया जाएगा।\n यदि आप अपनी प्रगति को बनाए रखना चाहते हैं तो V2 खाते में अपग्रेड करें।",
"difficultyEasyText": "आसन",
@ -568,8 +569,8 @@
"disableXInputDescriptionText": "4 नियंत्रकों से अधिक की अनुमति देता है लेकिन साथ ही साथ काम नहीं कर सकते",
"disableXInputText": "Xinput अक्षम करें",
"disabledText": "डिसेबल्ड",
"discordFriendsText": "क्या आप खेलने के लिए नए लोगों की तलाश करना चाहते हैं?\nहमारे डिस्कोर्ड में शामिल हों और नए दोस्त खोजें!",
"discordJoinText": "डिस्कोर्ड में शामिल हों",
"discordFriendsText": "क्या आप खेलने के लिए नए लोगों की तलाश करना चाहते हैं? \n हमारे डिस्कोर्ड में शामिल हों और नए दोस्त खोजें!",
"discordJoinText": "डिस्कोर्ड में शामिल हों",
"doneText": "हो गया",
"drawText": "बराबर",
"duplicateText": "प्रतिलिपि",
@ -603,6 +604,7 @@
"localProfileText": "(स्थानिक पार्श्वचित्र)",
"nameDescriptionText": "खिलाड़ी का नाम",
"nameText": "नाम",
"profileAlreadyExistsText": "खाता इस नाम से पहेले ही बन चूका है",
"randomText": "यादृच्छिक",
"titleEditText": "पार्श्वचित्र को संपादित करें",
"titleNewText": "नया पार्श्वचित्र बनायें",
@ -671,7 +673,7 @@
"fiveKillText": "पांच हत्या !!!",
"flawlessWaveText": "त्रुटिरहित लहर !",
"fourKillText": "चार हत्या !!!",
"friendScoresUnavailableText": "दोस्तों के अंक उनुप्लाब्ध हैं ",
"friendScoresUnavailableText": "दोस्तों के अंक उनुप्लाब्ध हैं",
"gameCenterText": "गेम-सेण्टर",
"gameCircleText": "गेम-सर्किल",
"gameLeadersText": "गेम ${COUNT} के सरदार",
@ -684,6 +686,7 @@
"duplicateText": "प्लेलिस्ट कि \nछवि बनायें",
"editText": "प्लेलिस्ट को \nसंपादित करें",
"newText": "नयी \nप्लेलिस्ट",
"pointsToWinText": "पौइनटस जीतने के लिए",
"showTutorialText": "ट्युटोरियल दिखाएँ",
"shuffleGameOrderText": "गेम के क्रमांक को मिलाएं",
"titleText": "${TYPE} प्लेलिस्ट को अपने हिसाब से बदलें"
@ -694,7 +697,7 @@
"gamesToText": "${WINCOUNT} जीते और ${LOSECOUNT} हारे",
"gatherWindow": {
"aboutDescriptionLocalMultiplayerExtraText": "ध्यान रखें: किसी भी यंत्र पे एक से ज्यादा खिलाड़ी हो सकते हैं \nअगर आपके पास पर्याप्त नियंत्रक हैं",
"aboutDescriptionText": "पार्टी इकट्ठा करने के लिए इन टैब्स का प्रयोग करें | \n\nपार्टी में आप गेम व \nप्रतियोगिता अपने दोस्तों के साथ \nअलग यंत्रो पे भी खेल सकते हैं | \n\nऊपरी-दायें हाथ कोने में उपस्थित ${PARTY} बटन का प्रयोग करके \nआप अपनी पार्टी से बात कर सकते हैं | (नियंत्रक पे ${BUTTON} दबाएँ मेनू में) ",
"aboutDescriptionText": "पार्टी इकट्ठा करने के लिए इन टैब्स का प्रयोग करें | \n\nपार्टी में आप गेम व \nप्रतियोगिता अपने दोस्तों के साथ \nअलग यंत्रो पे भी खेल सकते हैं | \n\nऊपरी-दायें हाथ कोने में उपस्थित ${PARTY} बटन का प्रयोग करके \nआप अपनी पार्टी से बात कर सकते हैं | (नियंत्रक पे ${BUTTON} दबाएँ मेनू में)",
"aboutText": "इसके बारे में",
"addressFetchErrorText": "<पता पाने में त्रुटी>",
"appInviteInfoText": "दोस्तों को बोम्ब-स्क्वाड खेलने के लिए आमंत्रित करें\nऔर आपको ${COUNT} टिकेट मुफ्त मिलेंगे | हर\nदोस्त के आपको ${YOU_COUNT} टिकेट मिलेंगे |",
@ -1075,7 +1078,7 @@
"noContinuesText": "(कोई जारी रखना नहीं)",
"noExternalStorageErrorText": "कोई बाहरी संचयन करने कि जगह नहीं मिली",
"noGameCircleText": "त्रुटी: गेम-सर्किल में लॉग-इन नहीं हैं |",
"noPluginsInstalledText": "कोई प्लगइन्स इंस्टॉल नहीं है",
"noPluginsInstalledText": "कोई प्लगइन इंस्टॉल नहीं है",
"noProfilesErrorText": "आपकी कोई खिलाड़ी पार्श्वचित्र नहीं है, इसलिए आप '${NAME}' नाम के साथ फंसे हैं |\nसेटिंग -> खिलाड़ी पार्श्वचित्र में जाके अपने लिए पार्श्वचित्र बनायें |",
"noScoresYetText": "अभी तक कोई स्कोर नहीं है |",
"noServersFoundText": "कोई सरवर्स नहीं मिलें।",
@ -1185,7 +1188,7 @@
"purchasingText": "खरीद रहे हैं...",
"quitGameText": "${APP_NAME} को बंद कर दें ?",
"quittingIn5SecondsText": "५ सेकंड में बंद कर रहे हैं...",
"randomPlayerNamesText": "किशोर, यश, ख्याति, शालिनी, आदित्य, उमेस, निश्चिंत, भाविक, रिशव, तुषार, राहुल, अमोल, मिशेल, प्रियंका, कल्याण, रियान, दिविज, हरी, आदर्श, कौस्तुभ, ज़ोया, सीनू, प्रतीक, ज़ारा, रुक्सार, शकील, पूजा, शबनम, शेरा, चेतन, समीर, टोनी, अजय, आकाश, पंकज, आरती, शबाना, मुमताज़, शुभम, शिवम्, लकेव, सचिन, दीपक, अक्षय, अर्जुन, किशन, राधा, विश्वनाथ, शालू, विमल, शिवा, पप्पू, नरेंद्र, आज़म, अनमोल, काजल, संध्या, दिनेश, प्रिंस, आनंद, अज़हर, पवन, अभिषेक, विवेक",
"randomPlayerNamesText": "किशोर, यश, ख्याति, शालिनी, आदित्य, उमेस, निश्चिंत, भाविक, रिशव, तुषार, राहुल, अमोल, मिशेल, प्रियंका, कल्याण, रियान, दिविज, हरी, आदर्श, कौस्तुभ, ज़ोया, सीनू, प्रतीक, ज़ारा, रुक्सार, शकील, पूजा, शबनम, शेरा, चेतन, समीर, टोनी, अजय, आकाश, पंकज, आरती, शबाना, मुमताज़, शुभम, शिवम्, लकेव, सचिन, दीपक, अक्षय, अर्जुन, किशन, राधा, विश्वनाथ, शालू, विमल, शिवा, पप्पू, नरेंद्र, आज़म, अनमोल, काजल, संध्या, दिनेश, प्रिंस, आनंद, अज़हर, पवन, अभिषेक, विवेक, बेवन",
"randomText": "अनियमित",
"rankText": "पद",
"ratingText": "मूल्यांकन",
@ -1256,6 +1259,7 @@
},
"scoreWasText": "(${COUNT} था)",
"selectText": "चुनें",
"sendInfoDescriptionText": "अकाउंट और एप हालत की इनफो डेवलापर को बेजती है\nबेजने के अपना नाम और कारण बताईए",
"seriesWinLine1PlayerText": "विजयी",
"seriesWinLine1TeamText": "विजयी",
"seriesWinLine1Text": "विजयी",
@ -1285,9 +1289,11 @@
"kidFriendlyModeText": "बच्चों के अनुकूल करें (कम हिंसा, आदि)",
"languageText": "भाषा",
"moddingGuideText": "परिवर्तन करने कि गाइड",
"moddingToolsText": "मोडी़ग टूलस",
"mustRestartText": "इसके लागू होने के लिए आपको गेम को पुनः शुरू करना पड़ेगा |",
"netTestingText": "नेटवर्क पर परीक्षण",
"resetText": "रीसेट",
"sendInfoText": "खबर बेजिए",
"showBombTrajectoriesText": "बोम्ब का पथ दिखाएँ",
"showDemosWhenIdleText": "निष्क्रिय होने पर डेमो दिखाएं",
"showDevConsoleButtonText": "डेव कंसोल बटन दिखाएँ",
@ -1310,6 +1316,9 @@
"signInWithGameCenterText": "गेम केंद्र खाते का उपयोग करने के लिए, \nगेम सेंटर एप के साथ साइन इन करें।",
"singleGamePlaylistNameText": "केवल ${GAME}",
"singlePlayerCountText": "1 खिलाड़ी",
"sizeLargeText": "बडा",
"sizeMediumText": "बराबर",
"sizeSmallText": "चोटा",
"soloNameFilterText": "अकेले ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "कैरेक्टर का चयन",
@ -1383,7 +1392,7 @@
"submitText": "जमा करें",
"submittingPromoCodeText": "संहिता जमा कर रहा है ...",
"successText": "सफल!",
"supportEmailText": "यदि आप किसी भी समस्या का सामना कर रहे हैं\nऐप, कृपया ${EMAIL} को ईमेल करें",
"supportEmailText": "यदि आप किसी भी समस्या का सामना कर रहे हैं ऐप, \nकृपया ईमेल करें ${EMAIL}।",
"teamNamesColorText": "टीम के नाम / रंग ...",
"telnetAccessGrantedText": "टेलनेट एक्सेस सक्षम है",
"telnetAccessText": "टेलनेट पहुंच का पता चला; अनुमति देते हैं?",
@ -1832,6 +1841,7 @@
"toSkipPressAnythingText": "(शिक्षण छोड़ने के लिए कुछ भी स्पर्श करे या दबाएं)"
},
"twoKillText": "दोहरी हत्या",
"uiScaleText": "यू आई सकेल",
"unavailableText": "उपलब्ध नहीं",
"unconfiguredControllerDetectedText": "बिना विन्यास वाले नियंत्रक का पता चला:",
"unlockThisInTheStoreText": "यह स्टोर में अनलॉक होना चाहिए।",
@ -1845,6 +1855,8 @@
"upgradeText": "अभ्युत्थान",
"upgradeToPlayText": "इन-गेम स्टोर में इसे चलाने के लिए \"${PRO}\" अनलॉक करें।",
"useDefaultText": "पूर्व निर्धारित उपयोग करें",
"userSystemScriptsCreateText": "डसतमालक सिस्टम सृ‍‌‌इपट बनाईए",
"userSystemScriptsDeleteText": "डीलीइट यूजर्स सिस्टम सिकरीपट",
"usesExternalControllerText": "यह गेम इनपुट के लिए बाहरी नियंत्रक का उपयोग करता है।",
"usingItunesText": "गाने के लिए संगीत ऐप का उपयोग कर रहे है ...",
"v2AccountLinkingInfoText": "V2 खातों को लिंक करने के लिए, 'खाता प्रबंधित करें' बटन का उपयोग करें।",

View file

@ -32,8 +32,9 @@
"signInWithGooglePlayText": "Belépés Google fiókkal",
"signInWithTestAccountInfoText": "(Egy régi típusú felhasználó; Mostantól a készülék felhasználóját használd.)",
"signInWithTestAccountText": "Bejelentkezés teszt felhasználóval",
"signInWithText": "Bejelentkezés ${SERVICE}-(v)al /-(v)el",
"signInWithV2InfoText": "(egy fiók, amely minden platformon működik)",
"signInWithV2Text": "Jelentkezzen be BombSquad fiókkal",
"signInWithV2Text": "Jelentkezz be BombSquad fiókkal",
"signOutText": "Kijelentkezés",
"signingInText": "Bejelentkezés...",
"signingOutText": "Kijelentkezés...",
@ -338,6 +339,8 @@
"getMoreGamesText": "Több Játékmód...",
"titleText": "Játék Hozzáadása"
},
"addToFavoritesText": "Hozzáadás a kedvencekhez",
"addedToFavoritesText": "'${NAME}' hozzáadva a kedvencekhez.",
"allText": "Minden",
"allowText": "Engedélyezés",
"alreadySignedInText": "A fiókoddal be vagy jelentkezve egy másik eszközről;\nkérlek cserélj fiókot vagy zárd be a játékot \na másik eszközön és próbáld újra",
@ -371,6 +374,7 @@
"chatMutedText": "Chat némítva",
"chatUnMuteText": "Chat némítás feloldása",
"choosingPlayerText": "<játékos választás>",
"codesExplainText": "A kódokkal diagnosztizálni és javítani tudod az esetlegesen felmerülő,\n fiókoddal kapcsolatos problémákat.",
"completeThisLevelToProceedText": "Teljesítened kell ezt\na szintet a folytatáshoz!",
"completionBonusText": "Befejezési Bónusz",
"configControllersWindow": {
@ -451,6 +455,7 @@
"swipeText": "nyilak",
"titleText": "Érintőképernyő Konfigurálása"
},
"configureDeviceInSystemSettingsText": "${DEVICE} konfigurálását a rendszerbeállításokban tudod megtenni",
"configureItNowText": "Most Konfigurálod?",
"configureText": "Konfigurálás",
"connectMobileDevicesWindow": {
@ -564,6 +569,8 @@
"disableXInputDescriptionText": "Engedélyezi ,hogy 4-nél több kontroller is csatlakozhasson ,viszont nem biztos a hibátlan működés.",
"disableXInputText": "XInput kikapcsolása",
"disabledText": "Kikapcsolva",
"discordFriendsText": "Szeretnél barátokat találni?\nCsatlakozz a Discord szerverünkre!",
"discordJoinText": "Csatlakozás a discord szerverre",
"doneText": "Elvégezve",
"drawText": "Döntetlen",
"duplicateText": "Másolás",
@ -597,6 +604,7 @@
"localProfileText": "(alkalmi profil)",
"nameDescriptionText": "Játékos Név",
"nameText": "Név",
"profileAlreadyExistsText": "Egy ugyan ilyen nevű profil már létezik!",
"randomText": "véletlen",
"titleEditText": "Profil Szerkesztése",
"titleNewText": "Új Profil",
@ -678,6 +686,8 @@
"duplicateText": "Lista\nMásolása",
"editText": "Lista\nSzerkesztése",
"newText": "Új\nLista",
"pointsToWinText": "Pont nyerésig",
"seriesLengthText": "Sorozat hossza",
"showTutorialText": "Oktató végignézése",
"shuffleGameOrderText": "Játék Rendelés Megkeverése",
"titleText": "Szabd személyre a ${TYPE} Lejátszási listát"
@ -752,6 +762,7 @@
"manualYourLocalAddressText": "Lokális IP címed:",
"nearbyText": "Közeli játékok",
"noConnectionText": "<nincs csatlakozás>",
"noPartiesAddedText": "Nincsenek hozzáadva játékok",
"otherVersionsText": "(másik verziók)",
"partyCodeText": "Party kód",
"partyInviteAcceptText": "Elfogad",
@ -827,10 +838,12 @@
"alwaysText": "Mindig",
"fullScreenCmdText": "Teljes képernyő (Cmd-F)",
"fullScreenCtrlText": "Teljes képernyő (Ctrl-F)",
"fullScreenText": "Teljes képernyő",
"gammaText": "Gamma",
"highText": "Magas",
"higherText": "Magasabb",
"lowText": "Alacsony",
"maxFPSText": "Maximum FPS:",
"mediumText": "Közepes",
"neverText": "Soha",
"resolutionText": "Felbontás",
@ -862,11 +875,11 @@
"powerupCurseNameText": "Átok",
"powerupHealthDescriptionText": "Helyreállítja a teljes egészségedet.\nSose gondoltad volna.",
"powerupHealthNameText": "Gyógyító-Csomag",
"powerupIceBombsDescriptionText": "Gyengébb mint a normál bombák,\nde hülten hagyja ellenfeleidet\nés különösen törékenyen.",
"powerupIceBombsDescriptionText": "Gyengébbek mint a normál bombák,\nde hülten hagyja ellenfeleidet.\nÉs különösen törékenyen!",
"powerupIceBombsNameText": "Jég-Bombák",
"powerupImpactBombsDescriptionText": "Némileg gyengébb, mint az eredeti\nbombák, de becsapódásra robannak.",
"powerupImpactBombsDescriptionText": "Némileg gyengébbek, mint a normál\nbombák, de becsapódásra robannak.",
"powerupImpactBombsNameText": "Ravasz-Bombák",
"powerupLandMinesDescriptionText": "Ezek 3-asával jönnek egy csomagba;\nHasznos a bázis védelemre vagy\na gyors ellenfelek megállítására.",
"powerupLandMinesDescriptionText": "Ezek 3-asával jönnek egy csomagban;\nHasznos a bázis védelemre vagy\na gyors ellenfelek megállítására.",
"powerupLandMinesNameText": "Taposó-akna",
"powerupPunchDescriptionText": "Felerősíti, gyorsítja, jobbá,\nés keményebbé teszi ütéseidet.",
"powerupPunchNameText": "Box-Kesztyűk",
@ -1070,8 +1083,10 @@
"noContinuesText": "(újraéledés nélkül)",
"noExternalStorageErrorText": "Nincs megtalálható külső tárhely ezen az eszközön",
"noGameCircleText": "Hiba: nincs bejelentkezve egy JátékKörbe",
"noPluginsInstalledText": "Nincsenek hozzáadva pluginok",
"noProfilesErrorText": "Nincs játékos profilod, tehát te most '${NAME}'-val nyomulsz.\nMenj a Beállítások->Játékos Profilok-ba hogy csinálj magadnak egy profilt-",
"noScoresYetText": "Nincs még pontod.",
"noServersFoundText": "Nem találhatók szerverek",
"noThanksText": "Nem Köszönöm",
"noTournamentsInTestBuildText": "FIGYELEM: A tournament pontok ebből a teszt épitésből ki lesznek hagyva.",
"noValidMapsErrorText": "Nem található pálya ehhez a játéktípushoz.",
@ -1279,10 +1294,13 @@
"kidFriendlyModeText": "Gyerekbarát Mód (erőszak csökkentése,stb.)",
"languageText": "Nyelv",
"moddingGuideText": "Modolási Útmutató",
"moddingToolsText": "Moddolási eszközök",
"mustRestartText": "Újra kell indítanod a játékot a módosítások érvénybe lépéséhez.",
"netTestingText": "Hálózat Tesztelése",
"resetText": "Visszaállítás",
"showBombTrajectoriesText": "Bomba Pályájának Mutatása",
"showDemosWhenIdleText": "Demók lejátszása tétlenség esetén",
"showDevConsoleButtonText": "A fejlesztői konzol gombjának megjelenítése",
"showInGamePingText": "Ping mutatása játékban",
"showPlayerNamesText": "Játékos Név Mutatása",
"showUserModsText": "Mod Mappák Mutatása",
@ -1302,6 +1320,9 @@
"signInWithGameCenterText": "Hogy használd a Játék Központ felhasználódat\njelentkezz be a Játék Központban.",
"singleGamePlaylistNameText": "Csak ${GAME}",
"singlePlayerCountText": "1 játékos",
"sizeLargeText": "Óriás",
"sizeMediumText": "Közepes",
"sizeSmallText": "Kicsi",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Karakter Választás",
@ -1377,6 +1398,8 @@
"storeText": "Bolt",
"submitText": "Érvényesítsd",
"submittingPromoCodeText": "Promóciós Kód Érvényesítése...",
"successText": "Siker!",
"supportEmailText": "Ha bármi problémát észlesz a játékkal, kérlek írd meg az alábbi e-mailen:\n${EMAIL}",
"teamNamesColorText": "Csapatnevek/csapatszínek...",
"telnetAccessGrantedText": "Telnet hozzáférés engedélyezve.",
"telnetAccessText": "Telnet hozzáférés észlelve. Engedélyezed?",
@ -1826,11 +1849,13 @@
"toSkipPressAnythingText": "(tapints vagy nyomj meg akármit az oktató átlépéséhez)"
},
"twoKillText": "DUPLA ÖLÉS!",
"uiScaleText": "UI skála",
"unavailableText": "elérhetetlen",
"unconfiguredControllerDetectedText": "Konfigurált vezérlő felismerve:",
"unlockThisInTheStoreText": "Ennek feloldva kell lennie az áruházban.",
"unlockThisProfilesText": "Hogy készíts több mint ${NUM} profilt, kelleni fog:",
"unlockThisText": "Hogy ezt felold, szükséged van ezekre:",
"unsupportedControllerText": "Bocsi, de a(z) \"${NAME}\" nevű kontroller nem támogatott",
"unsupportedHardwareText": "Bocs, ez a hárdver nem támogatott a játék ezen szerkezete által.",
"upFirstText": "Elsőként:",
"upNextText": "A következő a ${COUNT}. játékban:",
@ -1838,11 +1863,14 @@
"upgradeText": "Frissítés",
"upgradeToPlayText": "Old fel a \"${PRO}\"-t az áruházba, hogy játszhass ezzel.",
"useDefaultText": "Alapértelmezett Használata",
"userSystemScriptsCreateText": "Felhasználói rendszer-scriptek létrehozása",
"userSystemScriptsDeleteText": "Felhasználói rendszer-scriptek törlése",
"usesExternalControllerText": "Ez a játék egy külső vezérlőt használ bemenet gyanánt.",
"usingItunesText": "Itunes használása a zenéhez...",
"usingItunesTurnRepeatAndShuffleOnText": "Kérlek bizonyosodj meg arról, hogy a keverés BE van kapcsolva és az ismétlés MINDEN-re van állítva az iTunes-on.",
"v2AccountLinkingInfoText": "Hogy V2-es fiókot kapcsolj, menj a 'fiók kezelése' gombra.",
"validatingTestBuildText": "Teszt Szerkezet Érvényesítése...",
"viaText": "via",
"victoryText": "Győzelem!",
"voteDelayText": "Még nem indíthatsz szavazást újabb ${NUMBER} másodpercig",
"voteInProgressText": "Már egy szavazás folyamatban van...",
@ -1895,7 +1923,7 @@
"winsText": "${NAME} nyert!",
"workspaceSyncErrorText": "Nem sikerült szinkronizálni a következő munkaterületet: ${WORKSPACE}. Nézd a naplót további adatokért.",
"workspaceSyncReuseText": "Nem lehet szinkronizálni a következő munkaterületet: ${WORKSPACE}. Előző munkaterület lesz használatban.",
"worldScoresUnavailableText": "Világ eredmények elérhetetlenek",
"worldScoresUnavailableText": "A globális eredmények elérhetetlenek",
"worldsBestScoresText": "Világ legjobb eredményei",
"worldsBestTimesText": "Világ legjobb idejei",
"xbox360ControllersWindow": {
@ -1906,6 +1934,6 @@
"titleText": "Xbox 360 kontroller használata a ${APP_NAME}-ban:"
},
"yesAllowText": "Igen, Engedélyez!",
"yourBestScoresText": "Te legjobb pontjaid",
"yourBestTimesText": "Te legjobb időid"
"yourBestScoresText": "A legjobb pontjaid",
"yourBestTimesText": "A legjobb időid"
}

View file

@ -27,6 +27,7 @@
"setAccountNameDesc": "Seleziona quale nome visualizzare per il tuo account.\nPuoi usare quel nome per uno dei tuoi account collegati,\noppure creare un unico nome personalizzato.",
"signInInfoText": "Accedi per raccogliere biglietti, competere online,\ne condividere i progressi tra i vari dispositivi.",
"signInText": "Accedi",
"signInWithAnEmailAddressText": "Accedi con un indirizzo email",
"signInWithDeviceInfoText": "(Un solo account automatico è disponibile per questo dispositivo)",
"signInWithDeviceText": "Accedi con l'account del dispositivo",
"signInWithGameCircleText": "Accedi con Game Circle",
@ -574,6 +575,7 @@
"demoText": "Demo",
"denyText": "Nega",
"deprecatedText": "Deprecato",
"descriptionText": "Descrizione",
"desktopResText": "Risoluzione Nativa",
"deviceAccountUpgradeText": "Attenzione:\nHai effettuato l'accesso con un profilo dispositivo (${NAME}$).\nI profili dispositivi verranno rimossi in un aggiornamento futuro.\nAggiornati ad un profilo V2 se desideri mantenere i tuoi progressi.",
"difficultyEasyText": "Facile",
@ -594,7 +596,7 @@
"addGameText": "Aggiungi\nGioco",
"cantOverwriteDefaultText": "Non puoi sovrascrivere la scaletta predefinita!",
"cantSaveAlreadyExistsText": "Una scaletta con quel nome esiste già!",
"cantSaveEmptyListText": "Non puoi salvare una scaletta vuota!",
"cantSaveEmptyListText": "Non puoi salvare una playlist vuota!",
"editGameText": "Modifica\nGioco",
"gameListText": "Serie di Partite",
"listNameText": "Nome Scaletta",
@ -621,6 +623,7 @@
"localProfileText": "(profilo locale)",
"nameDescriptionText": "Nome del giocatore",
"nameText": "Nome",
"profileAlreadyExistsText": "Esiste già un profilo con quel nome.",
"randomText": "casuale",
"titleEditText": "Modifica Profilo",
"titleNewText": "Nuovo Profilo",
@ -708,6 +711,8 @@
"editText": "Modifica\nScaletta",
"gameListText": "Lista delle serie di partite",
"newText": "Nuova\nScaletta",
"pointsToWinText": "Punti Per Vincere",
"seriesLengthText": "Durata Serie",
"showTutorialText": "Mostra Guida",
"shuffleGameOrderText": "Ordine Partite Casuale",
"titleText": "Personalizza Scalette ${TYPE}"
@ -748,10 +753,10 @@
"friendHasSentPromoCodeText": "${COUNT} biglietti di ${APP_NAME} da ${NAME}",
"friendPromoCodeAwardText": "Riceverai ${COUNT} biglietti ogni volta che viene usato.",
"friendPromoCodeExpireText": "Questo codice scadrà in ${EXPIRE_HOURS} ore e funziona soltanto per nuovi giocatori.",
"friendPromoCodeInstructionsText": "Per usarlo, apri ${APP_NAME} e vai su \"Impostazioni->Avanzate->Inserisci Codice\".\nVisita bombsquadgame.com per i link di download per tutte le versioni supportate.",
"friendPromoCodeInstructionsText": "Per usarlo, apri ${APP_NAME} e vai su \"Impostazioni->Avanzate->Invia Informazioni\".\nVisita bombsquadgame.com per i link di download per tutte le versioni supportate.",
"friendPromoCodeRedeemLongText": "Puó essere utilizzato per ${COUNT} biglietti gratis per un massimo di ${MAX_USES} persone.",
"friendPromoCodeRedeemShortText": "Puó essere utilizzato per ${COUNT} biglietti nel gioco.",
"friendPromoCodeWhereToEnterText": "(in \"Impostazioni->Avanzate->Inserisci Codice\")",
"friendPromoCodeWhereToEnterText": "(in \"Impostazioni->Avanzate->Invia Informazioni\")",
"getFriendInviteCodeText": "Ottieni un Codice di Invito",
"googlePlayDescriptionText": "Invita giocatori Google Play nel tuo gruppo:",
"googlePlayInviteText": "Invita",
@ -1305,6 +1310,7 @@
},
"scoreWasText": "(era ${COUNT})",
"selectText": "Seleziona",
"sendInfoDescriptionText": "Invia le informazioni sullo stato dell'account e dell'applicazione allo sviluppatore.\nPrego di includere il proprio nome o il motivo dell'invio.",
"seriesWinLine1PlayerText": "VINCE LA",
"seriesWinLine1TeamText": "VINCE LA",
"seriesWinLine1Text": "VINCE LA",
@ -1321,8 +1327,9 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(una semplice tastiera sullo schermo per editare testi)",
"alwaysUseInternalKeyboardText": "Usa Sempre La Tastiera Interna",
"alwaysUseInternalKeyboardText": "Usa sempre la tastiera interna",
"benchmarksText": "Benchmarks & Prove Di Stress",
"devToolsText": "Strumenti di Sviluppo",
"disableCameraGyroscopeMotionText": "Disabilita il movimento della visuale tramite giroscopio",
"disableCameraShakeText": "Disabilita il tremolio della visuale",
"disableThisNotice": "(puoi disattivare questo messaggio su Impostazioni > Avanzate)",
@ -1335,13 +1342,16 @@
"kidFriendlyModeText": "Modalità per bambini (violenza ridotta e altro)",
"languageText": "Lingua",
"moddingGuideText": "Manuale di personalizzazione",
"moddingToolsText": "Strumenti di Modding",
"mustRestartText": "Devi riavviare il gioco per apportare questa modifica.",
"netTestingText": "Collaudo Rete",
"resetText": "Reset",
"sendInfoText": "Invia Informazioni",
"showBombTrajectoriesText": "Mostra le traiettorie delle bombe",
"showDemosWhenIdleText": "Riproduci Demo All'Inattività",
"showDevConsoleButtonText": "mostra tasto console sviluppatore",
"showInGamePingText": "Mostra il Ping in gioco",
"showDemosWhenIdleText": "Mostra demo quando inattivo",
"showDeprecatedLoginTypesText": "Mostra metodi di login obsoleti",
"showDevConsoleButtonText": "Mostra tasto console sviluppatore",
"showInGamePingText": "Mostra il ping in gioco",
"showPlayerNamesText": "Mostra i nomi dei giocatori",
"showUserModsText": "Apri cartella personalizzazioni",
"titleText": "Avanzato",
@ -1349,8 +1359,8 @@
"translationFetchErrorText": "stato traduzione non disponibile",
"translationFetchingStatusText": "controllo stato traduzione...",
"translationInformMe": "Informami quando la mia lingua ha bisogno di aggiornamenti",
"translationNoUpdateNeededText": "la traduzione italiana è completa; woohoo!",
"translationUpdateNeededText": "** ci sono testi da tradurre!! **",
"translationNoUpdateNeededText": "La traduzione italiana è completa; woohoo!",
"translationUpdateNeededText": "** Ci sono testi da tradurre!! **",
"vrTestingText": "Collaudo VR"
},
"shareText": "Condividi",
@ -1360,6 +1370,9 @@
"signInWithGameCenterText": "Per utilizzare un account Game Center,\naccedi utilizzando l'app Game Center.",
"singleGamePlaylistNameText": "Solo ${GAME}",
"singlePlayerCountText": "Un giocatore",
"sizeLargeText": "Grande",
"sizeMediumText": "Medio",
"sizeSmallText": "Piccolo",
"soloNameFilterText": "${NAME} Testa a Testa",
"soundtrackTypeNames": {
"CharSelect": "Selezione del personaggio",
@ -1914,6 +1927,7 @@
"toSkipPressAnythingText": "(tocca o premi qualsiasi pulsante per saltare la guida)"
},
"twoKillText": "DOPPIA UCCISIONE!",
"uiScaleText": "Dimensione Interfaccia",
"unavailableText": "non disponibile",
"unconfiguredControllerDetectedText": "Rilevato controller non configurato:",
"unlockThisInTheStoreText": "Deve essere sbloccato nel negozio",
@ -1927,6 +1941,8 @@
"upgradeText": "Aggiorna",
"upgradeToPlayText": "Sblocca \"${PRO}\" nel negozio in-game per poter giocare a questo.",
"useDefaultText": "Usa Predefinito",
"userSystemScriptsCreateText": "Crea Script di Sistema Utente",
"userSystemScriptsDeleteText": "Elimina Script di Sistema Utente",
"usesExternalControllerText": "Questo gioco utilizza un controller esterno come input.",
"usingItunesText": "Sto usando una app musicale per la colonna sonora...",
"usingItunesTurnRepeatAndShuffleOnText": "Per favore, assicurati che la riproduzione casuale sia ATTIVA e che la ripetizione sia su TUTTO su iTunes.",

View file

@ -29,6 +29,7 @@
"signInWithGooglePlayText": "Daftar masuk dengan Google Play",
"signInWithTestAccountInfoText": "(jenis akaun warisan; gunakan akaun peranti untuk ke hadapan)",
"signInWithTestAccountText": "Daftar masuk dengan akaun ujian",
"signInWithText": "Daftar masuk dengan ${SERVICE}",
"signInWithV2InfoText": "(akaun yang berfungsi untuk semua platform)",
"signInWithV2Text": "Log masuk dengan akaun BombSquad",
"signOutText": "Daftar Keluar",
@ -332,6 +333,9 @@
"getMoreGamesText": "Dapatkan Lebih Banyak Permainan...",
"titleText": "Tambahkan Permainan"
},
"addToFavoritesText": "Tambah pada Kegemaran",
"addedToFavoritesText": "'${NAME}' ditambah pada Kegemaran",
"allText": "Semua",
"allowText": "Benarkan",
"alreadySignedInText": "Akaun anda didaftar masuk dari peranti lain;\nsila tukar akaun atau tutupkan permainan pada\nperanti itu dan cuba lagi.",
"apiVersionErrorText": "Tidak dapat memuatkan modul ${NAME}; ia menyasarkan versi api ${VERSION_USED}; kami memerlukan ${VERSION_REQUIRED}.",
@ -364,6 +368,7 @@
"chatMutedText": "Perbualan Disenyapkan",
"chatUnMuteText": "Nyahsenyapkan Perbualan",
"choosingPlayerText": "<memilih pemain>",
"codesExplainText": "Kod disediakan oleh pembangun untuk\nmendiagnosis dan membaiki masalah akaun.",
"completeThisLevelToProceedText": "Anda mesti menyelasaikan\nperingkat ini untuk teruskan!",
"completionBonusText": "Bonus Penyelesaian",
"configControllersWindow": {
@ -444,6 +449,7 @@
"swipeText": "sapu",
"titleText": "Atur Skrin Sentuhan"
},
"configureDeviceInSystemSettingsText": "${DEVICE} boleh diatur di apl Tetapan Sistem",
"configureItNowText": "Aturnya sekarang?",
"configureText": "Atur",
"connectMobileDevicesWindow": {
@ -556,6 +562,9 @@
"disableRemoteAppConnectionsText": "Lumpuhkan Sambungan Apl Jauh",
"disableXInputDescriptionText": "Membenarkan lebih daripada 4 pengawal tetapi mungkin tidak berfungsi juga.",
"disableXInputText": "Lumpuhkan XInput",
"disabledText": "Dimatikan",
"discordFriendsText": "Mahu seseorang untuk bermain bersama?\nSertai Discord kami dan cari rakan baharu!",
"discordJoinText": "Sertai Discord",
"doneText": "Selesai",
"drawText": "Seri",
"duplicateText": "Pendua",
@ -623,6 +632,7 @@
"useMusicFolderText": "Folder Fail Muzik"
},
"editText": "Sunting",
"enabledText": "Dihidupkan",
"endText": "Tamatkan",
"enjoyText": "Nikmatilah!",
"epicDescriptionFilterText": "${DESCRIPTION} dalam gerakan perlahan epik",
@ -668,6 +678,8 @@
"duplicateText": "Pendua\nSenarai main",
"editText": "Sunting\nSenarai main",
"newText": "Senarai Main\nBaru",
"pointsToWinText": "Mata Untuk Menang",
"seriesLengthText": "Panjang Siri",
"showTutorialText": "Tunjukkan Cara-cara",
"shuffleGameOrderText": "Pesanan Permainan Rombak",
"titleText": "Ubahsuai Senarai Main ${TYPE}"
@ -740,6 +752,7 @@
"manualYourLocalAddressText": "Alamat tempatan anda",
"nearbyText": "Berdekatan",
"noConnectionText": "<tiada sambungan>",
"noPartiesAddedText": "Tiada Parti Yang Ditambah",
"otherVersionsText": "(versi lain)",
"partyCodeText": "Kod Permainan",
"partyInviteAcceptText": "Terima",
@ -811,10 +824,12 @@
"alwaysText": "Sentiasa",
"fullScreenCmdText": "Skrin penuh (Cmd-F)",
"fullScreenCtrlText": "Skrin penuh (Ctrl-F)",
"fullScreenText": "Skrin Penuh",
"gammaText": "Gamma",
"highText": "Tinggi",
"higherText": "Lebih tinggi",
"lowText": "Rendah",
"maxFPSText": "Maksimum FPS",
"mediumText": "Sederhana",
"neverText": "Tidak pernah",
"resolutionText": "Resolusi",
@ -1052,7 +1067,9 @@
"noContinuesText": "(tidak boleh bersambung)",
"noExternalStorageErrorText": "Tiada storan luaran ditemui pada peranti ini",
"noGameCircleText": "Ralat: tidak log masuk ke GameCircle",
"noPluginsInstalledText": "Tiada Pemalam Yang Dipasang",
"noScoresYetText": "Tiada markah lagi.",
"noServersFoundText": "Tiada pelayan yang ditemui.",
"noThanksText": "Tak Terimo Kasih, Yo",
"noTournamentsInTestBuildText": "AMARAN: Markah kejohanan daripada binaan ujian ini akan diabaikan.",
"noValidMapsErrorText": "Tiada peta yang sah ditemui untuk jenis permainan ini.",
@ -1217,6 +1234,8 @@
"runText": "Lari",
"saveText": "Simpan",
"scanScriptsErrorText": "Ralat(s) mengimbas skrip; Lihat log untuk butiran.",
"scanScriptsMultipleModulesNeedUpdatesText": "${PATH} dan ${NUM} modul yang lain perlu dikemaskinikan untuk API ${API}.",
"scanScriptsSingleModuleNeedsUpdatesText": "${PATH} perlu dikemaskinikan untuk API ${API}.",
"scoreChallengesText": "Cabaran Skor",
"scoreListUnavailableText": "Senarai skor tidak tersedia.",
"scoreText": "Markah",
@ -1260,6 +1279,8 @@
"netTestingText": "Ujian Rangkaian",
"resetText": "Tetap Semula",
"showBombTrajectoriesText": "Tunjukkan Trajektori Bom",
"showDemosWhenIdleText": "Tunjukkan Demo Apabila Melahu",
"showDevConsoleButtonText": "Tunjukkan Butang Konsol Pembangun",
"showInGamePingText": "Tunjukkan Ping Dalam Permainan",
"showPlayerNamesText": "Tunjukkan Nama Pemain",
"showUserModsText": "Tunjukkan Pelipat Mod",
@ -1351,6 +1372,8 @@
"storeText": "Kedai",
"submitText": "Hantar",
"submittingPromoCodeText": "Mengemukakan Kod...",
"successText": "Berjaya!",
"supportEmailText": "Jika anda mengalami masalah dengan apl ini, sila\nhantar e-mel kepada ${EMAIL}.",
"teamNamesColorText": "Nama/Warna Pasukan...",
"telnetAccessGrantedText": "Akses telnet diaktifkan.",
"telnetAccessText": "Akses telnet dikesan; benarkan?",
@ -1804,6 +1827,7 @@
"unlockThisInTheStoreText": "Ini mesti dibuka kunci di kedai.",
"unlockThisProfilesText": "Untuk membuat lebih daripada ${NUM} profil, anda memerlukan:",
"unlockThisText": "Untuk membuka kunci ini, anda memerlukan:",
"unsupportedControllerText": "Maaf, alat kawalan \"${NAME}\" tidak disokong.",
"unsupportedHardwareText": "Maaf, perkakasan ini tidak disokong oleh binaan permainan ini.",
"upFirstText": "Bangun dahulu:",
"upNextText": "Seterusnya dalam permainan ${COUNT}:",
@ -1815,6 +1839,7 @@
"usingItunesText": "Menggunakan Apl Muzik untuk runut bunyi...",
"v2AccountLinkingInfoText": "Untuk memautkan akaun V2, gunakan butang 'Urus Akaun'.",
"validatingTestBuildText": "Mengesahkan Binaan Ujian...",
"viaText": "melalui",
"victoryText": "Kemenangan!",
"voteDelayText": "Anda tidak boleh memulakan undian lain selama ${NUMBER} saat",
"voteInProgressText": "Undian sedang dijalankan.",

View file

@ -1,14 +1,14 @@
{
"accountSettingsWindow": {
"accountNameRules": "نام حساب نمی‌تونه ایموجی (شکلک) یا نویسه‌ های ویژه داشته باشه",
"accountNameRules": "نام حساب کاربری نمیتونه شکلک و نویسه های ویژه داشته باشه جیگر",
"accountProfileText": "(مشخصات حساب)",
"accountsText": "حساب های کاربری",
"achievementProgressText": "${TOTAL}/${COUNT} :دستاوردها",
"campaignProgressText": "${PROGRESS} :[سخت] پیشروی در بازی اصلی",
"changeOncePerSeason": ".فقط یه‌ بار در هر فصل می‌تونی این مورد رو تغییر بدی",
"changeOncePerSeasonError": "(روز تا فصل بعد‎ ${NUM}) برای تغییر این گزینه باید تا فصل بعد صبر کنی",
"changeOncePerSeasonError": "(روز تا فصل بعد‎ ${NUM}) برای تغییر مجدد این گزینه باید تا فصل بعد صبر کنی",
"customName": "نام سفارشی",
"googlePlayGamesAccountSwitchText": "،اگه میخوای از اکانت گوگل متفاوتی استفاده کنی\nبرای تعویض از گوگل پلی گیمز استفاده کن",
"googlePlayGamesAccountSwitchText": "اگه میخوای از حساب های مختلف گوگل استفاده کنی از بازی های گوگل برای عوض کردن استفاده کن",
"linkAccountsEnterCodeText": "کد را وارد کنید",
"linkAccountsGenerateCodeText": "ایجاد کد",
"linkAccountsInfoText": "(به اشتراک گذاری پیشروی بین دستگاه‌های مختلف)",
@ -16,8 +16,8 @@
"linkAccountsInstructionsText": "برای اتصال دو حساب، در یکی از\nآن ها کدی ایجاد کرده \nو آن را در دیگری وارد کنید.\nپیشرفت ها و موجودی ترکیب خواهد شد.\nحساب را وصل کنید ${COUNT} شما می توانید.\n!توجه : فقط حساب هایی را وصل کنید که برای\n شماست\nاگر شما حساب دیگری را وصل کنید، شما توانایی این را ندارید که در یک زمان بازی کنید!\nاین عمل برگشت پذیر نیست، پس \nدقت کنید!",
"linkAccountsText": "متصل کردن حساب ها",
"linkedAccountsText": ":حساب های متصل شده",
"manageAccountText": "تنظیمات حساب",
"nameChangeConfirm": "تغییر کند؟‎ ${NAME} آیا نام شما به",
"manageAccountText": "مدیریت حساب",
"nameChangeConfirm": "تغییر کند؟‎ ${NAME} نام شما به",
"resetProgressConfirmNoAchievementsText": "همهٔ پیشروی‌های شما در بخش همکاری و امتیازات\nشما پاک خواهد شد. (به استثنای بلیت‌های شما)\nاین کار برگشت‌پذیر نیست. آیا مطمئنید؟",
"resetProgressConfirmText": "همهٔ پیشروی‌ها در بخش همکاری، دستاوردها\n.و امتیازات بالای شما پاک خواهد شد\n(به استثنای بلیت‌های شما)\nاین کار برگشت‌ پذیر نیست. آیا مطمئنید؟",
"resetProgressText": "بازنشانی پیشروی",
@ -25,6 +25,7 @@
"setAccountNameDesc": "نامی که می‌خواهید برای این حساب نمایش داده شود را انتخاب کنید\nمیتوانید از یکی از نام‌های حساب‌های وصل‌شده استفاده کنید\nیا یک نام جدید بسازید",
"signInInfoText": "به حسابتان وصل شوید تا بلیت جمع کنید، آنلاین رقابت کنید \n.و پیشرفت خود را در دستگاه ها به اشتراک بگذارید",
"signInText": "ورود به حساب",
"signInWithAnEmailAddressText": "ورود با آدرس ایمیل",
"signInWithDeviceInfoText": "(یک حساب خودکار فقط از این دستگاه در دسترس می‌باشد)",
"signInWithDeviceText": "وصل شدن با اکانت دستگاه",
"signInWithGameCircleText": "وصل شدن از طریق حوزهٔ بازی",
@ -32,13 +33,13 @@
"signInWithTestAccountInfoText": "(حساب میراثی؛ از حساب‌های دستگاه برای پیشروی استفاده می‌کند)",
"signInWithTestAccountText": "ورود با حساب آزمایشی",
"signInWithText": "با ${SERVICE} وارد شوید",
"signInWithV2InfoText": "یک اکانت که روی همه سیستم عامل ها کار میکنه",
"signInWithV2InfoText": "یک حساب که روی همه سیستم عامل ها کار میکنه",
"signInWithV2Text": "ورود به سیستم با حساب بمب اسکواد",
"signOutText": "خروج از حساب",
"signingInText": "در حال اتصال…",
"signingOutText": "در حال خروج…",
"ticketsText": "${COUNT} :بلیت‌ها",
"titleText": "حساب",
"titleText": "حساب کاربری",
"unlinkAccountsInstructionsText": "یک حساب را برای جداسازی انتخاب کنید",
"unlinkAccountsText": "جداسازی حساب‌ها",
"unlinkLegacyV1AccountsText": "لغو پیوند حساب‌های قدیمی (V1)",
@ -81,8 +82,8 @@
"name": "بارگذار رایگان"
},
"Gold Miner": {
"description": "شش حریف را با مین زمینی نابود کن",
"descriptionComplete": "شش حریف را با مین زمینی نابود کردی",
"description": "شش بچه بد را با مین زمینی نابود کن",
"descriptionComplete": "شش بچه بد را با مین زمینی نابود کردی",
"descriptionFull": "با مین زمینی از بین ببر ${LEVEL} شش حریف را در مرحلهٔ",
"descriptionFullComplete": "با مین زمینی نابود کردی ${LEVEL} شش حریف را در مرحلهٔ",
"name": "مین‌گذار طلایی"
@ -92,7 +93,7 @@
"descriptionComplete": "بدون استفاده از هیچ مشت یا بمبی برنده شدی",
"descriptionFull": "را بدون مشت یا بمب برنده شو ${LEVEL} بازی",
"descriptionFullComplete": "را بدون مشت یا بمب برنده شدی ${LEVEL} بازی",
"name": "عجب حرکتی"
"name": "عجب حرکاتی بابا ورزشکار!"
},
"In Control": {
"descriptionFull": "(یک دستهٔ به بازی وصل کن (سخت‌افزاری یا نرم‌افزاری",
@ -163,8 +164,8 @@
"name": "${LEVEL} جادوگر"
},
"Precision Bombing": {
"description": "بدون گرفتن هیچ قدرتی برنده شو",
"descriptionComplete": "بدون گرفتن هیچ قدرتی برنده شدی",
"description": "بدون گرفتن هیچ جعبه ی کمکی ای برنده شو",
"descriptionComplete": "بدون گرفتن هیچ جعبه ی کمکی ای برنده شدی",
"descriptionFull": "رو بدون گرفتن قدرتی برنده شو ${LEVEL} مرحله",
"descriptionFullComplete": "رو بدون گرفتن قدرتی برنده شدی ${LEVEL} مرحله",
"name": "بمب باران دقیق"
@ -556,6 +557,7 @@
"demoText": "نسخه آزمایشی",
"denyText": "نپذیرفتن",
"deprecatedText": "ناراحت شد",
"descriptionText": "شرح",
"desktopResText": "رزولوشن دسکتاپ",
"deviceAccountUpgradeText": "هشدار:\nشما با حساب کاربری دستگاه ثبت نام کرده اید (${NAME}).\nدر بروزرسانی های آینده حساب کاربری دستگاه حذف خواهد شد.\nبه حساب کاربری نسخه 2 بروزرسانی کنید اگر می خواهید روند را ادامه دهید.",
"difficultyEasyText": "آسان",
@ -601,6 +603,7 @@
"localProfileText": "(نمایهٔ محلی)",
"nameDescriptionText": "نام بازیکن",
"nameText": "نام",
"profileAlreadyExistsText": "نمایه ای با این نام از قبل وجود دارد.",
"randomText": "تصادفی",
"titleEditText": "ویرایش نمایه",
"titleNewText": "نمایهٔ جدید",
@ -682,6 +685,8 @@
"duplicateText": "کپی کردن\nلیست بازی",
"editText": "ویرایش\nلیست بازی",
"newText": "لیست بازی\nجدید",
"pointsToWinText": "امتیاز برای برنده شدن",
"seriesLengthText": "طول سریال",
"showTutorialText": "نمایش آموزش",
"shuffleGameOrderText": "ترتیب تصادفی بازی ها",
"titleText": "${TYPE} تنظیم لیست های"
@ -719,10 +724,10 @@
"friendHasSentPromoCodeText": "${NAME}از طرف ${APP_NAME}بلیطِ بازی ${COUNT}",
"friendPromoCodeAwardText": ".بلیط خواهید گرفت هر بار که استفاده شود${COUNT}شما",
"friendPromoCodeExpireText": ".ساعت منقضی میشود و تنها بر روی بازیکنان جدید کار میکند${EXPIRE_HOURS}این کد در",
"friendPromoCodeInstructionsText": ".را باز کنید و به قسمت تنظیمات>پیشرفته>وارد کردن کد بروید${APP_NAME}برای استفاده از کد، برنامه\n.سر بزنید تا لینک دانلود بازی برای سیستم عامل های مختلف بازی را بگیرید BombSquadgame.com به سایت",
"friendPromoCodeInstructionsText": ".را باز کنید و به قسمت تنظیمات>پیشرفته>فرستادن اطلاعات بروید${APP_NAME}برای استفاده از کد، برنامه\n.سر بزنید تا لینک دانلود بازی برای سیستم عامل های مختلف بازی را بگیرید BombSquadgame.com به سایت",
"friendPromoCodeRedeemLongText": ".بلیط رایگان به دست آورند${COUNT}نفر میتوانند از این کد استفاده کنند تا${MAX_USES}",
"friendPromoCodeRedeemShortText": ".بلیط در بازی بگیرید${COUNT}با این کد میتوانید",
"friendPromoCodeWhereToEnterText": "(در بخش تنظیمات>پیشرفته>وارد کردن کد)",
"friendPromoCodeWhereToEnterText": "(در بخش تنظیمات>پیشرفته>فرستادن اطلاعات)",
"getFriendInviteCodeText": "گرفتن کد برای دعوت دوستان",
"googlePlayDescriptionText": ":دعوت از بازیکنان گوگل پلی برای ملحق شدن به گروه شما",
"googlePlayInviteText": "دعوت",
@ -1186,12 +1191,12 @@
"recentText": "اخیر",
"remoteAppInfoShortText": ".خیلی جذاب تره وقتی با دوستانتون بازی می کنید ${APP_NAME} بازی\nکافیه چند تا دسته ی بازی به دستگاهتون وصل کنید یا\nرا روی گوشی و تبلت های دیگر نصب کنید تا ${REMOTE_APP_NAME} برنامه ی\n.به عنوان دسته برای بازی استفاده شوند",
"remote_app": {
"app_name": "BombSquad کنترولر مخصوص",
"app_name": "کنترولر مخصوص بمب‌اسکواد",
"app_name_short": "BSRemote",
"button_position": "مکان دکمه",
"button_size": "اندازه دکمه",
"cant_resolve_host": "میزبان را نمی‌توان یافت.",
"capturing": "گرفتن",
"capturing": "...در حال گرفتن",
"connected": ".متصل شد",
"description": "از گوشی یا تبلتتان به‌عنوان دستهٔ بازی برای بمب‌اسکواد استفاده کنید.\nتا ۸ دستگاه می‌توانند به‌صورت هم‌زمان برای جنون حماسهٔ محلی چندنفره روی یک تی‌وی یا تبلت متصل شوند.",
"disconnected": "قطع اتصال از سرور",
@ -1212,7 +1217,7 @@
"searching": "جستجو برای بازی‌های فعال",
"searching_caption": "بر روی نام یک بازی برای پیوستن به آن ضربه بزنید.\nاطمینان حاصل کنید که شما در شبکه وای فای همان بازی هستید.",
"start": "شروع",
"version_mismatch": "عدم تطابق نسخه‌ها\nاطمینان حاصل کنید که بمب‌اسکوار و کنترولر\nآخرین ورژن باشن و دوباره امتحان کنید"
"version_mismatch": "عدم تطابق نسخه‌ها\nاطمینان حاصل کنید که بمب‌اسکواد و کنترولر\nآخرین ورژن باشن و دوباره امتحان کنید"
},
"removeInGameAdsText": "بازی را در فروشگاه بخرید تا تبلیغات حذف شوند «${PRO}» نسخهٔ",
"renameText": "تغییر نام",
@ -1248,6 +1253,7 @@
},
"scoreWasText": "(بود ${COUNT})",
"selectText": "انتخاب",
"sendInfoDescriptionText": "اطلاعات اکانت و حالت برنامه را به سازنده میفرستد\nلطفاً اسم خود یا دلیل فرستادن را بیان کنید",
"seriesWinLine1PlayerText": "برنده",
"seriesWinLine1TeamText": "برنده",
"seriesWinLine1Text": "برنده",
@ -1265,6 +1271,7 @@
"alwaysUseInternalKeyboardDescriptionText": "(یه صفحه‌کلید ساده و خوش‌دست بر روی صفحهٔ نمایش برای ویرایش متنی)",
"alwaysUseInternalKeyboardText": "همیشه از صفحه‌کلید داخلی استفاده شود",
"benchmarksText": "معیار و تست استرس",
"devToolsText": "ابزار های توسعه",
"disableCameraGyroscopeMotionText": "غیرفعال کردن حرکت ژیروسکوپ دوربین",
"disableCameraShakeText": "غیرفعال کردن لرزش دوربین",
"disableThisNotice": "(شما میتوانید این اخطار را در تنظیمات یشرفته خاموش کنید)",
@ -1277,13 +1284,16 @@
"kidFriendlyModeText": "حالت دوستانه برای کودکان. خشونت کم",
"languageText": "زبان",
"moddingGuideText": "راهنمای برنامه‌نویسان",
"moddingToolsText": "اصلاح کردن ابزار",
"mustRestartText": "برای اعمال تغییرات باید بازی را دوباره راه اندازی کنید",
"netTestingText": "تست شبکه",
"resetText": "باز گرداندن",
"sendInfoText": "فرستادن اطلاعات",
"showBombTrajectoriesText": "نمایش خط سیر بمب",
"showDemosWhenIdleText": "نشان دادن دمو ها در وقت بیکاری",
"showDemosWhenIdleText": "نشان دادن دمو ها هنگام غیرفعال بودن",
"showDeprecatedLoginTypesText": "نمایش انواع ورود های منسوخ شده",
"showDevConsoleButtonText": "نشان دادن دکمه توسعه دهنده کنسول",
"showInGamePingText": "نمایش پینگ در بازی",
"showInGamePingText": "نمایش پینگ درون بازی",
"showPlayerNamesText": "نمایش نام بازیکنان",
"showUserModsText": "نمایش پوشهٔ سبک بازی‌ها",
"titleText": "پیشرفته",
@ -1291,8 +1301,8 @@
"translationFetchErrorText": "وضعیت ترجمه در دسترس نیست",
"translationFetchingStatusText": "چک کردن وضعیت ترجمه ...",
"translationInformMe": "!وقتی زبان من به‌روزرسانی نیاز داشت، خبرم کن",
"translationNoUpdateNeededText": "!زبان کنونی به‌روز است؛ ووهو",
"translationUpdateNeededText": "! زبان فعلی نیاز به به روز رسانی دارد",
"translationNoUpdateNeededText": "! زبان کنونی به‌روز است؛ ووهوو",
"translationUpdateNeededText": "! زبان فعلی نیاز به بروزرسانی دارد",
"vrTestingText": "VR تست"
},
"shareText": "اشتراک‌گذاری",
@ -1302,6 +1312,9 @@
"signInWithGameCenterText": "برای استفاده از حسابی که در یک گیم سنتر دارید,\nبا برنامه گیم سنتر خود وارد شوید.",
"singleGamePlaylistNameText": "${GAME} فقط",
"singlePlayerCountText": "1 بازیکن",
"sizeLargeText": "بزرگ",
"sizeMediumText": "متوسط",
"sizeSmallText": "کوچک",
"soloNameFilterText": "رو در رو ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "انتخاب کارکتر",
@ -1395,7 +1408,7 @@
"timeSuffixSecondsText": "ثانیه ${COUNT}",
"tipText": "نکته",
"titleText": "بمب‌اسکواد",
"titleVRText": "BombSquad VR",
"titleVRText": "VR بمب‌اسکواد نسخه",
"topFriendsText": "بالاترین امتیاز دوستان",
"tournamentCheckingStateText": "چک کردن وضعیت مسابقات؛ لطفا صبر کنید",
"tournamentEndedText": "این دوره از مسابقات به پایان رسیده است دوره جدیدی بزودی آغاز خواهد شد",
@ -1827,6 +1840,7 @@
"toSkipPressAnythingText": "(هر کلیدی را بزنید تا از آموزش خارج شوید)"
},
"twoKillText": "کشتن همزمان دونفر",
"uiScaleText": "UI مقیاس",
"unavailableText": "در دسترس نیست",
"unconfiguredControllerDetectedText": ":کنترول پیکربندی نشده شناسایی شد",
"unlockThisInTheStoreText": ". این مورد باید در فروشگاه باز شود",
@ -1840,6 +1854,8 @@
"upgradeText": "ارتقا",
"upgradeToPlayText": "بازی را از فروشگاه خریداری کنید تا این قابلیت فعال شود. ${PRO} نسخه ی",
"useDefaultText": "استفاده از پیش فرض",
"userSystemScriptsCreateText": "اسناد ساخت حساب کاربری",
"userSystemScriptsDeleteText": "حذف اسناد کاربری سیستم",
"usesExternalControllerText": "این بازی از یک کنترلر خارجی برای ورودی استفاده می کند.",
"usingItunesText": "استفاده از برنامه ی موسیقی برای موسیقی متن...",
"usingItunesTurnRepeatAndShuffleOnText": "مطمین شید که شافل روشن است و تکرار کنید همه رو در آیتونز",

View file

@ -1,6 +1,6 @@
{
"accountSettingsWindow": {
"accountNameRules": "Nazwy kont nie mogą zawierać emotikonów ani innych znaków specjalnych",
"accountNameRules": "Nazwy kont nie mogą zawierać emotikonów, ani innych znaków specjalnych",
"accountProfileText": "(profil konta)",
"accountsText": "Konta",
"achievementProgressText": "Osiągnięcia: ${COUNT} z ${TOTAL}",
@ -46,7 +46,7 @@
"unlinkAccountsInstructionsText": "Wybierz konto do rozłączenia",
"unlinkAccountsText": "Rozłącz konta",
"unlinkLegacyV1AccountsText": "Rozłącz stare konta (V1)",
"v2LinkInstructionsText": "Użyj tego linku, aby stworzyć konto lub zaloguj się.",
"v2LinkInstructionsText": "Użyj tego linku, aby stworzyć konto lub zalogować się.",
"viaAccount": "(przez konto ${NAME})",
"youAreLoggedInAsText": "Jesteś zalogowany jako:",
"youAreSignedInAsText": "Jesteś zalogowany jako:"
@ -74,15 +74,15 @@
"name": "Podwójne dzierżenie"
},
"Flawless Victory": {
"description": "Wygraj nie dając się uderzyć",
"descriptionComplete": "Wygrałeś nie dając się uderzyć",
"descriptionFull": "Wygraj w trybie ${LEVEL} nie dając się uderzyć",
"descriptionFullComplete": "Wygrałeś w trybie ${LEVEL} nie dając się uderzyć",
"description": "Wygraj, nie dając się uderzyć",
"descriptionComplete": "Wygrałeś, nie dając się uderzyć",
"descriptionFull": "Wygraj w trybie ${LEVEL}, nie dając się uderzyć",
"descriptionFullComplete": "Wygrałeś w trybie ${LEVEL}, nie dając się uderzyć",
"name": "Zwycięstwo bez skazy"
},
"Free Loader": {
"descriptionFull": "Zacznij grę Free-For-All z dwoma graczami lub więcej",
"descriptionFullComplete": "Zaczęto grę Free-For-All z dwoma, lub większą ilością graczy",
"descriptionFullComplete": "Zaczęto grę Free-For-All z dwoma lub większą ilością graczy",
"name": "Łącznik graczy"
},
"Gold Miner": {
@ -182,10 +182,10 @@
"name": "Zawodowy Bokser"
},
"Pro Football Shutout": {
"description": "Wygraj nie pozwalając zapunktować złym gościom",
"descriptionComplete": "Wygrałeś nie pozwalając zapunktować złym gościom",
"descriptionFull": "Wygraj w trybie ${LEVEL} nie pozwalając zapunktować złym gościom",
"descriptionFullComplete": "Wygrałeś w trybie ${LEVEL} nie pozwalając zapunktować złym gościom",
"description": "Wygraj, nie pozwalając zapunktować złym gościom",
"descriptionComplete": "Wygrałeś, nie pozwalając zapunktować złym gościom",
"descriptionFull": "Wygraj w trybie ${LEVEL}, nie pozwalając zapunktować złym gościom",
"descriptionFullComplete": "Wygrałeś w trybie ${LEVEL}, nie pozwalając zapunktować złym gościom",
"name": "Zamurowanie bramki w trybie ${LEVEL}"
},
"Pro Football Victory": {
@ -304,10 +304,10 @@
"name": "Ściana"
},
"Uber Football Shutout": {
"description": "Wygraj nie pozwalając zapunktować wrogom",
"descriptionComplete": "Wygrałeś nie pozwalając zapunktować wrogom",
"descriptionFull": "Wygraj w trybie ${LEVEL} nie pozwalając zapunktować wrogom",
"descriptionFullComplete": "Wygrałeś w trybie ${LEVEL} nie pozwalając zapunktować wrogom",
"description": "Wygraj, nie pozwalając zapunktować wrogom",
"descriptionComplete": "Wygrałeś, nie pozwalając zapunktować wrogom",
"descriptionFull": "Wygraj w trybie ${LEVEL}, nie pozwalając zapunktować wrogom",
"descriptionFullComplete": "Wygrałeś w trybie ${LEVEL}, nie pozwalając zapunktować wrogom",
"name": "Zamurowanie bramki w trybie ${LEVEL}"
},
"Uber Football Victory": {
@ -573,6 +573,7 @@
"demoText": "Demo",
"denyText": "Odmów",
"deprecatedText": "Przestarzałe",
"descriptionText": "Opis",
"desktopResText": "Rozdzielczość ekranu",
"deviceAccountUpgradeText": "Uwaga:\nLogujesz się kontem urządzenia (${NAME}).\nKonta urządzenia zostaną usunięte w przyszłej aktualizacji.\nUlepsz do konta V2, jeżeli chcesz zachować swój postęp.",
"difficultyEasyText": "Łatwy",
@ -620,6 +621,7 @@
"localProfileText": "(lokalny profil)",
"nameDescriptionText": "Nazwa gracza",
"nameText": "Nazwa",
"profileAlreadyExistsText": "Profil z taką nazwą już istnieje.",
"randomText": "losuj",
"titleEditText": "Edytuj profil",
"titleNewText": "Nowy profil",
@ -706,6 +708,8 @@
"editText": "Edytuj\nlistę",
"gameListText": "Lista rozgrywek",
"newText": "Nowa\nlista",
"pointsToWinText": "Punkty do zwycięstwa",
"seriesLengthText": "Długość serii",
"showTutorialText": "Pokaż samouczek po grze",
"shuffleGameOrderText": "Losowa kolejność rozgrywek",
"titleText": "Własne listy rozgrywek trybu ${TYPE}"
@ -747,10 +751,10 @@
"friendPromoCodeAwardText": "Dostaniesz ${COUNT} kuponów zawsze gdy tego użyjesz.",
"friendPromoCodeExpireText": "Ten kod wygaśnie po ${EXPIRE_HOURS} godzinach i działa tylko dla nowych graczy.",
"friendPromoCodeInfoText": "Może zostać wykupione do ${COUNT} kuponów.\n\nIdź do \"Ustawienia->Zaawansowane->Wpisz Kod Promocyjny\" w grze aby go użyć. Idź do bombsquadgame.com by pobrać\nlinki do wszystkich wspieranych platform. Ten kod\nwygaśnie w ${EXPIRE_HOURS} godzin i jest prawidłowy tylko dla nowych graczy.",
"friendPromoCodeInstructionsText": "Aby użyć, otwórz ${APP_NAME} i idź do \"Ustawienia->Zaawansowane-> Wpisz kod\".\nWejdź na bombsquadgame.com by zobaczyć linki dla wszystkich dostępnych platform (Android itp.)",
"friendPromoCodeInstructionsText": "Aby go użyć, otwórz ${APP_NAME} i przejdź do \"Ustawienia->Zaawansowane->Wyślij informacje\".\nLinki do pobrania gry dla wszystkich obsługiwanych platform znajdziesz na stronie bombsquadgame.com.",
"friendPromoCodeRedeemLongText": "Wykorzystanie go daje ${COUNT} darmowych kuponów dla najwięcej ${MAX_USES} ludzi.",
"friendPromoCodeRedeemShortText": "Może być żądane do ${COUNT} kuponów w grze.",
"friendPromoCodeWhereToEnterText": "(W \"Ustawienia->Zaawansowane->Wpisz kod\")",
"friendPromoCodeWhereToEnterText": "(w \"Ustawienia->Zaawansowane->Wyślij informacje\")",
"getFriendInviteCodeText": "Zdobądź kod promocyjny kumpla",
"googlePlayDescriptionText": "Zaproś użytkowników Google Play na imprezę:",
"googlePlayInviteText": "Zaproś",
@ -1307,6 +1311,7 @@
},
"scoreWasText": "(było ${COUNT})",
"selectText": "Wybierz",
"sendInfoDescriptionText": "Przesyła stan konta i aplikacji do dewelopera.\nProszę o podanie imienia lub powodu wysłania.",
"seriesWinLine1PlayerText": "WYGRAŁ",
"seriesWinLine1TeamText": "WYGRALI",
"seriesWinLine1Text": "WYGRAŁ",
@ -1325,7 +1330,8 @@
"alwaysUseInternalKeyboardDescriptionText": "(prosta klawiatura na ekranie do edycji tekstu - przyjazna kontrolerom)",
"alwaysUseInternalKeyboardText": "Zawsze używaj wewn. klawiatury",
"benchmarksText": "Benchmarki & Testy Wydajności",
"disableCameraGyroscopeMotionText": "Wyłącz Kontrolę Kamery Żyroskopem",
"devToolsText": "Narzędzia deweloperskie",
"disableCameraGyroscopeMotionText": "Wyłącz kontrolę kamery żyroskopem",
"disableCameraShakeText": "Wyłącz trzęsienie kamery",
"disableThisNotice": "(możesz wyłączyć to powiadomienie w ustawieniach zaawansowanych)",
"enablePackageModsDescriptionText": "(aktywuje dodatkowe możliwości modowania ale wyłącza grę sieciową)",
@ -1337,10 +1343,14 @@
"kidFriendlyModeText": "Tryb dla dzieciaków (zredukowana przemoc itd.)",
"languageText": "Język",
"moddingGuideText": "Przewodnik modowania gry",
"moddingToolsText": "Narzędzia do modyfikacji",
"mustRestartText": "Musisz uruchomić ponownie grę aby zastosować zmiany.",
"netTestingText": "Testowanie sieci",
"resetText": "Reset",
"sendInfoText": "Wyślij Info",
"showBombTrajectoriesText": "Pokaż trajektorię bomb",
"showDemosWhenIdleText": "Pokazuj wersje demonstracyjne w stanie bezczynności",
"showDeprecatedLoginTypesText": "Pokaż przestarzałe typy logowania",
"showDevConsoleButtonText": "Pokaż przycisk konsoli deweloperskiej",
"showInGamePingText": "Pokaż ping w grze",
"showPlayerNamesText": "Pokazuj nazwy graczy",
@ -1351,7 +1361,7 @@
"translationFetchingStatusText": "sprawdzanie statusu tłumaczenia...",
"translationInformMe": "Powiadom mnie, gdy mój język będzie potrzebował uaktualnienia",
"translationNoUpdateNeededText": "Obecnie używany język jest aktualny; ekstra!",
"translationUpdateNeededText": "** obecnie używany język wymaga jego zaktualizowania! **",
"translationUpdateNeededText": "** Obecnie używany język wymaga jego zaktualizowania! **",
"vrTestingText": "Testowanie VR"
},
"shareText": "Udostępnij",
@ -1361,6 +1371,9 @@
"signInWithGameCenterText": "By użyć konta Game Center\nzapisz się aplikacją Game Center.",
"singleGamePlaylistNameText": "Tylko ${GAME}",
"singlePlayerCountText": "1 gracz",
"sizeLargeText": "Duży",
"sizeMediumText": "Średni",
"sizeSmallText": "Mały",
"soloNameFilterText": "Solówka ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Wybór postaci",
@ -1914,6 +1927,7 @@
"toSkipPressAnythingText": "(stuknij lub naciśnij cokolwiek, aby pominąć samouczek)"
},
"twoKillText": "PODWÓJNE ZABÓJSTWO!",
"uiScaleText": "Skala interfejsu",
"unavailableText": "niedostępne",
"unconfiguredControllerDetectedText": "Wykryto nieskonfigurowany kontroler:",
"unlockThisInTheStoreText": "To musi zostać odblokowane w sklepie.",
@ -1927,6 +1941,8 @@
"upgradeText": "Ulepsz",
"upgradeToPlayText": "Aby zagrać, odblokuj grę w wersji \"${PRO}\".",
"useDefaultText": "Użyj domyślnych",
"userSystemScriptsCreateText": "Utwórz skrypty systemowe użytkownika",
"userSystemScriptsDeleteText": "Usuń skrypty systemowe użytkownika",
"usesExternalControllerText": "Ta gra wykorzystuje zewnętrzny kontroler jako wejście.",
"usingItunesText": "Korzystanie z aplikacji muzycznej jako ścieżki dźwiękowej...",
"usingItunesTurnRepeatAndShuffleOnText": "Upewnij się, że w ustawieniach iTunes tasowanie utworów i powtarzanie całości jest włączone.",
@ -1944,7 +1960,7 @@
"waitingForLocalPlayersText": "Oczekiwanie na lokalnych graczy...",
"waitingForPlayersText": "oczekiwanie na dołączenie graczy...",
"waitingInLineText": "Czekanie w kolejce (impreza pełna)...",
"watchAVideoText": "Zobacz Filmik",
"watchAVideoText": "Obejrzyj filmik",
"watchAnAdText": "Obejrzyj reklamę",
"watchWindow": {
"deleteConfirmText": "Usunąć \"${REPLAY}\"?",

View file

@ -26,6 +26,7 @@
"setAccountNameDesc": "Escolha o nome que será exibido na sua conta.\nVocê pode usar o nome de uma de suas contas\nou criar um nome personalizado exclusivo.",
"signInInfoText": "Inicie sessão para ganhar bilhetes, compita online e compartilhe\no seu progresso entre vários dispositivos.",
"signInText": "Iniciar sessão",
"signInWithAnEmailAddressText": "Faça login com um endereço de e-mail",
"signInWithDeviceInfoText": "(uma conta automática disponível apenas neste aparelho)",
"signInWithDeviceText": "Iniciar sessão com conta do dispositivo",
"signInWithGameCircleText": "Iniciar sessão com Game Circle",
@ -428,11 +429,11 @@
"pressAnyButtonText": "Aperte qualquer botão...",
"pressLeftRightText": "Aperte esquerda ou direita...",
"pressUpDownText": "Aperte cima ou baixo...",
"runButton1Text": "Executar botão 1",
"runButton2Text": "Executar botão 2",
"runTrigger1Text": "Executar gatilho 1",
"runTrigger2Text": "Executar gatilho 2",
"runTriggerDescriptionText": "(os gatilhos o permitem correr em diferentes velocidades)",
"runButton1Text": "Correr Botão 1",
"runButton2Text": "Correr Botão 2",
"runTrigger1Text": "Correr Gatilho 1",
"runTrigger2Text": "Correr Gatilho 2",
"runTriggerDescriptionText": "(os gatilhos analogicos o permitem correr em diferentes velocidades)",
"secondHalfText": "Use isto para configurar a segunda metade\nde um controle que funciona\ncomo 2-em-1.",
"secondaryEnableText": "Ativar",
"secondaryText": "Controle secundário",
@ -582,6 +583,7 @@
"demoText": "Teste",
"denyText": "Recusar",
"deprecatedText": "Descontinuado",
"descriptionText": "Descrição",
"desktopResText": "Resolução da área de trabalho",
"deviceAccountUpgradeText": "Aviso:\nVocê está logado com a conta do seu dispositivo\n(${NAME}).\nContas de dispositivo serão removidas em uma atualização futura.",
"difficultyEasyText": "Fácil",
@ -629,6 +631,7 @@
"localProfileText": "(perfil local)",
"nameDescriptionText": "Nome do jogador",
"nameText": "Nome",
"profileAlreadyExistsText": "Um perfil com este nome já existe.",
"randomText": "aleatório",
"titleEditText": "Editar perfil",
"titleNewText": "Novo perfil",
@ -716,6 +719,8 @@
"editText": "Editar\nPlaylist",
"gameListText": "Lista de Games",
"newText": "Nova\nPlaylist",
"pointsToWinText": "Pontos para ganhar",
"seriesLengthText": "Tamanho da série",
"showTutorialText": "Mostrar Tutorial",
"shuffleGameOrderText": "Ordem de partida aleatória",
"titleText": "Personalizar playlists de ${TYPE}"
@ -755,10 +760,10 @@
"friendHasSentPromoCodeText": "${COUNT} bilhetes do ${APP_NAME} mandados por ${NAME}",
"friendPromoCodeAwardText": "Você ganhará ${COUNT} bilhetes toda vez que for usado.",
"friendPromoCodeExpireText": "O código expira em ${EXPIRE_HOURS} horas e só funcionará para novos jogadores.",
"friendPromoCodeInstructionsText": "Para usar, abra ${APP_NAME} e vá até \"Configurações-> Avançado-> Inserir código\".\nVeja bombsquadgame.com para os links de download para todas as plataformas disponíveis.",
"friendPromoCodeInstructionsText": "Para usar, abra ${APP_NAME} e vá até \"Configurações-> Avançaodo-> Inserir código\". \nVeja bombsquadgame.com para os download de links para todas as plataformas disponíveis.",
"friendPromoCodeRedeemLongText": "Pode ser resgatado por ${COUNT} bilhetes gratuitos por até ${MAX_USES} pessoas.",
"friendPromoCodeRedeemShortText": "Pode ser resgatado por ${COUNT} bilhetes no jogo.",
"friendPromoCodeWhereToEnterText": "(em \"Configurações-> Avançado-> Inserir código\")",
"friendPromoCodeWhereToEnterText": "(em \"Configuração -> Avançado -> Inserir código\")",
"getFriendInviteCodeText": "Obter código de convite",
"googlePlayDescriptionText": "Convidar jogadores do Google Play para a sua sala:",
"googlePlayInviteText": "Convidar",
@ -1328,6 +1333,7 @@
},
"scoreWasText": "(foi ${COUNT})",
"selectText": "Selecionar",
"sendInfoDescriptionText": "Envia a informação sua conta e estado de aplicativo para o desenvolvedor.\nPor favor incluir seu nome ou razão para mandar.",
"seriesWinLine1PlayerText": "VENCEU A",
"seriesWinLine1Scale": 0.65,
"seriesWinLine1TeamText": "VENCEU A",
@ -1349,27 +1355,31 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(um teclado simples para edição de texto)",
"alwaysUseInternalKeyboardText": "Sempre usar o teclado interno",
"alwaysUseInternalKeyboardText": "Sempre Usar O Teclado Interno",
"benchmarksText": "Testes de desempenho",
"disableCameraGyroscopeMotionText": "Desativar o movimento do giroscópio da câmera",
"disableCameraShakeText": "Desabilitar o shake da câmera",
"devToolsText": "Ferramentas de Desenvolvimento",
"disableCameraGyroscopeMotionText": "Desativar Movimento Giroscópio da Câmera",
"disableCameraShakeText": "Desativar Tremida da câmera",
"disableThisNotice": "(você pode desativar este aviso em configurações avançadas)",
"enablePackageModsDescriptionText": "(ativa habilidades de modificação do jogo mas desabilita jogos em LAN)",
"enablePackageModsText": "Ativar modificações locais do jogo",
"enterPromoCodeText": "Inserir código",
"forTestingText": "Nota: esses valores são somente para teste e serão perdidos assim que o aplicativo for fechado.",
"helpTranslateText": "As traduções do ${APP_NAME} são sustentadas pelo\nesforço público. Se você gostaria de ajudar ou corrigir\numa tradução, siga o link a seguir. Agradeço desde já!",
"kickIdlePlayersText": "Expulsar jogadores ausentes",
"kickIdlePlayersText": "Expulsar Jogadores Ausentes",
"kidFriendlyModeText": "Modo para crianças (violência reduzida, etc)",
"languageText": "Idioma",
"moddingGuideText": "Guia de modificação",
"moddingToolsText": "Ferramentas Para Mods",
"mustRestartText": "Você deve reiniciar o jogo para a modificação ter efeito.",
"netTestingText": "Teste de conexão",
"resetText": "Redefinir",
"sendInfoText": "Enviar Informação",
"showBombTrajectoriesText": "Mostrar trajetórias da bomba",
"showDemosWhenIdleText": "Mostrar demonstrações quando ocioso",
"showDemosWhenIdleText": "Mostrar Demonstrações Quando ocioso",
"showDeprecatedLoginTypesText": "Mostrar tipos de logins ultrapassados",
"showDevConsoleButtonText": "Mostrar console de desenvolvedor",
"showInGamePingText": "Mostrar latência no jogo",
"showInGamePingText": "Mostrar Latência no jogo",
"showPlayerNamesText": "Mostrar nomes dos jogadores",
"showUserModsText": "Mostrar Pasta de Modificações",
"titleText": "Avançado",
@ -1378,7 +1388,7 @@
"translationFetchingStatusText": "verificando estado da tradução...",
"translationInformMe": "Informe quando meu idioma precisar de atualizações",
"translationNoUpdateNeededText": "o idioma atual está atualizado; woohoo!",
"translationUpdateNeededText": "** o idioma atual precisa de atualizações!! **",
"translationUpdateNeededText": "** o idioma atual necessita de atualizações!! **",
"vrTestingText": "Teste de RV"
},
"shareText": "Compartilhar",
@ -1388,6 +1398,9 @@
"signInWithGameCenterText": "Para usar uma conta Game Center,\ninicie a sessão com o aplicativo Game Center.",
"singleGamePlaylistNameText": "Somente ${GAME}",
"singlePlayerCountText": "1 jogador",
"sizeLargeText": "Grande",
"sizeMediumText": "Médio",
"sizeSmallText": "Pequeno",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Seleção do personagem",
@ -1942,6 +1955,7 @@
"toSkipPressAnythingText": "(pressione qualquer coisa para pular o tutorial)"
},
"twoKillText": "MATOU DOIS!",
"uiScaleText": "Tamanho da Interface",
"unavailableText": "indisponível",
"unconfiguredControllerDetectedText": "Controle não configurado detectado:",
"unlockThisInTheStoreText": "Isto deve ser desbloqueado na loja.",
@ -1955,6 +1969,8 @@
"upgradeText": "Melhorar",
"upgradeToPlayText": "Atualize para \"${PRO}\" na loja para jogar.",
"useDefaultText": "Usar padrão",
"userSystemScriptsCreateText": "Criar Scripts do Sistema do Usuário",
"userSystemScriptsDeleteText": "Deletar Scripts do Sistema do Usuário",
"usesExternalControllerText": "Este jogo usa um controle externo para entrada.",
"usingItunesText": "Usando o app de música para a trilha sonora",
"usingItunesTurnRepeatAndShuffleOnText": "Por favor, certifique-se de que o aleatório esteja ligado e que a repetição seja TODAS AS MÚSICAS no iTunes.",

View file

@ -1878,7 +1878,7 @@
"xbox360ControllersWindow": {
"getDriverText": "Instalează Driver-ul.",
"macInstructions2Text": "Pentru a folosi controllerele fără fir, vei avea nevoie de un receptor\ncare vine cu pachetul 'Xbox 360 Wireless Controller for Windows'.\nFiecare receptor te lasă să conectezi până la 4 controllere.\n\nImportant: Receptoare de tip 3rd-party nu vor funcționa cu acest driver;\nAsigură-te că pe receptor scrie 'Microsoft', nu 'XBOX 360'.\nMicrosoft nu mai le vinde separat, deci va trebui să iei unul\nîmpreună cu controllerul sau de pe un site, cum ar fi Ebay.\n\nDacă ai găsit acest mesaj folositor, consideră faptul să-i donezi programatorului\ndriverului pe site-ul lui.",
"macInstructionsText": "Pentru a folosi controllere de Xbox 360, va trebui să instalezi \ndriver-ul pentru Mac disponibil din link-ul de mai jos. \nFuncționează pentru controalele cu/fără fir.",
"macInstructionsText": "Pentru a folosi controllere de Xbox 360, va trebui să instalezi \ndriver-ul pentru Mac disponibil din link-ul de mai jos. \nFuncționează pentru controalele cu/fără fir. ",
"ouyaInstructionsText": "Pentru a folosi controllere de Xbox 360 cu fir, pur și simplu\nconectează-le la un port USB. Poți folosi un USB-hub pentru a\nconecta mai multe controllere.\n\nPentru a folosi controllere fără fir vei avea nevoie de un receptor\nwireless, valabil ca parte a pachetului \"Xbox 360 wireless controller\nfor Windows\" sau vândut separat. Fiecare receptor intră într-un port\nUSB și te lasă să conectezi până la 4 controllere.",
"titleText": "Se folosesc controllere de Xbox 360 cu ${APP_NAME}:"
},

View file

@ -7,9 +7,9 @@
"campaignProgressText": "Прогресс кампании [Сложный режим]: ${PROGRESS}",
"changeOncePerSeason": "Вы можете изменить это только раз в сезон.",
"changeOncePerSeasonError": "Вы должны подождать до следующего сезона, чтобы изменить это снова (${NUM} дней)",
"customName": "имя пользователя",
"customName": "Имя пользователя",
"deviceSpecificAccountText": "Сейчас используется аккаунт имениустройства: ${NAME}",
"googlePlayGamesAccountSwitchText": "Если хотите сменить внутриигровой аккаунт Google, используйте приложение Google Play.",
"googlePlayGamesAccountSwitchText": "Если хотите сменить внутриигровой аккаунт Google,\nиспользуйте приложение Google Play.",
"linkAccountsEnterCodeText": "Введите код",
"linkAccountsGenerateCodeText": "Сгенерировать код",
"linkAccountsInfoText": "(поделитесь достижениями с другими платформами)",
@ -27,6 +27,7 @@
"setAccountNameDesc": "Выберите имя для отображения своего аккаунта.\nВы можете использовать имя одного из ваших связанных аккаунтов или создать уникальное имя аккаунта.",
"signInInfoText": "Войдите в аккаунт, чтобы собирать билеты, \nсоревноваться онлайн и делиться успехами.",
"signInText": "Войти",
"signInWithAnEmailAddressText": "Войти через электронную почту",
"signInWithDeviceInfoText": "(стандартный аккаунт только для этого устройства)",
"signInWithDeviceText": "Войти через аккаунт устройства",
"signInWithGameCircleText": "Войти через Game Circle",
@ -128,7 +129,7 @@
},
"Mine Games": {
"description": "Убейте 3 плохих парней с помощью мин",
"descriptionComplete": "С помощью мин убито 3 плохих парней",
"descriptionComplete": "С помощью мин убита тройка плохих парней",
"descriptionFull": "Убейте 3 негодяев с помощью мин на уровне ${LEVEL}",
"descriptionFullComplete": "С помощью мин убито 3 негодяя на уровне ${LEVEL}",
"name": "Игры с минами"
@ -138,7 +139,7 @@
"descriptionComplete": "С карты сброшено 3 плохих парней",
"descriptionFull": "Сбросьте 3 плохих парней с карты на уровне ${LEVEL}",
"descriptionFullComplete": "3 плохих парней сброшено с карты на уровне ${LEVEL}",
"name": "Пора учится летать"
"name": "Пора учится летать!"
},
"Onslaught God": {
"description": "Наберите 5000 очков",
@ -187,7 +188,7 @@
"descriptionComplete": "Уровень был пройден всухую",
"descriptionFull": "Выиграйте матч ${LEVEL} всухую",
"descriptionFullComplete": "Победа в матче ${LEVEL} всухую",
"name": "${LEVEL} всухую"
"name": "${LEVEL} Всухую"
},
"Pro Football Victory": {
"description": "Выиграйте матч",
@ -198,7 +199,7 @@
},
"Pro Onslaught Victory": {
"description": "Победите все волны",
"descriptionComplete": "Пройдены все волны",
"descriptionComplete": "Все волны пройдены!",
"descriptionFull": "Победите все волны на уровне ${LEVEL}",
"descriptionFullComplete": "Пройдены все волны на ${LEVEL}",
"name": "Победа на уровне ${LEVEL}"
@ -219,7 +220,7 @@
},
"Rookie Football Victory": {
"description": "Выиграйте матч",
"descriptionComplete": "Матч пройден в вашу пользу",
"descriptionComplete": "Вы одержали победу в матче!",
"descriptionFull": "Выиграйте матч ${LEVEL}",
"descriptionFullComplete": "Выигран матч ${LEVEL}",
"name": "Победа в матче ${LEVEL}"
@ -305,7 +306,7 @@
"name": "Стена"
},
"Uber Football Shutout": {
"description": "Выиграйте в сухую",
"description": "Выиграйте всухую",
"descriptionComplete": "Победа в сухую",
"descriptionFull": "Выиграйте матч ${LEVEL} в сухую",
"descriptionFullComplete": "Победа в матче ${LEVEL} в сухую",
@ -523,7 +524,7 @@
},
"copyConfirmText": "Скопировано в буфер обмена",
"copyOfText": "Копия ${NAME}",
"copyText": "Копировать",
"copyText": "Скопировать",
"copyrightText": "© 2013 Eric Froemling",
"createAPlayerProfileText": "Создать профиль игрока?",
"createEditPlayerText": "<Создание / редактирование игрока>",
@ -576,6 +577,7 @@
"demoText": "Демонстрация",
"denyText": "Отклонить",
"deprecatedText": "Устарело>=",
"descriptionText": "Описание",
"desktopResText": "Разреш. экрана",
"deviceAccountUpgradeText": "Внимание!\nВы заригестрированы как (${NAME})!\nДанный аккаунт будет удален в следующем обновлении!\nОбновите его до аккаунта Google Play, если не хотите потерять прогресс!",
"difficultyEasyText": "Легкий",
@ -623,6 +625,7 @@
"localProfileText": "(локальный профиль)",
"nameDescriptionText": "Имя игрока",
"nameText": "Имя",
"profileAlreadyExistsText": "Профиль с таким именем уже существует",
"randomText": "случайное",
"titleEditText": "Изменение профиля",
"titleNewText": "Новый профиль",
@ -710,6 +713,8 @@
"editText": "Изменить\nплей-лист",
"gameListText": "Список игр",
"newText": "Новый\nплей-лист",
"pointsToWinText": "Очки до победы",
"seriesLengthText": "Продолжительность сессии",
"showTutorialText": "Показать обучение",
"shuffleGameOrderText": "Смешать порядок игр",
"titleText": "Настроить плей-листы '${TYPE}'"
@ -750,10 +755,10 @@
"friendHasSentPromoCodeText": "${COUNT} ${APP_NAME} билетов от ${NAME}",
"friendPromoCodeAwardText": "Вы получите ${COUNT} билетов за каждую активацию.",
"friendPromoCodeExpireText": "Код действителен в течении ${EXPIRE_HOURS} часов и только для новых игроков.",
"friendPromoCodeInstructionsText": "Для активации в ${APP_NAME} зайдите в\n\"Настройки->Дополнительно->Ввести промо-код\". Перейди на сайт bombsquadgame.com, чтобы скачать версию игры для своей платформы.",
"friendPromoCodeInstructionsText": "Для активации в ${APP_NAME} зайдите в\n\"Настройки->Дополнительно->Прислать информацию\". Перейдите на сайт bombsquadgame.com, чтобы скачать версию игры для своей платформы.",
"friendPromoCodeRedeemLongText": "Каждая активация принесет ${COUNT} билетов до ${MAX_USES} игрокам.",
"friendPromoCodeRedeemShortText": "Он принесет ${COUNT} билетов в игре.",
"friendPromoCodeWhereToEnterText": "(в \"Настройках->Дополнительно->Ввести код\")",
"friendPromoCodeWhereToEnterText": "(в \"Настройках->Дополнительно->Прислать информацию\")",
"getFriendInviteCodeText": "Получить промо-код",
"googlePlayDescriptionText": "Пригласить игроков Google Play в ваше лобби:",
"googlePlayInviteText": "Пригласить",
@ -1309,6 +1314,7 @@
},
"scoreWasText": "(было ${COUNT})",
"selectText": "Выбрать",
"sendInfoDescriptionText": "Отправьте информацию об вашей учётной записи и состоянии приложения непосредственно разработчику.\nПожалуйста, не забудь указать ваше имя и причину отправки.",
"seriesWinLine1PlayerText": "ПОБЕДИЛ В",
"seriesWinLine1TeamText": "ПОБЕДИЛИ В",
"seriesWinLine1Text": "ПОБЕДИЛ В",
@ -1325,27 +1331,31 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(простая, удобная для контроллера виртуальная клавиатура для ввода текста)",
"alwaysUseInternalKeyboardText": "Всегда использовать встроенную клавиатуру",
"alwaysUseInternalKeyboardText": "Всегда использовать ТОЛЬКО встроенную (внутреннюю) клавиатуру. Удобно если клавиатура др. приложений лагает.",
"benchmarksText": "Тест производительности и тест-нагрузка",
"disableCameraGyroscopeMotionText": "Отключить движение камеры с помощью гироскопа",
"disableCameraShakeText": "Отключить тряску камеры",
"devToolsText": "Инструменты разработчиков",
"disableCameraGyroscopeMotionText": "Убрать тряску и движение камеры при помощи гироскопа",
"disableCameraShakeText": "Отключить эффект трясущейся камеры.",
"disableThisNotice": "(вы можете отключить это уведомление в настройках)",
"enablePackageModsDescriptionText": "(позволяет дополнительные возможности для моддинга, но отключает сетевую игру)",
"enablePackageModsText": "Включить моды локального пакета",
"enterPromoCodeText": "Введите промо-код",
"forTestingText": "Примечание: эти значения используются только для тестирования и будут потеряны, когда приложение завершит работу.",
"helpTranslateText": "Переводы игры ${APP_NAME} с английского совершён общественными\nусилиями. Если вы хотите предложить или исправить\nперевод, следуйте по ссылке ниже. Заранее спасибо!",
"kickIdlePlayersText": "Выкидывать бездействующих игроков",
"kickIdlePlayersText": "Включите, чтобы выкидывать игроков ушедших в статус \"AFK\".",
"kidFriendlyModeText": "Семейный режим (меньше насилия, и т.д.)",
"languageText": "Язык",
"moddingGuideText": "Руководство по моддингу",
"moddingToolsText": "Настройки модов",
"mustRestartText": "Необходимо перезапустить игру, чтобы изменения вступили в силу.",
"netTestingText": "Тестирование сети",
"resetText": "Сбросить",
"sendInfoText": "Отослать информацию (обратная связь с разработчиком).",
"showBombTrajectoriesText": "Показывать траекторию бомбы",
"showDemosWhenIdleText": "Показывать демоверсии в режиме ожидания",
"showDevConsoleButtonText": "Показать кнопку консоли",
"showInGamePingText": "Показать Ping",
"showDemosWhenIdleText": "Показать Демо-Версию в режиме ожидания.",
"showDeprecatedLoginTypesText": "Показывать устаревшие типы входа в систему",
"showDevConsoleButtonText": "Показать кнопку консоли (для разработчика).",
"showInGamePingText": "Показать пинг (Задержку действий на сервере).",
"showPlayerNamesText": "Показывать имена игроков",
"showUserModsText": "Показать папку модов",
"titleText": "Дополнительно",
@ -1353,8 +1363,8 @@
"translationFetchErrorText": "статус перевода недоступен",
"translationFetchingStatusText": "проверка статуса перевода...",
"translationInformMe": "Сообщите мне, если мой язык нуждается в обновлениях",
"translationNoUpdateNeededText": "данный язык полностью обновлен, ура!",
"translationUpdateNeededText": "** данный язык нуждается в обновлениях!! **",
"translationNoUpdateNeededText": "Данный язык полностью обновлен, Ееее-Юху!)",
"translationUpdateNeededText": "** Установленный язык требует обновлений!!!**",
"vrTestingText": "Тестирование VR"
},
"shareText": "Поделиться",
@ -1364,6 +1374,9 @@
"signInWithGameCenterText": "Чтобы использовать аккаунт GameCenter,\nвойдите через GameCenter.",
"singleGamePlaylistNameText": "Просто ${GAME}",
"singlePlayerCountText": "1 игрок",
"sizeLargeText": "Гигантский",
"sizeMediumText": "Средний",
"sizeSmallText": "Крошечный",
"soloNameFilterText": "${NAME} соло",
"soundtrackTypeNames": {
"CharSelect": "Выбор персонажа",
@ -1918,6 +1931,7 @@
"toSkipPressAnythingText": "(коснитесь или нажмите что-нибудь чтобы пропустить тьюториал)"
},
"twoKillText": "ДВОИХ ЗА РАЗ!",
"uiScaleText": "Размер UI",
"unavailableText": "недоступно",
"unconfiguredControllerDetectedText": "Обнаружен ненастроенный геймпад:",
"unlockThisInTheStoreText": "Это должно быть разблокировано в магазине.",
@ -1931,6 +1945,8 @@
"upgradeText": "Обновление",
"upgradeToPlayText": "Разблокируйте \"${PRO}\" в магазине что-бы играть в это.",
"useDefaultText": "Использовать стандартные",
"userSystemScriptsCreateText": "Создать Свои Скрипты",
"userSystemScriptsDeleteText": "Стереть Свои Скрипты",
"usesExternalControllerText": "Эта игра может использовать внешний контроллер для управления.",
"usingItunesText": "Использование музыкального приложения для саундтрека...",
"usingItunesTurnRepeatAndShuffleOnText": "Убедитесь, что в iTunes включен случайный порядок, и повтор установлен на 'все'.",

View file

@ -32,6 +32,7 @@
"signInWithGooglePlayText": "Príhlásit sa s Google Play",
"signInWithTestAccountInfoText": "(starý typ účtu; v budúcnosti používajte účty zariadení)",
"signInWithTestAccountText": "Prihlásit sa s testovacím účtom",
"signInWithText": "Prihlás sa s ${SERVICE}",
"signInWithV2InfoText": "(účet, ktorý funguje na všetkých platformách)",
"signInWithV2Text": "Prihláste sa pomocou účtu BombSquad",
"signOutText": "Odhlasujem",
@ -338,6 +339,8 @@
"getMoreGamesText": "Viac Hier...",
"titleText": "Pridať Hru"
},
"addToFavoritesText": "Pridať do Obľúbených",
"addedToFavoritesText": "'${NAME}' pridané do Obľúbených.",
"allText": "Všetko",
"allowText": "Povol",
"alreadySignedInText": "Tvoj účet je prihlásený z iného zariadenia;\nprosím prepni si účty alebo ukonči hru na\ntvojich ostatných zariadeniach a skús to znovu.",
@ -371,6 +374,7 @@
"chatMutedText": "Čet Zablokovaný",
"chatUnMuteText": "Odblokovať Čet",
"choosingPlayerText": "<prebieha vyberanie postavy>",
"codesExplainText": "Kódy sú poskytované vývojárovi \nk diagnostike a oprave problémov s účtom.",
"completeThisLevelToProceedText": "Musíš dokončiť\ntento level pre postup!",
"completionBonusText": "Bonus za Dokončenie",
"configControllersWindow": {
@ -451,6 +455,7 @@
"swipeText": "posúvanie",
"titleText": "Konfigurovať Obrazovku"
},
"configureDeviceInSystemSettingsText": "${DEVICE} možno nakonfigurovať v systémových nastaveniach aplikácie.",
"configureItNowText": "Konfigurovať teraz?",
"configureText": "Konfigurovať",
"connectMobileDevicesWindow": {
@ -563,6 +568,9 @@
"disableRemoteAppConnectionsText": "Zakázať Remote-App Pripojenia",
"disableXInputDescriptionText": "Povolí viac ako 4 ovládače ale nemusí fungovať dobre.",
"disableXInputText": "Zakázať XInput",
"disabledText": "Vypnuté",
"discordFriendsText": "Chcete nájsť nových ľudí na hranie?\nPripojte sa na náš Discord a nájdite nových priateľov!",
"discordJoinText": "Pripojiť na Diskord",
"doneText": "Hotovo",
"drawText": "Remíza",
"duplicateText": "Duplikovať",
@ -595,6 +603,7 @@
"localProfileText": "(lokálny profil)",
"nameDescriptionText": "Meno Hráča",
"nameText": "Meno",
"profileAlreadyExistsText": "Profil s týmto menom už existuje.",
"randomText": "náhodne",
"titleEditText": "Upraviť Profil",
"titleNewText": "Nový Profil",
@ -630,6 +639,7 @@
"useMusicFolderText": "Zložka Súborov Hudby"
},
"editText": "Upraviť",
"enabledText": "Povolené",
"endText": "Ukončiť",
"enjoyText": "Užite si to!",
"epicDescriptionFilterText": "${DESCRIPTION} Spomalene.",
@ -675,6 +685,8 @@
"duplicateText": "Duplikovať\nPlaylist",
"editText": "Upraviť\nPlaylist",
"newText": "Nový\nPlaylist",
"pointsToWinText": "Body ku výhre",
"seriesLengthText": "Dĺžka Série",
"showTutorialText": "Ukázať Tutoriál",
"shuffleGameOrderText": "Náhodné Poradie Hier",
"titleText": "Upraviť ${TYPE} Playlisty"
@ -747,6 +759,7 @@
"manualYourLocalAddressText": "Tvoja lokálna adresa:",
"nearbyText": "Neďaleko",
"noConnectionText": "<žiadne pripojenie>",
"noPartiesAddedText": "Žiadne Párty nie sú pridané",
"otherVersionsText": "(ostatné verzie)",
"partyCodeText": "Párty kód",
"partyInviteAcceptText": "Potvrdiť",
@ -818,10 +831,12 @@
"alwaysText": "Stále",
"fullScreenCmdText": "Celá Obrazovka (Cmd+F)",
"fullScreenCtrlText": "Celá Obrazovka (Ctrl+F)",
"fullScreenText": "Na celú obrazovku",
"gammaText": "Gamma",
"highText": "Vysoko",
"higherText": "Vyššie",
"lowText": "Nízko",
"maxFPSText": "Maximálny počet FPS",
"mediumText": "Stredne",
"neverText": "Nikdy",
"resolutionText": "Rozlíšenie",
@ -1059,7 +1074,9 @@
"noContinuesText": "(žiadne pokračovania)",
"noExternalStorageErrorText": "Žiadne úložisko sa v tomto zariadení nenašlo",
"noGameCircleText": "Error: nie si prihlásený do GameCircle",
"noPluginsInstalledText": "Žiadne nainštalované doplnky",
"noScoresYetText": "Zatiaľ žiadne skóre.",
"noServersFoundText": "Nenašiel sa žiadny server.",
"noThanksText": "Nie Vďaka",
"noTournamentsInTestBuildText": "UPOZORNENIE: Výsledky turnajov z tejto testovacej zostavy budú ignorované.",
"noValidMapsErrorText": "Žiadne platné mapy sa pre tento typ hry nenašli.",
@ -1224,6 +1241,8 @@
"runText": "Bežať",
"saveText": "Uložiť",
"scanScriptsErrorText": "Chyba pri skenovaní skriptov. Pozri zápis pre detaily.",
"scanScriptsMultipleModulesNeedUpdatesText": "${PATH} a ${NUM} ďalšie moduly je potrebné aktualizovať pre api ${API}.",
"scanScriptsSingleModuleNeedsUpdatesText": "${PATH} je potrebné aktualizovať pre api ${API}.",
"scoreChallengesText": "Challenge pre Skóre",
"scoreListUnavailableText": "List pre skóre je nedostupné.",
"scoreText": "Skóre",
@ -1267,6 +1286,8 @@
"netTestingText": "Testovanie Internetu",
"resetText": "Resetovať",
"showBombTrajectoriesText": "Ukázovať Trajektóriu Bomby",
"showDemosWhenIdleText": "Zobraziť Ukážky Pri Nečinnosti",
"showDevConsoleButtonText": "Zobraziť Tlačidlo Konzoly Zariadenia",
"showInGamePingText": "Ukázať Ping v Hre",
"showPlayerNamesText": "Ukazovať Mená Hráčov",
"showUserModsText": "Ukázať Zložku pre Módy",
@ -1286,6 +1307,9 @@
"signInWithGameCenterText": "Ak chceš použiť GameCircle účet,\nprihlás sa s Game Center aplikáciou.",
"singleGamePlaylistNameText": "Len ${GAME}",
"singlePlayerCountText": "1 hráč",
"sizeLargeText": "Velké",
"sizeMediumText": "Stredné",
"sizeSmallText": "Malé",
"soloNameFilterText": "Sólo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Výber Charakteru",
@ -1358,6 +1382,8 @@
"storeText": "Obchod",
"submitText": "Poslať",
"submittingPromoCodeText": "Overujem Kód...",
"successText": "Úspech!",
"supportEmailText": "Ak sa vyskytujú nejaké problémy s aplikáciou,\npošlite e-mail na adresu ${EMAIL}.",
"teamNamesColorText": "Mená/Farby tímov",
"telnetAccessGrantedText": "Telnet povolené.",
"telnetAccessText": "Telnet detekovaný; povoliť?",
@ -1811,6 +1837,7 @@
"unlockThisInTheStoreText": "Toto musí byť odomknuté v obchode.",
"unlockThisProfilesText": "Ak chceš vytvoriť viac ako ${NUM} profilov, potrebuješ:",
"unlockThisText": "Ak chceš toto odomknúť, potrebuješ:",
"unsupportedControllerText": "Je nám ľúto, ovládač \"${NAME}\" nie je podporovaný.",
"unsupportedHardwareText": "Prepáč, tento hardware nie je podporovaný pre túto verziu hry.",
"upFirstText": "Ako prvé ide:",
"upNextText": "Ďalej v hre ${COUNT}:",
@ -1822,6 +1849,7 @@
"usingItunesText": "Používam Music App ako soundtrack...",
"v2AccountLinkingInfoText": "Na prepojenie V2 účtov, použi tlačidlo 'Spravovať Účet'.",
"validatingTestBuildText": "Overujem Testovaciu Verziu...",
"viaText": "ako",
"victoryText": "Výhra!",
"voteDelayText": "Nemôžeš začať ďalšie hlasovanie v podobe ${NUMBER} sekúnd",
"voteInProgressText": "Hlasovanie už prebieha.",

View file

@ -1,6 +1,6 @@
{
"accountSettingsWindow": {
"accountNameRules": "Los nombres de cuentas no pueden contener emojis u otros caracteres especiales",
"accountNameRules": "Los nombres de cuentas no pueden contener emojis o otros caracteres especiales",
"accountProfileText": "(Perfil de la cuenta)",
"accountsText": "Cuentas",
"achievementProgressText": "Logros: ${COUNT} de ${TOTAL}",
@ -27,6 +27,7 @@
"setAccountNameDesc": "Selecciona el nombre a mostrar para tu cuenta. \nPuedes usar el nombre de tu cuenta asociada\no crear un nombre personalizado.",
"signInInfoText": "Inicia sesión para obtener boletos, competir en línea\ny compartir tu progreso a través de plataformas.",
"signInText": "Iniciar Sesión",
"signInWithAnEmailAddressText": "Iniciar sesión con una dirección de correo electrónico",
"signInWithDeviceInfoText": "(una cuenta automática disponible únicamente en este dispositivo)",
"signInWithDeviceText": "Iniciar sesión con cuenta del dispositivo",
"signInWithGameCircleText": "Iniciar sesión con Game Circle",
@ -473,7 +474,7 @@
"amazonText": "Appstore de Amazon",
"appStoreText": "App Store",
"bestResultsScale": 0.65,
"bestResultsText": "Para mejores resultados necesitas una red inalámbrica rápida. Puedes\nreducir el retraso wifi apagando otros dispositivos inalámbricos,\njugando cerca de tu router inalámbrico, y conectando el\njuego anfitrión directamente a la red a través del cable Ethernet.",
"bestResultsText": "Para mejores resultados necesitas una red inalámbrica rápida. Puedes\nreducir el retraso wifi apagando otros dispositivos inalámbricos,\njugando cerca de tu router inalámbrico y conectando el\njuego anfitrión directamente a la red a través del cable Ethernet.",
"explanationScale": 0.8,
"explanationText": "Para utilizar tus dispositivos móviles como controles, \ninstala la app \"${REMOTE_APP_NAME}\" en ellos. Conecta todos\ntus dispositivos con ${APP_NAME} a través de tu red Wi-fi, ¡es gratis!.",
"forAndroidText": "para Android:",
@ -520,8 +521,8 @@
"toRankedText": "Para Clasificar",
"totalText": "total",
"tournamentInfoText": "Compite por puntajes altos con\notros jugadores en tu liga.\n\nLos premios los obtienen los jugadores\ncon mejor puntaje al acabarse el torneo.",
"welcome1Text": "Bienvenido/a a ${LEAGUE}. Puedes mejorar tu\nposición en la liga ganando estrellas, completando\nlogros, y ganando trofeos en desafíos.",
"welcome2Text": "También puedes ganar boletos desde varias actividades similares.\nLos boletos pueden ser usados para desbloquear nuevos personajes,\nmapas y mini juegos, entrar a torneos, y más.",
"welcome1Text": "Bienvenido/a a ${LEAGUE}. Puedes mejorar tu\nposición en la liga ganando estrellas, completando\nlogros y ganando trofeos en desafíos.",
"welcome2Text": "También puedes ganar boletos desde varias actividades similares.\nLos boletos pueden ser usados para desbloquear nuevos personajes,\nmapas y mini juegos, entrar a torneos y más.",
"yourPowerRankingText": "Tu Clasificación de Poder:"
},
"copyConfirmText": "Copiado al portapapeles.",
@ -578,6 +579,7 @@
"demoText": "Demo",
"denyText": "Denegar",
"deprecatedText": "Obsoleto",
"descriptionText": "Descripción",
"desktopResText": "Resolución De Escritorio",
"deviceAccountUpgradeText": "Advertencia:\nIniciaste sesión con una cuenta de dispositivo (${NAME}).\nLas cuentas de dispositivo serán removidas en una futura actualización.\nActualiza a una cuenta V2 si quieres conservar tu progreso.",
"difficultyEasyText": "Fácil",
@ -625,6 +627,7 @@
"localProfileText": "(perfil local)",
"nameDescriptionText": "Nombre Del Jugador",
"nameText": "Nombre",
"profileAlreadyExistsText": "Ya existe un perfil con ese nombre",
"randomText": "aleatorio",
"titleEditText": "Editar Perfil",
"titleNewText": "Nuevo Perfil",
@ -711,6 +714,8 @@
"editText": "Editar\nPlaylist",
"gameListText": "Lista de juego",
"newText": "Nueva\nPlaylist",
"pointsToWinText": "Puntos para Ganar",
"seriesLengthText": "Duración de la Serie",
"showTutorialText": "Ver Tutorial",
"shuffleGameOrderText": "Orden de Juego Aleatorio",
"titleText": "Personalizar Playlists de ${TYPE}"
@ -751,10 +756,10 @@
"friendHasSentPromoCodeText": "Recibiste ${COUNT} boletos de ${APP_NAME} de ${NAME}",
"friendPromoCodeAwardText": "Recibirás ${COUNT} boletos cada vez que lo uses.",
"friendPromoCodeExpireText": "El código expirará en ${EXPIRE_HOURS} horas y solo funciona para jugadores nuevos.",
"friendPromoCodeInstructionsText": "Para usarlo, abre ${APP_NAME} y ve a \"Ajustes->Avanzado->Ingresar Código\"\nVisita bombsquadgame.com para enlaces de descarga de todas las plataformas disponibles.",
"friendPromoCodeInstructionsText": "Para usarlo, abre ${APP_NAME} y ve a \"Ajustes->Avanzado->Ingresar Código\"\nVisita bombsquadgame.com para enlaces de descarga de todas las plataformas disponibles",
"friendPromoCodeRedeemLongText": "Se puede canjear por ${COUNT} boletos gratis hasta ${MAX_USES} personas.",
"friendPromoCodeRedeemShortText": "Puede ser canjeado por ${COUNT} boletos en el juego.",
"friendPromoCodeWhereToEnterText": "(en \"Ajustes->Avanzado->Ingresar Código\")",
"friendPromoCodeWhereToEnterText": "39739117",
"getFriendInviteCodeText": "Obtener Código De Invitación De Amigo",
"googlePlayDescriptionText": "Invitar jugadores de Google Play a tu partida:",
"googlePlayInviteText": "Invitar",
@ -883,31 +888,31 @@
"visualsText": "Visuales"
},
"helpWindow": {
"bombInfoText": "- Bomba -\nMas fuerte que los golpes, pero puede\nresultar en auto-lesiones bastante graves.\nPara mejores resultados, tírala hacia tus\noponentes antes de que explote.",
"bombInfoText": "- Bomba -\nMás fuerte que los golpes, pero puede\nresultar en autolesiones bastante graves.\nPara mejores resultados, tírala hacia tus\noponentes antes de que explote.",
"bombInfoTextScale": 0.57,
"canHelpText": "${APP_NAME} te puede ayudar.",
"controllersInfoText": "Puedes jugar ${APP_NAME} con tus amigos en una red, o todos pueden\njugar en el mismo dispositivo si se tienen varios controles.\n${APP_NAME} soporta una gran variedad de ellos; incluso puedes utilizar\ntus dispositivos móviles como controles instalando la app '${REMOTE_APP_NAME}'.\nVe a 'Ajustes-> Controles' para más información.",
"controllersInfoText": "Puedes jugar ${APP_NAME} con tus amigos en una red o todos pueden\njugar en el mismo dispositivo si se tienen varios controles.\n${APP_NAME} soporta una gran variedad de ellos; incluso puedes utilizar\ntus dispositivos móviles como controles instalando la app '${REMOTE_APP_NAME}'.\nVe a 'Ajustes-> Controles' para más información.",
"controllersInfoTextFantasia": "Un jugador puede usar el mando a distancia para jugar, pero\nse recomienda usar gamepads. También puedes usar dispositivos\niOS o Android como controles con la app \"BombSquad Remote\".\nRevisa la sección \"Controles\" en los Ajustes para más información.",
"controllersInfoTextMac": "Uno o dos jugadores pueden usar el teclado, pero BombSquad es mejor\ncon controles. BombSquad puede usar controles USB, controles de PS3,\ncontroles de Xbox 360, controles Wii y dispositivos iOS/Android para\ncontrolar los personajes. Espero que tengas algunos de ellos a la mano. \nConsulta 'Controles' bajo 'Ajustes' para más información.",
"controllersInfoTextOuya": "Puedes usar controles OUYA, controles de PS3, controles de Xbox\n360, y muchos de otros controles USB y Bluetooth con BombSquad.\nPuedes usar también dispositivos iOS/Android como controles con la aplicación \n'BombSquad Remote'. Consulta 'Controles' bajo 'Ajustes' para más información.",
"controllersInfoTextRemoteOnly": "Tu puedes jugar ${APP_NAME} con tus amigos en la red, o pueden\njugar todos en el mismo dispositivo usando los teléfonos\ncomo controles libres con la aplicación '${REMOTE_APP_NAME}'",
"controllersInfoTextRemoteOnly": "Tu puedes jugar ${APP_NAME} con tus amigos en la red o pueden\njugar todos en el mismo dispositivo usando los teléfonos\ncomo controles libres con la aplicación '${REMOTE_APP_NAME}'",
"controllersText": "Controles",
"controllersTextScale": 0.67,
"controlsSubtitleText": "Tu amistoso personaje de ${APP_NAME} tiene algunas acciones básicas:",
"controlsSubtitleTextScale": 0.7,
"controlsText": "Controles",
"controlsTextScale": 1.4,
"devicesInfoText": "La version VR de ${APP_NAME} se puede jugar en red con la versión \nregular, así que saca tus celulares, tablets y computadoras extras y que \nempieze el juego. Es muy útil conectar un dispositivo con la versión\nregular a uno con la versión VR para que todos los que esten fuera\npuedan ver la acción.",
"devicesInfoText": "La versión VR de ${APP_NAME} se puede jugar en red con la versión \nregular, así que saca tus celulares, tablets y computadoras extras y que \nempieze el juego. Es muy útil conectar un dispositivo con la versión\nregular a uno con la versión VR para que todos los que estén fuera\npuedan ver la acción.",
"devicesText": "Dispositivos",
"friendsGoodText": "Cuantos más, mejor. ${APP_NAME} es más divertido con muchos \namigos y soporta hasta 8 a la vez, lo que nos lleva a:",
"friendsGoodTextScale": 0.62,
"friendsText": "Amigos",
"friendsTextScale": 0.67,
"jumpInfoText": "- Saltar -\nSalta para cruzar pequeños espacios, \npara tirar cosas más lejos, y \npara expresar sentimientos de alegría.",
"jumpInfoText": "- Saltar -\nSalta para cruzar pequeños espacios, \npara tirar cosas más lejos y \npara expresar sentimientos de alegría.",
"jumpInfoTextScale": 0.6,
"orPunchingSomethingText": "O golpear algo, tirarlo por un precipicio, y explotarlo en plena caída con una bomba pegajosa.",
"orPunchingSomethingText": "O golpear algo, tirarlo por un precipicio y explotarlo en plena caída con una bomba pegajosa.",
"orPunchingSomethingTextScale": 0.51,
"pickUpInfoText": "- Recoger -\nAgarra banderas, enemigos, o cualquier\notra cosa no atornillada al suelo.\nPresiona de nuevo para lanzar.",
"pickUpInfoText": "- Recoger -\nAgarra banderas, enemigos o cualquier\notra cosa no atornillada al suelo.\nPresiona de nuevo para lanzar.",
"pickUpInfoTextScale": 0.6,
"powerupBombDescriptionText": "Te permite sacar tres bombas\nen una fila en lugar de solo una.",
"powerupBombNameText": "Bombas Triples",
@ -921,7 +926,7 @@
"powerupImpactBombsNameText": "Insta-Bombas",
"powerupLandMinesDescriptionText": "Estas vienen en grupos de 3;\nSon buenas para defensa territorial\no para detener enemigos veloces.",
"powerupLandMinesNameText": "Minas Terrestres",
"powerupPunchDescriptionText": "Hacen que tus golpes sean más duros,\nmás rápidos, mejores, y más fuertes.",
"powerupPunchDescriptionText": "Hacen que tus golpes sean más duros,\nmás rápidos, mejores y más fuertes.",
"powerupPunchNameText": "Guantes De Boxeo",
"powerupShieldDescriptionText": "Absorbe un poco de daño\npara que tú no tengas que hacerlo.",
"powerupShieldNameText": "Electro-Escudo",
@ -945,7 +950,7 @@
"holdAnyButtonText": "<sostener cualquier botón>",
"holdAnyKeyText": "<sostener cualquier tecla>",
"hostIsNavigatingMenusText": "- ${HOST} está navegando los menús como todo un pro -",
"importPlaylistCodeInstructionsText": "Usa el siguiente código para importar esta lista de reproducción en otra parte",
"importPlaylistCodeInstructionsText": "Usa el siguiente código para importar esta lista de reproducción en otra parte:",
"importPlaylistSuccessText": "Lista de reproducción '${NAME}' importada ${TYPE}",
"importText": "Importar",
"importingText": "Importando...",
@ -955,7 +960,7 @@
"arrowsToExitListText": "pulsa ${LEFT} o ${RIGHT} para salir de la lista",
"buttonText": "botón",
"cantKickHostError": "No puedes expulsar al anfitrión.",
"chatBlockedText": "${NAME} esta bloqueado del chat por ${TIME} segundos.",
"chatBlockedText": "${NAME} está bloqueado del chat por ${TIME} segundos.",
"connectedToGameText": "Unido a '${NAME}'",
"connectedToPartyText": "¡Unido a la partida de ${NAME}!",
"connectingToPartyText": "Conectando...",
@ -973,7 +978,7 @@
"controllersConnectedText": "${COUNT} controles conectados.",
"controllersDetectedText": "${COUNT} controles detectados.",
"controllersDisconnectedText": "${COUNT} controles desconectados.",
"corruptFileText": "Archivo(s) corrupto(s) detectado(s). Por favor intenta re-instalar, o contactate con ${EMAIL}",
"corruptFileText": "Archivo(s) corrupto(s) detectado(s). Por favor intenta reinstalar o contáctate con ${EMAIL}",
"errorPlayingMusicText": "Error reproduciendo música: ${MUSIC}",
"errorResettingAchievementsText": "Incapaz de reiniciar los logros; por favor inténtalo de nuevo más tarde.",
"hasMenuControlText": "${NAME} tiene el control del menú.",
@ -995,7 +1000,7 @@
"noMusicFilesInFolderText": "La carpeta no contiene archivos de audio.",
"playerJoinedPartyText": "¡${NAME} se unió a la partida!",
"playerLeftPartyText": "${NAME} abandonó la partida.",
"rejectingInviteAlreadyInPartyText": "Rechazando invitación (Ya estas en una partida).",
"rejectingInviteAlreadyInPartyText": "Rechazando invitación (Ya estás en una partida).",
"serverRestartingText": "El servidor se está reiniciando. Por favor vuelva a unirse en un momento...",
"serverShuttingDownText": "El servidor está fuera de servicio...",
"signInErrorText": "Error iniciando sesión.",
@ -1107,7 +1112,7 @@
"modeClassicText": "Modo Clásico",
"modeDemoText": "Modo Demo",
"mostValuablePlayerText": "Jugador Más Valioso",
"mostViolatedPlayerText": "Jugador Más Agredido",
"mostViolatedPlayerText": "Jugador Más Violado",
"mostViolentPlayerText": "Jugador Más Violento",
"moveText": "Mover",
"multiKillText": "¡¡¡COMBO DE ${COUNT}!!!",
@ -1212,7 +1217,7 @@
"pluginInitErrorText": "Error iniciando complemento '${PLUGIN}': ${ERROR}",
"pluginSettingsText": "Ajustes De Complementos",
"pluginsAutoEnableNewText": "Auto Habilitar Nuevos Complementos",
"pluginsDetectedText": "Complemento detectado(s). Reinicia el juego, o ve a ajustes para configurarlo.",
"pluginsDetectedText": "Complemento detectado(s). Reinicia el juego o ve a ajustes para configurarlo.",
"pluginsDisableAllText": "Deshabilitar Todos Los Complementos",
"pluginsEnableAllText": "Habilitar Todos Los Complementos",
"pluginsRemovedText": "${NUM} complemento(s) ya no se encuentra(n).",
@ -1324,6 +1329,7 @@
},
"scoreWasText": "(era ${COUNT})",
"selectText": "Elegir",
"sendInfoDescriptionText": "Envía información del estado de la cuenta y de la aplicación al desarrollador.\nPor favor incluya su nombre o el motivo del envío.",
"seriesWinLine1PlayerText": "GANA LA",
"seriesWinLine1TeamText": "GANA LA",
"seriesWinLine1Text": "¡GANA LA",
@ -1340,10 +1346,11 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(un teclado simple y amigable con controles para editar textos)",
"alwaysUseInternalKeyboardText": "Siempre Usar El Teclado Interno",
"alwaysUseInternalKeyboardText": "Siempre usar el teclado interno",
"benchmarksText": "Puntos De Referencia & Pruebas De Estrés",
"disableCameraGyroscopeMotionText": "Deshabilitar El Movimiento Del Giroscopio De La Cámara",
"disableCameraShakeText": "Deshabilitar El Temblor De La Cámara",
"devToolsText": "Herramientas de Desarrollo",
"disableCameraGyroscopeMotionText": "Deshabilitar el movimiento del giroscopio de la cámara",
"disableCameraShakeText": "Deshabilitar el temblor de la cámara",
"disableThisNotice": "(puedes deshabilitar este aviso en ajustes avanzados)",
"enablePackageModsDescriptionText": "(enciende modificaciones pero apaga juegos vía red)",
"enablePackageModsText": "Encender Modificaciones Locales",
@ -1351,18 +1358,21 @@
"forTestingText": "Notas: estos datos son solo para pruebas y se reiniciarán cuando se abra la app de nuevo.",
"helpTranslateText": "Las traducciones de ${APP_NAME} son un esfuerzo\napoyado por la comunidad. Si deseas aportar o corregir una\ntraducción, utiliza el siguiente enlace. ¡Gracias de antemano!",
"helpTranslateTextScale": 1.0,
"kickIdlePlayersText": "Expulsar Jugadores Inactivos",
"kickIdlePlayersText": "Expulsar a jugadores inactivos",
"kidFriendlyModeText": "Modo Niños (reduce violencia, etc)",
"languageText": "Idioma",
"languageTextScale": 1.0,
"moddingGuideText": "Guía De Modificación",
"moddingToolsText": "Herramientas de modificación",
"mustRestartText": "Tienes que reiniciar el juego para que tome efecto.",
"netTestingText": "Prueba De Red",
"resetText": "Reiniciar",
"sendInfoText": "Enviar Información",
"showBombTrajectoriesText": "Mostrar Trayectorias De Las Bombas",
"showDemosWhenIdleText": "Mostrar demostraciones cuando esté inactivo",
"showDevConsoleButtonText": "Mostrar Botón de Consola de Desarrollador",
"showInGamePingText": "Mostrar Ping En El Juego",
"showDeprecatedLoginTypesText": "Mostrar tipos de inicio de sesión obsoletos",
"showDevConsoleButtonText": "Mostrar botón de consola de desarrollador",
"showInGamePingText": "Mostrar ping en el juego",
"showPlayerNamesText": "Mostrar Nombres De Los Jugadores",
"showUserModsText": "Mostrar Carpeta De Mods",
"titleText": "Avanzado",
@ -1370,8 +1380,8 @@
"translationFetchErrorText": "estado de traducción no disponible",
"translationFetchingStatusText": "viendo estado de traducción...",
"translationInformMe": "Informarme cuando mi idioma necesite actualizaciones",
"translationNoUpdateNeededText": "el idioma actual está actualizado; ¡wuju!",
"translationUpdateNeededText": "** ¡¡el idioma actual necesita actualizarse!! **",
"translationNoUpdateNeededText": "El idioma actual está actualizado; ¡wuju!",
"translationUpdateNeededText": "** ¡¡El idioma actual necesita actualizarse!! **",
"vrTestingText": "Prueba VR"
},
"shareText": "Compartir",
@ -1381,6 +1391,9 @@
"signInWithGameCenterText": "Para usar una cuenta de Game Center,\ningresa con la aplicación Game Center.",
"singleGamePlaylistNameText": "Solo ${GAME}",
"singlePlayerCountText": "1 jugador",
"sizeLargeText": "Grande",
"sizeMediumText": "Medium",
"sizeSmallText": "pequeñ@",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Selección De Personajes",
@ -1417,7 +1430,7 @@
"charactersText": "Personajes",
"comingSoonText": "Próximamente...",
"extrasText": "Extras",
"freeBombSquadProText": "BombSquad es gratis, pero ya que compraste el juego recibirás\nla mejora de BombSquad Pro y ${COUNT} boletos como agradecimiento.\n¡Disfruta de las nuevas funciones, y gracias por tu apoyo!\n-Eric",
"freeBombSquadProText": "BombSquad es gratis, pero ya que compraste el juego recibirás\nla mejora de BombSquad Pro y ${COUNT} boletos como agradecimiento.\n¡Disfruta de las nuevas funciones y gracias por tu apoyo!\n-Eric",
"gameUpgradesText": "Mejoras",
"getCoinsText": "Obtén monedas",
"holidaySpecialText": "¡Especial De Temporada!",
@ -1445,7 +1458,7 @@
"winterSpecialText": "Especial De Invierno",
"youOwnThisText": "- ya posees esto -"
},
"storeDescriptionText": "¡Juego en grupo de 8 jugadores!\n\n¡Revienta a tus amigos (o a la computadora) en un torneo de minijuegos explosivos como Captura la Bandera, Hockey-Bomba, y Combate Mortal Épico en cámara lenta!\n\nControles sencillos y un amplio apoyo de controles hacen que sea fácil que 8 personas entren en la acción; ¡incluso puedes usar tus dispositivos móviles como controles a través de la aplicación gratuita 'Control Remoto BombSquad'!\n\n¡Bombas Fuera!\n\nEcha un vistazo en www.froemling.net/bombsquad para más información.",
"storeDescriptionText": "¡Juego en grupo de 8 jugadores!\n\n¡Revienta a tus amigos (o a la computadora) en un torneo de minijuegos explosivos como Captura la Bandera, Hockey-Bomba y Combate Mortal Épico en cámara lenta!\n\nControles sencillos y un amplio apoyo de controles hacen que sea fácil que 8 personas entren en la acción; ¡incluso puedes usar tus dispositivos móviles como controles a través de la aplicación gratuita 'Control Remoto BombSquad'!\n\n¡Bombas Fuera!\n\nEcha un vistazo en www.froemling.net/bombsquad para más información.",
"storeDescriptions": {
"blowUpYourFriendsText": "Revienta a tus amigos.",
"competeInMiniGamesText": "Compite en juegos de carreras, vuelo y mucho más.",
@ -1458,7 +1471,7 @@
"submitText": "Enviar",
"submittingPromoCodeText": "Enviando Código...",
"successText": "¡Éxito!",
"supportEmailText": "Si estas teniendo algun problema con la\napp, porfavor manda un email a ${EMAIL}.",
"supportEmailText": "Si estás teniendo algún problema con la\napp, por favor, manda un email a ${EMAIL}.",
"teamNamesColorText": "Nombres De Equipos/Colores...",
"teamsText": "Equipos",
"telnetAccessGrantedText": "Acceso a Telnet activado.",
@ -1851,7 +1864,7 @@
"If someone picks you up, punch them and they'll let go.\nThis works in real life too.": "Si alguien te recoge, dale un golpe y te soltará.\nTambién funciona en la vida real.",
"If you are short on controllers, install the '${REMOTE_APP_NAME}' app\non your mobile devices to use them as controllers.": "Si no tienes suficientes controles, instala la aplicación '${REMOTE_APP_NAME}'\nen tus dispositivos móviles para utilizarlos como controles.",
"If you are short on controllers, install the 'BombSquad Remote' app\non your iOS or Android devices to use them as controllers.": "Te faltan controles? Instala la aplicación 'BombSquad Remote'\nen tu dispositivo iOS o Android para usarlo como control.",
"If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Si te adhieres a una bomba-pegajosa, salta y da muchas vueltas. Es posible que sacudas\nla bomba pegada, o sin nada más tus últimos momentos serán entretenidos.",
"If you get a sticky-bomb stuck to you, jump around and spin in circles. You might\nshake the bomb off, or if nothing else your last moments will be entertaining.": "Si te adhieres a una bomba pegajosa, salta y da muchas vueltas. Es posible que sacudas\nla bomba pegada o sin nada más tus últimos momentos serán entretenidos.",
"If you kill an enemy in one hit you get double points for it.": "Si matas a un enemigo de un solo golpe obtendrás puntos dobles.",
"If you pick up a curse, your only hope for survival is to\nfind a health powerup in the next few seconds.": "Si tomaste una maldición, tu única esperanza es\nencontrar un botiquín en tus últimos segundos.",
"If you stay in one place, you're toast. Run and dodge to survive..": "Si te quedas quieto, estás frito. Corre y esquiva para sobrevivir...",
@ -1934,6 +1947,7 @@
"toSkipPressAnythingText": "(pulsa cualquier botón para omitir el tutorial)"
},
"twoKillText": "¡COMBO DOBLE!",
"uiScaleText": "Escala de interfaz de usuario",
"unavailableText": "no disponible",
"unconfiguredControllerDetectedText": "Control desconfigurado detectado:",
"unlockThisInTheStoreText": "Esto debe ser desbloqueado en la tienda.",
@ -1947,6 +1961,8 @@
"upgradeText": "Mejorar",
"upgradeToPlayText": "Desbloquea \"${PRO}\" en la tienda para jugar esto.",
"useDefaultText": "Usar Por Defecto",
"userSystemScriptsCreateText": "Crear scripts del sistema de usuario",
"userSystemScriptsDeleteText": "Eliminar scripts del sistema de usuario",
"usesExternalControllerText": "Este juego usa un control externo como entrada.",
"usingItunesText": "Usando Aplicación De Música para la banda sonora...",
"usingItunesTurnRepeatAndShuffleOnText": "Asegúrate de que mezclar esté ENCENDIDO y repetir TODOS esté activado en iTunes.",
@ -2001,7 +2017,7 @@
"copyrightText": "Marca registrada DarwiinRemote",
"copyrightTextScale": 0.6,
"listenText": "Escuchar",
"macInstructionsText": "Asegúrate de que tu Wii esté apagado y el Bluetooth esté activado en\ntu Mac, a continuación, pulsa 'Escuchar'. El Soporte para controles\nWii puede ser un poco extraño, así que puede que tengas que\nprobar un par de veces antes de obtener una conexión.\n\nEl Bluetooth puede procesar hasta 7 dispositivos conectados,\naunque tu kilometraje puede variar.\n\nBombSquad es compatible con los Controles Wii originales,\nNunchuks, y el Control Clásico.\nEl nuevo Control Wii Plus también funciona\npero sin accesorios.",
"macInstructionsText": "Asegúrate de que tu Wii esté apagado y el Bluetooth esté activado en\ntu Mac, a continuación, pulsa 'Escuchar'. El Soporte para controles\nWii puede ser un poco extraño, así que puede que tengas que\nprobar un par de veces antes de obtener una conexión.\n\nEl Bluetooth puede procesar hasta 7 dispositivos conectados,\naunque tu kilometraje puede variar.\n\nBombSquad es compatible con los Controles Wii originales,\nNunchuks y el Control Clásico.\nEl nuevo Control Wii Plus también funciona\npero sin accesorios.",
"macInstructionsTextScale": 0.7,
"thanksText": "Gracias al equipo DarwiinRemote\nPor hacer esto posible.",
"thanksTextScale": 0.8,

View file

@ -1888,7 +1888,7 @@
"worldsBestScoresText": "உலகின் சிறந்த மதிப்பெண்கள்",
"worldsBestTimesText": "உலகின் சிறந்த நேரங்கள்",
"xbox360ControllersWindow": {
"getDriverText": "Driver ஐ பெரு",
"getDriverText": "Driver ஐ பெரு ",
"macInstructions2Text": "கட்டுப்படுத்திகளை கம்பியில்லாமல் பயன்படுத்த, உங்களுக்கு ரிசீவரும் தேவை\nவிண்டோஸிற்கான எக்ஸ்பாக்ஸ் 360 வயர்லெஸ் கன்ட்ரோலருடன் வருகிறது.\nஒரு ரிசீவர் உங்களை 4 கட்டுப்படுத்திகளை இணைக்க அனுமதிக்கிறது.\n\nமுக்கியமானது: 3 வது தரப்பு பெறுநர்கள் இந்த டிரைவருடன் வேலை செய்ய மாட்டார்கள்;\nஉங்கள் ரிசீவர் அதில் 'மைக்ரோசாப்ட்' என்று கூறுவதை உறுதி செய்து கொள்ளுங்கள், 'எக்ஸ்பாக்ஸ் 360' அல்ல.\nமைக்ரோசாப்ட் இனி தனித்தனியாக விற்காது, எனவே நீங்கள் பெற வேண்டும்\nகட்டுப்பாட்டாளருடன் தொகுக்கப்பட்ட ஒன்று அல்லது வேறு ஈபேயைத் தேடுங்கள்.\n\nஇது உங்களுக்கு பயனுள்ளதாக இருந்தால், தயவுசெய்து ஒரு நன்கொடையைக் கருத்தில் கொள்ளவும்\nஅவரது தளத்தில் டிரைவர் டெவலப்பர்.",
"macInstructionsText": "எக்ஸ்பாக்ஸ் 360 கட்டுப்படுத்திகளைப் பயன்படுத்த, நீங்கள் நிறுவ வேண்டும்\nமேக் டிரைவர் கீழே உள்ள இணைப்பில் கிடைக்கிறது.\nஇது கம்பி மற்றும் வயர்லெஸ் கட்டுப்படுத்திகளுடன் வேலை செய்கிறது.",
"ouyaInstructionsText": "BombSquad உடன் கம்பி எக்ஸ்பாக்ஸ் 360 கட்டுப்படுத்திகளைப் பயன்படுத்த, வெறுமனே\nஅவற்றை உங்கள் சாதனத்தின் USB போர்ட்டில் செருகவும். நீங்கள் ஒரு USB ஹப் பயன்படுத்தலாம்\nபல கட்டுப்படுத்திகளை இணைக்க.\n\nவயர்லெஸ் கன்ட்ரோலர்களைப் பயன்படுத்த உங்களுக்கு வயர்லெஸ் ரிசீவர் தேவை,\n\"விண்டோஸிற்கான எக்ஸ்பாக்ஸ் 360 வயர்லெஸ் கன்ட்ரோலர்\" இன் ஒரு பகுதியாக கிடைக்கிறது\nதொகுப்பு அல்லது தனித்தனியாக விற்கப்படுகிறது. ஒவ்வொரு ரிசீவரும் USB போர்ட்டில் செருகப்படுகிறது மற்றும்\n4 வயர்லெஸ் கட்டுப்படுத்திகளை இணைக்க உங்களை அனுமதிக்கிறது.",

View file

@ -551,7 +551,7 @@
"deleteText": "ลบ",
"demoText": "ทดลอง",
"denyText": "ยกเลิก",
"deprecatedText": "คัดค้าน",
"deprecatedText": "ไม่ถูกใช้งาน",
"desktopResText": "เดสก์ท็อป Res",
"deviceAccountUpgradeText": "คำเตือน:\nคุณลงชื่อเข้าใช้ด้วยบัญชีอุปกรณ์ (${NAME})\nบัญชีอุปกรณ์จะถูกลบออกในการอัปเดตในอนาคต\nอัปเกรดเป็นบัญชี V2 หากคุณต้องการติดตามความคืบหน้า",
"difficultyEasyText": "ง่าย",
@ -562,6 +562,9 @@
"disableRemoteAppConnectionsText": "ปิดการใช้การเชื่อมต่อแอพรีโมต",
"disableXInputDescriptionText": "อนุญาตให้ใช้คอนโทรลเลอร์มากกว่า 4 ตัวแต่จะทำงานได้ไม่ค่อยดีเท่าไหร่",
"disableXInputText": "ปิด XInput",
"disabledText": "ปิด",
"discordFriendsText": "ต้องการหาเพื่อนที่จะเล่นด้วยใช่ไหม\nเข้า Discord ของพวกเราและหาเพื่อนใหม่ๆ!",
"discordJoinText": "เข้าร่วม Discord",
"doneText": "เสร็จสิ้น",
"drawText": "เสมอ",
"duplicateText": "ทำซ้ำ",
@ -629,6 +632,7 @@
"useMusicFolderText": "โฟลเดอร์ของไฟล์เพลง"
},
"editText": "แก้ไข",
"enabledText": "เปิด",
"endText": "จบ",
"enjoyText": "ขอให้สนุก!",
"epicDescriptionFilterText": "${DESCRIPTION} ในการเคลื่อนไหวที่ช้ามากๆ",
@ -746,6 +750,7 @@
"manualYourLocalAddressText": "ที่อยู่ในท้องถิ่นของคุณ:",
"nearbyText": "ใกล้เคียง",
"noConnectionText": "<ไม่มีการเชื่อมต่อ>",
"noPartiesAddedText": "ไม่มีปาร์ตี้เพื่มอยู่",
"otherVersionsText": "(เวอร์ชั่นอื่นๆ)",
"partyCodeText": "รหัสปาร์ตี้",
"partyInviteAcceptText": "ยอมรับ",
@ -817,10 +822,12 @@
"alwaysText": "ตลอด",
"fullScreenCmdText": "เต็มหน้าจอ (Cmd-F)",
"fullScreenCtrlText": "เต็มหน้าจอ (Ctrl-F)",
"fullScreenText": "แสดงเต็มจอ",
"gammaText": "ส่องสว่าง",
"highText": "สูง",
"higherText": "สูงกว่า",
"lowText": "ต่ำ",
"maxFPSText": "อัตราเฟรมสูงสุด",
"mediumText": "ปานกลาง",
"neverText": "ไม่เคย",
"resolutionText": "ความละเอียด",
@ -1058,6 +1065,7 @@
"noContinuesText": "(ไม่มีต่อ)",
"noExternalStorageErrorText": "ไม่พบที่จัดเก็บข้อมูลภายนอกในอุปกรณ์นี้",
"noGameCircleText": "ข้อผิดพลาด: ไม่ได้ลงชื่อเข้าใช้ GameCircle",
"noPluginsInstalledText": "ไม่มีปลั๊กอินติดตั้งอยู่",
"noScoresYetText": "ไม่มีคะแนน",
"noServersFoundText": "ไม่พบเซิร์ฟเวอร์",
"noThanksText": "ไม่เป็นไรขอบคุณ",
@ -1224,6 +1232,8 @@
"runText": "วิ่ง",
"saveText": "บันทึก",
"scanScriptsErrorText": "เกิดข้อผิดพลาดในการสแกนสคริปต์ ดูบันทึกสำหรับรายละเอียด",
"scanScriptsMultipleModulesNeedUpdatesText": "${PATH} และ ${NUM} โมดูลอื่นๆ (s) จำเป็นต้องมีการอัพเดตสำหรับ api นี้ ${API}.",
"scanScriptsSingleModuleNeedsUpdatesText": "${PATH} จำเป็นต้องมีการอัพเดตสำหรับ api นี้ ${API}.",
"scoreChallengesText": "คะแนนความท้าทาย",
"scoreListUnavailableText": "ไม่มีรายการคะแนน",
"scoreText": "คะแนน",

View file

@ -25,6 +25,7 @@
"setAccountNameDesc": "Hesabın için gösterilecek bir isim seç. \nBağladığın hesaplardan birinin adını kullanabilir\nya da yeni bir tane oluşturabilirsin.",
"signInInfoText": "Bilet toplamak Çevrimiçi olmak ve ilerlemeyi \ndiğer cihazlarla paylaşmak için Giriş yap.",
"signInText": "Giriş Yap",
"signInWithAnEmailAddressText": "Bir e-posta adresiyle giriş yap",
"signInWithDeviceInfoText": "Otomatik bir hesap sadece bu cihaz için kullanılabilir",
"signInWithDeviceText": "Cihaz hesabı ile Giriş yap",
"signInWithGameCircleText": "Game Circle ile Giriş yap",
@ -555,6 +556,7 @@
"demoText": "Tanıtım",
"denyText": "Reddet",
"deprecatedText": "Kullanımdan kaldırıldı",
"descriptionText": "Açıklama",
"desktopResText": "PC Çözünürlüğü",
"deviceAccountUpgradeText": "Uyarı:\n(${NAME}) isimli bir cihaz hesabıyla giriş yaptın.\nCihaz hesapları gelecek güncellemelerde kaldırılacak.\nİlerlemeni tutmak istiyorsan V2 hesabına geçiş yap.",
"difficultyEasyText": "Kolay",
@ -566,7 +568,7 @@
"disableXInputDescriptionText": "4 kontrolcüden fazla kullanılabilir fakat iyi çalışmayabilir.",
"disableXInputText": "XInput etkisizleştir",
"disabledText": "Kullanılmıyor",
"discordFriendsText": "Yeni oyuncularmı arıyorsun?\nDiscord sunucumuza katılarak yeni arkadaşlar edinebilirsin!",
"discordFriendsText": "Yeni oyuncular mı arıyorsun?\nDiscord sunucumuza katılarak yeni arkadaşlar edinebilirsin!",
"discordJoinText": "Discord sunucumuza katıl",
"doneText": "Tamam",
"drawText": "Beraberlik",
@ -600,6 +602,7 @@
"localProfileText": "(yerel profil)",
"nameDescriptionText": "Oyuncu Adı",
"nameText": "Ad",
"profileAlreadyExistsText": "Bu ad ile bir profil zaten var.",
"randomText": "rastgele",
"titleEditText": "Profil Düzenle",
"titleNewText": "Yeni Profil",
@ -681,6 +684,8 @@
"duplicateText": "ÇalmaListesi\nKopyala",
"editText": "ÇalmaListesi\nDüzenle",
"newText": "ÇalmaListesi\nYarat",
"pointsToWinText": "Kazanmak İçin Gereken Puan",
"seriesLengthText": "Seri Uzunluğu",
"showTutorialText": "Öğreticiyi Göster",
"shuffleGameOrderText": "Oyun Sırasını Karıştır",
"titleText": "Özel ${TYPE} ÇalmaListeleri"
@ -718,10 +723,10 @@
"friendHasSentPromoCodeText": "${NAME} tarafından ${COUNT} ${APP_NAME} bileti",
"friendPromoCodeAwardText": "Kullanıldığı her zaman ${COUNT} bilet alacaksın.",
"friendPromoCodeExpireText": "Bu kodun ${EXPIRE_HOURS} saat içinde süresi dolacak ve sadece yeni oyuncularda çalışır.",
"friendPromoCodeInstructionsText": "Kullanmak için ${APP_NAME} uygulamasınıın ve \"Ayarlar->Gelişmiş->Promo Kodu\"\nna gidin. Tüm platformlar arası İndirme bağlantıları için bombsquadgame.com'a gidin.",
"friendPromoCodeInstructionsText": "Kullanmak için ${APP_NAME} uygulamasınıın ve \"Ayarlar->Gelişmiş->Kodu gir\" \ngidin. Tüm platformlar arası İndirme bağlantıları için bombsquadgame.com'a gidin.",
"friendPromoCodeRedeemLongText": "Maksimum ${MAX_USES} kişi olmak üzere ${COUNT} bedava bilet alabilirsin.",
"friendPromoCodeRedeemShortText": "Oyun içi ${COUNT} bilet alabilirsin",
"friendPromoCodeWhereToEnterText": "(Ayarlar>Gelişmiş>Promo kodu gir içinde)",
"friendPromoCodeWhereToEnterText": "(\"Ayarlar>Gelişmiş>Kodu gir\" içinde)",
"getFriendInviteCodeText": "Arkadaş Davet Kodu Al",
"googlePlayDescriptionText": "Partine Google Play oyuncularını davet et:",
"googlePlayInviteText": "Davet",
@ -1247,6 +1252,7 @@
},
"scoreWasText": "(${COUNT} idi)",
"selectText": "Seç",
"sendInfoDescriptionText": "Geliştiriciye hesap ve uygulama durumu bilgilerini gönderir.\nGöndermek için lütfen ad ve gönderme sebebini de ekleyin.",
"seriesWinLine1PlayerText": "SERİLERİ",
"seriesWinLine1TeamText": "SERİLERİ",
"seriesWinLine1Text": "SERİLERİ",
@ -1262,27 +1268,31 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(Basitçe; yazı yazmak için daha kullanışlı ekran klavyesi)",
"alwaysUseInternalKeyboardText": "Her zaman Dahili Klavye Kullan",
"alwaysUseInternalKeyboardText": "Her zaman dahili klavye kullan",
"benchmarksText": "Benchmark & Stres-Testleri",
"disableCameraGyroscopeMotionText": "Kamera Jiroskop Hareketini Devre Dışı Bırak",
"disableCameraShakeText": "Kamera Titremesini Devre Dışı Bırak",
"devToolsText": "Geliştirici Ayarları",
"disableCameraGyroscopeMotionText": "Kamera jiroskop hareketini devre dışı bırak",
"disableCameraShakeText": "Kamera titremesini devre dışı bırak",
"disableThisNotice": "(bu bildiriyi gelişmiş ayarlardan devre dışı bırakabilirsiniz)",
"enablePackageModsDescriptionText": "(ekstra modlama özelliği ekler fakat ağ-oyununu etkisiz kılar)",
"enablePackageModsText": "Yerel Paket Modlarını Etkinleştir",
"enterPromoCodeText": "Kodu gir",
"forTestingText": "Not: Bu değerler sadece test için ve uygulamadan çıkıldığında sıfırlanacak.",
"helpTranslateText": "${APP_NAME}'ın İngilizce olmayan çevirileri topluluk yardımı ile\nyapılabilir. Katkı veya düzgün çeviri yapmak istiyorsan aşağıdaki\nbağlantıya tıkla. Şimdiden teşekkürler!",
"kickIdlePlayersText": "Boştaki Oyuncuları Çıkar",
"kickIdlePlayersText": "Boştaki oyuncuları çıkar",
"kidFriendlyModeText": "Çoçuk Modu (Azaltılmış şiddet, vb)",
"languageText": "Dil",
"moddingGuideText": "Modlama Rehberi",
"moddingToolsText": "Modlama Araçları",
"mustRestartText": "Etkisini göstermesi için oyunu yeniden başlatmalısınız.",
"netTestingText": "Ağ Testi",
"resetText": "Sıfırla",
"sendInfoText": "Bilgi Gönder",
"showBombTrajectoriesText": "Bomba Gidişatını Göster",
"showDemosWhenIdleText": "Boşta İken Demolar Göster",
"showDemosWhenIdleText": "Boşta iken demolar göster",
"showDeprecatedLoginTypesText": "Kullanımdan kaldırılmış oturum açma türlerini göster",
"showDevConsoleButtonText": "Geliştirici panelini aç",
"showInGamePingText": "Oyun İçinde Gecikmeyi Göster",
"showInGamePingText": "Oyun içinde gecikmeyi göster",
"showPlayerNamesText": "Oyuncu Adlarını Göster",
"showUserModsText": "Mod Klasörünü Göster",
"titleText": "Gelişmiş",
@ -1290,7 +1300,7 @@
"translationFetchErrorText": "çeviri durumu mevcut değil",
"translationFetchingStatusText": "Çeviri durumu kontrol ediliyor...",
"translationInformMe": "Benim dilimin güncellenmesi gerektiğinde bana haber ver",
"translationNoUpdateNeededText": "Şu anki dil güncel; wohooo!",
"translationNoUpdateNeededText": "Şu anki dil güncel; wohoo!",
"translationUpdateNeededText": "** Şu anki dilin güncellenmeye ihtiyacı var!! **",
"vrTestingText": "VR Testi"
},
@ -1301,6 +1311,9 @@
"signInWithGameCenterText": "Game Center hesabı kullanmak için\nGame Center uygulaması ile giriş yap.",
"singleGamePlaylistNameText": "Sadece ${GAME}",
"singlePlayerCountText": "1 oyuncu",
"sizeLargeText": "Büyük",
"sizeMediumText": "Orta",
"sizeSmallText": "Küçük",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Karakter Seçimi",
@ -1824,6 +1837,7 @@
"toSkipPressAnythingText": "(öğreticiyi atlamak için herhangi bir tuşa bas)"
},
"twoKillText": "ÇİFTE ÖLÜM!",
"uiScaleText": "UI Boyutu",
"unavailableText": "mevcut değil",
"unconfiguredControllerDetectedText": "Yapılandırılmamış kontrolcü tespit edildi:",
"unlockThisInTheStoreText": "Bunun mağazada kilidi açık olmalı.",
@ -1837,12 +1851,14 @@
"upgradeText": "Yükselt",
"upgradeToPlayText": "Bunu oynamak için \"${PRO}\" kilidini oyun-içi mağazadan aç.",
"useDefaultText": "Varsayılanı Kullan",
"userSystemScriptsCreateText": "Kullanıcı Sistem Kodlarını Oluştur",
"userSystemScriptsDeleteText": "Kullanıcı Sistem Kodlarını Sil",
"usesExternalControllerText": "Bu oyun girdi olarak harici kontrolcü kullanıyor.",
"usingItunesText": "Müzikler için iTunes kullanılıyor...",
"usingItunesTurnRepeatAndShuffleOnText": "Lütfen iTunes da karıştırmanın KAPALI oldugundan ve Yinelemenin TÜM oldugundan emin olun. ",
"v2AccountLinkingInfoText": "V2 hesapları bağlamak için, 'Hesabı yönet' butonuna tıklayın.",
"validatingTestBuildText": "Test Yapısı Onaylanıyor...",
"viaText": "Böylede bilinir",
"viaText": "Böyle de bilinir",
"victoryText": "Galibiyet!",
"voteDelayText": "${NUMBER} saniye boyunca başka oylama başlatamazsın.",
"voteInProgressText": "Oylama zaten işlemde.",

View file

@ -556,6 +556,7 @@
"demoText": "Демо",
"denyText": "Відхилити",
"deprecatedText": "Застаріла",
"descriptionText": "Опис",
"desktopResText": "Розширення екрану",
"deviceAccountUpgradeText": "Увага!\nТи ввійшов за допомогою акаунта пристрою (${NAME}).\nАкаунти пристроїв будуть видалені у майбутньому оновленні.\nОновись до V2-акаунта, якщо ти хочеш зберегти свій прогрес.",
"difficultyEasyText": "Легкий",
@ -601,6 +602,7 @@
"localProfileText": "(локальний профіль)",
"nameDescriptionText": "Ім'я гравця",
"nameText": "Ім'я",
"profileAlreadyExistsText": "Профіль з таким ім'ям вже існує.",
"randomText": "випадкове",
"titleEditText": "Змінити профіль",
"titleNewText": "Новий профіль",
@ -682,6 +684,8 @@
"duplicateText": "Дублювати\nплейлист",
"editText": "Змінити\nплейлист",
"newText": "Новий\nплейлист",
"pointsToWinText": "Очок до виграшу",
"seriesLengthText": "Довжина серії",
"showTutorialText": "Показати туторіал",
"shuffleGameOrderText": "Змішати порядок ігор",
"titleText": "Налаштувати плейлисти '${TYPE}'"
@ -1248,6 +1252,7 @@
},
"scoreWasText": "(було ${COUNT})",
"selectText": "Вибрати",
"sendInfoDescriptionText": "Надсилає інформацію про обліковий запис і стан програми розробнику. Будь ласка, вкажіть своє ім'я або причину надсилання\nِ",
"seriesWinLine1PlayerText": "ПЕРЕМІГ У",
"seriesWinLine1TeamText": "ПЕРЕМОГЛИ У",
"seriesWinLine1Text": "ПЕРЕМІГ У",
@ -1263,25 +1268,28 @@
},
"settingsWindowAdvanced": {
"alwaysUseInternalKeyboardDescriptionText": "(проста, зручна для контролера віртуальна клавіатура для введення тексту)",
"alwaysUseInternalKeyboardText": "Завжди використовувати вбудовану клавіатуру",
"alwaysUseInternalKeyboardText": "Завжди використовуйте внутрішню клавіатуру",
"benchmarksText": "Тест продуктивності і навантаження",
"disableCameraGyroscopeMotionText": "Вимкнути Рух Гіроскопу Камери",
"disableCameraShakeText": "Вимкнути Тремтіння Камери",
"disableCameraGyroscopeMotionText": "Вимкнути рух гіроскопа камери",
"disableCameraShakeText": "Вимкнути тремтіння камери",
"disableThisNotice": "(ви можете відключити це повідомлення в налаштуваннях)",
"enablePackageModsDescriptionText": "(включає додаткові можливості для модінгу, але відключає мережеву гру)",
"enablePackageModsText": "Включити моди локального пакета",
"enterPromoCodeText": "Ввести код",
"forTestingText": "Примітка: ці значення використовуються тільки для тестування і будуть втрачені, коли додаток завершить роботу.",
"helpTranslateText": "Переклади гри ${APP_NAME} з англійської зроблені спільнотою. \nЯкщо ви хочете запропонувати або виправити переклад, \nПерейдіть за посиланню нижче. Заздалегідь дякую!",
"kickIdlePlayersText": "Викидати неактивних гравців",
"kickIdlePlayersText": "Викидати непрацюючих гравців",
"kidFriendlyModeText": "Сімейний режим (менше насильства, і т.д.)",
"languageText": "Мова",
"moddingGuideText": "Інструкція по модінгу",
"moddingToolsText": "Інструменти для моддингу",
"mustRestartText": "Необхідно перезапустити гру, щоб зміни вступили в силу.",
"netTestingText": "Тестування мережі",
"resetText": "Скинути",
"sendInfoText": "Надіслати інформацію",
"showBombTrajectoriesText": "Показувати траєкторію бомби",
"showDevConsoleButtonText": "Показати кнопку консолі адміністратора",
"showDemosWhenIdleText": "Показувати демонстрації в режимі очікування",
"showDevConsoleButtonText": "Показати кнопку консолі розробника",
"showInGamePingText": "Показувати пінг у грі",
"showPlayerNamesText": "Показувати імена гравців",
"showUserModsText": "Показати теку модів",
@ -1290,8 +1298,8 @@
"translationFetchErrorText": "статус перекладу недоступний",
"translationFetchingStatusText": "перевірка статусу перекладу...",
"translationInformMe": "Повідомляйте мене, коли моя мова потребує оновлення",
"translationNoUpdateNeededText": "дана мова повністю оновлена, ура!",
"translationUpdateNeededText": "** дана мова потребує оновлення!! **",
"translationNoUpdateNeededText": "Поточна мова оновлена; ураа!",
"translationUpdateNeededText": "** Поточна мова потребує оновлення!! **",
"vrTestingText": "Тестування VR"
},
"shareText": "Поділитися",
@ -1301,6 +1309,9 @@
"signInWithGameCenterText": "Щоб використовувати аккаунт GameCenter,\nувійдіть через GameCenter.",
"singleGamePlaylistNameText": "Просто ${GAME}",
"singlePlayerCountText": "1 гравець",
"sizeLargeText": "Великий",
"sizeMediumText": "Середній",
"sizeSmallText": "Малий",
"soloNameFilterText": "${NAME} соло",
"soundtrackTypeNames": {
"CharSelect": "Вибір персонажа",
@ -1823,6 +1834,7 @@
"toSkipPressAnythingText": "(торкніться або натисніть що-небудь щоб пропустити туторіал)"
},
"twoKillText": "ДВОХ ЗА РАЗ!",
"uiScaleText": "Зміна розміру інтерфейсу",
"unavailableText": "недоступно",
"unconfiguredControllerDetectedText": "Виявлено налаштований контролер:",
"unlockThisInTheStoreText": "Це повинно бути розблоковано в магазині.",
@ -1836,6 +1848,8 @@
"upgradeText": "Оновлення",
"upgradeToPlayText": "Розблокуйте \"${PRO}\" в магазині щоб грати в це.",
"useDefaultText": "Використовувати стандартні",
"userSystemScriptsCreateText": "Створення системних сценаріїв користувача",
"userSystemScriptsDeleteText": "Видалити системні сценарії користувача",
"usesExternalControllerText": "Ця гра може використовувати зовнішній контролер для управління.",
"usingItunesText": "Використання музикального додатку для саундтрека...",
"usingItunesTurnRepeatAndShuffleOnText": "Будь ласка, переконайтеся, що випадковий порядок і повтор усіх пісень включений в Itunes.",

View file

@ -247,7 +247,7 @@
"Sharing is Caring": {
"descriptionFull": "Sparpagna el zugo co un amigo co suceso",
"descriptionFullComplete": "Zugo sparpagnà co suceso co un amigo",
"name": "Sparpagnar A vołe dir tegnerghe"
"name": "Sparpagnar vołe dir tegnerghe"
},
"Stayin' Alive": {
"description": "Vinsi sensa mai crepar",
@ -445,7 +445,7 @@
"movementText": "Movimento a",
"resetText": "Reinposta",
"swipeControlsHiddenText": "Scondi i comandi a zlizo",
"swipeInfoText": "Par bituarse co i controłi a \"zlizo\" A serve un fià de tenpo.\nMa sensa dover vardar i controłi, el zugo el deventarà pì senpio.",
"swipeInfoText": "Par bituarse co i controłi a \"zlizo\" serve un fià de tenpo.\nMa sensa dover vardar i controłi, el zugo el deventarà pì senpio.",
"swipeText": "zlizo",
"titleText": "Configura schermo tàtiłe"
},
@ -477,7 +477,7 @@
"customText": "E in pì...",
"entryFeeText": "Costo",
"forfeitConfirmText": "Vutu dabon dàrgheła vinta?",
"forfeitNotAllowedYetText": "Deso A no te połi miga dàrgheła vinta suito.",
"forfeitNotAllowedYetText": "No te połi miga dàrgheła vinta suito.",
"forfeitText": "Dàgheła vinta",
"multipliersText": "Moltiplegadori",
"nextChallengeText": "Sfida pròsema",
@ -532,7 +532,7 @@
"deathsText": "Crepà",
"debugText": "dezbao",
"debugWindow": {
"reloadBenchmarkBestResultsText": "Nota: par 'sta proa A sarìa mejo inpostar ła Defenision so 'Alta' so Inpostasion > Gràfega > Defenision.",
"reloadBenchmarkBestResultsText": "Nota: par 'sta proa sarìa mejo inpostar ła Defenision so 'Alta' so Inpostasion > Gràfega > Defenision.",
"runCPUBenchmarkText": "Saja prestasion CPU",
"runGPUBenchmarkText": "Saja prestasion GPU",
"runMediaReloadBenchmarkText": "Saja prestasion recargamento gràfega",
@ -552,6 +552,7 @@
"demoText": "Demo",
"denyText": "Refuda",
"deprecatedText": "Roba vecia",
"descriptionText": "Descrision",
"desktopResText": "Resołusion PC",
"deviceAccountUpgradeText": "Ocio:\nte ghè fazesto l'aceso co l'account łogałe ${NAME}.\nCo un pròsemo ajornamento i account łogałi i vegnarà cavài via.\nSe te vołi tegnerte i to progresi ajorna el to account a ła varsion V2.",
"difficultyEasyText": "Fàsiłe",
@ -589,7 +590,7 @@
"colorText": "cołor",
"getMoreCharactersText": "Otien pì parsonaji...",
"getMoreIconsText": "Otien pì icone...",
"globalProfileInfoText": "I profiłi zugador globałi i gà nomi ùgnołi garantìi.\nIn pì A se połe zontarghe anca icone parsonałizàe.",
"globalProfileInfoText": "I profiłi zugador globałi i gà nomi ùgnołi garantìi.\nIn pì se połe zontarghe anca icone parsonałizàe.",
"globalProfileText": "(profiło globałe)",
"highlightText": "detaji",
"iconText": "icona",
@ -597,6 +598,7 @@
"localProfileText": "(profiło łogałe)",
"nameDescriptionText": "Nome zugador",
"nameText": "Nome",
"profileAlreadyExistsText": "Eziste dezà un profiło co 'sto nome.",
"randomText": "",
"titleEditText": "Muda profiło",
"titleNewText": "Profiło novo",
@ -678,6 +680,8 @@
"duplicateText": "Zdopia\nłista de zugo",
"editText": "Muda\nłista de zugo",
"newText": "Nova\nłista de zugo",
"pointsToWinText": "Punti par vìnsar",
"seriesLengthText": "Łonghesa serie",
"showTutorialText": "Demostrasion",
"shuffleGameOrderText": "Zmisia òrdene łevełi",
"titleText": "Parsonałiza łiste de zugo \"${TYPE}\""
@ -855,7 +859,7 @@
"pickUpInfoText": "- Łeva sù -\nBrinca sù bandiere, nemighi o calsìase\naltra roba miga inciodada par tera.\nStruca danovo par trarla in jiro.",
"powerupBombDescriptionText": "El te parmete de trar in jiro fin\na 3 bonbe drioman invese che 1.",
"powerupBombNameText": "Bonbe triple",
"powerupCurseDescriptionText": "Probabilmente A te vorè schivarla\n'sta chive. ...o dìzitu de nò?",
"powerupCurseDescriptionText": "Probabilmente te vorè schivarla\n'sta cuà. ...o dìzitu de nò?",
"powerupCurseNameText": "Małedision",
"powerupHealthDescriptionText": "El te recarga de'l tuto ła vida.\nA no te ło gavarisi mai pensà, ahn?",
"powerupHealthNameText": "Parecio mèdego",
@ -940,10 +944,10 @@
"signInNoConnectionText": "Inposìbiłe acédar. (sensa conesion internet?)",
"telnetAccessDeniedText": "EROR: l'utente no'l gà miga parmeso l'aceso co telnet.",
"timeOutText": "(tocarà a ti tenpo ${TIME} segondi)",
"touchScreenJoinWarningText": "A te te si zontà co'l touchscreen.\nSe ła ze stà na capeła, struca 'Menù > Moła łeveło'.",
"touchScreenJoinWarningText": "Te te si zontà co'l touchscreen.\nSe ła ze stà na capeła, struca 'Menù > Moła łeveło'.",
"touchScreenText": "TouchScreen",
"unableToResolveHostText": "Eror: A no ze mìa posìbiłe conétarse co l'ospitador.",
"unavailableNoConnectionText": "Par deso mìa disponìbiłe (gnauna conesion a internet?)",
"unableToResolveHostText": "Eror: no ze miga posìbiłe conétarse co l'ospitador.",
"unavailableNoConnectionText": "Par deso miga disponìbiłe (gnauna conesion a internet?)",
"vrOrientationResetCardboardText": "Dopàreło par reinpostar l'orientasion de'l VR.\nA te servirà un controłador esterno par zugar.",
"vrOrientationResetText": "Reinposta orientasion VR.",
"willTimeOutText": "(ma se in sonera el ghe vegnarà cavà)."
@ -958,8 +962,8 @@
"kickOccurredText": "${NAME} ze stà parà fora.",
"kickQuestionText": "Vutu parar vìa ${NAME}?",
"kickText": "Para fora",
"kickVoteCantKickAdminsText": "I aministradori no i połe mìa èsar parài vìa.",
"kickVoteCantKickSelfText": "A no te połi mìa pararte vìa da soło.",
"kickVoteCantKickAdminsText": "I aministradori no i połe miga èsar parài vìa.",
"kickVoteCantKickSelfText": "No te połi miga pararte vìa da soło.",
"kickVoteFailedNotEnoughVotersText": "A ghe ze masa pochi zugadori par na votasion.",
"kickVoteFailedText": "Votasion de zlontanamento fałìa.",
"kickVoteStartedText": "A se gà tacà na votasion par parar vìa ${NAME}.",
@ -1128,8 +1132,8 @@
"titleText": "Profiłi zugador"
},
"playerText": "Zugador",
"playlistNoValidGamesErrorText": "'Sta łista de zugo ła gà rento łevełi dezblocài mìa vàłidi.",
"playlistNotFoundText": "łista de zugo mìa catada",
"playlistNoValidGamesErrorText": "'Sta łista de zugo ła gà rento łevełi dezblocài miga vàłidi.",
"playlistNotFoundText": "łista de zugo miga catada",
"playlistText": "Łista de zugo",
"playlistsText": "Łiste de zugo",
"pleaseRateText": "Se ${APP_NAME} el ze drio piazerte, tote un àtemo par\nłasarghe zó na vałudasion o scrìvarghe zó un comento. 'Ste\nopinion łe tornarà còmode par dezviłupi fuduri de'l zugo.\n\ngrasie!\n-eric",
@ -1186,7 +1190,7 @@
"app_name_short": "BSRemote",
"button_position": "Pozision botoni",
"button_size": "Grandesa botoni",
"cant_resolve_host": "A no ze mìa posìbiłe catar fora l'ospitador.",
"cant_resolve_host": "No ze miga posìbiłe catar fora l'ospitador.",
"capturing": "Drio spetar i zugadori…",
"connected": "Conetesto.",
"description": "Dòpara el to tełèfono o tołeto cofà controłador par BombSquad.\nPołe conétarse so un schermo ùgnoło fin a 8 dispozidivi insenbre, par un feston bueło multizugador!",
@ -1216,7 +1220,7 @@
"replayNameDefaultText": "Revardo partìa ùltema",
"replayReadErrorText": "Eror de łedura de'l file de revardo.",
"replayRenameWarningText": "Par salvar na partìa fenìa, renòmena \"${REPLAY}\". Senò te sevitarè sorascrìvarle.",
"replayVersionErrorText": "Ne despiaze, 'sto revardo el ze stà fato co na varsion\nde'l zugo defarente e no'l połe mìa èsar doparà.",
"replayVersionErrorText": "'Sto revardo el ze stà fato co na varsion de'l\nzugo defarente e no'l połe miga èsar doparà.",
"replayWatchText": "Varda revardo",
"replayWriteErrorText": "Eror de salvatajo de'l revardo.",
"replaysText": "Revardi",
@ -1235,7 +1239,7 @@
"scanScriptsMultipleModulesNeedUpdatesText": "${PATH} e ${NUM} n'antro/i mòduło/i el/i gà èsar ajornà/i par l'api ${API}.",
"scanScriptsSingleModuleNeedsUpdatesText": "${PATH} el gà èsar ajornà par l'api ${API}.",
"scoreChallengesText": "Puntejo sfide",
"scoreListUnavailableText": "Łista de puntejo mìa disponìbiłe.",
"scoreListUnavailableText": "Łista de puntejo miga disponìbiłe.",
"scoreText": "Puntejo",
"scoreUnits": {
"millisecondsText": "Miłesegondi",
@ -1244,6 +1248,7 @@
},
"scoreWasText": "(prima ${COUNT})",
"selectText": "Sełesiona",
"sendInfoDescriptionText": "Par mandarghe informasion so'l stado de account e apl a'l dezviłupador.\nZóntaghe el tó nome e ła rajon de'l parché te ghe scrivi.",
"seriesWinLine1PlayerText": "GÀ VINTO ŁA",
"seriesWinLine1TeamText": "GÀ VINTO ŁA",
"seriesWinLine1Text": "GÀ VINTO ŁA",
@ -1261,8 +1266,8 @@
"alwaysUseInternalKeyboardDescriptionText": "(na botonera so schermo, senpia e còmoda, par scrìvar testi)",
"alwaysUseInternalKeyboardText": "Dòpara botonera integrada",
"benchmarksText": "Prestasion & Proe soto sforso",
"disableCameraGyroscopeMotionText": "Dezativa movimento de ła prospetiva łigada a'l jiroscopio",
"disableCameraShakeText": "Dezativa i zgorlamenti de ła videocàmara",
"disableCameraGyroscopeMotionText": "Dezativa movimento de ła prospetiva co'l jiroscopio",
"disableCameraShakeText": "Dezativa zgorlamenti de ła videocàmara",
"disableThisNotice": "(Te połi dezativar 'sta notìfega inte łe inpostasion avansàe)",
"enablePackageModsDescriptionText": "(l'ativasion de ła capasidà de modifegasion ła dezativa el zugo in rede)",
"enablePackageModsText": "Ativa pacheti mod łogałi",
@ -1273,21 +1278,24 @@
"kidFriendlyModeText": "Modałidà bocia (viołensa reduzesta, evc)",
"languageText": "Łengua",
"moddingGuideText": "Guida par modifegasion",
"mustRestartText": "Par rèndar efetive łe modìfeghe, A te ghè da retacar el zugo.",
"moddingToolsText": "Strumenti de modifegasion",
"mustRestartText": "Par rèndar efetive łe modìfeghe, te ghè da retacar el zugo.",
"netTestingText": "Proa de rede",
"resetText": "Reinposta",
"sendInfoText": "Manda informasion",
"showBombTrajectoriesText": "Mostra trajetore bonbe",
"showDevConsoleButtonText": "Mostra boton cuadro comandi dezviłupador",
"showDemosWhenIdleText": "Mostra demostrasion in sonera",
"showDevConsoleButtonText": "Mostra boton de i comandi dezviłupador",
"showInGamePingText": "Mostra łatensa de'l zugo",
"showPlayerNamesText": "Mostra nomi zugadori",
"showUserModsText": "Mostra carteła modifegasion",
"titleText": "Avansàe",
"translationEditorButtonText": "Piataforma de tradusion de ${APP_NAME}",
"translationFetchErrorText": "stado de ła tradusion mìa disponìbiłe",
"translationFetchErrorText": "stado de ła tradusion miga disponìbiłe",
"translationFetchingStatusText": "controło stado de ła tradusion...",
"translationInformMe": "Infòrmame co A ghe ze tochi novi da tradùzar",
"translationNoUpdateNeededText": "ła tradusion in veneto ła ze aposto: un aereo!",
"translationUpdateNeededText": "** A ghe ze testi novi da tradùzar!! **",
"translationInformMe": "Infòrmame co ghe ze tochi novi da tradùzar",
"translationNoUpdateNeededText": "Ła tradusion in veneto ła ze a posto: un aèreo!",
"translationUpdateNeededText": "** Ghe ze testi novi da tradùzar!! **",
"vrTestingText": "Proa VR"
},
"shareText": "Sparpagna",
@ -1297,6 +1305,9 @@
"signInWithGameCenterText": "Par doparar un account Game Center,\nconétate da rento l'apl Game Center.",
"singleGamePlaylistNameText": "Tuti \"${GAME}\"",
"singlePlayerCountText": "1 zugador",
"sizeLargeText": "Granda",
"sizeMediumText": "Mezana",
"sizeSmallText": "Ceła",
"soloNameFilterText": "\"${NAME}\" 1 VS 1",
"soundtrackTypeNames": {
"CharSelect": "Sełesion parsonajo",
@ -1337,14 +1348,14 @@
"howToUseIconsText": "(par dopararle, crea un profiło zugador globałe inte ła sesion account)",
"howToUseMapsText": "(dòpara 'sti łevełi inte łe to łiste de zugo: scuadre/tuti contro tuti)",
"iconsText": "Icone",
"loadErrorText": "A no ze mìa posìbiłe cargar ła pàjina.\nDaghe na ociada a ła to conesion internet.",
"loadErrorText": "No ze miga posìbiłe cargar ła pàjina.\nDaghe na ociada a ła tó conesion internet.",
"loadingText": "cargamento",
"mapsText": "Łevełi",
"miniGamesText": "Minizughi",
"oneTimeOnlyText": "(ocazion ùgnoła)",
"purchaseAlreadyInProgressText": "Cronpa de 'sto ojeto dezà drio conpirse.",
"purchaseConfirmText": "Vutu cronpar ${ITEM}?",
"purchaseNotValidError": "Cronpa mìa vàłida.\nSe'l ze un eror, contata ${EMAIL}.",
"purchaseNotValidError": "Cronpa miga vàłida.\nSe'l ze un eror, contata ${EMAIL}.",
"purchaseText": "Cronpa",
"saleBundleText": "Pacheto in oferta!",
"saleExclaimText": "Oferta!",
@ -1376,7 +1387,7 @@
"telnetAccessText": "Rełevà aceso a telnet: vutu autorizarlo?",
"testBuildErrorText": "'Sta varsion de proa no ła ze miga pì ativa. Controła se A ghin ze una pì resente.",
"testBuildText": "Varsion de proa",
"testBuildValidateErrorText": "A no ze mìa posìbiłe varifegar ła varsion de proa. (gnauna conesion a internet?)",
"testBuildValidateErrorText": "No ze miga posìbiłe varifegar ła varsion de proa. (gnauna conesion a internet?)",
"testBuildValidatedText": "Varsion de proa aposto. Gòdateła!",
"thankYouText": "Grasie par el to suporto! Gùstate el zugo!",
"threeKillText": "NO GHE N'È 2 SENSA 3!!",
@ -1618,18 +1629,18 @@
"An error has occurred; please try again later.": "A se gà verifegà un eror: proa danovo pì tardi.",
"Are you sure you want to link these accounts?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\nThis cannot be undone!": "Vutu dabon cołegar 'sti profiłi?\n\n${ACCOUNT1}\n${ACCOUNT2}\n\n'Sta asion no ła połe pì èsar anułada!",
"BombSquad Pro unlocked!": "BombSquad Pro dezblocà!",
"Can't link 2 accounts of this type.": "A no se połe mìa cołegar 2 profiłi de 'sto tipo.",
"Can't link 2 diamond league accounts.": "A no se połe mìa cołegar 2 profiłi de ła łega de damante.",
"Can't link; would surpass maximum of ${COUNT} linked accounts.": "A no se połe mìa cołegarlo: A ze dezà stà cołegài un màsemo de ${COUNT} profiłi.",
"Can't link 2 accounts of this type.": "No se połe miga cołegar 2 profiłi de 'sto tipo.",
"Can't link 2 diamond league accounts.": "No se połe miga cołegar 2 profiłi de ła łega de damante.",
"Can't link; would surpass maximum of ${COUNT} linked accounts.": "No se połe miga cołegarlo: ze dezà stà cołegài un màsemo de ${COUNT} profiłi.",
"Cheating detected; scores and prizes suspended for ${COUNT} days.": "Rełevà un inbrojo: punteji e premi sospendesti par ${COUNT} dì.",
"Could not establish a secure connection.": "A no ze mìa posìbiłe stabiłir na conesion segura.",
"Could not establish a secure connection.": "No ze miga posìbiłe stabiłir na conesion segura.",
"Daily maximum reached.": "Màsemo jornałiero pasà.",
"Entering tournament...": "Entrada inte'l tornèo...",
"Invalid code.": "Còdaze mìa vàłido.",
"Invalid code.": "Còdaze miga vàłido.",
"Invalid payment; purchase canceled.": "Pagamento miga vàłido: cronpa anułada.",
"Invalid promo code.": "Còdaze promosionałe mìa vàłido.",
"Invalid purchase.": "Cronpa mìa vàłida.",
"Invalid tournament entry; score will be ignored.": "Entrada inte'l tornèo mìa vàłida: el puntejo el vegnarà ignorà.",
"Invalid promo code.": "Còdaze promosionałe miga vàłido.",
"Invalid purchase.": "Cronpa miga vàłida.",
"Invalid tournament entry; score will be ignored.": "Entrada inte'l tornèo miga vàłida: el puntejo el vegnarà ignorà.",
"Item unlocked!": "Ojeto dezblocà!",
"LINKING DENIED. ${ACCOUNT} contains\nsignificant data that would ALL BE LOST.\nYou can link in the opposite order if you'd like\n(and lose THIS account's data instead)": "COŁEGAMENTO REFUDÀ. ${ACCOUNT} el contien dati\ninportanti che i ndarà PERDESTI.\nSe te vołi te połi cołegarli in òrdane raverso\n(e pèrdar a'l só posto i dati de 'STO account cuà).",
"Link account ${ACCOUNT} to this account?\nAll existing data on ${ACCOUNT} will be lost.\nThis can not be undone. Are you sure?": "Vutu dabon cołegar l'account ${ACCOUNT} a 'sto account?\nTuti i dati so ${ACCOUNT} i ndarà perdesti.\n'Sta asion no ła połe pì èsar anułada: vutu ndar vanti?",
@ -1639,10 +1650,10 @@
"Message is too long.": "Mesajo masa łongo.",
"No servers are available. Please try again soon.": "Gnaun server disponìbiłe. Proa pì tardi.",
"Profile \"${NAME}\" upgraded successfully.": "Profiło \"${NAME}\" mejorà co suceso.",
"Profile could not be upgraded.": "El profiło no'l połe mìa èsar mejorà.",
"Profile could not be upgraded.": "El profiło no'l połe miga èsar mejorà.",
"Purchase successful!": "Cronpà co suceso!",
"Received ${COUNT} tickets for signing in.\nCome back tomorrow to receive ${TOMORROW_COUNT}.": "A te ghè resevesto ${COUNT} biłieti par ver verto el zugo.\nTorna anca doman par brincàrghine ${TOMORROW_COUNT}.",
"Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "Ła funsionałidà de'l server no ła ze mìa pì suportada inte 'sta varsion de'l zugo.\nAjòrneło a ła varsion nova.",
"Server functionality is no longer supported in this version of the game;\nPlease update to a newer version.": "So 'sta varsion de'l zugo ła funsionałidà de'l server no ła ze miga pì suportada.\nAjòrneło a ła varsion nova.",
"Sorry, there are no uses remaining on this code.": "Ne despiaze, 'sto còdaze el ze dezà stà doparà a'l màsemo.",
"Sorry, this code has already been used.": "Ne despiaze, 'sto còdaze el ze dezà stà doparà.",
"Sorry, this code has expired.": "Ne despiaze, ła vałidità de 'sto còdaze ła ze terminada.",
@ -1650,15 +1661,15 @@
"Still searching for nearby servers; please try again soon.": "Reserca de server visini in corso: proa danovo pì tardi.",
"Temporarily unavailable; please try again later.": "Par deso miga disponìbiłe: proa danovo pì tardi.",
"The tournament ended before you finished.": "El tornèo el ze terminà prima che te ghesi fenìo.",
"This account cannot be unlinked for ${NUM} days.": "'Sto account no'l połe mìa èsar descołegà prima de ${NUM} dì.",
"This code cannot be used on the account that created it.": "'Sto còdaze no'l połe mìa èsar doparà inte l'account che'l ło gà creà.",
"This account cannot be unlinked for ${NUM} days.": "'Sto account no'l połe miga èsar descołegà prima de ${NUM} dì.",
"This code cannot be used on the account that created it.": "'Sto còdaze no'l połe miga èsar doparà inte l'account che'l ło gà creà.",
"This is currently unavailable; please try again later.": "Par deso, funsion miga disponìbiłe. Proa danovo pì tardi.",
"This requires version ${VERSION} or newer.": "A ghe serve ła varsion ${VERSION} o una pì nova.",
"Tournaments disabled due to rooted device.": "Tornèi dezativài parvìa de'l dispozidivo co'l root.",
"Tournaments require ${VERSION} or newer": "Par i tornèi A serve ła varsion ${VERSION} o una pì resente",
"Tournaments require ${VERSION} or newer": "Par i tornèi serve ła varsion ${VERSION} o una pì resente",
"Unlink ${ACCOUNT} from this account?\nAll data on ${ACCOUNT} will be reset.\n(except for achievements in some cases)": "Vutu descołegar l'account ${ACCOUNT} da 'sto account?\nTuti i dati de ${ACCOUNT} i vegnarà ełimenài.\n(obietivi a parte in calche cazo)",
"WARNING: complaints of hacking have been issued against your account.\nAccounts found to be hacking will be banned. Please play fair.": "AVERTENSA: el to account el ze stà segnałà par el dòparo de truchi.\nI zugaduri catài a doparar truchi i vegnarà blocài. Zuga da gałantomo.",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Ghetu caro cołegar el to account łogałe co 'sto cuà?\n\nEl to account łogałe el ze ${ACCOUNT1}\n'Sto account el ze ${ACCOUNT2}\n\n'Sta oparasion ła te parmetarà de mantegner i to progresi ezistenti.\nOcio: 'sta asion no ła połe pì èsar anułada!",
"Would you like to link your device account to this one?\n\nYour device account is ${ACCOUNT1}\nThis account is ${ACCOUNT2}\n\nThis will allow you to keep your existing progress.\nWarning: this cannot be undone!\n": "Ghetu caro cołegar el tó account łogałe co 'sto cuà?\n\nEl tó account łogałe el ze ${ACCOUNT1}\n'Sto account el ze ${ACCOUNT2}\n\n'Sta oparasion ła te parmetarà de mantegner i tó progresi ezistenti.\nOcio: 'sta asion no ła połe pì èsar anułada!",
"You already own this!": "Dezà cronpà!",
"You can join in ${COUNT} seconds.": "Te połi zontarte tenpo ${COUNT} segondi.",
"You don't have enough tickets for this!": "A no te ghè miga biłieti che basta par cronparlo!",
@ -1753,7 +1764,7 @@
"Jump just as you're throwing to get bombs up to the highest levels.": "Co A te si drio tirar na bonba, salta par farla rivar pì alta posìbiłe.",
"Land-mines are a good way to stop speedy enemies.": "Łe mine łe ze fantàsteghe par fermar i nemighi pì ràpidi.",
"Many things can be picked up and thrown, including other players. Tossing\nyour enemies off cliffs can be an effective and emotionally fulfilling strategy.": "Te połi łevar sù e tirar racuante robe, anca cheł'altri zugadori. Trar zó da na croda\ni tó nemighi ła połe èsar na stratejìa efisente che ła połe cavarte anca calche spisa.",
"No, you can't get up on the ledge. You have to throw bombs.": "Nò, A no te połi mìa montar so'l bordo. A te ghè da tirar bonbe.",
"No, you can't get up on the ledge. You have to throw bombs.": "Nò, no te połi miga montar so'l bordo. Te ghè da tirar bonbe.",
"Players can join and leave in the middle of most games,\nand you can also plug and unplug controllers on the fly.": "I zugadori i połe zontarse e ndar vìa inte'l medo de ła majornasa de łe\npartìe. Ti te połi anca tacar e destacar un controłador a'l voło.",
"Practice using your momentum to throw bombs more accurately.": "Fà pràtega tirardo bonbe corendo par far crèsar ła to presizion.",
"Punches do more damage the faster your fists are moving,\nso try running, jumping, and spinning like crazy.": "Pì vełosi che se move łe to man, pì dano i farà i to\ncrogni! Donca proa córar, saltar e ndar torno cofà un mato.",
@ -1819,19 +1830,22 @@
"toSkipPressAnythingText": "(toca o struca un boton par saltar ła demostrasion)"
},
"twoKillText": "E 2 DE COPÀI!",
"uiScaleText": "Grandesa interfasa",
"unavailableText": "miga disponìbiłe",
"unconfiguredControllerDetectedText": "Rełevà controłador miga configurà:",
"unlockThisInTheStoreText": "Da dezblocar inte ła botega.",
"unlockThisProfilesText": "Par crear pì de ${NUM} profiłi, A te serve:",
"unlockThisText": "Par dezblocar 'sta funsion A te serve:",
"unsupportedControllerText": "El controłador \"${NAME}\" no'l ze miga suportà.",
"unsupportedHardwareText": "Ne despiaze, 'sto hardware no'l ze mìa conpatìbiłe co 'sta varsion de'l zugo.",
"unsupportedHardwareText": "'Sto hardware no'l ze miga conpatìbiłe co 'sta varsion de'l zugo.",
"upFirstText": "Par tacar:",
"upNextText": "Inte'l łeveło n°${COUNT}:",
"updatingAccountText": "Ajornamento de'l to account...",
"upgradeText": "Mejora",
"upgradeToPlayText": "Par zugarghe, dezbloca \"${PRO}\" inte ła botega.",
"useDefaultText": "Reinposta",
"userSystemScriptsCreateText": "Crea script de sistema de l'utente",
"userSystemScriptsDeleteText": "Ełìmena script de sistema de l'utente",
"usesExternalControllerText": "'Sto zugo el dòpara un controłador esterno cofà dispozidivo de entrada.",
"usingItunesText": "Doparar l'apl de mùzega par el son de fondo...",
"v2AccountLinkingInfoText": "Par łigar un account V2 dòpara el boton 'Jestisi account'.",
@ -1860,8 +1874,8 @@
"replayDeleteErrorText": "A se gà verifegà un eror ełimenando el revardo.",
"replayNameText": "Nome de'l revardo",
"replayRenameErrorAlreadyExistsText": "A eziste dezà un revardo co 'sto nome.",
"replayRenameErrorInvalidName": "A no ze mìa posìbiłe renomenar el revardo: nome mìa vàłido.",
"replayRenameErrorText": "A se gà verifegà un eror renomenando el revardo.",
"replayRenameErrorInvalidName": "No ze miga posìbiłe renomenar el revardo: nome miga vàłido.",
"replayRenameErrorText": "Se gà verifegà un eror renomenando el revardo.",
"sharedReplaysText": "Revardi sparpagnài",
"titleText": "Varda",
"watchReplayButtonText": "Varda\nrevardo"

View file

@ -31,6 +31,7 @@
"signInWithGooglePlayText": "đăng nhập bằng google chơi trò chơi",
"signInWithTestAccountInfoText": "(loại tài khoản đặc biệt; chỉ đăng nhập trên máy này)",
"signInWithTestAccountText": "Đăng nhập bằng tài khoản máy tính",
"signInWithText": "Đăng nhập bằng ${SERVICE}",
"signInWithV2InfoText": "(một tài khoản hoạt động trên tất cả các nền tảng)",
"signInWithV2Text": "Đăng nhập bằng tài khoản BombSquad",
"signOutText": "Đăng Xuất",
@ -337,6 +338,8 @@
"getMoreGamesText": "Thêm các thể loại chơi",
"titleText": "Thêm trận đấu"
},
"addToFavoritesText": "Thêm vào mục yêu thích",
"addedToFavoritesText": "Đã thêm '${NAME}' vào Mục yêu thích.",
"allText": "Tất cả",
"allowText": "Cho phép",
"alreadySignedInText": "Tài khoản của bạn đã được đăng nhập trên thiết bị khác;\nhãy đổi tài khoản hoặc đăng xuất khỏi thiết bị khác\nvà thử lại.",
@ -370,6 +373,7 @@
"chatMutedText": "Đã ẩn trò chuyện",
"chatUnMuteText": "Khôi phục trò chuyện",
"choosingPlayerText": "<đang chọn nhân vật>",
"codesExplainText": "Mã được nhà phát triển cung cấp để\nchẩn đoán và khắc phục các vấn đề về tài khoản.",
"completeThisLevelToProceedText": "Bạn phải hoàn thành \ncấp độ này để tiếp tục!",
"completionBonusText": "Hoàn thành phần thưởng",
"configControllersWindow": {
@ -450,6 +454,7 @@
"swipeText": "Trượt",
"titleText": "Điều chinh màn hình cảm ứng"
},
"configureDeviceInSystemSettingsText": "${DEVICE} có thể được định cấu hình trong ứng dụng Cài đặt hệ thống.",
"configureItNowText": "Điều chỉnh nó ngay ?",
"configureText": "Điều chỉnh",
"connectMobileDevicesWindow": {
@ -563,6 +568,8 @@
"disableXInputDescriptionText": "Cho phép trên 4 thiết bị điều khiển nhưng nó có thể hoạt động không tốt",
"disableXInputText": "Ngắt Kết NỐi XInput",
"disabledText": "Vô hiệu hóa",
"discordFriendsText": "Bạn muốn tìm người mới để chơi cùng?\nTham gia Discord của chúng tôi và tìm những người bạn mới!",
"discordJoinText": "Tham gia Disscord",
"doneText": "Xong",
"drawText": "Hòa",
"duplicateText": "Nhân Đôi",
@ -596,6 +603,7 @@
"localProfileText": "(tài khoản cố định)",
"nameDescriptionText": "Tên nhân vật",
"nameText": "Tên",
"profileAlreadyExistsText": "Hồ sơ có tên đó đã tồn tại.",
"randomText": "Ngẫu nhiên",
"titleEditText": "Chỉnh sửa thông tin",
"titleNewText": "Tạo mới",
@ -677,6 +685,8 @@
"duplicateText": "Nhân đôi \nDanh sách",
"editText": "Đặt lại \nDanh sách",
"newText": "Danh sách\nMới",
"pointsToWinText": "Điểm để thắng",
"seriesLengthText": "Độ dài loạt phim",
"showTutorialText": "Hiện Hướng dẫn",
"shuffleGameOrderText": "Xáo trộn thứ tự trò chơi",
"titleText": "Tùy chỉnh ${TYPE} Danh sách phát"
@ -749,6 +759,7 @@
"manualYourLocalAddressText": "Địa chỉ nội bộ:",
"nearbyText": "Gần nhất",
"noConnectionText": "(không có kết nối)",
"noPartiesAddedText": "Không có bên nào được thêm vào",
"otherVersionsText": "(phiên bản khác)",
"partyCodeText": "Mã phòng",
"partyInviteAcceptText": "Chấp nhận",
@ -820,10 +831,12 @@
"alwaysText": "Luôn Luôn",
"fullScreenCmdText": "Toàn màn hình (Cmd-F)",
"fullScreenCtrlText": "Toàn màn hình (Ctrl-F)",
"fullScreenText": "Toàn màn hình",
"gammaText": "Gam-ma",
"highText": "Cao",
"higherText": "Cao hơn",
"lowText": "Thấp",
"maxFPSText": "FPS tối đa",
"mediumText": "Vừa",
"neverText": "Không bao giờ",
"resolutionText": "Độ phân giải",
@ -1061,7 +1074,9 @@
"noContinuesText": "(không tiếp tục)",
"noExternalStorageErrorText": "Không tìm thấy bộ nhớ ngoài trên thiết bị này",
"noGameCircleText": "Lỗi: không đăng nhập vào GameCircle",
"noPluginsInstalledText": "Không có plugin nào được cài đặt",
"noScoresYetText": "Chưa có điểm nào.",
"noServersFoundText": "Không tìm thấy máy chủ nào.",
"noThanksText": "Không cảm ơn",
"noTournamentsInTestBuildText": "CẢNH BÁO: Điểm thi đấu từ bản dựng thử nghiệm này sẽ bị bỏ qua.",
"noValidMapsErrorText": "Không tìm thấy bản đồ hợp lệ cho loại trò chơi này.",
@ -1267,10 +1282,13 @@
"kidFriendlyModeText": "Chế độ thân thiện với trẻ em (giảm bạo lực , vân vân)",
"languageText": "Ngôn ngữ",
"moddingGuideText": "Hướng dẫn mod",
"moddingToolsText": "Công cụ sửa đổi",
"mustRestartText": "Bạn phải khởi động lại trò chơi để áp dụng cài đặt",
"netTestingText": "Kiểm tra mạng",
"resetText": "Cài lại",
"showBombTrajectoriesText": "Hiển thị quỹ đạo của bom",
"showDemosWhenIdleText": "Hiện bản demo khi không hoạt động",
"showDevConsoleButtonText": "Hiện nút Bảng điều khiển cho nhà phát triển",
"showInGamePingText": "Hiển thị Ping trong Game",
"showPlayerNamesText": "Hiển thị tên người chơi",
"showUserModsText": "Hiển thị Thư mục Mod",
@ -1290,6 +1308,9 @@
"signInWithGameCenterText": "Để sử dụng một tài khoản Trung tâm trò chơi,\n đăng nhập với ứng dụng Trung Tâm Trò Chơi",
"singleGamePlaylistNameText": "Chỉ ${GAME}",
"singlePlayerCountText": "1 người chơi",
"sizeLargeText": "Lớn",
"sizeMediumText": "Trung bình",
"sizeSmallText": "Nhỏ",
"soloNameFilterText": "Solo ${NAME}",
"soundtrackTypeNames": {
"CharSelect": "Chọn nhân vật",
@ -1362,6 +1383,8 @@
"storeText": "Cửa hàng",
"submitText": "Gửi",
"submittingPromoCodeText": "Đang xác nhận mã code...",
"successText": "Thành công!",
"supportEmailText": "Nếu bạn đang gặp bất kỳ vấn đề nào với\nứng dụng, vui lòng gửi email tới ${EMAIL}.",
"teamNamesColorText": "Tên/Màu sắc đội...",
"telnetAccessGrantedText": "Đã kích hoạt truy cập giao thức.",
"telnetAccessText": "Phát hiện truy cập giao thức; cho phép?",
@ -1810,11 +1833,13 @@
"toSkipPressAnythingText": "(chạm hoặc nhấn bất kì đâu để bỏ qua hướng dẩn)"
},
"twoKillText": "Hai Mạng!",
"uiScaleText": "Quy mô giao diện",
"unavailableText": "Không Khả Dụng",
"unconfiguredControllerDetectedText": "Tay cầm không cấu hình được phát hiện:",
"unlockThisInTheStoreText": "Nó phải được mở khóa trong cửa hàng.",
"unlockThisProfilesText": "Để tạo nhiều hơn ${NUM} hồ sơ,bạn cần:",
"unlockThisText": "Để mở khóa bạn cần",
"unsupportedControllerText": "Rất tiếc, bộ điều khiển \"${NAME}\" không được hỗ trợ.",
"unsupportedHardwareText": "Xin lỗi, phần cứng này không được hỗ trợ bởi bản dựng này của trò chơi.",
"upFirstText": "Game đầu:",
"upNextText": "Trò chơi tiếp theo ${COUNT}:",
@ -1822,10 +1847,13 @@
"upgradeText": "Nâng cấp",
"upgradeToPlayText": "Mở khóa \"${PRO}\" trong cửa hàng để chơi.",
"useDefaultText": "Sử dụng mặc định",
"userSystemScriptsCreateText": "Tạo tập lệnh hệ thống người dùng",
"userSystemScriptsDeleteText": "Xóa tập lệnh hệ thống người dùng",
"usesExternalControllerText": "Trò chơi này sử dụng tay cầm bên ngoài cho đầu vào.",
"usingItunesText": "Sử dụng Ứng dụng âm nhạc cho nhạc nền",
"v2AccountLinkingInfoText": "Để đến tài khoản V2, sử dụng nút 'Thiết đặt tài khoản'.",
"validatingTestBuildText": "Kiểm tra xác thực Xây dựng ...",
"viaText": "Thông qua",
"victoryText": "Chiến thắng!",
"voteDelayText": "Bạn không thể bắt đầu cuộc bầu chọn khác trong ${NUMBER} giây",
"voteInProgressText": "Một cuộc bầu chọn đang tiến hành.",

View file

@ -1,4 +1,4 @@
from .core import contents, where
__all__ = ["contents", "where"]
__version__ = "2023.11.17"
__version__ = "2024.02.02"

View file

@ -245,34 +245,6 @@ mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK
4SVhM7JZG+Ju1zdXtg2pEto=
-----END CERTIFICATE-----
# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1
# Subject: O=SECOM Trust.net OU=Security Communication RootCA1
# Label: "Security Communication Root CA"
# Serial: 0
# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a
# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7
# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c
-----BEGIN CERTIFICATE-----
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY
MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t
dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5
WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD
VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8
9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ
DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9
Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N
QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ
xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G
A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T
AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG
kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr
Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5
Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU
JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot
RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw==
-----END CERTIFICATE-----
# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
# Label: "XRamp Global CA Root"
@ -4776,3 +4748,67 @@ lklyALKrdVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670
v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O
rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7
-----END CERTIFICATE-----
# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH
# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH
# Label: "Telekom Security TLS ECC Root 2020"
# Serial: 72082518505882327255703894282316633856
# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd
# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec
# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1
-----BEGIN CERTIFICATE-----
MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw
CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH
bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw
MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx
JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE
AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49
AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O
tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP
f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA
MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di
z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn
27iQ7t0l
-----END CERTIFICATE-----
# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH
# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH
# Label: "Telekom Security TLS RSA Root 2023"
# Serial: 44676229530606711399881795178081572759
# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2
# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93
# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46
-----BEGIN CERTIFICATE-----
MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj
MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0
eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy
MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC
REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG
A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9
cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV
cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA
U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6
Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug
BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy
8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J
co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg
8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8
rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12
mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg
+y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX
gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2
p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ
pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm
9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw
M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd
GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+
CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t
xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+
w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK
L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj
X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q
ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm
dTdmQRCsu/WU48IxK63nI1bMNSWSs1A=
-----END CERTIFICATE-----

View file

@ -5,6 +5,10 @@ certifi.py
This module returns the installation location of cacert.pem or its contents.
"""
import sys
import atexit
def exit_cacert_ctx() -> None:
_CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr]
if sys.version_info >= (3, 11):
@ -35,6 +39,7 @@ if sys.version_info >= (3, 11):
# we will also store that at the global level as well.
_CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem"))
_CACERT_PATH = str(_CACERT_CTX.__enter__())
atexit.register(exit_cacert_ctx)
return _CACERT_PATH
@ -70,6 +75,7 @@ elif sys.version_info >= (3, 7):
# we will also store that at the global level as well.
_CACERT_CTX = get_path("certifi", "cacert.pem")
_CACERT_PATH = str(_CACERT_CTX.__enter__())
atexit.register(exit_cacert_ctx)
return _CACERT_PATH

View file

@ -0,0 +1,101 @@
# Copyright (c) 2009, Evan Fosmark
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of the FreeBSD Project.
import os
import time
import errno
class FileLockException(Exception):
pass
class FileLock(object):
"""A file locking mechanism that has context-manager support so
you can use it in a with statement. This should be relatively cross
compatible as it doesn't rely on msvcrt or fcntl for the locking.
"""
def __init__(self, file_name, timeout=10, delay=0.05):
"""Prepare the file locker. Specify the file to lock and optionally
the maximum timeout and the delay between each attempt to lock.
"""
self.is_locked = False
self.lockfile = os.path.join(os.getcwd(), "%s.lock" % file_name)
self.file_name = file_name
self.timeout = timeout
self.delay = delay
def acquire(self):
"""Acquire the lock, if possible. If the lock is in use, it check again
every `wait` seconds. It does this until it either gets the lock or
exceeds `timeout` number of seconds, in which case it throws
an exception.
"""
start_time = time.time()
while True:
try:
self.fd = os.open(self.lockfile, os.O_CREAT | os.O_EXCL | os.O_RDWR)
break
except OSError as e:
if e.errno != errno.EEXIST:
raise
if (time.time() - start_time) >= self.timeout:
raise FileLockException("Timeout occured.")
time.sleep(self.delay)
self.is_locked = True
def release(self):
"""Get rid of the lock by deleting the lockfile.
When working in a `with` statement, this gets automatically
called at the end.
"""
if self.is_locked:
os.close(self.fd)
os.unlink(self.lockfile)
self.is_locked = False
def __enter__(self):
"""Activated when used in the with statement.
Should automatically acquire a lock to be used in the with block.
"""
if not self.is_locked:
self.acquire()
return self
def __exit__(self, type, value, traceback):
"""Activated at the end of the with statement.
It automatically releases the lock if it isn't locked.
"""
if self.is_locked:
self.release()
def __del__(self):
"""Make sure that the FileLock instance doesn't leave a lockfile
lying around.
"""
self.release()

View file

@ -83,6 +83,7 @@ __all__ = [
'TypeAlias',
'TypeAliasType',
'TypeGuard',
'TypeIs',
'TYPE_CHECKING',
'Never',
'NoReturn',
@ -146,27 +147,6 @@ class _Sentinel:
_marker = _Sentinel()
def _check_generic(cls, parameters, elen=_marker):
"""Check correct count for parameters of a generic cls (internal helper).
This gives a nice error message in case of count mismatch.
"""
if not elen:
raise TypeError(f"{cls} is not a generic class")
if elen is _marker:
if not hasattr(cls, "__parameters__") or not cls.__parameters__:
raise TypeError(f"{cls} is not a generic class")
elen = len(cls.__parameters__)
alen = len(parameters)
if alen != elen:
if hasattr(cls, "__parameters__"):
parameters = [p for p in cls.__parameters__ if not _is_unpack(p)]
num_tv_tuples = sum(isinstance(p, TypeVarTuple) for p in parameters)
if (num_tv_tuples > 0) and (alen >= elen - num_tv_tuples):
return
raise TypeError(f"Too {'many' if alen > elen else 'few'} parameters for {cls};"
f" actual {alen}, expected {elen}")
if sys.version_info >= (3, 10):
def _should_collect_from_parameters(t):
return isinstance(
@ -180,27 +160,6 @@ else:
return isinstance(t, typing._GenericAlias) and not t._special
def _collect_type_vars(types, typevar_types=None):
"""Collect all type variable contained in types in order of
first appearance (lexicographic order). For example::
_collect_type_vars((T, List[S, T])) == (T, S)
"""
if typevar_types is None:
typevar_types = typing.TypeVar
tvars = []
for t in types:
if (
isinstance(t, typevar_types) and
t not in tvars and
not _is_unpack(t)
):
tvars.append(t)
if _should_collect_from_parameters(t):
tvars.extend([t for t in t.__parameters__ if t not in tvars])
return tuple(tvars)
NoReturn = typing.NoReturn
# Some unconstrained type variables. These are used by the container types.
@ -473,7 +432,7 @@ _EXCLUDED_ATTRS = {
"_is_runtime_protocol", "__dict__", "__slots__", "__parameters__",
"__orig_bases__", "__module__", "_MutableMapping__marker", "__doc__",
"__subclasshook__", "__orig_class__", "__init__", "__new__",
"__protocol_attrs__", "__callable_proto_members_only__",
"__protocol_attrs__", "__non_callable_proto_members__",
"__match_args__",
}
@ -521,6 +480,22 @@ else:
if type(self)._is_protocol:
raise TypeError('Protocols cannot be instantiated')
def _type_check_issubclass_arg_1(arg):
"""Raise TypeError if `arg` is not an instance of `type`
in `issubclass(arg, <protocol>)`.
In most cases, this is verified by type.__subclasscheck__.
Checking it again unnecessarily would slow down issubclass() checks,
so, we don't perform this check unless we absolutely have to.
For various error paths, however,
we want to ensure that *this* error message is shown to the user
where relevant, rather than a typing.py-specific error message.
"""
if not isinstance(arg, type):
# Same error message as for issubclass(1, int).
raise TypeError('issubclass() arg 1 must be a class')
# Inheriting from typing._ProtocolMeta isn't actually desirable,
# but is necessary to allow typing.Protocol and typing_extensions.Protocol
# to mix without getting TypeErrors about "metaclass conflict"
@ -551,11 +526,6 @@ else:
abc.ABCMeta.__init__(cls, *args, **kwargs)
if getattr(cls, "_is_protocol", False):
cls.__protocol_attrs__ = _get_protocol_attrs(cls)
# PEP 544 prohibits using issubclass()
# with protocols that have non-method members.
cls.__callable_proto_members_only__ = all(
callable(getattr(cls, attr, None)) for attr in cls.__protocol_attrs__
)
def __subclasscheck__(cls, other):
if cls is Protocol:
@ -564,26 +534,23 @@ else:
getattr(cls, '_is_protocol', False)
and not _allow_reckless_class_checks()
):
if not isinstance(other, type):
# Same error message as for issubclass(1, int).
raise TypeError('issubclass() arg 1 must be a class')
if (
not cls.__callable_proto_members_only__
and cls.__dict__.get("__subclasshook__") is _proto_hook
):
non_method_attrs = sorted(
attr for attr in cls.__protocol_attrs__
if not callable(getattr(cls, attr, None))
)
raise TypeError(
"Protocols with non-method members don't support issubclass()."
f" Non-method members: {str(non_method_attrs)[1:-1]}."
)
if not getattr(cls, '_is_runtime_protocol', False):
_type_check_issubclass_arg_1(other)
raise TypeError(
"Instance and class checks can only be used with "
"@runtime_checkable protocols"
)
if (
# this attribute is set by @runtime_checkable:
cls.__non_callable_proto_members__
and cls.__dict__.get("__subclasshook__") is _proto_hook
):
_type_check_issubclass_arg_1(other)
non_method_attrs = sorted(cls.__non_callable_proto_members__)
raise TypeError(
"Protocols with non-method members don't support issubclass()."
f" Non-method members: {str(non_method_attrs)[1:-1]}."
)
return abc.ABCMeta.__subclasscheck__(cls, other)
def __instancecheck__(cls, instance):
@ -610,7 +577,8 @@ else:
val = inspect.getattr_static(instance, attr)
except AttributeError:
break
if val is None and callable(getattr(cls, attr, None)):
# this attribute is set by @runtime_checkable:
if val is None and attr not in cls.__non_callable_proto_members__:
break
else:
return True
@ -678,8 +646,58 @@ else:
cls.__init__ = _no_init
if sys.version_info >= (3, 13):
runtime_checkable = typing.runtime_checkable
else:
def runtime_checkable(cls):
"""Mark a protocol class as a runtime protocol.
Such protocol can be used with isinstance() and issubclass().
Raise TypeError if applied to a non-protocol class.
This allows a simple-minded structural check very similar to
one trick ponies in collections.abc such as Iterable.
For example::
@runtime_checkable
class Closable(Protocol):
def close(self): ...
assert isinstance(open('/some/file'), Closable)
Warning: this will check only the presence of the required methods,
not their type signatures!
"""
if not issubclass(cls, typing.Generic) or not getattr(cls, '_is_protocol', False):
raise TypeError('@runtime_checkable can be only applied to protocol classes,'
' got %r' % cls)
cls._is_runtime_protocol = True
# Only execute the following block if it's a typing_extensions.Protocol class.
# typing.Protocol classes don't need it.
if isinstance(cls, _ProtocolMeta):
# PEP 544 prohibits using issubclass()
# with protocols that have non-method members.
# See gh-113320 for why we compute this attribute here,
# rather than in `_ProtocolMeta.__init__`
cls.__non_callable_proto_members__ = set()
for attr in cls.__protocol_attrs__:
try:
is_callable = callable(getattr(cls, attr, None))
except Exception as e:
raise TypeError(
f"Failed to determine whether protocol member {attr!r} "
"is a method member"
) from e
else:
if not is_callable:
cls.__non_callable_proto_members__.add(attr)
return cls
# The "runtime" alias exists for backwards compatibility.
runtime = runtime_checkable = typing.runtime_checkable
runtime = runtime_checkable
# Our version of runtime-checkable protocols is faster on Python 3.8-3.11
@ -774,7 +792,11 @@ def _ensure_subclassable(mro_entries):
return inner
if hasattr(typing, "ReadOnly"):
# Update this to something like >=3.13.0b1 if and when
# PEP 728 is implemented in CPython
_PEP_728_IMPLEMENTED = False
if _PEP_728_IMPLEMENTED:
# The standard library TypedDict in Python 3.8 does not store runtime information
# about which (if any) keys are optional. See https://bugs.python.org/issue38834
# The standard library TypedDict in Python 3.9.0/1 does not honour the "total"
@ -785,7 +807,8 @@ if hasattr(typing, "ReadOnly"):
# Aaaand on 3.12 we add __orig_bases__ to TypedDict
# to enable better runtime introspection.
# On 3.13 we deprecate some odd ways of creating TypedDicts.
# PEP 705 proposes adding the ReadOnly[] qualifier.
# Also on 3.13, PEP 705 adds the ReadOnly[] qualifier.
# PEP 728 (still pending) makes more changes.
TypedDict = typing.TypedDict
_TypedDictMeta = typing._TypedDictMeta
is_typeddict = typing.is_typeddict
@ -815,7 +838,7 @@ else:
break
class _TypedDictMeta(type):
def __new__(cls, name, bases, ns, *, total=True):
def __new__(cls, name, bases, ns, *, total=True, closed=False):
"""Create new typed dict class object.
This method is called when TypedDict is subclassed,
@ -860,6 +883,7 @@ else:
optional_keys = set()
readonly_keys = set()
mutable_keys = set()
extra_items_type = None
for base in bases:
base_dict = base.__dict__
@ -869,6 +893,26 @@ else:
optional_keys.update(base_dict.get('__optional_keys__', ()))
readonly_keys.update(base_dict.get('__readonly_keys__', ()))
mutable_keys.update(base_dict.get('__mutable_keys__', ()))
base_extra_items_type = base_dict.get('__extra_items__', None)
if base_extra_items_type is not None:
extra_items_type = base_extra_items_type
if closed and extra_items_type is None:
extra_items_type = Never
if closed and "__extra_items__" in own_annotations:
annotation_type = own_annotations.pop("__extra_items__")
qualifiers = set(_get_typeddict_qualifiers(annotation_type))
if Required in qualifiers:
raise TypeError(
"Special key __extra_items__ does not support "
"Required"
)
if NotRequired in qualifiers:
raise TypeError(
"Special key __extra_items__ does not support "
"NotRequired"
)
extra_items_type = annotation_type
annotations.update(own_annotations)
for annotation_key, annotation_type in own_annotations.items():
@ -883,11 +927,7 @@ else:
else:
optional_keys.add(annotation_key)
if ReadOnly in qualifiers:
if annotation_key in mutable_keys:
raise TypeError(
f"Cannot override mutable key {annotation_key!r}"
" with read-only key"
)
mutable_keys.discard(annotation_key)
readonly_keys.add(annotation_key)
else:
mutable_keys.add(annotation_key)
@ -900,6 +940,8 @@ else:
tp_dict.__mutable_keys__ = frozenset(mutable_keys)
if not hasattr(tp_dict, '__total__'):
tp_dict.__total__ = total
tp_dict.__closed__ = closed
tp_dict.__extra_items__ = extra_items_type
return tp_dict
__call__ = dict # static method
@ -913,7 +955,7 @@ else:
_TypedDict = type.__new__(_TypedDictMeta, 'TypedDict', (), {})
@_ensure_subclassable(lambda bases: (_TypedDict,))
def TypedDict(typename, fields=_marker, /, *, total=True, **kwargs):
def TypedDict(typename, fields=_marker, /, *, total=True, closed=False, **kwargs):
"""A simple typed namespace. At runtime it is equivalent to a plain dict.
TypedDict creates a dictionary type such that a type checker will expect all
@ -973,6 +1015,9 @@ else:
"using the functional syntax, pass an empty dictionary, e.g. "
) + example + "."
warnings.warn(deprecation_msg, DeprecationWarning, stacklevel=2)
if closed is not False and closed is not True:
kwargs["closed"] = closed
closed = False
fields = kwargs
elif kwargs:
raise TypeError("TypedDict takes either a dict or keyword arguments,"
@ -994,7 +1039,7 @@ else:
# Setting correct module is necessary to make typed dict classes pickleable.
ns['__module__'] = module
td = _TypedDictMeta(typename, (), ns, total=total)
td = _TypedDictMeta(typename, (), ns, total=total, closed=closed)
td.__orig_bases__ = (TypedDict,)
return td
@ -1040,15 +1085,15 @@ else:
return val
if hasattr(typing, "Required"): # 3.11+
if hasattr(typing, "ReadOnly"): # 3.13+
get_type_hints = typing.get_type_hints
else: # <=3.10
else: # <=3.13
# replaces _strip_annotations()
def _strip_extras(t):
"""Strips Annotated, Required and NotRequired from a given type."""
if isinstance(t, _AnnotatedAlias):
return _strip_extras(t.__origin__)
if hasattr(t, "__origin__") and t.__origin__ in (Required, NotRequired):
if hasattr(t, "__origin__") and t.__origin__ in (Required, NotRequired, ReadOnly):
return _strip_extras(t.__args__[0])
if isinstance(t, typing._GenericAlias):
stripped_args = tuple(_strip_extras(a) for a in t.__args__)
@ -1768,6 +1813,98 @@ else:
PEP 647 (User-Defined Type Guards).
""")
# 3.13+
if hasattr(typing, 'TypeIs'):
TypeIs = typing.TypeIs
# 3.9
elif sys.version_info[:2] >= (3, 9):
@_ExtensionsSpecialForm
def TypeIs(self, parameters):
"""Special typing form used to annotate the return type of a user-defined
type narrower function. ``TypeIs`` only accepts a single type argument.
At runtime, functions marked this way should return a boolean.
``TypeIs`` aims to benefit *type narrowing* -- a technique used by static
type checkers to determine a more precise type of an expression within a
program's code flow. Usually type narrowing is done by analyzing
conditional code flow and applying the narrowing to a block of code. The
conditional expression here is sometimes referred to as a "type guard".
Sometimes it would be convenient to use a user-defined boolean function
as a type guard. Such a function should use ``TypeIs[...]`` as its
return type to alert static type checkers to this intention.
Using ``-> TypeIs`` tells the static type checker that for a given
function:
1. The return value is a boolean.
2. If the return value is ``True``, the type of its argument
is the intersection of the type inside ``TypeGuard`` and the argument's
previously known type.
For example::
def is_awaitable(val: object) -> TypeIs[Awaitable[Any]]:
return hasattr(val, '__await__')
def f(val: Union[int, Awaitable[int]]) -> int:
if is_awaitable(val):
assert_type(val, Awaitable[int])
else:
assert_type(val, int)
``TypeIs`` also works with type variables. For more information, see
PEP 742 (Narrowing types with TypeIs).
"""
item = typing._type_check(parameters, f'{self} accepts only a single type.')
return typing._GenericAlias(self, (item,))
# 3.8
else:
class _TypeIsForm(_ExtensionsSpecialForm, _root=True):
def __getitem__(self, parameters):
item = typing._type_check(parameters,
f'{self._name} accepts only a single type')
return typing._GenericAlias(self, (item,))
TypeIs = _TypeIsForm(
'TypeIs',
doc="""Special typing form used to annotate the return type of a user-defined
type narrower function. ``TypeIs`` only accepts a single type argument.
At runtime, functions marked this way should return a boolean.
``TypeIs`` aims to benefit *type narrowing* -- a technique used by static
type checkers to determine a more precise type of an expression within a
program's code flow. Usually type narrowing is done by analyzing
conditional code flow and applying the narrowing to a block of code. The
conditional expression here is sometimes referred to as a "type guard".
Sometimes it would be convenient to use a user-defined boolean function
as a type guard. Such a function should use ``TypeIs[...]`` as its
return type to alert static type checkers to this intention.
Using ``-> TypeIs`` tells the static type checker that for a given
function:
1. The return value is a boolean.
2. If the return value is ``True``, the type of its argument
is the intersection of the type inside ``TypeGuard`` and the argument's
previously known type.
For example::
def is_awaitable(val: object) -> TypeIs[Awaitable[Any]]:
return hasattr(val, '__await__')
def f(val: Union[int, Awaitable[int]]) -> int:
if is_awaitable(val):
assert_type(val, Awaitable[int])
else:
assert_type(val, int)
``TypeIs`` also works with type variables. For more information, see
PEP 742 (Narrowing types with TypeIs).
""")
# Vendored from cpython typing._SpecialFrom
class _SpecialForm(typing._Final, _root=True):
@ -2515,9 +2652,151 @@ else:
# counting generic parameters, so that when we subscript a generic,
# the runtime doesn't try to substitute the Unpack with the subscripted type.
if not hasattr(typing, "TypeVarTuple"):
typing._collect_type_vars = _collect_type_vars
typing._check_generic = _check_generic
def _check_generic(cls, parameters, elen=_marker):
"""Check correct count for parameters of a generic cls (internal helper).
This gives a nice error message in case of count mismatch.
"""
if not elen:
raise TypeError(f"{cls} is not a generic class")
if elen is _marker:
if not hasattr(cls, "__parameters__") or not cls.__parameters__:
raise TypeError(f"{cls} is not a generic class")
elen = len(cls.__parameters__)
alen = len(parameters)
if alen != elen:
expect_val = elen
if hasattr(cls, "__parameters__"):
parameters = [p for p in cls.__parameters__ if not _is_unpack(p)]
num_tv_tuples = sum(isinstance(p, TypeVarTuple) for p in parameters)
if (num_tv_tuples > 0) and (alen >= elen - num_tv_tuples):
return
# deal with TypeVarLike defaults
# required TypeVarLikes cannot appear after a defaulted one.
if alen < elen:
# since we validate TypeVarLike default in _collect_type_vars
# or _collect_parameters we can safely check parameters[alen]
if getattr(parameters[alen], '__default__', None) is not None:
return
num_default_tv = sum(getattr(p, '__default__', None)
is not None for p in parameters)
elen -= num_default_tv
expect_val = f"at least {elen}"
things = "arguments" if sys.version_info >= (3, 10) else "parameters"
raise TypeError(f"Too {'many' if alen > elen else 'few'} {things}"
f" for {cls}; actual {alen}, expected {expect_val}")
else:
# Python 3.11+
def _check_generic(cls, parameters, elen):
"""Check correct count for parameters of a generic cls (internal helper).
This gives a nice error message in case of count mismatch.
"""
if not elen:
raise TypeError(f"{cls} is not a generic class")
alen = len(parameters)
if alen != elen:
expect_val = elen
if hasattr(cls, "__parameters__"):
parameters = [p for p in cls.__parameters__ if not _is_unpack(p)]
# deal with TypeVarLike defaults
# required TypeVarLikes cannot appear after a defaulted one.
if alen < elen:
# since we validate TypeVarLike default in _collect_type_vars
# or _collect_parameters we can safely check parameters[alen]
if getattr(parameters[alen], '__default__', None) is not None:
return
num_default_tv = sum(getattr(p, '__default__', None)
is not None for p in parameters)
elen -= num_default_tv
expect_val = f"at least {elen}"
raise TypeError(f"Too {'many' if alen > elen else 'few'} arguments"
f" for {cls}; actual {alen}, expected {expect_val}")
typing._check_generic = _check_generic
# Python 3.11+ _collect_type_vars was renamed to _collect_parameters
if hasattr(typing, '_collect_type_vars'):
def _collect_type_vars(types, typevar_types=None):
"""Collect all type variable contained in types in order of
first appearance (lexicographic order). For example::
_collect_type_vars((T, List[S, T])) == (T, S)
"""
if typevar_types is None:
typevar_types = typing.TypeVar
tvars = []
# required TypeVarLike cannot appear after TypeVarLike with default
default_encountered = False
for t in types:
if (
isinstance(t, typevar_types) and
t not in tvars and
not _is_unpack(t)
):
if getattr(t, '__default__', None) is not None:
default_encountered = True
elif default_encountered:
raise TypeError(f'Type parameter {t!r} without a default'
' follows type parameter with a default')
tvars.append(t)
if _should_collect_from_parameters(t):
tvars.extend([t for t in t.__parameters__ if t not in tvars])
return tuple(tvars)
typing._collect_type_vars = _collect_type_vars
else:
def _collect_parameters(args):
"""Collect all type variables and parameter specifications in args
in order of first appearance (lexicographic order).
For example::
assert _collect_parameters((T, Callable[P, T])) == (T, P)
"""
parameters = []
# required TypeVarLike cannot appear after TypeVarLike with default
default_encountered = False
for t in args:
if isinstance(t, type):
# We don't want __parameters__ descriptor of a bare Python class.
pass
elif isinstance(t, tuple):
# `t` might be a tuple, when `ParamSpec` is substituted with
# `[T, int]`, or `[int, *Ts]`, etc.
for x in t:
for collected in _collect_parameters([x]):
if collected not in parameters:
parameters.append(collected)
elif hasattr(t, '__typing_subst__'):
if t not in parameters:
if getattr(t, '__default__', None) is not None:
default_encountered = True
elif default_encountered:
raise TypeError(f'Type parameter {t!r} without a default'
' follows type parameter with a default')
parameters.append(t)
else:
for x in getattr(t, '__parameters__', ()):
if x not in parameters:
parameters.append(x)
return tuple(parameters)
typing._collect_parameters = _collect_parameters
# Backport typing.NamedTuple as it exists in Python 3.13.
# In 3.11, the ability to define generic `NamedTuple`s was supported.

View file

@ -79,6 +79,11 @@ from _babase import (
native_review_request_supported,
native_stack_trace,
open_file_externally,
open_url,
overlay_web_browser_close,
overlay_web_browser_is_open,
overlay_web_browser_is_supported,
overlay_web_browser_open_url,
print_load_info,
pushcall,
quit,
@ -285,6 +290,11 @@ __all__ = [
'normalized_color',
'NotFoundError',
'open_file_externally',
'open_url',
'overlay_web_browser_close',
'overlay_web_browser_is_open',
'overlay_web_browser_is_supported',
'overlay_web_browser_open_url',
'Permission',
'PlayerNotFoundError',
'Plugin',

View file

@ -7,11 +7,11 @@ from __future__ import annotations
import os
import logging
from enum import Enum
from typing import TYPE_CHECKING, TypeVar
from typing import TYPE_CHECKING, TypeVar, override
from concurrent.futures import ThreadPoolExecutor
from functools import cached_property
from threading import RLock
from typing_extensions import override
from efro.call import tpartial
import _babase
@ -220,6 +220,13 @@ class App:
]
self._pool_thread_count = 0
# We hold a lock while lazy-loading our subsystem properties so
# we don't spin up any subsystem more than once, but the lock is
# recursive so that the subsystems can instantiate other
# subsystems.
self._subsystem_property_lock = RLock()
self._subsystem_property_data: dict[str, AppSubsystem | bool] = {}
def postinit(self) -> None:
"""Called after we've been inited and assigned to babase.app.
@ -227,8 +234,9 @@ class App:
must go here instead of __init__.
"""
# Hack for docs-generation: we can be imported with dummy modules
# instead of our actual binary ones, but we don't function.
# Hack for docs-generation: We can be imported with dummy
# modules instead of our actual binary ones, but we don't
# function.
if os.environ.get('BA_RUNNING_WITH_DUMMY_MODULES') == '1':
return
@ -272,10 +280,7 @@ class App:
return self._asyncio_loop
def create_async_task(
self,
coro: Generator[Any, Any, T] | Coroutine[Any, Any, T],
*,
name: str | None = None,
self, coro: Coroutine[Any, Any, T], *, name: str | None = None
) -> None:
"""Create a fully managed async task.
@ -285,6 +290,7 @@ class App:
App.asyncio_loop.
"""
assert _babase.in_logic_thread()
# Hold a strong reference to the task until it is done.
# Otherwise it is possible for it to be garbage collected and
# disappear midway if the caller does not hold on to the
@ -293,7 +299,6 @@ class App:
task = self.asyncio_loop.create_task(coro, name=name)
self._asyncio_tasks.add(task)
task.add_done_callback(self._on_task_done)
# return task
def _on_task_done(self, task: asyncio.Task) -> None:
# Report any errors that occurred.
@ -333,14 +338,66 @@ class App:
def mode_selector(self, selector: babase.AppModeSelector) -> None:
self._mode_selector = selector
def _get_subsystem_property(
self, ssname: str, create_call: Callable[[], AppSubsystem | None]
) -> AppSubsystem | None:
# Quick-out: if a subsystem is present, just return it; no
# locking necessary.
val = self._subsystem_property_data.get(ssname)
if val is not None:
if val is False:
# False means subsystem is confirmed as unavailable.
return None
if val is not True:
# A subsystem has been set. Return it.
return val
# Anything else (no val present or val True) requires locking.
with self._subsystem_property_lock:
val = self._subsystem_property_data.get(ssname)
if val is not None:
if val is False:
# False means confirmed as not present.
return None
if val is True:
# True means this property is already being loaded,
# and the fact that we're holding the lock means
# we're doing the loading, so this is a dependency
# loop. Not good.
raise RuntimeError(
f'Subsystem dependency loop detected for {ssname}'
)
# Must be an instantiated subsystem. Noice.
return val
# Ok, there's nothing here for it. Instantiate and set it
# while we hold the lock. Set a placeholder value of True
# while we load so we can error if something we're loading
# tries to recursively load us.
self._subsystem_property_data[ssname] = True
# Do our one attempt to create the singleton.
val = create_call()
self._subsystem_property_data[ssname] = (
False if val is None else val
)
return val
# __FEATURESET_APP_SUBSYSTEM_PROPERTIES_BEGIN__
# This section generated by batools.appmodule; do not edit.
@cached_property
@property
def classic(self) -> ClassicSubsystem | None:
"""Our classic subsystem (if available)."""
# pylint: disable=cyclic-import
return self._get_subsystem_property(
'classic', self._create_classic_subsystem
) # type: ignore
@staticmethod
def _create_classic_subsystem() -> ClassicSubsystem | None:
# pylint: disable=cyclic-import
try:
from baclassic import ClassicSubsystem
@ -351,11 +408,16 @@ class App:
logging.exception('Error importing baclassic.')
return None
@cached_property
@property
def plus(self) -> PlusSubsystem | None:
"""Our plus subsystem (if available)."""
# pylint: disable=cyclic-import
return self._get_subsystem_property(
'plus', self._create_plus_subsystem
) # type: ignore
@staticmethod
def _create_plus_subsystem() -> PlusSubsystem | None:
# pylint: disable=cyclic-import
try:
from baplus import PlusSubsystem
@ -366,9 +428,15 @@ class App:
logging.exception('Error importing baplus.')
return None
@cached_property
@property
def ui_v1(self) -> UIV1Subsystem:
"""Our ui_v1 subsystem (always available)."""
return self._get_subsystem_property(
'ui_v1', self._create_ui_v1_subsystem
) # type: ignore
@staticmethod
def _create_ui_v1_subsystem() -> UIV1Subsystem:
# pylint: disable=cyclic-import
from bauiv1 import UIV1Subsystem
@ -384,6 +452,7 @@ class App:
# reached the 'running' state. This ensures that all subsystems
# receive a consistent set of callbacks starting with
# on_app_running().
if self._subsystem_registration_ended:
raise RuntimeError(
'Subsystems can no longer be registered at this point.'

View file

@ -8,9 +8,8 @@ import os
import logging
from threading import Thread
from dataclasses import dataclass
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
from efro.call import tpartial
from efro.log import LogLevel
from efro.dataclassio import ioprepped, dataclass_to_json, dataclass_from_json
@ -107,8 +106,8 @@ def handle_v1_cloud_log() -> None:
info = {
'log': _babase.get_v1_cloud_log(),
'version': app.env.version,
'build': app.env.build_number,
'version': app.env.engine_version,
'build': app.env.engine_build_number,
'userAgentString': classic.legacy_user_agent_string,
'session': sessionname,
'activity': activityname,

View file

@ -4,12 +4,10 @@
from __future__ import annotations
import os
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from dataclasses import dataclass
import logging
from typing_extensions import override
import _babase
if TYPE_CHECKING:

View file

@ -3,9 +3,8 @@
"""Provides AppMode functionality."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
from bacommon.app import AppExperience
import _babase

View file

@ -7,9 +7,8 @@ import sys
import signal
import logging
import warnings
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
from efro.log import LogLevel
if TYPE_CHECKING:

View file

@ -8,9 +8,8 @@ import weakref
import random
import logging
import inspect
from typing import TYPE_CHECKING, TypeVar, Protocol, NewType
from typing import TYPE_CHECKING, TypeVar, Protocol, NewType, override
from typing_extensions import override
from efro.terminal import Clr
import _babase

View file

@ -85,6 +85,7 @@ def open_url_with_webbrowser_module(url: str) -> None:
import webbrowser
from babase._language import Lstr
assert _babase.in_logic_thread()
try:
webbrowser.open(url)
except Exception:
@ -384,7 +385,7 @@ def show_client_too_old_error() -> None:
# a newer build.
if (
_babase.app.config.get('SuppressClientTooOldErrorForBuild')
== _babase.app.env.build_number
== _babase.app.env.engine_build_number
):
return

View file

@ -6,9 +6,7 @@ from __future__ import annotations
import os
import json
import logging
from typing import TYPE_CHECKING, overload
from typing_extensions import override
from typing import TYPE_CHECKING, overload, override
import _babase
from babase._appsubsystem import AppSubsystem

View file

@ -7,9 +7,8 @@ from __future__ import annotations
import time
import logging
from dataclasses import dataclass
from typing import TYPE_CHECKING, final
from typing import TYPE_CHECKING, final, override
from typing_extensions import override
from bacommon.login import LoginType
import _babase

View file

@ -1,5 +1,5 @@
# Released under the MIT License. See LICENSE for details.
"""Enum vals generated by batools.pythonenumsmodule; do not edit by hand."""
"""Enum vals generated by batools.enumspython; do not edit by hand."""
from enum import Enum
@ -85,39 +85,6 @@ class UIScale(Enum):
SMALL = 2
class TimeType(Enum):
"""Specifies the type of time for various operations to target/use.
Category: Enums
'sim' time is the local simulation time for an activity or session.
It can proceed at different rates depending on game speed, stops
for pauses, etc.
'base' is the baseline time for an activity or session. It proceeds
consistently regardless of game speed or pausing, but may stop during
occurrences such as network outages.
'real' time is mostly based on clock time, with a few exceptions. It may
not advance while the app is backgrounded for instance. (the engine
attempts to prevent single large time jumps from occurring)
"""
SIM = 0
BASE = 1
REAL = 2
class TimeFormat(Enum):
"""Specifies the format time values are provided in.
Category: Enums
"""
SECONDS = 0
MILLISECONDS = 1
class Permission(Enum):
"""Permissions that can be requested from the OS.

View file

@ -32,6 +32,8 @@ class NetworkSubsystem:
# For debugging.
self.v1_test_log: str = ''
self.v1_ctest_results: dict[int, str] = {}
self.connectivity_state = 'uninited'
self.transport_state = 'uninited'
self.server_time_offset_hours: float | None = None
@property

View file

@ -6,9 +6,7 @@ from __future__ import annotations
import logging
import importlib.util
from typing import TYPE_CHECKING
from typing_extensions import override
from typing import TYPE_CHECKING, override
import _babase
from babase._appsubsystem import AppSubsystem

View file

@ -3,9 +3,7 @@
"""UI related bits of babase."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing_extensions import override
from typing import TYPE_CHECKING, override
from babase._stringedit import StringEditAdapter
import _babase

View file

@ -133,10 +133,15 @@ def create_user_system_scripts() -> None:
if env.python_directory_app is None:
raise RuntimeError('app python dir unset')
path = f'{env.python_directory_user}/sys/{env.version}'
path = f'{env.python_directory_user}/sys/{env.engine_version}'
pathtmp = path + '_tmp'
if os.path.exists(path):
shutil.rmtree(path)
print('Delete Existing User Scripts first!')
_babase.screenmessage(
'Delete Existing User Scripts first!',
color=(1, 0, 0),
)
return
if os.path.exists(pathtmp):
shutil.rmtree(pathtmp)
@ -159,6 +164,7 @@ def create_user_system_scripts() -> None:
f"'\nRestart {_babase.appname()} to use them."
f' (use babase.quit() to exit the game)'
)
_babase.screenmessage('Created User System Scripts', color=(0, 1, 0))
if app.classic is not None and app.classic.platform == 'android':
print(
'Note: the new files may not be visible via '
@ -175,16 +181,18 @@ def delete_user_system_scripts() -> None:
if env.python_directory_user is None:
raise RuntimeError('user python dir unset')
path = f'{env.python_directory_user}/sys/{env.version}'
path = f'{env.python_directory_user}/sys/{env.engine_version}'
if os.path.exists(path):
shutil.rmtree(path)
print(
f'User system scripts deleted.\n'
f'Restart {_babase.appname()} to use internal'
f' scripts. (use babase.quit() to exit the game)'
print('User system scripts deleted.')
_babase.screenmessage('Deleted User System Scripts', color=(0, 1, 0))
_babase.screenmessage(
f'Closing {_babase.appname()} to make changes.', color=(0, 1, 0)
)
_babase.apptimer(2.0, _babase.quit)
else:
print(f"User system scripts not found at '{path}'.")
_babase.screenmessage('User Scripts Not Found', color=(1, 0, 0))
# If the sys path is empty, kill it.
dpath = env.python_directory_user + '/sys'

View file

@ -152,9 +152,9 @@ class AccountV1Subsystem:
"""(internal)"""
for entry in info:
cache_entry = self.tournament_info[
entry['tournamentID']
] = copy.deepcopy(entry)
cache_entry = self.tournament_info[entry['tournamentID']] = (
copy.deepcopy(entry)
)
# Also store the time we received this, so we can adjust
# time-remaining values/etc.

View file

@ -75,9 +75,9 @@ class AchievementSubsystem:
def __init__(self) -> None:
self.achievements: list[Achievement] = []
self.achievements_to_display: (
list[tuple[baclassic.Achievement, bool]]
) = []
self.achievements_to_display: list[
tuple[baclassic.Achievement, bool]
] = []
self.achievement_display_timer: bascenev1.BaseTimer | None = None
self.last_achievement_display_time: float = 0.0
self.achievement_completion_banner_slots: set[int] = set()

View file

@ -5,9 +5,8 @@ from __future__ import annotations
import random
from dataclasses import dataclass
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
import bascenev1
import _baclassic

View file

@ -13,7 +13,10 @@ if TYPE_CHECKING:
def get_input_device_mapped_value(
devicename: str, unique_id: str, name: str
devicename: str,
unique_id: str,
name: str,
default: bool = False,
) -> Any:
"""Returns a mapped value for an input device.
@ -30,8 +33,9 @@ def get_input_device_mapped_value(
subplatform = app.classic.subplatform
appconfig = babase.app.config
# If there's an entry in our config for this controller, use it.
if 'Controllers' in appconfig:
# If there's an entry in our config for this controller and
# we're not looking for our default mappings, use it.
if 'Controllers' in appconfig and not default:
ccfgs = appconfig['Controllers']
if devicename in ccfgs:
mapping = None

View file

@ -7,9 +7,8 @@ import copy
import weakref
import threading
from enum import Enum
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
import bascenev1

View file

@ -102,8 +102,8 @@ class ServerController:
self._shutdown_reason: ShutdownReason | None = None
self._executing_shutdown = False
# Make note if they want us to import a playlist;
# we'll need to do that first if so.
# Make note if they want us to import a playlist; we'll need to
# do that first if so.
self._playlist_fetch_running = self._config.playlist_code is not None
self._playlist_fetch_sent_request = False
self._playlist_fetch_got_response = False
@ -216,7 +216,7 @@ class ServerController:
'bsAccessCheck',
{
'port': bascenev1.get_game_port(),
'b': babase.app.env.build_number,
'b': babase.app.env.engine_build_number,
},
callback=self._access_check_response,
)
@ -304,7 +304,7 @@ class ServerController:
) -> None:
if result is None:
print('Error fetching playlist; aborting.')
print('Falling back to use default playlist.') #BCS
print('Falling back to use default playlist.')
self._config.session_type = "teams"
self._prep_timer = None
babase.pushcall(self._launch_server_session)
@ -314,9 +314,7 @@ class ServerController:
typename = (
'teams'
if result['playlistType'] == 'Team Tournament'
else 'ffa'
if result['playlistType'] == 'Free-for-All'
else '??'
else 'ffa' if result['playlistType'] == 'Free-for-All' else '??'
)
plistname = result['playlistName']
print(f'{Clr.SBLU}Got playlist: "{plistname}" ({typename}).{Clr.RST}')
@ -372,7 +370,8 @@ class ServerController:
raise RuntimeError(f'Unknown session type {sessiontype}')
# Need to add this in a transaction instead of just setting
# it directly or it will get overwritten by the master-server.
# it directly or it will get overwritten by the
# master-server.
plus.add_v1_account_transaction(
{
'type': 'ADD_PLAYLIST',
@ -386,22 +385,23 @@ class ServerController:
if self._first_run:
curtimestr = time.strftime('%c')
startupmsg = (
f'{Clr.BLD}{Clr.BLU}{babase.appnameupper()} {app.env.version}'
f' ({app.env.build_number})'
f'{Clr.BLD}{Clr.BLU}{babase.appnameupper()}'
f' {app.env.engine_version}'
f' ({app.env.engine_build_number})'
f' entering server-mode {curtimestr}{Clr.RST}'
)
logging.info(startupmsg)
if sessiontype is bascenev1.FreeForAllSession:
appcfg['Free-for-All Playlist Selection'] = self._playlist_name
appcfg[
'Free-for-All Playlist Randomize'
] = self._config.playlist_shuffle
appcfg['Free-for-All Playlist Randomize'] = (
self._config.playlist_shuffle
)
elif sessiontype is bascenev1.DualTeamSession:
appcfg['Team Tournament Playlist Selection'] = self._playlist_name
appcfg[
'Team Tournament Playlist Randomize'
] = self._config.playlist_shuffle
appcfg['Team Tournament Playlist Randomize'] = (
self._config.playlist_shuffle
)
elif sessiontype is bascenev1.CoopSession:
classic.coop_session_args = {
'campaign': self._config.coop_campaign,
@ -410,6 +410,10 @@ class ServerController:
else:
raise RuntimeError(f'Unknown session type {sessiontype}')
appcfg['Teams Series Length'] = self._config.teams_series_length
appcfg['FFA Series Length'] = self._config.ffa_series_length
# Deprecated; left here in order to not break mods.
classic.teams_series_length = self._config.teams_series_length
classic.ffa_series_length = self._config.ffa_series_length
@ -425,12 +429,23 @@ class ServerController:
bascenev1.set_public_party_queue_enabled(self._config.enable_queue)
bascenev1.set_public_party_name(self._config.party_name)
bascenev1.set_public_party_stats_url(self._config.stats_url)
bascenev1.set_public_party_public_address_ipv4(
self._config.public_ipv4_address
)
bascenev1.set_public_party_public_address_ipv6(
self._config.public_ipv6_address
)
bascenev1.set_public_party_enabled(self._config.party_is_public)
bascenev1.set_player_rejoin_cooldown(
self._config.player_rejoin_cooldown
)
bascenev1.set_max_players_override(
self._config.session_max_players_override
)
# And here.. we.. go.
if self._config.stress_test_players is not None:
# Special case: run a stress test.

View file

@ -7,6 +7,8 @@ from __future__ import annotations
import logging
from typing import TYPE_CHECKING
from efro.util import utc_now
import babase
import bascenev1
@ -522,10 +524,10 @@ class StoreSubsystem:
if item in sales_raw:
if not plus.get_purchased(item):
to_end = (
datetime.datetime.utcfromtimestamp(
sales_raw[item]['e']
datetime.datetime.fromtimestamp(
sales_raw[item]['e'], datetime.UTC
)
- datetime.datetime.utcnow()
- utc_now()
).total_seconds()
if to_end > 0:
sale_times.append(int(to_end * 1000))

View file

@ -3,12 +3,11 @@
"""Provides classic app subsystem."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
import random
import logging
import weakref
from typing_extensions import override
from efro.dataclassio import dataclass_from_dict
import babase
import bauiv1
@ -103,8 +102,8 @@ class ClassicSubsystem(babase.AppSubsystem):
self.maps: dict[str, type[bascenev1.Map]] = {}
# Gameplay.
self.teams_series_length = 7
self.ffa_series_length = 24
self.teams_series_length = 7 # deprecated, left for old mods
self.ffa_series_length = 24 # deprecated, left for old mods
self.coop_session_args: dict = {}
# UI.
@ -575,15 +574,18 @@ class ClassicSubsystem(babase.AppSubsystem):
)
def get_input_device_mapped_value(
self, device: bascenev1.InputDevice, name: str
self,
device: bascenev1.InputDevice,
name: str,
default: bool = False,
) -> Any:
"""Returns a mapped value for an input device.
"""Return a mapped value for an input device.
This checks the user config and falls back to default values
where available.
"""
return _input.get_input_device_mapped_value(
device.name, device.unique_identifier, name
device.name, device.unique_identifier, name, default
)
def get_input_device_map_hash(

View file

@ -35,10 +35,12 @@ def get_tournament_prize_strings(entry: dict[str, Any]) -> list[str]:
prval = (
''
if rng is None
else ('#' + str(rng[0]))
else (
('#' + str(rng[0]))
if (rng[0] == rng[1])
else ('#' + str(rng[0]) + '-' + str(rng[1]))
)
)
pvval = ''
if trophy_type is not None:
pvval += get_trophy_string(trophy_type)

View file

@ -6,9 +6,8 @@ from __future__ import annotations
import logging
import threading
from collections import deque
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
from baclassic._music import MusicPlayer

View file

@ -7,9 +7,8 @@ import os
import random
import logging
import threading
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
from baclassic._music import MusicPlayer

View file

@ -15,7 +15,7 @@ if TYPE_CHECKING:
class AppInterfaceIdiom(Enum):
"""A general form-factor or way of experiencing a Ballistica app.
"""A general form-factor or method of experiencing a Ballistica app.
Note that it is possible for a running app to switch idioms (for
instance if a mobile device or computer is connected to a TV).
@ -32,11 +32,11 @@ class AppExperience(Enum):
"""A particular experience that can be provided by a Ballistica app.
This is one metric used to isolate different playerbases from
eachother where there might be no technical barriers doing so.
For example, a casual one-hand-playable phone game and an augmented
each other where there might be no technical barriers doing so. For
example, a casual one-hand-playable phone game and an augmented
reality tabletop game may both use the same scene-versions and
networking-protocols and whatnot, but it would make no sense to
allow players of one join servers for the other. AppExperience can
allow players of one to join servers of the other. AppExperience can
be used to keep these player bases separate.
Generally a single Ballistica app targets a single AppExperience.
@ -47,13 +47,14 @@ class AppExperience(Enum):
visible to client apps designed for that play style.
"""
# An experience that is supported everywhere. Used
# for the default empty AppMode when starting the app, etc.
# An experience that is supported everywhere. Used for the default
# empty AppMode when starting the app, etc.
EMPTY = 'empty'
# The traditional BombSquad experience: multiple players using
# controllers in a single arena small enough for all action to be
# viewed on a single screen.
# traditional game controllers (or touch screen equivalents) in a
# single arena small enough for all action to be viewed on a single
# screen.
MELEE = 'melee'
# The traditional BombSquad Remote experience; buttons on a
@ -72,7 +73,7 @@ class AppArchitecture(Enum):
class AppPlatform(Enum):
"""Overall platform a Ballistica build can be targeting.
"""Overall platform a Ballistica build is targeting.
Each distinct flavor of an app has a unique combination
of AppPlatform and AppVariant. Generally platform describes
@ -124,8 +125,9 @@ class AppInstanceInfo:
"""General info about an individual running app."""
name = Annotated[str, IOAttrs('n')]
version = Annotated[str, IOAttrs('v')]
build = Annotated[int, IOAttrs('b')]
engine_version = Annotated[str, IOAttrs('ev')]
engine_build = Annotated[int, IOAttrs('eb')]
platform = Annotated[AppPlatform, IOAttrs('p')]
variant = Annotated[AppVariant, IOAttrs('va')]

View file

@ -4,10 +4,9 @@
from __future__ import annotations
from dataclasses import dataclass, field
from typing import TYPE_CHECKING, Annotated
from typing import TYPE_CHECKING, Annotated, override
from enum import Enum
from typing_extensions import override
from efro.message import Message, Response
from efro.dataclassio import ioprepped, IOAttrs
from bacommon.transfer import DirectoryManifest
@ -33,9 +32,12 @@ class LoginProxyRequestMessage(Message):
class LoginProxyRequestResponse(Response):
"""Response to a request for a login proxy."""
# URL to direct the user to for login.
# URL to direct the user to for sign in.
url: Annotated[str, IOAttrs('u')]
# URL to use for overlay-web-browser sign ins.
url_overlay: Annotated[str, IOAttrs('uo')]
# Proxy-Login id for querying results.
proxyid: Annotated[str, IOAttrs('p')]
@ -123,24 +125,25 @@ class TestResponse(Response):
@ioprepped
@dataclass
class PromoCodeMessage(Message):
"""User is entering a promo code"""
class SendInfoMessage(Message):
"""User is using the send-info function"""
code: Annotated[str, IOAttrs('c')]
description: Annotated[str, IOAttrs('c')]
@override
@classmethod
def get_response_types(cls) -> list[type[Response] | None]:
return [PromoCodeResponse]
return [SendInfoResponse]
@ioprepped
@dataclass
class PromoCodeResponse(Response):
"""Applied that promo code for ya, boss."""
class SendInfoResponse(Response):
"""Response to sending into the server."""
valid: Annotated[bool, IOAttrs('v')]
handled: Annotated[bool, IOAttrs('v')]
message: Annotated[str | None, IOAttrs('m', store_default=False)] = None
legacy_code: Annotated[str | None, IOAttrs('l', store_default=False)] = None
@ioprepped

View file

@ -20,6 +20,11 @@ class ServerNodeEntry:
"""Information about a specific server."""
zone: Annotated[str, IOAttrs('r')]
# TODO: Remove soft_default after all master-servers upgraded.
latlong: Annotated[
tuple[float, float] | None, IOAttrs('ll', soft_default=None)
]
address: Annotated[str, IOAttrs('a')]
port: Annotated[int, IOAttrs('p')]
@ -32,6 +37,16 @@ class ServerNodeQueryResponse:
# The current utc time on the master server.
time: Annotated[datetime.datetime, IOAttrs('t')]
# Where the master server sees the query as coming from.
latlong: Annotated[tuple[float, float] | None, IOAttrs('ll')]
ping_per_dist: Annotated[float, IOAttrs('ppd')]
max_dist: Annotated[float, IOAttrs('md')]
debug_log_seconds: Annotated[
float | None, IOAttrs('d', store_default=False)
] = None
# If present, something went wrong, and this describes it.
error: Annotated[str | None, IOAttrs('e', store_default=False)] = None
@ -78,6 +93,7 @@ class PrivatePartyConnectResult:
"""Info about a server we get back when connecting."""
error: str | None = None
addr: str | None = None
address4: Annotated[str | None, IOAttrs('addr')] = None
address6: Annotated[str | None, IOAttrs('addr6')] = None
port: int | None = None
password: str | None = None

View file

@ -22,109 +22,138 @@ class ServerConfig:
party_name: str = 'FFA'
# If True, your party will show up in the global public party list
# Otherwise it will still be joinable via LAN or connecting by IP address.
# Otherwise it will still be joinable via LAN or connecting by IP
# address.
party_is_public: bool = True
# If True, all connecting clients will be authenticated through the master
# server to screen for fake account info. Generally this should always
# be enabled unless you are hosting on a LAN with no internet connection.
# If True, all connecting clients will be authenticated through the
# master server to screen for fake account info. Generally this
# should always be enabled unless you are hosting on a LAN with no
# internet connection.
authenticate_clients: bool = True
# IDs of server admins. Server admins are not kickable through the default
# kick vote system and they are able to kick players without a vote. To get
# your account id, enter 'getaccountid' in settings->advanced->enter-code.
# IDs of server admins. Server admins are not kickable through the
# default kick vote system and they are able to kick players without
# a vote. To get your account id, enter 'getaccountid' in
# settings->advanced->enter-code.
admins: list[str] = field(default_factory=list)
# Whether the default kick-voting system is enabled.
enable_default_kick_voting: bool = True
# UDP port to host on. Change this to work around firewalls or run multiple
# servers on one machine.
# 43210 is the default and the only port that will show up in the LAN
# browser tab.
# To be included in the public server list, your server MUST be
# accessible via an ipv4 address. By default, the master server will
# try to use the address your server contacts it from, but this may
# be an ipv6 address these days so you may need to provide an ipv4
# address explicitly.
public_ipv4_address: str | None = None
# You can optionally provide an ipv6 address for your server for the
# public server list. Unlike ipv4, a server is not required to have
# an ipv6 address to appear in the list, but is still good to
# provide when available since more and more devices are using ipv6
# these days. Your server's ipv6 address will be autodetected if
# your server uses ipv6 when communicating with the master server. You
# can pass an empty string here to explicitly disable the ipv6
# address.
public_ipv6_address: str | None = None
# UDP port to host on. Change this to work around firewalls or run
# multiple servers on one machine.
#
# 43210 is the default and the only port that will show up in the
# LAN browser tab.
port: int = 43210
# Max devices in the party. Note that this does *NOT* mean max players.
# Any device in the party can have more than one player on it if they have
# multiple controllers. Also, this number currently includes the server so
# generally make it 1 bigger than you need. Max-players is not currently
# exposed but I'll try to add that soon.
# Max devices in the party. Note that this does *NOT* mean max
# players. Any device in the party can have more than one player on
# it if they have multiple controllers. Also, this number currently
# includes the server so generally make it 1 bigger than you need.
max_party_size: int = 6
# Options here are 'ffa' (free-for-all), 'teams' and 'coop' (cooperative)
# This value is ignored if you supply a playlist_code (see below).
# Max players that can join a session. If present this will override
# the session's preferred max_players. if a value below 0 is given
# player limit will be removed.
session_max_players_override: int | None = None
# Options here are 'ffa' (free-for-all), 'teams' and 'coop'
# (cooperative) This value is ignored if you supply a playlist_code
# (see below).
session_type: str = 'ffa'
# Playlist-code for teams or free-for-all mode sessions.
# To host your own custom playlists, use the 'share' functionality in the
# playlist editor in the regular version of the game.
# This will give you a numeric code you can enter here to host that
# playlist.
# Playlist-code for teams or free-for-all mode sessions. To host
# your own custom playlists, use the 'share' functionality in the
# playlist editor in the regular version of the game. This will give
# you a numeric code you can enter here to host that playlist.
playlist_code: int | None = None
# Alternately, you can embed playlist data here instead of using codes.
# Make sure to set session_type to the correct type for the data here.
# Alternately, you can embed playlist data here instead of using
# codes. Make sure to set session_type to the correct type for the
# data here.
playlist_inline: list[dict[str, Any]] | None = None
# Whether to shuffle the playlist or play its games in designated order.
# Whether to shuffle the playlist or play its games in designated
# order.
playlist_shuffle: bool = True
# If True, keeps team sizes equal by disallowing joining the largest team
# (teams mode only).
# If True, keeps team sizes equal by disallowing joining the largest
# team (teams mode only).
auto_balance_teams: bool = True
# The campaign used when in co-op session mode.
# Do print(ba.app.campaigns) to see available campaign names.
# The campaign used when in co-op session mode. Do
# print(ba.app.campaigns) to see available campaign names.
coop_campaign: str = 'Easy'
# The level name within the campaign used in co-op session mode.
# For campaign name FOO, do print(ba.app.campaigns['FOO'].levels) to see
# The level name within the campaign used in co-op session mode. For
# campaign name FOO, do print(ba.app.campaigns['FOO'].levels) to see
# available level names.
coop_level: str = 'Onslaught Training'
# Whether to enable telnet access.
# IMPORTANT: This option is no longer available, as it was being used
# for exploits. Live access to the running server is still possible through
# the mgr.cmd() function in the server script. Run your server through
# tools such as 'screen' or 'tmux' and you can reconnect to it remotely
# over a secure ssh connection.
#
# IMPORTANT: This option is no longer available, as it was being
# used for exploits. Live access to the running server is still
# possible through the mgr.cmd() function in the server script. Run
# your server through tools such as 'screen' or 'tmux' and you can
# reconnect to it remotely over a secure ssh connection.
enable_telnet: bool = False
# Series length in teams mode (7 == 'best-of-7' series; a team must
# get 4 wins)
teams_series_length: int = 7
# Points to win in free-for-all mode (Points are awarded per game based on
# performance)
# Points to win in free-for-all mode (Points are awarded per game
# based on performance)
ffa_series_length: int = 24
# If you have a custom stats webpage for your server, you can use this
# to provide a convenient in-game link to it in the server-browser
# alongside the server name.
# If you have a custom stats webpage for your server, you can use
# this to provide a convenient in-game link to it in the
# server-browser alongside the server name.
#
# if ${ACCOUNT} is present in the string, it will be replaced by the
# currently-signed-in account's id. To fetch info about an account,
# your back-end server can use the following url:
# https://legacy.ballistica.net/accountquery?id=ACCOUNT_ID_HERE
stats_url: str | None = None
# If present, the server subprocess will attempt to gracefully exit after
# this amount of time. A graceful exit can occur at the end of a series
# or other opportune time. Server-managers set to auto-restart (the
# default) will then spin up a fresh subprocess. This mechanism can be
# useful to clear out any memory leaks or other accumulated bad state
# in the server subprocess.
# If present, the server subprocess will attempt to gracefully exit
# after this amount of time. A graceful exit can occur at the end of
# a series or other opportune time. Server-managers set to
# auto-restart (the default) will then spin up a fresh subprocess.
# This mechanism can be useful to clear out any memory leaks or
# other accumulated bad state in the server subprocess.
clean_exit_minutes: float | None = None
# If present, the server subprocess will shut down immediately after this
# amount of time. This can be useful as a fallback for clean_exit_time.
# The server manager will then spin up a fresh server subprocess if
# auto-restart is enabled (the default).
# If present, the server subprocess will shut down immediately after
# this amount of time. This can be useful as a fallback for
# clean_exit_time. The server manager will then spin up a fresh
# server subprocess if auto-restart is enabled (the default).
unclean_exit_minutes: float | None = None
# If present, the server subprocess will shut down immediately if this
# amount of time passes with no activity from any players. The server
# manager will then spin up a fresh server subprocess if auto-restart is
# enabled (the default).
# If present, the server subprocess will shut down immediately if
# this amount of time passes with no activity from any players. The
# server manager will then spin up a fresh server subprocess if
# auto-restart is enabled (the default).
idle_exit_minutes: float | None = None
# Should the tutorial be shown at the beginning of games?
@ -138,9 +167,9 @@ class ServerConfig:
tuple[tuple[float, float, float], tuple[float, float, float]] | None
) = None
# Whether to enable the queue where players can line up before entering
# your server. Disabling this can be used as a workaround to deal with
# queue spamming attacks.
# Whether to enable the queue where players can line up before
# entering your server. Disabling this can be used as a workaround
# to deal with queue spamming attacks.
enable_queue: bool = True
# Protocol version we host with. Currently the default is 33 which
@ -158,9 +187,9 @@ class ServerConfig:
player_rejoin_cooldown: float = 10.0
# NOTE: as much as possible, communication from the server-manager to the
# child-process should go through these and not ad-hoc Python string commands
# since this way is type safe.
# NOTE: as much as possible, communication from the server-manager to
# the child-process should go through these and not ad-hoc Python string
# commands since this way is type safe.
class ServerCommand:
"""Base class for commands that can be sent to the server."""

View file

@ -31,7 +31,9 @@ class DirectoryManifest:
files: Annotated[dict[str, DirectoryManifestFile], IOAttrs('f')]
# _empty_hash: str | None = None
# Soft-default added April 2024; can remove eventually once this
# attr is widespread in client.
exists: Annotated[bool, IOAttrs('e', soft_default=True)]
@classmethod
def create_from_disk(cls, path: Path) -> DirectoryManifest:
@ -42,6 +44,8 @@ class DirectoryManifest:
pathstr = str(path)
paths: list[str] = []
exists = path.exists()
if path.is_dir():
# Build the full list of relative paths.
for basename, _dirnames, filenames in os.walk(path):
@ -51,7 +55,7 @@ class DirectoryManifest:
# Make sure we end up with forward slashes no matter
# what the os.* stuff above here was using.
paths.append(Path(fullname[len(pathstr) + 1 :]).as_posix())
elif path.exists():
elif exists:
# Just return a single file entry if path is not a dir.
paths.append(path.as_posix())
@ -76,7 +80,9 @@ class DirectoryManifest:
if cpus is None:
cpus = 4
with ThreadPoolExecutor(max_workers=cpus) as executor:
return cls(files=dict(executor.map(_get_file_info, paths)))
return cls(
files=dict(executor.map(_get_file_info, paths)), exists=exists
)
def validate(self) -> None:
"""Log any odd data in the manifest; for debugging."""

View file

@ -52,8 +52,8 @@ if TYPE_CHECKING:
# Build number and version of the ballistica binary we expect to be
# using.
TARGET_BALLISTICA_BUILD = 21766
TARGET_BALLISTICA_VERSION = '1.7.33'
TARGET_BALLISTICA_BUILD = 21879
TARGET_BALLISTICA_VERSION = '1.7.35'
@dataclass
@ -264,6 +264,10 @@ def _calc_data_dir(data_dir: str | None) -> str:
def _setup_logging() -> LogHandler:
from efro.log import setup_logging, LogLevel
# TODO: should set this up with individual loggers under a top level
# 'ba' logger, and at that point we can kill off the
# suppress_non_root_debug option since we'll only ever need to set
# 'ba' to DEBUG at most.
log_handler = setup_logging(
log_path=None,
level=LogLevel.DEBUG,

View file

@ -57,8 +57,7 @@ class CloudSubsystem(babase.AppSubsystem):
on_response: Callable[
[bacommon.cloud.LoginProxyRequestResponse | Exception], None
],
) -> None:
...
) -> None: ...
@overload
def send_message_cb(
@ -67,24 +66,21 @@ class CloudSubsystem(babase.AppSubsystem):
on_response: Callable[
[bacommon.cloud.LoginProxyStateQueryResponse | Exception], None
],
) -> None:
...
) -> None: ...
@overload
def send_message_cb(
self,
msg: bacommon.cloud.LoginProxyCompleteMessage,
on_response: Callable[[None | Exception], None],
) -> None:
...
) -> None: ...
@overload
def send_message_cb(
self,
msg: bacommon.cloud.PingMessage,
on_response: Callable[[bacommon.cloud.PingResponse | Exception], None],
) -> None:
...
) -> None: ...
@overload
def send_message_cb(
@ -93,8 +89,7 @@ class CloudSubsystem(babase.AppSubsystem):
on_response: Callable[
[bacommon.cloud.SignInResponse | Exception], None
],
) -> None:
...
) -> None: ...
@overload
def send_message_cb(
@ -103,8 +98,7 @@ class CloudSubsystem(babase.AppSubsystem):
on_response: Callable[
[bacommon.cloud.ManageAccountResponse | Exception], None
],
) -> None:
...
) -> None: ...
def send_message_cb(
self,
@ -129,20 +123,17 @@ class CloudSubsystem(babase.AppSubsystem):
@overload
def send_message(
self, msg: bacommon.cloud.WorkspaceFetchMessage
) -> bacommon.cloud.WorkspaceFetchResponse:
...
) -> bacommon.cloud.WorkspaceFetchResponse: ...
@overload
def send_message(
self, msg: bacommon.cloud.MerchAvailabilityMessage
) -> bacommon.cloud.MerchAvailabilityResponse:
...
) -> bacommon.cloud.MerchAvailabilityResponse: ...
@overload
def send_message(
self, msg: bacommon.cloud.TestMessage
) -> bacommon.cloud.TestResponse:
...
) -> bacommon.cloud.TestResponse: ...
def send_message(self, msg: Message) -> Response | None:
"""Synchronously send a message to the cloud.
@ -153,15 +144,13 @@ class CloudSubsystem(babase.AppSubsystem):
@overload
async def send_message_async(
self, msg: bacommon.cloud.PromoCodeMessage
) -> bacommon.cloud.PromoCodeResponse:
...
self, msg: bacommon.cloud.SendInfoMessage
) -> bacommon.cloud.SendInfoResponse: ...
@overload
async def send_message_async(
self, msg: bacommon.cloud.TestMessage
) -> bacommon.cloud.TestResponse:
...
) -> bacommon.cloud.TestResponse: ...
async def send_message_async(self, msg: Message) -> Response | None:
"""Synchronously send a message to the cloud.

View file

@ -3,9 +3,8 @@
"""Provides plus app subsystem."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
from babase import AppSubsystem
import _baplus

View file

@ -120,6 +120,7 @@ from _bascenev1 import (
release_keyboard_input,
reset_random_player_names,
resume_replay,
seek_replay,
broadcastmessage,
SessionData,
SessionPlayer,
@ -133,6 +134,8 @@ from _bascenev1 import (
set_public_party_enabled,
set_public_party_max_size,
set_public_party_name,
set_public_party_public_address_ipv4,
set_public_party_public_address_ipv6,
set_public_party_queue_enabled,
set_public_party_stats_url,
set_replay_speed_exponent,
@ -231,7 +234,11 @@ from bascenev1._settings import (
IntSetting,
Setting,
)
from bascenev1._session import Session, set_player_rejoin_cooldown
from bascenev1._session import (
Session,
set_player_rejoin_cooldown,
set_max_players_override,
)
from bascenev1._stats import PlayerScoredMessage, PlayerRecord, Stats
from bascenev1._team import SessionTeam, Team, EmptyTeam
from bascenev1._teamgame import TeamGameActivity
@ -400,6 +407,7 @@ __all__ = [
'release_keyboard_input',
'reset_random_player_names',
'resume_replay',
'seek_replay',
'safecolor',
'screenmessage',
'SceneV1AppMode',
@ -423,9 +431,12 @@ __all__ = [
'set_public_party_enabled',
'set_public_party_max_size',
'set_public_party_name',
'set_public_party_public_address_ipv4',
'set_public_party_public_address_ipv6',
'set_public_party_queue_enabled',
'set_public_party_stats_url',
'set_player_rejoin_cooldown',
'set_max_players_override',
'set_replay_speed_exponent',
'set_touchscreen_editing',
'setmusic',

View file

@ -3,9 +3,8 @@
"""Some handy base class and special purpose Activity types."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
import _bascenev1
@ -203,9 +202,11 @@ class ScoreScreenActivity(Activity[EmptyPlayer, EmptyTeam]):
sval = babase.Lstr(resource='pressAnyButtonText')
Text(
(
self._custom_continue_message
if self._custom_continue_message is not None
else sval,
else sval
),
v_attach=Text.VAttach.BOTTOM,
h_align=Text.HAlign.CENTER,
flash=True,

View file

@ -198,12 +198,14 @@ class Actor:
# Overloads to convey our exact return type depending on 'doraise' value.
@overload
def getactivity(self, doraise: Literal[True] = True) -> bascenev1.Activity:
...
def getactivity(
self, doraise: Literal[True] = True
) -> bascenev1.Activity: ...
@overload
def getactivity(self, doraise: Literal[False]) -> bascenev1.Activity | None:
...
def getactivity(
self, doraise: Literal[False]
) -> bascenev1.Activity | None: ...
def getactivity(self, doraise: bool = True) -> bascenev1.Activity | None:
"""Return the bascenev1.Activity this Actor is associated with.

View file

@ -3,9 +3,8 @@
"""Provides AppMode functionality."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
from bacommon.app import AppExperience
from babase import (
app,

View file

@ -4,9 +4,8 @@
from __future__ import annotations
import logging
from typing import TYPE_CHECKING, TypeVar
from typing import TYPE_CHECKING, TypeVar, override
from typing_extensions import override
import babase
import _bascenev1

View file

@ -3,9 +3,8 @@
"""Functionality related to coop-mode sessions."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
import _bascenev1
@ -61,6 +60,10 @@ class CoopSession(Session):
max_players = classic.coop_session_args['max_players']
else:
max_players = app.config.get('Coop Game Max Players', 4)
if 'submit_score' in classic.coop_session_args:
submit_score = classic.coop_session_args['submit_score']
else:
submit_score = True
# print('FIXME: COOP SESSION WOULD CALC DEPS.')
depsets: Sequence[bascenev1.DependencySet] = []
@ -71,6 +74,7 @@ class CoopSession(Session):
team_colors=TEAM_COLORS,
min_players=min_players,
max_players=max_players,
submit_score=submit_score,
)
# Tournament-ID if we correspond to a co-op tournament (otherwise None)
@ -346,7 +350,10 @@ class CoopSession(Session):
self.setactivity(next_game)
if not (env.demo or env.arcade):
if self.tournament_id is not None:
if (
self.tournament_id is not None
and classic.coop_session_args['submit_score']
):
self._custom_menu_ui = [
{
'label': babase.Lstr(resource='restartText'),

View file

@ -5,9 +5,8 @@
from __future__ import annotations
import weakref
from typing import Generic, TypeVar, TYPE_CHECKING
from typing import Generic, TypeVar, TYPE_CHECKING, override
from typing_extensions import override
import babase
import _bascenev1

View file

@ -3,9 +3,8 @@
"""Functionality related to teams sessions."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
import _bascenev1

View file

@ -4,9 +4,8 @@
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
import _bascenev1

View file

@ -7,9 +7,8 @@ from __future__ import annotations
import random
import logging
from typing import TYPE_CHECKING, TypeVar
from typing import TYPE_CHECKING, TypeVar, override
from typing_extensions import override
import babase
import _bascenev1

View file

@ -42,9 +42,9 @@ class GameResults:
self._scores: dict[
int, tuple[weakref.ref[bascenev1.SessionTeam], int | None]
] = {}
self._sessionteams: list[
weakref.ref[bascenev1.SessionTeam]
] | None = None
self._sessionteams: list[weakref.ref[bascenev1.SessionTeam]] | None = (
None
)
self._playerinfos: list[bascenev1.PlayerInfo] | None = None
self._lower_is_better: bool | None = None
self._score_label: str | None = None

View file

@ -5,9 +5,8 @@ from __future__ import annotations
import copy
import weakref
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
if TYPE_CHECKING:
@ -73,9 +72,11 @@ class Level:
return babase.Lstr(
translate=(
'coopLevelNames',
(
self._displayname
if self._displayname is not None
else self._name,
else self._name
),
),
subs=[
('${GAME}', self._gametype.get_display_string(self._settings))

View file

@ -4,9 +4,8 @@
from __future__ import annotations
import random
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
import _bascenev1
@ -256,9 +255,7 @@ class Map(Actor):
return (
None
if val is None
else babase.vec3validate(val)
if __debug__
else val
else babase.vec3validate(val) if __debug__ else val
)
def get_def_points(self, name: str) -> list[Sequence[float]]:
@ -334,8 +331,7 @@ class Map(Actor):
closest_player_dist = 9999.0
for ppt in player_pts:
dist = (ppt - testpt).length()
if dist < closest_player_dist:
closest_player_dist = dist
closest_player_dist = min(dist, closest_player_dist)
if closest_player_dist > farthestpt_dist:
farthestpt_dist = closest_player_dist
farthestpt = testpt

View file

@ -6,9 +6,8 @@ from __future__ import annotations
import copy
import random
import logging
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import babase
import _bascenev1
@ -67,8 +66,8 @@ class MultiTeamSession(Session):
max_players=self.get_max_players(),
)
self._series_length: int = classic.teams_series_length
self._ffa_series_length: int = classic.ffa_series_length
self._series_length: int = int(cfg.get('Teams Series Length', 7))
self._ffa_series_length: int = int(cfg.get('FFA Series Length', 24))
show_tutorial = cfg.get('Show Tutorial', True)

View file

@ -4,9 +4,7 @@
from __future__ import annotations
from typing import TYPE_CHECKING
from typing_extensions import override
from typing import TYPE_CHECKING, override
from bascenev1._messages import DieMessage
from bascenev1._actor import Actor

View file

@ -89,18 +89,18 @@ def filter_playlist(
'bs_king_of_the_hill.KingOfTheHillGame',
'bastd.game.kingofthehill.KingOfTheHillGame',
):
entry[
'type'
] = 'bascenev1lib.game.kingofthehill.KingOfTheHillGame'
entry['type'] = (
'bascenev1lib.game.kingofthehill.KingOfTheHillGame'
)
if entry['type'] in (
'Capture_the_Flag.CTFGame',
'bsCaptureTheFlag.CTFGame',
'bs_capture_the_flag.CTFGame',
'bastd.game.capturetheflag.CaptureTheFlagGame',
):
entry[
'type'
] = 'bascenev1lib.game.capturetheflag.CaptureTheFlagGame'
entry['type'] = (
'bascenev1lib.game.capturetheflag.CaptureTheFlagGame'
)
if entry['type'] in (
'Death_Match.DeathMatchGame',
'bsDeathMatch.DeathMatchGame',
@ -163,25 +163,25 @@ def filter_playlist(
'bs_easter_egg_hunt.EasterEggHuntGame',
'bastd.game.easteregghunt.EasterEggHuntGame',
):
entry[
'type'
] = 'bascenev1lib.game.easteregghunt.EasterEggHuntGame'
entry['type'] = (
'bascenev1lib.game.easteregghunt.EasterEggHuntGame'
)
if entry['type'] in (
'bsMeteorShower.MeteorShowerGame',
'bs_meteor_shower.MeteorShowerGame',
'bastd.game.meteorshower.MeteorShowerGame',
):
entry[
'type'
] = 'bascenev1lib.game.meteorshower.MeteorShowerGame'
entry['type'] = (
'bascenev1lib.game.meteorshower.MeteorShowerGame'
)
if entry['type'] in (
'bsTargetPractice.TargetPracticeGame',
'bs_target_practice.TargetPracticeGame',
'bastd.game.targetpractice.TargetPracticeGame',
):
entry[
'type'
] = 'bascenev1lib.game.targetpractice.TargetPracticeGame'
entry['type'] = (
'bascenev1lib.game.targetpractice.TargetPracticeGame'
)
gameclass = babase.getclass(entry['type'], GameActivity)

View file

@ -23,6 +23,9 @@ if TYPE_CHECKING:
# such as skipping respawn waits.
_g_player_rejoin_cooldown: float = 0.0
# overrides the session's decision of max_players
_max_players_override: int | None = None
def set_player_rejoin_cooldown(cooldown: float) -> None:
"""Set the cooldown for individual players rejoining after leaving."""
@ -30,6 +33,12 @@ def set_player_rejoin_cooldown(cooldown: float) -> None:
_g_player_rejoin_cooldown = max(0.0, cooldown)
def set_max_players_override(max_players: int | None) -> None:
"""Set the override for how many players can join a session"""
global _max_players_override # pylint: disable=global-statement
_max_players_override = max_players
class Session:
"""Defines a high level series of bascenev1.Activity-es.
@ -91,6 +100,7 @@ class Session:
team_colors: Sequence[Sequence[float]] | None = None,
min_players: int = 1,
max_players: int = 8,
submit_score: bool = True,
):
"""Instantiate a session.
@ -161,7 +171,12 @@ class Session:
self.sessionteams = []
self.sessionplayers = []
self.min_players = min_players
self.max_players = max_players
self.max_players = (
max_players
if _max_players_override is None
else _max_players_override
)
self.submit_score = submit_score
self.customdata = {}
self._in_set_activity = False
@ -255,7 +270,7 @@ class Session:
babase.app.classic is not None
and babase.app.classic.stress_test_update_timer is None
):
if len(self.sessionplayers) >= self.max_players:
if len(self.sessionplayers) >= self.max_players >= 0:
# Print a rejection message *only* to the client trying to
# join (prevents spamming everyone else in the game).
_bascenev1.getsound('error').play()

View file

@ -5,9 +5,8 @@
from __future__ import annotations
import logging
from typing import TYPE_CHECKING, TypeVar
from typing import TYPE_CHECKING, TypeVar, override
from typing_extensions import override
import babase
import _bascenev1

View file

@ -4,7 +4,8 @@
from __future__ import annotations
from typing_extensions import override
from typing import override
import bascenev1 as bs

View file

@ -7,9 +7,8 @@ from __future__ import annotations
import random
import logging
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
from bacommon.login import LoginType
import bascenev1 as bs
import bauiv1 as bui
@ -125,6 +124,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
self._tournament_time_remaining: float | None = None
self._tournament_time_remaining_text: Text | None = None
self._tournament_time_remaining_text_timer: bs.BaseTimer | None = None
self._submit_score = self.session.submit_score
# Stuff for activity skip by pressing button
self._birth_time = bs.time()
@ -395,11 +395,15 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
color=(0.45, 0.4, 0.5),
position=(160, v_offs + 480),
size=(350, 62),
label=bui.Lstr(resource='tournamentStandingsText')
label=(
bui.Lstr(resource='tournamentStandingsText')
if self.session.tournament_id is not None
else bui.Lstr(resource='worldsBestScoresText')
else (
bui.Lstr(resource='worldsBestScoresText')
if self._score_type == 'points'
else bui.Lstr(resource='worldsBestTimesText'),
else bui.Lstr(resource='worldsBestTimesText')
)
),
autoselect=True,
on_activate_call=bui.WeakCall(self._ui_worlds_best),
transition_delay=delay + 1.9,
@ -515,9 +519,11 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
bui.containerwidget(
edit=rootc,
selected_child=next_button
selected_child=(
next_button
if (self._newly_complete and self._victory and show_next_button)
else restart_button,
else restart_button
),
on_cancel_call=menu_button.activate,
)
@ -644,6 +650,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
and not (env.demo or env.arcade)
):
Text(
(
bs.Lstr(
value='${A}:\n',
subs=[('${A}', bs.Lstr(resource='levelUnlockedText'))],
@ -652,6 +659,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
else bs.Lstr(
value='${A}:\n',
subs=[('${A}', bs.Lstr(resource='nextLevelText'))],
)
),
transition=Text.Transition.IN_RIGHT,
transition_delay=5.2,
@ -781,7 +789,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
transition_delay=2.0,
)
if self._score is not None:
if self._score is not None and self._submit_score:
bs.timer(0.4, bs.WeakCall(self._play_drumroll))
# Add us to high scores, filter, and store.
@ -860,11 +868,15 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
ts_h_offs = 210
v_offs = 40
txt = Text(
(
bs.Lstr(resource='tournamentStandingsText')
if self.session.tournament_id is not None
else bs.Lstr(resource='worldsBestScoresText')
else (
bs.Lstr(resource='worldsBestScoresText')
if self._score_type == 'points'
else bs.Lstr(resource='worldsBestTimesText'),
else bs.Lstr(resource='worldsBestTimesText')
)
),
maxwidth=210,
position=(ts_h_offs - 10, ts_height / 2 + 25 + v_offs + 20),
transition=Text.Transition.IN_LEFT,
@ -882,9 +894,11 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
ts_h_offs = -480
v_offs = 40
Text(
(
bs.Lstr(resource='yourBestScoresText')
if self._score_type == 'points'
else bs.Lstr(resource='yourBestTimesText'),
else bs.Lstr(resource='yourBestTimesText')
),
maxwidth=210,
position=(ts_h_offs - 10, ts_height / 2 + 25 + v_offs + 20),
transition=Text.Transition.IN_RIGHT,
@ -948,9 +962,11 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
tdelay1 = times[i][0]
tdelay2 = times[i][1]
Text(
(
str(display_scores[i][0])
if self._score_type == 'points'
else bs.timestring((display_scores[i][0] * 10) / 1000.0),
else bs.timestring((display_scores[i][0] * 10) / 1000.0)
),
position=(
ts_h_offs + 20 + h_offs_extra,
v_offs_extra
@ -1127,9 +1143,11 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
tdelay2 = times[i][1]
if name_str != '-':
Text(
(
str(score)
if self._score_type == 'points'
else bs.timestring((score * 10) / 1000.0),
else bs.timestring((score * 10) / 1000.0)
),
position=(
ts_h_offs + 20 + h_offs_extra,
v_offs_extra
@ -1313,9 +1331,11 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
if name_str != '-':
Text(
(
str(score)
if self._score_type == 'points'
else bs.timestring((score * 10) / 1000.0),
else bs.timestring((score * 10) / 1000.0)
),
position=(
ts_h_offs + 20 + h_offs_extra,
ts_height / 2
@ -1376,7 +1396,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
assert self._show_info is not None
available = self._show_info['results'] is not None
if available:
if available and self._submit_score:
error = (
self._show_info['results']['error']
if 'error' in self._show_info['results']
@ -1509,7 +1529,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
maxwidth=400,
transition_delay=1.0,
).autoretain()
else:
elif self._submit_score:
ZoomText(
(
('#' + str(player_rank))
@ -1689,10 +1709,14 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
)
if not self._newly_complete:
Text(
(
bs.Lstr(
value='${A}${B}',
subs=[
('${A}', bs.Lstr(resource='newPersonalBestText')),
(
'${A}',
bs.Lstr(resource='newPersonalBestText'),
),
('${B}', was_string),
],
)
@ -1700,6 +1724,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
else bs.Lstr(
resource='bestRatingText',
subs=[('${RATING}', str(best_rank))],
)
),
position=(0, -165),
color=(1, 1, 1, 0.7),
@ -1727,6 +1752,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
transition_delay=0,
).autoretain()
if self._submit_score:
bs.timer(0.35, self._score_display_sound.play)
if not error:
bs.timer(0.35, self.cymbal_sound.play)
@ -1773,6 +1799,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
jitter=1.0,
).autoretain()
Text(
(
bs.Lstr(
value='${A}:',
subs=[('${A}', bs.Lstr(resource='finalScoreText'))],
@ -1781,6 +1808,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
else bs.Lstr(
value='${A}:',
subs=[('${A}', bs.Lstr(resource='finalTimeText'))],
)
),
maxwidth=300,
position=(0, 200),

View file

@ -4,7 +4,8 @@
from __future__ import annotations
from typing_extensions import override
from typing import override
import bascenev1 as bs
from bascenev1lib.activity.multiteamscore import MultiTeamScoreScreenActivity

View file

@ -4,7 +4,8 @@
from __future__ import annotations
from typing_extensions import override
from typing import override
import bascenev1 as bs
from bascenev1lib.activity.multiteamscore import MultiTeamScoreScreenActivity

View file

@ -4,9 +4,8 @@
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import bascenev1 as bs
from bascenev1lib.activity.multiteamscore import MultiTeamScoreScreenActivity

View file

@ -4,7 +4,8 @@
from __future__ import annotations
from typing_extensions import override
from typing import override
import bascenev1 as bs
from bascenev1lib.actor.text import Text

View file

@ -3,7 +3,8 @@
"""Functionality related to teams mode score screen."""
from __future__ import annotations
from typing_extensions import override
from typing import override
import bascenev1 as bs
from bascenev1lib.actor.text import Text
@ -199,9 +200,9 @@ class MultiTeamScoreScreenActivity(bs.ScoreScreenActivity):
ts_v_offset + (voffs + 15) * scale,
),
scale=scale,
color=(1.0, 0.9, 0.5, 1.0)
if highlight
else (0.5, 0.5, 0.6, 0.5),
color=(
(1.0, 0.9, 0.5, 1.0) if highlight else (0.5, 0.5, 0.6, 0.5)
),
h_align=Text.HAlign.RIGHT,
v_align=Text.VAlign.CENTER,
maxwidth=maxwidth,

View file

@ -4,7 +4,8 @@
from __future__ import annotations
from typing_extensions import override
from typing import override
import bascenev1 as bs
from bascenev1lib.activity.multiteamscore import MultiTeamScoreScreenActivity
@ -374,9 +375,11 @@ class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
tdelay -= 4 * t_incr
v_offs -= 40
Text(
(
str(prec.team.customdata['score'])
if self._is_ffa
else str(prec.score),
else str(prec.score)
),
color=(0.5, 0.5, 0.5, 1.0),
position=(ts_h_offs + 230, ts_height / 2 + v_offs),
h_align=Text.HAlign.RIGHT,

View file

@ -7,9 +7,8 @@ from __future__ import annotations
import random
import weakref
import logging
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import bascenev1 as bs
if TYPE_CHECKING:

View file

@ -8,9 +8,8 @@
from __future__ import annotations
import random
from typing import TYPE_CHECKING, TypeVar
from typing import TYPE_CHECKING, TypeVar, override
from typing_extensions import override
import bascenev1 as bs
from bascenev1lib.gameutils import SharedObjects

View file

@ -4,9 +4,8 @@
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import bascenev1 as bs
if TYPE_CHECKING:
@ -456,9 +455,11 @@ class ControlsGuide(bs.Actor):
(
'${B}',
bs.Lstr(
resource='holdAnyKeyText'
resource=(
'holdAnyKeyText'
if all_keyboards
else 'holdAnyButtonText'
)
),
),
],

View file

@ -5,9 +5,8 @@
from __future__ import annotations
from dataclasses import dataclass
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import bascenev1 as bs
from bascenev1lib.gameutils import SharedObjects

View file

@ -5,9 +5,8 @@
from __future__ import annotations
from enum import Enum
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, override
from typing_extensions import override
import bascenev1 as bs
if TYPE_CHECKING:

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