PDA

View Full Version : سوال: پیاده سازی دیتابیس در سایت دو زبانه



mbasirati
جمعه 27 اردیبهشت 1392, 22:32 عصر
سلام
من یه سایت دو زبانه میخوام پیاده کنم. برای دیتابیس دو راه وجود داره:
یکی اینکه فیلدهای جدول را برای دو زبان ایجاد کنم.
یکی اینکه فیلدها یکی باشه و موقع درج دوتا رکورد درج کنم.
کدوم درست تر و اصولی تره و برای کارای بعدی و واکشی از دیتابیس کار راحت تره؟

mehrzad_ali
جمعه 27 اردیبهشت 1392, 23:52 عصر
اگه شما 2 تا رکورد درج کنی موقع سلکت چطوری میخوای تفکیک کنی؟

mbasirati
جمعه 27 اردیبهشت 1392, 23:55 عصر
اگه شما 2 تا رکورد درج کنی موقع سلکت چطوری میخوای تفکیک کنی؟

ببخشید که کامل توضیح ندادم.
یه فیلد میذارم که توش مقدار en یا fa درج میشه. اینجوری میتونم تفکیک کنم.

mehrzad_ali
شنبه 28 اردیبهشت 1392, 00:04 صبح
پس این کلا شد یک روش
شما یه جدول میگیرید که شامل 2 فیلد en و fa هست و موقع درج رکورد باید 2 رکورد فارسی و انگلیسی ثبت کنید

mbasirati
شنبه 28 اردیبهشت 1392, 00:08 صبح
پس این کلا شد یک روش
شما یه جدول میگیرید که شامل 2 فیلد en و fa هست و موقع درج رکورد باید 2 رکورد فارسی و انگلیسی ثبت کنید

نه شما منظور منو نگرفتی:
فرض کن من یه جدول دارم که شامل فیلدهای id,content,writer هستش.
توی روش اول من میام دوتا فیلد دیگه به این جدول اضافه میکنم و جدول من میشه به این شکل: id,content_fa,content_en,writer_fa,writer_en. اینجوری اطلاعات فارسی و انگلیسی تو یه رکورد ثبت میشه.
توی روش دوم من میام به جدولم یه فیلد اضافه میکنم : id,content,writer,lang بعد موقع درج اطلاعات فارسی توی فیلد lang عبارت fa رو درج میکنم و موقع درج اطلاعات انگلیسی عبارت En رو درج میکنم. تو این روش به دو رکورد ثبت میشه ولی تو روش اول یه رکورد ثبت میشه.

حالا کدوم بهتر و اصولی تره؟

mehrzad_ali
شنبه 28 اردیبهشت 1392, 00:13 صبح
روش دوم منطقی تر و راحت تره . چون شما فقط کافیه پارامتر lang رو که توی یک Session ذخیره کردید رو به متد های Select پاس بدید و داخل where بزارید

mbasirati
شنبه 28 اردیبهشت 1392, 00:21 صبح
روش دوم منطقی تر و راحت تره . چون شما فقط کافیه پارامتر lang رو که توی یک Session ذخیره کردید رو به متد های Select پاس بدید و داخل where بزارید

خودمم همین فکر رو میکردم ولی یه عیبی این روش داره از نظر من. اینکه دوتا رکورد یه جور که فقط در زبان باهم فرق دارن idهای متفاوت دارن. این مشکلی ایجاد نمیکنه؟ مثلا من یه رکورد فارسی که دارم چه جوری رکورد انگلیسیشو پیدا کنم؟ اینکه بگم از id یکی کم کنم یا یکی بهش اضافه کنم تا رکورد فارسی (یا انگلیسی) رو پیدا کنم منطقیه؟

mehrzad_ali
شنبه 28 اردیبهشت 1392, 00:34 صبح
نه مشکلی پیدا نمیکه . وقتی شما مثلا توی انگلیسی جزییات خبر رو میزنی id رو پاس میدی به یه پیج دیگه و اون پیج محتوای خبری رو میاره که id اون انگلیسیه

mbasirati
شنبه 28 اردیبهشت 1392, 00:39 صبح
نه مشکلی پیدا نمیکه . وقتی شما مثلا توی انگلیسی جزییات خبر رو میزنی id رو پاس میدی به یه پیج دیگه و اون پیج محتوای خبری رو میاره که id اون انگلیسیه

خب این که درسته و مشکلی نداره. ولی شما فرض کن کاربر در حال خوندن جزئیات یه خبر هستش و داره فارسی میخونه. حالا میاد و روی تغییر زبان کلیک میکنه و اینجوری همون صفحه reload میشه و به صورت انگلیسی باز میشه در حالیکه id اون مال خبر فارسیه.

متوجه منظورم شدی؟
حالا باید چیکار کرد؟

mehrzad_ali
شنبه 28 اردیبهشت 1392, 00:46 صبح
اوکی کلید جدول رو Identity نگیر و بذار یک خبر 2 رکورد با id یکسان ذخیره کنه اینجوری میتونی شرط رو بزاری روی id و lang

mbasirati
سه شنبه 31 اردیبهشت 1392, 15:37 عصر
بقیه اساتید نظری ندارن؟

saeed_sho
سه شنبه 31 اردیبهشت 1392, 17:01 عصر
بمن رای سایت دو زبانم از روش دو تا فیلد یکی انگلیسی و یکی فارسی استفاده کردم مشکلی هم تا اینجای کار که 30 درصد انجام شده نداشتم