امروز:دوشنبه ,۱۳۹۸/۰۹/۲۵
Download http://bigtheme.net/joomla Free Templates Joomla! 3
Home / Yii2 / سایت چند زبانه با فریم ورک yii

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

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

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

'language'=>'fa-IR'

هنگام ایجاد مدل گزینه ای داریم با عنوان i18n : در صورتی که این گزینه را انتخاب کنیم
در مدل attribute ها به این صورت مقدار دهی می شوند:

  public function attributeLabels() {
                return [
                    'id' => Yii::t('app', 'ID'),
                    'title' => Yii::t('app', 'Title'),                   
                    'content' => Yii::t('app', 'Content'),
                    'status' => Yii::t('app', 'Status'),
                ];
            }

Yii::t() وظیفه ی ترجمه را بر عهده دارد
در واقع برای مثال با استفاده از ID ما به ترجمه آن در فایل app.php که بعدا خواهیم ساخت دسترسی داریم.
بعنوان نمونه شما در مسیر

/vendor/yiisoft/yii2/messages/

به ترجمه های پیش فرض فریم ورک دسترسی دارید :
اگر فولدر fa , فولدر en را باز کنید فایل Yii.php زیر را خواهید داشت:
fa

return [
    'The combination {values} of {attributes} has already been taken.' => 'مقدار {values} از {attributes} قبلاً گرفته شده است.',
    'Unknown alias: -{name}' => 'نام مستعار ناشناخته: -{name}',
    '(not set)' => '(تنظیم نشده)',
    'An internal server error occurred.' => 'خطای داخلی سرور رخ داده است.',
    'Are you sure you want to delete this item?' => 'آیا اطمینان به حذف این مورد دارید؟',
    'Delete' => 'حذف',
    'Error' => 'خطا',
    'File upload failed.' => 'آپلود فایل ناموفق بود.',
    'Home' => 'صفحه‌اصلی',
    'Invalid data received for parameter "{param}".' => 'برای پارامتر "{param}" اطلاعات نادرستی دریافت شده است.',
    'Login Required' => 'ورود اجباری',
    'Missing required arguments: {params}' => 'فاقد آرگومان‌های مورد نیاز: {params}',
    'Missing required parameters: {params}' => 'فاقد پارامترهای مورد نیاز: {params}',
    'No' => 'خیر',

en

return [
    'Powered by {yii}' => 'Desarrollado con {yii}',
    'The requested view "{name}" was not found.' => 'La vista solicitada "{name}" no fue encontrada',
    'Yii Framework' => 'Yii Framework',
    'just now' => 'justo ahora',
    '{attribute} contains wrong subnet mask.' => '{attribute} contiene la máscara de subred incorrecta',
    '{attribute} is not in the allowed range.' => '{attribute} no está en el rango permitido.',
    '{attribute} must be a valid IP address.' => '{attribute} debe ser una dirección IP válida ',
    '{attribute} must be an IP address with specified subnet.' => '{attribute} debe ser una dirección IP con subred especificada.',
    '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} debe ser igual a "{compareValueOrAttribute}".',
    '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} debe ser mayor a "{compareValueOrAttribute}".',
    '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} debe ser mayor o igual a "{compareValueOrAttribute}".',
    '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} debe ser menor a "{compareValueOrAttribute}".',
    '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} debe ser menor  o igual a "{compareValueOrAttribute}".',
    '{attribute} must not be a subnet.' => '{attribute} no debe ser una subnet.',

خوب ما می خواهیم attribute های مدل – متن های ویو نیز دارای ترجمه باشند
تا هنگام استفاده از هر زبان مثلا فارسی یا انگلیسی ترجمه های مربوط به آن نمایش داده شود .

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

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

تنظیمات localization i18n

با دستور زیر در composer

yii message/config   common/config/i18n.php

در کد بالا به وسیله ی message config و
مسیر دلخواهمان فایل i18n.php که نامی دلخواه است تنظیمات زبان را برای ما ایجاد می کند :

<?php
/**
 * Configuration file for 'yii message/extract' command.
 *
 * This file is automatically generated by 'yii message/config' command.
 * It contains parameters for source code messages extraction.
 * You may modify this file to suit your needs.
 *
 * You can use 'yii message/config-template' command to create
 * template configuration file with detailed description for each parameter.
 */
return [
    'color' => null,
    'interactive' => true,
    'help' => null,
    'sourcePath'  => '@yii',
    'messagePath' => 'messages',
    'languages' => [],
    'translator' => 'Yii::t',
    'sort' => false,
    'overwrite' => true,
    'removeUnused' => false,
    'markUnused' => true,
    'except' => [
        '.svn',
        '.git',
        '.gitignore',
        '.gitkeep',
        '.hgignore',
        '.hgkeep',
        '/messages',
        '/BaseYii.php',
    ],
    'only' => [
        '*.php',
    ],
    'format' => 'php',
    'db' => 'db',
    'sourceMessageTable' => '{{%source_message}}',
    'messageTable' => '{{%message}}',
    'catalog' => 'messages',
    'ignoreCategories' => [],
];

localization i18n
در این فایل ما در language زبان هایی که میخواهیم در سایت استفاده کنیم را وارد میکنیم:

'languages' => ['fa','en'],

حال باید مسیری که می خواهیم کلمات و جملات را از آن استخراج کنیم را مشخص کنیم
جاهایی که از Yii::t استفاده کرده ایم

 'sourcePath'  => '@frontend',

تنظیم بعدی برای سایت چند زبانه محل قرار دادن فایل های ایجاد شده در فولدر messages می باشد
این فولدر را باید ایجاد کنید. بعنوان مثال در فولدر frontend من این فولدر را ایجاد می کنم

   'messagePath' => '@frontend/messages',

سایت چند زبانه با فریم ورک yii
در مرحله آخر در کامپوزر تنظیمات خود را اجرا می کنیم

yii message/extract @common/config/i18n.php

همان مسیری که فایل تنظیمات ما در آن می باشد
پس از اجرای دستور بالا در فولدر messages ما
دو فولدر fa , en ایجاد می شود app.php

return [
    ' ثبت گروه' => '',
    ' ثبت گروه پروژه ' => '',
    'Are you sure you want to delete this item?' => '',
    'Author' => 'نویسنده',
    'Books' => '',
    'BuyDate' => 'تاریخ خرید',
    'Cat ID' => '',
    'Categoty' => '',
    'Contacts' => '',
    'Create' => '',
    'Create Contact' => '',
    'Create Gallery' => '',
    'Create Gallery Item' => '',
    'Create Nbuy Cat' => '',
    'Create Project Item' => '',
    'Create Property' => '',
    'Create Property Value' => '',
    'Delete' => '',
    'Galleries' => '',
    'Gallery ID' => '',
    'Gallery Items' => '',
    'ID' => '',
    'Int' => '',
    'Ip' => '',
    'Nbuy Cats' => '',
    'Price' => '',
    'Project Categories' => '',
    'Project ID' => '',
    'Project Items' => '',
    'Properties' => '',
    'Property ID' => '',
    'Property Values' => '',
    'Reset' => '',
    'Role ID' => '',
    'Salt' => '',
    'Search' => '',
    'Status' => '',
    'Title' => '',
    'Update' => '',
    'Update {modelClass}: ' => '',
    'User ID' => '',
    'parent_id' => '',
];

تنظیمات زبان ما تکمیل شده است
برای تست کافی است attribute ها را مقدار دهی کنید
و زبان را یکبار برابر با en یکبار برابر با fa قرار دهید.
سایت چند زبانه با فریم ورک yii

Check Also

yii2 The ‘cursor’ option is required, except for aggregate with the explain argument

yii2 The ‘cursor’ option is required, except for aggregate with the explain argument برای حل …

پاسخ دهید

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