@@ -84,7 +84,7 @@ public function generateFromPath($path, $format = 'es6', $withVendor = false, $l
8484 }
8585
8686 if (isset ($ locales [$ noExt ])) {
87- $ locales [$ noExt ] = array_merge ($ local , $ locales [$ noExt ]);
87+ $ locales [$ noExt ] = array_merge_recursive ($ local , $ locales [$ noExt ]);
8888 } else {
8989 $ locales [$ noExt ] = $ local ;
9090 }
@@ -93,22 +93,7 @@ public function generateFromPath($path, $format = 'es6', $withVendor = false, $l
9393
9494 $ locales = $ this ->adjustVendor ($ locales );
9595
96- $ jsonLocales = json_encode ($ locales , JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ) . PHP_EOL ;
97-
98- if (json_last_error () !== JSON_ERROR_NONE ) {
99- throw new Exception ('Could not generate JSON, error code ' .json_last_error ());
100- }
101-
102- // formats other than 'es6' and 'umd' will become plain JSON
103- if ($ format === 'es6 ' ) {
104- $ jsBody = $ this ->getES6Module ($ jsonLocales );
105- } elseif ($ format === 'umd ' ) {
106- $ jsBody = $ this ->getUMDModule ($ jsonLocales );
107- } else {
108- $ jsBody = $ jsonLocales ;
109- }
110-
111- return $ jsBody ;
96+ return $ this ->encodeJson ($ locales , $ format );
11297 }
11398
11499 /**
@@ -117,7 +102,7 @@ public function generateFromPath($path, $format = 'es6', $withVendor = false, $l
117102 * @return string
118103 * @throws Exception
119104 */
120- public function generateMultiple ($ path , $ format = 'es6 ' , $ multiLocales = false )
105+ public function generateMultiple ($ path , $ format = 'es6 ' )
121106 {
122107 if (!is_dir ($ path )) {
123108 throw new Exception ('Directory not found: ' . $ path );
@@ -142,7 +127,7 @@ public function generateMultiple($path, $format = 'es6', $multiLocales = false)
142127 $ this ->availableLocales [] = $ noExt ;
143128 }
144129 if ($ fileinfo ->isDir ()) {
145- $ local = $ this ->allocateLocaleArray ($ fileinfo ->getRealPath (), $ multiLocales );
130+ $ local = $ this ->allocateLocaleArray ($ fileinfo ->getRealPath ());
146131 } else {
147132 $ local = $ this ->allocateLocaleJSON ($ fileinfo ->getRealPath ());
148133 if ($ local === null ) continue ;
@@ -156,20 +141,10 @@ public function generateMultiple($path, $format = 'es6', $multiLocales = false)
156141 }
157142 }
158143 }
159- foreach ($ this -> filesToCreate as $ fileName => $ data ) {
144+ foreach ($ locales as $ fileName => $ data ) {
160145 $ fileToCreate = $ jsPath . $ fileName . '.js ' ;
161146 $ createdFiles .= $ fileToCreate . PHP_EOL ;
162- $ jsonLocales = json_encode ($ data , JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ) . PHP_EOL ;
163- if (json_last_error () !== JSON_ERROR_NONE ) {
164- throw new Exception ('Could not generate JSON, error code ' .json_last_error ());
165- }
166- if ($ format === 'es6 ' ) {
167- $ jsBody = $ this ->getES6Module ($ jsonLocales );
168- } elseif ($ format === 'umd ' ) {
169- $ jsBody = $ this ->getUMDModule ($ jsonLocales );
170- } else {
171- $ jsBody = $ jsonLocales ;
172- }
147+ $ jsBody = $ this ->encodeJson ([$ fileName => $ data ], $ format );
173148
174149 if (!is_dir (dirname ($ fileToCreate ))) {
175150 mkdir (dirname ($ fileToCreate ), 0777 , true );
@@ -203,7 +178,7 @@ private function allocateLocaleJSON($path)
203178 * @param string $path
204179 * @return array
205180 */
206- private function allocateLocaleArray ($ path, $ multiLocales = false )
181+ private function allocateLocaleArray ($ path )
207182 {
208183 $ data = [];
209184 $ dir = new DirectoryIterator ($ path );
@@ -243,11 +218,6 @@ private function allocateLocaleArray($path, $multiLocales = false)
243218 if ($ filePath [0 ] === DIRECTORY_SEPARATOR ) {
244219 $ filePath = substr ($ filePath , 1 );
245220 }
246- if ($ multiLocales ) {
247- $ this ->filesToCreate [$ lastLocale ][$ lastLocale ][$ filePath ] = $ this ->adjustArray ($ tmp );
248- } else {
249- $ this ->filesToCreate [$ filePath ][$ lastLocale ] = $ this ->adjustArray ($ tmp );
250- }
251221 }
252222
253223 $ data [$ noExt ] = $ this ->adjustArray ($ tmp );
@@ -404,4 +374,19 @@ private function getES6Module($body)
404374 {
405375 return "export default {$ body }" ;
406376 }
377+
378+ private function encodeJson ($ data , $ format = 'es6 ' )
379+ {
380+ $ jsonLocales = json_encode ($ data , JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ) . PHP_EOL ;
381+ if (json_last_error () !== JSON_ERROR_NONE ) {
382+ throw new Exception ('Could not generate JSON, error code ' .json_last_error ());
383+ }
384+ if ($ format === 'es6 ' ) {
385+ return $ this ->getES6Module ($ jsonLocales );
386+ } elseif ($ format === 'umd ' ) {
387+ return $ this ->getUMDModule ($ jsonLocales );
388+ }
389+
390+ return $ jsonLocales ;
391+ }
407392}
0 commit comments