Cakephp, PHP

Lựa chọn nhiều ngôn ngữ với Cakephp3

Sử dụng nhiều ngôn ngữ trong 1 trang web với Cakephp3

Các bước thực hiện:

Bước 1: Trong file app.php ta đặt giá trị cho defaultLocal như sau:

  • ‘App’ => [

    ‘defaultLocale’ => env(‘APP_DEFAULT_LOCALE’, ‘vn_VN’),
    ],

Bước 2: Trong file AppController.php ta sẽ đặt ngôn ngữ với Session cho trang web với đoạn code sau:

  1. use Cake\I18n\I18n;//function change language of website

    public function changeLanguage($language = null){
    if($language != null && in_array($language, [‘vn_VN’, ‘ja_JP’])){
    $this->request->getSession()->write(‘Config.language’, $language);
    return $this->redirect($this->referer());
    } else {
    $this->request->getSession()->write(‘Config.language’, I18n::locale());
    return $this->redirect($this->referer());
    }
    }

  2. //function set language for web
    public function beforeFilter(Event $event) {
    parent::beforeFilter($event);
    if($this->request->getSession()->check(‘Config.language’)){
    I18n::setLocale($this->request->getSession()->read(‘Config.language’));
    } else {
    $this->request->getSession()->write(‘Config.language’, I18n::locale());
    }
    }

Bước 3: Tạo link để trang web lưu lại ngôn ngữ khi submit để gọi đến function changeLanguage () đã tạo ở file AppController.php ở bước 2 :

<a href =” <?= $this->Url->build([‘controller’ => ‘App’, ‘action’ => ‘changeLanguage’, ‘vn_VN’]); ?>” > VietNamese </a>

<a href =” <?= $this->Url->build([‘controller’ => ‘App’, ‘action’ => ‘changeLanguage’, ‘ja_JP’]); ?>” > Japanses </a>

Bước 4: Tạo file trong folder để lưu bản dịch cho trang web theo đường dẫn src/Locale/ja_JP/default.po (ở đây đang ví dụ sang ngôn ngữ dịch là Japanses). Trong file default.po ta viết dòng lệnh:

msgid “Quản lý người dùng”
msgstr “担当者管理”

Trong đó: msgid là key sử dụng trong view của trang web, msgstr là ngôn ngữ dịch. Tương tự như những phần khác ta viết các mục tương tự.

Bước 5: Ở phần view của trang web ta sử dụng đoạn code sau để có thể hiển thị được ngôn ngữ khi dịch:

<?= __(‘Quản lý người dùng’) ?>.

Lúc này khi ra trang web ta click vào link ‘Japanses’  đã tạo ở bước 3 thì đoạn văn bản ‘Quản lý người dùng’ sẽ chuyển sang tiếng Nhật là ‘担当者管理’.

Như vậy là đã hoàn thành việc chuyển đổi nhiều ngôn ngữ với Cakephp3.