CodeIgniter - Internacionalización

La clase de idioma en CodeIgniter proporciona una manera fácil de admitir varios idiomas para la internacionalización. Hasta cierto punto, podemos usar archivos de diferentes idiomas para mostrar texto en muchos idiomas diferentes.

Podemos poner diferentes archivos de idioma en el directorio de la aplicación / idioma. Los archivos de idioma del sistema se pueden encontrar en el directorio system / language, pero para agregar su propio idioma a su aplicación, debe crear una carpeta separada para cada idioma en el directorio application / language.

Creando archivos Idioma

Para crear un archivo de idioma, debe terminarlo con _lang.php. Por ejemplo, desea crear un archivo de idioma para el idioma francés, luego debe guardarlo confrench_lang.php. Dentro de este archivo puede almacenar todos los textos de su idioma en clave, combinación de valores en$lang matriz como se muestra a continuación.

$lang[‘key’] = ‘val’;

Cargando archivo de idioma

Para usar cualquiera de los idiomas en su aplicación, primero debe cargar el archivo de ese idioma en particular para recuperar varios textos almacenados en ese archivo. Puede utilizar el siguiente código para cargar el archivo de idioma.

$this->lang->load('filename', 'language');
  • filename- Es el nombre del archivo que desea cargar. No use la extensión del archivo aquí, solo el nombre del archivo.

  • Language - Es el conjunto de idiomas que lo contiene.

Obteniendo texto de idioma

Para obtener una línea del archivo de idioma, simplemente ejecute el siguiente código.

$this->lang->line('language_key');

Dónde language_key es el parámetro de clave utilizado para obtener el valor de la clave en el archivo de idioma cargado.

Idiomas de carga automática

Si necesita algún idioma a nivel mundial, puede cargarlo automáticamente en application/config/autoload.php archivo como se muestra a continuación.

| -----------------------------------------------------------------------
|  Auto-load Language files
| -----------------------------------------------------------------------
| Prototype:
|   $autoload['language'] = array('lang1', 'lang2');
|
| NOTE: Do not include the "_lang" part of your file. For example
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
*/
$autoload['language'] = array();

Simplemente, pase los diferentes idiomas para que CodeIgniter los cargue automáticamente.

Ejemplo

Crea un controlador llamado Lang_controller.php y guárdalo en application/controller/Lang_controller.php

<?php
   class Lang_controller extends CI_Controller {

      public function index(){
         //Load form helper
         $this->load->helper('form');

         //Get the selected language
         $language = $this->input->post('language');
		
         //Choose language file according to selected lanaguage
         if($language == "french")
            $this->lang->load('french_lang','french');
         else if($language == "german")
            $this->lang->load('german_lang','german');
         else
         $this->lang->load('english_lang','english');
		
         //Fetch the message from language file.
         $data['msg'] = $this->lang->line('msg');
		
         $data['language'] = $language;
         //Load the view file
         $this->load->view('lang_view',$data);
      }
   }
?>

Crea un archivo de vista llamado lang_view.php y guárdalo en application/views/ lang_view.php

<!DOCTYPE html>
<html lang = "en"> 

   <head>
      <meta charset = "utf-8">
      <title>CodeIgniter Internationalization Example</title>
   </head>
	
   <body>
      <?php
         echo form_open('/lang');
      ?>
		
      <select name = "language" onchange = "javascript:this.form.submit();">
         <?php
            $lang = array('english'=>"English",'french'=>"French",'german'=>"German");
				
            foreach($lang as $key=>$val) {
               if($key == $language)
               echo "<option value = '".$key."' selected>".$val."</option>";
               else
               echo "<option value = '".$key."'>".$val."</option>";
            }
				
         ?>
			
      </select>
		
      <br>
		
      <?php
         form_close();
         echo $msg;
      ?>
		
   </body>
	
</html>

Cree tres carpetas llamadas inglés, francés y alemán en application/language como se muestra en la figura siguiente.

Copie el código dado a continuación y guárdelo en english_lang.php presentar en application/language/english carpeta.

<?php
   $lang['msg'] = "CodeIgniter Internationalization example.";
?>

Copie el código dado a continuación y guárdelo en french_lang.php presentar en application/language/French carpeta.

<?php
   $lang['msg'] = "Exemple CodeIgniter internationalisation.";
?>

Copie el código dado a continuación y guárdelo en german_lang.php presentar en application/language/german carpeta.

<?php
   $lang['msg'] = "CodeIgniter Internationalisierung Beispiel.";
?>

Cambiar el routes.php presentar en application/config/routes.php para agregar una ruta para el controlador anterior y agregar la siguiente línea al final del archivo.

$route['lang'] = "Lang_controller";

Ejecute la siguiente URL en el navegador para ejecutar el ejemplo anterior.

http://yoursite.com/index.php/lang

Producirá una salida como se muestra en la siguiente captura de pantalla. Si cambia el idioma en la lista desplegable, el idioma de la oración escrita debajo del menú desplegable también cambiará en consecuencia.