فهرست منبع

[Translation] Added YamlFileLoader

Jordi Boggiano 14 سال پیش
والد
کامیت
3813eecf17

+ 5 - 0
src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml

@@ -9,6 +9,7 @@
         <parameter key="translator.identity.class">Symfony\Component\Translation\IdentityTranslator</parameter>
         <parameter key="translator.selector.class">Symfony\Component\Translation\MessageSelector</parameter>
         <parameter key="translation.loader.php.class">Symfony\Component\Translation\Loader\PhpFileLoader</parameter>
+        <parameter key="translation.loader.yml.class">Symfony\Component\Translation\Loader\YamlFileLoader</parameter>
         <parameter key="translation.loader.xliff.class">Symfony\Component\Translation\Loader\XliffFileLoader</parameter>
         <parameter key="translator.fallback_locale">en</parameter>
     </parameters>
@@ -35,6 +36,10 @@
             <tag name="translation.loader" alias="php" />
         </service>
 
+        <service id="translation.loader.yml" class="%translation.loader.yml.class%">
+            <tag name="translation.loader" alias="yml" />
+        </service>
+
         <service id="translation.loader.xliff" class="%translation.loader.xliff.class%">
             <tag name="translation.loader" alias="xliff" />
         </service>

+ 38 - 0
src/Symfony/Component/Translation/Loader/YamlFileLoader.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Translation\MessageCatalogue;
+use Symfony\Component\Translation\Resource\FileResource;
+use Symfony\Component\Yaml\Yaml;
+
+/*
+ * This file is part of the Symfony framework.
+ *
+ * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+/**
+ * YamlFileLoader loads translations from Yaml files.
+ *
+ * @author Fabien Potencier <fabien.potencier@symfony-project.com>
+ */
+class YamlFileLoader implements LoaderInterface
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load($resource, $locale, $domain = 'messages')
+    {
+        $messages = Yaml::load($resource);
+
+        $catalogue = new MessageCatalogue($locale);
+        $catalogue->addMessages($messages, $domain);
+        $catalogue->addResource(new FileResource($resource));
+
+        return $catalogue;
+    }
+}