feat(bisaya-course): enhance German course content and localization support
All checks were successful
Deploy to production / deploy (push) Successful in 2m47s

- Updated the create-german-for-bisaya-course-content.js script to improve lesson pattern retrieval by introducing a new function for generating a lesson pattern pool.
- Added new exercises for various topics including 'Wohnung & Nachbarn', 'Besuch empfangen', 'Arzt, Apotheke, Termin', and 'Amt, Dokumente, Anmeldung', enhancing practical language skills for learners.
- Improved localization by integrating translation keys for various UI elements and error messages across multiple components, ensuring a consistent user experience in both German and Bisaya.
- Enhanced the main.js file to recognize Bisaya language preferences in browser settings, improving accessibility for users.
This commit is contained in:
Torsten Schulz (local)
2026-03-31 17:40:03 +02:00
parent b1990334b9
commit c6caeefb5f
49 changed files with 3468 additions and 262 deletions

View File

@@ -6,6 +6,56 @@
"title": "Titel",
"publish": "Veröffentlichen",
"pickImage": "Bild auswählen",
"uploadImage": "Bild hochladen"
"uploadImage": "Bild hochladen",
"list": {
"eyebrow": "Community-Blogs",
"title": "Blogs",
"intro": "Artikel, Projektstände und persönliche Einblicke aus der YourPart-Community.",
"create": "Neuen Blog erstellen",
"loading": "Laden…",
"empty": "Keine Blogs gefunden.",
"by": "von",
"unknownAuthor": "Unbekannt",
"open": "Zum Blog",
"fallbackExcerpt": "Öffentliche Einträge, Gedanken und Projektstände aus der Community."
},
"view": {
"loading": "Laden…",
"edit": "Bearbeiten",
"entriesCount": "{count} Einträge",
"empty": "Keine Einträge vorhanden.",
"fallbackDescription": "Öffentlicher Community-Blog auf YourPart.",
"notFoundTitle": "Blog nicht gefunden | YourPart",
"notFoundDescription": "Der angeforderte Blog konnte nicht geladen werden."
},
"editor": {
"createTitle": "Blog erstellen",
"editTitle": "Blog bearbeiten",
"description": "Beschreibung",
"visibility": "Sichtbarkeit",
"visibilityPublic": "Öffentlich",
"visibilityLoggedIn": "Nur eingeloggte Nutzer",
"ageRange": "Altersbereich",
"gender": "Geschlecht",
"genderMale": "Männlich",
"genderFemale": "Weiblich",
"save": "Speichern",
"newPostTitle": "Neuer Beitrag",
"addPost": "Beitrag hinzufügen",
"shareTitle": "Blog teilen",
"url": "URL",
"copyLink": "Link kopieren",
"shareToFriends": "An Freunde senden",
"emailAddresses": "E-Mail-Adressen (Kommagetrennt)",
"send": "Senden",
"restrictedHint": "Hinweis: Dieser Blog ist nicht öffentlich. Empfänger benötigen ggf. ein Login und passende Alters/Geschlechts-Berechtigung.",
"invalidAgeRange": "Ungültiger Altersbereich",
"copySuccess": "Link kopiert",
"copyError": "Kopieren fehlgeschlagen",
"shareError": "Teilen fehlgeschlagen",
"emailError": "E-Mail-Versand fehlgeschlagen",
"friendsSent": "An {count} Freund(e) gesendet.",
"emailsSent": "{count} E-Mail(s) versendet."
}
}
}

View File

