[1.7.0] Wire in Language and ErrorCollector to main class, now, the only thing to...
[htmlpurifier/rdancer.git] / library / HTMLPurifier / Language.php
blob6b0845fb04c555c9af3017a4da7e2cad402523da
1 <?php
3 require_once 'HTMLPurifier/LanguageFactory.php';
5 class HTMLPurifier_Language
8 /**
9 * ISO 639 language code of language. Prefers shortest possible version
11 var $code = 'en';
13 /**
14 * Fallback language code
16 var $fallback = false;
18 /**
19 * Array of localizable messages
21 var $messages = array();
23 /**
24 * Has the language object been loaded yet?
25 * @private
27 var $_loaded = false;
29 /**
30 * Loads language object with necessary info from factory cache
31 * @note This is a lazy loader
33 function load() {
34 if ($this->_loaded) return;
35 $factory = HTMLPurifier_LanguageFactory::instance();
36 $factory->loadLanguage($this->code);
37 foreach ($factory->keys as $key) {
38 $this->$key = $factory->cache[$this->code][$key];
40 $this->_loaded = true;
43 /**
44 * Retrieves a localised message.
45 * @param $key string identifier of message
46 * @return string localised message
48 function getMessage($key) {
49 if (!$this->_loaded) $this->load();
50 if (!isset($this->messages[$key])) return "[$key]";
51 return $this->messages[$key];
54 /**
55 * Formats a localised message with passed parameters
56 * @param $key string identifier of message
57 * @param $param Parameter to substitute in (arbitrary number)
58 * @return string localised message
60 function formatMessage($key) {
61 if (!$this->_loaded) $this->load();
62 if (!isset($this->messages[$key])) return "[$key]";
63 $raw = $this->messages[$key];
64 $args = func_get_args();
65 $substitutions = array();
66 for ($i = 1; $i < count($args); $i++) {
67 $substitutions['$' . $i] = $args[$i];
69 return strtr($raw, $substitutions);