使用示例:
``` * //初始化,设置语言 * 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; } }