我有一个语言文件,其中包含一长串用于我的视图文件的字符串。
我的问题是如何将变量或配置项传递到语言文件?
<?php $lang['error_activation_key_expired'] = 'The activation key you have attempted using has expired. Please request a new Activation Key <a href="'.$this->config->item('base_url').'member/request_activation" title="Request a New Activation Key">here</a>.';
我可以满足于
<?php $lang['error_activation_key_expired'] = 'The activation key you have attempted using has expired. Please request a new Activation Key <a href="'.$base_url.'member/request_activation" title="Request a New Activation Key">here</a>.';
并以某种方式将 base_url 传递给它。我只是不知道怎么办。
Thanks!
在CI论坛上,恩洛乔夫 http://codeigniter.com/forums/viewthread/145634/#745143建议更好的解决方案。
它可以切换变量顺序。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Language extends CI_Language
{
function MY_Language()
{
parent::CI_Language();
}
/**
* Fetch a single line of text from the language array. Takes variable number
* of arguments and supports wildcards in the form of '%1', '%2', etc.
* Overloaded function.
*
* @access public
* @return mixed false if not found or the language string
*/
public function line()
{
//get the arguments passed to the function
$args = func_get_args();
//count the number of arguments
$c = count($args);
//if one or more arguments, perform the necessary processing
if ($c)
{
//first argument should be the actual language line key
//so remove it from the array (pop from front)
$line = array_shift($args);
//check to make sure the key is valid and load the line
$line = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];
//if the line exists and more function arguments remain
//perform wildcard replacements
if ($line && $args)
{
$i = 1;
foreach ($args as $arg)
{
$line = preg_replace('/\%'.$i.'/', $arg, $line);
$i++;
}
}
}
else
{
//if no arguments given, no language line available
$line = false;
}
return $line;
}
}
?>
使用案例~
//in english
$lang['some_key'] = 'Some string with %1 %2.';
//in another language
$lang['some_key'] = 'Some string %2 with %1.';
//the actual usage
echo $this->lang->line('some_key','first','second');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)