Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.
Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin. Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Yii2 da sahifani 2 xil tilda qilish

+3 ovoz
194 marta ko‘rilgan
so‘radi 20 iyul, 17 Oscar (211 bal)

Yii2 da sahifani 2 xil tilda qilish qanday bo'ladi shu haqida malumot bersalaringiz iloji bo'lsa kichikroq misol bilan ko'rsatsalariz.

3 Javoblar

+1 ovoz
javob berdi 21 iyul, 17 Farhodjon (1,192 bal)
Agar siz i18n ga tushunmasangiz boshqacha soddaroq yo'li ham bor. Bazada nechta til bo'lsa shuncha ustun yaratasiz. Masalan: title_uz, title_ru, title_en. Keyin tilni sessiyaga yozib qo'yasiz. Yii::$app->session->set('siteLang'); Har bir view da sessiyadagi tilni qandaydur o'zgaruvchiga o'zlashtirib olasiz. $l = Yii::$app->session->get('siteLang'); Bazadan ma'lumotlarni chiqarayotkaningizda $item['title_'.$l] ko'rinishda chiqarasiz. Bu ham bitta soddaroq variant
izoh qoldirdi 04 avgust, 17 alfraganus (812 bal)
Farhod aka, shuni batafsilroq tushuntira olasizmi iltimos, qayerga sessiyani yozaman masalan, siz aytgandek qilishga harkat qildim ammo eplolmayapman, oldindan rahmat aka
0 ovoz
javob berdi 25 iyul, 17 SedBigDaddy (1,237 bal)

Web configga components ichiga buni qo'shing:

    'i18n' => [
        'translations' => [
            'app' => [
                'class' => 'yii\i18n\PhpMessageSource',
                //  'basePath' => '@app/messages',
                'sourceLanguage' => 'ru-RU',
                'fileMap' => [
                    'app' => 'app.php',
                    'app/error' => 'error.php',
                    'app/yii' => 'error.php',
                ],
            ],
        ],
    ],

So'ng huddi o'sha web configdagi components tepasiga buni qo'shing:

'on beforeAction' => function($event) {
    \Yii::$app->language=\Yii::$app->getRequest()->getCookies()->getValue(\app\components\helpers\CookieHelper::COOKIE_LANGUAGE,'ru-RU');
},

Keyin Yii2ni ichiga messages degan papka yasang.  So'ng uni ichiga uz-UZ va ru-RU degan papka yasab har birini ichiga app.php degan papka yasang.

So'ng app.php filelarni ichini to'ldiring maslan

ru-Ru ni ichidagi app.php ni 

<?php

return [
   'sale'=>'Мобильные телефоны',
   'buy'=>'Покупка'
];

uz-UZ papkani ichidagi app.phpni

<?php

return [
    'sale'=>'Mobile telefonlar',
    'buy'=>'Sotib olish',
];

qilib to'ldiring.So'ng SiteConroller ichinga bu action qo'shing:

izoh qoldirdi 25 iyul, 17 SedBigDaddy (1,237 bal)
davomi buyerda
izoh qoldirdi 25 iyul, 17 SedBigDaddy (1,237 bal)
public function actionLanguage($lang){
    if(!in_array($lang,['uz-UZ','ru-RU'])){
        $lang='ru-RU';
    }
      ​
 $cookie = new Cookie([
    'name' => 'lang',
    'value' => $lang,
    'expire' => time()+3600*3600,
   ]);
   $cookies = Yii::$app->response->cookies;
   $cookies->add($cookie);

    Yii::$app->language=$lang;
    return $this->redirect(Yii::$app->request->referrer);
}
izoh qoldirdi 25 iyul, 17 SedBigDaddy (1,237 bal)
va bo'ldi
Endi  tilni almashtirish uchun site/language?lang=uz-UZ yoki site/language?lang=ru-RU qilishingiz mumkin
izoh qoldirdi 01 avgust, 17 alfraganus (812 bal)
aka  sh kodlarni sinab korganumda, site controllerda xatolik beryapdi

syntax error, unexpected '$cookie' (T_VARIABLE)

buni qande hal qisa boladi?
izoh qoldirdi 02 avgust, 17 alfraganus (812 bal)
kegin  ===>> shu funksiyada ham quyidagicha xatolik beryapdi,Class 'app\components\helpers\CookieHelper' not found  

xatolik shu liiyadan kelyapdi-->>>>

'on beforeAction' => function($event) {
    \Yii::$app->language=\Yii::$app->getRequest()->getCookies()->getValue(\app\components\helpers\CookieHelper::COOKIE_LANGUAGE,'ru-RU');
},

Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.

Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin.

Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Telegram kanal YordamUzRss

...