Olá,
este tópico baseia-se em uma discussão no ask.discourse.com, onde notamos o que parece ser o mesmo problema de um tópico mais antigo no Meta:
Embed: dates are not localized
Estamos usando a configuração padrão de comentários incorporados do Discourse, conforme documentado aqui, sem nenhuma customização especial na saída do embed:
Embed Discourse comments on another website via Javascript
Tentei o novo método fullApp e ele exibia datas em finlandês, mas prefiro a abordagem mais antiga aqui para este site.
O que vemos
A interface dos comentários incorporados está localizada corretamente, mas o texto da data do post ainda é exibido em inglês.
Por exemplo, no embed podemos ver:
April 2025
e a dica de ferramenta/título contém uma data/hora em inglês, como:
April 9, 2025, 3.31pm
Comportamento esperado
As datas dos comentários incorporados devem seguir o idioma do site ou do usuário, em vez de sempre aparecerem em inglês.
No nosso caso, esperaríamos formatação de data localizada em finlandês no embed padrão.
Workaround sujo
Com a ajuda do Claude, fiz um workaround bastante sujo usando um componente personalizado e adicionando JavaScript à seção embedded_header — eu já tinha algum CSS baseado se a classe é normal (discourse-upotus) ou escura (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>
Observações
- isso ocorre com o embed padrão/normal
- nenhuma lógica de formatação de data personalizada foi adicionada originalmente
- estamos nos referindo especificamente à saída de data dentro do iframe de comentários incorporados
- estamos executando a versão mais recente e atualizada do Discourse
Alguém poderia confirmar se isso ainda é um problema conhecido e se já existe uma correção mais recente ou um tópico relacionado a isso?
Obrigado!
