Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/07/2015, 18:51
kindah
 
Fecha de Ingreso: agosto-2009
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Sistema multilenguaje con manejo de placeholders

Buenas tardes muchachos, si bien se que hay mucha documentación al respecto, no encontré nada que cumpla con mis expectativas, lo que estoy buscando es un sistema de lenguajes facil de implementar en una web (o bien actualizar el que ya poseo) en el cual se puedan pasar variables / placeholder o como quieran llamarlo, con eso me refiero a poder tener cadenas de texto del estilo:

login_bienvenido = "Bienvenido %s, gracias por conectarte al sitio."

Adjunto el codigo que tengo actualmente, para ver si alguien me puede ayudar a implementar esto, de paso tambien quisiera saber que es mas efectivo, si utilizar arrays o defines (en terminos de rendimiento).

Muchas gracias!!!

Clase de Lenguajes:
Código PHP:
$LANG_LIST = array(
'en' => array('English','us.gif'),
'es' => array('Español','AR.gif'),
);

class 
Lang{
    private 
$language;
    
    public function 
__construct()
    {
        
$this->SetLang();
    }
    private function 
CheckLangArchive($DirLang){
        
$language "modules_/languages/".$DirLang.".php";
        if(
file_exists($language))
            return 
TRUE;
        else
            return 
FALSE;    
    }
    
    private function 
DetectLang(){
        global 
$LANG_LIST;
        if (
$_SERVER['HTTP_ACCEPT_LANGUAGE']){
            
$this->language_temp substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
        }
        else{
            
$this->language_temp language_default;
        }
        
        
$this->language ereg_replace("[^a-z]","",$_GET['changelang']);
        if(empty(
$_COOKIE[language_cookie])){
            if(empty(
$this->language)){
                
$this->language $this->language_temp;
            }
            else{
                if(
array_key_exists($this->language,$LANG_LIST) == FALSE){
                    
$this->language $this->language_temp;
                }
            }
        }
        else{
            if(empty(
$this->language)){
                
$this->language $_COOKIE[language_cookie];
            }
            else{
                if(
array_key_exists($this->language,$LANG_LIST) == FALSE){
                    
$this->language $_COOKIE[language_cookie];
                }
            }
        }
        return 
$this->language;
    }
    
    function 
SetLang(){
            
$this->DetectLang();
            
setcookie(language_cookie,$this->language,time() + 3600 24);
            if(
$this->CheckLangArchive($this->language)){
                require_once(
"modules_/languages/".$this->language.".php");
            }
            else{
                require_once(
"modules_/languages/".language_default.".php");
            }
    }

Archivo de lenguaje:
Código PHP:
//LOGIN
define("lang_login_username""Usuario");
define("lang_login_password""Contraseña");
define("lang_login_process""Conectar");
define("lang_login_lostpassword""Perdiste tu contraseña?"); 
Como lo llamo en el index.php:
Código PHP:
require_once('modules_/class/language.class.php');
$Lang = new Lang();