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.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Chức năng bình luận bị tắt ở Lựa chọn nhiều ngôn ngữ với Cakephp3