Refactor SaleSection component: Simplify sell item and sell all logic, remove unnecessary state management, and improve UI feedback. Update translations and clean up unused code in i18n files. Optimize price loading in BranchView and remove legacy product loading in MoneyHistoryView. Streamline PoliticsView by removing own character ID handling and related logic.

This commit is contained in:
Torsten Schulz (local)
2026-01-26 16:03:48 +01:00
parent 80b639b511
commit 71748f6aa0
15 changed files with 822 additions and 3815 deletions

View File

@@ -32,9 +32,8 @@
},
"notifications": {
"notify_election_created": "Es wurde eine neue Wahl ausgeschrieben.",
"notify_office_filled": "Ein politisches Amt wurde neu besetzt.",
"production": {
"overproduction": "Überproduktion: Deine Produktion liegt {value} Einheiten über dem Bedarf{branch_info}."
"overproduction": "Überproduktion: Deine Produktion liegt {value}% über dem Bedarf."
},
"transport": {
"waiting": "Transport wartet"
@@ -136,14 +135,6 @@
"store": "Verkauf",
"fullstack": "Produktion mit Verkauf"
}
},
"heirSelection": {
"title": "Charakter verloren - Erben auswählen",
"description": "Dein Charakter wurde durch einen Fehler verloren. Bitte wähle einen Erben aus deiner Hauptregion aus, um fortzufahren.",
"loading": "Lade mögliche Erben...",
"noHeirs": "Es wurden keine passenden Erben gefunden.",
"select": "Als Erben wählen",
"error": "Fehler beim Auswählen des Erben."
}
},
"titles": {
@@ -241,7 +232,6 @@
"produce": "Darf produzieren",
"sell": "Darf verkaufen",
"starttransport": "Darf Transporte veranlassen",
"repairVehicles": "Darf Fahrzeuge reparieren",
"emptyTransport": {
"title": "Transport ohne Produkte",
"description": "Bewege Transportmittel von dieser Niederlassung zu einer anderen, um sie besser zu nutzen.",
@@ -270,10 +260,6 @@
"sell": "Verkauf",
"sellButton": "Verkaufen",
"sellAllButton": "Alles verkaufen",
"selling": "Verkauf läuft...",
"sellError": "Fehler beim Verkauf des Produkts.",
"sellAllError": "Fehler beim Verkauf aller Produkte.",
"sellAllSuccess": "Alle Produkte wurden erfolgreich verkauft. Einnahmen: {revenue}",
"transportTitle": "Transport anlegen",
"transportSource": "Artikel",
"transportSourcePlaceholder": "Artikel wählen",
@@ -321,10 +307,7 @@
"current": "Laufende Produktionen",
"product": "Produkt",
"remainingTime": "Verbleibende Zeit (Sekunden)",
"noProductions": "Keine laufenden Produktionen.",
"status": "Status",
"sleep": "Zurückgestellt",
"active": "Aktiv"
"noProductions": "Keine laufenden Produktionen."
},
"columns": {
"city": "Stadt",
@@ -595,7 +578,6 @@
"Production cost": "Produktionskosten",
"Sell all products": "Alle Produkte verkauft",
"sell products": "Produkte verkauft",
"taxFromSaleProduct": "Steuer aus Verkauf: {product}",
"director starts production": "Direktor beginnt Produktion",
"director payed out": "Direktorgehalt ausgezahlt",
"Buy storage (type: field)": "Lagerplatz gekauft (Typ: Feld)",
@@ -614,9 +596,6 @@
"new nobility title": "Neuer Adelstitel",
"partyOrder": "Fest bestellt",
"renovation_all": "Haus komplett renoviert",
"reputationAction": {
"school_funding": "Sozialstatus: Schule/Lehrstuhl finanziert"
},
"health": {
"pill": "Gesundheitsmaßnahme: Tablette",
"doctor": "Gesundheitsmaßnahme: Arztbesuch",
@@ -759,8 +738,7 @@
"reputation": {
"title": "Reputation",
"overview": {
"title": "Übersicht",
"current": "Deine aktuelle Reputation"
"title": "Übersicht"
},
"party": {
"title": "Feste",
@@ -799,34 +777,6 @@
"type": "Festart",
"cost": "Kosten",
"date": "Datum"
},
"actions": {
"title": "Aktionen",
"description": "Mit diesen Aktionen kannst du Reputation gewinnen. Je öfter du dieselbe Aktion ausführst, desto weniger Reputation bringt sie (unabhängig von den Kosten).",
"action": "Aktion",
"cost": "Kosten",
"gain": "Reputation",
"timesUsed": "Bereits genutzt",
"execute": "Ausführen",
"running": "Läuft...",
"none": "Keine Aktionen verfügbar.",
"dailyLimit": "Heute noch verfügbar: {remaining} / {cap} Reputation (durch Aktionen).",
"cooldown": "Nächste Sozialstatus-Aktion in ca. {minutes} Minuten möglich.",
"success": "Aktion erfolgreich! Reputation +{gain}, Kosten {cost}.",
"successSimple": "Aktion erfolgreich!",
"type": {
"library_donation": "Spende für eine Bibliothek",
"orphanage_build": "Waisenhaus aufbauen",
"statue_build": "Statue errichten",
"hospital_donation": "Krankenhaus/Heilhaus stiften",
"school_funding": "Schule/Lehrstuhl finanzieren",
"well_build": "Brunnen/Wasserwerk bauen",
"bridge_build": "Straßen-/Brückenbau finanzieren",
"soup_kitchen": "Armenspeisung organisieren",
"patronage": "Kunst & Mäzenatentum",
"church_hospice": "Hospiz-/Kirchenspende",
"scholarships": "Stipendienfonds finanzieren"
}
}
},
"party": {
@@ -838,58 +788,6 @@
}
},
"church": {
"title": "Kirche",
"tabs": {
"current": "Aktuelle Positionen",
"available": "Verfügbare Positionen",
"applications": "Bewerbungen"
},
"current": {
"office": "Amt",
"region": "Region",
"holder": "Inhaber",
"supervisor": "Vorgesetzter",
"none": "Keine aktuellen Positionen vorhanden."
},
"available": {
"office": "Amt",
"region": "Region",
"supervisor": "Vorgesetzter",
"seats": "Verfügbare Plätze",
"action": "Aktion",
"apply": "Bewerben",
"applySuccess": "Bewerbung erfolgreich eingereicht.",
"applyError": "Fehler beim Einreichen der Bewerbung.",
"none": "Keine verfügbaren Positionen."
},
"applications": {
"office": "Amt",
"region": "Region",
"applicant": "Bewerber",
"date": "Datum",
"action": "Aktion",
"approve": "Annehmen",
"reject": "Ablehnen",
"approveSuccess": "Bewerbung angenommen.",
"rejectSuccess": "Bewerbung abgelehnt.",
"decideError": "Fehler bei der Entscheidung.",
"none": "Keine Bewerbungen vorhanden."
},
"offices": {
"village-priest": "Dorfgeistlicher",
"parish-priest": "Pfarrer",
"dean": "Dekan",
"archdeacon": "Erzdiakon",
"bishop": "Bischof",
"archbishop": "Erzbischof",
"cardinal": "Kardinal",
"pope": "Papst"
},
"application": {
"received": "Neue Bewerbung erhalten",
"approved": "Bewerbung angenommen",
"rejected": "Bewerbung abgelehnt"
},
"title": "Kirche",
"baptism": {
"title": "Taufen",
@@ -985,9 +883,6 @@
"success": "Erfolg",
"selectMeasure": "Maßnahme",
"perform": "Durchführen",
"errors": {
"tooClose": "Aktionen zu dicht hintereinander (maximal 1× pro 24 Stunden)."
},
"measures": {
"pill": "Tablette",
"doctor": "Arztbesuch",