CodeIgniter 3

时间:2016-02-04 14:09:34

标签: php codeigniter codeigniter-3

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

如果我在方法开始时死了,但是在方法中的任何代码运行之前,已经加载了默认语言文件,这会覆盖正确的语言文件。如果我没有在构造函数的结尾和方法的开头之间运行任何代码,虽然这是怎么回事?

这是我的构造函数:

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行,显示加载了正确的语言文件后,再次加载语言助手并加载英文文件。

2 个答案:

答案 0 :(得分:0)

你能检查一下吗?

/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();

您可以尝试将其更改为德语并再次检查吗?这将为我们提供有关您的应用程序配置的足够输出。

或许覆盖您的配置。

问候。

答案 1 :(得分:0)

正如@charlietfl所指出的那样,post_controller_constructor的钩子集再次加载到语言文件中。