ساخت سایت چند زبانه با php


اگر از cms وردپرس استفاده می کنید مطمینا افزونه های رایگان و تحاری زیادی را می توانید پیدا کنید که با کمترین زحمت سایت شما را چند زبانه کرده و در اختیاز شما قرار می دهد ولی اگر در حال طراحی سایت اختصاصی خود هستید و یا از cms های آماده استفاده نمی کتید و پروژه هایی که می نویسید و سایت هایی که طراحی می کنید مثل تیم نت برنامه نویسی نت پارادیس , ممطمینا نیاز خواهید دادش که این قابلیت چند زبانه را به صورت دستی و با برنامه نویسی به پروژه خودتان اضافه کنید .

برای ساخت سایت چند زبانه با php  تکنیک های مختلفی وجود دارد که به بررسی انها میپردازیم , به هرحال دقت کنید که ایجاد یک سایت چند زبانه صرفا ترجمه ی سایت به زبان های مختلف نیست بلکه واحدهای استفاده شده در سایت نیز باید به زبان مقصد تغییر فرمت داده شوند که این واحدها شامل واحد پول , فرمت زمان میشود.

روش هایی که در اینجا برای ایجاد سایت های چند زبانه شرح میدهیم به صورت زیر هستند :

  1. استفاده از آرایه ها
  2. استفاده از تابع gettext

در اینجا به توضیح موارد بالا در PHP میپردازیم :

استفاده از آرایه ها برای ایجاد سایت چند زبانه در PHP :

با استفاده از آرایه های انجمنی (associative) میتوان ترجمه ی سایت را انجام داد. بدین صورت که برای هر کلمه از زبان پایه (زبان پیش فرض سایت) ترجمه ی ان را در نظر میگیرم و ترجمه های مربوط به هر زبان را درون فایل جداگانه قرار میدهیم. به مثال زیر دقت کنید تا متوجه بشید:

ترجمه ی بالا برای حالتی است که سایت به زبان انگلیسی نمایش داده میشود حال به زبان دیگر ترجمه را انجام میدهیم:

ترجمه ی بالا برای حالتی است که سایت قرار است در حالت فارسی نمایش داده شود. حال برای استفاده از هر زبان کافیست که فایل ترجمه را به صفحه اضافه کنید و مورد استفاده قرار دهید:

این روش ساده ترین روش برای ایجاد سایت چند زبانه است که سالها مورد استفاده قرار میگیرد.

حتما بخوانید  تابع urlencode در php و اینکد URL

استفاده از تابع gettext برای ایجاد سایت چند زبانه :

برای ایجاد ترجمه های مختلف میتوان از فایل های po و mo استفاده کرد. این همان کاری است که CMS های بزرگ از جمله وردپرس انجام میدهند. مراحل استفاده از این فایل ها را به صورت زیر شرح میدهیم :

  1. ایجاد دایرکتوری مناسب
  2. ایجاد فایل های ترجمه
  3. استفاده از فایل های ترجمه

برای استفاده از فایل های po یا mo ابتدا باید یک مسیر به صورت تصویر زیر ایجاد کنید :

ساخت سایت چند زبانه با php

در اینجا قصد داریم سایتی به دو زبان انگلیسی و فارسی بسازیم. حالا نیاز داریم که فایل های po و mo را ایجاد کنیم. برای ایجاد این فایل ها نیاز به نرم افزار poEdit دارید که میتونید اون رو از اینجا دانلود و نصب کنید.

ساخت سایت چند زبانه با php

بعد از دانلود و نصب این نرم افزار آن را باز کنید و از منوی فایل گزینه ی new را بزنید سپس زبان مورد نظر خود را بر روی english(united states) قرار دهید و ok را بزنید. سپس از نوار بالایی گزینه ی save را بزنید (یا کلید های cntrl + s را از روی صفحه کلید بزنید) و محل قرار گیری فایل را درون پوشه ی en_us/LC_MESSAGES که در مرحله ی قبل ایجاد کردید مشخص کنید. فایل های ایجاد شده به صورت زیر خواهند بود:

ساخت سایت چند زبانه با php

حالا فایلی که پسوند ان po است را با یک ویرایشگر (مثلا نت پد) باز کنید , کدهای این فایل به صورت زیر خواهند بود :

ساخت سایت چند زبانه با php

در فایل ایجاد شده دقت کنید که قسمت language باید به صورت چیزی که در عکس میبینید باشد اگر بدین صورت نیست ان را ویرایش کنید و به حالت en_US قرار دهید. حال به صورت تصویر زیر ترجمه های خودمون رو به این فایل اضافه میکنیم:

ساخت سایت چند زبانه با php