@@ -122,6 +122,7 @@
},
"overview": {
"title": "Falukant - Übersicht",
"heroIntro": "Dein Stand in Wirtschaft, Familie und Besitz in einer verdichteten Übersicht.",
"heirSelection": {
"title": "Erben-Auswahl",
"description": "Dein bisheriger Charakter ist nicht mehr verfügbar. Wähle einen Erben aus der Liste, um mit diesem weiterzuspielen.",
@@ -171,6 +172,16 @@
"two_of": "Mindestens zwei Statusbedingungen"
}
},
"summary": {
"certificateHint": "Bestimmt, welche Produktkategorien du derzeit herstellen darfst.",
"branches": "Niederlassungen",
"branchesHint": "Direkter Zugriff auf deine wichtigsten Geschäftsstandorte.",
"productions": "Produktionen aktiv",
"productionsHint": "Laufende Produktionen, die zeitnah Abschluss oder Kontrolle brauchen.",
"stock": "Lagerpositionen",
"stockHint": "Verdichteter Blick auf Warenbestand über alle Regionen.",
"open": "Öffnen"
},
"productions": {
"title": "Produktionen"
},
@@ -258,6 +269,8 @@
},
"branch": {
"title": "Filiale",
"heroEyebrow": "Niederlassung",
"heroIntro": "Produktion, Lager, Verkauf und Transport in einer spielweltbezogenen Steuerfläche.",
"debtorsPrison": {
"branchLocked": "Im Schuldturm sind neue wirtschaftliche Schritte blockiert. Geschlossene oder gepfändete Standorte werden hier ebenfalls sichtbar.",
"branchRisk": "Dein Kreditverzug gefährdet Niederlassungen, Fahrzeuge und Lagerbestände.",
@@ -1321,6 +1334,10 @@
"upcoming": "Anstehende Neuwahl-Positionen",
"elections": "Wahlen"
},
"bookmarkCandidate": "Für diese Kandidatur vormerken",
"voteError": "Fehler beim Abgeben der Stimme",
"voteAllError": "Fehler beim Abgeben der Stimmen",
"applyError": "Bewerbung konnte nicht eingereicht werden.",
"current": {
"office": "Amt",
"region": "Region",

View File

@@ -58,5 +58,71 @@
"cancel": "Abbrechen",
"yes": "Ja",
"no": "Nein"
},
"sectionBar": {
"sections": {
"default": "Bereich",
"falukant": "Falukant",
"vocab": "Vokabeltrainer",
"forum": "Forum",
"community": "Community",
"settings": "Einstellungen",
"administration": "Administration",
"minigames": "Minispiele",
"personal": "Persönlich",
"blog": "Blog"
},
"titles": {
"friends": "Freunde",
"guestbook": "Gästebuch",
"search": "Suche",
"gallery": "Galerie",
"forum": "Forum",
"topic": "Thema",
"diary": "Tagebuch",
"languages": "Sprachen",
"newLanguage": "Neue Sprache",
"subscribeLanguage": "Sprache abonnieren",
"language": "Sprache",
"chapter": "Kapitel",
"courses": "Kurse",
"course": "Kurs",
"lesson": "Lektion",
"createCharacter": "Charakter erstellen",
"overview": "Übersicht",
"branch": "Niederlassung",
"moneyHistory": "Geldverlauf",
"family": "Familie",
"house": "Haus",
"nobility": "Adel",
"reputation": "Ansehen",
"church": "Kirche",
"education": "Bildung",
"bank": "Bank",
"directors": "Direktoren",
"health": "Gesundheit",
"politics": "Politik",
"underground": "Untergrund",
"personalSettings": "Persönliche Daten",
"viewSettings": "Ansicht",
"sexualitySettings": "Sexualität",
"flirtSettings": "Flirt",
"accountSettings": "Account",
"languageAssistantSettings": "Sprachassistent",
"interests": "Interessen",
"adminInterests": "Interessenverwaltung",
"adminUsers": "Benutzer",
"adminUserStatistics": "Benutzerstatistik",
"adminContacts": "Kontaktanfragen",
"adminUserRights": "Rechte",
"adminForums": "Forumverwaltung",
"adminChatRooms": "Chaträume",
"adminFalukantUsers": "Falukant-Nutzer",
"adminFalukantMap": "Falukant-Karte",
"adminCreateNpc": "NPC erstellen",
"adminMinigames": "Match3-Verwaltung",
"adminTaxiTools": "Taxi-Tools",
"adminServicesStatus": "Service-Status"
}
}
}

View File

