Removed dropbox, updated translations

This commit is contained in:
Manuel Cortez 2015-06-15 16:31:00 -05:00
parent 63d6fa62c4
commit 40c92e854d
8 changed files with 139 additions and 307 deletions

View File

@ -37,6 +37,3 @@ spelling_language = string(default="")
save_followers_in_autocompletion_db = boolean(default=False) save_followers_in_autocompletion_db = boolean(default=False)
save_friends_in_autocompletion_db = boolean(default=False) save_friends_in_autocompletion_db = boolean(default=False)
[services]
dropbox_token=string(default="")

View File

@ -11,7 +11,6 @@ import application
from wxUI.dialogs import configuration from wxUI.dialogs import configuration
from wxUI import commonMessageDialogs from wxUI import commonMessageDialogs
from extra.autocompletionUsers import settings from extra.autocompletionUsers import settings
from extra.AudioUploader import dropbox_transfer
from pubsub import pub from pubsub import pub
import logging import logging
import config_utils import config_utils
@ -140,11 +139,6 @@ class accountSettingsController(globalSettingsController):
self.dialog.set_value("sound", "session_mute", self.config["sound"]["session_mute"]) self.dialog.set_value("sound", "session_mute", self.config["sound"]["session_mute"])
self.dialog.set_value("sound", "soundpack", self.config["sound"]["current_soundpack"]) self.dialog.set_value("sound", "soundpack", self.config["sound"]["current_soundpack"])
self.dialog.create_audio_services() self.dialog.create_audio_services()
if self.config["services"]["dropbox_token"] == "":
self.dialog.services.set_dropbox(False)
else:
self.dialog.services.set_dropbox(True)
widgetUtils.connect_event(self.dialog.services.dropbox, widgetUtils.BUTTON_PRESSED, self.manage_dropbox)
self.dialog.set_value("services", "apiKey", self.config["sound"]["sndup_api_key"]) self.dialog.set_value("services", "apiKey", self.config["sound"]["sndup_api_key"])
self.dialog.realize() self.dialog.realize()
self.dialog.set_title(_(u"Account settings for %s") % (self.user,)) self.dialog.set_title(_(u"Account settings for %s") % (self.user,))
@ -237,32 +231,6 @@ class accountSettingsController(globalSettingsController):
self.config["twitter"]["ignored_clients"].pop(id) self.config["twitter"]["ignored_clients"].pop(id)
self.dialog.ignored_clients.remove_(id) self.dialog.ignored_clients.remove_(id)
def manage_dropbox(self, *args, **kwargs):
if self.dialog.services.get_dropbox() == _(u"Link your Dropbox account"):
self.connect_dropbox()
else:
self.disconnect_dropbox()
def connect_dropbox(self):
auth = dropbox_transfer.dropboxLogin(self.config)
url = auth.get_url()
self.dialog.services.show_dialog()
webbrowser.open(url)
resp = self.dialog.services.get_response()
if resp == "":
self.dialog.services.set_dropbox(False)
else:
try:
auth.authorise(resp)
self.dialog.services.set_dropbox()
except:
self.dialog.services.show_error()
self.dialog.services.set_dropbox(False)
def disconnect_dropbox(self):
self.config["services"]["dropbox_token"] = ""
self.dialog.services.set_dropbox(False)
def get_buffers_list(self): def get_buffers_list(self):
all_buffers = ['home','mentions','dm','sent_dm','sent_tweets','favorites','followers','friends','blocks','muted','events'] all_buffers = ['home','mentions','dm','sent_dm','sent_tweets','favorites','followers','friends','blocks','muted','events']
list_buffers = [] list_buffers = []

View File

@ -19,7 +19,7 @@
import widgetUtils import widgetUtils
import wx_ui import wx_ui
import wx_transfer_dialogs import wx_transfer_dialogs
import dropbox_transfer, transfer import transfer
import output import output
import tempfile import tempfile
import sound import sound
@ -31,6 +31,7 @@ import sound_lib
import logging import logging
log = logging.getLogger("extra.AudioUploader.audioUploader") log = logging.getLogger("extra.AudioUploader.audioUploader")
class audioUploader(object): class audioUploader(object):
def __init__(self, configFile, completed_callback): def __init__(self, configFile, completed_callback):
self.config = configFile self.config = configFile
@ -50,9 +51,7 @@ class audioUploader(object):
log.debug("Uploading file %s to %s..." % (self.file, self.dialog.get("services"))) log.debug("Uploading file %s to %s..." % (self.file, self.dialog.get("services")))
self.uploaderDialog = wx_transfer_dialogs.UploadDialog(self.file) self.uploaderDialog = wx_transfer_dialogs.UploadDialog(self.file)
output.speak(_(u"Attaching...")) output.speak(_(u"Attaching..."))
if self.dialog.get("services") == "Dropbox": if self.dialog.get("services") == "SNDUp":
self.uploaderFunction = dropbox_transfer.dropboxUploader(filename=self.file, completed_callback=completed_callback, config=self.config)
elif self.dialog.get("services") == "SNDUp":
base_url = "http://sndup.net/post.php" base_url = "http://sndup.net/post.php"
if len(self.config["sound"]["sndup_api_key"]) > 0: if len(self.config["sound"]["sndup_api_key"]) > 0:
url = base_url + '?apikey=' + self.config['sound']['sndup_api_key'] url = base_url + '?apikey=' + self.config['sound']['sndup_api_key']
@ -69,8 +68,6 @@ class audioUploader(object):
def get_available_services(self): def get_available_services(self):
services = [] services = []
services.append("TwUp") services.append("TwUp")
if self.config["services"]["dropbox_token"] != "":
services.append("Dropbox")
services.append("SNDUp") services.append("SNDUp")
return services return services

View File

