feat(i18n): Deutsch/Englisch, Sprachknopf und GitHub-Link in der Kopfzeile
- i18n-Kern im gettext-Stil (t/msg, Wörterbuch en.ts); Startsprache aus localStorage, sonst Browsersprache; <html lang> setzt auch das Inline-Skript in index.html. Ein Test prüft t()/msg() und en.ts in beide Richtungen. - Kopfzeile: GitHub-Link und Sprachknopf (Zielsprache, Beschriftung und lang in der Zielsprache), Fußzeile aus mountFooter, Banner und Seitentitel übersetzt, statisches index.html englisch. - Sprachwechsel ohne Neuladen (main.ts): Kopfzeile, Banner, Konto-Menü und Fußzeile neu aufgebaut, rerender() des Routers baut die Seite neu auf, der Editor-Store bleibt; der Appwrite-Client bekommt die Sprache. - Kopfzeile bleibt in einer Zeile: einzeilig ab 1000 px (vorher 900), GitHub-Text ab 1230 px, auf schmalen Telefonen steht „Anmelden“ neben der Suche. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9455013833
commit
e1fb632cdd
21 files changed
+1321
-66
No files matched your search
@@ -0,0 +1,33 @@
|
||||
// Englisches Wörterbuch: deutscher Text (Schlüssel) → Englisch, gelesen von t() in i18n.ts. Fehlt ein Eintrag, bleibt der deutsche Text.
|
||||
// Jeder Eintrag gehört zu einem t('…') oder msg('…') im Quelltext; coverage.test.ts prüft es in beide Richtungen.
|
||||
// Englisch: kurz, freundlich, US-Schreibweise. „AirCard-IOS“ ist der Name dieser Seite, „AirCard-iOS“ der Name der App.
|
||||
export const EN: Readonly<Record<string, string>> = {
|
||||
// Seitentitel (pages/router.ts)
|
||||
'AirCard-IOS – Kartendesigns für Apple Wallet': 'AirCard-IOS – Card designs for Apple Wallet',
|
||||
'Gestalten – AirCard-IOS': 'Create – AirCard-IOS',
|
||||
'Meine Karten – AirCard-IOS': 'My cards – AirCard-IOS',
|
||||
'Community – AirCard-IOS': 'Community – AirCard-IOS',
|
||||
'Passwort neu setzen – AirCard-IOS': 'Set new password – AirCard-IOS',
|
||||
|
||||
// Kopfzeile (shell/header.ts)
|
||||
'Hauptnavigation': 'Main navigation',
|
||||
'Community': 'Community',
|
||||
'Gestalten': 'Create',
|
||||
'Meine Karten': 'My cards',
|
||||
'Unterstützen': 'Support us',
|
||||
'Titel, Tags oder Herausgeber': 'Title, tags or issuer',
|
||||
'Community-Karten durchsuchen': 'Search community cards',
|
||||
'Suchen': 'Search',
|
||||
'Hell/Dunkel umschalten': 'Toggle light/dark mode',
|
||||
'Menü': 'Menu',
|
||||
'AirCard-iOS auf GitHub': 'AirCard-iOS on GitHub',
|
||||
|
||||
// Spenden-Banner (shell/donate-banner.ts)
|
||||
'Banner schließen': 'Close banner',
|
||||
'Gefällt dir AirCard-IOS? Spendier uns einen Kaffee – damit das Projekt weiterläuft.':
|
||||
'Enjoying AirCard-IOS? Buy us a coffee – it keeps the project running.',
|
||||
|
||||
// Fußzeile (shell/footer.ts)
|
||||
'Inoffizielle Community-Seite für die App AirCard-iOS – kein Teil des Original-Projekts und nicht mit Apple verbunden. Logos und Motive stammen von Nutzern; alle Marken gehören ihren Inhabern.':
|
||||
'Unofficial community site for the AirCard-iOS app – not part of the original project and not affiliated with Apple. Logos and artwork are uploaded by users; all trademarks belong to their owners.',
|
||||
};
|
||||
Reference in new issue
Block a user