1. Cấu Hình Hệ Thống

Trước tiên, hãy cấu hình hệ thống để hỗ trợ đa ngôn ngữ. Bạn có thể làm điều này trong tệp cấu hình application/config/config.php.

Mở tệp application/config/config.php và thay đổi hoặc thêm giá trị cho language:

$config['language'] = 'english'; // Ngôn ngữ mặc định

2. Tạo Các Tệp Ngôn Ngữ

Tiếp theo, bạn cần tạo các tệp ngôn ngữ chứa các thông điệp và văn bản bạn muốn dịch.

Tạo thư mục cho các ngôn ngữ trong thư mục application/language.

Ví dụ:

  • application/language/english/
  • application/language/vietnamese/

Trong mỗi thư mục ngôn ngữ, tạo các tệp PHP để chứa các mảng ngôn ngữ.

Ví dụ: application/language/english/messages_lang.php

<?php
$lang['welcome_message'] = 'Welcome to our website!';
$lang['contact_us'] = 'Contact Us';

Tương tự, tạo tệp cho các ngôn ngữ khác:

application/language/vietnamese/messages_lang.php

<?php
$lang['welcome_message'] = 'Chào mừng bạn đến với trang web của chúng tôi!';
$lang['contact_us'] = 'Liên hệ với chúng tôi';

3. Tải Các Tệp Ngôn Ngữ Trong Controller

Để sử dụng các tệp ngôn ngữ trong ứng dụng của bạn, bạn cần tải chúng trong Controller hoặc Model.

Trong Controller, bạn có thể tải ngôn ngữ bằng cách sử dụng phương thức $this->load->language():

class Welcome extends CI_Controller {

    public function __construct() {
        parent::__construct();
        // Tải tệp ngôn ngữ 'messages' từ thư mục hiện tại
        $this->load->language('messages');
    }

    public function index() {
        // Sử dụng ngôn ngữ đã tải
        $data['message'] = $this->lang->line('welcome_message');
        $this->load->view('welcome_message', $data);
    }
}

4. Đổi Ngôn Ngữ Động

Để cho phép người dùng chọn ngôn ngữ, bạn có thể lưu lựa chọn ngôn ngữ trong session hoặc cookie và tải ngôn ngữ tương ứng trong mỗi request.

Lưu ngôn ngữ trong session:

Trong Controller, thêm logic để thay đổi ngôn ngữ dựa trên lựa chọn của người dùng:

public function set_language($language = 'english') {
    $this->session->set_userdata('language', $language);
    redirect($_SERVER['HTTP_REFERER']); // Quay lại trang trước đó
}

Tải ngôn ngữ dựa trên session:

Trong application/config/config.php, thay đổi cấu hình để đọc ngôn ngữ từ session:

$language = $this->session->userdata('language');
if ($language) {
    $config['language'] = $language;
}

Bạn cũng có thể thêm logic này trong Controller để đảm bảo rằng ngôn ngữ được chọn luôn được áp dụng:

public function __construct() {
    parent::__construct();
    $language = $this->session->userdata('language');
    if ($language) {
        $this->config->set_item('language', $language);
    }
    $this->load->language('messages');
}

5. Sử Dụng Ngôn Ngữ Trong Views

Trong View, bạn có thể sử dụng các hàm lang() để hiển thị các thông điệp:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Welcome</title>
</head>
<body>
    <h1><?php echo $message; ?></h1>
    <a href="<?php echo site_url('welcome/set_language/english'); ?>">English</a>
    <a href="<?php echo site_url('welcome/set_language/vietnamese'); ?>">Vietnamese</a>
</body>
</html>

Tổng Kết

Để tạo một ứng dụng đa ngôn ngữ trong CodeIgniter 3, bạn cần:

  • Cấu hình hệ thống: Đặt ngôn ngữ mặc định trong config.php.
  • Tạo tệp ngôn ngữ: Tạo thư mục và tệp ngôn ngữ trong application/language.
  • Tải tệp ngôn ngữ: Sử dụng $this->load->language() trong Controller.
  • Đổi ngôn ngữ động: Lưu ngôn ngữ trong session và áp dụng nó trong mỗi request.
  • Sử dụng ngôn ngữ: Hiển thị thông điệp trong View bằng cách sử dụng các hàm lang().

Hy vọng hướng dẫn này giúp bạn tạo và quản lý các nội dung đa ngôn ngữ trong ứng dụng CodeIgniter 3 của mình!