使用示例:
```
* //初始化,设置语言
* PhalApi_Translator::setLanguage('zh_cn');
*
* //翻译
* $msg = T('hello {name}', array('name' => 'phper'));
* var_dump($msg);
```
*
* @package PhalApi\Translator
* @license http://www.phalapi.net/license GPL 协议
* @link http://www.phalapi.net/
* @author dogstar 2015-02-04
*/
class PhalApi_Translator {
/**
* @var array $message 翻译的映射
*/
protected static $message = NULL;
/**
* @var array $language 语言
*/
protected static $language = 'en';
/**
* 获取翻译
* @param string $key 翻译的内容
* @param array $params 动态参数
* @return string
*/
public static function get($key, $params = array()) {
if (static::$message === NULL) {
static::setLanguage('en');
}
$rs = isset(static::$message[$key]) ? static::$message[$key] : $key;
$names = array_keys($params);
$names = array_map(array('PhalApi_Translator', 'formatVar'), $names);
return str_replace($names, array_values($params), $rs);
}
public static function formatVar($name) {
return '{' . $name . '}';
}
/**
* 语言设置
* @param string $language 翻译包的目录名
*/
public static function setLanguage($language) {
static::$language = $language;
static::$message = array();
static::addMessage(PHALAPI_ROOT);
if (defined('API_ROOT')) {
static::addMessage(API_ROOT);
}
}
/**
* 添加更多翻译
*
* - 为扩展类库或者外部提供更方便的方式追加翻译的内容
*
* @param string $path 待追加的路径
* @return NULL
*/
public static function addMessage($path) {
$moreMessagePath = static::getMessageFilePath($path, static::$language);
if (file_exists($moreMessagePath)) {
static::$message = array_merge(static::$message, include $moreMessagePath);
}
}
protected static function getMessageFilePath($root, $language) {
return implode(DIRECTORY_SEPARATOR,
array($root, 'Language', strtolower($language), 'common.php'));
}
/**
* 取当前的语言
*/
public static function getLanguage() {
return static::$language;
}
}