Translate all user-visible text to German

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-11-14 13:58:35 +00:00
parent 34d41b17b7
commit 747391e2b6
21 changed files with 51 additions and 51 deletions

View file

@ -4,38 +4,38 @@
@inject GameService GameService @inject GameService GameService
@inject NavigationManager Navigation @inject NavigationManager Navigation
<PageTitle>Memory Game</PageTitle> <PageTitle>Memory-Spiel</PageTitle>
<div class="memory-game-container"> <div class="memory-game-container">
@if (!_initialized) @if (!_initialized)
{ {
<div class="loading"> <div class="loading">
<h2>Loading...</h2> <h2>Lädt...</h2>
</div> </div>
} }
else if (_currentSession == null) else if (_currentSession == null)
{ {
<div class="start-screen"> <div class="start-screen">
<h1>Memory Game</h1> <h1>Memory-Spiel</h1>
<p class="subtitle">Practice matching images with words</p> <p class="subtitle">Übe das Zuordnen von Bildern zu Wörtern</p>
<button class="btn-start" @onclick="StartNewGame">Start New Game</button> <button class="btn-start" @onclick="StartNewGame">Neues Spiel starten</button>
</div> </div>
} }
else if (_currentSession.IsComplete) else if (_currentSession.IsComplete)
{ {
<div class="results-screen"> <div class="results-screen">
<h1>Game Complete!</h1> <h1>Spiel beendet!</h1>
<div class="results"> <div class="results">
<div class="result-item correct"> <div class="result-item correct">
<span class="result-label">Correct:</span> <span class="result-label">Richtig:</span>
<span class="result-value">@_currentSession.CorrectAnswers</span> <span class="result-value">@_currentSession.CorrectAnswers</span>
</div> </div>
<div class="result-item incorrect"> <div class="result-item incorrect">
<span class="result-label">Incorrect:</span> <span class="result-label">Falsch:</span>
<span class="result-value">@_currentSession.IncorrectAnswers</span> <span class="result-value">@_currentSession.IncorrectAnswers</span>
</div> </div>
</div> </div>
<button class="btn-start" @onclick="StartNewGame">Play Again</button> <button class="btn-start" @onclick="StartNewGame">Nochmal spielen</button>
</div> </div>
} }
else else
@ -46,7 +46,7 @@
<div class="game-screen"> <div class="game-screen">
<div class="game-header"> <div class="game-header">
<div class="round-counter"> <div class="round-counter">
Round @(_currentSession.CurrentRoundIndex + 1) of @_currentSession.Rounds.Count Runde @(_currentSession.CurrentRoundIndex + 1) von @_currentSession.Rounds.Count
</div> </div>
</div> </div>
@ -120,12 +120,12 @@
_showFeedback = true; _showFeedback = true;
if (round.IsCorrect) if (round.IsCorrect)
{ {
_feedbackMessage = "Correct! ✓"; _feedbackMessage = "Richtig! ✓";
_feedbackClass = "correct"; _feedbackClass = "correct";
} }
else else
{ {
_feedbackMessage = $"Incorrect. The correct answer is: {round.CorrectAnswer.Word}"; _feedbackMessage = $"Falsch. Die richtige Antwort ist: {round.CorrectAnswer.Word}";
_feedbackClass = "incorrect"; _feedbackClass = "incorrect";
} }

View file

