MacLocale: Capture collation qualifications

svn: r21963
This commit is contained in:
John Ralls 2013-04-12 22:27:15 +00:00
parent 2c532baf1c
commit 6f078627ca
2 changed files with 21 additions and 10 deletions

View File

@ -467,6 +467,9 @@ class GrampsLocale(object):
else:
self.language = None
#For alternate collation sequences. Works only with ICU, and
#set only on Macs.
self.coll_qualifier = None
_first = self._GrampsLocale__first_instance
if self == _first:
self._GrampsLocale__init_first_instance()

View File

@ -131,7 +131,7 @@ def mac_setup_localization(glocale):
calendar = ""
currency = ""
default_locale = _mac_get_gramps_defaults("AppleLocale")
if not locale:
if not default_locale:
return (locale, calendar, currency)
div = default_locale.strip().split(b"@")
@ -154,11 +154,18 @@ def mac_setup_localization(glocale):
"""
Extract the collation (sort order) locale from the defaults string.
"""
collation = _mac_get_gramps_defaults("AppleCollationOrder")
collation = collation.strip()
if collation.startswith("root"):
return None
return collation
apple_collation = _mac_get_gramps_defaults("AppleCollationOrder")
apple_collation = apple_collation.strip()
if apple_collation.startswith("root"):
return (None, None)
div = apple_collation.split(b"@")
collation = div[0]
qualifier = None
if len(div) > 1:
parts = div.split(b"=")
if len(parts) == 2 and parts[0] == 'collation':
qualifier = parts[1]
return (collation, qualifier)
def mac_resolve_locale(loc):
"""
@ -202,7 +209,7 @@ def mac_setup_localization(glocale):
if "LC_COLLATE" in os.environ:
collation = os.environ["LC_COLLATE"]
else:
collation = mac_get_collation()
(collation, coll_qualifier) = mac_get_collation()
if not (hasattr(glocale, 'lang') and glocale.lang):
if "LANG" in os.environ:
@ -253,7 +260,7 @@ def mac_setup_localization(glocale):
elif "LC_MONETARY" in os.environ:
glocale.currency = os.environ[LC_MONETARY]
else:
glocale.currency = glocale.lang
glocale.currency = glocale.lang[:5]
if (calendar and "LC_TIME" not in os.environ
and "LANG" not in os.environ):
@ -262,15 +269,16 @@ def mac_setup_localization(glocale):
elif "LC_TIME" in os.environ:
glocale.calendar = os.environ["LC_TIME"]
else:
glocale.calendar = glocale.lang
glocale.calendar = glocale.lang[:5]
if (collation and "LC_COLLATION" not in os.environ
and "LANG" not in os.environ):
glocale.collation = collation
glocale.coll_qualifier = qualifier
os.environ["LC_COLLATION"] = calendar
elif "LC_COLLATION" in os.environ:
glocale.collation = os.environ["LC_COLLATION"]
else:
glocale.collation = glocale.lang
glocale.collation = glocale.lang[:5]