我有一个支持3种语言的应用程序。如果我切换语言,如果文本没有当前语言的翻译,则不会显示。但是我希望显示默认语言的翻译,而不是显示任何内容。怎么做?
谢谢。
答案 0 :(得分: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
这样,如果您查询的是法语翻译中的内容,则默认为英语翻译。