چگونه سایت چند زبانه بسازیم ؟

amirepsilon

Active Member
سلام
اگه میشه بگید چه راه هایی برای ساخت سایت های 3 زبانه هست ؟
مثلا این که الان توی چه زبانی هستیم با get باشه یا post یا coocki ?
یا رضا
 

X7337X

Member
سلام
اگه میشه بگید چه راه هایی برای ساخت سایت های 3 زبانه هست ؟
مثلا این که الان توی چه زبانی هستیم با get باشه یا post یا coocki ?
یا رضا

سلام

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

یه شرط تعریف میکنی که اگه کوکی فارسی بود دیتابیس فارسی انتخاب شه اگه ... بود ... فلان ....
 

ziXet

مدیر انجمن PHP/MYSQL
سلام

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

یه شرط تعریف میکنی که اگه کوکی فارسی بود دیتابیس فارسی انتخاب شه اگه ... بود ... فلان ....
دیتابیس به نظرم خوب نی!
از فایل و آرایه استفاده بشه بهتره
 

amirepsilon

Active Member
سلام
فکر کنم دوتاتون درست گفتید
آخه ما دو تا بحث داریم :

1. متن اخبار و محتویات سایت به سه زبان
2. دکمه ها و عبارات و پیغام های خود سایت به سه زبان

X7337X از روش شما برای اولی استفاده بشه
Shahkey.com از روش شما برای دومی استفاده بشه

اما دوستان
لطفا بگید مثلا میخوام یه جا خوش آمدید نمایش داده بشه !
توی قالب مثلا مینویسیم

درسته ؟
حالا چطور بهش بگیم الان کدوم زبان رو نشون بده ؟
این رو برای من توضیح بدید لطفا
ممنون
 

X7337X

Member
اگه از روش من استفاده کنی بهتره به صورت زیر استفاده بشه

if($check == "fa")

mysql_select_db(fadb);

elseif($check == "en")

mysql_select_db(endb);

else

mysql_select_db(fadb);


برای فایل هم همین هست که باید require کنی
 

Allahparast

Member
من پیشنهاد می کنم از دیتابیس برای اخبار و برای منو و چیزهای که در سیستم ثابت هست از ثوابت
اخبار رو می تونی از غیر فیلد ها یه فیلد دیگه برا زبانهای دیگه اضافه کنی و با شرط و گت اطلاعات رو بازیابی کنی
اینطوری بهتره و حجم کارت پایین میاد
و فایلهای زبان خروجی بگیر
PHP:
define('postlan','اخبار');
موفق باشی
 

Sub.Zero

Member
دوست عزیز همینطور که دوستان گفتن برای برای عبارات و دکمه ها از ارایهاستفاده کن و برای اخبار و بقیه چیزا از دیتا بیس استفاده کنی بهتره
 

3dsmax

Member
سایت n زبانه

سلام به دوستان خوبم
---
من با define کار کردم.
---
خوب ابتدا یک define قرا می‌دین مثلا با نام LANG_DEFAULT
PHP:
define("LANG_DEFAULT", "fa");

بعدش یه پوشه مثلا با نام languages کنار فایلاتون میسازید و درونش پوشه های زبان رو قرار میدین، برای مثال یک پوشه با نام fa در پوشه languages قرار می‌دین و در پوشه fa هر فایلی با هر نامی که دلتون می‌خواد با پسوند php میسازید.

پس این طور شد.
languages --> fa --> test.php

و به شکل زیر فایلونو فراخوانی میکنیم.
PHP:
foreach (glob("languages/".LANG_DEFAULT."/*.php") as $filename) {
	include($filename);
}

این دستور میاد هر فایلی دورن پوشه languages و پوشه ای که نامش رو توسط LANG_DEFAULT بهش معرفی کردین و سپس هر فایلی که پسوند php هست رو include میکنه به صفحه

----
خوب حالا برای fa باید مقدار تعریف کنیم.
شما تنها کافیه فایل test.php رو باز کرده و از define برای ساختن مقادیرتون استفاده بکنید.

