你好,
本话题基于 ask.discourse.com 上的一次讨论,我们注意到其中似乎存在与以下旧 Meta 话题相同的问题:
我们使用的是文档中所述的 Discourse 默认嵌入评论设置,未对嵌入输出进行任何特殊定制:
通过 JavaScript 在另一个网站上嵌入 Discourse 评论
我尝试了新的 fullApp 方法,它确实显示了芬兰语日期,但我更倾向于在这个网站上使用此处提到的旧方法。
我们观察到的现象
嵌入评论的用户界面已正确本地化,但 帖子日期文本仍显示为英文。
例如,在嵌入内容中我们可能会看到:
2025 年 4 月
而工具提示/标题中包含的日期/时间也是英文格式,例如:
2025 年 4 月 9 日,下午 3:31
预期行为
嵌入评论的日期应遵循站点或用户的本地化设置,而不是始终显示为英文。
在我们的案例中,我们期望默认的嵌入内容使用芬兰语本地化的日期格式。
临时解决方案
在 Claude 的帮助下,我实现了一个相当粗糙的临时方案:通过自定义组件,并向 embedded_header 部分添加了 JavaScript。我之前已经根据类名(正常模式 discourse-upotus 或暗色模式 discourse-upotus-tumma)编写了一些 CSS。
<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>
备注
- 此问题出现在 标准/默认嵌入 中
- 最初并未添加任何自定义日期格式化逻辑
- 我们特指嵌入评论 iframe 内部的日期输出
- 我们运行的是最新版本的 Discourse
能否有人确认这是否仍是一个已知问题,以及是否已有更新的修复方案或相关话题?
谢谢!
