Merge pull request #705 from bmng-dev/l10n-fix

Fix l10n so getTranslationLanguage always returns a string
This commit is contained in:
Jonathan Warren 2014-08-08 16:58:30 -04:00
commit 2fea75d28f

View File

@ -8,24 +8,54 @@ import shared
#logger = logging.getLogger(__name__) #logger = logging.getLogger(__name__)
logger = logging.getLogger('file_only') logger = logging.getLogger('file_only')
DEFAULT_ENCODING = 'ISO8859-1'
DEFAULT_LANGUAGE = 'en_US'
DEFAULT_TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
encoding = DEFAULT_ENCODING
language = DEFAULT_LANGUAGE
try: try:
import locale import locale
encoding = locale.getpreferredencoding(False) encoding = locale.getpreferredencoding(False) or DEFAULT_ENCODING
language = locale.getlocale()[0] or locale.getdefaultlocale()[0] language = locale.getlocale()[0] or locale.getdefaultlocale()[0] or DEFAULT_LANGUAGE
except: except:
logger.exception('Could not determine language or encoding') logger.exception('Could not determine language or encoding')
if not encoding:
encoding = 'ISO8859-1'
language = 'en_US'
if shared.config.has_option('bitmessagesettings', 'timeformat'):
time_format = shared.config.get('bitmessagesettings', 'timeformat') time_format = shared.config.get('bitmessagesettings', 'timeformat')
#Test the format string
try:
time.strftime(time_format)
except:
time_format = DEFAULT_TIME_FORMAT
else:
time_format = DEFAULT_TIME_FORMAT
def formatTimestamp(timestamp = None, as_unicode = True): def formatTimestamp(timestamp = None, as_unicode = True):
if timestamp and isinstance(timestamp, (float, int)): #For some reason some timestamps are strings so we need to sanitize.
timestring = time.strftime(time_format, time.localtime(timestamp)) if timestamp is not None and not isinstance(timestamp, int):
else: try:
timestamp = int(timestamp)
except:
timestamp = None
#timestamp can't be less than 0.
if timestamp is not None and timestamp < 0:
timestamp = None
if timestamp is None:
timestring = time.strftime(time_format) timestring = time.strftime(time_format)
else:
#In case timestamp is too far in the future
try:
timestring = time.strftime(time_format, time.localtime(timestamp))
except ValueError:
timestring = time.strftime(time_format)
if as_unicode: if as_unicode:
return unicode(timestring, encoding) return unicode(timestring, encoding)
return timestring return timestring