/** Template directive handler @param $_tree DOMDocument @public **/ public static function locale($_tree) { $_node =& $_tree->nodeptr; foreach ($_node->attributes as $_attr) { $_vars[$_attr->name] = $_attr->value; } $_vars = is_array($_vars) ? array_map('F3::resolve', $_vars) : array(); if (!count(self::$dict)) { // Load default dictionary self::loadDict(); } $_msg = msgfmt_create(self::getDefault(), self::$dict[$_node->nodeValue]); $_block = $_msg ? F3::xmlEncode($_msg->format($_vars), TRUE) : ''; $_len = strlen($_block); if ($_len) { $_tree->fragment->appendXML($_block); // Insert fragment before current node $_node->parentNode->insertBefore($_tree->fragment, $_node); } }