@ -10,26 +10,26 @@ public sealed class GameService
private readonly List<GameWord> _defaultWords = private readonly List<GameWord> _defaultWords =
[ [
new() { Word = "fork", ImagePath = "images/fork.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Gabel", ImagePath = "images/fork.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "knife", ImagePath = "images/knife.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Messer", ImagePath = "images/knife.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "spoon", ImagePath = "images/spoon.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Löffel", ImagePath = "images/spoon.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "door", ImagePath = "images/door.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Tür", ImagePath = "images/door.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "window", ImagePath = "images/window.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Fenster", ImagePath = "images/window.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "ball", ImagePath = "images/ball.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Ball", ImagePath = "images/ball.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "house", ImagePath = "images/house.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Haus", ImagePath = "images/house.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "tree", ImagePath = "images/tree.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Baum", ImagePath = "images/tree.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "car", ImagePath = "images/car.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Auto", ImagePath = "images/car.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "cat", ImagePath = "images/cat.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Katze", ImagePath = "images/cat.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "dog", ImagePath = "images/dog.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Hund", ImagePath = "images/dog.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "chair", ImagePath = "images/chair.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Stuhl", ImagePath = "images/chair.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "table", ImagePath = "images/table.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Tisch", ImagePath = "images/table.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "cup", ImagePath = "images/cup.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Tasse", ImagePath = "images/cup.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "book", ImagePath = "images/book.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Buch", ImagePath = "images/book.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "clock", ImagePath = "images/clock.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Uhr", ImagePath = "images/clock.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "bed", ImagePath = "images/bed.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Bett", ImagePath = "images/bed.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "phone", ImagePath = "images/phone.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Telefon", ImagePath = "images/phone.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "shoe", ImagePath = "images/shoe.svg", CorrectCount = 0, IncorrectCount = 0 }, new() { Word = "Schuh", ImagePath = "images/shoe.svg", CorrectCount = 0, IncorrectCount = 0 },
new() { Word = "hat", ImagePath = "images/hat.svg", CorrectCount = 0, IncorrectCount = 0 } new() { Word = "Hut", ImagePath = "images/hat.svg", CorrectCount = 0, IncorrectCount = 0 }
]; ];
public GameService(LocalStorageService localStorage) public GameService(LocalStorageService localStorage)

View file

@ -6,5 +6,5 @@
<line x1="-45" y1="10" x2="-45" y2="30" stroke="#8B4513" stroke-width="5"/> <line x1="-45" y1="10" x2="-45" y2="30" stroke="#8B4513" stroke-width="5"/>
<line x1="45" y1="10" x2="45" y2="30" stroke="#8B4513" stroke-width="5"/> <line x1="45" y1="10" x2="45" y2="30" stroke="#8B4513" stroke-width="5"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">BED</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">BETT</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 539 B

After

Width:  |  Height:  |  Size: 540 B

View file

@ -5,5 +5,5 @@
<line x1="0" y1="-40" x2="0" y2="40" stroke="#333" stroke-width="2"/> <line x1="0" y1="-40" x2="0" y2="40" stroke="#333" stroke-width="2"/>
<rect x="-30" y="-30" width="25" height="10" fill="#FFF"/> <rect x="-30" y="-30" width="25" height="10" fill="#FFF"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">BOOK</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">BUCH</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 482 B

After

Width:  |  Height:  |  Size: 482 B

View file

@ -6,5 +6,5 @@
<circle cx="-30" cy="20" r="10" fill="#333"/> <circle cx="-30" cy="20" r="10" fill="#333"/>
<circle cx="30" cy="20" r="10" fill="#333"/> <circle cx="30" cy="20" r="10" fill="#333"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">CAR</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">AUTO</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 541 B

After

Width:  |  Height:  |  Size: 542 B

View file

@ -8,5 +8,5 @@
<circle cx="-10" cy="-25" r="3" fill="#333"/> <circle cx="-10" cy="-25" r="3" fill="#333"/>
<circle cx="10" cy="-25" r="3" fill="#333"/> <circle cx="10" cy="-25" r="3" fill="#333"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">CAT</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">KATZE</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 581 B

After

Width:  |  Height:  |  Size: 583 B

View file

@ -8,5 +8,5 @@
<line x1="25" y1="-40" x2="25" y2="-60" stroke="#8B4513" stroke-width="6"/> <line x1="25" y1="-40" x2="25" y2="-60" stroke="#8B4513" stroke-width="6"/>
<line x1="-25" y1="-60" x2="25" y2="-60" stroke="#8B4513" stroke-width="6"/> <line x1="-25" y1="-60" x2="25" y2="-60" stroke="#8B4513" stroke-width="6"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">CHAIR</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">STUHL</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 718 B