برای مثال
PHP:
define("TITLE", "مجید آنلاین");
define("REGISTER", "ثبت نام");

کار تموم فقط کافیه هر جای کار خواستین از زبان ها استفاده بکنید به راحتی بنویسید TITLE و یا REGISTER
----
خوب حالا برا ی 3 زبونه و یا 100 زبونه میتونید به همین شکل در پوشه language پوشه‌هایی با نام مشخص براش تعین کنید و در اون پوشه دوباره هر فایلی که خواستین با پشوند php میسازید.

مثلا این برا زبون en
PHP:
define("TITLE", "Majidonline");
define("REGISTER", "Register");

---
کار سختی بود؟
 

justpersian

Member
سلام.
من تو این سایت : www.ehsanlighting.com که دو زبانه است ، هم از روش دیتابیس هم از روش فایل استفاده کردم
فایل که مشکلی نداره اول بررسی می کنه که الان چه زبانی انتخاب شده بعد فایل مورد نظر رو ضمیمه می کنی !
اما از روش دیتا بیس
مثلا جدول خبرها رو در نظر بگیر
می تونی تو این جدول یک فیلد بذاری به نام lang تا طرف که خواست خبر رو ارسال کنه انتخاب کنه که خبر به کدوم بخش زبان بره !
یک راه دیگه هست که بیشتر به درد سایت های 2 زبانه می خوره ولی شما فکر کنم 3 زبانه در نظر دارید .
موفق باشی
 

amirepsilon

Active Member
ممنون از همه دوسنان
کمک های بزرگی کردید مخصوصا 3dsmax جون !
حالا یه سوال !

define که شما برای زبان همون اول تعریف کردی رو چطور تغیر بدم ؟
با کوکی ؟ get چی بهتره ؟
بی زحمت یه نمونه کد بزار
یا علی
 

X7337X

Member
اگه از کوکی استفاده شه بهتره
دیگه کاربر نیازی نداره هر بار که وارد سایت میشه تغییر زبان بده
 

3dsmax

Member
ممنون از همه دوسنان
کمک های بزرگی کردید مخصوصا 3dsmax جون !
حالا یه سوال !

define که شما برای زبان همون اول تعریف کردی رو چطور تغیر بدم ؟
با کوکی ؟ get چی بهتره ؟
بی زحمت یه نمونه کد بزار
یا علی

خواهش میکنم، وظیفه بود.

خوب شما تنها کافیه نام پوشه‌ی زبان رو به جای اون fa که در مقدار define قرار داره، عوض کنید، این برا مقدار پیش فرضه، ولی برا زبانی که کاربر انتخاب می‌کنه، با دستور get من استفاده میکنم، اگه خواستید بگید تا با دستور کوکی رو هم براتون بنویسم.

در این فایل zip یک نمونه کامل گذاشتم که با Get کار مکنه.
 

پیوست ها

  • language.zip
    9.3 کیلوبایت · بازدیدها: 43

foranyone

Well-Known Member
به نظر من نیازی به استفاده از کوکی و ... نیست و فایل بهترین روشه :

برای اینکار من داخل فایل مثلا farsi.php همه ی ممتغیرهای فارسی رو می نویسم و اول هر فایل دیگه include میکنم!

بهتره زبان فعلی در دیتابیس ثبت شه همراه مسیر فایلش و اول هر فایل ابتدا به دیتابیس وصل شیم تا ببینیم زبان فعلی چیه

و include مناسب رو انجام بدیم
 

amirepsilon

Active Member
سلام

خوب تا اینجای که من فهمیدم باید تمام آدرس ها باید اینجوری باشه :
PHP:
mysite.com?lang=fa&otherGET
درسته ؟
راه دیگه همون کوکی هست ! فکر کنم بهتر باشه نه ؟

حالا اگه بخواهیم از راه کوکی بریم
تا اونجایی که من فهمیدم برای اینک زبان فارسی اینو مینویسیم :
PHP:
?lang=fa
بعدش چک میکنیم هر موقع
lang=fa
بود بیا کوکی ست کن !
درسته ؟