@ -1,121 +0,0 @@
# -*- coding: utf-8 -*-
import threading
import time
import os
import exceptions
import dropbox
import logging
import application
from keys import keyring
from utils import *
from dropbox.rest import ErrorResponse
from StringIO import StringIO
from pubsub import pub
log = logging.getLogger("extra.AudioUploader.dropbox_transfer")
class UnauthorisedError(exceptions.Exception):
def __init__(self, *args, **kwargs):
super(UnauthorisedError, self).__init__(*args, **kwargs)
class newChunkedUploader(dropbox.client.ChunkedUploader):
def __init__(self, client, file_obj, length, callback):
super(newChunkedUploader, self).__init__(client, file_obj, length)
self.progress_callback = callback
def upload_chunked(self, chunk_size = 4 * 1024 * 1024):
while self.offset < self.target_length:
next_chunk_size = min(chunk_size, self.target_length - self.offset)
if self.last_block == None:
self.last_block = self.file_obj.read(next_chunk_size)
try:
(self.offset, self.upload_id) = self.client.upload_chunk(
StringIO(self.last_block), next_chunk_size, self.offset, self.upload_id)
self.last_block = None
if callable(self.progress_callback): self.progress_callback(self.offset)
except ErrorResponse as e:
reply = e.body
if "offset" in reply and reply['offset'] != 0:
if reply['offset'] > self.offset:
self.last_block = None
self.offset = reply['offset']
class dropboxLogin(object):
def __init__(self, config):
log.debug("Trying to login in Dropbox...")
self.logged = False
self.config = config
def get_url(self):
log.debug("Getting autorisation URL...")
self.flow = dropbox.client.DropboxOAuth2FlowNoRedirect(keyring.get("dropbox_api_key"), keyring.get("dropbox_api_secret"))
return self.flow.start()
def authorise(self, code):
log.debug("Authorising " + application.name + " to Dropbox...")
access_token, user_id = self.flow.finish(code)
log.debug("Saving tokens...")
self.config["services"]["dropbox_token"] = access_token
self.logged = True
class dropboxUploader(object):
def __init__(self, config, filename, completed_callback, short_url=False):
if config["services"]["dropbox_token"] != "":
log.debug("logging in Dropbox...")
self.client = dropbox.client.DropboxClient(config["services"]["dropbox_token"])
else:
log.error("Dropbox is not authorised for this session.")
raise UnauthorisedError("You need to authorise " + application.name)
self.filename = filename
self.short_url = short_url
self.file = open(self.filename, "rb")
self.file_size = os.path.getsize(self.filename)
self.uploader = newChunkedUploader(client=self.client, file_obj=self.file, length=self.file_size, callback=self.process)
self.start_time = None
self.completed_callback = completed_callback
self.background_thread = None
self.current = 0
self.transfer_rate = 0
log.debug("File Size: %d " % (self.file_size,))
def elapsed_time(self):
if not self.start_time:
return 0
return time.time() - self.start_time
def perform_transfer(self):
log.debug("Starting transfer...")
self.start_time = time.time()
while self.uploader.offset < self.file_size:
self.uploader.upload_chunked(self.file_size/100)
self.transfer_completed()
def process(self, offset):
progress = {}
self.current = offset
progress["total"] = self.file_size
progress["current"] = self.current
progress["percent"] = int((float(progress["current"]) / progress["total"]) * 100)
self.transfer_rate = progress["current"] / self.elapsed_time()
progress["speed"] = '%s/s' % convert_bytes(self.transfer_rate)
if self.transfer_rate:
progress["eta"] = (progress["total"] - progress["current"]) / self.transfer_rate
else:
progress["eta"] = 0
pub.sendMessage("uploading", data=progress)
def perform_threaded(self):
self.background_thread = threading.Thread(target=self.perform_transfer)
self.background_thread.daemon = True
self.background_thread.start()
def transfer_completed(self):
log.debug("Transfer completed")
self.uploader.finish(os.path.basename(self.filename))
if callable(self.completed_callback):
self.completed_callback()
def get_url(self):
original = "%s" % (self.client.media(os.path.basename(self.filename))["url"])
return original
# .replace("dl=0", "dl=1")

Binary file not shown.

View File

