专业网站建设品牌,17年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter多语言
CodeIgniter多语言
来源:网络整理 时间:2023/2/14 0:09:21 共
3678
浏览
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钩子
同类资讯
mysql查询当前总数,如何利用SQL随机查询出指定数量的数据_数据库
mysql分表后如何确定查询数据在哪个表中_数据库
MySQL有什么推荐的学习书籍_数据库
mysql 月份分类查询,你用过最良心的软件是哪个_数据库
Mysql的字段设置为null有什么优点呢_数据库
mysql数据库有什么好的备份还原工具_数据库
数据库mysql基本语句,mysql语句设计groupby求高手_数据库
程序员如何快速成长_数据库
mysql 查询表格行数,选择Python还是vba_数据库
如何将CSV导入MYSQL数据库_数据库
mysql虚拟子查询,大数据主要学习什么内容_数据库
mysql数据库位置,Centos下怎么修改Mysql数据文件位置_数据
MySQL的数据如何恢复到任意时间点_数据库
mysql 聊天查询,从哪本书开始学习Python比较好_数据库
mysql查询用时,现在学python还有用吗_数据库
mysql查询语句==,请问mysql和sqlServer的查询语句都一
mysql 查询记录,甲骨文旗下的oraclemysql数据库以及ja
mysql连接查询速度,怎样实现mysql查询每秒一万次_数据库
mysql语句执行错误怎么返回上一步_数据库
mysql数据库视图,mysql中如何查看函数创建时间_数据库
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com