React Academy · درس

مبدّل اللغة والتحميل الكسول للترجمات

أنشئ مبدّلًا للغة وحمّل حزم الترجمة عند الطلب لتقليل الحجم الأولي.

الدرس 4 من 413 خطوة

مبدّل اللغة والتحميل الكسول للترجمات درس مجاني في React Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

مرحبًا

في هذا الدرس ستنشئون مكوّنًا لتبديل اللغة، وستضبطون i18next لتحميل حِزم الترجمة عند الطلب، مما يقلّل حجم JavaScript الذي يُحمّل مبدئيًا.

مبدّل لغة بسيط

استدعوا i18n.changeLanguage() عند النقر على الزر لتبديل اللغة النشطة. ستُعيد جميع المكوّنات التي تستخدم useTranslation تصيير نفسها تلقائيًا باللغة الجديدة.
function LanguageSwitcher() {
  const { i18n } = useTranslation();
  return (
    <div>
      {['en', 'tr', 'fr'].map(lng => (
        <button
          key={lng}
          onClick={() => i18n.changeLanguage(lng)}
          style={{ fontWeight: i18n.language === lng ? 'bold' : 'normal' }}
        >
          {lng.toUpperCase()}
        </button>
      ))}
    </div>
  );
}

حفظ اختيار اللغة

احفظوا اللغة المحددة في localStorage حتى تبقى بعد إعادة تحميل الصفحة. تتولى إضافة LanguageDetector ذلك تلقائيًا باستخدام ترتيب الكاشف `localStorage`.
i18n.init({
  detection: {
    order: ['localStorage', 'navigator'],
    caches: ['localStorage'],
  },
});

لماذا نستخدم التحميل الكسول للترجمات؟

يؤدي تضمين جميع الترجمات في حزمة JavaScript إلى زيادة زمن التحميل الأولي. يرسل التحميل الكسول اللغة الافتراضية فقط عند التحميل الأول، ثم يجلب اللغات الأخرى عند تبديل المستخدم للغة.

تهيئة الواجهة الخلفية لـ HTTP

تجلب إضافة i18next-http-backend ملفات الترجمة وفق نمط محدد لعناوين URL. توجد الترجمات في مجلد `public/` وتُقدّم كأصول ثابتة، لذلك لا حاجة إلى تعليمات برمجية من جهة الخادم.
import Backend from 'i18next-http-backend';

i18n.use(Backend).init({
  backend: {
    loadPath: '/locales/{{lng}}/{{ns}}.json',
  },
  ns: ['common', 'auth'],
  defaultNS: 'common',
});

إضافة ملفات الترجمة

أنشئوا ملف JSON واحدًا لكل لغة ولكل مساحة أسماء داخل `public/locales/`. ستجلبها الواجهة الخلفية لـ HTTP تلقائيًا عند الحاجة إلى اللغة أو مساحة الأسماء للمرة الأولى.
public/locales/
  en/common.json
  en/auth.json
  tr/common.json
  tr/auth.json

عرض حالة التحميل أثناء تبديل اللغة

بعد استدعاء changeLanguage()، يحمّل i18next ملفات اللغة الجديدة بشكل غير متزامن. اشتركوا في حدث `i18n.on('languageChanged')` أو تحقّقوا من `i18n.isInitialized` لعرض مؤشر تحميل.
const [switching, setSwitching] = useState(false);

const change = async (lng) => {
  setSwitching(true);
  await i18n.changeLanguage(lng);
  setSwitching(false);
};

التحميل الكسول لمساحات أسماء محددة

حمّلوا مساحة الأسماء عند الحاجة إليها للمرة الأولى باستخدام `i18n.loadNamespaces(['dashboard'])`. استدعوا ذلك داخل useEffect عند تحميل مسار لوحة المعلومات، لتجنّب تحميلها للمستخدمين غير المصادق عليهم.
useEffect(() => {
  i18n.loadNamespaces('dashboard');
}, []);

شبكة CDN للترجمات

في بيئة الإنتاج، استضيفوا ملفات الترجمة على شبكة CDN مثل S3 + CloudFront. حدّثوا `loadPath` ليشير إلى عنوان URL الخاص بشبكة CDN. يؤدي ذلك إلى فصل تحديثات الترجمة عن عمليات نشر التعليمات البرمجية.
backend: {
  loadPath: 'https://cdn.example.com/locales/{{lng}}/{{ns}}.json',
}

اللغة المحلية في عنوان URL

تضمّن تطبيقات كثيرة اللغة المحلية في عنوان URL، مثل /en/products و/tr/products. ادمجوا React Router مع i18n: اقرأوا اللغة المحلية من مَعلمة عنوان URL، واستدعوا changeLanguage، وحدّثوا عنوان URL عند تبديل المستخدم للغة.

تحقّق سريع

ما وظيفة إضافة i18next-http-backend؟

مراجعة

أنشئوا مبدّل لغة باستخدام i18n.changeLanguage(). احفظوا الاختيار باستخدام كاشف localStorage. استخدموا i18next-http-backend لتحميل ملفات الترجمة تحميلًا كسولًا. اعرضوا حالة تحميل أثناء تبديل اللغة. استضيفوا الملفات على شبكة CDN في بيئة الإنتاج.

اكتمل المقرر

تهانينا! لقد أتممتم **التدويل (i18n) في React**. يمكنكم الآن إعداد react-i18next، وترجمة السلاسل باستخدام مساحات الأسماء، والتعامل مع الجمع والاستيفاء، وتحميل ملفات الترجمة تحميلًا كسولًا.
البدء مجانًا

تعلم React مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
88
الدروس
324

الأسئلة الشائعة

هل درس «مبدّل اللغة والتحميل الكسول للترجمات» مجاني؟

نعم — نص درس «مبدّل اللغة والتحميل الكسول للترجمات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «مبدّل اللغة والتحميل الكسول للترجمات»؟

أنشئ مبدّلًا للغة وحمّل حزم الترجمة عند الطلب لتقليل الحجم الأولي. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «مبدّل اللغة والتحميل الكسول للترجمات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إعداد react-i18next
  2. استخدام useTranslation Hook
  3. الجمع والاستيفاء
  4. مبدّل اللغة والتحميل الكسول للترجمات
← العودة إلى React Academy