有几种方案来实现网站的多语言版本:
*) 基于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 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 ...
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的例子
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 ...
通过Composer安装CakePHP ...$ composer require cakephp/cakephp 有关(最小/最大)PHP版本的详细信息,请参见。 运行测试 假设您使用介绍的方法之一在系统范围内安装了PHPUnit,则可以通过执行以下操作
docker-cakephp:示例Dockerfile,用于在Docker容器中部署CakePHP应用程序,能够通过基于数据库的会话连接到远程数据库
CakePHP 4.0.0 与其他主要的 CakePHP 版本一样美味,但现在需要您使用 PHP 7.2。 CakePHP 4.0.0 具有更新的应用程序骨架设计,带有简化的 API,使您的开发和应用程序更快。 虽然 4.0 包含许多重大更改,但我们准备了...
看到论坛好多人寻找cakephp 现在将本人的分享给各位大侠
cakephp完全手册,chm版本的。英文。希望爱好cakephp的朋友喜欢。
例如:最新版本 (2.1.0) 包括与 CakePHP 2.0.x 的向后兼容性中断。 安装 选择 CakePHP 2 插件支持和 。 composer.phar 并将其放入路径后: Composer 将负责将插件安装到正确的位置。 在path/to/app包含以下...
有关版本信息,请参见。要求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(对齐: ...
CakePHP 的 Markdown 插件 这个插件有助于在 CakePHP 中使用 PHP Markdown PHP Markdown 是 John Gruber 编写的程序的 PHP 端口。 “Markdown”是两件事:纯文本标记语法,以及将纯文本标记转换为 HTML 以便在网络...
在cakephp.org站点的Sites in the wild页面可以看到当前使用CakePHP框架的网站列表。CakePHP 是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目...
CakePHP 2.2+ 的验证码支持 使用随机文本alpha|math生成需要人工验证的图像。 这是为了防止自动垃圾邮件和垃圾邮件机器人。 特征: 多种验证码类型alpha|math 支持文字旋转 可以设置图像的宽度和高度尺寸 字体...
cake_1.2.0.7296-rc2_API 是不是以前的API里面好多函数调不出来了哪,因为版本改变了嘛,最新版本用这个挺好
CakePHP-URL-参数-语言使用 URL 中的参数管理 CakePHP 2.x 应用程序的语言安装要将此功能安装到您的 CakePHP 应用程序中,只需将该项目的“app”文件夹复制到一个新的 CakePHP 应用程序中。 如果您的应用程序不是...
用cakephp实现的简单商城系统,有基本的商城管理功能和会员注册管理功能,代码简洁易懂,直接输入http://域名/install.php一键安装成功,简单快捷。此商城系统是一个比较典型的cakephp案例,比较适合一些有意学习...
课程-cakephp 蛋糕PHP 使用 CakePHP 框架的 Web 应用程序开发课程
CakePHP是一个快速开发PHP的开发框架,其中使用了一些常见的设计模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目标在于提供一个令任意水平的PHP开发人员都能够快速开发web应用的...
CakePHP的Moip订阅Moip订阅CakePHP 插件说明 此插件使您可以将Moip Assinaturas的所有功能用于CakePHP开发的应用程序。 Moip Assinaturas允许您按照创建计划所选择的数量和间隔自动收费。手动安装下载最新版本的插件...
cakephp-queue, CakePHP的简易JobQueue插件维护版本 队列插件 这里分支用于 3 。背景这是一个非常简单且简约的作业队列( 或者延迟任务) 系统。 这是一个很好的工具,用于演示队列如何工作,并且没有任何依赖关系。...