diff --git a/src/Symfony/Component/Intl/Data/Generator/LanguageDataGenerator.php b/src/Symfony/Component/Intl/Data/Generator/LanguageDataGenerator.php index 65894340cb..5998759423 100644 --- a/src/Symfony/Component/Intl/Data/Generator/LanguageDataGenerator.php +++ b/src/Symfony/Component/Intl/Data/Generator/LanguageDataGenerator.php @@ -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?' ); } diff --git a/src/Symfony/Component/Intl/Resources/bin/icu.ini b/src/Symfony/Component/Intl/Resources/bin/icu.ini index 119f2431a4..e6fdd01d4a 100644 --- a/src/Symfony/Component/Intl/Resources/bin/icu.ini +++ b/src/Symfony/Component/Intl/Resources/bin/icu.ini @@ -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