Browse Source

Don't ignore empty MO translation files

Bernat Arlandis 8 years ago
parent
commit
02e8c3d01c

+ 1 - 3
src/I18n/ChainMessagesLoader.php

@@ -71,9 +71,7 @@ class ChainMessagesLoader
                 ));
             }
 
-            if (count($package->getMessages())) {
-                return $package;
-            }
+            return $package;
         }
 
         return new Package();

+ 3 - 3
src/I18n/MessagesFileLoader.php

@@ -101,13 +101,12 @@ class MessagesFileLoader
      * Loads the translation file and parses it. Returns an instance of a translations
      * package containing the messages loaded from the file.
      *
-     * @return \Aura\Intl\Package
+     * @return \Aura\Intl\Package|false
      * @throws \RuntimeException if no file parser class could be found for the specified
      * file extension.
      */
     public function __invoke()
     {
-        $package = new Package('default');
         $folders = $this->translationsFolders();
         $ext = $this->_extension;
         $file = false;
@@ -126,7 +125,7 @@ class MessagesFileLoader
         }
 
         if (!$file) {
-            return $package;
+            return false;
         }
 
         $name = ucfirst($ext);
@@ -137,6 +136,7 @@ class MessagesFileLoader
         }
 
         $messages = (new $class)->parse($file);
+        $package = new Package('default');
         $package->setMessages($messages);
 
         return $package;

+ 15 - 0
tests/TestCase/I18n/MessagesFileLoaderTest.php

@@ -64,4 +64,19 @@ class MessagesFileLoaderTest extends TestCase
         $messages = $package->getMessages();
         $this->assertEquals('Po (translated) from custom folder', $messages['Plural Rule 1']['_context']['']);
     }
+
+    /**
+     * Test reading MO files
+     * @return void
+     */
+    public function testLoadingMoFiles()
+    {
+        $loader = new MessagesFileLoader('empty', 'es', 'mo');
+        $package = $loader();
+        $this->assertNotFalse($package);
+
+        $loader = new MessagesFileLoader('missing', 'es', 'mo');
+        $package = $loader();
+        $this->assertFalse($package);
+    }
 }

BIN
tests/test_app/TestApp/Locale/es/empty.mo