[damned-lies] Fix language_from_ianacode method (#664197)
- From: Claude Paroz <claudep src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [damned-lies] Fix language_from_ianacode method (#664197)
- Date: Wed, 16 Nov 2011 14:41:16 +0000 (UTC)
commit 95b0c60f20e39013103c5c9261214530afd10239
Author: Claude Paroz <claude 2xlibre net>
Date: Wed Nov 16 15:40:46 2011 +0100
Fix language_from_ianacode method (#664197)
languages/models.py | 4 +++-
languages/tests/__init__.py | 14 ++++++++++++++
2 files changed, 17 insertions(+), 1 deletions(-)
---
diff --git a/languages/models.py b/languages/models.py
index 1096802..c57fa93 100644
--- a/languages/models.py
+++ b/languages/models.py
@@ -1,4 +1,5 @@
from django.db import models
+from django.db.models import Q
from django.utils.translation import ugettext as _
from teams.models import Team, FakeTeam
@@ -20,9 +21,10 @@ class Language(models.Model):
""" Return a matching Language object corresponding to LANGUAGE_CODE (BCP47-formatted)
This is a sort of BCP47 to ISO639 conversion function """
iana_splitted = ianacode.split("-", 1)
+ lang_code = iana_splitted[0]
iana_suffix = len(iana_splitted) > 1 and iana_splitted[1] or ""
iana_suffix = iana_suffix.replace('Latn','latin').replace('Cyrl','cyrillic')
- lang_list = cls.objects.filter(locale__startswith=iana_splitted[0])
+ lang_list = cls.objects.filter(Q(locale=lang_code) | Q(locale__regex=r'^%s[ _] +' % lang_code))
if len(lang_list) == 0:
return None
elif len(lang_list) > 1:
diff --git a/languages/tests/__init__.py b/languages/tests/__init__.py
index 3b82d14..14aca91 100644
--- a/languages/tests/__init__.py
+++ b/languages/tests/__init__.py
@@ -21,9 +21,23 @@
from django.core.urlresolvers import reverse
from django.test import TestCase
+from languages.models import Language
+
class LanguageTestCase(TestCase):
fixtures = ['sample_data.json']
def testLanguageReleaseXML(self):
response = self.client.get(reverse("languages.views.language_release_xml", args=['fr', 'gnome-2-30']))
self.assertContains(response, """<stats language="fr" release="gnome-2-30">""")
+
+ def test_language_from_ianacode(self):
+ Language.objects.create(name='Belarussian', locale='be')
+ Language.objects.create(name='French (Belgium)', locale='fr_BE')
+ Language.objects.create(name='Chinese (Taiwan)', locale='zh_TW')
+
+ self.assertEqual(Language.get_language_from_ianacode('fr-ch').locale, 'fr')
+ self.assertEqual(Language.get_language_from_ianacode('fr-be').locale, 'fr_BE')
+ self.assertEqual(Language.get_language_from_ianacode('be').locale, 'be')
+ self.assertEqual(Language.get_language_from_ianacode('be-latin-RU').locale, 'be')
+ self.assertEqual(Language.get_language_from_ianacode('zh-tw').locale, 'zh_TW')
+ self.assertEqual(Language.get_language_from_ianacode('xx'), None)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]