* Name: assign_t
* Purpose: assign a translated value to a template variable
* @author pineray 松田光貴
* @param string containing var-attribute and value-attribute
* @param Smarty_Compiler
*/
function smarty_compiler_assign_t($tag_attrs, &$compiler)
{
// 多言語対応用の関数が定義されていなければエラーを出力
if (!function_exists('t')) {
$compiler->_syntax_error("[compiler] function 't' is not defined", E_USER_WARNING);
return;
}
$params = $compiler->_parse_attrs($tag_attrs);
// セット対象が無ければエラーを出力
if (!isset($params['var'])) {
$compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING);
return;
}
$var = $params['var'];
unset($params['var']);
// エイリアスが無ければエラーを出力
if (empty($params['string'])) {
$compiler->_syntax_error("[compiler] parameter 'string' cannot be empty", E_USER_WARNING);
return;
}
foreach ($params as $key => $param) {
eval("\$params[{$key}] = {$param};");
}
$string = $params['string'];
unset($params['string']);
// オプション用の配列
$options = array();
// 言語コードの指定があればオプションにセット
if (!empty($params['lang_code'])) {
$options['lang_code'] = $params['lang_code'];
unset($params['lang_code']);
}
// 機種の指定があればオプションにセット
if (!empty($params['device_type_id'])) {
$options['device_type_id'] = $params['device_type_id'];
unset($params['device_type_id']);
}
$translated = '"' . t($string, $params, $options) . '"';
return "\$this->assign({$var}, {$translated});";
}