2daf920c01
El catálogo original solo tiene el nombre en español, así que /en/store venía
mostrando los ítems en español. Ahora salen de `home_item_data` (extraída de
los DB2 del cliente, commit 4ba9c42), que es el único sitio con el nombre en
inglés.
- getStoreCatalog(locale) hace LEFT JOIN con home_item_data y elige name_es o
name_en. Si falta el nombre en ese idioma se cae al del catálogo, que siempre
está, así que ningún ítem puede quedarse sin nombre.
- La columna se elige de una lista cerrada ('en' -> name_en, resto -> name_es):
nunca se interpola el locale crudo, que viene de la URL.
- /api/store/catalog recibe el locale por query: la ruta no cuelga de [locale].
Verificado en los dos idiomas: 45327 sale "Grito de la sirena" en /es y
"Siren's Cry" en /en. El árbol sigue devolviendo las 3068 filas y ninguna sin
nombre (el JOIN no duplica: `entry` es clave primaria).
Pendiente: los nombres de las CATEGORÍAS siguen solo en español
(home_store_category.name), así que /en/store se ve a medias. No son datos del
juego, así que los DB2 no ayudan: hay que traducir 218 nombres distintos.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
17 lines
799 B
TypeScript
17 lines
799 B
TypeScript
import { getSession } from '@/lib/session'
|
|
import { getStoreCatalog } from '@/lib/store'
|
|
|
|
/** Árbol de la tienda (categorías + ítems). Se carga tras elegir personaje. */
|
|
export async function GET(request: Request) {
|
|
const session = await getSession()
|
|
if (!session.accountId || !session.username) {
|
|
return Response.json({ success: false, error: 'notAuthenticated' }, { status: 401 })
|
|
}
|
|
// El idioma lo manda el cliente: esta ruta no cuelga de [locale]. Decide en qué
|
|
// idioma salen los nombres de los ítems; getStoreCatalog solo distingue 'en'
|
|
// del resto, así que un valor inesperado cae en español.
|
|
const locale = new URL(request.url).searchParams.get('locale') ?? 'es'
|
|
const catalog = await getStoreCatalog(locale)
|
|
return Response.json({ success: true, catalog })
|
|
}
|