views:

304

answers:

1

I know how to create .po files and how to generate .mo files and then use them for translation on my Codeigniter powered site. However, I'm not quite sure on how to change language from the site GUI. I want to stick to codeigniter's default url calling schema: www.domain.com/controllername/method/param1/param2.

Calling the server like this is a no-brainer: www.domain.com/controllername?lang=en

Doing that for every controller using the default url schema, requires me to implement the same method in every controller, just to pass the lang parameter to the setlocale() function and then bind to my .po domain name. Feels awkward...

ANy ideas how you guys work with gettext in codeigniter? And yes, I do want to work with gettext.

A: 

I check for the user's language hooking the detection at "post_controller_constructor", and I set it somewhere globally available (e.g. changing at runtime the language in the config file). A controller has just to use the value.

The language is detected with the following check in fallback

  1. it has been set via a GET parameter (e.g. ?lang=en) ?
  2. it was set in a cookie ?
  3. what is the browser suggested language ?
  4. use the default language configured

If a language is not supported, however, use the default. Set or refresh the cookie with the new data.

So you usually do not need to use the GET parameter, evenctuallly just one time if the user clicks somewhere to change language

Riccardo Galli