diff -r 88b6b37eb7cf Lib/locale.py --- a/Lib/locale.py Thu Dec 19 22:32:40 2013 +0200 +++ b/Lib/locale.py Fri Dec 20 13:18:17 2013 +0200 @@ -1284,7 +1284,7 @@ 'korean': 'ko_KR.eucKR', 'korean.euc': 'ko_KR.eucKR', 'ks': 'ks_IN.UTF-8', - 'ks_in@devanagari': 'ks_IN@devanagari.UTF-8', + 'ks_in': 'ks_IN.UTF-8', 'kw': 'kw_GB.ISO8859-1', 'kw_gb': 'kw_GB.ISO8859-1', 'kw_gb.iso88591': 'kw_GB.ISO8859-1', @@ -1444,7 +1444,8 @@ 'rw': 'rw_RW.ISO8859-1', 'rw_rw': 'rw_RW.ISO8859-1', 'rw_rw.iso88591': 'rw_RW.ISO8859-1', - 'sd': 'sd_IN@devanagari.UTF-8', + 'sd': 'sd_IN.UTF-8', + 'sd_in': 'sd_IN.UTF-8', 'se_no': 'se_NO.UTF-8', 'serbocroatian': 'sr_RS.UTF-8@latin', 'sh': 'sr_RS.UTF-8@latin', diff -r 88b6b37eb7cf Lib/test/test_locale.py --- a/Lib/test/test_locale.py Thu Dec 19 22:32:40 2013 +0200 +++ b/Lib/test/test_locale.py Fri Dec 20 13:18:17 2013 +0200 @@ -422,6 +422,20 @@ 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): diff -r 88b6b37eb7cf Tools/i18n/makelocalealias.py --- a/Tools/i18n/makelocalealias.py Thu Dec 19 22:32:40 2013 +0200 +++ b/Tools/i18n/makelocalealias.py Fri Dec 20 13:18:17 2013 +0200 @@ -23,6 +23,9 @@ if line[:1] == '#': continue locale, alias = line.split() + if '.' in alias.partition('@')[2]: + # Ignore illegal entities which contain encoding after modifier + continue # Strip ':' if locale[-1] == ':': locale = locale[:-1]