diff --git a/i18n/locales/ar_SA.json b/i18n/locales/ar_SA.json index 603583def..d82ac7828 100644 --- a/i18n/locales/ar_SA.json +++ b/i18n/locales/ar_SA.json @@ -2473,7 +2473,8 @@ "disabled": "معطّل", "competitive": "آمن للتنافسي", "casual_only": "ودّي فقط", - "plugin_count": "{count} إضافة" + "plugin_count": "{count} إضافة", + "archived": "مؤرشف" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "تم إنشاء الخريطة بنجاح", "update": "تم تحديث الخريطة بنجاح", "delete": "تم حذف الخريطة بنجاح", + "restore": "تمت استعادة الخريطة", + "restore_description": "كانت هناك بالفعل خريطة محذوفة بهذا الاسم، فتمت استعادتها مع الحفاظ على سجل مبارياتها كاملاً.", "workshop_refresh": "تم تحديث تفاصيل خريطة Workshop بنجاح" }, "error": { "create": "تعذّر إنشاء الخريطة", "update": "تعذّر تحديث الخريطة", + "already_exists": "توجد بالفعل خريطة بهذا الاسم", "invalid_workshop": "معرّف خريطة Workshop غير صالح، تأكد من وجود المعرّف على Steam Workshop", "workshop_refresh": "تعذّر تحديث تفاصيل خريطة Workshop" }, @@ -3287,7 +3291,11 @@ "active_duty": "الخرائط النشطة", "available_modes": "متاحة في الأنماط", "workshop_id": "رابط Workshop", - "search": "ابحث عن خرائط" + "search": "ابحث عن خرائط", + "deleted_maps": "الخرائط المحذوفة", + "deleted_maps_description": "الخرائط المحذوفة مخفية من كل قوائم الخرائط وقوائم الاختيار، لكن المباريات التي لُعبت عليها تحتفظ بسجلها. الاستعادة تُرجع الخريطة كما كانت.", + "deleted_on": "حُذفت {date}", + "restore_map": "استعادة" }, "map_pool": { "toggle_pool_type": "تم تحديث قوائم الخرائط", @@ -3628,13 +3636,69 @@ "empty_installed": "لا شيء مثبّت بعد.", "readme": "نبذة", "no_readme": "لا يوجد ملف README لهذه الإضافة في مستودعها.", + "readme_loading": "جارٍ تحميل README…", "always_load": "حمّلها في كل مباراة", "always_load_hint": "حمّلها دون أن يحددها نمط لعب.", "always_load_ranked": "تُحمَّل أيضاً في المباريات المصنّفة ومباريات التوفيق.", "configure": "الإعدادات", "configure_hint": "تكتبها الإضافة عند أول تحميل، لذا تظهر بعد أن يشغّل سيرفر هذا النمط مرة واحدة.", "configure_open": "افتح الملفات", - "pending": "قيد الانتظار" + "pending": "قيد الانتظار", + "state_installed": "مثبّتة", + "state_failed": "تعذّر", + "state_absent": "غير مثبّتة", + "checked": "آخر فحص", + "never_checked": "لم تُبلّغ قط", + "status": { + "Pending": "قيد الانتظار", + "Installing": "جارٍ التثبيت…", + "Installed": "مثبّتة", + "Failed": "تعذّر", + "Removing": "جارٍ الإزالة…" + }, + "remove_confirm_title": "إزالة هذه الإضافة؟", + "remove_confirm_description": "تستخدمها {modes}. إزالتها تُخرجها من تلك الأنماط أيضاً.", + "remove_confirm_action": "أزلها على أي حال", + "guidelines": { + "badge": "تتطلب تعطيل الإرشادات", + "toggle": "عطّل إرشادات السيرفرات من Valve", + "hint": "{name} لا تستطيع القيام بعملها ما دام الإطار يطبّق إرشادات السيرفرات من Valve. السيرفرات التي تحمّلها ستبدأ وهذه الإرشادات معطّلة.", + "off_hint": "إن تركتها مفعّلة، فستُثبَّت الإضافة وتُحمَّل على أي حال — الأجزاء التي تغيّر ما يراه اللاعب لن تفعل شيئاً فحسب.", + "warning_title": "تحذير: قد يؤدي هذا إلى حظر رموز GSLT الخاصة بحسابك على Steam", + "warning_description": "بحسب Valve، التشغيل خارج إرشادات السيرفرات الرسمية قد يؤدي إلى حظر كل رمز Game Server Login Token (GSLT) في حساب Steam لمالك السيرفر. فعّلها على مسؤوليتك.", + "warning_link_label": "إرشادات السيرفرات من Valve", + "already_off": "معطّلة أصلاً في هذا النشر: تعطّل 5stack Ranks إرشادات السيرفرات من Valve لعرض الرتب داخل اللعبة، والمخاطرة المرتبطة بذلك تطال حسابك على Steam لا سيرفراً واحداً.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "أضف إضافة", + "badge": "مخصصة", + "title": "أضف إضافة غير موجودة في الدليل", + "description": "وجّه 5Stack إلى إصدار فيصبح مُدخلاً مثل غيره — قابلاً للتثبيت على كل العقد، مع التحقق من الملف المُنزَّل مقابل بصمة تُؤخذ هنا.", + "url": "رابط الإصدار", + "url_hint": "مستودع على GitHub، أو إصدار، أو رابط مباشر لملف .zip. المستودع يُحَل إلى أحدث أرشيف للينكس في آخر إصدار له.", + "runtime": "الإطار", + "runtime_placeholder": "لأي إطار هذه النسخة؟", + "runtime_hint": "نسخة CounterStrikeSharp لن تُحمَّل تحت SwiftlyS2، ولا شيء في الأرشيف يوضح أيّهما هي.", + "advanced": "تفاصيل لم نستطع قراءتها من الرابط", + "slug": "Slug", + "version": "الإصدار", + "name": "الاسم", + "summary": "الوصف", + "layout": "بنية الأرشيف", + "layout_csgo": "جذر الأرشيف هو game/csgo", + "layout_plugin": "جذر الأرشيف هو مجلد الإضافة", + "layout_hint": "معظم إضافات CS2 تأتي بأرشيف يحتوي أصلاً على addons/…؛ اختر الخيار الآخر إن كان أرشيفك يُفك مباشرة داخل مجلد الإضافة نفسه.", + "install_path": "مسار التثبيت", + "warning_title": "لم يراجع أحد هذه الإضافة", + "warning_description": "إضافة اللعبة تُحمَّل داخل عملية cs2 على أجهزتك، وتستطيع كل ما تستطيعه تلك العملية. إضافتها هنا تعني أنك تضمنها بنفسك — لا يوجد مشرف سجل بينك وبينها.", + "submit": "أضفها إلى الدليل", + "added": "تمت إضافة {name} {version}", + "remove": "أزلها من الدليل", + "remove_hint": "أزل تثبيتها من عقدك قبل إخراجها من الدليل.", + "removed": "أُزيلت من الدليل" + }, + "retry": "أعد المحاولة" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "سيؤدي هذا إلى حذف «{name}» نهائيًا، ولا يمكن التراجع عن ذلك." }, "placeholder_folder_name": "اسم المجلد", - "placeholder_file_name": "اسم الملف" + "placeholder_file_name": "اسم الملف", + "scope_node": "عقدة", + "scope_server": "سيرفر", + "missing_path": "هذا المجلد غير موجود بعد.", + "missing_path_create": "أنشئه", + "missing_path_dismiss": "تجاهل" }, "error": { "generic": "حدث خطأ، حاول مرة أخرى." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "نمط اللعب", "none": "Competitive (بلا نمط)", - "description": "يحمّل مجموعة من الإضافات ومتغيرات الكونسول على سيرفر المباراة." + "description": "يحمّل مجموعة من الإضافات ومتغيرات الكونسول على سيرفر المباراة.", + "unranked_note": "المباريات بنمط لعب مخصص لا تُحتسب أبداً في ELO ولا في لوحات الصدارة." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "تنافسي", "description": "تجربة 5 ضد 5 التنافسية الكلاسيكية بتنسيق كامل بين الفريق" }, "wingman": { + "title": "Wingman", "description": "شارك مع صديق وتنافس في مباريات 2v2 سريعة الإيقاع" }, "duel": { + "title": "مبارزة", "description": "تجربة تنافسية 1 ضد 1، مثالية لتطوير المهارة الفردية" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "اختر عقدة سيرفرات مثبّت عليها CS", "type": "نوع السيرفر", "select_type": "اختر نوع السيرفر", + "game_mode": "نمط اللعب", + "select_game_mode": "اختر نمط اللعب", + "valve_preset_group": "إعدادات Valve الجاهزة", + "custom_mode_group": "الأنماط المخصصة", + "custom_mode_group_locked": "تحتاج إلى عقدة سيرفرات", + "custom_modes_need_node_title": "الأنماط المخصصة تحتاج إلى عقدة سيرفرات", + "custom_modes_need_node_description": "النمط المخصص هو مجموعة إضافات يثبّتها 5Stack على السيرفر الذي يعمل عليه. لا يمكنه تثبيت أي شيء على سيرفر مخصص تابع لطرف آخر، لذا اربط هذا السيرفر بعقدة سيرفرات ضمن «الاتصال» لتتمكن من اختيار نمط.", "game": "اللعبة", "csgo_ranked_unavailable_title": "التصنيف غير متاح", "csgo_ranked_unavailable_description": "وضع التصنيف غير متاح بعد لسيرفرات CS:GO.", @@ -8202,6 +8282,8 @@ "name": "الاسم", "slug": "المعرّف", "description": "الوصف", + "enabled": "مفعّل", + "enabled_description": "الأنماط المعطّلة تبقى محفوظة لكن لا يمكن اختيارها لمباراة أو سيرفر أو غرفة اختيار.", "competitive_safe": "آمن للعب التنافسي", "competitive_safe_description": "ما إذا كان يمكن استخدام هذا النمط في مباراة مصنّفة أو مباراة توفيق.", "plugins": "الإضافات", @@ -8215,8 +8297,16 @@ "save": "احفظ النمط", "saved": "تم حفظ نمط اللعب", "archived": "تمت أرشفة نمط اللعب", + "restore": "استعادة", + "restored": "تمت استعادة نمط اللعب", + "delete": "احذف", + "deleted": "تم حذف نمط اللعب", + "delete_confirm_title": "حذف {name}؟", + "delete_confirm_description": "يزيل النمط نهائياً. إن كانت أي مباراة قد جرت به فسيُخفى بدلاً من ذلك — يبقى ذلك السجل سليماً ويمكنك استعادته لاحقاً.", "runtime_none": "هذه الإضافات لا تشترك في أي إطار عمل، لذا لا يمكن تشغيل هذا النمط في أي مكان. أزل الإضافة التي تستهدف الإطار الآخر.", - "runtime_only": "يعمل على {runtime} فقط، لأنه الإطار الوحيد الذي تتوفر له كل الإضافات هنا." + "runtime_only": "يعمل على {runtime} فقط، لأنه الإطار الوحيد الذي تتوفر له كل الإضافات هنا.", + "open_plugin": "افتح صفحة هذه الإضافة في تبويب جديد", + "archived_instead": "جرت مباريات بهذا النمط من قبل، لذا أُخفي بدلاً من حذفه. يمكنك استعادته في أي وقت." } } } diff --git a/i18n/locales/da_DK.json b/i18n/locales/da_DK.json index 419dc0cf3..e971af212 100644 --- a/i18n/locales/da_DK.json +++ b/i18n/locales/da_DK.json @@ -2473,7 +2473,8 @@ "disabled": "Deaktiveret", "competitive": "Sikker til competitive", "casual_only": "Kun casual", - "plugin_count": "{count} plugins" + "plugin_count": "{count} plugins", + "archived": "Arkiveret" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Map oprettet", "update": "Map opdateret", "delete": "Map slettet", + "restore": "Map gendannet", + "restore_description": "Der fandtes allerede en slettet map med dette navn, så den blev gendannet med sin kamphistorik intakt.", "workshop_refresh": "Workshop map-detaljer opdateret" }, "error": { "create": "Mappet kunne ikke oprettes", "update": "Mappet kunne ikke opdateres", + "already_exists": "Der findes allerede en map med dette navn", "invalid_workshop": "Ugyldigt workshop map-ID. Kontrollér at ID'et findes på Steam Workshop.", "workshop_refresh": "Workshop map-detaljerne kunne ikke opdateres" }, @@ -3287,7 +3291,11 @@ "active_duty": "Active duty", "available_modes": "Tilgængelig i modes", "workshop_id": "Workshop-link", - "search": "Søg maps" + "search": "Søg maps", + "deleted_maps": "Slettede maps", + "deleted_maps_description": "Slettede maps er skjult fra alle map pools og vælgere, men kampe, der allerede er spillet på dem, beholder deres historik. En gendannelse bringer en map tilbage, som den var.", + "deleted_on": "Slettet {date}", + "restore_map": "Gendan" }, "map_pool": { "toggle_pool_type": "Map pools opdateret", @@ -3628,13 +3636,69 @@ "empty_installed": "Intet installeret endnu.", "readme": "Om", "no_readme": "Dette plugin har ingen README i sit repository.", + "readme_loading": "Indlæser README…", "always_load": "Indlæs i hver kamp", "always_load_hint": "Indlæs dette uden at en spiltilstand vælger det.", "always_load_ranked": "Indlæses også i ranglede kampe og matchmaking.", "configure": "Konfiguration", "configure_hint": "Skrives af pluginnet ved første indlæsning, så det dukker op efter at en server har kørt denne tilstand én gang.", "configure_open": "Åbn filer", - "pending": "afventer" + "pending": "afventer", + "state_installed": "Installeret", + "state_failed": "Mislykket", + "state_absent": "Ikke installeret", + "checked": "Tjekket", + "never_checked": "Har aldrig meldt ind", + "status": { + "Pending": "Afventer", + "Installing": "Installerer…", + "Installed": "Installeret", + "Failed": "Mislykket", + "Removing": "Fjerner…" + }, + "remove_confirm_title": "Fjern dette plugin?", + "remove_confirm_description": "Det bruges af {modes}. Fjerner du det, ryger det også ud af de tilstande.", + "remove_confirm_action": "Fjern alligevel", + "guidelines": { + "badge": "Kræver guidelines slået fra", + "toggle": "Slå Valves server guidelines fra", + "hint": "{name} kan ikke gøre det, den er til, mens frameworket håndhæver Valves server guidelines. Servere, der indlæser den, starter med dem slået fra.", + "off_hint": "Lader du dem være slået til, bliver plugin'et stadig installeret og indlæst — de dele, der ændrer, hvad en spiller ser, gør bare ingenting.", + "warning_title": "Advarsel: dette kan få dine Steam-GSLT'er bannet", + "warning_description": "Ifølge Valve kan drift uden for deres officielle server guidelines udløse et ban af alle Game Server Login Tokens (GSLT) på serverejerens Steam-konto. Slå det til på eget ansvar.", + "warning_link_label": "Valves server guidelines", + "already_off": "Allerede slået fra på denne deployment: 5stack Ranks slår Valves server guidelines fra for at vise ranks i spillet, og risikoen ved det rammer din Steam-konto frem for en enkelt server.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Tilføj et plugin", + "badge": "Tilpasset", + "title": "Tilføj et plugin, som kataloget ikke har", + "description": "Peg 5Stack på en release, så bliver den til et opslag som alle andre — installerbar på alle noder, med downloadet tjekket mod et digest taget her.", + "url": "Release-URL", + "url_hint": "Et GitHub-repository, en release eller et link direkte til .zip-filen. Et repository slår op i det nyeste Linux-arkiv fra dets seneste release.", + "runtime": "Framework", + "runtime_placeholder": "Hvilket framework er dette build til?", + "runtime_hint": "Et CounterStrikeSharp-build indlæses ikke under SwiftlyS2, og intet i arkivet fortæller, hvilket af dem det er.", + "advanced": "Detaljer, vi ikke kunne læse ud af URL'en", + "slug": "Slug", + "version": "Version", + "name": "Navn", + "summary": "Beskrivelse", + "layout": "Arkivets opbygning", + "layout_csgo": "Arkivets rod er game/csgo", + "layout_plugin": "Arkivets rod er plugin-mappen", + "layout_hint": "De fleste CS2-plugins leveres i et arkiv, der allerede indeholder addons/…; vælg den anden, hvis dit pakkes direkte ud i plugin'ets egen mappe.", + "install_path": "Installationssti", + "warning_title": "Ingen har gennemgået dette plugin", + "warning_description": "Et game-plugin indlæses i cs2-processen på dine maskiner og kan alt det, den proces kan. Tilføjer du et her, går du selv god for det — der står ingen registry-vedligeholder mellem dig og det.", + "submit": "Tilføj til kataloget", + "added": "{name} {version} tilføjet", + "remove": "Fjern fra kataloget", + "remove_hint": "Afinstallér det fra dine noder, før du tager det ud af kataloget.", + "removed": "Fjernet fra kataloget" + }, + "retry": "Prøv igen" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "Dette sletter «{name}» permanent. Handlingen kan ikke fortrydes." }, "placeholder_folder_name": "mappenavn", - "placeholder_file_name": "filnavn" + "placeholder_file_name": "filnavn", + "scope_node": "Node", + "scope_server": "Server", + "missing_path": "Denne mappe findes ikke endnu.", + "missing_path_create": "Opret den", + "missing_path_dismiss": "Afvis" }, "error": { "generic": "Der opstod en fejl. Prøv igen." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Spiltilstand", "none": "Competitive (ingen tilstand)", - "description": "Indlæser et sæt plugins og console-variabler på kampserveren." + "description": "Indlæser et sæt plugins og console-variabler på kampserveren.", + "unranked_note": "Kampe med en tilpasset spiltilstand tæller aldrig med i ELO eller på ranglisterne." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Competitive", "description": "Den klassiske 5 mod 5-oplevelse med fuld holdkoordinering" }, "wingman": { + "title": "Wingman", "description": "Gå sammen med en ven og spil hurtige 2v2-kampe" }, "duel": { + "title": "Duel", "description": "En konkurrencepræget 1 mod 1-oplevelse, perfekt til at træne individuelle skills" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Vælg en game server node med CS installeret", "type": "Servertype", "select_type": "Vælg servertype", + "game_mode": "Spiltilstand", + "select_game_mode": "Vælg spiltilstand", + "valve_preset_group": "Valve-presets", + "custom_mode_group": "Tilpassede tilstande", + "custom_mode_group_locked": "kræver en game server node", + "custom_modes_need_node_title": "Tilpassede tilstande kræver en game server node", + "custom_modes_need_node_description": "En tilpasset tilstand er et sæt plugins, som 5Stack installerer på den server, den kører på. Den kan ikke installere noget på en tredjeparts dedikeret server, så knyt denne server til en game server node under Forbindelse for at kunne vælge en.", "game": "Spil", "csgo_ranked_unavailable_title": "Ranked ikke tilgængelig", "csgo_ranked_unavailable_description": "Ranked-tilstand er endnu ikke tilgængelig for CS:GO-servere.", @@ -8202,6 +8282,8 @@ "name": "Navn", "slug": "Slug", "description": "Beskrivelse", + "enabled": "Aktiveret", + "enabled_description": "Deaktiverede tilstande bevares, men kan ikke vælges til en kamp, en server eller et draft-rum.", "competitive_safe": "Sikker til competitive", "competitive_safe_description": "Om denne tilstand må bruges af en ranglet kamp eller en matchmaking-kamp.", "plugins": "Plugins", @@ -8215,8 +8297,16 @@ "save": "Gem tilstand", "saved": "Spiltilstand gemt", "archived": "Spiltilstand arkiveret", + "restore": "Gendan", + "restored": "Spiltilstand gendannet", + "delete": "Slet", + "deleted": "Spiltilstand slettet", + "delete_confirm_title": "Slet {name}?", + "delete_confirm_description": "Fjerner tilstanden permanent. Har en kamp allerede kørt den, bliver den i stedet skjult — den historik forbliver intakt, og du kan gendanne den senere.", "runtime_none": "Disse plugins har intet framework til fælles, så denne tilstand kan ikke køre nogen steder. Fjern det plugin, der er bygget til det andet framework.", - "runtime_only": "Kører kun på {runtime}, fordi det er det eneste framework alle plugins her findes til." + "runtime_only": "Kører kun på {runtime}, fordi det er det eneste framework alle plugins her findes til.", + "open_plugin": "Åbn dette plugins side i en ny fane", + "archived_instead": "Der er allerede spillet kampe i denne tilstand, så den blev skjult i stedet for slettet. Du kan gendanne den når som helst." } } } diff --git a/i18n/locales/de_DE.json b/i18n/locales/de_DE.json index bd0bbe84f..2d5e6e89e 100644 --- a/i18n/locales/de_DE.json +++ b/i18n/locales/de_DE.json @@ -2473,7 +2473,8 @@ "disabled": "Deaktiviert", "competitive": "Competitive-tauglich", "casual_only": "Nur Casual", - "plugin_count": "{count} Plugins" + "plugin_count": "{count} Plugins", + "archived": "Archiviert" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Map erstellt", "update": "Map aktualisiert", "delete": "Map gelöscht", + "restore": "Map wiederhergestellt", + "restore_description": "Eine gelöschte Map mit diesem Namen existierte bereits und wurde mit ihrer vollständigen Match-Historie wiederhergestellt.", "workshop_refresh": "Workshop-Map-Details aktualisiert" }, "error": { "create": "Fehler beim Erstellen der Map", "update": "Fehler beim Aktualisieren der Map", + "already_exists": "Eine Map mit diesem Namen existiert bereits", "invalid_workshop": "Ungültige Workshop-Map-ID. Prüfe, ob die ID im Steam Workshop existiert.", "workshop_refresh": "Fehler beim Aktualisieren der Workshop-Map-Details" }, @@ -3287,7 +3291,11 @@ "active_duty": "Active Duty", "available_modes": "Verfügbar in Modi", "workshop_id": "Workshop-Link", - "search": "Maps suchen" + "search": "Maps suchen", + "deleted_maps": "Gelöschte Maps", + "deleted_maps_description": "Gelöschte Maps sind in jedem Map-Pool und jeder Auswahl ausgeblendet, aber bereits darauf gespielte Matches behalten ihre Historie. Beim Wiederherstellen kommt eine Map so zurück, wie sie war.", + "deleted_on": "Gelöscht am {date}", + "restore_map": "Wiederherstellen" }, "map_pool": { "toggle_pool_type": "Map-Pools aktualisiert", @@ -3628,13 +3636,69 @@ "empty_installed": "Noch nichts installiert.", "readme": "Info", "no_readme": "Dieses Plugin hat keine README in seinem Repository.", + "readme_loading": "README wird geladen…", "always_load": "Bei jedem Match laden", "always_load_hint": "Lädt auch, ohne dass ein Spielmodus es auswählt.", "always_load_ranked": "Wird auch bei Ranked- und Matchmaking-Matches geladen.", "configure": "Konfiguration", "configure_hint": "Wird beim ersten Laden vom Plugin geschrieben und erscheint daher, nachdem ein Server diesen Modus einmal gefahren hat.", "configure_open": "Dateien öffnen", - "pending": "ausstehend" + "pending": "ausstehend", + "state_installed": "Installiert", + "state_failed": "Fehlgeschlagen", + "state_absent": "Nicht installiert", + "checked": "Geprüft", + "never_checked": "Nie gemeldet", + "status": { + "Pending": "Ausstehend", + "Installing": "Wird installiert…", + "Installed": "Installiert", + "Failed": "Fehlgeschlagen", + "Removing": "Wird entfernt…" + }, + "remove_confirm_title": "Dieses Plugin entfernen?", + "remove_confirm_description": "Es wird von {modes} verwendet. Beim Entfernen fliegt es auch aus diesen Modi.", + "remove_confirm_action": "Trotzdem entfernen", + "guidelines": { + "badge": "Braucht deaktivierte Guidelines", + "toggle": "Valves Server-Guidelines deaktivieren", + "hint": "{name} kann nicht tun, wofür es da ist, solange das Framework Valves Server-Guidelines durchsetzt. Server, die es laden, starten mit deaktivierten Guidelines.", + "off_hint": "Bleiben sie an, wird das Plugin trotzdem installiert und geladen — die Teile, die verändern, was ein Spieler sieht, tun dann einfach nichts.", + "warning_title": "Warnung: Das kann zu einer Sperre deiner Steam-GSLTs führen", + "warning_description": "Laut Valve kann der Betrieb außerhalb der offiziellen Server-Guidelines dazu führen, dass jedes Game Server Login Token (GSLT) im Steam-Konto des Server-Besitzers gesperrt wird. Aktivierung auf eigenes Risiko.", + "warning_link_label": "Valves Server-Guidelines", + "already_off": "Für dieses Deployment bereits aus: 5stack Ranks deaktiviert Valves Server-Guidelines, um Ränge im Spiel anzuzeigen, und das Risiko dabei trifft dein Steam-Konto, nicht einen einzelnen Server.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Plugin hinzufügen", + "badge": "Eigenes", + "title": "Ein Plugin hinzufügen, das der Katalog nicht führt", + "description": "Zeig 5Stack auf ein Release und es wird ein Eintrag wie jeder andere — auf jeder Node installierbar, wobei der Download gegen eine hier erstellte Prüfsumme geprüft wird.", + "url": "Release-URL", + "url_hint": "Ein GitHub-Repository, ein Release oder ein direkter Link zur .zip. Ein Repository wird zum neuesten Linux-Archiv seines letzten Releases aufgelöst.", + "runtime": "Framework", + "runtime_placeholder": "Für welches Framework ist dieser Build?", + "runtime_hint": "Ein CounterStrikeSharp-Build lädt nicht unter SwiftlyS2, und im Archiv steht nirgends, welches von beiden es ist.", + "advanced": "Details, die wir aus der URL nicht lesen konnten", + "slug": "Slug", + "version": "Version", + "name": "Name", + "summary": "Beschreibung", + "layout": "Archiv-Aufbau", + "layout_csgo": "Archiv-Wurzel ist game/csgo", + "layout_plugin": "Archiv-Wurzel ist der Plugin-Ordner", + "layout_hint": "Die meisten CS2-Plugins liefern ein Archiv, das bereits addons/… enthält; wähl die andere Option, wenn deins direkt in den eigenen Plugin-Ordner entpackt.", + "install_path": "Installationspfad", + "warning_title": "Dieses Plugin hat niemand geprüft", + "warning_description": "Ein Game-Plugin wird auf deinen Maschinen in den cs2-Prozess geladen und kann alles, was dieser Prozess kann. Wer eins hier hinzufügt, bürgt selbst dafür — zwischen dir und ihm steht kein Registry-Maintainer.", + "submit": "Zum Katalog hinzufügen", + "added": "{name} {version} hinzugefügt", + "remove": "Aus dem Katalog entfernen", + "remove_hint": "Deinstalliere es von deinen Nodes, bevor du es aus dem Katalog nimmst.", + "removed": "Aus dem Katalog entfernt" + }, + "retry": "Erneut versuchen" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "Dies löscht „{name}“ endgültig. Diese Aktion kann nicht rückgängig gemacht werden." }, "placeholder_folder_name": "Ordnername", - "placeholder_file_name": "Dateiname" + "placeholder_file_name": "Dateiname", + "scope_node": "Node", + "scope_server": "Server", + "missing_path": "Dieses Verzeichnis existiert noch nicht.", + "missing_path_create": "Anlegen", + "missing_path_dismiss": "Ausblenden" }, "error": { "generic": "Ein Fehler ist aufgetreten. Versuch es erneut." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Spielmodus", "none": "Competitive (kein Modus)", - "description": "Lädt eine Reihe von Plugins und Console-Variablen auf dem Match-Server." + "description": "Lädt eine Reihe von Plugins und Console-Variablen auf dem Match-Server.", + "unranked_note": "Matches mit einem eigenen Spielmodus zählen nie für ELO oder die Ranglisten." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Competitive", "description": "Das klassische 5-gegen-5-Erlebnis mit voller Teamkoordination" }, "wingman": { + "title": "Wingman", "description": "Tu dich mit einem Freund zusammen und spiel schnelle 2v2-Matches" }, "duel": { + "title": "Duell", "description": "Ein kompetitives 1-gegen-1-Erlebnis, perfekt zum Trainieren des individuellen Skills" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Wähle eine Game-Server-Node mit installiertem CS", "type": "Server-Typ", "select_type": "Server-Typ wählen", + "game_mode": "Spielmodus", + "select_game_mode": "Spielmodus wählen", + "valve_preset_group": "Valve-Presets", + "custom_mode_group": "Eigene Modi", + "custom_mode_group_locked": "benötigt eine Game-Server-Node", + "custom_modes_need_node_title": "Eigene Modi benötigen eine Game-Server-Node", + "custom_modes_need_node_description": "Ein eigener Modus ist ein Satz Plugins, den 5Stack auf den Server installiert, auf dem er läuft. Auf einem fremden Dedicated Server kann 5Stack nichts installieren — häng diesen Server also unter Verbindung an eine Game-Server-Node, um einen auszuwählen.", "game": "Spiel", "csgo_ranked_unavailable_title": "Ranked nicht verfügbar", "csgo_ranked_unavailable_description": "Der Ranked-Modus ist für CS:GO-Server noch nicht verfügbar.", @@ -8202,6 +8282,8 @@ "name": "Name", "slug": "Slug", "description": "Beschreibung", + "enabled": "Aktiviert", + "enabled_description": "Deaktivierte Modi bleiben erhalten, können aber nicht für ein Match, einen Server oder einen Draft-Raum gewählt werden.", "competitive_safe": "Für Competitive geeignet", "competitive_safe_description": "Ob dieser Modus von Ranked- oder Matchmaking-Matches genutzt werden darf.", "plugins": "Plugins", @@ -8215,8 +8297,16 @@ "save": "Modus speichern", "saved": "Spielmodus gespeichert", "archived": "Spielmodus archiviert", + "restore": "Wiederherstellen", + "restored": "Spielmodus wiederhergestellt", + "delete": "Löschen", + "deleted": "Spielmodus gelöscht", + "delete_confirm_title": "{name} löschen?", + "delete_confirm_description": "Entfernt den Modus dauerhaft. Wurde er bereits in einem Match gespielt, wird er stattdessen ausgeblendet — diese Historie bleibt erhalten und du kannst ihn später wiederherstellen.", "runtime_none": "Diese Plugins haben kein gemeinsames Framework, dieser Modus kann also nirgends laufen. Entferne das Plugin, das auf das andere Framework zielt.", - "runtime_only": "Läuft nur auf {runtime}, weil das das einzige Framework ist, für das es hier jedes Plugin gibt." + "runtime_only": "Läuft nur auf {runtime}, weil das das einzige Framework ist, für das es hier jedes Plugin gibt.", + "open_plugin": "Die Seite dieses Plugins in einem neuen Tab öffnen", + "archived_instead": "Dieser Modus wurde bereits in Matches gespielt, deshalb wurde er ausgeblendet statt gelöscht. Du kannst ihn jederzeit wiederherstellen." } } } diff --git a/i18n/locales/es_ES.json b/i18n/locales/es_ES.json index a2ece8054..7d41a9fe7 100644 --- a/i18n/locales/es_ES.json +++ b/i18n/locales/es_ES.json @@ -2473,7 +2473,8 @@ "disabled": "Desactivado", "competitive": "Apto para competitivo", "casual_only": "Solo casual", - "plugin_count": "{count} plugins" + "plugin_count": "{count} plugins", + "archived": "Archivado" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Mapa creado correctamente", "update": "Mapa actualizado correctamente", "delete": "Mapa eliminado correctamente", + "restore": "Mapa restaurado", + "restore_description": "Ya existía un mapa eliminado con este nombre, así que se ha restaurado con su historial de partidas intacto.", "workshop_refresh": "Detalles del mapa de Workshop actualizados correctamente" }, "error": { "create": "Error al crear el mapa", "update": "Error al actualizar el mapa", + "already_exists": "Ya existe un mapa con este nombre", "invalid_workshop": "ID de mapa de Workshop no válido. Comprueba que el ID existe en Steam Workshop.", "workshop_refresh": "Error al actualizar los detalles del mapa de Workshop" }, @@ -3287,7 +3291,11 @@ "active_duty": "Active Duty", "available_modes": "Disponible en modos", "workshop_id": "Enlace de Workshop", - "search": "Buscar mapas" + "search": "Buscar mapas", + "deleted_maps": "Mapas eliminados", + "deleted_maps_description": "Los mapas eliminados quedan ocultos en todos los pools de mapas y selectores, pero las partidas ya jugadas en ellos conservan su historial. Al restaurar, el mapa vuelve tal y como estaba.", + "deleted_on": "Eliminado el {date}", + "restore_map": "Restaurar" }, "map_pool": { "toggle_pool_type": "Pools de mapas actualizados", @@ -3628,13 +3636,69 @@ "empty_installed": "Aún no hay nada instalado.", "readme": "Acerca de", "no_readme": "Este plugin no tiene README en su repositorio.", + "readme_loading": "Cargando el README…", "always_load": "Cargar en cada partida", "always_load_hint": "Cárgalo sin que ningún modo de juego lo seleccione.", "always_load_ranked": "También se carga en partidas clasificatorias y de emparejamiento.", "configure": "Configuración", "configure_hint": "El plugin la escribe en su primera carga, así que aparece después de que un servidor haya usado este modo una vez.", "configure_open": "Abrir archivos", - "pending": "pendiente" + "pending": "pendiente", + "state_installed": "Instalado", + "state_failed": "Fallido", + "state_absent": "No instalado", + "checked": "Comprobado", + "never_checked": "Nunca ha informado", + "status": { + "Pending": "Pendiente", + "Installing": "Instalando…", + "Installed": "Instalado", + "Failed": "Fallido", + "Removing": "Quitando…" + }, + "remove_confirm_title": "¿Quitar este plugin?", + "remove_confirm_description": "Lo usa {modes}. Al quitarlo también sale de esos modos.", + "remove_confirm_action": "Quitar de todas formas", + "guidelines": { + "badge": "Requiere las guidelines desactivadas", + "toggle": "Desactivar las guidelines de servidor de Valve", + "hint": "{name} no puede hacer lo suyo mientras el framework aplique las guidelines de servidor de Valve. Los servidores que lo carguen arrancarán con ellas desactivadas.", + "off_hint": "Si las dejas activadas, el plugin se instala y se carga igualmente: las partes que cambian lo que ve un jugador simplemente no hacen nada.", + "warning_title": "Aviso: esto puede hacer que baneen tus GSLT de Steam", + "warning_description": "Según Valve, funcionar fuera de sus guidelines oficiales de servidor puede provocar el baneo de todos los Game Server Login Token (GSLT) de la cuenta de Steam del propietario del servidor. Actívalo bajo tu propia responsabilidad.", + "warning_link_label": "Guidelines de servidor de Valve", + "already_off": "Ya están desactivadas en este despliegue: 5stack Ranks desactiva las guidelines de servidor de Valve para mostrar los rangos dentro del juego, y el riesgo que conlleva recae sobre tu cuenta de Steam, no sobre un solo servidor.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Añadir un plugin", + "badge": "Personalizado", + "title": "Añadir un plugin que no está en el catálogo", + "description": "Apunta 5Stack a una release y pasa a ser una entrada como cualquier otra: instalable en todos los nodos y con la descarga verificada contra un hash tomado aquí.", + "url": "URL de la release", + "url_hint": "Un repositorio de GitHub, una release o un enlace directo al .zip. Un repositorio se resuelve al archivo de Linux más reciente de su última release.", + "runtime": "Framework", + "runtime_placeholder": "¿Para qué framework es esta build?", + "runtime_hint": "Una build de CounterStrikeSharp no se cargará en SwiftlyS2, y nada dentro del archivo indica cuál de los dos es.", + "advanced": "Datos que no hemos podido leer de la URL", + "slug": "Slug", + "version": "Versión", + "name": "Nombre", + "summary": "Descripción", + "layout": "Estructura del archivo", + "layout_csgo": "La raíz del archivo es game/csgo", + "layout_plugin": "La raíz del archivo es la carpeta del plugin", + "layout_hint": "La mayoría de plugins de CS2 traen un archivo que ya contiene addons/…; elige la otra opción si el tuyo se descomprime directamente en la carpeta del propio plugin.", + "install_path": "Ruta de instalación", + "warning_title": "Nadie ha revisado este plugin", + "warning_description": "Un plugin de juego se carga dentro del proceso cs2 en tus máquinas y puede hacer todo lo que pueda ese proceso. Añadir uno aquí es responder por él tú mismo: no hay ningún responsable de registro entre él y tú.", + "submit": "Añadir al catálogo", + "added": "{name} {version} añadido", + "remove": "Quitar del catálogo", + "remove_hint": "Desinstálalo de tus nodos antes de sacarlo del catálogo.", + "removed": "Quitado del catálogo" + }, + "retry": "Reintentar" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "Esto eliminará «{name}» de forma permanente. Esta acción no se puede deshacer." }, "placeholder_folder_name": "nombre de carpeta", - "placeholder_file_name": "nombre de archivo" + "placeholder_file_name": "nombre de archivo", + "scope_node": "Nodo", + "scope_server": "Servidor", + "missing_path": "Este directorio todavía no existe.", + "missing_path_create": "Crearlo", + "missing_path_dismiss": "Descartar" }, "error": { "generic": "Se ha producido un error. Inténtalo de nuevo." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Modo de juego", "none": "Competitivo (sin modo)", - "description": "Carga un conjunto de plugins y variables de consola en el servidor de la partida." + "description": "Carga un conjunto de plugins y variables de consola en el servidor de la partida.", + "unranked_note": "Las partidas con un modo de juego personalizado nunca cuentan para el ELO ni para las clasificaciones." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Competitivo", "description": "La experiencia competitiva clásica de 5 contra 5 con coordinación de equipo completa" }, "wingman": { + "title": "Wingman", "description": "Únete a un amigo y compite en partidas 2v2 de ritmo rápido" }, "duel": { + "title": "Duelo", "description": "Una experiencia competitiva de 1 contra 1, perfecta para practicar la habilidad individual" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Selecciona un nodo de servidores con CS instalado", "type": "Tipo de servidor", "select_type": "Selecciona el tipo de servidor", + "game_mode": "Modo de juego", + "select_game_mode": "Selecciona un modo de juego", + "valve_preset_group": "Preajustes de Valve", + "custom_mode_group": "Modos personalizados", + "custom_mode_group_locked": "requiere un nodo de servidores", + "custom_modes_need_node_title": "Los modos personalizados requieren un nodo de servidores", + "custom_modes_need_node_description": "Un modo personalizado es un conjunto de plugins que 5Stack instala en el servidor donde se ejecuta. No puede instalar nada en un servidor dedicado de terceros, así que vincula este servidor a un nodo de servidores en Conexión para poder elegir uno.", "game": "Juego", "csgo_ranked_unavailable_title": "Ranked no disponible", "csgo_ranked_unavailable_description": "El modo ranked aún no está disponible para servidores de CS:GO.", @@ -8202,6 +8282,8 @@ "name": "Nombre", "slug": "Slug", "description": "Descripción", + "enabled": "Activado", + "enabled_description": "Los modos desactivados se conservan, pero no pueden elegirse para una partida, un servidor ni una sala de draft.", "competitive_safe": "Apto para juego competitivo", "competitive_safe_description": "Si este modo puede usarse en partidas clasificatorias o de emparejamiento.", "plugins": "Plugins", @@ -8215,8 +8297,16 @@ "save": "Guardar modo", "saved": "Modo de juego guardado", "archived": "Modo de juego archivado", + "restore": "Restaurar", + "restored": "Modo de juego restaurado", + "delete": "Eliminar", + "deleted": "Modo de juego eliminado", + "delete_confirm_title": "¿Eliminar {name}?", + "delete_confirm_description": "Elimina el modo de forma permanente. Si alguna partida ya lo ha usado, se oculta en su lugar: ese historial queda intacto y podrás restaurarlo más adelante.", "runtime_none": "Estos plugins no comparten ningún framework, así que este modo no puede ejecutarse en ningún sitio. Quita el que apunte al otro framework.", - "runtime_only": "Solo funciona en {runtime}, porque es el único framework para el que existen todos estos plugins." + "runtime_only": "Solo funciona en {runtime}, porque es el único framework para el que existen todos estos plugins.", + "open_plugin": "Abrir la página de este plugin en una pestaña nueva", + "archived_instead": "Ya se han jugado partidas con este modo, así que se ha ocultado en lugar de eliminarse. Puedes restaurarlo cuando quieras." } } } diff --git a/i18n/locales/fr_FR.json b/i18n/locales/fr_FR.json index f5fe35a02..0725cb8da 100644 --- a/i18n/locales/fr_FR.json +++ b/i18n/locales/fr_FR.json @@ -2473,7 +2473,8 @@ "disabled": "Désactivé", "competitive": "Compatible compétitif", "casual_only": "Casual uniquement", - "plugin_count": "{count} plugins" + "plugin_count": "{count} plugins", + "archived": "Archivé" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Map créée", "update": "Map mise à jour", "delete": "Map supprimée", + "restore": "Map restaurée", + "restore_description": "Une map supprimée portant ce nom existait déjà : elle a été restaurée avec tout son historique de matchs.", "workshop_refresh": "Détails de la map Workshop actualisés" }, "error": { "create": "Erreur lors de la création de la map", "update": "Erreur lors de la mise à jour de la map", + "already_exists": "Une map portant ce nom existe déjà", "invalid_workshop": "ID de map Workshop invalide. Vérifie que l'ID existe bien sur le Steam Workshop.", "workshop_refresh": "Erreur lors de l'actualisation des détails de la map Workshop" }, @@ -3287,7 +3291,11 @@ "active_duty": "Active duty", "available_modes": "Disponible dans les modes", "workshop_id": "Lien Workshop", - "search": "Rechercher des maps" + "search": "Rechercher des maps", + "deleted_maps": "Maps supprimées", + "deleted_maps_description": "Les maps supprimées sont masquées de tous les map pools et sélecteurs, mais les matchs déjà joués dessus conservent leur historique. La restauration remet une map telle qu'elle était.", + "deleted_on": "Supprimée le {date}", + "restore_map": "Restaurer" }, "map_pool": { "toggle_pool_type": "Map pools mis à jour", @@ -3628,13 +3636,69 @@ "empty_installed": "Rien d'installé pour l'instant.", "readme": "À propos", "no_readme": "Ce plugin n'a pas de README dans son dépôt.", + "readme_loading": "Chargement du README…", "always_load": "Charger à chaque match", "always_load_hint": "Le charger sans qu'un mode de jeu le sélectionne.", "always_load_ranked": "Se charge aussi sur les matchs classés et de matchmaking.", "configure": "Configuration", "configure_hint": "Écrite par le plugin au premier chargement : elle apparaît donc après qu'un serveur a joué ce mode une fois.", "configure_open": "Ouvrir les fichiers", - "pending": "en attente" + "pending": "en attente", + "state_installed": "Installé", + "state_failed": "Échec", + "state_absent": "Non installé", + "checked": "Vérifié", + "never_checked": "Jamais remonté", + "status": { + "Pending": "En attente", + "Installing": "Installation…", + "Installed": "Installé", + "Failed": "Échec", + "Removing": "Suppression…" + }, + "remove_confirm_title": "Retirer ce plugin ?", + "remove_confirm_description": "Il est utilisé par {modes}. Le retirer le sort aussi de ces modes.", + "remove_confirm_action": "Retirer quand même", + "guidelines": { + "badge": "Nécessite les guidelines désactivées", + "toggle": "Désactiver les guidelines serveur de Valve", + "hint": "{name} ne peut pas faire ce qu'il fait tant que le framework applique les guidelines serveur de Valve. Les serveurs qui le chargent démarreront avec ces guidelines désactivées.", + "off_hint": "Si tu les laisses actives, le plugin s'installe et se charge quand même — les parties qui changent ce que voit un joueur ne font simplement rien.", + "warning_title": "Attention : cela peut faire bannir tes GSLT Steam", + "warning_description": "D'après Valve, fonctionner en dehors de ses guidelines serveur officielles peut entraîner le bannissement de tous les Game Server Login Tokens (GSLT) du compte Steam du propriétaire du serveur. À activer à tes risques et périls.", + "warning_link_label": "Guidelines serveur de Valve", + "already_off": "Déjà désactivées sur ce déploiement : 5stack Ranks désactive les guidelines serveur de Valve pour afficher les rangs en jeu, et le risque encouru porte sur ton compte Steam plutôt que sur un seul serveur.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Ajouter un plugin", + "badge": "Personnalisé", + "title": "Ajouter un plugin absent du catalogue", + "description": "Indique une release à 5Stack et elle devient une entrée comme une autre — installable sur chaque nœud, avec le téléchargement vérifié contre une empreinte relevée ici.", + "url": "URL de la release", + "url_hint": "Un dépôt GitHub, une release, ou un lien direct vers le .zip. Un dépôt est résolu vers la dernière archive Linux de sa release la plus récente.", + "runtime": "Framework", + "runtime_placeholder": "Pour quel framework ce build est-il prévu ?", + "runtime_hint": "Un build CounterStrikeSharp ne se chargera pas sous SwiftlyS2, et rien dans l'archive n'indique lequel des deux c'est.", + "advanced": "Détails que nous n'avons pas pu lire depuis l'URL", + "slug": "Slug", + "version": "Version", + "name": "Nom", + "summary": "Description", + "layout": "Structure de l'archive", + "layout_csgo": "La racine de l'archive est game/csgo", + "layout_plugin": "La racine de l'archive est le dossier du plugin", + "layout_hint": "La plupart des plugins CS2 livrent une archive qui contient déjà addons/… ; choisis l'autre option si la tienne se décompresse directement dans le dossier du plugin.", + "install_path": "Chemin d'installation", + "warning_title": "Personne n'a examiné ce plugin", + "warning_description": "Un plugin de jeu est chargé dans le processus cs2 sur tes machines et peut tout ce que ce processus peut faire. En en ajoutant un ici, tu t'en portes garant toi-même — il n'y a aucun mainteneur de registre entre lui et toi.", + "submit": "Ajouter au catalogue", + "added": "{name} {version} ajouté", + "remove": "Retirer du catalogue", + "remove_hint": "Désinstalle-le de tes nœuds avant de le sortir du catalogue.", + "removed": "Retiré du catalogue" + }, + "retry": "Réessayer" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "Ceci supprimera définitivement « {name} ». Cette action est irréversible." }, "placeholder_folder_name": "nom du dossier", - "placeholder_file_name": "nom du fichier" + "placeholder_file_name": "nom du fichier", + "scope_node": "Nœud", + "scope_server": "Serveur", + "missing_path": "Ce répertoire n'existe pas encore.", + "missing_path_create": "Le créer", + "missing_path_dismiss": "Ignorer" }, "error": { "generic": "Une erreur est survenue. Réessaie." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Mode de jeu", "none": "Compétitif (aucun mode)", - "description": "Charge un ensemble de plugins et de variables de console sur le serveur du match." + "description": "Charge un ensemble de plugins et de variables de console sur le serveur du match.", + "unranked_note": "Les matchs avec un mode de jeu personnalisé ne comptent jamais pour l'ELO ni pour les classements." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Compétitif", "description": "L'expérience compétitive classique en 5 contre 5, avec coordination d'équipe complète" }, "wingman": { + "title": "Wingman", "description": "Fais équipe avec un ami et affronte les autres dans des matchs 2v2 nerveux" }, "duel": { + "title": "Duel", "description": "Une expérience compétitive en 1 contre 1, parfaite pour travailler ton skill individuel" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Sélectionne un nœud de serveurs de jeu avec CS installé", "type": "Type de serveur", "select_type": "Sélectionner le type de serveur", + "game_mode": "Mode de jeu", + "select_game_mode": "Sélectionner un mode de jeu", + "valve_preset_group": "Préréglages Valve", + "custom_mode_group": "Modes personnalisés", + "custom_mode_group_locked": "nécessite un nœud de serveurs de jeu", + "custom_modes_need_node_title": "Les modes personnalisés nécessitent un nœud de serveurs de jeu", + "custom_modes_need_node_description": "Un mode personnalisé est un ensemble de plugins que 5Stack installe sur le serveur où il tourne. Il ne peut rien installer sur un serveur dédié tiers : rattache donc ce serveur à un nœud de serveurs de jeu dans Connexion pour pouvoir en choisir un.", "game": "Jeu", "csgo_ranked_unavailable_title": "Classé indisponible", "csgo_ranked_unavailable_description": "Le mode classé n'est pas encore disponible pour les serveurs CS:GO.", @@ -8202,6 +8282,8 @@ "name": "Nom", "slug": "Slug", "description": "Description", + "enabled": "Activé", + "enabled_description": "Les modes désactivés sont conservés mais ne peuvent être choisis ni pour un match, ni pour un serveur, ni pour un salon de draft.", "competitive_safe": "Compatible avec le jeu compétitif", "competitive_safe_description": "Si ce mode peut être utilisé par un match classé ou de matchmaking.", "plugins": "Plugins", @@ -8215,8 +8297,16 @@ "save": "Enregistrer le mode", "saved": "Mode de jeu enregistré", "archived": "Mode de jeu archivé", + "restore": "Restaurer", + "restored": "Mode de jeu restauré", + "delete": "Supprimer", + "deleted": "Mode de jeu supprimé", + "delete_confirm_title": "Supprimer {name} ?", + "delete_confirm_description": "Supprime définitivement le mode. Si un match l'a déjà utilisé, il est masqué à la place — cet historique reste intact et tu pourras le restaurer plus tard.", "runtime_none": "Ces plugins n'ont aucun framework en commun, ce mode ne peut donc tourner nulle part. Retire celui qui vise l'autre framework.", - "runtime_only": "Tourne uniquement sur {runtime}, car c'est le seul framework pour lequel tous ces plugins existent." + "runtime_only": "Tourne uniquement sur {runtime}, car c'est le seul framework pour lequel tous ces plugins existent.", + "open_plugin": "Ouvrir la page de ce plugin dans un nouvel onglet", + "archived_instead": "Des matchs ont déjà utilisé ce mode : il a donc été masqué au lieu d'être supprimé. Tu peux le restaurer à tout moment." } } } diff --git a/i18n/locales/it_IT.json b/i18n/locales/it_IT.json index 81f4e2d1c..013333c65 100644 --- a/i18n/locales/it_IT.json +++ b/i18n/locales/it_IT.json @@ -2473,7 +2473,8 @@ "disabled": "Disattivata", "competitive": "Adatta al competitive", "casual_only": "Solo casual", - "plugin_count": "{count} plugin" + "plugin_count": "{count} plugin", + "archived": "Archiviata" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Mappa creata", "update": "Mappa aggiornata", "delete": "Mappa eliminata", + "restore": "Mappa ripristinata", + "restore_description": "Esisteva già una mappa eliminata con questo nome, quindi è stata ripristinata con tutta la sua cronologia di partite.", "workshop_refresh": "Dettagli della mappa Workshop aggiornati" }, "error": { "create": "Impossibile creare la mappa", "update": "Impossibile aggiornare la mappa", + "already_exists": "Esiste già una mappa con questo nome", "invalid_workshop": "ID mappa Workshop non valido. Verifica che l'ID esista sullo Steam Workshop.", "workshop_refresh": "Impossibile aggiornare i dettagli della mappa Workshop" }, @@ -3287,7 +3291,11 @@ "active_duty": "Active duty", "available_modes": "Disponibile nelle modalità", "workshop_id": "Link Workshop", - "search": "Cerca mappe" + "search": "Cerca mappe", + "deleted_maps": "Mappe eliminate", + "deleted_maps_description": "Le mappe eliminate sono nascoste da ogni map pool e da ogni selettore, ma le partite già giocate su di esse mantengono la loro cronologia. Il ripristino riporta la mappa esattamente com'era.", + "deleted_on": "Eliminata il {date}", + "restore_map": "Ripristina" }, "map_pool": { "toggle_pool_type": "Map pool aggiornati", @@ -3628,13 +3636,69 @@ "empty_installed": "Non è ancora installato nulla.", "readme": "Info", "no_readme": "Questo plugin non ha un README nel suo repository.", + "readme_loading": "Caricamento del README…", "always_load": "Carica in ogni partita", "always_load_hint": "Caricalo senza che una modalità di gioco lo selezioni.", "always_load_ranked": "Si carica anche nelle partite classificate e di matchmaking.", "configure": "Configurazione", "configure_hint": "Scritta dal plugin al primo caricamento, quindi compare dopo che un server ha girato una volta con questa modalità.", "configure_open": "Apri i file", - "pending": "in attesa" + "pending": "in attesa", + "state_installed": "Installato", + "state_failed": "Fallito", + "state_absent": "Non installato", + "checked": "Verificato", + "never_checked": "Mai segnalato", + "status": { + "Pending": "In attesa", + "Installing": "Installazione…", + "Installed": "Installato", + "Failed": "Fallito", + "Removing": "Rimozione…" + }, + "remove_confirm_title": "Rimuovere questo plugin?", + "remove_confirm_description": "È usato da {modes}. Rimuoverlo lo toglie anche da quelle modalità.", + "remove_confirm_action": "Rimuovi comunque", + "guidelines": { + "badge": "Richiede le guidelines disattivate", + "toggle": "Disattiva le server guidelines di Valve", + "hint": "{name} non può fare ciò per cui esiste finché il framework applica le server guidelines di Valve. I server che lo caricano partiranno con quelle guidelines disattivate.", + "off_hint": "Se le lasci attive, il plugin viene comunque installato e caricato: le parti che cambiano ciò che un giocatore vede semplicemente non fanno nulla.", + "warning_title": "Attenzione: questo può far bannare i tuoi GSLT di Steam", + "warning_description": "Secondo Valve, operare al di fuori delle sue server guidelines ufficiali può portare al ban di ogni Game Server Login Token (GSLT) dell'account Steam del proprietario del server. Attivalo a tuo rischio.", + "warning_link_label": "Server guidelines di Valve", + "already_off": "Già disattivate su questo deployment: 5stack Ranks disattiva le server guidelines di Valve per mostrare i rank in gioco, e il rischio che comporta ricade sul tuo account Steam anziché su un singolo server.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Aggiungi un plugin", + "badge": "Personalizzato", + "title": "Aggiungi un plugin che il catalogo non contiene", + "description": "Indica una release a 5Stack e diventa una voce come tutte le altre: installabile su ogni nodo, con il download verificato rispetto a un digest calcolato qui.", + "url": "URL della release", + "url_hint": "Un repository GitHub, una release o un link diretto allo .zip. Un repository viene risolto nell'archivio Linux più recente della sua ultima release.", + "runtime": "Framework", + "runtime_placeholder": "Per quale framework è questa build?", + "runtime_hint": "Una build CounterStrikeSharp non si carica su SwiftlyS2, e nell'archivio non c'è nulla che dica quale delle due sia.", + "advanced": "Dettagli che non siamo riusciti a leggere dall'URL", + "slug": "Slug", + "version": "Versione", + "name": "Nome", + "summary": "Descrizione", + "layout": "Struttura dell'archivio", + "layout_csgo": "La radice dell'archivio è game/csgo", + "layout_plugin": "La radice dell'archivio è la cartella del plugin", + "layout_hint": "La maggior parte dei plugin CS2 fornisce un archivio che contiene già addons/…; scegli l'altra opzione se il tuo si estrae direttamente nella cartella del plugin.", + "install_path": "Percorso di installazione", + "warning_title": "Nessuno ha revisionato questo plugin", + "warning_description": "Un plugin di gioco viene caricato nel processo cs2 sulle tue macchine e può fare tutto ciò che quel processo può fare. Aggiungerne uno qui significa garantire tu stesso per lui: tra te e lui non c'è alcun manutentore del registro.", + "submit": "Aggiungi al catalogo", + "added": "{name} {version} aggiunto", + "remove": "Rimuovi dal catalogo", + "remove_hint": "Disinstallalo dai tuoi nodi prima di toglierlo dal catalogo.", + "removed": "Rimosso dal catalogo" + }, + "retry": "Riprova" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "Questo eliminerà definitivamente «{name}». L'operazione non può essere annullata." }, "placeholder_folder_name": "nome cartella", - "placeholder_file_name": "nome file" + "placeholder_file_name": "nome file", + "scope_node": "Nodo", + "scope_server": "Server", + "missing_path": "Questa directory non esiste ancora.", + "missing_path_create": "Creala", + "missing_path_dismiss": "Ignora" }, "error": { "generic": "Si è verificato un errore. Riprova." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Modalità di gioco", "none": "Competitive (nessuna modalità)", - "description": "Carica un insieme di plugin e variabili di console sul server della partita." + "description": "Carica un insieme di plugin e variabili di console sul server della partita.", + "unranked_note": "Le partite con una modalità di gioco personalizzata non contano mai per l'ELO né per le classifiche." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Competitiva", "description": "La classica esperienza competitiva 5 contro 5 con piena coordinazione di team" }, "wingman": { + "title": "Wingman", "description": "Fai squadra con un amico e gareggia in match 2v2 ad alta velocità" }, "duel": { + "title": "Duello", "description": "Un'esperienza competitiva 1 contro 1, perfetta per allenare l'abilità individuale" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Seleziona un nodo server di gioco con CS installato", "type": "Tipo di server", "select_type": "Seleziona tipo di server", + "game_mode": "Modalità di gioco", + "select_game_mode": "Seleziona modalità di gioco", + "valve_preset_group": "Preset Valve", + "custom_mode_group": "Modalità personalizzate", + "custom_mode_group_locked": "richiede un nodo server di gioco", + "custom_modes_need_node_title": "Le modalità personalizzate richiedono un nodo server di gioco", + "custom_modes_need_node_description": "Una modalità personalizzata è un insieme di plugin che 5Stack installa sul server su cui gira. Su un server dedicato di terze parti non può installare nulla, quindi collega questo server a un nodo server di gioco sotto Connessione per poterne scegliere una.", "game": "Gioco", "csgo_ranked_unavailable_title": "Ranked non disponibile", "csgo_ranked_unavailable_description": "La modalità ranked non è ancora disponibile per i server CS:GO.", @@ -8202,6 +8282,8 @@ "name": "Nome", "slug": "Slug", "description": "Descrizione", + "enabled": "Attiva", + "enabled_description": "Le modalità disattivate vengono conservate ma non possono essere scelte per una partita, un server o una stanza di draft.", "competitive_safe": "Adatta al gioco competitivo", "competitive_safe_description": "Se questa modalità può essere usata da una partita classificata o di matchmaking.", "plugins": "Plugin", @@ -8215,8 +8297,16 @@ "save": "Salva modalità", "saved": "Modalità di gioco salvata", "archived": "Modalità di gioco archiviata", + "restore": "Ripristina", + "restored": "Modalità di gioco ripristinata", + "delete": "Elimina", + "deleted": "Modalità di gioco eliminata", + "delete_confirm_title": "Eliminare {name}?", + "delete_confirm_description": "Rimuove la modalità in modo definitivo. Se una partita l'ha già usata, viene invece nascosta: quella cronologia resta intatta e potrai ripristinarla più avanti.", "runtime_none": "Questi plugin non hanno alcun framework in comune, quindi questa modalità non può girare da nessuna parte. Rimuovi quello destinato all'altro framework.", - "runtime_only": "Gira solo su {runtime}, perché è l'unico framework per cui esistono tutti questi plugin." + "runtime_only": "Gira solo su {runtime}, perché è l'unico framework per cui esistono tutti questi plugin.", + "open_plugin": "Apri la pagina di questo plugin in una nuova scheda", + "archived_instead": "Alcune partite hanno già usato questa modalità, quindi è stata nascosta anziché eliminata. Puoi ripristinarla quando vuoi." } } } diff --git a/i18n/locales/ja_JP.json b/i18n/locales/ja_JP.json index 6dc4330c5..d2f538c36 100644 --- a/i18n/locales/ja_JP.json +++ b/i18n/locales/ja_JP.json @@ -2473,7 +2473,8 @@ "disabled": "無効", "competitive": "競技用に安全", "casual_only": "カジュアルのみ", - "plugin_count": "{count} 件のプラグイン" + "plugin_count": "{count} 件のプラグイン", + "archived": "アーカイブ済み" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "マップを作成しました", "update": "マップを更新しました", "delete": "マップを削除しました", + "restore": "マップを復元しました", + "restore_description": "同じ名前の削除済みマップがすでに存在したため、試合履歴をそのまま残して復元しました。", "workshop_refresh": "Workshopマップ情報を更新しました" }, "error": { "create": "マップの作成中にエラーが発生しました", "update": "マップの更新中にエラーが発生しました", + "already_exists": "この名前のマップはすでに存在します", "invalid_workshop": "Workshopマップ IDが無効です。Steam WorkshopでIDが存在するか確認してください。", "workshop_refresh": "Workshopマップ情報の更新中にエラーが発生しました" }, @@ -3287,7 +3291,11 @@ "active_duty": "アクティブデューティ", "available_modes": "利用可能なモード", "workshop_id": "Workshopリンク", - "search": "マップを検索" + "search": "マップを検索", + "deleted_maps": "削除したマップ", + "deleted_maps_description": "削除したマップはすべてのマッププールと選択画面から隠れますが、そのマップで行われた試合の履歴はそのまま残ります。復元すると、マップは元の状態で戻ります。", + "deleted_on": "{date} に削除", + "restore_map": "復元" }, "map_pool": { "toggle_pool_type": "マッププールを更新しました", @@ -3628,13 +3636,69 @@ "empty_installed": "まだ何もインストールされていません。", "readme": "概要", "no_readme": "このプラグインのリポジトリに README はありません。", + "readme_loading": "README を読み込み中…", "always_load": "毎試合読み込む", "always_load_hint": "ゲームモードで選択されていなくても読み込みます。", "always_load_ranked": "ランクマッチやマッチメイキングの試合でも読み込まれます。", "configure": "設定", "configure_hint": "初回読み込み時にプラグインが書き出すため、サーバーがこのモードで一度稼働した後に表示されます。", "configure_open": "ファイルを開く", - "pending": "保留中" + "pending": "保留中", + "state_installed": "インストール済み", + "state_failed": "失敗", + "state_absent": "未インストール", + "checked": "最終確認", + "never_checked": "報告なし", + "status": { + "Pending": "保留中", + "Installing": "インストール中…", + "Installed": "インストール済み", + "Failed": "失敗", + "Removing": "削除中…" + }, + "remove_confirm_title": "このプラグインを削除しますか?", + "remove_confirm_description": "{modes} が使用しています。削除すると、それらのモードからも外れます。", + "remove_confirm_action": "それでも削除", + "guidelines": { + "badge": "ガイドライン無効が必要", + "toggle": "Valve のサーバーガイドラインを無効にする", + "hint": "フレームワークが Valve のサーバーガイドラインを適用している間、{name} は本来の動作ができません。これを読み込むサーバーは、ガイドラインを無効にした状態で起動します。", + "off_hint": "有効のままでもプラグインのインストールと読み込みは行われます。プレイヤーの見え方を変える部分が何もしなくなるだけです。", + "warning_title": "警告: Steam の GSLT が BAN される可能性があります", + "warning_description": "Valve によると、公式のサーバーガイドラインから外れて運用すると、サーバー所有者の Steam アカウントにあるすべての Game Server Login Token (GSLT) が BAN される可能性があります。有効化は自己責任で行ってください。", + "warning_link_label": "Valve のサーバーガイドライン", + "already_off": "このデプロイではすでに無効です: 5stack Ranks はゲーム内でランクを表示するために Valve のサーバーガイドラインを無効にしており、そのリスクは 1 台のサーバーではなくあなたの Steam アカウントに及びます。", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "プラグインを追加", + "badge": "カスタム", + "title": "カタログにないプラグインを追加", + "description": "リリースを 5Stack に指定すれば、他と同じエントリになります。すべてのノードにインストールでき、ダウンロードはここで取得したダイジェストと照合されます。", + "url": "リリース URL", + "url_hint": "GitHub リポジトリ、リリース、または .zip への直接リンク。リポジトリを指定すると、最新リリースの最も新しい Linux 用アーカイブに解決されます。", + "runtime": "フレームワーク", + "runtime_placeholder": "このビルドはどのフレームワーク向けですか?", + "runtime_hint": "CounterStrikeSharp 向けのビルドは SwiftlyS2 では読み込まれませんが、アーカイブにはどちらなのかを示すものがありません。", + "advanced": "URL から読み取れなかった項目", + "slug": "スラッグ", + "version": "バージョン", + "name": "名前", + "summary": "説明", + "layout": "アーカイブ構成", + "layout_csgo": "アーカイブのルートは game/csgo", + "layout_plugin": "アーカイブのルートはプラグインのフォルダ", + "layout_hint": "ほとんどの CS2 プラグインは addons/… をすでに含むアーカイブで配布されます。プラグイン自身のフォルダに直接展開される場合は、もう一方を選んでください。", + "install_path": "インストール先パス", + "warning_title": "このプラグインは誰も審査していません", + "warning_description": "ゲームプラグインはあなたのマシンの cs2 プロセスに読み込まれ、そのプロセスにできることは何でもできます。ここで追加するということは、自分でその安全性を保証するということです。あなたとの間にレジストリの管理者は入りません。", + "submit": "カタログに追加", + "added": "{name} {version} を追加しました", + "remove": "カタログから削除", + "remove_hint": "カタログから外す前に、ノードからアンインストールしてください。", + "removed": "カタログから削除しました" + }, + "retry": "再試行" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "「{name}」を完全に削除します。この操作は元に戻せません。" }, "placeholder_folder_name": "フォルダー名", - "placeholder_file_name": "ファイル名" + "placeholder_file_name": "ファイル名", + "scope_node": "ノード", + "scope_server": "サーバー", + "missing_path": "このディレクトリはまだ存在しません。", + "missing_path_create": "作成する", + "missing_path_dismiss": "閉じる" }, "error": { "generic": "エラーが発生しました。もう一度お試しください。" @@ -5204,7 +5273,8 @@ "game_mode": { "title": "ゲームモード", "none": "Competitive(モードなし)", - "description": "試合サーバーにプラグインとコンソール変数のセットを読み込みます。" + "description": "試合サーバーにプラグインとコンソール変数のセットを読み込みます。", + "unranked_note": "カスタムゲームモードの試合は、ELO やリーダーボードには一切反映されません。" } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "コンペティティブ", "description": "フルチーム連携によるクラシックな5対5の競技体験" }, "wingman": { + "title": "ウィングマン", "description": "フレンドとペアを組んでテンポの速い2v2で対戦" }, "duel": { + "title": "デュエル", "description": "個人スキルの練習に最適な1対1の競技体験" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "CS がインストール済みのゲームサーバーノードを選択してください", "type": "サーバータイプ", "select_type": "サーバータイプを選択", + "game_mode": "ゲームモード", + "select_game_mode": "ゲームモードを選択", + "valve_preset_group": "Valve プリセット", + "custom_mode_group": "カスタムモード", + "custom_mode_group_locked": "ゲームサーバーノードが必要", + "custom_modes_need_node_title": "カスタムモードにはゲームサーバーノードが必要です", + "custom_modes_need_node_description": "カスタムモードは、5Stack が実行先のサーバーにインストールするプラグインのセットです。サードパーティの専用サーバーには何もインストールできないため、選べるようにするには「接続」でこのサーバーをゲームサーバーノードに紐付けてください。", "game": "ゲーム", "csgo_ranked_unavailable_title": "ランクは利用不可", "csgo_ranked_unavailable_description": "CS:GO サーバーではランクモードをまだ利用できません。", @@ -8202,6 +8282,8 @@ "name": "名前", "slug": "スラッグ", "description": "説明", + "enabled": "有効", + "enabled_description": "無効にしたモードは残りますが、試合・サーバー・ドラフトルームには選べなくなります。", "competitive_safe": "競技プレイに安全", "competitive_safe_description": "このモードをランクマッチやマッチメイキングの試合で使用できるかどうか。", "plugins": "プラグイン", @@ -8215,8 +8297,16 @@ "save": "モードを保存", "saved": "ゲームモードを保存しました", "archived": "ゲームモードをアーカイブしました", + "restore": "復元", + "restored": "ゲームモードを復元しました", + "delete": "削除", + "deleted": "ゲームモードを削除しました", + "delete_confirm_title": "{name} を削除しますか?", + "delete_confirm_description": "モードを完全に削除します。すでにそのモードで行われた試合がある場合は、削除ではなく非表示になります。その履歴はそのまま残り、後から復元できます。", "runtime_none": "これらのプラグインには共通するフレームワークがないため、このモードはどこでも動作しません。別のフレームワーク向けのプラグインを削除してください。", - "runtime_only": "{runtime} でのみ動作します。ここにあるすべてのプラグインが対応している唯一のフレームワークだからです。" + "runtime_only": "{runtime} でのみ動作します。ここにあるすべてのプラグインが対応している唯一のフレームワークだからです。", + "open_plugin": "このプラグインのページを新しいタブで開く", + "archived_instead": "このモードではすでに試合が行われているため、削除ではなく非表示になりました。いつでも復元できます。" } } } diff --git a/i18n/locales/ko_KR.json b/i18n/locales/ko_KR.json index 4a5274911..3cf6440b3 100644 --- a/i18n/locales/ko_KR.json +++ b/i18n/locales/ko_KR.json @@ -2473,7 +2473,8 @@ "disabled": "비활성화됨", "competitive": "컴페티티브 가능", "casual_only": "캐주얼 전용", - "plugin_count": "플러그인 {count}개" + "plugin_count": "플러그인 {count}개", + "archived": "보관됨" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "맵이 생성되었습니다", "update": "맵이 업데이트되었습니다", "delete": "맵이 삭제되었습니다", + "restore": "맵을 복원했습니다", + "restore_description": "같은 이름의 삭제된 맵이 이미 있어서 매치 기록을 그대로 유지한 채 복원했습니다.", "workshop_refresh": "워크숍 맵 정보가 갱신되었습니다" }, "error": { "create": "맵 생성 중 오류가 발생했습니다", "update": "맵 업데이트 중 오류가 발생했습니다", + "already_exists": "이 이름의 맵이 이미 있습니다", "invalid_workshop": "워크숍 맵 ID가 올바르지 않습니다. Steam 워크숍에 해당 ID가 있는지 확인해 주세요.", "workshop_refresh": "워크숍 맵 정보 갱신 중 오류가 발생했습니다" }, @@ -3287,7 +3291,11 @@ "active_duty": "액티브 듀티", "available_modes": "사용 가능한 모드", "workshop_id": "워크숍 링크", - "search": "맵 검색" + "search": "맵 검색", + "deleted_maps": "삭제된 맵", + "deleted_maps_description": "삭제된 맵은 모든 맵 풀과 선택 목록에서 숨겨지지만, 이미 그 맵에서 진행된 매치의 기록은 그대로 남습니다. 복원하면 맵이 원래 상태로 돌아옵니다.", + "deleted_on": "{date}에 삭제됨", + "restore_map": "복원" }, "map_pool": { "toggle_pool_type": "맵 풀이 업데이트되었습니다", @@ -3628,13 +3636,69 @@ "empty_installed": "아직 설치된 것이 없습니다.", "readme": "소개", "no_readme": "이 플러그인의 저장소에 README가 없습니다.", + "readme_loading": "README 불러오는 중…", "always_load": "모든 경기에서 불러오기", "always_load_hint": "게임 모드가 선택하지 않아도 불러옵니다.", "always_load_ranked": "랭크 및 매치메이킹 경기에서도 불러옵니다.", "configure": "설정 파일", "configure_hint": "플러그인이 처음 불러올 때 작성하므로, 서버가 이 모드로 한 번 실행된 뒤에 나타납니다.", "configure_open": "파일 열기", - "pending": "대기 중" + "pending": "대기 중", + "state_installed": "설치됨", + "state_failed": "실패", + "state_absent": "설치되지 않음", + "checked": "마지막 확인", + "never_checked": "보고한 적 없음", + "status": { + "Pending": "대기 중", + "Installing": "설치 중…", + "Installed": "설치됨", + "Failed": "실패", + "Removing": "제거 중…" + }, + "remove_confirm_title": "이 플러그인을 제거할까요?", + "remove_confirm_description": "{modes}에서 사용 중입니다. 제거하면 해당 모드에서도 빠집니다.", + "remove_confirm_action": "그래도 제거", + "guidelines": { + "badge": "가이드라인 해제 필요", + "toggle": "Valve 서버 가이드라인 끄기", + "hint": "프레임워크가 Valve 서버 가이드라인을 적용하는 동안에는 {name}이(가) 제 역할을 할 수 없습니다. 이 플러그인을 불러오는 서버는 가이드라인이 꺼진 상태로 시작합니다.", + "off_hint": "켜 둔 채로도 플러그인은 설치되고 불러와집니다. 플레이어에게 보이는 것을 바꾸는 부분만 아무 동작도 하지 않을 뿐입니다.", + "warning_title": "경고: 이 설정 때문에 Steam GSLT가 차단될 수 있습니다", + "warning_description": "Valve에 따르면 공식 서버 가이드라인을 벗어나 운영할 경우 서버 소유자의 Steam 계정에 있는 모든 Game Server Login Token(GSLT)이 차단될 수 있습니다. 활성화는 본인 책임입니다.", + "warning_link_label": "Valve 서버 가이드라인", + "already_off": "이 배포에서는 이미 꺼져 있습니다: 5stack Ranks가 게임 내 랭크를 표시하기 위해 Valve 서버 가이드라인을 끄며, 그에 따르는 위험은 서버 한 대가 아니라 여러분의 Steam 계정에 미칩니다.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "플러그인 추가", + "badge": "커스텀", + "title": "카탈로그에 없는 플러그인 추가", + "description": "5Stack에 릴리스를 알려주면 다른 항목과 똑같이 등록됩니다. 모든 노드에 설치할 수 있고, 다운로드는 여기서 받은 다이제스트와 대조해 검증합니다.", + "url": "릴리스 URL", + "url_hint": "GitHub 저장소, 릴리스, 또는 .zip 파일로 바로 가는 링크. 저장소를 넣으면 최신 릴리스의 가장 새로운 Linux 아카이브로 연결됩니다.", + "runtime": "프레임워크", + "runtime_placeholder": "이 빌드는 어떤 프레임워크용인가요?", + "runtime_hint": "CounterStrikeSharp 빌드는 SwiftlyS2에서 로드되지 않지만, 아카이브 안에는 둘 중 무엇인지 알려주는 정보가 없습니다.", + "advanced": "URL에서 읽어내지 못한 정보", + "slug": "슬러그", + "version": "버전", + "name": "이름", + "summary": "설명", + "layout": "아카이브 구조", + "layout_csgo": "아카이브 루트가 game/csgo", + "layout_plugin": "아카이브 루트가 플러그인 폴더", + "layout_hint": "대부분의 CS2 플러그인은 이미 addons/…를 포함한 아카이브로 배포됩니다. 플러그인 자체 폴더로 바로 풀린다면 다른 쪽을 선택하세요.", + "install_path": "설치 경로", + "warning_title": "이 플러그인은 아무도 검토하지 않았습니다", + "warning_description": "게임 플러그인은 여러분의 머신에서 cs2 프로세스에 로드되며, 그 프로세스가 할 수 있는 모든 일을 할 수 있습니다. 여기에 추가한다는 것은 직접 보증한다는 뜻입니다. 여러분과 플러그인 사이에 레지스트리 관리자는 없습니다.", + "submit": "카탈로그에 추가", + "added": "{name} {version} 추가됨", + "remove": "카탈로그에서 제거", + "remove_hint": "카탈로그에서 빼기 전에 노드에서 먼저 제거하세요.", + "removed": "카탈로그에서 제거됨" + }, + "retry": "다시 시도" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "「{name}」을(를) 영구적으로 삭제합니다. 이 작업은 되돌릴 수 없습니다." }, "placeholder_folder_name": "폴더 이름", - "placeholder_file_name": "파일 이름" + "placeholder_file_name": "파일 이름", + "scope_node": "노드", + "scope_server": "서버", + "missing_path": "이 디렉터리는 아직 없습니다.", + "missing_path_create": "만들기", + "missing_path_dismiss": "닫기" }, "error": { "generic": "오류가 발생했습니다. 다시 시도해 주세요." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "게임 모드", "none": "컴페티티브 (모드 없음)", - "description": "경기 서버에 플러그인과 콘솔 변수 세트를 불러옵니다." + "description": "경기 서버에 플러그인과 콘솔 변수 세트를 불러옵니다.", + "unranked_note": "커스텀 게임 모드로 진행한 매치는 ELO나 리더보드에 절대 반영되지 않습니다." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "경쟁전", "description": "완전한 팀 협력이 요구되는 클래식 5 대 5 경쟁전" }, "wingman": { + "title": "윙맨", "description": "친구와 팀을 이뤄 빠른 템포의 2v2 매치를 즐기세요" }, "duel": { + "title": "듀얼", "description": "개인 기량을 연습하기 좋은 1 대 1 경쟁전" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "CS가 설치된 게임 서버 노드를 선택하세요", "type": "서버 유형", "select_type": "서버 유형 선택", + "game_mode": "게임 모드", + "select_game_mode": "게임 모드 선택", + "valve_preset_group": "Valve 프리셋", + "custom_mode_group": "커스텀 모드", + "custom_mode_group_locked": "게임 서버 노드 필요", + "custom_modes_need_node_title": "커스텀 모드에는 게임 서버 노드가 필요합니다", + "custom_modes_need_node_description": "커스텀 모드는 5Stack이 실행 대상 서버에 설치하는 플러그인 모음입니다. 외부 전용 서버에는 아무것도 설치할 수 없으니, 하나를 고르려면 연결에서 이 서버를 게임 서버 노드에 연결하세요.", "game": "게임", "csgo_ranked_unavailable_title": "랭크 이용 불가", "csgo_ranked_unavailable_description": "CS:GO 서버에서는 아직 랭크 모드를 이용할 수 없습니다.", @@ -8202,6 +8282,8 @@ "name": "이름", "slug": "슬러그", "description": "설명", + "enabled": "활성화됨", + "enabled_description": "비활성화된 모드는 남아 있지만 매치, 서버, 드래프트 방에 선택할 수 없습니다.", "competitive_safe": "컴페티티브 플레이에 안전", "competitive_safe_description": "이 모드를 랭크 또는 매치메이킹 경기에서 사용할 수 있는지 여부입니다.", "plugins": "플러그인", @@ -8215,8 +8297,16 @@ "save": "모드 저장", "saved": "게임 모드를 저장했습니다", "archived": "게임 모드를 보관했습니다", + "restore": "복원", + "restored": "게임 모드를 복원했습니다", + "delete": "삭제", + "deleted": "게임 모드를 삭제했습니다", + "delete_confirm_title": "{name}을(를) 삭제할까요?", + "delete_confirm_description": "모드를 영구적으로 제거합니다. 이미 이 모드로 진행된 매치가 있으면 삭제 대신 숨겨집니다. 그 기록은 그대로 남고 나중에 복원할 수 있습니다.", "runtime_none": "이 플러그인들은 공통 프레임워크가 없어 이 모드를 어디서도 실행할 수 없습니다. 다른 프레임워크용 플러그인을 제거하세요.", - "runtime_only": "{runtime}에서만 실행됩니다. 여기 있는 모든 플러그인이 지원하는 유일한 프레임워크이기 때문입니다." + "runtime_only": "{runtime}에서만 실행됩니다. 여기 있는 모든 플러그인이 지원하는 유일한 프레임워크이기 때문입니다.", + "open_plugin": "이 플러그인의 페이지를 새 탭에서 열기", + "archived_instead": "이미 이 모드로 진행된 매치가 있어 삭제 대신 숨겨졌습니다. 언제든지 복원할 수 있습니다." } } } diff --git a/i18n/locales/pl_PL.json b/i18n/locales/pl_PL.json index 0058e16d2..d46fcdb56 100644 --- a/i18n/locales/pl_PL.json +++ b/i18n/locales/pl_PL.json @@ -2473,7 +2473,8 @@ "disabled": "Wyłączony", "competitive": "Bezpieczny dla competitive", "casual_only": "Tylko casual", - "plugin_count": "{count} wtyczek" + "plugin_count": "{count} wtyczek", + "archived": "Zarchiwizowany" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Mapa została utworzona", "update": "Mapa została zaktualizowana", "delete": "Mapa została usunięta", + "restore": "Mapa przywrócona", + "restore_description": "Usunięta mapa o tej nazwie już istniała, więc została przywrócona wraz z całą historią meczów.", "workshop_refresh": "Szczegóły mapy z Workshop zostały odświeżone" }, "error": { "create": "Błąd podczas tworzenia mapy", "update": "Błąd podczas aktualizacji mapy", + "already_exists": "Mapa o tej nazwie już istnieje", "invalid_workshop": "Nieprawidłowe ID mapy z Workshop. Sprawdź, czy ID istnieje w Steam Workshop.", "workshop_refresh": "Błąd podczas odświeżania szczegółów mapy z Workshop" }, @@ -3287,7 +3291,11 @@ "active_duty": "Active Duty", "available_modes": "Dostępne w trybach", "workshop_id": "Link do Workshop", - "search": "Szukaj map" + "search": "Szukaj map", + "deleted_maps": "Usunięte mapy", + "deleted_maps_description": "Usunięte mapy są ukryte w każdym map poolu i każdym wyborze, ale mecze już na nich rozegrane zachowują swoją historię. Przywrócenie zwraca mapę w takim stanie, w jakim była.", + "deleted_on": "Usunięto {date}", + "restore_map": "Przywróć" }, "map_pool": { "toggle_pool_type": "Zaktualizowano map pool", @@ -3628,13 +3636,69 @@ "empty_installed": "Nic jeszcze nie zainstalowano.", "readme": "O wtyczce", "no_readme": "Ta wtyczka nie ma pliku README w swoim repozytorium.", + "readme_loading": "Wczytywanie pliku README…", "always_load": "Wczytuj w każdym meczu", "always_load_hint": "Wczytuj ją bez wybierania przez tryb gry.", "always_load_ranked": "Wczytuje się także w meczach rankingowych i matchmakingu.", "configure": "Konfiguracja", "configure_hint": "Zapisywana przez wtyczkę przy pierwszym wczytaniu, więc pojawia się po tym, jak serwer raz uruchomi ten tryb.", "configure_open": "Otwórz pliki", - "pending": "oczekuje" + "pending": "oczekuje", + "state_installed": "Zainstalowana", + "state_failed": "Niepowodzenie", + "state_absent": "Niezainstalowana", + "checked": "Sprawdzono", + "never_checked": "Nigdy nie zgłoszono", + "status": { + "Pending": "Oczekujące", + "Installing": "Instalowanie…", + "Installed": "Zainstalowana", + "Failed": "Niepowodzenie", + "Removing": "Usuwanie…" + }, + "remove_confirm_title": "Usunąć tę wtyczkę?", + "remove_confirm_description": "Korzysta z niej {modes}. Usunięcie wyrzuci ją także z tych trybów.", + "remove_confirm_action": "Usuń mimo to", + "guidelines": { + "badge": "Wymaga wyłączonych wytycznych", + "toggle": "Wyłącz wytyczne serwerowe Valve", + "hint": "{name} nie zrobi tego, do czego służy, dopóki framework egzekwuje wytyczne serwerowe Valve. Serwery, które ją wczytają, wystartują z wyłączonymi wytycznymi.", + "off_hint": "Jeśli zostawisz je włączone, wtyczka i tak się zainstaluje i wczyta — te jej części, które zmieniają to, co widzi gracz, po prostu nic nie zrobią.", + "warning_title": "Uwaga: to może doprowadzić do bana twoich tokenów GSLT na Steamie", + "warning_description": "Według Valve działanie poza ich oficjalnymi wytycznymi serwerowymi może spowodować zbanowanie każdego Game Server Login Token (GSLT) na koncie Steam właściciela serwera. Włączasz na własne ryzyko.", + "warning_link_label": "Wytyczne serwerowe Valve", + "already_off": "Już wyłączone w tym wdrożeniu: 5stack Ranks wyłącza wytyczne serwerowe Valve, żeby pokazywać rangi w grze, a związane z tym ryzyko dotyczy twojego konta Steam, a nie pojedynczego serwera.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Dodaj wtyczkę", + "badge": "Własna", + "title": "Dodaj wtyczkę, której nie ma w katalogu", + "description": "Wskaż 5Stackowi release, a stanie się wpisem jak każdy inny — instalowalnym na każdym węźle, z pobraniem weryfikowanym względem sumy kontrolnej pobranej tutaj.", + "url": "URL release'u", + "url_hint": "Repozytorium GitHub, release albo link prosto do pliku .zip. Repozytorium zostanie rozwiązane do najnowszego archiwum linuksowego z jego ostatniego release'u.", + "runtime": "Framework", + "runtime_placeholder": "Dla którego frameworka jest ta kompilacja?", + "runtime_hint": "Kompilacja pod CounterStrikeSharp nie wczyta się pod SwiftlyS2, a w archiwum nie ma nic, co mówiłoby, która to z nich.", + "advanced": "Szczegóły, których nie udało nam się odczytać z adresu URL", + "slug": "Slug", + "version": "Wersja", + "name": "Nazwa", + "summary": "Opis", + "layout": "Układ archiwum", + "layout_csgo": "Korzeniem archiwum jest game/csgo", + "layout_plugin": "Korzeniem archiwum jest folder wtyczki", + "layout_hint": "Większość wtyczek do CS2 dostarcza archiwum, które już zawiera addons/…; wybierz drugą opcję, jeśli twoje rozpakowuje się prosto do własnego folderu wtyczki.", + "install_path": "Ścieżka instalacji", + "warning_title": "Nikt nie sprawdził tej wtyczki", + "warning_description": "Wtyczka do gry jest ładowana do procesu cs2 na twoich maszynach i może wszystko to, co może ten proces. Dodając ją tutaj, ręczysz za nią sam — między tobą a nią nie stoi żaden opiekun rejestru.", + "submit": "Dodaj do katalogu", + "added": "Dodano {name} {version}", + "remove": "Usuń z katalogu", + "remove_hint": "Odinstaluj ją ze swoich węzłów, zanim usuniesz ją z katalogu.", + "removed": "Usunięto z katalogu" + }, + "retry": "Spróbuj ponownie" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "To trwale usunie „{name}”. Tej operacji nie da się cofnąć." }, "placeholder_folder_name": "nazwa folderu", - "placeholder_file_name": "nazwa pliku" + "placeholder_file_name": "nazwa pliku", + "scope_node": "Węzeł", + "scope_server": "Serwer", + "missing_path": "Ten katalog jeszcze nie istnieje.", + "missing_path_create": "Utwórz go", + "missing_path_dismiss": "Odrzuć" }, "error": { "generic": "Wystąpił błąd. Spróbuj ponownie." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Tryb gry", "none": "Competitive (bez trybu)", - "description": "Wczytuje zestaw wtyczek i zmiennych konsoli na serwerze meczowym." + "description": "Wczytuje zestaw wtyczek i zmiennych konsoli na serwerze meczowym.", + "unranked_note": "Mecze z własnym trybem gry nigdy nie liczą się do ELO ani do rankingów." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Competitive", "description": "Klasyczne doświadczenie 5 na 5 z pełną koordynacją drużyny" }, "wingman": { + "title": "Wingman", "description": "Zbierz się z przyjacielem i rywalizuj w dynamicznych meczach 2v2" }, "duel": { + "title": "Duel", "description": "Rywalizacyjne doświadczenie 1 na 1, idealne do trenowania indywidualnych umiejętności" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Wybierz węzeł serwerów gry z zainstalowanym CS", "type": "Typ serwera", "select_type": "Wybierz typ serwera", + "game_mode": "Tryb gry", + "select_game_mode": "Wybierz tryb gry", + "valve_preset_group": "Presety Valve", + "custom_mode_group": "Własne tryby", + "custom_mode_group_locked": "wymaga węzła serwerów gry", + "custom_modes_need_node_title": "Własne tryby wymagają węzła serwerów gry", + "custom_modes_need_node_description": "Własny tryb to zestaw wtyczek, które 5Stack instaluje na serwerze, na którym działa. Na cudzym serwerze dedykowanym nie może niczego zainstalować, więc podepnij ten serwer do węzła serwerów gry w sekcji Połączenie, żeby móc jakiś wybrać.", "game": "Gra", "csgo_ranked_unavailable_title": "Ranked niedostępny", "csgo_ranked_unavailable_description": "Tryb ranked nie jest jeszcze dostępny dla serwerów CS:GO", @@ -8202,6 +8282,8 @@ "name": "Nazwa", "slug": "Slug", "description": "Opis", + "enabled": "Włączony", + "enabled_description": "Wyłączone tryby są zachowywane, ale nie można ich wybrać do meczu, serwera ani pokoju draftu.", "competitive_safe": "Bezpieczny dla gry competitive", "competitive_safe_description": "Czy ten tryb może być użyty w meczu rankingowym lub matchmakingowym.", "plugins": "Wtyczki", @@ -8215,8 +8297,16 @@ "save": "Zapisz tryb", "saved": "Tryb gry zapisany", "archived": "Tryb gry zarchiwizowany", + "restore": "Przywróć", + "restored": "Tryb gry przywrócony", + "delete": "Usuń", + "deleted": "Tryb gry usunięty", + "delete_confirm_title": "Usunąć {name}?", + "delete_confirm_description": "Trwale usuwa tryb. Jeśli jakiś mecz już go użył, zostanie zamiast tego ukryty — ta historia pozostaje nienaruszona i możesz go później przywrócić.", "runtime_none": "Te wtyczki nie mają wspólnego frameworka, więc ten tryb nigdzie nie zadziała. Usuń tę, która celuje w drugi framework.", - "runtime_only": "Działa tylko na {runtime}, bo to jedyny framework, dla którego istnieją wszystkie te wtyczki." + "runtime_only": "Działa tylko na {runtime}, bo to jedyny framework, dla którego istnieją wszystkie te wtyczki.", + "open_plugin": "Otwórz stronę tej wtyczki w nowej karcie", + "archived_instead": "W tym trybie rozegrano już mecze, więc został ukryty zamiast usunięty. Możesz go przywrócić w dowolnej chwili." } } } diff --git a/i18n/locales/pt_BR.json b/i18n/locales/pt_BR.json index a04320f5d..babbf2006 100644 --- a/i18n/locales/pt_BR.json +++ b/i18n/locales/pt_BR.json @@ -976,7 +976,8 @@ "live": "AO VIVO", "unplayed": "NÃO JOGADO", "upcoming": "PRÓXIMO", - "decider": "Desempate" + "decider": "Desempate", + "map_number": "MAPA {number}" }, "elo_change_badge": { "comp": "COMP", @@ -1229,44 +1230,73 @@ "title": "Painéis", "online": "Online agora", "total": "Todo o período", - "active_24h": "Ativos 24h", "active_7d": "Ativos 7d", + "active_30d": "Ativos 30d", "new_30d": "Novos 30d", "retained_180d": "Retidos 180d", "retained_180d_hint": "Painéis vistos pela primeira vez há mais de 180 dias que ainda estão reportando nesta semana.", "live": "Reportando na última hora", - "online_caption": "heartbeat na última hora", - "total_caption": "painéis distintos já vistos" + "recency": "Último contato", + "recency_hint": "Todo painel já visto, dividido em faixas disjuntas conforme há quanto tempo ele se reportou pela última vez. As faixas não se sobrepõem, então somam o total histórico.", + "seen_24h": "Hoje", + "dormant": "Inativos", + "reporting": "Nos totais", + "reporting_hint": "Painéis cujo último relatório é detalhado o bastante para contar nos totais da frota abaixo. Painéis calados há mais de 30 dias ficam de fora, para que os totais não sigam contando servidores que já foram desligados." }, "totals": { "self_reported": "Os painéis são auto-hospedados e reportam essas contagens por conta própria; os valores são validados na chegada, mas não podem ser verificados de forma independente. A infraestrutura é uma contagem pontual a partir do último relatório de cada painel, não um total contínuo.", "game_server_nodes": "Nós de servidores de jogo", - "game_server_nodes_caption": "registrados atualmente", + "nodes_online": "Nós online", + "nodes_offline": "Offline", + "nodes_hint": "Apenas nós ativados. Um nó que o operador desligou não é capacidade e não pode receber uma partida, então fica de fora de toda contagem aqui — inclusive das regiões em que está e de ter ou não GPU.", + "regions": "Regiões", "servers": "Servidores", - "servers_caption": "registrados atualmente", + "servers_enabled": "Servidores ativados", + "dedicated_servers": "Dedicados", + "servers_managed": "Gerenciados pelo painel", "public_servers": "Públicos", - "public_servers_caption": "servidores não ranqueados", "matches": "Partidas hospedadas", - "matches_week": "Hospedadas 7d", - "matches_month": "Hospedadas 30d", - "matches_year": "Hospedadas 1y", "maps_played": "Mapas jogados", + "not_reported_hint": "Nenhum painel enviou esse número ainda. Ele foi adicionado ao relatório de telemetria depois das builds que estão hoje na frota, então vai sendo preenchido conforme os painéis atualizam — não significa zero.", + "hosted_windows": "Hospedadas ao longo do tempo", + "completion": "Chegaram a um resultado", + "completion_hint": "Proporção das partidas iniciadas por um painel que terminaram com um resultado em vez de serem abandonadas no meio. Conta apenas as partidas que chegaram a entrar ao vivo.", + "player_base": "Base de jogadores", + "player_base_hint": "Cada linha é um recorte dos steam ids que os painéis já viram, e a porcentagem é sobre a primeira linha. As linhas não são etapas umas das outras — há muito mais steam ids com estatísticas em um mapa do que já entraram na plataforma, porque o painel guarda um registro de qualquer pessoa que se conecta a um servidor.", + "matches_live": "Ao vivo agora", + "matches_live_caption": "no último relatório", + "matches_finished": "Chegaram a um resultado", + "matches_abandoned": "Abandonadas", + "matches_created": "Criadas", + "matches_created_caption": "incl. as que nunca começaram", "matches_imported": "Partidas importadas", - "matches_imported_month": "Importadas 30d", "players": "Jogadores", "players_played": "Jogaram uma partida", "players_known": "Steam IDs vistos", "players_active": "Jogadores ativos 30d", + "players_active_7d": "Jogadores ativos 7d", + "players_active_30d": "Jogadores ativos 30d", "teams": "Equipes", "infrastructure": "Infraestrutura", "match_volume": "Volume de partidas", + "competition": "Competição", + "competition_hint": "As contagens de partidas aqui se sobrepõem: uma partida de liga é jogada dentro de uma fase de campeonato, então é contada nas duas. Todo o resto — quantos campeonatos e temporadas rodaram, quem participou — conta a competição em si, e não as partidas dela.", + "tournaments": "Campeonatos", + "league_seasons": "Temporadas de liga", + "league_teams": "Equipes de liga", + "scrim_requests": "Pedidos de scrim", + "events": "Eventos", + "teams_entered": "Equipes inscritas", + "registrations": "Inscrições", + "finished": "Finalizados", + "ongoing": "Em andamento", + "played": "Jogadas", + "maps_per_player": "{maps} mapas por jogador", + "maps_per_player_hint": "Aparições em mapas divididas pelo número de pessoas distintas que jogaram pelo menos um. Uma contagem alta de partidas com um número baixo aqui é um grupo pequeno jogando muito, e não uma comunidade movimentada.", "community": "Comunidade", - "matches_caption": "todo o período, em toda a frota", - "players_caption": "em uma lineup, últimos 30 dias", "hosted_hint": "Hospedadas contam apenas partidas que um painel rodou por conta própria. Partidas importadas vêm do FACEIT ou do histórico de partidas do CS2 e são listadas separadamente.", "community_hint": "Jogadores contabiliza contas que fizeram login com a Steam pelo menos uma vez. Um painel também armazena uma linha para cada Steam ID que só foi visto em uma lineup, demo ou sanção — esses são contados separadamente como Steam IDs vistos.", "gpu_nodes": "Nós de GPU", - "gpu_nodes_caption": "registrados atualmente", "all_time": "todo o período", "last_7d": "últimos 7 dias", "last_30d": "últimos 30 dias", @@ -1274,6 +1304,27 @@ "signed_in_caption": "logaram pelo menos uma vez", "players_known_caption": "inclui nunca logados" }, + "meter": { + "remainder": "Outros" + }, + "composition": { + "hint": "Tipo detalha as partidas que os próprios painéis hospedaram. Origem abrange tanto as hospedadas quanto as importadas, então soma mais do que o total hospedado.", + "by_type": "Por tipo", + "by_source": "Por origem" + }, + "distribution": { + "title": "Distribuição da frota", + "hint": "Painéis ativos nos últimos 30 dias, os 8 primeiros de cada. O país vem da rede pela qual o heartbeat chega, e não de algo que o painel informe sobre si mesmo.", + "versions": "Adoção de builds", + "versions_hint": "Um hash de commit não tem ordem própria, então a build mais nova é a que apareceu primeiro em um relatório. Todo o resto é medido em releases de atraso em relação a ela.", + "on_current": "dos painéis na build mais nova", + "behind": "Atrasados", + "build_current": "Atual", + "build_previous": "Uma atrás", + "build_older": "Mais antigas", + "runtimes": "Runtime de plugins", + "countries": "País" + }, "activity": { "matches": "Partidas hospedadas por dia (90d)", "matches_unit": "partidas" @@ -1316,7 +1367,10 @@ "demo_playback": "Reprodução de demos", "live_streaming": "Transmissão ao vivo", "highlights_imported": "Highlights automáticos (importados)", - "clip_branding": "Branding de clipes" + "clip_branding": "Branding de clipes", + "push_notifications": "Notificações push", + "voice_chat": "Chat de voz", + "video_chat": "Chat de vídeo" }, "panels_using": "Painéis em uso", "total": "Total", @@ -1326,7 +1380,8 @@ "capabilities_hint": "Não são configurações da aplicação — vêm de credenciais detectadas (Discord, Tailscale, Steam) ou dos switches de workload de GPU em cada nó de servidor de jogo.", "configured": "Configurado", "always": "Sempre disponível", - "always_hint": "Incluído em todos os painéis e não pode ser desativado, então apenas o uso é relevante." + "always_hint": "Incluído em todos os painéis e não pode ser desativado, então apenas o uso é relevante.", + "no_metric_hint": "Nada mede esse recurso, então não há uso a relatar — o que não é o mesmo que nenhum painel usá-lo." }, "plugins": { "title": "Plugins", @@ -1558,9 +1613,21 @@ "description": "Receba notificações neste dispositivo mesmo quando o 5stack não estiver aberto.", "categories": "O que enviar", "unsupported": "Notificações push não são suportadas neste navegador.", - "ios_install": "Instale este sistema na tela inicial para habilitar notificações push no iOS.", + "install_required": "Instale o app do 5stack para ativar isso.", + "install": { + "description": "As notificações push são entregues pelo app instalado, então ele precisa estar no seu dispositivo antes de você poder ativá-las.", + "open_app": "Já instalou? Abra o 5stack pela tela inicial ou pelos aplicativos e ative as notificações push por lá." + }, "denied": "As notificações estão bloqueadas para o sistema. Ative-as nas configurações do navegador ou do dispositivo para habilitar.", "failed": "Não foi possível habilitar notificações push. Tente novamente.", + "errors": { + "permission": "O pedido de permissão de notificação nunca respondeu. Isso pode acontecer quando o Google Play Services está ausente ou com problema no dispositivo.", + "vapid": "Tempo esgotado ao buscar a chave de push no servidor.", + "service_worker": "Tempo esgotado esperando o service worker deste dispositivo ficar ativo.", + "existing": "Tempo esgotado ao verificar se já existe uma inscrição de push.", + "register": "Tempo esgotado ao registrar no serviço de push deste dispositivo. Restrições de segundo plano ou de bateria podem estar bloqueando.", + "save": "Tempo esgotado ao salvar a inscrição de push no servidor." + }, "enabled_toast": "Notificações push ativadas", "disabled_toast": "Notificações push desativadas" }, @@ -1680,6 +1747,14 @@ "SeasonEnded": { "title": "Temporada encerrada", "description": "Uma temporada foi encerrada." + }, + "match_chat": { + "title": "Chat da partida", + "description": "Novas mensagens na sala de uma partida, incluindo o chat repassado de dentro do jogo. Desativado por padrão — dispara a cada linha digitada durante uma partida ao vivo." + }, + "MatchChatMessage": { + "title": "Mensagens do chat da partida", + "description": "Uma nova mensagem na sala de uma partida." } }, "quiet_hours": { @@ -1755,9 +1830,18 @@ "chat": { "title": "Configurações do Chat", "description": "Configure o quão longo deve ser a retenção das mensagens.", - "chat_message_ttl": "Chat Mensagem TTL (segundos)", - "chat_message_ttl_description": "Quão longo (em segundos) as mensagens permanecerão até serem permanentemente apagadas", - "updated": "Configurações atualizadas com sucesso" + "updated": "Configurações atualizadas com sucesso", + "lobby_title": "Retenção por sala", + "lobby_description": "Por quanto tempo (em segundos) as mensagens ficam guardadas em cada tipo de sala antes de serem excluídas em definitivo. 0 as descarta imediatamente.", + "direct_title": "Mensagens diretas", + "direct_description": "As mensagens diretas são armazenadas de forma duradoura, em vez de expirarem junto com o resto do chat. Defina por quantos dias mantê-las, ou 0 para mantê-las para sempre.", + "ttl_match": "Chat da partida", + "ttl_match_team": "Chat da equipe", + "ttl_matchmaking": "Chat do lobby de matchmaking", + "ttl_tournament": "Chat do campeonato", + "ttl_organizers": "Chat dos organizadores", + "ttl_draft": "Chat do lobby de draft", + "retention_direct_days": "Manter mensagens diretas por (dias)" }, "news": { "title": "Notícias", @@ -2003,7 +2087,9 @@ "tactical_amber_foreground": "Primeiro Plano do Destaque Tático" }, "assets_section": "Logo e Favicon", - "assets_section_description": "Envie um logo e favicon personalizados para a sua plataforma." + "assets_section_description": "Envie um logo e favicon personalizados para a sua plataforma.", + "upload_failed": "Falha no envio: {status}", + "delete_failed": "Falha ao excluir: {status}" }, "fixtures": { "dev_only_notice": "Fixtures estão disponíveis apenas em modo de desenvolvimento.", @@ -2387,7 +2473,8 @@ "disabled": "Desativado", "competitive": "Seguro para competitivo", "casual_only": "Somente casual", - "plugin_count": "{count} plugins" + "plugin_count": "{count} plugins", + "archived": "Arquivado" } }, "language": { @@ -2612,6 +2699,14 @@ "insert": "Inserir", "auto_embedded": "Link de vídeo incorporado" } + }, + "editor": { + "bold_text": "texto em negrito", + "italic_text": "texto em itálico", + "heading": "Título", + "list_item": "Item de lista", + "quote": "Citação", + "code": "código" } }, "seasons": { @@ -3174,11 +3269,14 @@ "create": "Mapa criado com sucesso", "update": "Mapa actualizado com sucesso", "delete": "Mapa excluído com sucesso", + "restore": "Mapa restaurado", + "restore_description": "Já existia um mapa excluído com esse nome, então ele foi restaurado com o histórico de partidas intacto.", "workshop_refresh": "Detalhes do mapa da oficina atualizados com sucesso" }, "error": { "create": "Erro ao criar o mapa", "update": "Erro ao atualizar o mapa", + "already_exists": "Já existe um mapa com esse nome", "invalid_workshop": "ID do mapa da oficina inválido. Verifique se o ID existe no Steam Workshop.", "workshop_refresh": "Erro ao atualizar os detalhes do mapa da oficina" }, @@ -3193,7 +3291,11 @@ "active_duty": "Campanha Ativa", "available_modes": "Disponível nos Modos", "workshop_id": "Link no Workshop", - "search": "Pesquisar Mapas" + "search": "Pesquisar Mapas", + "deleted_maps": "Mapas excluídos", + "deleted_maps_description": "Mapas excluídos ficam ocultos em todos os pools de mapas e seletores, mas as partidas já jogadas neles mantêm o histórico. Restaurar traz o mapa de volta como ele era.", + "deleted_on": "Excluído em {date}", + "restore_map": "Restaurar" }, "map_pool": { "toggle_pool_type": "Map Pool Atualizado", @@ -3241,7 +3343,9 @@ "competitive": "Competitivo", "wingman": "Braço Direito", "duel": "X1", - "scrimmage": "Modo Treino" + "scrimmage": "Modo Treino", + "premier": "Premier", + "faceit": "Faceit" }, "roles": { "all": "Todos", @@ -3532,13 +3636,69 @@ "empty_installed": "Nada instalado ainda.", "readme": "Sobre", "no_readme": "Este plugin não tem README no repositório.", + "readme_loading": "Carregando README…", "always_load": "Carregar em toda partida", "always_load_hint": "Carrega mesmo sem um modo de jogo selecioná-lo.", "always_load_ranked": "Também carrega em partidas ranqueadas e de matchmaking.", "configure": "Configuração", "configure_hint": "Escrita pelo plugin no primeiro carregamento, então aparece depois que um servidor rodar este modo uma vez.", "configure_open": "Abrir arquivos", - "pending": "pendente" + "pending": "pendente", + "state_installed": "Instalado", + "state_failed": "Falhou", + "state_absent": "Não instalado", + "checked": "Verificado", + "never_checked": "Nunca reportou", + "status": { + "Pending": "Pendente", + "Installing": "Instalando…", + "Installed": "Instalado", + "Failed": "Falhou", + "Removing": "Removendo…" + }, + "remove_confirm_title": "Remover este plugin?", + "remove_confirm_description": "Ele é usado por {modes}. Removê-lo também o tira desses modos.", + "remove_confirm_action": "Remover mesmo assim", + "guidelines": { + "badge": "Exige as diretrizes desativadas", + "toggle": "Desativar as diretrizes de servidor da Valve", + "hint": "{name} não consegue fazer o que faz enquanto o framework estiver aplicando as diretrizes de servidor da Valve. Servidores que o carregarem vão iniciar com elas desativadas.", + "off_hint": "Se você deixá-las ativadas, o plugin ainda é instalado e carregado — as partes que mudam o que o jogador vê simplesmente não fazem nada.", + "warning_title": "Aviso: isso pode fazer com que seus GSLTs da Steam sejam banidos", + "warning_description": "Segundo a Valve, operar fora das diretrizes oficiais de servidor pode fazer com que todo Game Server Login Token (GSLT) da conta Steam do dono do servidor seja banido. Ative por sua conta e risco.", + "warning_link_label": "Diretrizes de servidor da Valve", + "already_off": "Já estão desativadas nesta instalação: o 5stack Ranks desativa as diretrizes de servidor da Valve para mostrar as ranks dentro do jogo, e o risco disso recai sobre a sua conta Steam, e não sobre um servidor só.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Adicionar um plugin", + "badge": "Personalizado", + "title": "Adicionar um plugin que o catálogo não tem", + "description": "Aponte o 5Stack para um release e ele vira uma entrada como qualquer outra — instalável em todos os nós, com o download conferido contra um digest obtido aqui.", + "url": "URL do release", + "url_hint": "Um repositório do GitHub, um release ou um link direto para o .zip. Um repositório é resolvido para o arquivo Linux mais recente do seu último release.", + "runtime": "Framework", + "runtime_placeholder": "Para qual framework é esta build?", + "runtime_hint": "Uma build de CounterStrikeSharp não carrega no SwiftlyS2, e nada dentro do arquivo diz qual das duas é.", + "advanced": "Detalhes que não conseguimos ler da URL", + "slug": "Slug", + "version": "Versão", + "name": "Nome", + "summary": "Descrição", + "layout": "Estrutura do arquivo", + "layout_csgo": "A raiz do arquivo é game/csgo", + "layout_plugin": "A raiz do arquivo é a pasta do plugin", + "layout_hint": "A maioria dos plugins de CS2 vem em um arquivo que já contém addons/…; escolha a outra opção se o seu descompacta direto na pasta do próprio plugin.", + "install_path": "Caminho de instalação", + "warning_title": "Ninguém revisou este plugin", + "warning_description": "Um plugin de jogo é carregado dentro do processo cs2 nas suas máquinas e pode fazer tudo o que esse processo pode. Adicionar um aqui é você mesmo se responsabilizar por ele — não há nenhum mantenedor de registro entre você e ele.", + "submit": "Adicionar ao catálogo", + "added": "{name} {version} adicionado", + "remove": "Remover do catálogo", + "remove_hint": "Desinstale-o dos seus nós antes de tirá-lo do catálogo.", + "removed": "Removido do catálogo" + }, + "retry": "Tentar de novo" }, "awards": { "title": "Awards", @@ -3682,7 +3842,16 @@ "friend_request": "Pedido de Amizade", "invited_you": "convidou você para", "invited_party": "convidou você para o grupo", - "wants_to_be_friends": "quer ser seu amigo" + "wants_to_be_friends": "quer ser seu amigo", + "actor_host": "O anfitrião", + "actor_teammate": "Um companheiro de equipe", + "actor_organizer": "Um organizador", + "actor_player": "Um jogador" + }, + "season_rebuild": { + "title": "É preciso reconstruir o ELO da temporada {number}", + "message": "O ELO desta temporada está desatualizado. Reconstrua para recalcular o ELO e a classificação.", + "action": "Reconstruir ELO da temporada" } }, "app_nav": { @@ -3736,6 +3905,7 @@ "media_server": "Servidor de Mídia" }, "profile": { + "section": "Conta", "my_account": "Configurações", "logout": "Sair" }, @@ -3794,6 +3964,7 @@ "home": "Perfil", "play_menu": "Jogar", "community_menu": "Comunidade", + "support_menu": "Suporte", "watch_menu": "Partidas", "login": "Login para Jogar", "login_aria": "Entrar pela Steam", @@ -3935,6 +4106,14 @@ "map_poster": "Poster do Mapa", "map_patch": "Patch do Mapa" }, + "push_prompt": { + "title": "Ative as notificações", + "description": "Receba convites de partida, chamadas do lobby e mensagens neste dispositivo, mesmo com o 5stack fechado.", + "enable": "Ativar", + "dismiss": "Dispensar", + "enabled": "Notificações push ativadas", + "failed": "Não foi possível ativar as notificações push. Tente de novo." + }, "pwa": { "install": { "title": "Instalar App", @@ -4074,7 +4253,12 @@ "address_search": { "placeholder": "Busque um endereço ou local", "no_results": "Nenhum lugar correspondente encontrado" - } + }, + "slot": "Slot {slot}", + "sort": "ordenar", + "vs_team": "vs {name}", + "default": "Padrão", + "avg": "méd" }, "spotlight_search": { "placeholder": "Procurar jogadores...", @@ -4140,7 +4324,9 @@ "uploading": "Enviando arquivos...", "complete": "Envio completo", "complete_with_errors": "Envio completo mas com erros", - "files_failed": "{count} arquivos falharam ao ser enviados" + "files_failed": "{count} arquivos falharam ao ser enviados", + "progress_files": "{completed} / {total} arquivos", + "current_file": "Atual: {name}" }, "toolbar": { "new_file": "Novo Arquivo", @@ -4175,7 +4361,17 @@ "unsaved_changes_warning": "Você tem alterações não salvas em outros arquivos. Tem certeza de que deseja fechar eles?", "unsaved_changes_right_warning": "Você tem alterações não salvas nos arquivos à direita. Tem certeza de que deseja fechá-los?", "unsaved_changes_left_warning": "Você tem alterações não salvas nos arquivos à esquerda. Tem certeza de que deseja fechá-los?" - } + }, + "delete": { + "description": "Isso vai excluir \"{name}\" permanentemente. Esta ação não pode ser desfeita." + }, + "placeholder_folder_name": "nome da pasta", + "placeholder_file_name": "nome do arquivo", + "scope_node": "Nó", + "scope_server": "Servidor", + "missing_path": "Este diretório ainda não existe.", + "missing_path_create": "Criar", + "missing_path_dismiss": "Dispensar" }, "error": { "generic": "Ocorreu um erro. Por favor, tente novamente." @@ -4461,7 +4657,13 @@ "embed_winner_label": "Chave superior", "embed_loser_label": "Chave inferior", "embed_no_stage": "Nenhuma fase ativa.", - "zoom_fit": "Ajustar" + "zoom_fit": "Ajustar", + "round_number": "Round {round}", + "default_label": "Chave", + "main_path": "Principal", + "impact_source": "origem", + "impact_delete": "excluir", + "impact_reset": "redefinir" }, "match": { "reset_winner": "Redefinir vencedor", @@ -4534,10 +4736,13 @@ "elimination_matches": "Partidas de Eliminação" }, "standings": { - "title": "Classificação" + "title": "Classificação", + "tied": "EMPATADO" }, "results": { - "title": "Resultados" + "title": "Resultados", + "stats_heading": "ESTATÍSTICAS DO CAMPEONATO", + "live_provisional": "AO VIVO · PROVISÓRIO" }, "organizer": { "title": "Organizadores do Torneio", @@ -4830,7 +5035,8 @@ "link_copied": "Link do calendário copiado", "subscription_help": "Assine esta URL no seu app de calendário para ver todas as partidas desta equipe — desafios, jogos de liga e torneios.", "link_error": "Não foi possível obter o link do calendário" - } + }, + "roster_short": "elenco" }, "match": { "open_match": "Abrir partida", @@ -4910,7 +5116,8 @@ "label": "Melhor de", "description": "O vencedor é determinado por quem ganhar a maioria de um número específico de partidas", "placeholder": "Selecione melhor de", - "option": "Melhor de {count}" + "option": "Melhor de {count}", + "short": "MD{count}" }, "map_veto_settings": { "short_on": "As equipes banem e escolhem mapas do pool.", @@ -5066,7 +5273,8 @@ "game_mode": { "title": "Modo de jogo", "none": "Competitivo (sem modo)", - "description": "Carrega um conjunto de plugins e variáveis de console no servidor da partida." + "description": "Carrega um conjunto de plugins e variáveis de console no servidor da partida.", + "unranked_note": "Partidas com um modo de jogo personalizado nunca contam para o ELO nem para os rankings." } }, "schedule": { @@ -5742,7 +5950,8 @@ "kit_dropped_by": "Largado por {name}", "unknown_player": "desconhecido", "kill_filter_by_title": "Mostrando eliminações FEITAS PELO jogador — clique para alternar para as mortes DO jogador", - "kill_filter_of_title": "Mostrando mortes DO jogador — clique para alternar para as eliminações FEITAS PELO jogador" + "kill_filter_of_title": "Mostrando mortes DO jogador — clique para alternar para as eliminações FEITAS PELO jogador", + "utility_none": "{label} (nenhum)" }, "player_details_panel": { "stats_unavailable": "Estatísticas indisponíveis para esta partida.", @@ -5776,7 +5985,40 @@ "not_controllable": "A partida não está em um estado controlável.", "veto_override": "Veto Sobrescrito" }, - "demo_processing_hint": "A demo da partida está sendo enviada do servidor de jogo. Estatísticas, replay 2D e destaques ficam disponíveis quando terminar." + "demo_processing_hint": "A demo da partida está sendo enviada do servidor de jogo. Estatísticas, replay 2D e destaques ficam disponíveis quando terminar.", + "demo_playback": { + "xray": "Raio-X", + "xray_on": "Raio-X ligado", + "xray_off": "Raio-X desligado", + "all_players": "Todos os jogadores ({count})", + "previous_kill": "Abate anterior", + "previous_kill_player": "Abate anterior — {name}", + "next_kill": "Próximo abate", + "next_kill_player": "Próximo abate — {name}", + "seeking": "Buscando — o cs2 está se atualizando", + "click_to_jump": "{label} — clique para pular", + "kill_nav_follows": "A navegação por abates segue o jogador observado — escolha um jogador para fixar", + "demo_ended": "A demo terminou — o cs2 voltou ao menu", + "reload": "Recarregar", + "reload_demo": "Recarregar demo", + "metadata_not_parsed": "Os metadados da demo ainda não foram processados — reproduzir/pausar, pular e velocidade continuam funcionando.", + "previous_round": "Round anterior", + "next_round": "Próximo round", + "skip_back": "Voltar {seconds}s", + "hud_layout": "Layout / visibilidade do HUD" + }, + "maps": { + "demos_for_map": "{count} demos deste mapa", + "heading": "Mapas", + "demo_parsing": "Processando demo…", + "demo_parse": "Processar metadados da demo", + "demo_not_parsed": "Os metadados da demo não foram processados", + "demo_watch": "Assistir demo", + "not_parsed": "não processada" + }, + "highlights": { + "clip_count": "{count} clipes" + } }, "ui": { "tooltips": { @@ -5921,7 +6163,6 @@ }, "sanction": { "button": "Sancionar Jogador", - "typed_player": "{type} Jogador", "reason_label": "Motivo", "reason_placeholder": "Insira o motivo da sanção...", "reason_description": "Forneça um motivo claro para esta sanção", @@ -5939,6 +6180,24 @@ "1_week": "1 semana", "1_month": "1 mês", "permanent": "Permanente" + }, + "heading": { + "ban": "Banindo jogador", + "mute": "Mutando jogador", + "gag": "Aplicando gag ao jogador", + "silence": "Silenciando jogador" + }, + "submit": { + "ban": "Banir jogador", + "mute": "Mutar jogador", + "gag": "Aplicar gag", + "silence": "Silenciar jogador" + }, + "applied": { + "ban": "{name} foi banido", + "mute": "{name} foi mutado", + "gag": "{name} recebeu gag", + "silence": "{name} foi silenciado" } }, "search": { @@ -6018,7 +6277,13 @@ "game_banned": "Game Ban na Steam", "game_banned_count": "{count} banimentos Game Ban", "last_ban_days_ago": "Último banimento há {days} dia(s)", - "view_sanctions_hint": "Clique para ver todas as sanções" + "view_sanctions_hint": "Clique para ver todas as sanções", + "not_in_cs2": "Não está no CS2 agora" + }, + "context_menu": { + "view_profile": "Ver perfil", + "copy_steam_id": "Copiar Steam ID", + "steam_id_copied": "Steam ID copiado" }, "change_name": { "name_label": "Nome", @@ -6031,7 +6296,9 @@ }, "all_time_peak": "PICO HISTÓRICO", "at_match_start": "NO INÍCIO DA PARTIDA", - "current_elo": "ATUAL" + "current_elo": "ATUAL", + "faceit_level": "Nível {level}", + "elo_aria_label": "ELO, principal {tier} {elo}" }, "maps": { "veto": { @@ -6124,7 +6391,7 @@ "title": "Outros" }, "banned": "Você está banido do matchmaking", - "banned_until": "Você está banido do matchmaking até {date}", + "banned_until": "Você está banido do matchmaking até {time}", "confirm_selection": "Entrar na Fila", "in_queue": "na fila", "temp_banned": "Você está temporariamente banido do matchmaking.", @@ -6137,7 +6404,8 @@ "unavailable": "Lobby de {size}, não pode entrar na fila deste modo", "requirement": "Entre na fila com {half} ou menos, ou exatamente {full} jogadores" }, - "temp_banned_until": "Você está temporariamente banido do matchmaking até {time}" + "temp_banned_until": "Você está temporariamente banido do matchmaking até {time}", + "new_invites_count": "Novos convites ({count})" }, "game_server": { "lan_ip": "LAN IP", @@ -6276,7 +6544,13 @@ "no_metrics_description": "Ainda não há dados de métricas disponíveis para este nó. As métricas aparecerão assim que o nó começar a reportar dados.", "current": "atual", "percent_used": "{percent}% usado", - "col_name": "NOME" + "col_name": "NOME", + "node_telemetry_description": "CPU e memória ficam em destaque, com o histórico de rede e disco agrupado abaixo para uma análise mais detalhada.", + "disk": "Disco", + "cpu_hint": "Pressão sobre o processador na última janela de coleta.", + "memory_hint": "Uso do working set comparado à capacidade instalada.", + "network_hint": "Taxa combinada de recepção e transmissão em todas as interfaces.", + "disk_hint": "Visão do disco de maior utilização, com a linha do tempo correspondente." }, "chat": { "readonly": "Chat é apenas leitura.", @@ -6310,7 +6584,10 @@ "charts": { "usage": "Uso", "mount_os": "OS", - "mount_demos": "Demos" + "mount_demos": "Demos", + "total_series": "Total de {label}", + "gpu_index": "GPU {index}", + "series_avg": "méd. de {label}" }, "server": { "join_server": "Entrar no Servidor", @@ -6329,6 +6606,13 @@ "game_server_node_description": "Selecione um nó de servidor de jogo com CS instalado", "type": "Tipo de Servidor", "select_type": "Selecionar tipo de servidor", + "game_mode": "Modo de jogo", + "select_game_mode": "Selecionar modo de jogo", + "valve_preset_group": "Predefinições da Valve", + "custom_mode_group": "Modos personalizados", + "custom_mode_group_locked": "precisa de um nó de servidor de jogo", + "custom_modes_need_node_title": "Modos personalizados precisam de um nó de servidor de jogo", + "custom_modes_need_node_description": "Um modo personalizado é um conjunto de plugins que o 5Stack instala no servidor em que ele roda. Ele não consegue instalar nada em um servidor dedicado de terceiros, então vincule este servidor a um nó de servidor de jogo em Conexão para poder escolher um.", "game": "Jogo", "csgo_ranked_unavailable_title": "Rankeado Indisponível", "csgo_ranked_unavailable_description": "O servidor rankeado para CS:GO não está disponível no momento.", @@ -6503,7 +6787,8 @@ "spectator": { "slot": "Slot {slot}", "slot_waiting": "Slot {slot} · aguardando jogador…", - "take_manual_control": "Clique para assumir controle manual" + "take_manual_control": "Clique para assumir controle manual", + "slot_key": "Slot {slot} · tecla {key}" }, "page_title": "Stream Deck", "page_description": "Assuma uma GPU para transmitir uma partida ao vivo, trocar destinos e executar o diretor automático.", @@ -6525,7 +6810,26 @@ "swap_sides": "Trocar lados (override manual)", "refresh_hud": "Atualizar HUD (recarregar imagens dos jogadores)", "autodirector_on": "O diretor automático está ativado.", - "autodirector_hint": "O CS2 está escolhendo a câmera — clicar em um alvo ou pressionar uma tecla desativa isso e assume o controle manual." + "autodirector_hint": "O CS2 está escolhendo a câmera — clicar em um alvo ou pressionar uma tecla desativa isso e assume o controle manual.", + "actions": { + "spec_click": "Clique {button} do espectador", + "spec_slot": "Assistir ao slot {slot}", + "spec_jump": "Ir para o alvo do espectador", + "spec_autodirector": "Direção automática", + "spec_xray": "Raio-X", + "spec_hud": "Visibilidade do HUD", + "set_hud_mode": "Layout do HUD", + "swap_sides": "Trocar de lado", + "refresh_hud": "Atualizar HUD", + "start_live": "Iniciar transmissão", + "stop_live": "Parar transmissão", + "reconnect": "Reconectar", + "skip_shaders": "Pular compilação de shaders" + }, + "gpu_pool_hint": "Pool de GPU — abrir a página de Nós com GPU", + "no_free_gpu": "Nenhuma GPU livre", + "start_live_hint": "Iniciar uma transmissão ao vivo", + "start_tv_hint": "Iniciar uma transmissão de TV com atraso" }, "system_metrics_extras": { "gpu_usage": "Uso de GPU", @@ -6536,7 +6840,8 @@ }, "rcon": { "console": "Console RCON", - "suggestions": "Sugestões" + "suggestions": "Sugestões", + "entry_count": "{count} entradas" }, "game_server_node": { "set_ports": "Definir Portas" @@ -6632,7 +6937,9 @@ "done_only_count": "{count} concluído", "cancelled_count": "{count} cancelado", "retry_failed_count": "Nova tentativa falhou ({count})", - "retry_all_clips": "Re-tentar todos os {count} clipes" + "retry_all_clips": "Re-tentar todos os {count} clipes", + "target_clip": "clipe de {name}", + "render_id": "Renderização {id}" }, "create_dialog": { "title": "Clipe automático", @@ -6704,7 +7011,11 @@ "no_moments": "Nenhum momento digno de highlight para {target} neste mapa.", "this_player": "este jogador", "queue_render": "Enfileirar renderização" - } + }, + "player": "Jogador", + "clip": "Clipe", + "open_profile": "Abrir o perfil de {name}", + "size": "Tamanho" }, "time_ago": { "just_now": "agora mesmo", @@ -6732,7 +7043,8 @@ "view_short": "Ver", "premier": "Premier", "competitive": "Competitivo", - "wingman": "Braço Direito" + "wingman": "Braço Direito", + "imported_from": "{type} · importada de {source}" }, "breadcrumbs": { "dashboard": "painel" @@ -7637,7 +7949,9 @@ "award_unavailable": "Não foi possível carregar este prêmio.", "load_existing": "Load an existing award…", "editing": "Editing: {name}" - } + }, + "badge_alt": "prêmio {label}", + "badge_alt_tournament": "prêmio {label} de {tournament}" }, "awards_modal": { "view_tournament": "VER TORNEIO", @@ -7714,13 +8028,22 @@ "denied": "Seu navegador bloqueou o acesso à câmera. Permita para este site e tente novamente.", "missing": "Nenhuma câmera encontrada. Conecte uma ou escolha outro dispositivo abaixo.", "busy": "Outro aplicativo já está usando a câmera. Feche-o e tente novamente.", + "insecure": "Sua câmera precisa de uma conexão segura. Abra o 5stack por HTTPS (ou localhost) e tente de novo.", "unknown": "Não foi possível iniciar a câmera. Tente novamente." }, "media_pending": "Aguardando permissão da câmera…", "dismiss": "Fechar", "nag": "Você ainda não está conectado. O check-in permanece bloqueado até sua câmera estar ao vivo.", "nag_action": "Configurar", - "mic": "Microfone" + "mic": "Microfone", + "errors": { + "no_media_path": "A câmera chegou ao servidor, mas não foi possível estabelecer um caminho de mídia.", + "ice_timeout": "A câmera chegou ao servidor, mas não foi possível estabelecer um caminho de mídia a tempo.", + "feed_dropped": "O sinal da câmera caiu.", + "unknown": "Não foi possível iniciar sua câmera.", + "load_failed": "Não foi possível carregar as câmeras dos jogadores.", + "call_failed": "Não foi possível iniciar a chamada." + } }, "voice": { "errors": { @@ -7789,29 +8112,31 @@ "call": { "start_camera": "Ligar câmera", "stop_camera": "Desligar câmera", + "take_camera_back": "No seu celular — toque para trazer de volta para cá", + "take_mic_back": "Microfone no seu celular — toque para trazer de volta para cá", "pop_out": "Destacar vídeo", "pop_in": "Recolocar vídeo", - "join_to_see": "Ligue sua câmera para ver a dos outros.", "more_members": "+{count} mais não exibidos", "phone": { "use_phone": "Usar seu celular como câmera", "scan": "Escaneie com seu celular para usar a câmera nesta chamada.", "scan_hint": "Você fará login no celular primeiro", - "live": "Na câmera", - "idle": "Não compartilhando", "in_call": "{count} outros na chamada", "start": "Compartilhar esta câmera", - "stop": "Parar compartilhamento", - "hint": "Seu microfone continua no dispositivo em que você joga — isto compartilha apenas vídeo.", - "not_a_member": "Você não está nesta chamada. Entre primeiro no dispositivo em que joga e depois escaneie o código novamente." + "not_a_member": "Você não está nesta chamada. Entre primeiro no dispositivo em que joga e depois escaneie o código novamente.", + "mic_echo_hint": "Seu PC precisa de fones de ouvido — nas caixas de som este celular vai captar a chamada de volta e gerar eco.", + "not_in_call": "Entre na chamada no dispositivo em que você está jogando; depois este celular pode assumir.", + "take_mic_short": "Assumir mic", + "start_short": "Câmera", + "stop_short": "Parar", + "flip": "Virar", + "hand_back": "Devolver" }, "nobody_yet": "Ninguém conectado ainda.", - "started_video": "{name} ligou a câmera", "hide_video": "Ocultar câmera", "show_video": "Mostrar câmera", "show_self": "Mostrar minha câmera para mim", "device_settings": "Configurações de voz e vídeo", - "joined_voice": "{name} entrou no chat de voz", "join_action": "Entrar", "dismiss_action": "Fechar", "handoff_taken": "Assumiu {channel} de uma janela que você fechou", @@ -7827,8 +8152,129 @@ "system_default": "Padrão do sistema", "selected": "Dispositivo selecionado", "following_system": "Segue a configuração do sistema", - "device": "Dispositivo", - "camera": "Câmera" + "device": "Dispositivo" + } + }, + "chat_rail": { + "remove_conversation": "Remover da barra" + }, + "faq": { + "title": "Ajuda e FAQ", + "intro": "Perguntas comuns sobre a plataforma, sobre como jogar aqui e sobre como rodar sua própria instância. Se algo não estiver coberto, os links da comunidade no fim da página são o caminho mais rápido para uma resposta.", + "search_placeholder": "Buscar perguntas", + "no_results": "Nenhuma pergunta corresponde a \"{term}\".", + "links": { + "features": "Todos os recursos", + "overview": "O que é o 5Stack?", + "matchmaking": "Documentação do matchmaking", + "tournaments": "Documentação de campeonatos", + "stats_guide": "Guia de estatísticas", + "performance_rating": "Nota de desempenho", + "match_replay": "Replay de partidas", + "highlights": "Highlights", + "web_push": "Configuração de web push", + "install": "Guia de instalação", + "hosting_faq": "FAQ de hospedagem", + "requirements": "Requisitos", + "what_is_installed": "O que é instalado", + "server_setup": "Configuração de servidores", + "game_server_nodes": "Nós de servidor de jogo", + "gpu_nodes": "Nós com GPU", + "branding": "Identidade visual e temas", + "panel_plugins": "Plugins do painel", + "game_plugins": "Plugins de jogo" + }, + "about": { + "title": "Sobre o 5Stack", + "what_is": { + "question": "O que é o 5Stack?", + "answer": "O 5Stack é a camada de competição do Counter-Strike 2 — o software que fica entre um servidor de jogo e uma liga. Uma única instalação roda a pilha inteira: matchmaking, lobbies de draft, equipes, campeonatos e temporadas, estatísticas e Elo, captura de demos, replays no navegador, highlights e transmissão ao vivo." + }, + "this_site": { + "question": "O que é o {brand}?", + "answer": "O {brand} é uma instância do 5Stack. O software é open source e auto-hospedado, então cada comunidade que o roda opera o próprio site, os próprios servidores e as próprias regras — esta é uma delas." + }, + "cost": { + "question": "É gratuito?", + "answer": "Sim. O 5Stack é gratuito e open source, e você mesmo o hospeda, então não há custo por usuário nem por partida cobrado pelo projeto. Você paga apenas pela infraestrutura em que escolher rodá-lo. Ele é construído e mantido por um único desenvolvedor, e os patrocínios no GitHub são o que mantêm o desenvolvimento em andamento." + }, + "sign_in": { + "question": "Como faço para entrar?", + "answer": "Pela Steam. Não há conta separada para criar nem senha para lembrar — seu perfil da Steam é sua identidade aqui, que também é como as partidas sabem quem você é assim que você se conecta a um servidor." + }, + "games": { + "question": "Quais jogos são suportados?", + "answer": "Counter-Strike 2. As estatísticas, os replays, o gerenciamento de servidores e o plugin dentro do jogo foram todos feitos especificamente para ele, em vez de serem uma ferramenta genérica de campeonatos." + } + }, + "playing": { + "title": "Jogando aqui", + "find_match": { + "question": "Como entro em uma partida?", + "answer": "Comece pela página Jogar. Você pode entrar na fila do matchmaking, que junta jogadores por região e latência e permite entrar em grupo; entrar em um lobby de draft, onde os capitães escolhem os times contra o relógio; ou marcar um scrim pelo buscador de scrims. Quais dessas opções existem depende do que esta instância tem habilitado." + }, + "check_in": { + "question": "Por que preciso fazer check-in antes de uma partida?", + "answer": "O check-in confirma que todo mundo está mesmo na frente do computador antes de um servidor ser reservado e de o resto do lobby ficar esperando. Partidas com cancelamento automático mostram uma contagem regressiva, e a partida é cancelada sozinha se os jogadores necessários não fizerem check-in até o prazo." + }, + "tournaments": { + "question": "Como entro em um campeonato?", + "answer": "Abra o campeonato enquanto as inscrições estiverem abertas e inscreva uma equipe — uma que você já tenha ou um elenco novo criado para aquele evento. Campeonatos podem ser de eliminação simples, eliminação dupla, todos contra todos ou suíço, e podem ser encadeados em várias fases, com ligas sazonais por cima para acesso e rebaixamento." + }, + "stats": { + "question": "De onde vêm minhas estatísticas?", + "answer": "A demo de cada partida é processada depois que ela termina, então os números vêm da gravação real e não do placar reportado ao vivo. Isso gera rating HLTV, KAST, ADR, duelos de abertura, clutches, utilitários e precisão por arma, além da variação de Elo. O guia de estatísticas explica o que cada número significa e como é calculado." + }, + "replays": { + "question": "Dá para rever uma partida sem baixar a demo?", + "answer": "Sim. Toda partida tem um replay 2D em radar e um sobrevoo 3D que rodam no navegador, com a linha do tempo dos rounds, a economia e o kill feed ao lado. A demo bruta continua disponível para download, caso você queira assistir dentro do próprio CS2." + }, + "highlights": { + "question": "De onde vêm os clipes de highlight?", + "answer": "Multikills, clutches e rounds de faca são detectados automaticamente quando uma partida termina e renderizados em clipes. Você também pode cortar os seus a partir de qualquer partida no editor do app. A renderização roda em um nó com GPU, então os clipes só aparecem em instâncias que tenham um." + }, + "notifications": { + "question": "Por que não consigo ativar as notificações push?", + "answer": "O push é entregue pelo app instalado, e não por uma aba do navegador, então você precisa instalar o app no seu dispositivo primeiro — o botão Instalar no menu faz isso. Depois de instalado, a opção em Configurações → Notificações fica disponível. No iPhone e no iPad isso é uma exigência do próprio sistema operacional." + } + }, + "hosting": { + "title": "Hospedando a sua", + "self_host": { + "question": "Posso rodar minha própria instância?", + "answer": "Sim — essa é a forma pensada de usar o 5Stack. Ele é auto-hospedado e instala com um único comando, que sobe o Kubernetes (K3s), o banco de dados, o armazenamento e o próprio painel. O guia de instalação na documentação explica o processo do início ao fim." + }, + "requirements": { + "question": "Do que preciso para hospedar?", + "answer": "Um servidor Linux com pelo menos 3 GB de memória e um domínio que você controle. As portas 80 e 443 precisam estar acessíveis para o roteamento, além da porta 8585 para o conector dos nós de servidor de jogo. Você também vai apontar vários subdomínios para o painel — api, ws, demos, search e console —, então planeje DNS curinga ou registros individuais." + }, + "game_servers": { + "question": "Onde as partidas realmente rodam?", + "answer": "Em nós de servidor de jogo que você conecta ao painel. Você pode deixá-lo subir servidores sob demanda, registrar hardware dedicado que já possui ou apontar para um host de terceiros. As atualizações do CS2 são aplicadas automaticamente, e regiões, Steam Relay e cenários de LAN são todos suportados." + }, + "gpu": { + "question": "Preciso de uma GPU?", + "answer": "Só para os recursos de vídeo. A reprodução de demos no navegador, a renderização automática de highlights e a transmissão ao vivo pelo painel são todas renderizadas em um nó com GPU NVIDIA. Todo o resto — matchmaking, campeonatos, estatísticas, os replays 2D e 3D, servidores, chat — funciona bem sem GPU." + }, + "managed": { + "question": "Existe uma versão hospedada ou gerenciada que eu possa pagar?", + "answer": "Não. O 5Stack é apenas auto-hospedado; não há plano SaaS nem oferta gerenciada para comprar. O 5stack.gg é a instância pública do próprio mantenedor, útil para ver o software rodando antes de instalá-lo." + }, + "branding": { + "question": "Dá para deixar com a cara da minha organização?", + "answer": "Sim. O nome, o logo, o favicon, a página de login e todo o tema de cores são configuráveis pelas configurações de administração, de modo que a instância se leia como a sua plataforma, e não como o software de outra pessoa com o seu logo por cima." + }, + "extend": { + "question": "Dá para estender com código meu?", + "answer": "Em dois lugares. Você pode embutir seus próprios apps web como páginas nativas do painel — eles herdam a sessão e o design system, então não há fork para manter. E, no lado do servidor, você pode rodar seus próprios plugins de CS2 junto com os do 5Stack, no CounterStrikeSharp ou no SwiftlyS2." + } + }, + "support": { + "title": "Ainda com dúvida?", + "description": "O Discord é o caminho mais rápido até uma pessoa — quem roda instâncias do 5Stack está lá. Bugs e pedidos de recurso vão no GitHub, e a documentação cobre instalação, servidores e todos os recursos em detalhe.", + "discord": "Entrar no Discord", + "github": "Reportar um problema", + "docs": "Ler a documentação" } }, "game_modes": { @@ -7836,6 +8282,8 @@ "name": "Nome", "slug": "Slug", "description": "Descrição", + "enabled": "Ativado", + "enabled_description": "Modos desativados são mantidos, mas não podem ser escolhidos para uma partida, servidor ou sala de draft.", "competitive_safe": "Seguro para jogo competitivo", "competitive_safe_description": "Se este modo pode ser usado por uma partida ranqueada ou de matchmaking.", "plugins": "Plugins", @@ -7849,8 +8297,16 @@ "save": "Salvar modo", "saved": "Modo de jogo salvo", "archived": "Modo de jogo arquivado", + "restore": "Restaurar", + "restored": "Modo de jogo restaurado", + "delete": "Excluir", + "deleted": "Modo de jogo excluído", + "delete_confirm_title": "Excluir {name}?", + "delete_confirm_description": "Remove o modo em definitivo. Se alguma partida já o usou, ele é ocultado em vez disso — esse histórico permanece intacto e você pode restaurá-lo depois.", "runtime_none": "Estes plugins não têm nenhum framework em comum, então este modo não pode rodar em lugar nenhum. Remova o que for do outro framework.", - "runtime_only": "Roda apenas em {runtime}, porque é o único framework para o qual todos estes plugins existem." + "runtime_only": "Roda apenas em {runtime}, porque é o único framework para o qual todos estes plugins existem.", + "open_plugin": "Abrir a página deste plugin em uma nova aba", + "archived_instead": "Já houve partidas com este modo, então ele foi ocultado em vez de excluído. Você pode restaurá-lo quando quiser." } } } diff --git a/i18n/locales/ru_RU.json b/i18n/locales/ru_RU.json index 98593d317..43a04f194 100644 --- a/i18n/locales/ru_RU.json +++ b/i18n/locales/ru_RU.json @@ -2473,7 +2473,8 @@ "disabled": "Отключён", "competitive": "Подходит для competitive", "casual_only": "Только casual", - "plugin_count": "{count} плагинов" + "plugin_count": "{count} плагинов", + "archived": "Архивирован" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Карта успешно создана", "update": "Карта успешно обновлена", "delete": "Карта успешно удалена", + "restore": "Карта восстановлена", + "restore_description": "Удалённая карта с таким названием уже существовала, поэтому её восстановили вместе со всей историей матчей.", "workshop_refresh": "Данные карты из мастерской успешно обновлены" }, "error": { "create": "Ошибка создания карты", "update": "Ошибка обновления карты", + "already_exists": "Карта с таким названием уже существует", "invalid_workshop": "Неверный ID карты в мастерской. Проверь, что такой ID существует в Steam Workshop.", "workshop_refresh": "Ошибка обновления данных карты из мастерской" }, @@ -3287,7 +3291,11 @@ "active_duty": "Активная ротация", "available_modes": "Доступно в режимах", "workshop_id": "Ссылка на мастерскую", - "search": "Поиск карт" + "search": "Поиск карт", + "deleted_maps": "Удалённые карты", + "deleted_maps_description": "Удалённые карты скрыты во всех пулах карт и списках выбора, но у уже сыгранных на них матчей история сохраняется. Восстановление возвращает карту такой, какой она была.", + "deleted_on": "Удалена {date}", + "restore_map": "Восстановить" }, "map_pool": { "toggle_pool_type": "Пулы карт обновлены", @@ -3628,13 +3636,69 @@ "empty_installed": "Пока ничего не установлено.", "readme": "О плагине", "no_readme": "В репозитории этого плагина нет README.", + "readme_loading": "Загрузка README…", "always_load": "Загружать в каждом матче", "always_load_hint": "Загружать без выбора режимом игры.", "always_load_ranked": "Также загружается в рейтинговых матчах и матчмейкинге.", "configure": "Конфигурация", "configure_hint": "Плагин создаёт её при первой загрузке, поэтому она появится после того, как сервер один раз отработает в этом режиме.", "configure_open": "Открыть файлы", - "pending": "в ожидании" + "pending": "в ожидании", + "state_installed": "Установлен", + "state_failed": "Ошибка", + "state_absent": "Не установлен", + "checked": "Проверено", + "never_checked": "Ни разу не отчитывалась", + "status": { + "Pending": "Ожидает", + "Installing": "Устанавливается…", + "Installed": "Установлен", + "Failed": "Ошибка", + "Removing": "Удаляется…" + }, + "remove_confirm_title": "Удалить этот плагин?", + "remove_confirm_description": "Его использует {modes}. При удалении он пропадёт и из этих режимов.", + "remove_confirm_action": "Всё равно удалить", + "guidelines": { + "badge": "Нужны отключённые правила", + "toggle": "Отключить серверные правила Valve", + "hint": "{name} не сможет делать то, ради чего он нужен, пока фреймворк соблюдает серверные правила Valve. Серверы, которые его загружают, будут стартовать с отключёнными правилами.", + "off_hint": "Если оставить их включёнными, плагин всё равно установится и загрузится — просто те его части, что меняют то, что видит игрок, ничего не сделают.", + "warning_title": "Внимание: из-за этого могут забанить твои Steam-GSLT", + "warning_description": "По словам Valve, работа вне их официальных серверных правил может привести к бану всех Game Server Login Token (GSLT) на аккаунте Steam владельца сервера. Включай на свой страх и риск.", + "warning_link_label": "Серверные правила Valve", + "already_off": "Уже отключены для этого развёртывания: 5stack Ranks отключает серверные правила Valve, чтобы показывать ранги в игре, и связанный с этим риск касается твоего аккаунта Steam, а не одного сервера.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Добавить плагин", + "badge": "Свой", + "title": "Добавить плагин, которого нет в каталоге", + "description": "Укажи 5Stack на релиз — и он станет такой же записью, как остальные: устанавливаемой на любую ноду, со скачиванием, сверяемым с контрольной суммой, снятой здесь.", + "url": "URL релиза", + "url_hint": "Репозиторий GitHub, релиз или прямая ссылка на .zip. Репозиторий разрешается в самый свежий Linux-архив его последнего релиза.", + "runtime": "Фреймворк", + "runtime_placeholder": "Для какого фреймворка эта сборка?", + "runtime_hint": "Сборка под CounterStrikeSharp не загрузится под SwiftlyS2, а в архиве нигде не сказано, какая из них это.", + "advanced": "Детали, которые не удалось прочитать из URL", + "slug": "Slug", + "version": "Версия", + "name": "Название", + "summary": "Описание", + "layout": "Структура архива", + "layout_csgo": "Корень архива — game/csgo", + "layout_plugin": "Корень архива — папка плагина", + "layout_hint": "Большинство плагинов для CS2 поставляются архивом, в котором уже есть addons/…; выбери второй вариант, если твой распаковывается прямо в собственную папку плагина.", + "install_path": "Путь установки", + "warning_title": "Этот плагин никто не проверял", + "warning_description": "Игровой плагин загружается в процесс cs2 на твоих машинах и может всё, что может этот процесс. Добавляя его сюда, ты ручаешься за него сам — между тобой и ним нет никакого сопровождающего реестра.", + "submit": "Добавить в каталог", + "added": "{name} {version} добавлен", + "remove": "Убрать из каталога", + "remove_hint": "Удали его со своих нод, прежде чем убирать из каталога.", + "removed": "Убран из каталога" + }, + "retry": "Повторить" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "Это безвозвратно удалит «{name}». Отменить это действие нельзя." }, "placeholder_folder_name": "имя папки", - "placeholder_file_name": "имя файла" + "placeholder_file_name": "имя файла", + "scope_node": "Нода", + "scope_server": "Сервер", + "missing_path": "Этого каталога пока не существует.", + "missing_path_create": "Создать его", + "missing_path_dismiss": "Скрыть" }, "error": { "generic": "Произошла ошибка. Попробуй ещё раз." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Режим игры", "none": "Competitive (без режима)", - "description": "Загружает набор плагинов и консольных переменных на сервер матча." + "description": "Загружает набор плагинов и консольных переменных на сервер матча.", + "unranked_note": "Матчи со своим режимом игры никогда не идут в зачёт ELO и таблиц лидеров." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Соревновательный", "description": "Классический соревновательный формат 5 на 5 с полной командной координацией" }, "wingman": { + "title": "Wingman", "description": "Объединись с другом и сыграй в динамичных матчах 2 на 2" }, "duel": { + "title": "Дуэль", "description": "Соревновательный формат 1 на 1, идеален для отработки индивидуального навыка" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Выбери ноду игровых серверов с установленным CS", "type": "Тип сервера", "select_type": "Выбрать тип сервера", + "game_mode": "Режим игры", + "select_game_mode": "Выбрать режим игры", + "valve_preset_group": "Пресеты Valve", + "custom_mode_group": "Свои режимы", + "custom_mode_group_locked": "нужна нода игровых серверов", + "custom_modes_need_node_title": "Своим режимам нужна нода игровых серверов", + "custom_modes_need_node_description": "Свой режим — это набор плагинов, которые 5Stack устанавливает на сервер, где он запускается. На чужом выделенном сервере он ничего установить не может, поэтому привяжи этот сервер к ноде игровых серверов в разделе «Подключение», чтобы выбрать режим.", "game": "Игра", "csgo_ranked_unavailable_title": "Ранговый режим недоступен", "csgo_ranked_unavailable_description": "Ранговый режим пока недоступен для серверов CS:GO.", @@ -8202,6 +8282,8 @@ "name": "Название", "slug": "Слаг", "description": "Описание", + "enabled": "Включён", + "enabled_description": "Отключённые режимы сохраняются, но их нельзя выбрать для матча, сервера или комнаты драфта.", "competitive_safe": "Подходит для competitive", "competitive_safe_description": "Можно ли использовать этот режим в рейтинговых матчах и матчмейкинге.", "plugins": "Плагины", @@ -8215,8 +8297,16 @@ "save": "Сохранить режим", "saved": "Режим игры сохранён", "archived": "Режим игры отправлен в архив", + "restore": "Восстановить", + "restored": "Режим игры восстановлен", + "delete": "Удалить", + "deleted": "Режим игры удалён", + "delete_confirm_title": "Удалить {name}?", + "delete_confirm_description": "Удаляет режим навсегда. Если в нём уже прошёл хотя бы один матч, он вместо этого скрывается — эта история остаётся нетронутой, и позже режим можно восстановить.", "runtime_none": "У этих плагинов нет общего фреймворка, поэтому этот режим нигде не запустится. Удали тот, который собран под другой фреймворк.", - "runtime_only": "Работает только на {runtime} — это единственный фреймворк, под который выпущены все эти плагины." + "runtime_only": "Работает только на {runtime} — это единственный фреймворк, под который выпущены все эти плагины.", + "open_plugin": "Открыть страницу этого плагина в новой вкладке", + "archived_instead": "В этом режиме уже проходили матчи, поэтому он был скрыт, а не удалён. Восстановить его можно в любой момент." } } } diff --git a/i18n/locales/sv_SE.json b/i18n/locales/sv_SE.json index a8765dd04..e1c4d2746 100644 --- a/i18n/locales/sv_SE.json +++ b/i18n/locales/sv_SE.json @@ -2473,7 +2473,8 @@ "disabled": "Inaktiverat", "competitive": "Säkert för competitive", "casual_only": "Endast casual", - "plugin_count": "{count} tillägg" + "plugin_count": "{count} tillägg", + "archived": "Arkiverat" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Kartan skapades", "update": "Kartan uppdaterades", "delete": "Kartan togs bort", + "restore": "Kartan återställd", + "restore_description": "Det fanns redan en borttagen karta med det här namnet, så den återställdes med sin matchhistorik intakt.", "workshop_refresh": "Workshop-kartdetaljer uppdaterades" }, "error": { "create": "Fel vid skapande av karta", "update": "Fel vid uppdatering av karta", + "already_exists": "Det finns redan en karta med det här namnet", "invalid_workshop": "Ogiltigt workshop-karta-ID. Kontrollera att ID:t finns på Steam Workshop.", "workshop_refresh": "Fel vid uppdatering av workshop-kartdetaljer" }, @@ -3287,7 +3291,11 @@ "active_duty": "Active duty", "available_modes": "Tillgänglig i lägen", "workshop_id": "Workshop-länk", - "search": "Sök kartor" + "search": "Sök kartor", + "deleted_maps": "Borttagna kartor", + "deleted_maps_description": "Borttagna kartor är dolda i alla kartpooler och väljare, men matcher som redan spelats på dem behåller sin historik. En återställning tar tillbaka kartan precis som den var.", + "deleted_on": "Borttagen {date}", + "restore_map": "Återställ" }, "map_pool": { "toggle_pool_type": "Kartpooler uppdaterade", @@ -3628,13 +3636,69 @@ "empty_installed": "Inget installerat än.", "readme": "Om", "no_readme": "Det här tillägget har ingen README i sitt repository.", + "readme_loading": "Laddar README…", "always_load": "Ladda i varje match", "always_load_hint": "Ladda det utan att ett spelläge väljer det.", "always_load_ranked": "Laddas även i rankade matcher och matchmaking.", "configure": "Konfiguration", "configure_hint": "Skrivs av tillägget vid första laddningen, så den dyker upp efter att en server kört det här läget en gång.", "configure_open": "Öppna filer", - "pending": "väntar" + "pending": "väntar", + "state_installed": "Installerat", + "state_failed": "Misslyckades", + "state_absent": "Inte installerat", + "checked": "Kontrollerat", + "never_checked": "Har aldrig rapporterat", + "status": { + "Pending": "Väntande", + "Installing": "Installerar…", + "Installed": "Installerat", + "Failed": "Misslyckades", + "Removing": "Tar bort…" + }, + "remove_confirm_title": "Ta bort det här tillägget?", + "remove_confirm_description": "Det används av {modes}. Tar du bort det försvinner det även från de lägena.", + "remove_confirm_action": "Ta bort ändå", + "guidelines": { + "badge": "Kräver att riktlinjerna är av", + "toggle": "Stäng av Valves serverriktlinjer", + "hint": "{name} kan inte göra det den är till för så länge ramverket upprätthåller Valves serverriktlinjer. Servrar som laddar den startar med dem avstängda.", + "off_hint": "Låter du dem vara på installeras och laddas tillägget ändå — de delar som ändrar vad en spelare ser gör helt enkelt ingenting.", + "warning_title": "Varning: det här kan få dina Steam-GSLT:er bannade", + "warning_description": "Enligt Valve kan drift utanför deras officiella serverriktlinjer leda till att varje Game Server Login Token (GSLT) på serverägarens Steam-konto bannas. Aktivera på egen risk.", + "warning_link_label": "Valves serverriktlinjer", + "already_off": "Redan avstängda för den här deployen: 5stack Ranks stänger av Valves serverriktlinjer för att visa ranker i spelet, och risken det innebär gäller ditt Steam-konto snarare än en enskild server.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Lägg till ett tillägg", + "badge": "Anpassat", + "title": "Lägg till ett tillägg som katalogen inte har", + "description": "Peka 5Stack mot en release så blir den en post som alla andra — installerbar på varje nod, med nedladdningen kontrollerad mot en kontrollsumma tagen här.", + "url": "Release-URL", + "url_hint": "Ett GitHub-repo, en release eller en länk direkt till .zip-filen. Ett repo slås upp till det senaste Linux-arkivet i dess nyaste release.", + "runtime": "Ramverk", + "runtime_placeholder": "Vilket ramverk är det här bygget för?", + "runtime_hint": "Ett CounterStrikeSharp-bygge laddas inte under SwiftlyS2, och inget i arkivet säger vilket av dem det är.", + "advanced": "Detaljer vi inte kunde läsa ut ur URL:en", + "slug": "Slug", + "version": "Version", + "name": "Namn", + "summary": "Beskrivning", + "layout": "Arkivets struktur", + "layout_csgo": "Arkivets rot är game/csgo", + "layout_plugin": "Arkivets rot är tilläggets mapp", + "layout_hint": "De flesta CS2-tillägg levereras i ett arkiv som redan innehåller addons/…; välj det andra alternativet om ditt packas upp direkt i tilläggets egen mapp.", + "install_path": "Installationssökväg", + "warning_title": "Ingen har granskat det här tillägget", + "warning_description": "Ett speltillägg laddas in i cs2-processen på dina maskiner och kan allt den processen kan. Lägger du till ett här går du själv i god för det — det finns ingen registeransvarig mellan dig och det.", + "submit": "Lägg till i katalogen", + "added": "{name} {version} tillagt", + "remove": "Ta bort från katalogen", + "remove_hint": "Avinstallera det från dina noder innan du tar ut det ur katalogen.", + "removed": "Borttaget från katalogen" + }, + "retry": "Försök igen" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "Det här raderar «{name}» permanent. Åtgärden går inte att ångra." }, "placeholder_folder_name": "mappnamn", - "placeholder_file_name": "filnamn" + "placeholder_file_name": "filnamn", + "scope_node": "Nod", + "scope_server": "Server", + "missing_path": "Den här mappen finns inte än.", + "missing_path_create": "Skapa den", + "missing_path_dismiss": "Avfärda" }, "error": { "generic": "Ett fel uppstod. Försök igen." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Spelläge", "none": "Competitive (inget läge)", - "description": "Laddar en uppsättning tillägg och konsolvariabler på matchservern." + "description": "Laddar en uppsättning tillägg och konsolvariabler på matchservern.", + "unranked_note": "Matcher med ett anpassat spelläge räknas aldrig mot ELO eller topplistorna." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Competitive", "description": "Den klassiska 5 mot 5-tävlingsupplevelsen med full lagkoordinering" }, "wingman": { + "title": "Wingman", "description": "Gå ihop med en vän och tävla i snabba 2v2-matcher" }, "duel": { + "title": "Duell", "description": "En tävlingsupplevelse 1 mot 1, perfekt för att öva individuell skicklighet" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Välj en spelservernod med CS installerat", "type": "Servertyp", "select_type": "Välj servertyp", + "game_mode": "Spelläge", + "select_game_mode": "Välj spelläge", + "valve_preset_group": "Valve-förval", + "custom_mode_group": "Anpassade lägen", + "custom_mode_group_locked": "kräver en spelservernod", + "custom_modes_need_node_title": "Anpassade lägen kräver en spelservernod", + "custom_modes_need_node_description": "Ett anpassat läge är en uppsättning tillägg som 5Stack installerar på servern det körs på. Det kan inte installera något på en dedikerad server från tredje part, så koppla den här servern till en spelservernod under Anslutning för att kunna välja ett.", "game": "Spel", "csgo_ranked_unavailable_title": "Rankad inte tillgängligt", "csgo_ranked_unavailable_description": "Rankat läge är ännu inte tillgängligt för CS:GO-servrar.", @@ -8202,6 +8282,8 @@ "name": "Namn", "slug": "Slug", "description": "Beskrivning", + "enabled": "Aktiverat", + "enabled_description": "Inaktiverade lägen behålls men går inte att välja till en match, en server eller ett draftrum.", "competitive_safe": "Säkert för competitive", "competitive_safe_description": "Om det här läget får användas av en rankad match eller matchmaking.", "plugins": "Tillägg", @@ -8215,8 +8297,16 @@ "save": "Spara läge", "saved": "Spelläge sparat", "archived": "Spelläge arkiverat", + "restore": "Återställ", + "restored": "Spelläget återställt", + "delete": "Ta bort", + "deleted": "Spelläget borttaget", + "delete_confirm_title": "Ta bort {name}?", + "delete_confirm_description": "Tar bort läget permanent. Har någon match redan kört det döljs det i stället — den historiken förblir intakt och du kan återställa det senare.", "runtime_none": "De här tilläggen har inget gemensamt ramverk, så det här läget kan inte köras någonstans. Ta bort det som riktar sig mot det andra ramverket.", - "runtime_only": "Körs bara på {runtime}, eftersom det är det enda ramverk som alla tillägg här finns för." + "runtime_only": "Körs bara på {runtime}, eftersom det är det enda ramverk som alla tillägg här finns för.", + "open_plugin": "Öppna det här tilläggets sida i en ny flik", + "archived_instead": "Matcher har redan kört det här läget, så det doldes i stället för att tas bort. Du kan återställa det när som helst." } } } diff --git a/i18n/locales/tr_TR.json b/i18n/locales/tr_TR.json index 30a90e055..6d0bafa7e 100644 --- a/i18n/locales/tr_TR.json +++ b/i18n/locales/tr_TR.json @@ -2473,7 +2473,8 @@ "disabled": "Devre dışı", "competitive": "Rekabetçiye uygun", "casual_only": "Yalnızca casual", - "plugin_count": "{count} eklenti" + "plugin_count": "{count} eklenti", + "archived": "Arşivlendi" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Harita başarıyla oluşturuldu", "update": "Harita başarıyla güncellendi", "delete": "Harita başarıyla silindi", + "restore": "Harita geri getirildi", + "restore_description": "Bu adı taşıyan silinmiş bir harita zaten vardı, bu yüzden maç geçmişi bozulmadan geri getirildi.", "workshop_refresh": "Workshop harita bilgileri başarıyla yenilendi" }, "error": { "create": "Harita oluşturulurken hata oluştu", "update": "Harita güncellenirken hata oluştu", + "already_exists": "Bu adı taşıyan bir harita zaten var", "invalid_workshop": "Geçersiz workshop harita ID'si. ID'nin Steam Workshop'ta var olduğunu doğrula.", "workshop_refresh": "Workshop harita bilgileri yenilenirken hata oluştu" }, @@ -3287,7 +3291,11 @@ "active_duty": "Active Duty", "available_modes": "Kullanılabildiği modlar", "workshop_id": "Workshop bağlantısı", - "search": "Harita ara" + "search": "Harita ara", + "deleted_maps": "Silinen haritalar", + "deleted_maps_description": "Silinen haritalar tüm harita havuzlarında ve seçim listelerinde gizlenir, ancak üzerinde oynanmış maçlar geçmişlerini korur. Geri getirme, haritayı olduğu gibi geri koyar.", + "deleted_on": "{date} tarihinde silindi", + "restore_map": "Geri getir" }, "map_pool": { "toggle_pool_type": "Harita havuzları güncellendi", @@ -3628,13 +3636,69 @@ "empty_installed": "Henüz hiçbir şey kurulu değil.", "readme": "Hakkında", "no_readme": "Bu eklentinin deposunda README yok.", + "readme_loading": "README yükleniyor…", "always_load": "Her maçta yükle", "always_load_hint": "Bir oyun modu seçmeden de yüklensin.", "always_load_ranked": "Dereceli ve eşleştirme maçlarında da yüklenir.", "configure": "Yapılandırma", "configure_hint": "İlk yüklemede eklenti tarafından yazılır, bu yüzden bir sunucu bu modu bir kez çalıştırdıktan sonra görünür.", "configure_open": "Dosyaları aç", - "pending": "beklemede" + "pending": "beklemede", + "state_installed": "Kurulu", + "state_failed": "Başarısız", + "state_absent": "Kurulu değil", + "checked": "Kontrol edildi", + "never_checked": "Hiç bildirmedi", + "status": { + "Pending": "Bekliyor", + "Installing": "Kuruluyor…", + "Installed": "Kurulu", + "Failed": "Başarısız", + "Removing": "Kaldırılıyor…" + }, + "remove_confirm_title": "Bu eklenti kaldırılsın mı?", + "remove_confirm_description": "Şu modlar kullanıyor: {modes}. Kaldırmak onu bu modlardan da çıkarır.", + "remove_confirm_action": "Yine de kaldır", + "guidelines": { + "badge": "Kuralların kapalı olmasını gerektirir", + "toggle": "Valve'ın sunucu kurallarını kapat", + "hint": "{name}, framework Valve'ın sunucu kurallarını uygularken yapması gerekeni yapamaz. Onu yükleyen sunucular bu kurallar kapalı şekilde başlar.", + "off_hint": "Açık bırakırsan eklenti yine de kurulur ve yüklenir — sadece oyuncunun gördüğünü değiştiren kısımları hiçbir şey yapmaz.", + "warning_title": "Uyarı: bu, Steam GSLT'lerinin banlanmasına yol açabilir", + "warning_description": "Valve'a göre, resmî sunucu kurallarının dışında çalışmak sunucu sahibinin Steam hesabındaki tüm Game Server Login Token'ların (GSLT) banlanmasını tetikleyebilir. Riski sana ait olmak üzere etkinleştir.", + "warning_link_label": "Valve'ın sunucu kuralları", + "already_off": "Bu kurulumda zaten kapalı: 5stack Ranks, rütbeleri oyun içinde göstermek için Valve'ın sunucu kurallarını kapatır ve taşıdığı risk tek bir sunucu yerine Steam hesabını ilgilendirir.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Eklenti ekle", + "badge": "Özel", + "title": "Dizinde bulunmayan bir eklenti ekle", + "description": "5Stack'e bir sürüm göster, gerisi diğerleri gibi bir kayda dönüşür — her düğüme kurulabilir ve indirilen dosya burada alınan bir özet değerine karşı doğrulanır.", + "url": "Sürüm URL'si", + "url_hint": "Bir GitHub deposu, bir sürüm ya da doğrudan .zip bağlantısı. Bir depo, en son sürümünün en yeni Linux arşivine çözümlenir.", + "runtime": "Framework", + "runtime_placeholder": "Bu derleme hangi framework için?", + "runtime_hint": "CounterStrikeSharp derlemesi SwiftlyS2 altında yüklenmez ve arşivde hangisi olduğunu söyleyen hiçbir şey yok.", + "advanced": "URL'den okuyamadığımız ayrıntılar", + "slug": "Slug", + "version": "Sürüm", + "name": "Ad", + "summary": "Açıklama", + "layout": "Arşiv yapısı", + "layout_csgo": "Arşivin kökü game/csgo", + "layout_plugin": "Arşivin kökü eklenti klasörü", + "layout_hint": "Çoğu CS2 eklentisi, içinde zaten addons/… bulunan bir arşivle gelir; seninki doğrudan eklentinin kendi klasörüne açılıyorsa diğerini seç.", + "install_path": "Kurulum yolu", + "warning_title": "Bu eklentiyi kimse incelemedi", + "warning_description": "Bir oyun eklentisi makinelerindeki cs2 sürecine yüklenir ve o sürecin yapabildiği her şeyi yapabilir. Buraya bir tane eklemek, ona kendin kefil olmak demektir — seninle onun arasında bir kayıt sorumlusu yok.", + "submit": "Dizine ekle", + "added": "{name} {version} eklendi", + "remove": "Dizinden kaldır", + "remove_hint": "Dizinden çıkarmadan önce düğümlerinden kaldır.", + "removed": "Dizinden kaldırıldı" + }, + "retry": "Yeniden dene" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "Bu işlem «{name}» ögesini kalıcı olarak siler. Geri alınamaz." }, "placeholder_folder_name": "klasör adı", - "placeholder_file_name": "dosya adı" + "placeholder_file_name": "dosya adı", + "scope_node": "Düğüm", + "scope_server": "Sunucu", + "missing_path": "Bu dizin henüz yok.", + "missing_path_create": "Oluştur", + "missing_path_dismiss": "Kapat" }, "error": { "generic": "Bir hata oluştu. Tekrar dene." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Oyun Modu", "none": "Rekabetçi (mod yok)", - "description": "Maç sunucusuna bir dizi eklenti ve konsol değişkeni yükler." + "description": "Maç sunucusuna bir dizi eklenti ve konsol değişkeni yükler.", + "unranked_note": "Özel oyun modu kullanan maçlar ELO'ya ve sıralamalara asla sayılmaz." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Rekabetçi", "description": "Tam takım koordinasyonuyla klasik 5'e 5 rekabetçi deneyim" }, "wingman": { + "title": "Wingman", "description": "Bir arkadaşınla eşleş ve hızlı tempolu 2v2 maçlarda yarış" }, "duel": { + "title": "Düello", "description": "Bireysel becerini geliştirmek için ideal, rekabetçi 1v1 deneyim" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "CS yüklü bir sunucu düğümü seç", "type": "Sunucu Türü", "select_type": "Sunucu türü seç", + "game_mode": "Oyun Modu", + "select_game_mode": "Oyun modu seç", + "valve_preset_group": "Valve ön ayarları", + "custom_mode_group": "Özel modlar", + "custom_mode_group_locked": "sunucu düğümü gerekir", + "custom_modes_need_node_title": "Özel modlar için sunucu düğümü gerekir", + "custom_modes_need_node_description": "Özel bir mod, 5Stack'in çalıştığı sunucuya kurduğu bir eklenti setidir. Üçüncü taraf bir adanmış sunucuya hiçbir şey kuramaz; bu yüzden bir tane seçebilmek için bu sunucuyu Bağlantı altında bir sunucu düğümüne bağla.", "game": "Oyun", "csgo_ranked_unavailable_title": "Ranked kullanılamıyor", "csgo_ranked_unavailable_description": "Ranked mod CS:GO sunucuları için henüz kullanılabilir değil.", @@ -8202,6 +8282,8 @@ "name": "Ad", "slug": "Slug", "description": "Açıklama", + "enabled": "Etkin", + "enabled_description": "Devre dışı modlar korunur ama bir maç, sunucu ya da draft odası için seçilemez.", "competitive_safe": "Rekabetçi oyuna uygun", "competitive_safe_description": "Bu modun dereceli veya eşleştirme maçlarında kullanılıp kullanılamayacağı.", "plugins": "Eklentiler", @@ -8215,8 +8297,16 @@ "save": "Modu Kaydet", "saved": "Oyun modu kaydedildi", "archived": "Oyun modu arşivlendi", + "restore": "Geri getir", + "restored": "Oyun modu geri getirildi", + "delete": "Sil", + "deleted": "Oyun modu silindi", + "delete_confirm_title": "{name} silinsin mi?", + "delete_confirm_description": "Modu kalıcı olarak kaldırır. Herhangi bir maç onu çalıştırdıysa silmek yerine gizlenir — o geçmiş olduğu gibi kalır ve modu sonra geri getirebilirsin.", "runtime_none": "Bu eklentilerin ortak bir framework'ü yok, bu yüzden bu mod hiçbir yerde çalışamaz. Diğer framework'ü hedefleyen eklentiyi kaldır.", - "runtime_only": "Yalnızca {runtime} üzerinde çalışır, çünkü buradaki tüm eklentilerin çıktığı tek framework o." + "runtime_only": "Yalnızca {runtime} üzerinde çalışır, çünkü buradaki tüm eklentilerin çıktığı tek framework o.", + "open_plugin": "Bu eklentinin sayfasını yeni sekmede aç", + "archived_instead": "Bu modda daha önce maç oynandığı için silinmek yerine gizlendi. İstediğin zaman geri getirebilirsin." } } } diff --git a/i18n/locales/uk_UA.json b/i18n/locales/uk_UA.json index e3b1e6c6a..b18dea91d 100644 --- a/i18n/locales/uk_UA.json +++ b/i18n/locales/uk_UA.json @@ -2473,7 +2473,8 @@ "disabled": "Вимкнено", "competitive": "Підходить для competitive", "casual_only": "Лише casual", - "plugin_count": "{count} плагінів" + "plugin_count": "{count} плагінів", + "archived": "Архівовано" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "Карту успішно створено", "update": "Карту успішно оновлено", "delete": "Карту успішно видалено", + "restore": "Карту відновлено", + "restore_description": "Видалена карта з такою назвою вже існувала, тож її відновлено разом із усією історією матчів.", "workshop_refresh": "Дані карти з Workshop успішно оновлено" }, "error": { "create": "Помилка створення карти", "update": "Помилка оновлення карти", + "already_exists": "Карта з такою назвою вже існує", "invalid_workshop": "Недійсний ID карти в Workshop. Перевір, чи існує цей ID у Steam Workshop.", "workshop_refresh": "Помилка оновлення даних карти з Workshop" }, @@ -3287,7 +3291,11 @@ "active_duty": "Активний пул", "available_modes": "Доступно в режимах", "workshop_id": "Посилання на Workshop", - "search": "Пошук карт" + "search": "Пошук карт", + "deleted_maps": "Видалені карти", + "deleted_maps_description": "Видалені карти приховані в усіх пулах карт і списках вибору, але вже зіграні на них матчі зберігають свою історію. Відновлення повертає карту такою, якою вона була.", + "deleted_on": "Видалено {date}", + "restore_map": "Відновити" }, "map_pool": { "toggle_pool_type": "Пули карт оновлено", @@ -3628,13 +3636,69 @@ "empty_installed": "Поки нічого не встановлено.", "readme": "Про плагін", "no_readme": "У репозиторії цього плагіна немає README.", + "readme_loading": "Завантаження README…", "always_load": "Завантажувати в кожному матчі", "always_load_hint": "Завантажувати без вибору режимом гри.", "always_load_ranked": "Також завантажується в рейтингових матчах і матчмейкінгу.", "configure": "Конфігурація", "configure_hint": "Плагін створює її під час першого завантаження, тож вона з'явиться після того, як сервер один раз відпрацює в цьому режимі.", "configure_open": "Відкрити файли", - "pending": "очікує" + "pending": "очікує", + "state_installed": "Встановлено", + "state_failed": "Не вдалося", + "state_absent": "Не встановлено", + "checked": "Перевірено", + "never_checked": "Жодного разу не звітувала", + "status": { + "Pending": "Очікує", + "Installing": "Встановлення…", + "Installed": "Встановлено", + "Failed": "Не вдалося", + "Removing": "Видалення…" + }, + "remove_confirm_title": "Видалити цей плагін?", + "remove_confirm_description": "Його використовує {modes}. Після видалення він зникне і з цих режимів.", + "remove_confirm_action": "Усе одно видалити", + "guidelines": { + "badge": "Потребує вимкнених правил", + "toggle": "Вимкнути серверні правила Valve", + "hint": "{name} не зможе робити те, заради чого він потрібен, поки фреймворк дотримується серверних правил Valve. Сервери, які його завантажують, стартуватимуть із вимкненими правилами.", + "off_hint": "Якщо залишити їх увімкненими, плагін усе одно встановиться й завантажиться — просто ті його частини, що змінюють побачене гравцем, нічого не робитимуть.", + "warning_title": "Увага: через це можуть забанити твої Steam-GSLT", + "warning_description": "За словами Valve, робота поза їхніми офіційними серверними правилами може призвести до бану всіх Game Server Login Token (GSLT) на акаунті Steam власника сервера. Вмикай на власний ризик.", + "warning_link_label": "Серверні правила Valve", + "already_off": "Уже вимкнені для цього розгортання: 5stack Ranks вимикає серверні правила Valve, щоб показувати ранги в грі, і пов'язаний із цим ризик стосується твого акаунта Steam, а не одного сервера.", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "Додати плагін", + "badge": "Власний", + "title": "Додати плагін, якого немає в каталозі", + "description": "Вкажи 5Stack на реліз — і він стане таким самим записом, як інші: його можна встановити на будь-яку ноду, а завантаження звіряється з контрольною сумою, знятою тут.", + "url": "URL релізу", + "url_hint": "Репозиторій GitHub, реліз або пряме посилання на .zip. Репозиторій розв'язується в найновіший Linux-архів його останнього релізу.", + "runtime": "Фреймворк", + "runtime_placeholder": "Для якого фреймворка ця збірка?", + "runtime_hint": "Збірка під CounterStrikeSharp не завантажиться під SwiftlyS2, а в архіві ніде не сказано, яка з них це.", + "advanced": "Деталі, які не вдалося прочитати з URL", + "slug": "Slug", + "version": "Версія", + "name": "Назва", + "summary": "Опис", + "layout": "Структура архіву", + "layout_csgo": "Корінь архіву — game/csgo", + "layout_plugin": "Корінь архіву — тека плагіна", + "layout_hint": "Більшість плагінів для CS2 постачаються архівом, у якому вже є addons/…; обери другий варіант, якщо твій розпаковується просто у власну теку плагіна.", + "install_path": "Шлях встановлення", + "warning_title": "Цей плагін ніхто не перевіряв", + "warning_description": "Ігровий плагін завантажується у процес cs2 на твоїх машинах і може все те саме, що й цей процес. Додаючи його сюди, ти ручаєшся за нього сам — між тобою і ним немає жодного супровідника реєстру.", + "submit": "Додати до каталогу", + "added": "{name} {version} додано", + "remove": "Прибрати з каталогу", + "remove_hint": "Видали його зі своїх нод, перш ніж прибирати з каталогу.", + "removed": "Прибрано з каталогу" + }, + "retry": "Спробувати ще раз" }, "awards": { "title": "Нагороди", @@ -4302,7 +4366,12 @@ "description": "Це безповоротно видалить «{name}». Цю дію не можна скасувати." }, "placeholder_folder_name": "назва теки", - "placeholder_file_name": "назва файлу" + "placeholder_file_name": "назва файлу", + "scope_node": "Нода", + "scope_server": "Сервер", + "missing_path": "Цієї директорії ще не існує.", + "missing_path_create": "Створити її", + "missing_path_dismiss": "Приховати" }, "error": { "generic": "Сталася помилка. Спробуй ще раз." @@ -5204,7 +5273,8 @@ "game_mode": { "title": "Режим гри", "none": "Competitive (без режиму)", - "description": "Завантажує набір плагінів і консольних змінних на сервер матчу." + "description": "Завантажує набір плагінів і консольних змінних на сервер матчу.", + "unranked_note": "Матчі з власним режимом гри ніколи не зараховуються до ELO чи таблиць лідерів." } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "Рейтинговий", "description": "Класичний змагальний формат 5 на 5 з повною командною координацією" }, "wingman": { + "title": "Wingman", "description": "Об'єднайся з другом і змагайся в динамічних матчах 2 на 2" }, "duel": { + "title": "Дуель", "description": "Змагальний формат 1 на 1, ідеальний для тренування індивідуальної майстерності" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "Обери ноду ігрових серверів зі встановленим CS", "type": "Тип сервера", "select_type": "Обери тип сервера", + "game_mode": "Режим гри", + "select_game_mode": "Обери режим гри", + "valve_preset_group": "Пресети Valve", + "custom_mode_group": "Власні режими", + "custom_mode_group_locked": "потрібна нода ігрових серверів", + "custom_modes_need_node_title": "Власним режимам потрібна нода ігрових серверів", + "custom_modes_need_node_description": "Власний режим — це набір плагінів, які 5Stack встановлює на сервер, де він запускається. На чужому виділеному сервері він нічого встановити не може, тож прив'яжи цей сервер до ноди ігрових серверів у розділі «З'єднання», щоб обрати режим.", "game": "Гра", "csgo_ranked_unavailable_title": "Рейтинговий режим недоступний", "csgo_ranked_unavailable_description": "Рейтинговий режим ще не доступний для серверів CS:GO.", @@ -8202,6 +8282,8 @@ "name": "Назва", "slug": "Слаг", "description": "Опис", + "enabled": "Увімкнено", + "enabled_description": "Вимкнені режими зберігаються, але їх не можна обрати для матчу, сервера чи кімнати драфту.", "competitive_safe": "Підходить для competitive", "competitive_safe_description": "Чи можна використовувати цей режим у рейтингових матчах і матчмейкінгу.", "plugins": "Плагіни", @@ -8215,8 +8297,16 @@ "save": "Зберегти режим", "saved": "Режим гри збережено", "archived": "Режим гри надіслано в архів", + "restore": "Відновити", + "restored": "Режим гри відновлено", + "delete": "Видалити", + "deleted": "Режим гри видалено", + "delete_confirm_title": "Видалити {name}?", + "delete_confirm_description": "Видаляє режим назавжди. Якщо в ньому вже пройшов хоча б один матч, він натомість приховується — ця історія лишається недоторканою, і згодом режим можна відновити.", "runtime_none": "У цих плагінів немає спільного фреймворку, тож цей режим ніде не запуститься. Видали той, що зібраний під інший фреймворк.", - "runtime_only": "Працює лише на {runtime} — це єдиний фреймворк, під який випущені всі ці плагіни." + "runtime_only": "Працює лише на {runtime} — це єдиний фреймворк, під який випущені всі ці плагіни.", + "open_plugin": "Відкрити сторінку цього плагіна в новій вкладці", + "archived_instead": "У цьому режимі вже проходили матчі, тож його приховано, а не видалено. Відновити його можна будь-коли." } } } diff --git a/i18n/locales/zh_Hans.json b/i18n/locales/zh_Hans.json index cfef344e3..e543dde25 100644 --- a/i18n/locales/zh_Hans.json +++ b/i18n/locales/zh_Hans.json @@ -2473,7 +2473,8 @@ "disabled": "已禁用", "competitive": "可用于竞技", "casual_only": "仅休闲", - "plugin_count": "{count} 个插件" + "plugin_count": "{count} 个插件", + "archived": "已归档" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "地图创建成功", "update": "地图更新成功", "delete": "地图删除成功", + "restore": "地图已恢复", + "restore_description": "已存在同名的已删除地图,因此将其恢复,比赛历史完整保留。", "workshop_refresh": "创意工坊地图详情刷新成功" }, "error": { "create": "创建地图时出错", "update": "更新地图时出错", + "already_exists": "已存在同名的地图", "invalid_workshop": "无效的创意工坊地图 ID。请确认该 ID 在 Steam 创意工坊中存在。", "workshop_refresh": "刷新创意工坊地图详情时出错" }, @@ -3287,7 +3291,11 @@ "active_duty": "现役图池", "available_modes": "可用模式", "workshop_id": "创意工坊链接", - "search": "搜索地图" + "search": "搜索地图", + "deleted_maps": "已删除的地图", + "deleted_maps_description": "已删除的地图会在所有地图池和选择列表中隐藏,但已经在这些地图上打过的比赛会保留历史记录。恢复后地图会回到原来的状态。", + "deleted_on": "删除于 {date}", + "restore_map": "恢复" }, "map_pool": { "toggle_pool_type": "地图池已更新", @@ -3628,13 +3636,69 @@ "empty_installed": "还没有安装任何内容。", "readme": "关于", "no_readme": "该插件的仓库中没有 README。", + "readme_loading": "正在加载 README…", "always_load": "每场比赛都加载", "always_load_hint": "无需游戏模式选择即可加载。", "always_load_ranked": "排位和匹配比赛中也会加载。", "configure": "配置", "configure_hint": "由插件在首次加载时写入,因此需要服务器以此模式运行过一次后才会出现。", "configure_open": "打开文件", - "pending": "待处理" + "pending": "待处理", + "state_installed": "已安装", + "state_failed": "失败", + "state_absent": "未安装", + "checked": "上次检查", + "never_checked": "从未上报", + "status": { + "Pending": "待处理", + "Installing": "正在安装…", + "Installed": "已安装", + "Failed": "失败", + "Removing": "正在移除…" + }, + "remove_confirm_title": "移除此插件?", + "remove_confirm_description": "{modes} 正在使用它。移除后它也会从这些模式中被去掉。", + "remove_confirm_action": "仍然移除", + "guidelines": { + "badge": "需要关闭准则", + "toggle": "关闭 Valve 的服务器准则", + "hint": "只要框架仍在执行 Valve 的服务器准则,{name} 就无法发挥作用。加载它的服务器将在准则关闭的状态下启动。", + "off_hint": "保持开启时,插件仍会安装并加载——只是那些改变玩家所见内容的部分不会起任何作用。", + "warning_title": "警告:这可能导致您的 Steam GSLT 被封禁", + "warning_description": "据 Valve 所述,在其官方服务器准则之外运行,可能导致服务器所有者 Steam 账号下的所有 Game Server Login Token(GSLT)被封禁。请自行承担启用风险。", + "warning_link_label": "Valve 的服务器准则", + "already_off": "本部署已经关闭:5stack Ranks 会关闭 Valve 的服务器准则以在游戏内显示段位,而它带来的风险针对的是您的 Steam 账号,而不是某一台服务器。", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "添加插件", + "badge": "自定义", + "title": "添加目录中没有的插件", + "description": "把某个发行版指给 5Stack,它就会变成和其他条目一样的记录——可以安装到每个节点上,下载内容会与这里获取的摘要进行校验。", + "url": "发行版 URL", + "url_hint": "GitHub 仓库、某个 release,或直接指向 .zip 的链接。填仓库时会解析为其最新 release 中最新的 Linux 压缩包。", + "runtime": "框架", + "runtime_placeholder": "这个构建是给哪个框架用的?", + "runtime_hint": "CounterStrikeSharp 的构建无法在 SwiftlyS2 下加载,而压缩包里没有任何内容能说明它属于哪一种。", + "advanced": "我们无法从该 URL 读取到的信息", + "slug": "Slug", + "version": "版本", + "name": "名称", + "summary": "描述", + "layout": "压缩包结构", + "layout_csgo": "压缩包根目录是 game/csgo", + "layout_plugin": "压缩包根目录是插件文件夹", + "layout_hint": "大多数 CS2 插件提供的压缩包里已经包含 addons/…;如果您的压缩包会直接解压到插件自己的文件夹,请选另一个。", + "install_path": "安装路径", + "warning_title": "没有人审核过这个插件", + "warning_description": "游戏插件会被加载进您机器上的 cs2 进程,能做该进程能做的一切。在这里添加插件意味着由您自己为它背书——您和它之间没有任何注册表维护者。", + "submit": "添加到目录", + "added": "已添加 {name} {version}", + "remove": "从目录中移除", + "remove_hint": "从目录中移除之前,请先在各节点上卸载它。", + "removed": "已从目录中移除" + }, + "retry": "重试" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "这将永久删除「{name}」,此操作无法撤销。" }, "placeholder_folder_name": "文件夹名称", - "placeholder_file_name": "文件名称" + "placeholder_file_name": "文件名称", + "scope_node": "节点", + "scope_server": "服务器", + "missing_path": "该目录尚不存在。", + "missing_path_create": "创建它", + "missing_path_dismiss": "忽略" }, "error": { "generic": "发生错误。请重试。" @@ -5204,7 +5273,8 @@ "game_mode": { "title": "游戏模式", "none": "竞技(无模式)", - "description": "在比赛服务器上加载一组插件和控制台变量。" + "description": "在比赛服务器上加载一组插件和控制台变量。", + "unranked_note": "使用自定义游戏模式的比赛永远不计入 ELO 或排行榜。" } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "竞技", "description": "经典的 5 vs 5 竞技体验,需要完整的团队配合" }, "wingman": { + "title": "搭档", "description": "与好友组队,在快节奏的 2v2 比赛中竞技" }, "duel": { + "title": "单挑", "description": "1 vs 1 竞技体验,非常适合练习个人技术" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "选择已安装 CS 的游戏服务器节点", "type": "服务器类型", "select_type": "选择服务器类型", + "game_mode": "游戏模式", + "select_game_mode": "选择游戏模式", + "valve_preset_group": "Valve 预设", + "custom_mode_group": "自定义模式", + "custom_mode_group_locked": "需要游戏服务器节点", + "custom_modes_need_node_title": "自定义模式需要游戏服务器节点", + "custom_modes_need_node_description": "自定义模式是一组插件,5Stack 会把它们安装到运行该模式的服务器上。它无法在第三方独立服务器上安装任何东西,所以请在「连接」中把这台服务器挂到某个游戏服务器节点上,才能选择自定义模式。", "game": "游戏", "csgo_ranked_unavailable_title": "排位模式不可用", "csgo_ranked_unavailable_description": "CS:GO 服务器的排位模式尚未可用。", @@ -8202,6 +8282,8 @@ "name": "名称", "slug": "标识符", "description": "描述", + "enabled": "已启用", + "enabled_description": "已停用的模式会保留,但不能用于比赛、服务器或选人房间。", "competitive_safe": "可用于竞技对战", "competitive_safe_description": "此模式是否可用于排位或匹配比赛。", "plugins": "插件", @@ -8215,8 +8297,16 @@ "save": "保存模式", "saved": "游戏模式已保存", "archived": "游戏模式已归档", + "restore": "恢复", + "restored": "游戏模式已恢复", + "delete": "删除", + "deleted": "游戏模式已删除", + "delete_confirm_title": "删除 {name}?", + "delete_confirm_description": "永久移除该模式。如果已有比赛使用过它,则会改为隐藏——那些历史记录保持完整,您之后可以恢复它。", "runtime_none": "这些插件没有共同的框架,因此该模式无法在任何地方运行。请移除面向另一种框架的那个插件。", - "runtime_only": "仅在 {runtime} 上运行,因为这是这里所有插件都发布了版本的唯一框架。" + "runtime_only": "仅在 {runtime} 上运行,因为这是这里所有插件都发布了版本的唯一框架。", + "open_plugin": "在新标签页中打开该插件的页面", + "archived_instead": "已经有比赛使用过这个模式,因此它被隐藏而不是删除。您可以随时恢复它。" } } } diff --git a/i18n/locales/zh_Hant.json b/i18n/locales/zh_Hant.json index b1c420afb..986450ba2 100644 --- a/i18n/locales/zh_Hant.json +++ b/i18n/locales/zh_Hant.json @@ -2473,7 +2473,8 @@ "disabled": "已停用", "competitive": "可用於競技", "casual_only": "僅休閒", - "plugin_count": "{count} 個外掛" + "plugin_count": "{count} 個外掛", + "archived": "已封存" } }, "language": { @@ -3268,11 +3269,14 @@ "create": "地圖建立成功", "update": "地圖更新成功", "delete": "地圖刪除成功", + "restore": "地圖已還原", + "restore_description": "已存在同名的已刪除地圖,因此將其還原,比賽紀錄完整保留。", "workshop_refresh": "創意工坊地圖詳情重新整理成功" }, "error": { "create": "建立地圖時發生錯誤", "update": "更新地圖時發生錯誤", + "already_exists": "已存在同名的地圖", "invalid_workshop": "無效的創意工坊地圖 ID。請確認該 ID 存在於 Steam 創意工坊。", "workshop_refresh": "重新整理創意工坊地圖詳情時發生錯誤" }, @@ -3287,7 +3291,11 @@ "active_duty": "現役圖池", "available_modes": "可用模式", "workshop_id": "創意工坊連結", - "search": "搜尋地圖" + "search": "搜尋地圖", + "deleted_maps": "已刪除的地圖", + "deleted_maps_description": "已刪除的地圖會在所有地圖池與選擇清單中隱藏,但已經在這些地圖上打過的比賽會保留紀錄。還原後地圖會回到原本的狀態。", + "deleted_on": "刪除於 {date}", + "restore_map": "還原" }, "map_pool": { "toggle_pool_type": "地圖池已更新", @@ -3628,13 +3636,69 @@ "empty_installed": "尚未安裝任何內容。", "readme": "關於", "no_readme": "此外掛的儲存庫中沒有 README。", + "readme_loading": "正在載入 README…", "always_load": "每場比賽都載入", "always_load_hint": "不需遊戲模式選擇即可載入。", "always_load_ranked": "排名與配對比賽中也會載入。", "configure": "設定檔", "configure_hint": "由外掛在首次載入時寫入,因此需要伺服器以此模式執行過一次後才會出現。", "configure_open": "開啟檔案", - "pending": "待處理" + "pending": "待處理", + "state_installed": "已安裝", + "state_failed": "失敗", + "state_absent": "未安裝", + "checked": "上次檢查", + "never_checked": "從未回報", + "status": { + "Pending": "待處理", + "Installing": "正在安裝…", + "Installed": "已安裝", + "Failed": "失敗", + "Removing": "正在移除…" + }, + "remove_confirm_title": "移除這個外掛?", + "remove_confirm_description": "{modes} 正在使用它。移除後它也會從這些模式中被拿掉。", + "remove_confirm_action": "仍要移除", + "guidelines": { + "badge": "需要關閉準則", + "toggle": "關閉 Valve 的伺服器準則", + "hint": "只要框架仍在執行 Valve 的伺服器準則,{name} 就無法發揮作用。載入它的伺服器會在準則關閉的狀態下啟動。", + "off_hint": "保持開啟時,外掛仍會安裝並載入——只是那些改變玩家所見內容的部分不會起任何作用。", + "warning_title": "警告:這可能導致您的 Steam GSLT 被封禁", + "warning_description": "根據 Valve 的說明,在其官方伺服器準則之外運行,可能導致伺服器擁有者 Steam 帳號下的所有 Game Server Login Token(GSLT)被封禁。請自行承擔啟用風險。", + "warning_link_label": "Valve 的伺服器準則", + "already_off": "本部署已經關閉:5stack Ranks 會關閉 Valve 的伺服器準則以在遊戲內顯示段位,而它帶來的風險針對的是您的 Steam 帳號,而不是某一台伺服器。", + "already_off_link": "5stack Ranks" + }, + "custom": { + "add": "新增外掛", + "badge": "自訂", + "title": "新增目錄中沒有的外掛", + "description": "把某個發行版指給 5Stack,它就會變成和其他項目一樣的記錄——可以安裝到每個節點上,下載內容會與這裡取得的摘要進行校驗。", + "url": "發行版 URL", + "url_hint": "GitHub 儲存庫、某個 release,或直接指向 .zip 的連結。填儲存庫時會解析為其最新 release 中最新的 Linux 壓縮檔。", + "runtime": "框架", + "runtime_placeholder": "這個組建是給哪個框架用的?", + "runtime_hint": "CounterStrikeSharp 的組建無法在 SwiftlyS2 下載入,而壓縮檔裡沒有任何內容能說明它屬於哪一種。", + "advanced": "我們無法從該 URL 讀取到的資訊", + "slug": "Slug", + "version": "版本", + "name": "名稱", + "summary": "描述", + "layout": "壓縮檔結構", + "layout_csgo": "壓縮檔根目錄是 game/csgo", + "layout_plugin": "壓縮檔根目錄是外掛資料夾", + "layout_hint": "大多數 CS2 外掛提供的壓縮檔裡已經包含 addons/…;如果您的壓縮檔會直接解壓到外掛自己的資料夾,請選另一個。", + "install_path": "安裝路徑", + "warning_title": "沒有人審核過這個外掛", + "warning_description": "遊戲外掛會被載入您機器上的 cs2 程序,能做該程序能做的一切。在這裡新增外掛代表由您自己為它背書——您和它之間沒有任何登錄檔維護者。", + "submit": "加入目錄", + "added": "已新增 {name} {version}", + "remove": "從目錄中移除", + "remove_hint": "從目錄中移除之前,請先在各節點上解除安裝它。", + "removed": "已從目錄中移除" + }, + "retry": "重試" }, "awards": { "title": "Awards", @@ -4302,7 +4366,12 @@ "description": "這會永久刪除「{name}」,此操作無法復原。" }, "placeholder_folder_name": "資料夾名稱", - "placeholder_file_name": "檔案名稱" + "placeholder_file_name": "檔案名稱", + "scope_node": "節點", + "scope_server": "伺服器", + "missing_path": "這個目錄尚不存在。", + "missing_path_create": "建立它", + "missing_path_dismiss": "忽略" }, "error": { "generic": "發生錯誤。請重試。" @@ -5204,7 +5273,8 @@ "game_mode": { "title": "遊戲模式", "none": "競技(無模式)", - "description": "在比賽伺服器上載入一組外掛與主控台變數。" + "description": "在比賽伺服器上載入一組外掛與主控台變數。", + "unranked_note": "使用自訂遊戲模式的比賽永遠不計入 ELO 或排行榜。" } }, "schedule": { @@ -6249,12 +6319,15 @@ "matchmaking": { "match_types": { "competitive": { + "title": "競技", "description": "經典的 5 vs 5 競技體驗,需要完整的團隊配合" }, "wingman": { + "title": "搭檔", "description": "與好友組隊,在快節奏的 2v2 比賽中一較高下" }, "duel": { + "title": "單挑", "description": "1 vs 1 競技體驗,非常適合練習個人技術" } }, @@ -6533,6 +6606,13 @@ "game_server_node_description": "選擇已安裝 CS 的遊戲伺服器節點", "type": "伺服器類型", "select_type": "選擇伺服器類型", + "game_mode": "遊戲模式", + "select_game_mode": "選擇遊戲模式", + "valve_preset_group": "Valve 預設", + "custom_mode_group": "自訂模式", + "custom_mode_group_locked": "需要遊戲伺服器節點", + "custom_modes_need_node_title": "自訂模式需要遊戲伺服器節點", + "custom_modes_need_node_description": "自訂模式是一組外掛,5Stack 會把它們安裝到執行該模式的伺服器上。它無法在第三方獨立伺服器上安裝任何東西,所以請在「連線」中把這台伺服器掛到某個遊戲伺服器節點上,才能選擇自訂模式。", "game": "遊戲", "csgo_ranked_unavailable_title": "排名模式不可用", "csgo_ranked_unavailable_description": "CS:GO 伺服器尚未支援排名模式。", @@ -8202,6 +8282,8 @@ "name": "名稱", "slug": "識別碼", "description": "描述", + "enabled": "已啟用", + "enabled_description": "已停用的模式會保留,但不能用於比賽、伺服器或選秀房間。", "competitive_safe": "可用於競技對戰", "competitive_safe_description": "此模式是否可用於排名或配對比賽。", "plugins": "外掛", @@ -8215,8 +8297,16 @@ "save": "儲存模式", "saved": "已儲存遊戲模式", "archived": "已封存遊戲模式", + "restore": "還原", + "restored": "遊戲模式已還原", + "delete": "刪除", + "deleted": "遊戲模式已刪除", + "delete_confirm_title": "刪除 {name}?", + "delete_confirm_description": "永久移除該模式。如果已有比賽使用過它,則會改為隱藏——那些紀錄保持完整,您之後可以還原它。", "runtime_none": "這些外掛沒有共同的框架,因此此模式無法在任何地方執行。請移除面向另一種框架的那個外掛。", - "runtime_only": "僅在 {runtime} 上執行,因為這是這裡所有外掛都有推出版本的唯一框架。" + "runtime_only": "僅在 {runtime} 上執行,因為這是這裡所有外掛都有推出版本的唯一框架。", + "open_plugin": "在新分頁中開啟該外掛的頁面", + "archived_instead": "已經有比賽使用過這個模式,因此它被隱藏而不是刪除。您可以隨時還原它。" } } } diff --git a/scripts/i18n-patch.mjs b/scripts/i18n-patch.mjs new file mode 100644 index 000000000..554016d64 --- /dev/null +++ b/scripts/i18n-patch.mjs @@ -0,0 +1,63 @@ +#!/usr/bin/env node +// Applies a flat {key: value} patch to a locale file and rewrites it in en.json +// key order, dropping keys en.json no longer has. +// Usage: node scripts/i18n-patch.mjs +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const LOCALES = path.resolve(__dirname, "../i18n/locales"); + +const flatten = (obj, prefix = "") => { + const out = {}; + for (const k of Object.keys(obj)) { + const v = obj[k]; + const key = prefix ? `${prefix}.${k}` : k; + if (v && typeof v === "object" && !Array.isArray(v)) Object.assign(out, flatten(v, key)); + else out[key] = v; + } + return out; +}; + +const [locale, patchPath] = process.argv.slice(2); +if (!locale || !patchPath) { + console.error("usage: node scripts/i18n-patch.mjs "); + process.exit(1); +} + +const enFlat = flatten(JSON.parse(fs.readFileSync(path.join(LOCALES, "en.json"), "utf8"))); +const target = path.join(LOCALES, `${locale}.json`); +const cur = flatten(JSON.parse(fs.readFileSync(target, "utf8"))); +const patch = flatten(JSON.parse(fs.readFileSync(patchPath, "utf8"))); + +const unknown = Object.keys(patch).filter((k) => !(k in enFlat)); +if (unknown.length) { + console.error(`${locale}: patch has ${unknown.length} keys not in en.json:\n ${unknown.join("\n ")}`); + process.exit(1); +} + +const merged = { ...cur, ...patch }; +const nested = {}; +const missing = []; +for (const key of Object.keys(enFlat)) { + const value = merged[key]; + if (typeof value !== "string") { + missing.push(key); + continue; + } + const parts = key.split("."); + let node = nested; + for (let i = 0; i < parts.length - 1; i++) { + if (typeof node[parts[i]] !== "object" || node[parts[i]] === null) node[parts[i]] = {}; + node = node[parts[i]]; + } + node[parts[parts.length - 1]] = value; +} + +fs.writeFileSync(target, JSON.stringify(nested, null, 2) + "\n"); +const dropped = Object.keys(cur).filter((k) => !(k in enFlat)); +console.log( + `${locale}: +${Object.keys(patch).filter((k) => !(k in cur)).length} keys, -${dropped.length} stale, ${missing.length} still missing`, +); +if (missing.length) process.exitCode = 1;