需要在CakePHP 3.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');