mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-08-26 09:59:23 +00:00
Compare commits
22 Commits
snapshot10
...
snapshot10
Author | SHA1 | Date | |
---|---|---|---|
ce1f8b2cc3 | |||
5933323beb | |||
22b1b0a149 | |||
e71afeb10f | |||
98f026156d | |||
cbee57aa30 | |||
fd9e4dc05d | |||
6022cecad1 | |||
89e39e2168 | |||
a69bf99c1a | |||
d34ef81324 | |||
a3c050195a | |||
3623eafacd | |||
![]() |
2bd3f0a1d1 | ||
f1f828522e | |||
51e4898346 | |||
c4478198b6 | |||
f468924b85 | |||
158b48e4d5 | |||
756a58e443 | |||
85ce5b0791 | |||
![]() |
e534d1cd20 |
25
README.md
25
README.md
@@ -39,7 +39,7 @@ If you want to build both x86 and x64 binaries, you can install python x86 to C:
|
||||
* [Pycurl](http://pycurl.sourceforge.net) 7.19.5.1 for Python 2.7: [32-bit downloads,](https://pypi.python.org/pypi/pycurl/7.19.5.1) [64-bit downloads](http://www.lfd.uci.edu/~gohlke/pythonlibs/)
|
||||
Note: the x64 version is in wheel format instead of executable installer, so you have to install it using pip. For example: C:\python27x64\scripts\pip install pycurl-7.19.5.1-cp27-none-win_amd64.whl
|
||||
* [PyEnchant,](http://pythonhosted.org/pyenchant/) version 1.6.6.
|
||||
x64 version has been built by TW Blue developers, so you only will find it in windows-dependencies folder
|
||||
x64 version has been built by TWBlue developers, so you only will find it in windows-dependencies folder
|
||||
|
||||
The windows installers are available only in the windows-dependencies folder
|
||||
|
||||
@@ -71,8 +71,11 @@ setuptools install a script, called easy_install. You can find it in the python
|
||||
* arrow
|
||||
* goslate
|
||||
* markdown
|
||||
* pocket
|
||||
|
||||
easy_install will automatically get the additional libraries that these packages need to work properly.
|
||||
Run the following command to quickly install and upgrade all packages and their dependencies:
|
||||
easy_install -Z --upgrade six configobj goslate markdown future pocket suds requests oauthlib requests-oauthlib pypubsub pygeocoder arrow
|
||||
|
||||
#### Other dependencies
|
||||
|
||||
@@ -95,9 +98,16 @@ Now that you have installed all these packages, you can run TW Blue from source
|
||||
|
||||
If necessary, change the first part of the command to reflect the location of your python executable. You can run TW Blue using python x86 and x64
|
||||
|
||||
### Generating the documentation
|
||||
|
||||
To generate the documentation in html format, navigate to the doc folder inside this repo. After that, run this command:
|
||||
python generator.py
|
||||
The documentation will be generated, placing each language in a separate folder in the doc directory. Move these folders (for example de, en, es, fr, it, ...) to src/documentation, creating the directory if necesary.
|
||||
Also, copy the license.txt located in the root of the repo to the documentation folder.
|
||||
|
||||
### Building a binary version
|
||||
|
||||
A binary version doesn't need python and the other dependencies to run, it's the same version that you will find on the TW Blue website if you download the zip files.
|
||||
A binary version doesn't need python and the other dependencies to run, it's the same version that you will find on the TW Blue website if you download the zip files or the snapshot versions.
|
||||
|
||||
To build it, run the following command from the src folder:
|
||||
|
||||
@@ -105,6 +115,17 @@ To build it, run the following command from the src folder:
|
||||
|
||||
You will find the binaries in the dist directory.
|
||||
|
||||
### Building an installer
|
||||
|
||||
If you want to install TWBlue in your computer, you must create the installer first. Follow these steps:
|
||||
|
||||
* Navigate to the src directory, and create a binary version for x86: C:\python27\python setup.py py2exe
|
||||
* Move the dist directory to the scripts folder in this repo, and rename it to twblue
|
||||
* Repeat these steps with Python for x64: C:\python27x64\python setup.py py2exe
|
||||
* Move the new dist directory to the scripts folder, and rename it to twblue64
|
||||
* Go to the scripts folder, right click on the twblue.nsi file, and choose compyle unicode NSIS script
|
||||
* This may take a while. After the process, you will find the installer in the scripts folder
|
||||
|
||||
### How to generate a translation template
|
||||
|
||||
Run the gen_pot.bat file, located in the tools directory. Your python installation must be in your path environment variable. The pot file will appear in the tools directory.
|
||||
|
@@ -405,19 +405,21 @@ documentation.append(_(u"""We would also like to thank the translators of TWBlue
|
||||
documentation.append(_(u"""
|
||||
"""))
|
||||
documentation.append(_(u"""* English: [Bryner Villalobos](https://twitter.com/Bry_StarkCR) and [Bill Dengler](https://twitter.com/codeofdusk)."""))
|
||||
documentation.append(_(u"""* Arabic: Mohammed Al Shara."""))
|
||||
documentation.append(_(u"""* Arabic: [Mohammed Al Shara](https://twitter.com/mohammed0204)."""))
|
||||
documentation.append(_(u"""* Catalan: [Joan Rabat](https://twitter.com/joanrabat) and Juan Carlos Rivilla."""))
|
||||
documentation.append(_(u"""* Spanish: [Manuel Cortéz](https://twitter.com/manuelcortez00)."""))
|
||||
documentation.append(_(u"""* Basque: [Sukil Etxenike](https://twitter.com/sukil2011)."""))
|
||||
documentation.append(_(u"""* Finnish: Jani Kinnunen."""))
|
||||
documentation.append(_(u"""* French: Rémi Ruiz."""))
|
||||
documentation.append(_(u"""* Finnish: [Jani Kinnunen](https://twitter.com/jani_kinnunen)."""))
|
||||
documentation.append(_(u"""* French: [Rémi Ruiz](https://twitter.com/blindhelp38)."""))
|
||||
documentation.append(_(u"""* Galician: [Alba Kinteiro](https://twitter.com/albasmileforeve)."""))
|
||||
documentation.append(_(u"""* German: Steffen Schultz."""))
|
||||
documentation.append(_(u"""* German: [Steffen Schultz](https://twitter.com/schulle4u)."""))
|
||||
documentation.append(_(u"""* Croatian: [Zvonimir Stanečić](https://twitter.com/zvonimirek222)."""))
|
||||
documentation.append(_(u"""* Hungarian: Robert Osztolykan."""))
|
||||
documentation.append(_(u"""* Italian: [Christian Leo Mameli](https://twitter.com/llajta2012)."""))
|
||||
documentation.append(_(u"""* Polish: Pawel Masarczyk."""))
|
||||
documentation.append(_(u"""* Portuguese: Odenilton Júnior Santos."""))
|
||||
documentation.append(_(u"""* Russian: Alexander Jaszyn."""))
|
||||
documentation.append(_(u"""* Turkish: Burak."""))
|
||||
documentation.append(_(u"""* Russian: [Александр Яшин](https://twitter.com/radovest)."""))
|
||||
documentation.append(_(u"""* Turkish: [Burak Yüksek](https://twitter.com/burakyuksek)."""))
|
||||
documentation.append(_(u"""
|
||||
"""))
|
||||
documentation.append(_(u"""Many thanks also to the people who worked on the documentation. Initially, [Manuel Cortez](https://twitter.com/manuelcortez00) did the documentation in Spanish, and translated to English by [Bryner Villalobos](https://twitter.com/Bry_StarkCR), [Robert Spangler](https://twitter.com/glasscity1837), [Sussan Rey](https://twitter.com/sussanrey17), [Anibal Hernandez](https://twitter.com/anibalmetal), and [Holly Scott-Gardner](https://twitter.com/holly1994). It was updated by [Sukil Etxenike](https://twitter.com/sukil2011), with some valuable corrections by [Brian Hartgen](https://twitter.com/brianhartgen) and [Bill Dengler](https://twitter.com/codeofdusk)."""))
|
||||
|
@@ -8,7 +8,7 @@ language = string(default="system")
|
||||
hide_gui = boolean(default=False)
|
||||
voice_enabled = boolean(default=False)
|
||||
ask_at_exit = boolean(default=True)
|
||||
handle_longtweets = boolean(default=False)
|
||||
handle_longtweets = boolean(default=True)
|
||||
use_invisible_keyboard_shorcuts = boolean(default=True)
|
||||
play_ready_sound = boolean(default=True)
|
||||
speak_ready_msg = boolean(default=True)
|
||||
|
@@ -5,7 +5,7 @@ if snapshot == False:
|
||||
version = "0.80"
|
||||
update_url = 'http://twblue.es/updates/twblue_ngen.json'
|
||||
else:
|
||||
version = "10.5"
|
||||
version = "10.8"
|
||||
update_url = 'http://twblue.es/updates/snapshots_ngen.json'
|
||||
author = u"Manuel Cortéz, Bill Dengler"
|
||||
authorEmail = "manuel@manuelcortez.net"
|
||||
|
@@ -231,7 +231,8 @@ class baseBufferController(bufferController):
|
||||
return self.get_message()
|
||||
|
||||
def get_message(self):
|
||||
return " ".join(self.compose_function(self.get_right_tweet(), self.session.db, self.session.settings["general"]["relative_times"]))
|
||||
tweet = self.get_right_tweet()
|
||||
return " ".join(self.compose_function(tweet, self.session.db, self.session.settings["general"]["relative_times"]))
|
||||
|
||||
def get_full_tweet(self):
|
||||
tweet = self.get_right_tweet()
|
||||
@@ -604,6 +605,26 @@ class baseBufferController(bufferController):
|
||||
user.profileController(session=self.session, user=dlg.get_user())
|
||||
if hasattr(dlg, "destroy"): dlg.destroy()
|
||||
|
||||
def get_quoted_tweet(self, tweet):
|
||||
# try:
|
||||
quoted_tweet = self.session.twitter.twitter.show_status(id=tweet["id"])
|
||||
urls = utils.find_urls_in_text(quoted_tweet["text"])
|
||||
for url in range(0, len(urls)):
|
||||
try: quoted_tweet["text"] = quoted_tweet["text"].replace(urls[url], quoted_tweet["entities"]["urls"][url]["expanded_url"])
|
||||
except IndexError: pass
|
||||
# except TwythonError as e:
|
||||
# utils.twitter_error(e)
|
||||
# return
|
||||
l = tweets.is_long(quoted_tweet)
|
||||
id = tweets.get_id(l)
|
||||
# try:
|
||||
original_tweet = self.session.twitter.twitter.show_status(id=id)
|
||||
urls = utils.find_urls_in_text(original_tweet["text"])
|
||||
for url in range(0, len(urls)):
|
||||
try: original_tweet["text"] = original_tweet["text"].replace(urls[url], original_tweet["entities"]["urls"][url]["expanded_url"])
|
||||
except IndexError: pass
|
||||
return compose.compose_quoted_tweet(quoted_tweet, original_tweet, self.session.db, self.session.settings["general"]["relative_times"])
|
||||
|
||||
class listBufferController(baseBufferController):
|
||||
def __init__(self, parent, function, name, sessionObject, account, sound=None, bufferType=None, list_id=None, *args, **kwargs):
|
||||
super(listBufferController, self).__init__(parent, function, name, sessionObject, account, sound=None, bufferType=None, *args, **kwargs)
|
||||
@@ -887,6 +908,7 @@ class trendsBufferController(bufferController):
|
||||
self.buffer.name = name
|
||||
self.compose_function = self.compose_function_
|
||||
self.get_formatted_message = self.get_message
|
||||
self.reply = self.search_topic
|
||||
|
||||
def start_stream(self):
|
||||
try:
|
||||
@@ -913,10 +935,12 @@ class trendsBufferController(bufferController):
|
||||
def bind_events(self):
|
||||
log.debug("Binding events...")
|
||||
self.buffer.list.list.Bind(wx.EVT_CHAR_HOOK, self.get_event)
|
||||
# widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.post_tweet, self.buffer.tweet)
|
||||
widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.post_tweet, self.buffer.tweet)
|
||||
widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.tweet_about_this_trend, self.buffer.tweetTrendBtn)
|
||||
|
||||
# widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.retweet, self.buffer.retweet)
|
||||
# widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.direct_message, self.buffer.dm)
|
||||
# widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.reply, self.buffer.reply)
|
||||
widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.search_topic, self.buffer.search_topic)
|
||||
widgetUtils.connect_event(self.buffer.list.list, wx.EVT_LIST_ITEM_RIGHT_CLICK, self.show_menu)
|
||||
widgetUtils.connect_event(self.buffer.list.list, wx.EVT_LIST_KEY_DOWN, self.show_menu_by_key)
|
||||
|
||||
@@ -933,11 +957,13 @@ class trendsBufferController(bufferController):
|
||||
elif dlg == widgetUtils.NO:
|
||||
return False
|
||||
|
||||
def interact(self, *args, **kwargs):
|
||||
self.searchfunction(value=self.get_message())
|
||||
def search_topic(self, *args, **kwargs):
|
||||
topic = self.trends[self.buffer.list.get_selected()]["name"]
|
||||
pub.sendMessage("search", term=topic)
|
||||
|
||||
def show_menu(self, ev, pos=0, *args, **kwargs):
|
||||
menu = menus.trendsPanelMenu()
|
||||
widgetUtils.connect_event(menu, widgetUtils.MENU, self.search_topic, menuitem=menu.search_topic)
|
||||
widgetUtils.connect_event(menu, widgetUtils.MENU, self.tweet_about_this_trend, menuitem=menu.tweetThisTrend)
|
||||
widgetUtils.connect_event(menu, widgetUtils.MENU, self.view, menuitem=menu.view)
|
||||
widgetUtils.connect_event(menu, widgetUtils.MENU, self.copy, menuitem=menu.copy)
|
||||
|
@@ -15,12 +15,22 @@ class listsController(object):
|
||||
self.dialog.populate_list(self.get_all_lists())
|
||||
widgetUtils.connect_event(self.dialog.createBtn, widgetUtils.BUTTON_PRESSED, self.create_list)
|
||||
widgetUtils.connect_event(self.dialog.editBtn, widgetUtils.BUTTON_PRESSED, self.edit_list)
|
||||
widgetUtils.connect_event(self.dialog.deleteBtn, widgetUtils.BUTTON_PRESSED, self.remove_list)
|
||||
widgetUtils.connect_event(self.dialog.view, widgetUtils.BUTTON_PRESSED, self.open_list_as_buffer)
|
||||
else:
|
||||
self.dialog = lists.userListViewer(user)
|
||||
self.dialog.populate_list(self.get_user_lists(user))
|
||||
widgetUtils.connect_event(self.dialog.createBtn, widgetUtils.BUTTON_PRESSED, self.subscribe)
|
||||
widgetUtils.connect_event(self.dialog.deleteBtn, widgetUtils.BUTTON_PRESSED, self.unsubscribe)
|
||||
self.dialog.get_response()
|
||||
|
||||
def get_all_lists(self):
|
||||
return [compose.compose_list(item) for item in self.session.db["lists"]]
|
||||
|
||||
def get_user_lists(self, user):
|
||||
self.lists = self.session.twitter.twitter.show_lists(reverse=True, screen_name=user)
|
||||
return [compose.compose_list(item) for item in self.lists]
|
||||
|
||||
def create_list(self, *args, **kwargs):
|
||||
dialog = lists.createListDialog()
|
||||
if dialog.get_response() == widgetUtils.OK:
|
||||
@@ -73,4 +83,23 @@ class listsController(object):
|
||||
def open_list_as_buffer(self, *args, **kwargs):
|
||||
if self.dialog.lista.get_count() == 0: return
|
||||
list = self.session.db["lists"][self.dialog.get_item()]
|
||||
pub.sendMessage("create-new-buffer", buffer="list", account=self.session.db["user_name"], create=list["name"])
|
||||
pub.sendMessage("create-new-buffer", buffer="list", account=self.session.db["user_name"], create=list["name"])
|
||||
|
||||
def subscribe(self, *args, **kwargs):
|
||||
if self.dialog.lista.get_count() == 0: return
|
||||
list_id = self.lists[self.dialog.get_item()]["id"]
|
||||
try:
|
||||
list = self.session.twitter.twitter.subscribe_to_list(list_id=list_id)
|
||||
item = utils.find_item(list["id"], self.session.db["lists"])
|
||||
self.session.db.settings["lists"].append(list)
|
||||
except TwythonError as e:
|
||||
output.speak("error %s: %s" % (e.status_code, e.msg))
|
||||
|
||||
def unsubscribe(self, *args, **kwargs):
|
||||
if self.dialog.lista.get_count() == 0: return
|
||||
list_id = self.lists[self.dialog.get_item()]["id"]
|
||||
try:
|
||||
list = self.session.twitter.twitter.unsubscribe_from_list(list_id=list_id)
|
||||
self.session.db.settings["lists"].remove(list)
|
||||
except TwythonError as e:
|
||||
output.speak("error %s: %s" % (e.status_code, e.msg))
|
||||
|
@@ -129,6 +129,7 @@ class Controller(object):
|
||||
pub.subscribe(self.create_new_buffer, "create-new-buffer")
|
||||
pub.subscribe(self.restart_streams, "restart-streams")
|
||||
pub.subscribe(self.execute_action, "execute-action")
|
||||
pub.subscribe(self.search_topic, "search")
|
||||
if system == "Windows":
|
||||
pub.subscribe(self.invisible_shorcuts_changed, "invisible-shorcuts-changed")
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.show_hide, menuitem=self.view.show_hide)
|
||||
@@ -156,6 +157,7 @@ class Controller(object):
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.delete, self.view.delete)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.follow, menuitem=self.view.follow)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.send_dm, self.view.dm)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_user_lists, menuitem=self.view.viewLists)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.get_more_items, menuitem=self.view.load_previous_items)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.clear_buffer, menuitem=self.view.clear)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_buffer, self.view.deleteTl)
|
||||
@@ -174,6 +176,8 @@ class Controller(object):
|
||||
widgetUtils.connect_event(self.view.nb, widgetUtils.NOTEBOOK_PAGE_CHANGED, self.buffer_changed)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.report_error, self.view.reportError)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_documentation, self.view.doc)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.add_to_list, self.view.addToList)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_from_list, self.view.removeFromList)
|
||||
|
||||
def set_systray_icon(self):
|
||||
self.systrayIcon = sysTrayIcon.SysTrayIcon()
|
||||
@@ -361,9 +365,9 @@ class Controller(object):
|
||||
buffer.start_stream()
|
||||
buffer.searchfunction = self.search
|
||||
self.buffers.append(buffer)
|
||||
self.view.insert_buffer(buffer.buffer, name=_(u"Trending topics for %s") % (buffer.name), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||
buffer.timer = RepeatingTimer(300, buffer.start_stream)
|
||||
buffer.timer.start()
|
||||
self.view.insert_buffer(buffer.buffer, name=_(u"Trending topics for %s") % (buffer.name_), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||
|
||||
def set_buffer_positions(self,session):
|
||||
"Sets positions for buffers if values exist in the database."
|
||||
@@ -392,7 +396,11 @@ class Controller(object):
|
||||
self.buffers.remove(buffer)
|
||||
del buffer
|
||||
|
||||
def search(self, value="", *args, **kwargs):
|
||||
def search_topic(self, term):
|
||||
self.search(value=term)
|
||||
|
||||
|
||||
def search(self, event=None, value="", *args, **kwargs):
|
||||
""" Searches words or users in twitter. This creates a new buffer containing the search results."""
|
||||
log.debug("Creating a new search...")
|
||||
dlg = dialogs.search.searchDialog(value)
|
||||
@@ -466,8 +474,20 @@ class Controller(object):
|
||||
buffer = self.get_best_buffer()
|
||||
SoundsTutorial.soundsTutorial(buffer.session)
|
||||
|
||||
def view_user_lists(self, users):
|
||||
pass
|
||||
def view_user_lists(self, *args, **kwargs):
|
||||
buff = self.get_best_buffer()
|
||||
if not hasattr(buff, "get_right_tweet"): return
|
||||
tweet = buff.get_right_tweet()
|
||||
if buff.type != "people":
|
||||
users = utils.get_all_users(tweet, buff.session.db)
|
||||
else:
|
||||
users = [tweet["screen_name"]]
|
||||
dlg = dialogs.utils.selectUserDialog(_(u"Select the user"), users)
|
||||
if dlg.get_response() == widgetUtils.OK:
|
||||
user = dlg.get_user()
|
||||
else:
|
||||
return
|
||||
l = listsController.listsController(buff.session, user=user)
|
||||
|
||||
def add_to_list(self, *args, **kwargs):
|
||||
buff = self.get_best_buffer()
|
||||
@@ -496,8 +516,32 @@ class Controller(object):
|
||||
except TwythonError as e:
|
||||
output.speak("error %s: %s" % (e.error_code, e.msg))
|
||||
|
||||
def remove_from_list(self, user):
|
||||
pass
|
||||
def remove_from_list(self, *args, **kwargs):
|
||||
buff = self.get_best_buffer()
|
||||
if not hasattr(buff, "get_right_tweet"): return
|
||||
tweet = buff.get_right_tweet()
|
||||
if buff.type != "people":
|
||||
users = utils.get_all_users(tweet, buff.session.db)
|
||||
else:
|
||||
users = [tweet["screen_name"]]
|
||||
dlg = dialogs.utils.selectUserDialog(_(u"Select the user"), users)
|
||||
if dlg.get_response() == widgetUtils.OK:
|
||||
user = dlg.get_user()
|
||||
else:
|
||||
return
|
||||
dlg = dialogs.lists.removeUserListDialog()
|
||||
dlg.populate_list([compose.compose_list(item) for item in buff.session.db["lists"]])
|
||||
if dlg.get_response() == widgetUtils.OK:
|
||||
try:
|
||||
list = buff.session.twitter.twitter.delete_list_member(list_id=buff.session.db["lists"][dlg.get_item()]["id"], screen_name=user)
|
||||
older_list = utils.find_item(buff.session.db["lists"][dlg.get_item()]["id"], buff.session.db["lists"])
|
||||
listBuffer = self.search_buffer("%s-list" % (buff.session.db["lists"][dlg.get_item()]["name"].lower()), buff.session.db["user_name"])
|
||||
if listBuffer != None: listBuffer.get_user_ids()
|
||||
buff.session.db["lists"].pop(older_list)
|
||||
buff.session.db["lists"].append(list)
|
||||
if listBuffer != None: pub.sendMessage("restart-streams", streams=["timelinesStream"], session=buff.session)
|
||||
except TwythonError as e:
|
||||
output.speak("error %s: %s" % (e.error_code, e.msg))
|
||||
|
||||
def list_manager(self, *args, **kwargs):
|
||||
s = self.get_best_buffer().session
|
||||
@@ -730,7 +774,7 @@ class Controller(object):
|
||||
self.view.insert_buffer(tl.buffer, name=_(u"Timeline for {}").format(dlg.get_user()), pos=pos)
|
||||
buff.session.settings["other_buffers"]["timelines"].append(dlg.get_user())
|
||||
pub.sendMessage("restart-streams", streams=["timelinesStream"], session=buff.session)
|
||||
buffer.session.sound.play("create_timeline.ogg")
|
||||
buff.session.sound.play("create_timeline.ogg")
|
||||
else:
|
||||
if usr["favourites_count"] == 0:
|
||||
commonMessageDialogs.no_favs()
|
||||
|
@@ -74,10 +74,10 @@ class audioUploader(object):
|
||||
def on_pause(self, *args, **kwargs):
|
||||
if self.dialog.get("pause") == _(u"Pause"):
|
||||
self.recording.pause()
|
||||
self.dialog.set("pause", _(u"Resume"))
|
||||
self.dialog.set("pause", _(u"&Resume"))
|
||||
elif self.dialog.get("pause") == _(u"Resume"):
|
||||
self.recording.play()
|
||||
self.dialog.set("pause", _(U"Pause"))
|
||||
self.dialog.set("pause", _(U"&Pause"))
|
||||
|
||||
def on_record(self, *args, **kwargs):
|
||||
if self.recording != None:
|
||||
@@ -92,7 +92,7 @@ class audioUploader(object):
|
||||
self.file = tempfile.mktemp(suffix='.wav')
|
||||
self.recording = sound.recording(self.file)
|
||||
self.recording.play()
|
||||
self.dialog.set("record", _(u"Stop"))
|
||||
self.dialog.set("record", _(u"&Stop"))
|
||||
output.speak(_(u"Recording"))
|
||||
|
||||
def stop_recording(self):
|
||||
@@ -100,11 +100,11 @@ class audioUploader(object):
|
||||
self.recording.free()
|
||||
output.speak(_(u"Stopped"))
|
||||
self.recorded = True
|
||||
self.dialog.set("record", _(u"Record"))
|
||||
self.dialog.set("record", _(u"&Record"))
|
||||
self.file_attached()
|
||||
|
||||
def file_attached(self):
|
||||
self.dialog.set("pause", _(u"Pause"))
|
||||
self.dialog.set("pause", _(u"&Pause"))
|
||||
self.dialog.disable_control("record")
|
||||
self.dialog.enable_control("play")
|
||||
self.dialog.enable_control("discard")
|
||||
@@ -137,11 +137,11 @@ class audioUploader(object):
|
||||
# try:
|
||||
self.playing = sound_lib.stream.FileStream(file=unicode(self.file), flags=sound_lib.stream.BASS_UNICODE)
|
||||
self.playing.play()
|
||||
self.dialog.set("play", _(u"Stop"))
|
||||
self.dialog.set("play", _(u"&Stop"))
|
||||
try:
|
||||
while self.playing.is_playing:
|
||||
pass
|
||||
self.dialog.set("play", _(u"Play"))
|
||||
self.dialog.set("play", _(u"&Play"))
|
||||
self.playing.free()
|
||||
self.playing = None
|
||||
except:
|
||||
@@ -151,7 +151,7 @@ class audioUploader(object):
|
||||
output.speak(_(u"Stopped"))
|
||||
self.playing.stop()
|
||||
self.playing.free()
|
||||
self.dialog.set("play", _(u"Play"))
|
||||
self.dialog.set("play", _(u"&Play"))
|
||||
self.playing = None
|
||||
|
||||
def postprocess(self):
|
||||
|
@@ -31,14 +31,14 @@ class audioDialog(widgetUtils.BaseDialog):
|
||||
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
btnSizer2 = wx.BoxSizer(wx.HORIZONTAL)
|
||||
|
||||
self.play = wx.Button(panel, -1, _(u"Play"))
|
||||
self.play = wx.Button(panel, -1, _(u"&Play"))
|
||||
self.play.Disable()
|
||||
self.pause = wx.Button(panel, -1, _(u"Pause"))
|
||||
self.pause = wx.Button(panel, -1, _(u"&Pause"))
|
||||
self.pause.Disable()
|
||||
self.record = wx.Button(panel, -1, _(u"Record"))
|
||||
self.record = wx.Button(panel, -1, _(u"&Record"))
|
||||
self.record.SetFocus()
|
||||
self.attach_exists = wx.Button(panel, -1, _(u"Add an existing file"))
|
||||
self.discard = wx.Button(panel, -1, _(u"Discard"))
|
||||
self.attach_exists = wx.Button(panel, -1, _(u"&Add an existing file"))
|
||||
self.discard = wx.Button(panel, -1, _(u"&Discard"))
|
||||
self.discard.Disable()
|
||||
label = wx.StaticText(panel, -1, _(u"Upload to"))
|
||||
self.services = wx.ComboBox(panel, -1, choices=services, value=services[0], style=wx.CB_READONLY)
|
||||
@@ -47,7 +47,7 @@ class audioDialog(widgetUtils.BaseDialog):
|
||||
servicesBox.Add(self.services, 0, wx.ALL, 5)
|
||||
self.attach = wx.Button(panel, wx.ID_OK, _(u"Attach"))
|
||||
self.attach.Disable()
|
||||
cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Cancel"))
|
||||
cancel = wx.Button(panel, wx.ID_CANCEL, _(u"&Cancel"))
|
||||
btnSizer.Add(self.play, 0, wx.ALL, 5)
|
||||
btnSizer.Add(self.pause, 0, wx.ALL, 5)
|
||||
btnSizer.Add(self.record, 0, wx.ALL, 5)
|
||||
|
@@ -11,9 +11,17 @@ def fix():
|
||||
locales.BasqueLocale = BasqueLocale
|
||||
locales.TurkishLocale.names[-1] = "tr_tr"
|
||||
locales.ArabicLocale.names[-1] = "ar_eg"
|
||||
# insert a modified function so if there is no language available in arrow, returns English locale.
|
||||
locales.get_locale = get_locale
|
||||
# We need to reassign the locales list for updating the list with our new contents.
|
||||
locales._locales = locales._map_locales()
|
||||
|
||||
def get_locale(name):
|
||||
locale_cls = locales._locales.get(name.lower())
|
||||
if locale_cls is None:
|
||||
return locales.EnglishLocale()
|
||||
return locale_cls()
|
||||
|
||||
class CatalaLocale(Locale):
|
||||
names = ['ca', 'ca_ca']
|
||||
past = 'Fa {0}'
|
||||
|
@@ -1,6 +1,5 @@
|
||||
import win32com.client
|
||||
|
||||
|
||||
def fix():
|
||||
if win32com.client.gencache.is_readonly == True:
|
||||
win32com.client.gencache.is_readonly = False
|
||||
|
@@ -69,6 +69,7 @@ def getLanguageDescription(language):
|
||||
"ar":pgettext("languageName","Arabic"),
|
||||
"ne":pgettext("languageName","Nepali"),
|
||||
"sr":pgettext("languageName","Serbian (Latin)"),
|
||||
"ja":pgettext("languageName","Japanese"),
|
||||
}.get(language,None)
|
||||
return desc
|
||||
|
||||
@@ -195,10 +196,13 @@ def langToWindowsLocale(lang):
|
||||
"gl": "glc",
|
||||
"eu": "euq",
|
||||
"hu": "hun",
|
||||
"hr": "hrv",
|
||||
"it": "ita",
|
||||
"ja": "jpn",
|
||||
"pl": "plk",
|
||||
"pt": "ptb",
|
||||
"ru": "rus",
|
||||
"tr": "trk"
|
||||
"tr": "trk",
|
||||
"sr": "eng",
|
||||
}
|
||||
return languages[lang]
|
||||
|
File diff suppressed because it is too large
Load Diff
BIN
src/locales/EU/LC_MESSAGES/twblue_old.mo
Normal file
BIN
src/locales/EU/LC_MESSAGES/twblue_old.mo
Normal file
Binary file not shown.
2896
src/locales/EU/LC_MESSAGES/twblue_old.po
Normal file
2896
src/locales/EU/LC_MESSAGES/twblue_old.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,8 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TW Blue 0.51\n"
|
||||
"POT-Creation-Date: 2015-08-04 13:37+Hora de verano central (Mxico)\n"
|
||||
"PO-Revision-Date: 2015-08-04 23:07+0200\n"
|
||||
"POT-Creation-Date: 2015-09-04 08:51+Hora de verano central (Mxico)\n"
|
||||
"PO-Revision-Date: 2015-09-04 16:45+0200\n"
|
||||
"Last-Translator: Steffen Schultz <schulle3o@yahoo.de>\n"
|
||||
"Language-Team: Steffen Schultz <schulle3o@yahoo.de>\n"
|
||||
"Language: de\n"
|
||||
@@ -19,174 +19,176 @@ msgstr ""
|
||||
msgid "This action is not supported for this buffer"
|
||||
msgstr "Diese Aktion ist in dieser Ansicht nicht verfügbar."
|
||||
|
||||
#: ../src\controller\buffersController.py:128 ../src\wxUI\buffers\base.py:24
|
||||
#: ../src\controller\buffersController.py:128
|
||||
#: ../src\controller\buffersController.py:957 ../src\wxUI\buffers\base.py:24
|
||||
#: ../src\wxUI\buffers\events.py:14 ../src\wxUI\buffers\trends.py:17
|
||||
#: ../src\wxUI\dialogs\message.py:250 ../src\wxUI\sysTrayIcon.py:33
|
||||
#: ../src\wxUI\dialogs\message.py:251 ../src\wxUI\sysTrayIcon.py:33
|
||||
msgid "Tweet"
|
||||
msgstr "Tweet"
|
||||
|
||||
#: ../src\controller\buffersController.py:129
|
||||
#: ../src\controller\buffersController.py:958
|
||||
msgid "Write the tweet here"
|
||||
msgstr "Gib deinen Tweet hier ein"
|
||||
|
||||
#: ../src\controller\buffersController.py:297
|
||||
#: ../src\controller\buffersController.py:667
|
||||
#: ../src\controller\buffersController.py:312
|
||||
#: ../src\controller\buffersController.py:753
|
||||
msgid "%s items retrieved"
|
||||
msgstr "%s Einträge abgerufen"
|
||||
|
||||
#: ../src\controller\buffersController.py:317
|
||||
#: ../src\controller\buffersController.py:332
|
||||
msgid "This buffer is not a timeline; it can't be deleted."
|
||||
msgstr "Diese Ansicht ist keine Zeitleiste und kann nicht gelöscht werden."
|
||||
|
||||
#: ../src\controller\buffersController.py:378
|
||||
#: ../src\controller\buffersController.py:448
|
||||
msgid "Reply to %s"
|
||||
msgstr "Antwort an %s"
|
||||
|
||||
#: ../src\controller\buffersController.py:378
|
||||
#: ../src\controller\buffersController.py:448
|
||||
#: ../src\keystrokeEditor\constants.py:11 ../src\wxUI\buffers\base.py:26
|
||||
msgid "Reply"
|
||||
msgstr "Antwort"
|
||||
|
||||
#: ../src\controller\buffersController.py:405
|
||||
#: ../src\controller\buffersController.py:475
|
||||
msgid "Direct message to %s"
|
||||
msgstr "Direktnachricht an %s"
|
||||
|
||||
#: ../src\controller\buffersController.py:405
|
||||
#: ../src\controller\mainController.py:1105
|
||||
#: ../src\controller\buffersController.py:475
|
||||
#: ../src\controller\mainController.py:1125
|
||||
msgid "New direct message"
|
||||
msgstr "Neue Direktnachricht"
|
||||
|
||||
#: ../src\controller\buffersController.py:426
|
||||
#: ../src\controller\buffersController.py:496
|
||||
msgid "Add your comment to the tweet"
|
||||
msgstr "Gib deinen Kommentar ein."
|
||||
|
||||
#: ../src\controller\buffersController.py:426
|
||||
#: ../src\controller\buffersController.py:496
|
||||
#: ../src\keystrokeEditor\constants.py:12 ../src\wxUI\buffers\base.py:25
|
||||
#: ../src\wxUI\commonMessageDialogs.py:9 ../src\wxUI\dialogs\message.py:126
|
||||
msgid "Retweet"
|
||||
msgstr "Retweet"
|
||||
|
||||
#: ../src\controller\buffersController.py:498
|
||||
#: ../src\controller\buffersController.py:567
|
||||
msgid "Opening URL..."
|
||||
msgstr "URL wird geöffnet..."
|
||||
|
||||
#: ../src\controller\buffersController.py:533
|
||||
#: ../src\controller\buffersController.py:602
|
||||
msgid "User details"
|
||||
msgstr "Benutzerdetails"
|
||||
|
||||
#: ../src\controller\buffersController.py:582
|
||||
#: ../src\controller\buffersController.py:651
|
||||
msgid "Empty"
|
||||
msgstr "Leer"
|
||||
|
||||
#: ../src\controller\buffersController.py:626
|
||||
#: ../src\controller\buffersController.py:712
|
||||
msgid "Mention to %s"
|
||||
msgstr "Erwähnung an %s"
|
||||
|
||||
#: ../src\controller\buffersController.py:626 ../src\wxUI\buffers\people.py:15
|
||||
#: ../src\controller\buffersController.py:712 ../src\wxUI\buffers\people.py:15
|
||||
msgid "Mention"
|
||||
msgstr "Erwähnung"
|
||||
|
||||
#: ../src\controller\mainController.py:250
|
||||
#: ../src\controller\mainController.py:254
|
||||
msgid "Ready"
|
||||
msgstr "Bereit"
|
||||
|
||||
#: ../src\controller\mainController.py:281
|
||||
#: ../src\controller\mainController.py:286
|
||||
msgid "Home"
|
||||
msgstr "Start"
|
||||
|
||||
#: ../src\controller\mainController.py:285
|
||||
#: ../src\controller\mainController.py:290
|
||||
msgid "Mentions"
|
||||
msgstr "Erwähnungen"
|
||||
|
||||
#: ../src\controller\mainController.py:289
|
||||
#: ../src\controller\mainController.py:294
|
||||
msgid "Direct messages"
|
||||
msgstr "Direktnachrichten"
|
||||
|
||||
#: ../src\controller\mainController.py:293
|
||||
#: ../src\controller\mainController.py:298
|
||||
msgid "Sent direct messages"
|
||||
msgstr "Gesendete Direktnachrichten"
|
||||
|
||||
#: ../src\controller\mainController.py:297
|
||||
#: ../src\controller\mainController.py:302
|
||||
msgid "Sent tweets"
|
||||
msgstr "Gesendete Tweets"
|
||||
|
||||
#: ../src\controller\mainController.py:302
|
||||
#: ../src\controller\mainController.py:1221
|
||||
#: ../src\wxUI\dialogs\userSelection.py:18
|
||||
#: ../src\controller\mainController.py:307
|
||||
#: ../src\controller\mainController.py:1248
|
||||
#: ../src\wxUI\dialogs\userSelection.py:20
|
||||
msgid "Favourites"
|
||||
msgstr "Favoriten"
|
||||
|
||||
#: ../src\controller\mainController.py:306
|
||||
#: ../src\controller\mainController.py:1226
|
||||
#: ../src\controller\mainController.py:311
|
||||
#: ../src\controller\mainController.py:1253
|
||||
msgid "Followers"
|
||||
msgstr "Folger"
|
||||
|
||||
#: ../src\controller\mainController.py:310
|
||||
#: ../src\controller\mainController.py:1231
|
||||
#: ../src\controller\mainController.py:315
|
||||
#: ../src\controller\mainController.py:1258
|
||||
msgid "Friends"
|
||||
msgstr "Freunde"
|
||||
|
||||
#: ../src\controller\mainController.py:314
|
||||
#: ../src\controller\mainController.py:1236
|
||||
#: ../src\controller\mainController.py:319
|
||||
#: ../src\controller\mainController.py:1263
|
||||
msgid "Blocked users"
|
||||
msgstr "Blockierte Benutzer"
|
||||
|
||||
#: ../src\controller\mainController.py:318
|
||||
#: ../src\controller\mainController.py:1241
|
||||
#: ../src\controller\mainController.py:323
|
||||
#: ../src\controller\mainController.py:1268
|
||||
msgid "Muted users"
|
||||
msgstr "Stummgeschaltete Benutzer"
|
||||
|
||||
#: ../src\controller\mainController.py:322
|
||||
#: ../src\controller\mainController.py:1246
|
||||
#: ../src\controller\mainController.py:327
|
||||
#: ../src\controller\mainController.py:1273
|
||||
msgid "Events"
|
||||
msgstr "Ereignisse"
|
||||
|
||||
#: ../src\controller\mainController.py:325
|
||||
#: ../src\controller\mainController.py:330
|
||||
msgid "Timelines"
|
||||
msgstr "Zeitleisten"
|
||||
|
||||
#: ../src\controller\mainController.py:329
|
||||
#: ../src\controller\mainController.py:737
|
||||
#: ../src\controller\mainController.py:334
|
||||
#: ../src\controller\mainController.py:756
|
||||
msgid "Timeline for {}"
|
||||
msgstr "Zeitleiste für {}"
|
||||
|
||||
#: ../src\controller\mainController.py:332
|
||||
#: ../src\controller\mainController.py:337
|
||||
msgid "Favourites timelines"
|
||||
msgstr "Favoritenzeitleisten"
|
||||
|
||||
#: ../src\controller\mainController.py:336
|
||||
#: ../src\controller\mainController.py:749
|
||||
#: ../src\controller\mainController.py:341
|
||||
#: ../src\controller\mainController.py:771
|
||||
msgid "Favourites timeline for {}"
|
||||
msgstr "Favoritenzeitleiste für {}"
|
||||
|
||||
#: ../src\controller\mainController.py:341 ../src\wxUI\dialogs\lists.py:12
|
||||
#: ../src\controller\mainController.py:346 ../src\wxUI\dialogs\lists.py:12
|
||||
msgid "Lists"
|
||||
msgstr "Listen"
|
||||
|
||||
#: ../src\controller\mainController.py:346
|
||||
#: ../src\controller\mainController.py:1256
|
||||
#: ../src\controller\mainController.py:351
|
||||
#: ../src\controller\mainController.py:1284
|
||||
msgid "List for {}"
|
||||
msgstr "Liste für {}"
|
||||
|
||||
#: ../src\controller\mainController.py:349
|
||||
#: ../src\controller\mainController.py:354
|
||||
msgid "Searches"
|
||||
msgstr "Suchen"
|
||||
|
||||
#: ../src\controller\mainController.py:353
|
||||
#: ../src\controller\mainController.py:424
|
||||
#: ../src\controller\mainController.py:358
|
||||
#: ../src\controller\mainController.py:416
|
||||
msgid "Search for {}"
|
||||
msgstr "Suche nach {}"
|
||||
|
||||
#: ../src\controller\mainController.py:361
|
||||
#: ../src\controller\mainController.py:795
|
||||
#: ../src\controller\mainController.py:368
|
||||
#: ../src\controller\mainController.py:817
|
||||
msgid "Trending topics for %s"
|
||||
msgstr "Trends für %s"
|
||||
|
||||
#: ../src\controller\mainController.py:443
|
||||
#: ../src\controller\mainController.py:890
|
||||
#: ../src\controller\mainController.py:909
|
||||
#: ../src\controller\mainController.py:929
|
||||
#: ../src\controller\mainController.py:949
|
||||
#: ../src\controller\mainController.py:435
|
||||
#: ../src\controller\mainController.py:912
|
||||
#: ../src\controller\mainController.py:931
|
||||
#: ../src\controller\mainController.py:950
|
||||
#: ../src\controller\mainController.py:969
|
||||
msgid ""
|
||||
"No session is currently in focus. Focus a session with the next or previous "
|
||||
"session shortcut."
|
||||
@@ -194,98 +196,99 @@ msgstr ""
|
||||
"Derzeit ist keine Sitzung im Fokus. Bitte benutze die Tastenkombinationen "
|
||||
"vorherige und nächste Sitzung, um eine Sitzung zu fokussieren."
|
||||
|
||||
#: ../src\controller\mainController.py:447
|
||||
#: ../src\controller\mainController.py:439
|
||||
msgid "Empty buffer."
|
||||
msgstr "Leere Ansicht."
|
||||
|
||||
#: ../src\controller\mainController.py:454
|
||||
#: ../src\controller\mainController.py:446
|
||||
msgid "{0} not found."
|
||||
msgstr "{0} nicht gefunden."
|
||||
|
||||
#: ../src\controller\mainController.py:490
|
||||
#: ../src\controller\mainController.py:482
|
||||
#: ../src\controller\mainController.py:509
|
||||
msgid "Select the user"
|
||||
msgstr "Wähle den Benutzer"
|
||||
|
||||
#: ../src\controller\mainController.py:768
|
||||
#: ../src\controller\mainController.py:790
|
||||
msgid "Conversation with {0}"
|
||||
msgstr "Unterhaltung mit {0}"
|
||||
|
||||
#: ../src\controller\mainController.py:812
|
||||
#: ../src\controller\mainController.py:831
|
||||
#: ../src\controller\mainController.py:834
|
||||
#: ../src\controller\mainController.py:853
|
||||
msgid "There are no coordinates in this tweet"
|
||||
msgstr "Dieser Tweet hat keine Koordinaten."
|
||||
|
||||
#: ../src\controller\mainController.py:814
|
||||
#: ../src\controller\mainController.py:833
|
||||
#: ../src\controller\mainController.py:836
|
||||
#: ../src\controller\mainController.py:855
|
||||
msgid "There are no results for the coordinates in this tweet"
|
||||
msgstr "Keine Ergebnisse für die Koordinaten in diesem Tweet."
|
||||
|
||||
#: ../src\controller\mainController.py:816
|
||||
#: ../src\controller\mainController.py:835
|
||||
#: ../src\controller\mainController.py:838
|
||||
#: ../src\controller\mainController.py:857
|
||||
msgid "Error decoding coordinates. Try again later."
|
||||
msgstr ""
|
||||
"Fehler beim Umwandeln der Koordinaten. Bitte versuche es später erneut."
|
||||
|
||||
#: ../src\controller\mainController.py:940
|
||||
#: ../src\controller\mainController.py:959
|
||||
#: ../src\controller\mainController.py:960
|
||||
#: ../src\controller\mainController.py:979
|
||||
msgid "%s, %s of %s"
|
||||
msgstr "%s, %s von %s"
|
||||
|
||||
#: ../src\controller\mainController.py:942
|
||||
#: ../src\controller\mainController.py:961
|
||||
#: ../src\controller\mainController.py:982
|
||||
#: ../src\controller\mainController.py:1003
|
||||
#: ../src\controller\mainController.py:962
|
||||
#: ../src\controller\mainController.py:981
|
||||
#: ../src\controller\mainController.py:1002
|
||||
#: ../src\controller\mainController.py:1023
|
||||
msgid "%s. Empty"
|
||||
msgstr "%s. Leer"
|
||||
|
||||
#: ../src\controller\mainController.py:974
|
||||
#: ../src\controller\mainController.py:994
|
||||
msgid "{0}: This account is not logged into Twitter."
|
||||
msgstr "{0}: Dieser Account ist nicht bei Twitter eingeloggt."
|
||||
|
||||
#: ../src\controller\mainController.py:980
|
||||
#: ../src\controller\mainController.py:1001
|
||||
#: ../src\controller\mainController.py:1000
|
||||
#: ../src\controller\mainController.py:1021
|
||||
msgid "%s. %s, %s of %s"
|
||||
msgstr "%s. %s, %s von %s"
|
||||
|
||||
#: ../src\controller\mainController.py:995
|
||||
#: ../src\controller\mainController.py:1015
|
||||
msgid "{0}: This account is not logged into twitter."
|
||||
msgstr "{0}: Dieser Account ist nicht bei Twitter eingeloggt."
|
||||
|
||||
#: ../src\controller\mainController.py:1096
|
||||
#: ../src\controller\mainController.py:1116
|
||||
msgid "One mention from %s "
|
||||
msgstr "Eine Erwähnung von %s"
|
||||
|
||||
#: ../src\controller\mainController.py:1185
|
||||
#: ../src\controller\mainController.py:1194
|
||||
#: ../src\controller\mainController.py:1205
|
||||
#: ../src\controller\mainController.py:1214
|
||||
msgid "One tweet from %s"
|
||||
msgstr "Ein Tweet von %s"
|
||||
|
||||
#: ../src\controller\mainController.py:1251
|
||||
#: ../src\controller\mainController.py:1278
|
||||
msgid "This list is already opened"
|
||||
msgstr "Diese Liste ist bereits geöffnet."
|
||||
|
||||
#: ../src\controller\mainController.py:1309
|
||||
#: ../src\controller\mainController.py:1337
|
||||
msgid "The auto-reading of new tweets is enabled for this buffer"
|
||||
msgstr "Das automatische Vorlesen von Tweets ist für diese Ansicht aktiv."
|
||||
|
||||
#: ../src\controller\mainController.py:1312
|
||||
#: ../src\controller\mainController.py:1340
|
||||
msgid "The auto-reading of new tweets is disabled for this buffer"
|
||||
msgstr ""
|
||||
"Das automatische Vorlesen von Tweets ist für diese Ansicht deaktiviert."
|
||||
|
||||
#: ../src\controller\mainController.py:1318
|
||||
#: ../src\controller\mainController.py:1346
|
||||
msgid "Session mute on"
|
||||
msgstr "Sitzung stummgeschaltet"
|
||||
|
||||
#: ../src\controller\mainController.py:1321
|
||||
#: ../src\controller\mainController.py:1349
|
||||
msgid "Session mute off"
|
||||
msgstr "Sitzung nicht stummgeschaltet"
|
||||
|
||||
#: ../src\controller\mainController.py:1328
|
||||
#: ../src\controller\mainController.py:1356
|
||||
msgid "Buffer mute on"
|
||||
msgstr "Stummschaltung ein"
|
||||
|
||||
#: ../src\controller\mainController.py:1331
|
||||
#: ../src\controller\mainController.py:1359
|
||||
msgid "Buffer mute off"
|
||||
msgstr "Stummschaltung aus"
|
||||
|
||||
@@ -293,73 +296,73 @@ msgstr "Stummschaltung aus"
|
||||
msgid "Copied"
|
||||
msgstr "Kopiert"
|
||||
|
||||
#: ../src\controller\messages.py:43
|
||||
#: ../src\controller\messages.py:44
|
||||
msgid "Translated"
|
||||
msgstr "Übersetzt"
|
||||
|
||||
#: ../src\controller\messages.py:50
|
||||
#: ../src\controller\messages.py:51
|
||||
msgid "There's no URL to be shortened"
|
||||
msgstr "Es gibt keine URL zum Kürzen."
|
||||
|
||||
#: ../src\controller\messages.py:54 ../src\controller\messages.py:61
|
||||
#: ../src\controller\messages.py:55 ../src\controller\messages.py:62
|
||||
msgid "URL shortened"
|
||||
msgstr "URL gekürzt"
|
||||
|
||||
#: ../src\controller\messages.py:67
|
||||
#: ../src\controller\messages.py:68
|
||||
msgid "There's no URL to be expanded"
|
||||
msgstr "Es gibt keine URL zum Expandieren."
|
||||
|
||||
#: ../src\controller\messages.py:71 ../src\controller\messages.py:78
|
||||
#: ../src\controller\messages.py:72 ../src\controller\messages.py:79
|
||||
msgid "URL expanded"
|
||||
msgstr "URL expandiert"
|
||||
|
||||
#: ../src\controller\messages.py:89
|
||||
#: ../src\controller\messages.py:90
|
||||
msgid "%s - %s of %d characters"
|
||||
msgstr "%s - %s von %d Zeichen"
|
||||
|
||||
#: ../src\controller\messages.py:93
|
||||
#: ../src\controller\messages.py:94
|
||||
msgid "%s - %s characters"
|
||||
msgstr "%s - %s Zeichen"
|
||||
|
||||
#: ../src\controller\messages.py:109
|
||||
#: ../src\controller\messages.py:111
|
||||
msgid "Unable to upload the audio"
|
||||
msgstr "Audio kann nicht hochgeladen werden."
|
||||
|
||||
#: ../src\controller\messages.py:124 ../src\controller\messages.py:132
|
||||
#: ../src\controller\messages.py:127 ../src\controller\messages.py:135
|
||||
#: ../src\wxUI\dialogs\update_profile.py:77
|
||||
msgid "Discard image"
|
||||
msgstr "Bild verwerfen"
|
||||
|
||||
#: ../src\controller\messages.py:127 ../src\controller\user.py:53
|
||||
#: ../src\controller\messages.py:130 ../src\controller\user.py:53
|
||||
#: ../src\extra\AudioUploader\audioUploader.py:127
|
||||
msgid "Discarded"
|
||||
msgstr "Verworfen"
|
||||
|
||||
#: ../src\controller\messages.py:128 ../src\wxUI\dialogs\message.py:133
|
||||
#: ../src\controller\messages.py:131 ../src\wxUI\dialogs\message.py:133
|
||||
#: ../src\wxUI\dialogs\update_profile.py:32
|
||||
#: ../src\wxUI\dialogs\update_profile.py:75
|
||||
msgid "Upload a picture"
|
||||
msgstr "Ein Bild hochladen"
|
||||
|
||||
#: ../src\controller\settings.py:119 ../src\controller\settings.py:178
|
||||
#: ../src\controller\settings.py:121 ../src\controller\settings.py:180
|
||||
#: ../src\wxUI\dialogs\configuration.py:100
|
||||
msgid "Ask"
|
||||
msgstr "Fragen"
|
||||
|
||||
#: ../src\controller\settings.py:121 ../src\controller\settings.py:180
|
||||
#: ../src\controller\settings.py:123 ../src\controller\settings.py:182
|
||||
#: ../src\wxUI\dialogs\configuration.py:100
|
||||
msgid "Retweet without comments"
|
||||
msgstr "Retweet ohne Kommentar"
|
||||
|
||||
#: ../src\controller\settings.py:123 ../src\wxUI\dialogs\configuration.py:100
|
||||
#: ../src\controller\settings.py:125 ../src\wxUI\dialogs\configuration.py:100
|
||||
msgid "Retweet with comments"
|
||||
msgstr "Retweet mit Kommentar"
|
||||
|
||||
#: ../src\controller\settings.py:155
|
||||
#: ../src\controller\settings.py:157
|
||||
msgid "Account settings for %s"
|
||||
msgstr "Account-Einstellungen für %s"
|
||||
|
||||
#: ../src\controller\settings.py:263 ../src\wxUI\dialogs\configuration.py:291
|
||||
#: ../src\controller\settings.py:265 ../src\wxUI\dialogs\configuration.py:291
|
||||
msgid "Connect your Pocket account"
|
||||
msgstr "Pocket-Account verbinden"
|
||||
|
||||
@@ -419,7 +422,7 @@ msgstr "Tweets: %s\n"
|
||||
msgid "Favourites: %s"
|
||||
msgstr "Favoriten: %s"
|
||||
|
||||
#: ../src\controller\userActionsController.py:69
|
||||
#: ../src\controller\userActionsController.py:75
|
||||
msgid "You can't ignore direct messages"
|
||||
msgstr "Du kannst keine Direktnachrichten ignorieren."
|
||||
|
||||
@@ -705,6 +708,8 @@ msgstr ""
|
||||
#: ../src\extra\SpellChecker\wx_ui.py:76 ../src\issueReporter\wx_ui.py:83
|
||||
#: ../src\issueReporter\wx_ui.py:86 ../src\wxUI\commonMessageDialogs.py:38
|
||||
#: ../src\wxUI\commonMessageDialogs.py:50
|
||||
#: ../src\wxUI\commonMessageDialogs.py:57
|
||||
#: ../src\wxUI\commonMessageDialogs.py:60
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
@@ -1169,8 +1174,8 @@ msgid "autodetect"
|
||||
msgstr "Automatisch"
|
||||
|
||||
#: ../src\extra\translator\wx_ui.py:25 ../src\wxUI\dialogs\message.py:140
|
||||
#: ../src\wxUI\dialogs\message.py:201 ../src\wxUI\dialogs\message.py:279
|
||||
#: ../src\wxUI\dialogs\message.py:334
|
||||
#: ../src\wxUI\dialogs\message.py:201 ../src\wxUI\dialogs\message.py:280
|
||||
#: ../src\wxUI\dialogs\message.py:335
|
||||
msgid "Translate message"
|
||||
msgstr "Nachricht übersetzen"
|
||||
|
||||
@@ -1506,7 +1511,7 @@ msgid "Keystroke"
|
||||
msgstr "Tastenkombination"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:13 ../src\wxUI\dialogs\userActions.py:9
|
||||
#: ../src\wxUI\dialogs\userActions.py:16
|
||||
#: ../src\wxUI\dialogs\userActions.py:18
|
||||
msgid "Action"
|
||||
msgstr "Aktion"
|
||||
|
||||
@@ -1514,57 +1519,61 @@ msgstr "Aktion"
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:20
|
||||
msgid "Execute action"
|
||||
msgstr "Aktion ausführen"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:349
|
||||
#: ../src\wxUI\dialogs\message.py:84 ../src\wxUI\dialogs\message.py:144
|
||||
#: ../src\wxUI\dialogs\message.py:204 ../src\wxUI\dialogs\message.py:280
|
||||
#: ../src\wxUI\dialogs\message.py:335 ../src\wxUI\dialogs\search.py:26
|
||||
#: ../src\wxUI\dialogs\message.py:204 ../src\wxUI\dialogs\message.py:281
|
||||
#: ../src\wxUI\dialogs\message.py:336 ../src\wxUI\dialogs\search.py:26
|
||||
#: ../src\wxUI\dialogs\show_user.py:17 ../src\wxUI\dialogs\trends.py:28
|
||||
#: ../src\wxUI\dialogs\update_profile.py:35
|
||||
#: ../src\wxUI\dialogs\userActions.py:40
|
||||
#: ../src\wxUI\dialogs\userSelection.py:28 ../src\wxUI\dialogs\utils.py:35
|
||||
#: ../src\wxUI\dialogs\userActions.py:42
|
||||
#: ../src\wxUI\dialogs\userSelection.py:30 ../src\wxUI\dialogs\utils.py:37
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:43
|
||||
#: ../src\keystrokeEditor\wx_ui.py:45
|
||||
msgid "Editing keystroke"
|
||||
msgstr "Bearbeite Tastenkombination"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:46
|
||||
#: ../src\keystrokeEditor\wx_ui.py:48
|
||||
msgid "Control"
|
||||
msgstr "STRG"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:47
|
||||
#: ../src\keystrokeEditor\wx_ui.py:49
|
||||
msgid "Alt"
|
||||
msgstr "Alt"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:48
|
||||
#: ../src\keystrokeEditor\wx_ui.py:50
|
||||
msgid "Shift"
|
||||
msgstr "Umschalt"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:49
|
||||
#: ../src\keystrokeEditor\wx_ui.py:51
|
||||
msgid "Windows"
|
||||
msgstr "Windows"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:55
|
||||
#: ../src\keystrokeEditor\wx_ui.py:57
|
||||
msgid "Key"
|
||||
msgstr "Taste"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:60 ../src\wxUI\dialogs\find.py:18
|
||||
#: ../src\keystrokeEditor\wx_ui.py:62 ../src\wxUI\dialogs\find.py:18
|
||||
#: ../src\wxUI\dialogs\search.py:24 ../src\wxUI\dialogs\trends.py:26
|
||||
#: ../src\wxUI\dialogs\userActions.py:38
|
||||
#: ../src\wxUI\dialogs\userSelection.py:26 ../src\wxUI\dialogs\utils.py:32
|
||||
#: ../src\wxUI\dialogs\userActions.py:40
|
||||
#: ../src\wxUI\dialogs\userSelection.py:28 ../src\wxUI\dialogs\utils.py:34
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:73
|
||||
#: ../src\keystrokeEditor\wx_ui.py:75
|
||||
msgid "You need to use the Windows key"
|
||||
msgstr "Du musst die Windows-Taste verwenden."
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:73 ../src\keystrokeEditor\wx_ui.py:76
|
||||
#: ../src\keystrokeEditor\wx_ui.py:75 ../src\keystrokeEditor\wx_ui.py:78
|
||||
msgid "Invalid keystroke"
|
||||
msgstr "Ungültige Tastenkombination"
|
||||
|
||||
#: ../src\keystrokeEditor\wx_ui.py:76
|
||||
#: ../src\keystrokeEditor\wx_ui.py:78
|
||||
msgid "You must provide a character for the keystroke"
|
||||
msgstr "Du musst ein Zeichen für die Tastenkombination angeben."
|
||||
|
||||
@@ -1572,11 +1581,11 @@ msgstr "Du musst ein Zeichen für die Tastenkombination angeben."
|
||||
msgid "User default"
|
||||
msgstr "Benutzerstandard"
|
||||
|
||||
#: ../src\sessionmanager\session.py:185
|
||||
#: ../src\sessionmanager\session.py:186
|
||||
msgid "%s failed. Reason: %s"
|
||||
msgstr "%s fehlgeschlagen. Grund: %s"
|
||||
|
||||
#: ../src\sessionmanager\session.py:191
|
||||
#: ../src\sessionmanager\session.py:192
|
||||
msgid "%s succeeded."
|
||||
msgstr "%s erfolgreich."
|
||||
|
||||
@@ -1844,7 +1853,7 @@ msgstr "Datum"
|
||||
#: ../src\wxUI\buffers\base.py:11 ../src\wxUI\buffers\people.py:10
|
||||
#: ../src\wxUI\buffers\user_searches.py:9
|
||||
#: ../src\wxUI\dialogs\userActions.py:10
|
||||
#: ../src\wxUI\dialogs\userSelection.py:10 ../src\wxUI\dialogs\utils.py:29
|
||||
#: ../src\wxUI\dialogs\userSelection.py:10 ../src\wxUI\dialogs\utils.py:30
|
||||
msgid "User"
|
||||
msgstr "Benutzer"
|
||||
|
||||
@@ -1900,7 +1909,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Möchtest du diesen Tweet wirklich löschen? Er wird auch auf Twitter gelöscht."
|
||||
|
||||
#: ../src\wxUI\commonMessageDialogs.py:12 ../src\wxUI\dialogs\lists.py:133
|
||||
#: ../src\wxUI\commonMessageDialogs.py:12 ../src\wxUI\dialogs\lists.py:134
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
@@ -2020,6 +2029,17 @@ msgstr ""
|
||||
msgid "We need your help"
|
||||
msgstr "Wir brauchen deine Hilfe"
|
||||
|
||||
#: ../src\wxUI\commonMessageDialogs.py:57
|
||||
msgid "This user has no tweets. {0} can't create a timeline."
|
||||
msgstr ""
|
||||
"Dieser Benutzer hat keine Tweets, {0} kann daher keine Zeitleiste erstellen."
|
||||
|
||||
#: ../src\wxUI\commonMessageDialogs.py:60
|
||||
msgid "This user has no favorited tweets. {0} can't create a timeline."
|
||||
msgstr ""
|
||||
"Dieser Benutzer hat keine Favoriten. {0} kann daher keine Zeitleiste "
|
||||
"erstellen."
|
||||
|
||||
#: ../src\wxUI\dialogs\configuration.py:14
|
||||
msgid "Language"
|
||||
msgstr "Sprache"
|
||||
@@ -2333,7 +2353,7 @@ msgstr "Hinzufügen"
|
||||
msgid "Select a list to remove the user"
|
||||
msgstr "Wähle eine Liste zum Entfernen des Benutzers."
|
||||
|
||||
#: ../src\wxUI\dialogs\lists.py:133
|
||||
#: ../src\wxUI\dialogs\lists.py:134
|
||||
msgid "Do you really want to delete this list?"
|
||||
msgstr "Möchtest du diese Liste wirklich löschen?"
|
||||
|
||||
@@ -2359,8 +2379,8 @@ msgid "Shorten URL"
|
||||
msgstr "URL kürzen"
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:77 ../src\wxUI\dialogs\message.py:137
|
||||
#: ../src\wxUI\dialogs\message.py:198 ../src\wxUI\dialogs\message.py:277
|
||||
#: ../src\wxUI\dialogs\message.py:332
|
||||
#: ../src\wxUI\dialogs\message.py:198 ../src\wxUI\dialogs\message.py:278
|
||||
#: ../src\wxUI\dialogs\message.py:333
|
||||
msgid "Expand URL"
|
||||
msgstr "URL expandieren"
|
||||
|
||||
@@ -2369,7 +2389,8 @@ msgid "Translate..."
|
||||
msgstr "Übersetzen..."
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:81 ../src\wxUI\dialogs\message.py:141
|
||||
#: ../src\wxUI\dialogs\message.py:186
|
||||
#: ../src\wxUI\dialogs\message.py:186 ../src\wxUI\dialogs\userActions.py:13
|
||||
#: ../src\wxUI\dialogs\userSelection.py:13 ../src\wxUI\dialogs\utils.py:29
|
||||
msgid "&Autocomplete users"
|
||||
msgstr "&Auto-Vervollständigung der Benutzer"
|
||||
|
||||
@@ -2389,7 +2410,7 @@ msgid "Select the picture to be uploaded"
|
||||
msgstr "Wähle das hochzuladende Bild aus."
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:134 ../src\wxUI\dialogs\message.py:195
|
||||
#: ../src\wxUI\dialogs\message.py:276 ../src\wxUI\dialogs\message.py:331
|
||||
#: ../src\wxUI\dialogs\message.py:277 ../src\wxUI\dialogs\message.py:332
|
||||
msgid "Spelling correction"
|
||||
msgstr "Rechtschreibprüfung"
|
||||
|
||||
@@ -2397,27 +2418,27 @@ msgstr "Rechtschreibprüfung"
|
||||
msgid "Recipient"
|
||||
msgstr "Empfänger"
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:236
|
||||
#: ../src\wxUI\dialogs\message.py:237
|
||||
msgid "Men&tion to all"
|
||||
msgstr "Alle er&wähnen"
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:245
|
||||
#: ../src\wxUI\dialogs\message.py:246
|
||||
msgid "Tweet - %i characters "
|
||||
msgstr "Tweet - %i Zeichen "
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:262
|
||||
#: ../src\wxUI\dialogs\message.py:263
|
||||
msgid "Retweets: "
|
||||
msgstr "Retweets: "
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:267
|
||||
#: ../src\wxUI\dialogs\message.py:268
|
||||
msgid "Favourites: "
|
||||
msgstr "Favoriten: "
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:317
|
||||
#: ../src\wxUI\dialogs\message.py:318
|
||||
msgid "View"
|
||||
msgstr "Ansehen"
|
||||
|
||||
#: ../src\wxUI\dialogs\message.py:319
|
||||
#: ../src\wxUI\dialogs\message.py:320
|
||||
msgid "Item"
|
||||
msgstr "Eintrag"
|
||||
|
||||
@@ -2429,7 +2450,7 @@ msgstr "Auf Twitter suchen"
|
||||
msgid "Search"
|
||||
msgstr "Suchen"
|
||||
|
||||
#: ../src\wxUI\dialogs\search.py:18 ../src\wxUI\dialogs\userSelection.py:17
|
||||
#: ../src\wxUI\dialogs\search.py:18 ../src\wxUI\dialogs\userSelection.py:19
|
||||
msgid "Tweets"
|
||||
msgstr "Tweets"
|
||||
|
||||
@@ -2489,35 +2510,35 @@ msgstr "Profil aktualisieren"
|
||||
msgid "Select URL"
|
||||
msgstr "Wähle eine URL"
|
||||
|
||||
#: ../src\wxUI\dialogs\userActions.py:17
|
||||
#: ../src\wxUI\dialogs\userActions.py:19
|
||||
msgid "Follow"
|
||||
msgstr "Folgen"
|
||||
|
||||
#: ../src\wxUI\dialogs\userActions.py:18
|
||||
#: ../src\wxUI\dialogs\userActions.py:20
|
||||
msgid "Unfollow"
|
||||
msgstr "Entfolgen"
|
||||
|
||||
#: ../src\wxUI\dialogs\userActions.py:19
|
||||
#: ../src\wxUI\dialogs\userActions.py:21
|
||||
msgid "Mute"
|
||||
msgstr "Stummschalten"
|
||||
|
||||
#: ../src\wxUI\dialogs\userActions.py:20
|
||||
#: ../src\wxUI\dialogs\userActions.py:22
|
||||
msgid "Unmute"
|
||||
msgstr "Stummschaltung aufheben"
|
||||
|
||||
#: ../src\wxUI\dialogs\userActions.py:21
|
||||
#: ../src\wxUI\dialogs\userActions.py:23
|
||||
msgid "Block"
|
||||
msgstr "Blockieren"
|
||||
|
||||
#: ../src\wxUI\dialogs\userActions.py:22
|
||||
#: ../src\wxUI\dialogs\userActions.py:24
|
||||
msgid "Unblock"
|
||||
msgstr "Blockierung aufheben"
|
||||
|
||||
#: ../src\wxUI\dialogs\userActions.py:23
|
||||
#: ../src\wxUI\dialogs\userActions.py:25
|
||||
msgid "Report as spam"
|
||||
msgstr "Als Spam melden"
|
||||
|
||||
#: ../src\wxUI\dialogs\userActions.py:24
|
||||
#: ../src\wxUI\dialogs\userActions.py:26
|
||||
msgid "Ignore tweets from this client"
|
||||
msgstr "Tweets dieses Clients ignorieren"
|
||||
|
||||
@@ -2525,10 +2546,84 @@ msgstr "Tweets dieses Clients ignorieren"
|
||||
msgid "Timeline for %s"
|
||||
msgstr "Zeitleiste von %s"
|
||||
|
||||
#: ../src\wxUI\dialogs\userSelection.py:16
|
||||
#: ../src\wxUI\dialogs\userSelection.py:18
|
||||
msgid "Buffer type"
|
||||
msgstr "Ansichts-Typ"
|
||||
|
||||
#: ../src\wxUI\menus.py:7 ../src\wxUI\view.py:29
|
||||
msgid "&Retweet"
|
||||
msgstr "&Retweet"
|
||||
|
||||
#: ../src\wxUI\menus.py:9 ../src\wxUI\menus.py:31 ../src\wxUI\view.py:28
|
||||
msgid "Re&ply"
|
||||
msgstr "Ant&worten"
|
||||
|
||||
#: ../src\wxUI\menus.py:11 ../src\wxUI\view.py:30
|
||||
msgid "Add to &favourites"
|
||||
msgstr "Zu &Favoriten hinzufügen"
|
||||
|
||||
#: ../src\wxUI\menus.py:13 ../src\wxUI\view.py:31
|
||||
msgid "Remove from favo&urites"
|
||||
msgstr "Aus Fav&oriten entfernen"
|
||||
|
||||
#: ../src\wxUI\menus.py:15 ../src\wxUI\menus.py:33 ../src\wxUI\menus.py:49
|
||||
msgid "&Open URL"
|
||||
msgstr "URL &öffnen"
|
||||
|
||||
#: ../src\wxUI\menus.py:17 ../src\wxUI\menus.py:35 ../src\wxUI\menus.py:51
|
||||
msgid "&Play audio"
|
||||
msgstr "Audio abs&pielen"
|
||||
|
||||
#: ../src\wxUI\menus.py:19 ../src\wxUI\menus.py:53 ../src\wxUI\view.py:32
|
||||
msgid "&Show tweet"
|
||||
msgstr "Tweet an&sehen"
|
||||
|
||||
#: ../src\wxUI\menus.py:21 ../src\wxUI\menus.py:39 ../src\wxUI\menus.py:55
|
||||
#: ../src\wxUI\menus.py:65 ../src\wxUI\menus.py:82 ../src\wxUI\menus.py:94
|
||||
msgid "&Copy to clipboard"
|
||||
msgstr "in Zwischenablage &kopieren"
|
||||
|
||||
#: ../src\wxUI\menus.py:23 ../src\wxUI\menus.py:41 ../src\wxUI\menus.py:57
|
||||
#: ../src\wxUI\menus.py:67 ../src\wxUI\view.py:35
|
||||
msgid "&Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: ../src\wxUI\menus.py:25 ../src\wxUI\menus.py:43 ../src\wxUI\menus.py:84
|
||||
msgid "&User actions..."
|
||||
msgstr "Ben&utzeraktionen"
|
||||
|
||||
#: ../src\wxUI\menus.py:37
|
||||
msgid "&Show direct message"
|
||||
msgstr "Direktnachricht an&sehen"
|
||||
|
||||
#: ../src\wxUI\menus.py:63
|
||||
msgid "&Show event"
|
||||
msgstr "Ereignis an&sehen"
|
||||
|
||||
#: ../src\wxUI\menus.py:73
|
||||
msgid "Direct &message"
|
||||
msgstr "Direkt&nachricht"
|
||||
|
||||
#: ../src\wxUI\menus.py:75 ../src\wxUI\view.py:44
|
||||
msgid "&View lists"
|
||||
msgstr "Listen &ansehen"
|
||||
|
||||
#: ../src\wxUI\menus.py:78 ../src\wxUI\view.py:46
|
||||
msgid "Show user &profile"
|
||||
msgstr "Benutzer&profil ansehen"
|
||||
|
||||
#: ../src\wxUI\menus.py:80
|
||||
msgid "&Show user"
|
||||
msgstr "Benutzer an&sehen"
|
||||
|
||||
#: ../src\wxUI\menus.py:90
|
||||
msgid "&Tweet about this trend"
|
||||
msgstr "Über diesen &Trend twittern"
|
||||
|
||||
#: ../src\wxUI\menus.py:92
|
||||
msgid "&Show item"
|
||||
msgstr "Eintrag an&sehen"
|
||||
|
||||
#: ../src\wxUI\sysTrayIcon.py:34 ../src\wxUI\view.py:22
|
||||
msgid "&Global settings"
|
||||
msgstr "&Globale Einstellungen"
|
||||
@@ -2545,7 +2640,7 @@ msgstr "&Profil aktualisieren"
|
||||
msgid "&Show / hide"
|
||||
msgstr "&Zeigen / verbergen"
|
||||
|
||||
#: ../src\wxUI\sysTrayIcon.py:38 ../src\wxUI\view.py:63
|
||||
#: ../src\wxUI\sysTrayIcon.py:38 ../src\wxUI\view.py:62
|
||||
msgid "&Documentation"
|
||||
msgstr "Dokumentation^"
|
||||
|
||||
@@ -2585,30 +2680,10 @@ msgstr "Tasten&kombinationen bearbeiten"
|
||||
msgid "E&xit"
|
||||
msgstr "&Beenden"
|
||||
|
||||
#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:74
|
||||
#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:73
|
||||
msgid "&Tweet"
|
||||
msgstr "&Tweet"
|
||||
|
||||
#: ../src\wxUI\view.py:28
|
||||
msgid "Re&ply"
|
||||
msgstr "Ant&worten"
|
||||
|
||||
#: ../src\wxUI\view.py:29
|
||||
msgid "&Retweet"
|
||||
msgstr "&Retweet"
|
||||
|
||||
#: ../src\wxUI\view.py:30
|
||||
msgid "Add to &favourites"
|
||||
msgstr "Zu &Favoriten hinzufügen"
|
||||
|
||||
#: ../src\wxUI\view.py:31
|
||||
msgid "Remove from favo&urites"
|
||||
msgstr "Aus Fav&oriten entfernen"
|
||||
|
||||
#: ../src\wxUI\view.py:32
|
||||
msgid "&Show tweet"
|
||||
msgstr "Tweet an&sehen"
|
||||
|
||||
#: ../src\wxUI\view.py:33
|
||||
msgid "View &address"
|
||||
msgstr "&Adresse abrufen"
|
||||
@@ -2617,10 +2692,6 @@ msgstr "&Adresse abrufen"
|
||||
msgid "View conversa&tion"
|
||||
msgstr "Konversa&tion anzeigen"
|
||||
|
||||
#: ../src\wxUI\view.py:35
|
||||
msgid "&Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: ../src\wxUI\view.py:39
|
||||
msgid "&Actions..."
|
||||
msgstr "&Aktionen..."
|
||||
@@ -2641,95 +2712,87 @@ msgstr "Zur L&iste hinzufügen"
|
||||
msgid "R&emove from list"
|
||||
msgstr "Aus Liste &entfernen"
|
||||
|
||||
#: ../src\wxUI\view.py:45
|
||||
msgid "&View lists"
|
||||
msgstr "Listen &ansehen"
|
||||
|
||||
#: ../src\wxUI\view.py:47
|
||||
msgid "Show user &profile"
|
||||
msgstr "Benutzer&profil ansehen"
|
||||
|
||||
#: ../src\wxUI\view.py:48
|
||||
msgid "V&iew favourites"
|
||||
msgstr "Favor&iten ansehen"
|
||||
|
||||
#: ../src\wxUI\view.py:52
|
||||
#: ../src\wxUI\view.py:51
|
||||
msgid "New &trending topics buffer..."
|
||||
msgstr "Neue &Trends-Ansicht"
|
||||
|
||||
#: ../src\wxUI\view.py:53
|
||||
#: ../src\wxUI\view.py:52
|
||||
msgid "Find a string in the currently focused buffer..."
|
||||
msgstr "Eine Zeichenkette im der momentan fokussierten Ansicht suchen..."
|
||||
|
||||
#: ../src\wxUI\view.py:54
|
||||
#: ../src\wxUI\view.py:53
|
||||
msgid "&Load previous items"
|
||||
msgstr "Vorhergehende Einträge &laden"
|
||||
|
||||
#: ../src\wxUI\view.py:56
|
||||
#: ../src\wxUI\view.py:55
|
||||
msgid "&Mute"
|
||||
msgstr "Stu&mmschalten"
|
||||
|
||||
#: ../src\wxUI\view.py:57
|
||||
#: ../src\wxUI\view.py:56
|
||||
msgid "&Autoread"
|
||||
msgstr "&Automatisch vorlesen"
|
||||
|
||||
#: ../src\wxUI\view.py:58
|
||||
#: ../src\wxUI\view.py:57
|
||||
msgid "&Clear buffer"
|
||||
msgstr "Ansicht l&eeren"
|
||||
|
||||
#: ../src\wxUI\view.py:59
|
||||
#: ../src\wxUI\view.py:58
|
||||
msgid "&Destroy"
|
||||
msgstr "&Löschen"
|
||||
|
||||
#: ../src\wxUI\view.py:64
|
||||
#: ../src\wxUI\view.py:63
|
||||
msgid "Sounds &tutorial"
|
||||
msgstr "Sounds &erlernen"
|
||||
|
||||
#: ../src\wxUI\view.py:65
|
||||
#: ../src\wxUI\view.py:64
|
||||
msgid "&What's new in this version?"
|
||||
msgstr "&Was ist neu in dieser Version?"
|
||||
|
||||
#: ../src\wxUI\view.py:67
|
||||
#: ../src\wxUI\view.py:66
|
||||
msgid "&Check for updates"
|
||||
msgstr "Nach &Updates suchen"
|
||||
|
||||
#: ../src\wxUI\view.py:68
|
||||
#: ../src\wxUI\view.py:67
|
||||
msgid "&Report an error"
|
||||
msgstr "Fehle&r melden"
|
||||
|
||||
#: ../src\wxUI\view.py:69
|
||||
#: ../src\wxUI\view.py:68
|
||||
msgid "{0}'s &website"
|
||||
msgstr "{0}-&Webseite"
|
||||
|
||||
#: ../src\wxUI\view.py:70
|
||||
#: ../src\wxUI\view.py:69
|
||||
msgid "About &{0}"
|
||||
msgstr "Über &{0}"
|
||||
|
||||
#: ../src\wxUI\view.py:73
|
||||
#: ../src\wxUI\view.py:72
|
||||
msgid "&Application"
|
||||
msgstr "&Anwendung"
|
||||
|
||||
#: ../src\wxUI\view.py:75
|
||||
#: ../src\wxUI\view.py:74
|
||||
msgid "&User"
|
||||
msgstr "Ben&utzer"
|
||||
|
||||
#: ../src\wxUI\view.py:76
|
||||
#: ../src\wxUI\view.py:75
|
||||
msgid "&Buffer"
|
||||
msgstr "A&nsicht"
|
||||
|
||||
#: ../src\wxUI\view.py:77
|
||||
#: ../src\wxUI\view.py:76
|
||||
msgid "&Help"
|
||||
msgstr "&Hilfe"
|
||||
|
||||
#: ../src\wxUI\view.py:158
|
||||
#: ../src\wxUI\view.py:159
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#: ../src\wxUI\view.py:181
|
||||
#: ../src\wxUI\view.py:182
|
||||
msgid "Update"
|
||||
msgstr "Update"
|
||||
|
||||
#: ../src\wxUI\view.py:181
|
||||
#: ../src\wxUI\view.py:182
|
||||
msgid "Your {0} version is up to date"
|
||||
msgstr "Deine {0}-Version ist aktuell"
|
||||
|
||||
|
BIN
src/locales/de/LC_MESSAGES/twblue_old.mo
Normal file
BIN
src/locales/de/LC_MESSAGES/twblue_old.mo
Normal file
Binary file not shown.
2854
src/locales/de/LC_MESSAGES/twblue_old.po
Normal file
2854
src/locales/de/LC_MESSAGES/twblue_old.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
2871
src/locales/fi/LC_MESSAGES/twblue_old.po
Normal file
2871
src/locales/fi/LC_MESSAGES/twblue_old.po
Normal file
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
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
src/locales/ja/lc_messages/twblue.mo
Normal file
BIN
src/locales/ja/lc_messages/twblue.mo
Normal file
Binary file not shown.
2794
src/locales/ja/lc_messages/twblue.po
Normal file
2794
src/locales/ja/lc_messages/twblue.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
BIN
src/locales/sr/LC_MESSAGES/twblue.mo
Normal file
BIN
src/locales/sr/LC_MESSAGES/twblue.mo
Normal file
Binary file not shown.
2794
src/locales/sr/LC_MESSAGES/twblue.po
Normal file
2794
src/locales/sr/LC_MESSAGES/twblue.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
2882
src/locales/tr/LC_MESSAGES/twblue_old.po
Normal file
2882
src/locales/tr/LC_MESSAGES/twblue_old.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,7 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
############################################################
|
||||
from twitter import utils
|
||||
|
||||
def get_id(url):
|
||||
return url.split("/")[-1]
|
||||
@@ -25,4 +26,9 @@ def is_long(tweet):
|
||||
for url in range(0, len(tweet["entities"]["urls"])):
|
||||
if "twitter.com" in tweet["entities"]["urls"][url]["expanded_url"]:
|
||||
long = get_id(tweet["entities"]["urls"][url]["expanded_url"])
|
||||
return long
|
||||
return long
|
||||
|
||||
def clear_url(tweet):
|
||||
urls = utils.find_urls_in_text(tweet["text"])
|
||||
tweet["message"] = tweet["message"].replace(urls[-1]+".", "")
|
||||
return tweet
|
@@ -9,7 +9,7 @@ import output
|
||||
import time
|
||||
import sound
|
||||
import logging
|
||||
from twitter import utils
|
||||
from twitter import utils, compose
|
||||
from twython import TwythonError, TwythonRateLimitError, TwythonAuthError
|
||||
import config_utils
|
||||
import shelve
|
||||
@@ -18,6 +18,7 @@ import os
|
||||
from mysc.thread_utils import stream_threaded
|
||||
from pubsub import pub
|
||||
log = logging.getLogger("sessionmanager.session")
|
||||
from long_tweets import tweets
|
||||
|
||||
sessions = {}
|
||||
|
||||
@@ -61,6 +62,7 @@ class Session(object):
|
||||
self.db[name] = []
|
||||
for i in data:
|
||||
if utils.find_item(i["id"], self.db[name]) == None and utils.is_allowed(i, self.settings["twitter"]["ignored_clients"]) == True:
|
||||
i = self.check_quoted_status(i)
|
||||
if self.settings["general"]["reverse_timelines"] == False: self.db[name].append(i)
|
||||
else: self.db[name].insert(0, i)
|
||||
num = num+1
|
||||
@@ -413,3 +415,27 @@ class Session(object):
|
||||
os.remove(shelfname)
|
||||
except:
|
||||
pass
|
||||
|
||||
def check_quoted_status(self, tweet):
|
||||
status = tweets.is_long(tweet)
|
||||
if status != False:
|
||||
tweet["quoted"] = 1
|
||||
tweet = self.get_quoted_tweet(tweet)
|
||||
return tweet
|
||||
|
||||
|
||||
def get_quoted_tweet(self, tweet):
|
||||
quoted_tweet = self.twitter.twitter.show_status(id=tweet["id"])
|
||||
urls = utils.find_urls_in_text(quoted_tweet["text"])
|
||||
for url in range(0, len(urls)):
|
||||
try: quoted_tweet["text"] = quoted_tweet["text"].replace(urls[url], quoted_tweet["entities"]["urls"][url]["expanded_url"])
|
||||
except IndexError: pass
|
||||
l = tweets.is_long(quoted_tweet)
|
||||
id = tweets.get_id(l)
|
||||
original_tweet = self.twitter.twitter.show_status(id=id)
|
||||
urls = utils.find_urls_in_text(original_tweet["text"])
|
||||
for url in range(0, len(urls)):
|
||||
try: original_tweet["text"] = original_tweet["text"].replace(urls[url], original_tweet["entities"]["urls"][url]["expanded_url"])
|
||||
except IndexError: pass
|
||||
return compose.compose_quoted_tweet(quoted_tweet, original_tweet)
|
||||
|
||||
|
@@ -30,6 +30,10 @@ class timelinesStreamer(TwythonStreamer):
|
||||
def check_tls(self, data):
|
||||
for i in self.session.settings["other_buffers"]["timelines"]:
|
||||
if data["user"]["screen_name"] == i:
|
||||
if utils.find_item(data["id"], self.session.db["%s-timeline" % (i,)]) != None:
|
||||
log.error("duplicated tweet. Ignoring it...")
|
||||
return
|
||||
data = self.session.check_quoted_status(data)
|
||||
if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s-timeline" % (i,)].append(data)
|
||||
else: self.session.db["%s-timeline" % (i,)].insert(0, data)
|
||||
pub.sendMessage("item-in-timeline", data= data, user= self.session.db["user_name"], who= i)
|
||||
@@ -38,6 +42,7 @@ class timelinesStreamer(TwythonStreamer):
|
||||
i.users.index(data["user"]["id"])
|
||||
usr = data["in_reply_to_user_id"]
|
||||
if (usr != None and usr in self.friends) or data.has_key("retweeted_status"):
|
||||
data = self.session.check_quoted_status(data)
|
||||
if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s" % (i.name,)].append(data)
|
||||
else: self.session.db["%s" % (i,)].insert(0, data)
|
||||
pub.sendMessage("item-in-list", data= data, user= self.session.db["user_name"], where= i.name)
|
||||
|
@@ -33,6 +33,10 @@ class streamer(TwythonStreamer):
|
||||
|
||||
def put_data(self, place, data):
|
||||
if self.session.db.has_key(place):
|
||||
if utils.find_item(data["id"], self.session.db[place]) != None:
|
||||
log.error("duplicated tweet. Ignoring it...")
|
||||
return
|
||||
data = self.session.check_quoted_status(data)
|
||||
if self.session.settings["general"]["reverse_timelines"] == False:
|
||||
self.session.db[place].append(data)
|
||||
else:
|
||||
|
@@ -10,7 +10,7 @@ import languageHandler
|
||||
import arrow
|
||||
import logging
|
||||
import config
|
||||
from long_tweets import twishort
|
||||
from long_tweets import twishort, tweets
|
||||
log = logging.getLogger("compose")
|
||||
|
||||
def StripChars(s):
|
||||
@@ -60,11 +60,33 @@ def compose_tweet(tweet, db, relative_times):
|
||||
try:
|
||||
oldtext=text
|
||||
text=twishort.get_full_text(tweet['long_uri'])
|
||||
try: text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], StripChars(text))
|
||||
except KeyError: pass
|
||||
except:
|
||||
text=oldtext
|
||||
if tweet.has_key("message"):
|
||||
text = tweet["message"]
|
||||
return [user+", ", text, ts+", ", source]
|
||||
|
||||
tweet["text"] = text
|
||||
return [user+", ", tweet["text"], ts+", ", source]
|
||||
|
||||
def compose_quoted_tweet(quoted_tweet, original_tweet):
|
||||
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
|
||||
text = StripChars(quoted_tweet["text"])
|
||||
quoting_user = quoted_tweet["user"]["name"]
|
||||
source = re.sub(r"(?s)<.*?>", "", quoted_tweet["source"])
|
||||
try: text = "rt @%s: %s" % (quoted_tweet["retweeted_status"]["user"]["screen_name"], StripChars(quoted_tweet["retweeted_status"]["text"]))
|
||||
except KeyError: text = "%s" % (StripChars(quoted_tweet["text"]))
|
||||
if text[-1] in chars: text=text+"."
|
||||
original_user = original_tweet["user"]["screen_name"]
|
||||
original_text = StripChars(original_tweet["text"])
|
||||
try: original_text = "rt @%s: %s" % (original_tweet["retweeted_status"]["user"]["screen_name"], StripChars(original_tweet["retweeted_status"]["text"]))
|
||||
except KeyError: original_text = "%s" % (StripChars(original_tweet["text"]))
|
||||
quoted_tweet["message"] = _(u"{0}. Quoted tweet from @{1}: {2}").format( quoted_tweet["text"], original_user, original_text)
|
||||
quoted_tweet = tweets.clear_url(quoted_tweet)
|
||||
return quoted_tweet
|
||||
|
||||
def compose_followers_list(tweet, db, relative_times=True):
|
||||
if system == "Windows":
|
||||
original_date = arrow.get(tweet["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
|
||||
|
@@ -16,9 +16,11 @@ class trendsPanel(wx.Panel):
|
||||
self.create_list()
|
||||
self.tweet = wx.Button(self, -1, _(u"Tweet"))
|
||||
self.tweetTrendBtn = wx.Button(self, -1, _(u"Tweet about this trend"))
|
||||
self.search_topic = wx.Button(self, -1, _(u"Search topic"))
|
||||
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
btnSizer.Add(self.tweet, 0, wx.ALL, 5)
|
||||
btnSizer.Add(self.tweetTrendBtn, 0, wx.ALL, 5)
|
||||
btnSizer.Add(self.search_topic, 0, wx.ALL, 5)
|
||||
self.sizer.Add(btnSizer, 0, wx.ALL, 5)
|
||||
self.sizer.Add(self.list.list, 0, wx.ALL, 5)
|
||||
self.SetSizer(self.sizer)
|
||||
|
@@ -123,6 +123,7 @@ class removeUserListDialog(listViewer):
|
||||
self.SetTitle(_(u"Select a list to remove the user"))
|
||||
self.createBtn.SetLabel(_(u"Remove"))
|
||||
self.createBtn.SetDefault()
|
||||
self.createBtn.SetId(wx.ID_OK)
|
||||
self.editBtn.Disable()
|
||||
self.view.Disable()
|
||||
# self.subscriptors.Disable()
|
||||
|
@@ -87,6 +87,8 @@ class peoplePanelMenu(wx.Menu):
|
||||
class trendsPanelMenu(wx.Menu):
|
||||
def __init__(self):
|
||||
super(trendsPanelMenu, self).__init__()
|
||||
self.search_topic = wx.MenuItem(self, wx.NewId(), _(u"Search topic"))
|
||||
self.AppendItem(self.search_topic)
|
||||
self.tweetThisTrend = wx.MenuItem(self, wx.NewId(), _(u"&Tweet about this trend"))
|
||||
self.AppendItem(self.tweetThisTrend)
|
||||
self.view = wx.MenuItem(self, wx.NewId(), _(u"&Show item"))
|
||||
|
@@ -41,9 +41,7 @@ class mainFrame(wx.Frame):
|
||||
self.dm = user.Append(wx.NewId(), _(u"Direct me&ssage"))
|
||||
self.addToList = user.Append(wx.NewId(), _(u"&Add to list"))
|
||||
self.removeFromList = user.Append(wx.NewId(), _(u"R&emove from list"))
|
||||
self.removeFromList.Enable(False)
|
||||
self.viewLists = user.Append(wx.NewId(), _(u"&View lists"))
|
||||
self.viewLists.Enable(False)
|
||||
self.details = user.Append(wx.NewId(), _(u"Show user &profile"))
|
||||
self.favs = user.Append(wx.NewId(), _(u"V&iew favourites"))
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2015-08-04 13:37+Hora de verano central (M<>xico)\n"
|
||||
"POT-Creation-Date: 2015-09-29 09:37+Hora de verano central (M<>xico)\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -51,7 +51,7 @@ msgstr ""
|
||||
#: ../doc\strings.py:378 ../doc\strings.py:381 ../doc\strings.py:384
|
||||
#: ../doc\strings.py:387 ../doc\strings.py:390 ../doc\strings.py:393
|
||||
#: ../doc\strings.py:396 ../doc\strings.py:399 ../doc\strings.py:402
|
||||
#: ../doc\strings.py:405 ../doc\strings.py:421 ../doc\strings.py:424
|
||||
#: ../doc\strings.py:405 ../doc\strings.py:423 ../doc\strings.py:426
|
||||
msgid ""
|
||||
"\n"
|
||||
msgstr ""
|
||||
@@ -361,7 +361,7 @@ msgid "* Global settings: Opens a dialogue which lets you configure settings for
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:166
|
||||
msgid "* Quit: asks whether you want to exit the program. If the answer is yes, it closes the application. If you do not want to be asked for confirmation before exiting, uncheck the checkbox from the global settings dialogue box."
|
||||
msgid "* Exit: asks whether you want to exit the program. If the answer is yes, it closes the application. If you do not want to be asked for confirmation before exiting, uncheck the checkbox from the global settings dialogue box."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:169
|
||||
@@ -973,7 +973,7 @@ msgid "* English: [Bryner Villalobos](https://twitter.com/Bry_StarkCR) and [Bill
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:408
|
||||
msgid "* Arabic: Mohammed Al Shara."
|
||||
msgid "* Arabic: [Mohammed Al Shara](https://twitter.com/mohammed0204)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:409
|
||||
@@ -989,11 +989,11 @@ msgid "* Basque: [Sukil Etxenike](https://twitter.com/sukil2011)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:412
|
||||
msgid "* Finnish: Jani Kinnunen."
|
||||
msgid "* Finnish: [Jani Kinnunen](https://twitter.com/jani_kinnunen)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:413
|
||||
msgid "* French: R\303\251mi Ruiz."
|
||||
msgid "* French: [R\303\251mi Ruiz](https://twitter.com/blindhelp38)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:414
|
||||
@@ -1001,38 +1001,46 @@ msgid "* Galician: [Alba Kinteiro](https://twitter.com/albasmileforeve)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:415
|
||||
msgid "* German: Steffen Schultz."
|
||||
msgid "* German: [Steffen Schultz](https://twitter.com/schulle4u)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:416
|
||||
msgid "* Hungarian: Robert Osztolykan."
|
||||
msgid "* Croatian: [Zvonimir Stane\304\215i\304\207](https://twitter.com/zvonimirek222)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:417
|
||||
msgid "* Polish: Pawel Masarczyk."
|
||||
msgid "* Hungarian: Robert Osztolykan."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:418
|
||||
msgid "* Portuguese: Odenilton J\303\272nior Santos."
|
||||
msgid "* Italian: [Christian Leo Mameli](https://twitter.com/llajta2012)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:419
|
||||
msgid "* Russian: Alexander Jaszyn."
|
||||
msgid "* Polish: Pawel Masarczyk."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:420
|
||||
msgid "* Turkish: Burak."
|
||||
msgid "* Portuguese: Odenilton J\303\272nior Santos."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:423
|
||||
#: ../doc\strings.py:421
|
||||
msgid "* Russian: [\320\220\320\273\320\265\320\272\321\201\320\260\320\275\320\264\321\200 \320\257\321\210\320\270\320\275](https://twitter.com/radovest)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:422
|
||||
msgid "* Turkish: [Burak Y\303\274ksek](https://twitter.com/burakyuksek)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:425
|
||||
msgid "Many thanks also to the people who worked on the documentation. Initially, [Manuel Cortez](https://twitter.com/manuelcortez00) did the documentation in Spanish, and translated to English by [Bryner Villalobos](https://twitter.com/Bry_StarkCR), [Robert Spangler](https://twitter.com/glasscity1837), [Sussan Rey](https://twitter.com/sussanrey17), [Anibal Hernandez](https://twitter.com/anibalmetal), and [Holly Scott-Gardner](https://twitter.com/holly1994). It was updated by [Sukil Etxenike](https://twitter.com/sukil2011), with some valuable corrections by [Brian Hartgen](https://twitter.com/brianhartgen) and [Bill Dengler](https://twitter.com/codeofdusk)."
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:426
|
||||
#: ../doc\strings.py:428
|
||||
msgid "---"
|
||||
msgstr ""
|
||||
|
||||
#: ../doc\strings.py:427
|
||||
#: ../doc\strings.py:429
|
||||
msgid "Copyright \302\251 2013-2015. Manuel Cort\303\251z"
|
||||
msgstr ""
|
||||
|
||||
|
562
tools/twblue.pot
562
tools/twblue.pot
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user