PDA

View Full Version : سوال: طراخی سایت چندزبانه با php و mysql



asma69
سه شنبه 31 شهریور 1394, 21:52 عصر
سلام..خسته نباشین..
من میخوام یک سایت چندزبانه با php طراحی کنم..مثلا کاربری که وارد سایت میشه بتونه سایت و محتویاتش رو به زبان های فارسی - انگلیسی - عربی - فرانسه و.....مشاهده کنه...
برای پارامترها و متن هایی که ثابت هستند مشکلی ندارم چون برای هرزبان یک پوشه و یک فایل درنظر می گیرم که لیست متون و همه چی رو نسبت به زبانش از فایل مربوط به همون زبان بخونه و به طور مثال یک نمونه هم تست کردم و درست جواب داد....
اما واسه مقادیری ک قراره از طریق مدیریت تو دیتابیس ثبت شه و بعد در سایت نمایش داده بشه به مشکل برخورد کردم...چون مدیر اطلاعات رو به فارسی وارد میکنه..بعد چطوری بگم مقادیرم مثلا توضیحات، درباره ما یا تماس باما یا خیلی چیزتی دیگه که پویا هست و از دیتابیس خونده میشه رو موقع تبدیل زبان، به زبان مورد نظر تبدیل کنه؟؟
خیلی از فیلدهام رو جوری تعریف کردم که فقط مقدار 0و 1 یا عدد بگیره و بعد تو برنامه نویسی تعیین کنم ک هر مقدار چیه و معادلش رو از تو پوشه مربوط به هر زبان بخونم....
اما خب خیلی فیلدها مثل توضیحات حتما باید در دیتابیس به صورت کاراکتر نوشته و ثبت شه و هرکسی ممکنه یک متنی رو ثبت کنه و متفاوت باشه..
به نظرتون واسه این مشکل چکار کنم؟؟چ راه حلی پیشنهاد می کنید؟؟
ممنون میشم راهنماییم کنین..

milad_d993
سه شنبه 31 شهریور 1394, 22:23 عصر
ببین از Google Translate میتونی استفاده بکنی؟؟؟ apiیی چیزی نداره برای php؟؟؟ برای سایت های وردپرسی افزونه هستش....
خیلی از سایت ها رو دیدم که گوشه بالای سایت تو نوار منو یه کمبو باکس گذاشتن زبان دیگه رو میزنیم سایت رو با Google Translate ترجمه میکنه و تحویل میده...

asma69
سه شنبه 31 شهریور 1394, 23:14 عصر
ببین از Google Translate میتونی استفاده بکنی؟؟؟ apiیی چیزی نداره برای php؟؟؟ برای سایت های وردپرسی افزونه هستش....
خیلی از سایت ها رو دیدم که گوشه بالای سایت تو نوار منو یه کمبو باکس گذاشتن زبان دیگه رو میزنیم سایت رو با Google Translate ترجمه میکنه و تحویل میده...


سلام...ممنون از پاسخگوییتون....
ولی Google Translate خیلی دقیق معنی نمیکنه...خیلی جاها به هم ریختس...

بعد من واسه قسمتای ثابت سایتم مشکل ندارم .....
زبان ها رو پوشه بندی کردم و به متغیرها مقدار رو نسبت دادم....
مثلا واسه متن دکمه ثبت تو فایل زبان فارسیم یک متغیر به اسم $input دارم که
مقدارش رو نوشتم ثبت کردن و دوباره تو فایل زبان انگلیسیم مقدار این متغیر رو برابر با insert قرار دادم..

اون وقت وقتی کاربر از لیست کشویی زیان انگلیسی رو بزنه، تو برنامم چک میشه و
اگه انگلیسی انتخاب شده بود، فایل زبان انگلیسی فراخونی میشه و متن دکمه هم میشه insert و همینطور تا اخر.......
پس واسه قسمت ثابت سایتم مشکلی ندارم...

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

به نظرتون این که بیام به مدیر بگم اطلاعات رو به همه زبان ها تو دیتابیس وارد کنه کار درستیه؟؟
ینی واسه عنوان یا توضیحات به ازای هر زبان یک textbox جداگانه بزارم؟

اونوقت باید تو دیتابیس مثلا واسه فیلد عنوان به ازای همه زبان ها فیلد تعریف کنم.......یا همینطور برای فیلد توضیحات و غیره.....
به نظرتون این روش درسته؟؟مشکل نداره؟؟
برنامه نویسای دیگه چطوری کارمی کنن؟؟
ممنون میشم بیشتر راهنماییم کنین..

