]> granicus.if.org Git - python/commitdiff
Issue #20027: Fixed locale aliases for devanagari locales.
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 26 Dec 2013 19:20:59 +0000 (21:20 +0200)
committerSerhiy Storchaka <storchaka@gmail.com>
Thu, 26 Dec 2013 19:20:59 +0000 (21:20 +0200)
Lib/locale.py
Lib/test/test_locale.py
Misc/NEWS
Tools/i18n/makelocalealias.py

index f9bceaf559a00361502a6f44383dcf3da4040edf..7cfea618d77aa93193c0cae798e66a32cd481e33 100644 (file)
@@ -1320,7 +1320,7 @@ locale_alias = {
     'korean.euc':                           'ko_KR.eucKR',
     'ks':                                   'ks_IN.UTF-8',
     'ks_in':                                'ks_IN.UTF-8',
-    'ks_in@devanagari':                     'ks_IN@devanagari.UTF-8',
+    'ks_in@devanagari':                     'ks_IN.UTF-8@devanagari',
     'kw':                                   'kw_GB.ISO8859-1',
     'kw_gb':                                'kw_GB.ISO8859-1',
     'kw_gb.iso88591':                       'kw_GB.ISO8859-1',
@@ -1485,8 +1485,9 @@ locale_alias = {
     'rw_rw':                                'rw_RW.ISO8859-1',
     'rw_rw.iso88591':                       'rw_RW.ISO8859-1',
     'sd':                                   'sd_IN.UTF-8',
-    'sd@devanagari':                        'sd_IN@devanagari.UTF-8',
-    'sd_in@devanagari':                     'sd_IN@devanagari.UTF-8',
+    'sd@devanagari':                        'sd_IN.UTF-8@devanagari',
+    'sd_in':                                'sd_IN.UTF-8',
+    'sd_in@devanagari':                     'sd_IN.UTF-8@devanagari',
     'se_no':                                'se_NO.UTF-8',
     'serbocroatian':                        'sr_RS.UTF-8@latin',
     'sh':                                   'sr_RS.UTF-8@latin',
index 45c0149f3b1d22eab327a03d699defa32672fe5d..76347b7746d3f0a42d482697017f089dd55cf207 100644 (file)
@@ -421,6 +421,20 @@ class NormalizeTest(unittest.TestCase):
         self.check('ca_ES@valencia', 'ca_ES.ISO8859-1@valencia')
         self.check('ca@valencia', 'ca_ES.ISO8859-1@valencia')
 
+    def test_devanagari_modifier(self):
+        self.check('ks_IN.UTF-8@devanagari', 'ks_IN.UTF-8@devanagari')
+        self.check('ks_IN@devanagari', 'ks_IN.UTF-8@devanagari')
+        self.check('ks@devanagari', 'ks_IN.UTF-8@devanagari')
+        self.check('ks_IN.UTF-8', 'ks_IN.UTF-8')
+        self.check('ks_IN', 'ks_IN.UTF-8')
+        self.check('ks', 'ks_IN.UTF-8')
+        self.check('sd_IN.UTF-8@devanagari', 'sd_IN.UTF-8@devanagari')
+        self.check('sd_IN@devanagari', 'sd_IN.UTF-8@devanagari')
+        self.check('sd@devanagari', 'sd_IN.UTF-8@devanagari')
+        self.check('sd_IN.UTF-8', 'sd_IN.UTF-8')
+        self.check('sd_IN', 'sd_IN.UTF-8')
+        self.check('sd', 'sd_IN.UTF-8')
+
 
 class TestMiscellaneous(unittest.TestCase):
     def test_getpreferredencoding(self):
index c6f58334ba09a375fa6531681e55c64ae4fc4229..85b53543ab13374d0425ee3cdbe57cd8dbf65c9d 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -29,6 +29,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #20027: Fixed locale aliases for devanagari locales.
+
 - Issue #20067: Tkinter variables now work when wantobjects is false.
 
 - Issue #19020: Tkinter now uses splitlist() instead of split() in configure
index 3445ec8020ac38c0fc5ba4c0ff8d55a474d30976..8b92ae1fc36ca240be0f7407b07e936b72f03fde 100644 (file)
@@ -23,6 +23,12 @@ def parse(filename):
         if line[:1] == '#':
             continue
         locale, alias = line.split()
+        # Fix non-standard locale names, e.g. ks_IN@devanagari.UTF-8
+        if '@' in alias:
+            alias_lang, _, alias_mod = alias.partition('@')
+            if '.' in alias_mod:
+                alias_mod, _, alias_enc = alias_mod.partition('.')
+                alias = alias_lang + '.' + alias_enc + '@' + alias_mod
         # Strip ':'
         if locale[-1] == ':':
             locale = locale[:-1]