@ -1,8 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: TW Blue 0.44\n" "Project-Id-Version: TW Blue 0.44\n"
"POT-Creation-Date: 2015-06-09 10:11+0100\n" "POT-Creation-Date: 2015-06-12 17:44+Hora de verano central (México)\n"
"PO-Revision-Date: 2015-06-09 03:51-0600\n" "PO-Revision-Date: 2015-06-12 17:47-0600\n"
"Last-Translator: Manuel Cortéz <manuel@manuelcortez.net>\n" "Last-Translator: Manuel Cortéz <manuel@manuelcortez.net>\n"
"Language-Team: Manuel Cortez <info@twblue.com.mx>\n" "Language-Team: Manuel Cortez <info@twblue.com.mx>\n"
"Language: es\n" "Language: es\n"
@ -19,10 +19,6 @@ msgstr ""
msgid "Opening media..." msgid "Opening media..."
msgstr "Abriendo medio..." msgstr "Abriendo medio..."
#: ../src\controller\buffersController.py:104
msgid "Not actionable."
msgstr "No hay acción asociada a este tuit."
#: ../src\controller\buffersController.py:111 #: ../src\controller\buffersController.py:111
msgid "This action is not supported for this buffer" msgid "This action is not supported for this buffer"
msgstr "Esta acción no se encuentra soportada para este buffer" msgstr "Esta acción no se encuentra soportada para este buffer"
@ -40,61 +36,61 @@ msgstr "Tuit"
msgid "Write the tweet here" msgid "Write the tweet here"
msgstr "Escribe el tuit aquí" msgstr "Escribe el tuit aquí"
#: ../src\controller\buffersController.py:305 #: ../src\controller\buffersController.py:313
#: ../src\controller\buffersController.py:659 #: ../src\controller\buffersController.py:676
msgid "%s items retrieved" msgid "%s items retrieved"
msgstr "%s elementos recuperados" msgstr "%s elementos recuperados"
#: ../src\controller\buffersController.py:325 #: ../src\controller\buffersController.py:333
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 "Este buffer no es una línea temporal. No se puede eliminar." msgstr "Este buffer no es una línea temporal. No se puede eliminar."
#: ../src\controller\buffersController.py:386 #: ../src\controller\buffersController.py:394
msgid "Reply to %s" msgid "Reply to %s"
msgstr "Responder a %s" msgstr "Responder a %s"
#: ../src\controller\buffersController.py:386 ../src\gtkUI\buffers\base.py:17 #: ../src\controller\buffersController.py:394 ../src\gtkUI\buffers\base.py:17
#: ../src\keystrokeEditor\constants.py:11 ../src\wxUI\buffers\base.py:26 #: ../src\keystrokeEditor\constants.py:11 ../src\wxUI\buffers\base.py:26
msgid "Reply" msgid "Reply"
msgstr "Responder" msgstr "Responder"
#: ../src\controller\buffersController.py:406 #: ../src\controller\buffersController.py:414
msgid "Direct message to %s" msgid "Direct message to %s"
msgstr "Mensaje directo a %s" msgstr "Mensaje directo a %s"
#: ../src\controller\buffersController.py:406 #: ../src\controller\buffersController.py:414
#: ../src\controller\mainController.py:1056 #: ../src\controller\mainController.py:1056
msgid "New direct message" msgid "New direct message"
msgstr "Nuevo mensaje directo" msgstr "Nuevo mensaje directo"
#: ../src\controller\buffersController.py:427 #: ../src\controller\buffersController.py:435
msgid "Add your comment to the tweet" msgid "Add your comment to the tweet"
msgstr "Añade tu comentario al tuit" msgstr "Añade tu comentario al tuit"
#: ../src\controller\buffersController.py:427 ../src\gtkUI\buffers\base.py:16 #: ../src\controller\buffersController.py:435 ../src\gtkUI\buffers\base.py:16
#: ../src\gtkUI\commonMessageDialogs.py:12 #: ../src\gtkUI\commonMessageDialogs.py:12
#: ../src\keystrokeEditor\constants.py:12 ../src\wxUI\buffers\base.py:25 #: ../src\keystrokeEditor\constants.py:12 ../src\wxUI\buffers\base.py:25
#: ../src\wxUI\commonMessageDialogs.py:8 ../src\wxUI\dialogs\message.py:129 #: ../src\wxUI\commonMessageDialogs.py:8 ../src\wxUI\dialogs\message.py:129
msgid "Retweet" msgid "Retweet"
msgstr "Retuit" msgstr "Retuit"
#: ../src\controller\buffersController.py:499 #: ../src\controller\buffersController.py:507
msgid "Opening URL..." msgid "Opening URL..."
msgstr "Abriendo URL..." msgstr "Abriendo URL..."
#: ../src\controller\buffersController.py:534 #: ../src\controller\buffersController.py:542
msgid "User details" msgid "User details"
msgstr "Detalles del usuario" msgstr "Detalles del usuario"
#: ../src\controller\buffersController.py:574 #: ../src\controller\buffersController.py:591
msgid "Empty" msgid "Empty"
msgstr "Vacío" msgstr "Vacío"
#: ../src\controller\buffersController.py:618 #: ../src\controller\buffersController.py:635
msgid "Mention to %s" msgid "Mention to %s"
msgstr "Mencionar a %s" msgstr "Mencionar a %s"
#: ../src\controller\buffersController.py:618 #: ../src\controller\buffersController.py:635
#: ../src\gtkUI\buffers\people.py:15 ../src\wxUI\buffers\people.py:15 #: ../src\gtkUI\buffers\people.py:15 ../src\wxUI\buffers\people.py:15
msgid "Mention" msgid "Mention"
msgstr "Mención" msgstr "Mención"
@ -320,16 +316,16 @@ msgid "Upload a picture"
msgstr "Subir una foto" msgstr "Subir una foto"
#: ../src\controller\settings.py:114 ../src\controller\settings.py:173 #: ../src\controller\settings.py:114 ../src\controller\settings.py:173
#: ../src\wxUI\dialogs\configuration.py:97 #: ../src\wxUI\dialogs\configuration.py:98
msgid "Ask" msgid "Ask"
msgstr "Preguntar" msgstr "Preguntar"
#: ../src\controller\settings.py:116 ../src\controller\settings.py:175 #: ../src\controller\settings.py:116 ../src\controller\settings.py:175
#: ../src\wxUI\dialogs\configuration.py:97 #: ../src\wxUI\dialogs\configuration.py:98
msgid "Retweet without comments" msgid "Retweet without comments"
msgstr "Retuitear sin comentario" msgstr "Retuitear sin comentario"
#: ../src\controller\settings.py:118 ../src\wxUI\dialogs\configuration.py:97 #: ../src\controller\settings.py:118 ../src\wxUI\dialogs\configuration.py:98
msgid "Retweet with comments" msgid "Retweet with comments"
msgstr "Retuitear añadiendo un comentario" msgstr "Retuitear añadiendo un comentario"
@ -338,7 +334,7 @@ msgid "Account settings for %s"
msgstr "Opciones de la cuenta de %s" msgstr "Opciones de la cuenta de %s"
#: ../src\controller\settings.py:241 ../src\gtkUI\dialogs\configuration.py:153 #: ../src\controller\settings.py:241 ../src\gtkUI\dialogs\configuration.py:153
#: ../src\wxUI\dialogs\configuration.py:290 #: ../src\wxUI\dialogs\configuration.py:291
msgid "Link your Dropbox account" msgid "Link your Dropbox account"
msgstr "Conectar tu cuenta de Dropbox" msgstr "Conectar tu cuenta de Dropbox"
@ -740,27 +736,27 @@ msgstr "El usuario no existe"
#: ../src\gtkUI\commonMessageDialogs.py:58 #: ../src\gtkUI\commonMessageDialogs.py:58
#: ../src\gtkUI\dialogs\configuration.py:165 #: ../src\gtkUI\dialogs\configuration.py:165
#: ../src\wxUI\commonMessageDialogs.py:43 #: ../src\wxUI\commonMessageDialogs.py:43
#: ../src\wxUI\dialogs\configuration.py:302 #: ../src\wxUI\dialogs\configuration.py:303
msgid "Error!" msgid "Error!"
msgstr "¡Error!" msgstr "¡Error!"
#: ../src\extra\autocompletionUsers\wx_settings.py:7 #: ../src\extra\autocompletionUsers\wx_settings.py:8
msgid "Autocomplete users\\342\\200\\231 settings" msgid "Autocomplete users settings"
msgstr "Opciones de autocompletado" msgstr "Opciones de autocompletado de usuarios"
#: ../src\extra\autocompletionUsers\wx_settings.py:10 #: ../src\extra\autocompletionUsers\wx_settings.py:11
msgid "Add users from followers buffer" msgid "Add users from followers buffer"
msgstr "Añadir usuarios desde el buffer de seguidores" msgstr "Añadir usuarios desde el buffer de seguidores"
#: ../src\extra\autocompletionUsers\wx_settings.py:11 #: ../src\extra\autocompletionUsers\wx_settings.py:12
msgid "Add users from friends buffer" msgid "Add users from friends buffer"
msgstr "Añadir usuarios desde el buffer de amigos" msgstr "Añadir usuarios desde el buffer de amigos"
#: ../src\extra\autocompletionUsers\wx_settings.py:14 #: ../src\extra\autocompletionUsers\wx_settings.py:15
msgid "Manage database..." msgid "Manage database..."
msgstr "Administrar base de datos" msgstr "Administrar base de datos"
#: ../src\extra\autocompletionUsers\wx_settings.py:26 #: ../src\extra\autocompletionUsers\wx_settings.py:27
msgid "Done" msgid "Done"
msgstr "¡Hecho" msgstr "¡Hecho"
@ -1328,23 +1324,23 @@ msgstr ""
"tuits y favoritos." "tuits y favoritos."
#: ../src\gtkUI\dialogs\configuration.py:10 #: ../src\gtkUI\dialogs\configuration.py:10
#: ../src\wxUI\dialogs\configuration.py:13 #: ../src\wxUI\dialogs\configuration.py:14
msgid "Language" msgid "Language"
msgstr "Idioma" msgstr "Idioma"
#: ../src\gtkUI\dialogs\configuration.py:19 #: ../src\gtkUI\dialogs\configuration.py:19
#: ../src\wxUI\dialogs\configuration.py:26 #: ../src\wxUI\dialogs\configuration.py:27
msgid "Use invisible interface's keyboard shortcuts while GUI is visible" msgid "Use invisible interface's keyboard shortcuts while GUI is visible"
msgstr "" msgstr ""
"Usar los atajos de teclado de la interfaz invisible en la ventana gráfica" "Usar los atajos de teclado de la interfaz invisible en la ventana gráfica"
#: ../src\gtkUI\dialogs\configuration.py:21 #: ../src\gtkUI\dialogs\configuration.py:21
#: ../src\wxUI\dialogs\configuration.py:28 #: ../src\wxUI\dialogs\configuration.py:29
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 "Activar Sapi5 cuando no hay ningún lector de pantalla ejecutándose" msgstr "Activar Sapi5 cuando no hay ningún lector de pantalla ejecutándose"
#: ../src\gtkUI\dialogs\configuration.py:23 #: ../src\gtkUI\dialogs\configuration.py:23
#: ../src\wxUI\dialogs\configuration.py:30 #: ../src\wxUI\dialogs\configuration.py:31
msgid "Hide GUI on launch" msgid "Hide GUI on launch"
msgstr "Esconder interfaz gráfica al iniciar" msgstr "Esconder interfaz gráfica al iniciar"
@ -1365,7 +1361,7 @@ msgstr ""
"tuits, 2 a 400 tuits, etc):" "tuits, 2 a 400 tuits, etc):"
#: ../src\gtkUI\dialogs\configuration.py:43 #: ../src\gtkUI\dialogs\configuration.py:43
#: ../src\wxUI\dialogs\configuration.py:88 #: ../src\wxUI\dialogs\configuration.py:89
msgid "Items on each API call" msgid "Items on each API call"
msgstr "Elementos por cada llamada a la API" msgstr "Elementos por cada llamada a la API"
@ -1379,43 +1375,43 @@ msgstr ""
#: ../src\gtkUI\dialogs\configuration.py:63 #: ../src\gtkUI\dialogs\configuration.py:63
#: ../src\gtkUI\dialogs\configuration.py:198 #: ../src\gtkUI\dialogs\configuration.py:198
#: ../src\wxUI\dialogs\configuration.py:200 #: ../src\wxUI\dialogs\configuration.py:201
#: ../src\wxUI\dialogs\configuration.py:339 #: ../src\wxUI\dialogs\configuration.py:340
msgid "Ignored clients" msgid "Ignored clients"
msgstr "Clientes ignorados" msgstr "Clientes ignorados"
#: ../src\gtkUI\dialogs\configuration.py:69 #: ../src\gtkUI\dialogs\configuration.py:69
#: ../src\wxUI\dialogs\configuration.py:206 #: ../src\wxUI\dialogs\configuration.py:207
msgid "Add client" msgid "Add client"
msgstr "Añadir cliente" msgstr "Añadir cliente"
#: ../src\gtkUI\dialogs\configuration.py:70 #: ../src\gtkUI\dialogs\configuration.py:70
#: ../src\wxUI\dialogs\configuration.py:207 #: ../src\wxUI\dialogs\configuration.py:208
msgid "Remove client" msgid "Remove client"
msgstr "Quitar cliente" msgstr "Quitar cliente"
#: ../src\gtkUI\dialogs\configuration.py:94 #: ../src\gtkUI\dialogs\configuration.py:94
#: ../src\wxUI\dialogs\configuration.py:231 #: ../src\wxUI\dialogs\configuration.py:232
msgid "Volume" msgid "Volume"
msgstr "Volumen" msgstr "Volumen"
#: ../src\gtkUI\dialogs\configuration.py:102 #: ../src\gtkUI\dialogs\configuration.py:102
#: ../src\wxUI\dialogs\configuration.py:239 #: ../src\wxUI\dialogs\configuration.py:240
msgid "Session mute" msgid "Session mute"
msgstr "Silencio de sesión" msgstr "Silencio de sesión"
#: ../src\gtkUI\dialogs\configuration.py:104 #: ../src\gtkUI\dialogs\configuration.py:104
#: ../src\wxUI\dialogs\configuration.py:241 #: ../src\wxUI\dialogs\configuration.py:242
msgid "Output device" msgid "Output device"
msgstr "Dispositivo de salida" msgstr "Dispositivo de salida"
#: ../src\gtkUI\dialogs\configuration.py:111 #: ../src\gtkUI\dialogs\configuration.py:111
#: ../src\wxUI\dialogs\configuration.py:248 #: ../src\wxUI\dialogs\configuration.py:249
msgid "Input device" msgid "Input device"
msgstr "Dispositivo de entrada" msgstr "Dispositivo de entrada"
#: ../src\gtkUI\dialogs\configuration.py:119 #: ../src\gtkUI\dialogs\configuration.py:119
#: ../src\wxUI\dialogs\configuration.py:256 #: ../src\wxUI\dialogs\configuration.py:257
msgid "Sound pack" msgid "Sound pack"
msgstr "Paquete de sonidos" msgstr "Paquete de sonidos"
@ -1430,17 +1426,17 @@ msgstr ""
"aquí, los audios se subirán de manera anónima" "aquí, los audios se subirán de manera anónima"
#: ../src\gtkUI\dialogs\configuration.py:151 #: ../src\gtkUI\dialogs\configuration.py:151
#: ../src\wxUI\dialogs\configuration.py:288 #: ../src\wxUI\dialogs\configuration.py:289
msgid "Unlink your Dropbox account" msgid "Unlink your Dropbox account"
msgstr "Desconectar tu cuenta de Dropbox" msgstr "Desconectar tu cuenta de Dropbox"
#: ../src\gtkUI\dialogs\configuration.py:156 ../src\sessionmanager\wxUI.py:47 #: ../src\gtkUI\dialogs\configuration.py:156 ../src\sessionmanager\wxUI.py:47
#: ../src\wxUI\dialogs\configuration.py:293 #: ../src\wxUI\dialogs\configuration.py:294
msgid "Authorization" msgid "Authorization"
msgstr "Autorización" msgstr "Autorización"
#: ../src\gtkUI\dialogs\configuration.py:156 #: ../src\gtkUI\dialogs\configuration.py:156
#: ../src\wxUI\dialogs\configuration.py:293 #: ../src\wxUI\dialogs\configuration.py:294
msgid "" msgid ""
"The authorization request will be opened in your browser. Copy the code from " "The authorization request will be opened in your browser. Copy the code from "
"Dropbox and paste it into the text box which will appear. You only need to " "Dropbox and paste it into the text box which will appear. You only need to "
@ -1451,12 +1447,12 @@ msgstr ""
"es necesario hacerlo solo una vez." "es necesario hacerlo solo una vez."
#: ../src\gtkUI\dialogs\configuration.py:159 #: ../src\gtkUI\dialogs\configuration.py:159
#: ../src\wxUI\dialogs\configuration.py:296 #: ../src\wxUI\dialogs\configuration.py:297
msgid "Enter the code here." msgid "Enter the code here."
msgstr "Introduce el código aquí" msgstr "Introduce el código aquí"
#: ../src\gtkUI\dialogs\configuration.py:159 #: ../src\gtkUI\dialogs\configuration.py:159
#: ../src\wxUI\dialogs\configuration.py:296 #: ../src\wxUI\dialogs\configuration.py:297
msgid "Verification code" msgid "Verification code"
msgstr "Código de verificación" msgstr "Código de verificación"
@ -1471,8 +1467,8 @@ msgstr "Preferencias de TW Blue"
#: ../src\gtkUI\dialogs\configuration.py:184 #: ../src\gtkUI\dialogs\configuration.py:184
#: ../src\gtkUI\dialogs\configuration.py:189 #: ../src\gtkUI\dialogs\configuration.py:189
#: ../src\issueReporter\issueReporter.py:30 #: ../src\issueReporter\issueReporter.py:30
#: ../src\wxUI\dialogs\configuration.py:321 #: ../src\wxUI\dialogs\configuration.py:322
#: ../src\wxUI\dialogs\configuration.py:330 #: ../src\wxUI\dialogs\configuration.py:331
msgid "General" msgid "General"
msgstr "General" msgstr "General"
@ -1481,17 +1477,17 @@ msgid "Show other buffers"
msgstr "Mostrar otros buffers" msgstr "Mostrar otros buffers"
#: ../src\gtkUI\dialogs\configuration.py:202 #: ../src\gtkUI\dialogs\configuration.py:202
#: ../src\wxUI\dialogs\configuration.py:343 #: ../src\wxUI\dialogs\configuration.py:344
msgid "Sound" msgid "Sound"
msgstr "Sonido" msgstr "Sonido"
#: ../src\gtkUI\dialogs\configuration.py:205 #: ../src\gtkUI\dialogs\configuration.py:205
#: ../src\wxUI\dialogs\configuration.py:346 #: ../src\wxUI\dialogs\configuration.py:347
msgid "Audio Services" msgid "Audio Services"
msgstr "Servicios de audio" msgstr "Servicios de audio"
#: ../src\gtkUI\dialogs\configuration.py:210 #: ../src\gtkUI\dialogs\configuration.py:210
#: ../src\wxUI\dialogs\configuration.py:351 #: ../src\wxUI\dialogs\configuration.py:352
msgid "Save" msgid "Save"
msgstr "Guardar" msgstr "Guardar"
@ -1500,7 +1496,7 @@ msgstr "Guardar"
#: ../src\gtkUI\dialogs\update_profile.py:35 #: ../src\gtkUI\dialogs\update_profile.py:35
#: ../src\gtkUI\dialogs\userActions.py:40 #: ../src\gtkUI\dialogs\userActions.py:40
#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 #: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35
#: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:353 #: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:354
#: ../src\wxUI\dialogs\message.py:87 ../src\wxUI\dialogs\message.py:147 #: ../src\wxUI\dialogs\message.py:87 ../src\wxUI\dialogs\message.py:147
#: ../src\wxUI\dialogs\message.py:207 ../src\wxUI\dialogs\message.py:283 #: ../src\wxUI\dialogs\message.py:207 ../src\wxUI\dialogs\message.py:283
#: ../src\wxUI\dialogs\message.py:338 ../src\wxUI\dialogs\search.py:26 #: ../src\wxUI\dialogs\message.py:338 ../src\wxUI\dialogs\search.py:26
@ -1855,7 +1851,7 @@ msgid "&Show / hide"
msgstr "&Mostrar / esconder" msgstr "&Mostrar / esconder"
#: ../src\gtkUI\sysTrayIcon.py:38 ../src\wxUI\sysTrayIcon.py:38 #: ../src\gtkUI\sysTrayIcon.py:38 ../src\wxUI\sysTrayIcon.py:38
#: ../src\wxUI\view.py:63 #: ../src\wxUI\view.py:62
msgid "&Documentation" msgid "&Documentation"
msgstr "&Documentación" msgstr "&Documentación"
@ -1871,11 +1867,11 @@ msgstr "&Salir"
msgid "Manage accounts" msgid "Manage accounts"
msgstr "Gestionar cuentas" msgstr "Gestionar cuentas"
#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:159 #: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:158
msgid "Address" msgid "Address"
msgstr "Dirección" msgstr "Dirección"
#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 #: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:181
msgid "Update" msgid "Update"
msgstr "Actualización" msgstr "Actualización"
@ -2398,6 +2394,14 @@ msgstr "Privado"
msgid "public" msgid "public"
msgstr "público" msgstr "público"
#: ../src\twitter\utils.py:124
msgid "Sorry, you are not authorised to see this status."
msgstr "Lo sentimos, no estás autorizado para ver este tuit."
#: ../src\twitter\utils.py:126
msgid "No status found with that ID"
msgstr "No existe un tuit con este ID."
#: ../src\update\wxUpdater.py:9 #: ../src\update\wxUpdater.py:9
msgid "New version for %s" msgid "New version for %s"
msgstr "Nueva versión de %s" msgstr "Nueva versión de %s"
@ -2445,41 +2449,53 @@ msgstr ""
msgid "Do you really want to close {0}?" msgid "Do you really want to close {0}?"
msgstr "¿Realmente deseas salir de {0}?" msgstr "¿Realmente deseas salir de {0}?"
#: ../src\wxUI\dialogs\configuration.py:33 #: ../src\wxUI\dialogs\configuration.py:21
msgid "ask before exiting {0}"
msgstr "Preguntar antes de salir de {0}Preguntar al salir de TWBlue"
#: ../src\wxUI\dialogs\configuration.py:23
msgid "Play a sound when {0} launches"
msgstr "Reproducir un sonido cuando inicia {0}"
#: ../src\wxUI\dialogs\configuration.py:25
msgid "Speak a message when {0} launches"
msgstr "Hablar un mensaje cuando {0} inicie."
#: ../src\wxUI\dialogs\configuration.py:34
msgid "Keymap" msgid "Keymap"
msgstr "Mapa de teclado" msgstr "Mapa de teclado"
#: ../src\wxUI\dialogs\configuration.py:46 #: ../src\wxUI\dialogs\configuration.py:47
msgid "Proxy server: " msgid "Proxy server: "
msgstr "Servidor proxy:" msgstr "Servidor proxy:"
#: ../src\wxUI\dialogs\configuration.py:52 #: ../src\wxUI\dialogs\configuration.py:53
msgid "Port: " msgid "Port: "
msgstr "Puerto:" msgstr "Puerto:"
#: ../src\wxUI\dialogs\configuration.py:58 #: ../src\wxUI\dialogs\configuration.py:59
msgid "User: " msgid "User: "
msgstr "Usuario: " msgstr "Usuario: "
#: ../src\wxUI\dialogs\configuration.py:64 #: ../src\wxUI\dialogs\configuration.py:65
msgid "Password: " msgid "Password: "
msgstr "Contraseña:" msgstr "Contraseña:"
#: ../src\wxUI\dialogs\configuration.py:76 #: ../src\wxUI\dialogs\configuration.py:77
msgid "Autocompletion settings..." msgid "Autocompletion settings..."
msgstr "Opciones de autocompletado de usuarios" msgstr "Opciones de autocompletado de usuarios"
#: ../src\wxUI\dialogs\configuration.py:78 #: ../src\wxUI\dialogs\configuration.py:79
msgid "Relative timestamps" msgid "Relative timestamps"
msgstr "Tiempos relativos" msgstr "Tiempos relativos"
#: ../src\wxUI\dialogs\configuration.py:81 #: ../src\wxUI\dialogs\configuration.py:82
msgid "API calls (One API call = 200 tweets, two API calls = 400 tweets, etc):" msgid "API calls (One API call = 200 tweets, two API calls = 400 tweets, etc):"
msgstr "" msgstr ""
"Llamadas a la API cuando el stream se inicie (una llamada equivale a 200 " "Llamadas a la API cuando el stream se inicie (una llamada equivale a 200 "
"tuits, 2 a 400 tuits, etc):" "tuits, 2 a 400 tuits, etc):"
#: ../src\wxUI\dialogs\configuration.py:94 #: ../src\wxUI\dialogs\configuration.py:95
msgid "" msgid ""
"Inverted buffers: The newest tweets will be shown at the beginning while the " "Inverted buffers: The newest tweets will be shown at the beginning while the "
"oldest at the end" "oldest at the end"
@ -2487,11 +2503,11 @@ msgstr ""
"Buffers invertidos: los nuevos tweets se mostrarán al principio de las " "Buffers invertidos: los nuevos tweets se mostrarán al principio de las "
"listas y los viejos al final" "listas y los viejos al final"
#: ../src\wxUI\dialogs\configuration.py:96 #: ../src\wxUI\dialogs\configuration.py:97
msgid "Retweet mode" msgid "Retweet mode"
msgstr "Modo de retuit" msgstr "Modo de retuit"
#: ../src\wxUI\dialogs\configuration.py:102 #: ../src\wxUI\dialogs\configuration.py:103
msgid "" msgid ""
"Number of items per buffer to cache in database (0 to disable caching, blank " "Number of items per buffer to cache in database (0 to disable caching, blank "
"for unlimited)" "for unlimited)"
@ -2500,67 +2516,67 @@ msgstr ""
"blanco para guardarlos de forma ilimitada, 0 para desactivar la base de " "blanco para guardarlos de forma ilimitada, 0 para desactivar la base de "
"datos)" "datos)"
#: ../src\wxUI\dialogs\configuration.py:112 #: ../src\wxUI\dialogs\configuration.py:113
msgid "Buffer" msgid "Buffer"
msgstr "Buffer" msgstr "Buffer"
#: ../src\wxUI\dialogs\configuration.py:112 #: ../src\wxUI\dialogs\configuration.py:113
msgid "Status" msgid "Status"
msgstr "Estado" msgstr "Estado"
#: ../src\wxUI\dialogs\configuration.py:115 #: ../src\wxUI\dialogs\configuration.py:116
msgid "Show/hide" msgid "Show/hide"
msgstr "Mostrar/ocultar" msgstr "Mostrar/ocultar"
#: ../src\wxUI\dialogs\configuration.py:116 #: ../src\wxUI\dialogs\configuration.py:117
msgid "Move up" msgid "Move up"
msgstr "Mover arriba" msgstr "Mover arriba"
#: ../src\wxUI\dialogs\configuration.py:117 #: ../src\wxUI\dialogs\configuration.py:118
msgid "Move down" msgid "Move down"
msgstr "Mover abajo" msgstr "Mover abajo"
#: ../src\wxUI\dialogs\configuration.py:127 #: ../src\wxUI\dialogs\configuration.py:128
#: ../src\wxUI\dialogs\configuration.py:184 #: ../src\wxUI\dialogs\configuration.py:185
#: ../src\wxUI\dialogs\configuration.py:187 #: ../src\wxUI\dialogs\configuration.py:188
#: ../src\wxUI\dialogs\configuration.py:192 #: ../src\wxUI\dialogs\configuration.py:193
msgid "Show" msgid "Show"
msgstr "Mostrar" msgstr "Mostrar"
#: ../src\wxUI\dialogs\configuration.py:129 #: ../src\wxUI\dialogs\configuration.py:130
#: ../src\wxUI\dialogs\configuration.py:139 #: ../src\wxUI\dialogs\configuration.py:140
#: ../src\wxUI\dialogs\configuration.py:159 #: ../src\wxUI\dialogs\configuration.py:160
#: ../src\wxUI\dialogs\configuration.py:185 #: ../src\wxUI\dialogs\configuration.py:186
msgid "Hide" msgid "Hide"
msgstr "Ocultar" msgstr "Ocultar"
#: ../src\wxUI\dialogs\configuration.py:137 #: ../src\wxUI\dialogs\configuration.py:138
#: ../src\wxUI\dialogs\configuration.py:157 #: ../src\wxUI\dialogs\configuration.py:158
msgid "Select a buffer first." msgid "Select a buffer first."
msgstr "Primero selecciona un buffer" msgstr "Primero selecciona un buffer"
#: ../src\wxUI\dialogs\configuration.py:140 #: ../src\wxUI\dialogs\configuration.py:141
#: ../src\wxUI\dialogs\configuration.py:160 #: ../src\wxUI\dialogs\configuration.py:161
msgid "The buffer is hidden, show it first." msgid "The buffer is hidden, show it first."
msgstr "El buffer está oculto, muéstralo primero" msgstr "El buffer está oculto, muéstralo primero"
#: ../src\wxUI\dialogs\configuration.py:143 #: ../src\wxUI\dialogs\configuration.py:144
msgid "The buffer is already at the top of the list." msgid "The buffer is already at the top of the list."
msgstr "El buffer ya se encuentra al principio de la lista" msgstr "El buffer ya se encuentra al principio de la lista"
#: ../src\wxUI\dialogs\configuration.py:163 #: ../src\wxUI\dialogs\configuration.py:164
msgid "The buffer is already at the bottom of the list." msgid "The buffer is already at the bottom of the list."
msgstr "El buffer ya se encuentra al final de la lista" msgstr "El buffer ya se encuentra al final de la lista"
#: ../src\wxUI\dialogs\configuration.py:302 #: ../src\wxUI\dialogs\configuration.py:303
msgid "Error during authorization. Try again later." msgid "Error during authorization. Try again later."
msgstr "Error durante la autorización. Inténtalo de nuevo más tarde" msgstr "Error durante la autorización. Inténtalo de nuevo más tarde"
#: ../src\wxUI\dialogs\configuration.py:326 #: ../src\wxUI\dialogs\configuration.py:327
msgid "Proxy" msgid "Proxy"
msgstr "Proxy" msgstr "Proxy"
#: ../src\wxUI\dialogs\configuration.py:335 #: ../src\wxUI\dialogs\configuration.py:336
msgid "Buffers" msgid "Buffers"
msgstr "Buffers" msgstr "Buffers"
@ -2605,7 +2621,7 @@ msgstr "Editar combinaciones de &teclas"
msgid "E&xit" msgid "E&xit"
msgstr "S&alir" msgstr "S&alir"
#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:75 #: ../src\wxUI\view.py:27 ../src\wxUI\view.py:74
msgid "&Tweet" msgid "&Tweet"
msgstr "&Tuit" msgstr "&Tuit"
@ -2657,82 +2673,88 @@ msgstr "&Mensaje directo"
msgid "&Add to list" msgid "&Add to list"
msgstr "&Añadir a lista" msgstr "&Añadir a lista"
#: ../src\wxUI\view.py:44 #: ../src\wxUI\view.py:43
msgid "R&emove from list" msgid "R&emove from list"
msgstr "&Quitar de lista" msgstr "&Quitar de lista"
#: ../src\wxUI\view.py:46 #: ../src\wxUI\view.py:45
msgid "&View lists" msgid "&View lists"
msgstr "&Ver listas" msgstr "&Ver listas"
#: ../src\wxUI\view.py:48 #: ../src\wxUI\view.py:47
msgid "Show user &profile" msgid "Show user &profile"
msgstr "Ve&r perfil del usuario" msgstr "Ve&r perfil del usuario"
#: ../src\wxUI\view.py:49 #: ../src\wxUI\view.py:48
msgid "V&iew favourites" msgid "V&iew favourites"
msgstr "Ver &favoritos" msgstr "Ver &favoritos"
#: ../src\wxUI\view.py:53 #: ../src\wxUI\view.py:52
msgid "New &trending topics buffer..." msgid "New &trending topics buffer..."
msgstr "Nuevo buffer de &tendencias" msgstr "Nuevo buffer de &tendencias"
#: ../src\wxUI\view.py:54 #: ../src\wxUI\view.py:53
msgid "&Load previous items" msgid "&Load previous items"
msgstr "&Cargar elementos anteriores" msgstr "&Cargar elementos anteriores"
#: ../src\wxUI\view.py:56 #: ../src\wxUI\view.py:55
msgid "&Mute" msgid "&Mute"
msgstr "S&ilenciar" msgstr "S&ilenciar"
#: ../src\wxUI\view.py:57 #: ../src\wxUI\view.py:56
msgid "&Autoread" msgid "&Autoread"
msgstr "&lectura automática" msgstr "&lectura automática"
#: ../src\wxUI\view.py:58 #: ../src\wxUI\view.py:57
msgid "&Clear buffer" msgid "&Clear buffer"
msgstr "&Vaciar buffer" msgstr "&Vaciar buffer"
#: ../src\wxUI\view.py:59 #: ../src\wxUI\view.py:58
msgid "&Destroy" msgid "&Destroy"
msgstr "&Eliminar" msgstr "&Eliminar"
#: ../src\wxUI\view.py:65 #: ../src\wxUI\view.py:64
msgid "Sounds &tutorial" msgid "Sounds &tutorial"
msgstr "Tutorial de &sonidos" msgstr "Tutorial de &sonidos"
#: ../src\wxUI\view.py:66 #: ../src\wxUI\view.py:65
msgid "&What's new in this version?" msgid "&What's new in this version?"
msgstr "¿&Qué hay de nuevo en esta versión?" msgstr "¿&Qué hay de nuevo en esta versión?"
#: ../src\wxUI\view.py:68 #: ../src\wxUI\view.py:67
msgid "&Check for updates" msgid "&Check for updates"
msgstr "&Comprobar actualizaciones" msgstr "&Comprobar actualizaciones"
#: ../src\wxUI\view.py:69 #: ../src\wxUI\view.py:68
msgid "&Report an error" msgid "&Report an error"
msgstr "&Reportar un error" msgstr "&Reportar un error"
#: ../src\wxUI\view.py:74 #: ../src\wxUI\view.py:73
msgid "&Application" msgid "&Application"
msgstr "&Aplicación" msgstr "&Aplicación"
#: ../src\wxUI\view.py:76 #: ../src\wxUI\view.py:75
msgid "&User" msgid "&User"
msgstr "&Usuario" msgstr "&Usuario"
#: ../src\wxUI\view.py:77 #: ../src\wxUI\view.py:76
msgid "&Buffer" msgid "&Buffer"
msgstr "&Buffer" msgstr "&Buffer"
#: ../src\wxUI\view.py:78 #: ../src\wxUI\view.py:77
msgid "&Help" msgid "&Help"
msgstr "Ay&uda" msgstr "Ay&uda"
#: ../src\wxUI\view.py:182 #: ../src\wxUI\view.py:181
msgid "Your {0} version is up to date" msgid "Your {0} version is up to date"
msgstr "Tu versión de {0} está actualizada" msgstr "Tu versión de {0} está actualizada"
#~ msgid "Not actionable."
#~ msgstr "No hay acción asociada a este tuit."
#~ msgid "Autocomplete users\\342\\200\\231 settings"
#~ msgstr "Opciones de autocompletado"
#~ msgid "Global mute off" #~ msgid "Global mute off"
#~ msgstr "Silencio global, desactivado" #~ msgstr "Silencio global, desactivado"
@ -2754,9 +2776,6 @@ msgstr "Tu versión de {0} está actualizada"
#~ msgid "New tweet in user-defined buffer." #~ msgid "New tweet in user-defined buffer."
#~ msgstr "Nuevo tuit en líneas temporales" #~ msgstr "Nuevo tuit en líneas temporales"
#~ msgid "Autocomplete users settings"
#~ msgstr "Opciones de autocompletado de usuarios"
#~ msgid "Start account automatically" #~ msgid "Start account automatically"
#~ msgstr "Iniciar cuenta automáticamente" #~ msgstr "Iniciar cuenta automáticamente"
@ -3043,9 +3062,6 @@ msgstr "Tu versión de {0} está actualizada"
#~ msgid "Do you really want to delete this search term?" #~ msgid "Do you really want to delete this search term?"
#~ msgstr "¿Realmente deseas eliminar esté término de búsqueda?" #~ msgstr "¿Realmente deseas eliminar esté término de búsqueda?"
#~ msgid "ask before exiting TwBlue?"
#~ msgstr "Preguntar al salir de TWBlue"
#~ msgid "Activate the auto-start of the invisible interface" #~ msgid "Activate the auto-start of the invisible interface"
#~ msgstr "Activar el inicio automático de la interfaz invisible" #~ msgstr "Activar el inicio automático de la interfaz invisible"

