CodeIgniter - Internazionalizzazione

La classe di lingua in CodeIgniter fornisce un modo semplice per supportare più lingue per l'internazionalizzazione. In una certa misura, possiamo utilizzare file di lingue diverse per visualizzare il testo in molte lingue diverse.

Possiamo mettere diversi file di lingua nella directory dell'applicazione / lingua. I file della lingua di sistema possono essere trovati nella directory system / language, ma per aggiungere la propria lingua all'applicazione, è necessario creare una cartella separata per ciascuna lingua nella directory application / language.

Creazione di file Lingua

Per creare un file di lingua, devi terminarlo con _lang.php. Ad esempio, se si desidera creare un file di lingua per la lingua francese, è necessario salvarlo confrench_lang.php. All'interno di questo file è possibile memorizzare tutti i testi in lingua in chiave, combinazione di valori in$lang matrice come mostrato di seguito.

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

Caricamento del file della lingua

Per utilizzare una qualsiasi delle lingue nella tua applicazione, devi prima caricare il file di quella particolare lingua per recuperare i vari testi memorizzati in quel file. È possibile utilizzare il codice seguente per caricare il file della lingua.

$this->lang->load('filename', 'language');
  • filename- È il nome del file che desideri caricare. Non utilizzare l'estensione del file qui ma solo il nome del file.

  • Language - È il set di lingue che lo contiene.

Recupero del testo in lingua

Per recuperare una riga dal file della lingua è sufficiente eseguire il codice seguente.

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

Dove language_key è il parametro chiave utilizzato per recuperare il valore della chiave nel file di lingua caricato.

Lingue di caricamento automatico

Se hai bisogno di una lingua a livello globale, puoi caricarla automaticamente application/config/autoload.php file come mostrato di seguito.

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

Semplicemente, passa le diverse lingue per essere caricato automaticamente da CodeIgniter.

Esempio

Crea un controller chiamato Lang_controller.php e salvalo in 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 file di visualizzazione chiamato lang_view.php e salvalo in 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>

Crea tre cartelle chiamate inglese, francese e tedesco in application/language come mostrato nella figura sotto.

Copia il codice indicato di seguito e salvalo in formato english_lang.php file in formato application/language/english cartella.

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

Copia il codice indicato di seguito e salvalo in formato french_lang.php file in formato application/language/French cartella.

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

Copia il codice indicato di seguito e salvalo in formato german_lang.php file in formato application/language/german cartella.

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

Cambiare il routes.php file in formato application/config/routes.php per aggiungere il percorso per il controller di cui sopra e aggiungere la riga seguente alla fine del file.

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

Esegui il seguente URL nel browser per eseguire l'esempio precedente.

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

Produrrà un output come mostrato nello screenshot seguente. Se si modifica la lingua nell'elenco a discesa, anche la lingua della frase scritta sotto il menu a discesa cambierà di conseguenza.