如何在cakephp 3.2中制作多语言静态网站?

时间:2017-03-03 10:05:47

标签: php cakephp internationalization cakephp-3.0

需要在CakePHP 3.2中制作多语言网站的步骤。 网站内容是静态的

2 个答案:

答案 0 :(得分:2)

完成代码

语言在网站中使用印地语和英语链接进行了更改,也可以添加任何其他语言

<div class="navbar-brand pull-right" style='padding: 15px 0px;'>
        <button class="btn btn-default dropdown-toggle pull-right" data-toggle="dropdown">

        </button>
        <ul class="dropdown-menu">

            <li>
                <?php 

                echo $this->Html->link("Hindi", array("controller" => "App", "action" => "changeLanguage",'hi')); 
                ?>
            </li>
            <li class="divider"></li>

             <li>
                <?php 

                echo $this->Html->link("English", array("controller" => "App", "action" => "changeLanguage",'en')); 
                ?>
            </li>
        </ul>

    </div>
在App Controller中的

中添加了以下代码的初始化方法

 $language = $this->Cookie->read('website_language');
    if (isset($language)) {
        I18n::locale($language);
    } else {
        I18n::locale('en_US');
    }

为更改添加了一种新方法

  public function changeLanguage($lang) {

    if (!empty($lang)) {
        if ($lang == 'hi') {
            //$this->request->session()->write('website_language', 'hi_IN');
            $this->Cookie->write('website_language', 'hi_IN');
        } else if ($lang == 'en') {
            //$this->request->session()->write('website_language', 'en_US');
            $this->Cookie->write('website_language', 'en_US');
        }
        //in order to redirect the user to the page from which it was called
        $this->redirect($this->referer());
    }
}

创建文件夹和文件

/src
/Locale
    /en_US
        default.po
    /hi_IN
        default.po

  default.po

希望它会有所帮助。 如果人们不知道问题的答案,那么至少要解决这个问题:)

答案 1 :(得分:0)

要扩展 Vinit 的答案,请在App Controller中设置 Cookie组件

use Cake\Controller\Component\CookieComponent;

还可以初始化类中的组件

public $components = array('Cookie');