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:
@@ -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,21 +343,21 @@ 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 ? (
|
||||
<a
|
||||
href={article.linkedinUrl}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
<a
|
||||
href={article.linkedinUrl}
|
||||
target="_blank"
|
||||
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