Detectar el idioma ES or EN

42 views
Skip to first unread message

Luis Alberto

unread,
Feb 20, 2018, 1:23:57 AM2/20/18
to KumbiaPHP Framework
Hola Kumbieros, ando buscando como detectar el idioma es or EN en la aplicacion y cuando se uno de los 2, mandarlo a cierto template, ya lo logre, metiendo el source en el app_controller padre, pero siempre se me lupea,

este es mi codigo:

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
    case "fr":
        //echo "PAGE FR";
        include("index_fr.php");//include check session FR
        break;
    case "it":
        //echo "PAGE IT";
        include("index_it.php");
        break;
    case "en":
        //echo "PAGE EN";
        include("index_en.php");
        break;        
    default:
        //echo "PAGE EN - Setting Default";
        include("index_en.php");//include EN in all other cases of different lang detection
        break;
}

Alguna sugerencia para meter y redirecionar a cierto template?

Saludos y gracias. 

Iván Meléndez

unread,
Feb 20, 2018, 9:42:29 AM2/20/18
to kum...@googlegroups.com
Hola estimado:

Analizando un poco tu caso, si lo que quieres es cambiar el template es más fácil de esta manera:

En el super controlador (donde heredan los controladores que usas) AppController o AdminController, en el método initialize haz esa validación pero asigna el template:

final protected function initialize() {
        $lang = Input::server('HTTP_ACCEPT_LANGUAGE');
        switch (substr($lang, 0, 2)) {
            case "fr":
                View::template('fr');
                break;
            case "it":
                View::template('it');
                break;
            case "en":
                View::template('en');
                break;
            default:
                break;
        }
    }

Espero que pueda resolver tu inquietud.

Saludos!



--
Viva KumbiaPHP Framework!
http://www.kumbiaphp.com/
Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.
---
Has recibido este mensaje porque estás suscrito al grupo "KumbiaPHP Framework" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a kumbia+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Luis Alberto

unread,
Feb 21, 2018, 1:02:44 PM2/21/18
to KumbiaPHP Framework
Pruebo ahora mismo y comento, Gracias Ivan :)

joanhey

unread,
Mar 13, 2018, 11:27:14 AM3/13/18
to KumbiaPHP Framework
Yo lo simplificaría más.

Si usas php7 aun es más fácil. Demasiado código en el initialize(), que además no es reusable.

app/libs/lang.php
class Lang
{
   
// tus lenguajes
   
public static $langs = ['es', 'fr', 'it', 'en'];

   
public static function select($default = 'es')

   
{
        $lang
= Input::server('HTTP_ACCEPT_LANGUAGE');

        $lang
= substr($lang, 0, 2);
       
if (in_array($lang, self::$langs) {
               
return $lang;
       
}
       
return $default;
   
}
}

También sería mejor mirar los siguientes y no solo el primer lenguaje.


en el initialize()

final protected function initialize()
{
  define ('LANG', Lang::select());
  View::template('template'.LANG);
}

Alli buscará template.es.phtml por ejemplo si fuese es.

Al tenerlo como constante lo puedes usar también en los controllers.

View::response(LANG);  eso hace buscar por en views/controlador/action.es.phtml;
es decir puedes tener diferentes views si quieres  index.es.phtml, index.en.phtml, ....
no solo para lenguajes
sino para cualquier cosa.
por ejemplo  index.xml.phtml, index.csv.phtml

de paso con el View::response() también puedes setear el template.

View::response($sufijo, $template)









 
Reply all
Reply to author
Forward
0 new messages