* @copyright Copyright (c) 2010 PBM Web Development * @license http://phamlp.googlecode.com/files/license.txt * @package PHamlP */ /** * Phamlp class. * Static support classes. * @package PHamlP */ class Phamlp { /** * @var string Language used to translate messages */ public static $language; /** * @var array Messages used for translation */ public static $messages; /** * Translates a message to the specified language. * @param string message category. * @param string the original message * @param array parameters to be applied to the message using strtr. * @return string the translated message */ public static function t($category, $message, $params = array()) { if (!empty(self::$language)) { $message = self::translate($category, $message); } return $params!==array() ? strtr($message,$params) : $message; } /** * Translates a message to the specified language. * If the language or the message in the specified language is not defined the * original message is returned. * @param string message category * @param string the original message * @return string the translated message */ private static function translate($category, $message) { if (empty(self::$messages[$category])) self::loadMessages($category); return (empty(self::$messages[$category][$message]) ? $message : self::$messages[$category][$message]); } /** * Loads the specified language message file for translation. * Message files are PHP files in the "category/messages" directory and named * "language.php", where category is either haml or sass, and language is the * specified language. * The message file returns an array of (source, translation) pairs; for example: *
	 * return array(
	 *   'original message 1' => 'translated message 1',
	 *   'original message 2' => 'translated message 2',
	 * );
	 * 
* @param string message category */ private static function loadMessages($category) { $messageFile = dirname(__FILE__).DIRECTORY_SEPARATOR.$category.DIRECTORY_SEPARATOR.'messages'.DIRECTORY_SEPARATOR.self::$language.'.php'; if (file_exists($messageFile)) { self::$messages[$category] = require_once($messageFile); } } }