将varibale传递给没有sprintf的语言文件

时间:2017-09-11 10:13:32

标签: php codeigniter codeigniter-3

我想将变量传递给语言文件。我在MY_language.php中创建了application/core/MY_language.php

class MY_Language extends CI_Lang
{
    public function __construct()
    {
        parent::__construct();
    }

    function line($line, $params = null)
    {
        $return = parent::line($line);

        if ($return === false) {
            return "!-- $line --!";
        } else {
            if (!is_null($params)) {
                $return = $this->_ni_line($return, $params);
            }
            return $return;
        }
    }

    private function _ni_line($str, $params)
    {
        $return = $str;

        $params = is_array($params) ? $params : array($params);

        $search = array();
        $cnt = 0;
        foreach ($params as $param) {
            $search[$cnt] = '/\\$' . ($cnt + 1) . '/';
            $cnt++;
        }

        $return = preg_replace($search, $params, $return);

        return $return;
    }
}

此文件必须覆盖CodeIgniter line()函数并接受一个参数数组作为输入,并插入到字符串语言的任何地方我的语言文本中都有$类型。

$lang['delete'] = "$name was deleted";

上述代码的结果是:

sam was deleted

2 个答案:

答案 0 :(得分:1)

in codeigniter 3  the language your core language file must be PREFIX_lang

答案 1 :(得分:0)

由于您要向line()功能添加参数,因此无法覆盖它。

使用其他名称,例如magic_line()