سؤال

لقد نشرت سؤال حول تصميم قاعدة بيانات متعدد اللغات هنا،
[]ما هي أفضل الممارسات لتصميم قاعدة البيانات متعددة اللغات؟
أنا أحب اقتراح مارتن، ولكن الآن لدي سؤال ما سيكون أفضل طريقة لإنشاء كائنات تجارية؟ إذا كنت سأقوم بإنشاء منتج سيصبح كائن منتج، فإن الربط والعمل في UI سيكون معقدا، إذا كان الكائن المترجم الذي سيتعين علي إنشاء كائنات مختلفة ل CMS
شكرا جزيلا!

هل كانت مفيدة؟

المحلول

من الصعب الإجابة، لأن هذا يعتمد على احتياجاتك الدقيقة. ما لدينا في مكان واحد هو (بناء على نموذج DB الموضح في السؤال الآخر):

  • يتم تصميم كائنات العمل بعد قاعدة البيانات، مما يعني أن لدينا منتج فئة يحتوي على مجموعة من كائنات الترجمة
  • في فئة المنتج لدينا خصائص للبيانات متعددة اللغات، على سبيل المثال الوصف
  • البحث عن هذه الخصائص البحث عن كائن الترجمة الصحيح (بناء على اللغة الحالية) وإرجاع القيمة المقابلة

مثال بسيط للغاية (تظهر فقط الأجزاء ذات الصلة):

class ProductTranslation
{
    public string Description;
}
public class Product
{
    private List<ProductTranslation> _translations;

    private ProductTranslation GetTranslation(string language)
    {
        // return translation for specified language
        // or return translation for default language           
    }

    public string Description
    {
        get
        {
            return GetTranslation(GetCurrentLanguage()).Description;
        }
    }       
}

اخترنا هذا النهج لتطبيق الويب ASP.NET. قد يكون التحير الجيركي مختلفا لكل مستخدم (يمكن للمستخدمين تحديد لغتهم المفضلة ل UI والبيانات). يسمح لنا هذا النهج بتخزين البيانات على مستوى العالم لجميع المستخدمين.

اعتمادا على احتياجاتك، قد لا يكون هذا النهج هو الأفضل. على سبيل المثال، قد يكون من الأفضل تصميم جداول المنتج والمنتجات كائنين كائن أعمال واحد (منتج) ثم يتم تحميله بعد ذلك بلغة محددة (على سبيل المثال إذا كانت البيانات للقراءة فقط وليس ذلك مطلوبة لذاكرة التخزين المؤقت على نطاق التطبيق).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top