[Intl] Fix the update-data.php script in preparation for ICU 5.5

This commit is contained in:
Jakub Zalas 2016-03-04 16:01:09 +00:00
parent d2e5c4c3ab
commit 894ce3cbd8
2 changed files with 11 additions and 4 deletions

View File

@ -49,6 +49,7 @@ class LanguageDataGenerator extends AbstractDataGenerator
'fr' => 'fra',
'gn' => 'grn',
'hy' => 'hye',
'hr' => 'hrv',
'ik' => 'ipk',
'is' => 'isl',
'iu' => 'iku',
@ -76,6 +77,7 @@ class LanguageDataGenerator extends AbstractDataGenerator
'sc' => 'srd',
'sk' => 'slk',
'sq' => 'sqi',
'sr' => 'srp',
'sw' => 'swa',
'uz' => 'uzb',
'yi' => 'yid',
@ -164,10 +166,13 @@ class LanguageDataGenerator extends AbstractDataGenerator
private function generateAlpha2ToAlpha3Mapping(ArrayAccessibleResourceBundle $metadataBundle)
{
$aliases = $metadataBundle['languageAlias'];
// Data structure has changed in ICU 5.5 from "languageAlias" to "alias->language"
$aliases = $metadataBundle['languageAlias'] ?: $metadataBundle['alias']['language'];
$alpha2ToAlpha3 = array();
foreach ($aliases as $alias => $language) {
// $language is a string before ICU 5.5
$language = is_string($language) ? $language : $language['replacement'];
if (2 === strlen($language) && 3 === strlen($alias)) {
if (isset(self::$preferredAlpha2ToAlpha3Mapping[$language])) {
// Validate to prevent typos
@ -181,12 +186,13 @@ class LanguageDataGenerator extends AbstractDataGenerator
}
$alpha3 = self::$preferredAlpha2ToAlpha3Mapping[$language];
$alpha2 = is_string($aliases[$alpha3]) ? $aliases[$alpha3] : $aliases[$alpha3]['replacement'];
if ($language !== $aliases[$alpha3]) {
if ($language !== $alpha2) {
throw new RuntimeException(
'The statically set three-letter mapping '.$alpha3.' '.
'for the language code '.$language.' seems to be '.
'an alias for '.$aliases[$alpha3].'. Wrong mapping?'
'an alias for '.$alpha2.'. Wrong mapping?'
);
}

View File

@ -10,4 +10,5 @@
51 = http://source.icu-project.org/repos/icu/icu/tags/release-51-2/source
52 = http://source.icu-project.org/repos/icu/icu/tags/release-52-1/source
53 = http://source.icu-project.org/repos/icu/icu/tags/release-53-1/source
54 = http://source.icu-project.org/repos/icu/icu/tags/release-54-rc/source
54 = http://source.icu-project.org/repos/icu/icu/tags/release-54-1/source
55 = http://source.icu-project.org/repos/icu/icu/tags/release-55-1/source