تستخدم تهيئة المحتوى رابط دلو R2 الخام بدلاً من رابط S3 CDN في المنشورات المترجمة

مرحباً،

عند استخدام ترجمة المحتوى (Content Localization) مع ترجمات Discourse AI وتخزين Cloudflare R2 كتخزين متوافق مع S3، يتم تخزين محتوى المنشورات المترجمة باستخدام عنوان URL الخام لنوع R2 بدلاً من s3_cdn_url المُهيأ (النطاق المخصص). يؤدي هذا إلى ظهور الصور مكسورة لجميع المستخدمين الذين يعرضون الترجمات.

البيئة

  • Discourse: الإصدار الأحدث
  • تم تهيئة Cloudflare R2 عبر تخزين متوافق مع S3
  • s3_cdn_url: https://files.mydomain.com
  • s3_use_cdn_url_for_all_uploads: مفعّل
  • ترجمة المحتوى + ترجمة Discourse AI: مفعّل

خطوات إعادة إنتاج المشكلة

  1. قم بتهيئة Cloudflare R2 بنطاق مخصص (s3_cdn_url)
  2. فعّل ترجمة المحتوى والترجمة بالذكاء الاصطناعي
  3. أنشئ منشوراً يحتوي على صورة
  4. انتظر حتى تولد الترجمة بالذكاء الاصطناعي النسخة المحلية
  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

إصلاح مؤقت يتمثل في إجراء إعادة تعيين أو استخدام هذا الملف (theme component):

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());
});

لست متأكدًا من ذلك تمامًا. لدينا حاويات Cloudflare R2 لتخزين الكائنات والنسخ الاحتياطية على موقعنا، ونستخدم عدة لغات مع الترجمة بالذكاء الاصطناعي - والصور تُحمّل بشكل سليم في جميع اللغات.

على سبيل المثال:

الإنجليزية

الألمانية

الروسية

البرتغالية

نعم، في اختباراتني، أقوم برفع 3 إلى 5 صور. لكن فقط صورة أو صورتين تعملان كما هو متوقع.