/**
* Load a particular message catalogue. Use read() to
* to get the array of messages. The catalogue loading sequence
* is as follows
*
* # [1] call getCatalogeList($catalogue) to get a list of
* variants for for the specified $catalogue.
* # [2] for each of the variants, call getSource($variant)
* to get the resource, could be a file or catalogue ID.
* # [3] verify that this resource is valid by calling isValidSource($source)
* # [4] try to get the messages from the cache
* # [5] if a cache miss, call load($source) to load the message array
* # [6] store the messages to cache.
* # [7] continue with the foreach loop, e.g. goto [2].
*
* @param string a catalogue to load
* @return boolean true if loaded, false otherwise.
* @see read()
*/
function load($catalogue = 'messages')
{
$variants = $this->getCatalogueList($catalogue);
$this->messages = array();
foreach ($variants as $variant) {
$source = $this->getSource($variant);
if ($this->isValidSource($source) == false) {
continue;
}
$loadData = true;
if ($this->cache) {
$data = $this->cache->get($variant, $this->culture, $this->getLastModified($source));
if (is_array($data)) {
$this->messages[$variant] = $data;
$loadData = false;
}
unset($data);
}
if ($loadData) {
$data =& $this->loadData($source);
if (is_array($data)) {
$this->messages[$variant] = $data;
if ($this->cache) {
$this->cache->save($data, $variant, $this->culture);
}
}
unset($data);
}
}
return true;
}