مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

مکان یابی یا Localization در فریمورک Yii


I18N (Internationalizationیا بین المللی سازی) فرآیند طراحی یک application است که می تواند با زبان های مختلف سازگار باشد.فریمورک Yii طیف کاملی از ویژگی های I18N ارائه می دهد.

Locale مجموعه ای از پارامترها است که زبان و کشور کاربر را مشخص می کند. به عنوان مثال، en-US مخفف English locale و United States است.فریمورک Yii دو نوع زبان ارائه می کند: زبان منبع و زبان مقصد. زبان منبع، زبانی است که در آن تمام پیام های متنیِ برنامه با آن زبان، نوشته شده است. زبان مقصد، زباني است که براي نمايش محتوا، براي کاربران نهايي، استفاده می شود.

کامپوننت ترجمه ی پیام، متن پیام هارا از زبان مبدأ به زبان مقصد ترجمه می کند. سرویس ترجمه ی پیام، برای ترجمه یک پیام، باید آن را در یک منبع پیام جستجو کند.

برای استفاده از سرویس ترجمه ی پیام، شما باید :

  • پیام های متنی را که می خواهید ترجمه شود در متد Yii::t() قرار دهید.
  • منابع پیام را پیکربندی کنید.
  • پیام ها را در منبع پیام ذخیره کنید.

مرحله 1 - متد  Yii::t()می تواند مانند این مورد استفاده شود.

echo \Yii::t('app', 'This is a message to translate!');

در قطعه کد بالا، "app" معرف دسته بندی پیام است.

مرحله 2 - حالا فایل config/web.php را تغییر دهید.

<?php
   $params = require(__DIR__ . '/params.php');
   $config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'components' => [
         'request' => [
            // !!! insert a secret key in the following (if it is empty) - this
               //is required by cookie validation
            'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
         ],
         'cache' => [
            'class' => 'yii\caching\FileCache',
         ],
         'i18n' => [
            'translations' => [
               'app*' => [
                  'class' => 'yii\i18n\PhpMessageSource',
                  'fileMap' => [
                     'app' => 'app.php'
                  ],
               ],
            ],
         ],
         'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
         ],
         'errorHandler' => [
            'errorAction' => 'site/error',
         ],
         'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
         ],
         'log' => [
            'flushInterval' => 1,
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
               [
                  'class' => 'yii\log\FileTarget',
                  'exportInterval' => 1,
                  'logVars' => [],
               ],
            ],
         ],
         'db' => require(__DIR__ . '/db.php'),
      ],
      // set target language to be Russian
      'language' => 'ru-RU',
      // set source language to be English
      'sourceLanguage' => 'en-US',
      'modules' => [
         'hello' => [
            'class' => 'app\modules\hello\Hello',
         ],
      ],
      'params' => $params,
   ];
   if (YII_ENV_DEV) {
      // configuration adjustments for 'dev' environment
      $config['bootstrap'][] = 'debug';
      $config['modules']['debug'] = [
         'class' => 'yii\debug\Module',
      ];
      $config['bootstrap'][] = 'gii';
      $config['modules']['gii'] = [
         'class' => 'yii\gii\Module',
      ];
   }
   return $config;
?>

در کد بالا، ما زبان مبدا ومقصد را تعریف نمودیم. همچنین یک منبع پیام پشتیبانی شده توسط yii\i18n\PhpMessageSource را مشخص نمودیم. الگوی app* نشان می دهد که تمام دسته های پیام با app شروع می شود که باید با استفاده از این منبع پیامِ خاص ترجمه شود. در تنظیمات فوق، تمام ترجمه های روسی در فایل  messages/ru-RU/app.php قرار می گیرند.

مرحله 3 - اکنون، یک دایرکتوری با ساختار messages/ru-RU بسازید. داخل پوشه ru-RU یک فایل با نام app.php ایجاد می کند. آن تمام ترجمه های EN RU را ذخیره می کند.

<?php
   return [
      'This is a string to translate!' => 'Эта строка для перевода!'
   ];
?>

مرحله 4 - یک تابع به نام actionTranslation() در SiteController ایجاد نمایید.

public function actionTranslation() {
   echo \Yii::t('app', 'This is a string to translate!');
}

مرحله 5 - آدرس http://localhost:8080/index.php?r=site/translation را در مرورگر وب تان وارد کنید، آنچه که مشاهده خواهید کرد مطابق با تصویر زیر می باشد.

همانطور که مشاهده می کنید پیام ما به زبان روسی ترجمه شده است. ما می توانیم به صورت پویا زبانِ برنامه را تغییر دهیم.

 

مرحله 6 – متد actionTranslation() را ویرایش نمایید.

public function actionTranslation() {
   \Yii::$app->language = 'en-US';
   echo \Yii::t('app', 'This is a string to translate!');
}

اکنون پیام به زبان انگلیسی نمایش داده می شود :

مرحله 7 - در یک پیام ترجمه شده، می توانید یک یا چند پارامتر را وارد کنید.

public function actionTranslation() {
   $username = 'Vladimir';
   // display a translated message with username being "Vladimir"
   echo \Yii::t('app', 'Hello, {username}!', [
      'username' => $username,
   ]), "<br>";
   $username = 'John';
   // display a translated message with username being "John"
   echo \Yii::t('app', 'Hello, {username}!', [
      'username' => $username,
   ]), "<br>";
   $price = 150;
   $count = 3;
   $subtotal = 450;
   echo \Yii::t('app', 'Price: {0}, Count: {1}, Subtotal: {2}', [$price, $count, $subtotal]);
}

پس خروجی بدین قرار خواهد بود.

شما می توانید به جای اینکه پیامهای متنی را به صورت تک تک ترجمه کنید یک اسکریپتِ view را بطور کامل ترجمه کنید. برای مثال، اگر زبان مقصد ru-RU باشد و شما می خواهید view file با نام  views/site/index.phpرا ترجمه کنید، باید view را ترجمه کنید و آن را در دایرکتوری  views/site/ru-RU ذخیره کنید.

 

مرحله 8 - دایرکتوری views/site/ru-RU را ایجاد کنید. سپس داخل پوشه ru-RU یک فایل با نام index.php با کد زیر بسازید.

<?php
   /* @var $this yii\web\View */
   $this->title = 'My Yii Application';
?>

 
<div class = "site-index">
   <div class = "jumbotron">
      <h1>Добро пожаловать!</h1>
   </div>
</div>

مرحله 9 - زبان مقصد ru-RU است، بنابراین اگر شما در آدرسبار مرورگر وب تان آدرس http://localhost:8080/index.php?r=site/index را وارد نمایید ، صفحه را با ترجمه روسی مشاهده خواهید کرد.

فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید