This commit is contained in:
jmdaweb 2014-12-06 00:01:21 +01:00
commit f36accf89b
40 changed files with 7498 additions and 4209 deletions

View File

@ -35,6 +35,7 @@ timelines = list(default=list())
tweet_searches = list(default=list()) tweet_searches = list(default=list())
lists = list(default=list()) lists = list(default=list())
favourites_timelines = list(default=list()) favourites_timelines = list(default=list())
trending_topic_buffers = list(default=list())
muted_buffers = list(default=list()) muted_buffers = list(default=list())
autoread_buffers = list(default=list()) autoread_buffers = list(default=list())

View File

@ -15,7 +15,7 @@ class autocompletionUsers(object):
try: try:
pattern = text.split()[-1] pattern = text.split()[-1]
except IndexError: except IndexError:
output.speak(_(u"You have to start to write")) output.speak(_(u"You have to start writing"))
return return
if pattern.startswith("@") == True: if pattern.startswith("@") == True:
db = storage.storage() db = storage.storage()
@ -26,6 +26,6 @@ class autocompletionUsers(object):
self.window.PopupMenu(menu, self.window.text.GetPosition()) self.window.PopupMenu(menu, self.window.text.GetPosition())
menu.Destroy() menu.Destroy()
else: else:
output.speak(_(u"There is not results in your users database")) output.speak(_(u"There are not results in your users database"))
else: else:
output.speak(_(u"Autocompletion only works for users.")) output.speak(_(u"Autocompletion only works for users."))

View File

@ -36,3 +36,17 @@ class autocompletionSettings(object):
wx_settings.show_success_dialog() wx_settings.show_success_dialog()
self.dialog.Destroy() self.dialog.Destroy()
def execute_at_startup(window):
database = storage.storage()
if config.main["mysc"]["save_followers_in_autocompletion_db"] == True:
buffer = window.search_buffer("people", "followers")
for i in buffer.db.settings[buffer.name_buffer]:
database.set_user(i["screen_name"], i["name"], 1)
else:
database.remove_by_buffer(1)
if config.main["mysc"]["save_friends_in_autocompletion_db"] == True:
buffer = window.search_buffer("people", "friends")
for i in buffer.db.settings[buffer.name_buffer]:
database.set_user(i["screen_name"], i["name"], 2)
else:
database.remove_by_buffer(2)

View File

@ -20,4 +20,4 @@ class autocompletionSettingsDialog(wx.Dialog):
self.SetClientSize(sizer.CalcMin()) self.SetClientSize(sizer.CalcMin())
def show_success_dialog(): def show_success_dialog():
wx.MessageDialog(None, _(u"Users TwBlue-database has been updated with new users."), _(u"Done"), wx.OK).ShowModal() wx.MessageDialog(None, _(u"TWBlue's database of users has been updated."), _(u"Done"), wx.OK).ShowModal()

View File

@ -8,3 +8,4 @@ from lists import *
from people import * from people import *
from tweet_searches import * from tweet_searches import *
from user_searches import * from user_searches import *
from trends import *

View File

@ -150,7 +150,7 @@ 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(tweet["created_at"], "%a %b %d %H:%M:%S +0000 %Y") 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"]) date = original_date-datetime.timedelta(seconds=-self.db.settings["utc_offset"])
ts = prettydate(original_date) ts = prettydate(original_date)
self.list.list.SetStringItem(self.list.get_selected(), 2, ts) self.list.list.SetStringItem(self.list.get_selected(), 2, ts)
@ -159,7 +159,7 @@ class basePanel(wx.Panel):
if twitter.utils.is_audio(tweet): if twitter.utils.is_audio(tweet):
sound.player.play("audio.ogg", False) sound.player.play("audio.ogg", False)
if twitter.utils.is_geocoded(tweet): if twitter.utils.is_geocoded(tweet):
sound.player.play("geo.mp3", False) sound.player.play("geo.ogg", False)
def start_streams(self): def start_streams(self):
if self.name_buffer == "sent": if self.name_buffer == "sent":

View File

@ -20,18 +20,20 @@ import wx
from multiplatform_widgets import widgets from multiplatform_widgets import widgets
class accountPanel(wx.Panel): class accountPanel(wx.Panel):
def __init__(self, parent): def __init__(self, parent, name_buffer):
super(accountPanel, self).__init__(parent=parent) super(accountPanel, self).__init__(parent=parent)
self.type = "account" self.type = "account"
self.name_buffer = name_buffer
sizer = wx.BoxSizer(wx.VERTICAL) sizer = wx.BoxSizer(wx.VERTICAL)
self.list = widgets.list(self, _(u"Announce")) self.list = widgets.list(self, _(u"Announce"))
sizer.Add(self.list.list, 0, wx.ALL, 5) sizer.Add(self.list.list, 0, wx.ALL, 5)
self.SetSizer(sizer) self.SetSizer(sizer)
class emptyPanel(accountPanel):
def __init__(self, parent):
super(emptyPanel, self).__init__(parent=parent)
self.type = "empty"
def get_more_items(self): def get_more_items(self):
output.speak(_(u"This action is not supported for this buffer")) output.speak(_(u"This action is not supported for this buffer"))
class emptyPanel(accountPanel):
def __init__(self, parent):
super(emptyPanel, self).__init__(parent=parent, name_buffer="")
self.type = "empty"

View File

