`
hulunberbus
  • 浏览: 857713 次
文章分类
社区版块
存档分类
最新评论

CakePHP: 基于url的多语言版本网站的实现方案

 
阅读更多
有几种方案来实现网站的多语言版本:

*) 基于url的方案( 比如{locale}.yeenav.com 或者 www.yeenav.com/{locale} )

*) 基于session/cookie的方案( 通过记录用户语言选项在session中来实现切换)

*) 基于theme的方案( 通过切换不同语言版本的theme来实现)

其中基于url的方案更为SEO友好。

下面简单介绍CakePHP中如何实现基于url的方案。

1、url格式

使用iso code3来唯一标识语言

http://www.yeenav.com/eng/articles/add <-> http://www.yeenav.com/chi/articles/add

2、添加语言前缀相关路由

CakePHP已经在Router基类中实现了这个方法,我们可以在自己的路由配置文件比如app/config/yeenav_routes中直接调用:

YeenavRouter::localize();

该方法把locale参数自动添加到domain后面,如1所示格式。

3、在settings中添加语言开关:

Config.language: chi
Translate: 1

这代表默认语言为中文,且支持多语言url。

4、添加语言切换的界面链接

<p style="display: inline-block;">
<?php echo $html->link('English', array('locale'=>'eng')); ?>
</p>
<p style="display: inline-block;">
<?php echo $html->link('中文', array('locale'=>'chi')); ?>
</p>

5、把locale写入config

在app/app_controller中添加如下代码:

if (isset($this->params['locale'])) {
Configure::write('Config.language', $this->params['locale']);
}

6、最后一步,自动把语言参数添加到所有网站链接中

在app/app_helper中添加如下方法:

public function url($url = null, $full = false) {
if (!isset($url['locale']) && isset($this->params['locale'])) {
$url['locale'] = $this->params['locale'];
}
return parent::url($url, $full);
}

这样网站就实现了i18n和i10n特性,可见用CakePHP来实现多语言方案是相当容易的。前提是所有的字符串必须遵循__()的编程规范。

如果网站中存在一些动态内容,比如产品描述,那么还需要DB层面的设计(添加语言字段)以支持多语言版本内容的录入。这不在本文涵盖范围。
分享到:
评论

相关推荐

    Learn CakePHP: With Unit Testing, 2nd Edition

    Learn CakePHP: With Unit Testing by Rādhārādhya Dāsa 2016 | ISBN: 1484212134 | English | 114 pages | EPUB | 1 MB Accelerate your development of PHP applications using the popular CakePHP web ...

    CakePHP :: Ajax Demo

    This is a simple demo of some of the AJAX helpers now available in CAKE. These helpers are directly modeled on Ruby On Rails. In fact, they were shamelessly ported from rails...很不错的基于php+ajax的例子

    Beginning CakePHP:From Novice to Professional

    Lead you from a basic setup of CakePHP to building a couple applications that will highlight CakePHPs functionality and capabilities without delving too deeply into the PHP language, but rather ...

    cakephp:CakePHP:PHP快速开发框架-官方资料库

    通过Composer安装CakePHP ...$ composer require cakephp/cakephp 有关(最小/最大)PHP版本的详细信息,请参见。 运行测试 假设您使用介绍的方法之一在系统范围内安装了PHPUnit,则可以通过执行以下操作

    docker-cakephp:示例Dockerfile,用于在Docker容器中部署CakePHP应用程序,能够通过基于数据库的会话连接到远程数据库

    docker-cakephp:示例Dockerfile,用于在Docker容器中部署CakePHP应用程序,能够通过基于数据库的会话连接到远程数据库

    CakePHP:PHP快速开发框架-开源

    CakePHP 4.0.0 与其他主要的 CakePHP 版本一样美味,但现在需要您使用 PHP 7.2。 CakePHP 4.0.0 具有更新的应用程序骨架设计,带有简化的 API,使您的开发和应用程序更快。 虽然 4.0 包含许多重大更改,但我们准备了...

    cakephp 框架1.3.11版本

    看到论坛好多人寻找cakephp 现在将本人的分享给各位大侠

    cakephp 完全手册 chm版本

    cakephp完全手册,chm版本的。英文。希望爱好cakephp的朋友喜欢。

    chosen-cakephp:用于 Harvest 选择库的 CakePHP 插件

    例如:最新版本 (2.1.0) 包括与 CakePHP 2.0.x 的向后兼容性中断。 安装 选择 CakePHP 2 插件支持和 。 composer.phar 并将其放入路径后: Composer 将负责将插件安装到正确的位置。 在path/to/app包含以下...

    bootstrap-ui:CakePHP:透明地使用Bootstrap

    有关版本信息,请参见。要求CakePHP 4.x Bootstrap 4.x npm 5.x jQuery 3.2+ Popper.js 1.x Fontawesome 5.x包括什么? FlashHelper(元素类型: error , info , success , warning ) FormHelper(对齐: ...

    markdown-cakephp:CakePHP 的 Markdown 插件

    CakePHP 的 Markdown 插件 这个插件有助于在 CakePHP 中使用 PHP Markdown PHP Markdown 是 John Gruber 编写的程序的 PHP 端口。 “Markdown”是两件事:纯文本标记语法,以及将纯文本标记转换为 HTML 以便在网络...

    CakePHP php框架 v3.8.5

    在cakephp.org站点的Sites in the wild页面可以看到当前使用CakePHP框架的网站列表。CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目...

    cakephp-captcha:CakePHP 验证码实现

    CakePHP 2.2+ 的验证码支持 使用随机文本alpha|math生成需要人工验证的图像。 这是为了防止自动垃圾邮件和垃圾邮件机器人。 特征: 多种验证码类型alpha|math 支持文字旋转 可以设置图像的宽度和高度尺寸 字体...

    cakephp 1.2版本API

    cake_1.2.0.7296-rc2_API 是不是以前的API里面好多函数调不出来了哪,因为版本改变了嘛,最新版本用这个挺好

    CakePHP-URL-parameter-language:使用 URL 中的参数管理 CakePHP 2.x 应用程序的语言

    CakePHP-URL-参数-语言使用 URL 中的参数管理 CakePHP 2.x 应用程序的语言安装要将此功能安装到您的 CakePHP 应用程序中,只需将该项目的“app”文件夹复制到一个新的 CakePHP 应用程序中。 如果您的应用程序不是...

    用cakephp实现的商城系统

    用cakephp实现的简单商城系统,有基本的商城管理功能和会员注册管理功能,代码简洁易懂,直接输入http://域名/install.php一键安装成功,简单快捷。此商城系统是一个比较典型的cakephp案例,比较适合一些有意学习...

    curso-cakephp:使用 CakePHP 框架的 Web 应用程序开发课程

    课程-cakephp 蛋糕PHP 使用 CakePHP 框架的 Web 应用程序开发课程

    CakePHP v3.0.3.zip

    CakePHP是一个快速开发PHP的开发框架,其中使用了一些常见的设计模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目标在于提供一个令任意水平的PHP开发人员都能够快速开发web应用的...

    moip-assinaturas-cakephp:CakePHP的Moip订阅

    CakePHP的Moip订阅Moip订阅CakePHP 插件说明 此插件使您可以将Moip Assinaturas的所有功能用于CakePHP开发的应用程序。 Moip Assinaturas允许您按照创建计划所选择的数量和间隔自动收费。手动安装下载最新版本的插件...

    cakephp-queue, CakePHP的简易JobQueue插件维护版本.zip

    cakephp-queue, CakePHP的简易JobQueue插件维护版本 队列插件 这里分支用于 3 。背景这是一个非常简单且简约的作业队列( 或者延迟任务) 系统。 这是一个很好的工具,用于演示队列如何工作,并且没有任何依赖关系。...

Global site tag (gtag.js) - Google Analytics