milad_d993
چهارشنبه 01 مهر 1394, 10:38 صبح
تا اونجا که ما دیدیم سایت های چند زبانه مثل بی b، سیـــــــ یا پرس تی وی یا وبسایت موسسه تبیان برای هر زبان که مخصوص یک سری مخاطب هست کنترل پنل جدا دارند و هر پنل تیم خودشان رو دارند و همچنین تمام اخبار و پست های مثلا فارسی رو برای بخش انگلیسی ترجمه و قرار نمیدن و بلعکس؛ اگر هم یک خبر یا پست مثلا انگلیسی برای مخاطب فارسی زبان جالب باشه متن یا ترجمه اون رو در اختیار مسئول بخش فارسی میدن تا خودشان قرار بدن.....

ولی اگر که تمام پست ها (محتوای متغیر) لازمه که به زبان دوم ترجمه بشه مترجم گوگل بهترین و ارزان ترین گزینه هستش؛ هر چند ترجمه'ش چنگی به دل نزنه... اینم در نظر بگیرین که این مترجم روز ب روز بهتر و هوشمند تر میشه چون ماله شرکت بزرگی مثل گوگل'ه...

اگر هم که نویسنده زبانش خوبه و خودش میتونه مطالب رو به دو زبان وارد بکنه یه راه دیگه هم اینه که یه فیلد برای انتخاب زبان برای پست بزارین به اینصورت که:
نویسنده مطلب رو به فارسی وارد میکنه و نوع زبان پست رو فارسی میزاره و ثبت میکنه
بعد دوباره روی لینک "ثبت مطلب جدید" کلیک میکنه ولی اینبار تیتر و محتوا رو انگلیسی وارد میکنه و نوع زبان رو هم انگلیسی میزنه
بعد توی صفحه index یا مثلا صفحه عناوین پست ها یه متغیر get میزارین که fa یا en باشه زمانی که متغیر مربوطه fa بود فقط مطالب فارسی رو لیست کنه و زمانی که en بود فقط مطالب انگلیسی رو لیست کنه... دیفالت'ش هم fa باشه

فقط توی جدول زبان که تشکیل شده از id و title یه فیلد دیگه هم بزارین تحت عنوان orginalTitle و توی اون عنوان هر زبان رو با الفبای همون زبان وارد کنید مثلا فارسی رو که بجای title میزارین، "پارسی" رو هم برای orginalTitle و انگلیسی رو "english" و مثلا عربی رو "العربیة"...

از title برای کنترل پنل استفاده کنین و orginalTitle رو تو صفحه لیست خبر ها و جزئیات خبر بزارین اینجوری قشنگ تره؛

فکر کنین طرف داره مطلب انگلیسی رو میخونه ولی پایین خبر نوشته:
language: انگلیسی!!!!!!!!!!!

j_naroogha@yahoo.com
چهارشنبه 01 مهر 1394, 11:04 صبح
اگر گوگل به کارتون نمیاد (که واقعا نمیاد فعلا ) باید اونا رو هم مدیر وارد کنه. ... مثلا برای فیلد نام سه تا فیلد نام انگلیسی و فارسی و عربی در نظر بگیرین...
اگرم همه ی فیلدا اینطورین اصلا برای هر موجودیت سه تا جدول فارسی انگلیسی عریب در نظر بگیرین....

asma69
پنج شنبه 02 مهر 1394, 13:02 عصر
تا اونجا که ما دیدیم سایت های چند زبانه مثل بی b، سیـــــــ یا پرس تی وی یا وبسایت موسسه تبیان برای هر زبان که مخصوص یک سری مخاطب هست کنترل پنل جدا دارند و هر پنل تیم خودشان رو دارند و همچنین تمام اخبار و پست های مثلا فارسی رو برای بخش انگلیسی ترجمه و قرار نمیدن و بلعکس؛ اگر هم یک خبر یا پست مثلا انگلیسی برای مخاطب فارسی زبان جالب باشه متن یا ترجمه اون رو در اختیار مسئول بخش فارسی میدن تا خودشان قرار بدن.....

ولی اگر که تمام پست ها (محتوای متغیر) لازمه که به زبان دوم ترجمه بشه مترجم گوگل بهترین و ارزان ترین گزینه هستش؛ هر چند ترجمه'ش چنگی به دل نزنه... اینم در نظر بگیرین که این مترجم روز ب روز بهتر و هوشمند تر میشه چون ماله شرکت بزرگی مثل گوگل'ه...

