123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- <?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'];
- }
- }
|