PHP多国语言开发:CodeIgniter 2PHP框架中的多国语言,语言包(i18n)库
PHP多国语言开发:CodeIgniter 2PHP框架中的多国语言,语言包(i18n)多国语言库
引言
我们在CodeIgniter开发中经常会碰到多国语言网站,这里我们就来介绍一种简单有效的多国语言的操作方法。
做什么
语言在地址中是这样的:
cit.cn/en/about
cit.cn/zh/about
保持使用库:Language Class
例子
视图中
<p><?=lang('about.gender')?></p>
英文语言文件
$lang['about.gender'] = "I'm a man";
英文语言文件
$lang['about.gender'] = "I'm a man";
中文语言文件
$lang['about.gender'] = "我是男人";
cit.cn/en/about显示的结果
<p>I'm a man</p>
cit.cn/zh/about显示的结果
<p>我是男人</p>
安装
下载ci_i18n_library.zip
将MY_Lang.php 和 MY_Config.php 放到 application/core
配置
在 application/config/routes.php 增加
// example: '/en/about' -> use controller 'about'
$route['^fr/(.+)$'] = "$1";
$route['^zh/(.+)$'] = "$1";
// '/en' and '/zh' -> use default controller
$route['^fr$'] = $route['default_controller'];
$route['^zh$'] = $route['default_controller'];
使用
让我们创建一个中英双语的页面
语言文件
application/language/english/about_lang.php
<?php
$lang['about.gender'] = "I'm a man";
/* End of file */
application/language/chinese/about_lang.php
<?php
$lang['about.gender'] = "我是男人";
/* End of file */
控制器
application/controllers/about.php
<?php
class About extends CI_Controller {function index(){// you might want to just autoload these two helpers$this->load->helper('language');$this->load->helper('url');// load language file$this->lang->load('about');$this->load->view('about');}
}/* End of file */
视图
application/views/about.php
<p><?=lang('about.gender')?></p>
<p><?=anchor('music','Shania Twain')?></p>
测试
http://your_base_url/en/about
<p>I'm a man</p>
<p><a href="http://mywebsite.com/en/music">Shania Twain</a></p>
http://your_base_url/en/about
<p>我是男人 </p>
<p><a href="http://mywebsite.com/fr/music">Shania Twain</a></p>
技巧贴示:
你需要去翻译CodeIgniter里面system/language语言文件,例子:如果你需要使用“Form Validation”库,你就需要翻译:
system/language/form_validation_lang.php 到
application/language/chinese/form_validation_lang.php.
页面链接将会添加上当前语言的目录,但是文件链接不会。可以参考:www.cnmeizhuang.com
site_url('about/my_work');
// http://mywebsite.com/en/about/my_work
site_url('css/styles.css');
// http://mywebsite.com/css/styles.css
获取当前语言
$this->lang->lang();
// en
切换到另一个语言
anchor($this->lang->switch_uri('zh'),'Display current page in chinese');//the root page (/) is supposed to be some kind of splash page, without any specific //language. This can be changed: see “No splash page” below.
如何工作的
MY_Config.php保函一个重写的site_url():当生成语言地址目录的时候增加语言段,同样适用于anchor(), form_open()...
选项:
特殊地址
一个特殊地址不需要保函语言文件,默认的根目录地址(/)就是一特殊的URI.例如:www.nongyejingc.com /
你需要其他的特殊URIs,例如管理后台目录admin只需要一个语言文件。
在application/core/MY_Lang.php增加admin到数组$special中,现在链接到admin的链接就不会加入当前语言包路径了。
site_url('admin');
// http://mywebsite.com/admin
No splash page
在application/core/MY_Lang.php
1. 删除从$special数组删除“”;
2. 设置$default_uri,例如home
3. 如果你的默认语言是english的话,现在连接到/的请求,被重定向到en/home
4. 默认语言是$languages数组的第一个项目;
增加一个语言
1. 在application/core/MY_Lang.php文件中的$languages数组增加新的语言:
// example: German (de)
'de' => 'german',
2. application/config/routes.php:增加新的路由
// example: German (de)
$route['^de/(.+)$'] = "$1";
$route['^de$'] = $route['default_controller'];
3. 在application/language目录中增加语言文件夹,这里的例子是“German”,需要命名为german。
以上就是CI框架 利用语言包(i18n)库,php多国语言实现的一些思路。
PHP多国语言开发:CodeIgniter 2PHP框架中的多国语言,语言包(i18n)库相关推荐
- gui窗口遮挡算法_基于 C 语言开发的 GUI 框架
一.介绍 AWTK全称Toolkit AnyWhere,是ZLG开发的开源GUI引擎,旨在为嵌入式系统.WEB.各种小程序.手机和PC打造的通用GUI引擎,为用户提供一个功能强大.高效可靠.简单易用. ...
- c语言.jpg图片转成数组_基于 C 语言开发的 GUI 框架
一.介绍 AWTK全称Toolkit AnyWhere,是ZLG开发的开源GUI引擎,旨在为嵌入式系统.WEB.各种小程序.手机和PC打造的通用GUI引擎,为用户提供一个功能强大.高效可靠.简单易用. ...
- c语言.jpg图片转成数组_AWTK——基于C语言开发的GUI框架,功能强大,支持跨平台同步开发...
简介 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统.WEB.各种小程序.手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大.高效 ...
- devc 如何编写java,Android For JNI(1)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序...
Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...
- ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
本文实例分析了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患.分享给大家供大家参考,具体如下: php CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分 ...
- nodemcu c语言开发,nodemcu连接到中移onenet平台
手上有一块nodemcu,这货可以用lua编译脚本语言编程,也可以用arduinoIDE来编辑,用C语言来开发,甚至可以刷入micropython系统,用python语言开发.功能多而且就价格便宜,是 ...
- c语言程序的模板,C++中模板与用C语言中实现模板
1.模板的概念 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同.正确的调用重载函数.例如,为求两个数的最大值,我们定义MAX()函数需要 ...
- c语言开发工具程序代码是什么文件,【C语言】开发工具--GCC使用入门
来自: 51CTO GCC使用入门 通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计 ...
- c语言开发五轴后处理,基于UGCLS文件使用C语言制作智能后处理工具.doc
基于UGCLS文件使用C语言制作智能后处理工具 基于UG CLS文件使用C语言制作智能后处理工具 发表时间:2008-9-10 张伟 基于UGCLS文件特性,利用C语言制作附带业务规则的后处理工具的一 ...
- 哪些公司用c语言开发工具,哪些IDE和工具可用于C语言开发?
看看学习一些C,因为我在another SO question看到了很好的学习语言和历史经验. 想知道在C语言编程时IDE的专业人员使用了什么以及其他什么工具有用? 答案 我一直喜欢Code::Blo ...
最新文章
- 深入理解Netty-从偶现宕机看Netty流量控制
- GRE作文用AI打分,已经20周年了:AI给中国考生的分数,远高于人类打分
- php 匹配一次,PHP Regex匹配最后一次出现的字符串
- MSSql-SP_who分析数据库性能
- mysql ab复制_实现mysql的ab复制(a-b-b,a-b-c)
- [html] 制作一个不规则形状有哪些方法可以实现?
- spring boot----简单入门
- php serialize和json_encode哪个更快_世界 10 大编程语言,Java 不是第一,PHP 才第五...
- 面试题:InnoDB 中一棵 B+ 树能存多少行数据?【面试不翻车,翻车就跑路】
- 云图说|初识云数据库GaussDB(for Redis)
- java源码依赖分析_Spring项目运行依赖spring-contex解析
- DenseNet:比ResNet更优的CNN模型
- 最常用的9款免费开源游戏引擎
- bp神经网络模型拓扑结构,bp神经网络模型结构图
- Dicom修改图像内容重新生成dcm文件
- 前期交互流程(PTES的第一步)
- 数字记忆好方法:数字编码
- 无法通过windows功能控制面板自动安装或卸载windows server角色和功能
- UVA10859 placin glampposts(放置街灯)
- 工商银行考试计算机知识,【必读】工商银行考试内容及复习方法