首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多语言网站的CakePHP中翻译URI和控制器?

如何在多语言网站的CakePHP中翻译URI和控制器?
EN

Stack Overflow用户
提问于 2011-01-12 20:55:03
回答 1查看 808关注 0票数 2

大家好,谢谢您的光临,我非常感谢您的帮助。我是一个SEO的家伙,并继承了一个CakePHP网站,将提供三种语言的内容。我想得到一种规范的(seo友好的)方法来获得一个好的多语言URL架构,而不会让我的开发人员太生气。

我们想要的最终解决方案是:

每个语言都有三个不同的URL(翻译)。例如:

www.domain.com/L1/language-1-parent/language-1-child/ www.domain.com/L2/language-2-parent/language-2-child/ www.domain.com/L3/language-3-parent/language-3-child/

在这里,我们有一个内容部分。这些内容在所有三种语言中都是相同的,但将被翻译。因此,我们希望翻译相应的子目录和URI,其中:

L{1-3}是表示语言的子目录。

语言-{1-3}是内容的“控制器”。目前我们只有一个控制器,不管语言子目录是否在不同的语言中)。

langauge-{1-3}-child是依赖的内容项或子目录,必须根据语言子目录进行翻译。

假设的问题:

我的开发人员告诉我,因为Cake有控制器为内容提供服务,因此翻译有点麻烦。在上面的例子中:我假设'language-1,‘Langu-2,'language-3’是控制器。

另外,我假设,由于我们试图从一个控制器中提供三个内容版本(具有不同的URL),我们遇到了一个问题。

目前,我们有这样的URL:

www.domain.com/L1/language-1-parent/language-1-child/ www.domain.com/L2/language-1-parent/language-1-child/ www.domain.com/L3/language-1-parent/language-1-child/

这里的问题是,不管用户是否选择不同的语言,我们都有不对应和不被翻译的URL。另外,我们也有一些没有其他语言翻译的内容项目。因此,我想在页面上放入一个rel=canonical元标记,而不需要翻译和/或不索引这些页面,而我们正致力于翻译。

再次感谢您的帮助,我期待您的答复。我很乐意澄清任何事情。

EN

回答 1

Stack Overflow用户

发布于 2011-01-12 21:31:03

使用标准cakephp配置,您可以很容易地使用cakephp国际化实现这类URLs。

代码语言:javascript
复制
/eng/users/account
/fre/users/account

如果你需要这些URL之王

代码语言:javascript
复制
/eng/users/account
/fre/utilisateurs/compte

那你应该玩你的AppController.php

代码语言:javascript
复制
// pseudo code, you need to rewrite this section as you need.
var lang getUrlParams['language'];
var controller getUrlParams['controller'];
var action getUrlParams['action'];

if (controller[lang] != controller || action[lang] != action) :
    redirect to `/lang/controller[lang]/action[lang]`;
endif;

在视图中,所有链接都应该调用如下

代码语言:javascript
复制
$this->Html->link(__('My Link'), array('controller' => __('users'), 'controller' => __('account')))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4673948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档