浏览代码

Merge pull request #4239 from fbourigault/enhance-translation-admin-extractor

extract admin group and label translations
Grégoire Paris 8 年之前
父节点
当前提交
1be584ca3f

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

@@ -77,8 +77,20 @@ class AdminExtractorTest extends \PHPUnit_Framework_TestCase
 
         $logger = $this->getMock('Psr\Log\LoggerInterface');
 
-        $this->pool = new Pool($container, '', '');
-        $this->pool->setAdminServiceIds(array('foo_admin', 'bar_admin'));
+        $this->pool = $this->getMockBuilder('Sonata\AdminBundle\Admin\Pool')
+            ->disableOriginalConstructor()
+            ->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);
@@ -109,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')));
 
@@ -120,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();