<?php /* SVN FILE: $Id: HamlException.php 61 2010-04-16 10:19:59Z chris.l.yates $ */ /**
* Phamlp. * @author Chris Yates <chris.l.yates@gmail.com> * @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 <code>strtr</code>. * @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: * <pre> * return array( * 'original message 1' => 'translated message 1', * 'original message 2' => 'translated message 2', * ); * </pre> * @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); } }
}