i18n: traducir toda la app (ES + EN) — páginas y componentes con texto hardcodeado

Se externaliza el texto español hardcodeado de ~55 archivos a next-intl y se añaden
traducciones al inglés, con paridad de claves es/en. Nuevos namespaces: History,
CharService, CharServiceB, Points, Legal, UI, Misc (+ altas en Common/Admin).

- Historiales (PD/PV, transacciones, sanciones, seguridad), servicios de personaje
  (transfer, send-gift, quest, restore-*, change-*, customize, level-up, gold, rename),
  PD/pagos (d-points, trade, promo, transfer-dp, rename-guild, DPointsTabs), páginas
  legales (cookies, privacidad, términos, reembolsos, aviso legal, contacto), layout
  (cabecera, footer, cookies, 2FA, descargas, jugadores, recluta) y páginas varias
  (home, reino, ayuda, addons, 2falogin).
- Textos con markup inline via t.rich; interpolación con ICU.
- Componente <NoteLegend/> para la leyenda NOTA/NOTE compartida.
- payLabel/confirmText de los servicios de pago traducidos.
- Verificado: tsc OK, next build OK, todas las claves t() resuelven en es y en,
  todos los t.rich casan etiquetas, páginas 200 en /es/ y /en/ sin claves crudas.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-14 18:58:54 +00:00
parent e457a43f05
commit 651d8deafc
57 changed files with 3516 additions and 1190 deletions
+10 -8
View File
@@ -1,30 +1,32 @@
import type { Metadata } from 'next'
import { getTranslations } from 'next-intl/server'
export const metadata: Metadata = {
title: 'Aviso legal',
}
export default function LegalNoticePage() {
export default async function LegalNoticePage() {
const t = await getTranslations('Legal')
return (
<div className="main-page">
<div className="middle-content">
<div className="body-content">
<div className="title-content">
<h1>Aviso legal</h1>
<h1>{t('legalNotice.title')}</h1>
</div>
<div className="box-content">
<div className="body-box-content">
<p>El sitio web &quot;UltimoWoW.com&quot; y sus subdominios (en adelante, &quot;el sitio web&quot;) se ofrecen únicamente con fines informativos y de entretenimiento. UltimoWoW no se hace responsable del uso que los usuarios hagan del sitio web. Aunque se procura que se un uso correcto, UltimoWoW no asume responsabilidad por las acciones, decisiones o consecuencias derivadas del uso del sitio web. Los usuarios son responsables de verificar la precisión, integridad y utilidad de la información proporcionada, así como de cumplir con las leyes y regulaciones aplicables al utilizar el contenido del sitio web.</p>
<p>{t('legalNotice.p1')}</p>
<br />
<p>Enlaces a terceros: El sitio web puede contener enlaces a sitios web de terceros. Estos enlaces se proporcionan únicamente para tu conveniencia y no implican el respaldo o afiliación de UltimoWoW con dichos sitios web. UltimoWoW no se hace responsable del contenido o las prácticas de privacidad de estos sitios web de terceros.</p>
<p>{t('legalNotice.p2')}</p>
<br />
<p>Privacidad y Cookies: La recopilación y uso de tus datos personales se rigen por nuestra Política de Privacidad y el uso de cookies se rige por nuestra Declaración de Cookies. Al utilizar el sitio web, aceptas nuestras prácticas descritas en dichas políticas.</p>
<p>{t('legalNotice.p3')}</p>
<br />
<p>Derechos de autor: Los usuarios del sitio web deben respetar los derechos de autor y no publicar contenido que infrinja los derechos de propiedad intelectual de terceros. UltimoWoW se compromete a proteger los derechos de autor y cumplir con las leyes aplicables. Si encuentras contenido infractor, contáctanos utilizando el mecanismo de reclamación de infracción descrito a continuación.</p>
<p>{t('legalNotice.p4')}</p>
<br />
<p>Mecanismo de reclamación de infracción: Si crees que tu trabajo ha sido utilizado de manera no autorizada en el sitio web, puedes presentar una reclamación por infracción de derechos de autor proporcionando la información requerida. Contáctanos utilizando los datos de contacto a continuación.</p>
<p>{t('legalNotice.p5')}</p>
<br />
<p className="second-brown">Contacto</p>
<p className="second-brown">{t('legalNotice.contactTitle')}</p>
<p>ultimowow.com</p>
<p>info@ultimowow.com</p>
</div>