docs(tally): add tally to /help + website docs; translate to all locales (#1342)

- Add a 'Voice channel tally' group to /help with the three commands.
- Add a Voice Channel Tally section to the website docs (docs.ejs).
- Translate the commands.tally bot strings + help_group_tally into all 10
  other bot locales, and the new docs.* web strings into all 10 web locales.
- Fix stale need_one_input string (ign/squadron_short -> username/squadron).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
NotSoToothless
2026-06-19 01:56:32 -07:00
committed by GitHub
parent 3590b1f42f
commit 25990c361f
23 changed files with 317 additions and 23 deletions
+6 -1
View File
@@ -263,7 +263,12 @@
"tierOverviewDesc": "Auto-logging je k dispozici ve třech tarifech. Každý tarif limituje, kolik svazů může mít Logs a Points aktivní. Svazy nad limitem zůstávají v nastavení a po upgradu automaticky pokračují.",
"tierStandardLine": "$2.99 — až 10 svazů pro Logs i Points, bez wildcard.",
"tierProLine": "až 25 svazů pro Logs i Points, plus podpora wildcard (`*` / `all` / `everything`).",
"tierMaxLine": "neomezené svazy, wildcards, raný přístup k novým funkcím."
"tierMaxLine": "neomezené svazy, wildcards, raný přístup k novým funkcím.",
"voiceChannelTally": "Sledování v hlasovém kanálu",
"tallyIntro": "Sledujte živé skóre SQB přímo ve stavu vašeho hlasového kanálu na Discordu. Jakmile zápasy skončí, bot aktualizuje stav kanálu na průběžný záznam, například 2W-1L: Výhra proti ENEMY. Jde o prémiovou funkci a musíte být připojeni k hlasovému kanálu.",
"tallyClaimDesc": "Začněte sledovat hráče nebo svaz ve vašem hlasovém kanálu. Zadejte uživatelské jméno nebo svaz (ne obojí). Stav začíná na 0W-0L a aktualizuje se po skončení odpovídajících zápasů.",
"tallyTransferDesc": "Přepněte aktivní sledování na jiného hráče se zachováním aktuálního počtu výher a proher.",
"tallyClearDesc": "Vymažte aktivní sledování ve vašem hlasovém kanálu a resetujte jeho stav. Sledování se také automaticky vymaže po 1 hodině nečinnosti nebo jakmile všichni opustí kanál."
},
"terms": {
"pageTitle": "Podminky sluzby a zasady ochrany soukromi",
+6 -1
View File
@@ -263,7 +263,12 @@
"tierOverviewDesc": "Auto-Logging ist in drei Tarifen verfügbar. Jeder Tarif begrenzt die Anzahl der Geschwader mit aktivierten Logs und Points. Geschwader über dem Limit bleiben in den Einstellungen erhalten und werden nach einem Upgrade automatisch fortgesetzt.",
"tierStandardLine": "$2.99 — bis zu 10 Geschwader jeweils für Logs und Points, ohne Wildcard-Support.",
"tierProLine": "bis zu 25 Geschwader jeweils für Logs und Points, plus Wildcard-Support (`*` / `all` / `everything`).",
"tierMaxLine": "unbegrenzte Geschwader, Wildcards, früher Zugang zu neuen Funktionen."
"tierMaxLine": "unbegrenzte Geschwader, Wildcards, früher Zugang zu neuen Funktionen.",
"voiceChannelTally": "Sprachkanal-Verfolgung",
"tallyIntro": "Verfolge einen Live-SQB-Spielstand direkt im Status deines Discord-Sprachkanals. Wenn Spiele enden, aktualisiert der Bot den Kanalstatus zu einem laufenden Ergebnis wie 2W-1L: Sieg gegen ENEMY. Dies ist eine Premium-Funktion, und du musst mit dem Sprachkanal verbunden sein.",
"tallyClaimDesc": "Beginne, einen Spieler oder eine Staffel in deinem aktuellen Sprachkanal zu verfolgen. Gib einen Benutzernamen oder eine Staffel an (nicht beides). Der Status beginnt bei 0W-0L und aktualisiert sich, wenn passende Spiele enden.",
"tallyTransferDesc": "Wechsle die aktive Verfolgung zu einem anderen Spieler und behalte den aktuellen Sieg-Niederlage-Stand bei.",
"tallyClearDesc": "Lösche die aktive Verfolgung in deinem aktuellen Sprachkanal und setze deren Status zurück. Eine Verfolgung wird außerdem automatisch nach 1 Stunde Inaktivität oder sobald alle den Kanal verlassen gelöscht."
},
"terms": {
"pageTitle": "Nutzungsbedingungen & Datenschutzerklärung",
+6 -1
View File
@@ -265,7 +265,12 @@
"tierOverviewDesc": "Autologging is available on three tiers. Each tier caps how many squadrons can have Logs and Points enabled. Over-cap squadrons remain in your preferences and resume automatically after you upgrade.",
"tierStandardLine": "$2.99 — up to 10 squadrons each for Logs and Points, no wildcard support.",
"tierProLine": "up to 25 squadrons each for Logs and Points, plus wildcard (`*` / `all` / `everything`) support.",
"tierMaxLine": "unlimited squadrons, wildcards, and early access to new features."
"tierMaxLine": "unlimited squadrons, wildcards, and early access to new features.",
"voiceChannelTally": "Voice Channel Tally",
"tallyIntro": "Track a live SQB scoreline right in your Discord voice channel's status. As games finish, the bot updates the channel status to a running record like 2W-1L: Win against ENEMY. This is a premium feature, and you must be connected to the voice channel.",
"tallyClaimDesc": "Start tracking a player or squadron on your current voice channel. Provide a username or a squadron (not both). The status starts at 0W-0L and updates as matching games finish.",
"tallyTransferDesc": "Switch the active tally to a different player, keeping the current winloss count.",
"tallyClearDesc": "Clear the active tally on your current voice channel and reset its status. A tally also clears automatically after 1 hour of inactivity or once everyone leaves the channel."
},
"terms": {
"pageTitle": "Terms of Service & Privacy Policy",
+6 -1
View File
@@ -263,7 +263,12 @@
"tierOverviewDesc": "El auto-logging está disponible en tres niveles. Cada nivel limita cuántos escuadrones pueden tener Logs y Points activos. Los escuadrones sobre el límite permanecen en tus preferencias y se reanudan automáticamente tras la mejora.",
"tierStandardLine": "$2.99 — hasta 10 escuadrones cada uno para Logs y Points, sin wildcard.",
"tierProLine": "hasta 25 escuadrones cada uno para Logs y Points, más soporte wildcard (`*` / `all` / `everything`).",
"tierMaxLine": "escuadrones ilimitados, wildcards, acceso anticipado a nuevas funciones."
"tierMaxLine": "escuadrones ilimitados, wildcards, acceso anticipado a nuevas funciones.",
"voiceChannelTally": "Seguimiento en canal de voz",
"tallyIntro": "Sigue un marcador de SQB en directo en el estado de tu canal de voz de Discord. A medida que terminan las partidas, el bot actualiza el estado del canal con un registro como 2W-1L: Victoria contra ENEMY. Es una función premium y debes estar conectado al canal de voz.",
"tallyClaimDesc": "Empieza a seguir a un jugador o escuadrón en tu canal de voz actual. Indica un nombre de usuario o un escuadrón (no ambos). El estado comienza en 0W-0L y se actualiza cuando terminan las partidas correspondientes.",
"tallyTransferDesc": "Cambia el seguimiento activo a otro jugador, conservando el recuento actual de victorias y derrotas.",
"tallyClearDesc": "Borra el seguimiento activo en tu canal de voz actual y restablece su estado. Un seguimiento también se borra automáticamente tras 1 hora de inactividad o cuando todos abandonan el canal."
},
"terms": {
"pageTitle": "Términos de Servicio y Política de Privacidad",
+6 -1
View File
@@ -263,7 +263,12 @@
"tierOverviewDesc": "L'auto-logging est disponible sur trois tiers. Chaque tier limite le nombre d'escadrons avec Logs et Points activés. Les escadrons au-delà de la limite restent dans vos préférences et reprennent automatiquement après une mise à niveau.",
"tierStandardLine": "2,99 $ — jusqu'à 10 escadrons chacun pour Logs et Points, sans wildcard.",
"tierProLine": "jusqu'à 25 escadrons chacun pour Logs et Points, plus wildcard (`*` / `all` / `everything`).",
"tierMaxLine": "escadrons illimités, wildcards, accès anticipé aux nouvelles fonctionnalités."
"tierMaxLine": "escadrons illimités, wildcards, accès anticipé aux nouvelles fonctionnalités.",
"voiceChannelTally": "Suivi en salon vocal",
"tallyIntro": "Suivez un score SQB en direct dans le statut de votre salon vocal Discord. À la fin des parties, le bot met à jour le statut du salon avec un récapitulatif comme 2W-1L : Victoire contre ENEMY. C'est une fonctionnalité premium et vous devez être connecté au salon vocal.",
"tallyClaimDesc": "Commencez à suivre un joueur ou un escadron dans votre salon vocal actuel. Indiquez un nom d'utilisateur ou un escadron (pas les deux). Le statut démarre à 0W-0L et se met à jour à la fin des parties correspondantes.",
"tallyTransferDesc": "Basculez le suivi actif vers un autre joueur en conservant le décompte actuel de victoires et de défaites.",
"tallyClearDesc": "Effacez le suivi actif dans votre salon vocal actuel et réinitialisez son statut. Un suivi s'efface aussi automatiquement après 1 heure d'inactivité ou dès que tout le monde quitte le salon."
},
"terms": {
"pageTitle": "Conditions d'utilisation & Politique de confidentialité",
+6 -1
View File
@@ -263,7 +263,12 @@
"tierOverviewDesc": "L'auto-logging è disponibile su tre piani. Ogni piano limita quanti squadroni possono avere Logs e Points attivi. Gli squadroni oltre il limite restano nelle preferenze e riprendono automaticamente dopo l'upgrade.",
"tierStandardLine": "$2,99 — fino a 10 squadroni per Logs e Points, senza wildcard.",
"tierProLine": "fino a 25 squadroni per Logs e Points, più supporto wildcard (`*` / `all` / `everything`).",
"tierMaxLine": "squadroni illimitati, wildcards, accesso anticipato alle novità."
"tierMaxLine": "squadroni illimitati, wildcards, accesso anticipato alle novità.",
"voiceChannelTally": "Monitoraggio del canale vocale",
"tallyIntro": "Tieni traccia di un punteggio SQB in tempo reale direttamente nello stato del tuo canale vocale Discord. Al termine delle partite, il bot aggiorna lo stato del canale con un riepilogo come 2W-1L: Vittoria contro ENEMY. È una funzione premium e devi essere connesso al canale vocale.",
"tallyClaimDesc": "Inizia a seguire un giocatore o uno squadrone nel tuo canale vocale attuale. Indica un nome utente o uno squadrone (non entrambi). Lo stato parte da 0W-0L e si aggiorna al termine delle partite corrispondenti.",
"tallyTransferDesc": "Passa il monitoraggio attivo a un altro giocatore, mantenendo il conteggio attuale di vittorie e sconfitte.",
"tallyClearDesc": "Cancella il monitoraggio attivo nel tuo canale vocale attuale e reimposta il suo stato. Un monitoraggio si cancella anche automaticamente dopo 1 ora di inattività o quando tutti lasciano il canale."
},
"terms": {
"pageTitle": "Termini di Servizio e Informativa sulla Privacy",
+6 -1
View File
@@ -263,7 +263,12 @@
"tierOverviewDesc": "Auto-logging dostępny jest w trzech planach. Każdy plan ogranicza liczbę klanów, które mogą mieć Logs i Points. Klany powyżej limitu pozostają w preferencjach i automatycznie wznawiają się po zmianie planu.",
"tierStandardLine": "$2.99 — do 10 klanów na Logs i Points, bez wildcard.",
"tierProLine": "do 25 klanów na Logs i Points, plus obsługa wildcard (`*` / `all` / `everything`).",
"tierMaxLine": "bez limitu klanów, wildcards, wczesny dostęp do nowych funkcji."
"tierMaxLine": "bez limitu klanów, wildcards, wczesny dostęp do nowych funkcji.",
"voiceChannelTally": "Śledzenie na kanale głosowym",
"tallyIntro": "Śledź wynik SQB na żywo bezpośrednio w statusie swojego kanału głosowego na Discordzie. Gdy mecze się kończą, bot aktualizuje status kanału do bieżącego zapisu, np. 2W-1L: Wygrana przeciwko ENEMY. To funkcja premium i musisz być połączony z kanałem głosowym.",
"tallyClaimDesc": "Zacznij śledzić gracza lub dywizjon na swoim kanale głosowym. Podaj nazwę użytkownika lub dywizjon (nie oba naraz). Status zaczyna się od 0W-0L i aktualizuje się po zakończeniu pasujących meczów.",
"tallyTransferDesc": "Przełącz aktywne śledzenie na innego gracza, zachowując bieżący bilans zwycięstw i porażek.",
"tallyClearDesc": "Wyczyść aktywne śledzenie na swoim kanale głosowym i zresetuj jego status. Śledzenie czyści się też automatycznie po 1 godzinie bezczynności lub gdy wszyscy opuszczą kanał."
},
"terms": {
"pageTitle": "Warunki usługi i polityka prywatności",
+6 -1
View File
@@ -263,7 +263,12 @@
"tierOverviewDesc": "Автолог доступен на трёх тарифах. Каждый тариф ограничивает, сколько полков могут иметь Logs и Points. Полки сверх лимита остаются в настройках и автоматически возобновляются после апгрейда.",
"tierStandardLine": "$2.99 — до 10 полков для Logs и Points, без wildcard.",
"tierProLine": "до 25 полков для Logs и Points, плюс wildcard (`*` / `all` / `everything`).",
"tierMaxLine": "без лимита, wildcard, ранний доступ к новым функциям."
"tierMaxLine": "без лимита, wildcard, ранний доступ к новым функциям.",
"voiceChannelTally": "Отслеживание в голосовом канале",
"tallyIntro": "Отслеживайте счёт SQB в реальном времени прямо в статусе вашего голосового канала Discord. По мере завершения матчей бот обновляет статус канала, например 2W-1L: Победа против ENEMY. Это премиум-функция, и вы должны быть подключены к голосовому каналу.",
"tallyClaimDesc": "Начните отслеживать игрока или эскадрилью в вашем голосовом канале. Укажите имя пользователя или эскадрилью (но не оба). Статус начинается с 0W-0L и обновляется по завершении подходящих матчей.",
"tallyTransferDesc": "Переключите активное отслеживание на другого игрока, сохранив текущий счёт побед и поражений.",
"tallyClearDesc": "Очистите активное отслеживание в вашем голосовом канале и сбросьте его статус. Отслеживание также очищается автоматически после 1 часа бездействия или когда все покидают канал."
},
"terms": {
"pageTitle": "Условия использования и политика конфиденциальности",
+6 -1
View File
@@ -263,7 +263,12 @@
"tierOverviewDesc": "Автолог доступний на трьох тарифах. Кожен тариф обмежує, скільки полків можуть мати Logs і Points. Полки понад ліміт залишаються в налаштуваннях і автоматично відновлюються після апгрейду.",
"tierStandardLine": "$2.99 — до 10 полків для Logs і Points, без wildcard.",
"tierProLine": "до 25 полків для Logs і Points, плюс підтримка wildcard (`*` / `all` / `everything`).",
"tierMaxLine": "без ліміту, wildcards, ранній доступ до нових функцій."
"tierMaxLine": "без ліміту, wildcards, ранній доступ до нових функцій.",
"voiceChannelTally": "Відстеження в голосовому каналі",
"tallyIntro": "Відстежуйте рахунок SQB у реальному часі прямо в статусі вашого голосового каналу Discord. Коли матчі завершуються, бот оновлює статус каналу, наприклад 2W-1L: Перемога проти ENEMY. Це преміум-функція, і ви маєте бути під'єднані до голосового каналу.",
"tallyClaimDesc": "Почніть відстежувати гравця або ескадрилью у вашому голосовому каналі. Вкажіть ім'я користувача або ескадрилью (не обидва). Статус починається з 0W-0L і оновлюється після завершення відповідних матчів.",
"tallyTransferDesc": "Переключіть активне відстеження на іншого гравця, зберігши поточний рахунок перемог і поразок.",
"tallyClearDesc": "Очистіть активне відстеження у вашому голосовому каналі та скиньте його статус. Відстеження також очищається автоматично після 1 години бездіяльності або коли всі залишають канал."
},
"terms": {
"pageTitle": "Умови використання та Політика конфіденційності",
+6 -1
View File
@@ -267,7 +267,12 @@
"tierOverviewDesc": "该项目的详细说明。",
"tierStandardLine": "$2.99 — up to 10 squadrons each for Logs and 点数, no wildcard 支持.",
"tierProLine": "up to 25 squadrons each for Logs and 点数, plus wildcard (`*` / `all` / `everything`) 支持.",
"tierMaxLine": "无限中队、通配符,以及新功能抢先体验。"
"tierMaxLine": "无限中队、通配符,以及新功能抢先体验。",
"voiceChannelTally": "语音频道追踪",
"tallyIntro": "直接在你的 Discord 语音频道状态中实时追踪 SQB 比分。比赛结束后,机器人会将频道状态更新为如 2W-1L:胜 对阵 ENEMY 的累计记录。这是高级版功能,你必须连接到该语音频道。",
"tallyClaimDesc": "在你当前的语音频道开始追踪某位玩家或战队。请提供用户名或战队(不可同时提供)。状态从 0W-0L 开始,并在相关比赛结束时更新。",
"tallyTransferDesc": "将当前追踪切换到另一名玩家,并保留现有的胜负记录。",
"tallyClearDesc": "清除你当前语音频道的追踪并重置其状态。追踪还会在闲置 1 小时后,或所有人离开该频道后自动清除。"
},
"leaderboards": {
"title": "排行榜",
+38
View File
@@ -560,6 +560,44 @@
</div>
</div>
<!-- Voice Channel Tally -->
<div class="mb-12">
<h3 class="text-2xl font-semibold text-accent mb-6"><%= t('docs.voiceChannelTally') %></h3>
<p class="text-muted leading-relaxed mb-6"><%= t('docs.tallyIntro') %></p>
<div class="space-y-4">
<div class="bg-[rgba(44,44,44,0.3)] border border-[rgba(144,238,144,0.1)] rounded-xl p-6">
<div class="bg-[rgba(0,0,0,0.4)] border border-[rgba(144,238,144,0.15)] rounded-lg p-4 font-mono text-sm text-accent mb-4">
/tally-claim [username] [squadron]
</div>
<p class="text-muted leading-relaxed mb-3"><%= t('docs.tallyClaimDesc') %></p>
<div class="text-sm space-y-1">
<div>
<span class="text-accent font-semibold"><%= t('docs.example') %>:</span>
<code class="ml-2 px-2 py-1 bg-[rgba(0,0,0,0.4)] rounded text-accent">/tally-claim username:PlayerName</code>
</div>
<div>
<span class="text-accent font-semibold"><%= t('docs.example') %>:</span>
<code class="ml-2 px-2 py-1 bg-[rgba(0,0,0,0.4)] rounded text-accent">/tally-claim squadron:DSPL</code>
</div>
</div>
</div>
<div class="bg-[rgba(44,44,44,0.3)] border border-[rgba(144,238,144,0.1)] rounded-xl p-6">
<div class="bg-[rgba(0,0,0,0.4)] border border-[rgba(144,238,144,0.15)] rounded-lg p-4 font-mono text-sm text-accent mb-4">
/tally-transfer [username]
</div>
<p class="text-muted leading-relaxed"><%= t('docs.tallyTransferDesc') %></p>
</div>
<div class="bg-[rgba(44,44,44,0.3)] border border-[rgba(144,238,144,0.1)] rounded-xl p-6">
<div class="bg-[rgba(0,0,0,0.4)] border border-[rgba(144,238,144,0.15)] rounded-lg p-4 font-mono text-sm text-accent mb-4">
/tally-clear
</div>
<p class="text-muted leading-relaxed"><%= t('docs.tallyClearDesc') %></p>
</div>
</div>
</div>
<!-- Stack Manager -->
<div class="mb-12" id="stack-manager">
<h3 class="text-2xl font-semibold text-accent mb-6"><%= t('docs.stackManager') %></h3>