Welcome Guest, Not a member yet? Register   Sign In
setLocale() doesn't change the language set by browser
#1
Question 
(This post was last modified: 04-07-2020, 06:02 AM by blackrabbit.)

Hello everybody



I'm new to CI and to any framework and it's just awesome! Heart 
I'm not used to write in forums as I'm usualy allways able to find a solution already posted somewhere so it's my first time in 20 years of IT. Big Grin So I hope my english is ok as the rules say "proper english only" and I correctly explain my problem.



So to my problem:

I'm making a bilingual site french/german with CMS features so I use bilingual db's and the CI locale feature.



The language recognition of browsers works fine but I'm unable to change the language through



$this->request->setLocale($language);

or

setlocale(LC_ALL, $language);



when I control it with getLocale() I can see that setLocale() works but there is no change in the views...



in Config/App.php

public $defaultLocale = 'de';

public $negotiateLocale = true;

public $supportedLocales = ['de-CH','de-DE','de-AT','fr-CH','fr-FR','fr-CA','fr-BE','fr','de'];      ( tryed also ['de','fr'] )



my switchlanguage-button calls Language.php Controller with:

PHP Code:
<?php namespace App\Controllers;
use 
CodeIgniter\HTTP\IncomingRequest;

class 
Language extends BaseController
{
    public function 
setLanguage($language)
    {
        
$session = \Config\Services::session();
        
$session->set('language',$language);
        
$this->request->setLocale($language);
        
$session->set('locale',$this->request->getLocale());
        
/*setlocale(LC_ALL, $language);*/
        
return redirect()->back();
    }



I'm using session('language') to select the right columns in the db's and the locale for all the titles, bottons, validation errors and more...




in BaseController.php I got:

PHP Code:
$session = \Config\Services::session();
if (
session('language') == null) {
    
$locale $this->request->getLocale();
    
$language substr($locale02);
    
$session->set('language',$language);
    
$session->set('locale',$locale); /*<-this only for debuging*/



Can you see where I'm wrong? I can't find a solution. CI locale strictly follows the Browsers properties and I can't change it...
I'm sure it's something stupid Wink


thank you
Reply


Messages In This Thread
setLocale() doesn't change the language set by browser - by blackrabbit - 04-07-2020, 05:54 AM



Theme © iAndrew 2016 - Forum software by © MyBB