专业网站建设品牌,17年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter多语言
CodeIgniter多语言
来源:网络整理 时间:2023/2/14 0:09:21 共
3677
浏览
CI应用目录下有一个language语言包目录,用来配置多种不同的语言。语言的配置位于config文件中,配置格式如下:
PHP
复制代码
$config
[
'language'
]
=
'english'
;
复制代码
定义语言文件
language下有个空的english目录,即上面定义的系统默认语言目录,系统会从该目录加载语言包文件。如果要定义不同的语言包,如zh_cn,则创建zh_cn目录并配置相应语言包文件即可。需要注意的是,语言文件的后缀必须为_lang.php,语言翻译通过数组的键值对来实现,为防止出现重复的键名,可以为键名增加统一的前缀。
配置的方式可参考下面:
PHP
复制代码
$lang
[
'menu_system_title'
]
=
'系统设置'
;
$lang
[
'menu_system_user_admin'
]
=
'用户管理'
;
$lang
[
'menu_system_user_list'
]
=
'用户列表'
;
$lang
[
'menu_system_user_detail'
]
=
'用户详情'
;
$lang
[
'menu_system_setting'
]
=
'配置管理'
;
/* End of file user_menu_lang.php */
/* Location: ./system/language/zh_tw/user_menu_lang.php */
复制代码
语言包的使用
使用语言包之前需要先加载语言包,加载和使用方式如下:
PHP
复制代码
//加载方式一,加载时不需要传入_lang
$this
->
load
->
language
(
array
(
'user_menu'
,
'user_message'
)
)
;
//加载方式二
$this
->
lang
->
load
(
'user_menu'
)
;
//使用方式一
echo
$this
->
lang
->
line
(
'language_key'
)
;
//使用方式二(需先加载language帮助函数)
$this
->
load
->
helper
(
'language'
)
;
echo
lang
(
'menu_system_title'
)
;
复制代码
可以说语言包的使用相当简单,前不久也做了个台湾版的系统,顺便说下CI中的语言包的使用及需要注意的问题。
1、$config['language'] 直接配置成 zh_cn 会怎么样?
系统中有一些默认的语言包位于system/language/english目录下,当使用系统中提供的一些类报错时会加载对应的语言包。此时系统会先到language/zh_cn目录下去查找,然后去system/language/zh_cn目录下查找,都找不到就提示找不到语言包的错误。所以若更改了language配置,最好拷贝system/language/english下的文件到对应的语言目录下。
这里看起来有点奇怪,为什么不是这种思维:先到language/zh_cn目录下去找,找不到就到system/language/english目录下去找。叫english可能不合适,应该称呼为系统默认的语言包。
2、是否需要使用语言包?
在某个系统中发现这样子的情况, 有些错误提示用的语言包,有些直接用的中文,可能因为多人开发的原因,键的命名也不太规范,经常需要去对比对应的语言文件,导致程序阅读起来相对麻烦,而中文的则没该问题,个人在系统中使用语言包也觉得有点麻烦。所以,不需要考虑多语言的程序尽量还是不要使用语言包的好。
3、如何自动检测语言包?
通常情况下可以根据浏览器的语言类型来判断,PHP中的$_SERVER['HTTP_ACCEPT_LANGUAGE']可以获取到该值,然后根据字符串分隔或者正则匹配等方式即可获取到客户端浏览器默认语言类型。获取到之后通过$this->config->set_item('language', 'zh_cn');设置即可。
关于是否确实使用了语言包,可以重写lang函数,带^_^即为使用了语言包,参考如下:
PHP
复制代码
function
lang
(
$line
,
$param
=
array
(
)
)
{
$CI
=&
get_instance
(
)
;
$line
=
$CI
->
lang
->
line
(
$line
)
;
if
(
is_array
(
$param
)
&&
count
(
$param
)
>
0
)
{
array_unshift
(
$param
,
$line
)
;
$line
=
call_user_func_array
(
'sprintf'
,
$param
)
;
}
return
'^_^'
.
$line
;
}
复制代码
很多情况下多语言的实现都是通过数组的形式来实现,还有一些是.mo的格式,l18n多语言的实现方式,php中需要php_gettext扩展支持,详情可查阅相关资料。
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
虾皮包包网页设计图片尺寸
朋友圈投票网页设计怎么做
网信集团有网页设计吗知乎
大型网页设计报价表怎么做
雷安微博网页设计制作方法
中国航空网页设计与制作
三国网页设计下载游戏网站
微信情侣做网页设计怎么样
威海的互联网网页设计招聘
计算机网页设计学校有哪些
·上一条:
CodeIgniter扩展核心类
|
·下一条:
CodeIgniter钩子
同类资讯
200个 北京亦庄年内实现5G全域覆盖
专家:“携号转网”将推行 目前正攻克两大难点
长三角政务服务咨询投诉“一号通办”
北京高考启用智能试卷保密室 全过程人脸识别
“网约护士”来了,你准备好了吗?多地试点
“人工智能手套”让机器人有了触感
天地数据结合可改善地震应急响应
那最美的油菜花上有我青春的泪.
IIS Webservice客户端中检测到有潜在危险的Request.F
layer弹出层框架alert与msg详解
WinForm中的DataGridView子窗体刷新父窗体备忘
Windows Server 2016 IIS10修改日志保存位置方便清
三星I9300 GALAXY SIII
jquery数组(排序)
jquery 中substring,substr,split的用法
硬盘数据恢复软件EasyRecovery使用方法
asp.net利用正则在HTML中提取图片路径
Winform程序获取路径可以按以下方式
VB6.0中Winsock控件是怎么使用
一个解析XML的VB类
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com