البدء السريع لـ AdonisJS

كيفية إعداد مُترجم Lingo.dev مع AdonisJS

مقدمة

مُترجم Lingo.dev هو أداة مدعومة بالذكاء الاصطناعي تمكنك من توطين التطبيقات القائمة على React دون إجراء تغييرات على المكونات الحالية. ما عليك سوى تكوين بعض الأشياء، وتغليف تطبيقك في موفر السياق، وهذا كل شيء - تم توطين تطبيقك.

يشرح هذا الدليل كيفية إعداد مُترجم Lingo.dev مع AdonisJS، وهو إطار عمل Node.js كامل الميزات لبناء تطبيقات جانب الخادم.

المتطلبات الأساسية

  • مشروع AdonisJS الخاص بك يستخدم Inertia.js.

ما ستتعلمه

  • كيفية تهيئة مُترجم Lingo.dev في مشروع AdonisJS
  • كيفية تكوين المُترجم للتوافق مع AdonisJS
  • كيفية إعداد مبدل اللغات للتبديل بين اللغات المحلية

الخطوة 1. إعداد مفتاح API

يستخدم مُترجم Lingo.dev نماذج اللغة الكبيرة (LLMs) لتوطين التطبيقات باستخدام الذكاء الاصطناعي. لاستخدام أحد هذه النماذج، تحتاج إلى مفتاح API من مزود مدعوم.

للبدء بأسرع وقت ممكن، نوصي باستخدام محرك Lingo.dev - منصتنا المستضافة التي توفر 10,000 رمز من الاستخدام المجاني الشهري.

لإعداد مفتاح API:

  1. قم بتسجيل الدخول إلى محرك Lingo.dev.

  2. انتقل إلى صفحة المشاريع.

  3. انقر على مفتاح API > نسخ.

  4. قم بتخزين مفتاح API في متغير بيئي:

    export LINGODOTDEV_API_KEY="<your_api_key>"
    

بديل: مزودو LLM المخصصون

لست مضطرًا لاستخدام محرك Lingo.dev. يمكنك تكوين المُترجم للتكامل مع عدد من مزودي LLM المخصصين، بما في ذلك:

  • Groq
  • Google
  • Mistral
  • Ollama
  • OpenRouter

الخطوة 2. تثبيت الحزمة

يتم توزيع مُترجم Lingo.dev كجزء من حزمة npm lingo.dev. لتثبيته، استخدم مدير الحزم المفضل لديك:

npm install lingo.dev

الخطوة 3. تهيئة المُجمِّع

يتكامل مُجمِّع Lingo.dev مع Vite ويعمل أثناء وقت البناء. للارتباط بعملية بناء Vite، قم بإجراء التغييرات التالية على ملف vite.config.ts:

  1. استيراد المُجمِّع:

    import lingoCompiler from "lingo.dev/compiler";
    
  2. تهيئة المُجمِّع باستخدام طريقة vite:

    const withLingo = lingoCompiler.vite({
      sourceRoot: "inertia",
      lingoDir: "lingo",
      sourceLocale: "en",
      targetLocales: ["es"],
      rsc: false,
      useDirective: false,
      debug: false,
      models: "lingo.dev",
    });
    

    للتوافق مع AdonisJS، تأكد من أن:

    • sourceRoot مضبوط على "inertia"
    • rsc مضبوط على false

    لمعرفة المزيد حول الخيارات المتاحة، راجع خيارات المُجمِّع.

  3. دمج تكوين المُجمِّع مع التكوين الحالي وتصديره:

    export default withLingo(viteConfig);
    

مع هذا التكوين، سيقوم مُجمِّع Lingo.dev بما يلي:

  • اجتياز شجرة بناء الجملة المجردة (AST) لقاعدة الشفرة
  • العثور على المحتوى القابل للترجمة (أي النص في عناصر JSX وقيم بعض السمات)
  • استخدام نموذج (نماذج) الذكاء الاصطناعي المُكوَّن لإنشاء الترجمات
  • تخزين المحتوى الأصلي والمترجم في ملف dictionary.js
  • استبدال المحتوى المترجم بعناصر نائبة

الخطوة 4. تحميل المحتوى المترجم

