X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=languages%2FLanguageConverter.php;h=8fdf4f5e51569bf041d8cf2115d5ae229e05c1a0;hb=ebd1cbe08942ae8f916b8a76f5c22eced261853d;hp=ea26c64dc7a47adc448749a8c146b8fc12fbe4c6;hpb=b6fecdf6feeb785a8d72c8467e25bcd30261baa5;p=lhc%2Fweb%2Fwiklou.git diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index ea26c64dc7..8fdf4f5e51 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -140,10 +140,7 @@ class LanguageConverter { * main code if there is no fallback */ public function getVariantFallbacks( $variant ) { - if ( isset( $this->mVariantFallbacks[$variant] ) ) { - return $this->mVariantFallbacks[$variant]; - } - return $this->mMainLanguageCode; + return $this->mVariantFallbacks[$variant] ?? $this->mMainLanguageCode; } /** @@ -212,9 +209,13 @@ class LanguageConverter { } /** - * Validate the variant + * Validate the variant and return an appropriate strict internal + * variant code if one exists. Compare to Language::hasVariant() + * which does a strict test. + * * @param string|null $variant The variant to validate - * @return mixed Returns the variant if it is valid, null otherwise + * @return mixed Returns an equivalent valid variant code if possible, + * null otherwise */ public function validateVariant( $variant = null ) { if ( $variant === null ) { @@ -1175,8 +1176,21 @@ class LanguageConverter { // [1] => 'zh-hant:yyy' // [2] => '' // ] - $pat = '/;\s*(?='; + $expandedVariants = []; foreach ( $this->mVariants as $variant ) { + $expandedVariants[ $variant ] = 1; + // Accept standard BCP 47 names for variants as well. + $expandedVariants[ LanguageCode::bcp47( $variant ) ] = 1; + } + // Accept old deprecated names for variants + foreach ( LanguageCode::getDeprecatedCodeMapping() as $old => $new ) { + if ( isset( $expandedVariants[ $new ] ) ) { + $expandedVariants[ $old ] = 1; + } + } + + $pat = '/;\s*(?='; + foreach ( $expandedVariants as $variant => $ignore ) { // zh-hans:xxx;zh-hant:yyy $pat .= $variant . '\s*:|'; // xxx=>zh-hans:yyy; xxx=>zh-hant:zzz