feat(i18n): add French language support and enhance localization
All checks were successful
Deploy to production / deploy (push) Successful in 2m48s

- Introduced French as a supported language across the application, updating locale files and adding translations for various components.
- Enhanced language handling logic to accommodate French, ensuring proper detection and fallback mechanisms.
- Updated UI elements to include French language options, improving accessibility for French-speaking users.
- Refactored SEO handling to include French in hreflang links, enhancing search engine indexing for multilingual content.
- Added new scripts for managing French translations and ensuring consistency across language files.
This commit is contained in:
Torsten Schulz (local)
2026-04-07 18:04:03 +02:00
parent f715c6125d
commit f7030bbabe
56 changed files with 5220 additions and 175 deletions

View File

@@ -10,6 +10,16 @@
"windy": "Windig",
"clear": "Klar"
},
"conditionBand": {
"excellent": "Ausgezeichnet",
"veryGood": "Sehr gut",
"good": "Gut",
"moderate": "Mäßig",
"bad": "Schlecht",
"veryBad": "Sehr schlecht",
"catastrophic": "Katastrophal",
"unknown": "Unbekannt"
},
"statusbar": {
"age": "Alter",
"wealth": "Vermögen",
@@ -129,7 +139,8 @@
"loading": "Lade mögliche Erben…",
"noHeirs": "Keine Erben verfügbar.",
"select": "Als Spielcharakter wählen",
"error": "Fehler beim Auswählen des Erben."
"error": "Fehler beim Auswählen des Erben.",
"success": "Du spielst nun mit dem gewählten Erben weiter."
},
"metadata": {
"title": "Persönliches",
@@ -195,6 +206,32 @@
"stockHint": "Verdichteter Blick auf Warenbestand über alle Regionen.",
"open": "Öffnen"
},
"routine": {
"branch": {
"kicker": "Routine",
"title": "Niederlassung öffnen",
"description": "Die schnellste Route zu Produktion, Lager, Verkauf und Transport.",
"cta": "Zu den Betrieben"
},
"finance": {
"kicker": "Überblick",
"title": "Finanzen prüfen",
"description": "Kontostand, Verlauf und wirtschaftliche Entwicklung ohne lange Suche.",
"cta": "Geldhistorie"
},
"family": {
"kicker": "Charakter",
"title": "Familie und Nachfolge",
"description": "Wichtige persönliche Entscheidungen und Haushaltsstatus gesammelt.",
"cta": "Familie öffnen"
},
"house": {
"kicker": "Besitz",
"title": "Haus und Umfeld",
"description": "Wohnsitz und alltäglicher Status als eigener Arbeitsbereich.",
"cta": "Zum Haus"
}
},
"productions": {
"title": "Produktionen"
},
@@ -1052,20 +1089,49 @@
"highestOfficeAny": "Höchstes Amt insgesamt",
"none": "keines",
"nextTitle": "Nächster möglicher Titel",
"advanceNoNext": "Fehler: Keine nächste Titel-Information verfügbar. Bitte Seite neu laden.",
"requirement": {
"money": "Vermögen mindestens {amount}",
"cost": "Kosten: {amount}",
"branches": "Mindestens {amount} Niederlassungen",
"reputation": "Beliebtheit mindestens {amount}",
"house_position": "Hausstand mindestens Stufe {amount}",
"house_condition": "Hauszustand mindestens {amount}",
"house_position": "Hausstand mindestens: {label}",
"house_condition": "Hauszustand mindestens {quality}",
"office_rank_any": "Höchstes politisches oder kirchliches Amt mindestens Rang {amount}",
"office_rank_political": "Höchstes politisches Amt mindestens Rang {amount}",
"lover_count_min": "Mindestens {amount} Liebhaber oder Mätressen",
"lover_count_max": "Höchstens {amount} Liebhaber oder Mätressen"
"lover_count_max": "Höchstens {amount} Liebhaber oder Mätressen",
"unknown": "{type}: {amount}"
},
"housePosition": {
"1": "Unter der Brücke",
"2": "eine Strohhütte",
"3": "ein Holzhaus",
"4": "ein Hinterhofzimmer",
"5": "ein kleines Familienhaus",
"6": "ein Stadthaus",
"7": "eine Villa",
"8": "ein Herrenhaus",
"9": "ein Schloss",
"fallback": "Haus-Stufe {level}"
},
"houseConditionQuality": {
"nearPerfect": "nahezu makellos",
"veryGood": "sehr gut",
"good": "gut",
"decent": "ordentlich",
"usable": "brauchbar"
},
"houseConditionPercent": "{pct} %",
"officeWithRank": "{label} (Rang {rank})",
"advance": {
"confirm": "Aufsteigen beantragen"
"confirm": "Aufsteigen beantragen",
"processing": "Wird bearbeitet…"
},
"errors": {
"tooSoon": "Der Aufstieg ist noch nicht möglich.",
"unmet": "Folgende Voraussetzungen fehlen noch:",
"generic": "Beim Aufstieg ist ein Fehler aufgetreten."
},
"cooldown": "Du kannst frühestens wieder am {date} aufsteigen."
},
@@ -1353,6 +1419,9 @@
"elections": "Wahlen"
},
"bookmarkCandidate": "Für diese Kandidatur vormerken",
"voteSuccess": "Stimme erfolgreich abgegeben.",
"voteAllSuccess": "Alle Stimmen erfolgreich abgegeben.",
"applyBookmarkSuccess": "Kandidatur erfolgreich vorgemerkt.",
"voteError": "Fehler beim Abgeben der Stimme",
"voteAllError": "Fehler beim Abgeben der Stimmen",
"applyError": "Bewerbung konnte nicht eingereicht werden.",