@@ -162,15 +162,12 @@ protected function generateDataForMeta(BundleEntryReaderInterface $reader, $temp
162
162
163
163
sort ($ this ->languageCodes );
164
164
165
- $ alpha2ToAlpha3 = $ this ->generateAlpha2ToAlpha3Mapping ($ metadataBundle );
166
- $ alpha3ToAlpha2 = array_flip ($ alpha2ToAlpha3 );
167
- asort ($ alpha3ToAlpha2 );
168
-
169
165
return [
170
166
'Version ' => $ rootBundle ['Version ' ],
171
167
'Languages ' => $ this ->languageCodes ,
172
- 'Alpha2ToAlpha3 ' => $ alpha2ToAlpha3 ,
173
- 'Alpha3ToAlpha2 ' => $ alpha3ToAlpha2 ,
168
+ 'Alpha3Languages ' => $ this ->generateAlpha3Codes ($ this ->languageCodes , $ metadataBundle ),
169
+ 'Alpha2ToAlpha3 ' => $ this ->generateAlpha2ToAlpha3Mapping ($ metadataBundle ),
170
+ 'Alpha3ToAlpha2 ' => $ this ->generateAlpha3ToAlpha2Mapping ($ metadataBundle ),
174
171
];
175
172
}
176
173
@@ -179,6 +176,23 @@ private static function generateLanguageNames(ArrayAccessibleResourceBundle $loc
179
176
return array_diff_key (iterator_to_array ($ localeBundle ['Languages ' ]), self ::$ blacklist );
180
177
}
181
178
179
+ private function generateAlpha3Codes (array $ languageCodes , ArrayAccessibleResourceBundle $ metadataBundle ): array
180
+ {
181
+ $ alpha3Codes = array_flip (array_filter ($ languageCodes , static function (string $ language ): bool {
182
+ return 3 === \strlen ($ language );
183
+ }));
184
+
185
+ foreach ($ metadataBundle ['alias ' ]['language ' ] as $ alias => $ data ) {
186
+ if (3 === \strlen ($ alias ) && 'overlong ' === $ data ['reason ' ]) {
187
+ $ alpha3Codes [$ alias ] = true ;
188
+ }
189
+ }
190
+
191
+ ksort ($ alpha3Codes );
192
+
193
+ return array_keys ($ alpha3Codes );
194
+ }
195
+
182
196
private function generateAlpha2ToAlpha3Mapping (ArrayAccessibleResourceBundle $ metadataBundle )
183
197
{
184
198
$ aliases = iterator_to_array ($ metadataBundle ['alias ' ]['language ' ]);
@@ -213,4 +227,20 @@ private function generateAlpha2ToAlpha3Mapping(ArrayAccessibleResourceBundle $me
213
227
214
228
return $ alpha2ToAlpha3 ;
215
229
}
230
+
231
+ private function generateAlpha3ToAlpha2Mapping (ArrayAccessibleResourceBundle $ metadataBundle ): array
232
+ {
233
+ $ alpha3ToAlpha2 = [];
234
+
235
+ foreach ($ metadataBundle ['alias ' ]['language ' ] as $ alias => $ data ) {
236
+ $ language = $ data ['replacement ' ];
237
+ if (2 === \strlen ($ language ) && 3 === \strlen ($ alias ) && 'overlong ' === $ data ['reason ' ]) {
238
+ $ alpha3ToAlpha2 [$ alias ] = $ language ;
239
+ }
240
+ }
241
+
242
+ asort ($ alpha3ToAlpha2 );
243
+
244
+ return $ alpha3ToAlpha2 ;
245
+ }
216
246
}
0 commit comments