• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
setLocale() doesn't change the language set by browser

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



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;

Language extends BaseController
    public function 
$session = \Config\Services::session();
/*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('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

I still don't know if setlocal() should change the selected language used by the language files or if it was just my immagination...

So I finaly did manualy insert the language variable in all the lang() functions like that:
<?= lang('Titles.titleStundenplan', [],$language)?>

The only problem now is for the validation error language who strictly follows the user properties set in browser. I don't know how to change that manualy.

any help would be apreciated...

To set the language you need to do this:

PHP Code:
$language = \Config\Services::language();

That way you won't need to set the language every single time. Also, I think that this function would do the validation for you.

Thank you but it's still not working.....
Checking with $language->getLocale() I see it's changing but in the lang() function it doesn't nor for validation...

PHP Code:
public function setLanguage($real_language)
    $language = \Config\Services::language();

    /*just for debuging*/
    $session = \Config\Services::session();



Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  

  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2020 MyBB Group.