sonarrradarrplexorganizrnginxdashboardhtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelanding
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							77 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							77 lines
						
					
					
						
							2.6 KiB
						
					
					
				| <?php | |
| 
 | |
| /* | |
|  * This file is part of the Symfony package. | |
|  * | |
|  * (c) Fabien Potencier <fabien@symfony.com> | |
|  * | |
|  * For the full copyright and license information, please view the LICENSE | |
|  * file that was distributed with this source code. | |
|  */ | |
| 
 | |
| namespace Symfony\Component\Translation\Loader; | |
| 
 | |
| use Symfony\Component\Config\Util\XmlUtils; | |
| use Symfony\Component\Translation\MessageCatalogue; | |
| use Symfony\Component\Translation\Exception\InvalidResourceException; | |
| use Symfony\Component\Translation\Exception\NotFoundResourceException; | |
| use Symfony\Component\Config\Resource\FileResource; | |
| 
 | |
| /** | |
|  * QtFileLoader loads translations from QT Translations XML files. | |
|  * | |
|  * @author Benjamin Eberlei <kontakt@beberlei.de> | |
|  */ | |
| class QtFileLoader implements LoaderInterface | |
| { | |
|     /** | |
|      * {@inheritdoc} | |
|      */ | |
|     public function load($resource, $locale, $domain = 'messages') | |
|     { | |
|         if (!stream_is_local($resource)) { | |
|             throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource)); | |
|         } | |
| 
 | |
|         if (!file_exists($resource)) { | |
|             throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource)); | |
|         } | |
| 
 | |
|         try { | |
|             $dom = XmlUtils::loadFile($resource); | |
|         } catch (\InvalidArgumentException $e) { | |
|             throw new InvalidResourceException(sprintf('Unable to load "%s".', $resource), $e->getCode(), $e); | |
|         } | |
| 
 | |
|         $internalErrors = libxml_use_internal_errors(true); | |
|         libxml_clear_errors(); | |
| 
 | |
|         $xpath = new \DOMXPath($dom); | |
|         $nodes = $xpath->evaluate('//TS/context/name[text()="'.$domain.'"]'); | |
| 
 | |
|         $catalogue = new MessageCatalogue($locale); | |
|         if (1 == $nodes->length) { | |
|             $translations = $nodes->item(0)->nextSibling->parentNode->parentNode->getElementsByTagName('message'); | |
|             foreach ($translations as $translation) { | |
|                 $translationValue = (string) $translation->getElementsByTagName('translation')->item(0)->nodeValue; | |
| 
 | |
|                 if (!empty($translationValue)) { | |
|                     $catalogue->set( | |
|                         (string) $translation->getElementsByTagName('source')->item(0)->nodeValue, | |
|                         $translationValue, | |
|                         $domain | |
|                     ); | |
|                 } | |
|                 $translation = $translation->nextSibling; | |
|             } | |
| 
 | |
|             if (class_exists('Symfony\Component\Config\Resource\FileResource')) { | |
|                 $catalogue->addResource(new FileResource($resource)); | |
|             } | |
|         } | |
| 
 | |
|         libxml_use_internal_errors($internalErrors); | |
| 
 | |
|         return $catalogue; | |
|     } | |
| }
 | |
| 
 |