Datumsangaben in eingebetteten Kommentaren sind immer noch nicht lokalisiert

Hallo,

dieses Thema basiert auf einer Diskussion auf ask.discourse.com, bei der wir festgestellt haben, dass es sich offenbar um dasselbe Problem handelt wie in diesem älteren Meta-Thema:

Embed: dates are not localized

Wir verwenden die standardmäßige Discourse-Einbettung für Kommentare, wie hier dokumentiert, ohne besondere Anpassungen der Einbettungsausgabe:

Embed Discourse comments on another website via Javascript

Ich habe die neue fullApp-Methode ausprobiert, und sie zeigte finnische Datumsangaben, aber ich bevorzuge für diese Seite eher den älteren Ansatz.

Was wir sehen

Die Benutzeroberfläche der eingebetteten Kommentare ist korrekt lokalisiert, aber der Text des Beitragsdatums wird weiterhin auf Englisch angezeigt.

Zum Beispiel sehen wir in der Einbettung möglicherweise:

April 2025

und der Tooltip/Titel enthält ein englisches Datum/Uhrzeit wie:

April 9, 2025, 3.31pm

Erwartetes Verhalten

Die Datumsangaben der eingebetteten Kommentare sollten sich nach der Spracheinstellung der Seite oder des Benutzers richten und nicht immer auf Englisch angezeigt werden.

In unserem Fall würden wir eine lokalisierte Datumsformatierung auf Finnisch in der Standard-Einbettung erwarten.

Schmutziger Workaround

Mit Hilfe von Claude habe ich einen ziemlich schmutzigen Workaround mit einer benutzerdefinierten Komponente erstellt und JavaScript zum Abschnitt embedded_header hinzugefügt. Ich hatte bereits einige CSS-Regeln, die davon abhängen, ob die Klasse normal (discourse-upotus) oder dunkel (discourse-upotus-tumma) ist.

<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>

Hinweise

  • Dies tritt beim Standard-Embed auf.
  • Es wurde ursprünglich keine benutzerdefinierte Logik zur Datumsformatierung hinzugefügt.
  • Wir beziehen uns speziell auf die Datumsausgabe innerhalb des Iframes der eingebetteten Kommentare.
  • Wir nutzen die neueste Discourse-Version.

Könnte jemand bestätigen, ob dies immer noch ein bekanntes Problem ist und ob es bereits eine neuere Lösung oder ein verwandtes Thema dazu gibt?

Vielen Dank!