تخطي إلى المحتوى الرئيسي
جميع الأدلة
دليل

تحديث الترجمات عبر الهواء في Next.js

في تطبيق Next.js، تُنشر ملفات الترجمة مع كل عملية نشر. يجلبها هذا الدليل بدلًا من ذلك على الخادم من أحدث إصدار في litei18n، فيُنشر تغيير النص دون إعادة النشر.

خطوات الإعداد

  1. أنشئ إصدارًا

    في litei18n، اعتمد ترجماتك وأنشئ إصدارًا من صفحة Releases (خطة Starter وما فوقها). انسخ معرّف مشروعك من رابط الإصدار الظاهر هناك. وصدّر ترجماتك أيضًا بصيغة JSON وأضفها إلى تطبيقك كنسخة مضمّنة.

  2. حمّل الإصدار عند تشغيل التطبيق

    عيّن LITEI18N_PROJECT_ID في بيئتك واحتفظ بملفات JSON المصدَّرة في locales/ كبديل احتياطي. يطلب revalidate من Next.js البحث عن إصدار جديد مرة كل خمس دقائق على الأكثر.

    lib/translations.ts
    const PROJECT_ID = process.env.LITEI18N_PROJECT_ID;
    const RELEASES =
      'https://ttksowxkfdohtprtfarf.supabase.co/storage/v1/object/public/releases/locales';
    
    export async function getTranslations(locale: string): Promise<Record<string, string>> {
      try {
        const res = await fetch(`${RELEASES}/${PROJECT_ID}/latest/${locale}.json`, {
          next: { revalidate: 300 }, // look for a new release every 5 minutes
        });
        if (res.ok) return await res.json();
      } catch {
        // Network error: fall through to the bundled copy.
      }
      // The bundled copy, or English for a language you have not bundled.
      const bundled = await import(`../locales/${locale}.json`).catch(() => import('../locales/en.json'));
      return bundled.default;
    }
  3. استخدم النصوص

    استدعِ getTranslations في مكوّن خادم واقرأ المفاتيح من الكائن الذي تعيده. يخزّن Next.js النتيجة مؤقتًا ويجلب الإصدار الجديد في الخلفية.

    app/[locale]/page.tsx
    import { getTranslations } from '@/lib/translations';
    
    export default async function Home({ params }: { params: Promise<{ locale: string }> }) {
      const { locale } = await params;
      const t = await getTranslations(locale);
      return <h1>{t['home.title']}</h1>;
    }
  4. غيّر النصوص دون إصدار جديد

    عدّل ترجمة واعتمدها وأنشئ إصدارًا جديدًا. سيقدّم رابط latest النص الجديد، ويحصل عليه تطبيقك في المرة التالية التي يحمّل فيها الترجمات. لا حاجة إلى إصدار جديد ولا إلى مراجعة من متجر التطبيقات.

من المفيد معرفته

  • تُخزَّن ملفات الإصدارات مؤقتًا على شبكة CDN، لذا قد يستغرق ظهور الإصدار الجديد في كل مكان بضع دقائق.
  • لتثبيت إصدار من التطبيق على إصدار ترجمات محدد، استخدم الرابط ذا الرقم (…/v3/es.json) بدلًا من …/latest/es.json.
  • هل تستخدم next-intl؟ إنه يقرأ النقاط في المفاتيح على أنها تداخل، لذا حوّل المفاتيح المسطحة إلى كائنات متداخلة قبل تمريرها.

ابدأ الإطلاق عالمياً في 5 دقائق

انضم إلى المطورين الذين يطلقون تطبيقاتهم بكل لغة مع litei18n.

خطة مجانية متاحة · لا حاجة لبطاقة ائتمان · إعداد في أقل من 5 دقائق