Merge pull request #705 from bmng-dev/l10n-fix
Fix l10n so getTranslationLanguage always returns a string
This commit is contained in:
commit
2fea75d28f
46
src/l10n.py
46
src/l10n.py
|
@ -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
|
||||||
|
|
Reference in New Issue
Block a user