在 CodeIgniter 3 的构造函数和方法之间无处加载语言文件

Language file being loaded from nowhere inbetween constructor and method in CodeIgniter 3

我遇到了一个非常奇怪的错误。我正在 class 的构造函数中加载语言文件,如果我在构造函数结束时退出并查看日志,我可以看到最后发生的事情是加载了正确的语言文件。

如果我在我的方法开始时就死了,尽管在方法中的任何代码还未被 运行 时,默认语言文件已经加载,这将覆盖正确的语言文件。如果我没有 运行 在构造函数的末尾和方法的开始之间设置任何代码,这是怎么回事?

这是我的构造函数:

public function __construct()
{
    parent::__construct();

    $this->lang->load('application', 'german');
    $this->lang->load('upload', 'german');
}

日志显示如下:

INFO - 2016-02-04 15:05:39 --> Language file loaded: language/german/application_lang.php
INFO - 2016-02-04 15:05:39 --> Language file loaded: language/german/upload_lang.php
INFO - 2016-02-04 15:05:39 --> Helper loaded: language_helper
INFO - 2016-02-04 15:05:39 --> Language file loaded: language/english/tagrisso_lang.php

所以澄清一下,如果我:

日志仅显示前两行(正在加载正确的语言文件)。

但是如果我:

日志显示 4 行,表明在加载了正确的语言文件后,再次加载了语言助手并加载了英文文件。

你能检查一下吗?

/application/config/config.php 你会发现:

/*
|--------------------------------------------------------------------------
| Default Language
|--------------------------------------------------------------------------
|
| This determines which set of language files should be used. Make sure
| there is an available translation if you intend to use something other
| than english.
|
*/
$config['language'] = 'english';

/application/config/autoload.php中你也可以设置默认语言。

/*
| -------------------------------------------------------------------
|  Auto-load Language files
| -------------------------------------------------------------------
| Prototype:
|
|   $autoload['language'] = array('lang1', 'lang2');
|
| NOTE: Do not include the "_lang" part of your file.  For example
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
*/
$autoload['language'] = array();

能不能换成德语试试看?这将为我们提供有关您的应用程序配置的足够输出。

可能正在覆盖您的配置。

此致。

正如@charlietfl 所指出的,post_controller_constructor 有一个挂钩集,它再次加载到语言文件中。