PDA

View Full Version : طراحی دیتابیس سایت چند زبانه



iman_ad
دوشنبه 25 آذر 1387, 20:09 عصر
به نظر شما بهترین مدل برای طراحی دیتابیس یک سایت چند زبانه چیست؟

مثلا برای محصولات برای هر فیلد یک ستون برای هر محصول اضافه کنیم مثلا برای اسم محصول
ProductNameEn, ProductNameFa.....
یا برای هر محصول دو رکورد ثبت کنیم با یک id و در جدول یک فیلد دیگر به نام LanMode داشته باشیم که زبان رکورد نشون بده ....

milade
دوشنبه 25 آذر 1387, 20:49 عصر
یه روش یه سایت دوزبانه استفاده از Resource هست (جستجو کلمه Resource در سایت) که دربارش توضیح داده شده
در روش دوم هم میشه از دو فیلد استفاده کرد که یکی مثلا فارسی و انگلیسیه
موفق باشید

iman_ad
دوشنبه 25 آذر 1387, 21:35 عصر
منظور من اطلاعات داخل دیتابیس هست

milade
سه شنبه 26 آذر 1387, 06:28 صبح
دو تا راه من به ذهنم میرسه که فرقی هم نداره!
1-دو ستون ، هر ستون برای یک زیان
2-دو تا جدول برای هر زبان
راه حل اولی منطقی تره
موفق باشید

kiosksoft
سه شنبه 26 آذر 1387, 09:29 صبح
به نظر شما بهترین مدل برای طراحی دیتابیس یک سایت چند زبانه چیست؟

مثلا برای محصولات برای هر فیلد یک ستون برای هر محصول اضافه کنیم مثلا برای اسم محصول
ProductNameEn, ProductNameFa.....
یا برای هر محصول دو رکورد ثبت کنیم با یک id و در جدول یک فیلد دیگر به نام LanMode داشته باشیم که زبان رکورد نشون بده ....

دوست عزیز این تاپیک رو ببینید:
http://www.barnamenevis.org/forum/showthread.php?t=131746

و بهتره از روش دوم استفاده کنید.

iman_ad
سه شنبه 26 آذر 1387, 15:08 عصر
دوستان اطلاعات محصولات یا اخبار باید داخل دیتابیس باشه تا مدیر سایت به راحتی محصول و خبر جدید ثبت کنه به ذهن بنده حقیر این رسید که به جای جدول جدید برای هر زبان یا ستون جدید بیایم یک ستون به نام langMode اضافه کنیم و ProductID و LangMode با هم Index key در نظر بگیریم این طوری به ازای هر زبان یک رکورد داریم که مثلا اگه کد زبان Fa را 1 در نظر بگیریم و en را 2 دو تا رکورد با productID یکسان ولی langMode متفاوت داریم که چون هر دو ستون index هستند مشکلی پیش نمی یاد مثل مثال پایین.

لطفلا دوستان نظر بدید.
http://barnamenevis.org/forum/attachment.php?attachmentid=26519&stc=1&d=1229428877

mahdi_farhani
چهارشنبه 27 آذر 1387, 15:39 عصر
دوست عزیز شما در اینجا دو مبحث دارید .
1-مبحث کالاها :
اگر شما به فرض مثال یک فروشگاه دوزبانه داشته باشید نباید به صورت فوق جدولتون را پیاده کنید .
چرا ؟
به علت اینکه افزونگی سیستم شما زیاد میشه ، شما باید نام را در یک جدول و بقیه اطلاعات را در جدول اصلی نگه داری کنید .
خوب چرا اینکارو بکنیم ؟
به علت اینکه فقط نام محصول شما عوض میشه ، ولی اطلاعات موجودی ، عکس ، قیمت و..... تغییر نمیکنه .
2-اخبار ، مقالات و از این قبیل اطلاعات :
چون کل اطلاعات ممکنه تغییر کنه از همون ستون زبان میتونی استفاده کنی ، ونیازی نیست که کلید باشه.......
در ضمن میتونی به جای استفاده از ستون از نوع عدد ، از نوع char استفاده کنی و به شکل fa-IR و en-US ذخیره کنی ، در این حالت شما با استفاده از Cultre به راحتی میتونی به اطلاعات پایگاه داده دسترسی پیدا کنی

iman_ad
پنج شنبه 28 آذر 1387, 02:03 صبح
در مورد اول حق با شماست ممنونم از راهنماییتون
البته منظور من بیشتر این که برای اضافه کردن زبان جدید از اضافه کردن ستون یا جدول جدید برای هر زبان خودداری کنیم
دوست من همان ظوری که می دونیم برای هر محصول، خبر و... باید یک شناسه منحصر به فرد داخل بانک باشه در صورتی که من برای هر محصول یا خبر به تعداد زبانهام محصول یا خبر با ID یکسان دارم حالا اگه LangMode هم با ID به عنوان Key در نظر بگیریم منحصر به فرد می شه

برای نام به جای int برای هر زبان هم تو یک جدول دیگه پیش بینی شده که با این جدول و بقیه جداول رابطه داره

یک سوال از شما داشتم چطوری می تونم از Cultre توی لایه DAL برنامه استفاده کنم من معمولا از SP استفاده می کنم.

اگه نمونه یا مرجعی دارید ممنون می شم راهنماییم کنید

mahdi_farhani
پنج شنبه 28 آذر 1387, 08:05 صبح
هزینه نوشتن Join زیاد است . پس وقتی میشه با یک فیلد تنها دوزبانه رو پیدا کرد چرا یک جدول دیگه استفاده کنیم ( البته خوبه نمیگم بده و منطقی هم هست )
شما نباید تو لایه DAL از Culture استفاده کنید ، از طریق UI به BLL داده میشه (البته نیازی به اینکار هم نیست خوده BLL میتونه Cultre رو بدست بیاره ) و بعد BLL هست که Cultre رو به Dal میده.و حالا در لایه DAL میتونید Cutre استفاده کنید.

iman_ad
پنج شنبه 28 آذر 1387, 13:08 عصر
می شه بیشتر توضیح بدید دوست من متاسفانه در مورد Cultre مطالب بیشتر تکراری و ابتدایی هستش منظورم داخل کتابهاست

delphi77
یک شنبه 11 اسفند 1387, 13:43 عصر
کسی به نتیجه بهتر و کامل تری رسید؟

ali_salavati
یک شنبه 08 تیر 1399, 18:03 عصر
کسی به نتیجه بهتر و کامل تری رسید؟

دو تا ستون اضافه کنیم. lang و parent. ستون lang زبان رو مشخص می‌کنه و ستون parent اشاره داره به زبان اصلی. مثلا اگه زبان اصلی fa باشه و آیدی مطلب ۵ باشه، برای همون مطلب با زبان انگلیسی مقدار lang میشه en و ستون parent میشه ۵.

moslem.hady
دوشنبه 16 تیر 1399, 11:13 صبح
زیرخاکی 12 ساله بالا میاری!!!