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

@@ -10,76 +10,76 @@
class="app-section-bar__back"
@click="navigateBack"
>
Zurück
{{ $t('general.general.back') }}
</button>
</section>
</template>
<script>
const SECTION_LABELS = [
{ test: (path) => path.startsWith('/falukant'), label: 'Falukant' },
{ test: (path) => path.startsWith('/socialnetwork/vocab'), label: 'Vokabeltrainer' },
{ test: (path) => path.startsWith('/socialnetwork/forum'), label: 'Forum' },
{ test: (path) => path.startsWith('/socialnetwork'), label: 'Community' },
{ test: (path) => path.startsWith('/friends'), label: 'Community' },
{ test: (path) => path.startsWith('/settings'), label: 'Einstellungen' },
{ test: (path) => path.startsWith('/admin'), label: 'Administration' },
{ test: (path) => path.startsWith('/minigames'), label: 'Minispiele' },
{ test: (path) => path.startsWith('/personal'), label: 'Persönlich' },
{ test: (path) => path.startsWith('/blogs'), label: 'Blog' }
{ test: (path) => path.startsWith('/falukant'), labelKey: 'general.sectionBar.sections.falukant' },
{ test: (path) => path.startsWith('/socialnetwork/vocab'), labelKey: 'general.sectionBar.sections.vocab' },
{ test: (path) => path.startsWith('/socialnetwork/forum'), labelKey: 'general.sectionBar.sections.forum' },
{ test: (path) => path.startsWith('/socialnetwork'), labelKey: 'general.sectionBar.sections.community' },
{ test: (path) => path.startsWith('/friends'), labelKey: 'general.sectionBar.sections.community' },
{ test: (path) => path.startsWith('/settings'), labelKey: 'general.sectionBar.sections.settings' },
{ test: (path) => path.startsWith('/admin'), labelKey: 'general.sectionBar.sections.administration' },
{ test: (path) => path.startsWith('/minigames'), labelKey: 'general.sectionBar.sections.minigames' },
{ test: (path) => path.startsWith('/personal'), labelKey: 'general.sectionBar.sections.personal' },
{ test: (path) => path.startsWith('/blogs'), labelKey: 'general.sectionBar.sections.blog' }
];
const TITLE_MAP = {
Friends: 'Freunde',
Guestbook: 'Gästebuch',
'Search users': 'Suche',
Gallery: 'Galerie',
Forum: 'Forum',
ForumTopic: 'Thema',
Diary: 'Tagebuch',
VocabTrainer: 'Sprachen',
VocabNewLanguage: 'Neue Sprache',
VocabSubscribe: 'Sprache abonnieren',
VocabLanguage: 'Sprache',
VocabChapter: 'Kapitel',
VocabCourses: 'Kurse',
VocabCourse: 'Kurs',
VocabLesson: 'Lektion',
FalukantCreate: 'Charakter erstellen',
FalukantOverview: 'Übersicht',
BranchView: 'Niederlassung',
MoneyHistoryView: 'Geldverlauf',
FalukantFamily: 'Familie',
HouseView: 'Haus',
NobilityView: 'Adel',
ReputationView: 'Ansehen',
ChurchView: 'Kirche',
EducationView: 'Bildung',
BankView: 'Bank',
DirectorView: 'Direktoren',
HealthView: 'Gesundheit',
PoliticsView: 'Politik',
UndergroundView: 'Untergrund',
'Personal settings': 'Persönliche Daten',
'View settings': 'Ansicht',
'Sexuality settings': 'Sexualität',
'Flirt settings': 'Flirt',
'Account settings': 'Account',
'Language assistant settings': 'Sprachassistent',
Interests: 'Interessen',
AdminInterests: 'Interessenverwaltung',
AdminUsers: 'Benutzer',
AdminUserStatistics: 'Benutzerstatistik',
AdminContacts: 'Kontaktanfragen',
AdminUserRights: 'Rechte',
AdminForums: 'Forumverwaltung',
AdminChatRooms: 'Chaträume',
AdminFalukantEditUserView: 'Falukant-Nutzer',
AdminFalukantMapRegionsView: 'Falukant-Karte',
AdminFalukantCreateNPCView: 'NPC erstellen',
AdminMinigames: 'Match3-Verwaltung',
AdminTaxiTools: 'Taxi-Tools',
AdminServicesStatus: 'Service-Status'
Friends: 'general.sectionBar.titles.friends',
Guestbook: 'general.sectionBar.titles.guestbook',
'Search users': 'general.sectionBar.titles.search',
Gallery: 'general.sectionBar.titles.gallery',
Forum: 'general.sectionBar.titles.forum',
ForumTopic: 'general.sectionBar.titles.topic',
Diary: 'general.sectionBar.titles.diary',
VocabTrainer: 'general.sectionBar.titles.languages',
VocabNewLanguage: 'general.sectionBar.titles.newLanguage',
VocabSubscribe: 'general.sectionBar.titles.subscribeLanguage',
VocabLanguage: 'general.sectionBar.titles.language',
VocabChapter: 'general.sectionBar.titles.chapter',
VocabCourses: 'general.sectionBar.titles.courses',
VocabCourse: 'general.sectionBar.titles.course',
VocabLesson: 'general.sectionBar.titles.lesson',
FalukantCreate: 'general.sectionBar.titles.createCharacter',
FalukantOverview: 'general.sectionBar.titles.overview',
BranchView: 'general.sectionBar.titles.branch',
MoneyHistoryView: 'general.sectionBar.titles.moneyHistory',
FalukantFamily: 'general.sectionBar.titles.family',
HouseView: 'general.sectionBar.titles.house',
NobilityView: 'general.sectionBar.titles.nobility',
ReputationView: 'general.sectionBar.titles.reputation',
ChurchView: 'general.sectionBar.titles.church',
EducationView: 'general.sectionBar.titles.education',
BankView: 'general.sectionBar.titles.bank',
DirectorView: 'general.sectionBar.titles.directors',
HealthView: 'general.sectionBar.titles.health',
PoliticsView: 'general.sectionBar.titles.politics',
UndergroundView: 'general.sectionBar.titles.underground',
'Personal settings': 'general.sectionBar.titles.personalSettings',
'View settings': 'general.sectionBar.titles.viewSettings',
'Sexuality settings': 'general.sectionBar.titles.sexualitySettings',
'Flirt settings': 'general.sectionBar.titles.flirtSettings',
'Account settings': 'general.sectionBar.titles.accountSettings',
'Language assistant settings': 'general.sectionBar.titles.languageAssistantSettings',
Interests: 'general.sectionBar.titles.interests',
AdminInterests: 'general.sectionBar.titles.adminInterests',
AdminUsers: 'general.sectionBar.titles.adminUsers',
AdminUserStatistics: 'general.sectionBar.titles.adminUserStatistics',
AdminContacts: 'general.sectionBar.titles.adminContacts',
AdminUserRights: 'general.sectionBar.titles.adminUserRights',
AdminForums: 'general.sectionBar.titles.adminForums',
AdminChatRooms: 'general.sectionBar.titles.adminChatRooms',
AdminFalukantEditUserView: 'general.sectionBar.titles.adminFalukantUsers',
AdminFalukantMapRegionsView: 'general.sectionBar.titles.adminFalukantMap',
AdminFalukantCreateNPCView: 'general.sectionBar.titles.adminCreateNpc',
AdminMinigames: 'general.sectionBar.titles.adminMinigames',
AdminTaxiTools: 'general.sectionBar.titles.adminTaxiTools',
AdminServicesStatus: 'general.sectionBar.titles.adminServicesStatus'
};
export default {
@@ -93,10 +93,11 @@ export default {
},
sectionLabel() {
const found = SECTION_LABELS.find((entry) => entry.test(this.routePath));
return found?.label || 'Bereich';
return this.$t(found?.labelKey || 'general.sectionBar.sections.default');
},
pageTitle() {
return TITLE_MAP[this.$route?.name] || this.sectionLabel;
const titleKey = TITLE_MAP[this.$route?.name];
return titleKey ? this.$t(titleKey) : this.sectionLabel;
},
backTarget() {
const params = this.$route?.params || {};

View File

@@ -173,13 +173,14 @@ export default {
this.fetchSettings();
} catch (err) {
console.error('Error updating setting:', err);
showApiError(this, err, 'Änderung konnte nicht gespeichert werden.');
showApiError(this, err, 'tr:settings.feedback.updateError');
}
},
languagesList() {
return [
{ value: 'en', captionTr: 'settings.personal.languages.en' },
{ value: 'de', captionTr: 'settings.personal.languages.de' },
{ value: 'en', captionTr: 'settings.personal.language.en' },
{ value: 'de', captionTr: 'settings.personal.language.de' },
{ value: 'ceb', captionTr: 'settings.personal.language.ceb' },
];
},
convertToInt(value) {
@@ -207,7 +208,7 @@ export default {
});
} catch (err) {
console.error('Error updating visibility:', err);
showApiError(this, err, 'Sichtbarkeit konnte nicht aktualisiert werden.');
showApiError(this, err, 'tr:settings.feedback.visibilityUpdateError');
}
},
openContactDialog() {