Datas de comentários incorporados ainda não estão localizadas

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!