Implementación multi idioma en CodeIgniter

La característica Multi-Idioma es necesaria para la aplicación web moderna. Esta característica se utiliza con el propósito de la internacionalización. En este tutorial, analizaremos cómo implementar la función multilingüe en el marco de CodeIgniter. Usando la clase de Idioma de CodeIgniter, puede hacer que su sitio sea multilingüe. La clase de lenguaje de CodeIgniter proporciona algunas funciones para recuperar archivos de idioma y líneas de texto.

Las siguientes guías lo llevarán a la manera correcta de crear un sitio web en varios idiomas con CodeIgniter. Si es nuevo en CodeIgniter, puede leer el Tutorial de CodeIgniter para principiantes primero.

Idioma predeterminado del sitio

Abra el application/config/config.phparchivo y especifique el idioma predeterminado del sitio.
$ config [ 'idioma' ] =  'inglés' ;

Creación de archivos de idioma

Cree archivos de varios idiomas e inserte esos archivos en el application/language/directorio con subdirectorios separados para cada idioma (por ejemplo, francés, alemán, etc.).
Los archivos de idioma deben ser nombrados con _langsufijo. Por ejemplo, si desea crear un archivo que contenga la traducción de mensajes del sitio, entonces el nombre del archivo podría ser message_lang.php.
La estructura de los archivos de idioma se vería a continuación.
  • solicitud/
    • idioma/
      • Inglés/
        • message_lang.php
        • ......
      • francés/
        • message_lang.php
        • ......
      • alemán/
        • message_lang.php
        • ......
      • ......
Dentro del archivo de idioma ( message_lang.php), deberá asignar cada línea de texto a la $langmatriz.
$ lang [ 'language_key' ] =  'El mensaje real que se mostrará' ;
Los archivos de lenguaje de muestra se dan a continuación.
  • english/message_lang.php El archivo se vería como el siguiente.
    <? php 
    $ lang [ 'welcome_message' ] =  'Bienvenido a CodexWorld' ;
  • french/message_lang.php El archivo se vería como el siguiente.
    <? php 
    $ lang [ 'welcome_message' ] =  'Bienvenue à CodexWorld' ;
  • german/message_lang.php El archivo se vería como el siguiente.
    <? php 
    $ lang [ 'welcome_message' ] =  'Willkommen in CodexWorld' ;

Cargando archivos de idioma

Para recuperar una línea de un archivo de idioma en particular, primero debe cargar el archivo de idioma. Hay dos opciones para cargar un archivo de idioma.
En el controlador:
en la __construct()función del controlador, escriba el siguiente código.
$ this -> lang -> load ( 'mensaje' , 'inglés' );
Si elige esta opción, debe cargar el archivo de idioma en todos los controladores de su aplicación.
Uso de ganchos:
Para usar la opción de ganchos, debe habilitar la función de ganchos en el application/config/config.phparchivo.
$ config [ 'enable_hooks' ] =  TRUE ;
Abrir application/config/hooks.phparchivo y definir un gancho.
$ hook [ 'post_controller_constructor' ] = array ( 
    'class'     =>  'LanguageLoader' , 
    'function'  =>  'initialize' , 
    'filename'  =>  'LanguageLoader.php' , 
    'filepath'  =>  'hooks' );
Crear la clase LanguageLoader en el LanguageLoader.phparchivo dentro del application/hooks/directorio. LanguageLoader.phparchivo contiene el siguiente código.
<? php class  LanguageLoader { 
    function  initialize () { 
        $ ci  = &  get_instance (); 
        $ ci -> cargar -> ayudante ( 'idioma' ); 
        $ ci -> lang -> load ( 'mensaje' , 'inglés' ); 
    } 
}

Trayendo linea de texto

Después de cargar el archivo de idioma, puede obtener el texto de la línea utilizando el siguiente código.
$ this -> lang -> line ( 'welcome_message' );

Cambiar diferentes idiomas

Ahora es el momento de cambiar diferentes idiomas y hacer que su sitio sea multilingüe. Utilizaremos la sesión para almacenar el idioma solicitado por el usuario y cargar el idioma correspondiente.
Antes de comenzar a implementar funciones multilingües, abra el application/config/autoload.phparchivo y cargue la biblioteca SESSION y el ayudante de URL .
$ autoload [ ' library ' ] = array ( 'session' ); $ autoload [ 'helper' ] = array ( 'url' );
Crearemos el controlador LanguageSwitcher para administrar el cambio de idioma. application/controllers/LanguageSwitcher.phparchivo contiene el siguiente código.
<? php  if (!  defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 
La clase  LanguageSwitcher  extiende el  controlador_CIN { 
    función pública  __construct () { 
        parent :: __construct ();     
    } 
 
    function  switchLang ( $ language  "" ) { 
        
        $ language  = ( $ language  ! =  "" )? $ idioma  "inglés" ; 
        $ esto -> sesión ->set_userdata ( 'site_lang' $ language ); 
        
        redirect ( $ _SERVER [ 'HTTP_REFERER' ]); 
        
    } 
}
Abra el application/hooks/LanguageLoader.phparchivo y reemplace el código del archivo con el siguiente código.
<? php class  LanguageLoader { 
    function  initialize () { 
        $ ci  = &  get_instance (); 
        $ ci -> cargar -> ayudante ( 'idioma' ); 
        $ siteLang  $ ci -> session -> userdata ( 'site_lang' ); 
        if ( $ siteLang ) { 
            $ ci -> lang -> load ( 'mensaje' , $ siteLang ); 
        } else { 
            $ ci -> lang ->carga ( 'mensaje' , 'inglés' ); 
        } 
    } 
}
Muestra el menú desplegable de idiomas a la vista. Una vez que se cambie la opción switchLang()de idioma, se llamará a la función del controlador LanguageSwitcher. switchLang()La función establece el idioma del sitio en sesión según el idioma solicitado y se redirige a la página de visualización. La lista desplegable de idiomas de muestra y el código de mensaje de bienvenida en varios idiomas se muestran a continuación.
< select  onchange = "javascript: window.location.href = ' <? php echo base_url ();?> LanguageSwitcher / switchLang /' + this.value;" >
    < opción  value = "english"  <? php if ( $ this -> session -> userdata ( 'site_lang' ) ==  'english' ) echo  'selected = "selected"' ; ?>> Inglés </ option >
    < opción  value = "french"  <? php if ( $ this -> session -> userdata ( 'site_lang' ) ==  'french' ) echo  'selected = "selected"' ; ?>> Francés </ option >
    < opción  value = "german"  <? php if ( $ this -> session -> userdata ( 'site_lang' ) ==  'german' ) echo  'selected = "selected"' ; ?>> Alemán </ option >   
</ seleccionar >
< p > <? php echo  $ this -> lang -> line ( 'welcome_message' ); ?> </ p >
Además, puede notar que estamos utilizando la URL del conmutador de idioma sin index.phpPor lo tanto, debe crear un .htaccessarchivo en el directorio raíz y este archivo contendrá el siguiente código.
RewriteEngine en
RewriteCond $ 1! ^ (Index \ .php)
RewriteRule ^ (. *) $ /Codeigniter/index.php/$1 [L]

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.