Php 当codeigniter中某些文本的翻译未命中时,如何显示默认翻译

Php 当codeigniter中某些文本的翻译未命中时,如何显示默认翻译,php,codeigniter,internationalization,multilingual,Php,Codeigniter,Internationalization,Multilingual,我有一个支持3种语言的应用程序。如果我切换语言,如果文本没有当前语言的翻译,它将不会显示。但是我想显示默认语言的翻译,而不是不显示任何内容。怎么做 谢谢。我会用我自己的扩展核心类CI_Lang class MY_Lang extends CI_Lang { var $defaultLanguage = array(); function __construct() { parent::__construct();

我有一个支持3种语言的应用程序。如果我切换语言,如果文本没有当前语言的翻译,它将不会显示。但是我想显示默认语言的翻译,而不是不显示任何内容。怎么做


谢谢。

我会用我自己的扩展核心类
CI_Lang

class MY_Lang extends CI_Lang {

    var $defaultLanguage = array();

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

    function line($line = '')
    {
        // Get the value from the current language.
        $value = parent::line($line);

        // Fallback on default language if not found.
        if ($value === FALSE) {                             
            $value = $this->defaultLanguage[$line];
        }

        return $value;
    }

    function loadDefault($langfile = '', $idiom = '') {         
        $this->defaultLanguage = array_merge($this->defaultLanguage, (array)$this->load($langfile, $idiom, TRUE));
    }    
}
然后在控制器中加载所需的默认语言文件

$this->lang->load('error', 'french');          // Standard way
$this->lang->loadDefault('error', 'english');  // New way for defaults

这样,如果您查询的内容不在法语翻译中,它将默认为英语翻译。

我将用我自己的扩展核心类
CI_Lang

class MY_Lang extends CI_Lang {

    var $defaultLanguage = array();

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

    function line($line = '')
    {
        // Get the value from the current language.
        $value = parent::line($line);

        // Fallback on default language if not found.
        if ($value === FALSE) {                             
            $value = $this->defaultLanguage[$line];
        }

        return $value;
    }

    function loadDefault($langfile = '', $idiom = '') {         
        $this->defaultLanguage = array_merge($this->defaultLanguage, (array)$this->load($langfile, $idiom, TRUE));
    }    
}
然后在控制器中加载所需的默认语言文件

$this->lang->load('error', 'french');          // Standard way
$this->lang->loadDefault('error', 'english');  // New way for defaults

这样,如果您查询的内容不在法语翻译中,它将默认为英语翻译。

我将用我自己的扩展核心类
CI_Lang

class MY_Lang extends CI_Lang {

    var $defaultLanguage = array();

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

    function line($line = '')
    {
        // Get the value from the current language.
        $value = parent::line($line);

        // Fallback on default language if not found.
        if ($value === FALSE) {                             
            $value = $this->defaultLanguage[$line];
        }

        return $value;
    }

    function loadDefault($langfile = '', $idiom = '') {         
        $this->defaultLanguage = array_merge($this->defaultLanguage, (array)$this->load($langfile, $idiom, TRUE));
    }    
}
然后在控制器中加载所需的默认语言文件

$this->lang->load('error', 'french');          // Standard way
$this->lang->loadDefault('error', 'english');  // New way for defaults

这样,如果您查询的内容不在法语翻译中,它将默认为英语翻译。

我将用我自己的扩展核心类
CI_Lang

class MY_Lang extends CI_Lang {

    var $defaultLanguage = array();

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

    function line($line = '')
    {
        // Get the value from the current language.
        $value = parent::line($line);

        // Fallback on default language if not found.
        if ($value === FALSE) {                             
            $value = $this->defaultLanguage[$line];
        }

        return $value;
    }

    function loadDefault($langfile = '', $idiom = '') {         
        $this->defaultLanguage = array_merge($this->defaultLanguage, (array)$this->load($langfile, $idiom, TRUE));
    }    
}
然后在控制器中加载所需的默认语言文件

$this->lang->load('error', 'french');          // Standard way
$this->lang->loadDefault('error', 'english');  // New way for defaults

这样,如果您查询的内容不是法文翻译,它将默认为英文版本。

要指出,要实现此解决方案,您还需要重写CI_Lang的load函数,在将$langfile变量放入$is_loaded数组之前,将$Iliog追加/前置到$langfile变量。否则,代码将忽略loadDefault的第二次加载,因为文件名(本例中为“错误”)相同。@Amer是对的。我甚至不得不重写加载函数。我在加载函数中添加了一个可选的
$force
参数设置为false,并将该行更改为
if(在_数组($langfile,$this->is_loaded,TRUE)&&!$force中)
要指出,要实现此解决方案,您还需要重写CI_Lang的load函数,在将$langfile变量放入$is_load数组之前,将$idiom追加到$langfile变量中。否则,代码将忽略loadDefault的第二次加载,因为文件名(本例中为“错误”)相同。@Amer是对的。我甚至不得不重写加载函数。我在加载函数中添加了一个可选的
$force
参数设置为false,并将该行更改为
if(在_数组($langfile,$this->is_loaded,TRUE)&&!$force中)
要指出,要实现此解决方案,您还需要重写CI_Lang的load函数,在将$langfile变量放入$is_load数组之前,将$idiom追加到$langfile变量中。否则,代码将忽略loadDefault的第二次加载,因为文件名(本例中为“错误”)相同。@Amer是对的。我甚至不得不重写加载函数。我在加载函数中添加了一个可选的
$force
参数设置为false,并将该行更改为
if(在_数组($langfile,$this->is_loaded,TRUE)&&!$force中)
要指出,要实现此解决方案,您还需要重写CI_Lang的load函数,在将$langfile变量放入$is_load数组之前,将$idiom追加到$langfile变量中。否则,代码将忽略loadDefault的第二次加载,因为文件名(本例中为“错误”)相同。@Amer是对的。我甚至不得不重写加载函数。我在加载函数中添加了一个可选的
$force
参数设置为false,并将行更改为
if(在_数组($langfile,$this->is_loaded,TRUE)和&!$force)