اگر هم که نویسنده زبانش خوبه و خودش میتونه مطالب رو به دو زبان وارد بکنه یه راه دیگه هم اینه که یه فیلد برای انتخاب زبان برای پست بزارین به اینصورت که:
نویسنده مطلب رو به فارسی وارد میکنه و نوع زبان پست رو فارسی میزاره و ثبت میکنه
بعد دوباره روی لینک "ثبت مطلب جدید" کلیک میکنه ولی اینبار تیتر و محتوا رو انگلیسی وارد میکنه و نوع زبان رو هم انگلیسی میزنه
بعد توی صفحه index یا مثلا صفحه عناوین پست ها یه متغیر get میزارین که fa یا en باشه زمانی که متغیر مربوطه fa بود فقط مطالب فارسی رو لیست کنه و زمانی که en بود فقط مطالب انگلیسی رو لیست کنه... دیفالت'ش هم fa باشه

فقط توی جدول زبان که تشکیل شده از id و title یه فیلد دیگه هم بزارین تحت عنوان orginalTitle و توی اون عنوان هر زبان رو با الفبای همون زبان وارد کنید مثلا فارسی رو که بجای title میزارین، "پارسی" رو هم برای orginalTitle و انگلیسی رو "english" و مثلا عربی رو "العربیة"...

از title برای کنترل پنل استفاده کنین و orginalTitle رو تو صفحه لیست خبر ها و جزئیات خبر بزارین اینجوری قشنگ تره؛

فکر کنین طرف داره مطلب انگلیسی رو میخونه ولی پایین خبر نوشته:
language: انگلیسی!!!!!!!!!!!



سلام...ممنون از راهنماییتون
چیزی ک متوجه شدم، پس در نهایت اگه از مترجم گوگل نخوام استفاده کنم، باید اطلاعات به همه زبان ها داخل دیتابیس ثبت شه...درسته؟.
ممنون

asma69
پنج شنبه 02 مهر 1394, 13:04 عصر
اگر گوگل به کارتون نمیاد (که واقعا نمیاد فعلا ) باید اونا رو هم مدیر وارد کنه. ... مثلا برای فیلد نام سه تا فیلد نام انگلیسی و فارسی و عربی در نظر بگیرین...
اگرم همه ی فیلدا اینطورین اصلا برای هر موجودیت سه تا جدول فارسی انگلیسی عریب در نظر بگیرین....
سلام..از شمام بابت پاسخگوییتون ممنونم...
من از حرف شمام همین مطلب رو متوجه شدم ک اگه نخوام از مترجم گوگل استفاده کنم باید اطلاعات به همه زبان ها تو جداول وارد شه...درسته؟
ممنونم..

hamedarian2009
پنج شنبه 02 مهر 1394, 14:57 عصر
سلام..از شمام بابت پاسخگوییتون ممنونم...
من از حرف شمام همین مطلب رو متوجه شدم ک اگه نخوام از مترجم گوگل استفاده کنم باید اطلاعات به همه زبان ها تو جداول وارد شه...درسته؟
ممنونم..

بله فعلا بهترین راه اینه که شما برای هر زبان جدول جداگانه داشته باشید و برای مطالبی که میزارید مطلب رو به اون زبان توسط یک انسان ترجمه کنید و ذخیره کنید چون اگه قراره مترجم گوگل اینکارو بکنه قطعا کسی متوجه نخواهد شد مخصوصا زبان فارسی که ترجمش به زبان های دیگه کاری بسیار سخت است

asma69
پنج شنبه 02 مهر 1394, 22:12 عصر
بله فعلا بهترین راه اینه که شما برای هر زبان جدول جداگانه داشته باشید و برای مطالبی که میزارید مطلب رو به اون زبان توسط یک انسان ترجمه کنید و ذخیره کنید چون اگه قراره مترجم گوگل اینکارو بکنه قطعا کسی متوجه نخواهد شد مخصوصا زبان فارسی که ترجمش به زبان های دیگه کاری بسیار سخت است

ممنون از پاسخگوییتون

کامبیز اسدزاده
یک شنبه 12 مهر 1394, 09:37 صبح
سلام

دوست عزیز پیشنهاد من این هستش که در هر یک از Table هایی که دارید یک فیلد با نام language رو در نظر بگیرید به صورت زیر.

مثلا یک جدول با نام personnel داریم.
دارای فیلد های id,title,descr,language هستند.

حال در هنگان درج اطلاعات در داخل این جدول شما فیلد language در نظر بگیرید و همچنین هنگام دریافت اطلاعاتش خیلی راحت و بهترین روشی هستش که من به شخصه در سیستم خودم ازش استفاده کردم که میتونید نتیجش رو در آدرس موجود وب سایت من مشاهده کنید.

اینهم یک تصویر از جداول و فیلد ها که فکر کینم روشنتون کنه.

135681
برای دریسافت اطلاعات موجود هم بر اساس زبان یک کد خیلی ساده از sql به صورت زیر لازم داری :


SELECT * from personnel WHERE language='persian';


موفق باشید.