Bonjour,
Ce sujet est basé sur une discussion sur ask.discourse.com, où nous avons remarqué ce qui semble être le même problème que dans ce sujet Meta plus ancien :
Embed: dates are not localized
Nous utilisons la configuration par défaut des commentaires intégrés de Discourse telle que documentée ici, sans aucune personnalisation spéciale de la sortie intégrée :
Embed Discourse comments on another website via Javascript
J’ai essayé la nouvelle méthode fullApp et les dates étaient en finnois, mais je préfère l’approche plus ancienne ici pour ce site.
Ce que nous constatons
L’interface utilisateur des commentaires intégrés est correctement localisée, mais le texte de la date de publication est toujours affiché en anglais.
Par exemple, dans l’intégration, nous pouvons voir :
Avril 2025
et l’info-bulle/titre contient une date/heure en anglais telle que :
9 avril 2025, 15h31
Comportement attendu
Les dates des commentaires intégrés devraient suivre la localisation du site ou de l’utilisateur au lieu d’apparaître toujours en anglais.
Dans notre cas, nous nous attendrions à un formatage des dates localisé en finnois dans l’intégration par défaut.
Contournement peu élégant
Avec l’aide de Claude, j’ai mis en place un contournement assez peu élégant en utilisant un composant personnalisé et en ajoutant du JavaScript dans la section embedded_header - j’avais déjà du CSS basé sur le fait que la classe soit normale (discourse-upotus) ou sombre (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}`);
});
</script>
Remarques
- Cela se produit avec l’intégration standard/défaut
- Aucune logique de formatage de date personnalisée n’avait été ajoutée initialement
- Nous faisons référence spécifiquement à la sortie de date à l’intérieur de l’iframe des commentaires intégrés
- Nous utilisons la dernière version de Discourse
Quelqu’un pourrait-il confirmer s’il s’agit toujours d’un problème connu, et s’il existe déjà une correction plus récente ou un sujet connexe à ce sujet ?
Merci !
