jenkins-bot has submitted this change and it was merged.

Change subject: [FIX] welcome: Fallback for i18n translate
......................................................................


[FIX] welcome: Fallback for i18n translate

Reimplement 65518573d2b07c7b807fd890b0e18613e885ecbe after that has been
reverted in 7e401c34621d0a2ae76d8a896ab93d8984df13d6 because it
introduced T97291.

Bug: T95921
Change-Id: I04694f179a3b58058d01c9b71a53862f97f91bf9
---
M pywikibot/i18n.py
M scripts/welcome.py
2 files changed, 29 insertions(+), 15 deletions(-)

Approvals:
  John Vandenberg: Looks good to me, approved
  Xqt: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/pywikibot/i18n.py b/pywikibot/i18n.py
index 2fff519..77e57c6 100644
--- a/pywikibot/i18n.py
+++ b/pywikibot/i18n.py
@@ -365,6 +365,9 @@
     return message
 
 
+DEFAULT_FALLBACK = ('_default', )
+
+
 def translate(code, xdict, parameters=None, fallback=False):
     """Return the most appropriate translation from a translation dict.
 
@@ -375,8 +378,9 @@
 
     The language itself is always checked first, then languages that
     have been defined to be alternatives, and finally English. If none of
-    the options gives result, we just take the first language in the
-    list.
+    the options gives result, we just take the one language from xdict which 
may
+    not be always the same. When fallback is iterable it'll return None if no
+    code applies (instead of returning one).
 
     For PLURAL support have a look at the twntranslate method
 
@@ -389,9 +393,9 @@
     @type xdict: dict, string, unicode
     @param parameters: For passing (plural) parameters
     @type parameters: dict, string, unicode, int
-    @param fallback: Try an alternate language code
-    @type fallback: boolean
-
+    @param fallback: Try an alternate language code. If it's iterable it'll
+        also try those entries and choose the first match.
+    @type fallback: boolean or iterable
     """
     family = pywikibot.config.family
     # If a site is given instead of a code, use its language
@@ -407,20 +411,29 @@
             xdict = xdict['wikipedia']
 
     # Get the translated string
-    trans = None
     if not isinstance(xdict, dict):
         trans = xdict
-    elif code in xdict:
-        trans = xdict[code]
-    elif fallback:
-        for alt in _altlang(code) + ['_default', 'en']:
-            if alt in xdict:
-                trans = xdict[alt]
-                code = alt
+    elif not xdict:
+        trans = None
+    else:
+        codes = [code]
+        if fallback is True:
+            codes += _altlang(code) + ['_default', 'en']
+        elif fallback is not False:
+            codes += list(fallback)
+        for code in codes:
+            if code in xdict:
+                trans = xdict[code]
                 break
         else:
-            trans = list(xdict.values())[0]
+            if fallback is not True:
+                # this shouldn't simply return "any one" code but when fallback
+                # was True before 65518573d2b0, it did just that. When False it
+                # did just return None. It's now also returning None in the new
+                # iterable mode.
+                return
             code = list(xdict.keys())[0]
+            trans = xdict[code]
     if trans is None:
         return  # return None if we have no translation found
     if parameters is None:
diff --git a/scripts/welcome.py b/scripts/welcome.py
index 65d0e67..cefbf93 100755
--- a/scripts/welcome.py
+++ b/scripts/welcome.py
@@ -658,7 +658,8 @@
             showStatus()
             pywikibot.output(
                 'Log page is not exist, getting information for page creation')
-            text = i18n.translate(self.site, logpage_header)
+            text = i18n.translate(self.site, logpage_header,
+                                  fallback=i18n.DEFAULT_FALLBACK)
             text += u'\n!%s' % self.site.namespace(2)
             text += u'\n!%s' % str.capitalize(
                 self.site.mediawiki_message('contribslink'))

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I04694f179a3b58058d01c9b71a53862f97f91bf9
Gerrit-PatchSet: 3
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: John Vandenberg <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: XZise <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to