summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAarni Koskela <akx@iki.fi>2019-05-27 11:01:38 +0300
committerAarni Koskela <akx@iki.fi>2019-05-27 11:14:23 +0300
commit4fa0c6e5a2d3ae4c10ca160dabe4e3d169dace81 (patch)
tree82d3bd6c024ff71c4b4aecbcb2c116e4c5b87c55
parentbd2c44b71cf8d22235df4f187c814b3e0e490683 (diff)
downloadbabel-4fa0c6e5a2d3ae4c10ca160dabe4e3d169dace81.tar.gz
get_display_name(): Don't attempt to concatenate variant information to None
Fixes #601
-rw-r--r--babel/core.py2
-rw-r--r--tests/test_core.py10
2 files changed, 11 insertions, 1 deletions
diff --git a/babel/core.py b/babel/core.py
index d028c07..211849b 100644
--- a/babel/core.py
+++ b/babel/core.py
@@ -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))
diff --git a/tests/test_core.py b/tests/test_core.py
index f22ab30..fc637d2 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -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