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

View file

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

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"/>
<rect x="-30" y="-30" width="25" height="10" fill="#FFF"/>
</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>

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"/>
</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>

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"/>
</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>

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="-60" x2="25" y2="-60" stroke="#8B4513" stroke-width="6"/>
</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>

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"/>
<circle cx="0" cy="0" r="3" fill="#333"/>
</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>

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,-10 Q 40,-10 40,10 Q 40,30 25,30" fill="none" stroke="#333" stroke-width="2"/>
</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>

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="-10" cy="-25" r="3" fill="#333"/>
</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>

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"/>
<circle cx="20" cy="0" r="4" fill="#FFD700"/>
</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>

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="20" y1="-60" x2="20" y2="0" stroke="#666" stroke-width="4"/>
</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>

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"/>
<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>
<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>

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="-15" y="20" width="30" height="40" fill="#654321"/>
</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>

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"/>
<polygon points="-10,-60 0,-80 10,-60" fill="#999"/>
</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>

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"/>
<circle cx="0" cy="40" r="5" fill="#666"/>
</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>

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"/>
<ellipse cx="0" cy="20" rx="40" ry="15" fill="#654321" stroke="#333" stroke-width="2"/>
</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>

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"/>
<rect x="-5" y="-10" width="10" height="70" fill="#666"/>
</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>

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"/>
</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>

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"/>
<circle cx="0" cy="-20" r="40" fill="#228B22"/>
</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>

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="0" y1="-40" x2="0" y2="40" stroke="#333" stroke-width="3"/>
</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>

Before

Width:  |  Height:  |  Size: 495 B

After

Width:  |  Height:  |  Size: 496 B