feat(seo): enhance multilingual support and SEO handling
All checks were successful
Deploy to production / deploy (push) Successful in 2m46s

- Added support for multiple languages in the frontend, including English, Spanish, and Cebuano, improving accessibility for a broader audience.
- Implemented hreflang links for better SEO performance, ensuring search engines can correctly index language-specific content.
- Updated SEO metadata handling to utilize internationalization keys, enhancing the clarity and relevance of page titles and descriptions.
- Refactored SEO utility functions to streamline the management of OpenGraph and hreflang attributes, improving maintainability and performance.
This commit is contained in:
Torsten Schulz (local)
2026-04-07 15:43:16 +02:00
parent ebb2283646
commit c5b8860605
13 changed files with 542 additions and 98 deletions

View File

@@ -19,6 +19,7 @@ import enBlog from './locales/en/blog.json';
import enMinigames from './locales/en/minigames.json';
import enMessage from './locales/en/message.json';
import enPersonal from './locales/en/personal.json';
import enSeo from './locales/en/seo.json';
import cebGeneral from './locales/ceb/general.json';
import cebHeader from './locales/ceb/header.json';
import cebNavigation from './locales/ceb/navigation.json';
@@ -37,6 +38,7 @@ import cebPersonal from './locales/ceb/personal.json';
import cebFalukant from './locales/ceb/falukant.json';
import cebBlog from './locales/ceb/blog.json';
import cebMinigames from './locales/ceb/minigames.json';
import cebSeo from './locales/ceb/seo.json';
import deGeneral from './locales/de/general.json';
import deHeader from './locales/de/header.json';
@@ -56,6 +58,7 @@ import deBlog from './locales/de/blog.json';
import deMinigames from './locales/de/minigames.json';
import deMessage from './locales/de/message.json';
import dePersonal from './locales/de/personal.json';
import deSeo from './locales/de/seo.json';
import esGeneral from './locales/es/general.json';
import esHeader from './locales/es/header.json';
@@ -75,6 +78,7 @@ import esBlog from './locales/es/blog.json';
import esMinigames from './locales/es/minigames.json';
import esMessage from './locales/es/message.json';
import esPersonal from './locales/es/personal.json';
import esSeo from './locales/es/seo.json';
const messages = {
en: {
@@ -96,6 +100,7 @@ const messages = {
...enMinigames,
...enMessage,
...enPersonal,
...enSeo,
},
ceb: {
...enGeneral,
@@ -134,6 +139,7 @@ const messages = {
...cebFalukant,
...cebBlog,
...cebMinigames,
...cebSeo,
},
de: {
'Ok': 'Ok',
@@ -155,6 +161,7 @@ const messages = {
...deMinigames,
...deMessage,
...dePersonal,
...deSeo,
},
es: {
...esGeneral,
@@ -175,6 +182,7 @@ const messages = {
...esMinigames,
...esMessage,
...esPersonal,
...esSeo,
}
};

View File

@@ -0,0 +1,51 @@
{
"seo": {
"default": {
"title": "YourPart - Komunidad, chat, forum, bokabularyo, Falukant ug minigames",
"description": "YourPart naghiusa sa komunidad, chat, forum, blog, trainer sa bokabularyo, ang browser builder game nga Falukant ug minigames sa usa ka plataporma.",
"keywords": "YourPart, komunidad, chat, forum, blog, bokabularyo, Falukant, minigames, libre, pribado, privacy"
},
"home": {
"title": "YourPart - Komunidad, chat, forum, blogs, bokabularyo ug mga dula",
"description": "YourPart usa ka plataporma sa komunidad nga adunay chat, forum, blogs, trainer sa bokabularyo, ang browser game nga Falukant ug minigames.",
"keywords": "YourPart, komunidad, chat, forum, blogs, bokabularyo, browser game, Falukant, minigames, libre, pribado",
"jsonLdDescription": "Plataporma sa komunidad nga adunay chat, forum, blogs, bokabularyo, Falukant ug minigames sa browser."
},
"falukant": {
"title": "Falukant - Medieval nga browser builder game sa YourPart",
"description": "Falukant ang medieval nga browser builder game sa YourPart nga adunay komersyo, politika, pamilya, edukasyon ug pag-uswag sa karakter.",
"keywords": "Falukant, browser game, builder, medieval, ekonomiya, politika, YourPart, libre",
"jsonLdDescription": "Medieval nga browser builder game nga adunay komersyo, politika, pamilya ug pag-uswag sa karakter.",
"jsonLdName": "Falukant"
},
"minigames": {
"title": "Minigames sa YourPart - Match 3 ug taxi sa browser",
"description": "Diskubreha ang minigames sa browser sa YourPart: Match 3 ug taxi naghatag og paspas nga mga round sa plataporma.",
"keywords": "minigames, browser games, Match 3, taxi, casual, YourPart, libre",
"jsonLdDescription": "Minigames sa browser sa YourPart nga adunay Match 3 ug taxi.",
"jsonLdCollectionName": "Minigames sa YourPart"
},
"vocab": {
"title": "Trainer sa bokabularyo sa YourPart - pagkat-on og pinulongan online",
"description": "Ang trainer sa bokabularyo sa YourPart motabang kanimo sa pagkat-on og pinulongan nga adunay interaktibong leksyon, kurso ug ehersisyo.",
"keywords": "bokabularyo, pagkat-on pinulongan, online, kurso, ehersisyo, YourPart, libre",
"jsonLdDescription": "Interaktibong trainer sa bokabularyo nga adunay kurso, leksyon ug ehersisyo.",
"jsonLdName": "Bokabularyo YourPart"
},
"blogList": {
"title": "Blogs sa YourPart - mga post ug hilisgutan sa komunidad",
"description": "Tan-awa ang publiko nga blogs sa YourPart nga adunay mga post, hunahuna, kasinatian ug hilisgutan.",
"keywords": "blogs, blog sa komunidad, artikulo, post, YourPart",
"jsonLdDescription": "Publiko nga blogs ug mga post sa komunidad sa YourPart.",
"jsonLdName": "Blogs sa YourPart"
},
"blogPage": {
"title": "Blogs sa YourPart",
"description": "Publiko nga blogs, post ug sulod sa komunidad sa YourPart.",
"keywords": "blog, YourPart, komunidad"
},
"blogPost": {
"pageTitle": "{title} | Blog sa YourPart"
}
}
}

View File

@@ -0,0 +1,51 @@
{
"seo": {
"default": {
"title": "YourPart - Community, Chat, Forum, Vokabeltrainer, Falukant und Minispiele",
"description": "YourPart verbindet Community, Chat, Forum, Blogs, Vokabeltrainer, das Aufbauspiel Falukant und Browser-Minispiele auf einer Plattform.",
"keywords": "YourPart, Community, Chat, Forum, Blog, Vokabeltrainer, Falukant, Minispiele, kostenlos, privat, Datenschutz"
},
"home": {
"title": "YourPart - Community, Chat, Forum, Blogs, Vokabeltrainer und Spiele",
"description": "YourPart ist eine Community-Plattform mit Chat, Forum, Blogs, Vokabeltrainer, dem Browser-Aufbauspiel Falukant und Minispielen.",
"keywords": "YourPart, Community, Chat, Forum, Blogs, Vokabeltrainer, Browsergame, Falukant, Minispiele, kostenlos, privat",
"jsonLdDescription": "Community-Plattform mit Chat, Forum, Blogs, Vokabeltrainer, Falukant und Browser-Minispielen."
},
"falukant": {
"title": "Falukant - Mittelalterliches Browser-Aufbauspiel auf YourPart",
"description": "Falukant ist das mittelalterliche Browser-Aufbauspiel auf YourPart mit Handel, Politik, Familie, Bildung und Charakterentwicklung.",
"keywords": "Falukant, Browsergame, Aufbauspiel, Mittelalterspiel, Wirtschaftsspiel, Politikspiel, YourPart, kostenlos",
"jsonLdDescription": "Mittelalterliches Browser-Aufbauspiel mit Handel, Politik, Familie und Charakterentwicklung.",
"jsonLdName": "Falukant"
},
"minigames": {
"title": "Minispiele auf YourPart - Match 3 und Taxi im Browser",
"description": "Entdecke die Browser-Minispiele auf YourPart: Match 3 und Taxi bieten schnelle Spielrunden direkt auf der Plattform.",
"keywords": "Minispiele, Browsergames, Match 3, Taxi Spiel, Casual Games, YourPart, kostenlos",
"jsonLdDescription": "Browser-Minispiele auf YourPart mit Match 3 und Taxi.",
"jsonLdCollectionName": "YourPart Minispiele"
},
"vocab": {
"title": "Vokabeltrainer auf YourPart - Sprachen online lernen",
"description": "Der Vokabeltrainer auf YourPart unterstützt dich beim Sprachenlernen mit interaktiven Lektionen, Kursen und Übungen.",
"keywords": "Vokabeltrainer, Sprachen lernen, Online lernen, Sprachkurse, Übungen, YourPart, kostenlos",
"jsonLdDescription": "Interaktiver Vokabeltrainer mit Kursen, Lektionen und Übungen zum Sprachenlernen.",
"jsonLdName": "YourPart Vokabeltrainer"
},
"blogList": {
"title": "Blogs auf YourPart - Community-Beiträge und Themen",
"description": "Entdecke öffentliche Blogs auf YourPart mit Community-Beiträgen, Gedanken, Erfahrungen und Themen aus verschiedenen Bereichen.",
"keywords": "Blogs, Community Blog, Artikel, Beiträge, YourPart",
"jsonLdDescription": "Öffentliche Blogs und Community-Beiträge auf YourPart.",
"jsonLdName": "Blogs auf YourPart"
},
"blogPage": {
"title": "Blogs auf YourPart",
"description": "Öffentliche Blogs, Beiträge und Community-Inhalte auf YourPart.",
"keywords": "Blog, YourPart, Community"
},
"blogPost": {
"pageTitle": "{title} | Blog auf YourPart"
}
}
}

View File

@@ -0,0 +1,51 @@
{
"seo": {
"default": {
"title": "YourPart - Community, chat, forum, vocabulary trainer, Falukant and minigames",
"description": "YourPart brings together community, chat, forums, blogs, a vocabulary trainer, the browser builder game Falukant and minigames in one platform.",
"keywords": "YourPart, community, chat, forum, blog, vocabulary trainer, Falukant, minigames, free, private, privacy"
},
"home": {
"title": "YourPart - Community, chat, forum, blogs, vocabulary trainer and games",
"description": "YourPart is a community platform with chat, forums, blogs, a vocabulary trainer, the browser builder game Falukant and minigames.",
"keywords": "YourPart, community, chat, forum, blogs, vocabulary trainer, browser game, Falukant, minigames, free, private",
"jsonLdDescription": "Community platform with chat, forums, blogs, vocabulary trainer, Falukant and browser minigames."
},
"falukant": {
"title": "Falukant - Medieval browser builder game on YourPart",
"description": "Falukant is the medieval browser builder game on YourPart with trade, politics, family, education and character progression.",
"keywords": "Falukant, browser game, builder game, medieval game, economy game, politics game, YourPart, free",
"jsonLdDescription": "Medieval browser builder game with trade, politics, family and character progression.",
"jsonLdName": "Falukant"
},
"minigames": {
"title": "Minigames on YourPart - Match 3 and taxi in the browser",
"description": "Discover browser minigames on YourPart: Match 3 and taxi offer quick rounds directly on the platform.",
"keywords": "minigames, browser games, Match 3, taxi game, casual games, YourPart, free",
"jsonLdDescription": "Browser minigames on YourPart with Match 3 and taxi.",
"jsonLdCollectionName": "YourPart minigames"
},
"vocab": {
"title": "Vocabulary trainer on YourPart - learn languages online",
"description": "The YourPart vocabulary trainer helps you learn languages with interactive lessons, courses and exercises.",
"keywords": "vocabulary trainer, learn languages, online learning, language courses, exercises, YourPart, free",
"jsonLdDescription": "Interactive vocabulary trainer with courses, lessons and exercises for language learning.",
"jsonLdName": "YourPart vocabulary trainer"
},
"blogList": {
"title": "Blogs on YourPart - community posts and topics",
"description": "Explore public blogs on YourPart with community posts, ideas, experiences and topics from many areas.",
"keywords": "blogs, community blog, articles, posts, YourPart",
"jsonLdDescription": "Public blogs and community posts on YourPart.",
"jsonLdName": "Blogs on YourPart"
},
"blogPage": {
"title": "Blogs on YourPart",
"description": "Public blogs, posts and community content on YourPart.",
"keywords": "blog, YourPart, community"
},
"blogPost": {
"pageTitle": "{title} | Blog on YourPart"
}
}
}

View File

@@ -0,0 +1,51 @@
{
"seo": {
"default": {
"title": "YourPart - Comunidad, chat, foro, vocabulario, Falukant y minijuegos",
"description": "YourPart reúne comunidad, chat, foros, blogs, un entrenador de vocabulario, el juego de construcción Falukant y minijuegos en un navegador.",
"keywords": "YourPart, comunidad, chat, foro, blog, vocabulario, Falukant, minijuegos, gratis, privado, privacidad"
},
"home": {
"title": "YourPart - Comunidad, chat, foro, blogs, vocabulario y juegos",
"description": "YourPart es una plataforma comunitaria con chat, foro, blogs, entrenador de vocabulario, el juego de construcción Falukant y minijuegos.",
"keywords": "YourPart, comunidad, chat, foro, blogs, vocabulario, juego navegador, Falukant, minijuegos, gratis, privado",
"jsonLdDescription": "Plataforma comunitaria con chat, foro, blogs, vocabulario, Falukant y minijuegos en el navegador."
},
"falukant": {
"title": "Falukant - Juego de construcción medieval en el navegador en YourPart",
"description": "Falukant es el juego de construcción medieval en YourPart con comercio, política, familia, educación y progresión del personaje.",
"keywords": "Falukant, juego navegador, construcción, medieval, economía, política, YourPart, gratis",
"jsonLdDescription": "Juego de construcción medieval en el navegador con comercio, política, familia y progresión.",
"jsonLdName": "Falukant"
},
"minigames": {
"title": "Minijuegos en YourPart - Match 3 y taxi en el navegador",
"description": "Descubre minijuegos en el navegador en YourPart: Match 3 y taxi ofrecen partidas rápidas en la plataforma.",
"keywords": "minijuegos, juegos navegador, Match 3, taxi, casual, YourPart, gratis",
"jsonLdDescription": "Minijuegos en el navegador en YourPart con Match 3 y taxi.",
"jsonLdCollectionName": "Minijuegos YourPart"
},
"vocab": {
"title": "Entrenador de vocabulario en YourPart - aprende idiomas online",
"description": "El entrenador de vocabulario de YourPart te ayuda a aprender idiomas con lecciones interactivas, cursos y ejercicios.",
"keywords": "vocabulario, aprender idiomas, online, cursos, ejercicios, YourPart, gratis",
"jsonLdDescription": "Entrenador de vocabulario interactivo con cursos, lecciones y ejercicios.",
"jsonLdName": "Vocabulario YourPart"
},
"blogList": {
"title": "Blogs en YourPart - aportes y temas de la comunidad",
"description": "Descubre blogs públicos en YourPart con aportes, ideas, experiencias y temas de distintas áreas.",
"keywords": "blogs, blog comunitario, artículos, entradas, YourPart",
"jsonLdDescription": "Blogs públicos y aportes de la comunidad en YourPart.",
"jsonLdName": "Blogs en YourPart"
},
"blogPage": {
"title": "Blogs en YourPart",
"description": "Blogs públicos, entradas y contenido comunitario en YourPart.",
"keywords": "blog, YourPart, comunidad"
},
"blogPost": {
"pageTitle": "{title} | Blog en YourPart"
}
}
}