المقدمة
🎯 ماذا يفعل هذا الموديل؟
يتيح لك موديل Locales إدارة دعم اللغات المتعددة في مشروع OneEntry الخاص بك - استرجاع اللغات المتاحة، اكتشاف لغة المستخدم، وبناء تطبيقات دولية تقدم محتوى بعدة لغات.
فكر في الأمر كمدير لغاتك - بدلاً من ترميز اللغات بشكل ثابت في تطبيقك، يمكنك جلب قائمة اللغات النشطة من OneEntry بشكل ديناميكي، مما يسمح لمحتواك بالتكيف تلقائيًا مع مواقع مختلفة (الإنجليزية، الروسية، العربية، الإسبانية، إلخ).
📖 شرح بسيط
في التطبيقات الحديثة، تحتاج غالبًا إلى دعم لغات متعددة:
- 🌍 مواقع التجارة الإلكترونية - خدمة العملاء في دول مختلفة (الإنجليزية، الفرنسية، الألمانية)
- 📱 تطبيقات الهواتف المحمولة - تكييف واجهة المستخدم مع لغة جهاز المستخدم
- 🌐 المواقع الإلكترونية - عرض المحتوى بلغة الزائر المفضلة
- 📚 التوثيق - تقديم المساعدة بعدة لغات
- 🎮 الألعاب - ترجمة الواجهة والمحتوى
المشكلة مع ترميز اللغات بشكل ثابت:
المشاكل:
- 🔄 صعب التحديث - تحتاج إلى إعادة نشر لإضافة لغات جديدة
- 🌍 غير متزامنة - قد تختلف لغات التطبيق عن لغات نظام إدارة المحتوى
- ❌ تباينات في الترجمة - المحتوى موجود في نظام إدارة المحتوى ولكن ليس في التطبيق
- 🔧 صيانة يدوية - تحديث الكود في كل مرة تتغير فيها اللغات
حل Locales:
الفوائد:
- 🔄 دائمًا متزامن - اللغات تتطابق مع ما هو مكون في OneEntry
- 🌍 ديناميكي - إضافة/إزالة اللغ ات دون تغييرات في الكود
- ✅ مُعتمد - عرض اللغات التي تحتوي على محتوى فقط
- 🎯 مركزي - إدارة اللغات في مكان واحد
✨ المفاهيم الأساسية
ما هي Locale؟
Locale هي مزيج من اللغة والمنطقة يحدد كيفية عرض المحتوى:
- رمز اللغة - رمز اللغة ISO 639-1 (مثل
en,ru,ar) - رمز المنطقة - رمز الدولة ISO 3166-1 (مثل
US,GB,RU) - معرف Locale - تنسيق مجمع:
language_REGION(مثلen_US,ru_RU,ar_SA)
أمثلة:
| رمز Locale | اللغة | المنطقة | الوصف |
|---|---|---|---|
en_US | الإنجليزية | الولايات المتحدة | الإنجليزية الأمريكية |
en_GB | الإنجليزية | بريطانيا العظمى | الإنجليزية البريطانية |
ru_RU | الروسية | روسيا | الروسية |
es_ES | الإسبانية | إسبانيا | الإسبانية الأوروبية |
es_MX | الإسبانية | المكسيك | الإسبانية المكسيكية |
ar_SA | العربية | المملكة العربية السعودية | العربية (المملكة العربية السعودية) |
fr_FR | الفرنسية | فرنسا | الفرنسية |
de_DE | الألمانية | ألمانيا | الألمانية |
هيكل Locale
كل Locale في OneEntry يحتوي على:
{
id: 146, // معرف فريد
shortCode: 'en', // رمز قصير
code: 'en_US', // رمز كامل
name: 'English (USA)', // الاسم
nativeName: 'English (USA)', // الاسم الأصلي
isActive: true, // نشط
image: null, // صورة
position: 1, // الموضع
}
لماذا تستخدم موديل Locales؟
| الفائدة | الوصف |
|---|---|
| دعم متعدد اللغات | تقديم المحتوى بلغة المستخدم المفضلة |
| قائمة لغات ديناميكية | اللغات تتزامن مع تكوين OneEntry |
| كشف اللغة الافتراضية | تحديد اللغة الافتراضية تلقائيًا |
| تصفية اللغات النشطة | عرض اللغات المفعلة فقط |
| إدارة مركزية | تحديث اللغات في لوحة الإدارة، وليس في الكود |
| تجربة المستخدم | السماح للمستخدمين باختيار لغتهم |
حالات الاستخدام الشائعة
| حالة الاستخدام | الوصف | المثال |
|---|---|---|
| محدد اللغة | قائمة منسدلة لتبديل اللغات | رأس الموقع مع أعلام اللغات |
| توطين المحتوى | جلب المحتوى بلغة المستخدم | منشورات المدونة باللغة الإنجليزية أو الروسية |
| التوجيه | هيكل URL لكل لغة | /en/about, /ru/about |
| منطق التراجع | عرض اللغة الافتراضية إذا كانت الترجمة مفقودة | عرض الإنجليزية إذا لم تكن الإسبانية متاحة |
| تفضيلات المستخدم | تذكر اختيار اللغة للمستخدم | حفظ locale في الكوكيز/localStorage |
📋 ما تحتاج لمعرفته
تكوين Locales في لوحة الإدارة
لا يمكنك إنشاء locales عبر SDK - يتم تكوينها في لوحة إدارة OneEntry:
OneEntry Admin Panel → Settings → Languages → Add Language → Select Locale
SDK مخصص لـ جلب معلومات locale، وليس لإنشاء locales.
Locales النشطة مقابل غير النشطة
ليس كل locales المكونة قد تكون نشطة:
| الحالة | المعنى | متى تستخدم |
|---|---|---|
نشط (isActive: true) | locale مفعل ويحتوي على محتوى | عرض في محدد اللغة |
غير نشط (isActive: false) | locale معطل أو قيد الإعداد | إخفاء عن المستخدمين |
أفضل ممارسة: دائمًا قم بالتصفية حسب isActive عند بناء محددات اللغة
اللغة الافتراضية
كل مشروع OneEntry يحتوي على locale افتراضية واحدة:
- locale الافتراضية (
isDefault: true) - اللغة الأساسية - تستخدم عندما لا يتم تحديد locale
- تستخدم كاحتياطي عندما تكون الترجمة مفقودة
رمز Locale مقابل رمز قصير
كل locale له تنسيقين للرمز:
| الحقل | التنسيق | المثال | الاستخدام |
|---|---|---|---|
code | language_REGION | en_US, ru_RU | تحديد locale الكامل |
shortCode | language | en, ru | تحديد اللغة فقط |
📊 جدول مرجعي سريع
| الطريقة | الوصف | حالة الاستخدام |
|---|---|---|
| getLocales() | الحصول على جميع locales (نشطة وغير نشطة) | جلب اللغات المتاحة |
❓ الأسئلة الشائعة (FAQ)
كيف أضيف لغات جديدة إلى مشروعي؟
لا يمكنك إضافة locales عبر SDK. يتم تكوين locales في لوحة إدارة OneEntry.