CodeIgniter - Quốc tế hóa
Lớp ngôn ngữ trong CodeIgniter cung cấp một cách dễ dàng để hỗ trợ nhiều ngôn ngữ để quốc tế hóa. Ở một mức độ nào đó, chúng ta có thể sử dụng các tệp ngôn ngữ khác nhau để hiển thị văn bản bằng nhiều ngôn ngữ khác nhau.
Chúng tôi có thể đặt các tệp ngôn ngữ khác nhau trong thư mục ứng dụng / ngôn ngữ. Tệp ngôn ngữ hệ thống có thể được tìm thấy tại thư mục hệ thống / ngôn ngữ, nhưng để thêm ngôn ngữ của riêng bạn vào ứng dụng của bạn, bạn nên tạo một thư mục riêng cho từng ngôn ngữ trong thư mục ứng dụng / ngôn ngữ.
Tạo tệp Ngôn ngữ
Để tạo một tệp ngôn ngữ, bạn phải kết thúc nó bằng _lang.php. Ví dụ: bạn muốn tạo một tệp ngôn ngữ cho tiếng Pháp, thì bạn phải lưu nó bằngfrench_lang.php. Trong tệp này, bạn có thể lưu trữ tất cả các văn bản ngôn ngữ của mình bằng tổ hợp khóa, giá trị trong$lang mảng như hình bên dưới.
$lang[‘key’] = ‘val’;
Đang tải tệp ngôn ngữ
Để sử dụng bất kỳ ngôn ngữ nào trong ứng dụng của bạn, trước tiên bạn phải tải tệp của ngôn ngữ cụ thể đó để truy xuất các văn bản khác nhau được lưu trữ trong tệp đó. Bạn có thể sử dụng mã sau để tải tệp ngôn ngữ.
$this->lang->load('filename', 'language');
filename- Đây là tên của tập tin bạn muốn tải. Không sử dụng phần mở rộng của tệp ở đây mà chỉ sử dụng tên của tệp.
Language - Nó là bộ ngôn ngữ chứa nó.
Tìm nạp văn bản ngôn ngữ
Để tìm nạp một dòng từ tệp ngôn ngữ, chỉ cần thực thi đoạn mã sau.
$this->lang->line('language_key');
Ở đâu language_key là tham số khóa được sử dụng để tìm nạp giá trị của khóa trong tệp ngôn ngữ đã tải.
Ngôn ngữ tự động tải
Nếu bạn cần một số ngôn ngữ trên toàn cầu, thì bạn có thể tự động tải nó bằng application/config/autoload.php tập tin như hình dưới đây.
| -----------------------------------------------------------------------
| 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();
Đơn giản, chuyển các ngôn ngữ khác nhau để CodeIgniter tự động điền.
Thí dụ
Tạo một bộ điều khiển có tên Lang_controller.php và lưu nó vào 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);
}
}
?>
Tạo một tệp dạng xem có tên lang_view.php và lưu nó tại 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>
Tạo ba thư mục có tên tiếng Anh, tiếng Pháp và tiếng Đức bằng application/language như trong hình bên dưới.
Sao chép mã đã cho bên dưới và lưu vào english_lang.php trong tập tin application/language/english thư mục.
<?php
$lang['msg'] = "CodeIgniter Internationalization example.";
?>
Sao chép mã đã cho bên dưới và lưu vào french_lang.php trong tập tin application/language/French thư mục.
<?php
$lang['msg'] = "Exemple CodeIgniter internationalisation.";
?>
Sao chép mã đã cho bên dưới và lưu vào german_lang.php trong tập tin application/language/german thư mục.
<?php
$lang['msg'] = "CodeIgniter Internationalisierung Beispiel.";
?>
Thay đổi routes.php trong tập tin application/config/routes.php để thêm tuyến đường cho bộ điều khiển trên và thêm dòng sau vào cuối tệp.
$route['lang'] = "Lang_controller";
Thực thi URL sau trong trình duyệt để thực thi ví dụ trên.
http://yoursite.com/index.php/lang
Nó sẽ tạo ra một đầu ra như trong ảnh chụp màn hình sau. Nếu bạn thay đổi ngôn ngữ trong danh sách thả xuống, ngôn ngữ của câu được viết bên dưới danh sách thả xuống cũng sẽ thay đổi theo.