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!
