最近有一个把系统通过语言包转换成越南语的需求,之前系统没做过任何多语言的支持,为了简化工作量,尝试把中文作为smarty的key
来传递值,调用方式为{$测试},发现这样不行,查看了smarty的help,发现可以有个注册函数的方法,试验了一下,
<?
require_once SYSDIR."global.inc.php";
//把php语言翻译函数translater注册为smarty函数lang
$smarty-> register_function("lang",'translater');
/**
*语言转换
*/
function translater($word){
global $LANGUAGE_CONFIG;
$cnt = "";
extract($word);//处理参数,word从smarty过来会是一个数组,内容为lang的属性k-v结构
$lang = $cnt;
$result = $LANGUAGE_CONFIG[$lang];
if(empty($result)){
$result = $cnt;
}
echo $result;
}
=======================================
TPL调用:
<title>{lang cnt="这里是个测试标题"}</title>
=======================================
语言包结构:
<?
global $LANGUAGE_CONFIG;
$LANGUAGE_CONFIG['这里是个测试标题']="this is the test title";