0Pricing
React Academy · درس

إعداد react-i18next

ثبّت i18next واضبطه مع اكتشاف اللغة وتقسيم مساحات الأسماء.

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

مرحبًا

في هذا الدرس ستثبّت react-i18next وتضبطه مع اكتشاف اللغة وتقسيم مساحات الأسماء لإضافة دعم اللغات المتعددة إلى تطبيق React.

تثبيت التبعيات

ثبّت i18next وreact-i18next. ويمكنك اختياريًا إضافة i18next-browser-languagedetector لاكتشاف الإعدادات المحلية تلقائيًا، وi18next-http-backend لتحميل الترجمات عبر HTTP.
npm install i18next react-i18next
npm install i18next-browser-languagedetector i18next-http-backend

إنشاء i18n.js

أنشئ ملف `i18n.js` لتهيئة i18next. استدعِ `i18n.use(...)` لإضافة الإضافات، ثم `.init({...})` مع إعداداتك.
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';

i18n
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    resources: { en: { translation: {} }, tr: { translation: {} } },
    interpolation: { escapeValue: false },
  });

export default i18n;

استيراد i18n في main.jsx

استورد ملف تهيئة i18n قبل تصيير التطبيق. يضمن ذلك جاهزية i18n قبل أن يستدعي أي مكوّن useTranslation.
import './i18n'; // must be before App
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';

createRoot(document.getElementById('root')).render(
  <StrictMode><App /></StrictMode>
);

مساحات الأسماء

تقسّم مساحات الأسماء الترجمات إلى مجموعات منطقية، مثل 'common' و'auth' و'dashboard'. ويكون لكل مساحة أسماء ملف JSON منفصل يُحمّل عند الطلب لتقليل حجم الحزمة الأولي.
resources: {
  en: {
    common: { save: 'Save', cancel: 'Cancel' },
    auth: { login: 'Log in', logout: 'Log out' },
  }
}

اكتشاف اللغة

تقرأ إضافة LanguageDetector اللغة المفضلة للمستخدم من المتصفح، مثل navigator.language، أو من localStorage، أو من سلسلة استعلام عنوان URL. وتعيّن اللغة النشطة تلقائيًا عند التحميل الأول.

تحميل الترجمات من مجلد Public

خزّن الترجمات في صورة ملفات JSON ضمن `public/locales/{lang}/{ns}.json`. واضبط إضافة الواجهة الخلفية لتحميلها في وقت التشغيل، بحيث لا تتطلب إضافة لغة جديدة أي تغيير في التعليمات البرمجية.
import Backend from 'i18next-http-backend';

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

I18nextProvider، اختياري

يغلّف I18nextProvider تطبيقك لتوفير مثيل i18n عبر السياق. ومع react-i18next v11+ وإضافة initReactI18next، يصبح ذلك اختياريًا — إذ تقرأ hook مثيل i18n العام مباشرةً.

التحقق من التهيئة في المكوّنات

يحمّل i18next الترجمات بشكل غير متزامن. استخدم الخاصية `ready` من useTranslation أو تحقّق من `i18n.isInitialized` قبل تصيير النص لتجنب عرض مفاتيح الترجمة.
const { t, ready } = useTranslation();
if (!ready) return null;

DevTools ومعالجة المفاتيح المفقودة

عيّن `saveMissing: true` في بيئة التطوير لتسجيل مفاتيح الترجمة المفقودة في وحدة التحكم. يساعدك ذلك على العثور سريعًا على السلاسل غير المترجمة.
i18n.init({ saveMissing: true,
  missingKeyHandler: (lng, ns, key) => console.warn('Missing:', key) });

اختبار سريع

لماذا يجب استيراد ملف تهيئة i18n قبل تصيير تطبيق React؟

مراجعة

ثبّت i18next وreact-i18next، وأنشئ i18n.js مع الإضافات وإعدادات init، واستورده قبل التصيير، ونظّم الترجمات في مساحات أسماء. استخدم http-backend لتحميل ملفات الترجمة في وقت التشغيل.

التالي

الدرس التالي: **استخدام خطاف useTranslation** — ستستبدلون السلاسل النصية المضمّنة مباشرةً باستدعاءات t()، وستنظّمون ملفات ترجمة JSON.

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

هل درس «إعداد react-i18next» مجاني؟

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

ماذا ستتعلم في «إعداد react-i18next»؟

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

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

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

كم من الوقت يستغرق درس «إعداد react-i18next»؟

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

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

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

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

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