feat(seo): enhance multilingual support and SEO handling
All checks were successful
Deploy to production / deploy (push) Successful in 2m46s
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:
@@ -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,
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
51
frontend/src/i18n/locales/ceb/seo.json
Normal file
51
frontend/src/i18n/locales/ceb/seo.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
51
frontend/src/i18n/locales/de/seo.json
Normal file
51
frontend/src/i18n/locales/de/seo.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
51
frontend/src/i18n/locales/en/seo.json
Normal file
51
frontend/src/i18n/locales/en/seo.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
51
frontend/src/i18n/locales/es/seo.json
Normal file
51
frontend/src/i18n/locales/es/seo.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user