diff --git a/contributors.txt b/contributors.txt index 8fcab4a8..17eaf022 100644 --- a/contributors.txt +++ b/contributors.txt @@ -32,4 +32,5 @@ Paris-Apps Salvadora Melguizo Holly Scott-Gardner Anibal Hernández -Sussan Leiva \ No newline at end of file +Sussan Leiva +Brian Hartgen \ No newline at end of file diff --git a/doc/generator.py b/doc/generator.py index 25c5690b..5423c087 100644 --- a/doc/generator.py +++ b/doc/generator.py @@ -7,7 +7,7 @@ languageHandler.setLanguage("en") import strings # the list of supported language codes of TW Blue -languages = ["en", "es", "fr", "gl"] +languages = ["en", "es"] #"eu", "ar", "ca", "es", "fi", "fr", "gl", "hu", "it", "pl", "pt", "ru", "tr"] def generate_document(language): diff --git a/doc/locales/es/LC_MESSAGES/twblue-documentation.mo b/doc/locales/es/LC_MESSAGES/twblue-documentation.mo index c829dcb9..4730cb8d 100644 Binary files a/doc/locales/es/LC_MESSAGES/twblue-documentation.mo and b/doc/locales/es/LC_MESSAGES/twblue-documentation.mo differ diff --git a/doc/locales/es/LC_MESSAGES/twblue-documentation.po b/doc/locales/es/LC_MESSAGES/twblue-documentation.po index ffe61747..e44d97c8 100644 --- a/doc/locales/es/LC_MESSAGES/twblue-documentation.po +++ b/doc/locales/es/LC_MESSAGES/twblue-documentation.po @@ -5,114 +5,74 @@ msgid "" msgstr "" "Project-Id-Version: twblue-documentation 0.46\n" -"POT-Creation-Date: 2014-08-10 17:42+Hora de verano central (México)\n" -"PO-Revision-Date: 2014-08-11 22:12-0600\n" +"POT-Creation-Date: 2015-06-25 15:28+Hora de verano central (México)\n" +"PO-Revision-Date: 2015-06-25 21:57-0600\n" "Last-Translator: Manuel Cortéz \n" "Language-Team: Spanish \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Generator: Poedit 1.6.7\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language: es\n" "X-Poedit-SourceCharset: UTF-8\n" -#: ../documentationGenerator/strings.py:3 -msgid "Documentation for TW Blue 0.46" -msgstr "Documentación para TW Blue 0.46" +#: ../doc\languageHandler.py:97 +msgid "User default" +msgstr "Predeterminado del sistema" -#: ../documentationGenerator/strings.py:5 -#: ../documentationGenerator/strings.py:8 -#: ../documentationGenerator/strings.py:11 -#: ../documentationGenerator/strings.py:14 -#: ../documentationGenerator/strings.py:17 -#: ../documentationGenerator/strings.py:20 -#: ../documentationGenerator/strings.py:23 -#: ../documentationGenerator/strings.py:34 -#: ../documentationGenerator/strings.py:37 -#: ../documentationGenerator/strings.py:40 -#: ../documentationGenerator/strings.py:59 -#: ../documentationGenerator/strings.py:62 -#: ../documentationGenerator/strings.py:65 -#: ../documentationGenerator/strings.py:68 -#: ../documentationGenerator/strings.py:71 -#: ../documentationGenerator/strings.py:74 -#: ../documentationGenerator/strings.py:77 -#: ../documentationGenerator/strings.py:80 -#: ../documentationGenerator/strings.py:83 -#: ../documentationGenerator/strings.py:86 -#: ../documentationGenerator/strings.py:89 -#: ../documentationGenerator/strings.py:92 -#: ../documentationGenerator/strings.py:95 -#: ../documentationGenerator/strings.py:109 -#: ../documentationGenerator/strings.py:112 -#: ../documentationGenerator/strings.py:115 -#: ../documentationGenerator/strings.py:118 -#: ../documentationGenerator/strings.py:121 -#: ../documentationGenerator/strings.py:124 -#: ../documentationGenerator/strings.py:127 -#: ../documentationGenerator/strings.py:130 -#: ../documentationGenerator/strings.py:133 -#: ../documentationGenerator/strings.py:136 -#: ../documentationGenerator/strings.py:142 -#: ../documentationGenerator/strings.py:145 -#: ../documentationGenerator/strings.py:148 -#: ../documentationGenerator/strings.py:151 -#: ../documentationGenerator/strings.py:154 -#: ../documentationGenerator/strings.py:163 -#: ../documentationGenerator/strings.py:166 -#: ../documentationGenerator/strings.py:173 -#: ../documentationGenerator/strings.py:176 -#: ../documentationGenerator/strings.py:179 -#: ../documentationGenerator/strings.py:182 -#: ../documentationGenerator/strings.py:189 -#: ../documentationGenerator/strings.py:192 -#: ../documentationGenerator/strings.py:198 -#: ../documentationGenerator/strings.py:201 -#: ../documentationGenerator/strings.py:209 -#: ../documentationGenerator/strings.py:212 -#: ../documentationGenerator/strings.py:215 -#: ../documentationGenerator/strings.py:218 -#: ../documentationGenerator/strings.py:221 -#: ../documentationGenerator/strings.py:224 -#: ../documentationGenerator/strings.py:248 -#: ../documentationGenerator/strings.py:251 -#: ../documentationGenerator/strings.py:254 -#: ../documentationGenerator/strings.py:295 -#: ../documentationGenerator/strings.py:298 -#: ../documentationGenerator/strings.py:301 -#: ../documentationGenerator/strings.py:304 -#: ../documentationGenerator/strings.py:309 -#: ../documentationGenerator/strings.py:316 -#: ../documentationGenerator/strings.py:319 -#: ../documentationGenerator/strings.py:322 -#: ../documentationGenerator/strings.py:325 -#: ../documentationGenerator/strings.py:328 -#: ../documentationGenerator/strings.py:331 -#: ../documentationGenerator/strings.py:346 -#: ../documentationGenerator/strings.py:349 -#: ../documentationGenerator/strings.py:352 -#: ../documentationGenerator/strings.py:355 +#: ../doc\strings.py:4 +msgid "Documentation for TWBlue - {0}" +msgstr "Documentación para TWBlue {0}" + +#: ../doc\strings.py:6 ../doc\strings.py:11 ../doc\strings.py:14 +#: ../doc\strings.py:17 ../doc\strings.py:20 ../doc\strings.py:23 +#: ../doc\strings.py:26 ../doc\strings.py:37 ../doc\strings.py:40 +#: ../doc\strings.py:43 ../doc\strings.py:46 ../doc\strings.py:49 +#: ../doc\strings.py:52 ../doc\strings.py:55 ../doc\strings.py:58 +#: ../doc\strings.py:61 ../doc\strings.py:64 ../doc\strings.py:67 +#: ../doc\strings.py:70 ../doc\strings.py:73 ../doc\strings.py:76 +#: ../doc\strings.py:79 ../doc\strings.py:82 ../doc\strings.py:85 +#: ../doc\strings.py:88 ../doc\strings.py:91 ../doc\strings.py:107 +#: ../doc\strings.py:110 ../doc\strings.py:113 ../doc\strings.py:117 +#: ../doc\strings.py:120 ../doc\strings.py:123 ../doc\strings.py:129 +#: ../doc\strings.py:132 ../doc\strings.py:135 ../doc\strings.py:138 +#: ../doc\strings.py:144 ../doc\strings.py:147 ../doc\strings.py:150 +#: ../doc\strings.py:153 ../doc\strings.py:156 ../doc\strings.py:167 +#: ../doc\strings.py:170 ../doc\strings.py:179 ../doc\strings.py:182 +#: ../doc\strings.py:200 ../doc\strings.py:203 ../doc\strings.py:211 +#: ../doc\strings.py:214 ../doc\strings.py:223 ../doc\strings.py:226 +#: ../doc\strings.py:229 ../doc\strings.py:232 ../doc\strings.py:235 +#: ../doc\strings.py:238 ../doc\strings.py:259 ../doc\strings.py:262 +#: ../doc\strings.py:309 ../doc\strings.py:313 ../doc\strings.py:316 +#: ../doc\strings.py:319 ../doc\strings.py:328 ../doc\strings.py:331 +#: ../doc\strings.py:334 ../doc\strings.py:337 ../doc\strings.py:340 +#: ../doc\strings.py:343 ../doc\strings.py:346 ../doc\strings.py:349 +#: ../doc\strings.py:352 ../doc\strings.py:355 ../doc\strings.py:358 +#: ../doc\strings.py:361 ../doc\strings.py:371 ../doc\strings.py:374 +#: ../doc\strings.py:377 ../doc\strings.py:380 ../doc\strings.py:383 +#: ../doc\strings.py:386 ../doc\strings.py:389 ../doc\strings.py:392 +#: ../doc\strings.py:395 msgid "\n" msgstr "\n" -#: ../documentationGenerator/strings.py:7 -msgid "# Version 0.46 (alpha)" -msgstr "# Versión 0.46(Alpha)" +#: ../doc\strings.py:8 +msgid "## Table of contents" +msgstr "## Tabla de contenidos" -#: ../documentationGenerator/strings.py:10 -msgid "# Warning!" -msgstr "# ¡Peligro!" +#: ../doc\strings.py:13 +msgid "## Warning!" +msgstr "## ¡Peligro!" -#: ../documentationGenerator/strings.py:13 +#: ../doc\strings.py:16 msgid "" -"You're reading documentation produced for a program still in development. " -"The object of this manual is explaining some details of the operation of the " +"You are reading documentation produced for a program still in development. " +"The object of this manual is to explain some details of the operation of the " "program. Bear in mind that as the software is in the process of active " -"development, parts of this document may change in the near future, so it is " -"advisable to keep an eye on it from time to time to avoid missing too much " -"out." +"development, parts of this user guide may change in the near future, so it " +"is advisable to keep checking from time to time to avoid missing important " +"information." msgstr "" "Estás leyendo un documento generado para una aplicación en estado de " "desarrollo. La intención de este manual es clarificar algunos detalles sobre " @@ -121,7 +81,7 @@ msgstr "" "futuro relativamente cercano, así que es recomendable dar un vistazo de vez " "en cuando para no perderte demasiado." -#: ../documentationGenerator/strings.py:16 +#: ../doc\strings.py:19 msgid "" "If you want to see what has changed from the previous version, [read the " "list of updates here.](changes.html)" @@ -129,320 +89,329 @@ msgstr "" "Si quieres ver lo que ha cambiado con respecto a la versión anterior, [lee " "la lista de novedades aquí.](changes.html)" -#: ../documentationGenerator/strings.py:19 -msgid "# TW Blue" -msgstr "# TW Blue" +#: ../doc\strings.py:22 +msgid "## Introduction" +msgstr "## Introducción" -#: ../documentationGenerator/strings.py:22 +#: ../doc\strings.py:25 msgid "" -"TW Blue is an application to make Twitter simple and fast, while using as " -"few resources as possible. With it, you can do things like the following:" +"TWBlue is an application to make Twitter simple and fast, while using as few " +"resources as possible. With TWBlue, you can do things like the following:" msgstr "" -"TW Blue es una aplicación para utilizar twitter de manera sencilla, rápida, " -"y evitando en la medida de las posibilidades, consumir demasiados recursos " -"del equipo donde se ejecute. Con la aplicación podrás hacer acciones en " -"twitter tales como:" +"TWBlue es una aplicación para utilizar twitter de manera sencilla, rápida, y " +"evitando en la medida de las posibilidades, consumir demasiados recursos del " +"equipo donde se ejecute. Con la aplicación podrás hacer acciones en twitter " +"tales como:" -#: ../documentationGenerator/strings.py:25 -msgid "* Tweet, reply, retweet and delete tweets," +#: ../doc\strings.py:28 +msgid "* Tweet, reply to, retweet and delete tweets," msgstr "* Crear, responder, reenviar y eliminar Tuits," -#: ../documentationGenerator/strings.py:26 +#: ../doc\strings.py:29 msgid "* Mark and unmark a tweet as a favourite," msgstr "* Marcar como favorito, eliminar de tus favoritos un tuit," -#: ../documentationGenerator/strings.py:27 +#: ../doc\strings.py:30 msgid "* Send and delete direct messages," msgstr "* Enviar y eliminar mensajes directos," -#: ../documentationGenerator/strings.py:28 +#: ../doc\strings.py:31 msgid "* See your friends and followers," msgstr "* Ver tus amigos y seguidores," -#: ../documentationGenerator/strings.py:29 +#: ../doc\strings.py:32 msgid "* Follow, unfollow, report as spam and block a user," msgstr "* Seguir, dejar de seguir, reportar como spam y bloquear a un usuario," -#: ../documentationGenerator/strings.py:30 +#: ../doc\strings.py:33 msgid "* Open a user's timeline to see only their tweets," msgstr "" "* Abrir una línea temporal para un usuario, lo que permite obtener todos los " "Tuits de ese usuario únicamente," -#: ../documentationGenerator/strings.py:31 +#: ../doc\strings.py:34 msgid "* Open URLs from a tweet or direct message," msgstr "* Abrir direcciones URL cuando vayan en un tuit o mensaje directo," -#: ../documentationGenerator/strings.py:32 +#: ../doc\strings.py:35 msgid "* Play several types of audio files from addresses," msgstr "" "* Reproducir varios tipos de archivos o direcciones que contengan audio," -#: ../documentationGenerator/strings.py:33 +#: ../doc\strings.py:36 msgid "* And more." msgstr "* Y más." -#: ../documentationGenerator/strings.py:36 -msgid "# Table of contents" -msgstr "# Tabla de contenidos" +#: ../doc\strings.py:39 +msgid "## Usage" +msgstr "## Uso" -#: ../documentationGenerator/strings.py:39 +#: ../doc\strings.py:42 msgid "" -"In order to use an application like TW Blue which allows you to manage your " -"Twitter account, you must first be registered on it. It's beyond the scope " -"of this document to explain how to do so. We'll start from the premise that " -"you have an account with its corresponding user name and password. This " -"document contains the following sections:" +"Twitter is a social networking or micro-blogging tool which allows you to " +"compose short status updates of your activities in 140 characters or less. " +"Twitter is a way for friends, family and co-workers to communicate and stay " +"connected through the exchange of quick, frequent messages. You can restrict " +"delivery of updates to those in your circle of friends or, by default, allow " +"anyone to access them." msgstr "" -"Para poder utilizar una aplicación como TW Blue que te permita gestionar una " -"cuenta de Twitter, primero tienes que estar registrado en esta red social. " -"Esta documentación no tiene como objetivo explicar el procedimiento para " -"hacerlo. Partiremos desde el punto que tienes una cuenta con su respectivo " -"nombre de usuario y contraseña. La documentación cubrirá estas secciones." +"Twitter es una red social que te permite crear actualizaciones de estado " +"sobre tus actividades en un máximo de 140 caracteres. Twitter es una manera " +"para mantenerte conectado con tus amigos, familiares y compañeros de trabajo " +"a través del intercambio de mensajes breves. Puedes restringir tus " +"actualizaciones para que solo las vean tus amigos, o permitir que cualquiera " +"pueda verlas. Esta segunda opción es el comportamiento por defecto de " +"Twitter." -#: ../documentationGenerator/strings.py:42 -msgid "* [Authorising the application](#authorising)" -msgstr "* [Autorizar la aplicación](#autorizar)" - -#: ../documentationGenerator/strings.py:43 -msgid "* [The program's user interface](#interface)" -msgstr "* [La interfaz del programa](#interfaz)" - -#: ../documentationGenerator/strings.py:44 -msgid "* [Controls](#controls)" -msgstr "* [Controles](#controles)" - -#: ../documentationGenerator/strings.py:45 -msgid " * [The Graphical User Interface (GUI)](#gui)" -msgstr " * [La interfaz gráfica (GUI)](#gui)" - -#: ../documentationGenerator/strings.py:46 -msgid " * [Buttons on the application](#buttons)" -msgstr " * [Botones de la aplicación](#botones)" - -#: ../documentationGenerator/strings.py:47 -msgid " * [Menus](#menus)" -msgstr " * [Menús](#menus)" - -#: ../documentationGenerator/strings.py:48 -msgid " * [Application menu](#app)" -msgstr " * [Menú aplicación](#app)" - -#: ../documentationGenerator/strings.py:49 -msgid " * [Tweet menu](#tweet)" -msgstr " * [Menú Tuit](#tuit)" - -#: ../documentationGenerator/strings.py:50 -msgid " * [User menu](#user)" -msgstr " * [Menú Usuario](#usuario)" - -#: ../documentationGenerator/strings.py:51 -msgid " * [Buffer menu](#buffer)" -msgstr " * [Menú buffer](#buffer)" - -#: ../documentationGenerator/strings.py:52 -msgid " * [Help menu](#help)" -msgstr " * [Menú ayuda](#ayuda)" - -#: ../documentationGenerator/strings.py:53 -msgid " * [The invisible interface](#invisible_interface)" -msgstr " * [La interfaz No Visible](#interfaz_no_visible)" - -#: ../documentationGenerator/strings.py:54 -msgid " * [Keyboard shortcuts for the graphical interface](#shortcuts)" -msgstr " * [Atajos de Teclado para la Interfaz Gráfica](#atajos)" - -#: ../documentationGenerator/strings.py:55 +#: ../doc\strings.py:45 msgid "" -" * [Keyboard shortcuts for the invisible interface](#invisible_shortcuts)" +"You can monitor the status of updates from your friends, family or co-" +"workers (known as following), and they in turn can read any updates you " +"create, (known as followers). The updates are referred to as Tweets. The " +"Tweets are posted to your Twitter profile or Blog and are searchable using " +"Twitter Search." msgstr "" -" * [Atajos de Teclado para la Interfaz no Visible](#atajos_invisibles)" +"Puedes ver las actualizaciones de estado de tus amigos, familia y compañeros " +"de trabajo (lo que se conoce como seguir a alguien), y ellos a su vez pueden " +"ver las actualizaciones que tú publicas (lo que se conoce como seguidores). " +"Las actualizaciones se denominan Tuits. Los tuits se publican en tu perfil " +"en Twitter y pueden verse en blogs u otras páginas web." -#: ../documentationGenerator/strings.py:56 -msgid "* [Reporting bugs from the web](#reporting)" -msgstr "* [Reportando Errores desde la web](#reportar)" - -#: ../documentationGenerator/strings.py:57 -msgid "* [Lists](#lists)" -msgstr "* [Listas](#listas)" - -#: ../documentationGenerator/strings.py:58 -msgid "* [Contact](#contact)" -msgstr "* [Contacto](#contacto)" - -#: ../documentationGenerator/strings.py:61 -msgid "## Authorising the application {#authorising}" -msgstr "## Autorizando la aplicación {#autorizar}" - -#: ../documentationGenerator/strings.py:64 +#: ../doc\strings.py:48 msgid "" -"First off, it's necessary to authorise the program so it can access your " +"In order to use TWBlue, you must first have created an account on the " +"Twitter website. The process for signing up for a Twitter account is very " +"accessible. During the account registration, you will need to choose a " +"Twitter username. This serves two purposes. This is the method through which " +"people will comunicate with you, but most importantly, your username and " +"password will be required to connect TWBlue to your Twitter account. We " +"suggest you choose a username which is memorable both to you and the people " +"you hope will follow you." +msgstr "" +"Para utilizar TWBlue, primero debes haber creado una cuenta en el sitio web " +"de Twitter. El proceso de registro en Twitter es muy accesible. Al " +"registrarte, tendrás que elegir un nombre de usuario. Esto sirve para dos " +"propósitos. A través de tu nombre de usuario la gente se comunicará contigo, " +"pero lo más importante, es que se necesitará de tu nombre de usuario y una " +"contraseña para dar permiso a TWBlue de usar tu cuenta. Te sugerimos que " +"escojas un nombre de usuario que resulte fácil de recordar para ti y para " +"tus futuros seguidores." + +#: ../doc\strings.py:51 +msgid "" +"We'll start from the premise that you have a Twitter account with its " +"corresponding username and password." +msgstr "" +"Para esta guía se asumirá que tienes una cuenta de Twitter y su contraseña " +"correspondiente." + +#: ../doc\strings.py:54 +msgid "### Authorising the application" +msgstr "### Autorizando la aplicación {#autorizar}" + +#: ../doc\strings.py:57 +msgid "" +"First of all, it's necessary to authorise the program so it can access your " "Twitter account and act on your behalf. The authorisation process is quite " -"simple, and the program never gets data such as your username and password. " -"In order to authorise the application, you just need to run the main " -"executable file, called TW Blue.exe (on some computers it may appear simply " -"as TW Blue)." +"simple, and the program never retains data such as your password. In order " +"to authorise the application, you just need to run the main executable file, " +"called TWBlue.exe (on some computers it may appear simply as TWBlue if " +"Windows Explorer is not set to display file extensions). We suggest you may " +"like to place a Windows shortcut on your Desktop pointing to this executable " +"file for quick and easy location." msgstr "" "Antes de nada, lo primero que se necesita es autorizar al programa para que " "este pueda acceder a tu cuenta de Twitter, y desde ella realizar lo que le " "pidas. El proceso de autorización es bastante sencillo, y en ningún momento " "el programa podrá tener acceso a tus datos como usuario y contraseña. Para " "autorizar la aplicación, solo tienes que abrir el archivo principal del " -"programa, llamado TW Blue.exe (en algunos PC, solo se muestra como TW Blue)." +"programa, llamado TW Blue.exe (en algunos PC, solo se muestra como TW Blue " +"si el explorador de Windows no está configurado para mostrar las extensiones " +"de archivos). Si usas una versión portable, te sugerimos crear un acceso " +"directo en el escritorio para acceder al programa más rápida y cómodamente." -#: ../documentationGenerator/strings.py:67 +#: ../doc\strings.py:60 msgid "" -"When executed, if you have not previously configured the program, it will " -"show a dialogue box where it tells you'll be taken to Twitter in order to " -"authorise the application as soon as you press OK. To begin the " -"authorisation process, press the only available button on the box." +"TWBlue allows you to monitor several Twitter accounts simultaneously. The " +"program refers to each Twitter account you have configured as a \"Session\". " +"If this is the first time you have launched TWBlue, and if no Twitter " +"session exists, you will see the Session Manager. This dialogue box allows " +"you to authorise as many accounts as you wish. If you press the Tab key to " +"reach the \"new account\" button and activate it by pressing the Space Bar, " +"a dialogue box will advise you that your default internet browser will be " +"opened in order to authorise the application and you will be asked if you " +"would like to continue. Activate the \"yes\" Button by pressing the letter " +"\"Y\" so the process may start." msgstr "" -"Al hacerlo, si no has configurado ninguna vez el programa, se mostrará un " -"cuadro de diálogo donde te informa que serás llevado a Twitter para " -"autorizar la aplicación una vez pulses sobre \"aceptar\". Para empezar con " -"el proceso de autorización presiona sobre el único botón de ese diálogo." +"TWBlue te permite utilizar varias cuentas de Twitter de forma simultánea. El " +"programa se refiere a cada cuenta que tienes configurada como \"sesión\". Si " +"es la primera vez que abres TWBlue, o si no has configurado antes una " +"sesión, verás el gestor de sesiones. Este diálogo te permite autorizar todas " +"las cuentas que desees. Si presionas sobre el botón \"Nueva cuenta\", un " +"mensaje te informará que tu navegador será abierto para autorizar la " +"aplicación. Presiona \"sí\" para iniciar el proceso." -#: ../documentationGenerator/strings.py:70 +#: ../doc\strings.py:63 msgid "" "Your default browser will open on the Twitter page to request authorisation. " -"Enter your user name and password if you're not already logged in, look for " -"the authorise button, and press it." +"Enter your username and password into the appropriate edit fields if you're " +"not already logged in, select the authorise button, and press it." msgstr "" "A continuación, tu navegador predeterminado se abrirá con la página de " "Twitter solicitándote autorizar la aplicación. Escribe, si no estás " "autenticado ya, tu nombre de usuario y contraseña, luego busca el botón " "autorizar, y presiónalo." -#: ../documentationGenerator/strings.py:73 +#: ../doc\strings.py:66 msgid "" -"Read the instructions you will get if the process is successful. In summary, " -"you will be given a numeric code with several digits you must paste on an " -"edit field open by the application on another window." +"Once you've authorised your twitter account, the website will redirect you " +"to a page which will notify you that TWBlue has been authorised " +"successfully. Now you are able to close the page by pressing ALT+F4 which " +"will return you to the Session Manager. On the session list, you will see a " +"new item temporarily called \"Authorised account x\" -where x is a number. " +"The session name will change once you open that session." msgstr "" -"De la página a la que serás redirigido (si el proceso ha tenido éxito), " -"busca las instrucciones que te proporciona Twitter. En resumen, te dará un " -"código numérico de varios dígitos que deberás pegar en un cuadro de texto " -"que la aplicación ha abierto en otra ventana." +"Una vez que hayas autorizado tu cuenta de Twitter, Twitter te redirigirá a " +"una página que te notificará que TWBlue ha sido correctamente autorizado. " +"Ahora puedes cerrar el navegador y regresar al gestor de sesiones. En la " +"lista de sesiones, podrás ver un nuevo elemento llamado temporalmente " +"\"Cuenta autorizada x\", donde x es un número. El nombre cambiará una vez " +"que inicies esa sesión." -#: ../documentationGenerator/strings.py:76 -msgid "Paste the verification code, and press the enter key. " -msgstr "Pega el código de verificación, y pulsa la tecla Intro." +#: ../doc\strings.py:69 +msgid "" +"To start running TWBlue, press the Ok button in the Session Manager " +"dialogue. By default, TWBlue starts all the configured sessions " +"automatically, however, you can change this behavior." +msgstr "" +"Para iniciar TWBlue, presiona el botón aceptar en el gestor de sesiones. De " +"forma predeterminada, TWBlue inicia todas las sesiones configuradas " +"automáticamente, sin embargo, puedes modificar este comportamiento más " +"adelante." -#: ../documentationGenerator/strings.py:79 +#: ../doc\strings.py:72 msgid "" "If all went well, the application will start playing sounds, indicating your " -"data are being updated." +"data is being updated." msgstr "" "Si todo ha salido bien, la aplicación empezará a reproducir un grupo de " "sonidos en señal que se están actualizando tus datos." -#: ../documentationGenerator/strings.py:82 +#: ../doc\strings.py:75 msgid "" -"When the process is finished,the program will play another sound, and the " -"screen reader will say \"ready\"." +"When the process is finished, by default the program will play another " +"sound, and the screen reader will say \"ready\" (this behaviour can be " +"configured)." msgstr "" "Cuando termine, el programa reproducirá otro sonido, y el lector de pantalla " -"dirá \"listo\"." +"dirá \"listo\" (esto puede ser configurado desde las opciones globales)." -#: ../documentationGenerator/strings.py:85 -msgid "## The program's interface {#interface}" -msgstr "## La interfaz del programa {#interfaz}" +#: ../doc\strings.py:78 +msgid "## General concepts" +msgstr "## conceptos generales" -#: ../documentationGenerator/strings.py:88 +#: ../doc\strings.py:81 msgid "" -"The easiest way to describe the graphical interface of the application is a " -"window with a menu bar with four menus (application, tweet, user and help), " -"a list with several elements, and, in most cases, three buttons: tweet, " -"retweet and reply. The actions available for each element are described " -"below." +"Before starting to describe TWBlue's usage, we'll explain some concepts that " +"will be used extensively throughout this manual." msgstr "" -"La forma más simple de describir la interfaz gráfica de la aplicación es la " -"de una ventana con una barra de menú con cinco menús (aplicación, tuit, " -"usuario, buffer y ayuda); una lista de varios elementos y en la mayoría de " -"los casos tres botones. Tuit, retuit y responder. Las acciones para cada uno " -"de estos elementos serán descritas más adelante." +"Antes de profundizar en el uso de TWBlue, es necesario explicar algunos " +"conceptos que serán usados extensivamente a lo largo de esta guía." -#: ../documentationGenerator/strings.py:91 +#: ../doc\strings.py:84 +msgid "### Buffer" +msgstr "### Buffer" + +#: ../doc\strings.py:87 msgid "" -"Elements on the lists may be tweets, direct messages or users. TW Blue " -"creates different tabs for each list, which can be sent tweets, main " -"timeline tweets, favourites, or direct messages, and each tab contains a " -"single type of tweet. These tabs are called lists or buffers." +"A buffer is a list of items to manage the data which arrives from Twitter, " +"after being processed by the application. When you configure a new session " +"on TWBlue and start it, many buffers are created. Each of them may contain " +"some of the items which TWBlue works with: Tweets, direct messages, users, " +"trends or events. According to the buffer you are focusing, you will be able " +"to do different actions with these items." msgstr "" -"Los elementos que hay en las listas pueden ser Tuits, mensajes directos o " -"usuarios. TW Blue crea diferentes pestañas para cada lista, pues estos " -"elementos pueden ser Tuits enviados, Tuits recividos en la línea principal, " -"favoritos, o mensajes directos, y cada pestaña tiene un solo tipo de Tuit. " -"Estas pestañas se llaman listas o buffers." +"Un Buffer es una lista de elementos para manejar la información que proviene " +"de Twitter, después de ser procesada por la aplicación. Cuando configuras e " +"inicias una sesión en TWBlue, este crea algunos buffers. Cada uno de ellos " +"puede contener elementos con los que trabaja TWBlue: Tuits, mensajes " +"directos, usuarios, tendencias o eventos. Dependiendo del buffer en el que " +"te encuentres, serás capaz de realizar distintas acciones con sus elementos." -#: ../documentationGenerator/strings.py:94 +#: ../doc\strings.py:90 msgid "" -"To switch from list to list press control-tab to go forward, and control-" -"shift-tab to go back. Screen readers will announce the list that gains the " -"focus at all times. These are the basic lists of TW Blue, which are " -"configured by default." +"The following is a description for every one of TWBlue's buffers and the " +"kind of items they work with." msgstr "" -"Para cambiar entre las listas se hace presionando Control+Tab si se desea " -"avanzar, y Control+Shift+Tab para retroceder. En todo momento los lectores " -"de pantalla anunciarán la lista hacia la que se cambie el foco de la " -"aplicación. Aquí están las listas básicas de TW Blue, que aparecen si se usa " -"la configuración por defecto." +"A continuación está una descripción para cada buffer y los diferentes tipos " +"de elementos que pueden contener." -#: ../documentationGenerator/strings.py:97 +#: ../doc\strings.py:93 msgid "" -"* Home: it shows all the tweets on the main timeline. These are the tweets " +"* Home: this shows all the tweets on the main timeline. These are the tweets " "by users you follow." msgstr "" "* Principal: Aquí van todos los Tuits que se muestran en la línea principal. " "Estos son los Tuits de los usuarios a los que sigues." -#: ../documentationGenerator/strings.py:98 +#: ../doc\strings.py:94 msgid "" "* Mentions: if a user, whether you follow them or not, mentions you on " -"Twitter, you will find it on this list." +"Twitter, you will find it in this list." msgstr "" "* Menciones: Si un usuario (lo sigas o no) te menciona en Twitter, lo verás " "en esta lista." -#: ../documentationGenerator/strings.py:99 +#: ../doc\strings.py:95 msgid "" -"* Direct messages: here go the private direct messages you exchange with " -"users you follow and who follow you back. This list only shows received " -"messages." +"* Direct messages: here you will find the private direct messages you " +"exchange with users who follow you , or with any user, if you allow direct " +"messages from everyone (this setting is configurable from Twitter). This " +"list only shows received messages." msgstr "" "* Mensajes directos: Aquí están los mensajes directos (privados) que " -"intercambias con los usuarios que sigues y te siguen. Esta lista solo " -"muestra los mensajes recividos." +"intercambias con los usuarios que sigues y te siguen, o con cualquier " +"usuario, si tienes configurada la opción para recibir mensajes directos de " +"cualquier persona (esto es configurable desde las opciones de seguridad y " +"privacidad en la web de Twitter). Esta lista solo muestra los mensajes " +"recividos." -#: ../documentationGenerator/strings.py:100 +#: ../doc\strings.py:96 msgid "" -"* Sent: it shows all the tweets and direct messages sent from your account." +"* Sent direct messages: this buffer shows all the direct messages sent from " +"your account." msgstr "" -"* Enviados: En esta lista se muestran todos los Tuits y mensajes directos " -"que se han enviado desde tu cuenta." +"* Mensajes directos enviados: En esta lista se muestran los mensajes " +"directos que han sido enviados desde tu cuenta." -#: ../documentationGenerator/strings.py:101 -msgid "* Favourites: here you will see all tweets you have favourited." +#: ../doc\strings.py:97 +msgid "* Sent tweets: this shows all the tweets sent from your account." +msgstr "" +"* Tuits enviados: En esta lista se muestran los Tuits que se han enviado " +"desde tu cuenta." + +#: ../doc\strings.py:98 +msgid "* Favourites: here you will see all the tweets you have favourited." msgstr "* Favoritos: Aquí verás los Tuits que has marcado como favoritos." -#: ../documentationGenerator/strings.py:102 +#: ../doc\strings.py:99 msgid "" "* Followers: when users follow you, you'll be able to see them on this list, " -"with some of their account information." +"with some of their account details." msgstr "" "* Seguidores: Cuando los usuarios sigan tu cuenta, podrás verlos en esta " -"lista, junto con un poco de información de la cuenta." +"lista, junto con unos cuantos detalles de su cuenta." -#: ../documentationGenerator/strings.py:103 +#: ../doc\strings.py:100 msgid "" "* Friends: the same as the previous list, but these are the users you follow." msgstr "" "* Amigos: Igual que la lista anterior, pero estos usuarios son a los que tú " "sigues." -#: ../documentationGenerator/strings.py:104 +#: ../doc\strings.py:101 msgid "" -"* User timelines: these are lists you may create. They contain only the " +"* User timelines: these are buffers you may create. They contain only the " "tweets by a specific user. They're used so you can see the tweets by a " "single person and you don't want to look all over your timeline. You may " "create as many as you like." @@ -453,34 +422,29 @@ msgstr "" "deseas buscar por todo tu timeline. Puedes crear tantas como usuarios " "necesites." -#: ../documentationGenerator/strings.py:105 +#: ../doc\strings.py:102 msgid "" "* Events: An event is anything that happens on Twitter, such as when someone " "follows you, when someone adds or removes one of your tweets from their " -"favorites list, or when you subscribe to a list. There are many more but TW " -"Blue shows the most common ones in the events buffer so that you can easily " -"keep track of what is happening on your account." +"favourites list, or when you subscribe to a list. There are many more, but " +"TWBlue shows the most common ones in the events buffer so that you can " +"easily keep track of what is happening on your account." msgstr "" "* Eventos: Un evento en TW Blue es \"algo\" que pase en Twitter. En la línea " "de eventos, podrás ver registrados los eventos más comunes (p. Ej. Te han " "comenzado a seguir, han marcado o removido un tweet tuyo de los favoritos, " -"te has suscrito a una lista). Son como pequeñas notificaciones que envía " -"Twitter y TW Blue organiza para que no te pierdas lo que ha pasado con tu " -"cuenta." +"te has suscrito a una lista). Son notificaciones que envía Twitter y TW Blue " +"organiza para que no te pierdas lo que ha pasado con tu cuenta." -#: ../documentationGenerator/strings.py:106 +#: ../doc\strings.py:103 msgid "" -"* Lists: A list is similar to a temporary timeline, except that you can " -"configure it to contain tweets from multiple users. This is currently an " -"experimental feature. If you decide to use it, please report any problems " -"you encounter." +"* Lists: A list is similar to a user timeline, except that you can " +"configure it to contain tweets from multiple users." msgstr "" "* Lista: Una lista es parecida a una línea temporal, pero compuesta por los " -"tweets de cada usuario que forme parte de ella. De momento las listas son " -"una característica experimental de TW Blue. Si experimentas problemas con " -"ellas, por favor escríbenos para contárnoslo." +"tweets de cada usuario que forme parte de ella." -#: ../documentationGenerator/strings.py:107 +#: ../doc\strings.py:104 msgid "* Search: A search buffer contains the results of a search operation." msgstr "" "* Búsqueda: Un buffer de búsqueda contiene los resultados de una búsqueda " @@ -488,164 +452,199 @@ msgstr "" "término en los tuits relevantes de Twitter, o por usuarios, donde los " "resultados son nombres de usuario de Twitter." -#: ../documentationGenerator/strings.py:108 +#: ../doc\strings.py:105 msgid "" -"* User favorites: You can have TW Blue create a buffer containing tweets " -"favorited by a particular user." +"* User favourites: You can have TWBlue create a buffer containing tweets " +"favourited by a particular user." msgstr "" -"* Favoritos de un usuario: Es posible pedirle a TW Blue que te muestre los " +"* Favoritos de un usuario: TWBlue puede crear buffers que te muestren los " "tuits que un usuario ha marcado como favoritos." -#: ../documentationGenerator/strings.py:111 +#: ../doc\strings.py:106 msgid "" -"Note: In this version of TW Blue, you will be able to see up to (or around) " -"400 friends and followers in their respective buffers. In the next version, " -"we will provide a solution for those who have more to be able to see them." +"* Trending Topics: a trend buffer shows the top ten most used terms in a " +"geographical region. This region may be a country or a city. Trends are " +"updated every five minutes." msgstr "" -"Nota: Únicamente para esta versión de TW Blue, los amigos y seguidores " -"actualizarán hasta 400, o cerca a los 400. En la próxima versión " -"proporcionaremos un método para ver los amigos y seguidores sin exponerse " -"tanto a los errores causados por el uso de la API de Twitter, muy frecuente " -"entre personas con más de 600 amigos o seguidores." +"* Tendencias: Un buffer de tendencias muestra los 10 términos más utilizados " +"en una región geográfica. Esta región puede ser una ciudad o un país. Las " +"tendencias son actualizadas cada cinco minutos." -#: ../documentationGenerator/strings.py:114 +#: ../doc\strings.py:109 msgid "" -"Bear in mind the default configuration only allows getting the last 200 " -"tweets for the home,, mentions, direct messages, and user timeline lists. " -"You can change this on the setup dialogue. For the sent list, the last 200 " -"tweets and the last 200 sent direct messages will be retrieved. Future " -"versions will allow changing this parameter." +"If a tweet contains a URL, you can press enter in the GUI or Control + " +"Windows + Enter in the invisible interface to open it. If it contains audio, " +"you can press Control + Enter or Control + Windows + Alt + Enter to play it, " +"respectively. TWBlue will play a sound if the tweet contains the #audio " +"hashtag, but there may be tweets which contain audio without this. Finally, " +"if a tweet contains geographical information, you can press Control + " +"Windows + G in the invisible interface to retrieve it." msgstr "" -"Ten en cuenta que por defecto la configuración solo permite obtener los 200 " -"últimos Tuits para las listas principal, menciones, mensajes directos y " -"líneas temporales. Esto puedes cambiarlo desde el diálogo de configuración. " -"Para los enviados se obtendrán los últimos 200 Tuits y 200 mensajes " -"directos. En versiones futuras se permitirá ajustar este parámetro." +"Si un tuit contiene una dirección web, puedes presionar enter en la interfaz " +"gráfica o control + Windows + Enter en la interfaz invisible para abrirla. " +"Si incluye un archivo de audio, puedes presionar Control + Enter o control + " +"Alt + Windows + Enter para reproducirlo, respectivamente. TWBlue reproducirá " +"un sonido cuando el tuit contenga la etiqueta #audio, pero los tuits podrían " +"incluir ficheros de audio sin esta etiqueta. Finalmente, si el tuit incluye " +"información geográfica, puedes presionar Control + G o Control + Windows + G " +"para verla." -#: ../documentationGenerator/strings.py:117 +#: ../doc\strings.py:112 +msgid "### Username fields" +msgstr "### Campos para nombre de usuario" + +#: ../doc\strings.py:115 msgid "" -"If there's a URL on a tweet TW Blue will try to open it when you press enter " -"on it. If there are several, it will show you a list with all of them so you " -"choose the one you want. If you're on the followers or friends dialogue, the " -"enter key will show you additional information on them." +"These fields accept a Twitter username (without the at sign) as the input. " +"They are present in the send direct message and the user actions dialogue " +"boxes. Those dialogues will be discussed later. The initial value of these " +"fields depends on where they were opened from. They are prepopulated with " +"the username of the sender of the focused tweet (if they were opened from " +"the home and sent timelines, from users'' timelines or from lists), the " +"sender of the focused direct message (if from the received or sent direct " +"message buffers) or in the focused user (if from the followers' or friends' " +"buffer). If one of those dialogue boxes is opened from a tweet, and if " +"there are more users mentioned in it, you can use the arrow keys to switch " +"between them. Alternatively, you can also type a username." msgstr "" -"Si hay una dirección URL en algún tuit, TW Blue intentará abrirla cuando " -"presiones Intro sobre ella. Si hay más de una, te mostrará una lista con " -"todas para que selecciones la que quieras abrir. Si estás en el cuadro de " -"diálogo de los amigos o seguidores, la tecla intro te mostrará detalles del " -"mismo." +"Estos campos de texto esperan un nombre de usuario de Twitter (sin el signo " +"de arroba). Están presentes en los diálogos para enviar mensajes directos " +"así como en el diálogo de acciones de usuario. Estos diálogos serán " +"abordados más tarde. El valor inicial de estos campos depende del lugar " +"desde donde fueron abiertos. Estos campos se rellenan automáticamente con el " +"nombre de usuario del tuit actual (si ha sido abierto desde el buffer " +"principal o de enviados, desde una línea temporal de un usuario o una " +"lista), el usuario que envió el mensaje directo actual (si se abre desde el " +"buffer de mensajes directos o mensajes directos enviados) o del usuario " +"actual (desde el buffer de amigos o seguidores). Si uno de estos diálogos es " +"abierto desde un tuit, y si hay más de un usuario mencionado, puedes usar " +"las flechas de arriba/abajo para conmutar entre ellos. Alternativamente, " +"puedes escribir manualmente el usuario de Twitter en el campo de texto." -#: ../documentationGenerator/strings.py:120 +#: ../doc\strings.py:116 +msgid "## TWBlue's interfaces'" +msgstr "## Interfaces de TWBlue" + +#: ../doc\strings.py:119 +msgid "### The graphical user interface (GUI)" +msgstr "### Interfaz gráfica (GUI)" + +#: ../doc\strings.py:122 +msgid "The graphical user interface of TWBlue consists of a window containing:" +msgstr "" +"La interfaz gráfica de TWBlue está formada por una ventana que contiene los " +"siguientes elementos:" + +#: ../doc\strings.py:125 msgid "" -"If you press control-enter, TW Blue will try to play the audio from the " -"focused tweet, as long as it has a URL. If it has the #audio hashtag, you " -"will hear a sound when it is selected, letting you know you can try to play " -"it. However, a tweet can be missing the hashtag and TW Blue will still be " -"able to play it so long as it contains a URL with audio." +"* a menu bar accomodating five menus (application, tweet, user, buffer and " +"help);" msgstr "" -"Si pulsas Control+Intro, TW Blue intentará reproducir el audio que tenga el " -"tuit sobre el que está el foco del sistema, siempre que tenga una URL. Si el " -"tuit lleva la etiqueta #audio, un sonido al pasar por él te alertará que es " -"un audio y puedes intentar reproducirlo. No obstante, también puede que no " -"esté etiquetado y que TW Blue pueda reproducirlo, siempre que lleve a una " -"dirección URL donde exista audio." +"* Una barra de menú que tiene cinco menús (aplicación, tuit, usuario, buffer " +"y ayuda)," -#: ../documentationGenerator/strings.py:123 -msgid "## Controls {#controls}" -msgstr "## Controles {#controles}" +#: ../doc\strings.py:126 +msgid "* One tree view," +msgstr "* Una presentación en árbol," -#: ../documentationGenerator/strings.py:126 +#: ../doc\strings.py:127 +msgid "* One list of items" +msgstr "* Una lista de elementos" + +#: ../doc\strings.py:128 +msgid "* Three buttons in most dialogs: Tweet, retweet and reply." +msgstr "* Tres botones, la mayoría de las veces: tuit, retuit y responder." + +#: ../doc\strings.py:131 +msgid "The actions that are available for every item will be described later." +msgstr "" +"Las acciones disponibles para cada uno de estos elementos serán retomadas " +"más adelante." + +#: ../doc\strings.py:134 msgid "" -"Beginning with the latest version, there's support for an interface which " -"does not require a visible window. It can be activated by pressing control-" -"m, or choosing hide window from the application menu. This interface is " -"entirely driven through shortcut keys. These shortcuts are different from " -"those used to drive the graphical interface. Each interface can use only its " -"own shortcuts, so you may not use the invisible shortcuts if you have the " -"graphical interface opened. This section describes both the graphical and " -"the invisible interface." +"In summary, the GUI contains two core components. These are the controls you " +"will find while pressing the Tab key within the program's interface, and the " +"different elements present on the menu bar." msgstr "" -"A partir de la versión 0.36, existe soporte para una interfaz que no " -"requiere de una ventana visible. Esta puede ser activada pulsando Control+m, " -"o seleccionando desde el menú aplicación la opción \"Esconder ventana\". " -"Esta interfaz se maneja completamente con atajos de teclado. Estos atajos " -"son diferentes a los que se utilizan para la interfaz gráfica. Cada una de " -"ellas podrá utilizar solo los atajos que le correspondan, lo que quiere " -"decir que no se permitirá utilizar los atajos de la interfaz no visible si " -"se tiene activada la interfaz gráfica. En esta sección se detallará tanto la " -"interfaz gráfica como la no visible." +"La interfaz gráfica contiene dos componentes importantes. Estos son el grupo " +"de controles que encontrarás si presionas tab en la ventana gráfica, y los " +"diferentes elementos que están en la barra de menú." -#: ../documentationGenerator/strings.py:129 -msgid "### The graphical user interface (GUI) {#gui}" -msgstr "### Interfaz gráfica (GUI) {#gui}" +#: ../doc\strings.py:137 +msgid "#### Buttons in the application" +msgstr "#### Botones de la aplicación" -#: ../documentationGenerator/strings.py:132 -msgid "" -"Here you have a list divided into two parts. On the one hand, the buttons " -"you will find while tabbing around on the program's interface, and on the " -"other, the different elements present on the menu bar." -msgstr "" -"Aquí una lista dividida en dos partes. Por un lado, los botones que " -"encontrarás si presionas Tab o Shift+Tab en la interfaz del programa, y por " -"otro, los diferentes elementos que hay en la barra de menú." - -#: ../documentationGenerator/strings.py:135 -msgid "#### Buttons on the application {#buttons}" -msgstr "#### Botones de la aplicación {#botones}" - -#: ../documentationGenerator/strings.py:138 +#: ../doc\strings.py:140 msgid "" "* Tweet: this button opens up a dialogue box to write your tweet. The " -"message must not exceed 140 characters. If you write past this limit, a " -"sound will play to warn you. You may use the shorten and expand URL buttons " -"to comply with the character limit. Press enter to send the tweet. If all " -"goes well, you'll hear a sound confirming it. Otherwise, the screen reader " -"will say an error message in English describing the problem." +"message must not exceed 140 characters. If you write past this limit, a " +"sound will play to warn you. Note that the character count is displayed in " +"the title bar. You may use the shorten and expand URL buttons to comply with " +"the character limit. You can upload a picture, check spelling, attach audio " +"or translate your message by selecting one of the available buttons in the " +"dialogue box. In addition, you can autocomplete the entering of users by " +"pressing Alt + A or the button for that purpose if you have the database of " +"users configured. Press enter to send the tweet. If all goes well, you'll " +"hear a sound confirming it. Otherwise, the screen reader will speak an error " +"message in English describing the problem." msgstr "" "* Twit: Este botón abre el diálogo para escribir un tuit. El mensaje solo " "debe tener 140 caracteres. Al escribir el caracter número 141, un sonido " "será reproducido para indicarte que te has pasado del límite permitido por " -"Twitter. Puedes querer acortar o desacortar una URL si la incluye tu tuit a " -"fin de ganar más espacio donde escribir, para eso están los botones con esos " -"nombres. Pulsa Intro para enviar el tuit. Si todo sale bien, el mensaje se " -"enviará y tú escucharás un sonido que te lo confirme, si no, el lector de " -"pantalla te responderá con un error en inglés, que indica por qué no se ha " -"podido enviar el mensaje." +"Twitter. Ten en cuenta que el número de caracteres escritos se muestra en la " +"barra de título. Puedes querer acortar o desacortar una URL si la incluye tu " +"tuit a fin de ganar más espacio donde escribir, para eso están los botones " +"con esos nombres. Puedes también subir una foto, un archivo de audio, " +"revisar la ortografía de tu mensaje o traducirlo seleccionando uno de los " +"diferentes botones del diálogo. Además, puedes autocompletar los nombres de " +"usuarios si pulsas Alt + A o el botón \"autocompletar usuarios\" del diálogo " +"si has configurado la base de datos de autocompletado de usuarios. Pulsa " +"Intro para enviar el tuit. Si todo sale bien, el mensaje se enviará y tú " +"escucharás un sonido que te lo confirme, si no, el lector de pantalla te " +"responderá con un error en inglés, que indica por qué no se ha podido enviar " +"el mensaje." -#: ../documentationGenerator/strings.py:139 +#: ../doc\strings.py:141 msgid "" "* Retweet: this button retweets the message you're reading. After you press " -"it, you'll be asked if you want to add a comment or simply send it as " -"written." +"it, if you haven't configured the application not to do so, you'll be asked " +"if you want to add a comment or simply send it as written. If you choose to " +"add a comment, and if the original tweet plus the comment exceeds 140 " +"characters, you will be asked if you want to post it as a comment with a " +"mention to the original user and a link to the originating tweet." msgstr "" -"* Retuit: Este botón se encarga de reenviar el tuit sobre el que estás " -"leyendo. Al presionarlo se te preguntará si deseas añadirle un comentario al " -"tuit original (citándolo) o simplemente enviarlo como se ha escrito sin " -"añadir nada más." +"* Retuit: Este botón retuitea el mensaje que estás leyendo. Luego de " +"presionarlo, si no has configurado la aplicación para no hacerlo, se te " +"preguntará si deseas añadir un comentario al retuit o compartirlo tal y como " +"fue escrito. Si decides añadir un comentario, y si el tuit original sumado a " +"tu comentario sobrepasa los 140 caracteres, se te preguntará si quieres " +"publicar tu comentario con una mención al usuario, y un enlace al tuit " +"original." -#: ../documentationGenerator/strings.py:140 +#: ../doc\strings.py:142 msgid "" "* Reply: when you're viewing a tweet, you can reply to the user who sent it " -"by pressing this button. A dialogue will open up like the one for tweeting, " -"but with the name of the user already filled in (for example @user) so you " -"only need to write your message. If there are more users mentioned on the " -"tweet, you can press shift-tab and press the mention all users button. When " -"you're on the friends or followers lists, the button will be called mention " -"instead." +"by pressing this button. A dialogue will open up similar to the one for " +"tweeting, but with the name of the user already filled in (for example " +"@user) so you only need to write your message. If there are more users " +"referred to in the tweet, you can press shift-tab and activate the mention " +"all users button. When you're on the friends or followers lists, the button " +"will be called mention instead." msgstr "" "* Responder: Cuando estés visualizando un Tuit, puedes responderle al " "usuario que lo escribió pulsando sobre este botón. Se abrirá el mismo " "diálogo de Tuit, pero con el nombre del usuario (por ejemplo @usuario) en " "el, para que solo escribas el mensaje que quieres responderle. Si en el tuit " "hay más de un usuario mencionado, pulsa Shift+Tab y pulsa el botón " -"\"Mencionar a todos los usuarios\". Cuando estés en la lista de amigos o " -"seguidores, este botón se llamará mencionar." +"\"Mencionar a todos\". Cuando estés en la lista de amigos o seguidores, este " +"botón se llamará mencionar." -#: ../documentationGenerator/strings.py:141 +#: ../doc\strings.py:143 msgid "" "* Direct message: exactly like sending a tweet, but it's a private message " "which can only be read by the user you send it to. Press shift-tab to see " -"the recipient. If there were other users mentioned on the tweet you were " +"the recipient. If there were other users mentioned in the tweet you were " "reading, you can arrow up or down to choose which one to send it to, or " "write the username yourself without the at sign." msgstr "" @@ -656,14 +655,14 @@ msgstr "" "flechas de arriba y abajo para seleccionar otro, o escribir tú mismo el " "usuario (sin el signo de arroba)." -#: ../documentationGenerator/strings.py:144 +#: ../doc\strings.py:146 msgid "" "Bear in mind that buttons will appear according to which actions are " "possible on the list you are browsing. For example, on the home timeline, " "mentions, sent, favourites and user timelines you will see the four buttons, " "while on the direct messages list you'll only get the direct message and " -"tweet buttons, and on friends and followers lists you will get the direct " -"message, tweet, and mention buttons." +"tweet buttons, and on friends and followers lists the direct message, tweet, " +"and mention buttons will be available." msgstr "" "Ten en cuenta que los botones aparecerán según las acciones que se puedan " "hacer en la lista donde estés. Por ejemplo, en la línea principal, " @@ -673,33 +672,44 @@ msgstr "" "listas de amigos y seguidores, se verá el botón para \"Twit\" y el de " "\"Mensaje directo\" junto a \"mencionar\"." -#: ../documentationGenerator/strings.py:147 -msgid "#### Menus {#menus}" -msgstr "#### Menús {#menus}" +#: ../doc\strings.py:149 +msgid "#### Menus" +msgstr "#### Menús" -#: ../documentationGenerator/strings.py:150 +#: ../doc\strings.py:152 msgid "" -"On top of the program window there's a menu bar which has the same " -"functions, and some more. To access the menu bar, press alt. You will find " -"four menus: application, tweet, user and help. This section describes the " -"items on each one of them." +"Visually, Towards the top of the main application window, can be found a " +"menu bar which contains many of the same functions as listed in the previous " +"section, together with some additional items. To access the menu bar, press " +"the alt key. You will find five menus listed: application, tweet, user, " +"buffer and help. This section describes the items on each one of them." msgstr "" -"En la parte superior de la ventana del programa podrás encontrar una barra " -"de menú que hace las mismas cosas, y algunas cuantas más. A la barra de menú " -"se accede presionando la tecla ALT, y cuenta en este momento con cuatro " -"menús para diferentes acciones: Aplicación, Tuit, usuario y Ayuda. En esta " -"sección se describen las acciones para cada uno de ellos." +"Visualmente, en la parte superior de la ventana del programa podrás " +"encontrar una barra de menú que hace las mismas cosas, y algunas cuantas " +"más. A la barra de menú se accede presionando la tecla Alt, encontrarás " +"cinco menús: Aplicación, Tuit, Usuario, Buffer y Ayuda. En esta sección se " +"describen las acciones para cada uno de ellos." -#: ../documentationGenerator/strings.py:153 -msgid "##### Application menu {#app}" -msgstr "##### Menú aplicación {#app}" +#: ../doc\strings.py:155 +msgid "##### Application menu" +msgstr "##### Menú aplicación" -#: ../documentationGenerator/strings.py:156 +#: ../doc\strings.py:158 msgid "" -"* Update profile: opens a dialogue box where you can update your information " -"on Twitter: name, location, URL and bio. If you have already set this up the " -"fields will be prefilled with the existing information. Also, you can upload " -"a photo to your profile." +"* Manage accounts: Opens a window with all the sessions configured in " +"TWBlue, where you can add new sessions or delete the ones you've already " +"created." +msgstr "" +"* Gestionar cuentas: Abre una ventana donde puedes ver todas las sesiones " +"que has configurado con TWBlue, lo que te permite añadir más cuentas o " +"eliminar las que ya hay configuradas." + +#: ../doc\strings.py:159 +msgid "" +"* Update profile: opens a dialogue where you can update your information on " +"Twitter: name, location, website and bio. If you have already set this up " +"the fields will be prefilled with the existing information. Also, you can " +"upload a photo to your profile." msgstr "" "* Actualizar Perfil: Abre un diálogo desde donde se podrá actualizar parte " "de tu información en Twitter. Nombre, ubicación, dirección URL y " @@ -707,7 +717,7 @@ msgstr "" "llenarán automáticamente con lo que tiene tu configuración de Twitter. " "También podrás subir una foto a tu perfil." -#: ../documentationGenerator/strings.py:157 +#: ../doc\strings.py:160 msgid "" "* Hide window: turns off the Graphical User Interface. Read the section on " "the invisible interface for further details." @@ -715,18 +725,19 @@ msgstr "" "* Esconder Ventana: Desactiva la interfaz gráfica. Lee el apartado sobre la " "interfaz no visible para más detalles sobre este comportamiento." -#: ../documentationGenerator/strings.py:158 +#: ../doc\strings.py:161 msgid "" -"* Search: shows a dialog where you can search for tweets or users on Twitter." +"* Search: shows a dialogue box where you can search for tweets or users on " +"Twitter." msgstr "" "* Búsqueda: Muestra un cuadro de diálogo desde donde puedes buscar por tuits " "o por usuarios en twitter." -#: ../documentationGenerator/strings.py:159 +#: ../doc\strings.py:162 msgid "" -"* Lists Manager: This dialog allows you to manage your Twitter lists. In " -"order to use them, you must first create them. Here, you can view, edit, " -"create, delete or, optionally, open them in buffers similar to temporary " +"* Lists Manager: This dialogue box allows you to manage your Twitter lists. " +"In order to use them, you must first create them. Here, you can view, edit, " +"create, delete or, optionally, open them in buffers similar to user " "timelines." msgstr "" "* Gestor de listas: Para poder utilizar las listas de Twitter, primero " @@ -734,37 +745,46 @@ msgstr "" "crearlas, borrarlas y, opcionalmente, verlas en buffers tal como lo harías " "con las líneas temporales." -#: ../documentationGenerator/strings.py:160 +#: ../doc\strings.py:163 msgid "" -"* Sound tutorial: Opens a dialog where you can familiarize yourself with the " -"different sounds of the program." +"* Edit keystrokes: this opens a dialogue where you can see and edit the " +"shortcuts relative to the invisible interface." msgstr "" -"* Tutorial de sonidos: Abre un diálogo donde verás una lista de los sonidos " -"de TW blue, para que puedas aprenderlos y no te cueste trabajo " -"familiarizarte con TW Blue." +"* Editar combinaciones de teclas: Abre un diálogo donde puedes configurar " +"las combinaciones de teclado para la interfaz invisible de TWBlue." -#: ../documentationGenerator/strings.py:161 +#: ../doc\strings.py:164 msgid "" -"* Preferences: opens up a preference dialogue box from which you can control " -"some of the program settings. The options need no explanation." +"* Account settings: Opens a dialogue box which lets you customize settings " +"for the current account." msgstr "" -"* Preferencias: Abre un diálogo de configuración desde donde se pueden " -"controlar algunos aspectos del programa. Las opciones no necesitan de " -"explicación." +"* Opciones de cuenta: Abre un diálogo que te permite configurar las opciones " +"para la cuenta actual." -#: ../documentationGenerator/strings.py:162 +#: ../doc\strings.py:165 +msgid "" +"* Global settings: Opens a dialogue which lets you configure settings for " +"the entire application." +msgstr "" +"* Opciones globales: Abre un diálogo para configurar las opciones que " +"afectan a toda la aplicación." + +#: ../doc\strings.py:166 msgid "" "* Quit: asks whether you want to exit the program. If the answer is yes, it " -"shuts the application down." +"closes the application. If you wish TWBlue not to ask you for confirmation " +"before exiting, uncheck the checkbox from the global settings dialogue box." msgstr "" -"* Salir: pregunta si quieres salir o no del programa. Si la respuesta es que " -"sí, cierra la aplicación." +"* Salir: pregunta si quieres salir o no del programa. Si la respuesta es sí, " +"cierra la aplicación. Si no deseas que TWBlue te pregunte siempre antes de " +"salir, puedes configurar esta opción desmarcando la casilla correspondiente " +"desde el diálogo de opciones globales." -#: ../documentationGenerator/strings.py:165 -msgid "##### Tweet menu {#tweet}" -msgstr "##### Menú Tuit {#tuit}" +#: ../doc\strings.py:169 +msgid "##### Tweet menu" +msgstr "##### Menú Tuit" -#: ../documentationGenerator/strings.py:168 +#: ../doc\strings.py:172 msgid "" "* You will first find the items to tweet, reply and retweet, which are " "equivalent to the buttons with the same name." @@ -772,82 +792,184 @@ msgstr "" "* Las primeras opciones del menú son Twit, responder y retuit, que " "corresponden a los botones del mismo nombre." -#: ../documentationGenerator/strings.py:169 -msgid "* Mark as favourite: marks the tweet you're viewing as a favourite." +#: ../doc\strings.py:173 +msgid "* Add to favourites: marks the tweet you're viewing as a favourite." msgstr "* Marcar como favorito: Marca el tuit que estés viendo como favorito." -#: ../documentationGenerator/strings.py:170 +#: ../doc\strings.py:174 msgid "" -"* Remove tweet from favourites: removes the tweet from your favourites, but " -"not from Twitter." +"* Remove from favourites: removes the tweet from your favourites, but not " +"from Twitter." msgstr "" "* Quitar tuit de favoritos: Elimina el tuit de tus favoritos. Esto no " "significa que se borra de Twitter, solo deja de estar en tu lista de " "favoritos." -#: ../documentationGenerator/strings.py:171 +#: ../doc\strings.py:175 msgid "" "* Show tweet: opens up a dialogue box where you can read the tweet, direct " -"message, friend or follower under focus. You can read the text with the " -"cursors. It's the same dialogue box used to write tweets on." +"message, friend or follower which has focus. You can read the text with the " +"arrow keys. It's a similar dialog box as used for composing tweets, without " +"the ability to send the tweet, file attachment and autocompleting " +"capabilities. It does however include a retweets and favourites count. If " +"you are in the followers or the friends list, it will only contain a read-" +"only edit box with the information in the focused item and a close button." msgstr "" -"* Ver Tuit: Abre un diálogo donde puedes ver el Tuit, mensaje directo, amigo " -"o seguidor sobre el que esté el foco de la aplicación. Puedes leer el texto " -"con los cursores. El diálogo es el mismo que el que se usa para escribir un " -"Tuit." +"* Ver tuit: Abre un diálogo donde puedes leer el tuit, mensaje directo, " +"amigo o seguidor sobre el que te encuentras actualmente. Puedes leer el " +"texto con las flechas de cursor. Es un diálogo muy parecido al que se " +"utiliza para escribir un nuevo tuit, excepto que para este diálogo no se " +"muestran las opciones de autocompletado, carga de archivos de audio e " +"imágenes. Sin embargo, incluye un par de contadores que te permitirán saber " +"el número de veces que el tuit ha sido retuiteado y marcado como favorito. " +"Si estás en la lista de seguidores y amigos, el diálogo solo mostrará " +"información del usuario y un botón para cerrarse." -#: ../documentationGenerator/strings.py:172 +#: ../doc\strings.py:176 msgid "" -"* Delete: permanently removes the tweet or direct message you're on from " -"Twitter and from your lists. Bear in mind that Twitter only allows you to " -"delete tweets you have posted yourself." +"* View address: If the selected tweet has geographical information, TWBlue " +"may display a dialogue box where you can read the tweet address. This " +"address is retrieved by sending the geographical coordinates of the tweet " +"to Google maps." +msgstr "" +"* Ver dirección: Si el tuit seleccionado contiene información geográfica, " +"TWBlue puede mostrar un diálogo donde podrás leer la dirección desde donde " +"se escribió el tuit. La dirección se obtiene enviando las coordenadas desde " +"donde se hizo el Tuit a los servicios de mapas de Google." + +#: ../doc\strings.py:177 +msgid "" +"* View conversation: If you are focusing a tweet with a mention, it opens a " +"buffer where you can view the whole conversation." +msgstr "" +"* Ver conversación: Si estás sobre un tuit donde se menciona a otro usuario, " +"esta opción te permite abrir un nuevo buffer para seguir toda la " +"conversación." + +#: ../doc\strings.py:178 +msgid "" +"* Delete: permanently removes the tweet or direct message which has focus " +"from Twitter and from your lists. Bear in mind that Twitter only allows you " +"to delete tweets you have posted yourself." msgstr "" "* Eliminar: Elimina el Tuit o mensaje directo sobre el que estés, borrándolo " "definitivamente de Twitter y qitándolo de tus listas. Ten en cuenta que en " "el caso de los Tuits, Twitter solo permite borrar los que tú mismo has " "escrito." -#: ../documentationGenerator/strings.py:175 -msgid "##### User menu {#user}" -msgstr "##### Menú usuario {#usuario}" +#: ../doc\strings.py:181 +msgid "##### User menu" +msgstr "##### Menú usuario" -#: ../documentationGenerator/strings.py:178 +#: ../doc\strings.py:184 msgid "" -"Bear in mind the four topmost items on this menu open up the same dialogue " -"box. This box has an edit field where you can choose the user you want to " -"act on, by using up and down arrows or by writing the text in yourself. " -"Afterwards you will find a group with four radio buttons to follow, " -"unfollow, report as spam and block. If you choose the follow menu item, the " -"radio button on the dialogue box will be set to follow, and the same applies " -"to unfollow, report as spam and block. Press OK to try to carry out the " -"action. If it doesn't succeed, you'll hear the error message in English." +"* Actions: Opens a dialogue where you can interact with a user. This " +"dialogue box will be populated with the user who sent the tweet or direct " +"message in focus or the selected user in the friends or followers buffer. " +"You can edit it or leave it as is and choose one of the following actions:" msgstr "" -"Ten en cuenta que las primeras seis opciones de este menú abren un mismo " -"diálogo. Este diálogo tiene un cuadro de edición donde puedes seleccionar el " -"usuario sobre el que deseas actuar, bien con los cursores arriba y abajo o " -"escribiendo tú mismo el nombre. Después, hay un grupo de botones de radio " -"para seguir, dejar de seguir, silenciar, des-silenciar, reportar como Spam y " -"bloquear. Si seleccionas desde el menú la opción seguir, el botón del cuadro " -"de diálogo estará marcado con esa opción, así como sucederá respectivamente " -"con dejar de seguir, reportar como Spam y bloquear. Pulsa el botón Aceptar " -"para que el programa trate de hacer lo que le pides. Si no se ha podido, " -"escucharás el error en inglés." +"* Acciones: Abre un diálogo donde puedes interactuar con un usuario. Este " +"diálogo colocará por defecto el nombre de usuario del tuit o mensaje directo " +"sobre el que estabas al abrirlo, o en el caso de los amigos y seguidores, el " +"usuario actualmente seleccionado. Si lo deseas, puedes editar el usuario " +"manualmente. El diálogo presenta las siguientes opciones:" -#: ../documentationGenerator/strings.py:181 -msgid "The remaining items on the menu are described below:" -msgstr "A continuación se describen las opciones restantes para este menú:" +#: ../doc\strings.py:185 +msgid "" +" * Follow: Follows a user. This means you'll see his/her tweets on your " +"home timeline, and if he/she also follows you, you'll be able to exchange " +"direct messages. You may also send / receive direct messages from each other " +"if you have configured the option to allow direct messages from anyone." +msgstr "" +" * Seguir: Seguir a un usuario. Esto significa que verás sus tuits en tu " +"línea principal, y si él también te sigue serán capaces de enviarse mensajes " +"directos mutuamente. También puedes enviar y recibir mensajes directos sin " +"seguir a las personas si configuras tu cuenta de Twitter para poder recibir " +"mensajes directos de cualquier persona, desde las opciones de privacidad y " +"seguridad en el sitio web de Twitter." -#: ../documentationGenerator/strings.py:184 +#: ../doc\strings.py:186 +msgid "" +" * Unfollow: Stops following a user, which causes you not being able to " +"see his/her tweets on your main timeline neither exchanging direct " +"messages, unless they have enabled receiving direct messages from anyone." +msgstr "" +" * Dejar de seguir: Deja de seguir al usuario, lo que significa que no " +"verás sus tuits en tu línea principal y a menos que configures tu cuenta " +"para recibir mensajes directos de cualquier persona, tampoco podrán enviarse " +"mensajes." + +#: ../doc\strings.py:187 +msgid "" +" * Mute: While muting someone, TWBlue won't show you nor his/her tweets " +"on your main timeline; neither will you see that person's mentions. But you " +"both will be able to exchange direct messages. The muted user is not " +"informed of this action." +msgstr "" +" * Silenciar: al silenciar a alguien, no verás sus tuits en tu línea " +"principal ni sus menciones, pero no lo dejarás de seguir. Se pueden enviar y " +"recibir mensajes directos. El usuario silenciado no es informado de esta " +"acción." + +#: ../doc\strings.py:188 +msgid "" +" * Unmute: this option allows TWBlue to display the user's tweets and " +"mentions again." +msgstr "" +" * Desactivar silencio: Esta opción causa que TWBlue vuelva a mostrar los " +"tuits del usuario en tu línea principal y sus menciones." + +#: ../doc\strings.py:189 +msgid " * Block: Blocks a user. This forces the user to unfollow you ." +msgstr "" +" * Bloquear: Bloquea a un usuario. Si te sigue, esto lo obligará a dejar " +"de seguirte." + +#: ../doc\strings.py:190 +msgid " * Unblock: Stops blocking a user." +msgstr "* Desbloquear: Desbloquea a un usuario." + +#: ../doc\strings.py:191 +msgid "" +" * Report as spam: this option sends a message to Twitter suggesting the " +"user is performing prohibited practices on the social network." +msgstr "" +" * Reportar como spam: Esta opción envía un reporte a Twitter sobre un " +"comportamiento que va en contra de las políticas de uso de la red social." + +#: ../doc\strings.py:192 +msgid "" +" * Ignore tweets from this client: Adds the client from which the focused " +"tweet was sent to the ignored clients list." +msgstr "" +" * Ignorar Tuits de este cliente: Añade la aplicación desde la que está " +"hecho el tuit actual a la lista de ignorados de TWBlue." + +#: ../doc\strings.py:193 +msgid "" +"* View timeline: Lets you open a user's timeline by choosing the user in a " +"dialog box. It is created when you press enter. If you invoke this option " +"relative to a user that has no tweets, the program will fail. If you try " +"creating an existing timeline the program will warn you and will not create " +"it again." +msgstr "" +"* Línea temporal: Abre un diálogo desde donde puedes seleccionar el usuario " +"para el que se creará la línea temporal. Al presionar intro, se creará. Si " +"se hace una línea temporal de un usuario que no tenga Tuits, el programa " +"fallará. Si se crea una línea que ya existe el programa te avisará y no " +"permitirá crearla de nuevo." + +#: ../doc\strings.py:194 msgid "* Direct message: same action as the button." msgstr "* Mensaje Directo: La misma acción que el botón." -#: ../documentationGenerator/strings.py:185 +#: ../doc\strings.py:195 msgid "" "* Add to List: In order to see someone's tweets in one or more of your " -"lists, you must add them first. This option will open a dialog where you " -"can select the user you wish to add. Next, you will be asked to select the " -"list you wish to add them to. Afterwards, the list will contain a new " -"member and their tweets will show up there." +"lists, you must add them first. In the dialogue box that opens after " +"selecting the user, you will be asked to select the list you wish to add the " +"user to. Thereafter, the list will contain a new member and their tweets " +"will be displayed there." msgstr "" "* Añadir a lista: Para que puedas ver los tweets de un usuario en tus " "listas, primero hay que añadirlo. Esta opción abrirá un diálogo desde donde " @@ -856,51 +978,76 @@ msgstr "" "Una vez hecho esto, la lista contendrá un nuevo usuario y podrás ver sus " "tweets." -#: ../documentationGenerator/strings.py:186 +#: ../doc\strings.py:196 +msgid "* Remove from list: lets you remove a user from a list." +msgstr "" +"* Remover de la lista: Te permite eliminar a un usuario de una de tus listas." + +#: ../doc\strings.py:197 +msgid "* View lists: Shows the lists created by a specified user." +msgstr "" +" * Ver listas: Muestra las listas en las que participa un usuario " +"específico." + +#: ../doc\strings.py:198 msgid "" -"* View user profile: opens up a dialogue box to choose the user whose " -"profile you want to browse." +"* Show user profile: opens a dialogue with the profile of the specified " +"user." msgstr "" "* Ver Perfil del usuario: Abre un diálogo desde donde te permite seleccionar " "el usuario al que quieres ver el perfil." -#: ../documentationGenerator/strings.py:187 +#: ../doc\strings.py:199 msgid "" -"* Timeline: opens up a dialogue box to choose whose user you want a timeline " -"for. Create it by pressing enter. If you try it with a user that has no " -"tweets, the program will fail. If you try creating an already existing " -"timeline the program will warn you and will not create it again." -msgstr "" -"* Línea temporal: Abre un diálogo desde donde puedes seleccionar el usuario " -"para el que se creará la línea temporal. Al presionar intro, se creará. Si " -"se hace una línea temporal de un usuario que no tenga Tuits, el programa " -"fallará. Si se crea una línea que ya existe el programa te avisará y no " -"permitirá crearla de nuevo." - -#: ../documentationGenerator/strings.py:188 -msgid "" -"* View favourites: Opens a buffer where you can see what tweets have been " -"favorited by a particular user." +"* View favourites: Opens a buffer where you can see the tweets which have " +"been favourited by a particular user." msgstr "" "* Ver favoritos: Abre un buffer para seguir los favoritos que marca el " "usuario seleccionado." -#: ../documentationGenerator/strings.py:191 -msgid "##### Buffer menu{#buffer}" -msgstr "##### Menú Buffer {#buffer}" +#: ../doc\strings.py:202 +msgid "##### Buffer menu" +msgstr "##### Menú Buffer" -#: ../documentationGenerator/strings.py:194 +#: ../doc\strings.py:205 msgid "" -"* Mute buffer: Mutes notifications of a particular buffer so you will not " -"hear when new tweets arrive." +"* New trending topics buffer: This opens a buffer to get the worlwide " +"trending topics or those of a country or a city. You'll be able to select " +"from a dialogue box if you wish to retrieve countries' trends, cities' " +"trends or worldwide trends (this options is in the cities' list) and choose " +"one from the selected list. The trending topics buffer will be created once " +"the \"OK\" button has been activated within the dialogue box. Remember this " +"kind of buffer will be updated every five minutes." msgstr "" -"* Silenciar: Silencia completamente el buffer, con lo que no escucharás " -"sonido alguno cuando nuevos elementos aparezcan." +"* Nuevo buffer de tendencias: Abre un buffer desde el cual puedes realizar " +"un seguimiento de las 10 tendencias de una ciudad o país del mundo. Se " +"mostrará un diálogo desde el que puedes seleccionar si quieres ver las " +"tendencias para un país, una ciudad o las tendencias mundiales (esta opción " +"se encuentra dentro de la lista de ciudades, como Worldwhide). El buffer " +"será creado una vez selecciones tu país o ciudad, y presiones sobre el botón " +"\"aceptar\". Recuerda que este tipo de buffer se actualiza cada cinco " +"minutos." -#: ../documentationGenerator/strings.py:195 +#: ../doc\strings.py:206 msgid "" -"* autoread tweets for this buffer: When enabled, the screen reader or SAPI 5 " -"(if enabled) will read the text of incoming tweets. Please note that this " +"* Load previous items: This allows more items to be loaded for the specified " +"buffer." +msgstr "" +"* Cargar elementos anteriores: Permite recuperar más tuits, mensajes " +"directos, amigos o seguidores, desde el buffer actual." + +#: ../doc\strings.py:207 +msgid "" +"* Mute: Mutes notifications of a particular buffer so you will not hear when " +"new tweets arrive." +msgstr "" +"* Silenciar: Silencia completamente el buffer, no escucharás sonido alguno " +"cuando nuevos elementos aparezcan." + +#: ../doc\strings.py:208 +msgid "" +"* autoread: When enabled, the screen reader or SAPI 5 Text to Speech voice " +"(if enabled) will read the text of incoming tweets. Please note that this " "could get rather chatty if there are a lot of incoming tweets." msgstr "" "* Leer automáticamente tuits para este buffer: Esta opción activa o " @@ -908,20 +1055,20 @@ msgstr "" "pantalla o la voz Sapi5 (si está activada una) leerá automáticamente los " "nuevos tuits conforme estos vayan llegando al buffer." -#: ../documentationGenerator/strings.py:196 +#: ../doc\strings.py:209 msgid "* Clear buffer: Deletes all items from the buffer." msgstr "* Limpiar Buffer: Vacía los elementos de este buffer." -#: ../documentationGenerator/strings.py:197 -msgid "* Remove buffer: dismiss the list you're on." +#: ../doc\strings.py:210 +msgid "* Destroy: dismisses the list you're on." msgstr "" "* Eliminar buffer: Borra la lista sobre la que te encuentras actualmente." -#: ../documentationGenerator/strings.py:200 -msgid "##### Help menu {#help}" -msgstr "##### Menú Ayuda {#ayuda}" +#: ../doc\strings.py:213 +msgid "##### Help menu" +msgstr "##### Menú Ayuda" -#: ../documentationGenerator/strings.py:203 +#: ../doc\strings.py:216 msgid "" "* Documentation: opens up this file, where you can read some useful program " "concepts." @@ -929,727 +1076,1438 @@ msgstr "" "* Documentación: Abre este archivo, donde puedes leer algunos conceptos " "interesantes del programa." -#: ../documentationGenerator/strings.py:204 +#: ../doc\strings.py:217 +msgid "" +"* Sounds tutorial: Opens a dialog box where you can familiarize yourself " +"with the different sounds of the program." +msgstr "" +"* Tutorial de sonidos: Abre un diálogo donde verás una lista de los sonidos " +"de TWBlue, para que puedas aprenderlos y no te cueste trabajo familiarizarte " +"con el cliente." + +#: ../doc\strings.py:218 msgid "" "* What's new in this version?: opens up a document with the list of changes " -"from the current version down to the first." +"from the current version to the earliest." msgstr "" "* ¿Qué hay de nuevo en esta versión?: Abre un documento con la lista de " "cambios desde la versión actual, hasta la primera en existencia." -#: ../documentationGenerator/strings.py:205 +#: ../doc\strings.py:219 msgid "" "* Check for updates: every time you open the program it automatically checks " -"for new versions. If there are, it will ask you if you want to download it. " -"If you accept, it will do so, after which it will install it and ask you to " -"let it restart itself, which it does automatically. This item checks for new " -"updates without having to restart the application." +"for new versions. If an update is available, it will ask you if you want to " +"download the update. If you accept, the updating process will commence. When " +"complete, TWBlue will be restarted. This item checks for new updates without " +"having to restart the application." msgstr "" -"* Buscar actualizaciones: Cada que se abre el programa él mismo busca " +"* Comprobar actualizaciones: Cada que se abre el programa él mismo busca " "automáticamente si hay una nueva versión. Si lo hay, te preguntará si " -"quieres descargarla; si aceptas, TW Blue descargará la actualización, la " +"quieres descargarla; si aceptas, TWBlue descargará la actualización, la " "instalará y te pedirá reiniciarla (algo que hace automáticamente). Esta " "opción comprueba si hay actualizaciones sin tener que reiniciar la " "aplicación." -#: ../documentationGenerator/strings.py:206 +#: ../doc\strings.py:220 msgid "" -"* TW Blue's website: visit our [home page](http://twblue.com.mx) where you " -"can find all relevant information and downloads for TW Blue and become a " -"part of the community." +"* Report an error: opens up a dialogue box to report a bug by completing a " +"small number of fields. Pressing enter will send the report. If the " +"operation doesn't succeed the program will display a warning." msgstr "" -"* Sitio web de TW Blue. Ve a nuestra [página principal](http://twblue.com." -"mx) donde podrás encontrar toda la información y descargas relativas a TW " -"Blue, así como participar de la comunidad." +"* Reportar un error: Abre un diálogo que te permite reportar un error " +"llenando unos cuantos campos. Presiona enter para enviar el reporte. si el " +"proceso falla, el programa te notificará de ello." -#: ../documentationGenerator/strings.py:207 +#: ../doc\strings.py:221 msgid "" -"* Report a bug: opens up a dialogue box to report a bug by filling a couple " -"of fields: the title and a short description of what happened. Pressing " -"enter will send the report. If the operation doesn't succeed the program " -"will show a warning." +"* TWBlue's website: visit our [home page](http://twblue.es) where you can " +"find all relevant information and downloads for TWBlue and become a part of " +"the community." msgstr "" -"* Reportar un error: Lanza un diálogo desde donde puedes reportar un error " -"solo llenando un par de campos. El título y una pequeña descripción de lo " -"que pasó. Al pulsar en \"enviar\" el error se reportará. Si no se ha podido " -"el programa te mostrará un mensaje informándolo." +"* Sitio web de TW Blue. Ve a nuestra [página principal](http://twblue.es) " +"donde podrás encontrar toda la información y descargas relativas a TW Blue, " +"así como participar de la comunidad." -#: ../documentationGenerator/strings.py:208 -msgid "* About TW Blue: shows the credits of the program." +#: ../doc\strings.py:222 +msgid "* About TWBlue: shows the credits of the program." msgstr "* Sobre TW Blue: Muestra información de créditos del programa." -#: ../documentationGenerator/strings.py:211 -msgid "### Invisible interface {#invisible_interface}" -msgstr "### Interfaz no visible {#interfaz_no_visible}" +#: ../doc\strings.py:225 +msgid "### The invisible user interface" +msgstr "### La interfaz invisible" -#: ../documentationGenerator/strings.py:214 +#: ../doc\strings.py:228 msgid "" -"If you press control-m, or if you choose hide window from the application " -"menu, you will activate an interface that cannot be used in the usual way, " -"because it is invisible." +"The invisible interface, as its name suggests, has no graphical window and " +"works directly with screen readers such as JAWS for Windows, NVDA and System " +"Access. This interface is disabled by default, but you can enable it by " +"pressing Control + M. It works similarly to TheQube and Chicken Nugget. Its " +"shortcuts are similar to those found in these two clients. In addition, " +"TWBlue has builtin support for the keymaps for these applications, " +"configurable through the global settings dialogue. By default, you cannot " +"use this interface's shortcuts in the GUI, but you can configure this in the " +"global settings dialogue." msgstr "" -"Si presionas Control+M, o si desde el menú aplicación seleccionas esconder " -"ventana, estarás activando una interfaz a la que no se podrá acceder por la " -"manera convencional, porque no se ve." +"La interfaz invisible, tal como su nombre lo indica, no tiene ventana " +"gráfica y funciona directamente con los lectores de pantalla como JAWS for " +"Windows, NVDA y System Access. Esta interfaz se encuentra desactivada por " +"defecto, pero puedes activarla presionando Control + M. Funciona de forma " +"parecida a The Qube y Chicken Nugget. Sus combinaciones de teclado son " +"similares a las que existen en ambos clientes. Además, TWBlue incluye " +"soporte para mapas de teclado para estos clientes, mismos que puedes " +"configurar desde el diálogo de opciones globales. De forma predeterminada, " +"no puedes usar los atajos de teclado de esta interfaz desde la ventana " +"gráfica, pero esto es configurable también desde el diálogo de opciones " +"globales." -#: ../documentationGenerator/strings.py:217 +#: ../doc\strings.py:231 msgid "" -"Every action on the invisible interface is done through keyboard shortcuts, " -"even browsing lists. Eventually you may open dialogue boxes and these will " -"be visible, but not the application's main window. Read the section on " -"invisible interface shortcuts to know which ones you can use for the time " -"being." +"The next section contains a list of keyboard shortcuts for both interfaces. " +"Bear in mind that we will only describe the default keymap." msgstr "" -"En la interfaz no visible todo lo que hagas será mediante atajos de teclado, " -"incluso para recorrer las listas. Eventualmente se abrirán diálogos y estos " -"sí serán visibles, pero la ventana principal de la aplicación no. Ve a la " -"sección de atajos de teclado de la interfaz no visible para saber cuales " -"puedes usar de momento." +"La siguiente sección muestra la lista de atajos de teclado para ambas " +"interfaces. Ten en cuenta que aquí solo se describirán las combinaciones de " +"teclas para el mapa de teclado por defecto." -#: ../documentationGenerator/strings.py:220 -msgid "### Keyboard shortcuts for the graphical interface {#shortcuts}" -msgstr "### Atajos de teclado para la Interfaz Gráfica {#atajos}" +#: ../doc\strings.py:234 +msgid "## Keyboard shortcuts" +msgstr "## Atajos de teclado" -#: ../documentationGenerator/strings.py:223 -msgid "" -"Instead of using the buttons and menus, most actions can be carried out by " -"pressing a key combination. The ones available at present are described " -"below:" -msgstr "" -"Además de los botones y menús, la mayoría de las acciones pueden hacerse " -"presionando una combinación de teclado. Aquí están las existentes en este " -"momento:" +#: ../doc\strings.py:237 +msgid "### Shortcuts of the graphical user interface (GUI)" +msgstr "### Atajos de teclado para la interfaz gráfica (GUI) {#gui}" -#: ../documentationGenerator/strings.py:226 -msgid "" -"* Enter: open a URL. If there are more than one you will get a list that " -"will allow you to choose the one you want. On the friends or followers lists " -"it will show details on the selected item." -msgstr "" -"* Intro: Abrir una dirección URL. Si hay más de una podrás ver una lista que " -"te permitirá seleccionar la que quieras. Si estás en la lista de amigos o " -"seguidores, mostrará detalles del seleccionado." +#: ../doc\strings.py:240 +msgid "* Enter: Open URL." +msgstr "* Enter: Abre la dirección URL" -#: ../documentationGenerator/strings.py:227 -msgid "* Control-enter: attempt to play audio from URL." -msgstr "" -"* Control+Intro: Intenta reproducir un audio si en el Tuit hay una dirección " -"URL." +#: ../doc\strings.py:241 +msgid "* Control + Enter: Play audio." +msgstr "* Control + enter: Intentar reproducir un audio." -#: ../documentationGenerator/strings.py:228 -msgid "" -"* F5: decrease sounds volume. It affects the program sounds as well as audio " -"played from the program." -msgstr "" -"* F5: Baja un 5% el volumen de los sonidos. Esto afecta a los sonidos que " -"reproduce el programa y al audio que puedas escuchar a través de él." +#: ../doc\strings.py:242 +msgid "* Control + M: Hide the GUI." +msgstr "* Control M: Esconde la interfaz gráfica" -#: ../documentationGenerator/strings.py:229 -msgid "* F6: increase application sounds volume." -msgstr "* F6: Sube un 5% el volumen de los sonidos de la aplicación." +#: ../doc\strings.py:243 +msgid "* Control + N: Compose a new tweet." +msgstr "* Control + N: Hacer un nuevo Tuit." -#: ../documentationGenerator/strings.py:230 -msgid "* Control-n: open new tweet dialogue." -msgstr "* Control+N: Abre el diálogo para escribir un nuevo Tuit." +#: ../doc\strings.py:244 +msgid "* Control + R: Reply / mention." +msgstr "* Control + R: Responder o mencionar." -#: ../documentationGenerator/strings.py:231 -msgid "* Control-m: hide window." -msgstr "* Control+M: Oculta la ventana." +#: ../doc\strings.py:245 +msgid "* Control + Shift + R: Retweet." +msgstr "* Control+Shift+R: Hacer un Retuit." -#: ../documentationGenerator/strings.py:232 -msgid "* Control-q: quit." -msgstr "* Control+Q: Sale de la aplicación." - -#: ../documentationGenerator/strings.py:233 -msgid "* Control-r: open reply tweet dialogue." -msgstr "* Control+R: Abre el diálogo para responder." - -#: ../documentationGenerator/strings.py:234 -msgid "* Control-shift-r: Retweet." -msgstr "* Control+Shift+R: Equivalente a la acción Retuit." - -#: ../documentationGenerator/strings.py:235 -msgid "* Control-d: send direct message." +#: ../doc\strings.py:246 +msgid "* Control + D: Send a direct message." msgstr "* Control+D: Enviar mensaje directo." -#: ../documentationGenerator/strings.py:236 -msgid "* Control-f: mark as favourite." -msgstr "* Control+F: Marcar como favorito." +#: ../doc\strings.py:247 +msgid "* control + F: Add tweet to favourites." +msgstr "* Control + F: marcar tuit como favorito." -#: ../documentationGenerator/strings.py:237 -msgid "* Control-shift-f: remove from favourites." -msgstr "* Control+Shift+F: Quitar de favoritos." +#: ../doc\strings.py:248 +msgid "* Control + Shift + F: Remove a tweet from favourites." +msgstr "* Control+Shift+F: Quitar tuit de favoritos." -#: ../documentationGenerator/strings.py:238 -msgid "* Control-shift-v: view tweet." -msgstr "* Control+Shift+V: Ver Tuit." +#: ../doc\strings.py:249 +msgid "* Control + S: Open the user actions dialogue." +msgstr "* Control + S: Abre el diálogo de acciones de usuario." -#: ../documentationGenerator/strings.py:239 -msgid "* Control-s: follow a user." -msgstr "* Control+S: Seguir a un usuario." +#: ../doc\strings.py:250 +msgid "* Control + Shift + V: Show tweet." +msgstr "* Control + Shift + V: Ver tuit." -#: ../documentationGenerator/strings.py:240 -msgid "* Control-shift-s: unfollow a user." -msgstr "* Control+Shift+S: Dejar de seguir a un usuario." +#: ../doc\strings.py:251 +msgid "* Control + Q: Quit TWBlue." +msgstr "* Control + Q: Salir de TWBlue." -#: ../documentationGenerator/strings.py:241 -msgid "* Control-k: block a user." -msgstr "* Control+K: Bloquear a un usuario." +#: ../doc\strings.py:252 +msgid "* Control + I: Open user timeline." +msgstr "* Control + I: Abrir línea temporal." -#: ../documentationGenerator/strings.py:242 -msgid "* Control-shift-k: report as spam." -msgstr "* Control+Shift+K: Reportar como Spam." +#: ../doc\strings.py:253 +msgid "* Control + Shift + i: Destroy buffer." +msgstr "* Control + Shift + I: Eliminar buffer." -#: ../documentationGenerator/strings.py:243 -msgid "* Control-i: open user's timeline." -msgstr "* Control+I: Abrir línea temporal a un usuario." +#: ../doc\strings.py:254 +msgid "* F5: Increase volume by 5%." +msgstr "* F5: Subir volumen un 5%." -#: ../documentationGenerator/strings.py:244 -msgid "* Control-shift-i: remove timeline." -msgstr "* Control+Shift+I: Eliminar línea temporal." +#: ../doc\strings.py:255 +msgid "* F6: Decrease volume by 5%." +msgstr "* F6: Bajar volumen un 5%." -#: ../documentationGenerator/strings.py:245 -msgid "* Control-p: edit profile." -msgstr "* Control+p: Editar tu perfil." +#: ../doc\strings.py:256 +msgid "* Control + P: Edit your profile." +msgstr "* Control + P: Editar tu perfil." -#: ../documentationGenerator/strings.py:246 -msgid "* Delete: remove tweet or direct message." -msgstr "* Suprimir: Eliminar tuit o mensaje directo." +#: ../doc\strings.py:257 +msgid "* Control + Delete: Delete a tweet or direct message." +msgstr "* Control + Suprimir: Eliminar un tuit o mensaje directo." -#: ../documentationGenerator/strings.py:247 -msgid "" -"* Shift-delete: empty the buffer removing all the elements. This doesn't " -"remove them from Twitter itself." +#: ../doc\strings.py:258 +msgid "* Control + Shift + Delete: Empty the current buffer." +msgstr "* Control + Shift + Suprimir: Vaciar el contenido del buffer actual." + +#: ../doc\strings.py:261 +msgid "### Shortcuts of the invisible interface (default keymap)" msgstr "" -"* Shift+suprimir: vacía el buffer, quitando todos los elementos hasta ese " -"entonces. Esto ocurre sin borrar nada de Twitter." +"### Atajos de teclado para la Interfaz invisible (mapa de teclado por " +"defecto)" -#: ../documentationGenerator/strings.py:250 +#: ../doc\strings.py:264 msgid "" -"### Keyboard shortcuts for the invisible interface {#invisible_shortcuts}" -msgstr "### Atajos de teclado para la Interfaz no Visible {#atajos_invisibles}" - -#: ../documentationGenerator/strings.py:253 -msgid "" -"These are the shortcuts you may use from the invisible interface. Bear in " -"mind that when the graphical user interface is shown you may not use these. " -"By \"win\" the left windows key is intended." +"* Control + Windows + Up Arrow: moves to the previous item in the buffer." msgstr "" -"Estos son los atajos de teclado que puedes usar desde la interfaz no " -"visible. Ten en cuenta que cuando la vista de la interfaz gráfica esté " -"activada ninguno de ellos podrá usarse. Al decir \"windows\", nos estamos " -"refiriendo a la tecla de Windows izquierda." +"* Control + Windows + Flecha arriba: Se mueve al elemento de arriba en el " +"buffer." -#: ../documentationGenerator/strings.py:256 -msgid "* Control+win+up arrow: go up on the current list." -msgstr "* Control+Windows+Flecha Arriba: Va arriba en la lista actual." +#: ../doc\strings.py:265 +msgid "* Control + Windows + Down Arrow: moves to the next item in the buffer." +msgstr "" +"* Control + Windows + Flecha Abajo: Va al elemento de abajo en el buffer." -#: ../documentationGenerator/strings.py:257 -msgid "* Control+win+down arrow: go down on the current list." -msgstr "* Control+Windows+Flecha abajo: Va hacia abajo en la lista actual." +#: ../doc\strings.py:266 +msgid "* Control + Windows + Left Arrow: Move to the previous buffer." +msgstr "" +"* Control + Windows + Flecha Izquierda: Se desplaza hacia el buffer anterior." -#: ../documentationGenerator/strings.py:258 -msgid "* Control+win+left arrow: go to the previous tab." -msgstr "* Control+Windows+Izquierda: Se desplaza a la pestaña de la izquierda." +#: ../doc\strings.py:267 +msgid "* Control + Windows + Right Arrow: Move to the next buffer." +msgstr "" +"* Control + Windows + Flecha Derecha: Se desplaza hacia el siguiente buffer." -#: ../documentationGenerator/strings.py:259 -msgid "* Control+win+right arrow: go to the next tab." -msgstr "* Control+Windows+Derecha: Se desplaza hacia la pestaña de la derecha." +#: ../doc\strings.py:268 +msgid "* Control + Windows + Shift + Left: Focus the previous session." +msgstr "" +"* Control + Windows + Shift + Flecha izquierda: Va a la sesión anterior." -#: ../documentationGenerator/strings.py:260 -msgid "* Control+win+home: go to the first element on the list." +#: ../doc\strings.py:269 +msgid "* Control + Windows + Shift + Right: Focus the next session." +msgstr "" +"* Control + Windows + Shift + flecha derecha: Va a la siguiente sesión." + +#: ../doc\strings.py:270 +msgid "* Control + Windows + C: View conversation." +msgstr "* Control + Windows + C: Ver conversación." + +#: ../doc\strings.py:271 +msgid "* Control + Enter: Open URL." +msgstr "* Control + Enter: Abrir dirección URL" + +#: ../doc\strings.py:272 +msgid "* Control + Windows + Enter: Play audio." +msgstr "* Control+Windows+Alt+Intro: Intentar reproducir un audio." + +#: ../doc\strings.py:273 +msgid "* Control + Windows + M: Show or hide the GUI." +msgstr "* Control + Windows + M: Mostrar o esconder la interfaz gráfica." + +#: ../doc\strings.py:274 +msgid "* Control + Windows + N: New tweet." +msgstr "* Control+Windows+N: Hacer un nuevo Tuit." + +#: ../doc\strings.py:275 +msgid "* Control + Windows + R: Reply / Mention." +msgstr "* Control+Windows+R: Responder a un tuit / mencionar a un usuario." + +#: ../doc\strings.py:276 +msgid "* Control + Windows + Shift + R: Retweet." +msgstr "* Control+Windows+Shift+R: Hacer un retuit." + +#: ../doc\strings.py:277 +msgid "* Control + Windows + D: Send direct message." +msgstr "* Control+Windows+D: Enviar un mensaje directo." + +#: ../doc\strings.py:278 +msgid "* Windows+ Alt + F: Mark as favourite." +msgstr "* Windows+Alt+F: Marcar como favorito." + +#: ../doc\strings.py:279 +msgid "* Alt + Windows + Shift + F: Remove from favourites." +msgstr "* Windows+Alt+Shift+F: Quitar de favoritos." + +#: ../doc\strings.py:280 +msgid "* Control + Windows + S: Open the user actions dialogue." +msgstr "* Control+S: Abrir el diálogo de acciones de usuario." + +#: ../doc\strings.py:281 +msgid "* Control + Windows + Alt + N: See user details." +msgstr "* Control+Windows+Alt+N: Ver detalles de un usuario." + +#: ../doc\strings.py:282 +msgid "* Control + Windows + V: Show tweet." +msgstr "* Control+Windows+V: Ver tuit." + +#: ../doc\strings.py:283 +msgid "* Control + Windows + F4: Quit TWBlue." +msgstr "* Control + Windows + F4: Salir de TWBlue." + +#: ../doc\strings.py:284 +msgid "* Control + Windows + I: Open user timeline." +msgstr "* Control+Windows+I: Abrir línea temporal." + +#: ../doc\strings.py:285 +msgid "* Control + Windows + Shift + I: Destroy buffer." +msgstr "* Control+Windows+Shift+I: Eliminar buffer." + +#: ../doc\strings.py:286 +msgid "* Control + Windows + Alt + Up: Increase volume by 5%." +msgstr "* Control+Windows+Alt+Flecha Arriba: Subir volumen un 5%." + +#: ../doc\strings.py:287 +msgid "* Control + Windows + Alt + Down: Decrease volume by 5%." +msgstr "* Control+Windows+Alt+Flecha Arriba: Subir volumen un 5%." + +#: ../doc\strings.py:288 +msgid "" +"* Control + Windows + Home: Jump to the first element of the current buffer." msgstr "* Control+Windows+Inicio: Ir al primer elemento de la lista." -#: ../documentationGenerator/strings.py:261 -msgid "* Control+win+end: go to the last element on the list." +#: ../doc\strings.py:289 +msgid "" +"* Control + Windows + End: Jump to the last element of the current buffer." msgstr "* Control+Windows+Fin: Ir al final de la lista." -#: ../documentationGenerator/strings.py:262 -msgid "* Control+win+page down: move 20 elements down on the current list." -msgstr "" -"* Control+Windows+Avance de página: Ir 20 elementos hacia abajo en la lista " -"actual." - -#: ../documentationGenerator/strings.py:263 -msgid "* Control+win+page up: move 20 elements up on the current list." +#: ../doc\strings.py:290 +msgid "" +"* Control + Windows + PageUp: Jump 20 elements up in the current buffer." msgstr "" "* Control+Windows+Retroceso de página: ir 20 elementos hacia arriba en la " "lista actual." -#: ../documentationGenerator/strings.py:264 -msgid "* Control+win+alt+up arrow: increase volume by 5%." -msgstr "* Control+Windows+Alt+Flecha Arriba: Subir volumen un 5%." - -#: ../documentationGenerator/strings.py:265 -msgid "* control+win+alt+down arrow: decrease volume by 5%." -msgstr "* Control+Windows+Alt+Flecha Abajo: Bajar volumen un 5%." - -#: ../documentationGenerator/strings.py:266 +#: ../doc\strings.py:291 msgid "" -"* Control+win+enter: open URL on the current tweet, or further information " -"for a friend or follower." +"* Control + Windows + PageDown: Jump 20 elements down in the current buffer." msgstr "" -"* Control+Windows+Intro: Abrir URL en el tuit, o ver detalles del usuario si " -"estás en la lista de amigos o seguidores." - -#: ../documentationGenerator/strings.py:267 -msgid "* control+win+alt+enter: attempt to play audio." -msgstr "* Control+Windows+Alt+Intro: Intentar reproducir un audio." - -#: ../documentationGenerator/strings.py:268 -msgid "" -"* control+win+m: show the graphical interface, turning the invisible one off." -msgstr "" -"* Control+Windows+M: Muestra la interfaz gráfica, desactivando la no visible." - -#: ../documentationGenerator/strings.py:269 -msgid "* Control+win+n: new tweet." -msgstr "* Control+Windows+N: Hacer un nuevo Tuit." - -#: ../documentationGenerator/strings.py:270 -msgid "* Control+win+r: reply to tweet." -msgstr "* Control+Windows+R: Responder a un tuit." - -#: ../documentationGenerator/strings.py:271 -msgid "* Control+win+shift-r: retweet." -msgstr "* Control+Windows+Shift+R: Hacer un retuit." - -#: ../documentationGenerator/strings.py:272 -msgid "* Control+win+d: send direct message." -msgstr "* Control+Windows+D: Enviar un mensaje directo." - -#: ../documentationGenerator/strings.py:273 -msgid "* Control+win+delete: remove a tweet or direct message." -msgstr "* Control+Windows+Suprimir: Eliminar un tuit o mensaje directo." - -#: ../documentationGenerator/strings.py:274 -msgid "" -"* Control+win+shift+delete: empty the buffer removing all the elements. This " -"doesn't remove them from Twitter itself." -msgstr "" -"* control+win+Shift+suprimir: vacía el buffer, quitando todos los elementos " -"hasta ese entonces. Esto ocurre sin borrar nada de Twitter." - -#: ../documentationGenerator/strings.py:275 -msgid "* Win+alt+f: mark as favourite." -msgstr "* Windows+Alt+F: Marcar como favorito." - -#: ../documentationGenerator/strings.py:276 -msgid "* Win+alt+shift+f: remove from favourites." -msgstr "* Windows+Alt+Shift+F: Quitar de favoritos." - -#: ../documentationGenerator/strings.py:277 -msgid "* Control+win+s: follow a user." -msgstr "* Control+Windows+S: Seguir a un usuario." - -#: ../documentationGenerator/strings.py:278 -msgid "* Control+win+shift+s: unfollow a user." -msgstr "* Control+Windows+Shift+S: Dejar de seguir a alguien." - -#: ../documentationGenerator/strings.py:279 -msgid "* Control+win+alt+n: see user details." -msgstr "* Control+Windows+Alt+N: Ver detalles de un usuario." - -#: ../documentationGenerator/strings.py:280 -msgid "* Control+win+v: show tweet on an edit box." -msgstr "* Control+Windows+V: Ver tuit en un cuadro de texto." - -#: ../documentationGenerator/strings.py:281 -msgid "* Control+win+i: open user timeline." -msgstr "* Control+Windows+I: Abrir línea temporal." - -#: ../documentationGenerator/strings.py:282 -msgid "* Control+win+shift+i: remove user timeline." -msgstr "* Control+Windows+Shift+I: Eliminar línea temporal de un usuario." - -#: ../documentationGenerator/strings.py:283 -msgid "* Alt+win+p: edit profile." -msgstr "* Alt+Windows+P: Editar tu perfil." - -#: ../documentationGenerator/strings.py:284 -msgid "* Control+win+c: Copy to clipboard." -msgstr "* Control+win+c: Copiar tweet al portapapeles." - -#: ../documentationGenerator/strings.py:285 -msgid "* Control+win+space: Listen the current message." -msgstr "* Control+win+espacio: ver tweet actual." - -#: ../documentationGenerator/strings.py:286 -msgid "* Control+win+a: Add to list." -msgstr "* Control+windows+a: Añadir a un usuario a la lista." - -#: ../documentationGenerator/strings.py:287 -msgid "* Control+win+shift+a: Remove from list." -msgstr "* Control+shift+windows+a: qitar de la lista." - -#: ../documentationGenerator/strings.py:288 -msgid "* Control+Win+Shift+M: Mutes/unmutes the active buffer." -msgstr "" -"* Control+Windows+Shift+M: Activar o desactivar el sonido para el buffer " +"* Control+Windows+Avance de página: Ir 20 elementos hacia abajo en la lista " "actual." -#: ../documentationGenerator/strings.py:289 +#: ../doc\strings.py:292 +msgid "* Windows + Alt + P: Edit profile." +msgstr "* Alt+Windows+P: Editar tu perfil." + +#: ../doc\strings.py:293 +msgid "* Control + Windows + Delete: Delete a tweet or direct message." +msgstr "* Control+Windows+Suprimir: Eliminar un tuit o mensaje directo." + +#: ../doc\strings.py:294 +msgid "* Control + Windows + Shift + Delete: Empty the current buffer." +msgstr "" +"* Control + Windows + Shift + Suprimir: Vaciar el contenido del buffer actual" + +#: ../doc\strings.py:295 +msgid "* Control + Windows + Space: Repeat last item." +msgstr "" +"* Control + Windows + Barra espaciadora: Repetir el último elemento leído " +"por el lector de pantalla." + +#: ../doc\strings.py:296 +msgid "* Control + Windows + Shift + C: Copy to clipboard." +msgstr "* Control +Windows + Shift + C: Copiar tweet al portapapeles." + +#: ../doc\strings.py:297 +msgid "* Control + Windows+ A: Add user to list." +msgstr "* Control+windows+a: Añadir al usuario a una lista." + +#: ../doc\strings.py:298 +msgid "* Control + Windows + Shift + A: Remove user from list." +msgstr "* Control+shift+windows+a: qitar al usuario de una lista." + +#: ../doc\strings.py:299 +msgid "* Control + Windows + M: Mute / unmute the current buffer." +msgstr "" +"* Control + Windows + M: Activar o desactivar el sonido para el buffer " +"actual." + +#: ../doc\strings.py:300 +msgid "* Windows + Alt + M: Mute / unmute the current session." +msgstr "" +"* Windows + Alt + M: Silencia/desactiva el silencio en la sesión actual." + +#: ../doc\strings.py:301 msgid "" -"* Control+Win+E: toggles the automatic reading of incoming tweets in the " -"active buffer." +"* Control + Windows + E: Toggle the automatic reading of incoming tweets in " +"the current buffer." msgstr "" -"* Control+Windows+E: Activar o desactivar la lectura automática de los tuits " -"en el buffer actual." +"* Control+Windows+E: Activar o desactivar la lectura automática de nuevos " +"tuits en el buffer actual." -#: ../documentationGenerator/strings.py:290 -msgid "* Control+Win+Shift+Up arrow: move up one tweet in the conversation." +#: ../doc\strings.py:302 +msgid "* Control + Windows + -: Search on Twitter." +msgstr "* Control+windows+-: buscar en Twitter." + +#: ../doc\strings.py:303 +msgid "* Control + Windows + K: Show the keystroke editor." +msgstr "* Control+Windows+K: Mostrar el editor de atajos de teclado." + +#: ../doc\strings.py:304 +msgid "* Control + Windows + L: Show lists for a specified user." msgstr "" -"* Control+Windows+Shift+Flecha arriba: Ir un tuit hacia arriba en la " -"conversación." +"* Control + Windows + L: Muestra las listas en las que participa un usuario " +"específico." -#: ../documentationGenerator/strings.py:291 +#: ../doc\strings.py:305 +msgid "* Windows + Alt + PageUp: Load previous items for the current buffer." +msgstr "" +"* Alt + Windows + Retrocesode página: Carga más elementos en el buffer " +"actual." + +#: ../doc\strings.py:306 +msgid "* Control + Windows + G: Get geolocation." +msgstr "* control + Windows + G: Obtener la ubicación del tuit." + +#: ../doc\strings.py:307 msgid "" -"* Control+Win+Shift+Down arrow: move down one tweet in the conversation." +"* Control + Windows + Shift + G: Display the tweet's geolocation in a " +"dialogue." msgstr "" -"* Control+Windows+Flecha Abajo: Ir un tuit hacia abajo en la conversación." +"* Control + Windows + Shift + G: Mostrar la ubicación del tuit en un mensaje " +"de diálogo." -#: ../documentationGenerator/strings.py:292 -msgid "* Win+Alt+M: Globally mute/unmute TW Blue." -msgstr "* Windows+Alt+M: Activar o desactivar el silencio global de TW Blue." +#: ../doc\strings.py:308 +msgid "* Control + Windows + T: Create a trending topics' buffer." +msgstr "¨Control + Windows + T: Crear un buffer de tendencias." -#: ../documentationGenerator/strings.py:293 -msgid "* control+win+minus: Search on twitter." -msgstr "* Control+windows+Guion: buscar en Twitter." +#: ../doc\strings.py:311 +msgid "## Configuring TWBlue" +msgstr "## Configurando TWBlue" -#: ../documentationGenerator/strings.py:294 -msgid "* Control+win+f4: quit." -msgstr "* Control+Windows+F4: Cerrar el programa." - -#: ../documentationGenerator/strings.py:297 -msgid "## Lists {#lists}" -msgstr "## Listas {#listas}" - -#: ../documentationGenerator/strings.py:300 +#: ../doc\strings.py:312 msgid "" -"One of the most useful features of Twitter is the ability to create lists. " -"Lists allow you to group users whose tweets you wish to see together instead " -"of viewing their individual buffers. A common example of this would be if " -"you follow multiple tech news accounts; it would be more convenient to have, " -"for example, a \"Tech News\" list in which you can see tweets from these " -"similar accounts together. A temporary buffer, such as what is created when " -"you are viewing an individual person's timeline, is created and you can add/" -"remove people from the list." +"As described above, TWBlue has two configuration dialogues, the global " +"settings dialogue and the account settings dialogue." msgstr "" -"Una de las características más interesantes de Twitter son las listas, ya " -"que son una manera de mantenerse actualizado sin tener que leer los tweets " -"de todos los usuarios a los que sigues. Con una lista de Twitter solo verás " -"los tweets de sus miembros (la gente que está dentro de la lista). Es " -"parecido a una línea temporal, pero para muchos más usuarios." +"Como se ha descrito anteriormente, TWBlue tiene dos diálogos de " +"configuración. El diálogo de opciones globales y el diálogo de opciones de " +"cuenta." -#: ../documentationGenerator/strings.py:303 +#: ../doc\strings.py:315 +msgid "### The account settings dialogue" +msgstr "### El diálogo de opciones de cuenta" + +#: ../doc\strings.py:318 ../doc\strings.py:360 +msgid "#### General tab" +msgstr "#### Pestaña general" + +#: ../doc\strings.py:321 msgid "" -"In TW Blue, we have begun working on this feature little by little. It is " -"still experimental but is in working condition. Below, we will explain how " -"to configure lists." +"* Autocompletion settings: Allows you to configure the autocompletion " +"database. You can add users manually or let TWBlue add your followers, " +"friends or both." msgstr "" -"En TW blue hemos empezado a dar soporte para esta característica. De momento " -"vamos poco a poco, pero ya es posible usar esta función. Te presentamos los " -"pasos que hay que dar para poder tener una lista abierta en TW Blue." +"* Opciones de autocompletado: Te permite configurar el comportamiento de la " +"base de datos de autocompletado de usuarios. Puedes añadir usuarios " +"manualmente o permitir que TWBlue añada a todos los usuarios que se " +"encuentren en tu buffer de amigos, seguidores o ambos." -#: ../documentationGenerator/strings.py:306 +#: ../doc\strings.py:322 msgid "" -"* First, you will need to open the lists manager which can be found under " -"the application menu." +"* Relative timestamps: Allows you to configure whether TWBlue will calculate " +"the time the tweet or direct message was sent or received based on the " +"current time, or simply say the time it was received or sent." msgstr "" -"* Primero necesitarás ir al gestor de listas, ubicado bajo el menú " -"aplicación." +"* Tiempos relativos: Te permite configurar si quieres que TWBlue calcule el " +"tiempo relativo con el que se enviaron los tuits o mensajes directos (hace 2 " +"días, una semana, dos meses, etc.) o si solamente quieres que te informe de " +"la fecha y hora a la que fue publicado el tuit." -#: ../documentationGenerator/strings.py:307 +#: ../doc\strings.py:323 msgid "" -"* In the lists manager, you will first see the lists you have created " -"followed by those which you are a member. If you see no lists, it means " -"that you have not created any and that you are not a part of any list." +"* API calls: Allows you to adjust the number of API calls to send to Twitter " +"by TWBlue." msgstr "" -"* en el gestor de listas podrás ver todas las listas a las que estás unido, " -"empezando por las que tú has creado. Si no ves ninguna lista en este " -"diálogo, significa que no has creado ni te has unido a ninguna lista. Está " -"bien." +"* Llamadas a la API: Puedes configurar el número de llamadas a la API de " +"Twitter que hará TWBlue." -#: ../documentationGenerator/strings.py:308 +#: ../doc\strings.py:324 msgid "" -"* You will then see a group of buttons: Create a New List, Edit, Remove and " -"Open in Buffer. Perhaps the last one is a bit less self-explanatory: it " -"will open the list in a buffer similar to when opening someone's timeline. " +"* Items on each API calls: Allows you to specify how many items should be " +"retrieved from Twitter for each API call (default and maximum is 200)." msgstr "" -"* Verás un grupo de botones que se explican por sí solos: Crear nueva lista, " -"editar, eliminar, abrir en buffer (este quizá es el menos claro, se refiere " -"a abrir un nuevo buffer para que TW Blue actualice los tweets de la lista, " -"como cuando pasa con las líneas temporales)." +"* Elementos por cada llamada a la API: Te permite especificar cuántos " +"elementos se obtendrán por cada llamada a la API. De manera predeterminada, " +"se obtienen 200 elementos por cada llamada. Este es el número máximo de " +"elementos que se pueden obtener." -#: ../documentationGenerator/strings.py:311 +#: ../doc\strings.py:325 msgid "" -"Once you have created a new list, the next step will be to add users to it. " -"If you were to open it in a buffer right now, it would be empty and no " -"tweets would show up in it. To add users, follow these steps:" +"* Inverted buffers: Allows you to specify whether the buffers should be " +"inverted, which means that the oldest items will show at the end of them and " +"the newest at the beginning." msgstr "" -"Una vez que hayas creado una nueva lista, no deberías abrirla en buffer. Al " -"menos no de inmediato, porque en este momento no tiene miembro alguno y eso " -"significa que cuando se carguen los tweets para empezar a actualizarla no " -"verás nada. Es recomendable primero añadir a gente a la lista, tal como " -"sigue:" +"* Buffers invertidos: Puedes activar esta opción para que los nuevos tuits " +"aparezcan al principio de los buffers, y los antiguos se ubiquen al final." -#: ../documentationGenerator/strings.py:312 +#: ../doc\strings.py:326 msgid "" -"* While browsing your tweets, find a tweet from the user which you wish to " -"add to a list. Next, press ctrl+win+A or select \"Add to List\" from the " -"User menu." +"* Retweet mode: Allows you to specify the behaviour when posting a retweet: " +"you can choose between retweeting with a comment, retweeting without " +"comment or being asked." msgstr "" -"* Cuando hayas cerrado el gestor de listas y estés navegando por entre los " -"tweets de los usuarios, busca el usuario al que quieres añadir a la lista. " -"Una vez encontrado, presiona el atajo Ctrl+Win+A o ve al menú usuario y " -"selecciona la opción \"Añadir a lista\"." +"* Modo de retuit: Puedes escoger el comportamiento de TWBlue cuando haces un " +"retuit. Las opciones son preguntar, retuitear añadiendo un comentario o " +"hacer el retuit sin comentario." -#: ../documentationGenerator/strings.py:313 +#: ../doc\strings.py:327 msgid "" -"* A dialog will then appear asking for the user which you wish to add. The " -"name of the user whose tweet you just selected should already be in the " -"box. Simply confirm that it is correct and press the \"OK\" button." +"* Number of items per buffer to cache in database: This allows you to " +"specify how many items TWBlue should cache in a database. You can type any " +"number, 0 to cache all items, or leave blank to disable caching entirely." msgstr "" -"* Lo siguiente que verás es un diálogo que te permitirá seleccionar el " -"usuario, asegúrate que el que está como predeterminado es el que deseas, o " -"cámbialo si es necesario, y presiona Aceptar." +"* Número de elementos de cada buffer a conservar en la base de datos: Puedes " +"especificar cuántos elementos de cada buffer serán guardados en la base de " +"datos de TWBlue. Cuando se alcance este límite, los elementos más viejos del " +"buffer se eliminarán. Puedes escribir cualquier número, 0 para guardar todos " +"los elementos sin borrar nada, y dejar en blanco el campo de texto para " +"desactivar la base de datos completamente." -#: ../documentationGenerator/strings.py:314 +#: ../doc\strings.py:330 +msgid "#### buffers tab" +msgstr "#### Pestaña buffers" + +#: ../doc\strings.py:333 msgid "" -"* Another dialog will appear showing all of your lists. Arrow to the one " -"you want and press the \"Add\" button." +"This tab displays a list for each buffer you have available in TWBlue, " +"except for searches, timelines, favourites'' timelines and lists. You can " +"show, hide and move them." msgstr "" -"* Ahora verás otro diálogo, pero aquí están todas tus listas. Selecciona una " -"(simplemente lleva el cursor hacia ella), y presiona el botón \"añadir\"." +"Esta pestaña muestra la lista de los buffers disponibles en TWBlue, con " +"excepción de las búsquedas, líneas temporales, líneas temporales de " +"favoritos y listas. Desde aquí puedes mostrarlos, ocultarlos y moverlos." -#: ../documentationGenerator/strings.py:315 +#: ../doc\strings.py:336 +msgid "#### The ignored clients tab" +msgstr "#### La pestaña de clientes ignorados" + +#: ../doc\strings.py:339 +msgid "In this tab, you can add and remove clients to be ignored by TWBlue." +msgstr "" +"En esta pestaña, puedes añadir y eliminar clientes que serán ignorados por " +"TWBlue." + +#: ../doc\strings.py:342 +msgid "#### Sound tab" +msgstr "#### pestaña sonido" + +#: ../doc\strings.py:345 msgid "" -"* To remove a user from a list, repeat the same process but press ctrl+win" -"+shift+A and, from the dialog that appears, choose the list from which you " -"wish to remove the selected user." +"In this tab, you can adjust the sound volume, select the input and output " +"device and set the soundpack used by TWBlue." msgstr "" -"* Para qitar a un usuario de una lista repite el mismo proceso, pero " -"presiona Control+Win+Shift+A o selecciona la opción \"Quitar de lista\", y " -"en el diálogo de las listas presiona sobre el botón \"remover\"." +"En esta pestaña puedes ajustar el volumen del sonido, seleccionar el " +"dispositivo de entrada y salida y establecer el paquete de sonido que TWBlue " +"usará para la sesión actual." -#: ../documentationGenerator/strings.py:318 -msgid "## Reporting bugs from the web {#reporting}" -msgstr "## Reportando Errores Desde la Web {#reportar}" +#: ../doc\strings.py:348 +msgid "#### Audio service tab" +msgstr "#### pestaña Servicios de audio" -#: ../documentationGenerator/strings.py:321 +#: ../doc\strings.py:351 msgid "" -"Note: if you're running the program you can also report a bug from it, by " -"using the help menu item. This process only allows for two edit fields and " -"takes care of the rest. These steps are described for those who can't run " -"the program, don't have it opened at a given moment, or simply want to " -"report from the web instead of using the integrated bug reporting system." +"In this tab, you can enter your SndUp API key (if you have one) to upload " +"audio to SndUp with your account. Note that if account credentials are not " +"specified you will upload announimously." msgstr "" -"Nota: Si estás usando el programa también puedes reportar un error desde el " -"mismo, usando para ello la opción del menú ayuda. Este proceso solo te pide " -"llenar dos cuadros de edición, y se encarga del resto. Estos pasos están " -"escritos para quienes no pueden abrir el programa, no lo tienen en uso en " -"este momento o sencillamente quieran reportar desde la web en lugar del " -"sistema integrado de reporte de errores." +"En esta pestaña puedes introducir tu API Key de SndUp (en caso que tengas " +"una) para subir audios a este servicio. Ten en cuenta que si no se escribe " +"ninguna API Key válida, los audios se subirán de forma anónima a SndUp." -#: ../documentationGenerator/strings.py:324 +#: ../doc\strings.py:354 +msgid "### Global settings" +msgstr "### Opciones globales" + +#: ../doc\strings.py:357 msgid "" -"All things under the sun (yes, this includes computer programs) are very far " -"from being perfect, so often you may find unforeseen bugs in the " -"application. But as our intent is to always improve you're free (what's " -"more, it would be great if you did) to report the bugs you find on the " -"program so they can be reviewed and eventually fixed" +"This dialogue allows you to configure some settings which will affect the " +"entire application." msgstr "" -"Las cosas en este mundo (sí, incluidos los programas informáticos) están muy " -"lejos de ser perfectas, con lo que a menudo te encontrarás con errores no " -"previstos en la aplicación. Pero como la intención es siempre mejorar, eres " -"libre (es más, sería genial que lo hicieras) de reportar los errores que " -"vayas encontrando del programa para que se puedan revisar y eventualmente " -"corregir." +"Este diálogo te permite configurar algunas opciones que afectan al " +"funcionamiento de toda la aplicación." -#: ../documentationGenerator/strings.py:327 +#: ../doc\strings.py:363 msgid "" -"In order to open the bug tracker's web, [follow this link](http://twblue.com." -"mx/errores/bug_report_page.php) It's a website with a form where you must " -"fill several fields. Only three of them are really required (those marked " -"with a star), but the more you can fill the better." +"* Language: This allows you to change the language of TWBlue. Currently " +"supported languages are arabic, Catalan, German, English, Spanish, Basque, " +"Finnish, French, Galician, Croatian, Hungarian, Italian, Polish, Portuguese, " +"Russian and Turkish." msgstr "" -"Para entrar a la web de reporte de incidencias, sigue [Este enlace.](http://" -"twblue.com.mx/errores/bug_report_page.php) Es una web con un formulario " -"donde tienes que llenar varios campos. Solo tres de ellos son realmente " -"obligatorios (los que tienen marcado un asterisco), pero entre más campos " -"puedas llenar, será mejor." +"* Idioma: Permite cambiar el idioma con el que se muestra la interfaz y " +"documentación del cliente. Los idiomas disponibles hasta el momento son " +"inglés, Árabe, Catalán, Alemán, Español, Vasco, Finlandés, Francés, Gallego, " +"Croata, Húngaro, Italiano, Polaco, Portugués, Ruso y turco." -#: ../documentationGenerator/strings.py:330 +#: ../doc\strings.py:364 msgid "" -"Here are the different form fields and what you must enter on each. Remember " -"only fields mark witha star are required:" +"* Ask before exiting TWBlue: This checkbox allows you to control whether " +"TWBlue will ask for confirmation before exiting." msgstr "" -"Aquí están los diferentes campos del formulario y lo que deberías introducir " -"en cada uno de ellos. Recuerda que son obligatorios solamente los campos " -"marcados con un asterisco (*):" +"* Preguntar al salir de TWBlue: Esta casilla permite controlar si TWBlue " +"pedirá confirmación al ser cerrado." -#: ../documentationGenerator/strings.py:333 +#: ../doc\strings.py:365 msgid "" -"* Category: this field allows to choose what category to assign the bug to. " -"You can choose general, if it's a program error, or documentation, if you " -"have found a mistake in this manual or the changes list. This is a required " -"field." +"* Play a sound when TWBlue launches: This checkbox allows you to configure " +"whether TWBlue will play a sound when it has finished loading the buffers." msgstr "" -"* Categoría: Este cuadro combinado permite seleccionar a qué categoría " -"asignar el error. Puede ser a la categoría General, si es un error del " -"programa, o a documentación, si has encontrado un error en este archivo o en " -"la lista de cambios. Este campo es obligatorio." +"* Reproducir un sonido cuando inicia TWBlue: Esta casilla permite controlar " +"si TWBlue reproducirá un sonido cuando todos los buffers y sesiones hayan " +"terminado de cargar." -#: ../documentationGenerator/strings.py:334 +#: ../doc\strings.py:366 msgid "" -"* Reproducibility: here you must indicate how easy or hard it is to " -"reproduce the bug. Available options are unknown, not reproducible, not " -"attempted (by default), random, sometimes, or always. Depending on whether " -"you can reproduce the error or not, you should choose the one closest to " -"your situation. If you're making a feature request, this field is irrelevant." +"* Speak a message when TWBlue launches: This is the same as the previous " +"option, but this checkbox configures whether the screen reader will say " +"\"ready\"." msgstr "" -"* Reproducibilidad: Aquí deberías indicar qué tan fácil o no es de " -"reproducir el error. Las opciones disponibles son Desconocido, No " -"reproducible, No se ha intentado (por defecto), aleatorio, a veces o " -"siempre. Dependiendo de si se puede reproducir el error o no, deberías " -"indicar lo que se parezca más a tu caso. Si estás solicitando una nueva " -"funcionalidad, no importa este cuadro combinado." +"* Hablar un mensaje cuando TWBlue inicie: Esta casilla controla si TWBlue " +"dirá \"listo\" al finalizar la carga de las sesiones y buffers." -#: ../documentationGenerator/strings.py:335 +#: ../doc\strings.py:367 msgid "" -"* Severity: here you choose how much it affects the program. Available " -"options are functionality (choose this for a feature request), trivial, " -"text, setting, minor, major, failure, or crash. Note the options go in " -"increasing order. Choose the one which fits the situation best. If you're " -"not sure which to choose you can leave it as it is." +"* Use the invisible interface's shortcuts in the GUI: As the invisible " +"interface and the Graphical User Interface have their own shortcuts, you " +"may want to use the invisible interface's keystrokes all the time. If this " +"option is checked, the invisible interface's shortcuts ''will be usable in " +"the GUI." msgstr "" -"* Severidad: Aquí se selecciona que tanto afecta esto al programa. Las " -"opciones disponibles son funcionalidad (selecciona esto para solicitar una " -"nueva funcionalidad), Trivial, Texto, Ajuste, Menor, Mayor, fallo o bloqueo. " -"Nota que las opciones aumentan de nivel. Selecciona lo que más creas. Si no " -"estás seguro de que seleccionar puedes dejarlo como está." +"* Usar los atajos de teclado de la interfaz invisible en la ventana gráfica: " +"Como la interfaz invisible y la ventana gráfica tienen atajos de teclado " +"diferentes, podrías querer usar los atajos de la interfaz invisible siempre. " +"Si esta opción está marcada, los atajos de teclado de la interfaz invisible " +"funcionarán, incluso si tienes la ventana gráfica activa." -#: ../documentationGenerator/strings.py:336 +#: ../doc\strings.py:368 msgid "" -"* Priority: choose according to the importance of the bug or feature " -"requested. Available options are none, low, normal, high, urgent, and " -"immediate." +"* Activate SAPI5 when any other screen reader is not being run: This " +"checkbox allows to activate SAPI 5 TTS when no other screen reader is being " +"run." msgstr "" -"* Prioridad: En este cuadro se selecciona la opción de acuerdo con la " -"importancia del error o funcionalidad solicitada. Las opciones disponibles " -"son Ninguna, baja, normal, alta, hurgente e inmediata." +"* Activar SAPI 5 cuando no hay ningún lector de pantalla ejecutándose: Esta " +"casilla controla si se debería proporcionar salida de voz via Microsoft SAPI " +"5 al no encontrarse ningún lector de pantalla en ejecución." -#: ../documentationGenerator/strings.py:337 +#: ../doc\strings.py:369 msgid "" -"* Choose profile: here you can choose between 32 or 64 bit architecture and " -"OS (Windows 7 for now). If they don't fit, you can fill the edit fields " -"below with your specific information." +"* Hide GUI on launch: This allows you to configure whether TWBlue will start " +"with the GUI or the invisible interface." msgstr "" -"* Seleccionar Perfil: Aquí puedes escojer entre la configuración de " -"arquitectura (32 o 64 bits), y el sistema operativo (Windows siete de " -"momento). Si no, puedes llenar los tres cuadros de edición que están en la " -"siguiente tabla con tus datos en específico." +"* Esconder interfaz gráfica al iniciar: Esta casilla controla si TWBlue " +"iniciará con la interfaz gráfica o la invisible." -#: ../documentationGenerator/strings.py:338 +#: ../doc\strings.py:370 msgid "" -"* Product version: choose the version of the program you're running in order " -"to find out when the error was introduced. This field will contain a sorted " -"list of the available versions. Although it's not required, it would help a " -"lot in quickly finding the bug." +"* Keymap: This option allows you to change the keymap used by TWBlue in the " +"invisible interface. The shipped keymaps are Default, Qwitter, TheQube and " +"Chicken Nugget. The keymaps are in the \"keymaps\" folder, and you can " +"create new ones. Just create a new \".keymap\" file and change the " +"keystrokes associated with the actions, as it is done in the shipped keymaps." msgstr "" -"* Versión del producto: Selecciona la versión del programa que estás " -"utilizando para poder averiguar donde se ha generado el error. Este cuadro " -"combinado tendrá la lista de las versiones en orden. Si bien no es " -"obligatorio, ayudaría mucho a resolver más rápidamente el error." +"* Mapa de teclado: Esta opción te permite modificar el mapa de teclado de la " +"interfaz invisible. Los mapas de teclado disponibles son Default, Qwitter, " +"The Qube y Chicken Nugget. Los mapas de teclado se encuentran en el " +"directorio \"keymaps\", y puedes crear los tuyos propios. Solo crea un nuevo " +"archivo con extensión \".keymap\" y añade asociaciones a los atajos de " +"teclado, justo como está hecho en los mapas de teclado que van incluidos con " +"TWBlue." -#: ../documentationGenerator/strings.py:339 +#: ../doc\strings.py:373 +msgid "#### Proxi tab" +msgstr "#### Pestaña Proxy" + +#: ../doc\strings.py:376 msgid "" -"* Summary: a title for the bug, explaining in a few words what the problem " -"is. It's a required text field." +"In this tab you can configure TWBlue to use a Proxy server by completing the " +"fields displayed (server, port, user and password)." msgstr "" -"* Resumen: Un título para el error, que explique en pocas palabras qué " -"ocurre. Es un cuadro de texto obligatorio." +"En esta pestaña puedes configurar TWBlue para usar un servidor proxy " +"completando los campos mostrados (servidor, puerto, usuario y contraseña)." -#: ../documentationGenerator/strings.py:340 +#: ../doc\strings.py:379 +msgid "## License, source code and donations" +msgstr "## Licencia, código fuente y donaciones" + +#: ../doc\strings.py:382 msgid "" -"* Description: this required field asks you to describe in more detail what " -"happened to the program." +"Tw Blue is under the GNU GPL license, version 2. You can view the license in " +"the file named license.txt, or online at ." msgstr "" -"* Descripción: Este campo también obligatorio, te pide que describas con más " -"detalles qué fue lo que ha ocurrido con el programa." +"TWBlue está cubierto por la licencia pública general de GNU (GPL), versión " +"2. Puedes ver una copia completa de la licencia en el archivo license.txt, o " +"en internet en ." -#: ../documentationGenerator/strings.py:341 +#: ../doc\strings.py:385 msgid "" -"* Steps to reproduce: this field is used if you know how to cause the error. " -"It's not required, but it would help a lot knowing how the program gets to " -"the error in order to track it down." +"The source code of the program is available on GitHub at ." msgstr "" -"* Pasos para reproducir: Este campo de texto te sirve si sabes como hacer " -"que la aplicación genere el error. Esto no es obligatorio, pero ayudaría " -"mucho conocer como hacer que el programa tenga este error para rastrearlo " -"mejor." +"El código fuente de TWBlue está disponible en github en ." -#: ../documentationGenerator/strings.py:342 +#: ../doc\strings.py:388 msgid "" -"* Additional information: if you have a comment or note to add, it can go " -"here. It's not required." +"If you want to donate to the project, you can do so at . Thank you for your support!" msgstr "" -"* Información adicional: Si tienes un comentario o nota que añadir, aquí " -"puede ir. No es obligatorio." +"Si te gustaría realizar un donativo para este proyecto, puedes hacerlo en " +"[la página de donaciones de TWBlue.](http://twblue.es/es/donate)" -#: ../documentationGenerator/strings.py:343 +#: ../doc\strings.py:391 +msgid "## Contact" +msgstr "## Contacto" + +#: ../doc\strings.py:394 msgid "" -"* File attachment: you can attach the TW Blue.exe.log generated due to the " -"bug. It is not required." +"If you still have questions after reading this document, if you wish to " +"collaborate to the project in some other way, or if you simply want to get " +"in touch with the application developer, follow the Twitter account " +"[@tw_blue2](https://twitter.com/tw_blue2) or [@manuelcortez00.](https://" +"twitter.com/manuelcortez00) You can also visit [our website](http://twblue." +"es)" msgstr "" -"* Subir archivo: Puedes subir aquí el archivo TW Blue.exe.log que se creó " -"con el error que el programa tuvo. No es obligatorio." +"Si luego de leer esta guía todavía tienes preguntas, si deseas colaborar de " +"alguna otra forma o si simplemente deseas mantenerte en contacto con el " +"desarrollador de la aplicación, sigue a la cuenta [@tw_blue2](https://" +"twitter.com/tw_blue2) o a [@manuelcortez00.](https://twitter.com/" +"manuelcortez00) También puedes visitar nuestro [Sitio web](http://twblue.es)" -#: ../documentationGenerator/strings.py:344 -msgid "" -"* Visibility: choose if you want the bug to be publically visible or " -"private. By default it's public, and it's recommended to keep it that way." -msgstr "" -"* Visibilidad: Selecciona si quieres que el error sea público o privado. Por " -"defecto es público, y es recomendable que así continúe." - -#: ../documentationGenerator/strings.py:345 -msgid "" -"* Send report: press the button to send the report and have it looked into." -msgstr "" -"* Enviar reporte. Presiona aquí para publicar el error y que este sea " -"atendido." - -#: ../documentationGenerator/strings.py:348 -msgid "" -"Many thanks for your participation in reporting bugs and trying out new " -"functionality." -msgstr "" -"Muchas gracias por participar reportando errores y probando las funciones " -"nuevas." - -#: ../documentationGenerator/strings.py:351 -msgid "## Contact {#contact}" -msgstr "## Contacto {#contacto}" - -#: ../documentationGenerator/strings.py:354 -msgid "" -"If what's explained in this document is not enough, if you want to " -"collaborate in some other way, or if you simply want to get in touch with " -"the application developer, follow the Twitter account [@tw_blue2](https://" -"twitter.com/tw_blue2) or [@manuelcortez00.](https://twitter.com/" -"manuelcortez00) You can also visit [our website](http://twblue.com.mx)" -msgstr "" -"Si lo que se expone en este documento no es suficiente, si deseas colaborar " -"de alguna otra forma o si simplemente deseas mantenerte en contacto con " -"quien hace esta aplicación, sigue a la cuenta [@tw_blue2](https://twitter." -"com/tw_blue2) o a [@manuelcortez00.](https://twitter.com/manuelcortez00) " -"También puedes visitar nuestro [Sitio web](http://twblue.com.mx)" - -#: ../documentationGenerator/strings.py:357 +#: ../doc\strings.py:397 msgid "---" msgstr "---" -#: ../documentationGenerator/strings.py:358 -msgid "Copyright © 2013-2014. Manuel Cortéz" -msgstr "Copyright © 2013-2014. Manuel Cortéz" +#: ../doc\strings.py:398 +msgid "Copyright © 2013-2015. Manuel Cortéz" +msgstr "Copyright © 2013-2015. Manuel Cortéz" + +#, fuzzy +#~ msgid "" +#~ "In order to use an application like TW Blue which allows you to manage " +#~ "your Twitter account, you must first be registered on it. It's beyond the " +#~ "scope of this document to explain how to do so. We'll start from the " +#~ "premise that you have an account with its corresponding user name and " +#~ "password." +#~ msgstr "" +#~ "Para poder utilizar una aplicación como TW Blue que te permita gestionar " +#~ "una cuenta de Twitter, primero tienes que estar registrado en esta red " +#~ "social. Esta documentación no tiene como objetivo explicar el " +#~ "procedimiento para hacerlo. Partiremos desde el punto que tienes una " +#~ "cuenta con su respectivo nombre de usuario y contraseña. La documentación " +#~ "cubrirá estas secciones." + +#, fuzzy +#~ msgid "" +#~ "Beginning with the 0.36 version, there's support for an interface which " +#~ "does not require a visible window. It can be activated by pressing " +#~ "control-m, or choosing hide window from the application menu. This " +#~ "interface is entirely driven through shortcut keys. These shortcuts are " +#~ "different from those used to drive the graphical interface. By default, " +#~ "you can't use the invisible interface shortcuts on the GUI. It has been " +#~ "made this way to keep compatibility with applications like TheQube and " +#~ "Chicken nugget which may use the same shortcuts. If you wish to have " +#~ "available the invisible interface shortcuts even if you are using the " +#~ "GUI, activate this option on the General tab of the global settings " +#~ "dialogue box. This section describes both the graphical and the invisible " +#~ "interface." +#~ msgstr "" +#~ "A partir de la versión 0.36, existe soporte para una interfaz que no " +#~ "requiere de una ventana visible. Esta puede ser activada pulsando Control" +#~ "+m, o seleccionando desde el menú aplicación la opción \"Esconder ventana" +#~ "\". Esta interfaz se maneja completamente con atajos de teclado. Estos " +#~ "atajos son diferentes a los que se utilizan para la interfaz gráfica. " +#~ "Cada una de ellas podrá utilizar solo los atajos que le correspondan, lo " +#~ "que quiere decir que no se permitirá utilizar los atajos de la interfaz " +#~ "no visible si se tiene activada la interfaz gráfica. En esta sección se " +#~ "detallará tanto la interfaz gráfica como la no visible." + +#, fuzzy +#~ msgid "" +#~ "The easiest way to describe the graphical user interface of TWBlue is " +#~ "saying that the application has a window which contains a menu bar with " +#~ "five menus (application, tweet, user, buffer and help); one tree view, " +#~ "one list of items and, mostly in every case, three buttons: Tweet, " +#~ "retweet and reply. The actions that are available for every item will be " +#~ "described later." +#~ msgstr "" +#~ "La forma más simple de describir la interfaz gráfica de la aplicación es " +#~ "la de una ventana con una barra de menú con cinco menús (aplicación, " +#~ "tuit, usuario, buffer y ayuda); una lista de varios elementos y en la " +#~ "mayoría de los casos tres botones. Tuit, retuit y responder. Las acciones " +#~ "para cada uno de estos elementos serán descritas más adelante." + +#, fuzzy +#~ msgid "* Control + Windows + Up: go up in the current buffer." +#~ msgstr "* Control+Windows+Flecha Arriba: Va arriba en la lista actual." + +#, fuzzy +#~ msgid "* Control + Windows + Down: Go down in the current buffer." +#~ msgstr "* Control+Windows+Flecha abajo: Va hacia abajo en la lista actual." + +#, fuzzy +#~ msgid "* Open user timeline: Control + Windows + I: Open user timeline." +#~ msgstr "* Control+Windows+I: Abrir línea temporal." + +#~ msgid "# Version 0.46 (alpha)" +#~ msgstr "# Versión 0.46(Alpha)" + +#~ msgid "# TW Blue" +#~ msgstr "# TW Blue" + +#~ msgid "* [Authorising the application](#authorising)" +#~ msgstr "* [Autorizar la aplicación](#autorizar)" + +#~ msgid "* [The program's user interface](#interface)" +#~ msgstr "* [La interfaz del programa](#interfaz)" + +#~ msgid "* [Controls](#controls)" +#~ msgstr "* [Controles](#controles)" + +#~ msgid " * [The Graphical User Interface (GUI)](#gui)" +#~ msgstr " * [La interfaz gráfica (GUI)](#gui)" + +#~ msgid " * [Buttons on the application](#buttons)" +#~ msgstr " * [Botones de la aplicación](#botones)" + +#~ msgid " * [Menus](#menus)" +#~ msgstr " * [Menús](#menus)" + +#~ msgid " * [Application menu](#app)" +#~ msgstr " * [Menú aplicación](#app)" + +#~ msgid " * [Tweet menu](#tweet)" +#~ msgstr " * [Menú Tuit](#tuit)" + +#~ msgid " * [User menu](#user)" +#~ msgstr " * [Menú Usuario](#usuario)" + +#~ msgid " * [Buffer menu](#buffer)" +#~ msgstr " * [Menú buffer](#buffer)" + +#~ msgid " * [Help menu](#help)" +#~ msgstr " * [Menú ayuda](#ayuda)" + +#~ msgid " * [The invisible interface](#invisible_interface)" +#~ msgstr " * [La interfaz No Visible](#interfaz_no_visible)" + +#~ msgid " * [Keyboard shortcuts for the graphical interface](#shortcuts)" +#~ msgstr " * [Atajos de Teclado para la Interfaz Gráfica](#atajos)" + +#~ msgid "" +#~ " * [Keyboard shortcuts for the invisible interface]" +#~ "(#invisible_shortcuts)" +#~ msgstr "" +#~ " * [Atajos de Teclado para la Interfaz no Visible](#atajos_invisibles)" + +#~ msgid "* [Reporting bugs from the web](#reporting)" +#~ msgstr "* [Reportando Errores desde la web](#reportar)" + +#~ msgid "* [Lists](#lists)" +#~ msgstr "* [Listas](#listas)" + +#~ msgid "* [Contact](#contact)" +#~ msgstr "* [Contacto](#contacto)" + +#~ msgid "" +#~ "When executed, if you have not previously configured the program, it will " +#~ "show a dialogue box where it tells you'll be taken to Twitter in order to " +#~ "authorise the application as soon as you press OK. To begin the " +#~ "authorisation process, press the only available button on the box." +#~ msgstr "" +#~ "Al hacerlo, si no has configurado ninguna vez el programa, se mostrará un " +#~ "cuadro de diálogo donde te informa que serás llevado a Twitter para " +#~ "autorizar la aplicación una vez pulses sobre \"aceptar\". Para empezar " +#~ "con el proceso de autorización presiona sobre el único botón de ese " +#~ "diálogo." + +#~ msgid "" +#~ "Read the instructions you will get if the process is successful. In " +#~ "summary, you will be given a numeric code with several digits you must " +#~ "paste on an edit field open by the application on another window." +#~ msgstr "" +#~ "De la página a la que serás redirigido (si el proceso ha tenido éxito), " +#~ "busca las instrucciones que te proporciona Twitter. En resumen, te dará " +#~ "un código numérico de varios dígitos que deberás pegar en un cuadro de " +#~ "texto que la aplicación ha abierto en otra ventana." + +#~ msgid "Paste the verification code, and press the enter key. " +#~ msgstr "Pega el código de verificación, y pulsa la tecla Intro." + +#~ msgid "## The program's interface {#interface}" +#~ msgstr "## La interfaz del programa {#interfaz}" + +#~ msgid "" +#~ "Elements on the lists may be tweets, direct messages or users. TW Blue " +#~ "creates different tabs for each list, which can be sent tweets, main " +#~ "timeline tweets, favourites, or direct messages, and each tab contains a " +#~ "single type of tweet. These tabs are called lists or buffers." +#~ msgstr "" +#~ "Los elementos que hay en las listas pueden ser Tuits, mensajes directos o " +#~ "usuarios. TW Blue crea diferentes pestañas para cada lista, pues estos " +#~ "elementos pueden ser Tuits enviados, Tuits recividos en la línea " +#~ "principal, favoritos, o mensajes directos, y cada pestaña tiene un solo " +#~ "tipo de Tuit. Estas pestañas se llaman listas o buffers." + +#~ msgid "" +#~ "To switch from list to list press control-tab to go forward, and control-" +#~ "shift-tab to go back. Screen readers will announce the list that gains " +#~ "the focus at all times. These are the basic lists of TW Blue, which are " +#~ "configured by default." +#~ msgstr "" +#~ "Para cambiar entre las listas se hace presionando Control+Tab si se desea " +#~ "avanzar, y Control+Shift+Tab para retroceder. En todo momento los " +#~ "lectores de pantalla anunciarán la lista hacia la que se cambie el foco " +#~ "de la aplicación. Aquí están las listas básicas de TW Blue, que aparecen " +#~ "si se usa la configuración por defecto." + +#~ msgid "" +#~ "Note: In this version of TW Blue, you will be able to see up to (or " +#~ "around) 400 friends and followers in their respective buffers. In the " +#~ "next version, we will provide a solution for those who have more to be " +#~ "able to see them." +#~ msgstr "" +#~ "Nota: Únicamente para esta versión de TW Blue, los amigos y seguidores " +#~ "actualizarán hasta 400, o cerca a los 400. En la próxima versión " +#~ "proporcionaremos un método para ver los amigos y seguidores sin exponerse " +#~ "tanto a los errores causados por el uso de la API de Twitter, muy " +#~ "frecuente entre personas con más de 600 amigos o seguidores." + +#~ msgid "" +#~ "Bear in mind the default configuration only allows getting the last 200 " +#~ "tweets for the home,, mentions, direct messages, and user timeline lists. " +#~ "You can change this on the setup dialogue. For the sent list, the last " +#~ "200 tweets and the last 200 sent direct messages will be retrieved. " +#~ "Future versions will allow changing this parameter." +#~ msgstr "" +#~ "Ten en cuenta que por defecto la configuración solo permite obtener los " +#~ "200 últimos Tuits para las listas principal, menciones, mensajes directos " +#~ "y líneas temporales. Esto puedes cambiarlo desde el diálogo de " +#~ "configuración. Para los enviados se obtendrán los últimos 200 Tuits y 200 " +#~ "mensajes directos. En versiones futuras se permitirá ajustar este " +#~ "parámetro." + +#~ msgid "" +#~ "If there's a URL on a tweet TW Blue will try to open it when you press " +#~ "enter on it. If there are several, it will show you a list with all of " +#~ "them so you choose the one you want. If you're on the followers or " +#~ "friends dialogue, the enter key will show you additional information on " +#~ "them." +#~ msgstr "" +#~ "Si hay una dirección URL en algún tuit, TW Blue intentará abrirla cuando " +#~ "presiones Intro sobre ella. Si hay más de una, te mostrará una lista con " +#~ "todas para que selecciones la que quieras abrir. Si estás en el cuadro de " +#~ "diálogo de los amigos o seguidores, la tecla intro te mostrará detalles " +#~ "del mismo." + +#~ msgid "" +#~ "If you press control-enter, TW Blue will try to play the audio from the " +#~ "focused tweet, as long as it has a URL. If it has the #audio hashtag, you " +#~ "will hear a sound when it is selected, letting you know you can try to " +#~ "play it. However, a tweet can be missing the hashtag and TW Blue will " +#~ "still be able to play it so long as it contains a URL with audio." +#~ msgstr "" +#~ "Si pulsas Control+Intro, TW Blue intentará reproducir el audio que tenga " +#~ "el tuit sobre el que está el foco del sistema, siempre que tenga una URL. " +#~ "Si el tuit lleva la etiqueta #audio, un sonido al pasar por él te " +#~ "alertará que es un audio y puedes intentar reproducirlo. No obstante, " +#~ "también puede que no esté etiquetado y que TW Blue pueda reproducirlo, " +#~ "siempre que lleve a una dirección URL donde exista audio." + +#~ msgid "## Controls {#controls}" +#~ msgstr "## Controles {#controles}" + +#~ msgid "" +#~ "* Retweet: this button retweets the message you're reading. After you " +#~ "press it, you'll be asked if you want to add a comment or simply send it " +#~ "as written." +#~ msgstr "" +#~ "* Retuit: Este botón se encarga de reenviar el tuit sobre el que estás " +#~ "leyendo. Al presionarlo se te preguntará si deseas añadirle un comentario " +#~ "al tuit original (citándolo) o simplemente enviarlo como se ha escrito " +#~ "sin añadir nada más." + +#~ msgid "" +#~ "* Preferences: opens up a preference dialogue box from which you can " +#~ "control some of the program settings. The options need no explanation." +#~ msgstr "" +#~ "* Preferencias: Abre un diálogo de configuración desde donde se pueden " +#~ "controlar algunos aspectos del programa. Las opciones no necesitan de " +#~ "explicación." + +#~ msgid "" +#~ "* Show tweet: opens up a dialogue box where you can read the tweet, " +#~ "direct message, friend or follower under focus. You can read the text " +#~ "with the cursors. It's the same dialogue box used to write tweets on." +#~ msgstr "" +#~ "* Ver Tuit: Abre un diálogo donde puedes ver el Tuit, mensaje directo, " +#~ "amigo o seguidor sobre el que esté el foco de la aplicación. Puedes leer " +#~ "el texto con los cursores. El diálogo es el mismo que el que se usa para " +#~ "escribir un Tuit." + +#~ msgid "" +#~ "Bear in mind the four topmost items on this menu open up the same " +#~ "dialogue box. This box has an edit field where you can choose the user " +#~ "you want to act on, by using up and down arrows or by writing the text in " +#~ "yourself. Afterwards you will find a group with four radio buttons to " +#~ "follow, unfollow, report as spam and block. If you choose the follow menu " +#~ "item, the radio button on the dialogue box will be set to follow, and the " +#~ "same applies to unfollow, report as spam and block. Press OK to try to " +#~ "carry out the action. If it doesn't succeed, you'll hear the error " +#~ "message in English." +#~ msgstr "" +#~ "Ten en cuenta que las primeras seis opciones de este menú abren un mismo " +#~ "diálogo. Este diálogo tiene un cuadro de edición donde puedes seleccionar " +#~ "el usuario sobre el que deseas actuar, bien con los cursores arriba y " +#~ "abajo o escribiendo tú mismo el nombre. Después, hay un grupo de botones " +#~ "de radio para seguir, dejar de seguir, silenciar, des-silenciar, reportar " +#~ "como Spam y bloquear. Si seleccionas desde el menú la opción seguir, el " +#~ "botón del cuadro de diálogo estará marcado con esa opción, así como " +#~ "sucederá respectivamente con dejar de seguir, reportar como Spam y " +#~ "bloquear. Pulsa el botón Aceptar para que el programa trate de hacer lo " +#~ "que le pides. Si no se ha podido, escucharás el error en inglés." + +#~ msgid "The remaining items on the menu are described below:" +#~ msgstr "A continuación se describen las opciones restantes para este menú:" + +#~ msgid "### Invisible interface {#invisible_interface}" +#~ msgstr "### Interfaz no visible {#interfaz_no_visible}" + +#~ msgid "" +#~ "If you press control-m, or if you choose hide window from the application " +#~ "menu, you will activate an interface that cannot be used in the usual " +#~ "way, because it is invisible." +#~ msgstr "" +#~ "Si presionas Control+M, o si desde el menú aplicación seleccionas " +#~ "esconder ventana, estarás activando una interfaz a la que no se podrá " +#~ "acceder por la manera convencional, porque no se ve." + +#~ msgid "" +#~ "Every action on the invisible interface is done through keyboard " +#~ "shortcuts, even browsing lists. Eventually you may open dialogue boxes " +#~ "and these will be visible, but not the application's main window. Read " +#~ "the section on invisible interface shortcuts to know which ones you can " +#~ "use for the time being." +#~ msgstr "" +#~ "En la interfaz no visible todo lo que hagas será mediante atajos de " +#~ "teclado, incluso para recorrer las listas. Eventualmente se abrirán " +#~ "diálogos y estos sí serán visibles, pero la ventana principal de la " +#~ "aplicación no. Ve a la sección de atajos de teclado de la interfaz no " +#~ "visible para saber cuales puedes usar de momento." + +#~ msgid "### Keyboard shortcuts for the graphical interface {#shortcuts}" +#~ msgstr "### Atajos de teclado para la Interfaz Gráfica {#atajos}" + +#~ msgid "" +#~ "Instead of using the buttons and menus, most actions can be carried out " +#~ "by pressing a key combination. The ones available at present are " +#~ "described below:" +#~ msgstr "" +#~ "Además de los botones y menús, la mayoría de las acciones pueden hacerse " +#~ "presionando una combinación de teclado. Aquí están las existentes en este " +#~ "momento:" + +#~ msgid "" +#~ "* Enter: open a URL. If there are more than one you will get a list that " +#~ "will allow you to choose the one you want. On the friends or followers " +#~ "lists it will show details on the selected item." +#~ msgstr "" +#~ "* Intro: Abrir una dirección URL. Si hay más de una podrás ver una lista " +#~ "que te permitirá seleccionar la que quieras. Si estás en la lista de " +#~ "amigos o seguidores, mostrará detalles del seleccionado." + +#~ msgid "* Control-enter: attempt to play audio from URL." +#~ msgstr "" +#~ "* Control+Intro: Intenta reproducir un audio si en el Tuit hay una " +#~ "dirección URL." + +#~ msgid "" +#~ "* F5: decrease sounds volume. It affects the program sounds as well as " +#~ "audio played from the program." +#~ msgstr "" +#~ "* F5: Baja un 5% el volumen de los sonidos. Esto afecta a los sonidos que " +#~ "reproduce el programa y al audio que puedas escuchar a través de él." + +#~ msgid "* F6: increase application sounds volume." +#~ msgstr "* F6: Sube un 5% el volumen de los sonidos de la aplicación." + +#~ msgid "* Control-m: hide window." +#~ msgstr "* Control+M: Oculta la ventana." + +#~ msgid "* Control-q: quit." +#~ msgstr "* Control+Q: Sale de la aplicación." + +#~ msgid "* Control-r: open reply tweet dialogue." +#~ msgstr "* Control+R: Abre el diálogo para responder." + +#~ msgid "* Control-f: mark as favourite." +#~ msgstr "* Control+F: Marcar como favorito." + +#~ msgid "* Control-shift-v: view tweet." +#~ msgstr "* Control+Shift+V: Ver Tuit." + +#~ msgid "* Control-s: follow a user." +#~ msgstr "* Control+S: Seguir a un usuario." + +#~ msgid "* Control-shift-s: unfollow a user." +#~ msgstr "* Control+Shift+S: Dejar de seguir a un usuario." + +#~ msgid "* Control-shift-k: report as spam." +#~ msgstr "* Control+Shift+K: Reportar como Spam." + +#~ msgid "* Control-i: open user's timeline." +#~ msgstr "* Control+I: Abrir línea temporal a un usuario." + +#~ msgid "* Control-shift-i: remove timeline." +#~ msgstr "* Control+Shift+I: Eliminar línea temporal." + +#~ msgid "* Delete: remove tweet or direct message." +#~ msgstr "* Suprimir: Eliminar tuit o mensaje directo." + +#~ msgid "" +#~ "* Shift-delete: empty the buffer removing all the elements. This doesn't " +#~ "remove them from Twitter itself." +#~ msgstr "" +#~ "* Shift+suprimir: vacía el buffer, quitando todos los elementos hasta ese " +#~ "entonces. Esto ocurre sin borrar nada de Twitter." + +#~ msgid "" +#~ "These are the shortcuts you may use from the invisible interface. Bear in " +#~ "mind that when the graphical user interface is shown you may not use " +#~ "these. By \"win\" the left windows key is intended." +#~ msgstr "" +#~ "Estos son los atajos de teclado que puedes usar desde la interfaz no " +#~ "visible. Ten en cuenta que cuando la vista de la interfaz gráfica esté " +#~ "activada ninguno de ellos podrá usarse. Al decir \"windows\", nos estamos " +#~ "refiriendo a la tecla de Windows izquierda." + +#~ msgid "" +#~ "* Control+win+enter: open URL on the current tweet, or further " +#~ "information for a friend or follower." +#~ msgstr "" +#~ "* Control+Windows+Intro: Abrir URL en el tuit, o ver detalles del usuario " +#~ "si estás en la lista de amigos o seguidores." + +#~ msgid "" +#~ "* control+win+m: show the graphical interface, turning the invisible one " +#~ "off." +#~ msgstr "" +#~ "* Control+Windows+M: Muestra la interfaz gráfica, desactivando la no " +#~ "visible." + +#~ msgid "" +#~ "* Control+win+shift+delete: empty the buffer removing all the elements. " +#~ "This doesn't remove them from Twitter itself." +#~ msgstr "" +#~ "* control+win+Shift+suprimir: vacía el buffer, quitando todos los " +#~ "elementos hasta ese entonces. Esto ocurre sin borrar nada de Twitter." + +#~ msgid "* Control+win+s: follow a user." +#~ msgstr "* Control+Windows+S: Seguir a un usuario." + +#~ msgid "* Control+win+shift+s: unfollow a user." +#~ msgstr "* Control+Windows+Shift+S: Dejar de seguir a alguien." + +#~ msgid "* Control+win+shift+i: remove user timeline." +#~ msgstr "* Control+Windows+Shift+I: Eliminar línea temporal de un usuario." + +#~ msgid "* Control+win+space: Listen the current message." +#~ msgstr "* Control+win+espacio: ver tweet actual." + +#~ msgid "" +#~ "* Control+Win+Shift+Down arrow: move down one tweet in the conversation." +#~ msgstr "" +#~ "* Control+Windows+Flecha Abajo: Ir un tuit hacia abajo en la conversación." + +#~ msgid "* Win+Alt+M: Globally mute/unmute TW Blue." +#~ msgstr "" +#~ "* Windows+Alt+M: Activar o desactivar el silencio global de TW Blue." + +#~ msgid "* Control+win+f4: quit." +#~ msgstr "* Control+Windows+F4: Cerrar el programa." + +#~ msgid "## Lists {#lists}" +#~ msgstr "## Listas {#listas}" + +#~ msgid "" +#~ "One of the most useful features of Twitter is the ability to create " +#~ "lists. Lists allow you to group users whose tweets you wish to see " +#~ "together instead of viewing their individual buffers. A common example " +#~ "of this would be if you follow multiple tech news accounts; it would be " +#~ "more convenient to have, for example, a \"Tech News\" list in which you " +#~ "can see tweets from these similar accounts together. A temporary buffer, " +#~ "such as what is created when you are viewing an individual person's " +#~ "timeline, is created and you can add/remove people from the list." +#~ msgstr "" +#~ "Una de las características más interesantes de Twitter son las listas, ya " +#~ "que son una manera de mantenerse actualizado sin tener que leer los " +#~ "tweets de todos los usuarios a los que sigues. Con una lista de Twitter " +#~ "solo verás los tweets de sus miembros (la gente que está dentro de la " +#~ "lista). Es parecido a una línea temporal, pero para muchos más usuarios." + +#~ msgid "" +#~ "In TW Blue, we have begun working on this feature little by little. It " +#~ "is still experimental but is in working condition. Below, we will " +#~ "explain how to configure lists." +#~ msgstr "" +#~ "En TW blue hemos empezado a dar soporte para esta característica. De " +#~ "momento vamos poco a poco, pero ya es posible usar esta función. Te " +#~ "presentamos los pasos que hay que dar para poder tener una lista abierta " +#~ "en TW Blue." + +#~ msgid "" +#~ "* First, you will need to open the lists manager which can be found under " +#~ "the application menu." +#~ msgstr "" +#~ "* Primero necesitarás ir al gestor de listas, ubicado bajo el menú " +#~ "aplicación." + +#~ msgid "" +#~ "* In the lists manager, you will first see the lists you have created " +#~ "followed by those which you are a member. If you see no lists, it means " +#~ "that you have not created any and that you are not a part of any list." +#~ msgstr "" +#~ "* en el gestor de listas podrás ver todas las listas a las que estás " +#~ "unido, empezando por las que tú has creado. Si no ves ninguna lista en " +#~ "este diálogo, significa que no has creado ni te has unido a ninguna " +#~ "lista. Está bien." + +#~ msgid "" +#~ "* You will then see a group of buttons: Create a New List, Edit, Remove " +#~ "and Open in Buffer. Perhaps the last one is a bit less self-explanatory: " +#~ "it will open the list in a buffer similar to when opening someone's " +#~ "timeline. " +#~ msgstr "" +#~ "* Verás un grupo de botones que se explican por sí solos: Crear nueva " +#~ "lista, editar, eliminar, abrir en buffer (este quizá es el menos claro, " +#~ "se refiere a abrir un nuevo buffer para que TW Blue actualice los tweets " +#~ "de la lista, como cuando pasa con las líneas temporales)." + +#~ msgid "" +#~ "Once you have created a new list, the next step will be to add users to " +#~ "it. If you were to open it in a buffer right now, it would be empty and " +#~ "no tweets would show up in it. To add users, follow these steps:" +#~ msgstr "" +#~ "Una vez que hayas creado una nueva lista, no deberías abrirla en buffer. " +#~ "Al menos no de inmediato, porque en este momento no tiene miembro alguno " +#~ "y eso significa que cuando se carguen los tweets para empezar a " +#~ "actualizarla no verás nada. Es recomendable primero añadir a gente a la " +#~ "lista, tal como sigue:" + +#~ msgid "" +#~ "* While browsing your tweets, find a tweet from the user which you wish " +#~ "to add to a list. Next, press ctrl+win+A or select \"Add to List\" from " +#~ "the User menu." +#~ msgstr "" +#~ "* Cuando hayas cerrado el gestor de listas y estés navegando por entre " +#~ "los tweets de los usuarios, busca el usuario al que quieres añadir a la " +#~ "lista. Una vez encontrado, presiona el atajo Ctrl+Win+A o ve al menú " +#~ "usuario y selecciona la opción \"Añadir a lista\"." + +#~ msgid "" +#~ "* A dialog will then appear asking for the user which you wish to add. " +#~ "The name of the user whose tweet you just selected should already be in " +#~ "the box. Simply confirm that it is correct and press the \"OK\" button." +#~ msgstr "" +#~ "* Lo siguiente que verás es un diálogo que te permitirá seleccionar el " +#~ "usuario, asegúrate que el que está como predeterminado es el que deseas, " +#~ "o cámbialo si es necesario, y presiona Aceptar." + +#~ msgid "" +#~ "* Another dialog will appear showing all of your lists. Arrow to the one " +#~ "you want and press the \"Add\" button." +#~ msgstr "" +#~ "* Ahora verás otro diálogo, pero aquí están todas tus listas. Selecciona " +#~ "una (simplemente lleva el cursor hacia ella), y presiona el botón \"añadir" +#~ "\"." + +#~ msgid "" +#~ "* To remove a user from a list, repeat the same process but press ctrl+win" +#~ "+shift+A and, from the dialog that appears, choose the list from which " +#~ "you wish to remove the selected user." +#~ msgstr "" +#~ "* Para qitar a un usuario de una lista repite el mismo proceso, pero " +#~ "presiona Control+Win+Shift+A o selecciona la opción \"Quitar de lista\", " +#~ "y en el diálogo de las listas presiona sobre el botón \"remover\"." + +#~ msgid "## Reporting bugs from the web {#reporting}" +#~ msgstr "## Reportando Errores Desde la Web {#reportar}" + +#~ msgid "" +#~ "Note: if you're running the program you can also report a bug from it, by " +#~ "using the help menu item. This process only allows for two edit fields " +#~ "and takes care of the rest. These steps are described for those who can't " +#~ "run the program, don't have it opened at a given moment, or simply want " +#~ "to report from the web instead of using the integrated bug reporting " +#~ "system." +#~ msgstr "" +#~ "Nota: Si estás usando el programa también puedes reportar un error desde " +#~ "el mismo, usando para ello la opción del menú ayuda. Este proceso solo te " +#~ "pide llenar dos cuadros de edición, y se encarga del resto. Estos pasos " +#~ "están escritos para quienes no pueden abrir el programa, no lo tienen en " +#~ "uso en este momento o sencillamente quieran reportar desde la web en " +#~ "lugar del sistema integrado de reporte de errores." + +#~ msgid "" +#~ "All things under the sun (yes, this includes computer programs) are very " +#~ "far from being perfect, so often you may find unforeseen bugs in the " +#~ "application. But as our intent is to always improve you're free (what's " +#~ "more, it would be great if you did) to report the bugs you find on the " +#~ "program so they can be reviewed and eventually fixed" +#~ msgstr "" +#~ "Las cosas en este mundo (sí, incluidos los programas informáticos) están " +#~ "muy lejos de ser perfectas, con lo que a menudo te encontrarás con " +#~ "errores no previstos en la aplicación. Pero como la intención es siempre " +#~ "mejorar, eres libre (es más, sería genial que lo hicieras) de reportar " +#~ "los errores que vayas encontrando del programa para que se puedan revisar " +#~ "y eventualmente corregir." + +#~ msgid "" +#~ "In order to open the bug tracker's web, [follow this link](http://twblue." +#~ "com.mx/errores/bug_report_page.php) It's a website with a form where you " +#~ "must fill several fields. Only three of them are really required (those " +#~ "marked with a star), but the more you can fill the better." +#~ msgstr "" +#~ "Para entrar a la web de reporte de incidencias, sigue [Este enlace.]" +#~ "(http://twblue.com.mx/errores/bug_report_page.php) Es una web con un " +#~ "formulario donde tienes que llenar varios campos. Solo tres de ellos son " +#~ "realmente obligatorios (los que tienen marcado un asterisco), pero entre " +#~ "más campos puedas llenar, será mejor." + +#~ msgid "" +#~ "Here are the different form fields and what you must enter on each. " +#~ "Remember only fields mark witha star are required:" +#~ msgstr "" +#~ "Aquí están los diferentes campos del formulario y lo que deberías " +#~ "introducir en cada uno de ellos. Recuerda que son obligatorios solamente " +#~ "los campos marcados con un asterisco (*):" + +#~ msgid "" +#~ "* Category: this field allows to choose what category to assign the bug " +#~ "to. You can choose general, if it's a program error, or documentation, if " +#~ "you have found a mistake in this manual or the changes list. This is a " +#~ "required field." +#~ msgstr "" +#~ "* Categoría: Este cuadro combinado permite seleccionar a qué categoría " +#~ "asignar el error. Puede ser a la categoría General, si es un error del " +#~ "programa, o a documentación, si has encontrado un error en este archivo o " +#~ "en la lista de cambios. Este campo es obligatorio." + +#~ msgid "" +#~ "* Reproducibility: here you must indicate how easy or hard it is to " +#~ "reproduce the bug. Available options are unknown, not reproducible, not " +#~ "attempted (by default), random, sometimes, or always. Depending on " +#~ "whether you can reproduce the error or not, you should choose the one " +#~ "closest to your situation. If you're making a feature request, this field " +#~ "is irrelevant." +#~ msgstr "" +#~ "* Reproducibilidad: Aquí deberías indicar qué tan fácil o no es de " +#~ "reproducir el error. Las opciones disponibles son Desconocido, No " +#~ "reproducible, No se ha intentado (por defecto), aleatorio, a veces o " +#~ "siempre. Dependiendo de si se puede reproducir el error o no, deberías " +#~ "indicar lo que se parezca más a tu caso. Si estás solicitando una nueva " +#~ "funcionalidad, no importa este cuadro combinado." + +#~ msgid "" +#~ "* Severity: here you choose how much it affects the program. Available " +#~ "options are functionality (choose this for a feature request), trivial, " +#~ "text, setting, minor, major, failure, or crash. Note the options go in " +#~ "increasing order. Choose the one which fits the situation best. If you're " +#~ "not sure which to choose you can leave it as it is." +#~ msgstr "" +#~ "* Severidad: Aquí se selecciona que tanto afecta esto al programa. Las " +#~ "opciones disponibles son funcionalidad (selecciona esto para solicitar " +#~ "una nueva funcionalidad), Trivial, Texto, Ajuste, Menor, Mayor, fallo o " +#~ "bloqueo. Nota que las opciones aumentan de nivel. Selecciona lo que más " +#~ "creas. Si no estás seguro de que seleccionar puedes dejarlo como está." + +#~ msgid "" +#~ "* Priority: choose according to the importance of the bug or feature " +#~ "requested. Available options are none, low, normal, high, urgent, and " +#~ "immediate." +#~ msgstr "" +#~ "* Prioridad: En este cuadro se selecciona la opción de acuerdo con la " +#~ "importancia del error o funcionalidad solicitada. Las opciones " +#~ "disponibles son Ninguna, baja, normal, alta, hurgente e inmediata." + +#~ msgid "" +#~ "* Choose profile: here you can choose between 32 or 64 bit architecture " +#~ "and OS (Windows 7 for now). If they don't fit, you can fill the edit " +#~ "fields below with your specific information." +#~ msgstr "" +#~ "* Seleccionar Perfil: Aquí puedes escojer entre la configuración de " +#~ "arquitectura (32 o 64 bits), y el sistema operativo (Windows siete de " +#~ "momento). Si no, puedes llenar los tres cuadros de edición que están en " +#~ "la siguiente tabla con tus datos en específico." + +#~ msgid "" +#~ "* Product version: choose the version of the program you're running in " +#~ "order to find out when the error was introduced. This field will contain " +#~ "a sorted list of the available versions. Although it's not required, it " +#~ "would help a lot in quickly finding the bug." +#~ msgstr "" +#~ "* Versión del producto: Selecciona la versión del programa que estás " +#~ "utilizando para poder averiguar donde se ha generado el error. Este " +#~ "cuadro combinado tendrá la lista de las versiones en orden. Si bien no es " +#~ "obligatorio, ayudaría mucho a resolver más rápidamente el error." + +#~ msgid "" +#~ "* Summary: a title for the bug, explaining in a few words what the " +#~ "problem is. It's a required text field." +#~ msgstr "" +#~ "* Resumen: Un título para el error, que explique en pocas palabras qué " +#~ "ocurre. Es un cuadro de texto obligatorio." + +#~ msgid "" +#~ "* Description: this required field asks you to describe in more detail " +#~ "what happened to the program." +#~ msgstr "" +#~ "* Descripción: Este campo también obligatorio, te pide que describas con " +#~ "más detalles qué fue lo que ha ocurrido con el programa." + +#~ msgid "" +#~ "* Steps to reproduce: this field is used if you know how to cause the " +#~ "error. It's not required, but it would help a lot knowing how the program " +#~ "gets to the error in order to track it down." +#~ msgstr "" +#~ "* Pasos para reproducir: Este campo de texto te sirve si sabes como hacer " +#~ "que la aplicación genere el error. Esto no es obligatorio, pero ayudaría " +#~ "mucho conocer como hacer que el programa tenga este error para rastrearlo " +#~ "mejor." + +#~ msgid "" +#~ "* Additional information: if you have a comment or note to add, it can go " +#~ "here. It's not required." +#~ msgstr "" +#~ "* Información adicional: Si tienes un comentario o nota que añadir, aquí " +#~ "puede ir. No es obligatorio." + +#~ msgid "" +#~ "* File attachment: you can attach the TW Blue.exe.log generated due to " +#~ "the bug. It is not required." +#~ msgstr "" +#~ "* Subir archivo: Puedes subir aquí el archivo TW Blue.exe.log que se creó " +#~ "con el error que el programa tuvo. No es obligatorio." + +#~ msgid "" +#~ "* Visibility: choose if you want the bug to be publically visible or " +#~ "private. By default it's public, and it's recommended to keep it that way." +#~ msgstr "" +#~ "* Visibilidad: Selecciona si quieres que el error sea público o privado. " +#~ "Por defecto es público, y es recomendable que así continúe." + +#~ msgid "" +#~ "* Send report: press the button to send the report and have it looked " +#~ "into." +#~ msgstr "" +#~ "* Enviar reporte. Presiona aquí para publicar el error y que este sea " +#~ "atendido." + +#~ msgid "" +#~ "Many thanks for your participation in reporting bugs and trying out new " +#~ "functionality." +#~ msgstr "" +#~ "Muchas gracias por participar reportando errores y probando las funciones " +#~ "nuevas." diff --git a/src/application.py b/src/application.py index ed23a720..54bb0ad7 100644 --- a/src/application.py +++ b/src/application.py @@ -5,7 +5,7 @@ if snapshot == False: version = "0.80" update_url = 'http://twblue.es/updates/twblue_ngen.json' else: - version = "9.5" + version = "9.6" update_url = 'http://twblue.es/updates/snapshots_ngen.json' author = u"Manuel Cortéz, Bill Dengler" authorEmail = "manuel@manuelcortez.net" diff --git a/src/controller/mainController.py b/src/controller/mainController.py index 77f33c4d..41848807 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -319,14 +319,14 @@ class Controller(object): for i in session.settings["other_buffers"]["timelines"]: tl = buffersController.baseBufferController(self.view.nb, "get_user_timeline", "%s-timeline" % (i,), session, session.db["user_name"], bufferType=None, screen_name=i) self.buffers.append(tl) - self.view.insert_buffer(tl.buffer, name=_(u"Timeline for {}".format(i)), pos=self.view.search("timelines", session.db["user_name"])) + self.view.insert_buffer(tl.buffer, name=_(u"Timeline for {}").format(i,), pos=self.view.search("timelines", session.db["user_name"])) favs_timelines = buffersController.emptyPanel(self.view.nb, "favs_timelines", session.db["user_name"]) self.buffers.append(favs_timelines) self.view.insert_buffer(favs_timelines.buffer , name=_(u"Favourites timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"])) for i in session.settings["other_buffers"]["favourites_timelines"]: tl = buffersController.baseBufferController(self.view.nb, "get_favorites", "%s-favorite" % (i,), session, session.db["user_name"], bufferType=None, screen_name=i) self.buffers.append(tl) - self.view.insert_buffer(tl.buffer, name=_(u"Favourites timeline for {}".format(i)), pos=self.view.search("favs_timelines", session.db["user_name"])) + self.view.insert_buffer(tl.buffer, name=_(u"Favourites timeline for {}").format(i,), pos=self.view.search("favs_timelines", session.db["user_name"])) tl.timer = RepeatingTimer(300, tl.start_stream) tl.timer.start() lists = buffersController.emptyPanel(self.view.nb, "lists", session.db["user_name"]) @@ -343,7 +343,7 @@ class Controller(object): for i in session.settings["other_buffers"]["tweet_searches"]: tl = buffersController.searchBufferController(self.view.nb, "search", "%s-searchterm" % (i,), session, session.db["user_name"], bufferType="searchPanel", q=i, count=session.settings["general"]["max_tweets_per_call"]) self.buffers.append(tl) - self.view.insert_buffer(tl.buffer, name=_(u"Search for {}".format(i)), pos=self.view.search("searches", session.db["user_name"])) + self.view.insert_buffer(tl.buffer, name=_(u"Search for {}").format(i), pos=self.view.search("searches", session.db["user_name"])) tl.timer = RepeatingTimer(180, tl.start_stream) tl.timer.start() for i in session.settings["other_buffers"]["trending_topic_buffers"]: @@ -413,7 +413,7 @@ class Controller(object): search = buffersController.searchPeopleBufferController(self.view.nb, "search_users", "%s-searchUser" % (term,), buffer.session, buffer.session.db["user_name"], bufferType=None, q=term) self.buffers.append(search) search.start_stream() - self.view.insert_buffer(search.buffer, name=_(u"Search for {}".format(term)), pos=self.view.search("searches", buffer.session.db["user_name"])) + self.view.insert_buffer(search.buffer, name=_(u"Search for {}").format(term), pos=self.view.search("searches", buffer.session.db["user_name"])) search.timer = RepeatingTimer(180, search.start_stream) search.timer.start() dlg.Destroy() @@ -443,8 +443,9 @@ class Controller(object): page.buffer.list.select_item(i) if string.lower() in page.get_message().lower(): return output.speak(page.get_message(), True) - output.speak(unicode(string)+unicode(" ")+_(u"not found."), True) + output.speak(_(u"{0} not found.").format(string,), True) page.buffer.list.select_item(start) + def edit_keystrokes(self, *args, **kwargs): editor = keystrokeEditor.KeystrokeEditor() if editor.changed == True: @@ -553,6 +554,7 @@ class Controller(object): log.debug("Exiting...") log.debug("Saving global configuration...") config.app.write() + config.keymap.write() for item in session_.sessions: if session_.sessions[item].logged == False: continue log.debug("Saving config for %s session" % (session_.sessions[item].session_id,)) @@ -719,7 +721,7 @@ class Controller(object): tl = buffersController.baseBufferController(self.view.nb, "get_user_timeline", "%s-timeline" % (dlg.get_user(),), buffer.session, buffer.session.db["user_name"], bufferType=None, screen_name=dlg.get_user()) tl.start_stream() self.buffers.append(tl) - self.view.insert_buffer(tl.buffer, name=_(u"Timeline for {}".format(dlg.get_user())), pos=self.view.search("timelines", buffer.session.db["user_name"])) + self.view.insert_buffer(tl.buffer, name=_(u"Timeline for {}").format(dlg.get_user()), pos=self.view.search("timelines", buffer.session.db["user_name"])) buffer.session.settings["other_buffers"]["timelines"].append(dlg.get_user()) pub.sendMessage("restart-streams", streams=["timelinesStream"], session=buffer.session) buffer.session.sound.play("create_timeline.ogg") @@ -729,7 +731,7 @@ class Controller(object): return tl = buffersController.baseBufferController(self.view.nb, "get_favorites", "%s-favorite" % (dlg.get_user(),), buffer.session, buffer.session.db["user_name"], bufferType=None, screen_name=dlg.get_user()) self.buffers.append(tl) - self.view.insert_buffer(buffer=tl.buffer, name=_(u"Favourites timeline for {}".format(dlg.get_user())), pos=self.view.search("favs_timelines", buffer.session.db["user_name"])) + self.view.insert_buffer(buffer=tl.buffer, name=_(u"Favourites timeline for {}").format(dlg.get_user()), pos=self.view.search("favs_timelines", buffer.session.db["user_name"])) tl.start_stream() tl.timer = RepeatingTimer(300, tl.start_stream) tl.timer.start() @@ -746,7 +748,7 @@ class Controller(object): search.tweet = buffer.get_right_tweet() search.start_stream(start=True) self.buffers.append(search) - self.view.insert_buffer(search.buffer, name=_(u"Conversation with {0}".format(user)), pos=self.view.search("searches", buffer.session.db["user_name"])) + self.view.insert_buffer(search.buffer, name=_(u"Conversation with {0}").format(user), pos=self.view.search("searches", buffer.session.db["user_name"])) search.timer = RepeatingTimer(300, search.start_stream) search.timer.start() diff --git a/src/extra/SoundsTutorial/soundsTutorial_constants.py b/src/extra/SoundsTutorial/soundsTutorial_constants.py index 8adbbf52..f724caa2 100644 --- a/src/extra/SoundsTutorial/soundsTutorial_constants.py +++ b/src/extra/SoundsTutorial/soundsTutorial_constants.py @@ -15,7 +15,7 @@ actions = reverse_sort.reverse_sort([ ("audio", _(u"Audio tweet.")), ("max_length", _(u"Too many characters.")), ("mention_received", _(u"Mention received.")), ("new_event", _(u"New event.")), - ("ready", _(unicode(application.name+" is ready."))), + ("ready", _(u"{0} is ready.").format(application.name,)), ("reply_send", _(u"Mention sent.")), ("retweet_send", _(u"Tweet retweeted.")), ("search_updated", _(u"Search buffer updated.")), diff --git a/src/extra/SpellChecker/wx_ui.py b/src/extra/SpellChecker/wx_ui.py index 05133e52..407c0119 100644 --- a/src/extra/SpellChecker/wx_ui.py +++ b/src/extra/SpellChecker/wx_ui.py @@ -73,7 +73,7 @@ class spellCheckerDialog(wx.Dialog): return self.suggestions.GetStringSelection() def dict_not_found_error(): - wx.MessageDialog(None, _(u"An error has occurred. There are no dictionaries available for the selected language in " + application.name), _(u"Error"), wx.ICON_ERROR).ShowModal() + wx.MessageDialog(None, _(u"An error has occurred. There are no dictionaries available for the selected language in {0}").format(application.name,), _(u"Error"), wx.ICON_ERROR).ShowModal() def finished(): - wx.MessageDialog(None, _(u"Spell check complete."), _(application.name), style=wx.OK).ShowModal() + wx.MessageDialog(None, _(u"Spell check complete."), application.name, style=wx.OK).ShowModal() diff --git a/src/extra/autocompletionUsers/wx_manage.py b/src/extra/autocompletionUsers/wx_manage.py index 5258f239..789d2419 100644 --- a/src/extra/autocompletionUsers/wx_manage.py +++ b/src/extra/autocompletionUsers/wx_manage.py @@ -8,7 +8,7 @@ class autocompletionManageDialog(widgetUtils.BaseDialog): super(autocompletionManageDialog, self).__init__(parent=None, id=-1, title=_(u"Manage Autocompletion database")) panel = wx.Panel(self) sizer = wx.BoxSizer(wx.VERTICAL) - label = wx.StaticText(panel, -1, _(u"Editing " + application.name + " users database")) + label = wx.StaticText(panel, -1, _(u"Editing {0} users database").format(application.name,)) self.users = widgets.list(panel, _(u"Username"), _(u"Name"), style=wx.LC_REPORT) sizer.Add(label, 0, wx.ALL, 5) sizer.Add(self.users.list, 0, wx.ALL, 5) diff --git a/src/extra/autocompletionUsers/wx_settings.py b/src/extra/autocompletionUsers/wx_settings.py index e32eaf63..068decf6 100644 --- a/src/extra/autocompletionUsers/wx_settings.py +++ b/src/extra/autocompletionUsers/wx_settings.py @@ -24,4 +24,4 @@ class autocompletionSettingsDialog(widgetUtils.BaseDialog): self.SetClientSize(sizer.CalcMin()) def show_success_dialog(): - wx.MessageDialog(None, _(uapplication.name+"'s database of users has been updated."), _(u"Done"), wx.OK).ShowModal() \ No newline at end of file + wx.MessageDialog(None, _(u"{0}'s database of users has been updated.").format(application.name,), _(u"Done"), wx.OK).ShowModal() \ No newline at end of file diff --git a/src/gtkUI/__init__.py b/src/gtkUI/__init__.py deleted file mode 100644 index 096e5554..00000000 --- a/src/gtkUI/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: utf-8 -*- -""" This is the GTK view module for TWBlue. -As of April 3 2015, there are the things that have been implemented: -* the main view (partially implemented) -* All buffers. -* Three of the most common message dialogs. -* Dialogs for tweet, reply, retweet, send a direct message and view a tweet. - -And we need to implement: -* All the other dialogs. -""" diff --git a/src/gtkUI/buffers/__init__.py b/src/gtkUI/buffers/__init__.py deleted file mode 100644 index f60ca1ce..00000000 --- a/src/gtkUI/buffers/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: utf-8 -*- -from base import basePanel -from dm import dmPanel -from events import eventsPanel -from favourites import favsPanel -from lists import listPanel -from panels import accountPanel, emptyPanel -from people import peoplePanel -from trends import trendsPanel -from tweet_searches import searchPanel -from user_searches import searchUsersPanel diff --git a/src/gtkUI/buffers/base.py b/src/gtkUI/buffers/base.py deleted file mode 100644 index ffeef2a0..00000000 --- a/src/gtkUI/buffers/base.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -import widgetUtils -from gi.repository import Gtk - -class basePanel(Gtk.VBox): - - def create_list(self): - self.list = widgetUtils.list(_(u"User"), _(u"Text"), _(u"Date"), _(u"Client")) - - def __init__(self, parent, name): - super(basePanel, self).__init__(spacing=6) - self.name = name - self.type = "baseBuffer" - self.create_list() - self.tweet = Gtk.Button(_(u"Tweet")) - self.retweet = Gtk.Button(_(u"Retweet")) - self.reply = Gtk.Button(_(u"Reply")) - self.dm = Gtk.Button(_(u"Direct message")) - btnSizer = Gtk.Box(spacing=6) - btnSizer.add(self.tweet) - btnSizer.add(self.retweet) - btnSizer.add(self.reply) - btnSizer.add(self.dm) - self.add(self.list.list) - self.add(btnSizer) - - def set_position(self, reversed=False): - if reversed == False: - self.list.select_item(self.list.get_count()-1) - else: - self.list.select_item(0) - - def set_focus_function(self, f): - tree_selection = self.list.list.get_selection() - tree_selection.connect("changed", f) diff --git a/src/gtkUI/buffers/dm.py b/src/gtkUI/buffers/dm.py deleted file mode 100644 index cfdbd18c..00000000 --- a/src/gtkUI/buffers/dm.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils -from base import basePanel - -class dmPanel(basePanel): - def __init__(self, parent, name): - """ Class to DM'S. Reply and retweet buttons are not showed and they have your delete method for dm's.""" - super(dmPanel, self).__init__(parent, name) - self.retweet.hide() - self.retweet.set_no_show_all(True) - self.reply.hide() - self.reply.set_no_show_all(True) - self.type = "dm" diff --git a/src/gtkUI/buffers/events.py b/src/gtkUI/buffers/events.py deleted file mode 100644 index 1b3a5af5..00000000 --- a/src/gtkUI/buffers/events.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -import widgetUtils -from gi.repository import Gtk - -class eventsPanel(Gtk.VBox): - """ Buffer to show events. Different than tweets or people.""" - - def __init__(self, parent, name): - self.type = "event" - super(eventsPanel, self).__init__(spacing=6) - self.name = name - self.list = widgetUtils.list(_(u"Date"), _(u"Event")) - self.add(self.list.list) - self.tweet = Gtk.Button(_(u"Tweet")) - self.delete_event = Gtk.Button(_(u"Remove event")) - btnBox = Gtk.Box(spacing=6) - btnBox.add(self.tweet) - btnBox.add(self.delete_event) - self.add(btnBox) - - def set_position(self, reversed=False): - if reversed == False: - self.list.select_item(self.list.get_count()-1) - else: - self.list.select_item(0) diff --git a/src/gtkUI/buffers/favourites.py b/src/gtkUI/buffers/favourites.py deleted file mode 100644 index 916f21a6..00000000 --- a/src/gtkUI/buffers/favourites.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -from base import basePanel - -class favsPanel(basePanel): - def __init__(self, parent, name): - super(favsPanel, self).__init__(parent, name) - self.type = "favourites_timeline" diff --git a/src/gtkUI/buffers/lists.py b/src/gtkUI/buffers/lists.py deleted file mode 100644 index ffb77981..00000000 --- a/src/gtkUI/buffers/lists.py +++ /dev/null @@ -1,9 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -from base import basePanel - -class listPanel(basePanel): - def __init__(self, parent, name): - super(listPanel, self).__init__(parent, name) - self.type = "list" - self.users = [] diff --git a/src/gtkUI/buffers/panels.py b/src/gtkUI/buffers/panels.py deleted file mode 100644 index dbfa9fe9..00000000 --- a/src/gtkUI/buffers/panels.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils - -class accountPanel(Gtk.VBox): - def __init__(self, parent, name=None): - super(accountPanel, self).__init__(spacing=5) - self.name = name - self.type = "account" - self.login = Gtk.Button(_(u"Login")) - self.add(self.login) - self.autostart_account = Gtk.ToggleButton(_(u"Log in automatically")) - self.add(self.autostart_account) - - def change_login(self, login=True): - if login == True: - self.login.set_label(_(u"Login")) - else: - self.login.set_label(_(u"Logout")) - - def change_autostart(self, autostart=True): - self.autostart_account.set_active(autostart) - - def get_autostart(self): - print "actived" - print self.autostart_account.get_active() - return self.autostart_account.get_active() - -class emptyPanel(Gtk.VBox): - def __init__(self, parent, name): - super(emptyPanel, self).__init__(spacing=6) - self.name = name - self.type = "account" - diff --git a/src/gtkUI/buffers/people.py b/src/gtkUI/buffers/people.py deleted file mode 100644 index 4bf620fc..00000000 --- a/src/gtkUI/buffers/people.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils -from base import basePanel - -class peoplePanel(basePanel): - """ Buffer used to show people.""" - - def create_list(self): - self.list = widgetUtils.list(_(u"User")) - - def __init__(self, parent, name): - super(peoplePanel, self).__init__(parent, name) - self.type = "people" - self.reply.set_label(_(u"Mention")) - self.retweet.hide() - self.retweet.set_no_show_all(True) diff --git a/src/gtkUI/buffers/trends.py b/src/gtkUI/buffers/trends.py deleted file mode 100644 index 1e4b24a2..00000000 --- a/src/gtkUI/buffers/trends.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils - -class trendsPanel(Gtk.VBox): - def create_list(self): - """ Returns the list for put the tweets here.""" - self.list = widgetUtils.list(_(u"Trending topic")) - - def __init__(self, parent, name): - super(trendsPanel, self).__init__(spacing=6) - self.type = "trends" - self.create_list() - self.tweet = Gtk.Button(_(u"Tweet")) - self.tweetTrendBtn = Gtk.Button(_(u"Tweet about this trend")) - btnSizer = Gtk.Box(spacing=3) - btnSizer.add(self.tweet) - btnSizer.add(self.tweetTrendBtn) - self.add(btnSizer) - self.Add(self.list.list) - - def set_position(self, reversed=False): - if reversed == False: - self.list.select_item(self.list.get_count()-1) - else: - self.list.select_item(0) diff --git a/src/gtkUI/buffers/tweet_searches.py b/src/gtkUI/buffers/tweet_searches.py deleted file mode 100644 index 330014da..00000000 --- a/src/gtkUI/buffers/tweet_searches.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -from base import basePanel - -class searchPanel(basePanel): - def __init__(self, parent, name): - super(searchPanel, self).__init__(parent, name) - self.type = "search" diff --git a/src/gtkUI/buffers/user_searches.py b/src/gtkUI/buffers/user_searches.py deleted file mode 100644 index 41b0ff9e..00000000 --- a/src/gtkUI/buffers/user_searches.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -from tweet_searches import searchPanel -import widgetUtils - -class searchUsersPanel(searchPanel): - def create_list(self): - """ Returns the list for put the tweets here.""" - self.list = widgetUtils.list(_(u"User")) - - def __init__(self, parent, name): - self.create_list() - super(searchUsersPanel, self).__init__(parent, name) - self.type = "user_searches" diff --git a/src/gtkUI/commonMessageDialogs.py b/src/gtkUI/commonMessageDialogs.py deleted file mode 100644 index ca072336..00000000 --- a/src/gtkUI/commonMessageDialogs.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import application -def retweet_as_link(parent): - dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, unicode(application.name)) - dialog.format_secondary_text(_(u"This retweet is over 140 characters. Would you like to post it as a mention to the poster with your comments and a link to the original tweet?")) - answer = dialog.run() - dialog.destroy() - return answer - -def retweet_question(parent): - dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, _(u"Retweet")) - dialog.format_secondary_text(_(u"Would you like to add a comment to this tweet?")) - answer = dialog.run() - dialog.destroy() - return answer - -def delete_tweet_dialog(parent): - dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, _(u"Delete")) - dialog.format_secondary_text(_(u"Do you really want to delete this message? It will be deleted from Twitter as well.")) - answer = dialog.run() - dialog.destroy() - return answer - -def exit_dialog(parent): - dialog = Gtk.MessageDialog(parent, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, _(u"Exit")) - dialog.format_secondary_text(_(u"Do you really want to close " + application.name + "?")) - answer = dialog.run() - dialog.destroy() - return answer - -def needs_restart(): - wx.MessageDialog(None, _(unicode(application.name+" must be restarted to save these changes. Press OK to restart now.")), _("Restart " + application.name), wx.OK).ShowModal() - -def delete_user_from_db(): - return wx.MessageDialog(None, _(u"Are you sure you want to delete this user from the database? This user will not appear on the autocomplete results anymore."), _(u"Confirm"), wx.YES_NO|wx.ICON_QUESTION).ShowModal() - -def get_ignored_client(): - entry = wx.TextEntryDialog(None, _(u"Enter the name of the client here"), _(u"Add a new ignored client")) - if entry.ShowModal() == wx.ID_OK: - return entry.GetValue() - return None - -def clear_list(): - dlg = wx.MessageDialog(None, _(u"Do you really want to empty this buffer? It's items will be removed from the list but not from Twitter"), _(u"Empty buffer"), wx.ICON_QUESTION|wx.YES_NO) - return dlg.ShowModal() - -def remove_buffer(): - return wx.MessageDialog(None, _(u"Do you really want to delete this timeline?"), _(u"Attention"), style=wx.ICON_QUESTION|wx.YES_NO).ShowModal() - -def user_not_exist(): - return wx.MessageDialog(None, _(u"The user does not exist"), _(u"Error"), wx.ICON_ERROR).ShowModal() - -def timeline_exist(): - return wx.MessageDialog(None, _(u"There's currently a timeline for this user. You are not able to open another"), _(u"Existing timeline"), wx.ICON_ERROR).ShowModal() - -def no_tweets(): - return wx.MessageDialog(None, _(u"This user has no tweets. You can't open a timeline for this user"), _(u"Error!"), wx.ICON_ERROR).ShowModal() - -def protected_user(): - return wx.MessageDialog(None, _(u"This is a protected Twitter user. It means you can not open a timeline using the Streaming API. The user's tweets will not update due to a twitter policy. Do you want to continue?"), _(u"Warning"), wx.ICON_WARNING|wx.YES_NO).ShowModal() - -def no_following(): - return wx.MessageDialog(None, _(u"This is a protected user account, you need follow to this user for viewing your tweets or favourites."), _(u"Error"), wx.ICON_ERROR).ShowModal() diff --git a/src/gtkUI/dialogs/__init__.py b/src/gtkUI/dialogs/__init__.py deleted file mode 100644 index d8e11f66..00000000 --- a/src/gtkUI/dialogs/__init__.py +++ /dev/null @@ -1 +0,0 @@ -#import trends, configuration, lists, message, search, show_user, update_profile, urlList, userSelection, utils diff --git a/src/gtkUI/dialogs/configuration.py b/src/gtkUI/dialogs/configuration.py deleted file mode 100644 index 6bc610bd..00000000 --- a/src/gtkUI/dialogs/configuration.py +++ /dev/null @@ -1,228 +0,0 @@ -# -*- coding: utf-8 -*- -import baseDialog -import wx -import logging as original_logger -import application -class general(wx.Panel, baseDialog.BaseWXDialog): - def __init__(self, parent, languages): - super(general, self).__init__(parent) - sizer = wx.BoxSizer(wx.VERTICAL) - language = wx.StaticText(self, -1, _(u"Language")) - self.language = wx.ListBox(self, -1, choices=languages) - self.language.SetSize(self.language.GetBestSize()) - langBox = wx.BoxSizer(wx.HORIZONTAL) - langBox.Add(language, 0, wx.ALL, 5) - langBox.Add(self.language, 0, wx.ALL, 5) - sizer.Add(langBox, 0, wx.ALL, 5) - self.ask_at_exit = wx.CheckBox(self, -1, _(U"ask before exiting " + application.name)) - sizer.Add(self.ask_at_exit, 0, wx.ALL, 5) - self.use_invisible_shorcuts = wx.CheckBox(self, -1, _(u"Use invisible interface's keyboard shortcuts while GUI is visible")) - sizer.Add(self.use_invisible_shorcuts, 0, wx.ALL, 5) - self.disable_sapi5 = wx.CheckBox(self, -1, _(u"Activate Sapi5 when any other screen reader is not being run")) - sizer.Add(self.disable_sapi5, 0, wx.ALL, 5) - self.hide_gui = wx.CheckBox(self, -1, _(u"Hide GUI on launch")) - sizer.Add(self.hide_gui, 0, wx.ALL, 5) - self.SetSizer(sizer) - -class generalAccount(wx.Panel, baseDialog.BaseWXDialog): - def __init__(self, parent): - super(generalAccount, self).__init__(parent) - sizer = wx.BoxSizer(wx.VERTICAL) - self.au = wx.Button(self, wx.NewId(), _(u"Set the autocomplete function")) - sizer.Add(self.au, 0, wx.ALL, 5) - self.relative_time = wx.CheckBox(self, wx.NewId(), _(U"Relative times")) - sizer.Add(self.relative_time, 0, wx.ALL, 5) - apiCallsBox = wx.BoxSizer(wx.HORIZONTAL) - apiCallsBox.Add(wx.StaticText(self, -1, _(u"API calls when the stream is started (One API call equals to 200 tweetts, two API calls equals 400 tweets, etc):")), 0, wx.ALL, 5) - self.apiCalls = wx.SpinCtrl(self, wx.NewId()) - self.apiCalls.SetRange(1, 10) - self.apiCalls.SetSize(self.apiCalls.GetBestSize()) - apiCallsBox.Add(self.apiCalls, 0, wx.ALL, 5) - sizer.Add(apiCallsBox, 0, wx.ALL, 5) - tweetsPerCallBox = wx.BoxSizer(wx.HORIZONTAL) - tweetsPerCallBox.Add(wx.StaticText(self, -1, _(u"Items on each API call")), 0, wx.ALL, 5) - self.itemsPerApiCall = wx.SpinCtrl(self, wx.NewId()) - self.itemsPerApiCall.SetRange(0, 200) - self.itemsPerApiCall.SetSize(self.itemsPerApiCall.GetBestSize()) - tweetsPerCallBox.Add(self.itemsPerApiCall, 0, wx.ALL, 5) - sizer.Add(tweetsPerCallBox, 0, wx.ALL, 5) - self.reverse_timelines = wx.CheckBox(self, wx.NewId(), _(u"Inverted buffers: The newest tweets will be shown at the beginning of the lists while the oldest at the end")) - sizer.Add(self.reverse_timelines, 0, wx.ALL, 5) - self.SetSizer(sizer) - -class other_buffers(wx.Panel): - def __init__(self, parent): - super(other_buffers, self).__init__(parent) - sizer = wx.BoxSizer(wx.VERTICAL) - self.SetSizer(sizer) - -class ignoredClients(wx.Panel): - def __init__(self, parent, choices): - super(ignoredClients, self).__init__(parent=parent) - sizer = wx.BoxSizer(wx.VERTICAL) - label = wx.StaticText(self, -1, _(u"Ignored clients")) - self.clients = wx.ListBox(self, -1, choices=choices) - self.clients.SetSize(self.clients.GetBestSize()) - clientsBox = wx.BoxSizer(wx.HORIZONTAL) - clientsBox.Add(label, 0, wx.ALL, 5) - clientsBox.Add(self.clients, 0, wx.ALL, 5) - self.add = wx.Button(self, -1, _(u"Add client")) - self.remove = wx.Button(self, -1, _(u"Remove client")) - btnBox = wx.BoxSizer(wx.HORIZONTAL) - btnBox.Add(self.add, 0, wx.ALL, 5) - btnBox.Add(self.remove, 0, wx.ALL, 5) - sizer.Add(clientsBox, 0, wx.ALL, 5) - sizer.Add(btnBox, 0, wx.ALL, 5) - self.SetSizer(sizer) - - def append(self, client): - self.clients.Append(client) - - def get_clients(self): - return self.clients.GetCount() - - def get_client_id(self): - return self.clients.GetSelection() - - def remove_(self, id): - self.clients.Delete(id) - -class sound(wx.Panel): - def __init__(self, parent, input_devices, output_devices, soundpacks): - wx.Panel.__init__(self, parent) - sizer = wx.BoxSizer(wx.VERTICAL) - volume = wx.StaticText(self, -1, _(u"Volume")) - self.volumeCtrl = wx.Slider(self) - self.volumeCtrl.SetRange(0, 100) - self.volumeCtrl.SetSize(self.volumeCtrl.GetBestSize()) - volumeBox = wx.BoxSizer(wx.HORIZONTAL) - volumeBox.Add(volume, 0, wx.ALL, 5) - volumeBox.Add(self.volumeCtrl, 0, wx.ALL, 5) - sizer.Add(volumeBox, 0, wx.ALL, 5) - self.session_mute = wx.CheckBox(self, -1, _(u"Session mute")) - sizer.Add(self.session_mute, 0, wx.ALL, 5) - output_label = wx.StaticText(self, -1, _(u"Output device")) - self.output = wx.ComboBox(self, -1, choices=output_devices, style=wx.CB_READONLY) - self.output.SetSize(self.output.GetBestSize()) - outputBox = wx.BoxSizer(wx.HORIZONTAL) - outputBox.Add(output_label, 0, wx.ALL, 5) - outputBox.Add(self.output, 0, wx.ALL, 5) - sizer.Add(outputBox, 0, wx.ALL, 5) - input_label = wx.StaticText(self, -1, _(u"Input device")) - self.input = wx.ComboBox(self, -1, choices=input_devices, style=wx.CB_READONLY) - self.input.SetSize(self.input.GetBestSize()) - inputBox = wx.BoxSizer(wx.HORIZONTAL) - inputBox.Add(input_label, 0, wx.ALL, 5) - inputBox.Add(self.input, 0, wx.ALL, 5) - sizer.Add(inputBox, 0, wx.ALL, 5) - soundBox = wx.BoxSizer(wx.VERTICAL) - soundpack_label = wx.StaticText(self, -1, _(u"Sound pack")) - self.soundpack = wx.ComboBox(self, -1, choices=soundpacks, style=wx.CB_READONLY) - self.soundpack.SetSize(self.soundpack.GetBestSize()) - soundBox.Add(soundpack_label, 0, wx.ALL, 5) - soundBox.Add(self.soundpack, 0, wx.ALL, 5) - sizer.Add(soundBox, 0, wx.ALL, 5) - self.SetSizer(sizer) - - def get(self, control): - return getattr(self, control).GetStringSelection() - -class audioServicesPanel(wx.Panel): - def __init__(self, parent): - super(audioServicesPanel, self).__init__(parent) - mainSizer = wx.BoxSizer(wx.VERTICAL) - apiKeyLabel = wx.StaticText(self, -1, _(u"If you've got a SndUp account, enter your API Key here. Whether the API Key is wrong, the App will fail to upload anything to the server. Whether there's no API Key here, then the audio files will be uploaded anonimously")) - self.apiKey = wx.TextCtrl(self, -1) - dc = wx.WindowDC(self.apiKey) - dc.SetFont(self.apiKey.GetFont()) - self.apiKey.SetSize(dc.GetTextExtent("0"*100)) - apiKeyBox = wx.BoxSizer(wx.HORIZONTAL) - apiKeyBox.Add(apiKeyLabel, 0, wx.ALL, 5) - apiKeyBox.Add(self.apiKey, 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) - - 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 authorisation. Try again later."), _(u"Error!"), wx.ICON_ERROR).ShowModal() - - def get_dropbox(self): - return self.dropbox.GetLabel() - -class configurationDialog(baseDialog.BaseWXDialog): - - def set_title(self, title): - self.SetTitle(title) - - def __init__(self): - super(configurationDialog, self).__init__(None, -1) - self.panel = wx.Panel(self) - self.SetTitle(_(u"TW Blue preferences")) - self.sizer = wx.BoxSizer(wx.VERTICAL) - self.notebook = wx.Notebook(self.panel) - - def create_general(self, languageList): - self.general = general(self.notebook, languageList) - self.notebook.AddPage(self.general, _(u"General")) - self.general.SetFocus() - - def create_general_account(self): - self.general = generalAccount(self.notebook) - self.notebook.AddPage(self.general, _(u"General")) - self.general.SetFocus() - - def create_other_buffers(self): - self.buffers = other_buffers(self.notebook) - self.notebook.AddPage(self.buffers, _(u"Show other buffers")) - - def create_ignored_clients(self, ignored_clients_list): - self.ignored_clients = ignoredClients(self.notebook, ignored_clients_list) - self.notebook.AddPage(self.ignored_clients, _(u"Ignored clients")) - - def create_sound(self, output_devices, input_devices, soundpacks): - self.sound = sound(self.notebook, output_devices, input_devices, soundpacks) - self.notebook.AddPage(self.sound, _(u"Sound")) - def create_audio_services(self): - self.services = audioServicesPanel(self.notebook) - self.notebook.AddPage(self.services, _(u"Audio Services")) - - def realize(self): - self.sizer.Add(self.notebook, 0, wx.ALL, 5) - ok_cancel_box = wx.BoxSizer(wx.HORIZONTAL) - ok = wx.Button(self.panel, wx.ID_OK, _(u"Save")) - ok.SetDefault() - cancel = wx.Button(self.panel, wx.ID_CANCEL, _(u"Close")) - self.SetEscapeId(cancel.GetId()) - ok_cancel_box.Add(ok, 0, wx.ALL, 5) - ok_cancel_box.Add(cancel, 0, wx.ALL, 5) - self.sizer.Add(ok_cancel_box, 0, wx.ALL, 5) - self.panel.SetSizer(self.sizer) - self.SetClientSize(self.sizer.CalcMin()) - - def get_value(self, panel, key): - p = getattr(self, panel) - return getattr(p, key).GetValue() - - def set_value(self, panel, key, value): - p = getattr(self, panel) - control = getattr(p, key) - getattr(control, "SetValue")(value) - diff --git a/src/gtkUI/dialogs/lists.py b/src/gtkUI/dialogs/lists.py deleted file mode 100644 index 95e8b7fe..00000000 --- a/src/gtkUI/dialogs/lists.py +++ /dev/null @@ -1,123 +0,0 @@ -# -*- coding: utf-8 -*- -import wx -from multiplatform_widgets import widgets - -class listViewer(wx.Dialog): - - def __init__(self, *args, **kwargs): - super(listViewer, self).__init__(parent=None, *args, **kwargs) - self.SetTitle(_(u"Lists manager")) - panel = wx.Panel(self) - label = wx.StaticText(panel, -1, _(u"Lists")) - self.lista = widgets.list(panel, _(u"List"), _(u"Description"), _(u"Owner"), _(u"Members"), _(u"mode"), size=(800, 800), style=wx.LC_REPORT|wx.LC_SINGLE_SEL) - self.lista.list.SetFocus() - sizer = wx.BoxSizer(wx.VERTICAL) - sizer.Add(label) - sizer.Add(self.lista.list) - self.createBtn = wx.Button(panel, wx.NewId(), _(u"Create a new list")) - self.editBtn = wx.Button(panel, -1, _(u"Edit")) - self.deleteBtn = wx.Button(panel, -1, _(u"Remove")) - self.view = wx.Button(panel, -1, _(u"Open in buffer")) -# self.members = wx.Button(panel, -1, _(u"View members")) -# self.members.Disable() -# self.subscriptors = wx.Button(panel, -1, _(u"View subscribers")) -# self.subscriptors.Disable() -# self.get_linkBtn = wx.Button(panel, -1, _(u"Get link for the list")) -# self.get_linkBtn.Bind(wx.EVT_BUTTON, self.onGetLink) - self.cancelBtn = wx.Button(panel, wx.ID_CANCEL) - btnSizer = wx.BoxSizer() - btnSizer.Add(self.createBtn) - btnSizer.Add(self.editBtn) - btnSizer.Add(self.cancelBtn) - panel.SetSizer(sizer) - - def populate_list(self, lists): - for item in lists: - self.lista.insert_item(False, *item) - - def get_item(self): - return self.lista.get_selected() - -class userListViewer(listViewer): - def __init__(self, username, *args, **kwargs): - self.username = username - super(userListViewer, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Viewing lists for %s") % (self.username)) - self.createBtn.SetLabel(_(u"Subscribe")) - self.deleteBtn.SetLabel(_(u"Unsubscribe")) - self.editBtn.Disable() - self.view.Disable() - -class createListDialog(wx.Dialog): - - def __init__(self, *args, **kwargs): - super(createListDialog, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Create a new list")) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - name = wx.StaticText(panel, -1, _(u"Name (20 characters maximun)")) - self.name = wx.TextCtrl(panel, -1) - nameSizer = wx.BoxSizer(wx.HORIZONTAL) - nameSizer.Add(name) - nameSizer.Add(self.name) - description = wx.StaticText(panel, -1, _(u"Description")) - self.description = wx.TextCtrl(panel, -1) - descriptionSizer = wx.BoxSizer(wx.HORIZONTAL) - descriptionSizer.Add(description) - descriptionSizer.Add(self.description) - mode = wx.StaticText(panel, -1, _(u"Mode")) - self.public = wx.RadioButton(panel, -1, _(u"Public"), style=wx.RB_GROUP) - self.private = wx.RadioButton(panel, -1, _(u"Private")) - modeBox = wx.BoxSizer(wx.HORIZONTAL) - modeBox.Add(mode) - modeBox.Add(self.public) - modeBox.Add(self.private) - ok = wx.Button(panel, wx.ID_OK) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL) - btnBox = wx.BoxSizer(wx.HORIZONTAL) - btnBox.Add(ok) - btnBox.Add(cancel) - sizer.Add(nameSizer) - sizer.Add(descriptionSizer) - sizer.Add(modeBox) - sizer.Add(btnBox) - - def get(self, field): - return getattr(self, field).GetValue() - -class editListDialog(createListDialog): - - def __init__(self, list, *args, **kwargs): - super(editListDialog, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Editing the list %s") % (list["name"])) - self.name.ChangeValue(list["name"]) - self.description.ChangeValue(list["description"]) - if list["mode"] == "public": - self.public.SetValue(True) - else: - self.private.SetValue(True) - -class addUserListDialog(listViewer): - def __init__(self, *args, **kwargs): - super(addUserListDialog, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Select a list to add the user")) - self.createBtn.SetLabel(_(u"Add")) - self.createBtn.SetDefault() - self.editBtn.Disable() - self.view.Disable() -# self.subscriptors.Disable() -# self.members.Disable() - self.deleteBtn.Disable() - -class removeUserListDialog(listViewer): - def __init__(self, *args, **kwargs): - super(removeUserListDialog, self).__init__(*args, **kwargs) - self.SetTitle(_(u"Select a list to remove the user")) - self.createBtn.SetLabel(_(u"Remove")) - self.createBtn.SetDefault() - self.editBtn.Disable() - self.view.Disable() -# self.subscriptors.Disable() -# self.members.Disable() - self.deleteBtn.Disable() \ No newline at end of file diff --git a/src/gtkUI/dialogs/message.py b/src/gtkUI/dialogs/message.py deleted file mode 100644 index 5ed9f797..00000000 --- a/src/gtkUI/dialogs/message.py +++ /dev/null @@ -1,275 +0,0 @@ -# -*- coding: utf-8 -*- -from gi.repository import Gtk -import widgetUtils - -class textLimited(widgetUtils.baseDialog): - def __init__(self, *args, **kwargs): - super(textLimited, self).__init__(buttons=(Gtk.STOCK_OK, widgetUtils.OK, Gtk.STOCK_CANCEL, widgetUtils.CANCEL), *args, **kwargs) - - def createTextArea(self, message="", text=""): - self.label = Gtk.Label(message) - self.set_title(message, titleWindow=True) - self.text = Gtk.Entry() - self.text.set_max_length(140) - self.text.set_text(text) - self.text.set_placeholder_text(message) - self.set_title(str(len(text))) - self.textBox = Gtk.Box(spacing=10) - self.textBox.add(self.label) - self.textBox.add(self.text) - - def get(self, control): - if control == "upload_image": - return self.upload_image.get_label() - elif control == "cb": - return self.cb.get_active_text() - - def set(self, control, val): - if control == "upload_image": - self.upload_image.set_label(val) - elif control == "cb": - self.cb.set_active_text(val) - - def text_focus(self): - self.text.grab_focus() - - def get_text(self): - return self.text.get_text() - - def set_text(self, text): - self.text.set_text(text) - - def set_title(self, new_title, titleWindow=False): - if titleWindow == False: - self.text.set_placeholder_text(new_title) - else: - super(textLimited, self).set_title(new_title) -# self.set_title(new_title) - - def enable_button(self, buttonName): - if getattr(self, buttonName): - return getattr(self, buttonName).show() - - def disable_button(self, buttonName): - if getattr(self, buttonName): - return getattr(self, buttonName).hide() - - def set_cursor_at_end(self): - self.text.set_position(-1) - - def set_cursor_at_position(self, position): - self.text.set_position() - - def get_position(self): - return self.text.get_position() - -class tweet(textLimited): - def createControls(self, title, message, text): - self.createTextArea(message, text) - self.box.add(self.textBox) - self.upload_image = Gtk.Button(_(u"Upload image...")) - self.spellcheck = Gtk.Button(_("Check spelling...")) - self.attach = Gtk.Button(_(u"Attach audio...")) - self.shortenButton = Gtk.Button(_(u"Shorten URL")) - self.unshortenButton = Gtk.Button(_(u"Expand URL")) - self.shortenButton.hide() - self.shortenButton.set_no_show_all(True) - self.unshortenButton.hide() - self.unshortenButton.set_no_show_all(True) - self.translateButton = Gtk.Button(_(u"Translate...")) - self.autocompletionButton = Gtk.Button(_(u"&Autocomplete users")) - self.buttonsBox1 = Gtk.Box(spacing=6) - self.buttonsBox1.add(self.upload_image) - self.buttonsBox1.add(self.spellcheck) - self.buttonsBox1.add(self.attach) - self.box.add(self.buttonsBox1) - self.buttonsBox2 = Gtk.Box(spacing=6) - self.buttonsBox2.add(self.shortenButton) - self.buttonsBox2.add(self.unshortenButton) - self.buttonsBox2.add(self.translateButton) - self.box.add(self.buttonsBox2) - - def __init__(self, title, message, text): - super(tweet, self).__init__() - self.createControls(message, title, text) - self.show_all() - - def get_image(self): - dialog = Gtk.FileChooserDialog(_(u"Select the picture to be uploaded"), self, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) - filter_jpg = Gtk.FileFilter() - filter_jpg.set_name(_(u"JPG images")) - filter_jpg.add_mime_type("image/jpeg") - dialog.add_filter(filter_jpg) - filter_gif = Gtk.FileFilter() - filter_gif.set_name(_(u"GIF images")) - filter_gif.add_mime_type("image/gif") - dialog.add_filter(filter_gif) - filter_png = Gtk.FileFilter() - filter_png.set_name(_(u"PNG Images")) - filter_png.add_mime_type("image/png") - dialog.add_filter(filter_png) - answer = dialog.run() - if answer == widgetUtils.OK: - image = dialog.get_filename() - dialog.destroy() - return open(image, "rb") - else: - dialog.destroy() - return None - -class dm(textLimited): - def createControls(self, title, message, users): - label = Gtk.Label(_(u"Recipient")) - self.cb = Gtk.ComboBoxText.new_with_entry() - self.cb.set_entry_text_column(0) - for user in users: - self.cb.append_text(user) - self.cb.get_child().set_placeholder_text(_(u"Recipient")) - self.cb.get_child().set_text(users[0]) - self.autocompletionButton = Gtk.Button(_(u"&Autocomplete users")) - self.createTextArea(message, text="") - userBox = Gtk.Box(spacing=8) - userBox.add(label) - userBox.add(self.cb) - userBox.add(self.autocompletionButton) - self.box.add(userBox) -# self.mainBox.Add(self.cb, 0, wx.ALL, 5) - self.box.add(self.textBox) - self.spellcheck = Gtk.Button(_("Spelling correction")) - self.attach = Gtk.Button(_(u"Attach audio")) - self.shortenButton = Gtk.Button(_(u"Shorten URL")) - self.unshortenButton = Gtk.Button(_(u"Expand URL")) - self.shortenButton.hide() - self.shortenButton.set_no_show_all(True) - self.unshortenButton.hide() - self.unshortenButton.set_no_show_all(True) - self.translateButton = Gtk.Button(_(u"Translate message")) - self.buttonsBox = Gtk.Box(spacing=6) - self.buttonsBox.add(self.spellcheck) - self.buttonsBox.add(self.attach) - self.box.add(self.buttonsBox) - self.buttonsBox1 = Gtk.Box(spacing=6) - self.buttonsBox1.add(self.shortenButton) - self.buttonsBox1.add(self.unshortenButton) - self.buttonsBox1.add(self.translateButton) - self.box.add(self.buttonsBox1) - self.text.grab_focus() - - def __init__(self, title, message, users): - super(dm, self).__init__() - self.createControls(message, title, users) -# self.onTimer(wx.EVT_CHAR_HOOK) - self.show_all() - - def get_user(self): - return self.cb.get_text() - - def set_user(self, user): - return self.cb.set_value() - -class reply(tweet): - def __init__(self, title, message, text): - super(reply, self).__init__(message, title, text) - self.text.set_position(-1) - self.mentionAll = Gtk.Button(_(u"Men&tion to all")) - self.mentionAll.set_no_show_all(True) - self.mentionAll.hide() - self.buttonsBox1.add(self.mentionAll) - -class viewTweet(widgetUtils.baseDialog): - def set_title(self, lenght): - pass - self.set_title(_(u"Tweet - %i characters ") % (lenght,)) - - def __init__(self, text, rt_count, favs_count): - super(viewTweet, self).__init__(buttons=(Gtk.STOCK_OK, widgetUtils.OK, Gtk.STOCK_CANCEL, widgetUtils.CANCEL)) - label = Gtk.Label(_(u"Tweet")) - self.text = Gtk.TextView() - self.textBuffer = self.text.get_buffer() - self.textBuffer.set_text(text) - self.text.set_editable(False) -# self.textBuffer.set_placeholder_text(message) - textBox = Gtk.Box(spacing=6) - textBox.add(label) - textBox.add(self.text) - self.box.add(textBox) - rtCountLabel = Gtk.Label(_(u"Retweets: ")) - rtCount = Gtk.Entry() - rtCount.set_text(rt_count) - rtCount.set_editable(False) - rtBox = Gtk.Box(spacing=2) - rtBox.add(rtCountLabel) - rtBox.add(rtCount) - favsCountLabel = Gtk.Label(_(u"Favourites: ")) - favsCount = Gtk.Entry() - favsCount.set_text(favs_count) - favsCount.set_editable(False) - favsBox = Gtk.Box(spacing=2) - favsBox.add(favsCountLabel) - favsBox.add(favsCount) - infoBox = Gtk.Box(spacing=4) - infoBox.add(rtBox) - infoBox.add(favsBox) - self.box.add(infoBox) - self.spellcheck = Gtk.Button(_("Spelling correction")) - self.unshortenButton = Gtk.Button(_(u"Expand URL")) - self.unshortenButton.hide() - self.unshortenButton.set_no_show_all(True) - self.translateButton = Gtk.Button(_(u"Translate message")) - buttonsBox = Gtk.Box(spacing=6) - buttonsBox.add(self.spellcheck) - buttonsBox.add(self.unshortenButton) - buttonsBox.add(self.translateButton) - self.box.add(buttonsBox) - self.show_all() - - def set_text(self, text): - self.textBuffer.set_text(text) - - def get_text(self): - return self.textBuffer.get_text(self.textBuffer.get_start_iter(), self.textBuffer.get_end_iter(), False) - - def text_focus(self): - self.text.grab_focus() - - def enable_button(self, buttonName): - if getattr(self, buttonName): - return getattr(self, buttonName).show() - -class viewNonTweet(widgetUtils.baseDialog): - - def __init__(self, text): - super(viewNonTweet, self).__init__(buttons=(Gtk.STOCK_OK, widgetUtils.OK, Gtk.STOCK_CANCEL, widgetUtils.CANCEL)) - self.set_title(_(u"View")) - label = Gtk.Label(_(u"Item")) - self.text = Gtk.TextView() - self.text.set_editable(False) - self.text.get_buffer().set_text(text) - textBox = Gtk.Box(spacing=5) - textBox.add(label) - textBox.add(self.text) - self.box.Add(textBox) - self.spellcheck = Gtk.Button(_("Spelling correction")) - self.unshortenButton = Gtk.Button(_(u"Expand URL")) - self.unshortenButton.hide() - self.unshortenButton.set_no_show_all(True) - self.translateButton = Gtk.Button(_(u"Translate message")) - buttonsBox = Gtk.Box(spacing=6) - buttonsBox.add(self.spellcheck) - buttonsBox.add(self.unshortenButton) - buttonsBox.add(self.translateButton) - self.box.Add(buttonsBox) - self.show_all() - - def set_text(self, text): - self.text.get_buffer().set_text() - - def get_text(self): - return self.text.get_buffer().get_text() - - def text_focus(self): - self.text.grab_focus() - - def enable_button(self, buttonName): - if getattr(self, buttonName): - return getattr(self, buttonName).show() diff --git a/src/gtkUI/dialogs/search.py b/src/gtkUI/dialogs/search.py deleted file mode 100644 index 81b54272..00000000 --- a/src/gtkUI/dialogs/search.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -import baseDialog -import wx - -class searchDialog(baseDialog.BaseWXDialog): - def __init__(self, value=""): - super(searchDialog, self).__init__(None, -1) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - self.SetTitle(_(u"Search on Twitter")) - label = wx.StaticText(panel, -1, _(u"Search")) - self.term = wx.TextCtrl(panel, -1, value) - dc = wx.WindowDC(self.term) - dc.SetFont(self.term.GetFont()) - self.term.SetSize(dc.GetTextExtent("0"*40)) - sizer.Add(label, 0, wx.ALL, 5) - sizer.Add(self.term, 0, wx.ALL, 5) - self.tweets = wx.RadioButton(panel, -1, _(u"Tweets"), style=wx.RB_GROUP) - self.users = wx.RadioButton(panel, -1, _(u"Users")) - radioSizer = wx.BoxSizer(wx.HORIZONTAL) - radioSizer.Add(self.tweets, 0, wx.ALL, 5) - radioSizer.Add(self.users, 0, wx.ALL, 5) - sizer.Add(radioSizer, 0, wx.ALL, 5) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok, 0, wx.ALL, 5) - btnsizer.Add(cancel, 0, wx.ALL, 5) - sizer.Add(btnsizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) \ No newline at end of file diff --git a/src/gtkUI/dialogs/show_user.py b/src/gtkUI/dialogs/show_user.py deleted file mode 100644 index ecc601a2..00000000 --- a/src/gtkUI/dialogs/show_user.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -import wx -import baseDialog - -class showUserProfile(baseDialog.BaseWXDialog): - def __init__(self): - super(showUserProfile, self).__init__(parent=None, id=wx.NewId()) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - static = wx.StaticText(panel, -1, _(u"Details")) - sizer.Add(static, 0, wx.ALL, 5) - self.text = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE|wx.TE_READONLY, size=(350, 250)) - self.text.SetFocus() - sizer.Add(self.text, 0, wx.ALL|wx.EXPAND, 5) - self.url = wx.Button(panel, -1, _(u"Go to URL"), size=wx.DefaultSize) - self.url.Disable() - close = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnSizer = wx.BoxSizer(wx.HORIZONTAL) - btnSizer.Add(self.url, 0, wx.ALL, 5) - btnSizer.Add(close, 0, wx.ALL, 5) - sizer.Add(btnSizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def enable_url(self, enabled=True): - self.url.Enable(enabled) \ No newline at end of file diff --git a/src/gtkUI/dialogs/trends.py b/src/gtkUI/dialogs/trends.py deleted file mode 100644 index 76275ec9..00000000 --- a/src/gtkUI/dialogs/trends.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -import baseDialog -import wx - -class trendingTopicsDialog(baseDialog.BaseWXDialog): - def __init__(self): - super(trendingTopicsDialog, self).__init__(None, -1) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - self.SetTitle(_(u"View trending topics")) - label = wx.StaticText(panel, -1, _(u"Trending topics by")) - sizer.Add(label, 0, wx.ALL, 5) - self.country = wx.RadioButton(panel, -1, _(u"Country"), style=wx.RB_GROUP) - self.city = wx.RadioButton(panel, -1, _(u"City")) - radioSizer = wx.BoxSizer(wx.HORIZONTAL) - radioSizer.Add(label, 0, wx.ALL, 5) - radioSizer.Add(self.country, 0, wx.ALL, 5) - radioSizer.Add(self.city, 0, wx.ALL, 5) - sizer.Add(radioSizer, 0, wx.ALL, 5) - label = wx.StaticText(panel, -1, _(u"Location")) - self.location = wx.ListBox(panel, -1, choices=[], style=wx.CB_READONLY) - locationBox = wx.BoxSizer(wx.HORIZONTAL) - locationBox.Add(label, 0, wx.ALL, 5) - locationBox.Add(self.location, 0, wx.ALL, 5) - sizer.Add(locationBox, 0, wx.ALL, 5) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok, 0, wx.ALL, 5) - btnsizer.Add(cancel, 0, wx.ALL, 5) - sizer.Add(btnsizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def get_active(self): - if self.country.GetValue() == True: - return "country" - else: - return "city" - - def get_item(self): - return self.location.GetStringSelection() - - def set(self, values): - self.location.Set(values) \ No newline at end of file diff --git a/src/gtkUI/dialogs/update_profile.py b/src/gtkUI/dialogs/update_profile.py deleted file mode 100644 index 027a2e74..00000000 --- a/src/gtkUI/dialogs/update_profile.py +++ /dev/null @@ -1,98 +0,0 @@ -# -*- coding: utf-8 -*- -import wx -import baseDialog - -class updateProfileDialog(baseDialog.BaseWXDialog): - def __init__(self): - super(updateProfileDialog, self).__init__(parent=None, id=-1) - self.SetTitle(_(u"Update your profile")) - panel = wx.Panel(self) - labelName = wx.StaticText(panel, -1, _(u"Name (20 characters maximum)")) - self.name = wx.TextCtrl(panel, -1) - self.name.SetFocus() - dc = wx.WindowDC(self.name) - dc.SetFont(self.name.GetFont()) - self.name.SetSize(dc.GetTextExtent("0"*20)) - labelLocation = wx.StaticText(panel, -1, _(u"Location")) - self.location = wx.TextCtrl(panel, -1) - dc = wx.WindowDC(self.location) - dc.SetFont(self.location.GetFont()) - self.location.SetSize(dc.GetTextExtent("0"*35)) - labelUrl = wx.StaticText(panel, -1, _(u"Website")) - self.url = wx.TextCtrl(panel, -1) - dc = wx.WindowDC(self.url) - dc.SetFont(self.url.GetFont()) - self.url.SetSize(dc.GetTextExtent("0"*22)) - labelDescription = wx.StaticText(panel, -1, _(u"Bio (160 characters maximum)")) - self.description = wx.TextCtrl(panel, -1, size=(400, 400)) - dc = wx.WindowDC(self.description) - dc.SetFont(self.description.GetFont()) - self.description.SetSize(dc.GetTextExtent("0"*160)) - self.image = None - self.upload_image = wx.Button(panel, -1, _(u"Upload a picture")) - self.ok = wx.Button(panel, wx.ID_OK, _(u"Update profile")) - self.ok.SetDefault() - close = wx.Button(panel, wx.ID_CANCEL, _("Close")) - sizer = wx.BoxSizer(wx.VERTICAL) - nameBox = wx.BoxSizer(wx.HORIZONTAL) - nameBox.Add(labelName, 0, wx.ALL, 5) - nameBox.Add(self.name, 0, wx.ALL, 5) - sizer.Add(nameBox, 0, wx.ALL, 5) - locationBox = wx.BoxSizer(wx.HORIZONTAL) - locationBox.Add(labelLocation, 0, wx.ALL, 5) - locationBox.Add(self.location, 0, wx.ALL, 5) - sizer.Add(locationBox, 0, wx.ALL, 5) - urlBox = wx.BoxSizer(wx.HORIZONTAL) - urlBox.Add(labelUrl, 0, wx.ALL, 5) - urlBox.Add(self.url, 0, wx.ALL, 5) - sizer.Add(urlBox, 0, wx.ALL, 5) - descriptionBox = wx.BoxSizer(wx.HORIZONTAL) - descriptionBox.Add(labelDescription, 0, wx.ALL, 5) - descriptionBox.Add(self.description, 0, wx.ALL, 5) - sizer.Add(descriptionBox, 0, wx.ALL, 5) - sizer.Add(self.upload_image, 5, wx.CENTER, 5) - btnBox = wx.BoxSizer(wx.HORIZONTAL) - btnBox.Add(self.ok, 0, wx.ALL, 5) - btnBox.Add(close, 0, wx.ALL, 5) - sizer.Add(btnBox, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def set_name(self, name): - self.set("name", name) - - def set_description(self, description): - self.set("description", description) - - def set_location(self, location): - self.set("location", location) - - def set_url(self, url): - self.set("url", url) - - def change_upload_button(self, uploaded=False): - if uploaded == False: - self.upload_image.SetLabel(_(u"Upload a picture")) - else: - self.upload_image.SetLabel(_(u"Discard image")) - - def upload_picture(self): - openFileDialog = wx.FileDialog(self, _(u"Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) - if openFileDialog.ShowModal() == wx.ID_CANCEL: - return None - return openFileDialog.GetPath() - - def hide_upload_button(self, hide): - self.upload_image.Enable(hide) - - def set_readonly(self): - self.name.style = wx.TE_READONLY - self.name.Refresh() - self.description.style = wx.TE_READONLY - self.description.Refresh() - self.location.style = wx.TE_READONLY - self.location.Refresh() - self.url.style = wx.TE_READONLY - self.url.Refresh() - self.hide_upload_button(False) - self.ok.Enable(False) \ No newline at end of file diff --git a/src/gtkUI/dialogs/urlList.py b/src/gtkUI/dialogs/urlList.py deleted file mode 100644 index 7a02008e..00000000 --- a/src/gtkUI/dialogs/urlList.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -import wx - -class urlList(wx.Dialog): - def __init__(self): - super(urlList, self).__init__(parent=None, title=_(u"Select an URL")) - panel = wx.Panel(self) - self.lista = wx.ListBox(panel, -1) - self.lista.SetFocus() - self.lista.SetSize(self.lista.GetBestSize()) - sizer = wx.BoxSizer(wx.VERTICAL) - sizer.Add(self.lista, 0, wx.ALL, 5) - goBtn = wx.Button(panel, wx.ID_OK) - goBtn.SetDefault() - cancelBtn = wx.Button(panel, wx.ID_CANCEL) - btnSizer = wx.BoxSizer() - btnSizer.Add(goBtn, 0, wx.ALL, 5) - btnSizer.Add(cancelBtn, 0, wx.ALL, 5) - sizer.Add(btnSizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def populate_list(self, urls): - for i in urls: - self.lista.Append(i) - self.lista.SetSelection(0) - - def get_string(self): - return self.lista.GetStringSelection() - - def get_item(self): - return self.lista.GetSelection() - - def get_response(self): - return self.ShowModal() \ No newline at end of file diff --git a/src/gtkUI/dialogs/userActions.py b/src/gtkUI/dialogs/userActions.py deleted file mode 100644 index 2f9f6dc1..00000000 --- a/src/gtkUI/dialogs/userActions.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- -import wx - -class UserActionsDialog(wx.Dialog): - def __init__(self, users=[], default="follow", *args, **kwargs): - super(UserActionsDialog, self).__init__(parent=None, *args, **kwargs) - panel = wx.Panel(self) - userSizer = wx.BoxSizer() - self.SetTitle(_(u"Action")) - userLabel = wx.StaticText(panel, -1, _(u"User")) - self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0]) - self.cb.SetFocus() - userSizer.Add(userLabel, 0, wx.ALL, 5) - userSizer.Add(self.cb, 0, wx.ALL, 5) - actionSizer = wx.BoxSizer(wx.VERTICAL) - label2 = wx.StaticText(panel, -1, _(u"Action")) - self.follow = wx.RadioButton(panel, -1, _(u"Follow"), style=wx.RB_GROUP) - self.unfollow = wx.RadioButton(panel, -1, _(u"Unfollow")) - self.mute = wx.RadioButton(panel, -1, _(u"Mute")) - self.unmute = wx.RadioButton(panel, -1, _(u"Unmute")) - self.block = wx.RadioButton(panel, -1, _(u"Block")) - self.unblock = wx.RadioButton(panel, -1, _(u"Unblock")) - self.reportSpam = wx.RadioButton(panel, -1, _(u"Report as spam")) - self.ignore_client = wx.RadioButton(panel, -1, _(u"Ignore tweets from this client")) - self.setup_default(default) - hSizer = wx.BoxSizer(wx.HORIZONTAL) - hSizer.Add(label2, 0, wx.ALL, 5) - actionSizer.Add(self.follow, 0, wx.ALL, 5) - actionSizer.Add(self.unfollow, 0, wx.ALL, 5) - actionSizer.Add(self.mute, 0, wx.ALL, 5) - actionSizer.Add(self.unmute, 0, wx.ALL, 5) - actionSizer.Add(self.block, 0, wx.ALL, 5) - actionSizer.Add(self.unblock, 0, wx.ALL, 5) - actionSizer.Add(self.reportSpam, 0, wx.ALL, 5) - actionSizer.Add(self.ignore_client, 0, wx.ALL, 5) - hSizer.Add(actionSizer, 0, wx.ALL, 5) - sizer = wx.BoxSizer(wx.VERTICAL) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok) - btnsizer.Add(cancel) - sizer.Add(userSizer) - sizer.Add(hSizer, 0, wx.ALL, 5) - sizer.Add(btnsizer) - panel.SetSizer(sizer) - - def get_action(self): - if self.follow.GetValue() == True: return "follow" - elif self.unfollow.GetValue() == True: return "unfollow" - elif self.mute.GetValue() == True: return "mute" - elif self.unmute.GetValue() == True: return "unmute" - elif self.reportSpam.GetValue() == True: return "report" - elif self.block.GetValue() == True: return "block" - elif self.unblock.GetValue() == True: return "unblock" - elif self.ignore_client.GetValue() == True: return "ignore_client" - - def setup_default(self, default): - if default == "follow": - self.follow.SetValue(True) - elif default == "unfollow": - self.unfollow.SetValue(True) - elif default == "mute": - self.mute.SetValue(True) - elif default == "unmute": - self.unmute.SetValue(True) - elif default == "report": - self.reportSpam.SetValue(True) - elif default == "block": - self.block.SetValue(True) - elif default == "unblock": - self.unblock.SetValue(True) - elif default == "ignore_client": - self.ignore_client.SetValue(True) - - def get_response(self): - return self.ShowModal() - - def get_user(self): - return self.cb.GetValue() \ No newline at end of file diff --git a/src/gtkUI/dialogs/userSelection.py b/src/gtkUI/dialogs/userSelection.py deleted file mode 100644 index 22a3711f..00000000 --- a/src/gtkUI/dialogs/userSelection.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -import wx - -class selectUserDialog(wx.Dialog): - def __init__(self, users=[], default="tweets", *args, **kwargs): - super(selectUserDialog, self).__init__(parent=None, *args, **kwargs) - panel = wx.Panel(self) - userSizer = wx.BoxSizer() - self.SetTitle(_(u"Timeline for %s") % (users[0])) - userLabel = wx.StaticText(panel, -1, _(u"User")) - self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0]) - self.cb.SetFocus() - userSizer.Add(userLabel, 0, wx.ALL, 5) - userSizer.Add(self.cb, 0, wx.ALL, 5) - actionSizer = wx.BoxSizer(wx.VERTICAL) - label2 = wx.StaticText(panel, -1, _(u"Buffer type")) - self.tweets = wx.RadioButton(panel, -1, _(u"Tweets"), style=wx.RB_GROUP) - self.favourites = wx.RadioButton(panel, -1, _(u"Favourites")) - self.setup_default(default) - hSizer = wx.BoxSizer(wx.HORIZONTAL) - hSizer.Add(label2, 0, wx.ALL, 5) - actionSizer.Add(self.tweets, 0, wx.ALL, 5) - actionSizer.Add(self.favourites, 0, wx.ALL, 5) - hSizer.Add(actionSizer, 0, wx.ALL, 5) - sizer = wx.BoxSizer(wx.VERTICAL) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok) - btnsizer.Add(cancel) - sizer.Add(userSizer) - sizer.Add(hSizer, 0, wx.ALL, 5) - sizer.Add(btnsizer) - panel.SetSizer(sizer) - - def get_action(self): - if self.tweets.GetValue() == True: return "tweets" - elif self.favourites.GetValue() == True: return "favourites" - - def setup_default(self, default): - if default == "tweets": - self.tweets.SetValue(True) - elif default == "favourites": - self.favourites.SetValue(True) - - def get_response(self): - return self.ShowModal() - - def get_user(self): - return self.cb.GetValue() \ No newline at end of file diff --git a/src/gtkUI/dialogs/utils.py b/src/gtkUI/dialogs/utils.py deleted file mode 100644 index eaf75e5e..00000000 --- a/src/gtkUI/dialogs/utils.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################ -# Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -############################################################ -import wx -import baseDialog - -class selectUserDialog(baseDialog.BaseWXDialog): - def __init__(self, title, users): - super(selectUserDialog, self).__init__(parent=None, id=wx.NewId(), title=title) - panel = wx.Panel(self) - userSizer = wx.BoxSizer() - self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0], size=wx.DefaultSize) - self.cb.SetFocus() - userSizer.Add(wx.StaticText(panel, -1, _(u"User")), 0, wx.ALL, 5) - userSizer.Add(self.cb) - sizer = wx.BoxSizer(wx.VERTICAL) - ok = wx.Button(panel, wx.ID_OK, _(u"OK")) - ok.SetDefault() -# ok.Bind(wx.EVT_BUTTON, self.onok) - cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) - btnsizer = wx.BoxSizer() - btnsizer.Add(ok, 0, wx.ALL, 5) - btnsizer.Add(cancel, 0, wx.ALL, 5) - sizer.Add(userSizer, 0, wx.ALL, 5) - sizer.Add(btnsizer, 0, wx.ALL, 5) - panel.SetSizer(sizer) - self.SetClientSize(sizer.CalcMin()) - - def get_user(self): - return self.cb.GetValue() - diff --git a/src/gtkUI/sysTrayIcon.py b/src/gtkUI/sysTrayIcon.py deleted file mode 100644 index 56578cbb..00000000 --- a/src/gtkUI/sysTrayIcon.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -""" A systray for TW Blue """ -############################################################ -# Copyright (c) 2014 José Manuel Delicado Alcolea -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -############################################################ - -import wx -import application -import paths -import os - -class SysTrayIcon(wx.TaskBarIcon): - - def __init__(self): - super(SysTrayIcon, self).__init__() - icon=wx.Icon(os.path.join(paths.app_path(), "icon.ico"), wx.BITMAP_TYPE_ICO) - self.SetIcon(icon, application.name) - self.menu=wx.Menu() - self.tweet = self.menu.Append(wx.ID_ANY, _(u"Tweet")) - self.global_settings = self.menu.Append(wx.ID_ANY, _(u"&Global settings")) - self.account_settings = self.menu.Append(wx.ID_ANY, _(u"Account se&ttings")) - self.update_profile = self.menu.Append(wx.ID_ANY, _(u"Update &profile")) - self.show_hide = self.menu.Append(wx.ID_ANY, _(u"&Show / hide")) - self.doc = self.menu.Append(wx.ID_ANY, _(u"&Documentation")) - self.doc.Enable(False) - self.check_for_updates = self.menu.Append(wx.ID_ANY, _(u"Check for &updates")) - self.exit = self.menu.Append(wx.ID_ANY, _(u"&Exit")) - - def show_menu(self): - self.PopupMenu(self.menu) - - def Destroy(self): - self.menu.Destroy() - super(SysTrayIcon, self).Destroy() \ No newline at end of file diff --git a/src/gtkUI/view.py b/src/gtkUI/view.py deleted file mode 100644 index 0030e01a..00000000 --- a/src/gtkUI/view.py +++ /dev/null @@ -1,206 +0,0 @@ -# -*- coding: utf-8 -*- -import application -import widgetUtils -from gi.repository import Gtk, Gdk - -class mainFrame(Gtk.Window): - """ Main class of the Frame. This is the Main Window.""" - - def append_to_menu(self, menu, *elements): - for i in elements: - menu.append(i) - - ### MENU - def makeMenus(self): - """ Creates, bind and returns the menu bar for the application. Also in this function, the accel table is created.""" - menuBar = Gtk.MenuBar() - - # Application menu - app = Gtk.Menu() - - self.manage_accounts = Gtk.MenuItem(label=_(u"Manage accounts")) - self.updateProfile = Gtk.MenuItem(label="Update profile") - self.updateProfile.add_accelerator("activate", self.accel_group, ord("U"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - # As in Gtk is not possible to bind keyboard shorcuts to the system, we don't have support for an invisible interface. - self.show_hide = None - self.menuitem_search = Gtk.MenuItem(label="Search") - self.lists = Gtk.MenuItem(label="Lists manager") - self.keystrokes_editor = None - self.account_settings = Gtk.MenuItem(label="Account settings") - self.prefs = Gtk.MenuItem(label="Global settings") - self.close = Gtk.MenuItem(label="Close") - self.close.add_accelerator("activate", self.accel_group, ord("Q"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.append_to_menu(app, self.manage_accounts, self.updateProfile, self.menuitem_search, self.lists, self.account_settings, self.prefs, self.close) - - app_menu = Gtk.MenuItem(label="Application") - app_menu.add_accelerator("activate", self.accel_group, ord("a"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - app_menu.set_submenu(app) - menuBar.append(app_menu) - - # Tweet menu - tweet = Gtk.Menu() - self.compose = Gtk.MenuItem(label="Tweet") - self.compose.add_accelerator("activate", self.accel_group, ord("N"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.reply = Gtk.MenuItem(label="Reply") - self.reply.add_accelerator("activate", self.accel_group, ord("R"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.retweet = Gtk.MenuItem(label="Retweet") - self.retweet.add_accelerator("activate", self.accel_group, ord("T"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.fav = Gtk.MenuItem(label="Add to favourites") - self.fav.add_accelerator("activate", self.accel_group, ord("F"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.unfav = Gtk.MenuItem(label="Remove from favourites") - self.view = Gtk.MenuItem(label="Show tweet") - self.view_coordinates = Gtk.MenuItem(label="View address") - self.view_conversation = Gtk.MenuItem(label="View conversation") - self.delete = Gtk.MenuItem(label="Delete") - self.append_to_menu(tweet, self.compose, self.reply, self.retweet, self.fav, self.unfav, self.view, self.view_coordinates, self.view_conversation, self.delete) - tweet_menu = Gtk.MenuItem(label="Tweet") - tweet_menu.set_submenu(tweet) - menuBar.append(tweet_menu) - - # User menu - user = Gtk.Menu() - self.follow = Gtk.MenuItem(label="Follow") - self.unfollow = Gtk.MenuItem(label="Unfollow") - self.mute = Gtk.MenuItem(label="Mute") - self.unmute = Gtk.MenuItem(label="Unmute") - self.report = Gtk.MenuItem(label="Report as spam") - self.block = Gtk.MenuItem(label="Block") - self.unblock = Gtk.MenuItem(label="Unblock") - self.timeline = Gtk.MenuItem(label="View timeline...") - self.dm = Gtk.MenuItem(label="Direct message") - self.addToList = Gtk.MenuItem(label="Add to list") - self.removeFromList = Gtk.MenuItem(label="Remove from list") - self.viewLists = Gtk.MenuItem(label="View lists") - self.details = Gtk.MenuItem(label="Show user profile") - self.favs = Gtk.MenuItem(label="View favourites") - self.append_to_menu(user, self.follow, self.unfollow, self.mute, self.unmute, self.report, self.block, self.unblock, self.timeline, self.dm, self.addToList, self.removeFromList, self.viewLists, self.details, self.favs) - user_menu = Gtk.MenuItem(label="User") - user_menu.set_submenu(user) - menuBar.append(user_menu) - - # buffer menu - buffer = Gtk.Menu() - self.trends = Gtk.MenuItem(label="New trending topics buffer...") - self.trends.add_accelerator("activate", self.accel_group, ord("T"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) - self.load_previous_items = Gtk.MenuItem(label="Load previous items") - self.mute_buffer = Gtk.MenuItem(label="Mute") - self.autoread = Gtk.MenuItem(label="Autoread") - self.clear = Gtk.MenuItem(label="Clear buffer") - self.deleteTl = Gtk.MenuItem(label="Destroy") - self.append_to_menu(buffer, self.trends, self.load_previous_items, self.mute_buffer, self.autoread, self.clear, self.deleteTl) - buffer_menu = Gtk.MenuItem(label="Buffer") - buffer_menu.set_submenu(buffer) - menuBar.append(buffer_menu) - - # Help Menu - help = Gtk.Menu() - self.doc = Gtk.MenuItem(label="Documentation") - self.sounds_tutorial = Gtk.MenuItem(label="Sounds tutorial") - self.changelog = Gtk.MenuItem(label="What's new in this version?") - self.check_for_updates = Gtk.MenuItem(label="Check for updates") - self.reportError = Gtk.MenuItem(label="Report an error") - self.visit_website = Gtk.MenuItem(label=application.name+"'s website") - self.about = Gtk.MenuItem(label="ABout "+application.name) - self.append_to_menu(help, self.doc, self.sounds_tutorial, self.changelog, self.check_for_updates, self.reportError, self.visit_website, self.about) - help_menu = Gtk.MenuItem(label="Help") - help_menu.set_submenu(help) - menuBar.append(help_menu) - self.box.pack_start(menuBar, False, False, 0) - - ### MAIN - def __init__(self): - """ Main function of this class.""" - super(mainFrame, self).__init__(title=application.name) - self.accel_group = Gtk.AccelGroup() - self.add_accel_group(self.accel_group) - self.box = Gtk.VBox() - self.makeMenus() - self.nb = widgetUtils.notebook() - self.w = None - self.notebookBox = Gtk.Box(spacing=5) - self.notebookBox.add(self.nb.view) - self.box.add(self.notebookBox) - self.add(self.box) - select = self.nb.view.get_selection() - select.connect("changed", self.load) - - def show(self): - self.show_all() - - def get_buffer_count(self): - return self.nb.get_count() - - def add_buffer(self, buffer, name): - buff = widgetUtils.buffer(buffer) - buff.name = name - self.nb.store.append(None, (buff,)) - - def insert_buffer(self, buffer, name, pos): - iter = self.nb.store.get_iter(pos) - buff = widgetUtils.buffer(buffer) - buff.name = name - self.nb.store.insert(iter, -1, (buff,)) - - def prepare(self): - pass - - def search(self, name_, account): - (path, iter) = self.nb.search(self.nb.store, name_, account) - if path != None: - return path - - def get_current_buffer(self): - return self.nb.get_current_page() - - def get_current_buffer_pos(self): - return self.nb.get_current_page_path() - - def get_buffer(self, pos): - return self.get_page(pos) - - def load(self, selection): - model, treeiter = selection.get_selected() - if treeiter != None: - if self.w != None: - self.notebookBox.remove(self.w) - self.w = self.nb.store[treeiter][0].buffer - self.notebookBox.add(self.w) - self.show_all() - - def change_buffer(self, position): - self.nb.ChangeSelection(position) - - def get_buffer_text(self): - return self.nb.GetPageText(self.nb.GetSelection()) - - def get_buffer_by_id(self, id): - return self.nb.FindWindowById(id) - def advance_selection(self, forward): - self.nb.AdvanceSelection(forward) - - - def show_address(self, address): - wx.MessageDialog(self, address, _(u"Address"), wx.OK).ShowModal() - - def delete_buffer(self, pos): - self.nb.DeletePage(pos) - - def about_dialog(self): - info = wx.AboutDialogInfo() - info.SetName(application.name) - info.SetVersion(application.version) - info.SetDescription(application.description) - info.SetCopyright(application.copyright) - info.SetTranslators(application.translators) -# info.SetLicence(application.licence) - info.AddDeveloper(application.author) - wx.AboutBox(info) - def set_focus(self): - self.SetFocus() - - def check_menuitem(self, menuitem, check=True): - if hasattr(self, menuitem): - getattr(self, menuitem).Check(check) - -def no_update_available(): - wx.MessageDialog(None, _(u"Your " + application.name + " version is up to date"), _(u"Update"), style=wx.OK).ShowModal() diff --git a/src/issueReporter/wx_ui.py b/src/issueReporter/wx_ui.py index 279039fa..3d2855e6 100644 --- a/src/issueReporter/wx_ui.py +++ b/src/issueReporter/wx_ui.py @@ -66,7 +66,7 @@ class reportBugDialog(widgetUtils.BaseDialog): severityB.Add(severityLabel, 0, wx.ALL, 5) severityB.Add(self.severity, 0, wx.ALL, 5) sizer.Add(severityB, 0, wx.ALL, 5) - self.agree = wx.CheckBox(panel, -1, _(u"I know that the " + application.name + " bug system will get my Twitter username to contact me and fix the bug quickly")) + self.agree = wx.CheckBox(panel, -1, _(u"I know that the {0} bug system will get my Twitter username to contact me and fix the bug quickly").format(application.name,)) self.agree.SetValue(False) sizer.Add(self.agree, 0, wx.ALL, 5) self.ok = wx.Button(panel, wx.ID_OK, _(u"Send report")) diff --git a/src/keymaps/default.keymap b/src/keymaps/default.keymap index 61f9ebf1..b129f98c 100644 --- a/src/keymaps/default.keymap +++ b/src/keymaps/default.keymap @@ -1,52 +1,53 @@ -[info] -name = Default -desc = TWBlue's default keymap. -author = Bill Dengler - -[keymap] -up = control+win+up -down = control+win+down -left = control+win+left -right = control+win+right -next_account = control+win+shift+right -previous_account = control+win+shift+left -open_conversation = control+win+c -show_hide = control+win+m -post_tweet = control+win+n -post_reply = control+win+r -post_retweet = control+win+shift+r -send_dm = control+win+d -add_to_favourites = alt+win+f -remove_from_favourites = alt+shift+win+f -follow = control+win+s -user_details = control+win+alt+n -view_item = control+win+v -exit = control+win+f4 -open_timeline = control+win+i -remove_buffer = control+win+shift+i -interact = control+alt+win+return -url = control+win+return -volume_up = control+win+alt+up -volume_down = control+win+alt+down -go_home = control+win+home -go_end = control+win+end -go_page_up = control+win+pageup -go_page_down = control+win+pagedown -update_profile = alt+win+p -delete = control+win+delete -clear_buffer = control+win+shift+delete -repeat_item = control+win+space -copy_to_clipboard = control+win+c -add_to_list = control+win+a -remove_from_list = control+win+shift+a -toggle_buffer_mute = control+win+shift+m -toggle_session_mute = alt+win+m -toggle_autoread = control+win+e -search = control+win+- -edit_keystrokes = control+win+k -view_user_lists = control+win+l -get_more_items = alt+win+pageup -reverse_geocode = control+win+g -view_reverse_geocode = control+win+shift+g -get_trending_topics = control+win+t -secondary_interact = control+win+alt+return +[info] +name = Default +desc = TWBlue's default keymap. +author = Bill Dengler + +[keymap] +up = control+win+up +down = control+win+down +left = control+win+left +right = control+win+right +next_account = control+win+shift+right +previous_account = control+win+shift+left +open_conversation = control+win+c +show_hide = control+win+m +post_tweet = control+win+n +post_reply = control+win+r +post_retweet = control+win+shift+r +send_dm = control+win+d +add_to_favourites = alt+win+f +remove_from_favourites = alt+shift+win+f +follow = control+win+s +user_details = control+win+alt+n +view_item = control+win+v +exit = control+win+f4 +open_timeline = control+win+i +remove_buffer = control+win+shift+i +interact = control+alt+win+return +url = control+win+return +volume_up = control+win+alt+up +volume_down = control+win+alt+down +go_home = control+win+home +go_end = control+win+end +go_page_up = control+win+pageup +go_page_down = control+win+pagedown +update_profile = alt+win+p +delete = control+win+delete +clear_buffer = control+win+shift+delete +repeat_item = control+win+space +copy_to_clipboard = control+win+c +add_to_list = control+win+a +remove_from_list = control+win+shift+a +toggle_buffer_mute = control+win+shift+m +toggle_session_mute = alt+win+m +toggle_autoread = control+win+e +search = control+win+- +edit_keystrokes = control+win+k +view_user_lists = control+win+l +get_more_items = alt+win+pageup +reverse_geocode = control+win+g +view_reverse_geocode = control+win+shift+g +get_trending_topics = control+win+t +find = control+win+{ +secondary_interact = control+win+alt+return diff --git a/src/keystrokeEditor/keystrokeEditor.py b/src/keystrokeEditor/keystrokeEditor.py index 12307716..90c033b9 100644 --- a/src/keystrokeEditor/keystrokeEditor.py +++ b/src/keystrokeEditor/keystrokeEditor.py @@ -23,10 +23,8 @@ class KeystrokeEditor(object): answer = edit_dialog.get_response() if answer == widgetUtils.OK: new_keystroke = self.get_edited_keystroke(edit_dialog) - print new_keystroke if new_keystroke != self.map[action]: self.changed = True - print "changed" self.map[action] = new_keystroke def set_keystroke(self, keystroke, dialog): diff --git a/src/locales/es/LC_MESSAGES/twblue.mo b/src/locales/es/LC_MESSAGES/twblue.mo index f2f0b04f..6df11079 100644 Binary files a/src/locales/es/LC_MESSAGES/twblue.mo and b/src/locales/es/LC_MESSAGES/twblue.mo differ diff --git a/src/locales/es/LC_MESSAGES/twblue.po b/src/locales/es/LC_MESSAGES/twblue.po index aafa4ece..503c3b44 100644 --- a/src/locales/es/LC_MESSAGES/twblue.po +++ b/src/locales/es/LC_MESSAGES/twblue.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: TW Blue 0.44\n" -"POT-Creation-Date: 2015-06-12 17:44+Hora de verano central (México)\n" -"PO-Revision-Date: 2015-06-12 17:47-0600\n" +"POT-Creation-Date: 2015-06-25 15:28+Hora de verano central (México)\n" +"PO-Revision-Date: 2015-06-25 15:39-0600\n" "Last-Translator: Manuel Cortéz \n" "Language-Team: Manuel Cortez \n" "Language: es\n" @@ -15,15 +15,15 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" -#: ../src\controller\buffersController.py:100 +#: ../src\controller\buffersController.py:98 msgid "Opening media..." msgstr "Abriendo medio..." -#: ../src\controller\buffersController.py:111 +#: ../src\controller\buffersController.py:109 msgid "This action is not supported for this buffer" msgstr "Esta acción no se encuentra soportada para este buffer" -#: ../src\controller\buffersController.py:150 ../src\gtkUI\buffers\base.py:15 +#: ../src\controller\buffersController.py:148 ../src\gtkUI\buffers\base.py:15 #: ../src\gtkUI\buffers\events.py:14 ../src\gtkUI\buffers\trends.py:14 #: ../src\gtkUI\dialogs\message.py:186 ../src\gtkUI\sysTrayIcon.py:33 #: ../src\wxUI\buffers\base.py:24 ../src\wxUI\buffers\events.py:14 @@ -32,240 +32,268 @@ msgstr "Esta acción no se encuentra soportada para este buffer" msgid "Tweet" msgstr "Tuit" -#: ../src\controller\buffersController.py:151 +#: ../src\controller\buffersController.py:149 msgid "Write the tweet here" msgstr "Escribe el tuit aquí" -#: ../src\controller\buffersController.py:313 -#: ../src\controller\buffersController.py:676 +#: ../src\controller\buffersController.py:311 +#: ../src\controller\buffersController.py:674 msgid "%s items retrieved" msgstr "%s elementos recuperados" -#: ../src\controller\buffersController.py:333 +#: ../src\controller\buffersController.py:331 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." -#: ../src\controller\buffersController.py:394 +#: ../src\controller\buffersController.py:392 msgid "Reply to %s" msgstr "Responder a %s" -#: ../src\controller\buffersController.py:394 ../src\gtkUI\buffers\base.py:17 +#: ../src\controller\buffersController.py:392 ../src\gtkUI\buffers\base.py:17 #: ../src\keystrokeEditor\constants.py:11 ../src\wxUI\buffers\base.py:26 msgid "Reply" msgstr "Responder" -#: ../src\controller\buffersController.py:414 +#: ../src\controller\buffersController.py:412 msgid "Direct message to %s" msgstr "Mensaje directo a %s" -#: ../src\controller\buffersController.py:414 -#: ../src\controller\mainController.py:1056 +#: ../src\controller\buffersController.py:412 +#: ../src\controller\mainController.py:1084 msgid "New direct message" msgstr "Nuevo mensaje directo" -#: ../src\controller\buffersController.py:435 +#: ../src\controller\buffersController.py:433 msgid "Add your comment to the tweet" msgstr "Añade tu comentario al tuit" -#: ../src\controller\buffersController.py:435 ../src\gtkUI\buffers\base.py:16 +#: ../src\controller\buffersController.py:433 ../src\gtkUI\buffers\base.py:16 #: ../src\gtkUI\commonMessageDialogs.py:12 #: ../src\keystrokeEditor\constants.py:12 ../src\wxUI\buffers\base.py:25 #: ../src\wxUI\commonMessageDialogs.py:8 ../src\wxUI\dialogs\message.py:129 msgid "Retweet" msgstr "Retuit" -#: ../src\controller\buffersController.py:507 +#: ../src\controller\buffersController.py:505 msgid "Opening URL..." msgstr "Abriendo URL..." -#: ../src\controller\buffersController.py:542 +#: ../src\controller\buffersController.py:540 msgid "User details" msgstr "Detalles del usuario" -#: ../src\controller\buffersController.py:591 +#: ../src\controller\buffersController.py:589 msgid "Empty" msgstr "Vacío" -#: ../src\controller\buffersController.py:635 +#: ../src\controller\buffersController.py:633 msgid "Mention to %s" msgstr "Mencionar a %s" -#: ../src\controller\buffersController.py:635 +#: ../src\controller\buffersController.py:633 #: ../src\gtkUI\buffers\people.py:15 ../src\wxUI\buffers\people.py:15 msgid "Mention" msgstr "Mención" -#: ../src\controller\mainController.py:242 +#: ../src\controller\mainController.py:243 msgid "Ready" msgstr "Listo" -#: ../src\controller\mainController.py:273 +#: ../src\controller\mainController.py:274 msgid "Home" msgstr "Principal" -#: ../src\controller\mainController.py:277 +#: ../src\controller\mainController.py:278 msgid "Mentions" msgstr "Menciones" -#: ../src\controller\mainController.py:281 +#: ../src\controller\mainController.py:282 msgid "Direct messages" msgstr "Mensajes directos" -#: ../src\controller\mainController.py:285 +#: ../src\controller\mainController.py:286 msgid "Sent direct messages" msgstr "Mensajes directos enviados" -#: ../src\controller\mainController.py:289 +#: ../src\controller\mainController.py:290 msgid "Sent tweets" msgstr "Tuits enviados" -#: ../src\controller\mainController.py:294 -#: ../src\controller\mainController.py:1172 +#: ../src\controller\mainController.py:295 +#: ../src\controller\mainController.py:1200 #: ../src\gtkUI\dialogs\userSelection.py:18 #: ../src\wxUI\dialogs\userSelection.py:18 msgid "Favourites" msgstr "Favoritos" -#: ../src\controller\mainController.py:298 -#: ../src\controller\mainController.py:1177 +#: ../src\controller\mainController.py:299 +#: ../src\controller\mainController.py:1205 msgid "Followers" msgstr "Seguidores" -#: ../src\controller\mainController.py:302 -#: ../src\controller\mainController.py:1182 +#: ../src\controller\mainController.py:303 +#: ../src\controller\mainController.py:1210 msgid "Friends" msgstr "Amigos" -#: ../src\controller\mainController.py:306 -#: ../src\controller\mainController.py:1187 +#: ../src\controller\mainController.py:307 +#: ../src\controller\mainController.py:1215 msgid "Blocked users" msgstr "Usuarios bloqueados" -#: ../src\controller\mainController.py:310 -#: ../src\controller\mainController.py:1192 +#: ../src\controller\mainController.py:311 +#: ../src\controller\mainController.py:1220 msgid "Muted users" msgstr "Usuarios silenciados" -#: ../src\controller\mainController.py:314 -#: ../src\controller\mainController.py:1197 +#: ../src\controller\mainController.py:315 +#: ../src\controller\mainController.py:1225 msgid "Events" msgstr "Eventos" -#: ../src\controller\mainController.py:317 +#: ../src\controller\mainController.py:318 msgid "Timelines" msgstr "Líneas temporales" -#: ../src\controller\mainController.py:324 +#: ../src\controller\mainController.py:322 +#: ../src\controller\mainController.py:722 +msgid "Timeline for {}" +msgstr "Línea temporal de {0}" + +#: ../src\controller\mainController.py:325 msgid "Favourites timelines" msgstr "Líneas temporales de favoritos" -#: ../src\controller\mainController.py:333 ../src\gtkUI\dialogs\lists.py:11 +#: ../src\controller\mainController.py:329 +#: ../src\controller\mainController.py:732 +msgid "Favourites timeline for {}" +msgstr "Líneas temporales de favoritos de {0}" + +#: ../src\controller\mainController.py:334 ../src\gtkUI\dialogs\lists.py:11 #: ../src\wxUI\dialogs\lists.py:12 msgid "Lists" msgstr "Listas" -#: ../src\controller\mainController.py:338 -#: ../src\controller\mainController.py:1207 +#: ../src\controller\mainController.py:339 +#: ../src\controller\mainController.py:1235 msgid "List for {}" msgstr "Lista {0}" -#: ../src\controller\mainController.py:341 +#: ../src\controller\mainController.py:342 msgid "Searches" msgstr "Búsquedas" -#: ../src\controller\mainController.py:353 -#: ../src\controller\mainController.py:748 +#: ../src\controller\mainController.py:346 +#: ../src\controller\mainController.py:416 +msgid "Search for {}" +msgstr "Buscar {0}" + +#: ../src\controller\mainController.py:354 +#: ../src\controller\mainController.py:776 msgid "Trending topics for %s" msgstr "Tendencias para %s" -#: ../src\controller\mainController.py:453 -msgid "Select the user" -msgstr "Selecciona un usuario" - -#: ../src\controller\mainController.py:764 -#: ../src\controller\mainController.py:783 -msgid "There are no coordinates in this tweet" -msgstr "No hay coordenadas en este tuit" - -#: ../src\controller\mainController.py:766 -#: ../src\controller\mainController.py:785 -msgid "There are no results for the coordinates in this tweet" -msgstr "No hay resultados para las coordenadas en este tuit" - -#: ../src\controller\mainController.py:768 -#: ../src\controller\mainController.py:787 -msgid "Error decoding coordinates. Try again later." -msgstr "Error decodificando las coordenadas. Inténtalo nuevamente más tarde." - -#: ../src\controller\mainController.py:842 -#: ../src\controller\mainController.py:861 -#: ../src\controller\mainController.py:880 -#: ../src\controller\mainController.py:898 +#: ../src\controller\mainController.py:435 +#: ../src\controller\mainController.py:870 +#: ../src\controller\mainController.py:889 +#: ../src\controller\mainController.py:908 +#: ../src\controller\mainController.py:926 msgid "" "No session is currently in focus. Focus a session with the next or previous " "session shortcut." msgstr "No estás en ninguna sesión. Cambia a una sesión activa." -#: ../src\controller\mainController.py:889 -#: ../src\controller\mainController.py:907 +#: ../src\controller\mainController.py:439 +msgid "Empty buffer." +msgstr "Buffer vacío" + +#: ../src\controller\mainController.py:446 +msgid "{0} not found." +msgstr "{0} no encontrado" + +#: ../src\controller\mainController.py:481 +msgid "Select the user" +msgstr "Selecciona un usuario" + +#: ../src\controller\mainController.py:749 +msgid "Conversation with {0}" +msgstr "Conversación con {0}" + +#: ../src\controller\mainController.py:792 +#: ../src\controller\mainController.py:811 +msgid "There are no coordinates in this tweet" +msgstr "No hay coordenadas en este tuit" + +#: ../src\controller\mainController.py:794 +#: ../src\controller\mainController.py:813 +msgid "There are no results for the coordinates in this tweet" +msgstr "No hay resultados para las coordenadas en este tuit" + +#: ../src\controller\mainController.py:796 +#: ../src\controller\mainController.py:815 +msgid "Error decoding coordinates. Try again later." +msgstr "Error decodificando las coordenadas. Inténtalo nuevamente más tarde." + +#: ../src\controller\mainController.py:917 +#: ../src\controller\mainController.py:935 msgid "%s, %s of %s" msgstr "%s, %s de %s" -#: ../src\controller\mainController.py:891 -#: ../src\controller\mainController.py:909 -#: ../src\controller\mainController.py:929 -#: ../src\controller\mainController.py:949 +#: ../src\controller\mainController.py:919 +#: ../src\controller\mainController.py:937 +#: ../src\controller\mainController.py:957 +#: ../src\controller\mainController.py:977 msgid "%s. Empty" msgstr "%s. Vacío" -#: ../src\controller\mainController.py:922 +#: ../src\controller\mainController.py:950 msgid "{0}: This account is not logged into Twitter." msgstr "{0}: No has iniciado sesión con esta cuenta en Twitter." -#: ../src\controller\mainController.py:927 -#: ../src\controller\mainController.py:947 +#: ../src\controller\mainController.py:955 +#: ../src\controller\mainController.py:975 msgid "%s. %s, %s of %s" msgstr "%s. %s, %s de %s" -#: ../src\controller\mainController.py:942 +#: ../src\controller\mainController.py:970 msgid "{0}: This account is not logged into twitter." msgstr "{0}: No has iniciado sesión con esta cuenta en Twitter." -#: ../src\controller\mainController.py:1047 +#: ../src\controller\mainController.py:1075 msgid "One mention from %s " msgstr "Una mención de %s" -#: ../src\controller\mainController.py:1136 -#: ../src\controller\mainController.py:1145 +#: ../src\controller\mainController.py:1164 +#: ../src\controller\mainController.py:1173 msgid "One tweet from %s" msgstr "Un tuit de %s" -#: ../src\controller\mainController.py:1202 +#: ../src\controller\mainController.py:1230 msgid "This list is already opened" msgstr "Esta lista ya ha sido abierta." -#: ../src\controller\mainController.py:1260 +#: ../src\controller\mainController.py:1288 msgid "The auto-reading of new tweets is enabled for this buffer" msgstr "La lectura automática de nuevos tuits para este buffer está activada" -#: ../src\controller\mainController.py:1263 +#: ../src\controller\mainController.py:1291 msgid "The auto-reading of new tweets is disabled for this buffer" msgstr "" "La lectura automática de nuevos tuits para este buffer está desactivada" -#: ../src\controller\mainController.py:1269 +#: ../src\controller\mainController.py:1297 msgid "Session mute on" msgstr "Silencio de sesión activo" -#: ../src\controller\mainController.py:1272 +#: ../src\controller\mainController.py:1300 msgid "Session mute off" msgstr "Silencio de sesión desactivado" -#: ../src\controller\mainController.py:1279 +#: ../src\controller\mainController.py:1307 msgid "Buffer mute on" msgstr "Silenciar buffer, activado" -#: ../src\controller\mainController.py:1282 +#: ../src\controller\mainController.py:1310 msgid "Buffer mute off" msgstr "Silenciar buffer, desactivado" @@ -304,7 +332,7 @@ msgid "Discard image" msgstr "Descartar foto" #: ../src\controller\messages.py:121 ../src\controller\user.py:53 -#: ../src\extra\AudioUploader\audioUploader.py:130 +#: ../src\extra\AudioUploader\audioUploader.py:127 msgid "Discarded" msgstr "Descartado" @@ -315,28 +343,27 @@ msgstr "Descartado" msgid "Upload a picture" msgstr "Subir una foto" -#: ../src\controller\settings.py:114 ../src\controller\settings.py:173 +#: ../src\controller\settings.py:117 ../src\controller\settings.py:176 #: ../src\wxUI\dialogs\configuration.py:98 msgid "Ask" msgstr "Preguntar" -#: ../src\controller\settings.py:116 ../src\controller\settings.py:175 +#: ../src\controller\settings.py:119 ../src\controller\settings.py:178 #: ../src\wxUI\dialogs\configuration.py:98 msgid "Retweet without comments" msgstr "Retuitear sin comentario" -#: ../src\controller\settings.py:118 ../src\wxUI\dialogs\configuration.py:98 +#: ../src\controller\settings.py:121 ../src\wxUI\dialogs\configuration.py:98 msgid "Retweet with comments" msgstr "Retuitear añadiendo un comentario" -#: ../src\controller\settings.py:150 +#: ../src\controller\settings.py:153 msgid "Account settings for %s" msgstr "Opciones de la cuenta de %s" -#: ../src\controller\settings.py:241 ../src\gtkUI\dialogs\configuration.py:153 -#: ../src\wxUI\dialogs\configuration.py:291 -msgid "Link your Dropbox account" -msgstr "Conectar tu cuenta de Dropbox" +#: ../src\controller\settings.py:261 ../src\wxUI\dialogs\configuration.py:289 +msgid "Connect your Pocket account" +msgstr "Conectar tu cuenta de Pocket" #: ../src\controller\user.py:25 msgid "Information for %s" @@ -398,52 +425,52 @@ msgstr "Favoritos: %s" msgid "You can't ignore direct messages" msgstr "No puedes ignorar los mensajes directos" -#: ../src\extra\AudioUploader\audioUploader.py:52 +#: ../src\extra\AudioUploader\audioUploader.py:53 msgid "Attaching..." msgstr "Adjuntando..." -#: ../src\extra\AudioUploader\audioUploader.py:78 -#: ../src\extra\AudioUploader\audioUploader.py:83 -#: ../src\extra\AudioUploader\audioUploader.py:110 +#: ../src\extra\AudioUploader\audioUploader.py:75 +#: ../src\extra\AudioUploader\audioUploader.py:80 +#: ../src\extra\AudioUploader\audioUploader.py:107 #: ../src\extra\AudioUploader\wx_ui.py:36 msgid "Pause" msgstr "Pausa" -#: ../src\extra\AudioUploader\audioUploader.py:80 -#: ../src\extra\AudioUploader\audioUploader.py:81 +#: ../src\extra\AudioUploader\audioUploader.py:77 +#: ../src\extra\AudioUploader\audioUploader.py:78 msgid "Resume" msgstr "Reanudar" -#: ../src\extra\AudioUploader\audioUploader.py:98 -#: ../src\extra\AudioUploader\audioUploader.py:143 +#: ../src\extra\AudioUploader\audioUploader.py:95 +#: ../src\extra\AudioUploader\audioUploader.py:140 msgid "Stop" msgstr "Detener" -#: ../src\extra\AudioUploader\audioUploader.py:99 +#: ../src\extra\AudioUploader\audioUploader.py:96 msgid "Recording" msgstr "Grabando" -#: ../src\extra\AudioUploader\audioUploader.py:104 -#: ../src\extra\AudioUploader\audioUploader.py:154 +#: ../src\extra\AudioUploader\audioUploader.py:101 +#: ../src\extra\AudioUploader\audioUploader.py:151 msgid "Stopped" msgstr "Stopped" -#: ../src\extra\AudioUploader\audioUploader.py:106 +#: ../src\extra\AudioUploader\audioUploader.py:103 #: ../src\extra\AudioUploader\wx_ui.py:38 msgid "Record" msgstr "Grabar" -#: ../src\extra\AudioUploader\audioUploader.py:139 ../src\sound.py:123 +#: ../src\extra\AudioUploader\audioUploader.py:136 ../src\sound.py:123 msgid "Playing..." msgstr "Reproduciendo..." -#: ../src\extra\AudioUploader\audioUploader.py:147 -#: ../src\extra\AudioUploader\audioUploader.py:157 +#: ../src\extra\AudioUploader\audioUploader.py:144 +#: ../src\extra\AudioUploader\audioUploader.py:154 #: ../src\extra\AudioUploader\wx_ui.py:34 msgid "Play" msgstr "Reproducir" -#: ../src\extra\AudioUploader\audioUploader.py:162 +#: ../src\extra\AudioUploader\audioUploader.py:159 msgid "Recoding audio..." msgstr "Recodificando audio..." @@ -521,6 +548,7 @@ msgid "Attach" msgstr "Adjuntar" #: ../src\extra\AudioUploader\wx_ui.py:50 ../src\issueReporter\wx_ui.py:74 +#: ../src\wxUI\dialogs\find.py:20 msgid "Cancel" msgstr "Cancelar" @@ -557,7 +585,7 @@ msgid "Error." msgstr "Error" #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:10 -msgid "Tweet favorited." +msgid "Tweet favourited." msgstr "Tuit marcado como favorito" #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:11 @@ -588,6 +616,10 @@ msgstr "Mención recibida" msgid "New event." msgstr "Nuevo evento" +#: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:18 +msgid "{0} is ready." +msgstr "{0} está listo" + #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:19 msgid "Mention sent." msgstr "Mención enviada" @@ -665,8 +697,14 @@ msgid "Replace all" msgstr "Reemplazar todo" #: ../src\extra\SpellChecker\wx_ui.py:76 -#: ../src\gtkUI\commonMessageDialogs.py:52 -#: ../src\gtkUI\commonMessageDialogs.py:64 ../src\issueReporter\wx_ui.py:83 +msgid "" +"An error has occurred. There are no dictionaries available for the selected " +"language in {0}" +msgstr "" +"Ha ocurrido un error. No se encuentran diccionarios disponibles para el " +"idioma seleccionado en {0}." + +#: ../src\extra\SpellChecker\wx_ui.py:76 ../src\issueReporter\wx_ui.py:83 #: ../src\issueReporter\wx_ui.py:86 ../src\wxUI\commonMessageDialogs.py:37 #: ../src\wxUI\commonMessageDialogs.py:49 msgid "Error" @@ -702,6 +740,10 @@ msgstr "" msgid "Manage Autocompletion database" msgstr "Gestionar la base de datos del autocompletado de usuarios" +#: ../src\extra\autocompletionUsers\wx_manage.py:11 +msgid "Editing {0} users database" +msgstr "Editando la base de datos de usuarios de {0}" + #: ../src\extra\autocompletionUsers\wx_manage.py:12 msgid "Name" msgstr "Nombre" @@ -727,21 +769,18 @@ msgid "Twitter username" msgstr "Nombre de usuario de Twitter" #: ../src\extra\autocompletionUsers\wx_manage.py:43 -#: ../src\gtkUI\commonMessageDialogs.py:52 #: ../src\wxUI\commonMessageDialogs.py:37 msgid "The user does not exist" msgstr "El usuario no existe" #: ../src\extra\autocompletionUsers\wx_manage.py:43 -#: ../src\gtkUI\commonMessageDialogs.py:58 -#: ../src\gtkUI\dialogs\configuration.py:165 #: ../src\wxUI\commonMessageDialogs.py:43 -#: ../src\wxUI\dialogs\configuration.py:303 +#: ../src\wxUI\dialogs\configuration.py:295 msgid "Error!" msgstr "¡Error!" #: ../src\extra\autocompletionUsers\wx_settings.py:8 -msgid "Autocomplete users’ settings" +msgid "Autocomplete users' settings" msgstr "Opciones de autocompletado de usuarios" #: ../src\extra\autocompletionUsers\wx_settings.py:11 @@ -760,6 +799,10 @@ msgstr "Administrar base de datos" msgid "Done" msgstr "¡Hecho" +#: ../src\extra\autocompletionUsers\wx_settings.py:27 +msgid "{0}'s database of users has been updated." +msgstr "La base de datos de usuarios de {0} ha sido actualizada." + #: ../src\extra\translator\translator.py:9 msgid "Afrikaans" msgstr "Africano" @@ -1233,279 +1276,10 @@ msgstr "" msgid "Exit" msgstr "Salir" -#: ../src\gtkUI\commonMessageDialogs.py:36 -#: ../src\wxUI\commonMessageDialogs.py:21 -msgid "" -"Are you sure you want to delete this user from the database? This user will " -"not appear on the autocomplete results anymore." -msgstr "" -"¿Estás seguro de querer eliminar este usuario de la base de datos? Este ya " -"no aparecerá en los resultados del autocompletado." - -#: ../src\gtkUI\commonMessageDialogs.py:36 -#: ../src\wxUI\commonMessageDialogs.py:21 -msgid "Confirm" -msgstr "Confirmar" - -#: ../src\gtkUI\commonMessageDialogs.py:39 -#: ../src\wxUI\commonMessageDialogs.py:24 -msgid "Add a new ignored client" -msgstr "Añadir un nuevo clienteClientes ignorados" - -#: ../src\gtkUI\commonMessageDialogs.py:39 -#: ../src\wxUI\commonMessageDialogs.py:24 -msgid "Enter the name of the client here" -msgstr "Introduce el nombre del cliente" - -#: ../src\gtkUI\commonMessageDialogs.py:45 -#: ../src\wxUI\commonMessageDialogs.py:30 -msgid "" -"Do you really want to empty this buffer? It's items will be removed from " -"the list but not from Twitter" -msgstr "" -"¿Realmente quieres vaciar el contenido de este buffer? Los tweets serán " -"eliminados de la lista, pero no de Twitter" - -#: ../src\gtkUI\commonMessageDialogs.py:45 -#: ../src\wxUI\commonMessageDialogs.py:30 -msgid "Empty buffer" -msgstr "Vaciar buffer" - -#: ../src\gtkUI\commonMessageDialogs.py:49 -#: ../src\wxUI\commonMessageDialogs.py:34 -msgid "Attention" -msgstr "Atención" - -#: ../src\gtkUI\commonMessageDialogs.py:49 -#: ../src\wxUI\commonMessageDialogs.py:34 -msgid "Do you really want to delete this timeline?" -msgstr "¿Realmente deseas eliminar esta línea temporal?" - -#: ../src\gtkUI\commonMessageDialogs.py:55 -#: ../src\wxUI\commonMessageDialogs.py:40 -msgid "Existing timeline" -msgstr "Línea temporal existente" - -#: ../src\gtkUI\commonMessageDialogs.py:55 -#: ../src\wxUI\commonMessageDialogs.py:40 -msgid "" -"There's currently a timeline for this user. You are not able to open another" -msgstr "Ya hay una línea temporal para este usuario. No se puede abrir otra" - -#: ../src\gtkUI\commonMessageDialogs.py:58 -#: ../src\wxUI\commonMessageDialogs.py:43 -msgid "This user has no tweets. You can't open a timeline for this user" -msgstr "Este usuario no tiene tuits. NO puedes abrirle una línea temporal." - -#: ../src\gtkUI\commonMessageDialogs.py:61 -#: ../src\wxUI\commonMessageDialogs.py:46 -msgid "" -"This is a protected Twitter user. It means you can not open a timeline using " -"the Streaming API. The user's tweets will not update due to a twitter " -"policy. Do you want to continue?" -msgstr "" -"Esta cuenta de usuario se encuentra protegida. Esto significa que no podrás " -"abrir una línea temporal con actualizaciones en tiempo real. Los tuits de " -"este usuario no se actualizarán debido a una política de Twitter. ¿Deseas " -"continuar?" - -#: ../src\gtkUI\commonMessageDialogs.py:61 -#: ../src\wxUI\commonMessageDialogs.py:46 -msgid "Warning" -msgstr "Atención" - -#: ../src\gtkUI\commonMessageDialogs.py:64 -#: ../src\wxUI\commonMessageDialogs.py:49 -msgid "" -"This is a protected user account, you need follow to this user for viewing " -"your tweets or favourites." -msgstr "" -"Esta es una cuenta protegida, debes seguir al usuario para poder ver sus " -"tuits y favoritos." - -#: ../src\gtkUI\dialogs\configuration.py:10 -#: ../src\wxUI\dialogs\configuration.py:14 -msgid "Language" -msgstr "Idioma" - -#: ../src\gtkUI\dialogs\configuration.py:19 -#: ../src\wxUI\dialogs\configuration.py:27 -msgid "Use invisible interface's keyboard shortcuts while GUI is visible" -msgstr "" -"Usar los atajos de teclado de la interfaz invisible en la ventana gráfica" - -#: ../src\gtkUI\dialogs\configuration.py:21 -#: ../src\wxUI\dialogs\configuration.py:29 -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" - -#: ../src\gtkUI\dialogs\configuration.py:23 -#: ../src\wxUI\dialogs\configuration.py:31 -msgid "Hide GUI on launch" -msgstr "Esconder interfaz gráfica al iniciar" - -#: ../src\gtkUI\dialogs\configuration.py:31 -msgid "Set the autocomplete function" -msgstr "Configurar la función de autocompletado" - -#: ../src\gtkUI\dialogs\configuration.py:33 -msgid "Relative times" -msgstr "Tiempos relativos" - -#: ../src\gtkUI\dialogs\configuration.py:36 -msgid "" -"API calls when the stream is started (One API call equals to 200 tweetts, " -"two API calls equals 400 tweets, etc):" -msgstr "" -"Llamadas a la API cuando el stream se inicie (una llamada equivale a 200 " -"tuits, 2 a 400 tuits, etc):" - -#: ../src\gtkUI\dialogs\configuration.py:43 -#: ../src\wxUI\dialogs\configuration.py:89 -msgid "Items on each API call" -msgstr "Elementos por cada llamada a la API" - -#: ../src\gtkUI\dialogs\configuration.py:49 -msgid "" -"Inverted buffers: The newest tweets will be shown at the beginning of the " -"lists while the oldest at the end" -msgstr "" -"Buffers invertidos: los nuevos tweets se mostrarán al principio de las " -"listas y los viejos al final" - -#: ../src\gtkUI\dialogs\configuration.py:63 -#: ../src\gtkUI\dialogs\configuration.py:198 -#: ../src\wxUI\dialogs\configuration.py:201 -#: ../src\wxUI\dialogs\configuration.py:340 -msgid "Ignored clients" -msgstr "Clientes ignorados" - -#: ../src\gtkUI\dialogs\configuration.py:69 -#: ../src\wxUI\dialogs\configuration.py:207 -msgid "Add client" -msgstr "Añadir cliente" - -#: ../src\gtkUI\dialogs\configuration.py:70 -#: ../src\wxUI\dialogs\configuration.py:208 -msgid "Remove client" -msgstr "Quitar cliente" - -#: ../src\gtkUI\dialogs\configuration.py:94 -#: ../src\wxUI\dialogs\configuration.py:232 -msgid "Volume" -msgstr "Volumen" - -#: ../src\gtkUI\dialogs\configuration.py:102 -#: ../src\wxUI\dialogs\configuration.py:240 -msgid "Session mute" -msgstr "Silencio de sesión" - -#: ../src\gtkUI\dialogs\configuration.py:104 -#: ../src\wxUI\dialogs\configuration.py:242 -msgid "Output device" -msgstr "Dispositivo de salida" - -#: ../src\gtkUI\dialogs\configuration.py:111 -#: ../src\wxUI\dialogs\configuration.py:249 -msgid "Input device" -msgstr "Dispositivo de entrada" - -#: ../src\gtkUI\dialogs\configuration.py:119 -#: ../src\wxUI\dialogs\configuration.py:257 -msgid "Sound pack" -msgstr "Paquete de sonidos" - -#: ../src\gtkUI\dialogs\configuration.py:134 -msgid "" -"If you've got a SndUp account, enter your API Key here. Whether the API Key " -"is wrong, the App will fail to upload anything to the server. Whether " -"there's no API Key here, then the audio files will be uploaded anonimously" -msgstr "" -"Si tienes cuenta en SndUp, introduce tu API Key aquí. Si el API Key es " -"incorrecto, el programa no podrá subir nada al servicio. Si no hay API Key " -"aquí, los audios se subirán de manera anónima" - -#: ../src\gtkUI\dialogs\configuration.py:151 -#: ../src\wxUI\dialogs\configuration.py:289 -msgid "Unlink your Dropbox account" -msgstr "Desconectar tu cuenta de Dropbox" - -#: ../src\gtkUI\dialogs\configuration.py:156 ../src\sessionmanager\wxUI.py:47 -#: ../src\wxUI\dialogs\configuration.py:294 -msgid "Authorization" -msgstr "Autorización" - -#: ../src\gtkUI\dialogs\configuration.py:156 -#: ../src\wxUI\dialogs\configuration.py:294 -msgid "" -"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." -msgstr "" -"La solicitud de autorización se abrirá en tu navegador. Pega el código que " -"te entregará dropbox en el campo de texto que aparecerá a continuación. Esto " -"es necesario hacerlo solo una vez." - -#: ../src\gtkUI\dialogs\configuration.py:159 -#: ../src\wxUI\dialogs\configuration.py:297 -msgid "Enter the code here." -msgstr "Introduce el código aquí" - -#: ../src\gtkUI\dialogs\configuration.py:159 -#: ../src\wxUI\dialogs\configuration.py:297 -msgid "Verification code" -msgstr "Código de verificación" - -#: ../src\gtkUI\dialogs\configuration.py:165 -msgid "Error during authorisation. Try again later." -msgstr "Error durante la autorización. Inténtalo de nuevo más tarde" - -#: ../src\gtkUI\dialogs\configuration.py:178 -msgid "TW Blue preferences" -msgstr "Preferencias de TW Blue" - -#: ../src\gtkUI\dialogs\configuration.py:184 -#: ../src\gtkUI\dialogs\configuration.py:189 -#: ../src\issueReporter\issueReporter.py:30 -#: ../src\wxUI\dialogs\configuration.py:322 -#: ../src\wxUI\dialogs\configuration.py:331 -msgid "General" -msgstr "General" - -#: ../src\gtkUI\dialogs\configuration.py:194 -msgid "Show other buffers" -msgstr "Mostrar otros buffers" - -#: ../src\gtkUI\dialogs\configuration.py:202 -#: ../src\wxUI\dialogs\configuration.py:344 -msgid "Sound" -msgstr "Sonido" - -#: ../src\gtkUI\dialogs\configuration.py:205 -#: ../src\wxUI\dialogs\configuration.py:347 -msgid "Audio Services" -msgstr "Servicios de audio" - -#: ../src\gtkUI\dialogs\configuration.py:210 -#: ../src\wxUI\dialogs\configuration.py:352 -msgid "Save" -msgstr "Guardar" - -#: ../src\gtkUI\dialogs\configuration.py:212 ../src\gtkUI\dialogs\search.py:26 -#: ../src\gtkUI\dialogs\show_user.py:17 ../src\gtkUI\dialogs\trends.py:28 -#: ../src\gtkUI\dialogs\update_profile.py:35 -#: ../src\gtkUI\dialogs\userActions.py:40 -#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 -#: ../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:207 ../src\wxUI\dialogs\message.py:283 -#: ../src\wxUI\dialogs\message.py:338 ../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 -msgid "Close" -msgstr "Cerrar" +#: ../src\gtkUI\commonMessageDialogs.py:27 +#: ../src\wxUI\commonMessageDialogs.py:14 +msgid "Do you really want to close {0}?" +msgstr "¿Realmente deseas salir de {0}?" #: ../src\gtkUI\dialogs\lists.py:9 ../src\wxUI\dialogs\lists.py:10 msgid "Lists manager" @@ -1706,12 +1480,28 @@ msgstr "Usuarios" #: ../src\gtkUI\dialogs\search.py:24 ../src\gtkUI\dialogs\trends.py:26 #: ../src\gtkUI\dialogs\userActions.py:38 #: ../src\gtkUI\dialogs\userSelection.py:26 ../src\gtkUI\dialogs\utils.py:32 -#: ../src\keystrokeEditor\wx_ui.py:60 ../src\wxUI\dialogs\search.py:24 -#: ../src\wxUI\dialogs\trends.py:26 ../src\wxUI\dialogs\userActions.py:38 +#: ../src\keystrokeEditor\wx_ui.py:60 ../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 msgid "OK" msgstr "Aceptar" +#: ../src\gtkUI\dialogs\search.py:26 ../src\gtkUI\dialogs\show_user.py:17 +#: ../src\gtkUI\dialogs\trends.py:28 ../src\gtkUI\dialogs\update_profile.py:35 +#: ../src\gtkUI\dialogs\userActions.py:40 +#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 +#: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:347 +#: ../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:338 ../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 +msgid "Close" +msgstr "Cerrar" + #: ../src\gtkUI\dialogs\show_user.py:10 ../src\wxUI\dialogs\show_user.py:10 msgid "Details" msgstr "Detalles" @@ -1851,7 +1641,7 @@ msgid "&Show / hide" msgstr "&Mostrar / esconder" #: ../src\gtkUI\sysTrayIcon.py:38 ../src\wxUI\sysTrayIcon.py:38 -#: ../src\wxUI\view.py:62 +#: ../src\wxUI\view.py:63 msgid "&Documentation" msgstr "&Documentación" @@ -1867,14 +1657,24 @@ msgstr "&Salir" msgid "Manage accounts" msgstr "Gestionar cuentas" -#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:158 +#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:159 msgid "Address" msgstr "Dirección" -#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:181 +#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 msgid "Update" msgstr "Actualización" +#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 +msgid "Your {0} version is up to date" +msgstr "Tu versión de {0} está actualizada" + +#: ../src\issueReporter\issueReporter.py:30 +#: ../src\wxUI\dialogs\configuration.py:314 +#: ../src\wxUI\dialogs\configuration.py:323 +msgid "General" +msgstr "General" + #: ../src\issueReporter\issueReporter.py:31 msgid "always" msgstr "Siempre" @@ -1954,6 +1754,14 @@ msgstr "¿Qué tan a menudo ocurre este error?" msgid "Select the importance that you think this bug has" msgstr "Selecciona la importancia que consideras que tiene este error" +#: ../src\issueReporter\wx_ui.py:69 +msgid "" +"I know that the {0} bug system will get my Twitter username to contact me " +"and fix the bug quickly" +msgstr "" +"Sé que el sistema de errores de {0} obtendrá mi nombre de usuario de Twitter " +"para contactarme y resolver el error rápidamente" + #: ../src\issueReporter\wx_ui.py:72 msgid "Send report" msgstr "Enviar reporte" @@ -2067,10 +1875,8 @@ msgid "Interact with the currently focused tweet." msgstr "Interactuar con el tuit que tiene el foco" #: ../src\keystrokeEditor\constants.py:23 -msgid "" -"Perform secondary interact action (open URL in browser if Codeofdusk's " -"intelegent audio tweet handlers enabled, play audio if disabled." -msgstr "" +msgid "Open URL" +msgstr "Abrir URL" #: ../src\keystrokeEditor\constants.py:24 msgid "Increase volume by 5%" @@ -2142,30 +1948,34 @@ msgid "Search on twitter" msgstr "Buscar en Twitter" #: ../src\keystrokeEditor\constants.py:41 +msgid "Find a string in the currently focused buffer" +msgstr "Buscar un término en el buffer actual" + +#: ../src\keystrokeEditor\constants.py:42 msgid "Show the keystroke editor" msgstr "Mostrar el editor de combinaciones de teclado" -#: ../src\keystrokeEditor\constants.py:42 +#: ../src\keystrokeEditor\constants.py:43 msgid "Show lists for a specified user" msgstr "Mostrar listas para un usuario específico" -#: ../src\keystrokeEditor\constants.py:43 +#: ../src\keystrokeEditor\constants.py:44 msgid "load previous items" msgstr "Cargar elementos anteriores" -#: ../src\keystrokeEditor\constants.py:44 +#: ../src\keystrokeEditor\constants.py:45 msgid "Get geolocation" msgstr "Obtener ubicación" -#: ../src\keystrokeEditor\constants.py:45 +#: ../src\keystrokeEditor\constants.py:46 msgid "Display the tweet's geolocation in a dialog" msgstr "Mostrar la ubicación del tuit en un diálogo" -#: ../src\keystrokeEditor\constants.py:46 +#: ../src\keystrokeEditor\constants.py:47 msgid "Create a trending topics buffer" msgstr "Crear un buffer de tendencias" -#: ../src\keystrokeEditor\constants.py:47 +#: ../src\keystrokeEditor\constants.py:48 msgid "View conversation" msgstr "Ver conversación" @@ -2229,6 +2039,18 @@ msgstr "%s falló. Razón: %s" msgid "%s succeeded." msgstr "%s con éxito" +#: ../src\sessionmanager\wxUI.py:10 +msgid "Accounts list" +msgstr "Lista de cuentas" + +#: ../src\sessionmanager\wxUI.py:12 +msgid "Account" +msgstr "Cuenta" + +#: ../src\sessionmanager\wxUI.py:16 +msgid "New account" +msgstr "Nueva cuenta" + #: ../src\sessionmanager\wxUI.py:17 ../src\sessionmanager\wxUI.py:63 msgid "Remove account" msgstr "Eliminar cuenta" @@ -2245,6 +2067,10 @@ msgstr "Error en la cuenta" msgid "You need to configure an account." msgstr "Necesitas configurar una cuenta" +#: ../src\sessionmanager\wxUI.py:47 +msgid "Authorization" +msgstr "Autorización" + #: ../src\sessionmanager\wxUI.py:47 msgid "" "The request to authorize your Twitter account will be opened in your " @@ -2323,7 +2149,7 @@ msgid "You've added to favourites: %s, %s" msgstr "Has marcado como favorito: %s, %s" #: ../src\twitter\compose.py:99 -msgid "%s(@%s) has marked as favorite: %s" +msgid "%s(@%s) has marked as favourite: %s" msgstr "%s(@%s) ha marcado como favorito: %s" #: ../src\twitter\compose.py:101 @@ -2378,6 +2204,14 @@ msgstr "Te has dado de baja de la lista %s, propiedad de %s(@%s)" msgid "You've been unsubscribed from the list %s, which is owned by %s(@%s)" msgstr "Has sido dado de baja de la lista %s, propiedad de %s(@%s)" +#: ../src\twitter\compose.py:122 +msgid "You have retweeted a retweet from %s(@%s): %s" +msgstr "Has retuiteado un retuit de %s(@%s): %s" + +#: ../src\twitter\compose.py:123 +msgid "%s(@%s) has retweeted your retweet: %s" +msgstr "%s(@%s) ha retuiteado tu retuit: %s" + #: ../src\twitter\compose.py:125 msgid "Unknown" msgstr "Desconocido" @@ -2402,6 +2236,10 @@ msgstr "Lo sentimos, no estás autorizado para ver este tuit." msgid "No status found with that ID" msgstr "No existe un tuit con este ID." +#: ../src\twitter\utils.py:128 +msgid "Error code {0}" +msgstr "Código de error {0}" + #: ../src\update\wxUpdater.py:9 msgid "New version for %s" msgstr "Nueva versión de %s" @@ -2445,9 +2283,93 @@ msgstr "" "La actualización ha sido descargada e instalada. Presiona aceptar para " "iniciar la aplicación." -#: ../src\wxUI\commonMessageDialogs.py:14 -msgid "Do you really want to close {0}?" -msgstr "¿Realmente deseas salir de {0}?" +#: ../src\wxUI\commonMessageDialogs.py:18 +msgid " {0} must be restarted for these changes to take effect." +msgstr "Debes reiniciar {0} para que estos cambios tengan efecto." + +#: ../src\wxUI\commonMessageDialogs.py:18 +msgid "Restart {0} " +msgstr "Reiniciar {0}" + +#: ../src\wxUI\commonMessageDialogs.py:21 +msgid "" +"Are you sure you want to delete this user from the database? This user will " +"not appear on the autocomplete results anymore." +msgstr "" +"¿Estás seguro de querer eliminar este usuario de la base de datos? Este ya " +"no aparecerá en los resultados del autocompletado." + +#: ../src\wxUI\commonMessageDialogs.py:21 +msgid "Confirm" +msgstr "Confirmar" + +#: ../src\wxUI\commonMessageDialogs.py:24 +msgid "Add a new ignored client" +msgstr "Añadir un nuevo clienteClientes ignorados" + +#: ../src\wxUI\commonMessageDialogs.py:24 +msgid "Enter the name of the client here" +msgstr "Introduce el nombre del cliente" + +#: ../src\wxUI\commonMessageDialogs.py:30 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from " +"the list but not from Twitter" +msgstr "" +"¿Realmente quieres vaciar el contenido de este buffer? Los tweets serán " +"eliminados de la lista, pero no de Twitter" + +#: ../src\wxUI\commonMessageDialogs.py:30 +msgid "Empty buffer" +msgstr "Vaciar buffer" + +#: ../src\wxUI\commonMessageDialogs.py:34 +msgid "Attention" +msgstr "Atención" + +#: ../src\wxUI\commonMessageDialogs.py:34 +msgid "Do you really want to delete this timeline?" +msgstr "¿Realmente deseas eliminar esta línea temporal?" + +#: ../src\wxUI\commonMessageDialogs.py:40 +msgid "Existing timeline" +msgstr "Línea temporal existente" + +#: ../src\wxUI\commonMessageDialogs.py:40 +msgid "" +"There's currently a timeline for this user. You are not able to open another" +msgstr "Ya hay una línea temporal para este usuario. No se puede abrir otra" + +#: ../src\wxUI\commonMessageDialogs.py:43 +msgid "This user has no tweets. You can't open a timeline for this user" +msgstr "Este usuario no tiene tuits. NO puedes abrirle una línea temporal." + +#: ../src\wxUI\commonMessageDialogs.py:46 +msgid "" +"This is a protected Twitter user. It means you can not open a timeline using " +"the Streaming API. The user's tweets will not update due to a twitter " +"policy. Do you want to continue?" +msgstr "" +"Esta cuenta de usuario se encuentra protegida. Esto significa que no podrás " +"abrir una línea temporal con actualizaciones en tiempo real. Los tuits de " +"este usuario no se actualizarán debido a una política de Twitter. ¿Deseas " +"continuar?" + +#: ../src\wxUI\commonMessageDialogs.py:46 +msgid "Warning" +msgstr "Atención" + +#: ../src\wxUI\commonMessageDialogs.py:49 +msgid "" +"This is a protected user account, you need follow to this user for viewing " +"your tweets or favourites." +msgstr "" +"Esta es una cuenta protegida, debes seguir al usuario para poder ver sus " +"tuits y favoritos." + +#: ../src\wxUI\dialogs\configuration.py:14 +msgid "Language" +msgstr "Idioma" #: ../src\wxUI\dialogs\configuration.py:21 msgid "ask before exiting {0}" @@ -2461,6 +2383,19 @@ msgstr "Reproducir un sonido cuando inicia {0}" msgid "Speak a message when {0} launches" msgstr "Hablar un mensaje cuando {0} inicie." +#: ../src\wxUI\dialogs\configuration.py:27 +msgid "Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"Usar los atajos de teclado de la interfaz invisible en la ventana gráfica" + +#: ../src\wxUI\dialogs\configuration.py:29 +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" + +#: ../src\wxUI\dialogs\configuration.py:31 +msgid "Hide GUI on launch" +msgstr "Esconder interfaz gráfica al iniciar" + #: ../src\wxUI\dialogs\configuration.py:34 msgid "Keymap" msgstr "Mapa de teclado" @@ -2495,6 +2430,10 @@ msgstr "" "Llamadas a la API cuando el stream se inicie (una llamada equivale a 200 " "tuits, 2 a 400 tuits, etc):" +#: ../src\wxUI\dialogs\configuration.py:89 +msgid "Items on each API call" +msgstr "Elementos por cada llamada a la API" + #: ../src\wxUI\dialogs\configuration.py:95 msgid "" "Inverted buffers: The newest tweets will be shown at the beginning while the " @@ -2568,18 +2507,101 @@ msgstr "El buffer ya se encuentra al principio de la lista" msgid "The buffer is already at the bottom of the list." msgstr "El buffer ya se encuentra al final de la lista" -#: ../src\wxUI\dialogs\configuration.py:303 +#: ../src\wxUI\dialogs\configuration.py:201 +#: ../src\wxUI\dialogs\configuration.py:332 +msgid "Ignored clients" +msgstr "Clientes ignorados" + +#: ../src\wxUI\dialogs\configuration.py:207 +msgid "Add client" +msgstr "Añadir cliente" + +#: ../src\wxUI\dialogs\configuration.py:208 +msgid "Remove client" +msgstr "Quitar cliente" + +#: ../src\wxUI\dialogs\configuration.py:232 +msgid "Volume" +msgstr "Volumen" + +#: ../src\wxUI\dialogs\configuration.py:240 +msgid "Session mute" +msgstr "Silencio de sesión" + +#: ../src\wxUI\dialogs\configuration.py:242 +msgid "Output device" +msgstr "Dispositivo de salida" + +#: ../src\wxUI\dialogs\configuration.py:249 +msgid "Input device" +msgstr "Dispositivo de entrada" + +#: ../src\wxUI\dialogs\configuration.py:257 +msgid "Sound pack" +msgstr "Paquete de sonidos" + +#: ../src\wxUI\dialogs\configuration.py:272 +msgid "" +"If you have a SndUp account, enter your API Key here. If your API Key is " +"invalid, {0} will fail to upload. If there is no API Key here, {0} will " +"upload annonymously." +msgstr "" +"Si tienes cuenta en SndUp, introduce tu API Key aquí. Si el API Key es " +"incorrecto, {0} no podrá subir nada al servicio. Si no hay API Key aquí, {0} " +"subirá audios de manera anónima" + +#: ../src\wxUI\dialogs\configuration.py:287 +msgid "Disconnect your Pocket account" +msgstr "Desconectar tu cuenta de Pocket" + +#: ../src\wxUI\dialogs\configuration.py:292 +msgid "Pocket Authorization" +msgstr "Autorización de Pocket" + +#: ../src\wxUI\dialogs\configuration.py:292 +msgid "" +"The authorization request will be opened in your browser. You only need to " +"do this once. Do you want to continue?" +msgstr "" +"La solicitud de autorización de Pocket será abierta en tu navegador. Esto es " +"necesario hacerlo solo una vez. ¿Quieres continuar?" + +#: ../src\wxUI\dialogs\configuration.py:295 msgid "Error during authorization. Try again later." msgstr "Error durante la autorización. Inténtalo de nuevo más tarde" -#: ../src\wxUI\dialogs\configuration.py:327 +#: ../src\wxUI\dialogs\configuration.py:308 +msgid "{0} preferences" +msgstr "Preferencias de {0}" + +#: ../src\wxUI\dialogs\configuration.py:319 msgid "Proxy" msgstr "Proxy" -#: ../src\wxUI\dialogs\configuration.py:336 +#: ../src\wxUI\dialogs\configuration.py:328 msgid "Buffers" msgstr "Buffers" +#: ../src\wxUI\dialogs\configuration.py:336 +msgid "Sound" +msgstr "Sonido" + +#: ../src\wxUI\dialogs\configuration.py:340 +msgid "Services" +msgstr "Servicios" + +#: ../src\wxUI\dialogs\configuration.py:345 +msgid "Save" +msgstr "Guardar" + +#: ../src\wxUI\dialogs\find.py:10 +msgid "Find in current buffer" +msgstr "Buscar en el buffer actual" + +#: ../src\wxUI\dialogs\find.py:11 +msgid "String" +msgstr "Término" + #: ../src\wxUI\dialogs\lists.py:133 msgid "Do you really want to delete this list?" msgstr "¿Realmente deseas eliminar esta lista?" @@ -2621,7 +2643,7 @@ msgstr "Editar combinaciones de &teclas" msgid "E&xit" msgstr "S&alir" -#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:74 +#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:75 msgid "&Tweet" msgstr "&Tuit" @@ -2694,60 +2716,112 @@ msgid "New &trending topics buffer..." msgstr "Nuevo buffer de &tendencias" #: ../src\wxUI\view.py:53 +msgid "Find a string in the currently focused buffer..." +msgstr "Buscar término en el buffer actual" + +#: ../src\wxUI\view.py:54 msgid "&Load previous items" msgstr "&Cargar elementos anteriores" -#: ../src\wxUI\view.py:55 +#: ../src\wxUI\view.py:56 msgid "&Mute" msgstr "S&ilenciar" -#: ../src\wxUI\view.py:56 +#: ../src\wxUI\view.py:57 msgid "&Autoread" msgstr "&lectura automática" -#: ../src\wxUI\view.py:57 +#: ../src\wxUI\view.py:58 msgid "&Clear buffer" msgstr "&Vaciar buffer" -#: ../src\wxUI\view.py:58 +#: ../src\wxUI\view.py:59 msgid "&Destroy" msgstr "&Eliminar" -#: ../src\wxUI\view.py:64 +#: ../src\wxUI\view.py:65 msgid "Sounds &tutorial" msgstr "Tutorial de &sonidos" -#: ../src\wxUI\view.py:65 +#: ../src\wxUI\view.py:66 msgid "&What's new in this version?" msgstr "¿&Qué hay de nuevo en esta versión?" -#: ../src\wxUI\view.py:67 +#: ../src\wxUI\view.py:68 msgid "&Check for updates" msgstr "&Comprobar actualizaciones" -#: ../src\wxUI\view.py:68 +#: ../src\wxUI\view.py:69 msgid "&Report an error" msgstr "&Reportar un error" -#: ../src\wxUI\view.py:73 +#: ../src\wxUI\view.py:70 +msgid "{0}'s &website" +msgstr "Sitio &web de {0}" + +#: ../src\wxUI\view.py:71 +msgid "About &{0}" +msgstr "Sobre &{0}" + +#: ../src\wxUI\view.py:74 msgid "&Application" msgstr "&Aplicación" -#: ../src\wxUI\view.py:75 +#: ../src\wxUI\view.py:76 msgid "&User" msgstr "&Usuario" -#: ../src\wxUI\view.py:76 +#: ../src\wxUI\view.py:77 msgid "&Buffer" msgstr "&Buffer" -#: ../src\wxUI\view.py:77 +#: ../src\wxUI\view.py:78 msgid "&Help" msgstr "Ay&uda" -#: ../src\wxUI\view.py:181 -msgid "Your {0} version is up to date" -msgstr "Tu versión de {0} está actualizada" +#~ msgid "Set the autocomplete function" +#~ msgstr "Configurar la función de autocompletado" + +#~ msgid "Relative times" +#~ msgstr "Tiempos relativos" + +#~ msgid "" +#~ "API calls when the stream is started (One API call equals to 200 tweetts, " +#~ "two API calls equals 400 tweets, etc):" +#~ msgstr "" +#~ "Llamadas a la API cuando el stream se inicie (una llamada equivale a 200 " +#~ "tuits, 2 a 400 tuits, etc):" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will be shown at the beginning of the " +#~ "lists while the oldest at the end" +#~ msgstr "" +#~ "Buffers invertidos: los nuevos tweets se mostrarán al principio de las " +#~ "listas y los viejos al final" + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "La solicitud de autorización se abrirá en tu navegador. Pega el código " +#~ "que te entregará dropbox en el campo de texto que aparecerá a " +#~ "continuación. Esto es necesario hacerlo solo una vez." + +#~ msgid "Enter the code here." +#~ msgstr "Introduce el código aquí" + +#~ msgid "Verification code" +#~ msgstr "Código de verificación" + +#~ msgid "Error during authorisation. Try again later." +#~ msgstr "Error durante la autorización. Inténtalo de nuevo más tarde" + +#~ msgid "TW Blue preferences" +#~ msgstr "Preferencias de TW Blue" + +#~ msgid "Show other buffers" +#~ msgstr "Mostrar otros buffers" #~ msgid "Not actionable." #~ msgstr "No hay acción asociada a este tuit." @@ -2869,13 +2943,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "This account is not logged in twitter." #~ msgstr "No has iniciado sesión con esta cuenta en Twitter." -#~ msgid "" -#~ "A bug has happened. There are no dictionaries available for the selected " -#~ "language in TW Blue" -#~ msgstr "" -#~ "Ha ocurrido un error. No se encuentran diccionarios disponibles para el " -#~ "idioma seleccionado en TW Blue." - #~ msgid "Finished" #~ msgstr "Finalizado" @@ -2894,9 +2961,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "load previous items to any buffer" #~ msgstr "Cargar elementos anteriores para un buffer" -#~ msgid "Restart TW Blue" -#~ msgstr "Reiniciar TW Blue" - #~ msgid "" #~ "The application requires to be restarted to save these changes. Press OK " #~ "to do it now." @@ -2973,9 +3037,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "A new event has happened" #~ msgstr "Ha ocurrido un nuevo evento" -#~ msgid "TW Blue is ready " -#~ msgstr "TW Blue está listo" - #~ msgid "You've replied" #~ msgstr "Has enviado una respuesta" @@ -3001,15 +3062,9 @@ msgstr "Tu versión de {0} está actualizada" #~ "Asegúrate de completar los sonidos restantes o de ponerte en contacto con " #~ "el creador del paquete." -#~ msgid "Editing TWBlue users database" -#~ msgstr "Editando la base de datos de usuarios de TWBlue" - #~ msgid "See the users list" #~ msgstr "Ver lista de usuarios" -#~ msgid "TWBlue's database of users has been updated." -#~ msgstr "La base de datos de usuarios de TWBlue ha sido actualizada." - #~ msgid "Do you really want to delete this message?" #~ msgstr "¿Realmente quieres eliminar este mensaje?" @@ -3019,9 +3074,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "Do you really want to delete this favourites timeline?" #~ msgstr "¿Realmente deseas eliminar esta línea temporal de favoritos?" -#~ msgid "&Open URL" -#~ msgstr "&Abrir URL..." - #~ msgid "&Play audio" #~ msgstr "&Reproducir audio" @@ -3092,9 +3144,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "&Preferences" #~ msgstr "&Preferencias" -#~ msgid "TW Blue &website" -#~ msgstr "Sitio &web de TW Blue" - #~ msgid "About &TW Blue" #~ msgstr "&Sobre TW Blue" @@ -3119,9 +3168,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "Reconnecting streams..." #~ msgstr "Conectando los streams..." -#~ msgid "search for %s" -#~ msgstr "Buscar %s" - #~ msgid "search users for %s" #~ msgstr "Buscar usuarios para %s" @@ -3163,22 +3209,12 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "%s" #~ msgstr "%s" -#~ msgid "Preferences" -#~ msgstr "Preferencias" - #~ msgid "Documentation" #~ msgstr "Documentación" #~ msgid "Translation" #~ msgstr "Traducción" -#~ msgid "" -#~ "I know that the TW Blue bug system will get my Twitter username to " -#~ "contact me and fix the bug quickly" -#~ msgstr "" -#~ "Sé que el sistema de errores de TW Blue obtendrá mi nombre de usuario de " -#~ "Twitter para contactarme y resolver el error rápidamente" - #~ msgid "Move up one tweet in the conversation" #~ msgstr "Ir un tuit hacia arriba en la conversación" @@ -3206,9 +3242,6 @@ msgstr "Tu versión de {0} está actualizada" #~ msgid "Select a twitter account to start TW Blue" #~ msgstr "Selecciona una cuenta de Twitter para iniciar TW Blue" -#~ msgid "Account" -#~ msgstr "Cuenta" - #~ msgid "Remove session" #~ msgstr "Eliminar sesión" diff --git a/src/sessionmanager/wxUI.py b/src/sessionmanager/wxUI.py index 985d9c1e..42d0080a 100644 --- a/src/sessionmanager/wxUI.py +++ b/src/sessionmanager/wxUI.py @@ -7,13 +7,13 @@ class sessionManagerWindow(wx.Dialog): super(sessionManagerWindow, self).__init__(parent=None, title="Session manager", size=wx.DefaultSize) panel = wx.Panel(self) sizer = wx.BoxSizer(wx.VERTICAL) - label = wx.StaticText(panel, -1, u"Select a twitter account to start " + application.name, size=wx.DefaultSize) + label = wx.StaticText(panel, -1, _(u"Accounts list"), size=wx.DefaultSize) listSizer = wx.BoxSizer(wx.HORIZONTAL) - self.list = widgets.list(panel, u"Account", style=wx.LC_SINGLE_SEL|wx.LC_REPORT) + self.list = widgets.list(panel, _(u"Account"), style=wx.LC_SINGLE_SEL|wx.LC_REPORT) listSizer.Add(label, 0, wx.ALL, 5) listSizer.Add(self.list.list, 0, wx.ALL, 5) sizer.Add(listSizer, 0, wx.ALL, 5) - self.new = wx.Button(panel, -1, u"New account", size=wx.DefaultSize) + self.new = wx.Button(panel, -1, _(u"New account"), size=wx.DefaultSize) self.remove = wx.Button(panel, -1, _(u"Remove account")) self.configuration = wx.Button(panel, -1, _(u"Global Settings")) ok = wx.Button(panel, wx.ID_OK, size=wx.DefaultSize) @@ -70,4 +70,7 @@ class sessionManagerWindow(wx.Dialog): def hide_configuration(self): - self.configuration.Hide() \ No newline at end of file + self.configuration.Hide() + + def destroy(self): + self.Destroy() \ No newline at end of file diff --git a/src/setup.py b/src/setup.py index c2157829..fcbb0a0b 100644 --- a/src/setup.py +++ b/src/setup.py @@ -44,8 +44,7 @@ def get_data(): import enchant return [ ("", ["conf.defaults", "app-configuration.defaults", "icon.ico"]), - ("dropbox", ["trusted-certs.crt"]), - ("requests", ["cacert.pem"]), + ("requests", ["cacert.pem"]), ("accessible_output2/lib", glob("accessible_output2/lib/*.dll")), ("keys/lib", glob("keys/lib/*.dll")), ("keymaps", glob("keymaps/*.keymap")), diff --git a/src/trusted-certs.crt b/src/trusted-certs.crt deleted file mode 100644 index 00c2f2e7..00000000 --- a/src/trusted-certs.crt +++ /dev/null @@ -1,1396 +0,0 @@ -# DigiCert Assured ID Root CA.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 0c:e7:e0:e5:17:d8:46:fe:8f:e5:60:fc:1b:f0:30:39 -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Assured ID Root CA -# Validity -# Not Before: Nov 10 00:00:00 2006 GMT -# Not After : Nov 10 00:00:00 2031 GMT -# Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Assured ID Root CA -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:ad:0e:15:ce:e4:43:80:5c:b1:87:f3:b7:60:f9: -# 71:12:a5:ae:dc:26:94:88:aa:f4:ce:f5:20:39:28: -# 58:60:0c:f8:80:da:a9:15:95:32:61:3c:b5:b1:28: -# 84:8a:8a:dc:9f:0a:0c:83:17:7a:8f:90:ac:8a:e7: -# 79:53:5c:31:84:2a:f6:0f:98:32:36:76:cc:de:dd: -# 3c:a8:a2:ef:6a:fb:21:f2:52:61:df:9f:20:d7:1f: -# e2:b1:d9:fe:18:64:d2:12:5b:5f:f9:58:18:35:bc: -# 47:cd:a1:36:f9:6b:7f:d4:b0:38:3e:c1:1b:c3:8c: -# 33:d9:d8:2f:18:fe:28:0f:b3:a7:83:d6:c3:6e:44: -# c0:61:35:96:16:fe:59:9c:8b:76:6d:d7:f1:a2:4b: -# 0d:2b:ff:0b:72:da:9e:60:d0:8e:90:35:c6:78:55: -# 87:20:a1:cf:e5:6d:0a:c8:49:7c:31:98:33:6c:22: -# e9:87:d0:32:5a:a2:ba:13:82:11:ed:39:17:9d:99: -# 3a:72:a1:e6:fa:a4:d9:d5:17:31:75:ae:85:7d:22: -# ae:3f:01:46:86:f6:28:79:c8:b1:da:e4:57:17:c4: -# 7e:1c:0e:b0:b4:92:a6:56:b3:bd:b2:97:ed:aa:a7: -# f0:b7:c5:a8:3f:95:16:d0:ff:a1:96:eb:08:5f:18: -# 77:4f -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Key Usage: critical -# Digital Signature, Certificate Sign, CRL Sign -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Subject Key Identifier: -# 45:EB:A2:AF:F4:92:CB:82:31:2D:51:8B:A7:A7:21:9D:F3:6D:C8:0F -# X509v3 Authority Key Identifier: -# keyid:45:EB:A2:AF:F4:92:CB:82:31:2D:51:8B:A7:A7:21:9D:F3:6D:C8:0F -# -# Signature Algorithm: sha1WithRSAEncryption -# a2:0e:bc:df:e2:ed:f0:e3:72:73:7a:64:94:bf:f7:72:66:d8: -# 32:e4:42:75:62:ae:87:eb:f2:d5:d9:de:56:b3:9f:cc:ce:14: -# 28:b9:0d:97:60:5c:12:4c:58:e4:d3:3d:83:49:45:58:97:35: -# 69:1a:a8:47:ea:56:c6:79:ab:12:d8:67:81:84:df:7f:09:3c: -# 94:e6:b8:26:2c:20:bd:3d:b3:28:89:f7:5f:ff:22:e2:97:84: -# 1f:e9:65:ef:87:e0:df:c1:67:49:b3:5d:eb:b2:09:2a:eb:26: -# ed:78:be:7d:3f:2b:f3:b7:26:35:6d:5f:89:01:b6:49:5b:9f: -# 01:05:9b:ab:3d:25:c1:cc:b6:7f:c2:f1:6f:86:c6:fa:64:68: -# eb:81:2d:94:eb:42:b7:fa:8c:1e:dd:62:f1:be:50:67:b7:6c: -# bd:f3:f1:1f:6b:0c:36:07:16:7f:37:7c:a9:5b:6d:7a:f1:12: -# 46:60:83:d7:27:04:be:4b:ce:97:be:c3:67:2a:68:11:df:80: -# e7:0c:33:66:bf:13:0d:14:6e:f3:7f:1f:63:10:1e:fa:8d:1b: -# 25:6d:6c:8f:a5:b7:61:01:b1:d2:a3:26:a1:10:71:9d:ad:e2: -# c3:f9:c3:99:51:b7:2b:07:08:ce:2e:e6:50:b2:a7:fa:0a:45: -# 2f:a2:f0:f2 ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- -# DigiCert Global Root CA.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 08:3b:e0:56:90:42:46:b1:a1:75:6a:c9:59:91:c7:4a -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA -# Validity -# Not Before: Nov 10 00:00:00 2006 GMT -# Not After : Nov 10 00:00:00 2031 GMT -# Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:e2:3b:e1:11:72:de:a8:a4:d3:a3:57:aa:50:a2: -# 8f:0b:77:90:c9:a2:a5:ee:12:ce:96:5b:01:09:20: -# cc:01:93:a7:4e:30:b7:53:f7:43:c4:69:00:57:9d: -# e2:8d:22:dd:87:06:40:00:81:09:ce:ce:1b:83:bf: -# df:cd:3b:71:46:e2:d6:66:c7:05:b3:76:27:16:8f: -# 7b:9e:1e:95:7d:ee:b7:48:a3:08:da:d6:af:7a:0c: -# 39:06:65:7f:4a:5d:1f:bc:17:f8:ab:be:ee:28:d7: -# 74:7f:7a:78:99:59:85:68:6e:5c:23:32:4b:bf:4e: -# c0:e8:5a:6d:e3:70:bf:77:10:bf:fc:01:f6:85:d9: -# a8:44:10:58:32:a9:75:18:d5:d1:a2:be:47:e2:27: -# 6a:f4:9a:33:f8:49:08:60:8b:d4:5f:b4:3a:84:bf: -# a1:aa:4a:4c:7d:3e:cf:4f:5f:6c:76:5e:a0:4b:37: -# 91:9e:dc:22:e6:6d:ce:14:1a:8e:6a:cb:fe:cd:b3: -# 14:64:17:c7:5b:29:9e:32:bf:f2:ee:fa:d3:0b:42: -# d4:ab:b7:41:32:da:0c:d4:ef:f8:81:d5:bb:8d:58: -# 3f:b5:1b:e8:49:28:a2:70:da:31:04:dd:f7:b2:16: -# f2:4c:0a:4e:07:a8:ed:4a:3d:5e:b5:7f:a3:90:c3: -# af:27 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Key Usage: critical -# Digital Signature, Certificate Sign, CRL Sign -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Subject Key Identifier: -# 03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55 -# X509v3 Authority Key Identifier: -# keyid:03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55 -# -# Signature Algorithm: sha1WithRSAEncryption -# cb:9c:37:aa:48:13:12:0a:fa:dd:44:9c:4f:52:b0:f4:df:ae: -# 04:f5:79:79:08:a3:24:18:fc:4b:2b:84:c0:2d:b9:d5:c7:fe: -# f4:c1:1f:58:cb:b8:6d:9c:7a:74:e7:98:29:ab:11:b5:e3:70: -# a0:a1:cd:4c:88:99:93:8c:91:70:e2:ab:0f:1c:be:93:a9:ff: -# 63:d5:e4:07:60:d3:a3:bf:9d:5b:09:f1:d5:8e:e3:53:f4:8e: -# 63:fa:3f:a7:db:b4:66:df:62:66:d6:d1:6e:41:8d:f2:2d:b5: -# ea:77:4a:9f:9d:58:e2:2b:59:c0:40:23:ed:2d:28:82:45:3e: -# 79:54:92:26:98:e0:80:48:a8:37:ef:f0:d6:79:60:16:de:ac: -# e8:0e:cd:6e:ac:44:17:38:2f:49:da:e1:45:3e:2a:b9:36:53: -# cf:3a:50:06:f7:2e:e8:c4:57:49:6c:61:21:18:d5:04:ad:78: -# 3c:2c:3a:80:6b:a7:eb:af:15:14:e9:d8:89:c1:b9:38:6c:e2: -# 91:6c:8a:ff:64:b9:77:25:57:30:c0:1b:24:a3:e1:dc:e9:df: -# 47:7c:b5:b4:24:08:05:30:ec:2d:bd:0b:bf:45:bf:50:b9:a9: -# f3:eb:98:01:12:ad:c8:88:c6:98:34:5f:8d:0a:3c:c6:e9:d5: -# 95:95:6d:de ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- -# DigiCert High Assurance EV Root CA.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 02:ac:5c:26:6a:0b:40:9b:8f:0b:79:f2:ae:46:25:77 -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA -# Validity -# Not Before: Nov 10 00:00:00 2006 GMT -# Not After : Nov 10 00:00:00 2031 GMT -# Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:c6:cc:e5:73:e6:fb:d4:bb:e5:2d:2d:32:a6:df: -# e5:81:3f:c9:cd:25:49:b6:71:2a:c3:d5:94:34:67: -# a2:0a:1c:b0:5f:69:a6:40:b1:c4:b7:b2:8f:d0:98: -# a4:a9:41:59:3a:d3:dc:94:d6:3c:db:74:38:a4:4a: -# cc:4d:25:82:f7:4a:a5:53:12:38:ee:f3:49:6d:71: -# 91:7e:63:b6:ab:a6:5f:c3:a4:84:f8:4f:62:51:be: -# f8:c5:ec:db:38:92:e3:06:e5:08:91:0c:c4:28:41: -# 55:fb:cb:5a:89:15:7e:71:e8:35:bf:4d:72:09:3d: -# be:3a:38:50:5b:77:31:1b:8d:b3:c7:24:45:9a:a7: -# ac:6d:00:14:5a:04:b7:ba:13:eb:51:0a:98:41:41: -# 22:4e:65:61:87:81:41:50:a6:79:5c:89:de:19:4a: -# 57:d5:2e:e6:5d:1c:53:2c:7e:98:cd:1a:06:16:a4: -# 68:73:d0:34:04:13:5c:a1:71:d3:5a:7c:55:db:5e: -# 64:e1:37:87:30:56:04:e5:11:b4:29:80:12:f1:79: -# 39:88:a2:02:11:7c:27:66:b7:88:b7:78:f2:ca:0a: -# a8:38:ab:0a:64:c2:bf:66:5d:95:84:c1:a1:25:1e: -# 87:5d:1a:50:0b:20:12:cc:41:bb:6e:0b:51:38:b8: -# 4b:cb -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Key Usage: critical -# Digital Signature, Certificate Sign, CRL Sign -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Subject Key Identifier: -# B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 -# X509v3 Authority Key Identifier: -# keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 -# -# Signature Algorithm: sha1WithRSAEncryption -# 1c:1a:06:97:dc:d7:9c:9f:3c:88:66:06:08:57:21:db:21:47: -# f8:2a:67:aa:bf:18:32:76:40:10:57:c1:8a:f3:7a:d9:11:65: -# 8e:35:fa:9e:fc:45:b5:9e:d9:4c:31:4b:b8:91:e8:43:2c:8e: -# b3:78:ce:db:e3:53:79:71:d6:e5:21:94:01:da:55:87:9a:24: -# 64:f6:8a:66:cc:de:9c:37:cd:a8:34:b1:69:9b:23:c8:9e:78: -# 22:2b:70:43:e3:55:47:31:61:19:ef:58:c5:85:2f:4e:30:f6: -# a0:31:16:23:c8:e7:e2:65:16:33:cb:bf:1a:1b:a0:3d:f8:ca: -# 5e:8b:31:8b:60:08:89:2d:0c:06:5c:52:b7:c4:f9:0a:98:d1: -# 15:5f:9f:12:be:7c:36:63:38:bd:44:a4:7f:e4:26:2b:0a:c4: -# 97:69:0d:e9:8c:e2:c0:10:57:b8:c8:76:12:91:55:f2:48:69: -# d8:bc:2a:02:5b:0f:44:d4:20:31:db:f4:ba:70:26:5d:90:60: -# 9e:bc:4b:17:09:2f:b4:cb:1e:43:68:c9:07:27:c1:d2:5c:f7: -# ea:21:b9:68:12:9c:3c:9c:bf:9e:fc:80:5c:9b:63:cd:ec:47: -# aa:25:27:67:a0:37:f3:00:82:7d:54:d7:a9:f8:e9:2e:13:a3: -# 77:e8:1f:4a ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- -# Entrust Root Certification Authority - EC1.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# a6:8b:79:29:00:00:00:00:50:d0:91:f9 -# Signature Algorithm: ecdsa-with-SHA384 -# Issuer: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2012 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - EC1 -# Validity -# Not Before: Dec 18 15:25:36 2012 GMT -# Not After : Dec 18 15:55:36 2037 GMT -# Subject: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2012 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - EC1 -# Subject Public Key Info: -# Public Key Algorithm: id-ecPublicKey -# Public-Key: (384 bit) -# pub: -# 04:84:13:c9:d0:ba:6d:41:7b:e2:6c:d0:eb:55:5f: -# 66:02:1a:24:f4:5b:89:69:47:e3:b8:c2:7d:f1:f2: -# 02:c5:9f:a0:f6:5b:d5:8b:06:19:86:4f:53:10:6d: -# 07:24:27:a1:a0:f8:d5:47:19:61:4c:7d:ca:93:27: -# ea:74:0c:ef:6f:96:09:fe:63:ec:70:5d:36:ad:67: -# 77:ae:c9:9d:7c:55:44:3a:a2:63:51:1f:f5:e3:62: -# d4:a9:47:07:3e:cc:20 -# ASN1 OID: secp384r1 -# X509v3 extensions: -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Subject Key Identifier: -# B7:63:E7:1A:DD:8D:E9:08:A6:55:83:A4:E0:6A:50:41:65:11:42:49 -# Signature Algorithm: ecdsa-with-SHA384 -# 30:64:02:30:61:79:d8:e5:42:47:df:1c:ae:53:99:17:b6:6f: -# 1c:7d:e1:bf:11:94:d1:03:88:75:e4:8d:89:a4:8a:77:46:de: -# 6d:61:ef:02:f5:fb:b5:df:cc:fe:4e:ff:fe:a9:e6:a7:02:30: -# 5b:99:d7:85:37:06:b5:7b:08:fd:eb:27:8b:4a:94:f9:e1:fa: -# a7:8e:26:08:e8:7c:92:68:6d:73:d8:6f:26:ac:21:02:b8:99: -# b7:26:41:5b:25:60:ae:d0:48:1a:ee:06 ------BEGIN CERTIFICATE----- -MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG -A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 -d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu -dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq -RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy -MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD -VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g -Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi -A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt -ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH -Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC -R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX -hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G ------END CERTIFICATE----- -# Entrust Root Certification Authority - G2.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: 1246989352 (0x4a538c28) -# Signature Algorithm: sha256WithRSAEncryption -# Issuer: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2009 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - G2 -# Validity -# Not Before: Jul 7 17:25:54 2009 GMT -# Not After : Dec 7 17:55:54 2030 GMT -# Subject: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2009 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - G2 -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:ba:84:b6:72:db:9e:0c:6b:e2:99:e9:30:01:a7: -# 76:ea:32:b8:95:41:1a:c9:da:61:4e:58:72:cf:fe: -# f6:82:79:bf:73:61:06:0a:a5:27:d8:b3:5f:d3:45: -# 4e:1c:72:d6:4e:32:f2:72:8a:0f:f7:83:19:d0:6a: -# 80:80:00:45:1e:b0:c7:e7:9a:bf:12:57:27:1c:a3: -# 68:2f:0a:87:bd:6a:6b:0e:5e:65:f3:1c:77:d5:d4: -# 85:8d:70:21:b4:b3:32:e7:8b:a2:d5:86:39:02:b1: -# b8:d2:47:ce:e4:c9:49:c4:3b:a7:de:fb:54:7d:57: -# be:f0:e8:6e:c2:79:b2:3a:0b:55:e2:50:98:16:32: -# 13:5c:2f:78:56:c1:c2:94:b3:f2:5a:e4:27:9a:9f: -# 24:d7:c6:ec:d0:9b:25:82:e3:cc:c2:c4:45:c5:8c: -# 97:7a:06:6b:2a:11:9f:a9:0a:6e:48:3b:6f:db:d4: -# 11:19:42:f7:8f:07:bf:f5:53:5f:9c:3e:f4:17:2c: -# e6:69:ac:4e:32:4c:62:77:ea:b7:e8:e5:bb:34:bc: -# 19:8b:ae:9c:51:e7:b7:7e:b5:53:b1:33:22:e5:6d: -# cf:70:3c:1a:fa:e2:9b:67:b6:83:f4:8d:a5:af:62: -# 4c:4d:e0:58:ac:64:34:12:03:f8:b6:8d:94:63:24: -# a4:71 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Subject Key Identifier: -# 6A:72:26:7A:D0:1E:EF:7D:E7:3B:69:51:D4:6C:8D:9F:90:12:66:AB -# Signature Algorithm: sha256WithRSAEncryption -# 79:9f:1d:96:c6:b6:79:3f:22:8d:87:d3:87:03:04:60:6a:6b: -# 9a:2e:59:89:73:11:ac:43:d1:f5:13:ff:8d:39:2b:c0:f2:bd: -# 4f:70:8c:a9:2f:ea:17:c4:0b:54:9e:d4:1b:96:98:33:3c:a8: -# ad:62:a2:00:76:ab:59:69:6e:06:1d:7e:c4:b9:44:8d:98:af: -# 12:d4:61:db:0a:19:46:47:f3:eb:f7:63:c1:40:05:40:a5:d2: -# b7:f4:b5:9a:36:bf:a9:88:76:88:04:55:04:2b:9c:87:7f:1a: -# 37:3c:7e:2d:a5:1a:d8:d4:89:5e:ca:bd:ac:3d:6c:d8:6d:af: -# d5:f3:76:0f:cd:3b:88:38:22:9d:6c:93:9a:c4:3d:bf:82:1b: -# 65:3f:a6:0f:5d:aa:fc:e5:b2:15:ca:b5:ad:c6:bc:3d:d0:84: -# e8:ea:06:72:b0:4d:39:32:78:bf:3e:11:9c:0b:a4:9d:9a:21: -# f3:f0:9b:0b:30:78:db:c1:dc:87:43:fe:bc:63:9a:ca:c5:c2: -# 1c:c9:c7:8d:ff:3b:12:58:08:e6:b6:3d:ec:7a:2c:4e:fb:83: -# 96:ce:0c:3c:69:87:54:73:a4:73:c2:93:ff:51:10:ac:15:54: -# 01:d8:fc:05:b1:89:a1:7f:74:83:9a:49:d7:dc:4e:7b:8a:48: -# 6f:8b:45:f6 ------BEGIN CERTIFICATE----- -MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 -cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs -IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz -dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy -NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu -dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt -dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 -aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T -RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN -cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW -wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 -U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 -jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN -BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ -jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ -Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v -1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R -nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH -VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== ------END CERTIFICATE----- -# Entrust Root Certification Authority.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: 1164660820 (0x456b5054) -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=Entrust, Inc., OU=www.entrust.net/CPS is incorporated by reference, OU=(c) 2006 Entrust, Inc., CN=Entrust Root Certification Authority -# Validity -# Not Before: Nov 27 20:23:42 2006 GMT -# Not After : Nov 27 20:53:42 2026 GMT -# Subject: C=US, O=Entrust, Inc., OU=www.entrust.net/CPS is incorporated by reference, OU=(c) 2006 Entrust, Inc., CN=Entrust Root Certification Authority -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:b6:95:b6:43:42:fa:c6:6d:2a:6f:48:df:94:4c: -# 39:57:05:ee:c3:79:11:41:68:36:ed:ec:fe:9a:01: -# 8f:a1:38:28:fc:f7:10:46:66:2e:4d:1e:1a:b1:1a: -# 4e:c6:d1:c0:95:88:b0:c9:ff:31:8b:33:03:db:b7: -# 83:7b:3e:20:84:5e:ed:b2:56:28:a7:f8:e0:b9:40: -# 71:37:c5:cb:47:0e:97:2a:68:c0:22:95:62:15:db: -# 47:d9:f5:d0:2b:ff:82:4b:c9:ad:3e:de:4c:db:90: -# 80:50:3f:09:8a:84:00:ec:30:0a:3d:18:cd:fb:fd: -# 2a:59:9a:23:95:17:2c:45:9e:1f:6e:43:79:6d:0c: -# 5c:98:fe:48:a7:c5:23:47:5c:5e:fd:6e:e7:1e:b4: -# f6:68:45:d1:86:83:5b:a2:8a:8d:b1:e3:29:80:fe: -# 25:71:88:ad:be:bc:8f:ac:52:96:4b:aa:51:8d:e4: -# 13:31:19:e8:4e:4d:9f:db:ac:b3:6a:d5:bc:39:54: -# 71:ca:7a:7a:7f:90:dd:7d:1d:80:d9:81:bb:59:26: -# c2:11:fe:e6:93:e2:f7:80:e4:65:fb:34:37:0e:29: -# 80:70:4d:af:38:86:2e:9e:7f:57:af:9e:17:ae:eb: -# 1c:cb:28:21:5f:b6:1c:d8:e7:a2:04:22:f9:d3:da: -# d8:cb -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Private Key Usage Period: -# Not Before: Nov 27 20:23:42 2006 GMT, Not After: Nov 27 20:53:42 2026 GMT -# X509v3 Authority Key Identifier: -# keyid:68:90:E4:67:A4:A6:53:80:C7:86:66:A4:F1:F7:4B:43:FB:84:BD:6D -# -# X509v3 Subject Key Identifier: -# 68:90:E4:67:A4:A6:53:80:C7:86:66:A4:F1:F7:4B:43:FB:84:BD:6D -# 1.2.840.113533.7.65.0: -# 0...V7.1:4.0.... -# Signature Algorithm: sha1WithRSAEncryption -# 93:d4:30:b0:d7:03:20:2a:d0:f9:63:e8:91:0c:05:20:a9:5f: -# 19:ca:7b:72:4e:d4:b1:db:d0:96:fb:54:5a:19:2c:0c:08:f7: -# b2:bc:85:a8:9d:7f:6d:3b:52:b3:2a:db:e7:d4:84:8c:63:f6: -# 0f:cb:26:01:91:50:6c:f4:5f:14:e2:93:74:c0:13:9e:30:3a: -# 50:e3:b4:60:c5:1c:f0:22:44:8d:71:47:ac:c8:1a:c9:e9:9b: -# 9a:00:60:13:ff:70:7e:5f:11:4d:49:1b:b3:15:52:7b:c9:54: -# da:bf:9d:95:af:6b:9a:d8:9e:e9:f1:e4:43:8d:e2:11:44:3a: -# bf:af:bd:83:42:73:52:8b:aa:bb:a7:29:cf:f5:64:1c:0a:4d: -# d1:bc:aa:ac:9f:2a:d0:ff:7f:7f:da:7d:ea:b1:ed:30:25:c1: -# 84:da:34:d2:5b:78:83:56:ec:9c:36:c3:26:e2:11:f6:67:49: -# 1d:92:ab:8c:fb:eb:ff:7a:ee:85:4a:a7:50:80:f0:a7:5c:4a: -# 94:2e:5f:05:99:3c:52:41:e0:cd:b4:63:cf:01:43:ba:9c:83: -# dc:8f:60:3b:f3:5a:b4:b4:7b:ae:da:0b:90:38:75:ef:81:1d: -# 66:d2:f7:57:70:36:b3:bf:fc:28:af:71:25:85:5b:13:fe:1e: -# 7f:5a:b4:3c ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 -Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW -KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw -NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw -NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy -ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV -BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo -Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 -4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 -KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI -rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi -94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB -sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi -gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo -kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE -vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t -O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua -AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP -9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ -eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m -0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- -# Entrust.net Certification Authority (2048).pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: 946069240 (0x3863def8) -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: O=Entrust.net, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Certification Authority (2048) -# Validity -# Not Before: Dec 24 17:50:51 1999 GMT -# Not After : Jul 24 14:15:12 2029 GMT -# Subject: O=Entrust.net, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Certification Authority (2048) -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:ad:4d:4b:a9:12:86:b2:ea:a3:20:07:15:16:64: -# 2a:2b:4b:d1:bf:0b:4a:4d:8e:ed:80:76:a5:67:b7: -# 78:40:c0:73:42:c8:68:c0:db:53:2b:dd:5e:b8:76: -# 98:35:93:8b:1a:9d:7c:13:3a:0e:1f:5b:b7:1e:cf: -# e5:24:14:1e:b1:81:a9:8d:7d:b8:cc:6b:4b:03:f1: -# 02:0c:dc:ab:a5:40:24:00:7f:74:94:a1:9d:08:29: -# b3:88:0b:f5:87:77:9d:55:cd:e4:c3:7e:d7:6a:64: -# ab:85:14:86:95:5b:97:32:50:6f:3d:c8:ba:66:0c: -# e3:fc:bd:b8:49:c1:76:89:49:19:fd:c0:a8:bd:89: -# a3:67:2f:c6:9f:bc:71:19:60:b8:2d:e9:2c:c9:90: -# 76:66:7b:94:e2:af:78:d6:65:53:5d:3c:d6:9c:b2: -# cf:29:03:f9:2f:a4:50:b2:d4:48:ce:05:32:55:8a: -# fd:b2:64:4c:0e:e4:98:07:75:db:7f:df:b9:08:55: -# 60:85:30:29:f9:7b:48:a4:69:86:e3:35:3f:1e:86: -# 5d:7a:7a:15:bd:ef:00:8e:15:22:54:17:00:90:26: -# 93:bc:0e:49:68:91:bf:f8:47:d3:9d:95:42:c1:0e: -# 4d:df:6f:26:cf:c3:18:21:62:66:43:70:d6:d5:c0: -# 07:e1 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Subject Key Identifier: -# 55:E4:81:D1:11:80:BE:D8:89:B9:08:A3:31:F9:A1:24:09:16:B9:70 -# Signature Algorithm: sha1WithRSAEncryption -# 3b:9b:8f:56:9b:30:e7:53:99:7c:7a:79:a7:4d:97:d7:19:95: -# 90:fb:06:1f:ca:33:7c:46:63:8f:96:66:24:fa:40:1b:21:27: -# ca:e6:72:73:f2:4f:fe:31:99:fd:c8:0c:4c:68:53:c6:80:82: -# 13:98:fa:b6:ad:da:5d:3d:f1:ce:6e:f6:15:11:94:82:0c:ee: -# 3f:95:af:11:ab:0f:d7:2f:de:1f:03:8f:57:2c:1e:c9:bb:9a: -# 1a:44:95:eb:18:4f:a6:1f:cd:7d:57:10:2f:9b:04:09:5a:84: -# b5:6e:d8:1d:3a:e1:d6:9e:d1:6c:79:5e:79:1c:14:c5:e3:d0: -# 4c:93:3b:65:3c:ed:df:3d:be:a6:e5:95:1a:c3:b5:19:c3:bd: -# 5e:5b:bb:ff:23:ef:68:19:cb:12:93:27:5c:03:2d:6f:30:d0: -# 1e:b6:1a:ac:de:5a:f7:d1:aa:a8:27:a6:fe:79:81:c4:79:99: -# 33:57:ba:12:b0:a9:e0:42:6c:93:ca:56:de:fe:6d:84:0b:08: -# 8b:7e:8d:ea:d7:98:21:c6:f3:e7:3c:79:2f:5e:9c:d1:4c:15: -# 8d:e1:ec:22:37:cc:9a:43:0b:97:dc:80:90:8d:b3:67:9b:6f: -# 48:08:15:56:cf:bf:f1:2b:7c:5e:9a:76:e9:59:90:c5:7c:83: -# 35:11:65:51 ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 -MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub -j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo -U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf -zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b -u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ -bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er -fF6adulZkMV8gzURZVE= ------END CERTIFICATE----- -# GeoTrust Global CA.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: 144470 (0x23456) -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA -# Validity -# Not Before: May 21 04:00:00 2002 GMT -# Not After : May 21 04:00:00 2022 GMT -# Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:da:cc:18:63:30:fd:f4:17:23:1a:56:7e:5b:df: -# 3c:6c:38:e4:71:b7:78:91:d4:bc:a1:d8:4c:f8:a8: -# 43:b6:03:e9:4d:21:07:08:88:da:58:2f:66:39:29: -# bd:05:78:8b:9d:38:e8:05:b7:6a:7e:71:a4:e6:c4: -# 60:a6:b0:ef:80:e4:89:28:0f:9e:25:d6:ed:83:f3: -# ad:a6:91:c7:98:c9:42:18:35:14:9d:ad:98:46:92: -# 2e:4f:ca:f1:87:43:c1:16:95:57:2d:50:ef:89:2d: -# 80:7a:57:ad:f2:ee:5f:6b:d2:00:8d:b9:14:f8:14: -# 15:35:d9:c0:46:a3:7b:72:c8:91:bf:c9:55:2b:cd: -# d0:97:3e:9c:26:64:cc:df:ce:83:19:71:ca:4e:e6: -# d4:d5:7b:a9:19:cd:55:de:c8:ec:d2:5e:38:53:e5: -# 5c:4f:8c:2d:fe:50:23:36:fc:66:e6:cb:8e:a4:39: -# 19:00:b7:95:02:39:91:0b:0e:fe:38:2e:d1:1d:05: -# 9a:f6:4d:3e:6f:0f:07:1d:af:2c:1e:8f:60:39:e2: -# fa:36:53:13:39:d4:5e:26:2b:db:3d:a8:14:bd:32: -# eb:18:03:28:52:04:71:e5:ab:33:3d:e1:38:bb:07: -# 36:84:62:9c:79:ea:16:30:f4:5f:c0:2b:e8:71:6b: -# e4:f9 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Subject Key Identifier: -# C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E -# X509v3 Authority Key Identifier: -# keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E -# -# Signature Algorithm: sha1WithRSAEncryption -# 35:e3:29:6a:e5:2f:5d:54:8e:29:50:94:9f:99:1a:14:e4:8f: -# 78:2a:62:94:a2:27:67:9e:d0:cf:1a:5e:47:e9:c1:b2:a4:cf: -# dd:41:1a:05:4e:9b:4b:ee:4a:6f:55:52:b3:24:a1:37:0a:eb: -# 64:76:2a:2e:2c:f3:fd:3b:75:90:bf:fa:71:d8:c7:3d:37:d2: -# b5:05:95:62:b9:a6:de:89:3d:36:7b:38:77:48:97:ac:a6:20: -# 8f:2e:a6:c9:0c:c2:b2:99:45:00:c7:ce:11:51:22:22:e0:a5: -# ea:b6:15:48:09:64:ea:5e:4f:74:f7:05:3e:c7:8a:52:0c:db: -# 15:b4:bd:6d:9b:e5:c6:b1:54:68:a9:e3:69:90:b6:9a:a5:0f: -# b8:b9:3f:20:7d:ae:4a:b5:b8:9c:e4:1d:b6:ab:e6:94:a5:c1: -# c7:83:ad:db:f5:27:87:0e:04:6c:d5:ff:dd:a0:5d:ed:87:52: -# b7:2b:15:02:ae:39:a6:6a:74:e9:da:c4:e7:bc:4d:34:1e:a9: -# 5c:4d:33:5f:92:09:2f:88:66:5d:77:97:c7:1d:76:13:a9:d5: -# e5:f1:16:09:11:35:d5:ac:db:24:71:70:2c:98:56:0b:d9:17: -# b4:d1:e3:51:2b:5e:75:e8:d5:d0:dc:4f:34:ed:c2:05:66:80: -# a1:cb:e6:33 ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- -# GeoTrust Primary Certification Authority - G2.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 3c:b2:f4:48:0a:00:e2:fe:eb:24:3b:5e:60:3e:c3:6b -# Signature Algorithm: ecdsa-with-SHA384 -# Issuer: C=US, O=GeoTrust Inc., OU=(c) 2007 GeoTrust Inc. - For authorized use only, CN=GeoTrust Primary Certification Authority - G2 -# Validity -# Not Before: Nov 5 00:00:00 2007 GMT -# Not After : Jan 18 23:59:59 2038 GMT -# Subject: C=US, O=GeoTrust Inc., OU=(c) 2007 GeoTrust Inc. - For authorized use only, CN=GeoTrust Primary Certification Authority - G2 -# Subject Public Key Info: -# Public Key Algorithm: id-ecPublicKey -# Public-Key: (384 bit) -# pub: -# 04:15:b1:e8:fd:03:15:43:e5:ac:eb:87:37:11:62: -# ef:d2:83:36:52:7d:45:57:0b:4a:8d:7b:54:3b:3a: -# 6e:5f:15:02:c0:50:a6:cf:25:2f:7d:ca:48:b8:c7: -# 50:63:1c:2a:21:08:7c:9a:36:d8:0b:fe:d1:26:c5: -# 58:31:30:28:25:f3:5d:5d:a3:b8:b6:a5:b4:92:ed: -# 6c:2c:9f:eb:dd:43:89:a2:3c:4b:48:91:1d:50:ec: -# 26:df:d6:60:2e:bd:21 -# ASN1 OID: secp384r1 -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Subject Key Identifier: -# 15:5F:35:57:51:55:FB:25:B2:AD:03:69:FC:01:A3:FA:BE:11:55:D5 -# Signature Algorithm: ecdsa-with-SHA384 -# 30:64:02:30:64:96:59:a6:e8:09:de:8b:ba:fa:5a:88:88:f0: -# 1f:91:d3:46:a8:f2:4a:4c:02:63:fb:6c:5f:38:db:2e:41:93: -# a9:0e:e6:9d:dc:31:1c:b2:a0:a7:18:1c:79:e1:c7:36:02:30: -# 3a:56:af:9a:74:6c:f6:fb:83:e0:33:d3:08:5f:a1:9c:c2:5b: -# 9f:46:d6:b6:cb:91:06:63:a2:06:e7:33:ac:3e:a8:81:12:d0: -# cb:ba:d0:92:0b:b6:9e:96:aa:04:0f:8a ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL -MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj -KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 -MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw -NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV -BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL -So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal -tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG -CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT -qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz -rD6ogRLQy7rQkgu2npaqBA+K ------END CERTIFICATE----- -# GeoTrust Primary Certification Authority - G3.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 15:ac:6e:94:19:b2:79:4b:41:f6:27:a9:c3:18:0f:1f -# Signature Algorithm: sha256WithRSAEncryption -# Issuer: C=US, O=GeoTrust Inc., OU=(c) 2008 GeoTrust Inc. - For authorized use only, CN=GeoTrust Primary Certification Authority - G3 -# Validity -# Not Before: Apr 2 00:00:00 2008 GMT -# Not After : Dec 1 23:59:59 2037 GMT -# Subject: C=US, O=GeoTrust Inc., OU=(c) 2008 GeoTrust Inc. - For authorized use only, CN=GeoTrust Primary Certification Authority - G3 -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:dc:e2:5e:62:58:1d:33:57:39:32:33:fa:eb:cb: -# 87:8c:a7:d4:4a:dd:06:88:ea:64:8e:31:98:a5:38: -# 90:1e:98:cf:2e:63:2b:f0:46:bc:44:b2:89:a1:c0: -# 28:0c:49:70:21:95:9f:64:c0:a6:93:12:02:65:26: -# 86:c6:a5:89:f0:fa:d7:84:a0:70:af:4f:1a:97:3f: -# 06:44:d5:c9:eb:72:10:7d:e4:31:28:fb:1c:61:e6: -# 28:07:44:73:92:22:69:a7:03:88:6c:9d:63:c8:52: -# da:98:27:e7:08:4c:70:3e:b4:c9:12:c1:c5:67:83: -# 5d:33:f3:03:11:ec:6a:d0:53:e2:d1:ba:36:60:94: -# 80:bb:61:63:6c:5b:17:7e:df:40:94:1e:ab:0d:c2: -# 21:28:70:88:ff:d6:26:6c:6c:60:04:25:4e:55:7e: -# 7d:ef:bf:94:48:de:b7:1d:dd:70:8d:05:5f:88:a5: -# 9b:f2:c2:ee:ea:d1:40:41:6d:62:38:1d:56:06:c5: -# 03:47:51:20:19:fc:7b:10:0b:0e:62:ae:76:55:bf: -# 5f:77:be:3e:49:01:53:3d:98:25:03:76:24:5a:1d: -# b4:db:89:ea:79:e5:b6:b3:3b:3f:ba:4c:28:41:7f: -# 06:ac:6a:8e:c1:d0:f6:05:1d:7d:e6:42:86:e3:a5: -# d5:47 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Subject Key Identifier: -# C4:79:CA:8E:A1:4E:03:1D:1C:DC:6B:DB:31:5B:94:3E:3F:30:7F:2D -# Signature Algorithm: sha256WithRSAEncryption -# 2d:c5:13:cf:56:80:7b:7a:78:bd:9f:ae:2c:99:e7:ef:da:df: -# 94:5e:09:69:a7:e7:6e:68:8c:bd:72:be:47:a9:0e:97:12:b8: -# 4a:f1:64:d3:39:df:25:34:d4:c1:cd:4e:81:f0:0f:04:c4:24: -# b3:34:96:c6:a6:aa:30:df:68:61:73:d7:f9:8e:85:89:ef:0e: -# 5e:95:28:4a:2a:27:8f:10:8e:2e:7c:86:c4:02:9e:da:0c:77: -# 65:0e:44:0d:92:fd:fd:b3:16:36:fa:11:0d:1d:8c:0e:07:89: -# 6a:29:56:f7:72:f4:dd:15:9c:77:35:66:57:ab:13:53:d8:8e: -# c1:40:c5:d7:13:16:5a:72:c7:b7:69:01:c4:7a:b1:83:01:68: -# 7d:8d:41:a1:94:18:c1:25:5c:fc:f0:fe:83:02:87:7c:0d:0d: -# cf:2e:08:5c:4a:40:0d:3e:ec:81:61:e6:24:db:ca:e0:0e:2d: -# 07:b2:3e:56:dc:8d:f5:41:85:07:48:9b:0c:0b:cb:49:3f:7d: -# ec:b7:fd:cb:8d:67:89:1a:ab:ed:bb:1e:a3:00:08:08:17:2a: -# 82:5c:31:5d:46:8a:2d:0f:86:9b:74:d9:45:fb:d4:40:b1:7a: -# aa:68:2d:86:b2:99:22:e1:c1:2b:c7:9c:f8:f3:5f:a8:82:12: -# eb:19:11:2d ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB -mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT -MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ -BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 -BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz -+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm -hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn -5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W -JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL -DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC -huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw -HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB -AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB -zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN -kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH -SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G -spki4cErx5z481+oghLrGREt ------END CERTIFICATE----- -# GeoTrust Primary Certification Authority.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 18:ac:b5:6a:fd:69:b6:15:3a:63:6c:af:da:fa:c4:a1 -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority -# Validity -# Not Before: Nov 27 00:00:00 2006 GMT -# Not After : Jul 16 23:59:59 2036 GMT -# Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:be:b8:15:7b:ff:d4:7c:7d:67:ad:83:64:7b:c8: -# 42:53:2d:df:f6:84:08:20:61:d6:01:59:6a:9c:44: -# 11:af:ef:76:fd:95:7e:ce:61:30:bb:7a:83:5f:02: -# bd:01:66:ca:ee:15:8d:6f:a1:30:9c:bd:a1:85:9e: -# 94:3a:f3:56:88:00:31:cf:d8:ee:6a:96:02:d9:ed: -# 03:8c:fb:75:6d:e7:ea:b8:55:16:05:16:9a:f4:e0: -# 5e:b1:88:c0:64:85:5c:15:4d:88:c7:b7:ba:e0:75: -# e9:ad:05:3d:9d:c7:89:48:e0:bb:28:c8:03:e1:30: -# 93:64:5e:52:c0:59:70:22:35:57:88:8a:f1:95:0a: -# 83:d7:bc:31:73:01:34:ed:ef:46:71:e0:6b:02:a8: -# 35:72:6b:97:9b:66:e0:cb:1c:79:5f:d8:1a:04:68: -# 1e:47:02:e6:9d:60:e2:36:97:01:df:ce:35:92:df: -# be:67:c7:6d:77:59:3b:8f:9d:d6:90:15:94:bc:42: -# 34:10:c1:39:f9:b1:27:3e:7e:d6:8a:75:c5:b2:af: -# 96:d3:a2:de:9b:e4:98:be:7d:e1:e9:81:ad:b6:6f: -# fc:d7:0e:da:e0:34:b0:0d:1a:77:e7:e3:08:98:ef: -# 58:fa:9c:84:b7:36:af:c2:df:ac:d2:f4:10:06:70: -# 71:35 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Subject Key Identifier: -# 2C:D5:50:41:97:15:8B:F0:8F:36:61:5B:4A:FB:6B:D9:99:C9:33:92 -# Signature Algorithm: sha1WithRSAEncryption -# 5a:70:7f:2c:dd:b7:34:4f:f5:86:51:a9:26:be:4b:b8:aa:f1: -# 71:0d:dc:61:c7:a0:ea:34:1e:7a:77:0f:04:35:e8:27:8f:6c: -# 90:bf:91:16:24:46:3e:4a:4e:ce:2b:16:d5:0b:52:1d:fc:1f: -# 67:a2:02:45:31:4f:ce:f3:fa:03:a7:79:9d:53:6a:d9:da:63: -# 3a:f8:80:d7:d3:99:e1:a5:e1:be:d4:55:71:98:35:3a:be:93: -# ea:ae:ad:42:b2:90:6f:e0:fc:21:4d:35:63:33:89:49:d6:9b: -# 4e:ca:c7:e7:4e:09:00:f7:da:c7:ef:99:62:99:77:b6:95:22: -# 5e:8a:a0:ab:f4:b8:78:98:ca:38:19:99:c9:72:9e:78:cd:4b: -# ac:af:19:a0:73:12:2d:fc:c2:41:ba:81:91:da:16:5a:31:b7: -# f9:b4:71:80:12:48:99:72:73:5a:59:53:c1:63:52:33:ed:a7: -# c9:d2:39:02:70:fa:e0:b1:42:66:29:aa:9b:51:ed:30:54:22: -# 14:5f:d9:ab:1d:c1:e4:94:f0:f8:f5:2b:f7:ea:ca:78:46:d6: -# b8:91:fd:a6:0d:2b:1a:14:01:3e:80:f0:42:a0:95:07:5e:6d: -# cd:cc:4b:a4:45:8d:ab:12:e8:b3:de:5a:e5:a0:7c:e8:0f:22: -# 1d:5a:e9:59 ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY -MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo -R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx -MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 -AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA -ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 -7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W -kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI -mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ -KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 -6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl -4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K -oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj -UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU -AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- -# Go Daddy Class 2 Certification Authority.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: 0 (0x0) -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority -# Validity -# Not Before: Jun 29 17:06:20 2004 GMT -# Not After : Jun 29 17:06:20 2034 GMT -# Subject: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:de:9d:d7:ea:57:18:49:a1:5b:eb:d7:5f:48:86: -# ea:be:dd:ff:e4:ef:67:1c:f4:65:68:b3:57:71:a0: -# 5e:77:bb:ed:9b:49:e9:70:80:3d:56:18:63:08:6f: -# da:f2:cc:d0:3f:7f:02:54:22:54:10:d8:b2:81:d4: -# c0:75:3d:4b:7f:c7:77:c3:3e:78:ab:1a:03:b5:20: -# 6b:2f:6a:2b:b1:c5:88:7e:c4:bb:1e:b0:c1:d8:45: -# 27:6f:aa:37:58:f7:87:26:d7:d8:2d:f6:a9:17:b7: -# 1f:72:36:4e:a6:17:3f:65:98:92:db:2a:6e:5d:a2: -# fe:88:e0:0b:de:7f:e5:8d:15:e1:eb:cb:3a:d5:e2: -# 12:a2:13:2d:d8:8e:af:5f:12:3d:a0:08:05:08:b6: -# 5c:a5:65:38:04:45:99:1e:a3:60:60:74:c5:41:a5: -# 72:62:1b:62:c5:1f:6f:5f:1a:42:be:02:51:65:a8: -# ae:23:18:6a:fc:78:03:a9:4d:7f:80:c3:fa:ab:5a: -# fc:a1:40:a4:ca:19:16:fe:b2:c8:ef:5e:73:0d:ee: -# 77:bd:9a:f6:79:98:bc:b1:07:67:a2:15:0d:dd:a0: -# 58:c6:44:7b:0a:3e:62:28:5f:ba:41:07:53:58:cf: -# 11:7e:38:74:c5:f8:ff:b5:69:90:8f:84:74:ea:97: -# 1b:af -# Exponent: 3 (0x3) -# X509v3 extensions: -# X509v3 Subject Key Identifier: -# D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 -# X509v3 Authority Key Identifier: -# keyid:D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 -# DirName:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority -# serial:00 -# -# X509v3 Basic Constraints: -# CA:TRUE -# Signature Algorithm: sha1WithRSAEncryption -# 32:4b:f3:b2:ca:3e:91:fc:12:c6:a1:07:8c:8e:77:a0:33:06: -# 14:5c:90:1e:18:f7:08:a6:3d:0a:19:f9:87:80:11:6e:69:e4: -# 96:17:30:ff:34:91:63:72:38:ee:cc:1c:01:a3:1d:94:28:a4: -# 31:f6:7a:c4:54:d7:f6:e5:31:58:03:a2:cc:ce:62:db:94:45: -# 73:b5:bf:45:c9:24:b5:d5:82:02:ad:23:79:69:8d:b8:b6:4d: -# ce:cf:4c:ca:33:23:e8:1c:88:aa:9d:8b:41:6e:16:c9:20:e5: -# 89:9e:cd:3b:da:70:f7:7e:99:26:20:14:54:25:ab:6e:73:85: -# e6:9b:21:9d:0a:6c:82:0e:a8:f8:c2:0c:fa:10:1e:6c:96:ef: -# 87:0d:c4:0f:61:8b:ad:ee:83:2b:95:f8:8e:92:84:72:39:eb: -# 20:ea:83:ed:83:cd:97:6e:08:bc:eb:4e:26:b6:73:2b:e4:d3: -# f6:4c:fe:26:71:e2:61:11:74:4a:ff:57:1a:87:0f:75:48:2e: -# cf:51:69:17:a0:02:12:61:95:d5:d1:40:b2:10:4c:ee:c4:ac: -# 10:43:a6:a5:9e:0a:d5:95:62:9a:0d:cf:88:82:c5:32:0c:e4: -# 2b:9f:45:e6:0d:9f:28:9c:b1:b9:2a:5a:57:ad:37:0f:af:1d: -# 7f:db:bd:9f ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- -# Go Daddy Root Certificate Authority - G2.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: 0 (0x0) -# Signature Algorithm: sha256WithRSAEncryption -# Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., CN=Go Daddy Root Certificate Authority - G2 -# Validity -# Not Before: Sep 1 00:00:00 2009 GMT -# Not After : Dec 31 23:59:59 2037 GMT -# Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., CN=Go Daddy Root Certificate Authority - G2 -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:bf:71:62:08:f1:fa:59:34:f7:1b:c9:18:a3:f7: -# 80:49:58:e9:22:83:13:a6:c5:20:43:01:3b:84:f1: -# e6:85:49:9f:27:ea:f6:84:1b:4e:a0:b4:db:70:98: -# c7:32:01:b1:05:3e:07:4e:ee:f4:fa:4f:2f:59:30: -# 22:e7:ab:19:56:6b:e2:80:07:fc:f3:16:75:80:39: -# 51:7b:e5:f9:35:b6:74:4e:a9:8d:82:13:e4:b6:3f: -# a9:03:83:fa:a2:be:8a:15:6a:7f:de:0b:c3:b6:19: -# 14:05:ca:ea:c3:a8:04:94:3b:46:7c:32:0d:f3:00: -# 66:22:c8:8d:69:6d:36:8c:11:18:b7:d3:b2:1c:60: -# b4:38:fa:02:8c:ce:d3:dd:46:07:de:0a:3e:eb:5d: -# 7c:c8:7c:fb:b0:2b:53:a4:92:62:69:51:25:05:61: -# 1a:44:81:8c:2c:a9:43:96:23:df:ac:3a:81:9a:0e: -# 29:c5:1c:a9:e9:5d:1e:b6:9e:9e:30:0a:39:ce:f1: -# 88:80:fb:4b:5d:cc:32:ec:85:62:43:25:34:02:56: -# 27:01:91:b4:3b:70:2a:3f:6e:b1:e8:9c:88:01:7d: -# 9f:d4:f9:db:53:6d:60:9d:bf:2c:e7:58:ab:b8:5f: -# 46:fc:ce:c4:1b:03:3c:09:eb:49:31:5c:69:46:b3: -# e0:47 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Subject Key Identifier: -# 3A:9A:85:07:10:67:28:B6:EF:F6:BD:05:41:6E:20:C1:94:DA:0F:DE -# Signature Algorithm: sha256WithRSAEncryption -# 99:db:5d:79:d5:f9:97:59:67:03:61:f1:7e:3b:06:31:75:2d: -# a1:20:8e:4f:65:87:b4:f7:a6:9c:bc:d8:e9:2f:d0:db:5a:ee: -# cf:74:8c:73:b4:38:42:da:05:7b:f8:02:75:b8:fd:a5:b1:d7: -# ae:f6:d7:de:13:cb:53:10:7e:8a:46:d1:97:fa:b7:2e:2b:11: -# ab:90:b0:27:80:f9:e8:9f:5a:e9:37:9f:ab:e4:df:6c:b3:85: -# 17:9d:3d:d9:24:4f:79:91:35:d6:5f:04:eb:80:83:ab:9a:02: -# 2d:b5:10:f4:d8:90:c7:04:73:40:ed:72:25:a0:a9:9f:ec:9e: -# ab:68:12:99:57:c6:8f:12:3a:09:a4:bd:44:fd:06:15:37:c1: -# 9b:e4:32:a3:ed:38:e8:d8:64:f3:2c:7e:14:fc:02:ea:9f:cd: -# ff:07:68:17:db:22:90:38:2d:7a:8d:d1:54:f1:69:e3:5f:33: -# ca:7a:3d:7b:0a:e3:ca:7f:5f:39:e5:e2:75:ba:c5:76:18:33: -# ce:2c:f0:2f:4c:ad:f7:b1:e7:ce:4f:a8:c4:9b:4a:54:06:c5: -# 7f:7d:d5:08:0f:e2:1c:fe:7e:17:b8:ac:5e:f6:d4:16:b2:43: -# 09:0c:4d:f6:a7:6b:b4:99:84:65:ca:7a:88:e2:e2:44:be:5c: -# f7:ea:1c:f5 ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT -EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp -ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz -NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH -EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE -AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD -E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH -/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy -DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh -GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR -tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA -AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX -WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu -9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr -gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo -2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI -4uJEvlz36hz1 ------END CERTIFICATE----- -# Go Daddy Secure Certification Authority serialNumber=07969287.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: 769 (0x301) -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority -# Validity -# Not Before: Nov 16 01:54:37 2006 GMT -# Not After : Nov 16 01:54:37 2026 GMT -# Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certificates.godaddy.com/repository, CN=Go Daddy Secure Certification Authority/serialNumber=07969287 -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:c4:2d:d5:15:8c:9c:26:4c:ec:32:35:eb:5f:b8: -# 59:01:5a:a6:61:81:59:3b:70:63:ab:e3:dc:3d:c7: -# 2a:b8:c9:33:d3:79:e4:3a:ed:3c:30:23:84:8e:b3: -# 30:14:b6:b2:87:c3:3d:95:54:04:9e:df:99:dd:0b: -# 25:1e:21:de:65:29:7e:35:a8:a9:54:eb:f6:f7:32: -# 39:d4:26:55:95:ad:ef:fb:fe:58:86:d7:9e:f4:00: -# 8d:8c:2a:0c:bd:42:04:ce:a7:3f:04:f6:ee:80:f2: -# aa:ef:52:a1:69:66:da:be:1a:ad:5d:da:2c:66:ea: -# 1a:6b:bb:e5:1a:51:4a:00:2f:48:c7:98:75:d8:b9: -# 29:c8:ee:f8:66:6d:0a:9c:b3:f3:fc:78:7c:a2:f8: -# a3:f2:b5:c3:f3:b9:7a:91:c1:a7:e6:25:2e:9c:a8: -# ed:12:65:6e:6a:f6:12:44:53:70:30:95:c3:9c:2b: -# 58:2b:3d:08:74:4a:f2:be:51:b0:bf:87:d0:4c:27: -# 58:6b:b5:35:c5:9d:af:17:31:f8:0b:8f:ee:ad:81: -# 36:05:89:08:98:cf:3a:af:25:87:c0:49:ea:a7:fd: -# 67:f7:45:8e:97:cc:14:39:e2:36:85:b5:7e:1a:37: -# fd:16:f6:71:11:9a:74:30:16:fe:13:94:a3:3f:84: -# 0d:4f -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Subject Key Identifier: -# FD:AC:61:32:93:6C:45:D6:E2:EE:85:5F:9A:BA:E7:76:99:68:CC:E7 -# X509v3 Authority Key Identifier: -# keyid:D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 -# -# X509v3 Basic Constraints: critical -# CA:TRUE, pathlen:0 -# Authority Information Access: -# OCSP - URI:http://ocsp.godaddy.com -# -# X509v3 CRL Distribution Points: -# -# Full Name: -# URI:http://certificates.godaddy.com/repository/gdroot.crl -# -# X509v3 Certificate Policies: -# Policy: X509v3 Any Policy -# CPS: http://certificates.godaddy.com/repository -# -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# Signature Algorithm: sha1WithRSAEncryption -# d2:86:c0:ec:bd:f9:a1:b6:67:ee:66:0b:a2:06:3a:04:50:8e: -# 15:72:ac:4a:74:95:53:cb:37:cb:44:49:ef:07:90:6b:33:d9: -# 96:f0:94:56:a5:13:30:05:3c:85:32:21:7b:c9:c7:0a:a8:24: -# a4:90:de:46:d3:25:23:14:03:67:c2:10:d6:6f:0f:5d:7b:7a: -# cc:9f:c5:58:2a:c1:c4:9e:21:a8:5a:f3:ac:a4:46:f3:9e:e4: -# 63:cb:2f:90:a4:29:29:01:d9:72:2c:29:df:37:01:27:bc:4f: -# ee:68:d3:21:8f:c0:b3:e4:f5:09:ed:d2:10:aa:53:b4:be:f0: -# cc:59:0b:d6:3b:96:1c:95:24:49:df:ce:ec:fd:a7:48:91:14: -# 45:0e:3a:36:6f:da:45:b3:45:a2:41:c9:d4:d7:44:4e:3e:b9: -# 74:76:d5:a2:13:55:2c:c6:87:a3:b5:99:ac:06:84:87:7f:75: -# 06:fc:bf:14:4c:0e:cc:6e:c4:df:3d:b7:12:71:f4:e8:f1:51: -# 40:22:28:49:e0:1d:4b:87:a8:34:cc:06:a2:dd:12:5a:d1:86: -# 36:64:03:35:6f:6f:77:6e:eb:f2:85:50:98:5e:ab:03:53:ad: -# 91:23:63:1f:16:9c:cd:b9:b2:05:63:3a:e1:f4:68:1b:17:05: -# 35:95:53:ee ------BEGIN CERTIFICATE----- -MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx -ITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g -RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMTYw -MTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH -QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j -b20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j -b20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTtwY6vj3D3H -KrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqVTr9vcyOdQm -VZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aLGbqGmu75RpR -SgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo7RJlbmr2EkRT -cDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgWJCJjPOq8lh8BJ -6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAwEAAaOCATIwggEu -MB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVHSMEGDAWgBTSxLDS -kdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEAMDMGCCsGAQUFBwEB -BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWRkeS5jb20wRgYDVR0f -BD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv -c2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVHSAAMDgwNgYIKwYBBQUH -AgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeTAO -BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBANKGwOy9+aG2Z+5mC6IG -OgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPIUyIXvJxwqoJKSQ3kbTJSMU -A2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL5CkKSkB2XIsKd83ASe8T+5o -0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9p0iRFEUOOjZv2kWzRaJBydTX -RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH -qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV -U+4= ------END CERTIFICATE----- -# Thawte Premium Server CA.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: 1 (0x1) -# Signature Algorithm: md5WithRSAEncryption -# Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com -# Validity -# Not Before: Aug 1 00:00:00 1996 GMT -# Not After : Dec 31 23:59:59 2020 GMT -# Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (1024 bit) -# Modulus: -# 00:d2:36:36:6a:8b:d7:c2:5b:9e:da:81:41:62:8f: -# 38:ee:49:04:55:d6:d0:ef:1c:1b:95:16:47:ef:18: -# 48:35:3a:52:f4:2b:6a:06:8f:3b:2f:ea:56:e3:af: -# 86:8d:9e:17:f7:9e:b4:65:75:02:4d:ef:cb:09:a2: -# 21:51:d8:9b:d0:67:d0:ba:0d:92:06:14:73:d4:93: -# cb:97:2a:00:9c:5c:4e:0c:bc:fa:15:52:fc:f2:44: -# 6e:da:11:4a:6e:08:9f:2f:2d:e3:f9:aa:3a:86:73: -# b6:46:53:58:c8:89:05:bd:83:11:b8:73:3f:aa:07: -# 8d:f4:42:4d:e7:40:9d:1c:37 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# Signature Algorithm: md5WithRSAEncryption -# 26:48:2c:16:c2:58:fa:e8:16:74:0c:aa:aa:5f:54:3f:f2:d7: -# c9:78:60:5e:5e:6e:37:63:22:77:36:7e:b2:17:c4:34:b9:f5: -# 08:85:fc:c9:01:38:ff:4d:be:f2:16:42:43:e7:bb:5a:46:fb: -# c1:c6:11:1f:f1:4a:b0:28:46:c9:c3:c4:42:7d:bc:fa:ab:59: -# 6e:d5:b7:51:88:11:e3:a4:85:19:6b:82:4c:a4:0c:12:ad:e9: -# a4:ae:3f:f1:c3:49:65:9a:8c:c5:c8:3e:25:b7:94:99:bb:92: -# 32:71:07:f0:86:5e:ed:50:27:a6:0d:a6:23:f9:bb:cb:a6:07: -# 14:42 ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- -# Thawte Primary Root CA - G2.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 35:fc:26:5c:d9:84:4f:c9:3d:26:3d:57:9b:ae:d7:56 -# Signature Algorithm: ecdsa-with-SHA384 -# Issuer: C=US, O=thawte, Inc., OU=(c) 2007 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA - G2 -# Validity -# Not Before: Nov 5 00:00:00 2007 GMT -# Not After : Jan 18 23:59:59 2038 GMT -# Subject: C=US, O=thawte, Inc., OU=(c) 2007 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA - G2 -# Subject Public Key Info: -# Public Key Algorithm: id-ecPublicKey -# Public-Key: (384 bit) -# pub: -# 04:a2:d5:9c:82:7b:95:9d:f1:52:78:87:fe:8a:16: -# bf:05:e6:df:a3:02:4f:0d:07:c6:00:51:ba:0c:02: -# 52:2d:22:a4:42:39:c4:fe:8f:ea:c9:c1:be:d4:4d: -# ff:9f:7a:9e:e2:b1:7c:9a:ad:a7:86:09:73:87:d1: -# e7:9a:e3:7a:a5:aa:6e:fb:ba:b3:70:c0:67:88:a2: -# 35:d4:a3:9a:b1:fd:ad:c2:ef:31:fa:a8:b9:f3:fb: -# 08:c6:91:d1:fb:29:95 -# ASN1 OID: secp384r1 -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Subject Key Identifier: -# 9A:D8:00:30:00:E7:6B:7F:85:18:EE:8B:B6:CE:8A:0C:F8:11:E1:BB -# Signature Algorithm: ecdsa-with-SHA384 -# 30:66:02:31:00:dd:f8:e0:57:47:5b:a7:e6:0a:c3:bd:f5:80: -# 8a:97:35:0d:1b:89:3c:54:86:77:28:ca:a1:f4:79:de:b5:e6: -# 38:b0:f0:65:70:8c:7f:02:54:c2:bf:ff:d8:a1:3e:d9:cf:02: -# 31:00:c4:8d:94:fc:dc:53:d2:dc:9d:78:16:1f:15:33:23:53: -# 52:e3:5a:31:5d:9d:ca:ae:bd:13:29:44:0d:27:5b:a8:e7:68: -# 9c:12:f7:58:3f:2e:72:02:57:a3:8f:a1:14:2e ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp -IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi -BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw -MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig -YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v -dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ -BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 -papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K -DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 -KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox -XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE----- -# Thawte Primary Root CA - G3.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 60:01:97:b7:46:a7:ea:b4:b4:9a:d6:4b:2f:f7:90:fb -# Signature Algorithm: sha256WithRSAEncryption -# Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2008 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA - G3 -# Validity -# Not Before: Apr 2 00:00:00 2008 GMT -# Not After : Dec 1 23:59:59 2037 GMT -# Subject: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2008 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA - G3 -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:b2:bf:27:2c:fb:db:d8:5b:dd:78:7b:1b:9e:77: -# 66:81:cb:3e:bc:7c:ae:f3:a6:27:9a:34:a3:68:31: -# 71:38:33:62:e4:f3:71:66:79:b1:a9:65:a3:a5:8b: -# d5:8f:60:2d:3f:42:cc:aa:6b:32:c0:23:cb:2c:41: -# dd:e4:df:fc:61:9c:e2:73:b2:22:95:11:43:18:5f: -# c4:b6:1f:57:6c:0a:05:58:22:c8:36:4c:3a:7c:a5: -# d1:cf:86:af:88:a7:44:02:13:74:71:73:0a:42:59: -# 02:f8:1b:14:6b:42:df:6f:5f:ba:6b:82:a2:9d:5b: -# e7:4a:bd:1e:01:72:db:4b:74:e8:3b:7f:7f:7d:1f: -# 04:b4:26:9b:e0:b4:5a:ac:47:3d:55:b8:d7:b0:26: -# 52:28:01:31:40:66:d8:d9:24:bd:f6:2a:d8:ec:21: -# 49:5c:9b:f6:7a:e9:7f:55:35:7e:96:6b:8d:93:93: -# 27:cb:92:bb:ea:ac:40:c0:9f:c2:f8:80:cf:5d:f4: -# 5a:dc:ce:74:86:a6:3e:6c:0b:53:ca:bd:92:ce:19: -# 06:72:e6:0c:5c:38:69:c7:04:d6:bc:6c:ce:5b:f6: -# f7:68:9c:dc:25:15:48:88:a1:e9:a9:f8:98:9c:e0: -# f3:d5:31:28:61:11:6c:67:96:8d:39:99:cb:c2:45: -# 24:39 -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Subject Key Identifier: -# AD:6C:AA:94:60:9C:ED:E4:FF:FA:3E:0A:74:2B:63:03:F7:B6:59:BF -# Signature Algorithm: sha256WithRSAEncryption -# 1a:40:d8:95:65:ac:09:92:89:c6:39:f4:10:e5:a9:0e:66:53: -# 5d:78:de:fa:24:91:bb:e7:44:51:df:c6:16:34:0a:ef:6a:44: -# 51:ea:2b:07:8a:03:7a:c3:eb:3f:0a:2c:52:16:a0:2b:43:b9: -# 25:90:3f:70:a9:33:25:6d:45:1a:28:3b:27:cf:aa:c3:29:42: -# 1b:df:3b:4c:c0:33:34:5b:41:88:bf:6b:2b:65:af:28:ef:b2: -# f5:c3:aa:66:ce:7b:56:ee:b7:c8:cb:67:c1:c9:9c:1a:18:b8: -# c4:c3:49:03:f1:60:0e:50:cd:46:c5:f3:77:79:f7:b6:15:e0: -# 38:db:c7:2f:28:a0:0c:3f:77:26:74:d9:25:12:da:31:da:1a: -# 1e:dc:29:41:91:22:3c:69:a7:bb:02:f2:b6:5c:27:03:89:f4: -# 06:ea:9b:e4:72:82:e3:a1:09:c1:e9:00:19:d3:3e:d4:70:6b: -# ba:71:a6:aa:58:ae:f4:bb:e9:6c:b6:ef:87:cc:9b:bb:ff:39: -# e6:56:61:d3:0a:a7:c4:5c:4c:60:7b:05:77:26:7a:bf:d8:07: -# 52:2c:62:f7:70:63:d9:39:bc:6f:1c:c2:79:dc:76:29:af:ce: -# c5:2c:64:04:5e:88:36:6e:31:d4:40:1a:62:34:36:3f:35:01: -# ae:ac:63:a0 ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB -rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV -BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa -Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl -LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u -MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl -ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm -gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 -YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf -b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 -9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S -zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk -OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV -HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA -2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW -oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c -KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM -m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu -MdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE----- -# Thawte Primary Root CA.pem -# Certificate: -# Data: -# Version: 3 (0x2) -# Serial Number: -# 34:4e:d5:57:20:d5:ed:ec:49:f4:2f:ce:37:db:2b:6d -# Signature Algorithm: sha1WithRSAEncryption -# Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA -# Validity -# Not Before: Nov 17 00:00:00 2006 GMT -# Not After : Jul 16 23:59:59 2036 GMT -# Subject: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA -# Subject Public Key Info: -# Public Key Algorithm: rsaEncryption -# Public-Key: (2048 bit) -# Modulus: -# 00:ac:a0:f0:fb:80:59:d4:9c:c7:a4:cf:9d:a1:59: -# 73:09:10:45:0c:0d:2c:6e:68:f1:6c:5b:48:68:49: -# 59:37:fc:0b:33:19:c2:77:7f:cc:10:2d:95:34:1c: -# e6:eb:4d:09:a7:1c:d2:b8:c9:97:36:02:b7:89:d4: -# 24:5f:06:c0:cc:44:94:94:8d:02:62:6f:eb:5a:dd: -# 11:8d:28:9a:5c:84:90:10:7a:0d:bd:74:66:2f:6a: -# 38:a0:e2:d5:54:44:eb:1d:07:9f:07:ba:6f:ee:e9: -# fd:4e:0b:29:f5:3e:84:a0:01:f1:9c:ab:f8:1c:7e: -# 89:a4:e8:a1:d8:71:65:0d:a3:51:7b:ee:bc:d2:22: -# 60:0d:b9:5b:9d:df:ba:fc:51:5b:0b:af:98:b2:e9: -# 2e:e9:04:e8:62:87:de:2b:c8:d7:4e:c1:4c:64:1e: -# dd:cf:87:58:ba:4a:4f:ca:68:07:1d:1c:9d:4a:c6: -# d5:2f:91:cc:7c:71:72:1c:c5:c0:67:eb:32:fd:c9: -# 92:5c:94:da:85:c0:9b:bf:53:7d:2b:09:f4:8c:9d: -# 91:1f:97:6a:52:cb:de:09:36:a4:77:d8:7b:87:50: -# 44:d5:3e:6e:29:69:fb:39:49:26:1e:09:a5:80:7b: -# 40:2d:eb:e8:27:85:c9:fe:61:fd:7e:e6:7c:97:1d: -# d5:9d -# Exponent: 65537 (0x10001) -# X509v3 extensions: -# X509v3 Basic Constraints: critical -# CA:TRUE -# X509v3 Key Usage: critical -# Certificate Sign, CRL Sign -# X509v3 Subject Key Identifier: -# 7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 -# Signature Algorithm: sha1WithRSAEncryption -# 79:11:c0:4b:b3:91:b6:fc:f0:e9:67:d4:0d:6e:45:be:55:e8: -# 93:d2:ce:03:3f:ed:da:25:b0:1d:57:cb:1e:3a:76:a0:4c:ec: -# 50:76:e8:64:72:0c:a4:a9:f1:b8:8b:d6:d6:87:84:bb:32:e5: -# 41:11:c0:77:d9:b3:60:9d:eb:1b:d5:d1:6e:44:44:a9:a6:01: -# ec:55:62:1d:77:b8:5c:8e:48:49:7c:9c:3b:57:11:ac:ad:73: -# 37:8e:2f:78:5c:90:68:47:d9:60:60:e6:fc:07:3d:22:20:17: -# c4:f7:16:e9:c4:d8:72:f9:c8:73:7c:df:16:2f:15:a9:3e:fd: -# 6a:27:b6:a1:eb:5a:ba:98:1f:d5:e3:4d:64:0a:9d:13:c8:61: -# ba:f5:39:1c:87:ba:b8:bd:7b:22:7f:f6:fe:ac:40:79:e5:ac: -# 10:6f:3d:8f:1b:79:76:8b:c4:37:b3:21:18:84:e5:36:00:eb: -# 63:20:99:b9:e9:fe:33:04:bb:41:c8:c1:02:f9:44:63:20:9e: -# 81:ce:42:d3:d6:3f:2c:76:d3:63:9c:59:dd:8f:a6:e1:0e:a0: -# 2e:41:f7:2e:95:47:cf:bc:fd:33:f3:f6:0b:61:7e:7e:91:2b: -# 81:47:c2:27:30:ee:a7:10:5d:37:8f:5c:39:2b:e4:04:f0:7b: -# 8d:56:8c:68 ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB -qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV -BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw -NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j -LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG -A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs -W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta -3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk -6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 -Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J -NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP -r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU -DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz -YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 -/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ -LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 -jVaMaA== ------END CERTIFICATE----- diff --git a/src/twitter/compose.py b/src/twitter/compose.py index e98e793e..0a3cf628 100644 --- a/src/twitter/compose.py +++ b/src/twitter/compose.py @@ -119,8 +119,8 @@ def compose_event(data, username): if data["source"]["screen_name"] == username: event = _(u"You've unsubscribed from the list %s, which is owned by %s(@%s)") % (data["target_object"]["name"], data["target"]["name"], data["target"]["screen_name"]) else: event = _("You've been unsubscribed from the list %s, which is owned by %s(@%s)") % (data["target_object"]["name"], data["source"]["name"], data["source"]["screen_name"]) elif data["event"] == "retweeted_retweet": - if data["source"]["screen_name"] == username: event = _(u"You have retweeted a retweet from %s(@%s): %s" % (data["target"]["name"], data["target"]["screen_name"], data["target_object"]["text"])) - else: event = _(u"%s(@%s) has retweeted your retweet: %s" % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["text"])) + if data["source"]["screen_name"] == username: event = _(u"You have retweeted a retweet from %s(@%s): %s") % (data["target"]["name"], data["target"]["screen_name"], data["target_object"]["text"]) + else: event = _(u"%s(@%s) has retweeted your retweet: %s") % (data["source"]["name"], data["source"]["screen_name"], data["target_object"]["text"]) else: event = _("Unknown") log.error("event: %s\n target: %s\n source: %s\n target_object: %s" % (data["event"], data["target"], data["source"], data["target_object"])) diff --git a/src/widgetUtils/__init__.py b/src/widgetUtils/__init__.py index c413d4f8..30509ef6 100644 --- a/src/widgetUtils/__init__.py +++ b/src/widgetUtils/__init__.py @@ -1,5 +1,5 @@ import platform if platform.system() == "Windows": from wxUtils import * -elif platform.system() == "Linux": - from gtkUtils import * +#elif platform.system() == "Linux": +# from gtkUtils import * diff --git a/src/wxUI/commonMessageDialogs.py b/src/wxUI/commonMessageDialogs.py index 4c9c1fce..b8cb6442 100644 --- a/src/wxUI/commonMessageDialogs.py +++ b/src/wxUI/commonMessageDialogs.py @@ -2,7 +2,7 @@ import wx import application def retweet_as_link(parent): - return wx.MessageDialog(parent, _(u"This retweet is over 140 characters. Would you like to post it as a mention to the poster with your comments and a link to the original tweet?"), _(application.name), wx.YES_NO|wx.ICON_QUESTION).ShowModal() + return wx.MessageDialog(parent, _(u"This retweet is over 140 characters. Would you like to post it as a mention to the poster with your comments and a link to the original tweet?"), application.name, wx.YES_NO|wx.ICON_QUESTION).ShowModal() def retweet_question(parent): return wx.MessageDialog(parent, _(u"Would you like to add a comment to this tweet?"), _("Retweet"), wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION).ShowModal() @@ -15,7 +15,7 @@ def exit_dialog(parent): return dlg.ShowModal() def needs_restart(): - wx.MessageDialog(None, _(unicode(application.name) + u" must be restarted for these changes to take effect."), _("Restart " + application.name), wx.OK).ShowModal() + wx.MessageDialog(None, _(u" {0} must be restarted for these changes to take effect.").format(application.name,), _("Restart {0} ").format(application.name,), wx.OK).ShowModal() def delete_user_from_db(): return wx.MessageDialog(None, _(u"Are you sure you want to delete this user from the database? This user will not appear on the autocomplete results anymore."), _(u"Confirm"), wx.YES_NO|wx.ICON_QUESTION).ShowModal() diff --git a/src/wxUI/dialogs/configuration.py b/src/wxUI/dialogs/configuration.py index 3a55a28f..b2565266 100644 --- a/src/wxUI/dialogs/configuration.py +++ b/src/wxUI/dialogs/configuration.py @@ -269,7 +269,7 @@ class servicesPanel(wx.Panel): def __init__(self, parent): super(servicesPanel, self).__init__(parent) mainSizer = wx.BoxSizer(wx.VERTICAL) - apiKeyLabel = wx.StaticText(self, -1, _(u"If you have a SndUp account, enter your API Key here. If your API Key is invalid, " + application.name + " will fail to upload. If there is no API Key here, " + application.name + " will upload annonymously.")) + apiKeyLabel = wx.StaticText(self, -1, _(u"If you have a SndUp account, enter your API Key here. If your API Key is invalid, {0} will fail to upload. If there is no API Key here, {0} will upload annonymously.").format(application.name,)) self.apiKey = wx.TextCtrl(self, -1) dc = wx.WindowDC(self.apiKey) dc.SetFont(self.apiKey.GetFont()) @@ -305,7 +305,7 @@ class configurationDialog(baseDialog.BaseWXDialog): def __init__(self): super(configurationDialog, self).__init__(None, -1) self.panel = wx.Panel(self) - self.SetTitle(_(unicode(application.name + " preferences"))) + self.SetTitle(_(u"{0} preferences").format(application.name,)) self.sizer = wx.BoxSizer(wx.VERTICAL) self.notebook = wx.Notebook(self.panel) diff --git a/src/wxUI/view.py b/src/wxUI/view.py index 598ee33c..155d61d0 100644 --- a/src/wxUI/view.py +++ b/src/wxUI/view.py @@ -67,8 +67,8 @@ class mainFrame(wx.Frame): self.changelog.Enable(False) self.check_for_updates = help.Append(wx.NewId(), _(u"&Check for updates")) self.reportError = help.Append(wx.NewId(), _(u"&Report an error")) - self.visit_website = help.Append(-1, _(unicode(application.name+"'s &website"))) - self.about = help.Append(-1, _(u"About &"+application.name)) + self.visit_website = help.Append(-1, _(u"{0}'s &website").format(application.name,)) + self.about = help.Append(-1, _(u"About &{0}").format(application.name,)) # Add all to the menu Bar menuBar.Append(app, _(u"&Application")) @@ -179,4 +179,4 @@ class mainFrame(wx.Frame): getattr(self, menuitem).Check(check) def no_update_available(): - wx.MessageDialog(None, _(u"Your {0} version is up to date").format(application.name,), _(u"Update"), style=wx.OK).ShowModal() + wx.MessageDialog(None, _(u"Your {0} version is up to date").format(application.name,), _(u"Update"), style=wx.OK).ShowModal() \ No newline at end of file diff --git a/tools/genpot.bat b/tools/genpot.bat index e8d1b86e..dd621a6e 100644 --- a/tools/genpot.bat +++ b/tools/genpot.bat @@ -1,4 +1,4 @@ @echo off echo Generating application translation strings... -C:\python27\python.exe pygettext.py -v -d twblue ../src/*.pyw ../src/*.py ../src/*/*.py ../src/*/*.pyw ../src/*/*/*.py ../src/*/*/*.pyw ../src/*/*/*/*.py ../src/*/*/*/*.pyw ../src/*/*/*/*/*.py ../src/*/*/*/*/*.pyw +C:\python27\python.exe pygettext.py -d twblue ../src/*.pyw ../src/*.py ../src/*/*.py ../src/*/*.pyw ../src/*/*/*.py ../src/*/*/*.pyw ../src/*/*/*/*.py ../src/*/*/*/*.pyw ../src/*/*/*/*/*.py ../src/*/*/*/*/*.pyw C:\python27\python.exe pygettext.py -v -d twblue-documentation ../doc/*.py \ No newline at end of file diff --git a/tools/twblue-documentation.pot b/tools/twblue-documentation.pot index e3ffb243..31b4cec2 100644 --- a/tools/twblue-documentation.pot +++ b/tools/twblue-documentation.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2015-06-12 17:49+Hora de verano central (Mxico)\n" +"POT-Creation-Date: 2015-06-25 15:28+Hora de verano central (Mxico)\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -20,7 +20,7 @@ msgid "User default" msgstr "" #: ../doc\strings.py:4 -msgid "Documentation for {0} - {1}" +msgid "Documentation for TWBlue - {0}" msgstr "" #: ../doc\strings.py:6 ../doc\strings.py:11 ../doc\strings.py:14 @@ -30,15 +30,27 @@ msgstr "" #: ../doc\strings.py:52 ../doc\strings.py:55 ../doc\strings.py:58 #: ../doc\strings.py:61 ../doc\strings.py:64 ../doc\strings.py:67 #: ../doc\strings.py:70 ../doc\strings.py:73 ../doc\strings.py:76 -#: ../doc\strings.py:79 ../doc\strings.py:94 ../doc\strings.py:97 -#: ../doc\strings.py:100 ../doc\strings.py:103 ../doc\strings.py:106 -#: ../doc\strings.py:109 ../doc\strings.py:112 ../doc\strings.py:115 -#: ../doc\strings.py:118 ../doc\strings.py:124 ../doc\strings.py:127 -#: ../doc\strings.py:130 ../doc\strings.py:133 ../doc\strings.py:136 -#: ../doc\strings.py:148 ../doc\strings.py:151 ../doc\strings.py:160 -#: ../doc\strings.py:163 ../doc\strings.py:166 ../doc\strings.py:181 -#: ../doc\strings.py:184 ../doc\strings.py:191 ../doc\strings.py:194 -#: ../doc\strings.py:205 ../doc\strings.py:208 +#: ../doc\strings.py:79 ../doc\strings.py:82 ../doc\strings.py:85 +#: ../doc\strings.py:88 ../doc\strings.py:91 ../doc\strings.py:107 +#: ../doc\strings.py:110 ../doc\strings.py:113 ../doc\strings.py:117 +#: ../doc\strings.py:120 ../doc\strings.py:123 ../doc\strings.py:129 +#: ../doc\strings.py:132 ../doc\strings.py:135 ../doc\strings.py:138 +#: ../doc\strings.py:144 ../doc\strings.py:147 ../doc\strings.py:150 +#: ../doc\strings.py:153 ../doc\strings.py:156 ../doc\strings.py:167 +#: ../doc\strings.py:170 ../doc\strings.py:179 ../doc\strings.py:182 +#: ../doc\strings.py:200 ../doc\strings.py:203 ../doc\strings.py:211 +#: ../doc\strings.py:214 ../doc\strings.py:223 ../doc\strings.py:226 +#: ../doc\strings.py:229 ../doc\strings.py:232 ../doc\strings.py:235 +#: ../doc\strings.py:238 ../doc\strings.py:259 ../doc\strings.py:262 +#: ../doc\strings.py:309 ../doc\strings.py:313 ../doc\strings.py:316 +#: ../doc\strings.py:319 ../doc\strings.py:328 ../doc\strings.py:331 +#: ../doc\strings.py:334 ../doc\strings.py:337 ../doc\strings.py:340 +#: ../doc\strings.py:343 ../doc\strings.py:346 ../doc\strings.py:349 +#: ../doc\strings.py:352 ../doc\strings.py:355 ../doc\strings.py:358 +#: ../doc\strings.py:361 ../doc\strings.py:371 ../doc\strings.py:374 +#: ../doc\strings.py:377 ../doc\strings.py:380 ../doc\strings.py:383 +#: ../doc\strings.py:386 ../doc\strings.py:389 ../doc\strings.py:392 +#: ../doc\strings.py:395 msgid "" "\n" msgstr "" @@ -52,7 +64,7 @@ msgid "## Warning!" msgstr "" #: ../doc\strings.py:16 -msgid "You're reading documentation produced for a program still in development. The object of this manual is to explain some details of the operation of the program. Bear in mind that as the software is in the process of active development, parts of this document may change in the near future, so it is advisable to keep an eye on it from time to time to avoid missing too much out." +msgid "You are reading documentation produced for a program still in development. The object of this manual is to explain some details of the operation of the program. Bear in mind that as the software is in the process of active development, parts of this user guide may change in the near future, so it is advisable to keep checking from time to time to avoid missing important information." msgstr "" #: ../doc\strings.py:19 @@ -64,11 +76,11 @@ msgid "## Introduction" msgstr "" #: ../doc\strings.py:25 -msgid "TW Blue is an application to make Twitter simple and fast, while using as few resources as possible. With it, you can do things like the following:" +msgid "TWBlue is an application to make Twitter simple and fast, while using as few resources as possible. With TWBlue, you can do things like the following:" msgstr "" #: ../doc\strings.py:28 -msgid "* Tweet, reply, retweet and delete tweets," +msgid "* Tweet, reply to, retweet and delete tweets," msgstr "" #: ../doc\strings.py:29 @@ -108,359 +120,842 @@ msgid "## Usage" msgstr "" #: ../doc\strings.py:42 -msgid "In order to use an application like TW Blue which allows you to manage your Twitter account, you must first be registered on it. It's beyond the scope of this document to explain how to do so. We'll start from the premise that you have an account with its corresponding user name and password." +msgid "Twitter is a social networking or micro-blogging tool which allows you to compose short status updates of your activities in 140 characters or less. Twitter is a way for friends, family and co-workers to communicate and stay connected through the exchange of quick, frequent messages. You can restrict delivery of updates to those in your circle of friends or, by default, allow anyone to access them." msgstr "" #: ../doc\strings.py:45 -msgid "### Authorising the application" +msgid "You can monitor the status of updates from your friends, family or co-workers (known as following), and they in turn can read any updates you create, (known as followers). The updates are referred to as Tweets. The Tweets are posted to your Twitter profile or Blog and are searchable using Twitter Search." msgstr "" #: ../doc\strings.py:48 -msgid "First off, it's necessary to authorise the program so it can access your Twitter account and act on your behalf. The authorisation process is quite simple, and the program never gets data such as your username and password. In order to authorise the application, you just need to run the main executable file, called TWBlue.exe (on some computers it may appear simply as TWBlue)." +msgid "In order to use TWBlue, you must first have created an account on the Twitter website. The process for signing up for a Twitter account is very accessible. During the account registration, you will need to choose a Twitter username. This serves two purposes. This is the method through which people will comunicate with you, but most importantly, your username and password will be required to connect TWBlue to your Twitter account. We suggest you choose a username which is memorable both to you and the people you hope will follow you." msgstr "" #: ../doc\strings.py:51 -msgid "Whether this is the first time you open TWBlue or you don't have any session, you will see the session manager. This dialog allows you to authorise as many accounts as you wish. If you press the \"new account\" button a dialog will tell you that your default browser will be opened in order to authorise the application. Press \"yes\" so the process may start." +msgid "We'll start from the premise that you have a Twitter account with its corresponding username and password." msgstr "" #: ../doc\strings.py:54 -msgid "Your default browser will open on the Twitter page to request authorisation. Enter your user name and password if you're not already logged in, look for the authorise button, and press it." +msgid "### Authorising the application" msgstr "" #: ../doc\strings.py:57 -msgid "Once you've authorised your twitter account, Twitter will redirect you to a web page which will notify you that TWBlue has been authorised successfully. Now you are able to close that window and come back to the session manager. You will see on the session list a new item temporally called \"Authorised account x\" -where x is a number. The session name will change once you open that session." +msgid "First of all, it's necessary to authorise the program so it can access your Twitter account and act on your behalf. The authorisation process is quite simple, and the program never retains data such as your password. In order to authorise the application, you just need to run the main executable file, called TWBlue.exe (on some computers it may appear simply as TWBlue if Windows Explorer is not set to display file extensions). We suggest you may like to place a Windows shortcut on your Desktop pointing to this executable file for quick and easy location." msgstr "" #: ../doc\strings.py:60 -msgid "To start running TWBlue, press the Ok button in the session manager dialog. By default, TWBlue starts all the configured sessions, however, you can change this behavior." +msgid "TWBlue allows you to monitor several Twitter accounts simultaneously. The program refers to each Twitter account you have configured as a \"Session\". If this is the first time you have launched TWBlue, and if no Twitter session exists, you will see the Session Manager. This dialogue box allows you to authorise as many accounts as you wish. If you press the Tab key to reach the \"new account\" button and activate it by pressing the Space Bar, a dialogue box will advise you that your default internet browser will be opened in order to authorise the application and you will be asked if you would like to continue. Activate the \"yes\" Button by pressing the letter \"Y\" so the process may start." msgstr "" #: ../doc\strings.py:63 -msgid "If all went well, the application will start playing sounds, indicating your data are being updated." +msgid "Your default browser will open on the Twitter page to request authorisation. Enter your username and password into the appropriate edit fields if you're not already logged in, select the authorise button, and press it." msgstr "" #: ../doc\strings.py:66 -msgid "When the process is finished, the program will play another sound, and the screen reader will say \"ready\"." +msgid "Once you've authorised your twitter account, the website will redirect you to a page which will notify you that TWBlue has been authorised successfully. Now you are able to close the page by pressing ALT+F4 which will return you to the Session Manager. On the session list, you will see a new item temporarily called \"Authorised account x\" -where x is a number. The session name will change once you open that session." msgstr "" #: ../doc\strings.py:69 -msgid "## The program's interface" +msgid "To start running TWBlue, press the Ok button in the Session Manager dialogue. By default, TWBlue starts all the configured sessions automatically, however, you can change this behavior." msgstr "" #: ../doc\strings.py:72 -msgid "The easiest way to describe the graphical user interface of TWBlue is saying that the application has a window which contains a menu bar with five menus (application, tweet, user, buffer and help); one tree view, one list of items and, mostly in every case, three buttons: Tweet, retweet and reply. The actions that are available for every item will be described later." +msgid "If all went well, the application will start playing sounds, indicating your data is being updated." msgstr "" #: ../doc\strings.py:75 -msgid "In the tree view are inserted buffers which are lists to manage the processed data. When you configure a new session on TWBlue and start it, your account is the root of the tree view. Inside of it many buffers are created. Each one of them may contain some of the items which TWBlue works with: Tweets, direct messages, users, trends or events. According to the buffer you were, you will be able to make different actions with these items." +msgid "When the process is finished, by default the program will play another sound, and the screen reader will say \"ready\" (this behaviour can be configured)." msgstr "" #: ../doc\strings.py:78 -msgid "The following is a description for every kind of TWBlue's buffer and the kind of items they work with." +msgid "## General concepts" msgstr "" #: ../doc\strings.py:81 -msgid "* Home: it shows all the tweets on the main timeline. These are the tweets by users you follow." -msgstr "" - -#: ../doc\strings.py:82 -msgid "* Mentions: if a user, whether you follow them or not, mentions you on Twitter, you will find it on this list." -msgstr "" - -#: ../doc\strings.py:83 -msgid "* Direct messages: here go the private direct messages you exchange with users you follow and who follow you back. This list only shows received messages." +msgid "Before starting to describe TWBlue's usage, we'll explain some concepts that will be used extensively throughout this manual." msgstr "" #: ../doc\strings.py:84 -msgid "* Sent: it shows all the tweets and direct messages sent from your account." -msgstr "" - -#: ../doc\strings.py:85 -msgid "* Favourites: here you will see all tweets you have favourited." -msgstr "" - -#: ../doc\strings.py:86 -msgid "* Followers: when users follow you, you'll be able to see them on this list, with some of their account information." +msgid "### Buffer" msgstr "" #: ../doc\strings.py:87 -msgid "* Friends: the same as the previous list, but these are the users you follow." -msgstr "" - -#: ../doc\strings.py:88 -msgid "* User timelines: these are lists you may create. They contain only the tweets by a specific user. They're used so you can see the tweets by a single person and you don't want to look all over your timeline. You may create as many as you like." -msgstr "" - -#: ../doc\strings.py:89 -msgid "* Events: An event is anything that happens on Twitter, such as when someone follows you, when someone adds or removes one of your tweets from their favorites list, or when you subscribe to a list. There are many more but TW Blue shows the most common ones in the events buffer so that you can easily keep track of what is happening on your account." +msgid "A buffer is a list of items to manage the data which arrives from Twitter, after being processed by the application. When you configure a new session on TWBlue and start it, many buffers are created. Each of them may contain some of the items which TWBlue works with: Tweets, direct messages, users, trends or events. According to the buffer you are focusing, you will be able to do different actions with these items." msgstr "" #: ../doc\strings.py:90 -msgid "* Lists: A list is similar to a temporary timeline, except that you can configure it to contain tweets from multiple users." -msgstr "" - -#: ../doc\strings.py:91 -msgid "* Search: A search buffer contains the results of a search operation." -msgstr "" - -#: ../doc\strings.py:92 -msgid "* User favorites: You can have TW Blue create a buffer containing tweets favorited by a particular user." +msgid "The following is a description for every one of TWBlue's buffers and the kind of items they work with." msgstr "" #: ../doc\strings.py:93 -msgid "* Trending Topics: a trend buffer shows the top ten most used terms in a geographical region. This region may be a country or a city. Trends are updated every five minutes." +msgid "* Home: this shows all the tweets on the main timeline. These are the tweets by users you follow." +msgstr "" + +#: ../doc\strings.py:94 +msgid "* Mentions: if a user, whether you follow them or not, mentions you on Twitter, you will find it in this list." +msgstr "" + +#: ../doc\strings.py:95 +msgid "* Direct messages: here you will find the private direct messages you exchange with users who follow you , or with any user, if you allow direct messages from everyone (this setting is configurable from Twitter). This list only shows received messages." msgstr "" #: ../doc\strings.py:96 -msgid "If there's a URL on a tweet, TW Blue will try to open it when you press enter on it. If there are several, it will show you a list with all of them so you choose the one you want. If you're on the followers or friends buffer, the enter key will show you additional information about them." +msgid "* Sent direct messages: this buffer shows all the direct messages sent from your account." +msgstr "" + +#: ../doc\strings.py:97 +msgid "* Sent tweets: this shows all the tweets sent from your account." +msgstr "" + +#: ../doc\strings.py:98 +msgid "* Favourites: here you will see all the tweets you have favourited." msgstr "" #: ../doc\strings.py:99 -msgid "If you press control-enter, TW Blue will try to play the audio from the focused tweet, as long as it has a URL. If it has the #audio hashtag, you will hear a sound when it is selected, letting you know you can try to play it. However, a tweet can be missing the hashtag and TW Blue will still be able to play it so long as it contains a URL with audio." +msgid "* Followers: when users follow you, you'll be able to see them on this list, with some of their account details." +msgstr "" + +#: ../doc\strings.py:100 +msgid "* Friends: the same as the previous list, but these are the users you follow." +msgstr "" + +#: ../doc\strings.py:101 +msgid "* User timelines: these are buffers you may create. They contain only the tweets by a specific user. They're used so you can see the tweets by a single person and you don't want to look all over your timeline. You may create as many as you like." msgstr "" #: ../doc\strings.py:102 -msgid "You will also hear a sound when you see any tweet containing geographical information. You can see someone's location by selecting the option \"view address\" from the tweet menu on the menu bar." +msgid "* Events: An event is anything that happens on Twitter, such as when someone follows you, when someone adds or removes one of your tweets from their favourites list, or when you subscribe to a list. There are many more, but TWBlue shows the most common ones in the events buffer so that you can easily keep track of what is happening on your account." +msgstr "" + +#: ../doc\strings.py:103 +msgid "* Lists: A list is similar to a user timeline, except that you can configure it to contain tweets from multiple users." +msgstr "" + +#: ../doc\strings.py:104 +msgid "* Search: A search buffer contains the results of a search operation." msgstr "" #: ../doc\strings.py:105 -msgid "## Controls" +msgid "* User favourites: You can have TWBlue create a buffer containing tweets favourited by a particular user." msgstr "" -#: ../doc\strings.py:108 -msgid "Beginning with the 0.36 version, there's support for an interface which does not require a visible window. It can be activated by pressing control-m, or choosing hide window from the application menu. This interface is entirely driven through shortcut keys. These shortcuts are different from those used to drive the graphical interface. By default, you can't use the invisible interface shortcuts on the GUI. It has been made this way to keep compatibility with applications like TheQube and Chicken nugget which may use the same shortcuts. If you wish to have available the invisible interface shortcuts even if you are using the GUI, activate this option on the General tab of the preferences dialogue. This section describes both the graphical and the invisible interface." +#: ../doc\strings.py:106 +msgid "* Trending Topics: a trend buffer shows the top ten most used terms in a geographical region. This region may be a country or a city. Trends are updated every five minutes." msgstr "" -#: ../doc\strings.py:111 +#: ../doc\strings.py:109 +msgid "If a tweet contains a URL, you can press enter in the GUI or Control + Windows + Enter in the invisible interface to open it. If it contains audio, you can press Control + Enter or Control + Windows + Alt + Enter to play it, respectively. TWBlue will play a sound if the tweet contains the #audio hashtag, but there may be tweets which contain audio without this. Finally, if a tweet contains geographical information, you can press Control + Windows + G in the invisible interface to retrieve it." +msgstr "" + +#: ../doc\strings.py:112 +msgid "### Username fields" +msgstr "" + +#: ../doc\strings.py:115 +msgid "These fields accept a Twitter username (without the at sign) as the input. They are present in the send direct message and the user actions dialogue boxes. Those dialogues will be discussed later. The initial value of these fields depends on where they were opened from. They are prepopulated with the username of the sender of the focused tweet (if they were opened from the home and sent timelines, from users'' timelines or from lists), the sender of the focused direct message (if from the received or sent direct message buffers) or in the focused user (if from the followers' or friends' buffer). If one of those dialogue boxes is opened from a tweet, and if there are more users mentioned in it, you can use the arrow keys to switch between them. Alternatively, you can also type a username." +msgstr "" + +#: ../doc\strings.py:116 +msgid "## TWBlue's interfaces'" +msgstr "" + +#: ../doc\strings.py:119 msgid "### The graphical user interface (GUI)" msgstr "" -#: ../doc\strings.py:114 -msgid "Here you have a list divided into two parts. On the one hand, the buttons you will find while tabbing around on the program's interface, and on the other, the different elements present on the menu bar." -msgstr "" - -#: ../doc\strings.py:117 -msgid "#### Buttons on the application" -msgstr "" - -#: ../doc\strings.py:120 -msgid "* Tweet: this button opens up a dialogue box to write your tweet. The message must not exceed 140 characters. If you write past this limit, a sound will play to warn you. You may use the shorten and expand URL buttons to comply with the character limit. You can translate your message, upload a picture, check spelling or attach audio by selecting one of the available buttons in the dialogue. Press enter to send the tweet. If all goes well, you'll hear a sound confirming it. Otherwise, the screen reader will say an error message in English describing the problem." -msgstr "" - -#: ../doc\strings.py:121 -msgid "* Retweet: this button retweets the message you're reading. After you press it, you'll be asked if you want to add a comment or simply send it as written." -msgstr "" - #: ../doc\strings.py:122 -msgid "* Reply: when you're viewing a tweet, you can reply to the user who sent it by pressing this button. A dialogue will open up like the one for tweeting, but with the name of the user already filled in (for example @user) so you only need to write your message. If there are more users mentioned on the tweet, you can press shift-tab and press the mention all users button. When you're on the friends or followers lists, the button will be called mention instead." +msgid "The graphical user interface of TWBlue consists of a window containing:" msgstr "" -#: ../doc\strings.py:123 -msgid "* Direct message: exactly like sending a tweet, but it's a private message which can only be read by the user you send it to. Press shift-tab to see the recipient. If there were other users mentioned on the tweet you were reading, you can arrow up or down to choose which one to send it to, or write the username yourself without the at sign." +#: ../doc\strings.py:125 +msgid "* a menu bar accomodating five menus (application, tweet, user, buffer and help);" msgstr "" #: ../doc\strings.py:126 -msgid "Bear in mind that buttons will appear according to which actions are possible on the list you are browsing. For example, on the home timeline, mentions, sent, favourites and user timelines you will see the four buttons, while on the direct messages list you'll only get the direct message and tweet buttons, and on friends and followers lists you will get the direct message, tweet, and mention buttons." +msgid "* One tree view," msgstr "" -#: ../doc\strings.py:129 -msgid "#### Menus" +#: ../doc\strings.py:127 +msgid "* One list of items" msgstr "" -#: ../doc\strings.py:132 -msgid "On top of the program window there's a menu bar which has the same functions, and some more. To access the menu bar, press alt. You will find five: application, tweet, user, buffer and help. This section describes the items on each one of them." +#: ../doc\strings.py:128 +msgid "* Three buttons in most dialogs: Tweet, retweet and reply." msgstr "" -#: ../doc\strings.py:135 -msgid "##### Application menu" +#: ../doc\strings.py:131 +msgid "The actions that are available for every item will be described later." msgstr "" -#: ../doc\strings.py:138 -msgid "* Session manager: Opens a window with all the sessions configured in TWBlue, where you can add new sessions or delete the ones you've already created." +#: ../doc\strings.py:134 +msgid "In summary, the GUI contains two core components. These are the controls you will find while pressing the Tab key within the program's interface, and the different elements present on the menu bar." msgstr "" -#: ../doc\strings.py:139 -msgid "* Update profile: opens a dialogue box where you can update your information on Twitter: name, location, URL and bio. If you have already set this up the fields will be prefilled with the existing information. Also, you can upload a photo to your profile." +#: ../doc\strings.py:137 +msgid "#### Buttons in the application" msgstr "" #: ../doc\strings.py:140 -msgid "* Hide window: turns off the Graphical User Interface. Read the section on the invisible interface for further details." +msgid "* Tweet: this button opens up a dialogue box to write your tweet. The message must not exceed 140 characters. If you write past this limit, a sound will play to warn you. Note that the character count is displayed in the title bar. You may use the shorten and expand URL buttons to comply with the character limit. You can upload a picture, check spelling, attach audio or translate your message by selecting one of the available buttons in the dialogue box. In addition, you can autocomplete the entering of users by pressing Alt + A or the button for that purpose if you have the database of users configured. Press enter to send the tweet. If all goes well, you'll hear a sound confirming it. Otherwise, the screen reader will speak an error message in English describing the problem." msgstr "" #: ../doc\strings.py:141 -msgid "* Search: shows a dialog where you can search for tweets or users on Twitter." +msgid "* Retweet: this button retweets the message you're reading. After you press it, if you haven't configured the application not to do so, you'll be asked if you want to add a comment or simply send it as written. If you choose to add a comment, and if the original tweet plus the comment exceeds 140 characters, you will be asked if you want to post it as a comment with a mention to the original user and a link to the originating tweet." msgstr "" #: ../doc\strings.py:142 -msgid "* View trending topics: It opens a buffer to get the trending topics of a country or a city. You'll be able to select from a dialog if you wish to get countries' trends or cities' trends and choose one from the selected list. The trending topics buffer will be created once pressing \"ok\" on this dialog. Remember this kind of buffer will be updated every five minutes." +msgid "* Reply: when you're viewing a tweet, you can reply to the user who sent it by pressing this button. A dialogue will open up similar to the one for tweeting, but with the name of the user already filled in (for example @user) so you only need to write your message. If there are more users referred to in the tweet, you can press shift-tab and activate the mention all users button. When you're on the friends or followers lists, the button will be called mention instead." msgstr "" #: ../doc\strings.py:143 -msgid "* Lists Manager: This dialog allows you to manage your Twitter lists. In order to use them, you must first create them. Here, you can view, edit, create, delete or, optionally, open them in buffers similar to temporary timelines." +msgid "* Direct message: exactly like sending a tweet, but it's a private message which can only be read by the user you send it to. Press shift-tab to see the recipient. If there were other users mentioned in the tweet you were reading, you can arrow up or down to choose which one to send it to, or write the username yourself without the at sign." msgstr "" -#: ../doc\strings.py:144 -msgid "* Sounds tutorial: Opens a dialog where you can familiarize yourself with the different sounds of the program." +#: ../doc\strings.py:146 +msgid "Bear in mind that buttons will appear according to which actions are possible on the list you are browsing. For example, on the home timeline, mentions, sent, favourites and user timelines you will see the four buttons, while on the direct messages list you'll only get the direct message and tweet buttons, and on friends and followers lists the direct message, tweet, and mention buttons will be available." msgstr "" -#: ../doc\strings.py:145 -msgid "* Edit keystrokes: It opens a dialog where you can see and re edit the invisible interface shortcuts." +#: ../doc\strings.py:149 +msgid "#### Menus" msgstr "" -#: ../doc\strings.py:147 -msgid "* Quit: asks whether you want to exit the program. If the answer is yes, it shuts the application down. If you wish TWBlue not to ask you for confirmation before exiting, uncheck the checkbox from the preferences dialogue." -msgstr "" - -#: ../doc\strings.py:150 -msgid "##### Tweet menu" -msgstr "" - -#: ../doc\strings.py:153 -msgid "* You will first find the items to tweet, reply and retweet, which are equivalent to the buttons with the same name." -msgstr "" - -#: ../doc\strings.py:154 -msgid "* Mark as favourite: marks the tweet you're viewing as a favourite." +#: ../doc\strings.py:152 +msgid "Visually, Towards the top of the main application window, can be found a menu bar which contains many of the same functions as listed in the previous section, together with some additional items. To access the menu bar, press the alt key. You will find five menus listed: application, tweet, user, buffer and help. This section describes the items on each one of them." msgstr "" #: ../doc\strings.py:155 -msgid "* Remove tweet from favourites: removes the tweet from your favourites, but not from Twitter." +msgid "##### Application menu" msgstr "" -#: ../doc\strings.py:156 -msgid "* Show tweet: opens up a dialogue box where you can read the tweet, direct message, friend or follower under focus. You can read the text with the arrow keys. It's the same dialogue box used to write tweets on." -msgstr "" - -#: ../doc\strings.py:157 -msgid "* View address: If the selected tweet has geographical information, TWBlue may display a dialog where you can read the tweet address. This address is got by sending the geographical coordinates of the tweet to Google maps." +#: ../doc\strings.py:158 +msgid "* Manage accounts: Opens a window with all the sessions configured in TWBlue, where you can add new sessions or delete the ones you've already created." msgstr "" #: ../doc\strings.py:159 -msgid "* Delete: permanently removes the tweet or direct message you're on from Twitter and from your lists. Bear in mind that Twitter only allows you to delete tweets you have posted yourself." +msgid "* Update profile: opens a dialogue where you can update your information on Twitter: name, location, website and bio. If you have already set this up the fields will be prefilled with the existing information. Also, you can upload a photo to your profile." +msgstr "" + +#: ../doc\strings.py:160 +msgid "* Hide window: turns off the Graphical User Interface. Read the section on the invisible interface for further details." +msgstr "" + +#: ../doc\strings.py:161 +msgid "* Search: shows a dialogue box where you can search for tweets or users on Twitter." msgstr "" #: ../doc\strings.py:162 -msgid "##### User menu" +msgid "* Lists Manager: This dialogue box allows you to manage your Twitter lists. In order to use them, you must first create them. Here, you can view, edit, create, delete or, optionally, open them in buffers similar to user timelines." +msgstr "" + +#: ../doc\strings.py:163 +msgid "* Edit keystrokes: this opens a dialogue where you can see and edit the shortcuts relative to the invisible interface." +msgstr "" + +#: ../doc\strings.py:164 +msgid "* Account settings: Opens a dialogue box which lets you customize settings for the current account." msgstr "" #: ../doc\strings.py:165 -msgid "The available actions you can choose are described below:" +msgid "* Global settings: Opens a dialogue which lets you configure settings for the entire application." msgstr "" -#: ../doc\strings.py:168 -msgid "* Follow: Follows a user. This means you'll see his/her tweets on your main timeline, and if he/she also follows you, you'll be able to interchange direct messages." +#: ../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 wish TWBlue not to ask you for confirmation before exiting, uncheck the checkbox from the global settings dialogue box." msgstr "" #: ../doc\strings.py:169 -msgid "* Unfollow: Stops following a user, which causes you not being able to see his/her tweets on your main timeline neither interchanging direct messages." -msgstr "" - -#: ../doc\strings.py:170 -msgid "* Mute: While muting someone, TWBlue won't show you nor his/her tweets on your main timeline; neither you'll see that person's mentions. But you both will be able to interchange direct messages. The muted user is not informed of this action." -msgstr "" - -#: ../doc\strings.py:171 -msgid "* Unmute: It turns the way TWBlue treats this user to its normal way. You will see his/her tweets and mentions again." +msgid "##### Tweet menu" msgstr "" #: ../doc\strings.py:172 -msgid "* Report as spam: It suggests twitter this user is performing prohibited practices on the social network." +msgid "* You will first find the items to tweet, reply and retweet, which are equivalent to the buttons with the same name." msgstr "" #: ../doc\strings.py:173 -msgid "* Block: Blocks a user. This forces the user to unfollow you ." +msgid "* Add to favourites: marks the tweet you're viewing as a favourite." msgstr "" #: ../doc\strings.py:174 -msgid "* Unblock: Stops blocking a user." +msgid "* Remove from favourites: removes the tweet from your favourites, but not from Twitter." msgstr "" #: ../doc\strings.py:175 -msgid "* Direct message: same action as the button." +msgid "* Show tweet: opens up a dialogue box where you can read the tweet, direct message, friend or follower which has focus. You can read the text with the arrow keys. It's a similar dialog box as used for composing tweets, without the ability to send the tweet, file attachment and autocompleting capabilities. It does however include a retweets and favourites count. If you are in the followers or the friends list, it will only contain a read-only edit box with the information in the focused item and a close button." msgstr "" #: ../doc\strings.py:176 -msgid "* Add to List: In order to see someone's tweets in one or more of your lists, you must add them first. This option will open a dialog where you can select the user you wish to add. Next, you will be asked to select the list you wish to add them to. Afterwards, the list will contain a new member and their tweets will show up there." +msgid "* View address: If the selected tweet has geographical information, TWBlue may display a dialogue box where you can read the tweet address. This address is retrieved by sending the geographical coordinates of the tweet to Google maps." +msgstr "" + +#: ../doc\strings.py:177 +msgid "* View conversation: If you are focusing a tweet with a mention, it opens a buffer where you can view the whole conversation." msgstr "" #: ../doc\strings.py:178 -msgid "* View user profile: opens up a dialogue box to choose the user whose profile you want to browse." +msgid "* Delete: permanently removes the tweet or direct message which has focus from Twitter and from your lists. Bear in mind that Twitter only allows you to delete tweets you have posted yourself." msgstr "" -#: ../doc\strings.py:179 -msgid "* Timeline: Lets you open a user's timeline by choosing the user in a dialog box. It is created when you press enter. If you try it with a user that has no tweets, the program will fail. If you try creating an already existing timeline the program will warn you and will not create it again." +#: ../doc\strings.py:181 +msgid "##### User menu" msgstr "" -#: ../doc\strings.py:180 -msgid "* View favourites: Opens a buffer where you can see what tweets have been favorited by a particular user." +#: ../doc\strings.py:184 +msgid "* Actions: Opens a dialogue where you can interact with a user. This dialogue box will be populated with the user who sent the tweet or direct message in focus or the selected user in the friends or followers buffer. You can edit it or leave it as is and choose one of the following actions:" msgstr "" -#: ../doc\strings.py:183 -msgid "##### Buffer menu" +#: ../doc\strings.py:185 +msgid " * Follow: Follows a user. This means you'll see his/her tweets on your home timeline, and if he/she also follows you, you'll be able to exchange direct messages. You may also send / receive direct messages from each other if you have configured the option to allow direct messages from anyone." +msgstr "" + +#: ../doc\strings.py:186 +msgid " * Unfollow: Stops following a user, which causes you not being able to see his/her tweets on your main timeline neither exchanging direct messages, unless they have enabled receiving direct messages from anyone." msgstr "" #: ../doc\strings.py:187 -msgid "* Mute buffer: Mutes notifications of a particular buffer so you will not hear when new tweets arrive." +msgid " * Mute: While muting someone, TWBlue won't show you nor his/her tweets on your main timeline; neither will you see that person's mentions. But you both will be able to exchange direct messages. The muted user is not informed of this action." msgstr "" #: ../doc\strings.py:188 -msgid "* autoread tweets for this buffer: When enabled, the screen reader or SAPI 5 (if enabled) will read the text of incoming tweets. Please note that this could get rather chatty if there are a lot of incoming tweets." +msgid " * Unmute: this option allows TWBlue to display the user's tweets and mentions again." msgstr "" #: ../doc\strings.py:189 -msgid "* Clear buffer: Deletes all items from the buffer." +msgid " * Block: Blocks a user. This forces the user to unfollow you ." msgstr "" #: ../doc\strings.py:190 -msgid "* Remove buffer: dismiss the list you're on." +msgid " * Unblock: Stops blocking a user." +msgstr "" + +#: ../doc\strings.py:191 +msgid " * Report as spam: this option sends a message to Twitter suggesting the user is performing prohibited practices on the social network." +msgstr "" + +#: ../doc\strings.py:192 +msgid " * Ignore tweets from this client: Adds the client from which the focused tweet was sent to the ignored clients list." msgstr "" #: ../doc\strings.py:193 -msgid "##### Help menu" +msgid "* View timeline: Lets you open a user's timeline by choosing the user in a dialog box. It is created when you press enter. If you invoke this option relative to a user that has no tweets, the program will fail. If you try creating an existing timeline the program will warn you and will not create it again." +msgstr "" + +#: ../doc\strings.py:194 +msgid "* Direct message: same action as the button." +msgstr "" + +#: ../doc\strings.py:195 +msgid "* Add to List: In order to see someone's tweets in one or more of your lists, you must add them first. In the dialogue box that opens after selecting the user, you will be asked to select the list you wish to add the user to. Thereafter, the list will contain a new member and their tweets will be displayed there." msgstr "" #: ../doc\strings.py:196 -msgid "* Documentation: opens up this file, where you can read some useful program concepts." +msgid "* Remove from list: lets you remove a user from a list." msgstr "" #: ../doc\strings.py:197 -msgid "* What's new in this version?: opens up a document with the list of changes from the current version down to the first." +msgid "* View lists: Shows the lists created by a specified user." msgstr "" #: ../doc\strings.py:198 -msgid "* Check for updates: every time you open the program it automatically checks for new versions. If there is any, it will ask you if you want to download it. If you accept, it will do so, after which it will install it and ask you to let it restart itself, which it does automatically. This item checks for new updates without having to restart the application." +msgid "* Show user profile: opens a dialogue with the profile of the specified user." msgstr "" #: ../doc\strings.py:199 -msgid "* Report a bug: opens up a dialogue box to report a bug by filling a couple of fields. Pressing enter will send the report. If the operation doesn't succeed the program will show a warning." -msgstr "" - -#: ../doc\strings.py:200 -msgid "* TW Blue's website: visit our [home page](http://twblue.es) where you can find all relevant information and downloads for TW Blue and become a part of the community." -msgstr "" - -#: ../doc\strings.py:201 -msgid "* About TW Blue: shows the credits of the program." +msgid "* View favourites: Opens a buffer where you can see the tweets which have been favourited by a particular user." msgstr "" #: ../doc\strings.py:202 -msgid "" -"...\n" +msgid "##### Buffer menu" msgstr "" -#: ../doc\strings.py:204 -msgid "## Contact" +#: ../doc\strings.py:205 +msgid "* New trending topics buffer: This opens a buffer to get the worlwide trending topics or those of a country or a city. You'll be able to select from a dialogue box if you wish to retrieve countries' trends, cities' trends or worldwide trends (this options is in the cities' list) and choose one from the selected list. The trending topics buffer will be created once the \"OK\" button has been activated within the dialogue box. Remember this kind of buffer will be updated every five minutes." +msgstr "" + +#: ../doc\strings.py:206 +msgid "* Load previous items: This allows more items to be loaded for the specified buffer." msgstr "" #: ../doc\strings.py:207 -msgid "If what's explained in this document is not enough, if you want to collaborate in some other way, or if you simply want to get in touch with the application developer, follow the Twitter account [@tw_blue2](https://twitter.com/tw_blue2) or [@manuelcortez00.](https://twitter.com/manuelcortez00) You can also visit [our website](http://twblue.com.mx)" +msgid "* Mute: Mutes notifications of a particular buffer so you will not hear when new tweets arrive." +msgstr "" + +#: ../doc\strings.py:208 +msgid "* autoread: When enabled, the screen reader or SAPI 5 Text to Speech voice (if enabled) will read the text of incoming tweets. Please note that this could get rather chatty if there are a lot of incoming tweets." +msgstr "" + +#: ../doc\strings.py:209 +msgid "* Clear buffer: Deletes all items from the buffer." msgstr "" #: ../doc\strings.py:210 +msgid "* Destroy: dismisses the list you're on." +msgstr "" + +#: ../doc\strings.py:213 +msgid "##### Help menu" +msgstr "" + +#: ../doc\strings.py:216 +msgid "* Documentation: opens up this file, where you can read some useful program concepts." +msgstr "" + +#: ../doc\strings.py:217 +msgid "* Sounds tutorial: Opens a dialog box where you can familiarize yourself with the different sounds of the program." +msgstr "" + +#: ../doc\strings.py:218 +msgid "* What's new in this version?: opens up a document with the list of changes from the current version to the earliest." +msgstr "" + +#: ../doc\strings.py:219 +msgid "* Check for updates: every time you open the program it automatically checks for new versions. If an update is available, it will ask you if you want to download the update. If you accept, the updating process will commence. When complete, TWBlue will be restarted. This item checks for new updates without having to restart the application." +msgstr "" + +#: ../doc\strings.py:220 +msgid "* Report an error: opens up a dialogue box to report a bug by completing a small number of fields. Pressing enter will send the report. If the operation doesn't succeed the program will display a warning." +msgstr "" + +#: ../doc\strings.py:221 +msgid "* TWBlue's website: visit our [home page](http://twblue.es) where you can find all relevant information and downloads for TWBlue and become a part of the community." +msgstr "" + +#: ../doc\strings.py:222 +msgid "* About TWBlue: shows the credits of the program." +msgstr "" + +#: ../doc\strings.py:225 +msgid "### The invisible user interface" +msgstr "" + +#: ../doc\strings.py:228 +msgid "The invisible interface, as its name suggests, has no graphical window and works directly with screen readers such as JAWS for Windows, NVDA and System Access. This interface is disabled by default, but you can enable it by pressing Control + M. It works similarly to TheQube and Chicken Nugget. Its shortcuts are similar to those found in these two clients. In addition, TWBlue has builtin support for the keymaps for these applications, configurable through the global settings dialogue. By default, you cannot use this interface's shortcuts in the GUI, but you can configure this in the global settings dialogue." +msgstr "" + +#: ../doc\strings.py:231 +msgid "The next section contains a list of keyboard shortcuts for both interfaces. Bear in mind that we will only describe the default keymap." +msgstr "" + +#: ../doc\strings.py:234 +msgid "## Keyboard shortcuts" +msgstr "" + +#: ../doc\strings.py:237 +msgid "### Shortcuts of the graphical user interface (GUI)" +msgstr "" + +#: ../doc\strings.py:240 +msgid "* Enter: Open URL." +msgstr "" + +#: ../doc\strings.py:241 +msgid "* Control + Enter: Play audio." +msgstr "" + +#: ../doc\strings.py:242 +msgid "* Control + M: Hide the GUI." +msgstr "" + +#: ../doc\strings.py:243 +msgid "* Control + N: Compose a new tweet." +msgstr "" + +#: ../doc\strings.py:244 +msgid "* Control + R: Reply / mention." +msgstr "" + +#: ../doc\strings.py:245 +msgid "* Control + Shift + R: Retweet." +msgstr "" + +#: ../doc\strings.py:246 +msgid "* Control + D: Send a direct message." +msgstr "" + +#: ../doc\strings.py:247 +msgid "* control + F: Add tweet to favourites." +msgstr "" + +#: ../doc\strings.py:248 +msgid "* Control + Shift + F: Remove a tweet from favourites." +msgstr "" + +#: ../doc\strings.py:249 +msgid "* Control + S: Open the user actions dialogue." +msgstr "" + +#: ../doc\strings.py:250 +msgid "* Control + Shift + V: Show tweet." +msgstr "" + +#: ../doc\strings.py:251 +msgid "* Control + Q: Quit TWBlue." +msgstr "" + +#: ../doc\strings.py:252 +msgid "* Control + I: Open user timeline." +msgstr "" + +#: ../doc\strings.py:253 +msgid "* Control + Shift + i: Destroy buffer." +msgstr "" + +#: ../doc\strings.py:254 +msgid "* F5: Increase volume by 5%." +msgstr "" + +#: ../doc\strings.py:255 +msgid "* F6: Decrease volume by 5%." +msgstr "" + +#: ../doc\strings.py:256 +msgid "* Control + P: Edit your profile." +msgstr "" + +#: ../doc\strings.py:257 +msgid "* Control + Delete: Delete a tweet or direct message." +msgstr "" + +#: ../doc\strings.py:258 +msgid "* Control + Shift + Delete: Empty the current buffer." +msgstr "" + +#: ../doc\strings.py:261 +msgid "### Shortcuts of the invisible interface (default keymap)" +msgstr "" + +#: ../doc\strings.py:264 +msgid "* Control + Windows + Up Arrow: moves to the previous item in the buffer." +msgstr "" + +#: ../doc\strings.py:265 +msgid "* Control + Windows + Down Arrow: moves to the next item in the buffer." +msgstr "" + +#: ../doc\strings.py:266 +msgid "* Control + Windows + Left Arrow: Move to the previous buffer." +msgstr "" + +#: ../doc\strings.py:267 +msgid "* Control + Windows + Right Arrow: Move to the next buffer." +msgstr "" + +#: ../doc\strings.py:268 +msgid "* Control + Windows + Shift + Left: Focus the previous session." +msgstr "" + +#: ../doc\strings.py:269 +msgid "* Control + Windows + Shift + Right: Focus the next session." +msgstr "" + +#: ../doc\strings.py:270 +msgid "* Control + Windows + C: View conversation." +msgstr "" + +#: ../doc\strings.py:271 +msgid "* Control + Enter: Open URL." +msgstr "" + +#: ../doc\strings.py:272 +msgid "* Control + Windows + Enter: Play audio." +msgstr "" + +#: ../doc\strings.py:273 +msgid "* Control + Windows + M: Show or hide the GUI." +msgstr "" + +#: ../doc\strings.py:274 +msgid "* Control + Windows + N: New tweet." +msgstr "" + +#: ../doc\strings.py:275 +msgid "* Control + Windows + R: Reply / Mention." +msgstr "" + +#: ../doc\strings.py:276 +msgid "* Control + Windows + Shift + R: Retweet." +msgstr "" + +#: ../doc\strings.py:277 +msgid "* Control + Windows + D: Send direct message." +msgstr "" + +#: ../doc\strings.py:278 +msgid "* Windows+ Alt + F: Mark as favourite." +msgstr "" + +#: ../doc\strings.py:279 +msgid "* Alt + Windows + Shift + F: Remove from favourites." +msgstr "" + +#: ../doc\strings.py:280 +msgid "* Control + Windows + S: Open the user actions dialogue." +msgstr "" + +#: ../doc\strings.py:281 +msgid "* Control + Windows + Alt + N: See user details." +msgstr "" + +#: ../doc\strings.py:282 +msgid "* Control + Windows + V: Show tweet." +msgstr "" + +#: ../doc\strings.py:283 +msgid "* Control + Windows + F4: Quit TWBlue." +msgstr "" + +#: ../doc\strings.py:284 +msgid "* Control + Windows + I: Open user timeline." +msgstr "" + +#: ../doc\strings.py:285 +msgid "* Control + Windows + Shift + I: Destroy buffer." +msgstr "" + +#: ../doc\strings.py:286 +msgid "* Control + Windows + Alt + Up: Increase volume by 5%." +msgstr "" + +#: ../doc\strings.py:287 +msgid "* Control + Windows + Alt + Down: Decrease volume by 5%." +msgstr "" + +#: ../doc\strings.py:288 +msgid "* Control + Windows + Home: Jump to the first element of the current buffer." +msgstr "" + +#: ../doc\strings.py:289 +msgid "* Control + Windows + End: Jump to the last element of the current buffer." +msgstr "" + +#: ../doc\strings.py:290 +msgid "* Control + Windows + PageUp: Jump 20 elements up in the current buffer." +msgstr "" + +#: ../doc\strings.py:291 +msgid "* Control + Windows + PageDown: Jump 20 elements down in the current buffer." +msgstr "" + +#: ../doc\strings.py:292 +msgid "* Windows + Alt + P: Edit profile." +msgstr "" + +#: ../doc\strings.py:293 +msgid "* Control + Windows + Delete: Delete a tweet or direct message." +msgstr "" + +#: ../doc\strings.py:294 +msgid "* Control + Windows + Shift + Delete: Empty the current buffer." +msgstr "" + +#: ../doc\strings.py:295 +msgid "* Control + Windows + Space: Repeat last item." +msgstr "" + +#: ../doc\strings.py:296 +msgid "* Control + Windows + Shift + C: Copy to clipboard." +msgstr "" + +#: ../doc\strings.py:297 +msgid "* Control + Windows+ A: Add user to list." +msgstr "" + +#: ../doc\strings.py:298 +msgid "* Control + Windows + Shift + A: Remove user from list." +msgstr "" + +#: ../doc\strings.py:299 +msgid "* Control + Windows + M: Mute / unmute the current buffer." +msgstr "" + +#: ../doc\strings.py:300 +msgid "* Windows + Alt + M: Mute / unmute the current session." +msgstr "" + +#: ../doc\strings.py:301 +msgid "* Control + Windows + E: Toggle the automatic reading of incoming tweets in the current buffer." +msgstr "" + +#: ../doc\strings.py:302 +msgid "* Control + Windows + -: Search on Twitter." +msgstr "" + +#: ../doc\strings.py:303 +msgid "* Control + Windows + K: Show the keystroke editor." +msgstr "" + +#: ../doc\strings.py:304 +msgid "* Control + Windows + L: Show lists for a specified user." +msgstr "" + +#: ../doc\strings.py:305 +msgid "* Windows + Alt + PageUp: Load previous items for the current buffer." +msgstr "" + +#: ../doc\strings.py:306 +msgid "* Control + Windows + G: Get geolocation." +msgstr "" + +#: ../doc\strings.py:307 +msgid "* Control + Windows + Shift + G: Display the tweet's geolocation in a dialogue." +msgstr "" + +#: ../doc\strings.py:308 +msgid "* Control + Windows + T: Create a trending topics' buffer." +msgstr "" + +#: ../doc\strings.py:311 +msgid "## Configuring TWBlue" +msgstr "" + +#: ../doc\strings.py:312 +msgid "As described above, TWBlue has two configuration dialogues, the global settings dialogue and the account settings dialogue." +msgstr "" + +#: ../doc\strings.py:315 +msgid "### The account settings dialogue" +msgstr "" + +#: ../doc\strings.py:318 ../doc\strings.py:360 +msgid "#### General tab" +msgstr "" + +#: ../doc\strings.py:321 +msgid "* Autocompletion settings: Allows you to configure the autocompletion database. You can add users manually or let TWBlue add your followers, friends or both." +msgstr "" + +#: ../doc\strings.py:322 +msgid "* Relative timestamps: Allows you to configure whether TWBlue will calculate the time the tweet or direct message was sent or received based on the current time, or simply say the time it was received or sent." +msgstr "" + +#: ../doc\strings.py:323 +msgid "* API calls: Allows you to adjust the number of API calls to send to Twitter by TWBlue." +msgstr "" + +#: ../doc\strings.py:324 +msgid "* Items on each API calls: Allows you to specify how many items should be retrieved from Twitter for each API call (default and maximum is 200)." +msgstr "" + +#: ../doc\strings.py:325 +msgid "* Inverted buffers: Allows you to specify whether the buffers should be inverted, which means that the oldest items will show at the end of them and the newest at the beginning." +msgstr "" + +#: ../doc\strings.py:326 +msgid "* Retweet mode: Allows you to specify the behaviour when posting a retweet: you can choose between retweeting with a comment, retweeting without comment or being asked." +msgstr "" + +#: ../doc\strings.py:327 +msgid "* Number of items per buffer to cache in database: This allows you to specify how many items TWBlue should cache in a database. You can type any number, 0 to cache all items, or leave blank to disable caching entirely." +msgstr "" + +#: ../doc\strings.py:330 +msgid "#### buffers tab" +msgstr "" + +#: ../doc\strings.py:333 +msgid "This tab displays a list for each buffer you have available in TWBlue, except for searches, timelines, favourites'' timelines and lists. You can show, hide and move them." +msgstr "" + +#: ../doc\strings.py:336 +msgid "#### The ignored clients tab" +msgstr "" + +#: ../doc\strings.py:339 +msgid "In this tab, you can add and remove clients to be ignored by TWBlue." +msgstr "" + +#: ../doc\strings.py:342 +msgid "#### Sound tab" +msgstr "" + +#: ../doc\strings.py:345 +msgid "In this tab, you can adjust the sound volume, select the input and output device and set the soundpack used by TWBlue." +msgstr "" + +#: ../doc\strings.py:348 +msgid "#### Audio service tab" +msgstr "" + +#: ../doc\strings.py:351 +msgid "In this tab, you can enter your SndUp API key (if you have one) to upload audio to SndUp with your account. Note that if account credentials are not specified you will upload announimously." +msgstr "" + +#: ../doc\strings.py:354 +msgid "### Global settings" +msgstr "" + +#: ../doc\strings.py:357 +msgid "This dialogue allows you to configure some settings which will affect the entire application." +msgstr "" + +#: ../doc\strings.py:363 +msgid "* Language: This allows you to change the language of TWBlue. Currently supported languages are arabic, Catalan, German, English, Spanish, Basque, Finnish, French, Galician, Croatian, Hungarian, Italian, Polish, Portuguese, Russian and Turkish." +msgstr "" + +#: ../doc\strings.py:364 +msgid "* Ask before exiting TWBlue: This checkbox allows you to control whether TWBlue will ask for confirmation before exiting." +msgstr "" + +#: ../doc\strings.py:365 +msgid "* Play a sound when TWBlue launches: This checkbox allows you to configure whether TWBlue will play a sound when it has finished loading the buffers." +msgstr "" + +#: ../doc\strings.py:366 +msgid "* Speak a message when TWBlue launches: This is the same as the previous option, but this checkbox configures whether the screen reader will say \"ready\"." +msgstr "" + +#: ../doc\strings.py:367 +msgid "* Use the invisible interface's shortcuts in the GUI: As the invisible interface and the Graphical User Interface have their own shortcuts, you may want to use the invisible interface's keystrokes all the time. If this option is checked, the invisible interface's shortcuts ''will be usable in the GUI." +msgstr "" + +#: ../doc\strings.py:368 +msgid "* Activate SAPI5 when any other screen reader is not being run: This checkbox allows to activate SAPI 5 TTS when no other screen reader is being run." +msgstr "" + +#: ../doc\strings.py:369 +msgid "* Hide GUI on launch: This allows you to configure whether TWBlue will start with the GUI or the invisible interface." +msgstr "" + +#: ../doc\strings.py:370 +msgid "* Keymap: This option allows you to change the keymap used by TWBlue in the invisible interface. The shipped keymaps are Default, Qwitter, TheQube and Chicken Nugget. The keymaps are in the \"keymaps\" folder, and you can create new ones. Just create a new \".keymap\" file and change the keystrokes associated with the actions, as it is done in the shipped keymaps." +msgstr "" + +#: ../doc\strings.py:373 +msgid "#### Proxi tab" +msgstr "" + +#: ../doc\strings.py:376 +msgid "In this tab you can configure TWBlue to use a Proxy server by completing the fields displayed (server, port, user and password)." +msgstr "" + +#: ../doc\strings.py:379 +msgid "## License, source code and donations" +msgstr "" + +#: ../doc\strings.py:382 +msgid "Tw Blue is under the GNU GPL license, version 2. You can view the license in the file named license.txt, or online at ." +msgstr "" + +#: ../doc\strings.py:385 +msgid "The source code of the program is available on GitHub at ." +msgstr "" + +#: ../doc\strings.py:388 +msgid "If you want to donate to the project, you can do so at . Thank you for your support!" +msgstr "" + +#: ../doc\strings.py:391 +msgid "## Contact" +msgstr "" + +#: ../doc\strings.py:394 +msgid "If you still have questions after reading this document, if you wish to collaborate to the project in some other way, or if you simply want to get in touch with the application developer, follow the Twitter account [@tw_blue2](https://twitter.com/tw_blue2) or [@manuelcortez00.](https://twitter.com/manuelcortez00) You can also visit [our website](http://twblue.es)" +msgstr "" + +#: ../doc\strings.py:397 msgid "---" msgstr "" -#: ../doc\strings.py:211 +#: ../doc\strings.py:398 msgid "Copyright \302\251 2013-2015. Manuel Cort\303\251z" msgstr "" diff --git a/tools/twblue.pot b/tools/twblue.pot index 05d0cd62..b4a83215 100644 --- a/tools/twblue.pot +++ b/tools/twblue.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2015-06-12 17:49+Hora de verano central (Mxico)\n" +"POT-Creation-Date: 2015-06-25 15:28+Hora de verano central (Mxico)\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,15 +15,15 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: ../src\controller\buffersController.py:100 +#: ../src\controller\buffersController.py:98 msgid "Opening media..." msgstr "" -#: ../src\controller\buffersController.py:111 +#: ../src\controller\buffersController.py:109 msgid "This action is not supported for this buffer" msgstr "" -#: ../src\controller\buffersController.py:150 ../src\gtkUI\buffers\base.py:15 +#: ../src\controller\buffersController.py:148 ../src\gtkUI\buffers\base.py:15 #: ../src\gtkUI\buffers\events.py:14 ../src\gtkUI\buffers\trends.py:14 #: ../src\gtkUI\dialogs\message.py:186 ../src\gtkUI\sysTrayIcon.py:33 #: ../src\wxUI\buffers\base.py:24 ../src\wxUI\buffers\events.py:14 @@ -32,237 +32,265 @@ msgstr "" msgid "Tweet" msgstr "" -#: ../src\controller\buffersController.py:151 +#: ../src\controller\buffersController.py:149 msgid "Write the tweet here" msgstr "" -#: ../src\controller\buffersController.py:313 -#: ../src\controller\buffersController.py:676 +#: ../src\controller\buffersController.py:311 +#: ../src\controller\buffersController.py:674 msgid "%s items retrieved" msgstr "" -#: ../src\controller\buffersController.py:333 +#: ../src\controller\buffersController.py:331 msgid "This buffer is not a timeline; it can't be deleted." msgstr "" -#: ../src\controller\buffersController.py:394 +#: ../src\controller\buffersController.py:392 msgid "Reply to %s" msgstr "" -#: ../src\controller\buffersController.py:394 ../src\gtkUI\buffers\base.py:17 +#: ../src\controller\buffersController.py:392 ../src\gtkUI\buffers\base.py:17 #: ../src\keystrokeEditor\constants.py:11 ../src\wxUI\buffers\base.py:26 msgid "Reply" msgstr "" -#: ../src\controller\buffersController.py:414 +#: ../src\controller\buffersController.py:412 msgid "Direct message to %s" msgstr "" -#: ../src\controller\buffersController.py:414 -#: ../src\controller\mainController.py:1056 +#: ../src\controller\buffersController.py:412 +#: ../src\controller\mainController.py:1084 msgid "New direct message" msgstr "" -#: ../src\controller\buffersController.py:435 +#: ../src\controller\buffersController.py:433 msgid "Add your comment to the tweet" msgstr "" -#: ../src\controller\buffersController.py:435 ../src\gtkUI\buffers\base.py:16 +#: ../src\controller\buffersController.py:433 ../src\gtkUI\buffers\base.py:16 #: ../src\gtkUI\commonMessageDialogs.py:12 #: ../src\keystrokeEditor\constants.py:12 ../src\wxUI\buffers\base.py:25 #: ../src\wxUI\commonMessageDialogs.py:8 ../src\wxUI\dialogs\message.py:129 msgid "Retweet" msgstr "" -#: ../src\controller\buffersController.py:507 +#: ../src\controller\buffersController.py:505 msgid "Opening URL..." msgstr "" -#: ../src\controller\buffersController.py:542 +#: ../src\controller\buffersController.py:540 msgid "User details" msgstr "" -#: ../src\controller\buffersController.py:591 +#: ../src\controller\buffersController.py:589 msgid "Empty" msgstr "" -#: ../src\controller\buffersController.py:635 +#: ../src\controller\buffersController.py:633 msgid "Mention to %s" msgstr "" -#: ../src\controller\buffersController.py:635 +#: ../src\controller\buffersController.py:633 #: ../src\gtkUI\buffers\people.py:15 ../src\wxUI\buffers\people.py:15 msgid "Mention" msgstr "" -#: ../src\controller\mainController.py:242 +#: ../src\controller\mainController.py:243 msgid "Ready" msgstr "" -#: ../src\controller\mainController.py:273 +#: ../src\controller\mainController.py:274 msgid "Home" msgstr "" -#: ../src\controller\mainController.py:277 +#: ../src\controller\mainController.py:278 msgid "Mentions" msgstr "" -#: ../src\controller\mainController.py:281 +#: ../src\controller\mainController.py:282 msgid "Direct messages" msgstr "" -#: ../src\controller\mainController.py:285 +#: ../src\controller\mainController.py:286 msgid "Sent direct messages" msgstr "" -#: ../src\controller\mainController.py:289 +#: ../src\controller\mainController.py:290 msgid "Sent tweets" msgstr "" -#: ../src\controller\mainController.py:294 -#: ../src\controller\mainController.py:1172 +#: ../src\controller\mainController.py:295 +#: ../src\controller\mainController.py:1200 #: ../src\gtkUI\dialogs\userSelection.py:18 #: ../src\wxUI\dialogs\userSelection.py:18 msgid "Favourites" msgstr "" -#: ../src\controller\mainController.py:298 -#: ../src\controller\mainController.py:1177 +#: ../src\controller\mainController.py:299 +#: ../src\controller\mainController.py:1205 msgid "Followers" msgstr "" -#: ../src\controller\mainController.py:302 -#: ../src\controller\mainController.py:1182 +#: ../src\controller\mainController.py:303 +#: ../src\controller\mainController.py:1210 msgid "Friends" msgstr "" -#: ../src\controller\mainController.py:306 -#: ../src\controller\mainController.py:1187 +#: ../src\controller\mainController.py:307 +#: ../src\controller\mainController.py:1215 msgid "Blocked users" msgstr "" -#: ../src\controller\mainController.py:310 -#: ../src\controller\mainController.py:1192 +#: ../src\controller\mainController.py:311 +#: ../src\controller\mainController.py:1220 msgid "Muted users" msgstr "" -#: ../src\controller\mainController.py:314 -#: ../src\controller\mainController.py:1197 +#: ../src\controller\mainController.py:315 +#: ../src\controller\mainController.py:1225 msgid "Events" msgstr "" -#: ../src\controller\mainController.py:317 +#: ../src\controller\mainController.py:318 msgid "Timelines" msgstr "" -#: ../src\controller\mainController.py:324 +#: ../src\controller\mainController.py:322 +#: ../src\controller\mainController.py:722 +msgid "Timeline for {}" +msgstr "" + +#: ../src\controller\mainController.py:325 msgid "Favourites timelines" msgstr "" -#: ../src\controller\mainController.py:333 ../src\gtkUI\dialogs\lists.py:11 +#: ../src\controller\mainController.py:329 +#: ../src\controller\mainController.py:732 +msgid "Favourites timeline for {}" +msgstr "" + +#: ../src\controller\mainController.py:334 ../src\gtkUI\dialogs\lists.py:11 #: ../src\wxUI\dialogs\lists.py:12 msgid "Lists" msgstr "" -#: ../src\controller\mainController.py:338 -#: ../src\controller\mainController.py:1207 +#: ../src\controller\mainController.py:339 +#: ../src\controller\mainController.py:1235 msgid "List for {}" msgstr "" -#: ../src\controller\mainController.py:341 +#: ../src\controller\mainController.py:342 msgid "Searches" msgstr "" -#: ../src\controller\mainController.py:353 -#: ../src\controller\mainController.py:748 +#: ../src\controller\mainController.py:346 +#: ../src\controller\mainController.py:416 +msgid "Search for {}" +msgstr "" + +#: ../src\controller\mainController.py:354 +#: ../src\controller\mainController.py:776 msgid "Trending topics for %s" msgstr "" -#: ../src\controller\mainController.py:453 -msgid "Select the user" -msgstr "" - -#: ../src\controller\mainController.py:764 -#: ../src\controller\mainController.py:783 -msgid "There are no coordinates in this tweet" -msgstr "" - -#: ../src\controller\mainController.py:766 -#: ../src\controller\mainController.py:785 -msgid "There are no results for the coordinates in this tweet" -msgstr "" - -#: ../src\controller\mainController.py:768 -#: ../src\controller\mainController.py:787 -msgid "Error decoding coordinates. Try again later." -msgstr "" - -#: ../src\controller\mainController.py:842 -#: ../src\controller\mainController.py:861 -#: ../src\controller\mainController.py:880 -#: ../src\controller\mainController.py:898 +#: ../src\controller\mainController.py:435 +#: ../src\controller\mainController.py:870 +#: ../src\controller\mainController.py:889 +#: ../src\controller\mainController.py:908 +#: ../src\controller\mainController.py:926 msgid "No session is currently in focus. Focus a session with the next or previous session shortcut." msgstr "" -#: ../src\controller\mainController.py:889 -#: ../src\controller\mainController.py:907 +#: ../src\controller\mainController.py:439 +msgid "Empty buffer." +msgstr "" + +#: ../src\controller\mainController.py:446 +msgid "{0} not found." +msgstr "" + +#: ../src\controller\mainController.py:481 +msgid "Select the user" +msgstr "" + +#: ../src\controller\mainController.py:749 +msgid "Conversation with {0}" +msgstr "" + +#: ../src\controller\mainController.py:792 +#: ../src\controller\mainController.py:811 +msgid "There are no coordinates in this tweet" +msgstr "" + +#: ../src\controller\mainController.py:794 +#: ../src\controller\mainController.py:813 +msgid "There are no results for the coordinates in this tweet" +msgstr "" + +#: ../src\controller\mainController.py:796 +#: ../src\controller\mainController.py:815 +msgid "Error decoding coordinates. Try again later." +msgstr "" + +#: ../src\controller\mainController.py:917 +#: ../src\controller\mainController.py:935 msgid "%s, %s of %s" msgstr "" -#: ../src\controller\mainController.py:891 -#: ../src\controller\mainController.py:909 -#: ../src\controller\mainController.py:929 -#: ../src\controller\mainController.py:949 +#: ../src\controller\mainController.py:919 +#: ../src\controller\mainController.py:937 +#: ../src\controller\mainController.py:957 +#: ../src\controller\mainController.py:977 msgid "%s. Empty" msgstr "" -#: ../src\controller\mainController.py:922 +#: ../src\controller\mainController.py:950 msgid "{0}: This account is not logged into Twitter." msgstr "" -#: ../src\controller\mainController.py:927 -#: ../src\controller\mainController.py:947 +#: ../src\controller\mainController.py:955 +#: ../src\controller\mainController.py:975 msgid "%s. %s, %s of %s" msgstr "" -#: ../src\controller\mainController.py:942 +#: ../src\controller\mainController.py:970 msgid "{0}: This account is not logged into twitter." msgstr "" -#: ../src\controller\mainController.py:1047 +#: ../src\controller\mainController.py:1075 msgid "One mention from %s " msgstr "" -#: ../src\controller\mainController.py:1136 -#: ../src\controller\mainController.py:1145 +#: ../src\controller\mainController.py:1164 +#: ../src\controller\mainController.py:1173 msgid "One tweet from %s" msgstr "" -#: ../src\controller\mainController.py:1202 +#: ../src\controller\mainController.py:1230 msgid "This list is already opened" msgstr "" -#: ../src\controller\mainController.py:1260 +#: ../src\controller\mainController.py:1288 msgid "The auto-reading of new tweets is enabled for this buffer" msgstr "" -#: ../src\controller\mainController.py:1263 +#: ../src\controller\mainController.py:1291 msgid "The auto-reading of new tweets is disabled for this buffer" msgstr "" -#: ../src\controller\mainController.py:1269 +#: ../src\controller\mainController.py:1297 msgid "Session mute on" msgstr "" -#: ../src\controller\mainController.py:1272 +#: ../src\controller\mainController.py:1300 msgid "Session mute off" msgstr "" -#: ../src\controller\mainController.py:1279 +#: ../src\controller\mainController.py:1307 msgid "Buffer mute on" msgstr "" -#: ../src\controller\mainController.py:1282 +#: ../src\controller\mainController.py:1310 msgid "Buffer mute off" msgstr "" @@ -301,7 +329,7 @@ msgid "Discard image" msgstr "" #: ../src\controller\messages.py:121 ../src\controller\user.py:53 -#: ../src\extra\AudioUploader\audioUploader.py:130 +#: ../src\extra\AudioUploader\audioUploader.py:127 msgid "Discarded" msgstr "" @@ -312,27 +340,26 @@ msgstr "" msgid "Upload a picture" msgstr "" -#: ../src\controller\settings.py:114 ../src\controller\settings.py:173 +#: ../src\controller\settings.py:117 ../src\controller\settings.py:176 #: ../src\wxUI\dialogs\configuration.py:98 msgid "Ask" msgstr "" -#: ../src\controller\settings.py:116 ../src\controller\settings.py:175 +#: ../src\controller\settings.py:119 ../src\controller\settings.py:178 #: ../src\wxUI\dialogs\configuration.py:98 msgid "Retweet without comments" msgstr "" -#: ../src\controller\settings.py:118 ../src\wxUI\dialogs\configuration.py:98 +#: ../src\controller\settings.py:121 ../src\wxUI\dialogs\configuration.py:98 msgid "Retweet with comments" msgstr "" -#: ../src\controller\settings.py:150 +#: ../src\controller\settings.py:153 msgid "Account settings for %s" msgstr "" -#: ../src\controller\settings.py:241 ../src\gtkUI\dialogs\configuration.py:153 -#: ../src\wxUI\dialogs\configuration.py:291 -msgid "Link your Dropbox account" +#: ../src\controller\settings.py:261 ../src\wxUI\dialogs\configuration.py:289 +msgid "Connect your Pocket account" msgstr "" #: ../src\controller\user.py:25 @@ -401,52 +428,52 @@ msgstr "" msgid "You can't ignore direct messages" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:52 +#: ../src\extra\AudioUploader\audioUploader.py:53 msgid "Attaching..." msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:78 -#: ../src\extra\AudioUploader\audioUploader.py:83 -#: ../src\extra\AudioUploader\audioUploader.py:110 +#: ../src\extra\AudioUploader\audioUploader.py:75 +#: ../src\extra\AudioUploader\audioUploader.py:80 +#: ../src\extra\AudioUploader\audioUploader.py:107 #: ../src\extra\AudioUploader\wx_ui.py:36 msgid "Pause" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:80 -#: ../src\extra\AudioUploader\audioUploader.py:81 +#: ../src\extra\AudioUploader\audioUploader.py:77 +#: ../src\extra\AudioUploader\audioUploader.py:78 msgid "Resume" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:98 -#: ../src\extra\AudioUploader\audioUploader.py:143 +#: ../src\extra\AudioUploader\audioUploader.py:95 +#: ../src\extra\AudioUploader\audioUploader.py:140 msgid "Stop" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:99 +#: ../src\extra\AudioUploader\audioUploader.py:96 msgid "Recording" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:104 -#: ../src\extra\AudioUploader\audioUploader.py:154 +#: ../src\extra\AudioUploader\audioUploader.py:101 +#: ../src\extra\AudioUploader\audioUploader.py:151 msgid "Stopped" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:106 +#: ../src\extra\AudioUploader\audioUploader.py:103 #: ../src\extra\AudioUploader\wx_ui.py:38 msgid "Record" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:139 ../src\sound.py:123 +#: ../src\extra\AudioUploader\audioUploader.py:136 ../src\sound.py:123 msgid "Playing..." msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:147 -#: ../src\extra\AudioUploader\audioUploader.py:157 +#: ../src\extra\AudioUploader\audioUploader.py:144 +#: ../src\extra\AudioUploader\audioUploader.py:154 #: ../src\extra\AudioUploader\wx_ui.py:34 msgid "Play" msgstr "" -#: ../src\extra\AudioUploader\audioUploader.py:162 +#: ../src\extra\AudioUploader\audioUploader.py:159 msgid "Recoding audio..." msgstr "" @@ -524,6 +551,7 @@ msgid "Attach" msgstr "" #: ../src\extra\AudioUploader\wx_ui.py:50 ../src\issueReporter\wx_ui.py:74 +#: ../src\wxUI\dialogs\find.py:20 msgid "Cancel" msgstr "" @@ -560,7 +588,7 @@ msgid "Error." msgstr "" #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:10 -msgid "Tweet favorited." +msgid "Tweet favourited." msgstr "" #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:11 @@ -591,6 +619,10 @@ msgstr "" msgid "New event." msgstr "" +#: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:18 +msgid "{0} is ready." +msgstr "" + #: ../src\extra\SoundsTutorial\soundsTutorial_constants.py:19 msgid "Mention sent." msgstr "" @@ -668,8 +700,10 @@ msgid "Replace all" msgstr "" #: ../src\extra\SpellChecker\wx_ui.py:76 -#: ../src\gtkUI\commonMessageDialogs.py:52 -#: ../src\gtkUI\commonMessageDialogs.py:64 ../src\issueReporter\wx_ui.py:83 +msgid "An error has occurred. There are no dictionaries available for the selected language in {0}" +msgstr "" + +#: ../src\extra\SpellChecker\wx_ui.py:76 ../src\issueReporter\wx_ui.py:83 #: ../src\issueReporter\wx_ui.py:86 ../src\wxUI\commonMessageDialogs.py:37 #: ../src\wxUI\commonMessageDialogs.py:49 msgid "Error" @@ -701,6 +735,10 @@ msgstr "" msgid "Manage Autocompletion database" msgstr "" +#: ../src\extra\autocompletionUsers\wx_manage.py:11 +msgid "Editing {0} users database" +msgstr "" + #: ../src\extra\autocompletionUsers\wx_manage.py:12 msgid "Name" msgstr "" @@ -726,21 +764,18 @@ msgid "Twitter username" msgstr "" #: ../src\extra\autocompletionUsers\wx_manage.py:43 -#: ../src\gtkUI\commonMessageDialogs.py:52 #: ../src\wxUI\commonMessageDialogs.py:37 msgid "The user does not exist" msgstr "" #: ../src\extra\autocompletionUsers\wx_manage.py:43 -#: ../src\gtkUI\commonMessageDialogs.py:58 -#: ../src\gtkUI\dialogs\configuration.py:165 #: ../src\wxUI\commonMessageDialogs.py:43 -#: ../src\wxUI\dialogs\configuration.py:303 +#: ../src\wxUI\dialogs\configuration.py:295 msgid "Error!" msgstr "" #: ../src\extra\autocompletionUsers\wx_settings.py:8 -msgid "Autocomplete users\342\200\231 settings" +msgid "Autocomplete users' settings" msgstr "" #: ../src\extra\autocompletionUsers\wx_settings.py:11 @@ -759,6 +794,10 @@ msgstr "" msgid "Done" msgstr "" +#: ../src\extra\autocompletionUsers\wx_settings.py:27 +msgid "{0}'s database of users has been updated." +msgstr "" + #: ../src\extra\translator\translator.py:9 msgid "Afrikaans" msgstr "" @@ -1224,237 +1263,9 @@ msgstr "" msgid "Exit" msgstr "" -#: ../src\gtkUI\commonMessageDialogs.py:36 -#: ../src\wxUI\commonMessageDialogs.py:21 -msgid "Are you sure you want to delete this user from the database? This user will not appear on the autocomplete results anymore." -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:36 -#: ../src\wxUI\commonMessageDialogs.py:21 -msgid "Confirm" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:39 -#: ../src\wxUI\commonMessageDialogs.py:24 -msgid "Add a new ignored client" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:39 -#: ../src\wxUI\commonMessageDialogs.py:24 -msgid "Enter the name of the client here" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:45 -#: ../src\wxUI\commonMessageDialogs.py:30 -msgid "Do you really want to empty this buffer? It's items will be removed from the list but not from Twitter" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:45 -#: ../src\wxUI\commonMessageDialogs.py:30 -msgid "Empty buffer" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:49 -#: ../src\wxUI\commonMessageDialogs.py:34 -msgid "Attention" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:49 -#: ../src\wxUI\commonMessageDialogs.py:34 -msgid "Do you really want to delete this timeline?" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:55 -#: ../src\wxUI\commonMessageDialogs.py:40 -msgid "Existing timeline" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:55 -#: ../src\wxUI\commonMessageDialogs.py:40 -msgid "There's currently a timeline for this user. You are not able to open another" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:58 -#: ../src\wxUI\commonMessageDialogs.py:43 -msgid "This user has no tweets. You can't open a timeline for this user" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:61 -#: ../src\wxUI\commonMessageDialogs.py:46 -msgid "This is a protected Twitter user. It means you can not open a timeline using the Streaming API. The user's tweets will not update due to a twitter policy. Do you want to continue?" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:61 -#: ../src\wxUI\commonMessageDialogs.py:46 -msgid "Warning" -msgstr "" - -#: ../src\gtkUI\commonMessageDialogs.py:64 -#: ../src\wxUI\commonMessageDialogs.py:49 -msgid "This is a protected user account, you need follow to this user for viewing your tweets or favourites." -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:10 -#: ../src\wxUI\dialogs\configuration.py:14 -msgid "Language" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:19 -#: ../src\wxUI\dialogs\configuration.py:27 -msgid "Use invisible interface's keyboard shortcuts while GUI is visible" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:21 -#: ../src\wxUI\dialogs\configuration.py:29 -msgid "Activate Sapi5 when any other screen reader is not being run" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:23 -#: ../src\wxUI\dialogs\configuration.py:31 -msgid "Hide GUI on launch" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:31 -msgid "Set the autocomplete function" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:33 -msgid "Relative times" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:36 -msgid "API calls when the stream is started (One API call equals to 200 tweetts, two API calls equals 400 tweets, etc):" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:43 -#: ../src\wxUI\dialogs\configuration.py:89 -msgid "Items on each API call" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:49 -msgid "Inverted buffers: The newest tweets will be shown at the beginning of the lists while the oldest at the end" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:63 -#: ../src\gtkUI\dialogs\configuration.py:198 -#: ../src\wxUI\dialogs\configuration.py:201 -#: ../src\wxUI\dialogs\configuration.py:340 -msgid "Ignored clients" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:69 -#: ../src\wxUI\dialogs\configuration.py:207 -msgid "Add client" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:70 -#: ../src\wxUI\dialogs\configuration.py:208 -msgid "Remove client" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:94 -#: ../src\wxUI\dialogs\configuration.py:232 -msgid "Volume" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:102 -#: ../src\wxUI\dialogs\configuration.py:240 -msgid "Session mute" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:104 -#: ../src\wxUI\dialogs\configuration.py:242 -msgid "Output device" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:111 -#: ../src\wxUI\dialogs\configuration.py:249 -msgid "Input device" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:119 -#: ../src\wxUI\dialogs\configuration.py:257 -msgid "Sound pack" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:134 -msgid "If you've got a SndUp account, enter your API Key here. Whether the API Key is wrong, the App will fail to upload anything to the server. Whether there's no API Key here, then the audio files will be uploaded anonimously" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:151 -#: ../src\wxUI\dialogs\configuration.py:289 -msgid "Unlink your Dropbox account" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:156 ../src\sessionmanager\wxUI.py:47 -#: ../src\wxUI\dialogs\configuration.py:294 -msgid "Authorization" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:156 -#: ../src\wxUI\dialogs\configuration.py:294 -msgid "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." -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:159 -#: ../src\wxUI\dialogs\configuration.py:297 -msgid "Enter the code here." -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:159 -#: ../src\wxUI\dialogs\configuration.py:297 -msgid "Verification code" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:165 -msgid "Error during authorisation. Try again later." -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:178 -msgid "TW Blue preferences" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:184 -#: ../src\gtkUI\dialogs\configuration.py:189 -#: ../src\issueReporter\issueReporter.py:30 -#: ../src\wxUI\dialogs\configuration.py:322 -#: ../src\wxUI\dialogs\configuration.py:331 -msgid "General" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:194 -msgid "Show other buffers" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:202 -#: ../src\wxUI\dialogs\configuration.py:344 -msgid "Sound" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:205 -#: ../src\wxUI\dialogs\configuration.py:347 -msgid "Audio Services" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:210 -#: ../src\wxUI\dialogs\configuration.py:352 -msgid "Save" -msgstr "" - -#: ../src\gtkUI\dialogs\configuration.py:212 ../src\gtkUI\dialogs\search.py:26 -#: ../src\gtkUI\dialogs\show_user.py:17 ../src\gtkUI\dialogs\trends.py:28 -#: ../src\gtkUI\dialogs\update_profile.py:35 -#: ../src\gtkUI\dialogs\userActions.py:40 -#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 -#: ../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:207 ../src\wxUI\dialogs\message.py:283 -#: ../src\wxUI\dialogs\message.py:338 ../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 -msgid "Close" +#: ../src\gtkUI\commonMessageDialogs.py:27 +#: ../src\wxUI\commonMessageDialogs.py:14 +msgid "Do you really want to close {0}?" msgstr "" #: ../src\gtkUI\dialogs\lists.py:9 ../src\wxUI\dialogs\lists.py:10 @@ -1656,12 +1467,28 @@ msgstr "" #: ../src\gtkUI\dialogs\search.py:24 ../src\gtkUI\dialogs\trends.py:26 #: ../src\gtkUI\dialogs\userActions.py:38 #: ../src\gtkUI\dialogs\userSelection.py:26 ../src\gtkUI\dialogs\utils.py:32 -#: ../src\keystrokeEditor\wx_ui.py:60 ../src\wxUI\dialogs\search.py:24 -#: ../src\wxUI\dialogs\trends.py:26 ../src\wxUI\dialogs\userActions.py:38 +#: ../src\keystrokeEditor\wx_ui.py:60 ../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 msgid "OK" msgstr "" +#: ../src\gtkUI\dialogs\search.py:26 ../src\gtkUI\dialogs\show_user.py:17 +#: ../src\gtkUI\dialogs\trends.py:28 ../src\gtkUI\dialogs\update_profile.py:35 +#: ../src\gtkUI\dialogs\userActions.py:40 +#: ../src\gtkUI\dialogs\userSelection.py:28 ../src\gtkUI\dialogs\utils.py:35 +#: ../src\keystrokeEditor\wx_ui.py:21 ../src\wxUI\dialogs\configuration.py:347 +#: ../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:338 ../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 +msgid "Close" +msgstr "" + #: ../src\gtkUI\dialogs\show_user.py:10 ../src\wxUI\dialogs\show_user.py:10 msgid "Details" msgstr "" @@ -1801,7 +1628,7 @@ msgid "&Show / hide" msgstr "" #: ../src\gtkUI\sysTrayIcon.py:38 ../src\wxUI\sysTrayIcon.py:38 -#: ../src\wxUI\view.py:62 +#: ../src\wxUI\view.py:63 msgid "&Documentation" msgstr "" @@ -1817,14 +1644,24 @@ msgstr "" msgid "Manage accounts" msgstr "" -#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:158 +#: ../src\gtkUI\view.py:183 ../src\wxUI\view.py:159 msgid "Address" msgstr "" -#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:181 +#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 msgid "Update" msgstr "" +#: ../src\gtkUI\view.py:206 ../src\wxUI\view.py:182 +msgid "Your {0} version is up to date" +msgstr "" + +#: ../src\issueReporter\issueReporter.py:30 +#: ../src\wxUI\dialogs\configuration.py:314 +#: ../src\wxUI\dialogs\configuration.py:323 +msgid "General" +msgstr "" + #: ../src\issueReporter\issueReporter.py:31 msgid "always" msgstr "" @@ -1901,6 +1738,10 @@ msgstr "" msgid "Select the importance that you think this bug has" msgstr "" +#: ../src\issueReporter\wx_ui.py:69 +msgid "I know that the {0} bug system will get my Twitter username to contact me and fix the bug quickly" +msgstr "" + #: ../src\issueReporter\wx_ui.py:72 msgid "Send report" msgstr "" @@ -2074,30 +1915,34 @@ msgid "Search on twitter" msgstr "" #: ../src\keystrokeEditor\constants.py:41 -msgid "Show the keystroke editor" +msgid "Find a string in the currently focused buffer" msgstr "" #: ../src\keystrokeEditor\constants.py:42 -msgid "Show lists for a specified user" +msgid "Show the keystroke editor" msgstr "" #: ../src\keystrokeEditor\constants.py:43 -msgid "load previous items" +msgid "Show lists for a specified user" msgstr "" #: ../src\keystrokeEditor\constants.py:44 -msgid "Get geolocation" +msgid "load previous items" msgstr "" #: ../src\keystrokeEditor\constants.py:45 -msgid "Display the tweet's geolocation in a dialog" +msgid "Get geolocation" msgstr "" #: ../src\keystrokeEditor\constants.py:46 -msgid "Create a trending topics buffer" +msgid "Display the tweet's geolocation in a dialog" msgstr "" #: ../src\keystrokeEditor\constants.py:47 +msgid "Create a trending topics buffer" +msgstr "" + +#: ../src\keystrokeEditor\constants.py:48 msgid "View conversation" msgstr "" @@ -2161,6 +2006,18 @@ msgstr "" msgid "%s succeeded." msgstr "" +#: ../src\sessionmanager\wxUI.py:10 +msgid "Accounts list" +msgstr "" + +#: ../src\sessionmanager\wxUI.py:12 +msgid "Account" +msgstr "" + +#: ../src\sessionmanager\wxUI.py:16 +msgid "New account" +msgstr "" + #: ../src\sessionmanager\wxUI.py:17 ../src\sessionmanager\wxUI.py:63 msgid "Remove account" msgstr "" @@ -2177,6 +2034,10 @@ msgstr "" msgid "You need to configure an account." msgstr "" +#: ../src\sessionmanager\wxUI.py:47 +msgid "Authorization" +msgstr "" + #: ../src\sessionmanager\wxUI.py:47 msgid "The request to authorize your Twitter account will be opened in your browser. You only need to do this once. Would you like to continue?" msgstr "" @@ -2243,7 +2104,7 @@ msgid "You've added to favourites: %s, %s" msgstr "" #: ../src\twitter\compose.py:99 -msgid "%s(@%s) has marked as favorite: %s" +msgid "%s(@%s) has marked as favourite: %s" msgstr "" #: ../src\twitter\compose.py:101 @@ -2298,6 +2159,14 @@ msgstr "" msgid "You've been unsubscribed from the list %s, which is owned by %s(@%s)" msgstr "" +#: ../src\twitter\compose.py:122 +msgid "You have retweeted a retweet from %s(@%s): %s" +msgstr "" + +#: ../src\twitter\compose.py:123 +msgid "%s(@%s) has retweeted your retweet: %s" +msgstr "" + #: ../src\twitter\compose.py:125 msgid "Unknown" msgstr "" @@ -2322,6 +2191,10 @@ msgstr "" msgid "No status found with that ID" msgstr "" +#: ../src\twitter\utils.py:128 +msgid "Error code {0}" +msgstr "" + #: ../src\update\wxUpdater.py:9 msgid "New version for %s" msgstr "" @@ -2356,8 +2229,72 @@ msgstr "" msgid "The update has been downloaded and installed successfully. Press OK to continue." msgstr "" -#: ../src\wxUI\commonMessageDialogs.py:14 -msgid "Do you really want to close {0}?" +#: ../src\wxUI\commonMessageDialogs.py:18 +msgid " {0} must be restarted for these changes to take effect." +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:18 +msgid "Restart {0} " +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:21 +msgid "Are you sure you want to delete this user from the database? This user will not appear on the autocomplete results anymore." +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:21 +msgid "Confirm" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:24 +msgid "Add a new ignored client" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:24 +msgid "Enter the name of the client here" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:30 +msgid "Do you really want to empty this buffer? It's items will be removed from the list but not from Twitter" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:30 +msgid "Empty buffer" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:34 +msgid "Attention" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:34 +msgid "Do you really want to delete this timeline?" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:40 +msgid "Existing timeline" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:40 +msgid "There's currently a timeline for this user. You are not able to open another" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:43 +msgid "This user has no tweets. You can't open a timeline for this user" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:46 +msgid "This is a protected Twitter user. It means you can not open a timeline using the Streaming API. The user's tweets will not update due to a twitter policy. Do you want to continue?" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:46 +msgid "Warning" +msgstr "" + +#: ../src\wxUI\commonMessageDialogs.py:49 +msgid "This is a protected user account, you need follow to this user for viewing your tweets or favourites." +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:14 +msgid "Language" msgstr "" #: ../src\wxUI\dialogs\configuration.py:21 @@ -2372,6 +2309,18 @@ msgstr "" msgid "Speak a message when {0} launches" msgstr "" +#: ../src\wxUI\dialogs\configuration.py:27 +msgid "Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:29 +msgid "Activate Sapi5 when any other screen reader is not being run" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:31 +msgid "Hide GUI on launch" +msgstr "" + #: ../src\wxUI\dialogs\configuration.py:34 msgid "Keymap" msgstr "" @@ -2404,6 +2353,10 @@ msgstr "" msgid "API calls (One API call = 200 tweets, two API calls = 400 tweets, etc):" msgstr "" +#: ../src\wxUI\dialogs\configuration.py:89 +msgid "Items on each API call" +msgstr "" + #: ../src\wxUI\dialogs\configuration.py:95 msgid "Inverted buffers: The newest tweets will be shown at the beginning while the oldest at the end" msgstr "" @@ -2468,18 +2421,91 @@ msgstr "" msgid "The buffer is already at the bottom of the list." msgstr "" -#: ../src\wxUI\dialogs\configuration.py:303 +#: ../src\wxUI\dialogs\configuration.py:201 +#: ../src\wxUI\dialogs\configuration.py:332 +msgid "Ignored clients" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:207 +msgid "Add client" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:208 +msgid "Remove client" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:232 +msgid "Volume" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:240 +msgid "Session mute" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:242 +msgid "Output device" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:249 +msgid "Input device" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:257 +msgid "Sound pack" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:272 +msgid "If you have a SndUp account, enter your API Key here. If your API Key is invalid, {0} will fail to upload. If there is no API Key here, {0} will upload annonymously." +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:287 +msgid "Disconnect your Pocket account" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:292 +msgid "Pocket Authorization" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:292 +msgid "The authorization request will be opened in your browser. You only need to do this once. Do you want to continue?" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:295 msgid "Error during authorization. Try again later." msgstr "" -#: ../src\wxUI\dialogs\configuration.py:327 +#: ../src\wxUI\dialogs\configuration.py:308 +msgid "{0} preferences" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:319 msgid "Proxy" msgstr "" -#: ../src\wxUI\dialogs\configuration.py:336 +#: ../src\wxUI\dialogs\configuration.py:328 msgid "Buffers" msgstr "" +#: ../src\wxUI\dialogs\configuration.py:336 +msgid "Sound" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:340 +msgid "Services" +msgstr "" + +#: ../src\wxUI\dialogs\configuration.py:345 +msgid "Save" +msgstr "" + +#: ../src\wxUI\dialogs\find.py:10 +msgid "Find in current buffer" +msgstr "" + +#: ../src\wxUI\dialogs\find.py:11 +msgid "String" +msgstr "" + #: ../src\wxUI\dialogs\lists.py:133 msgid "Do you really want to delete this list?" msgstr "" @@ -2521,7 +2547,7 @@ msgstr "" msgid "E&xit" msgstr "" -#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:74 +#: ../src\wxUI\view.py:27 ../src\wxUI\view.py:75 msgid "&Tweet" msgstr "" @@ -2594,58 +2620,66 @@ msgid "New &trending topics buffer..." msgstr "" #: ../src\wxUI\view.py:53 +msgid "Find a string in the currently focused buffer..." +msgstr "" + +#: ../src\wxUI\view.py:54 msgid "&Load previous items" msgstr "" -#: ../src\wxUI\view.py:55 +#: ../src\wxUI\view.py:56 msgid "&Mute" msgstr "" -#: ../src\wxUI\view.py:56 +#: ../src\wxUI\view.py:57 msgid "&Autoread" msgstr "" -#: ../src\wxUI\view.py:57 +#: ../src\wxUI\view.py:58 msgid "&Clear buffer" msgstr "" -#: ../src\wxUI\view.py:58 +#: ../src\wxUI\view.py:59 msgid "&Destroy" msgstr "" -#: ../src\wxUI\view.py:64 +#: ../src\wxUI\view.py:65 msgid "Sounds &tutorial" msgstr "" -#: ../src\wxUI\view.py:65 +#: ../src\wxUI\view.py:66 msgid "&What's new in this version?" msgstr "" -#: ../src\wxUI\view.py:67 +#: ../src\wxUI\view.py:68 msgid "&Check for updates" msgstr "" -#: ../src\wxUI\view.py:68 +#: ../src\wxUI\view.py:69 msgid "&Report an error" msgstr "" -#: ../src\wxUI\view.py:73 +#: ../src\wxUI\view.py:70 +msgid "{0}'s &website" +msgstr "" + +#: ../src\wxUI\view.py:71 +msgid "About &{0}" +msgstr "" + +#: ../src\wxUI\view.py:74 msgid "&Application" msgstr "" -#: ../src\wxUI\view.py:75 +#: ../src\wxUI\view.py:76 msgid "&User" msgstr "" -#: ../src\wxUI\view.py:76 +#: ../src\wxUI\view.py:77 msgid "&Buffer" msgstr "" -#: ../src\wxUI\view.py:77 +#: ../src\wxUI\view.py:78 msgid "&Help" msgstr "" -#: ../src\wxUI\view.py:181 -msgid "Your {0} version is up to date" -msgstr "" -