HTMLPurifier/Language.php Quellcode

Language.php
gehe zur Dokumentation dieser Datei
1 <?php
2 
8 {
9 
14  public $code = 'en';
15 
20  public $fallback = false;
21 
26  public $messages = array();
27 
32  public $errorNames = array();
33 
40  public $error = false;
41 
47  public $_loaded = false;
48 
52  protected $config;
53 
57  protected $context;
58 
63  public function __construct($config, $context)
64  {
65  $this->config = $config;
66  $this->context = $context;
67  }
68 
73  public function load()
74  {
75  if ($this->_loaded) {
76  return;
77  }
79  $factory->loadLanguage($this->code);
80  foreach ($factory->keys as $key) {
81  $this->$key = $factory->cache[$this->code][$key];
82  }
83  $this->_loaded = true;
84  }
85 
91  public function getMessage($key)
92  {
93  if (!$this->_loaded) {
94  $this->load();
95  }
96  if (!isset($this->messages[$key])) {
97  return "[$key]";
98  }
99  return $this->messages[$key];
100  }
101 
107  public function getErrorName($int)
108  {
109  if (!$this->_loaded) {
110  $this->load();
111  }
112  if (!isset($this->errorNames[$int])) {
113  return "[Error: $int]";
114  }
115  return $this->errorNames[$int];
116  }
117 
123  public function listify($array)
124  {
125  $sep = $this->getMessage('Item separator');
126  $sep_last = $this->getMessage('Item separator last');
127  $ret = '';
128  for ($i = 0, $c = count($array); $i < $c; $i++) {
129  if ($i == 0) {
130  } elseif ($i + 1 < $c) {
131  $ret .= $sep;
132  } else {
133  $ret .= $sep_last;
134  }
135  $ret .= $array[$i];
136  }
137  return $ret;
138  }
139 
148  public function formatMessage($key, $args = array())
149  {
150  if (!$this->_loaded) {
151  $this->load();
152  }
153  if (!isset($this->messages[$key])) {
154  return "[$key]";
155  }
156  $raw = $this->messages[$key];
157  $subst = array();
158  $generator = false;
159  foreach ($args as $i => $value) {
160  if (is_object($value)) {
161  if ($value instanceof HTMLPurifier_Token) {
162  // factor this out some time
163  if (!$generator) {
164  $generator = $this->context->get('Generator');
165  }
166  if (isset($value->name)) {
167  $subst['$'.$i.'.Name'] = $value->name;
168  }
169  if (isset($value->data)) {
170  $subst['$'.$i.'.Data'] = $value->data;
171  }
172  $subst['$'.$i.'.Compact'] =
173  $subst['$'.$i.'.Serialized'] = $generator->generateFromToken($value);
174  // a more complex algorithm for compact representation
175  // could be introduced for all types of tokens. This
176  // may need to be factored out into a dedicated class
177  if (!empty($value->attr)) {
178  $stripped_token = clone $value;
179  $stripped_token->attr = array();
180  $subst['$'.$i.'.Compact'] = $generator->generateFromToken($stripped_token);
181  }
182  $subst['$'.$i.'.Line'] = $value->line ? $value->line : 'unknown';
183  }
184  continue;
185  } elseif (is_array($value)) {
186  $keys = array_keys($value);
187  if (array_keys($keys) === $keys) {
188  // list
189  $subst['$'.$i] = $this->listify($value);
190  } else {
191  // associative array
192  // no $i implementation yet, sorry
193  $subst['$'.$i.'.Keys'] = $this->listify($keys);
194  $subst['$'.$i.'.Values'] = $this->listify(array_values($value));
195  }
196  continue;
197  }
198  $subst['$' . $i] = $value;
199  }
200  return strtr($raw, $subst);
201  }
202 }
203 
204 // vim: et sw=4 sts=4




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.