dc42727f34
Keeps game save import in the sidebar while grouping viewer database backup actions with their explanation in the main navigation. Co-authored-by: Cursor <cursoragent@cursor.com>
292 lines
11 KiB
JSON
292 lines
11 KiB
JSON
{
|
||
"app": {
|
||
"title": "Idle Fantasy",
|
||
"subtitle": "Save Viewer",
|
||
"loading": "Lade Save…"
|
||
},
|
||
"nav": {
|
||
"overview": "Übersicht",
|
||
"skills": "Skills",
|
||
"inventory": "Inventar",
|
||
"goals": "Ziele",
|
||
"equipment": "Ausrüstung",
|
||
"quests": "Quests",
|
||
"combat": "Kampf",
|
||
"history": "Verlauf",
|
||
"backup": "Backup"
|
||
},
|
||
"settings": {
|
||
"language": "Sprache",
|
||
"langAuto": "Automatisch (Browser)",
|
||
"langEn": "English",
|
||
"langDe": "Deutsch"
|
||
},
|
||
"actions": {
|
||
"importBackup": "Spiel-Backup importieren",
|
||
"exportViewer": "Viewer exportieren",
|
||
"importViewer": "Viewer importieren",
|
||
"compare": "Vergleichen",
|
||
"dismiss": "Schließen"
|
||
},
|
||
"empty": {
|
||
"noSave": "Kein Save importiert. Starte mit: python app.py fantasyidler_save.json",
|
||
"noSaveWeb": "Noch kein Save importiert. Importiere ein Backup über den Button in der Sidebar.",
|
||
"loadError": "Fehler beim Laden: {message}",
|
||
"unknown": "Unbekannt",
|
||
"none": "Keine",
|
||
"empty": "Leer",
|
||
"noItems": "Keine Items gefunden",
|
||
"noSnapshots": "Noch keine Snapshots. Importiere ein Backup.",
|
||
"noChanges": "Keine Änderungen",
|
||
"pickTwoSnapshots": "Wähle zwei verschiedene Snapshots."
|
||
},
|
||
"import": {
|
||
"failed": "Import fehlgeschlagen",
|
||
"duplicate": "Backup bereits vorhanden (Duplikat).",
|
||
"success": "Importiert: Snapshot #{id}",
|
||
"successWithNotes": "Importiert: Snapshot #{id}\n\n{warnings} Warnung(en), {infos} Hinweis(e) – Details im Dashboard-Banner.",
|
||
"changesTitle": "Änderungen seit letztem Import",
|
||
"changesSummary": "Münzen {coins} · Level {level} · {inv} Inventar-Änderungen · {skills} Skill-Änderungen",
|
||
"questsCompleted": "Story-Quests abgeschlossen",
|
||
"slayerKills": "Slayer-Kills",
|
||
"dungeonRuns": "Dungeon-Läufe",
|
||
"topInventory": "Größte Inventar-Änderungen",
|
||
"topSkills": "Größte Skill-Änderungen",
|
||
"titleError": "Import-Fehler",
|
||
"titleWarning": "Import-Warnungen",
|
||
"titleInfo": "Import-Hinweise",
|
||
"countErrors": "{count} Fehler",
|
||
"countWarnings": "{count} Warnung(en)",
|
||
"countInfos": "{count} Hinweis(e)",
|
||
"newFieldsSummary": "{count} neue/unbekannte Feld(er) aus dem Spiel",
|
||
"invalid_root": "Die Datei ist kein JSON-Objekt – kein gültiges Idle-Fantasy-Backup.",
|
||
"empty_save": "Die Save-Datei ist leer.",
|
||
"unknown_top_level": "Unbekanntes Feld im Backup: „{field}“ (Spiel-Update?).",
|
||
"missing_field": "Erwartetes Feld fehlt: „{field}“ – zugehörige Daten werden leer angezeigt.",
|
||
"nested_json_invalid": "Feld „{field}“ konnte nicht als JSON gelesen werden – Rohwert ignoriert.",
|
||
"invalid_coins": "Feld „coins“ ist nicht numerisch.",
|
||
"invalid_exported_at": "Feld „exported_at“ ist kein gültiger Zeitstempel.",
|
||
"missing_exported_at": "Kein Export-Zeitstempel – Verlaufsvergleiche können ungenau sein.",
|
||
"skill_xp_mismatch": "{count} Skill(s) ohne XP-Eintrag (z. B. {examples}).",
|
||
"skill_level_mismatch": "{count} XP-Einträge ohne Skill-Level.",
|
||
"unparsed_nested_json": "Feld „{field}“ ist noch Text – JSON-Inhalt konnte nicht gelesen werden.",
|
||
"invalid_type": "Feld „{field}“ hat unerwarteten Typ ({type}).",
|
||
"coerced_empty_dict": "Feld „{field}“ ist kein Objekt – wird als leer behandelt.",
|
||
"coerced_empty_list": "Feld „{field}“ ist keine Liste – wird übersprungen.",
|
||
"invalid_number": "Ungültiger Zahlenwert in „{field}“{detail}.",
|
||
"invalid_quest_entry": "Quest-Eintrag #{index} ist kein Objekt und wurde übersprungen.",
|
||
"invalid_session_entry": "Session-Eintrag #{index} ist kein Objekt und wurde übersprungen.",
|
||
"unparsed_session_frames": "Session #{index}: Aktivitäts-Frames konnten nicht gelesen werden.",
|
||
"invalid_pets": "Feld „pets“ ist keine Liste.",
|
||
"invalid_farming_patch": "Farming-Patch #{index} wurde übersprungen.",
|
||
"missing_character_name": "Kein Charaktername im Save gefunden.",
|
||
"invalid_quest_ids": "Quest-IDs ({label}) sind keine Liste.",
|
||
"invalid_quest_progress": "Quest-Fortschritt ({label}) ist kein Objekt."
|
||
},
|
||
"meta": {
|
||
"export": "Export",
|
||
"points": "Punkte"
|
||
},
|
||
"kpi": {
|
||
"coins": "Münzen",
|
||
"totalLevel": "Gesamtlevel",
|
||
"items": "Items",
|
||
"totalQty": "Gesamtmenge",
|
||
"goalsOpen": "Offene Ziele"
|
||
},
|
||
"overview": {
|
||
"character": "Charakter",
|
||
"hp": "HP",
|
||
"activePotion": "Aktiver Trank",
|
||
"activeSpell": "Aktiver Zauber",
|
||
"weaponSlot": "Waffenslot",
|
||
"blessing": "Segen",
|
||
"sessionQueue": "Session-Warteschlange",
|
||
"slayer": "Slayer",
|
||
"noSlayerTask": "Keine aktive Slayer-Aufgabe",
|
||
"pets": "Haustiere",
|
||
"farming": "Farming",
|
||
"patch": "Patch {n}",
|
||
"guildRep": "Gilden-Ruf"
|
||
},
|
||
"skills": {
|
||
"search": "Skill suchen…",
|
||
"sortLevel": "Nach Level",
|
||
"sortXp": "Nach XP",
|
||
"sortName": "Nach Name",
|
||
"skill": "Skill",
|
||
"level": "Level",
|
||
"progress": "Fortschritt",
|
||
"addGoal": "Ziel hinzufügen",
|
||
"addGoalFor": "Ziel für {name} hinzufügen"
|
||
},
|
||
"inventory": {
|
||
"search": "Item suchen…",
|
||
"sortCategory": "Nach Kategorie",
|
||
"sortName": "Nach Name",
|
||
"sortQty": "Nach Menge",
|
||
"highlightEquipped": "Ausgerüstete hervorheben",
|
||
"item": "Item",
|
||
"qty": "Menge",
|
||
"id": "ID",
|
||
"equipped": "Ausgerüstet",
|
||
"groupMeta": "{count} Items · {qty} Stk.",
|
||
"trend": "Verlauf",
|
||
"trendExpand": "Klicken für großes Diagramm",
|
||
"trendExpandFor": "Mengenverlauf für {name}",
|
||
"addGoal": "Ziel hinzufügen",
|
||
"addGoalFor": "Ziel für {name} hinzufügen"
|
||
},
|
||
"equipment": {
|
||
"title": "Ausrüstung"
|
||
},
|
||
"quests": {
|
||
"story": "Story",
|
||
"daily": "Daily",
|
||
"weekly": "Weekly",
|
||
"guild": "Gilde",
|
||
"filterAll": "Alle",
|
||
"filterOpen": "Offen",
|
||
"filterDone": "Erledigt",
|
||
"quest": "Quest",
|
||
"progress": "Fortschritt",
|
||
"status": "Status",
|
||
"done": "Erledigt",
|
||
"open": "Offen"
|
||
},
|
||
"combat": {
|
||
"enemyKills": "Gegner-Kills",
|
||
"dungeonRuns": "Dungeon-Läufe",
|
||
"runs": "{count} Läufe",
|
||
"recentActivity": "Letzte Aktivität",
|
||
"activeSessions": "Aktive Sessions",
|
||
"sessionDone": "fertig",
|
||
"sessionRunning": "läuft"
|
||
},
|
||
"history": {
|
||
"loading": "Lade Verlauf…",
|
||
"coinsChart": "Münzen über Zeit",
|
||
"levelChart": "Gesamtlevel über Zeit",
|
||
"snapshotCompare": "Snapshot-Vergleich",
|
||
"allSnapshots": "Alle Snapshots",
|
||
"character": "Charakter",
|
||
"file": "Datei",
|
||
"inventoryChanges": "Inventar-Änderungen ({count})",
|
||
"skillChanges": "Skill-Änderungen ({count})",
|
||
"delta": "Delta",
|
||
"xpDelta": "XP-Delta",
|
||
"skillLevelChart": "Top-Skills über Zeit",
|
||
"delete": "Löschen",
|
||
"deleteSnapshot": "Snapshot löschen",
|
||
"deleteSnapshotConfirm": "Diesen Snapshot wirklich löschen?",
|
||
"deleteSnapshotFailed": "Snapshot konnte nicht gelöscht werden",
|
||
"coinsSummary": "Münzen: {delta} · Gesamtlevel: {levelDelta}"
|
||
},
|
||
"search": {
|
||
"global": "Items, Skills und Ziele suchen…",
|
||
"noResults": "Keine Treffer",
|
||
"type": {
|
||
"item": "Item",
|
||
"skill": "Skill",
|
||
"goal": "Ziel"
|
||
}
|
||
},
|
||
"category": {
|
||
"currency": "Währung",
|
||
"ores_mining": "Erze & Mining",
|
||
"bars_smithing": "Barren & Schmieden",
|
||
"wood_planks": "Holz & Bretter",
|
||
"runes": "Runen",
|
||
"raw_food": "Rohkost",
|
||
"cooked_food": "Gekochtes",
|
||
"seeds_farming": "Samen & Farming",
|
||
"melee_weapons": "Nahkampfwaffen",
|
||
"ranged": "Fernkampf",
|
||
"magic": "Magie",
|
||
"armor": "Rüstung",
|
||
"bones_hides": "Knochen & Felle",
|
||
"gems_jewelry": "Edelsteine & Schmuck",
|
||
"potions_brews": "Tränke & Brauerei",
|
||
"misc": "Sonstiges"
|
||
},
|
||
"viewer": {
|
||
"landingLead": "Erstelle deinen persönlichen Save-Viewer. Kein Konto – nur ein privater Link zu deinen Daten.",
|
||
"gameLink": "Idle Fantasy auf GitHub",
|
||
"featureDashboard": "Skills, Inventar, Quests und Verlauf",
|
||
"featureUpload": "Backups im Browser importieren",
|
||
"featurePrivate": "Deine Daten bleiben nur in deinem Viewer",
|
||
"create": "Meinen Viewer erstellen",
|
||
"creating": "Viewer wird erstellt…",
|
||
"createFailed": "Viewer konnte nicht erstellt werden",
|
||
"warningTitle": "Wichtig",
|
||
"warningBody": "Es gibt keinen Login. Dein Viewer ist nur über seinen einzigartigen Link erreichbar. Link speichern oder bookmarken – ohne ihn sind deine Daten nicht wiederherstellbar.",
|
||
"linkTitle": "Dein persönlicher Link",
|
||
"linkWarning": "Link speichern – es gibt keinen Login. Ohne Link sind deine Daten weg.",
|
||
"copyLink": "Link kopieren",
|
||
"copied": "Kopiert!",
|
||
"copyPrompt": "Viewer-Link kopieren:"
|
||
},
|
||
"viewerDb": {
|
||
"title": "Viewer-Backup",
|
||
"helpTitle": "Was ist das?",
|
||
"helpBody": "Der Viewer speichert importierte Spiel-Backups, Verlaufsdiagramme und Ziele in einer SQLite-Datenbank auf dem Server. Export lädt diese Datenbank als Backup herunter. Import stellt sie wieder her und ersetzt alle aktuellen Viewer-Daten. Das ist nicht dasselbe wie ein Spiel-Backup (.json) importieren.",
|
||
"gameBackupNote": "Um einen neuen Spielstand hinzuzufügen, nutze in der Sidebar „Spiel-Backup importieren“.",
|
||
"exportHint": "SQLite-Datenbank mit allen Snapshots, Verläufen und Zielen herunterladen",
|
||
"importConfirm": "Alle aktuellen Viewer-Daten (Snapshots, Verlauf, Ziele) werden durch die importierte .db-Datei ersetzt. Fortfahren?",
|
||
"importSuccess": "Viewer wiederhergestellt: {snapshots} Snapshot(s), {goals} Ziel(e).",
|
||
"importFailed": "Viewer konnte nicht importiert werden",
|
||
"invalidFile": "Bitte eine .db-Datei auswählen (Viewer-Export)."
|
||
},
|
||
"goals": {
|
||
"filterAll": "Alle",
|
||
"filterOpen": "Offen",
|
||
"filterDone": "Erledigt",
|
||
"createGroup": "Gruppe anlegen",
|
||
"createGroupPrompt": "Gruppenname:",
|
||
"groupProgress": "{completed} / {total} erledigt",
|
||
"ungrouped": "Ohne Gruppe",
|
||
"item": "Item",
|
||
"progress": "Fortschritt",
|
||
"status": "Status",
|
||
"actions": "Aktionen",
|
||
"open": "Offen",
|
||
"done": "Erledigt",
|
||
"delete": "Löschen",
|
||
"deleteGroup": "Gruppe löschen",
|
||
"deleteGroupConfirm": "Gruppe „{name}“ löschen? Ziele bleiben ohne Gruppe erhalten.",
|
||
"deleteConfirm": "Dieses Ziel löschen?",
|
||
"clearCompleted": "Erledigte entfernen",
|
||
"empty": "Noch keine Ziele. Lege Ziele im Inventar- oder Skills-Tab an.",
|
||
"loadError": "Ziele konnten nicht geladen werden",
|
||
"createFailed": "Ziel konnte nicht angelegt werden",
|
||
"groupCreateFailed": "Gruppe konnte nicht angelegt werden",
|
||
"modalTitle": "Item-Ziel hinzufügen",
|
||
"modalTitleSkill": "Skill-Ziel hinzufügen",
|
||
"cancel": "Abbrechen",
|
||
"targetQty": "Zielmenge",
|
||
"targetLevel": "Ziel-Level",
|
||
"mode": "Modus",
|
||
"modeAbsolute": "Absolut (Gesamtmenge/Level)",
|
||
"modeRelative": "Relativ (seit Anlegen)",
|
||
"modeRelativeHint": "Relatives Ziel – Fortschritt seit Anlegen",
|
||
"typeSkill": "Skill",
|
||
"currentLevel": "Aktuell: Level {level}",
|
||
"missing": "Noch {qty} fehlen",
|
||
"missingShort": "−{qty}",
|
||
"etaSnapshots": "ca. {n} Import(e)",
|
||
"hasGoal": "Offenes Ziel",
|
||
"total": "gesamt",
|
||
"renameGroup": "Umbenennen",
|
||
"renameGroupPrompt": "Neuer Gruppenname:",
|
||
"selectGroup": "Gruppe",
|
||
"noGroup": "Keine Gruppe",
|
||
"newGroup": "Neue Gruppe…",
|
||
"newGroupName": "Name der neuen Gruppe",
|
||
"currentQty": "Aktuell: {qty}",
|
||
"completedBannerTitle": "Ziele erreicht",
|
||
"completedItem": "{group}{name}: {current} / {target}",
|
||
"completedItemGroup": "{name}: ",
|
||
"groupCompleted": "Gruppe erledigt: {name}"
|
||
}
|
||
}
|