Le date dei commenti incorporati non sono ancora localizzate

Ciao,

questo argomento si basa su una discussione su ask.discourse.com, dove abbiamo notato ciò che sembra essere lo stesso problema di un vecchio argomento su Meta:

Embed: le date non sono localizzate

Stiamo utilizzando la configurazione predefinita dei commenti incorporati di Discourse come documentato qui, senza alcuna personalizzazione speciale dell’output incorporato:

Incorpora i commenti di Discourse su un altro sito web tramite JavaScript

Ho provato il nuovo metodo fullApp e le date erano in finlandese, ma per questo sito preferisco il vecchio approccio.

Cosa vediamo

L’interfaccia utente dei commenti incorporati è localizzata correttamente, ma il testo della data del post viene ancora mostrato in inglese.

Ad esempio, nell’incorporato potremmo vedere:

Aprile 2025

e il tooltip/titolo contiene una data/ora in inglese come:

9 aprile 2025, 15.31

Comportamento atteso

Le date dei commenti incorporati dovrebbero seguire la località del sito o dell’utente invece di apparire sempre in inglese.

Nel nostro caso, ci aspetteremmo un formato di data localizzato in finlandese nell’incorporato predefinito.

Soluzione temporanea “sporca”

Con l’aiuto di Claude, ho implementato una soluzione temporanea piuttosto “sporca” utilizzando un componente personalizzato e aggiungendo JavaScript alla sezione embedded_header - avevo già alcune regole CSS basate sul fatto che la classe fosse normale (discourse-upotus) o scura (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>

Note

  • questo problema si verifica con l’incorporato standard/predefinito
  • non è stata aggiunta alcuna logica di formattazione delle date personalizzata in origine
  • ci riferiamo specificamente all’output della data all’interno dell’iframe dei commenti incorporati
  • stiamo eseguendo l’ultima versione di Discourse

Qualcuno potrebbe confermare se si tratta ancora di un problema noto e se esiste già una correzione più recente o un argomento correlato?

Grazie!