Restore hero word accents and German umlauts
CI / quality (push) Waiting to run

This commit is contained in:
MOH
2026-03-09 08:58:04 +01:00
parent 25786ccf1d
commit 701c1b2a6c
3 changed files with 52 additions and 37 deletions
+20 -5
View File
@@ -10,11 +10,26 @@ type PageHeroProps = {
};
function getDefaultLines(title: string): HeroTitleLineValue[] {
return title.split("\n").filter(Boolean).map((line, index) => ({
text: line,
tone: index === 0 ? "soft" : "accent",
align: "center",
}));
return title.split("\n").filter(Boolean).map((line) => {
const words = line.trim().split(/\s+/).filter(Boolean);
if (words.length <= 1) {
return {
text: line,
tone: "soft",
align: "center",
};
}
return {
text: line,
align: "center",
segments: words.map((word, index) => ({
text: index === words.length - 1 ? word : `${word} `,
tone: index % 2 === 0 ? "soft" : "accent",
})),
};
});
}
export function PageHero({ badge, title, description, lines, locale }: PageHeroProps) {
+31 -31
View File
@@ -6,8 +6,8 @@
"about": "Über mich",
"contact": "Kontakt",
"root": "Root",
"openMenu": "Menue oeffnen",
"closeMenu": "Menue schliessen",
"openMenu": "Menü öffnen",
"closeMenu": "Menü schliessen",
"themeToggle": "Theme wechseln",
"soundMute": "Sounds stummschalten",
"soundUnmute": "Sounds aktivieren"
@@ -19,21 +19,21 @@
"badge": "Coming Soon",
"kicker": "Hi, ich bin Moh",
"titleLineOne": "Eine klarere",
"titleLineTwo": "naechste Version",
"titleLineTwo": "nächste Version",
"titleLineThree": "ist unterwegs.",
"description": "Die neue Version entsteht gerade mit staerkerer Identitaet, klarerem Inhalt und einer fokussierteren Erfahrung von Anfang bis Ende.",
"note": "Wenn du schon ein Projekt im Kopf hast, kannst du dich jetzt melden und wir starten frueh ins Gespraech.",
"description": "Die neue Version entsteht gerade mit stärkerer Identität, klarerem Inhalt und einer fokussierteren Erfahrung von Anfang bis Ende.",
"note": "Wenn du schon ein Projekt im Kopf hast, kannst du dich jetzt melden und wir starten früh ins Gespräch.",
"primaryCta": "Kontakt aufnehmen",
"secondaryCta": "Zur Startseite"
},
"homepage": {
"heroKicker": "Hi, ich bin Moh",
"heroTitle": "frontend\ndeveloper\n& designer",
"heroText": "Ich entwickle digitale Loesungen fuer echte Probleme,\ndie gut aussehen und sauber funktionieren.",
"heroText": "Ich entwickle digitale Lösungen für echte Probleme,\ndie gut aussehen und sauber funktionieren.",
"servicesEyebrow": "Leistungen",
"servicesTitle": "Digitale Arbeit, die sich an deinem Geschaeft orientiert und nicht an Vorlagen.",
"servicesText": "Von Markenaufbau und Websites bis zu Shops, SEO, Tracking, WordPress Plugins und internen Systemen geht es immer um dasselbe: mehr Klarheit, bessere Wirkung und eine saubere Grundlage fuer Wachstum.",
"servicesPrimaryCta": "Erzaehl mir von deinem Projekt",
"servicesTitle": "Digitale Arbeit, die sich an deinem Geschäft orientiert und nicht an Vorlagen.",
"servicesText": "Von Markenaufbau und Websites bis zu Shops, SEO, Tracking, WordPress Plugins und internen Systemen geht es immer um dasselbe: mehr Klarheit, bessere Wirkung und eine saubere Grundlage für Wachstum.",
"servicesPrimaryCta": "Erzähl mir von deinem Projekt",
"servicesSecondaryCta": "Meine Arbeiten ansehen",
"serviceBrand": "Markenaufbau mit klarer Richtung.",
"serviceWebsite": "Websites mit sauberer Struktur.",
@@ -41,35 +41,35 @@
"serviceWordPress": "Eigene WordPress Plugins.",
"serviceSeo": "Mehr Sichtbarkeit in Suchmaschinen.",
"serviceTracking": "Tracking und bessere Auswertung.",
"serviceSystem": "Interne Systeme fuer Teams und Firmen.",
"serviceSystem": "Interne Systeme für Teams und Firmen.",
"toPortfolio": "Portfolio ansehen",
"toProducts": "Produkte ansehen",
"toContact": "Kontakt aufnehmen"
},
"portfolioPage": {
"title": "Portfolio",
"heroBadge": "Ausgewaehlte Arbeiten",
"heroTitle": "Ausgewaehlte Projekte",
"heroBadge": "Ausgewählte Arbeiten",
"heroTitle": "Portfolio",
"intro": "Eine Auswahl von Projekten mit Fokus auf Klarheit und Ergebnis.",
"open": "Projekt oeffnen",
"open": "Projekt öffnen",
"all": "Alle Kategorien",
"empty": "Fuer diesen Filter sind noch keine veroeffentlichten Projekte vorhanden."
"empty": "Für diesen Filter sind noch keine veröffentlichten Projekte vorhanden."
},
"productsPage": {
"title": "Produkte",
"heroBadge": "Pakete und Loesungen",
"heroBadge": "Pakete und Lösungen",
"heroTitle": "Klare Angebote",
"intro": "Pakete fuer Teams von Start bis Skalierung.",
"open": "Produkt oeffnen"
"intro": "Pakete für Teams von Start bis Skalierung.",
"open": "Produkt öffnen"
},
"aboutPage": {
"title": "Ueber mich",
"heroBadge": "Mehr ueber mich",
"heroTitle": "Ueber mich",
"intro": "Ich baue klare digitale Erlebnisse fuer Marken, Produkte und Teams.",
"title": "Über mich",
"heroBadge": "Mehr über mich",
"heroTitle": "Über mich",
"intro": "Ich baue klare digitale Erlebnisse für Marken, Produkte und Teams.",
"valuesTitle": "Wie ich arbeite",
"valueA": "Strategie zuerst",
"valueAText": "Jedes Projekt startet mit Zielbild, Scope und Prioritaeten.",
"valueAText": "Jedes Projekt startet mit Zielbild, Scope und Prioritäten.",
"valueB": "Saubere Systeme",
"valueBText": "Ich setze auf wartbare Komponenten und klare Strukturen.",
"valueC": "Enge Zusammenarbeit",
@@ -89,30 +89,30 @@
"phone": "Telefon",
"company": "Firma",
"message": "Nachricht",
"note": "Teile kurz Kontext, Ziel und Deadline mit, damit die Antwort praeziser ausfallen kann.",
"note": "Teile kurz Kontext, Ziel und Deadline mit, damit die Antwort präziser ausfallen kann.",
"submit": "Senden",
"preview": "Success Seite ansehen",
"city": "Berlin, Deutschland"
},
"successPage": {
"title": "Danke fuer deine Nachricht",
"title": "Danke für deine Nachricht",
"text": "Ich habe deine Anfrage erhalten und melde mich zeitnah.",
"home": "Zur Startseite",
"contact": "Zur Kontaktseite"
},
"portfolioDetail": {
"back": "Zurueck zum Portfolio",
"preview": "Vorschau oeffnen",
"openLink": "Link oeffnen",
"back": "Zurück zum Portfolio",
"preview": "Vorschau öffnen",
"openLink": "Link öffnen",
"gallery": "Projektgalerie",
"download": "Dokument oeffnen"
"download": "Dokument öffnen"
},
"productDetail": {
"back": "Zurueck zu Produkten",
"back": "Zurück zu Produkten",
"included": "Inklusive",
"stepOne": "Kickoff und Scope Klarheit",
"stepTwo": "Setup von Design und Komponenten",
"stepThree": "Implementierung und Uebergabe",
"action": "Kontakt fuer Angebot"
"stepThree": "Implementierung und Übergabe",
"action": "Kontakt für Angebot"
}
}
+1 -1
View File
@@ -49,7 +49,7 @@
"portfolioPage": {
"title": "Portfolio",
"heroBadge": "Selected work",
"heroTitle": "Selected work",
"heroTitle": "Portfolio",
"intro": "Selected projects with a focus on clarity and outcomes.",
"open": "Open project",
"all": "All categories",