CodeIgniter - Internationalisation

La classe de langue de CodeIgniter fournit un moyen simple de prendre en charge plusieurs langues pour l'internationalisation. Dans une certaine mesure, nous pouvons utiliser des fichiers de langue différents pour afficher du texte dans de nombreuses langues différentes.

Nous pouvons mettre différents fichiers de langue dans le répertoire application / langue. Les fichiers de langue système se trouvent dans le répertoire système / langue, mais pour ajouter votre propre langue à votre application, vous devez créer un dossier distinct pour chaque langue dans le répertoire application / langue.

Création de fichiers Langue

Pour créer un fichier de langue, vous devez le terminer par _lang.php. Par exemple, vous souhaitez créer un fichier de langue pour la langue française, puis vous devez l'enregistrer avecfrench_lang.php. Dans ce fichier, vous pouvez stocker tous vos textes de langue en combinaison clé / valeur dans$lang tableau comme indiqué ci-dessous.

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

Chargement du fichier de langue

Pour utiliser l'une des langues de votre application, vous devez d'abord charger le fichier de cette langue particulière pour récupérer divers textes stockés dans ce fichier. Vous pouvez utiliser le code suivant pour charger le fichier de langue.

$this->lang->load('filename', 'language');
  • filename- C'est le nom du fichier que vous souhaitez charger. N'utilisez pas l'extension du fichier ici mais uniquement le nom du fichier.

  • Language - C'est le jeu de langues qui le contient.

Récupération du texte de la langue

Pour récupérer une ligne du fichier de langue, exécutez simplement le code suivant.

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

language_key est le paramètre clé utilisé pour récupérer la valeur de la clé dans le fichier de langue chargé.

Chargement automatique des langues

Si vous avez besoin d'une langue dans le monde, vous pouvez la charger automatiquement dans application/config/autoload.php fichier comme indiqué ci-dessous.

| -----------------------------------------------------------------------
|  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();

Simplement, passez les différentes langues à charger automatiquement par CodeIgniter.

Exemple

Créez un contrôleur appelé Lang_controller.php et enregistrez-le dans 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);
      }
   }
?>

Créez un fichier de vue appelé lang_view.php et enregistrez-le à 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>

Créez trois dossiers appelés anglais, français et allemand en application/language comme indiqué dans la figure ci-dessous.

Copiez le code ci-dessous et enregistrez-le dans english_lang.php déposer dans application/language/english dossier.

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

Copiez le code ci-dessous et enregistrez-le dans french_lang.php déposer dans application/language/French dossier.

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

Copiez le code ci-dessous et enregistrez-le dans german_lang.php déposer dans application/language/german dossier.

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

Changer la routes.php déposer dans application/config/routes.php pour ajouter une route pour le contrôleur ci-dessus et ajouter la ligne suivante à la fin du fichier.

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

Exécutez l'URL suivante dans le navigateur pour exécuter l'exemple ci-dessus.

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

Il produira une sortie comme indiqué dans la capture d'écran suivante. Si vous changez la langue dans la liste déroulante, la langue de la phrase écrite sous la liste déroulante changera également en conséquence.