Hola,
este tema se basa en una discusión en ask.discourse.com, donde notamos lo que parece ser el mismo problema que en este antiguo tema de Meta:
Embed: las fechas no están localizadas
Estamos utilizando la configuración predeterminada de comentarios incrustados de Discourse documentada aquí, sin ninguna personalización especial de la salida incrustada:
Incrustar comentarios de Discourse en otro sitio web mediante Javascript
Probé el nuevo método fullApp y mostraba fechas en finés, pero para este sitio me gusta más el enfoque anterior que se muestra aquí.
Lo que vemos
La interfaz de usuario de los comentarios incrustados está localizada correctamente, pero el texto de la fecha del mensaje sigue mostrándose en inglés.
Por ejemplo, en el incrustado podemos ver:
abril de 2025
y la herramienta de información/título contiene una fecha/hora en inglés como:
9 de abril de 2025, 3.31pm
Comportamiento esperado
Las fechas de los comentarios incrustados deberían seguir la configuración regional del sitio o del usuario en lugar de aparecer siempre en inglés.
En nuestro caso, esperaríamos un formato de fecha localizado en finés en el incrustado predeterminado.
Solución alternativa poco elegante
Con la ayuda de Claude, implementé una solución alternativa bastante poco elegante utilizando un componente personalizado y agregando JavaScript a la sección embedded_header. Ya tenía algo de CSS basado en si la clase era normal (discourse-upotus) u oscura (discourse-upotus-tumma).
<script type="text/javascript">
const selector = '.discourse-upotus a.post-date, .discourse-upotus-tumma a.post-date';
document.querySelectorAll(selector).forEach(el => {
const title = el.getAttribute('title');
if (!title) return;
const match = title.match(/(\w+) (\d+), (\d{4}),\s*([\d]+)\.([\d]+)(am|pm)/i);
if (!match) return;
const [, month, day, year, hours, minutes, ampm] = match;
const date = new Date(`${month} ${day}, ${year}`);
if (isNaN(date)) return;
let h = parseInt(hours);
if (ampm.toLowerCase() === 'pm' && h !== 12) h += 12;
if (ampm.toLowerCase() === 'am' && h === 12) h = 0;
date.setHours(h, parseInt(minutes));
const pvm = date.toLocaleDateString('fi-FI', { day: 'numeric', month: 'long', year: 'numeric' });
const klo = date.toLocaleTimeString('fi-FI', { hour: '2-digit', minute: '2-digit' });
el.textContent = pvm;
el.setAttribute('title', `${pvm} klo ${klo}`);
});
</script>
Notas
- esto ocurre con el incrustado estándar/predeterminado
- no se agregó ninguna lógica de formato de fecha personalizada originalmente
- nos referimos específicamente a la salida de fechas dentro del iframe de comentarios incrustados
- estamos ejecutando la última y mejor versión de Discourse
¿Podría alguien confirmar si esto sigue siendo un problema conocido y si ya existe una solución más reciente o un tema relacionado al respecto?
¡Gracias!
