diff --git a/README.rst b/README.rst index b2e06d28..4f079f43 100644 --- a/README.rst +++ b/README.rst @@ -163,3 +163,9 @@ For the next deploy you can just run ``fab deploy`` and in case your ``requirements.txt`` changes ``fab deploy:update``. The deployed code will be accessible on ``http://localhost:8080``. + + +.. image:: https://d2weczhvl823v0.cloudfront.net/CanaimaGNULinux/colab/trend.png + :alt: Bitdeli badge + :target: https://bitdeli.com/free + diff --git a/docs/debianwheezy.rst b/docs/debianwheezy.rst new file mode 100644 index 00000000..bc367661 --- /dev/null +++ b/docs/debianwheezy.rst @@ -0,0 +1,109 @@ +.. -*- coding: utf-8 -*- + +.. highlight:: rest + +.. _debianwheezy_install: + +Installation instructions for Debian Wheezy +=========================================== + +.. contents :: :local: + +Install dependencies +-------------------- + +* Install Git and VirtualBox: :: + + aptitude install git-core virtualbox libevent-dev + +* Download Vagrant 3.3 and install it: :: + + wget http://files.vagrantup.com/packages/a40522f5fabccb9ddabad03d836e120ff5d14093/vagrant_1.3.5_i686.deb + dpkg -i vagrant_1.3.5_i686.deb + +* Install Fabric: :: + + aptitude install build-essential python-dev python-pkg-resources python-setuptools + easy_install --upgrade pip + pip install --upgrade setuptools + pip install fabric + +Getting started with the Virtual Machine +------------------------------------------ + +First you will need to clone the repository: + +:: + + git clone git@github.com:interlegis/colab.git + + +.. note:: + + Here we are assuming you have ssh permissions to clone the repo using ssh. If not + fork it and clone your own fork (or use https instead of ssh). + + +Enter in the repository you've just cloned. +To start working all you need is to turn the virtual machine on with the command: + +:: + + vagrant up + + +.. note:: + + BE PATIENT! + + This will take a while. The :command:`vagrant up` will download a full virtual + machine (with ``virtualbox``) running a *Ubuntu 12.04 64bits*. After the vm is up + and running the command will also configure it (using ``puppet``) and that will + also take a bit. + + +Running Colab +-------------- + +Now that you have a vm running we have two options to run Colab: + +* Django development server (runserver) + +* Gunicorn + supervisor + Nginx + + +Django development server (runserver) +++++++++++++++++++++++++++++++++++++++ + +This option is advised for developers working in new features for Colab. +The code used to run Colab will be the same code placed on your machine, +that means that if you change the code in your own computer the code on +the vm will also change. + +Make sure you have a :file:`local_settings.py` file placed in your repository. It +should be located in :file:`src/colab/`. + +To get started you can copy the example file as follow: + +:: + + cp src/colab/local_settings-dev.py src/colab/local_settings.py + + +Now we are ready to run: + +:: + + fab runserver + + +.. note:: + + As this is the first time you run this command it will install all + requirements from :file:`requirements.txt` into a virtualenv. To update + those requirements you should run :command:`fab runserver:update`. + + +The :command:`fab runserver` command will open the django builtin development +server on the port 7000 but due to vagrant magic you will be able to +access it on ``http://localhost:8000/``. diff --git a/docs/install.rst b/docs/install.rst index 882e73ad..40908cea 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -12,4 +12,6 @@ Colab software can be install in many Linux distros, like these: .. toctree:: :maxdepth: 1 + debianwheezy + ubuntu1204 ubuntu1004 diff --git a/docs/ubuntu1204.rst b/docs/ubuntu1204.rst new file mode 100644 index 00000000..a6092173 --- /dev/null +++ b/docs/ubuntu1204.rst @@ -0,0 +1,108 @@ +.. -*- coding: utf-8 -*- + +.. highlight:: rest + +.. _ubuntu1204_install: + +Installation instructions for Ubuntu 12.04 +========================================== + +.. contents :: :local: + +Install dependencies +-------------------- + +* Install Git and VirtualBox: :: + + sudo apt-get install git-core virtualbox + +* Download Vagrant 3.3 and install it: :: + + wget http://files.vagrantup.com/packages/a40522f5fabccb9ddabad03d836e120ff5d14093/vagrant_1.3.5_i686.deb + sudo dpkg -i vagrant_1.3.5_i686.deb + +* Install Fabric: :: + + sudo apt-get install build-essential python-dev python-pkg-resources python-setuptools + sudo easy_install --upgrade pip + sudo pip install fabric + +Getting started with the Virtual Machine +------------------------------------------ + +First you will need to clone the repository: + +.. code-block:: + + git clone git@github.com:interlegis/colab.git + + +.. note:: + + Here we are assuming you have ssh permissions to clone the repo using ssh. If not + fork it and clone your own fork (or use https instead of ssh). + + +Enter in the repository you've just cloned. +To start working all you need is to turn the virtual machine on with the command: + +.. code-block:: + + vagrant up + + +.. note:: + + BE PATIENT! + + This will take a while. The :command:`vagrant up` will download a full virtual + machine (with ``virtualbox``) running a *Ubuntu 12.04 64bits*. After the vm is up + and running the command will also configure it (using ``puppet``) and that will + also take a bit. + + +Running Colab +-------------- + +Now that you have a vm running we have two options to run Colab: + +* Django development server (runserver) + +* Gunicorn + supervisor + Nginx + + +Django development server (runserver) +++++++++++++++++++++++++++++++++++++++ + +This option is advised for developers working in new features for Colab. +The code used to run Colab will be the same code placed on your machine, +that means that if you change the code in your own computer the code on +the vm will also change. + +Make sure you have a :file:`local_settings.py` file placed in your repository. It +should be located in :file:`src/colab/`. + +To get started you can copy the example file as follow: + +.. code-block:: + + cp src/colab/local_settings-dev.py src/colab/local_settings.py + + +Now we are ready to run: + +.. code-block:: + + fab runserver + + +.. note:: + + As this is the first time you run this command it will install all + requirements from :file:`requirements.txt` into a virtualenv. To update + those requirements you should run :command:`fab runserver:update`. + + +The :command:`fab runserver` command will open the django builtin development +server on the port 7000 but due to vagrant magic you will be able to +access it on ``http://localhost:8000/``. diff --git a/requirements.txt b/requirements.txt index f7cba0cb..82198816 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ Django>=1.6,<1.7 -South==0.8.1 +South==0.8.4 psycopg2==2.5.1 django-piston==0.2.3 pytz==2011n diff --git a/src/badger/models.py b/src/badger/models.py index 721bdd2f..1be1227c 100644 --- a/src/badger/models.py +++ b/src/badger/models.py @@ -80,5 +80,7 @@ def __unicode__(self): class BadgeI18N(I18nModel): class Meta: + verbose_name = _(u'Badge I18N') + verbose_name_plural = _(u'Badges I18N') source_model = Badge translation_fields = ('title', 'description') diff --git a/src/locale/es/LC_MESSAGES/django.mo b/src/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 00000000..b04d91a3 Binary files /dev/null and b/src/locale/es/LC_MESSAGES/django.mo differ diff --git a/src/locale/es/LC_MESSAGES/django.po b/src/locale/es/LC_MESSAGES/django.po new file mode 100644 index 00000000..025afab2 --- /dev/null +++ b/src/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,1057 @@ +# colab translation. +# Copyright (C) 2012 colab +# This file is distributed under the same license as the colab package. +# Leonardo J. Caballero G. , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: colab\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-12-14 22:56+0000\n" +"PO-Revision-Date: 2013-12-14 18:30-0430\n" +"Last-Translator: Leonardo J. Caballero G. \n" +"Language-Team: ES \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" + +#: accounts/admin.py:40 +msgid "Personal info" +msgstr "Información personal" + +#: accounts/admin.py:43 +msgid "Permissions" +msgstr "Permisos" + +#: accounts/admin.py:45 +msgid "Important dates" +msgstr "Actualizaciones importantes" + +#: accounts/forms.py:24 +msgid "Social account does not exist" +msgstr "La cuenta social no existe" + +#: accounts/forms.py:65 +msgid "Mailing lists" +msgstr "Listas de correo electrónico" + +#: accounts/forms.py:72 +msgid "Password" +msgstr "Contraseña" + +#: accounts/forms.py:74 +msgid "Password confirmation" +msgstr "Confirmación de la contraseña" + +#: accounts/forms.py:76 +msgid "Enter the same password as above, for verification." +msgstr "Ingrese la misma contraseña de arriba, para verificación." + +#: accounts/forms.py:94 +msgid "Password mismatch" +msgstr "Las contraseñas no coinciden" + +#: accounts/views.py:144 +msgid "Your profile has been created!" +msgstr "¡Su perfil ha sido creado!" + +#: accounts/views.py:145 +msgid "" +"You must login to validated your profile. Profiles not validated are deleted " +"in 24h." +msgstr "" +"Usted debe haber iniciado sesión de usuario para validar su perfil. Los " +"perfiles no validados serán eliminados en 24 horas." + +#: accounts/views.py:226 +msgid "Could not change your password. Please, try again later." +msgstr "No pudo cambiar su contraseña. Por favor, intente mas tarde." + +#: accounts/views.py:235 +msgid "You've changed your password successfully!" +msgstr "¡Has cambiado la contraseña correctamente!" + +#: accounts/management/commands/delete_invalid.py:42 +#, python-format +msgid "%(count)s users deleted." +msgstr "%(count)s usuarios eliminados." + +#: accounts/templates/accounts/change_password.html:8 +msgid "Change XMPP Client and SVN Password" +msgstr "Cambiar contraseña de cliente XMPP y SVN" + +#: accounts/templates/accounts/change_password.html:17 +#: accounts/templates/accounts/user_update_form.html:195 +msgid "Change Password" +msgstr "Cambiar contraseña" + +#: accounts/templates/accounts/manage_subscriptions.html:6 +msgid "Mailing List Subscriptions" +msgstr "Suscripciones a listas de correo" + +#: accounts/templates/accounts/manage_subscriptions.html:36 +msgid "Update subscriptions" +msgstr "Actualizar suscripciones" + +#: accounts/templates/accounts/user_create_form.html:5 +msgid "Sign up" +msgstr "Registrarse" + +#: accounts/templates/accounts/user_create_form.html:10 +msgid "Please correct the errors below and try again" +msgstr "Por favor, corrija los siguientes errores y trate de nuevo" + +#: accounts/templates/accounts/user_create_form.html:17 +msgid "Required fields" +msgstr "Campos obligatorios" + +#: accounts/templates/accounts/user_create_form.html:29 +msgid "Personal Information" +msgstr "Información Personal" + +#: accounts/templates/accounts/user_create_form.html:46 +msgid "Subscribe to groups" +msgstr "Suscribir a los grupos" + +#: accounts/templates/accounts/user_create_form.html:60 templates/base.html:98 +msgid "Register" +msgstr "Registro" + +#: accounts/templates/accounts/user_detail.html:25 +msgid "profile" +msgstr "perfil" + +#: accounts/templates/accounts/user_detail.html:26 +msgid "list membership" +msgstr "participação em listas" + +#: accounts/templates/accounts/user_detail.html:49 +msgid "Twitter account" +msgstr "Cuenta Twitter" + +#: accounts/templates/accounts/user_detail.html:52 +msgid "Facebook account" +msgstr "Cuenta Facebook" + +#: accounts/templates/accounts/user_detail.html:60 +msgid "Personal webpage" +msgstr "Página web personal" + +#: accounts/templates/accounts/user_detail.html:66 +msgid "Groups: " +msgstr "Grupos: " + +#: accounts/templates/accounts/user_detail.html:79 +msgid "Contributions by Area" +msgstr "Contribuciones por área" + +#: accounts/templates/accounts/user_detail.html:91 +msgid "Groups Inscriptions" +msgstr "Inscripciones en grupos" + +#: accounts/templates/accounts/user_detail.html:104 badger/models.py:70 +msgid "Badges" +msgstr "Medallas" + +#: accounts/templates/accounts/user_detail.html:123 +msgid "Latest posted" +msgstr "Últimos mensajes enviados" + +#: accounts/templates/accounts/user_detail.html:128 +msgid "There are no posts by this user so far." +msgstr "No hay mensajes de este usuario, hasta ahora." + +#: accounts/templates/accounts/user_detail.html:134 badger/models.py:23 +msgid "Contributions" +msgstr "Contribuciones" + +#: accounts/templates/accounts/user_detail.html:139 +msgid "No contributions of this user so far." +msgstr "No hay contribuciones de este usuario, hasta ahora." + +#: accounts/templates/accounts/user_update_form.html:65 +msgid "We sent a verification email to " +msgstr "Enviamos un correo electrónico de verificacion para " + +#: accounts/templates/accounts/user_update_form.html:66 +msgid "Please follow the instructions in it." +msgstr "Por favor, siga las instrucciones." + +#: accounts/templates/accounts/user_update_form.html:110 +msgid "profile information" +msgstr "información del perfil" + +#: accounts/templates/accounts/user_update_form.html:115 +msgid "Change your avatar at Gravatar.com" +msgstr "Cambie su foto en Gravatar.com" + +#: accounts/templates/accounts/user_update_form.html:142 search/utils.py:8 +msgid "Emails" +msgstr "Correos enviados" + +#: accounts/templates/accounts/user_update_form.html:151 +msgid "Primary" +msgstr "Primario" + +#: accounts/templates/accounts/user_update_form.html:154 +msgid "Setting..." +msgstr "Configurando..." + +#: accounts/templates/accounts/user_update_form.html:154 +msgid "Set as Primary" +msgstr "Definir como Primario" + +#: accounts/templates/accounts/user_update_form.html:155 +msgid "Deleting..." +msgstr "Eliminando..." + +#: accounts/templates/accounts/user_update_form.html:155 +#: accounts/templates/accounts/user_update_form.html:167 +msgid "Delete" +msgstr "Eliminar" + +#: accounts/templates/accounts/user_update_form.html:166 +msgid "Sending verification..." +msgstr "Enviando verificación..." + +#: accounts/templates/accounts/user_update_form.html:166 +msgid "Verify" +msgstr "Verificar" + +#: accounts/templates/accounts/user_update_form.html:174 +msgid "Add another email address:" +msgstr "Agregar otra dirección de correo electrónico:" + +#: accounts/templates/accounts/user_update_form.html:177 +msgid "Add" +msgstr "Agregar" + +#: accounts/templates/accounts/user_update_form.html:188 +msgid "" +"Change SVN and XMPP Client password" +msgstr "" +"Cambiar la contraseña de Repositorio y del Mensajero" + +#: accounts/templates/accounts/user_update_form.html:193 +msgid "" +"This feature is available only for who needs to change the password for some " +"reason as having an old user with the same username, forgot your password to " +"commit, usage of other XMPP Client for connection. Usually, you won't need " +"to change this password. Only change it if you are sure about what you are " +"doing." +msgstr "" +"Esta característica sólo está disponible para quien tiene que cambiar la " +"contraseña por alguna razón los que tienen un usuario anterior con el mismo " +"nombre de usuario, se olvidó su contraseña para hacer un commit, usar de " +"otro cliente XMPP para la conexión. Por lo general, usted no tendrá que " +"cambiar esta contraseña. Sólo cambiarlo si está seguro acerca de lo que está " +"haciendo." + +#: accounts/templates/accounts/user_update_form.html:203 +msgid "Update" +msgstr "Actualizar" + +#: badger/forms.py:19 badger/models.py:40 colab/custom_settings.py:53 +msgid "Image" +msgstr "Imagen" + +#: badger/forms.py:30 +msgid "You must add an Image" +msgstr "Usted debe agregar una Imagen" + +#: badger/models.py:12 +msgid "Greater than or equal" +msgstr "Mayor que o igual" + +#: badger/models.py:13 +msgid "less than or equal" +msgstr "menor que o igual" + +#: badger/models.py:14 +msgid "Equal" +msgstr "Igual" + +#: badger/models.py:15 +msgid "Biggest" +msgstr "Mayor" + +#: badger/models.py:18 +msgid "Automatically" +msgstr "Automáticamente" + +#: badger/models.py:19 +msgid "Manual" +msgstr "Manual" + +#: badger/models.py:22 super_archives/models.py:277 +msgid "Messages" +msgstr "Mensajes" + +#: badger/models.py:24 +msgid "Wikis" +msgstr "Wikis" + +#: badger/models.py:25 +msgid "Revisions" +msgstr "Revisión de cambios" + +#: badger/models.py:26 search/views.py:42 +#: search/templates/search/includes/search_filters.html:124 +msgid "Ticket" +msgstr "Ticket" + +#: badger/models.py:36 +msgid "Title" +msgstr "Título" + +#: badger/models.py:38 +msgid "Description" +msgstr "Descripción" + +#: badger/models.py:41 search/forms.py:18 +msgid "Type" +msgstr "Tipo" + +#: badger/models.py:43 +msgid "User attribute" +msgstr "Atributo de usuario" + +#: badger/models.py:49 +msgid "Comparison" +msgstr "Comparación" + +#: badger/models.py:56 +msgid "Value" +msgstr "Valor" + +#: badger/models.py:62 +msgid "Awardees" +msgstr "Premiados" + +#: badger/models.py:66 +msgid "Order" +msgstr "Ordenar" + +#: badger/models.py:69 +msgid "Badge" +msgstr "Medalla" + +#: badger/models.py:83 +msgid "Badge I18N" +msgstr "Traducción de Medalla" + +#: badger/models.py:84 +msgid "Badges I18N" +msgstr "Traducciones de Medalla" + +#: colab/custom_settings.py:9 +msgid "English" +msgstr "Ingles" + +#: colab/custom_settings.py:10 +msgid "Portuguese" +msgstr "Portugués" + +#: colab/custom_settings.py:11 +msgid "Spanish" +msgstr "Español" + +#: colab/custom_settings.py:34 +msgid "Recent activity" +msgstr "Actividad reciente" + +#: colab/custom_settings.py:38 +msgid "Relevance" +msgstr "Relevancia" + +#: colab/custom_settings.py:46 +msgid "Document" +msgstr "Documento" + +#: colab/custom_settings.py:48 +msgid "Presentation" +msgstr "Presentación" + +#: colab/custom_settings.py:49 +msgid "Text" +msgstr "Texto" + +#: colab/custom_settings.py:50 search/utils.py:9 +msgid "Code" +msgstr "Código" + +#: colab/custom_settings.py:52 +msgid "Compressed" +msgstr "Compactado" + +#: colab/custom_settings.py:55 +msgid "Spreadsheet" +msgstr "Hoja de cálculo" + +#: colab/custom_settings.py:268 +msgid "Planet Colab" +msgstr "Planeta Colab" + +#: colab/custom_settings.py:269 +msgid "Colab blog aggregator" +msgstr "Agregador de blog para Colab" + +#: planet/templates/feedzilla/_post_template.html:8 +msgid "From" +msgstr "De" + +#: planet/templates/feedzilla/_post_template.html:8 +msgid "on" +msgstr "en" + +#: planet/templates/feedzilla/_post_template.html:12 +msgid "Read original" +msgstr "Leer el original" + +#: planet/templates/feedzilla/base.html:4 +msgid "Community Blogs" +msgstr "Blogs de la comunidad" + +#: planet/templates/feedzilla/base.html:7 templates/base.html:76 +msgid "Planet" +msgstr "Planeta" + +#: planet/templates/feedzilla/base.html:17 +msgid "Tags" +msgstr "Etiquetas" + +#: planet/templates/feedzilla/base.html:21 +msgid "Source Blogs" +msgstr "Origen de Blogs" + +#: planet/templates/feedzilla/base.html:24 +#: planet/templates/feedzilla/submit_blog.html:5 +msgid "Submit a blog" +msgstr "Enviar un blog" + +#: planet/templates/feedzilla/index.html:10 +msgid "There is no RSS registered" +msgstr "No hay RSS registrado" + +#: planet/templates/feedzilla/index.html:12 +msgid "Please" +msgstr "Por favor" + +#: planet/templates/feedzilla/index.html:13 +msgid "click here" +msgstr "haga clic aquí" + +#: planet/templates/feedzilla/index.html:14 +msgid "to submit a blog" +msgstr "enviar un blog" + +#: planet/templates/feedzilla/submit_blog.html:8 +msgid "" +"Thank you. Your application has been accepted and will be reviewed by admin " +"in the near time." +msgstr "" +"Gracias. Su solicitud ha sido aceptada y sera revisado por el administrador, " +"lo mas pronto posible." + +#: planet/templates/feedzilla/submit_blog.html:29 +msgid "Submit" +msgstr "Enviar" + +#: planet/templates/feedzilla/tag.html:7 +#, python-format +msgid "Posts with «%(tag)s» label" +msgstr "Mensajes con la etiqueta «%(tag)s»" + +#: planet/templates/feedzilla/tag.html:16 +msgid "No posts with such label" +msgstr "No hay mensajes con esa etiqueta" + +#: rss/feeds.py:13 +msgid "Latest Discussions" +msgstr "Últimas discusiones" + +#: rss/feeds.py:32 +msgid "Discussions Most Relevance" +msgstr "Discusiones más relevantes" + +#: rss/feeds.py:51 +msgid "Latest collaborations" +msgstr "Últimas colaboraciones" + +#: search/forms.py:16 search/templates/search/search.html:41 +#: templates/base.html:92 +msgid "Search" +msgstr "Busca" + +#: search/forms.py:19 search/views.py:22 search/views.py:33 search/views.py:69 +#: search/views.py:86 search/views.py:119 +msgid "Author" +msgstr "Autor" + +#: search/forms.py:21 search/views.py:70 +msgid "Status" +msgstr "Estatus" + +#: search/forms.py:25 search/views.py:36 +msgid "Mailinglist" +msgstr "Lista de correo electrónico" + +#: search/forms.py:29 search/views.py:46 +msgid "Milestone" +msgstr "Etapa" + +#: search/forms.py:30 search/views.py:51 +msgid "Priority" +msgstr "Prioridad" + +#: search/forms.py:31 search/views.py:56 +msgid "Component" +msgstr "Componente" + +#: search/forms.py:32 search/views.py:61 +msgid "Severity" +msgstr "Severidad" + +#: search/forms.py:33 search/views.py:66 +msgid "Reporter" +msgstr "Relator" + +#: search/forms.py:34 search/views.py:73 +msgid "Keywords" +msgstr "Palabras claves" + +#: search/forms.py:35 search/views.py:25 search/views.py:78 +msgid "Collaborators" +msgstr "Colaboradores" + +#: search/forms.py:36 search/views.py:89 +msgid "Repository" +msgstr "Repositorio" + +#: search/forms.py:37 search/views.py:99 +msgid "Username" +msgstr "Usuario" + +#: search/forms.py:38 search/views.py:102 +msgid "Name" +msgstr "Nombre" + +#: search/forms.py:39 search/views.py:105 +msgid "Institution" +msgstr "Institución" + +#: search/forms.py:40 search/views.py:108 +msgid "Role" +msgstr "Cargo" + +#: search/forms.py:41 search/templates/search/includes/search_filters.html:151 +#: search/templates/search/includes/search_filters.html:153 +#: search/templates/search/includes/search_filters.html:185 +#: search/templates/search/includes/search_filters.html:186 +msgid "Since" +msgstr "Desde" + +#: search/forms.py:42 search/templates/search/includes/search_filters.html:160 +#: search/templates/search/includes/search_filters.html:162 +#: search/templates/search/includes/search_filters.html:189 +#: search/templates/search/includes/search_filters.html:190 +msgid "Until" +msgstr "Hasta" + +#: search/forms.py:43 search/views.py:116 +msgid "Filename" +msgstr "Nombre de archivo" + +#: search/forms.py:44 search/views.py:122 +msgid "Used by" +msgstr "Usado por" + +#: search/forms.py:45 search/views.py:125 +msgid "File type" +msgstr "Tipo de archivo" + +#: search/forms.py:46 search/views.py:128 +msgid "Size" +msgstr "Tamaño" + +#: search/utils.py:7 search/views.py:20 +#: search/templates/search/includes/search_filters.html:116 +msgid "Wiki" +msgstr "Wiki" + +#: search/utils.py:10 +msgid "Tickets" +msgstr "Tickets" + +#: search/utils.py:11 +msgid "Attachments" +msgstr "Anexos" + +#: search/views.py:31 search/templates/search/includes/search_filters.html:120 +msgid "Discussion" +msgstr "Discusión" + +#: search/views.py:84 search/templates/search/includes/search_filters.html:128 +msgid "Changeset" +msgstr "Conjunto de cambios" + +#: search/views.py:95 search/templates/search/includes/search_filters.html:132 +#: super_archives/models.py:44 +msgid "User" +msgstr "Usuario" + +#: search/views.py:112 +#: search/templates/search/includes/search_filters.html:136 +msgid "Attachment" +msgstr "Anexo" + +#: search/templates/search/search.html:4 +msgid "search" +msgstr "busca" + +#: search/templates/search/search.html:46 +msgid "documents found" +msgstr "documentos encontrados" + +#: search/templates/search/search.html:57 +msgid "Search here" +msgstr "Buscar aquí" + +#: search/templates/search/search.html:69 +#: search/templates/search/search.html:79 +msgid "Filters" +msgstr "Filtros" + +#: search/templates/search/search.html:100 +msgid "No results for your search." +msgstr "No hay resultados para su búsqueda." + +#: search/templates/search/search.html:102 +msgid "You are searching for" +msgstr "Usted está buscando" + +#: search/templates/search/includes/search_filters.html:5 +#: search/templates/search/includes/search_filters.html:33 +#: search/templates/search/includes/search_filters.html:51 +#: search/templates/search/includes/search_filters.html:69 +msgid "Remove filter" +msgstr "Remover filtro" + +#: search/templates/search/includes/search_filters.html:88 +#: search/templates/search/includes/search_filters.html:171 +#: search/templates/search/includes/search_filters.html:195 +msgid "Filter" +msgstr "Filtro" + +#: search/templates/search/includes/search_filters.html:94 +msgid "Sort by" +msgstr "Ordenar por" + +#: search/templates/search/includes/search_filters.html:111 +msgid "Types" +msgstr "Tipos" + +#: super_archives/models.py:45 +msgid "Select an User from list" +msgstr "Seleccione un Usuario de la lista" + +#: super_archives/models.py:47 super_archives/models.py:57 +msgid "Email Address" +msgstr "Dirección de correo" + +#: super_archives/models.py:48 +msgid "Enter a Email Address" +msgstr "Introducir una dirección de correo electrónico" + +#: super_archives/models.py:50 +msgid "Real name" +msgstr "Nombre real" + +#: super_archives/models.py:51 +msgid "Enter an User's real name" +msgstr "Ingrese un nombre real para el Usuario" + +#: super_archives/models.py:53 +msgid "MD5" +msgstr "MD5" + +#: super_archives/models.py:54 +msgid "Enter a MD5 Sum" +msgstr "Ingrese un MD5 Sum" + +#: super_archives/models.py:58 +msgid "Email Addresses" +msgstr "Direcciones de correo" + +#: super_archives/models.py:72 +#: super_archives/templates/message-preview.html:62 +#: super_archives/templates/message-thread.html:4 +msgid "Anonymous" +msgstr "Anónimos" + +#: super_archives/models.py:121 +msgid "Subject token" +msgstr "Símbolo asunto" + +#: super_archives/models.py:123 +msgid "Mailing List" +msgstr "Lista de correo electrónico" + +#: super_archives/models.py:124 +msgid "The Mailing List where is the thread" +msgstr "La lista de correo electrónico donde esta el hilo de discusión" + +#: super_archives/models.py:127 +msgid "Latest message" +msgstr "Últimos mensaje" + +#: super_archives/models.py:128 +msgid "Latest message posted" +msgstr "Últimos mensajes enviados" + +#: super_archives/models.py:129 +msgid "Score" +msgstr "Puntuación" + +#: super_archives/models.py:129 +msgid "Thread score" +msgstr "Puntuación de mensaje" + +#: super_archives/models.py:131 super_archives/models.py:269 +msgid "is SPAM?" +msgstr "¿Es SPAM?" + +#: super_archives/models.py:139 super_archives/models.py:251 +msgid "Thread" +msgstr "Hilo" + +#: super_archives/models.py:140 +msgid "Threads" +msgstr "Hilos" + +#: super_archives/models.py:249 +msgid "From address" +msgstr "Dirección «De»" + +#: super_archives/models.py:256 +msgid "Subject" +msgstr "Asunto" + +#: super_archives/models.py:257 +msgid "Please enter a message subject" +msgstr "Por favor, ingrese un asunto del mensaje" + +#: super_archives/models.py:259 +msgid "Subject clean" +msgstr "Asunto limpio" + +#: super_archives/models.py:261 +msgid "Message body" +msgstr "Cuerpo de mensaje" + +#: super_archives/models.py:262 +msgid "Please enter a message body" +msgstr "Por favor, ingrese un cuerpo de contenido del mensaje" + +#: super_archives/models.py:264 +msgid "Received time" +msgstr "Hora de recepción" + +#: super_archives/models.py:265 +msgid "Please enter a Received time" +msgstr "Por favor, ingrese una hora de recepción" + +#: super_archives/models.py:267 +msgid "Message id" +msgstr "ID de Mensaje" + +#: super_archives/models.py:276 +msgid "Message" +msgstr "Mensaje" + +#: super_archives/views.py:91 +msgid "Error trying to connect to Mailman API" +msgstr "Error al tratar conectarse a la API del Mailman" + +#: super_archives/views.py:94 +msgid "Timeout trying to connect to Mailman API" +msgstr "Tiempo de conexión al tratar conectarse a la API del Mailman" + +#: super_archives/views.py:98 +msgid "" +"Your message was sent to this topic. It may take some minutes before it's " +"delivered by email to the group. Why don't you breath some fresh air in the " +"meanwhile?" +msgstr "" +"Su mensaje fue enviado a este tema. Pueden pasar algunos minutos antes de " +"que sea entregado por correo electrónico al grupo. ¿Por qué no respirar un " +"poco de aire fresco en el mientras tanto?" + +#: super_archives/views.py:107 +msgid "You cannot send an empty email" +msgstr "Usted no puede enviar un mensaje vació" + +#: super_archives/views.py:109 +msgid "Mailing list does not exist" +msgstr "Lista de correo no existe" + +#: super_archives/views.py:111 +msgid "Unknown error trying to connect to Mailman API" +msgstr "Error desconocido al tratar conectarse a la API del Mailman" + +#: super_archives/views.py:146 +msgid "" +"The email address you are trying to verify either has already been verified " +"or does not exist." +msgstr "" +"La dirección de correo electrónico que usted está tratando de verificar " +"cualquiera que ya se ha verificado o no existe." + +#: super_archives/views.py:157 +msgid "" +"The email address you are trying to verify is already an active email " +"address." +msgstr "" +"La dirección de correo electrónico que está intentando verificar ya es una " +"dirección de correo electrónico activa." + +#: super_archives/views.py:167 +msgid "Email address verified!" +msgstr "¡Dirección de correo electrónico verificada!" + +#: super_archives/templates/message-preview.html:42 +#: super_archives/templates/message-preview.html:62 +msgid "by" +msgstr "por" + +#: super_archives/templates/message-preview.html:65 +#: super_archives/templates/message-thread.html:159 +msgid "ago" +msgstr "atrás" + +#: super_archives/templates/message-thread.html:35 +msgid "You must login before voting." +msgstr "Usted debe iniciar sesión antes de votar." + +#: super_archives/templates/message-thread.html:130 +msgid "Order by" +msgstr "Ordenar por" + +#: super_archives/templates/message-thread.html:134 +msgid "Votes" +msgstr "Votos" + +#: super_archives/templates/message-thread.html:138 +msgid "Date" +msgstr "Fecha" + +#: super_archives/templates/message-thread.html:143 +msgid "Related:" +msgstr "Relacionado:" + +#: super_archives/templates/message-thread.html:154 +msgid "Statistics:" +msgstr "Estadísticas:" + +#: super_archives/templates/message-thread.html:158 +msgid "started at" +msgstr "iniciada" + +#: super_archives/templates/message-thread.html:164 +msgid "viewed" +msgstr "vistos" + +#: super_archives/templates/message-thread.html:165 +#: super_archives/templates/message-thread.html:170 +#: super_archives/templates/message-thread.html:175 +msgid "times" +msgstr "veces" + +#: super_archives/templates/message-thread.html:169 +msgid "answered" +msgstr "respondido" + +#: super_archives/templates/message-thread.html:174 +msgid "voted" +msgstr "votado" + +#: super_archives/templates/message-thread.html:180 +msgid "Tags:" +msgstr "Etiquetas:" + +#: super_archives/templates/superarchives/thread-dashboard.html:5 +#: templates/base.html:73 +msgid "Groups" +msgstr "Grupos" + +#: super_archives/templates/superarchives/thread-dashboard.html:15 +msgid "latest" +msgstr "más reciente" + +#: super_archives/templates/superarchives/thread-dashboard.html:23 +#: super_archives/templates/superarchives/thread-dashboard.html:37 +msgid "more..." +msgstr "más..." + +#: super_archives/templates/superarchives/thread-dashboard.html:29 +msgid "most relevant" +msgstr "más relevante" + +#: super_archives/templates/superarchives/emails/email_verification.txt:2 +#, python-format +msgid "" +"Hey, we want to verify that you are indeed \"%(fullname)s (%(username)s)\". " +"If that's the case, please follow the link below:" +msgstr "" +"Hey, queremos verificar que usted es de hecho \"%(fullname)s " +"(%(username)s)\". Si ese es el caso, por favor siga el siguiente enlace:" + +#: super_archives/templates/superarchives/emails/email_verification.txt:6 +#, python-format +msgid "" +"If you're not %(username)s or didn't request verification you can ignore " +"this email." +msgstr "" +"Si no es usted %(username)s o no solicito la verificación o se puede ignorar " +"este mensaje." + +#: super_archives/templates/superarchives/includes/message.html:39 +msgid "Reply" +msgstr "Responder" + +#: super_archives/templates/superarchives/includes/message.html:56 +msgid "Send a message" +msgstr "Enviar un mensaje" + +#: super_archives/templates/superarchives/includes/message.html:59 +msgid "" +"After sending a message it will take few minutes before it shows up in here. " +"Why don't you grab a coffee?" +msgstr "" +"Después de enviar el mensaje de que se necesita unos minutos antes de que " +"aparezca aquí. ¿Por qué no tomar un café?" + +#: super_archives/templates/superarchives/includes/message.html:62 +msgid "Send" +msgstr "Enviar" + +#: super_archives/utils/email.py:14 +msgid "Please verify your email " +msgstr "Por favor, verifique su dirección de correo electrónico " + +#: super_archives/utils/email.py:25 +msgid "Registration on the mailing list" +msgstr "Registro en la lista de correo electrónico" + +#: templates/404.html:5 +msgid "Not found. Keep searching! :)" +msgstr "¡No se ha encontrado. Sigue buscando! :)" + +#: templates/500.html:2 +msgid "Ooopz... something went wrong!" +msgstr "¡Ooopz... algo salió mal!" + +#: templates/base.html:79 +msgid "Contribute" +msgstr "Contribuciones" + +#: templates/base.html:82 +msgid "Timeline" +msgstr "Línea de tiempo" + +#: templates/base.html:83 +msgid "Roadmap" +msgstr "Mapa de ruta" + +#: templates/base.html:84 +msgid "Browse Source" +msgstr "Examinar código fuente" + +#: templates/base.html:86 +msgid "New Ticket" +msgstr "Nuevo Ticket" + +#: templates/base.html:88 +msgid "View Tickets" +msgstr "Ver Tickets" + +#: templates/base.html:99 +msgid "Login" +msgstr "Iniciar sesión" + +#: templates/base.html:113 +msgid "My Profile" +msgstr "Mi Perfil" + +#: templates/base.html:114 +msgid "Logout" +msgstr "Cerrar sesión" + +#: templates/base.html:126 templates/base.html.py:129 +msgid "Search here..." +msgstr "Buscar aquí..." + +#: templates/base.html:142 +msgid "The login has failed. Please, try again." +msgstr "Fallo al autenticarse. Inténtelo de nuevo." + +#: templates/base.html:167 +msgid "Last email imported at" +msgstr "Último correo electrónico importado en" + +#: templates/base.html:172 +msgid "The contents of this site is published under license" +msgstr "Los contenidos de este sitio son publicados bajo la licencia" + +#: templates/base.html:174 +msgid "Creative Commons - attribution, non-commercial" +msgstr "Creative Commons - Atribución, No Comercial" + +#: templates/home.html:17 +msgid "Latest Collaborations" +msgstr "Últimas colaboraciones" + +#: templates/home.html:21 +msgid "RSS - Latest collaborations" +msgstr "RSS - Últimas colaboraciones" + +#: templates/home.html:30 +msgid "View more collaborations..." +msgstr "Ver más colaboraciones..." + +#: templates/home.html:37 +msgid "Collaboration Graph" +msgstr "Gráficas de colaboradores" + +#: templates/home.html:45 +msgid "Most Relevant Threads" +msgstr "Más relevantes hilos" + +#: templates/home.html:49 +msgid "RSS - Most Relevant Threads" +msgstr "RSS - Más relevantes hilos" + +#: templates/home.html:57 templates/home.html.py:76 +msgid "View more discussions..." +msgstr "Ver más discusiones..." + +#: templates/home.html:64 +msgid "Latest Threads" +msgstr "Últimos hilos" + +#: templates/home.html:68 +msgid "RSS - Latest Threads" +msgstr "RSS - Últimos hilos" + +#: templates/pizza-chart.html:26 +msgid "Willing to help" +msgstr "Dispuesto a ayudar" + +#: templates/includes/big_header.html:9 +msgid "INTERLEGIS COMMUNITIES" +msgstr "COMUNIDADES INTERLEGIS" diff --git a/src/locale/pt_BR/LC_MESSAGES/django.mo b/src/locale/pt_BR/LC_MESSAGES/django.mo index dd4055df..55003cf4 100644 Binary files a/src/locale/pt_BR/LC_MESSAGES/django.mo and b/src/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/src/locale/pt_BR/LC_MESSAGES/django.po b/src/locale/pt_BR/LC_MESSAGES/django.po index b085a406..2bf3efc8 100644 --- a/src/locale/pt_BR/LC_MESSAGES/django.po +++ b/src/locale/pt_BR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-12-05 18:14+0000\n" +"POT-Creation-Date: 2013-12-14 22:56+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -288,7 +288,7 @@ msgstr "Automaticamente" msgid "Manual" msgstr "Manual" -#: badger/models.py:22 super_archives/models.py:258 +#: badger/models.py:22 super_archives/models.py:277 msgid "Messages" msgstr "Mensagens" @@ -341,6 +341,16 @@ msgstr "Ordem" msgid "Badge" msgstr "Medalha" +#: badger/models.py:83 +#, fuzzy +msgid "Badge I18N" +msgstr "Medalha" + +#: badger/models.py:84 +#, fuzzy +msgid "Badges I18N" +msgstr "Medalhas" + #: colab/custom_settings.py:9 msgid "English" msgstr "Inglês" @@ -385,11 +395,11 @@ msgstr "Compactado" msgid "Spreadsheet" msgstr "Planilha" -#: colab/custom_settings.py:265 +#: colab/custom_settings.py:268 msgid "Planet Colab" msgstr "" -#: colab/custom_settings.py:266 +#: colab/custom_settings.py:269 msgid "Colab blog aggregator" msgstr "Agregador de blog Colab" @@ -592,6 +602,7 @@ msgid "Changeset" msgstr "Conjunto de Mudanças" #: search/views.py:95 search/templates/search/includes/search_filters.html:132 +#: super_archives/models.py:44 msgid "User" msgstr "Usuário" @@ -646,61 +657,128 @@ msgstr "Ordenar por" msgid "Types" msgstr "Tipos" -#: super_archives/models.py:62 +#: super_archives/models.py:45 +msgid "Select an User from list" +msgstr "" + +#: super_archives/models.py:47 super_archives/models.py:57 +#, fuzzy +msgid "Email Address" +msgstr "Endereço de e-mail verificado!" + +#: super_archives/models.py:48 +#, fuzzy +msgid "Enter a Email Address" +msgstr "Adicionar outro endereço de e-mail" + +#: super_archives/models.py:50 +msgid "Real name" +msgstr "" + +#: super_archives/models.py:51 +msgid "Enter an User's real name" +msgstr "" + +#: super_archives/models.py:53 +msgid "MD5" +msgstr "" + +#: super_archives/models.py:54 +msgid "Enter a MD5 Sum" +msgstr "" + +#: super_archives/models.py:58 +#, fuzzy +msgid "Email Addresses" +msgstr "Endereço de e-mail verificado!" + +#: super_archives/models.py:72 #: super_archives/templates/message-preview.html:62 #: super_archives/templates/message-thread.html:4 msgid "Anonymous" msgstr "Anônimo" -#: super_archives/models.py:112 +#: super_archives/models.py:121 +#, fuzzy +msgid "Subject token" +msgstr "Assunto" + +#: super_archives/models.py:123 msgid "Mailing List" msgstr "Lista de e-mail" -#: super_archives/models.py:113 +#: super_archives/models.py:124 msgid "The Mailing List where is the thread" msgstr "A lista de e-mail onde estão as mensagens" -#: super_archives/models.py:116 +#: super_archives/models.py:127 msgid "Latest message" msgstr "Última mensagem" -#: super_archives/models.py:117 +#: super_archives/models.py:128 msgid "Latest message posted" msgstr "Última mensagem postada" -#: super_archives/models.py:118 +#: super_archives/models.py:129 msgid "Score" msgstr "Pontuação" -#: super_archives/models.py:118 +#: super_archives/models.py:129 msgid "Thread score" msgstr "Pontuação do conjunto de mensagens" -#: super_archives/models.py:127 +#: super_archives/models.py:131 super_archives/models.py:269 +msgid "is SPAM?" +msgstr "" + +#: super_archives/models.py:139 super_archives/models.py:251 msgid "Thread" msgstr "Conjunto de mensagens" -#: super_archives/models.py:128 +#: super_archives/models.py:140 msgid "Threads" msgstr "Conjuntos de mensagens" -#: super_archives/models.py:242 +#: super_archives/models.py:249 +msgid "From address" +msgstr "" + +#: super_archives/models.py:256 msgid "Subject" msgstr "Assunto" -#: super_archives/models.py:243 +#: super_archives/models.py:257 msgid "Please enter a message subject" msgstr "Por favor, digite o assunto da mensagem" -#: super_archives/models.py:246 +#: super_archives/models.py:259 +#, fuzzy +msgid "Subject clean" +msgstr "Assunto" + +#: super_archives/models.py:261 msgid "Message body" msgstr "Corpo da mensagem" -#: super_archives/models.py:247 +#: super_archives/models.py:262 msgid "Please enter a message body" msgstr "Por favor, digite o corpo da mensagem" -#: super_archives/models.py:257 +#: super_archives/models.py:264 +msgid "Received time" +msgstr "" + +#: super_archives/models.py:265 +#, fuzzy +msgid "Please enter a Received time" +msgstr "Por favor, digite o assunto da mensagem" + +#: super_archives/models.py:267 +#, fuzzy +msgid "Message id" +msgstr "Mensagem" + +#: super_archives/models.py:276 msgid "Message" msgstr "Mensagem" diff --git a/src/planet/locale/es/LC_MESSAGES/django.mo b/src/planet/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 00000000..cbe85821 Binary files /dev/null and b/src/planet/locale/es/LC_MESSAGES/django.mo differ diff --git a/src/planet/locale/es/LC_MESSAGES/django.po b/src/planet/locale/es/LC_MESSAGES/django.po index 9f516d11..c8a49cde 100644 --- a/src/planet/locale/es/LC_MESSAGES/django.po +++ b/src/planet/locale/es/LC_MESSAGES/django.po @@ -96,8 +96,8 @@ msgstr "Solicite la inclusión de un blog" #: templates/feedzilla/tag.html:5 #, python-format msgid "Posts with «%(tag)s» label" -msgstr "Envíos con etiqueta «%(tag)s»" +msgstr "Mensajes con etiqueta «%(tag)s»" #: templates/feedzilla/tag.html:14 msgid "No posts with such label" -msgstr "No hay envíos con dicha etiqueta" +msgstr "No hay mensajes con dicha etiqueta" diff --git a/src/super_archives/locale/es/LC_MESSAGES/django.mo b/src/super_archives/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 00000000..cab359d7 Binary files /dev/null and b/src/super_archives/locale/es/LC_MESSAGES/django.mo differ diff --git a/src/super_archives/models.py b/src/super_archives/models.py index 6e4c35db..93b13492 100644 --- a/src/super_archives/models.py +++ b/src/super_archives/models.py @@ -37,15 +37,25 @@ class EmailAddressValidation(models.Model): class Meta: unique_together = ('user', 'address') - class EmailAddress(models.Model): - user = models.ForeignKey(User, null=True, related_name='emails', - on_delete=models.SET_NULL) - address = models.EmailField(unique=True) - real_name = models.CharField(max_length=64, blank=True, db_index=True) - md5 = models.CharField(max_length=32, null=True) + user = models.ForeignKey(User, + null=True, related_name='emails', + on_delete=models.SET_NULL, + verbose_name=_(u"User"), + help_text=_(u"Select an User from list")) + address = models.EmailField(unique=True, + verbose_name=_(u"Email Address"), + help_text=_(u"Enter a Email Address")) + real_name = models.CharField(max_length=64, blank=True, db_index=True, + verbose_name=_(u"Real name"), + help_text=_(u"Enter an User's real name")) + md5 = models.CharField(max_length=32, null=True, + verbose_name=_(u"MD5"), + help_text=_(u"Enter a MD5 Sum")) class Meta: + verbose_name = _(u"Email Address") + verbose_name_plural = _(u"Email Addresses") ordering = ('id', ) def save(self, *args, **kwargs): @@ -107,7 +117,8 @@ def __unicode__(self): class Thread(models.Model, HitCounterModelMixin): - subject_token = models.CharField(max_length=512) + subject_token = models.CharField(max_length=512, + verbose_name=_(u"Subject token")) mailinglist = models.ForeignKey(MailingList, verbose_name=_(u"Mailing List"), help_text=_(u"The Mailing List where is the thread")) @@ -116,7 +127,8 @@ class Thread(models.Model, HitCounterModelMixin): verbose_name=_(u"Latest message"), help_text=_(u"Latest message posted")) score = models.IntegerField(default=0, verbose_name=_(u"Score"), help_text=_(u"Thread score")) - spam = models.BooleanField(default=False) + spam = models.BooleanField(default=False, + verbose_name=_(u"is SPAM?")) highest_score = HighestScore() all_objects = models.Manager() @@ -233,21 +245,28 @@ def __unicode__(self): class Message(models.Model): - from_address = models.ForeignKey(EmailAddress, db_index=True) - thread = models.ForeignKey(Thread, null=True, db_index=True) + from_address = models.ForeignKey(EmailAddress, db_index=True, + verbose_name=_(u"From address")) + thread = models.ForeignKey(Thread, null=True, db_index=True, + verbose_name=_(u"Thread")) # RFC 2822 recommends to use 78 chars + CRLF (so 80 chars) for # the max_length of a subject but most of implementations # goes for 256. We use 512 just in case. subject = models.CharField(max_length=512, db_index=True, verbose_name=_(u"Subject"), help_text=_(u"Please enter a message subject")) - subject_clean = models.CharField(max_length=512, db_index=True) + subject_clean = models.CharField(max_length=512, db_index=True, + verbose_name=_(u"Subject clean")) body = models.TextField(default='', verbose_name=_(u"Message body"), help_text=_(u"Please enter a message body")) - received_time = models.DateTimeField(db_index=True) - message_id = models.CharField(max_length=512) - spam = models.BooleanField(default=False) + received_time = models.DateTimeField(db_index=True, + verbose_name=_(u"Received time"), + help_text=_(u"Please enter a Received time")) + message_id = models.CharField(max_length=512, + verbose_name=_(u"Message id")) + spam = models.BooleanField(default=False, + verbose_name=_(u"is SPAM?")) all_objects = models.Manager() objects = NotSpamManager()