View File

@ -278,33 +278,8 @@ class audioServicesPanel(wx.Panel):
apiKeyBox.Add(apiKeyLabel, 0, wx.ALL, 5) apiKeyBox.Add(apiKeyLabel, 0, wx.ALL, 5)
apiKeyBox.Add(self.apiKey, 0, wx.ALL, 5) apiKeyBox.Add(self.apiKey, 0, wx.ALL, 5)
mainSizer.Add(apiKeyBox, 0, wx.ALL, 5) mainSizer.Add(apiKeyBox, 0, wx.ALL, 5)
first_sizer = wx.BoxSizer(wx.HORIZONTAL)
self.dropbox = wx.Button(self, -1)
first_sizer.Add(self.dropbox, 0, wx.ALL, 5)
mainSizer.Add(first_sizer, 0, wx.ALL, 5)
self.SetSizer(mainSizer) self.SetSizer(mainSizer)
def set_dropbox(self, active=True):
if active == True:
self.dropbox.SetLabel(_(u"Unlink your Dropbox account"))
else:
self.dropbox.SetLabel(_(u"Link your Dropbox account"))
def show_dialog(self):
wx.MessageDialog(self, _(u"The authorization request will be opened in your browser. Copy the code from Dropbox and paste it into the text box which will appear. You only need to do this once."), _(u"Authorization"), wx.OK).ShowModal()
def get_response(self):
dlg = wx.TextEntryDialog(self, _(u"Enter the code here."), _(u"Verification code"))
if dlg.ShowModal() == wx.ID_CANCEL:
return False
return dlg.GetValue()
def show_error(self):
wx.MessageDialog(self, _(u"Error during authorization. Try again later."), _(u"Error!"), wx.ICON_ERROR).ShowModal()
def get_dropbox(self):
return self.dropbox.GetLabel()
class configurationDialog(baseDialog.BaseWXDialog): class configurationDialog(baseDialog.BaseWXDialog):
def set_title(self, title): def set_title(self, title):

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: 2015-06-08 05:49+Hora de verano central (México)\n" "POT-Creation-Date: 2015-06-12 17:49+Hora de verano 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"