Estoy creando un sitio multilenguaje con mi propio framework php.. tengo los idiomas en archivos .json en el servidor y los llamo con la funcion file_get_contents..
me gustaria saber si existe otra forma mas optima, y segura para hacer esto. ya que el proyecto pretende tener una gran cantidad de usuarios...!!
Por el momento en el index de la pagina obtengo el lenguaje segun el navegador:
No se si sea recomendable guardar esos datos en sessiones
delphi
if(!Session::get("lang")){ $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); switch ($lang){ case "en": Session::set("lang","en"); break; case "es": Session::set("lang","es"); break; default: Session::set("lang","es"); break; } }
Luego en el controller principal tengo este metodo donde utilizo el file_get_contents(); y retorno un array con los datos del .json decodificado:
No estoy seguro si el file_get_contents(); se podria a hacer lento cuando haya una gran cantidad de usuarios.
delphi
protected function getPagesLang($param){ $rutaLang = ROOT."languages".DS.Session::get("lang").DS."pages".DS.$param.".json"; if(is_readable($rutaLang)){ $requireLang = file_get_contents($rutaLang); $requireLang = json_decode($requireLang,true); }else{ throw new Exception("Error de lenguaje de pagina"); } return $requireLang; }
luego por ejemplo en mi controlador indexController.php llamo el metodo getPagesLang("index") y le paso como parametro el nombre del archivo .json que tiene el idioma