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

关于URI 路由,多国语

[复制链接]
发表于 2012-4-17 17:53:56 | 显示全部楼层 |阅读模式
初学CI。 看了一个下午看得内分泌失调。
这里的路由规则虽然有通配符。 但是好像并不能提供真正的便利。

因为无法分辨是get参数还是控制器还是函数。 最终不得已需要给每个控制器 函数写路由规则。

初学愚见。 求解:
多国语的参数 我要将它前置在控制器前。 路由规则要怎么写?。。

另外多国语, 这里使用 每次引用一个语言文件即将 $lang数组合并起来。  这里还需要避免键值相同被后来者给覆盖。 所以官方推荐使用前缀

我觉得我朋友写的一个方法还更好用
        /**
         *
         * 这里与CI默认的语言相互独立
         * 使用方法例:self::t('index','this is a test.');
         * 翻译文件为返回一个二维数组的php文件
         * @param $filename 翻译文件名称,不包涵".php"
         * @param $key        要返回的数组中的键名
         * @param $lang        语言的get参数
         * @param $directory 翻译文件放置的目录
         */
        public static function t($filename, $key, $lang = 'lang',  $directory = 'languagex')
    {
            if(!isset($_GET[$lang]))
                    return $key;
            //语言文件只读取application下的$directory目录
                 if(!file_exists($langPath = dirname(BASEPATH). '/'.APPPATH. $directory))
                 {
                         @mkdir($langPath);
                         return $key;
                 }
               
                 $array = array();
                 $file = $langPath. '/'.$_GET[$lang].'/'.$filename. '.php';
                 if(file_exists($file))
                 {
                         $array = require($file);
                         return isset($array[$key]) ? $array[$key] : $key;
                 }else{
                         return $key;
                 }
    }
也是愚见。。。

很想学好CI。 但是目前来看。 它轻量级, 速度快。 却要付出很多代价。 开发起来好像不方便。

求指点
发表于 2012-4-17 18:44:04 | 显示全部楼层
多国语言的问题,可能直接用 CI 本身的功能会比较麻烦。。。
我很少做多国语言的东西,呵呵
发表于 2012-4-17 22:48:19 | 显示全部楼层
我感覺很好控制啊. 主要還是熟悉 和 習慣問題吧.
 楼主| 发表于 2012-4-18 13:45:15 | 显示全部楼层
多谢。  之前一直用Yii。  就很容易去对比。   

本版积分规则