こんにちは、
このトピックは ask.discourse.com での議論に基づいています。そこでは、この古いメタトピックと同じ問題が発生しているように見受けられました。
Embed: dates are not localized
私たちは、埋め込み出力の特別なカスタマイズを行わず、ここで文書化されている デフォルトの Discourse 埋め込みコメント設定 を使用しています。
Embed Discourse comments on another website via Javascript
新しい fullApp メソッドを試しましたが、フィンランド語の日付が表示されました。しかし、このサイトではこちらの方が古いアプローチを好みます。
私たちが目にする現象
埋め込まれたコメントの UI は正しくローカライズされていますが、投稿日付のテキストは依然として英語で表示されます。
例えば、埋め込みでは以下のような表示が見られます。
April 2025
また、ツールチップやタイトルには英語の日付/時刻が含まれます。
April 9, 2025, 3.31pm
期待される動作
埋め込まれたコメントの日付は、常に英語で表示されるのではなく、サイトまたはユーザーのロケールに従うべきです。
私たちの場合、デフォルトの埋め込みでフィンランド語ローカライズされた日付形式を期待しています。
汚い回避策
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 ${klo}`);
});
</script>
備考
- これは 標準/デフォルトの埋め込み で発生します
- 当初、カスタム日付形式ロジックは追加されていませんでした
- 具体的には、埋め込まれたコメントの iframe 内での日付出力を指しています
- 最新かつ最高の Discourse を実行しています
この問題がまだ既知の問題かどうか、またすでに新しい修正や関連トピックがあるかどうかを確認していただけますか?
ありがとうございます!
