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 @@ @@ -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') }}

    @@ -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') }}

@@ -42,7 +43,7 @@ @click="activeTab = 'pain'" > - Weg von + {{ $t('worksCouncil.tabs.awayFrom') }}
@@ -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') }}

@@ -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 @@ @@ -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') }} @@ -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. + + +

@@ -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') }}