【问题标题】:CodeIgniter cannot load language files when using arrayCodeIgniter 使用数组时无法加载语言文件
【发布时间】:2015-11-20 13:04:59
【问题描述】:

我正在尝试在我的 CodeIgniter 3 项目中加载多个语言文件。只要我一次加载 1 个语言文件,一切正常。当我尝试使用数组加载语言文件时,它会返回一个 NULL 值。

// This works fine:
$this->lang->load('homepage_lang', 'dutch');
$this->lang->load('login_lang', 'dutch');

// This does not work:
$this->lang->load(array('homepage_lang', 'login_lang'), 'dutch');

根据 CodeIgniter 文档,此代码应该可以工作:

http://www.codeigniter.com/user_guide/libraries/language.html#loading-a-language-file

在他们的示例代码中,他们没有任何其他参数,但即使我把我的('荷兰'')排除在外,我仍然无法使用数组。有关如何解决此问题的任何想法?

【问题讨论】:

    标签: php codeigniter codeigniter-3


    【解决方案1】:

    我认为您必须从语言文件名中删除结尾的 _lang。您的其余代码看起来不错。

    编辑

    在查看 CodeIgniter 3 核心源代码时,我发现了语言加载功能:

    public function load($langfile, $idiom = '', $return = FALSE, $add_suffix = TRUE, $alt_path = '')
        {
            if (is_array($langfile))
            {
                foreach ($langfile as $value)
                {
                    $this->load($value, $idiom, $return, $add_suffix, $alt_path);
                }
                return;
            }
            etc...
    

    这意味着当第一个参数是一个数组时,它将循环该数组。循环后它将不返回任何内容以停止函数的进一步执行。我认为这就是您获得NULL 值的原因。

    即使加载函数将返回 null,但两种语言文件都将被加载并可用。

    【讨论】:

    • 不高兴,还是不行。不过感谢您的建议。
    • 你的数组在两个文件中都命名为$lang吗?
    • 是的。除了数组键和值之外,这两个文件是相同的。
    • 我已对我的回答进行了修改,希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多