@@ -32,7 +32,13 @@
"totalScore": "Gesamtpunktzahl",
"totalStars": "Gesamtsterne",
"levelsCompleted": "Abgeschlossene Level",
"restartCampaign": "Kampagne neu starten"
"restartCampaign": "Kampagne neu starten",
"nextStep": "Nächster Schritt",
"objectivesCollapse": "Ziele einklappen",
"objectivesShow": "Ziele anzeigen",
"objectives": "Ziele",
"loadingBoard": "Spielbrett wird vorbereitet...",
"loadingHint": "Leveldaten, Ziele und Feldlayout werden gerade synchronisiert."
},
"taxi": {
"title": "Taxi Simulator",
@@ -64,6 +70,34 @@
"refuel": "Tanken",
"startEngine": "Motor starten",
"stopEngine": "Motor stoppen",
"controls": "Steuerung",
"accelerate": "Gas geben",
"brake": "Bremsen",
"steerRight": "Rechts lenken",
"steerLeft": "Links lenken",
"goals": "Ziele",
"avoidCollisions": "Vermeide Kollisionen mit anderen Fahrzeugen",
"streetNames": "Straßennamen",
"remainingVehicles": "Verbleibende Fahrzeuge",
"fuelTitle": "Treibstoff",
"pointsTitle": "Punkte",
"speedViolations": "Geschwindigkeitsverstöße",
"redLightsPassed": "Rote Ampeln überfahren",
"highscore": "Highscore",
"topPlayers": "Top 20 Spieler",
"loadingHighscore": "Lade Highscore...",
"noHighscore": "Noch keine Highscores vorhanden",
"pointsShort": "Pkt",
"backToGame": "Zurück zum Spiel",
"minimap": "Minimap",
"loadedPassengers": "Geladene Passagiere",
"waitingPassengers": "Wartende Passagiere",
"noPassengersInTaxi": "Keine Passagiere im Taxi",
"noWaitingPassengers": "Keine wartenden Passagiere",
"name": "Name",
"destination": "Ziel",
"bonus": "Bonus",
"time": "Zeit",
"crash": {
"title": "Unfall!",
"message": "Du hattest einen Unfall! Crashes: {crashes}"

View File

@@ -4,6 +4,10 @@
"email": "E-Mail",
"reset": "Zurücksetzen",
"success": "Falls die E-Mail existiert, wurde eine Anleitung zum Zurücksetzen gesendet.",
"failure": "Passwort-Zurücksetzen fehlgeschlagen. Bitte später erneut versuchen."
"failure": "Passwort-Zurücksetzen fehlgeschlagen. Bitte später erneut versuchen.",
"emailHint": "Wir senden den Link an die hinterlegte E-Mail-Adresse.",
"validation": {
"invalidEmail": "Bitte eine gültige E-Mail-Adresse eingeben."
}
}
}

View File

@@ -8,7 +8,8 @@
"language": "Sprache",
"languages": {
"en": "Englisch",
"de": "Deutsch"
"de": "Deutsch",
"ceb": "Bisaya"
},
"register": "Registrieren",
"close": "Schließen",
@@ -16,6 +17,12 @@
"success": "Du wurdest erfolgreich registriert. Bitte schaue jetzt in Dein E-Mail-Postfach zum Aktivieren Deines Zugangs.",
"passwordMismatch": "Die Passwörter stimmen nicht überein.",
"emailinuse": "Die E-Mail-Adresse wird bereits verwendet.",
"usernameinuse": "Der Benutzername ist nicht verfügbar."
"usernameinuse": "Der Benutzername ist nicht verfügbar.",
"validation": {
"invalidEmail": "Bitte eine gültige E-Mail-Adresse eingeben.",
"usernameTooShort": "Der Benutzername sollte mindestens 3 Zeichen haben.",
"passwordHint": "Mindestens 8 Zeichen.",
"passwordTooShort": "Das Passwort ist noch zu kurz."
}
}
}

View File

@@ -56,7 +56,8 @@
},
"language": {
"de": "Deutsch",
"en": "Englisch"
"en": "Englisch",
"ceb": "Bisaya"
},
"eyecolor": {
"blue": "Blau",
@@ -140,6 +141,8 @@
},
"account": {
"title": "Account",
"heroEyebrow": "Einstellungen",
"heroIntro": "Benutzername, E-Mail, Passwort und Sichtbarkeit an einer Stelle pflegen.",
"username": "Benutzername",
"email": "E-Mail-Adresse",
"newpassword": "Passwort",
@@ -149,6 +152,15 @@
"showinsearch": "In Usersuchen anzeigen",
"changeaction": "Benutzerdaten ändern",
"oldpassword": "Altes Passwort (benötigt)",
"validation": {
"newPasswordTooShort": "Das neue Passwort sollte mindestens 8 Zeichen haben.",
"passwordMismatch": "Die Passwörter stimmen nicht überein.",
"oldPasswordRequired": "Zum Passwortwechsel wird das aktuelle Passwort benötigt."
},
"feedback": {
"saved": "Account-Einstellungen erfolgreich gespeichert.",
"saveError": "Ein Fehler ist beim Speichern der Account-Einstellungen aufgetreten."
},
"adultAccessTitle": "Erotikbereich",
"adultAccessIntro": "Der Erotikbereich ist nur für volljährige Nutzer gedacht und wird zusätzlich durch Moderatoren freigeschaltet.",
"requestAdultVerification": "Freischaltung anfragen",
@@ -216,6 +228,10 @@
"AdultsOnly": "Nur Erwachsenen anzeigen",
"All": "Jedem zeigen"
},
"feedback": {
"updateError": "Änderung konnte nicht gespeichert werden.",
"visibilityUpdateError": "Sichtbarkeit konnte nicht aktualisiert werden."
},
"flirt": {
"title": "Flirt"
},