بعد أن يعالج المُجمِّع تطبيقك وينشئ الترجمات، تحتاج إلى تحميل وتقديم هذا المحتوى المترجم للمستخدمين. يتضمن ذلك:

  • تحميل القاموس المناسب بناءً على تفضيل اللغة للمستخدم
  • توفير الترجمات المحمّلة لتطبيقك من خلال مزود السياق

جانب العميل

في ملف inertia/app/app.tsx:

  1. استيراد مكون LingoProviderWrapper ودالة loadDictionary من lingo.dev/react/client:

    import {
      LingoProviderWrapper,
      loadDictionary,
    } from "lingo.dev/react/client";
    

    مكون LingoProviderWrapper هو موفر سياق يستبدل العناصر النائبة التي أنشأها المترجم بالمحتوى المترجم.

    دالة loadDictionary:

    • تسترجع اللغة الحالية من ملف تعريف الارتباط lingo-locale
    • ترجع إلى "en" عندما لا تكون اللغة محددة
    • تحمل المحتوى المترجم من ملف dictionary.js
  2. قم بتغليف مكون App في مكون LingoProviderWrapper ومرر دالة loadDictionary إليه:

    <LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
      <App {...props} />
    </LingoProviderWrapper>
    

جانب الخادم

في ملف inertia/app/ssr.tsx، كرر نفس الخطوات لتجنب عدم تطابق التهيئة:

import { LingoProviderWrapper, loadDictionary } from "lingo.dev/react/client";

<LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
  <App {...props} />
</LingoProviderWrapper>;

الخطوة 5. إعداد مبدل اللغات

لتمكين المستخدمين من التبديل بين اللغات، قم باستيراد LocaleSwitcher من حزمة lingo.dev. هذا مكون غير منسق يقوم بما يلي:

  • عرض قائمة منسدلة باللغات المتاحة
  • يتيح للمستخدم اختيار اللغة المفضلة
  • يتذكر لغة المستخدم للزيارات القادمة

لاستخدام المكون، قم بتضمينه في أي مكان في تطبيقك وقم بتعيين خاصية locales إلى مصفوفة تحتوي على لغات المصدر والهدف المكونة:

import { LocaleSwitcher } from "lingo.dev/react/client";

<LocaleSwitcher locales={["en", "es"]} />;

البديل: مبدل لغات مخصص

لست مضطرًا لاستخدام مكون LocaleSwitcher. يمكنك تنفيذ منطق وواجهة مستخدم مخصصة لتبديل اللغات. المتطلب الوحيد هو قراءة وكتابة اللغة النشطة إلى ملف تعريف الارتباط lingo-locale.

الخطوة 6. تشغيل التطبيق

للتحقق من أن مترجم Lingo.dev قد تم إعداده بشكل صحيح:

  1. ابدأ خادم التطوير:

    npm run dev
    
  2. انتقل إلى localhost:3333.

  3. استخدم مكون LocaleSwitcher للتبديل بين اللغات.

يجب أن تتم إعادة تحميل الصفحة وعرض المحتوى المترجم.

البديل: تعيين ملفات تعريف الارتباط يدويًا

إذا كنت لا تستخدم مكون LocaleSwitcher، فهناك طريقة بديلة للتحقق من أن الترجمة تعمل وهي تعيين ملف تعريف الارتباط lingo-locale يدويًا.

إذا كنت تستخدم متصفح Google Chrome، اتبع هذه التعليمات:

  1. انتقل إلى عرض > المطور > أدوات المطور.
  2. انتقل إلى علامة التبويب التطبيق.
  3. في الشريط الجانبي الأيسر، ضمن التخزين، قم بتوسيع ملفات تعريف الارتباط واختر عنوان URL للموقع.
  4. في جدول ملفات تعريف الارتباط، انقر بزر الماوس الأيمن في أي مكان واختر إضافة.
  5. في عمود الاسم، أدخل lingo-locale.
  6. في عمود القيمة، أدخل اللغة المطلوبة (مثل es).
  7. اضغط على Enter لحفظ ملف تعريف الارتباط.
  8. قم بتحديث الصفحة لتطبيق ملف تعريف الارتباط.

قراءة إضافية