@ -17,35 +17,162 @@
# #
############################################################ ############################################################
import wx import wx
import sound
import config
import twitter
import gui.dialogs import gui.dialogs
import twitter
import config
import sound
import logging as original_logger import logging as original_logger
from base import basePanel import output
import platform
import menus
from multiplatform_widgets import widgets
from mysc.thread_utils import call_threaded
log = original_logger.getLogger("buffers.base") log = original_logger.getLogger("buffers.base")
class trendPanel(basePanel): class trendsPanel(wx.Panel):
def __init__(self, parent, window, name_buffer, *args, **kwargs):
super(searchPanel, self).__init__(parent, window, name_buffer, sound)
self.type = "trend"
self.args = kwargs
def start_streams(self): def compose_function(self, trend):
num = twitter.starting.search(self.db, self.twitter, self.name_buffer, **self.args) return [trend["name"]]
if num > 0: sound.player.play("search_updated.ogg")
self.put_items(num) def bind_events(self):
return num self.Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK, self.showMenu, self.list.list)
self.Bind(wx.EVT_LIST_KEY_DOWN, self.showMenuByKey, self.list.list)
self.list.list.Bind(wx.EVT_CHAR_HOOK, self.interact)
def get_message(self, dialog=False):
return self.compose_function(self.trends[self.list.get_selected()])[0]
def create_list(self):
self.list = widgets.list(self, _(u"Trending topic"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES)
if self.system == "Windows":
self.list.set_windows_size(0, 30)
self.list.set_size()
def __init__(self, parent, window, name_buffer, argumento=None, sound=""):
self.type = "trends"
self.twitter = window.twitter
self.name_buffer = name_buffer
self.argumento = argumento
self.sound = sound
self.parent = window
self.system = platform.system()
wx.Panel.__init__(self, parent)
self.trends = []
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.create_list()
self.btn = wx.Button(self, -1, _(u"Tweet"))
self.btn.Bind(wx.EVT_BUTTON, self.post_status)
self.tweetTrendBtn = wx.Button(self, -1, _(u"Tweet about this trend"))
self.tweetTrendBtn.Bind(wx.EVT_BUTTON, self.onResponse)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
btnSizer.Add(self.btn, 0, wx.ALL, 5)
btnSizer.Add(self.tweetTrendBtn, 0, wx.ALL, 5)
self.sizer.Add(btnSizer, 0, wx.ALL, 5)
self.sizer.Add(self.list.list, 0, wx.ALL, 5)
self.bind_events()
self.SetSizer(self.sizer)
def remove_buffer(self): def remove_buffer(self):
dlg = wx.MessageDialog(self, _(u"Do you really want to delete this search term?"), _(u"Attention"), style=wx.ICON_QUESTION|wx.YES_NO) dlg = wx.MessageDialog(self, _(u"Do you really want to delete this buffer?"), _(u"Attention"), style=wx.ICON_QUESTION|wx.YES_NO)
if dlg.ShowModal() == wx.ID_YES: if dlg.ShowModal() == wx.ID_YES:
names = config.main["other_buffers"]["tweet_searches"] topics = config.main["other_buffers"]["trending_topic_buffers"]
user = self.name_buffer[:-7] topic = self.name_buffer
log.info(u"Deleting %s's search term" % user) log.info(u"Deleting %s's trending topics buffer" % topic)
if user in names: if topic in topics:
names.remove(user) topics.remove(topic)
self.db.settings.pop(self.name_buffer) return 0
pos = self.db.settings["buffers"].index(self.name_buffer)
self.db.settings["buffers"].remove(self.name_buffer) def start_streams(self):
return pos data = self.twitter.twitter.get_place_trends(id=self.argumento)
self.trends = data[0]["trends"]
sound.player.play(self.sound)
return len(self.trends)
def get_more_items(self):
output.speak(_(u"This action is not supported for this buffer"))
def put_items(self, num):
selected_item = self.list.get_selected()
if self.list.get_count() == 0:
for i in self.trends:
tweet = self.compose_function(i)
self.list.insert_item(False, *tweet)
self.set_list_position()
elif self.list.get_count() > 0:
if config.main["general"]["reverse_timelines"] == False:
for i in self.trends:
tweet = self.compose_function(i)
self.list.insert_item(False, *tweet)
else:
for i in self.trends:
tweet = self.compose_function(i)
self.list.insert_item(True, *tweet)
self.list.select_item(selected_item)
def post_status(self, ev=None):
text = gui.dialogs.message.tweet(_(u"Write the tweet here"), _(u"Tweet"), "", self)
if text.ShowModal() == wx.ID_OK:
if text.image == None:
call_threaded(self.twitter.api_call, call_name="update_status", _sound="tweet_send.ogg", status=text.text.GetValue())
else:
call_threaded(self.twitter.api_call, call_name="update_status_with_media", _sound="tweet_send.ogg", status=text.text.GetValue(), media=text.file)
if ev != None: self.list.list.SetFocus()
def onRetweet(self, event=None): pass
def onResponse(self, ev):
trend = self.trends[self.list.get_selected()]["name"]
text = gui.dialogs.message.tweet(_(u"Write the tweet here"), _(u"Tweet"), trend, self)
if text.ShowModal() == wx.ID_OK:
if text.image == None:
call_threaded(self.twitter.api_call, call_name="update_status", _sound="tweet_send.ogg", status=text.text.GetValue())
else:
call_threaded(self.twitter.api_call, call_name="update_status_with_media", _sound="tweet_send.ogg", status=text.text.GetValue(), media=text.file)
if ev != None: self.list.list.SetFocus()
def interact(self, ev):
if type(ev) is str: event = ev
else:
if ev.GetKeyCode() == wx.WXK_F5: event = "volume_down"
elif ev.GetKeyCode() == wx.WXK_F6: event = "volume_up"
elif ev.GetKeyCode() == wx.WXK_DELETE and ev.ShiftDown(): event = "clear_list"
else:
ev.Skip()
return
if event == "volume_down":
if config.main["sound"]["volume"] > 0.05:
config.main["sound"]["volume"] = config.main["sound"]["volume"]-0.05
sound.player.play("volume_changed.ogg", False)
if hasattr(self.parent, "audioStream"):
self.parent.audioStream.stream.volume = config.main["sound"]["volume"]
elif event == "volume_up":
if config.main["sound"]["volume"] < 0.95:
config.main["sound"]["volume"] = config.main["sound"]["volume"]+0.05
sound.player.play("volume_changed.ogg", False)
if hasattr(self.parent, "audioStream"):
self.parent.audioStream.stream.volume = config.main["sound"]["volume"]
elif event == "clear_list" and self.list.get_count() > 0:
dlg = wx.MessageDialog(self, _(u"Do you really want to empty this buffer? It's items will be removed from the list"), _(u"Empty buffer"), wx.ICON_QUESTION|wx.YES_NO)
if dlg.ShowModal() == wx.ID_YES:
self.trends = []
self.list.clear()
try:
ev.Skip()
except:
pass
def set_list_position(self):
if config.main["general"]["reverse_timelines"] == False:
self.list.select_item(len(self.trends)-1)
else:
self.list.select_item(0)
def showMenu(self, ev):
if self.list.get_count() == 0: return
self.PopupMenu(menus.trendsPanelMenu(self), ev.GetPosition())
def showMenuByKey(self, ev):
if self.list.get_count() == 0: return
if ev.GetKeyCode() == wx.WXK_WINDOWS_MENU:
self.PopupMenu(menus.trendsPanelMenu(self), self.list.list.GetPosition())

View File

@ -1 +1 @@
import message, urlList, follow, utils, show_user, update_profile, configuration, lists, search import message, urlList, follow, utils, show_user, update_profile, configuration, lists, search, trending

View File

@ -19,24 +19,34 @@
import wx import wx
class trendingTopicsDialog(wx.Dialog): class trendingTopicsDialog(wx.Dialog):
def __init__(self): def __init__(self, information):
super(searchDialog, self).__init__(None, -1) super(trendingTopicsDialog, self).__init__(None, -1)
self.countries = {}
self.cities = {}
self.information = information
self.split_information()
panel = wx.Panel(self) panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL) sizer = wx.BoxSizer(wx.VERTICAL)
self.SetTitle(_(u"Search on Twitter")) self.SetTitle(_(u"View trending topics"))
label = wx.StaticText(panel, -1, _(u"Search")) label = wx.StaticText(panel, -1, _(u"Trending topics by"))
self.term = wx.TextCtrl(panel, -1,)
dc = wx.WindowDC(self.term)
dc.SetFont(self.term.GetFont())
self.term.SetSize(dc.GetTextExtent("0"*40))
sizer.Add(label, 0, wx.ALL, 5) sizer.Add(label, 0, wx.ALL, 5)
sizer.Add(self.term, 0, wx.ALL, 5) self.country = wx.RadioButton(panel, -1, _(u"Country"), style=wx.RB_GROUP)
self.tweets = wx.RadioButton(panel, -1, _(u"Tweets"), style=wx.RB_GROUP) self.city = wx.RadioButton(panel, -1, _(u"City"))
self.users = wx.RadioButton(panel, -1, _(u"Users")) self.Bind(wx.EVT_RADIOBUTTON, self.get_places, self.country)
self.Bind(wx.EVT_RADIOBUTTON, self.get_places, self.city)
radioSizer = wx.BoxSizer(wx.HORIZONTAL) radioSizer = wx.BoxSizer(wx.HORIZONTAL)
radioSizer.Add(self.tweets, 0, wx.ALL, 5) radioSizer.Add(label, 0, wx.ALL, 5)
radioSizer.Add(self.users, 0, wx.ALL, 5) radioSizer.Add(self.country, 0, wx.ALL, 5)
radioSizer.Add(self.city, 0, wx.ALL, 5)
sizer.Add(radioSizer, 0, wx.ALL, 5) sizer.Add(radioSizer, 0, wx.ALL, 5)
label = wx.StaticText(panel, -1, _(u"Location"))
self.location = wx.ListBox(panel, -1, choices=[], style=wx.CB_READONLY)
self.get_places()
locationBox = wx.BoxSizer(wx.HORIZONTAL)
locationBox.Add(label, 0, wx.ALL, 5)
locationBox.Add(self.location, 0, wx.ALL, 5)
sizer.Add(locationBox, 0, wx.ALL, 5)
ok = wx.Button(panel, wx.ID_OK, _(u"OK")) ok = wx.Button(panel, wx.ID_OK, _(u"OK"))
ok.SetDefault() ok.SetDefault()
cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close"))
@ -46,3 +56,23 @@ class trendingTopicsDialog(wx.Dialog):
sizer.Add(btnsizer, 0, wx.ALL, 5) sizer.Add(btnsizer, 0, wx.ALL, 5)
panel.SetSizer(sizer) panel.SetSizer(sizer)
self.SetClientSize(sizer.CalcMin()) self.SetClientSize(sizer.CalcMin())
def split_information(self):
for i in self.information:
if i["placeType"]["name"] == "Country":
self.countries[i["name"]] = i["woeid"]
else:
self.cities[i["name"]] = i["woeid"]
def get_places(self, event=None):
values = []
if self.country.GetValue() == True:
for i in self.information:
if i["placeType"]["name"] == "Country":
values.append(i["name"])
elif self.city.GetValue() == True:
for i in self.information:
if i["placeType"]["name"] != "Country":
values.append(i["name"])
self.location.Set(values)

