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

@@ -2,23 +2,23 @@
<div class="blog-list">
<section class="blog-list__hero surface-card">
<div>
<span class="blog-list__kicker">Community-Blogs</span>
<h1>Blogs</h1>
<p>Artikel, Projektstände und persönliche Einblicke aus der YourPart-Community.</p>
<span class="blog-list__kicker">{{ $t('blog.list.eyebrow') }}</span>
<h1>{{ $t('blog.list.title') }}</h1>
<p>{{ $t('blog.list.intro') }}</p>
</div>
<div class="toolbar">
<router-link v-if="$store.getters.isLoggedIn" class="btn" to="/blogs/create">Neuen Blog erstellen</router-link>
<router-link v-if="$store.getters.isLoggedIn" class="btn" to="/blogs/create">{{ $t('blog.list.create') }}</router-link>
</div>
</section>
<div v-if="loading" class="blog-list__state surface-card">Laden</div>
<div v-else-if="!blogs.length" class="blog-list__state surface-card">Keine Blogs gefunden.</div>
<div v-if="loading" class="blog-list__state surface-card">{{ $t('blog.list.loading') }}</div>
<div v-else-if="!blogs.length" class="blog-list__state surface-card">{{ $t('blog.list.empty') }}</div>
<div v-else class="blog-grid">
<article v-for="b in blogs" :key="b.id" class="blog-card surface-card">
<div class="blog-card__meta">von {{ b.owner?.username || 'Unbekannt' }}</div>
<div class="blog-card__meta">{{ $t('blog.list.by') }} {{ b.owner?.username || $t('blog.list.unknownAuthor') }}</div>
<h2><router-link :to="blogUrl(b)">{{ b.title }}</router-link></h2>
<p>{{ blogExcerpt(b) }}</p>
<router-link class="blog-card__link" :to="blogUrl(b)">Zum Blog</router-link>
<router-link class="blog-card__link" :to="blogUrl(b)">{{ $t('blog.list.open') }}</router-link>
</article>
</div>
</div>
@@ -39,7 +39,7 @@ export default {
return slug ? `/blogs/${encodeURIComponent(slug)}` : `/blogs/${blog.id}`;
},
blogExcerpt(blog) {
const source = blog?.description || 'Öffentliche Einträge, Gedanken und Projektstände aus der Community.';
const source = blog?.description || this.$t('blog.list.fallbackExcerpt');
return source.length > 150 ? `${source.slice(0, 147)}...` : source;
},
},