After

Width:  |  Height:  |  Size: 718 B

View file

@ -6,5 +6,5 @@
<line x1="0" y1="0" x2="20" y2="0" stroke="#333" stroke-width="2"/> <line x1="0" y1="0" x2="20" y2="0" stroke="#333" stroke-width="2"/>
<circle cx="0" cy="0" r="3" fill="#333"/> <circle cx="0" cy="0" r="3" fill="#333"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">CLOCK</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">UHR</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 518 B

After

Width:  |  Height:  |  Size: 516 B

View file

@ -4,5 +4,5 @@
<path d="M -25,-30 L -20,30 L 20,30 L 25,-30 Z" fill="#87CEEB" stroke="#333" stroke-width="2"/> <path d="M -25,-30 L -20,30 L 20,30 L 25,-30 Z" fill="#87CEEB" stroke="#333" stroke-width="2"/>
<path d="M 25,-10 Q 40,-10 40,10 Q 40,30 25,30" fill="none" stroke="#333" stroke-width="2"/> <path d="M 25,-10 Q 40,-10 40,10 Q 40,30 25,30" fill="none" stroke="#333" stroke-width="2"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">CUP</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">TASSE</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 446 B

View file

@ -8,5 +8,5 @@
<circle cx="-20" cy="-25" r="3" fill="#333"/> <circle cx="-20" cy="-25" r="3" fill="#333"/>
<circle cx="-10" cy="-25" r="3" fill="#333"/> <circle cx="-10" cy="-25" r="3" fill="#333"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">DOG</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">HUND</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 587 B

After

Width:  |  Height:  |  Size: 588 B

View file

@ -4,5 +4,5 @@
<rect x="-35" y="-60" width="70" height="120" fill="#8B4513" stroke="#654321" stroke-width="3"/> <rect x="-35" y="-60" width="70" height="120" fill="#8B4513" stroke="#654321" stroke-width="3"/>
<circle cx="20" cy="0" r="4" fill="#FFD700"/> <circle cx="20" cy="0" r="4" fill="#FFD700"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">DOOR</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">TÜR</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 399 B

After

Width:  |  Height:  |  Size: 399 B

View file

@ -7,5 +7,5 @@
<line x1="10" y1="-60" x2="10" y2="0" stroke="#666" stroke-width="4"/> <line x1="10" y1="-60" x2="10" y2="0" stroke="#666" stroke-width="4"/>
<line x1="20" y1="-60" x2="20" y2="0" stroke="#666" stroke-width="4"/> <line x1="20" y1="-60" x2="20" y2="0" stroke="#666" stroke-width="4"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">FORK</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">GABEL</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 626 B

After

Width:  |  Height:  |  Size: 627 B

View file

@ -4,5 +4,5 @@
<ellipse cx="0" cy="10" rx="50" ry="10" fill="#8B4513" stroke="#333" stroke-width="2"/> <ellipse cx="0" cy="10" rx="50" ry="10" fill="#8B4513" stroke="#333" stroke-width="2"/>
<path d="M -30,-30 Q -30,-50 0,-50 Q 30,-50 30,-30 L 20,10 L -20,10 Z" fill="#8B4513" stroke="#333" stroke-width="2"/> <path d="M -30,-30 Q -30,-50 0,-50 Q 30,-50 30,-30 L 20,10 L -20,10 Z" fill="#8B4513" stroke="#333" stroke-width="2"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">HAT</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">HUT</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 462 B

View file

@ -5,5 +5,5 @@
<rect x="-40" y="0" width="80" height="60" fill="#DEB887" stroke="#333" stroke-width="2"/> <rect x="-40" y="0" width="80" height="60" fill="#DEB887" stroke="#333" stroke-width="2"/>
<rect x="-15" y="20" width="30" height="40" fill="#654321"/> <rect x="-15" y="20" width="30" height="40" fill="#654321"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">HOUSE</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">HAUS</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 465 B

