Translate all user-visible text to German
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
|
|
@ -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";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |