我已经在'app/Language'文件夹中翻译了2种语言,并设置了语言切换器。目前,对于example.com/en
和example.com/sp
等基本URL,翻译工作正常。
我的问题是当访客访问其他页面,如/post/cats/123
,然后我如何设置所有视图页面的语言。什么是标准的方式在codeigniter 4语言设置。
语言文件夹-
语言切换器代码。
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?= base_url('en') ?>">English</a>
<a class="dropdown-item" href="<?= base_url('sp') ?>">Spanish</a>
</div>
路由-
$routes->get('/{locale}', 'Language::index');
语言类-
class Language extends BaseController
{
public function index()
{
$locale = $this->request->getLocale();
$this->request->setLocale($locale);
return redirect()->back();
}
}
2条答案
按热度按时间d7v8vwbk1#
我自己在codeigniter-4中得到了一个多语言的解决方案,我现在描述。我的视图代码在这里,可以点击选择一种语言-
然后我用了一种语言的方式
对于这个路线我创建了一个类语言与方法索引-
在这里我启用会话来存储选定的语言,并从会话中删除旧语言。
$locale = $this->request->getLocale();
与此请求我收到选定的语言,并存储到会话$session->set('lang',$locale);
中,并将其重定向到基本URL。在codeigniter-4默认BaseController中,在initController方法中,我为所有控制器设置了语言
$language->setLocale($session->lang);
,并为其他控制器扩展了该语言这里我启用了language Library作为服务
$language = \Config\Services::language();
,并使用会话数据通过此方法$language->setLocale($session->lang);
设置语言。xxhby3vn2#
以下是Shahadat提到的使用CI4的本地化实现:
CodeIgniter 4 Language Localization Tutorial