用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6895|回复: 4
收起左侧

[讨论/交流] CI实现国际化的一个小例子

[复制链接]
发表于 2010-2-8 09:38:29 | 显示全部楼层 |阅读模式
用CI来实现国际化很简单,几分钟就能学会
1.在application的language新建两个文件夹
chineses(简体中文)和english(英语)
2.在每个文件夹下各新建一个文件名为info_lang.php的文件
info_lang.php中的info可以随便取,_lang则必须有的,这是CI规定的语言文件
另外如果在作真正的项目的话最好在每个文件夹下都加上一个index.html文件,干什么用的自己搜一下吧
3. chineses/info_lang.php文件内容:
PHP复制代码
<?php
$lang['info_1'] = "中文提示信息1";
$lang['info_2'] = "中文提示信息2";
?>
复制代码


english/info_lang.php文件内容:
PHP复制代码
<?php
$lang['info_1'] = "english infomation 1";
$lang['info_2'] = "english infomation 2";
?>
复制代码

4.在controllers中添加一个multilang.php文件(文件名任意,为是说明如何使用,只是在controllers中简单输出)
代码如下:
PHP复制代码
<?php
class Multilang extends Controller {
    function multilang() {
        parent::Controller();
    }
    function index() {
        // 加载文件文件形式如下
        // $this->lang->load('filename', 'language');
        // 来源于使用手册
        // 加载英文语言文件
        $this->lang->load('info', 'english');
        // 取得某一行信息,方法this->lang->line('language_key');
        // 来源于使用手册
        $s = $this->lang->line('info_1');
        echo $s;
    }
}
复制代码

5.保存,现在访问
http://localhost:10000/cidemo/index.php/multilang/
这个是我的地址,换成你的
可以看到页面输出了如下信息:
english infomation 1

现在改变一下代码,把$this->lang->load('info', 'english');这一行改为
$this->lang->load('info', 'chineses');
现在访问 http://localhost:10000/cidemo/index.php/multilang/
可以看到页面输出了如下信息:
中文提示信息1

6.到这多language的简单使用就完成了
我是参考了http://codeigniter.org.cn/user_guide/libraries/language.html
后实现 的;虽然例子很简单,但是在我们的项目中是可以使用的,如中/英版的网站,可以在session或cookie中保存所访问 的语言
然后加载对应的语言文件,输出相应的信息

7.觉得我写的东西对你用,请回复顶一下

8,没有了
发表于 2010-2-8 11:26:35 | 显示全部楼层
支持!并帮楼主改了一下语法高亮!
 楼主| 发表于 2010-2-8 12:19:08 | 显示全部楼层
谢谢HEX,昨天晚上的问题也是谢谢你了!
发表于 2010-2-8 16:30:30 | 显示全部楼层
有个缺点:
$this->lang->line('info_1')太长,要是能像openblog里那么短就好了。
 楼主| 发表于 2010-2-8 22:48:45 | 显示全部楼层
To baiyuxiong:
可以声明一个变量来接收,如:
$info1 = $this->lang->line('info_1');

本版积分规则