我们成功地构建了一个多语言(NLD/DEU/ENG) cakephp网站(cakephp 2.3.6)。现在我们的客户希望我们把比利时语添加到他的网站上。代码列表不包含比利时语言的代码。它要么是杜特(荷兰语;佛兰德语),要么是fre (法语)。
但是没有这个url: example.com/dut/控制器/action
我们希望有以下内容:example.com/bel/控制器/action
是否可以使用“dut”,但在url中显示“bel”呢?还是有一种添加“自定义”语言的方法?
发布于 2014-12-22 14:30:56
您需要使用标准代码的语言,比利时语言不存在(有三种官方语言,荷兰语,法语,德语)。但是,如果您有特定国家的本地化内容,则应该使用国家代码。
有些国家有一种以上的正式语文(比利时、瑞士、西班牙、波斯尼亚和黑塞哥维那.)。在这种情况下,您应该使用语言-国家代码的组合,因为您可以看到这里。
您的URL应该如下所示:
德国国家和语言
www.example.com/de/
荷兰和荷兰语
www.example.com/nl/
比利时和官方语言
www.example.com/nl-be/ www.example.com/fr-be/
在您的AppController前过滤器中,放置一个开关语句,其中指定语言和本地化内容的规则。
编辑(添加示例)
AppControler.php
public function beforeFilter()
{
switch ($this->params['lang'])){
// for nederland
case: 'nl':
Configure::write('Config.language', 'dut');
$this->set('for_country','nl');
break;
// for germany
case: 'de':
Configure::write('Config.language', 'deu');
$this->set('for_country','de');
break;
// for belgium / dutch speakers
case: 'nl_be':
Configure::write('Config.language', 'dut');
$this->set('for_country','be');
break;
// for belgium / french speakers
case: 'nl_fr':
Configure::write('Config.language', 'fr');
$this->set('for_country','be');
break;
// default english
case: 'en':
Configure::write('Config.language', 'eng');
$this->set('for_country','us');
break;
}
}
PostsController.php
public function index ()
{
// find all posts for country, example only content for Belgium in french
// example.com/nl_fr/posts
$options = array(
'conditions' => array(
'Post.localized' => $for_country
)
);
$posts = $this->Post->find('all',$options);
.......
}https://stackoverflow.com/questions/27603888
复制相似问题