diff --git a/web-next/app/[locale]/ban-history/page.tsx b/web-next/app/[locale]/ban-history/page.tsx index 332fe5d..99ac6bf 100644 --- a/web-next/app/[locale]/ban-history/page.tsx +++ b/web-next/app/[locale]/ban-history/page.tsx @@ -8,7 +8,11 @@ import { ServiceBox } from '@/components/ServiceBox' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Historial de sanciones' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'History' }) + return { title: t('ban.pageTitle') } +} /** Fecha en formato DD-MM-YYYY HH:MM:SS. */ function fmt(d: Date): string { diff --git a/web-next/app/[locale]/change-faction-character/page.tsx b/web-next/app/[locale]/change-faction-character/page.tsx index 79d325c..04db50d 100644 --- a/web-next/app/[locale]/change-faction-character/page.tsx +++ b/web-next/app/[locale]/change-faction-character/page.tsx @@ -10,7 +10,11 @@ import { PaidServiceForm } from '@/components/PaidServiceForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Cambiar facción del personaje' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharServiceB.changeFaction' }) + return { title: t('title') } +} const GOLD_ICON = '/nw-themes/nw-ryu/nw-images/nw-icons/money-gold.gif' @@ -37,7 +41,7 @@ export default async function ChangeFactionCharacterPage({ params }: { params: P const t = await getTranslations('CharServiceB.changeFaction') return ( - +

{t.rich('intro', { s: (c) => {c} })}

diff --git a/web-next/app/[locale]/change-race-character/page.tsx b/web-next/app/[locale]/change-race-character/page.tsx index 5fb6331..f8d36d3 100644 --- a/web-next/app/[locale]/change-race-character/page.tsx +++ b/web-next/app/[locale]/change-race-character/page.tsx @@ -10,7 +10,11 @@ import { PaidServiceForm } from '@/components/PaidServiceForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Cambiar raza del personaje' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharServiceB.changeRace' }) + return { title: t('title') } +} export default async function ChangeRaceCharacterPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params @@ -25,7 +29,7 @@ export default async function ChangeRaceCharacterPage({ params }: { params: Prom const t = await getTranslations('CharServiceB.changeRace') return ( - +

diff --git a/web-next/app/[locale]/changelogs/page.tsx b/web-next/app/[locale]/changelogs/page.tsx index 2b0677e..93a6001 100644 --- a/web-next/app/[locale]/changelogs/page.tsx +++ b/web-next/app/[locale]/changelogs/page.tsx @@ -1,9 +1,13 @@ import type { Metadata } from 'next' -import { setRequestLocale } from 'next-intl/server' +import { setRequestLocale, getTranslations } from 'next-intl/server' import { getCommits } from '@/lib/changelog' import { Pagination } from '@/components/Pagination' -export const metadata: Metadata = { title: 'Changelogs' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Misc' }) + return { title: t('changelogs.title') } +} function formatFecha(iso: string): string { if (!iso) return '' @@ -29,6 +33,7 @@ export default async function ChangelogsPage({ const sp = await searchParams const page = Math.max(1, Number(sp.page) || 1) setRequestLocale(locale) + const t = await getTranslations('Misc') const { commits, totalPages } = await getCommits(page, 5) return ( @@ -36,12 +41,12 @@ export default async function ChangelogsPage({

-

Changelogs

+

{t('changelogs.title')}

{commits.length === 0 ? ( -

No se pudieron cargar los cambios en este momento.

+

{t('changelogs.loadError')}

) : ( <> {commits.map((c) => ( diff --git a/web-next/app/[locale]/contact-us/page.tsx b/web-next/app/[locale]/contact-us/page.tsx index c716ee1..7f28a5e 100644 --- a/web-next/app/[locale]/contact-us/page.tsx +++ b/web-next/app/[locale]/contact-us/page.tsx @@ -1,8 +1,10 @@ import type { Metadata } from 'next' import { getTranslations } from 'next-intl/server' -export const metadata: Metadata = { - title: 'Contáctanos', +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Legal' }) + return { title: t('contact.title') } } export default async function ContactUsPage() { diff --git a/web-next/app/[locale]/cookies/page.tsx b/web-next/app/[locale]/cookies/page.tsx index 9fb72eb..d692b41 100644 --- a/web-next/app/[locale]/cookies/page.tsx +++ b/web-next/app/[locale]/cookies/page.tsx @@ -3,8 +3,10 @@ import { getTranslations } from 'next-intl/server' import { Link } from '@/i18n/navigation' import { CookieConsentButtons, ConsentStatus } from '@/components/CookieConsent' -export const metadata: Metadata = { - title: 'Declaración de Cookies', +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Legal' }) + return { title: t('cookies.title') } } export default async function CookiesPage() { diff --git a/web-next/app/[locale]/customize-character/page.tsx b/web-next/app/[locale]/customize-character/page.tsx index 2a7edd3..f609b23 100644 --- a/web-next/app/[locale]/customize-character/page.tsx +++ b/web-next/app/[locale]/customize-character/page.tsx @@ -10,7 +10,11 @@ import { PaidServiceForm } from '@/components/PaidServiceForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Personalizar personaje' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharServiceB.customize' }) + return { title: t('title') } +} export default async function CustomizeCharacterPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params @@ -25,7 +29,7 @@ export default async function CustomizeCharacterPage({ params }: { params: Promi const t = await getTranslations('CharServiceB.customize') return ( - +

{t.rich('intro', { s: (c) => {c} })}

diff --git a/web-next/app/[locale]/d-points/page.tsx b/web-next/app/[locale]/d-points/page.tsx index ea0fa8d..1d28ea5 100644 --- a/web-next/app/[locale]/d-points/page.tsx +++ b/web-next/app/[locale]/d-points/page.tsx @@ -9,7 +9,11 @@ import { DPointsTabs } from '@/components/DPointsTabs' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Adquirir PD' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Points' }) + return { title: t('dpoints.title') } +} export default async function DPointsPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/download-addons/page.tsx b/web-next/app/[locale]/download-addons/page.tsx index d6cba63..7330a98 100644 --- a/web-next/app/[locale]/download-addons/page.tsx +++ b/web-next/app/[locale]/download-addons/page.tsx @@ -1,7 +1,11 @@ import type { Metadata } from 'next' import { getTranslations } from 'next-intl/server' -export const metadata: Metadata = { title: 'Descarga de addons' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Misc' }) + return { title: t('downloadAddons.title') } +} // Lista de addons (edítala con los tuyos). name/descKey/url. const ADDONS: { name: string; descKey: string; url: string }[] = [ diff --git a/web-next/app/[locale]/download-client/page.tsx b/web-next/app/[locale]/download-client/page.tsx index 749e968..ef7737d 100644 --- a/web-next/app/[locale]/download-client/page.tsx +++ b/web-next/app/[locale]/download-client/page.tsx @@ -1,17 +1,23 @@ import type { Metadata } from 'next' +import { getTranslations, setRequestLocale } from 'next-intl/server' import { ClientDownload } from '@/components/ClientDownload' -export const metadata: Metadata = { - title: 'Descarga del cliente', +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'UI' }) + return { title: t('clientDownload.pageTitle') } } -export default function DownloadClientPage() { +export default async function DownloadClientPage({ params }: { params: Promise<{ locale: string }> }) { + const { locale } = await params + setRequestLocale(locale) + const t = await getTranslations('UI') return (
-

Descarga del cliente

+

{t('clientDownload.pageTitle')}

diff --git a/web-next/app/[locale]/gold-character/page.tsx b/web-next/app/[locale]/gold-character/page.tsx index a621da4..e9fc743 100644 --- a/web-next/app/[locale]/gold-character/page.tsx +++ b/web-next/app/[locale]/gold-character/page.tsx @@ -10,7 +10,11 @@ import { GoldForm } from '@/components/GoldForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Adquirir oro' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharServiceB.gold' }) + return { title: t('title') } +} const GOLD_ICON = '/nw-themes/nw-ryu/nw-images/nw-icons/money-gold.gif' @@ -27,7 +31,7 @@ export default async function GoldCharacterPage({ params }: { params: Promise<{ const t = await getTranslations('CharServiceB.gold') return ( - +

{t.rich('intro', { s: (c) => {c} })}

diff --git a/web-next/app/[locale]/help/page.tsx b/web-next/app/[locale]/help/page.tsx index 36957d9..e5754b6 100644 --- a/web-next/app/[locale]/help/page.tsx +++ b/web-next/app/[locale]/help/page.tsx @@ -2,7 +2,11 @@ import type { Metadata } from 'next' import { getTranslations, setRequestLocale } from 'next-intl/server' import { getRealmName } from '@/lib/realm' -export const metadata: Metadata = { title: 'Ayuda' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Misc' }) + return { title: t('help.title') } +} export const dynamic = 'force-dynamic' diff --git a/web-next/app/[locale]/legal-notice/page.tsx b/web-next/app/[locale]/legal-notice/page.tsx index 18953f9..a6b67a4 100644 --- a/web-next/app/[locale]/legal-notice/page.tsx +++ b/web-next/app/[locale]/legal-notice/page.tsx @@ -1,8 +1,10 @@ import type { Metadata } from 'next' import { getTranslations } from 'next-intl/server' -export const metadata: Metadata = { - title: 'Aviso legal', +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Legal' }) + return { title: t('legalNotice.title') } } export default async function LegalNoticePage() { diff --git a/web-next/app/[locale]/level-up-character/page.tsx b/web-next/app/[locale]/level-up-character/page.tsx index aaf814f..1c01a91 100644 --- a/web-next/app/[locale]/level-up-character/page.tsx +++ b/web-next/app/[locale]/level-up-character/page.tsx @@ -10,7 +10,11 @@ import { PaidServiceForm } from '@/components/PaidServiceForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Subir a nivel 80' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharServiceB.levelUp' }) + return { title: t('title') } +} export default async function LevelUpCharacterPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params @@ -25,7 +29,7 @@ export default async function LevelUpCharacterPage({ params }: { params: Promise const t = await getTranslations('CharServiceB.levelUp') return ( - +

{t.rich('intro', { s: (c) => {c} })}

diff --git a/web-next/app/[locale]/points-history/page.tsx b/web-next/app/[locale]/points-history/page.tsx index fb94dd9..0fb2380 100644 --- a/web-next/app/[locale]/points-history/page.tsx +++ b/web-next/app/[locale]/points-history/page.tsx @@ -8,7 +8,11 @@ import { ServiceBox } from '@/components/ServiceBox' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Historial de PD y PV' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'History' }) + return { title: t('points.pageTitle') } +} /** Fecha en formato DD-MM-YYYY HH:MM. */ function fmt(d: Date): string { diff --git a/web-next/app/[locale]/privacy-policy/page.tsx b/web-next/app/[locale]/privacy-policy/page.tsx index 2ea6b3b..a61bc50 100644 --- a/web-next/app/[locale]/privacy-policy/page.tsx +++ b/web-next/app/[locale]/privacy-policy/page.tsx @@ -1,8 +1,10 @@ import type { Metadata } from 'next' import { getTranslations } from 'next-intl/server' -export const metadata: Metadata = { - title: 'Política de privacidad', +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Legal' }) + return { title: t('privacy.title') } } export default async function PrivacyPolicyPage() { diff --git a/web-next/app/[locale]/promo-code/page.tsx b/web-next/app/[locale]/promo-code/page.tsx index e4ec037..e77589a 100644 --- a/web-next/app/[locale]/promo-code/page.tsx +++ b/web-next/app/[locale]/promo-code/page.tsx @@ -9,7 +9,11 @@ import { PromoCodeForm } from '@/components/PromoCodeForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Código de promoción' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Points' }) + return { title: t('promo.title') } +} export default async function PromoCodePage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/quest-character/page.tsx b/web-next/app/[locale]/quest-character/page.tsx index d60edb5..f038634 100644 --- a/web-next/app/[locale]/quest-character/page.tsx +++ b/web-next/app/[locale]/quest-character/page.tsx @@ -11,7 +11,11 @@ import { QuestTrackerForm } from '@/components/QuestTrackerForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Rastreador de misiones' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharService' }) + return { title: t('quest.pageTitle') } +} const QUEST_DB = 'https://wotlk.novawow.com' const CLASS_GROUPS: { css: string; name: string }[] = [ diff --git a/web-next/app/[locale]/refund-policy/page.tsx b/web-next/app/[locale]/refund-policy/page.tsx index 370a2ae..7a0bbd1 100644 --- a/web-next/app/[locale]/refund-policy/page.tsx +++ b/web-next/app/[locale]/refund-policy/page.tsx @@ -1,8 +1,10 @@ import type { Metadata } from 'next' import { getTranslations } from 'next-intl/server' -export const metadata: Metadata = { - title: 'Política de reembolso', +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Legal' }) + return { title: t('refund.title') } } export default async function RefundPolicyPage() { diff --git a/web-next/app/[locale]/rename-character/page.tsx b/web-next/app/[locale]/rename-character/page.tsx index 6f2acc4..98d19c2 100644 --- a/web-next/app/[locale]/rename-character/page.tsx +++ b/web-next/app/[locale]/rename-character/page.tsx @@ -10,7 +10,11 @@ import { PaidServiceForm } from '@/components/PaidServiceForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Renombrar personaje' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharServiceB.rename' }) + return { title: t('title') } +} export default async function RenameCharacterPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params @@ -25,7 +29,7 @@ export default async function RenameCharacterPage({ params }: { params: Promise< const t = await getTranslations('CharServiceB.rename') return ( - +

{t.rich('intro', { s: (c) => {c} })}

diff --git a/web-next/app/[locale]/rename-guild/page.tsx b/web-next/app/[locale]/rename-guild/page.tsx index 07cc44b..367224c 100644 --- a/web-next/app/[locale]/rename-guild/page.tsx +++ b/web-next/app/[locale]/rename-guild/page.tsx @@ -9,7 +9,11 @@ import { RenameGuildForm } from '@/components/RenameGuildForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Renombrar hermandad' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Points' }) + return { title: t('renameGuild.title') } +} export default async function RenameGuildPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/restore-character/page.tsx b/web-next/app/[locale]/restore-character/page.tsx index fbde81f..494948c 100644 --- a/web-next/app/[locale]/restore-character/page.tsx +++ b/web-next/app/[locale]/restore-character/page.tsx @@ -10,7 +10,11 @@ import { RestoreCharacterForm } from '@/components/RestoreCharacterForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Recuperar personaje' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharService' }) + return { title: t('restoreChar.pageTitle') } +} export default async function RestoreCharacterPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/restore-items/page.tsx b/web-next/app/[locale]/restore-items/page.tsx index e7b7b0b..d87c485 100644 --- a/web-next/app/[locale]/restore-items/page.tsx +++ b/web-next/app/[locale]/restore-items/page.tsx @@ -11,7 +11,11 @@ import { RestoreItemsForm } from '@/components/RestoreItemsForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Recuperar ítems' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharService' }) + return { title: t('restoreItems.pageTitle') } +} export default async function RestoreItemsPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/security-2falogin/page.tsx b/web-next/app/[locale]/security-2falogin/page.tsx index d807ca9..ead5879 100644 --- a/web-next/app/[locale]/security-2falogin/page.tsx +++ b/web-next/app/[locale]/security-2falogin/page.tsx @@ -8,7 +8,11 @@ import { TwoFactorLogin } from '@/components/TwoFactorLogin' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Verificación en 2 pasos' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Misc' }) + return { title: t('twofaLogin.pageTitle') } +} const IMG = '/nw-themes/nw-ryu/nw-images' diff --git a/web-next/app/[locale]/security-history/page.tsx b/web-next/app/[locale]/security-history/page.tsx index b1e0509..03eb772 100644 --- a/web-next/app/[locale]/security-history/page.tsx +++ b/web-next/app/[locale]/security-history/page.tsx @@ -9,7 +9,11 @@ import { ServiceBox } from '@/components/ServiceBox' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Historial de seguridad' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'History' }) + return { title: t('security.pageTitle') } +} /** Fecha en formato HH:MM:SS DD-MM-YYYY (como el diseño). */ function fmt(d: Date): string { diff --git a/web-next/app/[locale]/send-gift/page.tsx b/web-next/app/[locale]/send-gift/page.tsx index 99a0cc5..9c3a1c3 100644 --- a/web-next/app/[locale]/send-gift/page.tsx +++ b/web-next/app/[locale]/send-gift/page.tsx @@ -11,7 +11,11 @@ import { SendGiftForm } from '@/components/SendGiftForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Enviar regalo' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharService' }) + return { title: t('sendGift.pageTitle') } +} export default async function SendGiftPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/terms-and-conditions/page.tsx b/web-next/app/[locale]/terms-and-conditions/page.tsx index e3c9751..a608871 100644 --- a/web-next/app/[locale]/terms-and-conditions/page.tsx +++ b/web-next/app/[locale]/terms-and-conditions/page.tsx @@ -1,8 +1,10 @@ import type { Metadata } from 'next' import { getTranslations } from 'next-intl/server' -export const metadata: Metadata = { - title: 'Términos y condiciones', +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Legal' }) + return { title: t('terms.title') } } export default async function TermsAndConditionsPage() { diff --git a/web-next/app/[locale]/trade-points/page.tsx b/web-next/app/[locale]/trade-points/page.tsx index 7f12b31..6a0406f 100644 --- a/web-next/app/[locale]/trade-points/page.tsx +++ b/web-next/app/[locale]/trade-points/page.tsx @@ -9,7 +9,11 @@ import { TradePointsForm } from '@/components/TradePointsForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Comercio de PD' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Points' }) + return { title: t('trade.title') } +} export default async function TradePointsPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/trans-history/page.tsx b/web-next/app/[locale]/trans-history/page.tsx index 5618843..dbf5294 100644 --- a/web-next/app/[locale]/trans-history/page.tsx +++ b/web-next/app/[locale]/trans-history/page.tsx @@ -8,7 +8,11 @@ import { ServiceBox } from '@/components/ServiceBox' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Historial de transacciones' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'History' }) + return { title: t('trans.pageTitle') } +} /** Fecha en formato DD-MM-YYYY HH:MM:SS. */ function fmt(d: Date): string { diff --git a/web-next/app/[locale]/transfer-character/page.tsx b/web-next/app/[locale]/transfer-character/page.tsx index 0ef0a01..1cbceba 100644 --- a/web-next/app/[locale]/transfer-character/page.tsx +++ b/web-next/app/[locale]/transfer-character/page.tsx @@ -11,7 +11,11 @@ import { TransferForm } from '@/components/TransferForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Transferir personaje' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'CharService' }) + return { title: t('transfer.pageTitle') } +} export default async function TransferCharacterPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/transfer-d-points/page.tsx b/web-next/app/[locale]/transfer-d-points/page.tsx index 872b4dc..0043a47 100644 --- a/web-next/app/[locale]/transfer-d-points/page.tsx +++ b/web-next/app/[locale]/transfer-d-points/page.tsx @@ -9,7 +9,11 @@ import { TransferDPointsForm } from '@/components/TransferDPointsForm' export const dynamic = 'force-dynamic' -export const metadata: Metadata = { title: 'Transferir PD' } +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { + const { locale } = await params + const t = await getTranslations({ locale, namespace: 'Points' }) + return { title: t('transferDp.title') } +} export default async function TransferDPointsPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/messages/en.json b/web-next/messages/en.json index 906d269..b578a1d 100644 --- a/web-next/messages/en.json +++ b/web-next/messages/en.json @@ -892,7 +892,8 @@ "noteConfirm": "Please make sure you have chosen the correct character, as this action cannot be undone once performed.", "requires": "Requires {price} (SumUp)", "payLabel": "CHANGE FACTION", - "confirm": "Are you sure you want to change the selected character’s faction for {price} € (SumUp)?" + "confirm": "Are you sure you want to change the selected character’s faction for {price} € (SumUp)?", + "title": "Change character faction" }, "changeRace": { "warning": "THIS CHANGE DOES NOT ALLOW SWITCHING TO THE OPPOSITE FACTION", @@ -905,7 +906,8 @@ "noteConfirm": "Please make sure you have chosen the correct character, as this action cannot be undone once performed.", "requires": "Requires {price} (SumUp)", "payLabel": "CHANGE RACE", - "confirm": "Are you sure you want to change the selected character’s race for {price} € (SumUp)?" + "confirm": "Are you sure you want to change the selected character’s race for {price} € (SumUp)?", + "title": "Change character race" }, "customize": { "intro": "The Customize character tool lets you change the following aspects of a character:", @@ -922,7 +924,8 @@ "noteConfirm": "Please make sure you have chosen the correct character, as this action cannot be undone once performed.", "requires": "Requires {price} (SumUp)", "payLabel": "CUSTOMIZE", - "confirm": "Are you sure you want to customize the selected character for {price} € (SumUp)?" + "confirm": "Are you sure you want to customize the selected character for {price} € (SumUp)?", + "title": "Customize character" }, "levelUp": { "intro": "The Level up to 80 tool lets you raise any character to level 80.", @@ -934,7 +937,8 @@ "noteConfirm": "Please make sure you have chosen the correct character, as this action cannot be undone once performed.", "requires": "Requires {price} (SumUp)", "payLabel": "LEVEL UP TO 80", - "confirm": "Are you sure you want to level the selected character up to 80 for {price} € (SumUp)?" + "confirm": "Are you sure you want to level the selected character up to 80 for {price} € (SumUp)?", + "title": "Level up to 80" }, "gold": { "intro": "The Acquire gold tool lets you send gold to a character.", @@ -942,7 +946,8 @@ "mailInfo": "When you log into the realm with that character, you will have the message with the selected amount of gold in your mailbox.", "noteLegend": "NOTE", "noteConfirm": "Please make sure you have chosen the correct character, as this action cannot be undone once performed.", - "requiresLabel": "Requires" + "requiresLabel": "Requires", + "title": "Acquire gold" }, "rename": { "intro": "The Rename character tool lets you change a character's name.", @@ -952,7 +957,8 @@ "noteConfirm": "Please make sure you have chosen the correct character, as this action cannot be undone once performed.", "requires": "Requires {price} (SumUp)", "payLabel": "RENAME", - "confirm": "Are you sure you want to rename the selected character for {price} € (SumUp)?" + "confirm": "Are you sure you want to rename the selected character for {price} € (SumUp)?", + "title": "Rename character" } }, "History": { @@ -1371,6 +1377,10 @@ "emailTitle": "Email", "email1": "The server has different email addresses dedicated to different server topics.", "email2": "Depending on your problem, use the appropriate one to send us an email message." + }, + "changelogs": { + "title": "Changelogs", + "loadError": "The changelog could not be loaded right now." } }, "Points": { @@ -1785,7 +1795,8 @@ "macStep8": "8 - The client will start automatically.", "macStep9": "9 - Once you finish and exit the client, click \"Done\" in the CrossOver application.", "macStep10": "10 - The next time you want to return, open the CrossOver application, look at the left panel and select the WoW that was previously created in Bottle, and click RUN COMMAND, select WoW.exe and click ¨Save command as launcher¨, then click Open.", - "macStep11": "11 - Finally, you will see the WoW icon under the WoW Bottle tab; now you can drag the WoW launcher to the Dock, so that next time you want to log in, you simply run WoW from the Dock." + "macStep11": "11 - Finally, you will see the WoW icon under the WoW Bottle tab; now you can drag the WoW launcher to the Dock, so that next time you want to log in, you simply run WoW from the Dock.", + "pageTitle": "Download the client" }, "cookie": { "dialogLabel": "Cookie consent", diff --git a/web-next/messages/es.json b/web-next/messages/es.json index 0c8672c..bf907f1 100644 --- a/web-next/messages/es.json +++ b/web-next/messages/es.json @@ -892,7 +892,8 @@ "noteConfirm": "Por favor, asegúrate de haber escogido al personaje correcto ya que esta acción no es reversible una vez realizada.", "requires": "Requiere {price} (SumUp)", "payLabel": "CAMBIAR FACCIÓN", - "confirm": "¿Estás seguro de cambiar de facción al personaje seleccionado por {price} € (SumUp)?" + "confirm": "¿Estás seguro de cambiar de facción al personaje seleccionado por {price} € (SumUp)?", + "title": "Cambiar facción del personaje" }, "changeRace": { "warning": "ESTE CAMBIO NO PERMITE CAMBIAR A LA FACCIÓN CONTRARIA", @@ -905,7 +906,8 @@ "noteConfirm": "Por favor, asegúrate de haber escogido al personaje correcto ya que esta acción no es reversible una vez realizada.", "requires": "Requiere {price} (SumUp)", "payLabel": "CAMBIAR RAZA", - "confirm": "¿Estás seguro de cambiar de raza al personaje seleccionado por {price} € (SumUp)?" + "confirm": "¿Estás seguro de cambiar de raza al personaje seleccionado por {price} € (SumUp)?", + "title": "Cambiar raza del personaje" }, "customize": { "intro": "La herramienta Personalizar personaje te permite cambiar los siguientes aspectos un personaje:", @@ -922,7 +924,8 @@ "noteConfirm": "Por favor, asegúrate de haber escogido al personaje correcto ya que esta acción no es reversible una vez realizada.", "requires": "Requiere {price} (SumUp)", "payLabel": "PERSONALIZAR", - "confirm": "¿Estás seguro de personalizar al personaje seleccionado por {price} € (SumUp)?" + "confirm": "¿Estás seguro de personalizar al personaje seleccionado por {price} € (SumUp)?", + "title": "Personalizar personaje" }, "levelUp": { "intro": "La herramienta Subir a nivel 80 te permite subir cualquier personaje al nivel 80.", @@ -934,7 +937,8 @@ "noteConfirm": "Por favor, asegúrate de haber escogido al personaje correcto ya que esta acción no es reversible una vez realizada.", "requires": "Requiere {price} (SumUp)", "payLabel": "SUBIR A NIVEL 80", - "confirm": "¿Estás seguro de subir a nivel 80 al personaje seleccionado por {price} € (SumUp)?" + "confirm": "¿Estás seguro de subir a nivel 80 al personaje seleccionado por {price} € (SumUp)?", + "title": "Subir a nivel 80" }, "gold": { "intro": "La herramienta Adquirir oro te permite enviar oro a un personaje.", @@ -942,7 +946,8 @@ "mailInfo": "Cuando entres al reino con dicho personaje, tendrás el mensaje con la cantidad de oro seleccionada en tu buzón.", "noteLegend": "NOTA", "noteConfirm": "Por favor, asegúrate de haber escogido al personaje correcto ya que esta acción no es reversible una vez realizada.", - "requiresLabel": "Requiere" + "requiresLabel": "Requiere", + "title": "Adquirir oro" }, "rename": { "intro": "La herramienta Renombrar personaje te permite cambiar de nombre a un personaje.", @@ -952,7 +957,8 @@ "noteConfirm": "Por favor, asegúrate de haber escogido al personaje correcto ya que esta acción no es reversible una vez realizada.", "requires": "Requiere {price} (SumUp)", "payLabel": "RENOMBRAR", - "confirm": "¿Estás seguro de renombrar al personaje seleccionado por {price} € (SumUp)?" + "confirm": "¿Estás seguro de renombrar al personaje seleccionado por {price} € (SumUp)?", + "title": "Renombrar personaje" } }, "History": { @@ -1371,6 +1377,10 @@ "emailTitle": "Correo electrónico", "email1": "El servidor tiene diferentes direcciones de correo dedicados a diferentes temas del servidor.", "email2": "Depende cual sea tu problema, usa el adecuado para enviarnos un mensaje de correo." + }, + "changelogs": { + "title": "Changelogs", + "loadError": "No se pudieron cargar los cambios en este momento." } }, "Points": { @@ -1785,7 +1795,8 @@ "macStep8": "8 - El cliente se iniciará automáticamente.", "macStep9": "9 - Una vez que termines y salgas del cliente, haz clic en \"Listo\" en la aplicación CrossOver.", "macStep10": "10 - La próxima vez que desees volver, abre la aplicación CrossOver, mira el panel izquierdo y selecciona en Botella el WoW que se creó anteriormente, y haz clic en RUN COMMAND, selecciona WoW.exe y haz clic en ¨Guardar comando como iniciador¨, luego haz clic en Abrir.", - "macStep11": "11 - Finalmente, verás el ícono de WoW debajo de la pestaña Botella de WoW, ahora puedes arrastrar el lanzador de WoW al Dock, de esta manera, la próxima vez que quieras entrar, simplemente ejecuta WoW desde el Dock." + "macStep11": "11 - Finalmente, verás el ícono de WoW debajo de la pestaña Botella de WoW, ahora puedes arrastrar el lanzador de WoW al Dock, de esta manera, la próxima vez que quieras entrar, simplemente ejecuta WoW desde el Dock.", + "pageTitle": "Descarga del cliente" }, "cookie": { "dialogLabel": "Consentimiento de cookies",