mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-02-21 01:03:08 -05:00
a few bugfixes in date representations. Fix for #14
This commit is contained in:
parent
375cdd2528
commit
73be8400b0
@ -1,105 +0,0 @@
|
|||||||
# Copyright (c) 2006, 2007, 2010 Alexander Belchenko
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
# THE SOFTWARE.
|
|
||||||
|
|
||||||
"""Helper for standard gettext.py on Windows.
|
|
||||||
|
|
||||||
Module obtains user language code on Windows to use with standard
|
|
||||||
Python gettext.py library.
|
|
||||||
|
|
||||||
The module provides 2 functions: setup_env and get_language.
|
|
||||||
|
|
||||||
You may use setup_env before initializing gettext functions.
|
|
||||||
|
|
||||||
Or you can use get_language to get the list of language codes suitable
|
|
||||||
to pass them to gettext.find or gettext.translation function.
|
|
||||||
|
|
||||||
Usage example #1:
|
|
||||||
|
|
||||||
import gettext, gettext_windows
|
|
||||||
gettext_windows.setup_env()
|
|
||||||
gettext.install('myapp')
|
|
||||||
|
|
||||||
Usage example #2:
|
|
||||||
|
|
||||||
import gettext, gettext_windows
|
|
||||||
lang = gettext_windows.get_language()
|
|
||||||
translation = gettext.translation('myapp', languages=lang)
|
|
||||||
_ = translation.gettext
|
|
||||||
"""
|
|
||||||
|
|
||||||
import locale
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
OS_WINDOWS = (sys.platform == 'win32')
|
|
||||||
|
|
||||||
|
|
||||||
def setup_env_windows(system_lang=True):
|
|
||||||
"""Check environment variables used by gettext
|
|
||||||
and setup LANG if there is none.
|
|
||||||
"""
|
|
||||||
if _get_lang_env_var() is not None:
|
|
||||||
return
|
|
||||||
lang = get_language_windows(system_lang)
|
|
||||||
if lang:
|
|
||||||
os.environ['LANGUAGE'] = ':'.join(lang)
|
|
||||||
|
|
||||||
def get_language_windows(system_lang=True):
|
|
||||||
"""Get language code based on current Windows settings.
|
|
||||||
@return: list of languages.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
import ctypes
|
|
||||||
except ImportError:
|
|
||||||
return [locale.getdefaultlocale()[0]]
|
|
||||||
# get all locales using windows API
|
|
||||||
lcid_user = ctypes.windll.kernel32.GetUserDefaultLCID()
|
|
||||||
lcid_system = ctypes.windll.kernel32.GetSystemDefaultLCID()
|
|
||||||
if system_lang and lcid_user != lcid_system:
|
|
||||||
lcids = [lcid_user, lcid_system]
|
|
||||||
else:
|
|
||||||
lcids = [lcid_user]
|
|
||||||
return filter(None, [locale.windows_locale.get(i) for i in lcids]) or None
|
|
||||||
|
|
||||||
|
|
||||||
def setup_env_other(system_lang=True):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def get_language_other(system_lang=True):
|
|
||||||
lang = _get_lang_env_var()
|
|
||||||
if lang is not None:
|
|
||||||
return lang.split(':')
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def _get_lang_env_var():
|
|
||||||
for i in ('LANGUAGE','LC_ALL','LC_MESSAGES','LANG'):
|
|
||||||
lang = os.environ.get(i)
|
|
||||||
if lang:
|
|
||||||
return lang
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
if OS_WINDOWS:
|
|
||||||
setup_env = setup_env_windows
|
|
||||||
get_language = get_language_windows
|
|
||||||
else:
|
|
||||||
setup_env = setup_env_other
|
|
||||||
get_language = get_language_other
|
|
@ -18,6 +18,8 @@
|
|||||||
############################################################
|
############################################################
|
||||||
import wx
|
import wx
|
||||||
import gui.dialogs
|
import gui.dialogs
|
||||||
|
import arrow
|
||||||
|
import languageHandler
|
||||||
import twitter
|
import twitter
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import config
|
import config
|
||||||
@ -28,7 +30,6 @@ import output
|
|||||||
import platform
|
import platform
|
||||||
import datetime
|
import datetime
|
||||||
import menus
|
import menus
|
||||||
from twitter import prettydate
|
|
||||||
from multiplatform_widgets import widgets
|
from multiplatform_widgets import widgets
|
||||||
from mysc import event
|
from mysc import event
|
||||||
from mysc.thread_utils import call_threaded
|
from mysc.thread_utils import call_threaded
|
||||||
@ -150,9 +151,12 @@ class basePanel(wx.Panel):
|
|||||||
if config.main["general"]["relative_times"] == True:
|
if config.main["general"]["relative_times"] == True:
|
||||||
# On windows we need only put the new date on the column, but under linux and mac it isn't possible.
|
# On windows we need only put the new date on the column, but under linux and mac it isn't possible.
|
||||||
if self.system == "Windows":
|
if self.system == "Windows":
|
||||||
original_date = datetime.datetime.strptime(self.db.settings[self.name_buffer][self.list.get_selected()]["created_at"], "%a %b %d %H:%M:%S +0000 %Y")
|
# self.db.settings[self.name_buffer][self.list.get_selected()]["created_at"] = tweet["created_at"].replace("+0000 ", "")
|
||||||
date = original_date-datetime.timedelta(seconds=-self.db.settings["utc_offset"])
|
original_date = arrow.get(self.db.settings[self.name_buffer][self.list.get_selected()]["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
|
||||||
ts = prettydate(original_date)
|
# original_date = datetime.datetime.strptime(self.db.settings[self.name_buffer][self.list.get_selected()]["created_at"], "%a %b %d %H:%M:%S +0000 %Y")
|
||||||
|
# date = original_date-datetime.timedelta(seconds=-self.db.settings["utc_offset"])
|
||||||
|
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
||||||
|
# prettydate(original_date)
|
||||||
self.list.list.SetStringItem(self.list.get_selected(), 2, ts)
|
self.list.list.SetStringItem(self.list.get_selected(), 2, ts)
|
||||||
else:
|
else:
|
||||||
self.list.list.SetString(self.list.get_selected(), " ".join(self.compose_function(self.db.settings[self.name_buffer][self.list.get_selected()], self.db)))
|
self.list.list.SetString(self.list.get_selected(), " ".join(self.compose_function(self.db.settings[self.name_buffer][self.list.get_selected()], self.db)))
|
||||||
|
@ -350,7 +350,7 @@ class mainFrame(wx.Frame):
|
|||||||
if i == self.nb.GetPageCount() and deleted > 0:
|
if i == self.nb.GetPageCount() and deleted > 0:
|
||||||
i = i-1
|
i = i-1
|
||||||
deleted = deleted-1
|
deleted = deleted-1
|
||||||
log.debug("Starting stream for %s..." % self.nb.GetPage(i).name_buffer)
|
# log.debug(u"Starting stream for %s..." % self.nb.GetPage(i).name_buffer)
|
||||||
info_event = event.infoEvent(event.EVT_STARTED, 1)
|
info_event = event.infoEvent(event.EVT_STARTED, 1)
|
||||||
try:
|
try:
|
||||||
if self.nb.GetPage(i).type == "search":
|
if self.nb.GetPage(i).type == "search":
|
||||||
|
@ -126,23 +126,27 @@ def setLanguage(lang):
|
|||||||
elif system == "Darwin":
|
elif system == "Darwin":
|
||||||
import Foundation
|
import Foundation
|
||||||
localeName = Foundation.NSLocale.currentLocale().identifier()
|
localeName = Foundation.NSLocale.currentLocale().identifier()
|
||||||
# trans=gettext.translation('twblue', localedir=paths.locale_path(), languages=[localeName])
|
|
||||||
# curLang=localeName
|
|
||||||
else:
|
|
||||||
localeName=locale.getdefaultlocale()[0]
|
|
||||||
trans=gettext.translation('twblue', localedir=paths.locale_path(), languages=[localeName])
|
trans=gettext.translation('twblue', localedir=paths.locale_path(), languages=[localeName])
|
||||||
curLang=localeName
|
curLang=localeName
|
||||||
|
# else:
|
||||||
|
# localeName=locale.getdefaultlocale()[0]
|
||||||
|
# trans=gettext.translation('twblue', localedir=paths.locale_path(), languages=[localeName])
|
||||||
|
# curLang=localeName
|
||||||
|
|
||||||
else:
|
else:
|
||||||
trans=gettext.translation("twblue", localedir=paths.locale_path(), languages=[lang])
|
trans=gettext.translation("twblue", localedir=paths.locale_path(), languages=[lang])
|
||||||
curLang=lang
|
curLang=lang
|
||||||
localeChanged=False
|
localeChanged=False
|
||||||
#Try setting Python's locale to lang
|
#Try setting Python's locale to lang
|
||||||
try:
|
# try:
|
||||||
|
if system == "Windows":
|
||||||
|
locale.setlocale(locale.LC_ALL, langToWindowsLocale(lang))
|
||||||
|
localeChanged=True
|
||||||
|
else:
|
||||||
locale.setlocale(locale.LC_ALL, lang)
|
locale.setlocale(locale.LC_ALL, lang)
|
||||||
localeChanged=True
|
localeChanged=True
|
||||||
except:
|
# except:
|
||||||
pass
|
# pass
|
||||||
if not localeChanged and '_' in lang:
|
if not localeChanged and '_' in lang:
|
||||||
#Python couldn'tsupport the language_country locale, just try language.
|
#Python couldn'tsupport the language_country locale, just try language.
|
||||||
try:
|
try:
|
||||||
@ -158,7 +162,7 @@ def setLanguage(lang):
|
|||||||
curLang="en"
|
curLang="en"
|
||||||
trans.install(unicode=True)
|
trans.install(unicode=True)
|
||||||
# Install our pgettext function.
|
# Install our pgettext function.
|
||||||
__builtin__.__dict__["pgettext"] = makePgettext(trans)
|
# __builtin__.__dict__["pgettext"] = makePgettext(trans)
|
||||||
|
|
||||||
def getLanguage():
|
def getLanguage():
|
||||||
return curLang
|
return curLang
|
||||||
@ -178,3 +182,20 @@ def normalizeLanguage(lang):
|
|||||||
ld[1]=ld[1].upper()
|
ld[1]=ld[1].upper()
|
||||||
return "_".join(ld)
|
return "_".join(ld)
|
||||||
|
|
||||||
|
def langToWindowsLocale(lang):
|
||||||
|
languages = {"en": "eng",
|
||||||
|
"ar": "ara",
|
||||||
|
"ca": "cat",
|
||||||
|
"es": "esp",
|
||||||
|
"fi": "fin",
|
||||||
|
"fr": "fre_FRA",
|
||||||
|
"gl": "glc",
|
||||||
|
"eu": "euq",
|
||||||
|
"hu": "hun",
|
||||||
|
"it": "ita",
|
||||||
|
"pl": "plk",
|
||||||
|
"pt": "ptb",
|
||||||
|
"ru": "rus",
|
||||||
|
"tr": "trk"
|
||||||
|
}
|
||||||
|
return languages[lang]
|
Binary file not shown.
@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: TW Blue 0.44\n"
|
"Project-Id-Version: TW Blue 0.44\n"
|
||||||
"POT-Creation-Date: 2014-12-10 23:20+Hora estándar central (México)\n"
|
"POT-Creation-Date: 2014-12-10 23:20+Hora estándar central (México)\n"
|
||||||
"PO-Revision-Date: 2014-12-10 23:36-0600\n"
|
"PO-Revision-Date: 2014-12-21 07:01-0600\n"
|
||||||
"Last-Translator: Manuel Cortéz <manuel@manuelcortez.net>\n"
|
"Last-Translator: Manuel Cortéz <manuel@manuelcortez.net>\n"
|
||||||
"Language-Team: Manuel Cortez <info@twblue.com.mx>\n"
|
"Language-Team: Manuel Cortez <info@twblue.com.mx>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
@ -2655,7 +2655,7 @@ msgstr "feb"
|
|||||||
|
|
||||||
#: ../src\twitter\compose.py:87
|
#: ../src\twitter\compose.py:87
|
||||||
msgid "mar"
|
msgid "mar"
|
||||||
msgstr "marAmárico"
|
msgstr "mar"
|
||||||
|
|
||||||
#: ../src\twitter\compose.py:88
|
#: ../src\twitter\compose.py:88
|
||||||
msgid "apr"
|
msgid "apr"
|
||||||
@ -2663,7 +2663,7 @@ msgstr "abr"
|
|||||||
|
|
||||||
#: ../src\twitter\compose.py:89
|
#: ../src\twitter\compose.py:89
|
||||||
msgid "may"
|
msgid "may"
|
||||||
msgstr "mayMayo"
|
msgstr "may"
|
||||||
|
|
||||||
#: ../src\twitter\compose.py:90
|
#: ../src\twitter\compose.py:90
|
||||||
msgid "jun"
|
msgid "jun"
|
||||||
|
BIN
src/locales/es/LC_MESSAGES/wxstd.mo
Normal file
BIN
src/locales/es/LC_MESSAGES/wxstd.mo
Normal file
Binary file not shown.
35
src/main.py
35
src/main.py
@ -22,20 +22,21 @@ A twitter accessible, easy of use and cross platform application."""
|
|||||||
import sys
|
import sys
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
#redirect the original stdout and stderr
|
#redirect the original stdout and stderr
|
||||||
stdout=sys.stdout
|
#stdout=sys.stdout
|
||||||
stderr=sys.stderr
|
#stderr=sys.stderr
|
||||||
# Set a StringIO object as stdout and stderr to avoid problems using the installed version.
|
# Set a StringIO object as stdout and stderr to avoid problems using the installed version.
|
||||||
sys.stdout = StringIO()
|
#sys.stdout = StringIO()
|
||||||
sys.stderr = StringIO()
|
#sys.stderr = StringIO()
|
||||||
import wx
|
import wx
|
||||||
import os
|
import os
|
||||||
ssmg = None
|
ssmg = None
|
||||||
import gui
|
import gui
|
||||||
|
import wxLangs
|
||||||
import paths
|
import paths
|
||||||
import config
|
import config
|
||||||
import commandline
|
import commandline
|
||||||
import platform
|
import platform
|
||||||
from logger import logger as logging
|
#from logger import logger as logging
|
||||||
from sessionmanager import manager
|
from sessionmanager import manager
|
||||||
from sessionmanager import gui as smGUI
|
from sessionmanager import gui as smGUI
|
||||||
manager.setup()
|
manager.setup()
|
||||||
@ -44,15 +45,15 @@ import output
|
|||||||
import sound
|
import sound
|
||||||
import languageHandler
|
import languageHandler
|
||||||
#close the memory buffers for stdout and stderr
|
#close the memory buffers for stdout and stderr
|
||||||
sys.stdout.close()
|
#sys.stdout.close()
|
||||||
sys.stderr.close()
|
#sys.stderr.close()
|
||||||
#if it's a binary version
|
#if it's a binary version
|
||||||
if hasattr(sys, 'frozen'):
|
#if hasattr(sys, 'frozen'):
|
||||||
sys.stderr = open(paths.logs_path("stderr.log"), 'w')
|
# sys.stderr = open(paths.logs_path("stderr.log"), 'w')
|
||||||
sys.stdout = open(paths.logs_path("stdout.log"), 'w')
|
# sys.stdout = open(paths.logs_path("stdout.log"), 'w')
|
||||||
else:
|
#else:
|
||||||
sys.stdout=stdout
|
# sys.stdout=stdout
|
||||||
sys.stderr=stderr
|
# sys.stderr=stderr
|
||||||
|
|
||||||
app = wx.App()
|
app = wx.App()
|
||||||
#app = wx.App(redirect=True, useBestVisual=True, filename=paths.logs_path('tracebacks.log'))
|
#app = wx.App(redirect=True, useBestVisual=True, filename=paths.logs_path('tracebacks.log'))
|
||||||
@ -83,9 +84,11 @@ else:
|
|||||||
app.Exit()
|
app.Exit()
|
||||||
### I should uncomment this
|
### I should uncomment this
|
||||||
#if platform.system() != "Windows":
|
#if platform.system() != "Windows":
|
||||||
# local = wx.Locale(wx.LANGUAGE_DEFAULT)
|
if languageHandler.getLanguage() != "en":
|
||||||
# local.AddCatalogLookupPathPrefix(paths.locale_path())
|
local = wx.Locale(wxLangs.getLanguage())
|
||||||
# local.AddCatalog("twblue")
|
local.AddCatalogLookupPathPrefix(paths.locale_path())
|
||||||
|
local.AddCatalog("twblue")
|
||||||
|
#languageHandler.setLanguage(lang)
|
||||||
#ap = app(redirect=True, useBestVisual=True, filename=paths.logs_path('tracebacks.log'))
|
#ap = app(redirect=True, useBestVisual=True, filename=paths.logs_path('tracebacks.log'))
|
||||||
#wx.CallLater(10, start)
|
#wx.CallLater(10, start)
|
||||||
app.MainLoop()
|
app.MainLoop()
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
import gettext_windows, os
|
import os
|
||||||
|
import languageHandler
|
||||||
|
|
||||||
def get(rootFolder):
|
def get(rootFolder):
|
||||||
defaultLocale = gettext_windows.get_language()[0][:2]
|
# defaultLocale = gettext_windows.get_language()[0][:2]
|
||||||
|
defaultLocale = languageHandler.curLang
|
||||||
|
if len(defaultLocale) > 2:
|
||||||
|
defaultLocale = defaultLocale[:2]
|
||||||
|
print defaultLocale
|
||||||
if os.path.exists(rootFolder+"/"+defaultLocale):
|
if os.path.exists(rootFolder+"/"+defaultLocale):
|
||||||
return defaultLocale
|
return defaultLocale
|
||||||
else:
|
else:
|
||||||
|
@ -1,2 +1 @@
|
|||||||
import buffers, utils, compose, starting, twitter
|
import utils, buffers, starting, twitter
|
||||||
from compose import prettydate
|
|
@ -1,5 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from twitter import compose, utils
|
from twitter.compose import compose_event
|
||||||
|
from twitter import utils
|
||||||
from twython import TwythonStreamer
|
from twython import TwythonStreamer
|
||||||
import sound
|
import sound
|
||||||
from mysc import event
|
from mysc import event
|
||||||
@ -157,7 +158,7 @@ class streamer(TwythonStreamer):
|
|||||||
if list != None: self.db.settings["lists"].pop(list)
|
if list != None: self.db.settings["lists"].pop(list)
|
||||||
self.parent.remove_list(data["target_object"]["id"])
|
self.parent.remove_list(data["target_object"]["id"])
|
||||||
if config.main["other_buffers"]["show_events"] == True:
|
if config.main["other_buffers"]["show_events"] == True:
|
||||||
evento = compose.compose_event(data, self.db.settings["user_name"])
|
evento = compose_event(data, self.db.settings["user_name"])
|
||||||
tweet_event = event.event(event.EVT_OBJECT, 1)
|
tweet_event = event.event(event.EVT_OBJECT, 1)
|
||||||
tweet_event.SetItem(evento)
|
tweet_event.SetItem(evento)
|
||||||
text = evento[1]
|
text = evento[1]
|
||||||
|
@ -2,100 +2,17 @@
|
|||||||
import utils
|
import utils
|
||||||
import re
|
import re
|
||||||
import htmlentitydefs
|
import htmlentitydefs
|
||||||
import datetime
|
|
||||||
import time
|
|
||||||
import output
|
import output
|
||||||
import gettext, paths, locale, gettext_windows
|
import paths
|
||||||
import config, languageHandler
|
import config, languageHandler, locale
|
||||||
if config.main != None:
|
if config.main == None:
|
||||||
languageHandler.setLanguage(config.main["general"]["language"])
|
|
||||||
else:
|
|
||||||
languageHandler.setLanguage("system")
|
languageHandler.setLanguage("system")
|
||||||
import platform
|
import platform
|
||||||
system = platform.system()
|
system = platform.system()
|
||||||
import logging as original_logger
|
import logging as original_logger
|
||||||
log = original_logger.getLogger("events")
|
log = original_logger.getLogger("events")
|
||||||
|
import time
|
||||||
def prettydate(d):
|
import arrow
|
||||||
""" Converts a string to the relative time."""
|
|
||||||
diff = datetime.datetime.utcnow() - d
|
|
||||||
s = diff.seconds
|
|
||||||
if diff.days > 7 and diff.days < 14:
|
|
||||||
return _(u"About a week ago")
|
|
||||||
elif diff.days > 14 and diff.days < 31:
|
|
||||||
return _(u"About {} weeks ago").format(diff.days/7)
|
|
||||||
elif diff.days > 31 and diff.days <= 62:
|
|
||||||
return _(u"A month ago")
|
|
||||||
elif diff.days >62 and diff.days <= 365:
|
|
||||||
return _(u"About {} months ago").format(diff.days/30)
|
|
||||||
elif diff.days > 365 and diff.days <= 730:
|
|
||||||
return _(u"About a year ago")
|
|
||||||
elif diff.days > 730:
|
|
||||||
return _(u"About {} years ago").format(diff.days/365)
|
|
||||||
elif diff.days == 1:
|
|
||||||
return _(u"About 1 day ago")
|
|
||||||
elif diff.days > 1:
|
|
||||||
return _(u"About {} days ago").format(diff.days)
|
|
||||||
elif s <= 1:
|
|
||||||
return _(u"just now")
|
|
||||||
elif s < 60:
|
|
||||||
return _(u"{} seconds ago").format(s)
|
|
||||||
elif s < 120:
|
|
||||||
return _(u"1 minute ago")
|
|
||||||
elif s < 3600:
|
|
||||||
return _(u"{} minutes ago").format(s/60)
|
|
||||||
elif s < 7200:
|
|
||||||
return _(u"About 1 hour ago")
|
|
||||||
else:
|
|
||||||
return _(u"About {} hours ago").format(s/3600)
|
|
||||||
|
|
||||||
# Months, days, short_months and short_days are used to translate the string that Twitter gives to us with the date and time.
|
|
||||||
months = {
|
|
||||||
"January": _(u"January"),
|
|
||||||
"February": _(u"February"),
|
|
||||||
"March": _(u"March"),
|
|
||||||
"April": _(u"April"),
|
|
||||||
"May": _(u"May"),
|
|
||||||
"June": _(u"June"),
|
|
||||||
"July": _(u"July"),
|
|
||||||
"August": _(u"August"),
|
|
||||||
"September": _(u"September"),
|
|
||||||
"October": _(u"October"),
|
|
||||||
"November": _(u"November"),
|
|
||||||
"December": _(u"December"),
|
|
||||||
}
|
|
||||||
|
|
||||||
days = {"Sunday": _(u"Sunday"),
|
|
||||||
"Monday": _(u"Monday"),
|
|
||||||
"Tuesday": _(u"Tuesday"),
|
|
||||||
"Wednesday": _(u"Wednesday"),
|
|
||||||
"Thursday": _(u"Thursday"),
|
|
||||||
"Friday": _(u"Friday"),
|
|
||||||
"Saturday": _(u"Saturday")}
|
|
||||||
|
|
||||||
short_days = {
|
|
||||||
"Sun": _(u"sun"),
|
|
||||||
"Mon": _(u"mon"),
|
|
||||||
"Tue": _(u"tue"),
|
|
||||||
"Wed": _(u"wed"),
|
|
||||||
"Thu": _(u"thu"),
|
|
||||||
"Fri": _(u"fri"),
|
|
||||||
"Sat": _(u"sat")
|
|
||||||
}
|
|
||||||
|
|
||||||
short_months = {
|
|
||||||
"Jan": _(u"jan"),
|
|
||||||
"Feb": _(u"feb"),
|
|
||||||
"Mar": _(u"mar"),
|
|
||||||
"Apr": _(u"apr"),
|
|
||||||
"May": _(u"may"),
|
|
||||||
"Jun": _(u"jun"),
|
|
||||||
"Jul": _(u"jul"),
|
|
||||||
"Aug": _(u"aug"),
|
|
||||||
"Sep": _(u"sep"),
|
|
||||||
"Oct": _(u"oct"),
|
|
||||||
"Nov": _(u"nov"),
|
|
||||||
"Dec": _(u"dec")}
|
|
||||||
|
|
||||||
def StripChars(s):
|
def StripChars(s):
|
||||||
"""Converts any html entities in s to their unicode-decoded equivalents and returns a string."""
|
"""Converts any html entities in s to their unicode-decoded equivalents and returns a string."""
|
||||||
@ -110,44 +27,15 @@ def StripChars(s):
|
|||||||
return replacement.decode('iso-8859-1')
|
return replacement.decode('iso-8859-1')
|
||||||
return unicode(entity_re.sub(matchFunc, s))
|
return unicode(entity_re.sub(matchFunc, s))
|
||||||
|
|
||||||
def translate(string):
|
|
||||||
""" Changes the days in English for the current language. Needed for Windows."""
|
|
||||||
if system != "Windows": return string
|
|
||||||
else:
|
|
||||||
global months, days
|
|
||||||
for d in months:
|
|
||||||
string = string.replace(d, months[d])
|
|
||||||
for d in days:
|
|
||||||
string = string.replace(d, days[d])
|
|
||||||
return string
|
|
||||||
|
|
||||||
def translate_short(string):
|
|
||||||
""" Changes the English date from Twitter to a local date and time. Needed for datetime on Linux."""
|
|
||||||
if system != "Linux": return string
|
|
||||||
else:
|
|
||||||
# if 1 == 1:
|
|
||||||
global short_months, short_days
|
|
||||||
for d in short_months:
|
|
||||||
string = string.replace(d, short_months[d])
|
|
||||||
for d in short_days:
|
|
||||||
string = string.replace(d, short_days[d])
|
|
||||||
return string
|
|
||||||
|
|
||||||
chars = "abcdefghijklmnopqrstuvwxyz"
|
chars = "abcdefghijklmnopqrstuvwxyz"
|
||||||
|
|
||||||
def compose_tweet(tweet, db):
|
def compose_tweet(tweet, db):
|
||||||
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
|
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
|
||||||
# original_date = datetime.datetime.strptime(translate_short(tweet["created_at"]).encode("utf-8"), "%a %b %d %H:%M:%S +0000 %Y")
|
original_date = arrow.get(tweet["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
|
||||||
original_date = datetime.datetime.strptime(tweet["created_at"], "%a %b %d %H:%M:%S +0000 %Y")
|
|
||||||
# else:
|
|
||||||
# original_date = datetime.datetime.strptime(tweet["created_at"], '%a %b %d %H:%M:%S +0000 %Y')
|
|
||||||
date = original_date-datetime.timedelta(seconds=-db.settings["utc_offset"])
|
|
||||||
if config.main["general"]["relative_times"] == True:
|
if config.main["general"]["relative_times"] == True:
|
||||||
ts = prettydate(original_date)
|
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
# ts = translate(datetime.datetime.strftime(date, _("%A, %B %d, %Y at %I:%M:%S %p".encode("utf-8"))).decode("utf-8"))
|
ts = original_date.replace(seconds=db.settings["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
||||||
ts = translate(datetime.datetime.strftime(date, _("%A, %B %d, %Y at %I:%M:%S %p")))
|
|
||||||
# ts = tweet["created_at"]
|
|
||||||
text = StripChars(tweet["text"])
|
text = StripChars(tweet["text"])
|
||||||
if tweet.has_key("sender"):
|
if tweet.has_key("sender"):
|
||||||
source = "DM"
|
source = "DM"
|
||||||
@ -167,23 +55,18 @@ def compose_tweet(tweet, db):
|
|||||||
return [user+", ", tweet["text"], ts+", ", source]
|
return [user+", ", tweet["text"], ts+", ", source]
|
||||||
|
|
||||||
def compose_followers_list(tweet, db):
|
def compose_followers_list(tweet, db):
|
||||||
# original_date = datetime.datetime.strptime(translate_short(tweet["created_at"]).encode("utf-8"), '%a %b %d %H:%M:%S +0000 %Y')
|
original_date = arrow.get(tweet["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
|
||||||
original_date = datetime.datetime.strptime(tweet["created_at"], '%a %b %d %H:%M:%S +0000 %Y')
|
|
||||||
date = original_date-datetime.timedelta(seconds=-db.settings["utc_offset"])
|
|
||||||
if config.main["general"]["relative_times"] == True:
|
if config.main["general"]["relative_times"] == True:
|
||||||
ts = prettydate(original_date)
|
ts = original_date.humanize(locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts = translate(datetime.datetime.strftime(date, _(u"%A, %B %d, %Y at %I:%M:%S %p")))
|
ts = original_date.replace(seconds=db.settings["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
||||||
# ts = tweet["created_at"]
|
|
||||||
if tweet.has_key("status"):
|
if tweet.has_key("status"):
|
||||||
if len(tweet["status"]) > 4:
|
if len(tweet["status"]) > 4:
|
||||||
# original_date2 = datetime.datetime.strptime(translate_short(tweet["status"]["created_at"]).encode("utf-8"), '%a %b %d %H:%M:%S +0000 %Y')
|
original_date2 = arrow.get(tweet["status"]["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
|
||||||
original_date2 = datetime.datetime.strptime(tweet["status"]["created_at"], '%a %b %d %H:%M:%S +0000 %Y')
|
|
||||||
date2 = original_date2-datetime.timedelta(seconds=-db.settings["utc_offset"])
|
|
||||||
if config.main["general"]["relative_times"]:
|
if config.main["general"]["relative_times"]:
|
||||||
ts2 = prettydate(original_date2)
|
ts2 = original_date2.humanize(locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts2 = translate(datetime.datetime.strftime(date2, _(u"%A, %B %d, %Y at %I:%M:%S %p")))
|
ts2 = original_date2.replace(seconds=db.settings["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
|
||||||
else:
|
else:
|
||||||
ts2 = _("Unavailable")
|
ts2 = _("Unavailable")
|
||||||
return [_(u"%s (@%s). %s followers, %s friends, %s tweets. Last tweet on %s. Joined Twitter on %s") % (tweet["name"], tweet["screen_name"], tweet["followers_count"], tweet["friends_count"], tweet["statuses_count"], ts2, ts)]
|
return [_(u"%s (@%s). %s followers, %s friends, %s tweets. Last tweet on %s. Joined Twitter on %s") % (tweet["name"], tweet["screen_name"], tweet["followers_count"], tweet["friends_count"], tweet["statuses_count"], ts2, ts)]
|
||||||
@ -229,7 +112,6 @@ def compose_event(data, username):
|
|||||||
else:
|
else:
|
||||||
log.error("event: %s\n target: %s\n source: %s\n" % (data["event"], data["target"], data["source"]))
|
log.error("event: %s\n target: %s\n source: %s\n" % (data["event"], data["target"], data["source"]))
|
||||||
event = _("Unknown")
|
event = _("Unknown")
|
||||||
# output.speak(event)
|
|
||||||
return [time.strftime("%I:%M %p"), event]
|
return [time.strftime("%I:%M %p"), event]
|
||||||
|
|
||||||
def compose_list(list):
|
def compose_list(list):
|
||||||
|
21
src/wxLangs.py
Normal file
21
src/wxLangs.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import wx
|
||||||
|
import languageHandler
|
||||||
|
|
||||||
|
def getLanguage():
|
||||||
|
lang = languageHandler.getLanguage()
|
||||||
|
languages = {"ar": wx.LANGUAGE_ARABIC,
|
||||||
|
"ca": wx.LANGUAGE_CATALAN,
|
||||||
|
"en": wx.LANGUAGE_ENGLISH,
|
||||||
|
"es": wx.LANGUAGE_SPANISH,
|
||||||
|
"eu": wx.LANGUAGE_BASQUE,
|
||||||
|
"fr": wx.LANGUAGE_FRENCH,
|
||||||
|
"fi": wx.LANGUAGE_FINNISH,
|
||||||
|
"gl": wx.LANGUAGE_GALICIAN,
|
||||||
|
"hu": wx.LANGUAGE_HUNGARIAN,
|
||||||
|
"it": wx.LANGUAGE_ITALIAN,
|
||||||
|
"pl": wx.LANGUAGE_POLISH,
|
||||||
|
"pt": wx.LANGUAGE_PORTUGUESE,
|
||||||
|
"ru": wx.LANGUAGE_RUSSIAN,
|
||||||
|
"tr": wx.LANGUAGE_TURKISH,
|
||||||
|
}
|
||||||
|
return languages[lang]
|
Loading…
x
Reference in New Issue
Block a user