feat(i18n): translate hardcoded article page strings to 5 locales
Deploy to VPS / deploy (push) Has been cancelled
Deploy to VPS / deploy (push) Has been cancelled
- Add ArticlePage namespace (backToNewsHub, backToNews, mediaGallery, joinLinkedIn, internalRelease) to all 5 locale message files (en, it, es, de, vec) - Replace 5 hardcoded English strings in news/[slug]/page.tsx with getTranslations() calls Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -184,6 +184,13 @@
|
||||
"page": "Seite",
|
||||
"of": "von"
|
||||
},
|
||||
"ArticlePage": {
|
||||
"backToNewsHub": "Zurück zum News Hub",
|
||||
"backToNews": "Zurück zu Nachrichten",
|
||||
"mediaGallery": "Mediengalerie",
|
||||
"joinLinkedIn": "Diskussion auf LinkedIn beitreten",
|
||||
"internalRelease": "Interne Unternehmensmitteilung"
|
||||
},
|
||||
"AuthModal": {
|
||||
"b2bPortal": "B2B-Portal",
|
||||
"signIn": "Anmelden",
|
||||
|
||||
@@ -184,6 +184,13 @@
|
||||
"page": "Page",
|
||||
"of": "of"
|
||||
},
|
||||
"ArticlePage": {
|
||||
"backToNewsHub": "Back to News Hub",
|
||||
"backToNews": "Back to News",
|
||||
"mediaGallery": "Media Gallery",
|
||||
"joinLinkedIn": "Join the conversation on LinkedIn",
|
||||
"internalRelease": "Internal Corporate Release"
|
||||
},
|
||||
"AuthModal": {
|
||||
"b2bPortal": "B2B Portal",
|
||||
"signIn": "Sign In",
|
||||
|
||||
@@ -184,6 +184,13 @@
|
||||
"page": "Página",
|
||||
"of": "de"
|
||||
},
|
||||
"ArticlePage": {
|
||||
"backToNewsHub": "Volver al News Hub",
|
||||
"backToNews": "Volver a Noticias",
|
||||
"mediaGallery": "Galería de Medios",
|
||||
"joinLinkedIn": "Únete a la conversación en LinkedIn",
|
||||
"internalRelease": "Comunicado Corporativo Interno"
|
||||
},
|
||||
"AuthModal": {
|
||||
"b2bPortal": "Portal B2B",
|
||||
"signIn": "Iniciar Sesión",
|
||||
|
||||
@@ -184,6 +184,13 @@
|
||||
"page": "Pagina",
|
||||
"of": "di"
|
||||
},
|
||||
"ArticlePage": {
|
||||
"backToNewsHub": "Torna al News Hub",
|
||||
"backToNews": "Torna alle Notizie",
|
||||
"mediaGallery": "Galleria Media",
|
||||
"joinLinkedIn": "Partecipa alla conversazione su LinkedIn",
|
||||
"internalRelease": "Comunicato Aziendale Interno"
|
||||
},
|
||||
"AuthModal": {
|
||||
"b2bPortal": "Portale B2B",
|
||||
"signIn": "Accedi",
|
||||
|
||||
@@ -184,6 +184,13 @@
|
||||
"page": "Pagina",
|
||||
"of": "de"
|
||||
},
|
||||
"ArticlePage": {
|
||||
"backToNewsHub": "Torna al News Hub",
|
||||
"backToNews": "Torna a łe Notissie",
|
||||
"mediaGallery": "Gałeria Media",
|
||||
"joinLinkedIn": "Parteçipa a ła conversassion su LinkedIn",
|
||||
"internalRelease": "Comunicato Aziendałe Interno"
|
||||
},
|
||||
"AuthModal": {
|
||||
"b2bPortal": "Portal par ditte",
|
||||
"signIn": "Entra chive",
|
||||
|
||||
@@ -8,7 +8,7 @@ import { prisma } from "@/lib/prisma";
|
||||
import { ArrowLeft, Calendar, Tag, Linkedin } from "lucide-react";
|
||||
import BreathingField from "@/components/visuals/BreathingField";
|
||||
|
||||
import { setRequestLocale } from "next-intl/server";
|
||||
import { getTranslations, setRequestLocale } from "next-intl/server";
|
||||
import { getLocalizedData } from "@/lib/i18nHelper";
|
||||
import Breadcrumbs from "@/components/seo/Breadcrumbs";
|
||||
import {
|
||||
@@ -228,6 +228,7 @@ export default async function ArticlePage({ params }: { params: Promise<{ slug:
|
||||
const resolvedParams = await params;
|
||||
const { slug, locale } = resolvedParams;
|
||||
setRequestLocale(locale);
|
||||
const t = await getTranslations({ locale, namespace: "ArticlePage" });
|
||||
|
||||
let rawArticle: any = null;
|
||||
try {
|
||||
@@ -293,7 +294,7 @@ export default async function ArticlePage({ params }: { params: Promise<{ slug:
|
||||
<div className="fixed top-24 left-6 z-50 hidden md:block">
|
||||
{/* EL BOTÓN DE VOLVER AHORA RESPETA EL IDIOMA */}
|
||||
<Link href={`/${locale}/news`} className="inline-flex items-center gap-2 text-sm font-medium text-[#86868B] hover:text-[#0066CC] dark:hover:text-[#4DA6FF] transition-colors py-2 px-4 bg-white/50 dark:bg-black/50 backdrop-blur-md rounded-full group shadow-sm border border-black/5 dark:border-white/10">
|
||||
<ArrowLeft size={16} className="group-hover:-translate-x-1 transition-transform" /> Back to News Hub
|
||||
<ArrowLeft size={16} className="group-hover:-translate-x-1 transition-transform" /> {t("backToNewsHub")}
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@@ -329,7 +330,7 @@ export default async function ArticlePage({ params }: { params: Promise<{ slug:
|
||||
|
||||
{gallery.length > 0 && (
|
||||
<div className="mt-16 pt-16 border-t border-black/5 dark:border-white/5">
|
||||
<h3 className="text-xl font-medium mb-8 text-[#1D1D1F] dark:text-white">Media Gallery</h3>
|
||||
<h3 className="text-xl font-medium mb-8 text-[#1D1D1F] dark:text-white">{t("mediaGallery")}</h3>
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
|
||||
{gallery.map((imgSrc: string, idx: number) => (
|
||||
<div key={idx} className={`relative rounded-3xl overflow-hidden bg-[#1D1D1F] border border-black/10 dark:border-white/10 ${idx === 0 && gallery.length % 2 !== 0 ? 'sm:col-span-2 h-64 md:h-96' : 'h-48 md:h-64'}`}>
|
||||
@@ -342,7 +343,7 @@ export default async function ArticlePage({ params }: { params: Promise<{ slug:
|
||||
|
||||
<div className="mt-16 pt-8 border-t border-black/10 dark:border-white/10 flex justify-between items-center">
|
||||
<Link href={`/${locale}/news`} className="text-[#0066CC] dark:text-[#4DA6FF] font-medium flex items-center gap-2 hover:underline md:hidden">
|
||||
<ArrowLeft size={16} /> Back to News
|
||||
<ArrowLeft size={16} /> {t("backToNews")}
|
||||
</Link>
|
||||
|
||||
{article.linkedinUrl ? (
|
||||
@@ -352,11 +353,11 @@ export default async function ArticlePage({ params }: { params: Promise<{ slug:
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center gap-2 text-sm font-semibold text-white bg-[#0A66C2] px-6 py-3 rounded-full hover:bg-[#004182] transition-all shadow-lg shadow-[#0A66C2]/20 ml-auto md:ml-0"
|
||||
>
|
||||
<Linkedin size={16} /> Join the conversation on LinkedIn
|
||||
<Linkedin size={16} /> {t("joinLinkedIn")}
|
||||
</a>
|
||||
) : (
|
||||
<div className="text-xs text-[#86868B] italic hidden md:block">
|
||||
Internal Corporate Release
|
||||
{t("internalRelease")}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user