0Pricing
React Academy · درس

استخدام useTranslation Hook

استبدل النصوص الثابتة باستدعاءات t() ونظّم ملفات JSON الخاصة بالترجمة.

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

مرحبًا

في هذا الدرس ستستخدمون خطاف useTranslation للوصول إلى دالة t()، وترجمة السلاسل النصية في المكوّنات، وتنظيم ملفات ترجمة JSON حسب مساحة الأسماء.

خطاف useTranslation

استدعوا useTranslation() داخل مكوّن للحصول على دالة الترجمة `t` ونسخة `i18n`. مرّروا اسم مساحة الأسماء إذا كنتم تستخدمون ترجمات منظّمة حسب مساحات الأسماء.
import { useTranslation } from 'react-i18next';

function Header() {
  const { t } = useTranslation('common');
  return <h1>{t('app_title')}</h1>;
}

مفاتيح الترجمة الأساسية

أنشئوا ملف JSON لكل لغة ولكل مساحة أسماء. المفاتيح عبارة عن سلاسل نصية يمكن الوصول إليها باستخدام النقاط. المفاتيح المسطّحة بسيطة، أما المفاتيح المتداخلة فتستخدم صيغة النقاط.
// public/locales/en/common.json
{
  "app_title": "My App",
  "nav": {
    "home": "Home",
    "about": "About"
  }
}

المفاتيح بصيغة النقاط

يمكنكم الوصول إلى المفاتيح المتداخلة باستخدام صيغة النقاط في دالة t(): فمثلًا، يقرأ `t('nav.home')` المسار `nav -> home` من ملف JSON.
const { t } = useTranslation('common');
return <a href="/">{t('nav.home')}</a>;

مساحة الأسماء الافتراضية

اضبطوا `defaultNS` أثناء تهيئة i18n، حتى تتمكنوا من استدعاء useTranslation() دون وسيطات، وحلّ المفاتيح تلقائيًا ضمن مساحة الأسماء الافتراضية.
i18n.init({ defaultNS: 'common', ... });

// No namespace argument needed
const { t } = useTranslation();
t('app_title'); // resolves in 'common'

الوصول إلى مساحات أسماء متعددة

مرّروا مصفوفة إلى useTranslation للوصول إلى مساحات أسماء متعددة. أضيفوا إلى المفاتيح بادئة تتكون من اسم مساحة الأسماء متبوعًا بنقطتين رأسيتين.
const { t } = useTranslation(['common', 'auth']);

t('common:app_title');
t('auth:login');

مكوّن Trans لمحتوى JSX

عندما تحتوي سلسلة مترجمة على HTML أو مكوّنات React، استخدموا المكوّن Trans. فهو يدعم العناصر النائبة التي تُطابق مكوّنات React.
import { Trans } from 'react-i18next';

// JSON: "tos": "Read our <1>Terms</1>"
<Trans i18nKey="tos">
  Read our <a href="/terms">Terms</a>
</Trans>

بنية ملفات الترجمة

نظّموا ملفات JSON وفق المسار `public/locales/{lang}/{ns}.json`. اجعلوا المفاتيح دلالية ومجمّعة حسب الميزة. تجنّبوا المفاتيح المتداخلة بعمق، فعادةً ما يكفي مستويان.
public/
  locales/
    en/
      common.json
      auth.json
      dashboard.json
    tr/
      common.json
      auth.json

تغيير اللغة أثناء التشغيل

استخدموا `i18n.changeLanguage(lng)` لتبديل اللغة النشطة برمجيًا. ستُعيد مكوّنات React التي تستخدم useTranslation تصيير نفسها تلقائيًا.
const { i18n } = useTranslation();

<button onClick={() => i18n.changeLanguage('tr')}>Turkish</button>

اكتشاف اللغة النشطة

اقرؤوا `i18n.language` للحصول على الإعداد المحلي النشط حاليًا. استخدموه لعرض علم أو لإبراز زر اللغة النشطة.
const { i18n } = useTranslation();
return <p>Current lang: {i18n.language}</p>;

تحقّق سريع

كيف تصلون إلى مفتاح الترجمة المتداخل 'nav.home' من مساحة الأسماء 'common'؟

مراجعة

يوفّر لكم useTranslation الدالة t(). نظّموا المفاتيح في ملفات JSON الخاصة بمساحات الأسماء. استخدموا صيغة النقاط للمفاتيح المتداخلة. بدّلوا اللغات باستخدام i18n.changeLanguage. استخدموا المكوّن Trans للسلاسل التي تحتوي على JSX.

التالي

الدرس التالي: **التصريف حسب العدد والاستيفاء** — ستتعاملون مع صيغ الجمع المعتمدة على العدد، وتدرجون قيمًا ديناميكية داخل السلاسل المترجمة.

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

هل درس «استخدام useTranslation Hook» مجاني؟

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

ماذا ستتعلم في «استخدام useTranslation Hook»؟

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

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

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

كم من الوقت يستغرق درس «استخدام useTranslation Hook»؟

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

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

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

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

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