From 1f09270329029a527b9c0c5bba8dbe92c7eab823 Mon Sep 17 00:00:00 2001 From: emil Date: Fri, 15 May 2026 18:31:21 +0300 Subject: [PATCH] fix(dm): polish hardcoded strings, typo, and aria-labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix typo "combatантов" -> "участников боя" in dm-translations - Replace hardcoded English "Result", "Rolls:", "Invalid notation" in DiceRoller with translation keys - Translate English aria-labels ("Quick dice selectors", "Roll history", "Combatants") to Russian - Move InitiativeTracker hardcoded strings ("Итого", "Инициатива", "Порядок хода", help text) into the translation file Co-Authored-By: Claude Opus 4.7 --- src/components/dm/DiceRoller.astro | 12 ++++++------ src/components/dm/InitiativeTracker.astro | 10 +++++----- src/i18n/dm-translations.ts | 13 ++++++++++++- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/components/dm/DiceRoller.astro b/src/components/dm/DiceRoller.astro index 106a4fd..8448c43 100644 --- a/src/components/dm/DiceRoller.astro +++ b/src/components/dm/DiceRoller.astro @@ -28,7 +28,7 @@ const quickDice = [ class="grid grid-cols-4 sm:grid-cols-7 gap-2" id="quick-dice-grid" role="group" - aria-label="Quick dice selectors" + aria-label={T.ariaQuickDice} > { quickDice.map((d) => ( @@ -64,7 +64,7 @@ const quickDice = [ aria-live="polite" >
- Result + {T.resultLabel}
@@ -315,9 +315,9 @@ const quickDice = [ const rolls = result.rolls.join(", "); if (result.modifier !== 0) { const sign = result.modifier > 0 ? "+" : ""; - detailsEl.textContent = `Rolls: ${rolls} ${sign}${result.modifier}`; + detailsEl.textContent = `${T.rollsLabel}: ${rolls} ${sign}${result.modifier}`; } else { - detailsEl.textContent = `Rolls: ${rolls}`; + detailsEl.textContent = `${T.rollsLabel}: ${rolls}`; } totalEl.className = `text-5xl font-bold ${ @@ -373,7 +373,7 @@ const quickDice = [ totalEl.textContent = "?"; totalEl.className = "text-5xl font-bold text-[var(--gold)]"; labelEl.textContent = trimmed; - detailsEl.textContent = "Invalid notation"; + detailsEl.textContent = T.invalidNotation; if (critMsg) { critMsg.className = "text-sm font-semibold mt-1 hidden"; } diff --git a/src/components/dm/InitiativeTracker.astro b/src/components/dm/InitiativeTracker.astro index b4e3b48..8fcb7f5 100644 --- a/src/components/dm/InitiativeTracker.astro +++ b/src/components/dm/InitiativeTracker.astro @@ -47,13 +47,13 @@ import { dmTranslations as T } from "@/i18n/dm-translations"; id="it-initiative" name="initiative" type="number" - placeholder="Итого" - label="Инициатива" + placeholder={T.initiativeTotal} + label={T.initiative} class="sm:max-w-[120px]" dataTestid="init-initiative-input" /> - Бросок d20 + модификатор, или введите итог вручную + {T.initiativeHelp} @@ -64,14 +64,14 @@ import { dmTranslations as T } from "@/i18n/dm-translations";

- Порядок хода + {T.turnOrder}

{T.actionClear}
-
    +
      diff --git a/src/i18n/dm-translations.ts b/src/i18n/dm-translations.ts index 8b6108e..7b06849 100644 --- a/src/i18n/dm-translations.ts +++ b/src/i18n/dm-translations.ts @@ -40,7 +40,7 @@ export const dmTranslations = { // Empty states emptyDiceHistory: "Нет истории бросков", - emptyCombatants: "Нет combatантов", + emptyCombatants: "Нет участников боя", emptySearchResults: "Ничего не найдено", emptyNotesPlaceholder: "Начните писать заметки...", @@ -63,6 +63,17 @@ export const dmTranslations = { rollHistory: "История бросков", criticalHit: "Критический успех!", criticalFail: "Критический провал!", + resultLabel: "Результат", + rollsLabel: "Броски", + invalidNotation: "Неверная нотация", + ariaQuickDice: "Быстрый выбор кубика", + ariaRollHistory: "История бросков", + + // Initiative + turnOrder: "Порядок хода", + initiativeTotal: "Итого", + initiativeHelp: "Бросок d20 + модификатор, или введите итог вручную", + ariaCombatants: "Участники боя", // Auth loginVk: "Войти через VK",