[/php]
 

amirepsilon

Active Member
دوست من ممنون
خیلی عالی بود

دو تا زحمت دارم
1. با کوکی بنویس
2. تغییر DataBase رو هم بهش اضافه کن

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

3dsmax

Member
این کدی که من نوشتم برای هر چندتا زبان تعریف شده، یعنی تعداد زبان معلوم نیست چندتان، و معلوم نیست که در دیتابیس چندتا فیلد برا زبان باید تعریف کنید، حالا می‌خوام برم بیرون، عصر که اومدم می‌شینم سرش فکر کنم، شاید راهی براش پیدا کردم.
----
برا برنامه نویسی همیشه راه زیاد وجود داره.
---
منتظر باشید.
 

3dsmax

Member
سلام، در مورد دیتابیس که گفتید، شما تنها کاری که باید بکنید، اینکه شما یک table میسازید، مثلا با نام news، خوب بعد 3 تا فیلد بهش اختصاص می‌دین.

یعنی اولی رو title و بدش news و language خوب اولی رو عنوان خبرتون و دومی رو متن خبرتون و مهمتر از همه سومی رو زبان خبرتون قرار می‌دین.

خوب بعد از این کارا شما باید در قسمت درج اخبار، باید 2 تا text یکی برا عنوان و دیگری برا متن خبر و سومی مثلا می‌تونید از تگ <select><option>LANG</option></select> استفاده بکنین خوب در سومی زبان ها رو درج می‌کنین، fa، en و غیره.
حالا در موقعی که خبری درج کنین، اون سومی رو مثلا بر روی fa می‌قرا می‌دین و ok میکنید، و متن با مقادیر مورد نظر رو در بانک اطلاعاتی insert می‌کنین.

خوب حالا وقتی می‌خواین مطالب رو از دیتابیس بکشید بیرون و چاپ کنید، فقط کافیه به table بگید که اونایی که language برابر fa و یا هر چیز دیگه‌ای هست select کنه، پایان

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

--------------------------------------------------------------------------------------

خوب برا کوکی که گفتین، کوکی یه مشکل داره، get هم یه مشکل دیگه، ولی من get رو پیشنهاد میکنم.

اگه از کوکی استفاده کنین، باید شما با یه فرم، مقدار language پست کنین، و بار دیگه که صفحه load شد اولش بش بگید که این مقدار پست شده رو در کوکی بزار و سپس به برنامتون بگید که با این کوکی و این مقدارها پوشه‌ی زبان مورد نظر رو فراخوانی کنه.
تازه به همین سادگیا هم نیست، این خودش یه مشکل بزرگ توشه که کوکی با یک بار load شدن صفحه تازه ساخته میشه و load بدی مقدار دهی میشه، که خودش یه مشکل اساسی دیگست.

حالا به get توجه کنین، شما ممکنه براتون پیش بیاد که بخواین یک دستور دیگه هم به get وصل کنین، حالا شما از کجا می‌خواین بفهمین که get زبان وصله یا نه، که get بدی رو بش وصل کنین ( index.php&other Get )

این براش دو راه هست، یا در موقعی که می‌خواین یه get دیگه وصل کنین، اون lang رو هم وصل کنین ( index.php?lang=fa&other Get) و یا راه دیگه اینه که یه صفحه اول سایتتون بزارید، که انتخاب کنه، کاربر که می‌خواد با چه زبونی سایت بالا بیاد و در همون موقع lang رو به get وصل کنین، نمونش مثلا این سایت http://www.ehsanlighting.com

--------------------------------------------------------------------------------------

اینم یه کد با کوکی، که همون مشکلی که گفتم رو داره.
 

پیوست ها

  • language_cooki.zip
    9.4 کیلوبایت · بازدیدها: 21
آخرین ویرایش:

amirepsilon

Active Member
سلام
ممنون
ولی من نظرم این نبود که یه فیلد دیگه برای lang بسازیم
نظرم این بود که کلا یه بانک دیگه بسازم
بهتر نیست ؟
 

جدیدترین ارسال ها

بالا