Add Impressum with attribution + expand language dropdown to 26 languages
Impressum page (/impressum) with rechtskonform attribution for: - Wiktionary/Kaikki.org (CC BY-SA 3.0 + GFDL) — dictionary data - ipa-dict (MIT) — IPA phonetic transcriptions - Wikimedia Commons (CC BY-SA) — vocabulary images - Piper TTS (MIT) — speech synthesis - pyspellchecker (MIT) — spell checking Language dropdown expanded from 7 to 26 European languages: DE, EN, TR, AR, UK, RU, PL, FR, ES, IT, PT, NL, RO, EL, BG, HR, CS, HU, SV, DA, FI, SK, SL, LT, LV, ET. Dropdown now shows full name: "TR — Turkce", "AR — العربية", etc. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,13 +10,35 @@ interface LanguageSwitcherProps {
|
||||
}
|
||||
|
||||
const LANGS = [
|
||||
{ code: 'de', label: 'DE' },
|
||||
{ code: 'en', label: 'EN' },
|
||||
{ code: 'tr', label: 'TR' },
|
||||
{ code: 'ar', label: 'AR' },
|
||||
{ code: 'uk', label: 'UK' },
|
||||
{ code: 'ru', label: 'RU' },
|
||||
{ code: 'pl', label: 'PL' },
|
||||
// Main languages
|
||||
{ code: 'de', label: 'DE', name: 'Deutsch' },
|
||||
{ code: 'en', label: 'EN', name: 'English' },
|
||||
// Migration languages
|
||||
{ code: 'tr', label: 'TR', name: 'Turkce' },
|
||||
{ code: 'ar', label: 'AR', name: 'العربية' },
|
||||
{ code: 'uk', label: 'UK', name: 'Українська' },
|
||||
{ code: 'ru', label: 'RU', name: 'Русский' },
|
||||
{ code: 'pl', label: 'PL', name: 'Polski' },
|
||||
// European languages
|
||||
{ code: 'fr', label: 'FR', name: 'Francais' },
|
||||
{ code: 'es', label: 'ES', name: 'Espanol' },
|
||||
{ code: 'it', label: 'IT', name: 'Italiano' },
|
||||
{ code: 'pt', label: 'PT', name: 'Portugues' },
|
||||
{ code: 'nl', label: 'NL', name: 'Nederlands' },
|
||||
{ code: 'ro', label: 'RO', name: 'Romana' },
|
||||
{ code: 'el', label: 'EL', name: 'Ελληνικά' },
|
||||
{ code: 'bg', label: 'BG', name: 'Български' },
|
||||
{ code: 'hr', label: 'HR', name: 'Hrvatski' },
|
||||
{ code: 'cs', label: 'CS', name: 'Cestina' },
|
||||
{ code: 'hu', label: 'HU', name: 'Magyar' },
|
||||
{ code: 'sv', label: 'SV', name: 'Svenska' },
|
||||
{ code: 'da', label: 'DA', name: 'Dansk' },
|
||||
{ code: 'fi', label: 'FI', name: 'Suomi' },
|
||||
{ code: 'sk', label: 'SK', name: 'Slovencina' },
|
||||
{ code: 'sl', label: 'SL', name: 'Slovenscina' },
|
||||
{ code: 'lt', label: 'LT', name: 'Lietuviu' },
|
||||
{ code: 'lv', label: 'LV', name: 'Latviesu' },
|
||||
{ code: 'et', label: 'ET', name: 'Eesti' },
|
||||
]
|
||||
|
||||
/**
|
||||
@@ -33,7 +55,7 @@ export function LanguageSwitcher({ currentLang, onLangChange, isDark, compact =
|
||||
isDark ? 'bg-white/10 text-white/70' : 'bg-slate-100 text-slate-600'
|
||||
}`}
|
||||
>
|
||||
{LANGS.map(l => <option key={l.code} value={l.code}>{l.label}</option>)}
|
||||
{LANGS.map(l => <option key={l.code} value={l.code}>{l.label} — {l.name}</option>)}
|
||||
</select>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user