# 콘텐츠 현지화에서 번역된 게시글에 S3 CDN URL 대신 원본 R2 버킷 URL 사용

**URL:** <https://meta.discourse.org/t/content-localization-uses-raw-r2-bucket-url-instead-of-s3-cdn-url-in-translated-posts/415632>\
**Category:** Bug\
**Created:** [10월 24, 2026, 8:29오전 UTC](https://meta.discourse.org/t/content-localization-uses-raw-r2-bucket-url-instead-of-s3-cdn-url-in-translated-posts/415632 "2026-10-24T08:29:34Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![David\_Ghost](https://avatars.discourse-cdn.com/v4/letter/d/c37758/32.png) [@David\_Ghost](https://meta.discourse.org/u/David_Ghost)\
**Post date:** [10월 24, 2026, 8:29오전 UTC](https://meta.discourse.org/t/content-localization-uses-raw-r2-bucket-url-instead-of-s3-cdn-url-in-translated-posts/415632/1 "2026-10-24T08:29:34Z")

</div>

안녕하세요,

Cloudflare R2를 S3 호환 스토리지로 사용하여 Discourse AI 번역과 콘텐츠 로컬라이제이션을 사용할 때, 번역된 게시글 콘텐츠에 설정된 `s3_cdn_url`(사용자 지정 도메인) 대신 원본 R2 버킷 엔드포인트 URL이 저장됩니다. 이로 인해 번역본을 보는 모든 사용자에게 이미지가 깨진 상태로 표시됩니다.

## 환경

- Discourse: 최신 버전
- Cloudflare R2가 S3 호환 스토리지로 구성됨
- `s3_cdn_url`: `https://files.mydomain.com`
- `s3_use_cdn_url_for_all_uploads`: 활성화됨
- 콘텐츠 로컬라이제이션 + Discourse AI 번역: 활성화됨

## 재현 단계

1. 사용자 지정 도메인(`s3_cdn_url`)으로 Cloudflare R2 구성
2. 콘텐츠 로컬라이제이션 및 AI 번역 활성화
3. 이미지를 포함한 게시글 생성
4. AI 번역이 로컬라이즈된 버전을 생성할 때까지 대기
5. 언어 전환 — 번역된 버전의 이미지가 깨져 있음

## 관찰된 동작

번역된 콘텐츠에는 다음과 같은 URL이 포함되어 있습니다:

`//files.myendpoint.r2.cloudflarestorage.com/original/1X/` (정상적으로 `https://files.mydomain.com/original/1X/` 이어야 함)

관련 버그: [Chat thumbnails bypass s3\_cdn\_url & use raw S3 bucket URLs](https://meta.discourse.org/t/chat-thumbnails-bypass-s3-cdn-url-use-raw-s3-bucket-urls/404174)

임시 해결책은 리맵을 수행하거나 다음 tc를 사용하는 것입니다:

```plaintext
import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("1.8.0", (api) => {
  const badDomain = "files.myendpoint.r2.cloudflarestorage.com";
  const goodDomain = "files.mydomain.com";

  function fixImages() {
    document.querySelectorAll(`img[src*="${badDomain}"]`).forEach(img => {
      img.src = img.src.replace(badDomain, goodDomain);
    });
    document.querySelectorAll(`img[data-src*="${badDomain}"]`).forEach(img => {
      img.dataset.src = img.dataset.src.replace(badDomain, goodDomain);
    });
    document.querySelectorAll(`img[data-large-src*="${badDomain}"]`).forEach(img => {
      img.dataset.largeSrc = img.dataset.largeSrc.replace(badDomain, goodDomain);
    });
  }

  api.decorateCooked(() => fixImages(), { id: "fix-r2-translated-images" });
  api.onPageChange(() => fixImages());
});

```

---

_[View the full topic](https://meta.discourse.org/t/content-localization-uses-raw-r2-bucket-url-instead-of-s3-cdn-url-in-translated-posts/415632)._