After

Width:  |  Height:  |  Size: 464 B

View file

@ -4,5 +4,5 @@
<rect x="-10" y="-50" width="20" height="100" fill="#666"/> <rect x="-10" y="-50" width="20" height="100" fill="#666"/>
<polygon points="-10,-60 0,-80 10,-60" fill="#999"/> <polygon points="-10,-60 0,-80 10,-60" fill="#999"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">KNIFE</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">MESSER</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 382 B

After

Width:  |  Height:  |  Size: 383 B

View file

@ -5,5 +5,5 @@
<rect x="-20" y="-40" width="40" height="70" fill="#87CEEB"/> <rect x="-20" y="-40" width="40" height="70" fill="#87CEEB"/>
<circle cx="0" cy="40" r="5" fill="#666"/> <circle cx="0" cy="40" r="5" fill="#666"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">PHONE</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">TELEFON</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 464 B

After

Width:  |  Height:  |  Size: 466 B

View file

@ -4,5 +4,5 @@
<path d="M -40,20 L -30,-10 L 30,-10 L 40,20 Z" fill="#8B4513" stroke="#333" stroke-width="2"/> <path d="M -40,20 L -30,-10 L 30,-10 L 40,20 Z" fill="#8B4513" stroke="#333" stroke-width="2"/>
<ellipse cx="0" cy="20" rx="40" ry="15" fill="#654321" stroke="#333" stroke-width="2"/> <ellipse cx="0" cy="20" rx="40" ry="15" fill="#654321" stroke="#333" stroke-width="2"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">SHOE</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">SCHUH</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 440 B

After

Width:  |  Height:  |  Size: 441 B

View file

@ -4,5 +4,5 @@
<ellipse cx="0" cy="-40" rx="20" ry="30" fill="#666"/> <ellipse cx="0" cy="-40" rx="20" ry="30" fill="#666"/>
<rect x="-5" y="-10" width="10" height="70" fill="#666"/> <rect x="-5" y="-10" width="10" height="70" fill="#666"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">SPOON</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">LÖFFEL</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 370 B

After

Width:  |  Height:  |  Size: 372 B

View file

@ -5,5 +5,5 @@
<line x1="-40" y1="0" x2="-40" y2="40" stroke="#8B4513" stroke-width="6"/> <line x1="-40" y1="0" x2="-40" y2="40" stroke="#8B4513" stroke-width="6"/>
<line x1="40" y1="0" x2="40" y2="40" stroke="#8B4513" stroke-width="6"/> <line x1="40" y1="0" x2="40" y2="40" stroke="#8B4513" stroke-width="6"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">TABLE</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">TISCH</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 472 B

After

Width:  |  Height:  |  Size: 472 B

View file

@ -4,5 +4,5 @@
<rect x="-10" y="20" width="20" height="40" fill="#8B4513"/> <rect x="-10" y="20" width="20" height="40" fill="#8B4513"/>
<circle cx="0" cy="-20" r="40" fill="#228B22"/> <circle cx="0" cy="-20" r="40" fill="#228B22"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">TREE</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">BAUM</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 365 B

View file

@ -5,5 +5,5 @@
<line x1="-40" y1="0" x2="40" y2="0" stroke="#333" stroke-width="3"/> <line x1="-40" y1="0" x2="40" y2="0" stroke="#333" stroke-width="3"/>
<line x1="0" y1="-40" x2="0" y2="40" stroke="#333" stroke-width="3"/> <line x1="0" y1="-40" x2="0" y2="40" stroke="#333" stroke-width="3"/>
</g> </g>
<text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">WINDOW</text> <text x="100" y="180" text-anchor="middle" font-size="20" fill="#666">FENSTER</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 495 B

After

Width:  |  Height:  |  Size: 496 B