Php 当codeigniter中某些文本的翻译未命中时,如何显示默认翻译
我有一个支持3种语言的应用程序。如果我切换语言,如果文本没有当前语言的翻译,它将不会显示。但是我想显示默认语言的翻译,而不是不显示任何内容。怎么做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();
谢谢。我会用我自己的扩展核心类
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)