Thiemo Mättig (WMDE) has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/348048 )

Change subject: Consider languages being it's own parent in 
LanguageFallbackChainFactory
......................................................................

Consider languages being it's own parent in LanguageFallbackChainFactory

Bug: T156280
Change-Id: I1d9691c784032669979f8109c9a5f65cbf4122c9
---
M lib/includes/LanguageFallbackChainFactory.php
1 file changed, 11 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/48/348048/1

diff --git a/lib/includes/LanguageFallbackChainFactory.php 
b/lib/includes/LanguageFallbackChainFactory.php
index 0c4cda0..4acf57f 100644
--- a/lib/includes/LanguageFallbackChainFactory.php
+++ b/lib/includes/LanguageFallbackChainFactory.php
@@ -123,16 +123,22 @@
                }
 
                if ( $mode & self::FALLBACK_VARIANTS ) {
-                       /** @var Language $parentLanguage */
-                       $pieces = explode( '-', $languageCode );
-                       if ( !in_array( $pieces[0], 
LanguageConverter::$languagesWithVariants ) ) {
-                               $parentLanguage = null;
-                       } else {
+                       $parentLanguage = null;
+                       $pieces = explode( '-', $languageCode, 2 );
+
+                       if ( in_array( $pieces[0], 
LanguageConverter::$languagesWithVariants ) ) {
                                if ( is_string( $language ) ) {
                                        $language = Language::factory( 
$language );
                                }
                                $parentLanguage = 
$language->getParentLanguage();
+
+                               // A language may be parent of itself (see 
T156280). We must consider and skip this
+                               // to not have loops in our chain.
+                               if ( $parentLanguage && 
$parentLanguage->getCode() === $languageCode ) {
+                                       $parentLanguage = null;
+                               }
                        }
+
                        if ( $parentLanguage ) {
                                // It's less likely to trigger conversion 
mistakes by converting
                                // zh-tw to zh-hk first instead of converting 
zh-cn to zh-tw.

-- 
To view, visit https://gerrit.wikimedia.org/r/348048
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1d9691c784032669979f8109c9a5f65cbf4122c9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to