توسعه دهندگان نرم افزار همیشه علاقمند به گسترش فعالیت و رفتن به سمت بازار های جدید هستن. به این معنی که سعی میکنن محصولات خودشون رو در مناطق مختلف قرار بدن. در این مطلب چند روش برای بومی سازی یا مدل سازی داده و طراحی پایگاه داده چند زبانه توضیح داده میشه. مخصوصا بومی سازی در سطح محتوای نرم افزار.
بومی سازی یا محلی سازی به فرآیند تطبیق محصول در بازار های مختلف گفته میشه. این یه موضوع مهم برای دستیابی و فروش در سایر بازار هاست. با این فرآیند کاربران احساس میکنن که یک محصول برای زبان، فرهنگ و نیاز اونها تولید شده.
زمانی که درباره بومی سازی فکر میکنیم در درجه اول ترجمه محتوا ذهن ما رو به خودش مشغول میکنه. ما نیاز به یک مدل پایگاه داده قوی و کارآمد برای ذخیره محتوای ترجمه شده در چندین زبان داریم.
برای درک بیشتر و با توجه به نیاز های مختلف روش های متفاوتی رو بررسی میکنیم. هر کدوم از این روش ها مزایا و معایب خودشون رو دارن. در نتیجه انتخاب بر عهده ی شما و نیازمندی های خاص خودتون هست.
ساده ترین روش از نظر توسعه و طراحی. کافیه برای هر زبان داخل جدول یک ستون در نظر بگیرید.
مزایا.
- پیاده سازی ساده.
- هنگام نوشتن SQL Query هیچ پیچیدگی خاصی وجود نداره. مثلا:
Select p.product_name_FR, p.description_FR, p.price, c.name_FR, c.address_FR, c.contact_name from order_line o, product p, customer c Where o.product_id = p.id and o.customer_id = c.id And id = <order number>;
معایب.
- عدم وجود مقیاس پذیری. هر زمان که زبان جدیدی اضافه بشه باید ستونش رو داخل جدول بسازید.
- وقت گیر هست اگر زبان های زیادی در سیستم داشته باشید.
در این روش یک جدول جدا برای ترجمه محتوا در نظر میگیریم(جدول translation). که شامل یک ستون به ازای هر زبان هست.
مزایا.
- برای یک مدل داده ی از قبل آماده شده روش خوبی به منظور پیاده سازی هست.
- تغییرات در صورت اضافه شدن زبان جدید به علت یک جدول ترجمه مجزا آسون تر هست.
- میشه متون تکراریُ فقط یک بار ترجمه و سپس از شناسه اون در جداول مختلف استفاده کرد.
معایب.
- اگر یکی از مدل ها فقط یک زبان را پشتیبانی کنه یا یک فیلد تمام زبان ها رو برای ترجمه نیاز نداشته باشه، مشکل مقادیر NULL در جدول زبان به وجود میاد.
- به دلیل JOIN با جدول ترجمه در صورتی که رکورد های زیادی داخل این جدول وجود داشته باشه. SQL Query کند میشه. یه راه حل برای این موضوع جدا کردن جدول ترجمه به ازای هر جدول هست.
شبیه به روش قبلی هست با این تفاوت که زبان ها رو به جای قرار دادن در ستون، به صورت ردیف میبینیم.