دیجی اسکریپت

نحوه ی ایجاد فایل های po Archives | دیجی اسکریپت

روش هایی برای ایجاد سایت های چند زبانه

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

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

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

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

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

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

<?php
    /* en.php - english language file */
    $messages['hello'] = 'Hello';
    $messages['signup'] = 'Sign up for free';
?>

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

<?php
/* fa.php - farsi language file */
$messages['hello'] = 'سلام';
$messages['signup'] = 'عضویت در سایت';
?>

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

<?php
    require('fa.php');
    echo($messages['hello']);
    echo($messages['signup']);
?>

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

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

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

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

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

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

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

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

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

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

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

<?php
    $language = "fa_IR";
    //$language = "en_US";
    putenv("LANG=".$language);
    setlocale(LC_ALL, $language);
    $domain = "messages";// name of PO file
    bindtextdomain($domain, "locale");
    textdomain($domain);
    echo gettext("hello");
?>

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

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

دوستانی که سوال یا مشکل دارند از انتهای همین اموزش مطرح کنند تا پاسخ بگیرند. موفق و پیروز باشید:-D

برای دانلود poEdit  اینجا کلیک کنید.



لینک منبع مطلب