diff --git a/landing/app/app.vue b/landing/app/app.vue
index ab771ef..89e4b3c 100644
--- a/landing/app/app.vue
+++ b/landing/app/app.vue
@@ -1,7 +1,7 @@
- Zum Hauptinhalt springen
+ {{ $t('common.skipToContent') }}
@@ -40,6 +40,14 @@
/>
+
- Informiert bleiben
+ {{ $t('common.stayInformed') }}
@@ -64,7 +72,7 @@
/>
- Informiert bleiben
+ {{ $t('common.stayInformed') }}
@@ -90,7 +98,7 @@
LegalConsentHub
- Digitale Mitbestimmung für IT- und KI-Systeme. Strukturierte Prozesse, revisionssichere Dokumentation.
+ {{ $t('footer.brandDescription') }}
-
Navigation
+
{{ $t('common.navigation') }}
-
Rechtliches
+
{{ $t('common.legal') }}
- © {{ new Date().getFullYear() }} LegalConsentHub. Alle Rechte vorbehalten.
+ © {{ new Date().getFullYear() }} LegalConsentHub. {{ $t('common.allRightsReserved') }}
- Hosted in Germany
+ {{ $t('common.hostedInGermany') }}
- DSGVO-konform
+ {{ $t('common.gdprCompliant') }}
@@ -170,6 +178,26 @@
diff --git a/landing/app/components/landing/BenefitsCompany.vue b/landing/app/components/landing/BenefitsCompany.vue
index ceffc9b..de34a20 100644
--- a/landing/app/components/landing/BenefitsCompany.vue
+++ b/landing/app/components/landing/BenefitsCompany.vue
@@ -11,19 +11,20 @@
class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-accent-100 dark:bg-accent-900/30 text-accent-700 dark:text-accent-300 text-sm font-medium mb-4"
>
- Für Unternehmen
+ {{ $t('company.badge') }}
- Vorteile für Unternehmen
+ {{ $t('company.title', { highlight: '' })
+ }}{{ $t('company.titleHighlight') }}
- Schneller zur abgestimmten Einführung von IT- und KI-Systemen mit planbaren Timelines.
+ {{ $t('company.description') }}
@@ -38,8 +39,10 @@
-
Weg von
-
Typische Herausforderungen
+
+ {{ $t('company.awayFrom.title') }}
+
+
{{ $t('company.awayFrom.subtitle') }}
@@ -69,8 +72,10 @@
-
Hin zu
-
Mit LegalConsentHub
+
+ {{ $t('company.towards.title') }}
+
+
{{ $t('company.towards.subtitle') }}
@@ -96,7 +101,8 @@
- So wirkt es in der Praxis
+ {{ $t('company.highlightsTitle', { highlight: '' })
+ }}{{ $t('company.highlightsTitleHighlight') }}
@@ -124,62 +130,48 @@
diff --git a/landing/app/components/landing/BenefitsWorksCouncil.vue b/landing/app/components/landing/BenefitsWorksCouncil.vue
index 903eb5f..a49586b 100644
--- a/landing/app/components/landing/BenefitsWorksCouncil.vue
+++ b/landing/app/components/landing/BenefitsWorksCouncil.vue
@@ -11,19 +11,20 @@
class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-primary-100 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300 text-sm font-medium mb-4"
>
- Für Betriebsräte
+ {{ $t('worksCouncil.badge') }}
- Vorteile für Betriebsräte
+ {{ $t('worksCouncil.title', { highlight: '' })
+ }}{{ $t('worksCouncil.titleHighlight') }}
- Weg von Informationsjagd und Blackbox-Systemen – hin zu Transparenz und belastbaren Vereinbarungen.
+ {{ $t('worksCouncil.description') }}
@@ -42,7 +43,7 @@
@click="activeTab = 'pain'"
>
- Weg von
+ {{ $t('worksCouncil.tabs.awayFrom') }}
- Hin zu
+ {{ $t('worksCouncil.tabs.towards') }}
@@ -117,7 +118,8 @@
- So hilft es im Alltag
+ {{ $t('worksCouncil.highlightsTitle', { highlight: '' })
+ }}{{ $t('worksCouncil.highlightsTitleHighlight') }}
@@ -145,65 +147,51 @@
diff --git a/landing/app/components/landing/ExpertAccess.vue b/landing/app/components/landing/ExpertAccess.vue
index 803c8ce..7c9b11d 100644
--- a/landing/app/components/landing/ExpertAccess.vue
+++ b/landing/app/components/landing/ExpertAccess.vue
@@ -30,16 +30,15 @@
class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-white/20 backdrop-blur-sm text-white text-sm font-medium mb-6"
>
- Expertennetzwerk
+ {{ $t('expertAccess.badge') }}
- Externer Sachverstand – direkt aus dem Verfahren
+ {{ $t('expertAccess.title') }}
- Wenn Betriebsparteien bei einzelnen Fragen nicht weiterkommen, kann optional externer Sachverstand direkt im
- System angefragt werden. Anfragen, Rückfragen und Ergebnisse bleiben nachvollziehbar dokumentiert.
+ {{ $t('expertAccess.description') }}
@@ -52,7 +51,7 @@
size="xl"
class="bg-white text-primary-700 hover:bg-white/90 px-8 py-4 text-lg font-semibold rounded-xl shadow-lg"
>
- Kontakt aufnehmen
+ {{ $t('expertAccess.cta.contact') }}
- Mehr erfahren
+ {{ $t('expertAccess.cta.learnMore') }}
@@ -125,8 +124,8 @@
- Arbeitsrecht
- Fachanwälte für Arbeitsrecht
+ {{ $t('expertAccess.experts.labor.title') }}
+ {{ $t('expertAccess.experts.labor.description') }}
@@ -138,8 +137,10 @@
- Technik
- IT-Sachverständige
+
+ {{ $t('expertAccess.experts.technical.title') }}
+
+ {{ $t('expertAccess.experts.technical.description') }}
@@ -156,8 +157,10 @@
-
Direkt im Verfahren
-
Dokumentiert & nachvollziehbar
+
+ {{ $t('expertAccess.experts.process.title') }}
+
+
{{ $t('expertAccess.experts.process.description') }}
@@ -171,5 +174,5 @@
diff --git a/landing/app/components/landing/FeaturesGrid.vue b/landing/app/components/landing/FeaturesGrid.vue
index 82431bd..2107798 100644
--- a/landing/app/components/landing/FeaturesGrid.vue
+++ b/landing/app/components/landing/FeaturesGrid.vue
@@ -10,24 +10,21 @@
-
- Features
+
+ {{ $t('features.badge') }}
- Features, die Mitbestimmung effizient machen
+ {{ $t('features.title', { highlight: '' })
+ }}{{ $t('features.titleHighlight') }}
- Eine strukturierte Eingabelogik, klare Prozesse und revisionssichere Dokumentation – damit IT-/KI-Systeme
- schneller bewertet, abgestimmt und sauber vereinbart werden können.
+ {{ $t('features.description') }}
@@ -49,57 +46,25 @@
diff --git a/landing/app/components/landing/FrameworkAgreement.vue b/landing/app/components/landing/FrameworkAgreement.vue
index 5a3810f..e4a353f 100644
--- a/landing/app/components/landing/FrameworkAgreement.vue
+++ b/landing/app/components/landing/FrameworkAgreement.vue
@@ -11,19 +11,18 @@
class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-accent-100 dark:bg-accent-900/30 text-accent-700 dark:text-accent-300 text-sm font-medium mb-6"
>
- Optional verfügbar
+ {{ $t('frameworkAgreement.badge') }}
- Rahmenbetriebsvereinbarung IT/KI
+ {{ $t('frameworkAgreement.title', { highlight: '' })
+ }}{{ $t('frameworkAgreement.titleHighlight') }}
- Für den Einstieg stellen wir auf Nachfrage eine optionale Rahmenbetriebs-/Rahmendienstvereinbarung für IT- und
- KI-Systeme bereit. Sie ist auf die Struktur des Tools zugeschnitten und enthält praxiserprobte
- Regelungsbausteine.
+ {{ $t('frameworkAgreement.description') }}
@@ -54,8 +53,8 @@
-
Preis
-
Auf Anfrage
+
{{ $t('common.price') }}
+
{{ $t('common.onRequest') }}
@@ -67,7 +66,7 @@
size="xl"
class="btn-gradient px-8 py-4 text-lg font-semibold rounded-xl shadow-lg shadow-primary-500/25"
>
- Mehr erfahren
+ {{ $t('common.learnMore') }}
@@ -99,8 +98,10 @@
-
Rahmen-BV IT/KI
-
Betriebsvereinbarung Vorlage
+
+ {{ $t('frameworkAgreement.document.title') }}
+
+
{{ $t('frameworkAgreement.document.subtitle') }}
@@ -110,7 +111,7 @@
- Inhaltsverzeichnis
+ {{ $t('frameworkAgreement.document.tableOfContents') }}
@@ -142,11 +143,13 @@
- 12 Regelungsbausteine
+ {{
+ $t('frameworkAgreement.document.regulationBlocks')
+ }}
- Praxiserprobt
+ {{ $t('frameworkAgreement.document.fieldTested') }}
@@ -159,7 +162,7 @@
class="bg-gradient-to-r from-accent-500 to-violet-500 text-white px-4 py-2 rounded-full shadow-lg text-sm font-semibold flex items-center gap-2"
>
- Auf Anfrage
+ {{ $t('common.onRequest') }}
@@ -177,34 +180,21 @@
diff --git a/landing/app/components/landing/HeroSection.vue b/landing/app/components/landing/HeroSection.vue
index 094af64..2e29018 100644
--- a/landing/app/components/landing/HeroSection.vue
+++ b/landing/app/components/landing/HeroSection.vue
@@ -39,17 +39,17 @@
- Jetzt verfügbar
+ {{ $t('hero.badge') }}
- Digitale Mitbestimmung
+ {{ $t('hero.title1') }}
- für IT- und KI-Systeme
+ {{ $t('hero.title2') }}
@@ -58,7 +58,7 @@
class="animate-fade-in-up text-lg sm:text-xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto mb-10"
style="animation-delay: 300ms"
>
- {{ description }}
+ {{ $t('hero.description') }}
@@ -69,7 +69,7 @@
trailing-icon="i-lucide-arrow-right"
class="btn-gradient px-8 py-4 text-lg font-semibold rounded-xl shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 transition-all"
>
- Demo anfragen
+ {{ $t('hero.cta.requestDemo') }}
- Features entdecken
+ {{ $t('hero.cta.discoverFeatures') }}
@@ -97,8 +97,10 @@
-
Risikoprüfung
-
3 Punkte offen
+
+ {{ $t('hero.cards.riskAssessment') }}
+
+
{{ $t('hero.cards.pointsOpen') }}
@@ -106,19 +108,19 @@
-
Datenschutz-Folgenabschätzung
+
{{ $t('hero.cards.privacyImpact') }}
-
Leistungskontrolle prüfen
+
{{ $t('hero.cards.performanceCheck') }}
-
Zugriffsrechte definiert
+
{{ $t('hero.cards.accessDefined') }}
@@ -139,10 +141,10 @@
Microsoft 365
-
Betriebsvereinbarung
+
{{ $t('hero.cards.operatingAgreement') }}
- In Bearbeitung
+ {{ $t('hero.cards.inProgress') }}
@@ -150,7 +152,7 @@
- Fortschritt
+ {{ $t('hero.cards.progress') }}
67%
@@ -165,8 +167,10 @@
>
-
8 Abschnitte
-
abgeschlossen
+
+ {{ $t('hero.cards.sectionsCompleted') }}
+
+
{{ $t('hero.cards.completed') }}
-
4 Kommentare
-
neu
+
+ {{ $t('hero.cards.commentsNew') }}
+
+
{{ $t('hero.cards.new') }}
@@ -184,7 +190,7 @@
- Weiter bearbeiten
+ {{ $t('hero.cards.continueEditing') }}
@@ -202,8 +208,10 @@
-
Abgeschlossen
-
Letzte Woche
+
+ {{ $t('hero.cards.completedTitle') }}
+
+
{{ $t('hero.cards.lastWeek') }}
@@ -236,8 +244,8 @@
-
BV erstellt!
-
Bereit zur Unterschrift
+
{{ $t('hero.cards.bvCreated') }}
+
{{ $t('hero.cards.readyForSignature') }}
@@ -249,7 +257,7 @@
@@ -258,6 +266,5 @@
diff --git a/landing/app/components/landing/NewsletterSignup.vue b/landing/app/components/landing/NewsletterSignup.vue
index 7d8a053..5b3e99e 100644
--- a/landing/app/components/landing/NewsletterSignup.vue
+++ b/landing/app/components/landing/NewsletterSignup.vue
@@ -41,7 +41,8 @@
- Bleiben Sie informiert
+ {{ $t('newsletter.title', { highlight: '' })
+ }}{{ $t('newsletter.titleHighlight') }}
@@ -49,8 +50,7 @@
class="text-center text-lg text-gray-600 dark:text-gray-300 mb-8 animate-fade-in-up"
style="animation-delay: 100ms"
>
- Erhalten Sie Updates zur Entwicklung von LegalConsentHub und seien Sie unter den Ersten, die von neuen
- Funktionen erfahren.
+ {{ $t('newsletter.description') }}
@@ -66,7 +66,7 @@
- Angemeldet!
+ {{ $t('newsletter.submitted') }}
- Anmelden
+ {{ $t('newsletter.submit') }}
@@ -115,7 +115,7 @@
- Vielen Dank! Wir halten Sie auf dem Laufenden.
+ {{ $t('newsletter.success') }}
@@ -125,11 +125,13 @@
class="mt-6 text-sm text-center text-gray-500 dark:text-gray-400 animate-fade-in-up"
style="animation-delay: 300ms"
>
- Mit der Anmeldung stimmen Sie unserer
-
- Datenschutzerklärung
-
- zu. Wir versenden keinen Spam.
+
+
+
+ {{ $t('newsletter.privacyLink') }}
+
+
+
@@ -141,19 +143,19 @@
- DSGVO-konform
+ {{ $t('newsletter.trust.gdpr') }}
-
Verschlüsselt
+
{{ $t('newsletter.trust.encrypted') }}
-
Kein Spam
+
{{ $t('newsletter.trust.noSpam') }}
@@ -166,22 +168,20 @@
import { z } from 'zod'
import type { FormSubmitEvent } from '@nuxt/ui'
+const { t } = useI18n()
const { isLoading, isSuccess, submitEmail } = useNewsletterSignup()
-const schema = z.object({
- email: z
- .string()
- .min(1, 'Bitte geben Sie eine E-Mail-Adresse ein')
- .email('Bitte geben Sie eine gültige E-Mail-Adresse ein')
-})
+const schema = computed(() =>
+ z.object({
+ email: z.string().min(1, t('newsletter.validation.required')).email(t('newsletter.validation.invalid'))
+ })
+)
-type Schema = z.output
-
-const formState = reactive>({
+const formState = reactive<{ email: string }>({
email: ''
})
-async function onSubmit(event: FormSubmitEvent) {
+async function onSubmit(event: FormSubmitEvent<{ email: string }>) {
await submitEmail(event.data.email)
}
diff --git a/landing/app/components/landing/StatsSection.vue b/landing/app/components/landing/StatsSection.vue
index dae1eca..992afd4 100644
--- a/landing/app/components/landing/StatsSection.vue
+++ b/landing/app/components/landing/StatsSection.vue
@@ -29,7 +29,7 @@
-
Vertrauen & Sicherheit
+
{{ $t('stats.trustAndSecurity') }}