Thời gian đọc: 5 phút
Trong CodeIgniter 3, tính năng đa ngôn ngữ được hỗ trợ thông qua thư viện Language Class. Thư viện này cho phép bạn tạo các tệp ngôn ngữ để chứa các đoạn văn bản, sau đó nạp chúng vào trong các file Controller hoặc View. Việc này rất hữu ích khi bạn muốn xây dựng một ứng dụng web hỗ trợ nhiều ngôn ngữ.
Dưới đây là hướng dẫn chi tiết về cách sử dụng đa ngôn ngữ trong CodeIgniter 3:
Đầu tiên, bạn cần cấu hình ngôn ngữ mặc định và thư mục chứa các tệp ngôn ngữ.
Thiết lập ngôn ngữ mặc định:
application/config/config.php
.$config['language']
và thiết lập ngôn ngữ mặc định. Ví dụ:
$config['language'] = 'english'; // Thiết lập ngôn ngữ mặc định là tiếng Anh
Cấu hình thư mục ngôn ngữ:
Các tệp ngôn ngữ nằm trong thư mục application/language/
.
Trong thư mục này, mỗi ngôn ngữ sẽ có một thư mục riêng, ví dụ: english
, vietnamese
, french
, v.v.
vietnamese
trong application/language/
.application/language/vietnamese/
, tạo một file PHP với tên tệp tương ứng với tên nhóm ngôn ngữ mà bạn muốn quản lý, ví dụ: message_lang.php
.Ví dụ:
Tạo file message_lang.php
trong application/language/vietnamese/
:
<?php
$lang['welcome_message'] = 'Chào mừng đến với trang web của chúng tôi!';
$lang['login_message'] = 'Vui lòng đăng nhập để tiếp tục.';
$lang['logout_message'] = 'Bạn đã đăng xuất thành công.';
Tương tự, bạn tạo file message_lang.php
trong application/language/english/
:
<?php
$lang['welcome_message'] = 'Welcome to our website!';
$lang['login_message'] = 'Please log in to continue.';
$lang['logout_message'] = 'You have successfully logged out.';
Để sử dụng các chuỗi ngôn ngữ trong Controller, bạn cần nạp tệp ngôn ngữ và gọi các chuỗi thông qua thư viện ngôn ngữ.
Ví dụ:
Trong Controller Welcome.php
:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index() {
// Nạp tệp ngôn ngữ 'message_lang'
$this->lang->load('message', 'vietnamese');
// Lấy chuỗi ngôn ngữ từ tệp ngôn ngữ đã nạp
$data['welcome_message'] = $this->lang->line('welcome_message');
// Nạp View và truyền dữ liệu
$this->load->view('welcome_view', $data);
}
}
Trong View, bạn có thể sử dụng các chuỗi ngôn ngữ đã nạp bằng cách truy cập vào biến $this->lang->line()
.
Ví dụ:
Trong View welcome_view.php
:
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Trang chào mừng</title>
</head>
<body>
<h1><?php echo $this->lang->line('welcome_message'); ?></h1>
</body>
</html>
Bạn có thể cho phép người dùng chọn ngôn ngữ họ muốn sử dụng và lưu lựa chọn này vào session hoặc cookie.
Ví dụ:
Trong Controller LanguageSwitcher.php
:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class LanguageSwitcher extends CI_Controller {
public function switchLang($language = "") {
// Kiểm tra ngôn ngữ và thiết lập session
$language = ($language != "") ? $language : "english";
$this->session->set_userdata('site_lang', $language);
// Quay lại trang trước đó
redirect($_SERVER['HTTP_REFERER']);
}
}
Để thay đổi ngôn ngữ, bạn tạo liên kết tới hàm switchLang
:
<a href="<?php echo base_url('languageswitcher/switchLang/english'); ?>">English</a>
<a href="<?php echo base_url('languageswitcher/switchLang/vietnamese'); ?>">Tiếng Việt</a>
Bạn có thể sử dụng một Middleware hoặc hook để tự động nạp ngôn ngữ dựa trên lựa chọn của người dùng.
Ví dụ về Hook để tự động nạp ngôn ngữ:
Cấu hình hook:
Mở file application/config/hooks.php
và thêm cấu hình sau:
$hook['post_controller_constructor'][] = array(
'class' => '',
'function' => 'set_language',
'filename' => 'set_language.php',
'filepath' => 'hooks'
);
Tạo file hook:
Tạo file set_language.php
trong application/hooks/
:
<?php
function set_language() {
$CI =& get_instance();
$siteLang = $CI->session->userdata('site_lang');
if ($siteLang) {
$CI->lang->load('message', $siteLang);
} else {
$CI->lang->load('message', 'english');
}
}
Việc sử dụng đa ngôn ngữ trong CodeIgniter 3 rất linh hoạt và mạnh mẽ, giúp bạn xây dựng các ứng dụng web hỗ trợ nhiều ngôn ngữ một cách dễ dàng. Bằng cách nắm vững cách tạo và sử dụng các tệp ngôn ngữ, cũng như các phương pháp chuyển đổi ngôn ngữ, bạn có thể cung cấp trải nghiệm người dùng tốt hơn cho nhiều đối tượng sử dụng khác nhau. Nếu có thêm câu hỏi hoặc cần hỗ trợ, hãy cho mình biết nhé!