/** * Traduce dinámicamente cualquier objeto de la base de datos (Prisma) * leyendo su campo `translationsJson`. * * @param item El objeto original de la base de datos (ej: una Noticia o Aplicación) * @param locale El idioma actual de la URL (ej: 'it', 'es', 'vec') * @returns El mismo objeto, pero con sus campos sobreescritos en el idioma correcto. */ export function getLocalizedData(item: T, locale: string): T { // 1. Si el idioma es el maestro (inglés) o no hay traducciones, devolvemos el original if (locale === 'en' || !item.translationsJson) { return item; } try { // 2. Desempaquetamos el JSON de traducciones const translations = JSON.parse(item.translationsJson); // 3. Buscamos si existe el idioma que pide el usuario (ej: translations['it']) const localeData = translations[locale]; if (localeData) { // 4. Fusionamos el objeto original con las traducciones. // Lo que esté traducido sobrescribe al original. Lo que no, queda en inglés. return { ...item, ...localeData }; } } catch (error) { console.error("Error parsing translations JSON for item:", item, error); } // Fallback de seguridad: Si algo falla, siempre mostramos inglés return item; }