임베디드 댓글 날짜가 여전히 지역화되지 않음

안녕하세요,

이 주제는 ask.discourse.com에서 이루어진 토론을 기반으로 작성했으며, 이 오래된 Meta 주제에서 발견된 것과 동일한 것으로 보이는 문제를 확인했습니다:

Embed: dates are not localized

우리는 임베드 출력을 특별히 커스터마이징하지 않고, 여기에 문서화된 기본 Discourse 임베드 댓글 설정을 사용하고 있습니다:

Embed Discourse comments on another website via Javascript

새로운 fullApp 메서드를 시도해 보았으며 핀란드 날짜 형식이 표시되었지만, 이 사이트에는 이전 방식이 더 좋습니다.

확인되는 현상

임베드된 댓글 UI는 올바르게 로컬라이즈되어 있지만, 게시물 날짜 텍스트는 여전히 영어로 표시되고 있습니다.

예를 들어, 임베드에서 다음과 같은 내용을 볼 수 있습니다:

April 2025

그리고 툴팁/제목에는 다음과 같은 영어 날짜/시간이 포함되어 있습니다:

April 9, 2025, 3.31pm

기대되는 동작

임베드된 댓글의 날짜는 항상 영어로 표시되는 대신 사이트 또는 사용자 로케일을 따르는 것이 좋습니다.

우리의 경우, 기본 임베드에서 핀란드 로컬라이즈된 날짜 형식을 기대하고 있습니다.

임시 해결책 (Workaround)

Claude의 도움을 받아 커스텀 컴포넌트를 사용하고 embedded_header 섹션에 자바스크립트를 추가하여 다소 어수선한 임시 해결책을 만들었습니다. 클래스가 일반(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 버전을 실행 중입니다.

이것이 여전히 알려진 문제인지, 그리고 이미 더 새로운 수정 사항이나 관련 주제가 있는지 확인해 주실 수 있을까요?

감사합니다!

2개의 좋아요