View File

@ -34,6 +34,7 @@ import urllib2
import sysTrayIcon import sysTrayIcon
import switchModule import switchModule
import languageHandler import languageHandler
from extra.autocompletionUsers import settings as autocompletionUsersSettings
import pygeocoder import pygeocoder
from pygeolib import GeocoderError from pygeolib import GeocoderError
from sessionmanager import manager from sessionmanager import manager
@ -226,7 +227,7 @@ class mainFrame(wx.Frame):
try: try:
updater.update_manager.check_for_update() updater.update_manager.check_for_update()
except: except:
pass wx.MessageDialog(self, _(u"An error occurred while looking for an update. It may be due to any problem either on our server or on your DNS servers. Please, try again later."), _(u"Error!"), wx.OK|wx.ICON_ERROR).ShowModal()
self.SetMenuBar(self.makeMenus()) self.SetMenuBar(self.makeMenus())
self.setup_twitter(panel) self.setup_twitter(panel)
@ -241,7 +242,7 @@ class mainFrame(wx.Frame):
# Gets the tabs for home, mentions, send and direct messages. # Gets the tabs for home, mentions, send and direct messages.
log.debug("Creating buffers...") log.debug("Creating buffers...")
self.db.settings["buffers"] = [] self.db.settings["buffers"] = []
account = buffers.accountPanel(self.nb) account = buffers.accountPanel(self.nb, self.db.settings["user_name"])
self.nb.AddPage(account, self.db.settings["user_name"]) self.nb.AddPage(account, self.db.settings["user_name"])
self.db.settings["buffers"].append(self.db.settings["user_name"]) self.db.settings["buffers"].append(self.db.settings["user_name"])
account_index = self.db.settings["buffers"].index(self.db.settings["user_name"]) account_index = self.db.settings["buffers"].index(self.db.settings["user_name"])
@ -355,6 +356,7 @@ class mainFrame(wx.Frame):
self.check_streams.start() self.check_streams.start()
# If all it's done, then play a nice sound saying that all it's OK. # If all it's done, then play a nice sound saying that all it's OK.
sound.player.play("ready.ogg") sound.player.play("ready.ogg")
autocompletionUsersSettings.execute_at_startup(window=self)
def remove_list(self, id): def remove_list(self, id):
for i in range(0, self.nb.GetPageCount()): for i in range(0, self.nb.GetPageCount()):
@ -1016,6 +1018,21 @@ class mainFrame(wx.Frame):
except KeyError: except KeyError:
pass pass
def get_trending_topics(self, event=None):
info = self.twitter.twitter.get_available_trends()
trendingDialog = dialogs.trending.trendingTopicsDialog(info)
if trendingDialog.ShowModal() == wx.ID_OK:
if trendingDialog.country.GetValue() == True:
woeid = trendingDialog.countries[trendingDialog.location.GetStringSelection()]
elif trendingDialog.city.GetValue() == True:
woeid = trendingDialog.cities[trendingDialog.location.GetStringSelection()]
buff = buffers.trendsPanel(self.nb, self, "%s_tt" % (woeid,), argumento=woeid, sound="tweet_timeline.ogg")
self.nb.InsertSubPage(self.db.settings["buffers"].index(self.db.settings["user_name"]), buff, _(u"Trending topics for %s") % (trendingDialog.location.GetStringSelection(),))
timer = RepeatingTimer(180, buff.start_streams)
timer.start()
num = buff.start_streams()
buff.put_items(num)
### Close App ### Close App
def Destroy(self): def Destroy(self):
self.sysTray.Destroy() self.sysTray.Destroy()

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-11-08 16:42+Hora estándar central (México)\n" "POT-Creation-Date: 2014-12-05 11:32+Hora estándar central (México)\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,8 +15,8 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: ../src\extra\AudioUploader\gui.py:31 ../src\gui\dialogs\message.py:173 #: ../src\extra\AudioUploader\gui.py:31 ../src\gui\dialogs\message.py:174
#: ../src\gui\dialogs\message.py:261 #: ../src\gui\dialogs\message.py:271
msgid "Attach audio" msgid "Attach audio"
msgstr "" msgstr ""
@ -70,13 +70,13 @@ msgstr ""
msgid "Stopped" msgid "Stopped"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:129 ../src\gui\dialogs\message.py:222 #: ../src\extra\AudioUploader\gui.py:129 ../src\gui\dialogs\message.py:232
#: ../src\gui\dialogs\update_profile.py:87 #: ../src\gui\dialogs\update_profile.py:87
msgid "Discarded" msgid "Discarded"
msgstr "" msgstr ""
#: ../src\extra\AudioUploader\gui.py:139 ../src\gui\buffers\base.py:339 #: ../src\extra\AudioUploader\gui.py:139 ../src\gui\buffers\base.py:356
#: ../src\gui\buffers\base.py:351 #: ../src\gui\buffers\base.py:368
msgid "Playing..." msgid "Playing..."
msgstr "" msgstr ""
@ -297,8 +297,45 @@ msgstr ""
msgid "The spelling review has finished." msgid "The spelling review has finished."
msgstr "" msgstr ""
#: ../src\extra\translator\gui.py:24 ../src\gui\dialogs\message.py:181 #: ../src\extra\autocompletionUsers\completion.py:18
#: ../src\gui\dialogs\message.py:269 ../src\gui\dialogs\message.py:355 msgid "You have to start writing"
msgstr ""
#: ../src\extra\autocompletionUsers\completion.py:29
msgid "There are not results in your users database"
msgstr ""
#: ../src\extra\autocompletionUsers\completion.py:31
msgid "Autocompletion only works for users."
msgstr ""
#: ../src\extra\autocompletionUsers\settings.py:22
msgid "Updating database... You can close this window now. A message will tell you when the process finishes."
msgstr ""
#: ../src\extra\autocompletionUsers\wx_settings.py:6
msgid "Autocomplete users\342\200\231 settings"
msgstr ""
#: ../src\extra\autocompletionUsers\wx_settings.py:9
msgid "Add users from followers buffer"
msgstr ""
#: ../src\extra\autocompletionUsers\wx_settings.py:10
msgid "Add users from friends buffer"
msgstr ""
#: ../src\extra\autocompletionUsers\wx_settings.py:23
msgid "Done"
msgstr ""
#: ../src\extra\autocompletionUsers\wx_settings.py:23
msgid "TWBlue's database of users has been updated."
msgstr ""
#: ../src\extra\translator\gui.py:24 ../src\gui\dialogs\message.py:182
#: ../src\gui\dialogs\message.py:279 ../src\gui\dialogs\message.py:383
#: ../src\gui\dialogs\message.py:470
msgid "Translate message" msgid "Translate message"
msgstr "" msgstr ""
@ -678,131 +715,134 @@ msgstr ""
msgid "autodetect" msgid "autodetect"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:55 #: ../src\gui\buffers\base.py:58
msgid "Client" msgid "Client"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:55 #: ../src\gui\buffers\base.py:58
msgid "Text" msgid "Text"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:55 ../src\gui\buffers\events.py:61 #: ../src\gui\buffers\base.py:58 ../src\gui\buffers\events.py:64
msgid "Date" msgid "Date"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:55 ../src\gui\buffers\people.py:41 #: ../src\gui\buffers\base.py:58 ../src\gui\buffers\people.py:44
#: ../src\gui\buffers\user_searches.py:31 ../src\gui\dialogs\utils.py:36 #: ../src\gui\buffers\user_searches.py:31 ../src\gui\dialogs\utils.py:36
msgid "User" msgid "User"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:80 ../src\gui\buffers\base.py:228 #: ../src\gui\buffers\base.py:83 ../src\gui\buffers\base.py:233
#: ../src\gui\buffers\events.py:62 ../src\gui\buffers\events.py:78 #: ../src\gui\buffers\events.py:65 ../src\gui\buffers\events.py:81
#: ../src\gui\dialogs\message.py:337 #: ../src\gui\buffers\trends.py:64 ../src\gui\buffers\trends.py:114
#: ../src\gui\buffers\trends.py:126 ../src\gui\dialogs\message.py:347
msgid "Tweet" msgid "Tweet"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:82 ../src\gui\buffers\base.py:240 #: ../src\gui\buffers\base.py:85 ../src\gui\buffers\base.py:245
#: ../src\gui\buffers\base.py:243 #: ../src\gui\buffers\base.py:248
msgid "Retweet" msgid "Retweet"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:84 ../src\gui\buffers\base.py:259 #: ../src\gui\buffers\base.py:87 ../src\gui\buffers\base.py:264
msgid "Reply" msgid "Reply"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:86 #: ../src\gui\buffers\base.py:89
msgid "Direct message" msgid "Direct message"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:100 #: ../src\gui\buffers\base.py:103
msgid "Do you really want to delete this timeline?" msgid "Do you really want to delete this timeline?"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:100 ../src\gui\buffers\favourites.py:41 #: ../src\gui\buffers\base.py:103 ../src\gui\buffers\favourites.py:41
#: ../src\gui\buffers\lists.py:46 ../src\gui\buffers\trends.py:41 #: ../src\gui\buffers\lists.py:46 ../src\gui\buffers\trends.py:77
#: ../src\gui\buffers\tweet_searches.py:45 #: ../src\gui\buffers\tweet_searches.py:45
#: ../src\gui\buffers\user_searches.py:56 #: ../src\gui\buffers\user_searches.py:56
msgid "Attention" msgid "Attention"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:112 #: ../src\gui\buffers\base.py:115
msgid "This buffer is not a timeline; it can't be deleted." msgid "This buffer is not a timeline; it can't be deleted."
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:196 ../src\gui\buffers\people.py:114 #: ../src\gui\buffers\base.py:201 ../src\gui\buffers\people.py:117
msgid "%s items retrieved" msgid "%s items retrieved"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:220 ../src\gui\buffers\dm.py:44 #: ../src\gui\buffers\base.py:225 ../src\gui\buffers\dm.py:46
#: ../src\gui\buffers\people.py:56 #: ../src\gui\buffers\people.py:59
msgid "Direct message to %s" msgid "Direct message to %s"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:220 ../src\gui\buffers\dm.py:44 #: ../src\gui\buffers\base.py:225 ../src\gui\buffers\dm.py:46
#: ../src\gui\buffers\people.py:56 #: ../src\gui\buffers\people.py:59
msgid "New direct message" msgid "New direct message"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:228 ../src\gui\buffers\events.py:78 #: ../src\gui\buffers\base.py:233 ../src\gui\buffers\events.py:81
#: ../src\gui\buffers\trends.py:114 ../src\gui\buffers\trends.py:126
msgid "Write the tweet here" msgid "Write the tweet here"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:240 #: ../src\gui\buffers\base.py:245
msgid "Would you like to add a comment to this tweet?" msgid "Would you like to add a comment to this tweet?"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:243 #: ../src\gui\buffers\base.py:248
msgid "Add your comment to the tweet" msgid "Add your comment to the tweet"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:259 #: ../src\gui\buffers\base.py:264
msgid "Reply to %s" msgid "Reply to %s"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:304 #: ../src\gui\buffers\base.py:319
msgid "Opening URL..." msgid "Opening URL..."
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:321 ../src\gui\buffers\events.py:122 #: ../src\gui\buffers\base.py:338 ../src\gui\buffers\events.py:125
msgid "Do you really want to empty this buffer? It's tweets will be removed from the list but not from Twitter" msgid "Do you really want to empty this buffer? It's tweets will be removed from the list but not from Twitter"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:321 ../src\gui\buffers\events.py:122 #: ../src\gui\buffers\base.py:338 ../src\gui\buffers\events.py:125
#: ../src\gui\buffers\trends.py:156
msgid "Empty buffer" msgid "Empty buffer"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:326 ../src\gui\buffers\events.py:126 #: ../src\gui\buffers\base.py:343 ../src\gui\buffers\events.py:129
msgid "Do you really want to delete this message?" msgid "Do you really want to delete this message?"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:326 ../src\gui\buffers\events.py:126 #: ../src\gui\buffers\base.py:343 ../src\gui\buffers\events.py:129
#: ../src\gui\dialogs\lists.py:107 #: ../src\gui\dialogs\lists.py:107
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:346 ../src\gui\buffers\base.py:357 #: ../src\gui\buffers\base.py:363 ../src\gui\buffers\base.py:374
msgid "Unable to play audio." msgid "Unable to play audio."
msgstr "" msgstr ""
#: ../src\gui\buffers\base.py:348 #: ../src\gui\buffers\base.py:365
msgid "Audio stopped." msgid "Audio stopped."
msgstr "" msgstr ""
#: ../src\gui\buffers\events.py:35 ../src\gui\buffers\panels.py:37 #: ../src\gui\buffers\events.py:36 ../src\gui\buffers\panels.py:33
#: ../src\gui\buffers\tweet_searches.py:58 #: ../src\gui\buffers\trends.py:93 ../src\gui\buffers\tweet_searches.py:58
#: ../src\gui\buffers\user_searches.py:64 #: ../src\gui\buffers\user_searches.py:64
msgid "This action is not supported for this buffer" msgid "This action is not supported for this buffer"
msgstr "" msgstr ""
#: ../src\gui\buffers\events.py:44 #: ../src\gui\buffers\events.py:47
msgid "Empty" msgid "Empty"
msgstr "" msgstr ""
#: ../src\gui\buffers\events.py:61 #: ../src\gui\buffers\events.py:64
msgid "Event" msgid "Event"
msgstr "" msgstr ""
#: ../src\gui\buffers\events.py:64 #: ../src\gui\buffers\events.py:67
msgid "Remove event" msgid "Remove event"
msgstr "" msgstr ""
@ -814,222 +854,313 @@ msgstr ""
msgid "Do you really want to delete this list?" msgid "Do you really want to delete this list?"
msgstr "" msgstr ""
#: ../src\gui\buffers\panels.py:27 #: ../src\gui\buffers\menus.py:8
msgid "&Retweet"
msgstr ""
#: ../src\gui\buffers\menus.py:11 ../src\gui\buffers\menus.py:43
msgid "Re&ply"
msgstr ""
#: ../src\gui\buffers\menus.py:14
msgid "Add to &favourites"
msgstr ""
#: ../src\gui\buffers\menus.py:17
msgid "Remove from favo&urites"
msgstr ""
#: ../src\gui\buffers\menus.py:20 ../src\gui\buffers\menus.py:46
#: ../src\gui\buffers\menus.py:69
msgid "&Open URL"
msgstr ""
#: ../src\gui\buffers\menus.py:23 ../src\gui\buffers\menus.py:49
#: ../src\gui\buffers\menus.py:72
msgid "&Play audio"
msgstr ""
#: ../src\gui\buffers\menus.py:26 ../src\gui\buffers\menus.py:75
msgid "&Show tweet"
msgstr ""
#: ../src\gui\buffers\menus.py:29 ../src\gui\buffers\menus.py:55
#: ../src\gui\buffers\menus.py:78 ../src\gui\buffers\menus.py:92
#: ../src\gui\buffers\menus.py:115
msgid "&Copy to clipboard"
msgstr ""
#: ../src\gui\buffers\menus.py:32 ../src\gui\buffers\menus.py:58
#: ../src\gui\buffers\menus.py:81 ../src\gui\buffers\menus.py:95
msgid "&Delete"
msgstr ""
#: ../src\gui\buffers\menus.py:35 ../src\gui\buffers\menus.py:61
#: ../src\gui\buffers\menus.py:118
msgid "&User actions..."
msgstr ""
#: ../src\gui\buffers\menus.py:52
msgid "&Show direct message"
msgstr ""
#: ../src\gui\buffers\menus.py:89
msgid "&Show event"
msgstr ""
#: ../src\gui\buffers\menus.py:103
msgid "&Mention"
msgstr ""
#: ../src\gui\buffers\menus.py:106
msgid "&View lists"
msgstr ""
#: ../src\gui\buffers\menus.py:109
msgid "Show user &profile"
msgstr ""
#: ../src\gui\buffers\menus.py:112
msgid "&Show user"
msgstr ""
#: ../src\gui\buffers\panels.py:28
msgid "Announce" msgid "Announce"
msgstr "" msgstr ""
#: ../src\gui\buffers\people.py:46 ../src\gui\buffers\people.py:64 #: ../src\gui\buffers\people.py:49 ../src\gui\buffers\people.py:67
msgid "Mention" msgid "Mention"
msgstr "" msgstr ""
#: ../src\gui\buffers\people.py:64 #: ../src\gui\buffers\people.py:67
msgid "Mention to %s" msgid "Mention to %s"
msgstr "" msgstr ""
#: ../src\gui\buffers\trends.py:41 ../src\gui\buffers\tweet_searches.py:45 #: ../src\gui\buffers\trends.py:47
msgid "Trending topic"
msgstr ""
#: ../src\gui\buffers\trends.py:66
msgid "Tweet about this trend"
msgstr ""
#: ../src\gui\buffers\trends.py:77
msgid "Do you really want to delete this buffer?"
msgstr ""
#: ../src\gui\buffers\trends.py:156
msgid "Do you really want to empty this buffer? It's items will be removed from the list"
msgstr ""
#: ../src\gui\buffers\tweet_searches.py:45
#: ../src\gui\buffers\user_searches.py:56 #: ../src\gui\buffers\user_searches.py:56
msgid "Do you really want to delete this search term?" msgid "Do you really want to delete this search term?"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:39 #: ../src\gui\dialogs\configuration.py:40
msgid "Language" msgid "Language"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:53 #: ../src\gui\dialogs\configuration.py:54
msgid "ask before exiting TwBlue?" msgid "Set the autocomplete function"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:56 #: ../src\gui\dialogs\configuration.py:56
msgid "ask before exiting TwBlue?"
msgstr ""
#: ../src\gui\dialogs\configuration.py:59
msgid "Relative times" msgid "Relative times"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:60 #: ../src\gui\dialogs\configuration.py:63
msgid "Activate Sapi5 when any other screen reader is not being run" msgid "Activate Sapi5 when any other screen reader is not being run"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:63 #: ../src\gui\dialogs\configuration.py:66
msgid "Activate the auto-start of the invisible interface" msgid "Activate the auto-start of the invisible interface"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:67 #: ../src\gui\dialogs\configuration.py:70
msgid "API calls when the stream is started (One API call equals to 200 tweetts, two API calls equals 400 tweets, etc):" msgid "API calls when the stream is started (One API call equals to 200 tweetts, two API calls equals 400 tweets, etc):"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:75 #: ../src\gui\dialogs\configuration.py:78
msgid "Items on each API call" msgid "Items on each API call"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:82 #: ../src\gui\dialogs\configuration.py:85
msgid "Inverted buffers: The newest tweets will be shown at the beginning of the lists while the oldest at the end" msgid "Inverted buffers: The newest tweets will be shown at the beginning of the lists while the oldest at the end"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:97 #: ../src\gui\dialogs\configuration.py:101
msgid "Show followers" msgid "Show followers"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:100 #: ../src\gui\dialogs\configuration.py:104
msgid "Show friends" msgid "Show friends"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:103 #: ../src\gui\dialogs\configuration.py:107
msgid "Show favourites" msgid "Show favourites"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:106 #: ../src\gui\dialogs\configuration.py:110
msgid "Show blocked users" msgid "Show blocked users"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:109 #: ../src\gui\dialogs\configuration.py:113
msgid "Show muted users" msgid "Show muted users"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:112 #: ../src\gui\dialogs\configuration.py:116
msgid "Show events" msgid "Show events"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:122 #: ../src\gui\dialogs\configuration.py:126
#: ../src\gui\dialogs\configuration.py:270 #: ../src\gui\dialogs\configuration.py:275
msgid "Ignored clients" msgid "Ignored clients"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:128 #: ../src\gui\dialogs\configuration.py:132
msgid "Add client" msgid "Add client"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:129 #: ../src\gui\dialogs\configuration.py:133
msgid "Remove client" msgid "Remove client"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:140 #: ../src\gui\dialogs\configuration.py:144
msgid "Add a new ignored client" msgid "Add a new ignored client"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:140 #: ../src\gui\dialogs\configuration.py:144
msgid "Enter the name of the client here" msgid "Enter the name of the client here"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:157 #: ../src\gui\dialogs\configuration.py:161
msgid "Volume" msgid "Volume"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:166 #: ../src\gui\dialogs\configuration.py:170
msgid "Global mute" msgid "Global mute"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:170 #: ../src\gui\dialogs\configuration.py:174
msgid "Output device" msgid "Output device"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:179 #: ../src\gui\dialogs\configuration.py:183
msgid "Input device" msgid "Input device"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:190 #: ../src\gui\dialogs\configuration.py:194
msgid "Sound pack" msgid "Sound pack"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:203 #: ../src\gui\dialogs\configuration.py:207
msgid "If you've got a SndUp account, enter your API Key here. Whether the API Key is wrong, the App will fail to upload anything to the server. Whether there's no API Key here, then the audio files will be uploaded anonimously" msgid "If you've got a SndUp account, enter your API Key here. Whether the API Key is wrong, the App will fail to upload anything to the server. Whether there's no API Key here, then the audio files will be uploaded anonimously"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:216 #: ../src\gui\dialogs\configuration.py:220
#: ../src\gui\dialogs\configuration.py:240 #: ../src\gui\dialogs\configuration.py:244
msgid "Unlink your Dropbox account" msgid "Unlink your Dropbox account"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:218 #: ../src\gui\dialogs\configuration.py:222
#: ../src\gui\dialogs\configuration.py:235 #: ../src\gui\dialogs\configuration.py:239
#: ../src\gui\dialogs\configuration.py:243
#: ../src\gui\dialogs\configuration.py:247 #: ../src\gui\dialogs\configuration.py:247
#: ../src\gui\dialogs\configuration.py:254 #: ../src\gui\dialogs\configuration.py:251
#: ../src\gui\dialogs\configuration.py:258
msgid "Link your Dropbox account" msgid "Link your Dropbox account"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:228 #: ../src\gui\dialogs\configuration.py:232
msgid "Authorisation" msgid "Authorisation"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:228 #: ../src\gui\dialogs\configuration.py:232
msgid "The authorisation request will be shown on your browser. Copy the code tat Dropbox will provide and, in the text box that will appear on TW Blue, paste it. This code is necessary to continue. You only need to do it once." msgid "The authorisation request will be shown on your browser. Copy the code tat Dropbox will provide and, in the text box that will appear on TW Blue, paste it. This code is necessary to continue. You only need to do it once."
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:230 #: ../src\gui\dialogs\configuration.py:234
msgid "Enter the code here." msgid "Enter the code here."
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:230 #: ../src\gui\dialogs\configuration.py:234
msgid "Verification code" msgid "Verification code"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:242 #: ../src\gui\dialogs\configuration.py:246
msgid "Error during authorisation. Try again later." msgid "Error during authorisation. Try again later."
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:242 #: ../src\gui\dialogs\configuration.py:246
msgid "Error!" msgid "Error!"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:261 #: ../src\gui\dialogs\configuration.py:265
msgid "TW Blue preferences" msgid "TW Blue preferences"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:265 #: ../src\gui\dialogs\configuration.py:269
msgid "General" msgid "General"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:268 #: ../src\gui\dialogs\configuration.py:273
msgid "Show other buffers" msgid "Show other buffers"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:272 #: ../src\gui\dialogs\configuration.py:277
msgid "Sound" msgid "Sound"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:274 #: ../src\gui\dialogs\configuration.py:279
msgid "Audio Services" msgid "Audio Services"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:277 #: ../src\gui\dialogs\configuration.py:282
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:280 ../src\gui\dialogs\follow.py:64 #: ../src\gui\dialogs\configuration.py:285 ../src\gui\dialogs\follow.py:64
#: ../src\gui\dialogs\message.py:186 ../src\gui\dialogs\message.py:274 #: ../src\gui\dialogs\message.py:189 ../src\gui\dialogs\message.py:284
#: ../src\gui\dialogs\message.py:357 ../src\gui\dialogs\search.py:42 #: ../src\gui\dialogs\message.py:385 ../src\gui\dialogs\message.py:472
#: ../src\gui\dialogs\show_user.py:42 ../src\gui\dialogs\trending.py:42 #: ../src\gui\dialogs\search.py:42 ../src\gui\dialogs\show_user.py:42
#: ../src\gui\dialogs\update_profile.py:56 ../src\gui\dialogs\utils.py:42 #: ../src\gui\dialogs\trending.py:52 ../src\gui\dialogs\update_profile.py:56
#: ../src\gui\dialogs\utils.py:42
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:293 #: ../src\gui\dialogs\configuration.py:301
msgid "Followers" msgid "Followers"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:307 #: ../src\gui\dialogs\configuration.py:315
msgid "friends" msgid "friends"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:321 #: ../src\gui\dialogs\configuration.py:329
msgid "Favorites" msgid "Favorites"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:335 #: ../src\gui\dialogs\configuration.py:343
msgid "Events" msgid "Events"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:346 #: ../src\gui\dialogs\configuration.py:354
msgid "Blocked users" msgid "Blocked users"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:360 #: ../src\gui\dialogs\configuration.py:368
msgid "Muted users" msgid "Muted users"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:420 #: ../src\gui\dialogs\configuration.py:428
msgid "Restart TW Blue" msgid "Restart TW Blue"
msgstr "" msgstr ""
#: ../src\gui\dialogs\configuration.py:420 #: ../src\gui\dialogs\configuration.py:428
msgid "The application requires to be restarted to save these changes. Press OK to do it now." msgid "The application requires to be restarted to save these changes. Press OK to do it now."
msgstr "" msgstr ""
@ -1066,7 +1197,7 @@ msgid "Report as spam"
msgstr "" msgstr ""
#: ../src\gui\dialogs\follow.py:61 ../src\gui\dialogs\search.py:40 #: ../src\gui\dialogs\follow.py:61 ../src\gui\dialogs\search.py:40
#: ../src\gui\dialogs\trending.py:40 ../src\gui\dialogs\utils.py:39 #: ../src\gui\dialogs\trending.py:50 ../src\gui\dialogs\utils.py:39
msgid "OK" msgid "OK"
msgstr "" msgstr ""
@ -1178,105 +1309,128 @@ msgstr ""
msgid "Select a list to remove the user" msgid "Select a list to remove the user"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:43 ../src\gui\dialogs\message.py:146 #: ../src\gui\dialogs\message.py:44 ../src\gui\dialogs\message.py:147
msgid "%s - %s of 140 characters" msgid "%s - %s of 140 characters"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:77 #: ../src\gui\dialogs\message.py:78
msgid "Attaching..." msgid "Attaching..."
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:78 #: ../src\gui\dialogs\message.py:79
msgid "Uploading..." msgid "Uploading..."
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:100 #: ../src\gui\dialogs\message.py:101
msgid "Unable to upload the audio" msgid "Unable to upload the audio"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:114 ../src\gui\dialogs\message.py:400 #: ../src\gui\dialogs\message.py:115 ../src\gui\dialogs\message.py:428
#: ../src\gui\dialogs\message.py:513
msgid "Translated" msgid "Translated"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:126 #: ../src\gui\dialogs\message.py:127
msgid "There's no URL to be shortened" msgid "There's no URL to be shortened"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:129 #: ../src\gui\dialogs\message.py:130
msgid "URL shortened" msgid "URL shortened"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:137 ../src\gui\dialogs\message.py:412 #: ../src\gui\dialogs\message.py:138 ../src\gui\dialogs\message.py:440
#: ../src\gui\dialogs\message.py:525
msgid "There's no URL to be expanded" msgid "There's no URL to be expanded"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:140 ../src\gui\dialogs\message.py:415 #: ../src\gui\dialogs\message.py:141 ../src\gui\dialogs\message.py:443
#: ../src\gui\dialogs\message.py:528
msgid "URL expanded" msgid "URL expanded"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:168 ../src\gui\dialogs\message.py:223 #: ../src\gui\dialogs\message.py:169 ../src\gui\dialogs\message.py:233
#: ../src\gui\dialogs\update_profile.py:51 #: ../src\gui\dialogs\update_profile.py:51
#: ../src\gui\dialogs\update_profile.py:88 #: ../src\gui\dialogs\update_profile.py:88
msgid "Upload a picture" msgid "Upload a picture"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:171 ../src\gui\dialogs\message.py:259 #: ../src\gui\dialogs\message.py:172 ../src\gui\dialogs\message.py:269
#: ../src\gui\dialogs\message.py:350 #: ../src\gui\dialogs\message.py:378 ../src\gui\dialogs\message.py:465
msgid "Spelling correction" msgid "Spelling correction"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:175 ../src\gui\dialogs\message.py:263 #: ../src\gui\dialogs\message.py:176 ../src\gui\dialogs\message.py:273
msgid "Shorten URL" msgid "Shorten URL"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:177 ../src\gui\dialogs\message.py:265 #: ../src\gui\dialogs\message.py:178 ../src\gui\dialogs\message.py:275
#: ../src\gui\dialogs\message.py:352 #: ../src\gui\dialogs\message.py:380 ../src\gui\dialogs\message.py:467
msgid "Expand URL" msgid "Expand URL"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:183 ../src\gui\dialogs\message.py:271 #: ../src\gui\dialogs\message.py:184 ../src\gui\dialogs\message.py:281
msgid "Send" msgid "Send"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:219 ../src\gui\dialogs\message.py:230 #: ../src\gui\dialogs\message.py:187
msgid "&Autocomplete users"
msgstr ""
#: ../src\gui\dialogs\message.py:229 ../src\gui\dialogs\message.py:240
#: ../src\gui\dialogs\update_profile.py:84 #: ../src\gui\dialogs\update_profile.py:84
#: ../src\gui\dialogs\update_profile.py:95 #: ../src\gui\dialogs\update_profile.py:95
msgid "Discard image" msgid "Discard image"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:225 ../src\gui\dialogs\update_profile.py:90 #: ../src\gui\dialogs\message.py:235 ../src\gui\dialogs\update_profile.py:90
msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:225 ../src\gui\dialogs\update_profile.py:90 #: ../src\gui\dialogs\message.py:235 ../src\gui\dialogs\update_profile.py:90
msgid "Select the picture to be uploaded" msgid "Select the picture to be uploaded"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:253 #: ../src\gui\dialogs\message.py:263
msgid "Recipient" msgid "Recipient"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:308 #: ../src\gui\dialogs\message.py:318
msgid "Mention to all" msgid "Mention &to all"
msgstr "" msgstr ""
#: ../src\gui\dialogs\message.py:335 #: ../src\gui\dialogs\message.py:345
msgid "Tweet - %i characters " msgid "Tweet - %i characters "
msgstr "" msgstr ""
#: ../src\gui\dialogs\search.py:26 ../src\gui\dialogs\trending.py:26 #: ../src\gui\dialogs\message.py:363
msgid "Retweets: "
msgstr ""
#: ../src\gui\dialogs\message.py:368
msgid "Favourites: "
msgstr ""
#: ../src\gui\dialogs\message.py:451
msgid "View"
msgstr ""
#: ../src\gui\dialogs\message.py:453
msgid "Item"
msgstr ""
#: ../src\gui\dialogs\search.py:26
msgid "Search on Twitter" msgid "Search on Twitter"
msgstr "" msgstr ""
#: ../src\gui\dialogs\search.py:27 ../src\gui\dialogs\trending.py:27 #: ../src\gui\dialogs\search.py:27
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: ../src\gui\dialogs\search.py:34 ../src\gui\dialogs\trending.py:34 #: ../src\gui\dialogs\search.py:34
msgid "Tweets" msgid "Tweets"
msgstr "" msgstr ""
#: ../src\gui\dialogs\search.py:35 ../src\gui\dialogs\trending.py:35 #: ../src\gui\dialogs\search.py:35
msgid "Users" msgid "Users"
msgstr "" msgstr ""
@ -1349,6 +1503,26 @@ msgstr ""
msgid "Favourites: %s" msgid "Favourites: %s"
msgstr "" msgstr ""
#: ../src\gui\dialogs\trending.py:30
msgid "View trending topics"
msgstr ""
#: ../src\gui\dialogs\trending.py:31
msgid "Trending topics by"
msgstr ""
#: ../src\gui\dialogs\trending.py:33
msgid "Country"
msgstr ""
#: ../src\gui\dialogs\trending.py:34
msgid "City"
msgstr ""
#: ../src\gui\dialogs\trending.py:43 ../src\gui\dialogs\update_profile.py:35
msgid "Location"
msgstr ""
#: ../src\gui\dialogs\update_profile.py:27 #: ../src\gui\dialogs\update_profile.py:27
msgid "Update your profile" msgid "Update your profile"
msgstr "" msgstr ""
@ -1357,10 +1531,6 @@ msgstr ""
msgid "Name (20 characters maximum)" msgid "Name (20 characters maximum)"
msgstr "" msgstr ""
#: ../src\gui\dialogs\update_profile.py:35
msgid "Location"
msgstr ""
#: ../src\gui\dialogs\update_profile.py:40 #: ../src\gui\dialogs\update_profile.py:40
msgid "Website" msgid "Website"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

@ -1 +1 @@
Subproject commit 739034e207994b3a05e59e6d7836e68a0a1b6983 Subproject commit ddcbbd21d35995a4877df5b7cd03db12b31bee84