@@ -84,7 +84,7 @@ public function generateFromPath($path, $format = 'es6', $withVendor = false, $l
84
84
}
85
85
86
86
if (isset ($ locales [$ noExt ])) {
87
- $ locales [$ noExt ] = array_merge ($ local , $ locales [$ noExt ]);
87
+ $ locales [$ noExt ] = array_merge_recursive ($ local , $ locales [$ noExt ]);
88
88
} else {
89
89
$ locales [$ noExt ] = $ local ;
90
90
}
@@ -93,22 +93,7 @@ public function generateFromPath($path, $format = 'es6', $withVendor = false, $l
93
93
94
94
$ locales = $ this ->adjustVendor ($ locales );
95
95
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 );
112
97
}
113
98
114
99
/**
@@ -117,7 +102,7 @@ public function generateFromPath($path, $format = 'es6', $withVendor = false, $l
117
102
* @return string
118
103
* @throws Exception
119
104
*/
120
- public function generateMultiple ($ path , $ format = 'es6 ' , $ multiLocales = false )
105
+ public function generateMultiple ($ path , $ format = 'es6 ' )
121
106
{
122
107
if (!is_dir ($ path )) {
123
108
throw new Exception ('Directory not found: ' . $ path );
@@ -142,7 +127,7 @@ public function generateMultiple($path, $format = 'es6', $multiLocales = false)
142
127
$ this ->availableLocales [] = $ noExt ;
143
128
}
144
129
if ($ fileinfo ->isDir ()) {
145
- $ local = $ this ->allocateLocaleArray ($ fileinfo ->getRealPath (), $ multiLocales );
130
+ $ local = $ this ->allocateLocaleArray ($ fileinfo ->getRealPath ());
146
131
} else {
147
132
$ local = $ this ->allocateLocaleJSON ($ fileinfo ->getRealPath ());
148
133
if ($ local === null ) continue ;
@@ -156,20 +141,10 @@ public function generateMultiple($path, $format = 'es6', $multiLocales = false)
156
141
}
157
142
}
158
143
}
159
- foreach ($ this -> filesToCreate as $ fileName => $ data ) {
144
+ foreach ($ locales as $ fileName => $ data ) {
160
145
$ fileToCreate = $ jsPath . $ fileName . '.js ' ;
161
146
$ 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 );
173
148
174
149
if (!is_dir (dirname ($ fileToCreate ))) {
175
150
mkdir (dirname ($ fileToCreate ), 0777 , true );
@@ -203,7 +178,7 @@ private function allocateLocaleJSON($path)
203
178
* @param string $path
204
179
* @return array
205
180
*/
206
- private function allocateLocaleArray ($ path, $ multiLocales = false )
181
+ private function allocateLocaleArray ($ path )
207
182
{
208
183
$ data = [];
209
184
$ dir = new DirectoryIterator ($ path );
@@ -243,11 +218,6 @@ private function allocateLocaleArray($path, $multiLocales = false)
243
218
if ($ filePath [0 ] === DIRECTORY_SEPARATOR ) {
244
219
$ filePath = substr ($ filePath , 1 );
245
220
}
246
- if ($ multiLocales ) {
247
- $ this ->filesToCreate [$ lastLocale ][$ lastLocale ][$ filePath ] = $ this ->adjustArray ($ tmp );
248
- } else {
249
- $ this ->filesToCreate [$ filePath ][$ lastLocale ] = $ this ->adjustArray ($ tmp );
250
- }
251
221
}
252
222
253
223
$ data [$ noExt ] = $ this ->adjustArray ($ tmp );
@@ -404,4 +374,19 @@ private function getES6Module($body)
404
374
{
405
375
return "export default {$ body }" ;
406
376
}
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
+ }
407
392
}
0 commit comments