fix: close out remaining German player-facing text across web and API tests

Repo-wide grep sweep (apps/web/src, apps/api/src) for leftover German
content strings missed by Tasks 1-9, mostly in spec fixtures/assertions
that mirror already-translated seed content (monster/item names, POI
titles and action labels, location names/descriptions) plus a few real
source-file gaps:

- inventory-detail-panel.component.ts: STAT_LABELS (Waffenschaden,
  Angriff, Leben, Rüstung) were never translated by Task 6; now match
  the identical English labels already used in inventory-page.component.html.
- app-shell.component.html: aria-label="Spielinhalt" -> "Game content"
  (this file was outside every prior task's file list).
- location-interaction-panel.component.spec.ts: dead NPC-quote fixture
  translated to match the real wounded-scout POI text.

Code comments referencing German source-spec section titles or
not-yet-seeded faction names, and inline calculation-documentation
comments, are left as-is per the source spec's scope (dev-facing
comments may stay German).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACkMEDYiwtcfchqKkiUJNX
This commit is contained in:
Bastian Wagner
2026-08-21 22:59:34 +02:00
parent ae163f000a
commit 1322285b0f
38 changed files with 243 additions and 241 deletions

View File

@@ -10,7 +10,7 @@ const wornSword: InventoryItem = {
item: {
key: 'worn-short-sword',
name: 'Abgenutztes Kurzschwert',
description: 'Beschreibung des Gegenstands.',
description: 'Item description.',
rarity: 'COMMON',
equipmentSlot: 'WEAPON',
weaponDamage: 8,
@@ -27,8 +27,8 @@ const banditBlade: InventoryItem = {
equipped: false,
item: {
key: 'bandit-blade',
name: 'Räuberklinge',
description: 'Beschreibung des Gegenstands.',
name: 'Bandit Blade',
description: 'Item description.',
rarity: 'COMMON',
equipmentSlot: 'WEAPON',
weaponDamage: 11,
@@ -46,7 +46,7 @@ const ashPelt: InventoryItem = {
item: {
key: 'ash-pelt',
name: 'Aschenfell',
description: 'Beschreibung des Gegenstands.',
description: 'Item description.',
rarity: 'COMMON',
equipmentSlot: null,
weaponDamage: 0,

View File

@@ -11,10 +11,10 @@ interface StatRow {
type StatKey = 'weaponDamage' | 'bonusAttack' | 'bonusHp' | 'bonusArmor';
const STAT_LABELS: ReadonlyArray<{ label: string; key: StatKey }> = [
{ label: 'Waffenschaden', key: 'weaponDamage' },
{ label: 'Angriff', key: 'bonusAttack' },
{ label: 'Leben', key: 'bonusHp' },
{ label: 'Rüstung', key: 'bonusArmor' },
{ label: 'Weapon Damage', key: 'weaponDamage' },
{ label: 'Attack', key: 'bonusAttack' },
{ label: 'Health', key: 'bonusHp' },
{ label: 'Armor', key: 'bonusArmor' },
];
/** Selected-item details and equip comparison (spec §3237). */

View File

@@ -17,7 +17,7 @@ const inventory: InventoryResponse = {
item: {
key: 'worn-short-sword',
name: 'Abgenutztes Kurzschwert',
description: 'Beschreibung des Gegenstands.',
description: 'Item description.',
rarity: 'COMMON',
equipmentSlot: 'WEAPON',
weaponDamage: 8,
@@ -33,8 +33,8 @@ const inventory: InventoryResponse = {
equipped: false,
item: {
key: 'bandit-blade',
name: 'Räuberklinge',
description: 'Beschreibung des Gegenstands.',
name: 'Bandit Blade',
description: 'Item description.',
rarity: 'COMMON',
equipmentSlot: 'WEAPON',
weaponDamage: 11,
@@ -70,7 +70,7 @@ const character: CharacterResponse = {
attack: 6,
hpRegenPerSecond: 1,
hpRegenSince: null,
currentLocation: { id: 'loc-1', key: 'south-gate', name: 'Südtor' },
currentLocation: { id: 'loc-1', key: 'south-gate', name: 'South Gate' },
};
interface SetupOptions {
@@ -176,8 +176,8 @@ describe('InventoryPageComponent', () => {
equipped: true,
item: {
key: 'iron-helm',
name: 'Eiserner Helm',
description: 'Beschreibung des Gegenstands.',
name: 'Iron Helm',
description: 'Item description.',
rarity: 'COMMON',
equipmentSlot: 'HEAD',
weaponDamage: 0,

View File

@@ -16,7 +16,7 @@ const inventory: InventoryResponse = {
item: {
key: 'worn-short-sword',
name: 'Abgenutztes Kurzschwert',
description: 'Beschreibung des Gegenstands.',
description: 'Item description.',
rarity: 'COMMON',
equipmentSlot: 'WEAPON',
weaponDamage: 8,
@@ -32,8 +32,8 @@ const inventory: InventoryResponse = {
equipped: false,
item: {
key: 'bandit-blade',
name: 'Räuberklinge',
description: 'Beschreibung des Gegenstands.',
name: 'Bandit Blade',
description: 'Item description.',
rarity: 'COMMON',
equipmentSlot: 'WEAPON',
weaponDamage: 11,
@@ -61,7 +61,7 @@ const equipment: EquipmentResponse = {
const equippedAfter: EquipmentResponse = {
...equipment,
slots: { ...equipment.slots, WEAPON: { characterItemId: 'item-blade', item: { key: 'bandit-blade', name: 'Räuberklinge', rarity: 'COMMON', iconPath: '/images/items/bandit-blade.png' } } },
slots: { ...equipment.slots, WEAPON: { characterItemId: 'item-blade', item: { key: 'bandit-blade', name: 'Bandit Blade', rarity: 'COMMON', iconPath: '/images/items/bandit-blade.png' } } },
stats: { maxHp: 100, attack: 7, weaponDamage: 11, armor: 0 },
};