]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
get_display_name(): Don't attempt to concatenate variant information to None
authorAarni Koskela <akx@iki.fi>
Mon, 27 May 2019 08:01:38 +0000 (11:01 +0300)
committerAarni Koskela <akx@iki.fi>
Mon, 27 May 2019 08:14:23 +0000 (11:14 +0300)
Fixes #601

babel/core.py
tests/test_core.py

index d028c07da6aa4b689d47bfdcc92a9ced5d1f09d6..211849bce6212ed88312e78b2977a7a544f9dc4e 100644 (file)
@@ -379,7 +379,7 @@ class Locale(object):
             locale = self
         locale = Locale.parse(locale)
         retval = locale.languages.get(self.language)
-        if self.territory or self.script or self.variant:
+        if retval and (self.territory or self.script or self.variant):
             details = []
             if self.script:
                 details.append(locale.scripts.get(self.script))
index f22ab309bb1e6650c58b2bcc48616cc17f8e8286..fc637d2454cd073cba42ef79ae422e92b849f895 100644 (file)
@@ -317,3 +317,13 @@ def test_compatible_classes_in_global_and_localedata(filename):
 
     with open(filename, 'rb') as f:
         return Unpickler(f).load()
+
+
+def test_issue_601_no_language_name_but_has_variant():
+    # kw_GB has a variant for Finnish but no actual language name for Finnish,
+    # so `get_display_name()` previously crashed with a TypeError as it attempted
+    # to concatenate " (Finnish)" to None.
+    # Instead, it's better to return None altogether, as we can't reliably format
+    # part of a language name.
+
+    assert Locale.parse('fi_FI').get_display_name('kw_GB') == None