Your IP : 127.0.0.1
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\App\Language;
use Magento\Framework\Config\Dom;
/**
* Language pack configuration file
*/
class Config
{
/**
* @var \Magento\Framework\Config\Dom\UrnResolver
*/
protected $urnResolver;
/**
* @var \Magento\Framework\Config\DomFactory
*/
protected $domFactory;
/**
* Data extracted from the configuration file
*
* @var array
*/
protected $_data;
/**
* Constructor
*
* @param string $source
* @param \Magento\Framework\Config\Dom\UrnResolver $urnResolver
* @param \Magento\Framework\Config\DomFactory $domFactory
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function __construct(
$source,
\Magento\Framework\Config\Dom\UrnResolver $urnResolver,
\Magento\Framework\Config\DomFactory $domFactory
) {
$this->urnResolver = $urnResolver;
$this->domFactory = $domFactory;
$dom = $this->domFactory->createDom(['xml' => $source, 'schemaFile' => $this->getSchemaFile()]);
$this->_data = $this->_extractData($dom->getDom());
}
/**
* Get absolute path to validation scheme for language.xml
*
* @return string
*/
protected function getSchemaFile()
{
return $this->urnResolver->getRealPath('urn:magento:framework:App/Language/package.xsd');
}
/**
* Extract configuration data from the DOM structure
*
* @param \DOMDocument $dom
* @return array
*/
protected function _extractData(\DOMDocument $dom)
{
/** @var $languageNode \DOMElement */
$languageNode = $dom->getElementsByTagName('language')->item(0);
/** @var $codeNode \DOMElement */
$codeNode = $languageNode->getElementsByTagName('code')->item(0);
/** @var $vendorNode \DOMElement */
$vendorNode = $languageNode->getElementsByTagName('vendor')->item(0);
/** @var $packageNode \DOMElement */
$packageNode = $languageNode->getElementsByTagName('package')->item(0);
/** @var $sortOrderNode \DOMElement */
$sortOrderNode = $languageNode->getElementsByTagName('sort_order')->item(0);
$use = [];
/** @var $useNode \DOMElement */
foreach ($languageNode->getElementsByTagName('use') as $useNode) {
$use[] = [
'vendor' => $useNode->getAttribute('vendor'),
'package' => $useNode->getAttribute('package'),
];
}
return [
'code' => $codeNode->nodeValue,
'vendor' => $vendorNode->nodeValue,
'package' => $packageNode->nodeValue,
'sort_order' => $sortOrderNode ? $sortOrderNode->nodeValue : 0,
'use' => $use
];
}
/**
* Language code
*
* @return string
*/
public function getCode()
{
return $this->_data['code'];
}
/**
* Language vendor
*
* @return string
*/
public function getVendor()
{
return $this->_data['vendor'];
}
/**
* Language package
*
* @return string
*/
public function getPackage()
{
return $this->_data['package'];
}
/**
* Sort order
*
* @return null|int
*/
public function getSortOrder()
{
return $this->_data['sort_order'];
}
/**
* Declaration of Inheritances
*
* @return string[][]
*/
public function getUses()
{
return $this->_data['use'];
}
}