关于多语言输出变量的分享

浏览:1104 发布日期:2014/02/12 分类:技术分享 关键字: 多语言
发现坛子里有这方面的求助,官方在这块确实做的不够完美(PS:已经改进)。
下面分享我的方法,如果你有更好的,也感谢您的分享!

14-02-12 15:28 根据官方git版本改进:多语言文件变量写法由{format}改成{$format}
-------------------------------------------------------------------------------
先附注模板使用方法:{:L('FILE_FORMAT',array('format' => 'Jpeg, Jpg','maximum' => '3MB'))}Lang文件夹多语言文件写法:
中文'FILE_FORMAT'    =>    '文件格式要求: {$format}; 最大文件大小: {$maximum}'英文'FILE_FORMAT'    =>    'File Format: {$format}; Maximum File Size: {$maximum}'得到的结果




接下来最主要的是更改的L函数了/**
 * 获取和设置语言定义(不区分大小写)
 * @param string|array $name 语言变量
 * @param string $value 语言值
 * @return mixed
 */
function L($name=null, $value=null) {
    static $_lang = array();
    // 空参数返回所有定义
    if (empty($name))
        return $_lang;

    // 判断语言获取(或设置)
    if(is_array($value)){
        $replace = array_keys($value);
        foreach($replace as &$v){
            $v = '{$'.$v.'}';
        }
        return str_replace($replace,$value,(isset($_lang[$name]) ? $_lang[$name] : $name));

    }else{
        // 若不存在,直接返回全大写$name
        if (is_string($name)) {
            $name = strtoupper($name);
            if (is_null($value))
                return isset($_lang[$name]) ? $_lang[$name] : $name;
            $_lang[$name] = $value; // 语言定义
            return;
        }
    }
    // 批量定义
    if (is_array($name))
        $_lang = array_merge($_lang, array_change_key_case($name, CASE_UPPER));
    return;
}
简单吗?
最佳答案
评论( 相关
后面还有条评论,点击查看>>