/**
  * {@inheritdoc}
  */
 public function load($file, $type = null)
 {
     $path = $this->locator->locate($file);
     $xml = $this->loadFile($path);
     $collection = new I18nRouteCollection();
     $collection->addResource(new FileResource($path));
     // process routes and imports
     foreach ($xml->documentElement->childNodes as $node) {
         if (!$node instanceof \DOMElement) {
             continue;
         }
         $this->parseNode($collection, $node, $path, $file);
     }
     return $collection;
 }
 /**
  * {@inheritDoc}
  */
 public function load($file, $type = null)
 {
     $path = $this->locator->locate($file);
     if (!stream_is_local($path)) {
         throw new \InvalidArgumentException(sprintf('This is not a local file "%s".', $path));
     }
     if (!file_exists($path)) {
         throw new \InvalidArgumentException(sprintf('File "%s" not found.', $path));
     }
     $config = Yaml::parse(file_get_contents($path));
     $collection = new I18nRouteCollection();
     $collection->addResource(new FileResource($path));
     // empty file
     if (null === $config) {
         $config = array();
     }
     // not an array
     if (!is_array($config)) {
         throw new \InvalidArgumentException(sprintf('The file "%s" must contain a YAML array.', $file));
     }
     foreach ($config as $name => $config) {
         if (isset($config['pattern'])) {
             if (isset($config['path'])) {
                 throw new \InvalidArgumentException(sprintf('The file "%s" cannot define both a "path" and a "pattern" attribute. Use only "path".', $path));
             }
             $config['path'] = $config['pattern'];
             unset($config['pattern']);
         }
         $this->validate($config, $name, $path);
         if (isset($config['resource'])) {
             $this->parseImport($collection, $config, $path, $file);
         } else {
             $this->parseRoute($collection, $name, $config, $path);
         }
     }
     return $collection;
 }