feat: Armarium full customization and 4-language i18n (v0.8.0)
Replaces Astro Rocket demo content with Armarium branding and adds complete DE/FR/IT/EN translations across all pages. Branding & content (v0.7.0): - Add horizontal SVG logo to navbar with currentColor dark mode support - Rewrite homepage with Armarium hero, 6 feature cards, trust bar, Zürich coat of arms SVG, and CTA; shared HomePage.astro component - Add privacy page (/datenschutz) with 6 Infomaniak certification cards and 8-section policy (ISO 27001:2022, Swiss Hosting, nDSG/GDPR, etc.) - Add legal notice page (/impressum) - Rewrite about, contact, 404 pages with Armarium content - Add features page (/projects) from projects content collection - Add language switcher dropdown (LanguageSwitcherDropdown.astro) - Add single launch blog post; remove all demo blog/project content - Set up i18n foundation: astro.config.mjs, ui.ts, utils.ts Full i18n (v0.8.0): - Add all pages in FR/IT/EN: about, contact, blog, features, privacy, legal notice — 28 locale variants total - Language switcher visible in every layout (PageLayout, BlogLayout, ProjectLayout, LandingLayout) with translated nav items - Locale-aware nav and footer hrefs via nav.*.href keys in ui.ts - Shared page components (AboutPage, ContactPage, FeaturesIndexPage, BlogIndexPage) accept locale prop; locale pages are 4-line wrappers - Extend content.config.ts locale enum with de and it Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+404
@@ -0,0 +1,404 @@
|
||||
export const languages = {
|
||||
de: { code: 'de', name: 'Deutsch', flag: '🇩🇪' },
|
||||
fr: { code: 'fr', name: 'Français', flag: '🇫🇷' },
|
||||
it: { code: 'it', name: 'Italiano', flag: '🇮🇹' },
|
||||
en: { code: 'en', name: 'English', flag: '🇬🇧' },
|
||||
} as const;
|
||||
|
||||
export type Locale = keyof typeof languages;
|
||||
export const defaultLocale: Locale = 'de';
|
||||
|
||||
export const ui = {
|
||||
de: {
|
||||
// Nav labels
|
||||
'nav.blog': 'Blog',
|
||||
'nav.features': 'Features',
|
||||
'nav.about': 'Über uns',
|
||||
'nav.contact': 'Kontakt',
|
||||
// Nav hrefs (locale-aware)
|
||||
'nav.blog.href': '/blog',
|
||||
'nav.features.href': '/projects',
|
||||
'nav.about.href': '/about',
|
||||
'nav.contact.href': '/contact',
|
||||
// Hero
|
||||
'hero.badge': 'Version 1.0 ist da',
|
||||
'hero.description': 'Behalte den Überblick über deine Finanzen. Erfasse Ausgaben, verwalte Budgets und erreiche deine Sparziele – einfach und übersichtlich.',
|
||||
'hero.register': 'Registrieren',
|
||||
'hero.login': 'Login',
|
||||
// Trust bar
|
||||
'trust.privacy': 'Datenschutz garantiert',
|
||||
'trust.free': 'Kostenlos starten',
|
||||
// Features section
|
||||
'features.badge': 'Features',
|
||||
'features.title': 'Alles was du brauchst',
|
||||
'features.description': 'Armarium vereint alle wichtigen Funktionen für ein solides Finanzmanagement in einer übersichtlichen App.',
|
||||
// Feature cards
|
||||
'f1.title': 'Budget-Übersicht',
|
||||
'f1.desc': 'Alle Einnahmen und Ausgaben auf einen Blick. Dein aktueller Kontostand immer im Griff.',
|
||||
'f2.title': 'Transaktionen erfassen',
|
||||
'f2.desc': 'Ausgaben und Einnahmen schnell erfassen, kategorisieren und filtern – für lückenlosen Überblick.',
|
||||
'f3.title': 'Kategorien & Berichte',
|
||||
'f3.desc': 'Eigene Kategorien definieren und Ausgaben analysieren. Verstehe, wohin dein Geld fliesst.',
|
||||
'f4.title': 'Mehrere Konten',
|
||||
'f4.desc': 'Verwalte Bankkonto, Kreditkarte und Bargeld getrennt – alles in einer App zusammengefasst.',
|
||||
'f5.title': 'Sparziele',
|
||||
'f5.desc': 'Setze dir finanzielle Ziele und verfolge deinen Fortschritt – Schritt für Schritt zum Ziel.',
|
||||
'f6.title': 'Sicher & Privat',
|
||||
'f6.desc': 'Deine Daten gehören dir. Kein Datenverkauf, kein Tracking – volle Kontrolle über deine Finanzdaten.',
|
||||
// CTA
|
||||
'cta.title': 'Bereit, dein Budget im Griff zu haben?',
|
||||
'cta.desc': 'Kostenlos registrieren und sofort loslegen. Keine Kreditkarte erforderlich.',
|
||||
'cta.register': 'Kostenlos registrieren',
|
||||
'cta.login': 'Bereits registriert? Login',
|
||||
// Footer
|
||||
'footer.tagline': 'Dein persönlicher Finanzbegleiter – Budget im Blick, Ziele im Fokus. 🇨🇭 Made in Zürich, Switzerland.',
|
||||
'footer.copyright': '© {year} Armarium. Alle Rechte vorbehalten.',
|
||||
'footer.app': 'App',
|
||||
'footer.start': 'Jetzt starten',
|
||||
'footer.register': 'Registrieren',
|
||||
'footer.legal': 'Rechtliches',
|
||||
'footer.privacy': 'Datenschutz',
|
||||
'footer.privacy.href': '/datenschutz',
|
||||
'footer.imprint': 'Impressum',
|
||||
'footer.imprint.href': '/impressum',
|
||||
// About page
|
||||
'about.badge': 'Über die App',
|
||||
'about.title.pre': 'Über ',
|
||||
'about.title.accent': 'Armarium',
|
||||
'about.desc': 'Armarium ist ein persönlicher Finanzbegleiter, der dir hilft, den Überblick über deine Finanzen zu behalten – einfach, sicher und ohne Ablenkung.',
|
||||
'about.mission.badge': 'Unsere Mission',
|
||||
'about.mission.title': 'Finanzen einfach im Griff',
|
||||
'about.mission.p1': 'Armarium entstand aus dem Wunsch, Finanzen ohne unnötige Komplexität zu verwalten. Keine überladenen Dashboards, kein Datendschungel – nur das Wesentliche, klar und übersichtlich.',
|
||||
'about.mission.p2': 'Deine Daten gehören dir. Kein Datenverkauf, kein Tracking, keine versteckten Kosten. Armarium ist ein Werkzeug, das für dich arbeitet – nicht umgekehrt.',
|
||||
'about.app.label': 'Finanz-App',
|
||||
'about.app.title': 'Armarium Suite',
|
||||
'about.app.desc': 'Budget, Transaktionen, Kategorien, Sparziele – alles in einer App. Verfügbar als Web-App, optimiert für Desktop und Mobile.',
|
||||
'about.privacy.label': 'Datenschutz',
|
||||
'about.privacy.title': 'Deine Daten, deine Kontrolle',
|
||||
'about.privacy.desc': 'Armarium speichert deine Finanzdaten sicher. Kein Verkauf an Dritte, keine Werbung, kein Tracking.',
|
||||
'about.values.badge': 'Unsere Werte',
|
||||
'about.values.title': 'Wofür Armarium steht',
|
||||
'about.v1.title': 'Transparenz',
|
||||
'about.v1.desc': 'Klare Übersichten ohne versteckte Kosten oder komplizierte Strukturen.',
|
||||
'about.v2.title': 'Einfachheit',
|
||||
'about.v2.desc': 'Funktionen, die du wirklich brauchst – ohne unnötigen Ballast.',
|
||||
'about.v3.title': 'Datenschutz',
|
||||
'about.v3.desc': 'Deine Finanzdaten sind privat. Punkt.',
|
||||
'about.v4.title': 'Made in Zürich',
|
||||
'about.v4.desc': 'Entwickelt in Zürich, Switzerland. Schweizer Qualität und Präzision.',
|
||||
'about.cta.title': 'Bereit loszulegen?',
|
||||
'about.cta.desc': 'Kostenlos registrieren und Armarium sofort nutzen.',
|
||||
'about.cta.back': 'Zurück zur Startseite',
|
||||
// Contact page
|
||||
'contact.badge': 'Kontakt',
|
||||
'contact.title': 'Schreib uns.',
|
||||
'contact.desc': 'Nutze das Formular oder kontaktiere uns direkt. Wir melden uns innerhalb eines Werktages.',
|
||||
'contact.form.title': 'Nachricht senden',
|
||||
'contact.direct.title': 'Direkt erreichen',
|
||||
'contact.direct.desc': 'Bevorzugst du einen direkten Kanal? Wähle was am besten passt.',
|
||||
'contact.follow': 'Drop us a line',
|
||||
// Blog index
|
||||
'blog.badge': 'Alle Beiträge',
|
||||
'blog.title': 'Blog',
|
||||
'blog.desc': 'Neuigkeiten, Tipps und Updates rund um Armarium und persönliche Finanzen.',
|
||||
'blog.featured': 'Hervorgehoben',
|
||||
'blog.allposts': 'Alle Beiträge',
|
||||
'blog.filter.label': 'Filter',
|
||||
'blog.filter.all': 'Alle Beiträge',
|
||||
'blog.noposts': 'Keine Beiträge gefunden',
|
||||
'blog.noposts.tag': 'Keine Beiträge für diesen Tag',
|
||||
'blog.follow.title': 'Auf dem Laufenden bleiben',
|
||||
'blog.follow.desc': 'Neue Beiträge, Tipps und Updates direkt von uns.',
|
||||
'blog.back': 'Zurück zum Blog',
|
||||
// Features index
|
||||
'features.cta.title': 'Bereit loszulegen?',
|
||||
'features.cta.desc': 'Kostenlos registrieren und alle Features sofort nutzen.',
|
||||
'features.cta.login': 'Login',
|
||||
'features.back': 'Zurück zu Features',
|
||||
},
|
||||
fr: {
|
||||
'nav.blog': 'Blog',
|
||||
'nav.features': 'Fonctionnalités',
|
||||
'nav.about': 'À propos',
|
||||
'nav.contact': 'Contact',
|
||||
'nav.blog.href': '/fr/blog',
|
||||
'nav.features.href': '/fr/features',
|
||||
'nav.about.href': '/fr/about',
|
||||
'nav.contact.href': '/fr/contact',
|
||||
'hero.badge': 'Version 1.0 disponible',
|
||||
'hero.description': 'Gardez le contrôle de vos finances. Enregistrez vos dépenses, gérez vos budgets et atteignez vos objectifs d\'épargne – simplement et clairement.',
|
||||
'hero.register': 'S\'inscrire',
|
||||
'hero.login': 'Connexion',
|
||||
'trust.privacy': 'Protection des données garantie',
|
||||
'trust.free': 'Commencer gratuitement',
|
||||
'features.badge': 'Fonctionnalités',
|
||||
'features.title': 'Tout ce qu\'il vous faut',
|
||||
'features.description': 'Armarium réunit toutes les fonctions essentielles pour une gestion financière solide dans une application claire.',
|
||||
'f1.title': 'Vue d\'ensemble',
|
||||
'f1.desc': 'Toutes les recettes et dépenses en un coup d\'œil. Votre solde actuel toujours sous contrôle.',
|
||||
'f2.title': 'Saisir des transactions',
|
||||
'f2.desc': 'Enregistrez rapidement dépenses et recettes, catégorisez et filtrez – pour une vue complète.',
|
||||
'f3.title': 'Catégories & rapports',
|
||||
'f3.desc': 'Définissez vos propres catégories et analysez vos dépenses. Comprenez où va votre argent.',
|
||||
'f4.title': 'Plusieurs comptes',
|
||||
'f4.desc': 'Gérez compte bancaire, carte de crédit et espèces séparément – tout regroupé dans une seule app.',
|
||||
'f5.title': 'Objectifs d\'épargne',
|
||||
'f5.desc': 'Fixez-vous des objectifs financiers et suivez votre progression – pas à pas vers le but.',
|
||||
'f6.title': 'Sûr & privé',
|
||||
'f6.desc': 'Vos données vous appartiennent. Pas de vente, pas de tracking – contrôle total sur vos données financières.',
|
||||
'cta.title': 'Prêt à maîtriser votre budget?',
|
||||
'cta.desc': 'Inscrivez-vous gratuitement et commencez immédiatement. Aucune carte de crédit requise.',
|
||||
'cta.register': 'S\'inscrire gratuitement',
|
||||
'cta.login': 'Déjà inscrit? Connexion',
|
||||
'footer.tagline': 'Votre assistant financier personnel – budget maîtrisé, objectifs en vue. 🇨🇭 Made in Zürich, Switzerland.',
|
||||
'footer.copyright': '© {year} Armarium. Tous droits réservés.',
|
||||
'footer.app': 'App',
|
||||
'footer.start': 'Commencer',
|
||||
'footer.register': 'S\'inscrire',
|
||||
'footer.legal': 'Légal',
|
||||
'footer.privacy': 'Confidentialité',
|
||||
'footer.privacy.href': '/fr/privacy',
|
||||
'footer.imprint': 'Mentions légales',
|
||||
'footer.imprint.href': '/fr/impressum',
|
||||
'about.badge': 'À propos de l\'app',
|
||||
'about.title.pre': 'À propos d\'',
|
||||
'about.title.accent': 'Armarium',
|
||||
'about.desc': 'Armarium est votre assistant financier personnel – simple, sécurisé et sans distraction.',
|
||||
'about.mission.badge': 'Notre mission',
|
||||
'about.mission.title': 'Vos finances simplement maîtrisées',
|
||||
'about.mission.p1': 'Armarium est né du souhait de gérer les finances sans complexité inutile. Pas de tableaux de bord surchargés, pas de jungle de données – seulement l\'essentiel, clair et structuré.',
|
||||
'about.mission.p2': 'Vos données vous appartiennent. Pas de vente de données, pas de tracking, pas de frais cachés. Armarium est un outil qui travaille pour vous – pas l\'inverse.',
|
||||
'about.app.label': 'Application financière',
|
||||
'about.app.title': 'Armarium Suite',
|
||||
'about.app.desc': 'Budget, transactions, catégories, objectifs d\'épargne – tout en une app. Disponible en web, optimisé pour desktop et mobile.',
|
||||
'about.privacy.label': 'Protection des données',
|
||||
'about.privacy.title': 'Vos données, votre contrôle',
|
||||
'about.privacy.desc': 'Armarium stocke vos données financières en toute sécurité. Pas de vente à des tiers, pas de publicité, pas de tracking.',
|
||||
'about.values.badge': 'Nos valeurs',
|
||||
'about.values.title': 'Ce que représente Armarium',
|
||||
'about.v1.title': 'Transparence',
|
||||
'about.v1.desc': 'Des aperçus clairs sans frais cachés ni structures compliquées.',
|
||||
'about.v2.title': 'Simplicité',
|
||||
'about.v2.desc': 'Les fonctionnalités dont vous avez vraiment besoin – sans superflu.',
|
||||
'about.v3.title': 'Protection des données',
|
||||
'about.v3.desc': 'Vos données financières sont privées. Point final.',
|
||||
'about.v4.title': 'Made in Zürich',
|
||||
'about.v4.desc': 'Développé à Zürich, Suisse. Qualité et précision helvétiques.',
|
||||
'about.cta.title': 'Prêt à commencer?',
|
||||
'about.cta.desc': 'Inscrivez-vous gratuitement et utilisez Armarium immédiatement.',
|
||||
'about.cta.back': 'Retour à l\'accueil',
|
||||
'contact.badge': 'Contact',
|
||||
'contact.title': 'Écrivez-nous.',
|
||||
'contact.desc': 'Utilisez le formulaire ou contactez-nous directement. Nous répondons dans un jour ouvrable.',
|
||||
'contact.form.title': 'Envoyer un message',
|
||||
'contact.direct.title': 'Nous rejoindre directement',
|
||||
'contact.direct.desc': 'Vous préférez un canal direct? Choisissez ce qui vous convient le mieux.',
|
||||
'contact.follow': 'Envoyez-nous un message',
|
||||
'blog.badge': 'Tous les articles',
|
||||
'blog.title': 'Blog',
|
||||
'blog.desc': 'Actualités, conseils et mises à jour sur Armarium et les finances personnelles.',
|
||||
'blog.featured': 'En vedette',
|
||||
'blog.allposts': 'Tous les articles',
|
||||
'blog.filter.label': 'Filtrer',
|
||||
'blog.filter.all': 'Tous les articles',
|
||||
'blog.noposts': 'Aucun article trouvé',
|
||||
'blog.noposts.tag': 'Aucun article pour ce tag',
|
||||
'blog.follow.title': 'Restez informé',
|
||||
'blog.follow.desc': 'Nouveaux articles, conseils et mises à jour directement de nous.',
|
||||
'blog.back': 'Retour au blog',
|
||||
'features.cta.title': 'Prêt à commencer?',
|
||||
'features.cta.desc': 'Inscrivez-vous gratuitement et utilisez toutes les fonctionnalités immédiatement.',
|
||||
'features.cta.login': 'Connexion',
|
||||
'features.back': 'Retour aux fonctionnalités',
|
||||
},
|
||||
it: {
|
||||
'nav.blog': 'Blog',
|
||||
'nav.features': 'Funzionalità',
|
||||
'nav.about': 'Chi siamo',
|
||||
'nav.contact': 'Contatto',
|
||||
'nav.blog.href': '/it/blog',
|
||||
'nav.features.href': '/it/features',
|
||||
'nav.about.href': '/it/about',
|
||||
'nav.contact.href': '/it/contact',
|
||||
'hero.badge': 'Versione 1.0 disponibile',
|
||||
'hero.description': 'Tieni sotto controllo le tue finanze. Registra le spese, gestisci i budget e raggiungi i tuoi obiettivi di risparmio – in modo semplice e chiaro.',
|
||||
'hero.register': 'Registrarsi',
|
||||
'hero.login': 'Accedi',
|
||||
'trust.privacy': 'Privacy garantita',
|
||||
'trust.free': 'Inizia gratuitamente',
|
||||
'features.badge': 'Funzionalità',
|
||||
'features.title': 'Tutto ciò di cui hai bisogno',
|
||||
'features.description': 'Armarium riunisce tutte le funzioni essenziali per una gestione finanziaria solida in un\'app chiara.',
|
||||
'f1.title': 'Panoramica del budget',
|
||||
'f1.desc': 'Tutte le entrate e le uscite in un colpo d\'occhio. Il tuo saldo attuale sempre sotto controllo.',
|
||||
'f2.title': 'Registrare transazioni',
|
||||
'f2.desc': 'Registra rapidamente spese ed entrate, categorizza e filtra – per una panoramica completa.',
|
||||
'f3.title': 'Categorie & report',
|
||||
'f3.desc': 'Definisci le tue categorie e analizza le spese. Capisce dove vanno i tuoi soldi.',
|
||||
'f4.title': 'Più conti',
|
||||
'f4.desc': 'Gestisci conto bancario, carta di credito e contanti separatamente – tutto in un\'unica app.',
|
||||
'f5.title': 'Obiettivi di risparmio',
|
||||
'f5.desc': 'Fissa obiettivi finanziari e monitora i tuoi progressi – passo dopo passo verso il traguardo.',
|
||||
'f6.title': 'Sicuro & privato',
|
||||
'f6.desc': 'I tuoi dati sono tuoi. Nessuna vendita, nessun tracking – pieno controllo sui tuoi dati finanziari.',
|
||||
'cta.title': 'Pronto a gestire il tuo budget?',
|
||||
'cta.desc': 'Registrati gratuitamente e inizia subito. Nessuna carta di credito richiesta.',
|
||||
'cta.register': 'Registrarsi gratuitamente',
|
||||
'cta.login': 'Già registrato? Accedi',
|
||||
'footer.tagline': 'Il tuo assistente finanziario personale – budget sotto controllo, obiettivi in vista. 🇨🇭 Made in Zürich, Switzerland.',
|
||||
'footer.copyright': '© {year} Armarium. Tutti i diritti riservati.',
|
||||
'footer.app': 'App',
|
||||
'footer.start': 'Inizia',
|
||||
'footer.register': 'Registrarsi',
|
||||
'footer.legal': 'Legale',
|
||||
'footer.privacy': 'Privacy',
|
||||
'footer.privacy.href': '/it/privacy',
|
||||
'footer.imprint': 'Note legali',
|
||||
'footer.imprint.href': '/it/impressum',
|
||||
'about.badge': 'Sull\'app',
|
||||
'about.title.pre': 'Chi siamo — ',
|
||||
'about.title.accent': 'Armarium',
|
||||
'about.desc': 'Armarium è il tuo assistente finanziario personale – semplice, sicuro e senza distrazioni.',
|
||||
'about.mission.badge': 'La nostra missione',
|
||||
'about.mission.title': 'Finanze semplici e chiare',
|
||||
'about.mission.p1': 'Armarium è nato dal desiderio di gestire le finanze senza complessità inutili. Niente dashboard sovraccariche, niente giungla di dati – solo l\'essenziale, chiaro e ordinato.',
|
||||
'about.mission.p2': 'I tuoi dati sono tuoi. Nessuna vendita di dati, nessun tracking, nessun costo nascosto. Armarium è uno strumento che lavora per te – non il contrario.',
|
||||
'about.app.label': 'App finanziaria',
|
||||
'about.app.title': 'Armarium Suite',
|
||||
'about.app.desc': 'Budget, transazioni, categorie, obiettivi di risparmio – tutto in un\'unica app. Disponibile come web app, ottimizzata per desktop e mobile.',
|
||||
'about.privacy.label': 'Privacy',
|
||||
'about.privacy.title': 'I tuoi dati, il tuo controllo',
|
||||
'about.privacy.desc': 'Armarium archivia i tuoi dati finanziari in modo sicuro. Nessuna vendita a terzi, nessuna pubblicità, nessun tracking.',
|
||||
'about.values.badge': 'I nostri valori',
|
||||
'about.values.title': 'I valori di Armarium',
|
||||
'about.v1.title': 'Trasparenza',
|
||||
'about.v1.desc': 'Panoramiche chiare senza costi nascosti o strutture complicate.',
|
||||
'about.v2.title': 'Semplicità',
|
||||
'about.v2.desc': 'Le funzionalità di cui hai davvero bisogno – senza inutile complessità.',
|
||||
'about.v3.title': 'Privacy',
|
||||
'about.v3.desc': 'I tuoi dati finanziari sono privati. Punto.',
|
||||
'about.v4.title': 'Made in Zürich',
|
||||
'about.v4.desc': 'Sviluppato a Zurigo, Svizzera. Qualità e precisione svizzere.',
|
||||
'about.cta.title': 'Pronto per iniziare?',
|
||||
'about.cta.desc': 'Registrati gratuitamente e usa Armarium subito.',
|
||||
'about.cta.back': 'Torna alla home',
|
||||
'contact.badge': 'Contatto',
|
||||
'contact.title': 'Scrivici.',
|
||||
'contact.desc': 'Usa il modulo o contattaci direttamente. Rispondiamo entro un giorno lavorativo.',
|
||||
'contact.form.title': 'Invia un messaggio',
|
||||
'contact.direct.title': 'Contattaci direttamente',
|
||||
'contact.direct.desc': 'Preferisci un canale diretto? Scegli quello che ti conviene di più.',
|
||||
'contact.follow': 'Scrivici',
|
||||
'blog.badge': 'Tutti gli articoli',
|
||||
'blog.title': 'Blog',
|
||||
'blog.desc': 'Notizie, suggerimenti e aggiornamenti su Armarium e le finanze personali.',
|
||||
'blog.featured': 'In evidenza',
|
||||
'blog.allposts': 'Tutti gli articoli',
|
||||
'blog.filter.label': 'Filtra',
|
||||
'blog.filter.all': 'Tutti gli articoli',
|
||||
'blog.noposts': 'Nessun articolo trovato',
|
||||
'blog.noposts.tag': 'Nessun articolo per questo tag',
|
||||
'blog.follow.title': 'Rimani aggiornato',
|
||||
'blog.follow.desc': 'Nuovi articoli, suggerimenti e aggiornamenti direttamente da noi.',
|
||||
'blog.back': 'Torna al blog',
|
||||
'features.cta.title': 'Pronto per iniziare?',
|
||||
'features.cta.desc': 'Registrati gratuitamente e usa tutte le funzionalità subito.',
|
||||
'features.cta.login': 'Accedi',
|
||||
'features.back': 'Torna alle funzionalità',
|
||||
},
|
||||
en: {
|
||||
'nav.blog': 'Blog',
|
||||
'nav.features': 'Features',
|
||||
'nav.about': 'About',
|
||||
'nav.contact': 'Contact',
|
||||
'nav.blog.href': '/en/blog',
|
||||
'nav.features.href': '/en/features',
|
||||
'nav.about.href': '/en/about',
|
||||
'nav.contact.href': '/en/contact',
|
||||
'hero.badge': 'Version 1.0 is here',
|
||||
'hero.description': 'Keep track of your finances. Record expenses, manage budgets and reach your savings goals – simply and clearly.',
|
||||
'hero.register': 'Sign up',
|
||||
'hero.login': 'Login',
|
||||
'trust.privacy': 'Privacy guaranteed',
|
||||
'trust.free': 'Start for free',
|
||||
'features.badge': 'Features',
|
||||
'features.title': 'Everything you need',
|
||||
'features.description': 'Armarium brings together all the essential functions for solid financial management in one clear app.',
|
||||
'f1.title': 'Budget Overview',
|
||||
'f1.desc': 'All income and expenses at a glance. Your current balance always under control.',
|
||||
'f2.title': 'Record Transactions',
|
||||
'f2.desc': 'Quickly record income and expenses, categorize and filter – for a complete overview.',
|
||||
'f3.title': 'Categories & Reports',
|
||||
'f3.desc': 'Define your own categories and analyze spending. Understand where your money goes.',
|
||||
'f4.title': 'Multiple Accounts',
|
||||
'f4.desc': 'Manage bank account, credit card and cash separately – all combined in one app.',
|
||||
'f5.title': 'Savings Goals',
|
||||
'f5.desc': 'Set financial goals and track your progress – step by step towards the target.',
|
||||
'f6.title': 'Secure & Private',
|
||||
'f6.desc': 'Your data belongs to you. No data selling, no tracking – full control over your financial data.',
|
||||
'cta.title': 'Ready to take control of your budget?',
|
||||
'cta.desc': 'Sign up for free and get started immediately. No credit card required.',
|
||||
'cta.register': 'Sign up for free',
|
||||
'cta.login': 'Already registered? Login',
|
||||
'footer.tagline': 'Your personal finance companion – budget in check, goals in focus. 🇨🇭 Made in Zürich, Switzerland.',
|
||||
'footer.copyright': '© {year} Armarium. All rights reserved.',
|
||||
'footer.app': 'App',
|
||||
'footer.start': 'Get started',
|
||||
'footer.register': 'Sign up',
|
||||
'footer.legal': 'Legal',
|
||||
'footer.privacy': 'Privacy Policy',
|
||||
'footer.privacy.href': '/en/privacy',
|
||||
'footer.imprint': 'Legal Notice',
|
||||
'footer.imprint.href': '/en/impressum',
|
||||
'about.badge': 'About the app',
|
||||
'about.title.pre': 'About ',
|
||||
'about.title.accent': 'Armarium',
|
||||
'about.desc': 'Armarium is your personal finance companion – simple, secure and distraction-free.',
|
||||
'about.mission.badge': 'Our mission',
|
||||
'about.mission.title': 'Finances made simple',
|
||||
'about.mission.p1': 'Armarium was born from the desire to manage finances without unnecessary complexity. No overloaded dashboards, no data jungle – just the essentials, clear and structured.',
|
||||
'about.mission.p2': 'Your data belongs to you. No data selling, no tracking, no hidden costs. Armarium is a tool that works for you – not the other way around.',
|
||||
'about.app.label': 'Finance App',
|
||||
'about.app.title': 'Armarium Suite',
|
||||
'about.app.desc': 'Budget, transactions, categories, savings goals – all in one app. Available as a web app, optimized for desktop and mobile.',
|
||||
'about.privacy.label': 'Privacy',
|
||||
'about.privacy.title': 'Your data, your control',
|
||||
'about.privacy.desc': 'Armarium stores your financial data securely. No selling to third parties, no advertising, no tracking.',
|
||||
'about.values.badge': 'Our values',
|
||||
'about.values.title': 'What Armarium stands for',
|
||||
'about.v1.title': 'Transparency',
|
||||
'about.v1.desc': 'Clear overviews without hidden costs or complicated structures.',
|
||||
'about.v2.title': 'Simplicity',
|
||||
'about.v2.desc': 'The features you actually need – without unnecessary ballast.',
|
||||
'about.v3.title': 'Privacy',
|
||||
'about.v3.desc': 'Your financial data is private. Period.',
|
||||
'about.v4.title': 'Made in Zürich',
|
||||
'about.v4.desc': 'Developed in Zürich, Switzerland. Swiss quality and precision.',
|
||||
'about.cta.title': 'Ready to get started?',
|
||||
'about.cta.desc': 'Sign up for free and start using Armarium right away.',
|
||||
'about.cta.back': 'Back to home',
|
||||
'contact.badge': 'Contact',
|
||||
'contact.title': 'Write to us.',
|
||||
'contact.desc': 'Use the form or contact us directly. We respond within one business day.',
|
||||
'contact.form.title': 'Send a message',
|
||||
'contact.direct.title': 'Reach us directly',
|
||||
'contact.direct.desc': 'Prefer a direct channel? Choose what works best for you.',
|
||||
'contact.follow': 'Drop us a line',
|
||||
'blog.badge': 'All posts',
|
||||
'blog.title': 'Blog',
|
||||
'blog.desc': 'News, tips and updates about Armarium and personal finance.',
|
||||
'blog.featured': 'Featured',
|
||||
'blog.allposts': 'All posts',
|
||||
'blog.filter.label': 'Filter',
|
||||
'blog.filter.all': 'All posts',
|
||||
'blog.noposts': 'No posts found',
|
||||
'blog.noposts.tag': 'No posts found for this tag',
|
||||
'blog.follow.title': 'Stay in the loop',
|
||||
'blog.follow.desc': 'New articles, tips and updates directly from us.',
|
||||
'blog.back': 'Back to Blog',
|
||||
'features.cta.title': 'Ready to get started?',
|
||||
'features.cta.desc': 'Sign up for free and use all features right away.',
|
||||
'features.cta.login': 'Login',
|
||||
'features.back': 'Back to Features',
|
||||
},
|
||||
} as const satisfies Record<Locale, Record<string, string>>;
|
||||
@@ -0,0 +1,28 @@
|
||||
import { ui, defaultLocale, type Locale } from './ui';
|
||||
|
||||
export function useTranslations(locale: Locale) {
|
||||
return function t(key: keyof typeof ui[typeof defaultLocale]): string {
|
||||
const localeUi = ui[locale] as Record<string, string>;
|
||||
const defaultUi = ui[defaultLocale] as Record<string, string>;
|
||||
return localeUi[key] ?? defaultUi[key] ?? key;
|
||||
};
|
||||
}
|
||||
|
||||
/** Returns the path for the given locale, stripping/adding the locale prefix. */
|
||||
export function getLocalePath(targetLocale: Locale, currentPath: string): string {
|
||||
const nonDefaultLocales: Locale[] = ['fr', 'it', 'en'];
|
||||
|
||||
let basePath = currentPath;
|
||||
for (const locale of nonDefaultLocales) {
|
||||
if (currentPath.startsWith(`/${locale}/`)) {
|
||||
basePath = currentPath.slice(locale.length + 1);
|
||||
break;
|
||||
} else if (currentPath === `/${locale}`) {
|
||||
basePath = '/';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (targetLocale === defaultLocale) return basePath || '/';
|
||||
return basePath === '/' ? `/${targetLocale}/` : `/${targetLocale}${basePath}`;
|
||||
}
|
||||
Reference in New Issue
Block a user