浏览代码

extract admin group and label translations

Fabien Bourigault 8 年之前
父节点
当前提交
e823e5227b

+ 17 - 2
Tests/Translator/Extractor/JMSTranslatorBundle/AdminExtractorTest.php

@@ -79,14 +79,18 @@ class AdminExtractorTest extends \PHPUnit_Framework_TestCase
 
         $this->pool = $this->getMockBuilder('Sonata\AdminBundle\Admin\Pool')
             ->disableOriginalConstructor()
-            ->getMock()
-        ;
+            ->getMock();
         $this->pool->expects($this->any())
             ->method('getAdminServiceIds')
             ->will($this->returnValue(array('foo_admin', 'bar_admin')));
         $this->pool->expects($this->any())
             ->method('getContainer')
             ->will($this->returnValue($container));
+        $this->pool->expects($this->any())
+            ->method('getAdminGroups')
+            ->will($this->returnValue(array('group' => array(
+                'label_catalogue' => 'admin_domain',
+            ))));
 
         $this->adminExtractor = new AdminExtractor($this->pool, $logger);
         $this->adminExtractor->setLogger($logger);
@@ -117,9 +121,17 @@ class AdminExtractorTest extends \PHPUnit_Framework_TestCase
 
                 return;
             }));
+        $this->fooAdmin->expects($this->any())
+            ->method('getLabel')
+            ->willReturn('foo_label');
+        $this->fooAdmin->expects($this->any())
+            ->method('getTranslationDomain')
+            ->willReturn('foo_admin_domain');
 
         $catalogue = $this->adminExtractor->extract();
 
+        $this->assertCount(2, $catalogue->getDomains());
+
         $this->assertTrue($catalogue->has(new Message('foo', 'foo_admin_domain')));
         $this->assertFalse($catalogue->has(new Message('nonexistent', 'foo_admin_domain')));
 
@@ -128,6 +140,9 @@ class AdminExtractorTest extends \PHPUnit_Framework_TestCase
         $message = $catalogue->get('foo', 'foo_admin_domain');
         $this->assertSame('foo', $message->getId());
         $this->assertSame('foo_admin_domain', $message->getDomain());
+
+        $this->assertTrue($catalogue->has(new Message('group', 'admin_domain')));
+        $this->assertTrue($catalogue->has(new Message('foo_label', 'foo_admin_domain')));
     }
 
     public function testExtractWithException()

+ 9 - 0
Translator/Extractor/JMSTranslatorBundle/AdminExtractor.php

@@ -107,9 +107,18 @@ class AdminExtractor implements ExtractorInterface, TranslatorInterface, Securit
 
         $this->catalogue = new MessageCatalogue();
 
+        foreach ($this->adminPool->getAdminGroups() as $name => $group) {
+            $this->trans($name, array(), $group['label_catalogue']);
+        }
+
         foreach ($this->adminPool->getAdminServiceIds() as $id) {
             $admin = $this->getAdmin($id);
 
+            $label = $admin->getLabel();
+            if (!empty($label)) {
+                $this->trans($label, array(), $admin->getTranslationDomain());
+            }
+
             $this->translator = $admin->getTranslator();
             $this->labelStrategy = $admin->getLabelTranslatorStrategy();
             $this->domain = $admin->getTranslationDomain();