yii2 ko'p tillik qilish 3-qism

+1 ovoz
123 marta ko‘rilgan
so‘radi 03 avgust, 17 alfraganus (515 bal)
tahrirlandi 05 avgust, 17 vejon

Assalomu Alaykum akalar va ayniqsa menga doim yordam berib kelayotgan Sardor aka, akalar, sizlar bergan video tutoriallar orqali rosa harakat qildim, ular aytgan narsani qildim, va xatolik bermayapdi, ammo sayt tili ham o'zgarmadida nimagadir, qayerda nimani noto'g'ri qilganimni ham tushunolmayapman, sizlar hozir o'zimni qayerlarga ozgartirish kiritganlarimni ko'rsatmoqchiman.

-----config/web.php----

'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'components' => [
    return [
    // set target language to be Russian
    'language' => 'ru-RU',

    // set source language to be English
    'sourceLanguage' => 'en-US',

    
];

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

        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => 'qwdqdq',
        ],

messages/ru-RU/app.php

<?php

return [
    'welcome' => 'Добро пожаловать',
    'log in' => 'Войти',
    'This is a string to translate!' => 'Это строка для перевода'
    //...
];

----------siteController.php-------

Class SiteController extends Controller
{
    

    public function actionChangeLang($local) 
{
    $available_locales = [
        'ru-RU',
        'en-US'
    ];    

    if (!in_array($local, $available_locales)) {
        throw new \yii\web\BadRequestHttpException();
    }

    \Yii::$app->language = $local;

    return $this->goBack();
}

   va ohirgisi   site/index.php

  <p class="lead"><?php echo \Yii::t('app', 'This is a string to translate!'); ?></p>

Saytda xatolik bermayapti, ammo shu havola bilan tilni o'zgartirganimda  /site/change-lang?local=ru-RU

Sayt tili o'zgarmayapti, men qayerda xato qilganimni ham tushuna olmayapman

1 ta javob

+2 ovoz
javob berdi 04 avgust, 17 SedBigDaddy (1,232 bal)
tanlangan 04 avgust, 17 alfraganus
 
Eng yaxshi javob

Siz hammasini To'g'ri qilgansiz faqat esizda tursin Yii::$app->language faqat bitta zapros uchun ishlidi. demak gar boshqa action ishlasa unda til ishlamaydi. Shuning uchun actionChangeLang actionda siz Yii::$app->language ga set qilmasdan Cookieda saqlang.

mana kod:

 public function actionChangeLang($local)
    {
        $available_locales = [
            'ru-RU',
            'en-US'
        ];

        if (!in_array($local, $available_locales)) {
            throw new \yii\web\BadRequestHttpException();
        }

        \Yii::$app->language = $local;
        $cookies = Yii::$app->response->cookies;

// add a new cookie to the response to be sent
        $cookies->add(new \yii\web\Cookie([
            'name' => 'language',
            'value' => $local,
        ]));


        return $this->goBack();
    }

  Keyin action o'zgartirganizdan  keyin web configa beforeAction qo'shing. Yani componentslardan oldin. 

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

ishlashi kerak.

izoh qoldirdi 04 avgust, 17 SedBigDaddy (1,232 bal)
hohlasangiz cookie yasavotganda vaqt kiritsez bo'ladi. Yani user qanchadir vaqtgacha bu tilni eslab qoladi.
 $cookies->add(new \yii\web\Cookie([
            'name' => 'language',
            'value' => $local,
             'expire'=>time()+3600*24*30

        ]));

Yani buyoda i oyga saqlanadi.
izoh qoldirdi 04 avgust, 17 alfraganus (515 bal)
aka rahmat sizga katta, siz aytgan yo'l bilan ishladi va rus tiliga o'girdi, endi hozir nimani yossam faqat rus tilidagi tarjimasi chiqyadpi))))) endi uni qayta ingliz tiliga ogirdagigon havolasi qanaqa bo'ladi? )))) yani qayta inglzi tiliga ogirish
izoh qoldirdi 04 avgust, 17 Farhodjon (1,018 bal)
Bazadan ma'lumotlarni chiqaryapsizmi? Shunda qande 2 ta tilda chiqaryapsiz?
izoh qoldirdi 04 avgust, 17 alfraganus (515 bal)
hali bazadan qande chiqarishni o'rgana olmadim, hozir shuni organishga harakat qilyapman, endi unga ham video darslar izlayapman :-D
izoh qoldirdi 04 avgust, 17 Farhodjon (1,018 bal)
Ishlatib ko'ring. Manda shu usulda qilganimda cookie bilan muammo boldi nimagadur. Agar uddalasez baham ko'rish  esdan chiqmasin :-D
izoh qoldirdi 04 avgust, 17 alfraganus (515 bal)
topamiz aka, men shuni ustida 9 soattan beri ilmiy izlanish qilyapman, hozircha foydasi bo'lmadiyuu, lekin uddalemiz hudo hohlasa))
izoh qoldirdi 06 avgust, 17 alfraganus (515 bal)
Farhodjon aka, uddaladim aka, endi shuni baham ko'rmoqchiman)) umuman olganda yii2 da 2 tilli qilish boyicha maqola yozish kerek, boshqalar ham qiynalmasligi uchun, men databaza yoli bn ham, file yoli bn ham qande qilishni ohiri topdim
izoh qoldirdi 07 avgust, 17 Farhodjon (1,018 bal)
Qoyil. Man cookie bilan qilolmasdan sessiyani ishlatgan edim. Sizdan link kutib qolamiz

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

...