يمكن لـ Entity Enricher إنتاج نتائج الإثراء بما يصل إلى 40 لغة في آنٍ واحد. وتُخزَّن الحقول متعددة اللغات ككائنات JSON مفهرسة حسب اللغة — وهي صيغة قابلة للنقل والاستعلام ومتوافقة مع كل قاعدة بيانات رئيسية.
في محرر المخططات، بدّل عَلَم متعدد اللغات على أي خاصية سلسلة نصية أو مصفوفة سلاسل نصية. عند تفعيله، يُعيد LLM القيم مغلَّفة في كائن مفتاحه اللغة بدلًا من قيمة عادية.
multilingual: true في مخطط JSON.multilingual: true). استخدم زر ↑ على أي شريحة أخرى لترقيتها إلى أساسية. كما تقوم الواجهة الخلفية بتصفية أي مفاتيح لغات دخيلة قد يُصدرها نموذج LLM وليست ضمن اختيارك.dict[str, T]، حيث تكون المفاتيح رموز لغات ISO 639-1 والقيم مطابقة لنوع الحقل.تُخزَّن القيم متعددة اللغات ككائنات JSON برموز اللغات كمفاتيح. وقد اختير هذا التنسيق دون البدائل لقابليته للنقل والاستعلام وكفاءته في التخزين.
الحقول التي لا تحمل multilingual: true تُعاد كقيم عادية. عادةً ما تبقى المعرّفات والرموز وعناوين URL والتواريخ والأرقام غير متعددة اللغات.
يوجد نهجان للمصفوفات متعددة اللغات. يستخدم Entity Enricher Format A (كائن مُفهرَس باللغة) لأنه التنسيق الوحيد الذي يعمل كما هو عبر جميع قواعد البيانات الرئيسية دون تحويل.
| المعايير | A كائن مفهرس حسب اللغة | B مصفوفة من العناصر المُترجمة محليًا |
|---|---|---|
| البنية | {"en": [...], "fr": [...]} | [{"en": "x", "fr": "y"}, ...] |
| استعلم عن لغة واحدة | وصول مباشرdata -> 'field' -> 'en' | يتطلب التكرارjsonb_array_elements + extract |
| إضافة لغة | أضف مفتاحًا واحدًا إلى الكائن | تحديث كل عنصر في المصفوفة |
| متسق مع القيم القياسية | نعم — النمط نفسه {"en": "...", "fr": "..."} | لا — شكل مختلف للسلاسل النصية مقابل المصفوفات |
| قابلية نقل قاعدة البيانات | جميع قواعد البيانات الرئيسية | جميع قواعد البيانات الرئيسية |
التنسيق المُفهرَس باللغة قابل للاستعلام أصليًا في جميع قواعد البيانات الرئيسية التي تدعم أعمدة JSON.
تتوفر 40 لغة. اختر أي مجموعة منها عند تشغيل عملية إثراء.
enEnglishzhChinesehiHindiesSpanisharArabicfrFrenchbnBengaliptPortugueseruRussianjaJapanesedeGermanurUrduviVietnamesetrTurkishkoKoreantaTamilmrMarathiteTelugupaPunjabiyueCantoneseitItalianplPolishukUkrainianroRomaniannlDutchelGreekcsCzechhuHungariansvSwedishsrSerbianbgBulgarianhrCroatianskSlovakdaDanishfiFinnishnoNorwegianltLithuanianslSlovenianlvLatvianetEstonianpreserve)لا يمكن الجمع بين علامة تعدُّد اللغات وعلامة الحفظ: فالقيمة المحفوظة تمرّ دون ترجمة، بلغة واحدة. يعطّل محرِّر الschema المفتاح المتعارض، ويرفض الـAPI أي schema يحمل كلتا العلامتين. يمكن أن تكون الحقول المفتاحية (المفاتيح الطبيعية أو مفاتيح قاعدة البيانات) متعدّدة اللغات — عندئذٍ تعتمد هوية الـentity على لغة المفتاح المثبَّتة في الـschema.
علَم تعدّد اللغات صالح فقط على أنواع خصائص معيّنة. ويفرض محرّر المخطّط ذلك تلقائيًا.
| نوع الخاصية | متعدد اللغات؟ | تنسيق الإخراج |
|---|---|---|
| string | نعم | dict[str, str] |
| number / integer | نعم | dict[str, float] |
| boolean | نعم | dict[str, bool] |
| مصفوفة من القيم الأوّلية | نعم | dict[str, list[str]] |
| object | لا | علّم الحقول المفردة داخل الكائن بدلًا من ذلك — ما لم يكن الكائن صفًا واحدًا لكل لغة، انظر أدناه |
| مصفوفة من الكائنات | لا | حدّد الحقول الفردية داخل العناصر بدلًا من ذلك |
| $ref | لا | حدّد الحقول داخل الكيان المُشار إليه بدلًا من ذلك |
القيمة متعددة اللغات خريطةُ لغات لا قيمة مفردة — لذا لا تنطبق عليها السمات التي تقيّد قيمة مفردة. وتُحلّ هذه التعارضات عند توليد المخطط وتُرفض عند حفظه يدويًا، بدل أن تتسبب في فشل لاحق أثناء الإثراء.
الخاصية المقيَّدة بمجموعة ثابتة من العناصر لا يمكن أن تكون متعددة اللغات أيضًا: فالعناصر رموز معيارية، وقاعدة البيانات المستهلِكة تقيّد بها أحد الأعمدة. أما التسميات المترجمة فمكانها جدول بحث خاص بك، مفهرس على الرمز.
التاريخ أو UUID أو رمز يُتحقَّق منه بتعبير نمطي له صورة واحدة مقروءة آليًا، لا صورة لكل لغة. ولذلك يُرفض حفظ خاصية تجمع الأمرين.
القيمة المحفوظة هي بياناتك تُعاد كما هي دون مساس، فليس فيها ما يُترجم.
هذه الحالة مسموح بها. تُحسم الهوية بلغة واحدة — تُثبَّت للمخطط عند أول نشر له في قاعدة بيانات — فيمكن ترجمة الاسم دون أن تتزحزح هويته.
تُمثّل بعض المصادر اللغة على هيئة صفوف: قائمة يحمل كل عنصر فيها رمز لغة وقيمه الخاصة، عنصرًا واحدًا لكل لغة. وهذا شكل مختلف عن الخاصية متعددة اللغات، ولا يجوز الخلط بينهما. ويتعرّف التوليد على مثل هذه الخاصية بوصفها محور اللغة للكائن — بشرط أن تكون كل قيمة ملحوظة رمز لغة فعلًا — ثم يُعطّل الآلية المدمجة لتلك الشجرة الفرعية بأكملها. أما تعليم الحقول المفردة داخل العنصر، وهو النصح المعتاد مع الكائنات، فهو العلاج الخاطئ تمامًا هنا: إذ سيمنحك ترجمات لصفوف هي أصلًا صف لكل لغة.
تمييز آخر يجدر ضبطه: اللغات التي تُثري إليها خيار يُحدَّد لكل تشغيل؛ واللغة التي تُكتب بها نصوص المخطط نفسه (أوصافه وتسمياته) مثبَّتة على المخطط؛ واللغة التي تُحسم بها الهوية مثبَّتة لكل قاعدة بيانات. ثلاثة إعدادات منفصلة يبدو كلٌّ منها وكأنه “اللغة”.
دعم تعدد اللغات منسوج في كل مرحلة من مراحل مسار الإثراء.
عند دمج النتائج من نماذج متعددة، تُقارَن الحقول متعددة اللغات لكل لغة على حدة.
| السيناريو | الحل |
|---|---|
| تتفق النماذج على الإنجليزية لكنها تختلف على الفرنسية | ليس اختلافًا. تُقيَّم الهوية باللغة الأساسية للتشغيل، لذا يُعدّ هذا اتفاقًا: تمرّ الإنجليزية كما هي، وتُحسم الفرنسية بقاعدة الدمج لكل لغة. ولا يُرسل تباين الترجمة إلى محكِّم قط — فدفع تكلفة نموذج ليختار بين ترجمتين صحيحتين إنفاق بلا طائل |
| أحد النماذج يدعم العربية والآخر لا | تفضيل القيمة غير الفارغة (يُحتفظ بالعربية) |
| تختلف المصفوفات متعددة اللغات في الطول حسب النموذج | اتحاد جميع العناصر لكل لغة |