删除Codeigniter标签包装lang()

时间:2013-11-01 10:06:10

标签: php codeigniter lang

如何删除Codeigniter中lang()的自动标签包装。

手册中没有说明任何内容:https://www.codeigniter.com/user_guide/helpers/language_helper.html

我是否必须自己编写一个函数,或者是否有一种简单干净的方法,我错过了?

2 个答案:

答案 0 :(得分:1)

不要写第二个参数。保持空白。

答案 1 :(得分:0)

看一下lang函数(见/system/helpers/language_helper.php):

    function lang($line, $for = '', $attributes = array())
    {
            $CI =& get_instance();
            $line = $CI->lang->line($line);

            if ($for !== '')
            {
                    $line = '<label for="'.$for.'"'._stringify_attributes($attributes).'>'.$line.'</label>';
            }

            return $line;
    }

如您所见,它需要3个参数。第一个参数是必需的,但后两个是可选的。如果您声明第二个参数,它将返回包含在标签中的语言字符串。

所以只说明第一个参数应该只输出语言字符串。

<小时/> 的更新:

通过阅读您的评论,您最好直接使用 language class 。但是仅靠语言课程是不够的,您需要为您的目的扩展它。为此,您可以在名为application/core的{​​{1}}文件夹中创建一个新文件。

MY_lang.php

假设您的语言文件有这样的字符串:

class MY_Lang extends CI_Lang {

    // You want to extend the line function
    function line($line = '', $value = '')
    {
            $line = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];

            // We can assume that if a value is passed it is intended to be inserted into the language string
            if($value) {
                    $line = sprintf($line, $value);
            }

            // Because killer robots like unicorns!
            if ($line === FALSE)
            {
                    log_message('error', 'Could not find the language line "'.$line.'"');
            }

            return $line ;
    }
}

然后,您可以通过加载语言类并使用以下代码来使用它:

$lang['welcome_text'] = "Welcome %s";

以上是100%未经测试的,所以它可能需要一些推文,但它应该给你一些起点。