diff --git a/src/calibre/utils/date.py b/src/calibre/utils/date.py index c321cb740b..aac2a271a0 100644 --- a/src/calibre/utils/date.py +++ b/src/calibre/utils/date.py @@ -13,7 +13,7 @@ from functools import partial from dateutil.tz import tzlocal, tzutc, EPOCHORDINAL from calibre import strftime -from calibre.constants import iswindows +from calibre.constants import iswindows, isosx, plugins from calibre.utils.localization import lcdata class SafeLocalTimeZone(tzlocal): @@ -68,6 +68,12 @@ if iswindows: except: parse_date_day_first = False del ctypes, LOCALE_SSHORTDATE, buf, LOCALE_USER_DEFAULT +elif isosx: + try: + date_fmt = plugins['usbobserver'][0].date_format() + parse_date_day_first = date_fmt.index(u'd') < date_fmt.index(u'M') + except: + parse_date_day_first = False else: try: def first_index(raw, queries): diff --git a/src/calibre/utils/localization.py b/src/calibre/utils/localization.py index 3b56eb10de..86de49c03f 100644 --- a/src/calibre/utils/localization.py +++ b/src/calibre/utils/localization.py @@ -23,7 +23,7 @@ def available_translations(): return _available_translations def get_system_locale(): - from calibre.constants import iswindows + from calibre.constants import iswindows, isosx, plugins lang = None if iswindows: try: @@ -34,6 +34,13 @@ def get_system_locale(): lang = None except: pass # Windows XP does not have the GetUserDefaultLocaleName fn + elif isosx: + try: + lang = plugins['usbobserver'][0].user_locale() or None + except: + # Fallback to environment vars if something bad happened + import traceback + traceback.print_exc() if lang is None: try: lang = locale.getdefaultlocale(['LANGUAGE', 'LC_ALL', 'LC_CTYPE',