meta.json

ما هو ملف meta.json؟ كيف يتم استخدامه؟

مقدمة

ملف meta.json هو ملف يقوم مُجمّع Lingo.dev بإنشائه وقت البناء. يتتبع جميع المحتوى القابل للترجمة المكتشف في تطبيق React، ويعمل كقائمة جرد تربط بين تحليل وقت البناء والترجمة في وقت التشغيل.

ملاحظة: يجب الالتزام بجميع التغييرات التي تتم على ملف meta.json في المستودع.

مثال للملف

هذا مثال لملف meta.json (مبسط للغاية):

{
  "version": 0.1,
  "files": {
    "components/hero.tsx": {
      "scopes": {
        "3/declaration/body/0/argument/1/1": {
          "type": "element",
          "hash": "a1b2c3d4e5f6...",
          "context": "",
          "skip": false,
          "overrides": {},
          "content": "Welcome to our app"
        }
      }
    }
  }
}

لفهم معنى جميع الخصائص، انظر خصائص المخطط.

موقع الملف

افتراضيًا، يتم إخراج ملف meta.json إلى دليل src/lingo، بالنسبة إلى موقع تكوين المُجمّع (مثل ملف vite.config.ts).

لمعرفة كيفية تخصيص هذا الموقع، راجع خيارات المُجمّع.

خصائص المخطط

يصف هذا القسم جميع الخصائص الموجودة في ملف meta.json.

version

معرّف إصدار المخطط المستخدم للتحقق من التوافق والترحيلات المستقبلية.

  • النوع: number
  • مطلوب: نعم

files

كائن حاوي ينظم جميع النطاقات القابلة للترجمة حسب مسارات ملفات المصدر الخاصة بها. كل مفتاح يمثل مسارًا نسبيًا من جذر المصدر (مثل "components/hero.tsx", "pages/home.jsx").

  • النوع: object
  • مطلوب: نعم

files[filePath].scopes

حاوية لجميع المحتوى القابل للترجمة المكتشف في ملف المصدر المحدد. كل مفتاح هو معرّف مستند إلى AST يحدد بشكل فريد قطعة من المحتوى القابل للترجمة داخل الملف.

  • النوع: object
  • مطلوب: نعم

files[filePath].scopes[astKey].type

يشير إلى ما إذا كان المحتوى القابل للترجمة من محتوى عنصر JSX أو قيمة سمة JSX.

  • النوع: "element" | "attribute"
  • مطلوب: نعم

files[filePath].scopes[astKey].hash

تجزئة SHA-256 للمحتوى المصدري المستخدمة للكشف عن التغييرات. عندما يتغير المحتوى المصدري، تتغير هذه التجزئة، مما يشير إلى أنه قد تكون هناك حاجة لإعادة الترجمة.

  • النوع: string
  • مطلوب: نعم

files[filePath].scopes[astKey].context

معلومات سياقية لمساعدة المترجمين على فهم الغرض من المحتوى أو موقعه.

  • النوع: string
  • مطلوب: لا

files[filePath].scopes[astKey].skip

علامة تشير إلى ما إذا كان يجب استبعاد هذا المحتوى من الترجمة.

  • النوع: boolean
  • مطلوب: نعم

files[filePath].scopes[astKey].overrides

تجاوزات الترجمة الخاصة باللغة المحلية التي تتجاوز عملية الترجمة العادية. مفيدة لأسماء العلامات التجارية، والمصطلحات التقنية، أو الترجمات المخصصة.

  • النوع: object
  • مطلوب: نعم

files[filePath].scopes[astKey].content

النص المصدري الفعلي الذي يحتاج إلى ترجمة، مستخرج من مكونات React الخاصة بك.

  • النوع: string
  • مطلوب: نعم