CodeIgniter - Internasionalisasi

Kelas bahasa di CodeIgniter menyediakan cara mudah untuk mendukung banyak bahasa untuk internasionalisasi. Sampai batas tertentu, kita dapat menggunakan file bahasa berbeda untuk menampilkan teks dalam banyak bahasa berbeda.

Kita dapat meletakkan file bahasa yang berbeda di direktori aplikasi / bahasa. File bahasa sistem dapat ditemukan di direktori sistem / bahasa, tetapi untuk menambahkan bahasa Anda sendiri ke aplikasi Anda, Anda harus membuat folder terpisah untuk setiap bahasa di direktori aplikasi / bahasa.

Membuat file Bahasa

Untuk membuat file bahasa, Anda harus mengakhirinya dengan _lang.php. Misalnya Anda ingin membuat file bahasa untuk bahasa Perancis, maka Anda harus menyimpannya denganfrench_lang.php. Di dalam file ini Anda dapat menyimpan semua teks bahasa Anda dalam kunci, kombinasi nilai dalam$lang array seperti yang ditunjukkan di bawah ini.

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

Memuat file Bahasa

Untuk menggunakan salah satu bahasa dalam aplikasi Anda, Anda harus terlebih dahulu memuat file dari bahasa tersebut untuk mengambil berbagai teks yang disimpan dalam file itu. Anda dapat menggunakan kode berikut untuk memuat file bahasa.

$this->lang->load('filename', 'language');
  • filename- Ini adalah nama file yang ingin Anda muat. Jangan gunakan ekstensi file di sini tetapi hanya nama file.

  • Language - Ini adalah set bahasa yang memuatnya.

Mengambil Teks Bahasa

Untuk mengambil baris dari file bahasa cukup jalankan kode berikut.

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

Dimana language_key adalah parameter kunci yang digunakan untuk mengambil nilai kunci dalam file bahasa yang dimuat.

Bahasa Muat Otomatis

Jika Anda membutuhkan beberapa bahasa secara global, maka Anda dapat memuatnya secara otomatis application/config/autoload.php file seperti yang ditunjukkan di bawah ini.

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

Cukup, teruskan bahasa yang berbeda untuk dimuat secara otomatis oleh CodeIgniter.

Contoh

Buat pengontrol bernama Lang_controller.php dan simpan di 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);
      }
   }
?>

Buat file tampilan bernama lang_view.php dan simpan di 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>

Buat tiga folder bernama Inggris, Prancis, dan Jerman di application/language seperti yang ditunjukkan pada gambar di bawah ini.

Salin kode yang diberikan di bawah ini dan simpan di english_lang.php mengajukan application/language/english map.

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

Salin kode yang diberikan di bawah ini dan simpan di french_lang.php mengajukan application/language/French map.

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

Salin kode yang diberikan di bawah ini dan simpan di german_lang.php mengajukan application/language/german map.

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

Mengubah routes.php mengajukan application/config/routes.php untuk menambahkan rute untuk pengontrol di atas dan menambahkan baris berikut di akhir file.

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

Jalankan URL berikut di browser untuk menjalankan contoh di atas.

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

Ini akan menghasilkan keluaran seperti yang ditunjukkan pada tangkapan layar berikut. Jika Anda mengubah bahasa di daftar dropdown, bahasa kalimat yang tertulis di bawah dropdown juga akan berubah.