در تصویر بالا به دو خط انتهایی که به کدها اظافه کردیم دقت کنید قسمت msgid یک کلمه را مشخص میکند و قسمت msgstr ترجمه ی ان کلمه را مشخص میکند. میتوانید کلمات یا جملاتی قرار بدید و ترجمه ی انها را نیز مشخص کنید. توجه کنید که به ازای هر msgid در خط زیرین ان باید یک msgstr به عنوان ترجمه قرار بگیرد. حال فایل را ذخیره کنید سپس روی فایل دوتا کلیک کنید تا توسط poEdit باز بشه و دکمه ی save را بزنید تا فایل mo نیز تغییر پیدا کند.  الان ترجمه ی انگلیسی شما اماده است. همین کار رو میتونید انجام بدید و زبان رو روی persian (iran) قرار بدید همچنین ترجمه رو در قسمت msgstr برابر با “سلام” قرار بدید.

حتما بخوانید  فایل php.ini چیست

حالا کدهای زیر رو درون فایل index.php در بیرون از پوشه ی locale قرار بدید و ذخیره کنید:

حالا فایل index.php رو اجرا کنید تا نتیجه ی ترجمه رو ببینید   کاربرانی که از ویندوز استفاده میکنن مکنه ترجمه ی فارسی رو نبینن و خود کلمه ی hello رو ببینن این به خاطر سیستم عامل ویندوز است که از فارسی ساپورت نمیکند اما اگه روی لینوکس تست کنید مشکلی نداره , ترجمه رو روی en_US قرار بدید سپس وب سرور خودتون رو restart کنید و سپس فایل index.php رو اجرا کنید تا ترجمه ی انگلیسی رو ببینید. (این ترجمه رو همه ی سیستم عامل ها میبینن).

اگر متوجه شده باشید می بینید که روش دوم  برای ساخت سایت چند زبانه با php حرفه ای تر و بهتر از روش اول است که باعث حفظ نطم کد های php و ساختار استاندارد زبان ها مختلف سایت است که cms های معروفی مثل وردپرس و پلاگین های معروفش به این روش کار می کنند و پیشنهاد میشود به این صورت عمل کنید

اگه میخواید ترجمه های شما در تمامی سیستم عامل ها پشتیبانی بشه میتونید از کتابخانه ی gettext (کلیک کنید) استفاده کنید که قابلیت های بیشتری در اختیار شما قرار میده. سورس کد نمونه مثال های این اموزش به همراه poEdit رو میتونید از انتهای همین مقاله آموزشی دانلود و استفاده کنید.

دانلود نرم افزار Poedit از نت پارادیس

دانلود فایل های پروژه استفاده شده در این آموزش

هرگونه سوال و یا مشکلی درباره پیاده سازی و ساخت سایت چند زبانه با php داشتید از قسمت نظرات ارسال کنید در کمترین زمان ممکن جواب سوال خود را خواهی گرفت

موفق و پیروز باشید

حسن شفیعی
مدرس ، پنتستر ، توسعه دهنده اپلیکیشن های تحت وب ، عضو مرکز حامی نخبگان و از مدیران و اعضای رسمی تیم امنیتی آشیانه هستم . علاقه خاصی به زبان php و امنیت شبکه و لینوکس دارم و هر روز تلاش می کنم به این حوزه ها مسلط تر شوم و اطلاعاتم را در وب به اشتراک بگذارم

دیدگاه کاربران

4 پاسخ به “ساخت سایت چند زبانه با php”

  1. majid گفت:

    درود../
    فیلم آموزشی در این زمینه که به صورت کامل توضیح داده باشه میتونید معرفی کنید؟

    0

    • حسن شفیعی گفت:

      سلام . متاسفانه فیلمی در این زمینه ندارم . ولی برای ترجمه قالب سایت های وردپرسی می توانید به وفور آموزش های ویدیویی مربوطه رو پیدا کنید.

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

      موفق باشید

      0

  2. زهره گفت:

    سلام سوالی در مورد دو زبانه کردن سایت دارم .مثلا من سایتی طراحی کردم که چند صفحه داره و میخوام کاربر در هر صفحه ای که هست با کلیک روی تغییر زبان همان صفحه را انگلیسی یا فارسی کند نه این که با زدن روی لینک به صفحه اول برود . دو صفحه fa و en هم مانند روش اول که توضیح دادین ایجاد کردم سایتم رو هم با php نوشتم . ممنون میشم راهنماییم مکنید

    0

    • حسن شفیعی گفت:

      سلام . برای اینکار کافیه در صفجه جاری مفدار رو با متد get به همان صفحه ارسال کنید . به اینصورت که مثلا در صفحه news.php هستید لینک مورد نظر را به صورت داینامیک با آرایه $_SERVER و ایندکس SCRIPT_NAME ایجاد کنید و در سورس کد صفحه فعلی خود در اول صفحه که قصد دریافت اطلاعات query string را دارید مقدار زبان که en و یا fa است رو دریافت و فایل مربوطه و رشته های مورد نظر را از فایل زبان نظر فراخوانی کنید.

      موفق باشید

      0

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جدیدترین آموزش های آنلاین



عضویت در خبرنامه