summaryrefslogtreecommitdiff
path: root/doc/es_ES
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2018-04-06 10:54:58 -0700
committerFrédéric Guillot <fred@kanboard.net>2018-04-06 10:54:58 -0700
commit0b306fa60ad84ea077111e0ff7b59208ba7bc8a3 (patch)
tree5d8941b5950ede2db8ca3fba0213792db0f07a50 /doc/es_ES
parentac11220a1aa7ae30b8827d9bbf221888d3edd0a7 (diff)
Move documentation to https://docs.kanboard.org/
Diffstat (limited to 'doc/es_ES')
-rw-r--r--doc/es_ES/2fa.markdown33
-rw-r--r--doc/es_ES/analytics-tasks.markdown24
-rw-r--r--doc/es_ES/analytics.markdown59
-rw-r--r--doc/es_ES/api-action-procedures.markdown245
-rw-r--r--doc/es_ES/api-authentication.markdown60
-rw-r--r--doc/es_ES/api-board-procedures.markdown158
-rw-r--r--doc/es_ES/api-category-procedures.markdown172
-rw-r--r--doc/es_ES/api-column-procedures.markdown229
-rw-r--r--doc/es_ES/api-comment-procedures.markdown181
-rw-r--r--doc/es_ES/api-examples.markdown152
-rw-r--r--doc/es_ES/api-external-task-link-procedures.markdown221
-rw-r--r--doc/es_ES/api-group-member-procedures.markdown188
-rwxr-xr-xdoc/es_ES/api-group-procedures.markdown174
-rw-r--r--doc/es_ES/api-internal-task-link-procedures.markdown187
-rw-r--r--doc/es_ES/api-json-rpc.markdown69
-rw-r--r--doc/es_ES/api-link-procedures.markdown285
-rw-r--r--doc/es_ES/board-collapsed-expanded.markdown18
-rw-r--r--doc/es_ES/board-configuration.markdown25
-rw-r--r--doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown12
-rw-r--r--doc/es_ES/board-show-hide-columns.markdown12
-rw-r--r--doc/es_ES/bruteforce-protection.markdown26
-rw-r--r--doc/es_ES/calendar-configuration.markdown43
-rw-r--r--doc/es_ES/centos-installation.markdown86
-rwxr-xr-xdoc/es_ES/cli.markdown206
-rwxr-xr-xdoc/es_ES/cloudron.markdown27
-rwxr-xr-xdoc/es_ES/coding-standards.markdown24
-rwxr-xr-xdoc/es_ES/config.markdown307
-rw-r--r--doc/es_ES/contributing.markdown67
-rwxr-xr-xdoc/es_ES/creating-projects.markdown40
-rwxr-xr-xdoc/es_ES/creating-tasks.markdown31
-rwxr-xr-xdoc/es_ES/cronjob.markdown32
-rw-r--r--doc/es_ES/debian-installation.markdown74
-rw-r--r--doc/es_ES/docker.markdown105
-rw-r--r--doc/es_ES/email-configuration.markdown114
-rwxr-xr-xdoc/es_ES/faq.markdown132
-rw-r--r--doc/es_ES/freebsd-installation.markdown132
-rw-r--r--doc/es_ES/heroku.markdown38
-rw-r--r--doc/es_ES/installation.markdown68
-rw-r--r--doc/es_ES/kanban-vs-todo-and-scrum.markdown38
-rwxr-xr-xdoc/es_ES/keyboard-shortcuts.markdown38
-rwxr-xr-xdoc/es_ES/mysql-configuration.markdown74
-rw-r--r--doc/es_ES/plugin-authentication-architecture.markdown99
-rw-r--r--doc/es_ES/plugin-authentication.markdown42
-rw-r--r--doc/es_ES/plugin-authorization-architecture.markdown39
-rw-r--r--doc/es_ES/plugin-automatic-actions.markdown61
-rw-r--r--doc/es_ES/plugin-avatar-provider.markdown32
-rw-r--r--doc/es_ES/plugin-directory.markdown15
-rw-r--r--doc/es_ES/plugin-events.markdown27
-rw-r--r--doc/es_ES/plugin-external-link.markdown79
-rw-r--r--doc/es_ES/plugin-group-provider.markdown54
-rw-r--r--doc/es_ES/plugin-helpers.markdown39
-rw-r--r--doc/es_ES/plugin-hooks.markdown249
-rw-r--r--doc/es_ES/plugin-ldap-client.markdown99
-rw-r--r--doc/es_ES/plugin-mail-transports.markdown49
-rw-r--r--doc/es_ES/plugin-metadata.markdown42
-rw-r--r--doc/es_ES/plugin-notifications.markdown59
-rw-r--r--doc/es_ES/plugin-overrides.markdown42
-rw-r--r--doc/es_ES/plugin-registration.markdown160
-rw-r--r--doc/es_ES/plugin-routes.markdown85
-rw-r--r--doc/es_ES/plugin-schema-migrations.markdown40
-rw-r--r--doc/es_ES/plugins.markdown46
-rwxr-xr-xdoc/es_ES/requirements.markdown104
-rwxr-xr-xdoc/es_ES/reverse-proxy-authentication.markdown64
-rwxr-xr-xdoc/es_ES/rss.markdown23
-rwxr-xr-xdoc/es_ES/screenshots.markdown25
-rw-r--r--doc/es_ES/subtasks.markdown46
-rw-r--r--doc/es_ES/suse-installation.markdown17
-rwxr-xr-xdoc/es_ES/swimlanes.markdown34
-rwxr-xr-xdoc/es_ES/tags.markdown28
-rw-r--r--doc/es_ES/translations.markdown68
-rwxr-xr-xdoc/es_ES/update.markdown33
-rw-r--r--doc/es_ES/user-mentions.markdown18
72 files changed, 0 insertions, 6024 deletions
diff --git a/doc/es_ES/2fa.markdown b/doc/es_ES/2fa.markdown
deleted file mode 100644
index caf8f0c8..00000000
--- a/doc/es_ES/2fa.markdown
+++ /dev/null
@@ -1,33 +0,0 @@
-Autentificación Two-Factor
-==========================
-
-Cada usuario puede habilitar el [two-factor authentication](http://en.wikipedia.org/wiki/Two_factor_authentication).
-Antes de un logeo exitoso, un codigo one-time de (6 caracteres) se le pide a el usuaio para permitir el acceso a kanboard.
-
-Este codigo tiene que ser proporcionado por un software compatible generalmente instalado en tu smartphone
-
-Kanboard usa el [Time-based One-time Password Algorithm](http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) definido en el [RFC 6238](http://tools.ietf.org/html/rfc6238).
-
-Existen muchos softwares compatibles con el standard del sistema TOTP.
-Por ejemplo, tu puedes usar estas aplicaciones libres y de open source:
-
-- [Google Authenticator](https://github.com/google/google-authenticator/) (Android, iOS, Blackberry)
-- [FreeOTP](https://freeotp.github.io/) (Android, iOS)
-- [OATH Toolkit](http://www.nongnu.org/oath-toolkit/) (Utilidad en linea de comandos Unix/Linux
-
-Este sistema puede trabajar offline y no es necesario tener un telefono movil
-
-Instalacion
------------
-
-1. Ir a tu perfil de usuario
-2. Click a la izquierda en **Two factor authentication** y selecionar la caja
-3. Una key secret es geradada para ti
-
-![2FA](../screenshots/2fa.png)
-
-- Tienes que salvar la key secret en tu software TOTP. Si usas un smartphone, la solución sera mas fácil ya que puedes escanear el Qr code con FreeOTP o Google Authenticator.
-- Cada vez que abras una nueva session , un nuevo código se pedirá.
-- No se olvide de verficar el dispositivo antes de cerrar la sesión
-
-Una nueva key secret es generada cada vez que actives o desactives esta función \ No newline at end of file
diff --git a/doc/es_ES/analytics-tasks.markdown b/doc/es_ES/analytics-tasks.markdown
deleted file mode 100644
index 49299fbb..00000000
--- a/doc/es_ES/analytics-tasks.markdown
+++ /dev/null
@@ -1,24 +0,0 @@
-Análisis para tareas
-===================
-
-Cada tarea tiene una sección de análisis disponible en el menu izquierdo en la vista de tarea.
-
-Espera y tiempo de ciclo
--------------------
-
-![Lead and cycle time](../screenshots/task-lead-cycle-time.png)
-
-- El tiempo de espera es el tiempo entre la creacion de la tarea y la fecha de finalización (Tarea cerrada).
-- El tiempo de ciclo es el tiempo entre la fecha de inicio y la fecha de finalización.
-- Si la tarea no esta cerrada el tiempo actual es usado en lugar de la fecha de finalización.
-- Si la fecha de inicio no es especificada, el tiempo de ciclo no es calculado.
-
-Nota: Puede configurar una accion automatica para definir la fecha de inicio automaticamente cuando se mueve una tarea a la columna de su eleccion.
-
-El tiempo invertido en cada columna
----------------------------
-
-![Time spent into each column](../screenshots/time-into-each-column.png)
-
-- Esta gráfico muestra el total de tiempo invertido en cada columna para la tarea.
-- El tiempo invertido es calculado hasta que la tarea es cerrada.
diff --git a/doc/es_ES/analytics.markdown b/doc/es_ES/analytics.markdown
deleted file mode 100644
index 473d1e2c..00000000
--- a/doc/es_ES/analytics.markdown
+++ /dev/null
@@ -1,59 +0,0 @@
-Analisis
-=========
-
-Cada proyecto tiene una sección de análisis . Dependiendo de cómo se está utilizando Kanboard, se puede ver estos informes :
-
-Repartición de usuarios
------------------------
-
-![User repartition](../screenshots/user-repartition.png)
-
-Esta gráfico de sectores muestra el numero de tareas abiertas asignadas por usuario.
-
-Distribución de tareas
-----------------------
-
-![Task distribution](../screenshots/task-distribution.png)
-
-Este gráfico de sectores da una visión general del numero de tareas abiertas por columnas.
-
-Diagrama de flujo acumulado
----------------------------
-
-![Cumulative flow diagram](../screenshots/cfd.png)
-
-- Este gráfico muesta el numerto de tareas acumuladas por cada columna a través del tiempo.
-- Cada día , el número total de tareas se registra para cada columna.
-- Si tu quiseras excluir las tareas cerradas, deberá cambiar las configuraciones globales del proyecto
-
-Nota: Necesitas tener al menos dos dias de datos para mirar la gráfica
-
-
-Gráfico Burn down
-
-El gráfico burn down esta dispobible para cada proyecto.
-
- Esta gráfico es un represtación grafica del trabajo This chart is a graphical representation del trabajo laborado contra el tiempo.
- Kanboard usa la complejidad o historia de puntos para generar este diagrama.
- Todos los días, se calcula la suma de los puntos de la historia de cada columna .
-
-Average time spent into each column
- This chart shows the average time spent into each column for the last 1000 tasks.
-
- Kanboard uses the task transitions to calculate the data.
- The time spent is calculated until the task is closed.
-
-
-Promedio de avances y ciclos de tiempos
-
-
-Este gráfico muestra el promedio de avances y ciclo de tiempos para las ultimas 1000 tareas fuera de tiempo.
-
- El tiempo promedio es el tiempo entre la creación de la tarea y la fecha de finalización
- El tiempo de ciclo se encuentra entre la fecha de inicio de la tarea especificada y fecha de la tarea finalizada
- Si la tarea no es cerrada,
- If the task is not closed, el momento actual se utiliza en lugar de la fecha de finalización.
-
-Esos indicadores se calculan y registran todos los días durante todo el proyecto.
-
-Nota: No olvidar ejecutar todos los dias el cronjob para tener estadísticas precisas.
diff --git a/doc/es_ES/api-action-procedures.markdown b/doc/es_ES/api-action-procedures.markdown
deleted file mode 100644
index dc39fb93..00000000
--- a/doc/es_ES/api-action-procedures.markdown
+++ /dev/null
@@ -1,245 +0,0 @@
-API Procedimiento de acciones automaticas
-================================
-
-## getAvailableActions [Obtener acciones disponibles]
-
-- Propósito: **Obtener una lista de acciones automaticas disponibles**
-- Parametros: ninguno
-- Resultado satisfactorio: **list of actions**
-- Resultado fallido: **falso**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getAvailableActions",
- "id": 1217735483
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1217735483,
- "result": {
- "\Kanboard\Action\TaskLogMoveAnotherColumn": "Agregar un comentario moviendo las tareas entre columnas",
- "\Kanboard\Action\TaskAssignColorUser": "Asignar un color especifico aun usuario",
- "\Kanboard\Action\TaskAssignColorColumn": "Asignar un color cuando la tarea es movida a una columna especifica",
- "\Kanboard\Action\TaskAssignCategoryColor": "Asignar automaticamente una categoria basado en un color",
- "\Kanboard\Action\TaskAssignColorCategory": "Asignar automaticamente un color basado en una categoria",
- "\Kanboard\Action\TaskAssignSpecificUser": "Asigar tareas a un usuario especifico",
- "\Kanboard\Action\TaskAssignCurrentUser": "Asignar tareas a la persona que hace la acción",
- "\Kanboard\Action\TaskUpdateStartDate": "Automaticamente actualizar la fecha de inicio",
- "\Kanboard\Action\TaskAssignUser": "Cambiar asigando basado en un nombre de usuario [username] externo",
- "\Kanboard\Action\TaskAssignCategoryLabel": "Cambiar la categoria basado en un etiqueta externa",
- "\Kanboard\Action\TaskClose": "Cerrar una tarea",
- "\Kanboard\Action\CommentCreation": "Crear un comentario desde un proveedor externo",
- "\Kanboard\Action\TaskCreation": "Crear una tarea desde un proveedor externo",
- "\Kanboard\Action\TaskDuplicateAnotherProject": "Duplicar la tarea a otro proyecto",
- "\Kanboard\Action\TaskMoveColumnAssigned": "Mover la tarea a otra columna cuando es asiganada a un usuario",
- "\Kanboard\Action\TaskMoveColumnUnAssigned": "Mover la tarea a otra columna cuando la asignación es limpiada",
- "\Kanboard\Action\TaskMoveAnotherProject": "Mover la tarea a otro proyecto",
- "\Kanboard\Action\TaskOpen": "Abrir una Tarea"
- }
-}
-```
-
-## getAvailableActionEvents [obtener acciones de eventos disponibles]
-
-- Propósito: **Obtener una lista de acciones disponibles para los eventos**
-- Parametros: ninguno
-- Resultado satisfactorio: **lista de eventos**
-- Resultado fallído : **falso**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getAvailableActionEvents",
- "id": 2116665643
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 2116665643,
- "result": {
- "bitbucket.webhook.commit": "Bitbucket commit recibido",
- "task.close": "Cerrando tarea",
- "github.webhook.commit": "Github commit recibido",
- "github.webhook.issue.assignee": "Github issue asignación cambiada",
- "github.webhook.issue.closed": "Github issue cerrada",
- "github.webhook.issue.commented": "Github issue comentario creado",
- "github.webhook.issue.label": "Github issue etiqueta cambiada",
- "github.webhook.issue.opened": "Github issue abierta",
- "github.webhook.issue.reopened": "Github issue reabierto",
- "gitlab.webhook.commit": "Gitlab commit recibido",
- "gitlab.webhook.issue.closed": "Gitlab issue cerrado",
- "gitlab.webhook.issue.opened": "Gitlab issue abierto",
- "task.move.column": "Mover una tarea a otra columna",
- "task.open": "Abrir una tarea abierta",
- "task.assignee_change": "Tarea cambio de asignación",
- "task.create": "Creación de tarea",
- "task.create_update": "Creación de tarea o modificación",
- "task.update": "Modificación de tarea"
- }
-}
-```
-
-## getCompatibleActionEvents [Obtener acciones compatibles con eventos]
-
-- Propósito: **Obtener una lista de eventos compatibles con una acción**
-- Parametros:
- - **action_name** (string, required)
-- Resultado satisfactorio: **lista de eventos**
-- Resultado fallido: **falso**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getCompatibleActionEvents",
- "id": 899370297,
- "params": [
- "\Kanboard\Action\TaskClose"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 899370297,
- "result": {
- "bitbucket.webhook.commit": "Bitbucket commit recibido",
- "github.webhook.commit": "Github commit recibido",
- "github.webhook.issue.closed": "Github issue cerrada",
- "gitlab.webhook.commit": "Gitlab commit recibido",
- "gitlab.webhook.issue.closed": "Gitlab issue cerrado",
- "task.move.column": "Mover una tarea a otra columna"
- }
-}
-```
-
-## getActions [Obtener acciones]
-
-- Propósito: **Obtener una lista de acciones para un proyecto**
-- Parametros:
- - **project_id** (integer, required)
-- Resultado satisfactorio: **lista de propiedades de las acciones**
-- Resultado fallido: **falso**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getActions",
- "id": 1433237746,
- "params": [
- "1"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1433237746,
- "result": [
- {
- "id" : "13",
- "project_id" : "2",
- "event_name" : "task.move.column",
- "action_name" : "\Kanboard\Action\TaskAssignSpecificUser",
- "params" : {
- "column_id" : "5",
- "user_id" : "1"
- }
- }
- ]
-}
-```
-
-## createAction [Creación de acciones]
-
-- Proposito: **Crear una acción**
-- Parametros:
- - **project_id** (integer, required)
- - **event_name** (string, required)
- - **action_name** (string, required)
- - **params** (key/value parameters, required)
-- Resultados satisfactorios: **action_id**
-- Resultados fallidos: **falso**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "createAction",
- "id": 1433237746,
- "params": {
- "project_id" : "2",
- "event_name" : "task.move.column",
- "action_name" : "\Kanboard\Action\TaskAssignSpecificUser",
- "params" : {
- "column_id" : "3",
- "user_id" : "2"
- }
- }
-}
-```
-
-Ejemplo de respuestas:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1433237746,
- "result": 14
-}
-```
-
-## removeAction [Eliminar una acción]
-
-- Proposito: **Eliminar una acción**
-- Parametros:
- - **action_id** (integer, required)
-- Resultados satisfactorios: **true**
-- Resultados fallidos: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeAction",
- "id": 1510741671,
- "params": [
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1510741671,
- "result": true
-}
-```
diff --git a/doc/es_ES/api-authentication.markdown b/doc/es_ES/api-authentication.markdown
deleted file mode 100644
index 0612ffee..00000000
--- a/doc/es_ES/api-authentication.markdown
+++ /dev/null
@@ -1,60 +0,0 @@
-API de autentificación
-==================
-
-API endpoint
-------------
-
-URL: `https://YOUR_SERVER/jsonrpc.php`
-
-
-Metedo por default (HTTP Basico)
----------------------------
-
-### Aplicación de credenciales
-
-- Username: `jsonrpc`
-- Password: API token para la configuración de pagina
-
-### Credencial de usuario
-
-- Usar el usuario real y su password
-
-La API usa la [Autentificación Basica del esquema HTTP descrita en el RFC2617](http://www.ietf.org/rfc/rfc2617.txt).
-
-
-Modificar el header HTTP
-------------------------
-
-Se puede usar un header HTTP alternativo para la autentificación si tu servidor es muy especifico
-
-configuration.
-
-- El nombre del header puede ser cualquier cosa que desee, por ejemplo `X-API-Auth`.
-- El valor del header `username:password` esta codificado en Base64.
-
-Configuración:
-
-1. Definir tu header personalizado en tu `config.php`: `define('API_AUTHENTICATION_HEADER', 'X-API-Auth');`
-2. Codificar las credenciales en Base64, ejemplo con PHP `base64_encode('jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929');`
-3. Verificar con curl
-
-```bash
-curl \
--H 'X-API-Auth: anNvbnJwYzoxOWZmZDk3MDlkMDNjZTUwNjc1YzNhNDNkMWM0OWMxYWMyMDdmNGJjNDVmMDZjNWIyNzAxZmJkZjg5Mjk=' \
--d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
-http://localhost/kanboard/jsonrpc.php
-```
-
-Error de autentificación
--------------------------
-Authentication error
---------------------
-
-Si las credenciales son , recibiras un `401 Not Authorized` y el correspondiente respuesta del JSON.
-If the credentials are wrong, you will receive a `401 Not Authorized` and the corresponding JSON response.
-
-
-Error de Autorización
-----------------------
-
-Si el usuario conectado no tiene permiso para acceder al recurso , recibirá un `403 Forbidden`.
diff --git a/doc/es_ES/api-board-procedures.markdown b/doc/es_ES/api-board-procedures.markdown
deleted file mode 100644
index 583e6449..00000000
--- a/doc/es_ES/api-board-procedures.markdown
+++ /dev/null
@@ -1,158 +0,0 @@
-API Procedimientos Del Tablero
-===============================
-
-## getBoard [obtener tablero]
-
-- Propósito: **Obtener todo la información necesaria para visualizar el tablero**
-- Parametros:
- - **project_id** (integer, required)
-- Resultado satisfactorio : **Propiedades del tablero**
-- Resultado fallido: **Lista vacía**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getBoard",
- "id": 827046470,
- "params": [
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 827046470,
- "result": [
- {
- "id": 0,
- "name": "Default swimlane",
- "columns": [
- {
- "id": "1",
- "title": "Backlog",
- "position": "1",
- "project_id": "1",
- "task_limit": "0",
- "description": "",
- "tasks": [],
- "nb_tasks": 0,
- "score": 0
- },
- {
- "id": "2",
- "title": "Ready",
- "position": "2",
- "project_id": "1",
- "task_limit": "0",
- "description": "",
- "tasks": [
- {
- "nb_comments":"0",
- "nb_files":"0",
- "nb_subtasks":"0",
- "nb_completed_subtasks":"0",
- "nb_links":"0",
- "id":"2",
- "reference":"",
- "title":"Test",
- "description":"",
- "date_creation":"1430870507",
- "date_modification":"1430870507",
- "date_completed":null,
- "date_due":"0",
- "color_id":"yellow",
- "project_id":"1",
- "column_id":"2",
- "swimlane_id":"0",
- "owner_id":"0",
- "creator_id":"1",
- "position":"1",
- "is_active":"1",
- "score":"0",
- "category_id":"0",
- "date_moved":"1430870507",
- "recurrence_status":"0",
- "recurrence_trigger":"0",
- "recurrence_factor":"0",
- "recurrence_timeframe":"0",
- "recurrence_basedate":"0",
- "recurrence_parent":null,
- "recurrence_child":null,
- "assignee_username":null,
- "assignee_name":null
- }
- ],
- "nb_tasks": 1,
- "score": 0
- },
- {
- "id": "3",
- "title": "Trabajo en progreso",
- "position": "3",
- "project_id": "1",
- "task_limit": "0",
- "description": "",
- "tasks": [
- {
- "nb_comments":"0",
- "nb_files":"0",
- "nb_subtasks":"1",
- "nb_completed_subtasks":"0",
- "nb_links":"0",
- "id":"1",
- "reference":"",
- "title":"Task with comment",
- "description":"",
- "date_creation":"1430783188",
- "date_modification":"1430783188",
- "date_completed":null,
- "date_due":"0",
- "color_id":"red",
- "project_id":"1",
- "column_id":"3",
- "swimlane_id":"0",
- "owner_id":"1",
- "creator_id":"0",
- "position":"1",
- "is_active":"1",
- "score":"0",
- "category_id":"0",
- "date_moved":"1430783191",
- "recurrence_status":"0",
- "recurrence_trigger":"0",
- "recurrence_factor":"0",
- "recurrence_timeframe":"0",
- "recurrence_basedate":"0",
- "recurrence_parent":null,
- "recurrence_child":null,
- "assignee_username":"admin",
- "assignee_name":null
- }
- ],
- "nb_tasks": 1,
- "score": 0
- },
- {
- "id": "4",
- "title": "Done",
- "position": "4",
- "project_id": "1",
- "task_limit": "0",
- "description": "",
- "tasks": [],
- "nb_tasks": 0,
- "score": 0
- }
- ],
- "nb_columns": 4,
- "nb_tasks": 2
- }
- ]
-}
-```
diff --git a/doc/es_ES/api-category-procedures.markdown b/doc/es_ES/api-category-procedures.markdown
deleted file mode 100644
index eb5dc223..00000000
--- a/doc/es_ES/api-category-procedures.markdown
+++ /dev/null
@@ -1,172 +0,0 @@
-API Procedimientos de Categoría
-=======================
-
-## createCategory
-
-- Propósito: **Crea una nueva categoría**
-- Parámetros:
-- **project_id** (integer, required)
- - **name** (string, required, must be unique for the given project)
-- Resultado en caso exitoso: **category_id**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "createCategory",
- "id": 541909890,
- "params": {
- "name": "Super category",
- "project_id": 1
- }
-}
-```
-
-Ejemplo de respuesta::
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 541909890,
- "result": 4
-}
-```
-
-## getCategory
-
-- Propósito: **Obtiene información de la categoría**
-- Parámetros:
- - **category_id** (integer, required)
-- Resultado en caso exitoso: **category properties**
-- Resultado en caso fallido: **null**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getCategory",
- "id": 203539163,
- "params": {
- "category_id": 1
- }
-}
-```
-
-Ejemplo de respuesta::
-
-```json
-{
-
- "jsonrpc": "2.0",
- "id": 203539163,
- "result": {
- "id": "1",
- "name": "Super category",
- "project_id": "1"
- }
-}
-```
-
-## getAllCategories
-
-- Propósito: **Obtiene todas las categorías disponibles**
-- Parámetros:
- - **project_id** (integer, required)
-- Resultado en caso exitoso: **List of categories**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getAllCategories",
- "id": 1261777968,
- "params": {
- "project_id": 1
- }
-}
-```
-
-Ejemplo de respuesta::
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1261777968,
- "result": [
- {
- "id": "1",
- "name": "Super category",
- "project_id": "1"
- }
- ]
-}
-```
-
-## updateCategory
-
-- Propósito: **Actualiza una categoría**
-- Parámetros:
- - **id** (integer, required)
- - **name** (string, required)
-- Resultado en caso exitoso: **true**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "updateCategory",
- "id": 570195391,
- "params": {
- "id": 1,
- "name": "Renamed category"
- }
-}
-```
-
-Ejemplo de respuesta::
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 570195391,
- "result": true
-}
-```
-
-## removeCategory
-
-- Propósito: **Elimina una categoría**
-- Parámetros:
- - **category_id** (integer)
-- Resultado en caso exitoso: **true**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeCategory",
- "id": 88225706,
- "params": {
- "category_id": 1
- }
-}
-```
-
-Ejemplo de respuesta::
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 88225706,
- "result": true
-}
-```
diff --git a/doc/es_ES/api-column-procedures.markdown b/doc/es_ES/api-column-procedures.markdown
deleted file mode 100644
index ff9b853d..00000000
--- a/doc/es_ES/api-column-procedures.markdown
+++ /dev/null
@@ -1,229 +0,0 @@
-API Procedimientos de columna
-=====================
-
-## getColumns
-
-- Propósito: **Obtiene toda la información de columnas para un proyecto dado**
-- Parametros:
- - **project_id** (integer, required)
-- Resultados en caso exitoso: **columns properties**
-- Resultados en caso fallido: **empty list**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getColumns",
- "id": 887036325,
- "params": [
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 887036325,
- "result": [
- {
- "id": "1",
- "title": "Backlog",
- "position": "1",
- "project_id": "1",
- "task_limit": "0"
- },
- {
- "id": "2",
- "title": "Ready",
- "position": "2",
- "project_id": "1",
- "task_limit": "0"
- },
- {
- "id": "3",
- "title": "Work in progress",
- "position": "3",
- "project_id": "1",
- "task_limit": "0"
- }
- ]
-}
-```
-
-## getColumn
-
-- Propósito: **Obtiene una columna individual**
-- Parametros:
- - **column_id** (integer, required)
-- Resultados en caso exitoso: **column properties**
-- Resultados en caso fallido: **null**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getColumn",
- "id": 1242049935,
- "params": [
- 2
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1242049935,
- "result": {
- "id": "2",
- "title": "Youpi",
- "position": "2",
- "project_id": "1",
- "task_limit": "5"
- }
-}
-```
-
-## changeColumnPosition
-
-- Propósito: **Cambia la posición de columna**
-- Parametros:
- - **project_id** (integer, required)
- - **column_id** (integer, required)
- - **position** (integer, required, must be >= 1)
-- Resultados en caso exitoso: **true**
-- Resultados en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "changeColumnPosition",
- "id": 99275573,
- "params": [
- 1,
- 2,
- 3
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 99275573,
- "result": true
-}
-```
-
-## updateColumn
-
-- Propósito: **Actualiza las propiedades de la columna**
-- Parametros:
- - **column_id** (integer, required)
- - **title** (string, required)
- - **task_limit** (integer, optional)
- - **description** (string, optional)
-- Resultados en caso exitoso: **true**
-- Resultados en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "updateColumn",
- "id": 480740641,
- "params": [
- 2,
- "Boo",
- 5
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 480740641,
- "result": true
-}
-```
-
-## addColumn
-
-- Propósito: **Agrega una nueva columna**
-- Parametros:
- - **project_id** (integer, required)
- - **title** (string, required)
- - **task_limit** (integer, optional)
- - **description** (string, optional)
-- Resultados en caso exitoso: **column_id**
-- Resultados en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "addColumn",
- "id": 638544704,
- "params": [
- 1,
- "Boo"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 638544704,
- "result": 5
-}
-```
-
-## removeColumn
-
-- Propósito: **Elimina una columna**
-- Parametros:
- - **column_id** (integer, required)
-- Resultados en caso exitoso: **true**
-- Resultados en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeColumn",
- "id": 1433237746,
- "params": [
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1433237746,
- "result": true
-}
-```
diff --git a/doc/es_ES/api-comment-procedures.markdown b/doc/es_ES/api-comment-procedures.markdown
deleted file mode 100644
index 81389892..00000000
--- a/doc/es_ES/api-comment-procedures.markdown
+++ /dev/null
@@ -1,181 +0,0 @@
-API Procedimientos de comentarios
-======================
-
-## createComment [Crear un comentario]
-
-- Propósito: **Crear un nuevo comentario**
-- Parametros:
- - **task_id** (integer, required)
- - **user_id** (integer, required)
- - **content** Reducción de contenido (string, required)
-- Resultado satisfactorio: **comment_id**
-- Resultado fallido : **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "createComment",
- "id": 1580417921,
- "params": {
- "task_id": 1,
- "user_id": 1,
- "content": "Comment #1"
- }
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1580417921,
- "result": 11
-}
-```
-
-## getComment [Obtener un comentario]
-
-- Propósito: **Obtener la información del comentario**
-- Parametros:
- - **comment_id** (integer, required)
-- Resultado satisfactorio: **propiedades del comentario**
-- Resultado fallido: **null**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getComment",
- "id": 867839500,
- "params": {
- "comment_id": 1
- }
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 867839500,
- "result": {
- "id": "1",
- "task_id": "1",
- "user_id": "1",
- "date_creation": "1410881970",
- "comment": "Comment #1",
- "username": "admin",
- "name": null
- }
-}
-```
-
-## getAllComments [Obtener todos los comentarios]
-
-- Proposito: **Obtener todos los comentarios disponibles**
-- Parametros:
- - **task_id** (integer, required)
-- Resultado satisfactorio: **Lista de comentarios**
-- Resultado fallido : **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getAllComments",
- "id": 148484683,
- "params": {
- "task_id": 1
- }
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 148484683,
- "result": [
- {
- "id": "1",
- "date_creation": "1410882272",
- "task_id": "1",
- "user_id": "1",
- "comment": "Comment #1",
- "username": "admin",
- "name": null
- },
- ...
- ]
-}
-```
-
-## updateComment [Actualizar un comentario]
-
-- Proposito: **Actualizar un comentario**
-- Parametros:
- - **id** (integer, required)
- - **content** Reducción de contenido (string, required)
-- Resultado satisfactorio: **true**
-- Resultado fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "updateComment",
- "id": 496470023,
- "params": {
- "id": 1,
- "content": "Comment #1 updated"
- }
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1493368950,
- "result": true
-}
-```
-
-## removeComment [Eliminar un comentario]
-
-- Proposito : **Eliminar un comentario**
-- Parametros:
- - **comment_id** (integer, required)
-- Resultado satisfactorio: **true**
-- Resultado fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeComment",
- "id": 328836871,
- "params": {
- "comment_id": 1
- }
-}
-```
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 328836871,
- "result": true
-}
-```
diff --git a/doc/es_ES/api-examples.markdown b/doc/es_ES/api-examples.markdown
deleted file mode 100644
index cba7ffe5..00000000
--- a/doc/es_ES/api-examples.markdown
+++ /dev/null
@@ -1,152 +0,0 @@
-Ejemplos de API
-============
-
-Ejemplo con cURL
------------------
-
-Desde la línea de comandos:
-
-```bash
-curl \
--u "jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929" \
--d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
-http://localhost/kanboard/jsonrpc.php
-```
-
-Respuesta desde el servidor:
-
-```json
-{
- "jsonrpc":"2.0",
- "id":1,
- "result":[
- {
- "id":"1",
- "name":"API test",
- "is_active":"1",
- "token":"6bd0932fe7f4b5e6e4bc3c72800bfdef36a2c5de2f38f756dfb5bd632ebf",
- "last_modified":"1403392631"
- }
- ]
-}
-```
-
-Ejemplo con Python
--------------------
-
-Puede utilizar el [cliente oficial Python para Kanboard](https://github.com/kanboard/kanboard-api-python):
-
-```bash
-pip install kanboard
-```
-
-Aquí un ejemplo para crear un proyecto y una tarea:
-
-```python
-from kanboard import Kanboard
-
-kb = Kanboard("http://localhost/jsonrpc.php", "jsonrpc", "your_api_token")
-
-project_id = kb.create_project(name="My project")
-
-task_id = kb.create_task(project_id=project_id, title="My task title")
-```
-
-Hay mas ejemplos en el [sitio web oficial(https://github.com/kanboard/kanboard-api-python).
-
-Ejemplo con un cliente PHP
--------------------------
-
-Puede utilizar esta [librearia Json-RPC de Cliente/servidor para PHP](https://github.com/fguillot/JsonRPC), Aqui un ejemplo:
-
-```php
-<?php
-
-$client = new JsonRPC\Client('http://localhost:8000/jsonrpc.php');
-$client->authentication('jsonrpc', '19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929');
-
-print_r($client->getAllProjects());
-
-```
-
-La respuesta:
-
-```
-Array
-(
- [0] => Array
- (
- [id] => 1
- [name] => API test
- [is_active] => 1
- [token] => 6bd0932fe7f4b5e6e4bc3c72800bfdef36a2c5de2f38f756dfb5bd632ebf
- [last_modified] => 1403392631
- )
-
-)
-```
-
-Ejemplo con Ruby
------------------
-
-Este ejmeplo puede ser usado con Kanboard configurado con autenticación de Proxy Inverso y la API configurada con una cabecerza de autenticación personalizada:
-
-```ruby
-require 'faraday'
-
-conn = Faraday.new(:url => 'https://kanboard.example.com') do |faraday|
- faraday.response :logger
- faraday.headers['X-API-Auth'] = 'XXX' # base64_encode('jsonrpc:API_KEY')
- faraday.basic_auth(ENV['user'], ENV['pw']) # user/pass to get through basic auth
- faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
-end
-
-response = conn.post do |req|
- req.url '/jsonrpc.php'
- req.headers['Content-Type'] = 'application/json'
- req.body = '{ "jsonrpc": "2.0", "id": 1, "method": "getAllProjects" }'
-end
-
-puts response.body
-```
-
-
-Ejemplo con Java
------------------
-
-Este es un ejemplo basico usando Spring. Para su uso correcto vea [Este enlace](http://spring.io/guides/gs/consuming-rest).
-
-```java
-import java.io.UnsupportedEncodingException;
-import java.util.Base64;
-
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.web.client.RestTemplate;
-
-public class ProjectService {
-
- public void getAllProjects() throws UnsupportedEncodingException {
-
- RestTemplate restTemplate = new RestTemplate();
-
- String url = "http://localhost/kanboard/jsonrpc.php";
- String requestJson = "{\"jsonrpc\": \"2.0\", \"method\": \"getAllProjects\", \"id\": 1}";
- String user = "jsonrpc";
- String apiToken = "19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929";
-
- // encode api token
- byte[] xApiAuthTokenBytes = String.join(":", user, apiToken).getBytes("utf-8");
- String xApiAuthToken = Base64.getEncoder().encodeToString(xApiAuthTokenBytes);
-
- // consume request
- HttpHeaders headers = new HttpHeaders();
- headers.add("X-API-Auth", xApiAuthToken);
- headers.setContentType(MediaType.APPLICATION_JSON);
- HttpEntity<String> entity = new HttpEntity<String>(requestJson, headers);
- String answer = restTemplate.postForObject(url, entity, String.class);
- System.out.println(answer);
- }
-}
-```
diff --git a/doc/es_ES/api-external-task-link-procedures.markdown b/doc/es_ES/api-external-task-link-procedures.markdown
deleted file mode 100644
index e6d506b4..00000000
--- a/doc/es_ES/api-external-task-link-procedures.markdown
+++ /dev/null
@@ -1,221 +0,0 @@
-API de Procedimientos de tarea de enlace externo
-=================================
-
-## getExternalTaskLinkTypes
-
-- Propósito: **Obtener todos los proveedores registrados de enlaces externos**
-- Parámetros: **ninguno**
-- Resultado en caso de éxito: **dict**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"getExternalTaskLinkTypes","id":477370568}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": {
- "auto": "Auto",
- "attachment": "Attachment",
- "file": "Local File",
- "weblink": "Web Link"
- },
- "id": 477370568
-}
-```
-
-## getExternalTaskLinkProviderDependencies
-
-- Propósito: **Obtener las dependencias disponibles para un determinado proveedor**
-- Parametros:
- - **providerName** (string, required)
-- Resultado en caso de éxito: **dict**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"getExternalTaskLinkProviderDependencies","id":124790226,"params":["weblink"]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": {
- "related": "Related"
- },
- "id": 124790226
-}
-```
-
-## createExternalTaskLink
-
-- Propósito: **Crear una nueva tarea de enlace externo**
-- Parametros:
- - **task_id** (integer, required)
- - **url** (string, required)
- - **dependency** (string, required)
- - **type** (string, optional)
- - **title** (string, optional)
-- Resultado en caso de éxito: **link_id**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"createExternalTaskLink","id":924217495,"params":[9,"http:\/\/localhost\/document.pdf","related","attachment"]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": 1,
- "id": 924217495
-}
-```
-
-## updateExternalTaskLink
-
-- Propósito: **Actualizar tarea de enlace externo**
-- Parametros:
- - **task_id** (integer, required)
- - **link_id** (integer, required)
- - **title** (string, required)
- - **url** (string, required)
- - **dependency** (string, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc":"2.0",
- "method":"updateExternalTaskLink",
- "id":1123562620,
- "params": {
- "task_id":9,
- "link_id":1,
- "title":"New title"
- }
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": true,
- "id": 1123562620
-}
-```
-
-## getExternalTaskLinkById
-
-- Propósito: **Obtener un enlace de tarea externo**
-- Parametros:
- - **task_id** (integer, required)
- - **link_id** (integer, required)
-- Resultado en caso de éxito: **dict**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"getExternalTaskLinkById","id":2107066744,"params":[9,1]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": {
- "id": "1",
- "link_type": "attachment",
- "dependency": "related",
- "title": "document.pdf",
- "url": "http:\/\/localhost\/document.pdf",
- "date_creation": "1466965256",
- "date_modification": "1466965256",
- "task_id": "9",
- "creator_id": "0"
- },
- "id": 2107066744
-}
-```
-
-## getAllExternalTaskLinks
-
-- Propósito: **Obtener todos los enlaces externos conectados a una tarea**
-- Parametros:
- - **task_id** (integer, required)
-- Resultado en caso de éxito: **list of external links**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"getAllExternalTaskLinks","id":2069307223,"params":[9]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": [
- {
- "id": "1",
- "link_type": "attachment",
- "dependency": "related",
- "title": "New title",
- "url": "http:\/\/localhost\/document.pdf",
- "date_creation": "1466965256",
- "date_modification": "1466965256",
- "task_id": "9",
- "creator_id": "0",
- "creator_name": null,
- "creator_username": null,
- "dependency_label": "Related",
- "type": "Attachment"
- }
- ],
- "id": 2069307223
-}
-```
-
-## removeExternalTaskLink
-
-- Propósito: **Remover una tarea de enlace externo**
-- Parametros:
- - **task_id** (integer, required)
- - **link_id** (integer, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"removeExternalTaskLink","id":552055660,"params":[9,1]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": true,
- "id": 552055660
-}
-```
diff --git a/doc/es_ES/api-group-member-procedures.markdown b/doc/es_ES/api-group-member-procedures.markdown
deleted file mode 100644
index 9a6bbe22..00000000
--- a/doc/es_ES/api-group-member-procedures.markdown
+++ /dev/null
@@ -1,188 +0,0 @@
-Group Member API Procedures
-===========================
-
-## getMemberGroups
-
-- Propósito: **Obtener todos los grupos de un usuario determinado**
-- Parámetros:
- - **user_id** (integer, required)
-- Resultado en caso de éxito: **List of groups**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getMemberGroups",
- "id": 1987176726,
- "params": [
- "1"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1987176726,
- "result": [
- {
- "id": "1",
- "name": "My Group A"
- }
- ]
-}
-```
-
-## getGroupMembers
-
-- Propósito: **Obtener todos los miembros de un grupo**
-- Parámetros:
- - **group_id** (integer, required)
-- Resultado en caso de éxito: **List of users**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getGroupMembers",
- "id": 1987176726,
- "params": [
- "1"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1987176726,
- "result": [
- {
- "group_id": "1",
- "user_id": "1",
- "id": "1",
- "username": "admin",
- "is_ldap_user": "0",
- "name": null,
- "email": null,
- "notifications_enabled": "0",
- "timezone": null,
- "language": null,
- "disable_login_form": "0",
- "notifications_filter": "4",
- "nb_failed_login": "0",
- "lock_expiration_date": "0",
- "is_project_admin": "0",
- "gitlab_id": null,
- "role": "app-admin"
- }
- ]
-}
-```
-
-## addGroupMember
-
-- Propósito: **Agregar un usuario a un grupo**
-- Parámetros:
- - **group_id** (integer, required)
- - **user_id** (integer, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "addGroupMember",
- "id": 1589058273,
- "params": [
- 1,
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1589058273,
- "result": true
-}
-```
-
-## removeGroupMember
-
-- Propósito: **Quitar un usuario de un grupo**
-- Parámetros:
- - **group_id** (integer, required)
- - **user_id** (integer, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeGroupMember",
- "id": 1730416406,
- "params": [
- 1,
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1730416406,
- "result": true
-}
-```
-
-## isGroupMember
-
-- Propósito: **Comprobar si un usuario es miembro de un grupo**
-- Parámetros:
- - **group_id** (integer, required)
- - **user_id** (integer, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "isGroupMember",
- "id": 1052800865,
- "params": [
- 1,
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1052800865,
- "result": false
-}
-```
diff --git a/doc/es_ES/api-group-procedures.markdown b/doc/es_ES/api-group-procedures.markdown
deleted file mode 100755
index cb11fb96..00000000
--- a/doc/es_ES/api-group-procedures.markdown
+++ /dev/null
@@ -1,174 +0,0 @@
-Group API Procedures
-====================
-
-## createGroup
-
-- Purpose: **Create a new group**
-- Parameters:
- - **name** (string, required)
- - **external_id** (string, optional)
-- Result on success: **link_id**
-- Result on failure: **false**
-
-Request example:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "createGroup",
- "id": 1416806551,
- "params": [
- "My Group B",
- "1234"
- ]
-}
-```
-
-Response example:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1416806551,
- "result": 2
-}
-```
-
-## updateGroup
-
-- Purpose: **Update a group**
-- Parameters:
- - **group_id** (integer, required)
- - **name** (string, optional)
- - **external_id** (string, optional)
-- Result on success: **true**
-- Result on failure: **false**
-
-Request example:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "updateGroup",
- "id": 866078030,
- "params": {
- "group_id": "1",
- "name": "ABC",
- "external_id": "something"
- }
-}
-```
-
-Response example:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 866078030,
- "result": true
-}
-```
-
-## removeGroup
-
-- Purpose: **Remove a group**
-- Parameters:
- - **group_id** (integer, required)
-- Result on success: **true**
-- Result on failure: **false**
-
-Request example:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeGroup",
- "id": 566000661,
- "params": [
- "1"
- ]
-}
-```
-
-Response example:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 566000661,
- "result": true
-}
-```
-
-## getGroup
-
-- Purpose: **Get one group**
-- Parameters:
- - **group_id** (integer, required)
-- Result on success: **Group dictionary**
-- Result on failure: **false**
-
-Request example:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getGroup",
- "id": 1968647622,
- "params": [
- "1"
- ]
-}
-```
-
-Response example:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1968647622,
- "result": {
- "id": "1",
- "external_id": "",
- "name": "My Group A"
- }
-}
-```
-
-## getAllGroups
-
-- Purpose: **Get all groups**
-- Parameters: none
-- Result on success: **list of groups**
-- Result on failure: **false**
-
-Request example:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getAllGroups",
- "id": 546070742
-}
-```
-
-Response example:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 546070742,
- "result": [
- {
- "id": "1",
- "external_id": "",
- "name": "My Group A"
- },
- {
- "id": "2",
- "external_id": "1234",
- "name": "My Group B"
- }
- ]
-}
-```
diff --git a/doc/es_ES/api-internal-task-link-procedures.markdown b/doc/es_ES/api-internal-task-link-procedures.markdown
deleted file mode 100644
index 43d410d7..00000000
--- a/doc/es_ES/api-internal-task-link-procedures.markdown
+++ /dev/null
@@ -1,187 +0,0 @@
-API Procedimientos de Tareas Internas de Enlace
-=================================
-
-## createTaskLink
-
-- Propósito: **Crea un enlace entre dos tareas**
-- Parametros:
- - **task_id** (integer, required)
- - **opposite_task_id** (integer, required)
- - **link_id** (integer, required)
-- Resultado en caso exitoso: **task_link_id**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "createTaskLink",
- "id": 509742912,
- "params": [
- 2,
- 3,
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 509742912,
- "result": 1
-}
-```
-
-## updateTaskLink
-
-- Propósito: **Actualiza enlace de tarea**
-- Parametros:
- - **task_link_id** (integer, required)
- - **task_id** (integer, required)
- - **opposite_task_id** (integer, required)
- - **link_id** (integer, required)
-- Resultado en caso exitoso: **true**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "updateTaskLink",
- "id": 669037109,
- "params": [
- 1,
- 2,
- 4,
- 2
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 669037109,
- "result": true
-}
-```
-
-## getTaskLinkById
-
-- Propósito: **Obtiene un enlace de tarea**
-- Parametros:
- - **task_link_id** (integer, required)
-- Resultado en caso exitoso: **task link properties**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getTaskLinkById",
- "id": 809885202,
- "params": [
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 809885202,
- "result": {
- "id": "1",
- "link_id": "1",
- "task_id": "2",
- "opposite_task_id": "3"
- }
-}
-```
-
-## getAllTaskLinks
-
-- Propósito: **Obtiene todos los enlaces relacionados a una tarea**
-- Parametros:
- - **task_id** (integer, required)
-- Resultado en caso exitoso: **list of task link**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getAllTaskLinks",
- "id": 810848359,
- "params": [
- 2
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 810848359,
- "result": [
- {
- "id": "1",
- "task_id": "3",
- "label": "relates to",
- "title": "B",
- "is_active": "1",
- "project_id": "1",
- "task_time_spent": "0",
- "task_time_estimated": "0",
- "task_assignee_id": "0",
- "task_assignee_username": null,
- "task_assignee_name": null,
- "column_title": "Backlog"
- }
- ]
-}
-```
-
-## removeTaskLink
-
-- Propósito: **Elimina un enlace entre dos tareas**
-- Parametros:
- - **task_link_id** (integer, required)
-- Resultado en caso exitoso: **true**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeTaskLink",
- "id": 473028226,
- "params": [
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 473028226,
- "result": true
-}
-```
diff --git a/doc/es_ES/api-json-rpc.markdown b/doc/es_ES/api-json-rpc.markdown
deleted file mode 100644
index 23088890..00000000
--- a/doc/es_ES/api-json-rpc.markdown
+++ /dev/null
@@ -1,69 +0,0 @@
-Json-RPC API
-============
-
-Usuario y aplicacion API
-------------------------
-
-Existen dos tipos de acceso a la API:
-
-### API de Aplicacion
-
-- Acceso a la API con el usuario "jsonrpc" y el token disponible en ajustes
-- Acceso a todos los procedimientos
-- Sin comprobacion de permisos
-- No existe sesion de usuario en el servidor
-- Ejemplo de posibles clientes: Herramientas para migrar/importar datos, crear tareas desde otros sistemas, etc.
-
-### API de Usuario
-
-- Acceso a la API con las credenciales de usuario (Nombre de usuario y contraseña)
-- Acceso a un conjunto restringido de procedimientos
-- Los permisos del proyecto son comprobados
-- Una sesion de usuario es creada en el servidor
-- Ejemplo de posibles clientes: Aplicacion de escritotrio / dispositivos moviles, utilidad linea de commandos, etc.
-
-Seguridad
----------
-
-- Siempre usa HTTPS con un certificado valido.
-- Si haces una aplicacion movil, es tu trabajo almacenar de forma segura las credenciales de usuario en el dispositivo
-- Despues de tres fallas de autenticación en la API de usuario, el usuario final tiene que desbloquear su cuenta utilizando el formulario de inicio de sesión
-- La autenticación de dos factores aun no está disponible a través de la API
-
-Protocolo
----------
-
-Kanboard utilizar el protocolo JSON-RPC para interactuar con programas externos.
-JSON-RPC es un protocolo de llamada a procedimiento remoto codificado en JSON. Casi lo mismo que XML-RPC, pero con el formato JSON.
-
-Utilizamos [version 2 of the protocol](http://www.jsonrpc.org/specification). Usted debe llamar a la API con una petición HTTP POST.
-
-Kanboard soporta requerimientos por lotes, por lo que pueden hacer varias llamadas a la API en una sola petición HTTP. Es particularmente útil para los clientes móviles con una mayor latencia de la red.
-
-Uso
----
-
-- [Authentication](api-authentication.markdown)
-- [Examples](api-examples.markdown)
-- [Application](api-application-procedures.markdown)
-- [Projects](api-project-procedures.markdown)
-- [Project Permissions](api-project-permission-procedures.markdown)
-- [Boards](api-board-procedures.markdown)
-- [Columns](api-column-procedures.markdown)
-- [Swimlanes](api-swimlane-procedures.markdown)
-- [Categories](api-category-procedures.markdown)
-- [Automatic Actions](api-action-procedures.markdown)
-- [Tasks](api-task-procedures.markdown)
-- [Subtasks](api-subtask-procedures.markdown)
-- [Subtask Time Tracking](api-subtask-time-tracking-procedures.markdown)
-- [Task Files](api-task-file-procedures.markdown)
-- [Project Files](api-project-file-procedures.markdown)
-- [Links](api-link-procedures.markdown)
-- [Internal Task Links](api-internal-task-link-procedures.markdown)
-- [External Task Links](api-external-task-link-procedures.markdown)
-- [Comments](api-comment-procedures.markdown)
-- [Users](api-user-procedures.markdown)
-- [Groups](api-group-procedures.markdown)
-- [Group Members](api-group-member-procedures.markdown)
-- [Me](api-me-procedures.markdown)
-
diff --git a/doc/es_ES/api-link-procedures.markdown b/doc/es_ES/api-link-procedures.markdown
deleted file mode 100644
index 2ed08ecd..00000000
--- a/doc/es_ES/api-link-procedures.markdown
+++ /dev/null
@@ -1,285 +0,0 @@
-API Procedimientos de enlace
-===================
-
-## getAllLinks
-
-- Propósito: **Obtiene la lista de posibles relaciones entre tareas**
-- Parametros: ninguno
-- Resultado en caso exitoso: **List of links**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getAllLinks",
- "id": 113057196
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 113057196,
- "result": [
- {
- "id": "1",
- "label": "relates to",
- "opposite_id": "0"
- },
- {
- "id": "2",
- "label": "blocks",
- "opposite_id": "3"
- },
- {
- "id": "3",
- "label": "is blocked by",
- "opposite_id": "2"
- },
- {
- "id": "4",
- "label": "duplicates",
- "opposite_id": "5"
- },
- {
- "id": "5",
- "label": "is duplicated by",
- "opposite_id": "4"
- },
- {
- "id": "6",
- "label": "is a child of",
- "opposite_id": "7"
- },
- {
- "id": "7",
- "label": "is a parent of",
- "opposite_id": "6"
- },
- {
- "id": "8",
- "label": "targets milestone",
- "opposite_id": "9"
- },
- {
- "id": "9",
- "label": "is a milestone of",
- "opposite_id": "8"
- },
- {
- "id": "10",
- "label": "fixes",
- "opposite_id": "11"
- },
- {
- "id": "11",
- "label": "is fixed by",
- "opposite_id": "10"
- }
- ]
-}
-```
-
-## getOppositeLinkId
-
-- Propósito: **Obtiene el identificador de enlace opuesto de un enlace de tarea**
-- Parametros:
- - **link_id** (integer, required)
-- Resultado en caso exitoso: **link_id**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getOppositeLinkId",
- "id": 407062448,
- "params": [
- 2
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 407062448,
- "result": "3"
-}
-```
-
-## getLinkByLabel
-
-- Propósito: **Obtiene un enlace por etiqueta**
-- Parametros:
- - **label** (integer, required)
-- Resultado en caso exitoso: **link properties**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getLinkByLabel",
- "id": 1796123316,
- "params": [
- "blocks"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1796123316,
- "result": {
- "id": "2",
- "label": "blocks",
- "opposite_id": "3"
- }
-}
-```
-
-## getLinkById
-
-- Propósito: **Obtiene un enlace por identificador**
-- Parametros:
- - **link_id** (integer, required)
-- Resultado en caso exitoso: **link properties**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getLinkById",
- "id": 1190238402,
- "params": [
- 4
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1190238402,
- "result": {
- "id": "4",
- "label": "duplicates",
- "opposite_id": "5"
- }
-}
-```
-
-## createLink
-
-- Propósito: **Crea una nueva relación de tarea**
-- Parametros:
- - **label** (integer, required)
- - **opposite_label** (integer, optional)
-- Resultado en caso exitoso: **link_id**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "createLink",
- "id": 1040237496,
- "params": [
- "foo",
- "bar"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1040237496,
- "result": 13
-}
-```
-
-## updateLink
-
-- Propósito: **Actualiza un enlace**
-- Parametros:
- - **link_id** (integer, required)
- - **opposite_link_id** (integer, required)
- - **label** (string, required)
-- Resultado en caso exitoso: **true**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "updateLink",
- "id": 2110446926,
- "params": [
- "14",
- "12",
- "boo"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 2110446926,
- "result": true
-}
-```
-
-## removeLink
-
-- Propósito: **Elimina un enlace**
-- Parametros:
- - **link_id** (integer, required)
-- Resultado en caso exitoso: **true**
-- Resultado en caso fallido: **false**
-
-Ejemplo de petición:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeLink",
- "id": 2136522739,
- "params": [
- "14"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 2136522739,
- "result": true
-}
-```
diff --git a/doc/es_ES/board-collapsed-expanded.markdown b/doc/es_ES/board-collapsed-expanded.markdown
deleted file mode 100644
index fd463f51..00000000
--- a/doc/es_ES/board-collapsed-expanded.markdown
+++ /dev/null
@@ -1,18 +0,0 @@
-Modo colapsar y expandir
-===========================
-
-Las tares en el tablero pueden visualizarse en modo colapsado o en modo expandido.
-El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"s"** o usar el menu drop-down que esta parte superior izquierda.
-
-Modo de colapsado
---------------
-
-![Tareas colapsadas](../screenshots/board-collapsed-mode.png)
-
-- Si la tarea es asignada a alguien, las iniciales de la persona se muestran junto al número de tareas
-- Si el titulo de la tarea es demasiado largo, tu puedes poner el puntero del ratón sobre la tarea de mostrar una información sobre herramientas con el título completo
-
-Modo expansivo
---------------
-
-![Tasks expanded](../screenshots/board-expanded-mode.png)
diff --git a/doc/es_ES/board-configuration.markdown b/doc/es_ES/board-configuration.markdown
deleted file mode 100644
index 1ac862ec..00000000
--- a/doc/es_ES/board-configuration.markdown
+++ /dev/null
@@ -1,25 +0,0 @@
-Configuraci�n del tablero
-==========================
-
-Ir al menu **Configuraciones **, elije **Ajustes de tablero ** a la izquierda.
-
-![Board settings](../screenshots/board-settings.png)
-
-### Resaltado de tarea
-
-Esta caracterista muestra una sombra alrededor de la tarea cuando una tarea se traslad� recientemente
-
-Establecer el valor 0 para desactivar esta caracterista, 2 dias por default (172800 segundos).
-
-Todo lo traslad� desde de 2 dias tendra una sombra alrededor de la tarea.
-
-### Recargar el intervalo para la pizarra publica
-
-Cuando tu compartes un tablero, la pagina se refresca cada 60 segundos automaticamente por default.
-
-### Refrescar el intervalo para un tablero privado
-
-Cuando su navegador est� abierto un tablero, Kanboard comprueba cada 10 segundos si algo ha sido cambiado por otra persona.
-
-T�cnicamente este proceso se lleva a cabo por el Ajax.
-
diff --git a/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown b/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown
deleted file mode 100644
index f5f2379b..00000000
--- a/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown
+++ /dev/null
@@ -1,12 +0,0 @@
-Horizontal scrolling y modo compacto
-=====================================
-
-Cuando el tablero no puede caber en su pantalla , una barra de scroll horizontal
-When the board cannot fit on your screen, a horizontal scroll bar aparecerá en la parte inferior.
-
-Sin embargo, es posible cambiar a una vista de modo compacto para visualizar todas las columnas en su pantalla.
-
-![Cambiar a modo compacto](../screenshots/board-compact-mode.png)
-
-Cambiar entre scrolling y vista compacta
-El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"c"** o usar el menu drop-down que esta parte superior izquierda.
diff --git a/doc/es_ES/board-show-hide-columns.markdown b/doc/es_ES/board-show-hide-columns.markdown
deleted file mode 100644
index 83ba0293..00000000
--- a/doc/es_ES/board-show-hide-columns.markdown
+++ /dev/null
@@ -1,12 +0,0 @@
-Mostrar y ocultar columnas en el tablero
-==================================
-
-Se puede ocultar o visualizar columnas muy facilmente en el tablero:
-
-![Ocultar una columna](../screenshots/hide-column.png)
-
-Para ocultar una columna, click en la columna escoge en el menu dropdown "ocultar esta columna" :
-
-![Mostrar una columna](../screenshots/show-column.png)
-
-Para mostar nuevamente la columna, click en el icono con el simbolo de suma "plus icon"
diff --git a/doc/es_ES/bruteforce-protection.markdown b/doc/es_ES/bruteforce-protection.markdown
deleted file mode 100644
index 2a08fc27..00000000
--- a/doc/es_ES/bruteforce-protection.markdown
+++ /dev/null
@@ -1,26 +0,0 @@
-Protección por fuerza bruta
-===========================
-
-La protección por fuerza bruta de kanboard funciona en nivel a la cuenta de usuario.
-
-- Después de 3 fallas de autentificación para el formulario de login muestra una imagen de captcha para evitar bots automatizado orientativos.
-- Después de 6 fallas de autentificación la cuenta de usuario esta bloqueada por un periodo de 15 minutos.
-
-Esta característica funciona para el método de autentificación del usuario API, la cuenta tiene que ser desbloqueado mediante el formulario de inicio de sesión.
-
-Sin embargo, después de la tercera falla de autenticidad a través de la API de usuario, la cuenta tiene que ser desbloqueado mediante el formulario de inicio de sesión.
-
-Kanboard no bloquea cualquier dirección de la IP ya que los bots puede utilizar a varios servidores proxy anónimo sin embargo puede utilizar herramientas externas como f[fail2ban](http://www.fail2ban.org) para evitar la exploración masiva.
-
-Los ajustes predeterminados se pueden cambiar con estas variables de configuración:
-
-```php
-// Habilitar captcha después del fallo 3 de autentificación
-define('BRUTEFORCE_CAPTCHA', 3);
-
-// Bloquear la cuenta después de 6 fallo de autentificación
-define('BRUTEFORCE_LOCKDOWN', 6);
-
-//Bloqueo de la duración de la cuenta en minutos.
-define('BRUTEFORCE_LOCKDOWN_DURATION', 15)
-```
diff --git a/doc/es_ES/calendar-configuration.markdown b/doc/es_ES/calendar-configuration.markdown
deleted file mode 100644
index cbbba0d9..00000000
--- a/doc/es_ES/calendar-configuration.markdown
+++ /dev/null
@@ -1,43 +0,0 @@
-Configuración de calendarios
-============================
-
-Ir al menu de configuraciones, despues elegir cofiguracion de calendarios que se encuentra al lado izquierdo
-
-![Configuración de calendarios](../screenshots/calendar-settings.png)
-
-Existe dos diferentes calendarios en kanboard :
-
-- Calendarios de projectos
-- Calendario por usuario (disponible desde el dashboard)
-
-Calendario por projectos
-------------------------
-
-Este calendario visualiza las tareas que se le asignan fechas de vencimiento y las tareas estan basadas sobre
-la fecha de creación o el inicio de fecha
-
-### Visualizar tareas basadas en la fecha de creacion
-
-- El inicio de fecha del evento del calendario es la fecha de creacion de la tarea
-- El finalización de fecha del evento es cuendo se completa una tarea
-
-### Visualizar tareas basadas en las fechas de inicio
-
-- La fecha de inicio del evento del calendario is la fecha de incio de la tarea
-- Esta fecha puede ser definida manualmente.
-- La fecha de finalización del evento es la fecha de terminación
-- Si no hay una fecha de inicio de la tarea no aparece en el calendario.
-
-Calendarios por usuarios
-------------------------
-
-Este calendario visualiza solo las tareas asignadas para el usuario y opcionalmente la información de las subtareas
-
-### Visualizar subtareas basadas en el tiempo de tracking
-
-- Despliega la información de las subtareas desde el calendario o en el registro de la tabla de seguimiento de tiempo
-- La intersección con los usuarios timetable es calculad
-
-### Las estimaciones muestran las subtareas ( la previsión de los trabajos futuros )
-
-- Mostrar la estimación de los trabajos futuros de las subtareas en estado de "todo" y con un valor definido " estimación " .
diff --git a/doc/es_ES/centos-installation.markdown b/doc/es_ES/centos-installation.markdown
deleted file mode 100644
index 9662f7f5..00000000
--- a/doc/es_ES/centos-installation.markdown
+++ /dev/null
@@ -1,86 +0,0 @@
-Instalación en Centos
-===================
-
-Nota:Algunas funciones de Kanboard requieren que se ejecute un trabajo en segundo
-plano todos los días (cronjob.markdown).
-
-Centos 7
---------
-
-Instalar PHP y Apache:
-
-```bash
-yum install -y php php-mbstring php-pdo php-gd unzip wget
-```
-
-Por default Centos 7 use PHP 5.4.16 and Apache 2.4.6.
-
-Reiniciar Apache:
-
-```bash
-systemctl restart httpd.service
-```
-
-InstalarKanboard:
-
-```bash
-cd /var/www/html
-
-# Download the latest release from https://github.com/kanboard/kanboard/releases
-wget https://github.com/kanboard/kanboard/archive/v<version>.zip
-
-unzip kanboard-<version>.zip
-chown -R apache:apache kanboard-<version>/data
-rm kanboard-<version>.zip
-```
-
-Si SELinux esta activado, Asegurese de que el usuario de Apache pueda escribir en el directorio de datos:
-
-```bash
-chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data
-```
-
-Asegurese de configurar el servidor para permitir enviar correos electrónicos y hacer conexiones externas por ejemplo con SELinux:
-
-```bash
-setsebool -P httpd_can_network_connect=1
-```
-
-Las conexiones son necesarias si se usa LDAP,SMTP, ganchos web o cualquier integracion de terceros:
-
-Centos 6.x
-----------
-
-Instalar PHP y Apache:
-
-```bash
-yum install -y php php-mbstring php-pdo php-gd unzip wget
-```
-
-Por defecto para Centos 6.5 use PHP 5.3.3 y Apache 2.2.15
-
-Active las etiquetas cortas:
-
-- Editar el archivo `/etc/php.ini`
-- Cambiar la linea `short_open_tag = On`
-
-Reiniciar Apache:
-
-```bash
-service httpd restart
-```
-
-Instalar Kanboard:
-
-```bash
-cd /var/www/html
-
-# Download the latest release from https://github.com/kanboard/kanboard/releases
-wget https://github.com/kanboard/kanboard/archive/v<version>.zip
-
-unzip kanboard-<version>.zip
-chown -R apache:apache kanboard-<version>/data
-rm kanboard-<version>.zip
-```
-
-Ir a `http://your_server/kanboard/`.
diff --git a/doc/es_ES/cli.markdown b/doc/es_ES/cli.markdown
deleted file mode 100755
index 0c76c6aa..00000000
--- a/doc/es_ES/cli.markdown
+++ /dev/null
@@ -1,206 +0,0 @@
-Interface de linea de comandos
-=============================
-
-Kanboard provides a simple command line interface that can be used from any Unix terminal.
-This tool can be used only on the local machine.
-
-This feature is useful to run commands outside of the web server processes.
-
-Uso
------
-
-- Abre una terminal y ve a tu directorio de kanboard (ejemplo : `cd /var/www/kanboard`)
-- Corre el comando `./cli` / `php cli`
-
-```bash
-Kanboard version master
-
-Uso:
- comando [opciones] [argumentos]
-
-Options:
- -h, --help Visualizar mensaje de ayuda
- -q, --quiet Sin mensajes de salida
- -V, --version Visualiza la verssation version
- --ansi Forzar salida ANSI
- --no-ansi Deshabilitar salida ANSI
- -n, --no-interaction No hacer cualquier pregunta interactiva
- -v|vv|vvv, --verbose Incrementar la verbosidad de los mensajes: 1 para salida normal, 2 para mas salida verbosa y 3 para debug
-
-Available commands:
- cronjob Ejecutar diariamente cronjob
- help Visualizar ayuda para los comandos
- list Lista de comandos
- worker Execute queue worker
- export
- export:daily-project-column-stats Diariamente estad�sticas de exportaci�n de CSV (n�mero de tareas por columna y por d�a )
- export:subtasks Exportar a CSV las subtareas
- export:tasks Exportar a CSV las tareas
- export:transitions Exportar a CSV tareas de transici�n
- locale
- locale:compare Comparar aplicacion de traducciones con el locale fr_FR
- locale:sync Sincronizar todas las traducciones basadas en el locale fr_FR
- notification
- notification:overdue-tasks Enviar notifiaciones de las tareas atrasadas
- plugin
- plugin:install Instalar un plugin desde un archivo ZIP remoto
- plugin:uninstall Eliminar plugin
- plugin:upgrade Actualizar todos los plugins instalados
- projects
- projects:archive Disable projects not touched during one year
- projects:daily-stats Calcular diariamente las estadisticas para todos los proyectos
- trigger
- trigger:tasks Disparadores de eventos calendarizados para todas las tareas
- user
- user:reset-2fa Eliminar la autenticaci�n two-factor para un usuario
- user:reset-password Cambiar el passwor del usuario
-```
-
-Comandos disponibles
-------------------
-
-### Exportar las tareas en CSV
-
-Uso:
-
-```bash
-./cli export:tasks <project_id> <start_date> <end_date>
-```
-
-Ejemplo:
-
-```bash
-./cli export:tasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
-```
-
-CSV los datos son enviados a `stdout`.
-
-### Subtasks CSV export
-
-Uso:
-
-```bash
-./cli export:subtasks <project_id> <start_date> <end_date>
-```
-
-Ejemplo:
-
-```bash
-./cli export:subtasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
-```
-
-### Exportaci�n a CSV de tareas de transici�n
-
-Uso:
-
-```bash
-./cli export:transitions <project_id> <start_date> <end_date>
-```
-
-Ejemplo:
-
-```bash
-./cli export:transitions 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
-```
-
-### Exportar diariamente resumenes de datos en CSV
-
-Los datos exportados se pueden imprimir en la salida est�ndar:
-
-```bash
-./cli export:daily-project-column-stats <project_id> <start_date> <end_date>
-```
-
-Ejemplo:
-
-```bash
-./cli export:daily-project-column-stats 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
-```
-
-### Envio de notificaciones para tareas atrasadas
-
-Los Emails se enviaran a todos los usuarios con las notificaciones habilitadas.
-
-```bash
-./cli notification:overdue-tasks
-```
-
-Parametros opcionales:
-
-- `--show`: Visualizar las notificaciones enviadas
-- `--group`: Grupo tareas atrasadas todo para un usuario (desde todos los proyectos) en un email
-- `--manager`: Enviar todas las tareas atrasadas a un project manager(s) en un email
-
-Tambi�n puede mostrar las tareas atrasadas con la bandera `--show`:
-
-```bash
-./cli notification:overdue-tasks --show
-+-----+---------+------------+------------+--------------+----------+
-| Id | Title | Due date | Project Id | Project name | Assignee |
-+-----+---------+------------+------------+--------------+----------+
-| 201 | Test | 2014-10-26 | 1 | Project #0 | admin |
-| 202 | My task | 2014-10-28 | 1 | Project #0 | |
-+-----+---------+------------+------------+--------------+----------+
-```
-
-### Correr diariamente los calculos de estadisticas de los proyectos
-
-Este comando calcula las estadisticas por cada proyecto:
-
-```bash
-./cli projects:daily-stats
-Run calculation for Project #0
-Run calculation for Project #1
-Run calculation for Project #10
-```
-
-### Trigger [Disparadores] para tareas
-
-Este comando envia a "daily cronjob event" a todas las tareas abiertas de cada proyecto.
-
-```bash
-./cli trigger:tasks
-Trigger task event: project_id=2, nb_tasks=1
-```
-
-### Resetear el password del usuario
-
-```bash
-./cli user:reset-password my_user
-```
-
-Se le pedir� una contrase�a y la confirmaci�n. Los caracteres no se imprimen en la pantalla.
-
-### Eliminar la autenticaci�n two-factor para un usuario
-
-```bash
-./cli user:reset-2fa my_user
-```
-
-### Instalar un plugin
-
-```bash
-./cli plugin:install https://github.com/kanboard/plugin-github-auth/releases/download/v1.0.1/GithubAuth-1.0.1.zip
-```
-
-Nota: Los archivos instalados tendr�n los mismos permisos que el usuario actual
-
-### Eliminar un usuario
-
-```bash
-./cli plugin:uninstall Budget
-```
-
-### Upgrade todos los plugins
-
-```bash
-./cli plugin:upgrade
-* Updating plugin: Budget Planning
-* Plugin up to date: Github Authentication
-```
-
-### Run Background worker
-
-```bash
-./cli worker
-```
diff --git a/doc/es_ES/cloudron.markdown b/doc/es_ES/cloudron.markdown
deleted file mode 100755
index 9de33e5e..00000000
--- a/doc/es_ES/cloudron.markdown
+++ /dev/null
@@ -1,27 +0,0 @@
-Como correr Kanboard en Cloudron
-================================
-
-[Cloudron](https://cloudron.io) es un smartserver privado con el cual tu puedes instalar web
-apps como Kanboard. Puedes instalar Kanboard en un dominio personalizado y cada
-instalación está respaldada y mantenida día a día con la liberación automática de Kanboard
-
-[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=net.kanboard.cloudronapp)
-
-Cuentas
---------
-
-La app se integra perfectamente con Cloudron en la gestión ( a través de LDAP ) del usuario . Solamente
-los usuarios de Cloudron pueden acceder a Kanboard . Además , cualquier administrador Cloudron
-se convierte en un administrador Kanboard automáticamente.
-
-Instalación de plugins
------------------------
-
-Los plugins pueden ser instalados y configurados por [Cloudron CLI](https://cloudron.io/references/cli.html)
-herramientas. Observar [descripción de la app](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp) for
-mas información.
-
-Código fuente de la aplicación
--------------------------------
-El código fuente de la app Cloudron esta [aqui](https://github.com/cloudron-io/kanboard-app).
-
diff --git a/doc/es_ES/coding-standards.markdown b/doc/es_ES/coding-standards.markdown
deleted file mode 100755
index 966f9c90..00000000
--- a/doc/es_ES/coding-standards.markdown
+++ /dev/null
@@ -1,24 +0,0 @@
-Estandares de codificación
-================
-
-Código PHP
-----------
-
-- Indentacion: 4 espacios
-- Linea de retorno: Unix => `\n`
-- Encoding: UTF-8
-- Use unicamente las etiquetas de apertura `<?php` or `<?=` para templates , pero ** nunca usar ** `<?`
-- Siempre escribe comentarios PHPdoc para metodos y propiedades de la clase
-- Codificar con estilo : [PSR-1](http://www.php-fig.org/psr/psr-1/) y [PSR-2](http://www.php-fig.org/psr/psr-2/)
-
-Código JavaScript
----------------
-
-- Indentacion: 4 espacios
-- Linea de retorno: Unix => `\n`
-
-Código CSS
---------
-
-- Indentacion: 4 espacios
-- Linea de retorno: Unix => `\n`
diff --git a/doc/es_ES/config.markdown b/doc/es_ES/config.markdown
deleted file mode 100755
index bc2f2982..00000000
--- a/doc/es_ES/config.markdown
+++ /dev/null
@@ -1,307 +0,0 @@
-Archivo de configuración
-========================
-
-Puede personalizar la configuración predeterminada de Kanboard mediante la adición de un archivo ` config.php` en la raíz del proyecto o en la carpeta ` data` .
-También puede cambiar el nombre del archivo `config.default.php` a `config.php` y cambiar los valores deseados .
-
-Habilitar/Deshabilitar el modo debug
---------------------------------------
-
-```php
-define('DEBUG', true);
-define('LOG_DRIVER', 'file'); // Otros drivers son: syslog, stdout, stderr or file
-```
-
-El controlador de registro se debe definir si se habilita el modo de depuración .
-El modo de depuración registra todas las consultas SQL y el tiempo necesario para generar páginas .
-
-Plugins
--------
-
-Folder de plugins:
-
-```php
-define('PLUGINS_DIR', 'data/plugins');
-```
-
-Enable/disable plugin de instalación para la interface de usuario:
-
-```php
-define('PLUGIN_INSTALLER', true); // Default es true
-```
-
-Folder para subir archivos
--------------------------
-
-```php
-define('FILES_DIR', 'data/files');
-```
-
-Enable/disable url rewrite
---------------------------
-
-```php
-define('ENABLE_URL_REWRITE', false);
-```
-
-Configuración de Email
--------------------
-
-```php
-// E-mail address para la cabecera "From" (notificaciones)
-define('MAIL_FROM', 'notifications@kanboard.local');
-
-// Mail transport para uso: "smtp", "sendmail" or "mail" (Funcion PHP mail)
-define('MAIL_TRANSPORT', 'mail');
-
-// Configuración SMTP para usarse para elegir el trasporte de "smtp"
-define('MAIL_SMTP_HOSTNAME', '');
-define('MAIL_SMTP_PORT', 25);
-define('MAIL_SMTP_USERNAME', '');
-define('MAIL_SMTP_PASSWORD', '');
-define('MAIL_SMTP_ENCRYPTION', null); // Valid values are "null", "ssl" or "tls"
-
-// Comando Sendmail para usarse cuando el trasporte sea "sendmail"
-define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
-```
-
-Configuración de base de datos
-------------------------------
-
-```php
-// Driver base de datos: sqlite, mysql or postgres (sqlite por default)
-define('DB_DRIVER', 'sqlite');
-
-// Nombre de usuario Mysql/Postgres
-define('DB_USERNAME', 'root');
-
-// Password Mysql/Postgres
-define('DB_PASSWORD', '');
-
-// Mysql/Postgres hostname
-define('DB_HOSTNAME', 'localhost');
-
-// Mysql/Postgres Nombre de la base de datos
-define('DB_NAME', 'kanboard');
-
-// Mysql/Postgres Puerto personalizado (null = default port)
-define('DB_PORT', null);
-
-// Mysql SSL key
-define('DB_SSL_KEY', null);
-
-// Mysql SSL certificate
-define('DB_SSL_CERT', null);
-
-// Mysql SSL CA
-define('DB_SSL_CA', null);
-```
-
-Configuraciones LDAP
-----------------------
-
-```php
-// Habilitar la autenticación por LDAP (false por default)
-define('LDAP_AUTH', false);
-
-// LDAP server hostname
-define('LDAP_SERVER', '');
-
-// LDAP puerto del servidor (389 por defecto)
-define('LDAP_PORT', 389);
-
-// Por default, requiere certificados para verificacion para ldaps:// estilo URL. muesta false para saltarse la verificacion
-define('LDAP_SSL_VERIFY', true);
-
-// Enable LDAP START_TLS
-define('LDAP_START_TLS', false);
-
-// Por defecto Kanboard tiene el nombre de usuario LDAP en minúscula para evitar usuarios duplicados ( la base de datos entre mayúsculas y minúsculas )
-// Establece en true si desea conservar el caso
-define('LDAP_USERNAME_CASE_SENSITIVE', false);
-
-// LDAP tipo de enlace : "anonymous", "user" o "proxy"
-define('LDAP_BIND_TYPE', 'anonymous');
-
-// Nombre de usuario LDAP para utilizar con el modo de proxy
-// Patrón de nombre de usuario LDAP para utilizar con el modo de usuario
-define('LDAP_USERNAME', null);
-
-// password LDAP para usar en modo proxy
-define('LDAP_PASSWORD', null);
-
-// LDAP DN para usuarios
-// Ejemplo para ActiveDirectory: CN=Users,DC=kanboard,DC=local
-// Ejemplo para OpenLDAP: ou=People,dc=example,dc=com
-define('LDAP_USER_BASE_DN', '');
-
-// LDAP pattern to use when searching for a user account
-// Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))'
-// Example for OpenLDAP: 'uid=%s'
-define('LDAP_USER_FILTER', '');
-
-// LDAP attribute for username
-// Example for ActiveDirectory: 'samaccountname'
-// Example for OpenLDAP: 'uid'
-define('LDAP_USER_ATTRIBUTE_USERNAME', 'uid');
-
-// LDAP attribute for user full name
-// Example for ActiveDirectory: 'displayname'
-// Example for OpenLDAP: 'cn'
-define('LDAP_USER_ATTRIBUTE_FULLNAME', 'cn');
-
-// LDAP attribute for user email
-define('LDAP_USER_ATTRIBUTE_EMAIL', 'mail');
-
-// LDAP attribute to find groups in user profile
-define('LDAP_USER_ATTRIBUTE_GROUPS', 'memberof');
-
-// LDAP attribute for user avatar image: thumbnailPhoto or jpegPhoto
-define('LDAP_USER_ATTRIBUTE_PHOTO', '');
-
-// LDAP attribute for user language, example: 'preferredlanguage'
-// Put an empty string to disable language sync
-define('LDAP_USER_ATTRIBUTE_LANGUAGE', '');
-
-// Permitir creacion de usuario automatico LDAP
-define('LDAP_USER_CREATION', true);
-
-// LDAP DN para administradores
-// Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local
-define('LDAP_GROUP_ADMIN_DN', '');
-
-// LDAP DN para managers
-// Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local
-define('LDAP_GROUP_MANAGER_DN', '');
-
-// Habilitiar proveedor LDAP de grupo para permisos de proyecto
-// El usuario final será capaz de navegar por los grupos LDAP desde la interfaz de usuario y permitir el acceso a proyectos específicos
-define('LDAP_GROUP_PROVIDER', false);
-
-// LDAP Base DN for groups
-define('LDAP_GROUP_BASE_DN', '');
-
-// LDAP filtro de grupo
-// Ejemplo para ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*))
-define('LDAP_GROUP_FILTER', '');
-
-// LDAP filtro por grupo de usuario
-// Si se configura este filtro , Kanboard buscará grupos de usuarios en LDAP_GROUP_BASE_DN
-// Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s))
-define('LDAP_GROUP_USER_FILTER', '');
-
-// LDAP atributo para los nombres de grupos
-define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
-```
-
-Reverse-Proxy configuración de autenticación
--------------------------------------
-
-```php
-// Enable/disable la autenticación reverse proxy
-define('REVERSE_PROXY_AUTH', false);
-
-// Nombre del header a utilizar para el nombre de usuario
-define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
-
-// Nombre de usuario del administrador , por defecto en blanco
-define('REVERSE_PROXY_DEFAULT_ADMIN', '');
-
-// Dominio por defecto a utilizar para configurar la dirección de correo electrónico
-define('REVERSE_PROXY_DEFAULT_DOMAIN', '');
-```
-
-Configuración para la autenticacion RememberMe
-----------------------------------------------
-
-```php
-// Enable/disable recuerdame autenticación
-define('REMEMBER_ME_AUTH', true);
-```
-
-Secure HTTP configuracion de headers
--------------------------------------
-
-```php
-// Enable o disable "Strict-Transport-Security" HTTP header
-define('ENABLE_HSTS', true);
-
-// Enable o disable "X-Frame-Options: DENY" HTTP header
-define('ENABLE_XFRAME', true);
-```
-
-Logging
--------
-
-De forma predeterminada , Kanboard no ingrese nada .
-Si desea habilitar el registro , usted tiene que fijar un controlador de registro.
-
-```php
-// log de drivers disponibles: syslog, stderr, stdout or file
-define('LOG_DRIVER', '');
-
-// Ingrese el nombre de archivo de registro si el driver "file"
-define('LOG_FILE', __DIR__.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'debug.log');
-```
-
-Protección de Brute-force
----------------------
-
-```php
-// Habilitar captcha despues de 3 autenticaciones fallidas
-define('BRUTEFORCE_CAPTCHA', 3);
-
-// Bloquear la cuenta después de 6 autenticaciones fallidas
-define('BRUTEFORCE_LOCKDOWN', 6);
-
-// Bloquear la cuenta durante un minute
-define('BRUTEFORCE_LOCKDOWN_DURATION', 15);
-```
-
-Session
--------
-
-```php
-// Session duration in second (0 = until the browser is closed)
-// See http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime
-define('SESSION_DURATION', 0);
-```
-
-Clientes HTTP
---------------
-
-Si las peticiones HTTP externas debe ser enviada a través de un proxy :
-
-```php
-define('HTTP_PROXY_HOSTNAME', '');
-define('HTTP_PROXY_PORT', '3128');
-define('HTTP_PROXY_USERNAME', '');
-define('HTTP_PROXY_PASSWORD', '');
-```
-
-Para permitir que los certificados de firma propia :
-
-```php
-// Establece en false para permitir certficados self-signed
-define('HTTP_VERIFY_SSL_CERTIFICATE', true);
-```
-
-Varias configuraciones
-----------------------
-
-```php
-// Escapar de HTML dentro del texto de markdown
-define('MARKDOWN_ESCAPE_HTML', true);
-
-// Cabecera de autenticación alternativo API , el valor predeterminado es la autenticación básica HTTP definido en RFC2617
-define('API_AUTHENTICATION_HEADER', '');
-
-// Oculatar el formulario de login, usarlo si todos tus usuarios usan Google/Github/ReverseProxy authentication
-define('HIDE_LOGIN_FORM', false);
-
-// Desactivación de cierre de sesión ( SSO para la autenticación externa )
-define('DISABLE_LOGOUT', false);
-
-// Invalidar token de la API almacenada en la base de datos , útil para pruebas automatizadas
-define('API_AUTHENTICATION_TOKEN', 'My unique API Token');
-```
diff --git a/doc/es_ES/contributing.markdown b/doc/es_ES/contributing.markdown
deleted file mode 100644
index 46d286d5..00000000
--- a/doc/es_ES/contributing.markdown
+++ /dev/null
@@ -1,67 +0,0 @@
-Directrices del contribuyente
-======================
-
-¿Cómo puedo ayudar?
------------------
-
-Kanboard no es perfecto, pero hay muchas maneras de ayudar:
-
-- Dar opinión
-- Informar de los errores
-- Añadir o actualizar traducciones
-- Mejorar la documentación
-- Código de Escritura
-- Dile a tus amigos que Kanboard es impresionante
-
-Antes de hacer cualquier empresa grande, abrir un nuevo tema y explicar su propuesta.
-
-Quiero dar retroalimentación
------------------------
-- Usted piensa que algo debe ser mejorado (interface de usuario, peticiones de características)
-- Comprobar si aún no se propuso su idea
-- Abrir un nuevo tema
-- Describir su idea
-- Puede también hacer un voto con +1 en las propuestas existentes
-
-Quiero informar de un error
----------------------------
-
-- Compruebe si el problema no se ha comunicado anteriormente
-- Abrir un nuevo ticket
-- Explicar lo que está roto
-- Describir la forma de reproducir el error
-- Describir su entorno (versión Kanboard, sistema operativo, servidor web, Versión de PHP , la versión de la base de datos, el proveedor de alojamiento)}
-
-Deseo traducir Kanboard
-----------------------------
-Kanboard se traduce en muchos idiomas.
-
-Sin embargo, las traducciones no están completas, observe la [guía de traducción para contribuir](translations.markdown).
-
-
-Quiero mejorar la documentación
------------------------------------
-- ¿Crees que algo no está claro, existen errores gramaticales, errores tipográficos, otra cosa ?
-- La documentación está escrita en Markdown y se almacena en la carpeta `docs`.
-- Editar los archivos y enviar un Pull-Request
-- La documentación se sincroniza con el repositorio y el sitio web oficial .
-
-Quiero contribuir al código
---------------------------------
-Los pulls son siempre bienvenidos , al ser aceptado se tiene que seguir estas directrices:
-
-- ** Antes de hacer cualquier cambio grande o propuesta de diseño, abrir un nuevo ticket en comenzar una discusión **.
-- Si desea agregar una nueva función, respetar la filosofía detrás de Kanboard. ** Nos centramos en la simplicidad **, no queremos tener un software sobrecargado .
-- Lo mismo se aplica para la interface de usuario, ** ** simplicidad y eficiencia.
-- Enviar un solo pull por característica o corrección de errores.
-- Un pull más pequeño es más fácil y más rápido para revisar y fusionarlo.
-- Asegurarse [ de hacer las pruebas unitarias (tests.markdown).
-- Respetar los [estandares de codificación] (coding-standards.markdown).
-- Escribir código mantenible, evitar la duplicación de código, usar las buenas practicas de PHP.
-En cualquier caso, si no está seguro acerca de algo abierto crear un uevo ticket.
-
-Dile a tus amigos que Kanboard es impresionante
----------------------------------------------
-
-Si utiliza Kanboard, corre la voz que le rodean.
-Diles que es software libre y de código abierto esto es cool.
diff --git a/doc/es_ES/creating-projects.markdown b/doc/es_ES/creating-projects.markdown
deleted file mode 100755
index d6b42faa..00000000
--- a/doc/es_ES/creating-projects.markdown
+++ /dev/null
@@ -1,40 +0,0 @@
-Creación de proyectos
-=================
-
-Kanboard puede manejar múltiples proyectos. Hay dos tipos de proyectos
-
-- Proyectos por equipos
-- Proyectos privados pra una sola persona
-
-Creando proyectos para multiples usuarios
-------------------------------------------
-
-- Solamente los administradores y los administradores de proyecto pueden crear los proyectos.
-- La gestión de usuarios está disponible
-
-Desde el dashboard, click en el link **Nuevo proyecto**:
-
-![Formulario para la creación de proyecto](../screenshots/new-project.png)
-
-Es muy facil , solo tienes que buscar un nombre para tu proyecto!
-
-Crear un proyecto privado
---------------------------
-
-- Cualquiera puede crear un proyecto privado
-- **No hay** gestión de usuarios
-- Sólo el propietario y los administradores pueden acceder al proyecto
-
-Desde el dashboard, haga clic en el enlace **Nuevo proyecto privado**.
-
-
-Crear proyectos desde otro proyecto
---------------------------------------
-
-Cuando tu creas un nuevo proyecto, tu puedes escoger o duplicar las propiedades de otro proyecto :
-
-- Permisos
-- Acciones
-- Swimlanes
-- Categorias
-- Tareas
diff --git a/doc/es_ES/creating-tasks.markdown b/doc/es_ES/creating-tasks.markdown
deleted file mode 100755
index 8a4c0331..00000000
--- a/doc/es_ES/creating-tasks.markdown
+++ /dev/null
@@ -1,31 +0,0 @@
-Creación de tarea
-==============
-
-Desde el tablero, haga clic en el signo más **plus** al lado del nombre de la columna
-
-![Creación de tarea desde el tablero](../screenshots/task-creation-board.png)
-
-A continuación, aparece el formulario de creación de tareas:
-
-![Formulario de creación de tareas](../screenshots/task-creation-form.png)
-
-Descripción de campos:
-
-- **Titulo**: El título de su tarea, que se podrá ver en el tablero.
-- **Descripción**: Descripción que usa el formato [Markdown](syntax-guide.markdown).
-- **Tags**: Lista de etiquetas asociadas a las tareas
-- **Crear otra tarea**:Marque esta casilla si desea crear una tarea similar (serán pre-llenados algunos campos)..
-- **Color**: Escoger el color de la tarjeta.
-- **Asignado**: Persona que trabajara en la tarea.
-- **Categoría**: Sólo una categoría puede ser asignado a una tarea (visibles sólo si los proyectos tienen categorías).
-- **Columna**: La columna en la que se creó la tarea, su tarea se coloca en la parte inferior.
-- **Prioridad**: AL Prioridad de la tarea, el intervalo se puede definir en la configuración del proyecto, los valores por defecto son P0 a P3.
-- **Complejidad**: Se utiliza en la gestión de proyectos ágiles (Scrum), los puntos de complejidad o de la historia es un número que le dice al equipo lo difícil es la historia. A menudo, las personas utilizan la serie de Fibonacci.
-- **Referencia**: ID externo para la tarea, por ejemplo, puede ser el número de entradas que provienen de otro sistema
-- **Estimación original** : Estimación de horas para completar la tarea.
-- **Tiempo transcurrido** : El tiempo dedicado a trabajar en la tarea.
-- **Fecha de Inicio** : Se trata de un campo de fecha y hora.
-- **Fecha de vencimiento** : Las tareas vencidas se tiene una fecha de vencimiento próxima rojo y las fechas de vencimiento será de color negro en el tablero. Varios formato de fecha se aceptan además del selector de fecha.
-
-
-Con el enlace de vista previa, se puede ver la descripción de la tarea convertiendo la sintaxis de Markdown.
diff --git a/doc/es_ES/cronjob.markdown b/doc/es_ES/cronjob.markdown
deleted file mode 100755
index b7dc5cee..00000000
--- a/doc/es_ES/cronjob.markdown
+++ /dev/null
@@ -1,32 +0,0 @@
-Programaci�n de Jobs en background
-==================================
-
-Para trabajar correctamente,Kanboard requiere que se corra un job en background diariamente.
-Usualmente en plataformas Unix, este proceso se hace con `cron`.
-
-Este job es necesario para estas caracteristicas:
-
-- Reportes y analisis (calcular diariamente las estadisticas de cada proyecto)
-- Enviar notificaciones de tareas atrasadas.
-- Ejecutar automaticamente acciones conectadas a el evento "Daily background job for tasks"
-
-Configuraci�n de plataformas Unix y Linux
------------------------------------------
-
-Hay varias maneras de definir una tarea programada en sistemas operativos Unix/Linux , este ejemplo es para Ubuntu 14.04 .
-El procedimiento es similar a otros sistemas.
-
-Editar el crontab del usuario de tu servidor web
-
-```bash
-sudo crontab -u www-data -e
-```
-
-Ejemplo para ejecutar diariamente cronjob a las 8am:
-
-```bash
-0 8 * * * cd /path/to/kanboard && ./cli cronjob >/dev/null 2>&1
-```
-
-Nota : El proceso del cronjob debe tener acceso a escritura de la base de datos en caso de usar Sqlite.
-Usualmente, el cronjob corre bajo el usuario del servidor web. ** www-data , Ejemplo **
diff --git a/doc/es_ES/debian-installation.markdown b/doc/es_ES/debian-installation.markdown
deleted file mode 100644
index 2150cf98..00000000
--- a/doc/es_ES/debian-installation.markdown
+++ /dev/null
@@ -1,74 +0,0 @@
-Como instalar Kanboard en debian
-================================
-
-Nota: Algunas caracteristicas de Kanboard requieren que tu corras [un job en background diariamente](cronjob.markdown).
-
-Debian 8 (Jessie)
------------------
-
-Instalar Apache y PHP :
-
-```bash
-apt-get update
-apt-get install -y php5 php5-sqlite php5-gd unzip
-service apache2 restart
-```
-
-Instalar Kanboard
-
-```bash
-cd /var/www/html
-
-# Download the latest release from https://github.com/kanboard/kanboard/releases
-wget https://github.com/kanboard/kanboard/archive/v<version>.zip
-
-unzip kanboard-<version>.zip
-chown -R www-data:www-data kanboard-<version>/data
-rm kanboard-<version>.zip
-```
-
-Debian 7 (Wheezy)
------------------
-
-Instalar Apache y PHP
-
-```bash
-apt-get update
-apt-get install -y php5 php5-sqlite php5-gd unzip
-```
-
-Instalar Kanboard
-
-```bash
-cd /var/www
-
-# Download the latest release from https://github.com/kanboard/kanboard/releases
-wget https://github.com/kanboard/kanboard/archive/v<version>.zip
-
-unzip kanboard-<version>.zip
-chown -R www-data:www-data kanboard-<version>/data
-rm kanboard-<version>.zip
-```
-
-Debian 6 (Squeeze)
-------------------
-
-Instalar Apache y PHP
-
-```bash
-apt-get update
-apt-get install -y libapache2-mod-php5 php5-sqlite php5-gd unzip
-```
-
-Instalar Kanboard:
-
-```bash
-cd /var/www
-
-# Download the latest release from https://github.com/kanboard/kanboard/releases
-wget https://github.com/kanboard/kanboard/archive/v<version>.zip
-
-unzip kanboard-<version>.zip
-chown -R www-data:www-data kanboard-<version>/data
-rm kanboard-<version>.zip
-```
diff --git a/doc/es_ES/docker.markdown b/doc/es_ES/docker.markdown
deleted file mode 100644
index bde5ec05..00000000
--- a/doc/es_ES/docker.markdown
+++ /dev/null
@@ -1,105 +0,0 @@
-Como ejecutar Kanboard con Docker?
-================================
-
-Kanboard puede funcionar facilmente con [Docker] (https://www.docker.com).
-
-El tamaño de la imagen es aproximadamente de **70MB** y contiene:
-
-- [Alpine Linux](http://alpinelinux.org/)
-- The [process manager S6](http://skarnet.org/software/s6/)
-- Nginx
-- PHP 7
-
-La tarea programada de Kanboard tambien esta todos los dias a la medianoche.
-La reescritura de la URL esta activada e incluida en el archivo de configuracion.
-
-Cuando el contenedor esta funcionando, la memoria ocupa alrededor de **30MB**.
-
-
-Utilice la versión estable
-----------------------
-
-Para buscar la ultima versión estable de Kanboard use la etiqueta **estable**:
-
-```bash---terminal
-docker pull kanboard/kanboard
-docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:stable
-```
-
-Utilice la versión de desarollo (build automatico)
----------------------------------------------
-
-Cada commit nuevo en el repositorio crea una nueva construccion en la [Docker Hub](https://registry.hub.docker.com/u/kanboard/kanboard/).
-
-
-```bash---terminal
-docker pull kanboard/kanboard
-docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:latest
-```
-
-La etiqueta **ultimo** es la **version de desarrollo** de Kanboard, uselo bajo su propio riesgo.
-
-Construya su propia imagen acoplable
----------------------------
-
-Hay un `Dockerfile` en el repositorio de Kanboard para construir su imagen acoplable.
-Clone el repositorio de Kanboard y ejecute el siguiente camando.
-
-```bash---terminal
-docker build -t youruser/kanboard:master .
-```
-
-o
-
-```bash---terminal
-make docker-image
-```
-
-Para ejecutar su contenedor en el fondo del puerto 80:
-
-```bash--terminal
-docker run -d --name kanboard -p 80:80 -t youruser/kanboard:master
-```
-
-Volúmenes
--------
-
-Usted puede adjuntar dos volúmenes de su contenedor:
-
-- Carpeta de datos: `/var/www/app/data`
-- Complementos de carpeta: `/var/www/app/plugins`
-
-
-Use el indicador `-v` par montar un volumen en el ordenador central como se describe en [official Docker documentation](https://docs.docker.com/storage/volumes/).
-
-
-Actualizar contenedor
-----------------------
-
--Ponga la nueva imagen
--Elimine el nuevo contenedor
--Reinicie el nuevo contenedor con algunos volúmenes
-
-Variables de entorno
----------------------
-
-La lista de las varibles de entorno esta disponible en [esta pagina](env.markdown).
-
-Archivos configurados
-------------
-
-- El contenedor ya incluye un archivo de configuracion personalizado `/var/www/app/config.php`.
-- Puede almacenar su propio archivo de configuracion de volumen de datos`/var/www/app/data/config.php`.
-
-
-Referencias
-----------
-
-- [Official Kanboard images](https://registry.hub.docker.com/u/kanboard/kanboard/)
-- [Docker documentation](https://docs.docker.com/)
-- [Dockerfile stable version](https://github.com/kanboard/docker)
-- [Dockerfile dev version](https://github.com/kanboard/kanboard/blob/master/Dockerfile)
-- [Imagenes oficiales de Kanboard](https://registry.hub.docker.com/u/kanboard/kanboard/)
-- [Documentacionde Docker](https://docs.docker.com/)
-- [Dockerfile version estable](https://github.com/kanboard/docker)
-- [Dockerfile version dev](https://github.com/kanboard/kanboard/blob/master/Dockerfile)
diff --git a/doc/es_ES/email-configuration.markdown b/doc/es_ES/email-configuration.markdown
deleted file mode 100644
index ee3824c8..00000000
--- a/doc/es_ES/email-configuration.markdown
+++ /dev/null
@@ -1,114 +0,0 @@
-Configuración del Email
-=======================
-
-Configuración de usuarios
--------------------------
-
-Para recibir notificaciones por email los usuarios de Kanboard deben tener
-
-- Activar las notificaciones de su perfil
-- Tener una dirección valida de email en su perfil
-- Ser miembro del proyecto y que este tenga activo la opción de notificaciones
-
-Nota: El usuario que genera una sesión y que realiza alguna acción no recibe ninguna notificación, sólo otros miembros del proyecto.
-
-Comunicación con correos electronicos
--------------------------------------
-
-There are several email transports available:
-
-- SMTP
-- Sendmail
-- PHP mail funcion nativa
-- Otros métodos que pueden ser proporcionados por externos : Postmark, Sendgrid and Mailgun
-
-Configuración del servidor
---------------------------
-
-Por default, Kanboard usa el bundled PHP mail function para el envio de emails.
-Porque usualmente el servidor no requiere una configuración y así tu servidor puede estar listo para enviar emails.
-
-Sin embargo, es posible usar otros metodos, como el protocolo SMTP y Sendmail
-
-### Configuración SMTP
-
-Renombrar el archivo `config.default.php` a `config.php` y modificar estos valores:
-
-```php
-// We choose "smtp" as mail transport
-define('MAIL_TRANSPORT', 'smtp');
-
-// We define our server settings
-define('MAIL_SMTP_HOSTNAME', 'mail.example.com');
-define('MAIL_SMTP_PORT', 25);
-
-// Credentials for authentication on the SMTP server (not mandatory)
-define('MAIL_SMTP_USERNAME', 'username');
-define('MAIL_SMTP_PASSWORD', 'super password');
-```
-
-También es posible utilizar una conexión segura, TLS or SSL:
-
-```php
-define('MAIL_SMTP_ENCRYPTION', 'ssl'); // Valid values are "null", "ssl" or "tls"
-```
-
-### Configuración Sendmail
-
-Por default el comando para el sendmail esta `/usr/sbin/sendmail -bs` Pero usted puede personalizarlo en su archivo de configuración.
-
-Ejemplo:
-
-```php
-// We choose "sendmail" as mail transport
-define('MAIL_TRANSPORT', 'sendmail');
-
-// If you need to change the sendmail command, replace the value
-define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
-```
-
-### PHP funcion nativa de email
-
-Esta es la configuración por default
-
-```php
-define('MAIL_TRANSPORT', 'mail');
-```
-
-### La dirección de correo electrónico del remitente
-
-Por default, los correos electrónicos utilizarán la dirección del remitente `notifications@kanboard.local`.
-con este correo no es posible responderle
-
-Tu puedes personalizar esta direccion cambiando el valor de la constante `MAIL_FROM` en tu archivo de configuración
-
-```php
-define('MAIL_FROM', 'kanboard@mydomain.tld');
-```
-
-Esto puede ser útil si su configuracion del servidor SMTP no acepta una dirección por default.
-
-### Cómo mostrar un enlace a la tarea en las notificaciones ?
-
-Para hacer eso, tu tienes que especificar la URL de tu instalación de tu kanboard [Application Settings](application-configuration.markdown).
-
-De manera predeterminada, no se define nada, por lo que no se mostrará los enlaces.
-
-Ejemplos :
-
-- http://myserver/kanboard/
-- http://kanboard.mydomain.com/
-
-No se olvide de la barra final `/`.
-
-Es necesario definir de forma manual debido a que Kanboard no puede adivinar la dirección URL de una secuencia de comandos de línea de comandos y algunas personas tienen una configuración muy específica.
-
-Solución de problemas
----------------------
-
-Si no hay mensajes de correo electrónico se envían y que está seguro de que todo está configurado correctamente entonces:
-
-- Verificar el correo de spam
-- Habilita el modo debug y verifique el archivo `data/debug.log`, Debería ver el error exacto
-- Asegúrese de que el servidor o el proveedor de alojamiento le permite enviar mensajes de correo electrónico
-- Si usa Selinux Permitir a PHP enviar emails
diff --git a/doc/es_ES/faq.markdown b/doc/es_ES/faq.markdown
deleted file mode 100755
index e1ecb3da..00000000
--- a/doc/es_ES/faq.markdown
+++ /dev/null
@@ -1,132 +0,0 @@
-Preguntas frecuentes
-==========================
-
-Tu puedes recomendar un proveedor de web hosting para Kanboard?
----------------------------------------------------------------
-
-Kanboard funciona bien con cualquier VPS proveedor de hosting como [Digital Ocean](https://www.digitalocean.com/?refcode=4b541f47aae4),
-[Linode](https://www.linode.com/?r=4e381ac8a61116f40c60dc7438acc719610d8b11) o [Gandi](https://www.gandi.net/).
-
-Para tener el mejor performance , elegir un proveedor con el disco rápido de I/O porque Kanboard utilizar SQLite de forma predeterminada .
-Evitar los proveedores de alojamiento que utilizan un punto de montaje NFS compartido.
-
-
-Me sale una página en blanco después de instalar o actualizar Kanboard
-----------------------------------------------------------------------
-
-- Verificar si tienes instalados todos los requerimientos en tu servidor
-- Verificar el log de errores de PHP y Apache
-- Verificar si los archivos tienen los permisos correctos
-- Si utiliza un agresivo OPcode caching, haz un reload a tu web-server o php-fpm
-
-
-Si Tienes el error "No hay CSPRNG adecuado instalado en su sistema "
------------------------------------------------------------------------
-
-Si tu usas PHP < 7.0, Tu necesitas tener la extensión openssl habilitada o `/dev/urandom` accesible desde la aplicación si se
-restringe por un `open_basedir`
-
-
-Página no encontrada y la URL parece mal (&amp;amp;)
---------------------------------------------------
-
-- La URL se mira como `/?controller=auth&amp;action=login&amp;redirect_query=` instanciada de `?controller=auth&action=login&redirect_query=`
-- Kanboard regresa el error "Page not found"
-
-Este problema proviene de la configuración de PHP , el valor de ` arg_separator.output` no es defecto del PHP , hay diferentes maneras de solucionar que:
-
-Cambiar el valor directamente en su ` php.ini` si es posible :
-
-`` `
-arg_separator.output = "& "
-`` `
-
-Sustituir el valor con un ` .htaccess` :
-
-`` `
-arg_separator.output php_value "& "
-`` `
-
-De lo contrario Kanboard tratará de anular el valor directamente en PHP .
-
-
-Error de autenticación con la API y Apache + PHP - FPM
---------------------------------------------------------
-
-Php-cgi bajo Apache HTTP basico no pasa user/pass forma predeterminada .
-Para que esta solución funcione , añadir estas líneas a su archivo ` .htaccess` :
-
-```
-RewriteCond %{HTTP:Authorization} ^(.+)$
-RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
-```
-
-
-Problemas conocidos con eAccelerator
-------------------------------
-
-Kanboard no funciona muy bien con [eAccelerator](http://eaccelerator.net).
-El problema puede ser causado una página en blanco o un accidente de Apache :
-
-```
-[Wed Mar 05 21:36:56 2014] [notice] child pid 22630 exit signal Segmentation fault (11)
-```
-
-La mejor manera de evitar este problema es desactivar eAccelerator o definir manualmente los archivos que desea almacenar en caché con el parámetro de configuración ` eaccelerator.filter` .
-
-The project [eAccelerator parece muerto y no se actualiza desde 2012](https://github.com/eaccelerator/eaccelerator/commits/master).
-Recomendamos para cambiar a la ultima versión de PHP por que el bundled viene con [OPcache](http://php.net/manual/en/intro.opcache.php).
-
-
-Por que el requerimiento minimo es PHP 5.3.3?
------------------------------------------
-
-Kanboard utiliza la funcion `password_hash()` para encriptar los passwords pero solo esta disponible ne la version PHP >= 5.5.
-
-Sin embargo, hay un back-port para [versiones de php anteriores](https://github.com/ircmaxell/password_compat#requirements).
-Esta biblioteca requiere al menos PHP 5.3.7 para que funcione correctamente.
-
-Al parecer , CentOS y Debian tienen parches de seguridad en su back-port para PHP 5.3.3 y al parecer estan bien.
-
-Kanboard v1.0.10 y v1.0.11 requiere al menos PHP 5.3.7 , pero este cambio se ha vuelto a ser compatible con PHP 5.3.3 con Kanboard > = v1.0.12
-
-
-Cómo probar Kanboard con el PHP incorporado en el servidor web?
----------------------------------------------------------------
-
-Si tu no quieres instalar un servidor web como Apache en tu localhost, tu puedes testearlo con el [servidor web embebido de PHP](http://www.php.net/manual/en/features.commandline.webserver.php):
-
-```bash
-unzip kanboard-VERSION.zip
-cd kanboard
-php -S localhost:8000
-open http://localhost:8000/
-```
-
-
-Como instalar Kanboard en Yunohost?
-------------------------------------
-
-[YunoHost](https://yunohost.org/) es un sistema operativo de servidor con el objetivo de hacer auto-alojamiento accesible para todos.
-
-Existe un [paquete para instalar Kanboard en Yunohost facilmente](https://github.com/mbugeia/kanboard_ynh).
-
-
-¿Dónde puedo encontrar una lista de proyectos relacionados?
---------------------------------------------
-
-- [Kanboard API python client by @freekoder](https://github.com/freekoder/kanboard-py)
-- [Kanboard Presenter by David Eberlein](https://github.com/davideberlein/kanboard-presenter)
-- [CSV2Kanboard by @ashbike](https://github.com/ashbike/csv2kanboard)
-- [Kanboard for Yunohost by @mbugeia](https://github.com/mbugeia/kanboard_ynh)
-- [Trello import script by @matueranet](https://github.com/matueranet/kanboard-import-trello)
-- [Chrome extension by Timo](https://chrome.google.com/webstore/detail/kanboard-quickmenu/akjbeplnnihghabpgcfmfhfmifjljneh?utm_source=chrome-ntp-icon), [Source code](https://github.com/BlueTeck/kanboard_chrome_extension)
-- [Python client script by @dzudek](https://gist.github.com/fguillot/84c70d4928eb1e0cb374)
-- [Shell script for SQLite to MySQL/MariaDB migration by @oliviermaridat](https://github.com/oliviermaridat/kanboard-sqlite2mysql)
-- [Git hooks for integration with Kanboard by Gene Pavlovsky](https://github.com/gene-pavlovsky/kanboard-git-hooks)
-
-
-¿Hay algunos tutoriales sobre Kanboard en otro idioma?
------------------------------------------------------------
-
-- [Artículo serie alemana sobre Kanboard](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/)
diff --git a/doc/es_ES/freebsd-installation.markdown b/doc/es_ES/freebsd-installation.markdown
deleted file mode 100644
index 9d8d0025..00000000
--- a/doc/es_ES/freebsd-installation.markdown
+++ /dev/null
@@ -1,132 +0,0 @@
-Instalacion en FreeBSD
-=======================
-
-Instalación de paquetes
----------------------
-
-```bash---terminal
-$ pkg update
-$ pkg upgrade
-$ pkg install apache24 mod_php56 kanboard
-```
-
-Habilitar Apache en `/etc/rc.conf`;
-
-```bash---terminal
-$ echo apache24_enable="YES" >> /etc/rc.conf
-```
-
-Preparar PHP para Apache:
-
-```bash---terminal
-$ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf
-$ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf
-```
-
-Iniciar Apache:
-
-```bash---terminal
-$ service apache24 start
-```
-
-Añadir enlace a la carpeta Kanboard en su docroot Apache:
-
-
-```bash---terminal
-cd /usr/local/www/apache24/data
-ln -s /usr/local/www/kanboard
-```
-
-Ir a http://your.server.domain.tld/kanboard and enjoy!
-
-*Notas*:
-- Si deseas utilizar funciones adicionales como la integracion con LDAP, etc.
-por favor instale el modulo PHP utilizando el paquete adecuado.
-- Es posible que tenga que ejecutar los permisos de la carpeta de datos.
-
-
-Instalacion de puertos
----------------------
-
-Generalmente tres elementos tienen que instalarse:
-
-- Apache
-- mod_php for Apache
-- Kanboard
-
-Fetch y extraer puertos...
-
-```bash---terminal
-$ portsnap fetch
-$ portsnap extract
-```
-
-o actualizacion ya existente:
-
-```bash---terminal
-$ portsnap fetch
-$ portsnap update
-```
-
-Mas detalles con respecto a portsnap se puede encontrar en [FreeBSD Handbook](https://www.freebsd.org/doc/handbook/ports-using.html).
-
-Instalacion de Apache:
-
-```bash--terminal
-$ cd /usr/ports/www/apache24
-$ make install clean
-```
-
-Habilitar Apache en `/etc/rc.conf`:
-
-```bash---terminal
-$ echo apache24_enable="YES" >> /etc/rc.conf
-```
-
-Instalacion de mod_php para Apachec:
-
-```bash---terminal
-$ cd /usr/ports/www/mod_php5
-$ make install clean
-```
-
-Instalacion de los puertos de formulario para Kanboard
-
-```bash---terminal
-$ cd /usr/ports/www/kanboard
-$ make install clean
-```
-
-Configuracion de PHP para Apache
-
-
-```bash--terminal
-$ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf
-$ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf
-```
-
-Iniciando Apache:
-
-```bash---terminal
-$ service apache24 start
-```
-
-Ir a http://your.server.domain.tld/kanboard and enjoy!
-
-*Nota*:
-Si desea utilizar funciones adicionales como la intregacion con LDAP, etc.
-Instale el modulo PHP adecuado de `lang/php5-extensions`.
-
-
-Manual de instalacion
--------------------
-
-Como en la version 1.0.16 Kanboard se puede encontrar en los puertos de FreeBSD no hay necesidad de instalarlo manualmente.
-
-
-Tome nota por favor
---------------------
-
-- El puerto esta alojado en [bitbucket](https://bitbucket.org/if0/freebsd-kanboard/). Sientase libre de comentar, y sugerir cambios !
-- Algunas funciones de Kanboard requieren ejecutar[un trabajo en segundo plano todos los dias](cronjob.markdown).
-
diff --git a/doc/es_ES/heroku.markdown b/doc/es_ES/heroku.markdown
deleted file mode 100644
index 8de8b4da..00000000
--- a/doc/es_ES/heroku.markdown
+++ /dev/null
@@ -1,38 +0,0 @@
-Implementar Kanboard en Heroku
-=========================
-
-Usted puede tratar de forma gratuita en Kanboard[Heroku](https://www.heroku.com/).
-Puede utilizar este botón de un solo clic instalar o siga las instrucciones del manual abajo:
-
-[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/kanboard/kanboard)
-
-Requerimientos
-------------
-- Cuenta de Heroku, se puede utilizar una cuenta gratuita
-- Herramientas de línea de comandos instalados Heroku
-
-Manual de Instrucciones
--------------------
-
-```bash
-# Obtener la ultima version de desarrollo
-git clone https://github.com/kanboard/kanboard.git
-cd kanboard
-
-# Empuje el código para Heroku (También puede utilizar SSH si Git sobre HTTP no funciona)
-heroku create
-git push heroku master
-
-# Iniciar un nuevo banco de pruebas con una base de datos PostgreSQL
-heroku ps:scale web=1
-heroku addons:add heroku-postgresql:hobby-dev
-
-# Abra su navegador
-heroku open
-```
-
-Limitaciones
------------
-
-- El almacenamiento de Heroku es efímera, eso significa que los archivos cargados a través de Kanboard no son persistentes después de un reinicio. Es posible que desee instalar un plugin para almacenar sus archivos en un proveedor de almacenamiento en la nube como [Amazon S3](https://github.com/kanboard/plugin-s3).
-- Algunas funciones de Kanboard requieren que ejecute [un trabajo en segundo plano todos los días] (cronjob.markdown).
diff --git a/doc/es_ES/installation.markdown b/doc/es_ES/installation.markdown
deleted file mode 100644
index 308b0e2b..00000000
--- a/doc/es_ES/installation.markdown
+++ /dev/null
@@ -1,68 +0,0 @@
-Instalación
-
-En primer lugar, comprobar los [requisitos] ( requirements.markdown)antes de ir más lejos.
-
-Del archivo (versión estable)
----------------------------------
-
-
-1. Debe tener un servidor web con PHP instalado
-2. Descargar el código fuente y copiar el directorio ` kanboard` en la que desea.
-3. Comprobar si el directorio ` data` se puede escribir
-4. Con el navegador vaya a < http://yourpersonalserver/kanboard >
-5. El nombre de usuario y contraseña por defecto es **admin/admin**
-6. Comience a utilizar el software
-7. No se olvide de cambiar su contraseña!
-
-
-La carpeta de datos se utiliza para almacenar:
-
-- Base de datos SQLite: ` db.sqlite`
-- Archivo de depuración: ` debug.log` (si está activado el modo de depuración)
-- Archivos cargados: ` ficheros / *`
-- miniaturas de imagen: ` ficheros / miniaturas / *`
-
-Las personas que están utilizando una base de datos remota (MySQL / PostgreSQL) y un almacenamiento de archivos a distancia (AWS S3 o similar) no necesariamente tienen que tener una carpeta de datos local persistente o para cambiar el permiso.
-
-Desde el repositorio (versión de desarrollo)
------------------------------------------
-
-1. ` git clone https: // github.com / kanboard / kanboard.git`
-2. Ir a la tercera etapa justo por encima
-
-Nota: Este método se instalará la versión de **desarrollo actual** , utilice a su propio riesgo .
-
-Instalación exterior de la raíz del documento
----------------------------------------------
-
-Si desea instalar Kanboard fuera de la raíz de documentos del servidor web, es necesario crear al menos estos enlaces simbólicos:
-
-```bash
-.
-├── assets -> ../kanboard/assets
-├── cli -> ../kanboard/cli
-├── doc -> ../kanboard/doc
-├── favicon.ico -> ../kanboard/favicon.ico
-├── index.php -> ../kanboard/index.php
-├── jsonrpc.php -> ../kanboard/jsonrpc.php
-└── robots.txt -> ../kanboard/robots.txt
-```
-
-El ` .htaccess` es opcional, ya que su contenido puede ser incluido directamente en la configuración de Apache.
-
-También puede definir una ubicación personalizada para los plugins y carpetas de archivos cambiando el [archivo de configuración] (config.markdown).
-
-La instalación opcional
-
----------------------
-
-- Algunas funciones de Kanboard requieren que ejecuta [un trabajo en segundo plano todos los días] (cronjob.markdown) (Informes y análisis)
-- [Instalar el trabajador fondo] (worker.markdown) para mejorar las prestaciones
-
-Seguridad
----------
-
-
-- No se olvide de cambiar el usuario por defecto / contraseña
-- No permita a todo el mundo para acceder al directorio ` data` de la URL.
-Ya existe un ` .htaccess` para Apache , pero nada para los demás servidores web.
diff --git a/doc/es_ES/kanban-vs-todo-and-scrum.markdown b/doc/es_ES/kanban-vs-todo-and-scrum.markdown
deleted file mode 100644
index 5295a6d1..00000000
--- a/doc/es_ES/kanban-vs-todo-and-scrum.markdown
+++ /dev/null
@@ -1,38 +0,0 @@
-Kanban vs Todo lists and Scrum
-==============================
-
-Kanban vs Todo lists
---------------------
-
-### Todo lists (lista de tareas) :
-
-- Fase unica (es solo una lista de tareas)
-- Multitarea posible (no eficiente)
-
-### Kanban:
-
-- Multi fases,
-- Concentración absoluta para evitar multitareas por que se puede establecer un limite por columna para mejorar el progreso
-
-
-Kanban vs Scrum
----------------
-
-### Scrum:
-
-- Los sprints son time-boxed, usualmente 2 o 4 semanas
-- No permitir cambios durante la iteración
-- La estimación es requerida
-- Utiliza la velocidad como métrica predeterminada
-- El tablero de Scrum se borra entre cada sprint
-- Scrum tiene funciones predefinidas como scrum master , los dueños del producto y el equipo
-- Una gran cantidad de reuniones: planeaciones, backlogs grooming, daily stand-up, retrospectiva
-
-### Kanban:
-
-- Fluido continuo
-- Los cambios se pueden crear en cualquier momento
-- La estimacion es opcional
-- Usa la iniciativa del tiempo de ciclo para apresurar el performance
-- el tablero Kanban board es persistente
-- Kanban no impone estrictas restricciones y reuniones, el proceso es mas flexible
diff --git a/doc/es_ES/keyboard-shortcuts.markdown b/doc/es_ES/keyboard-shortcuts.markdown
deleted file mode 100755
index 9e75a138..00000000
--- a/doc/es_ES/keyboard-shortcuts.markdown
+++ /dev/null
@@ -1,38 +0,0 @@
-Atajos de teclado ** keyboard shortcuts **
-==========================================
-
-La disponibilidad de los Atajos de teclado depende de la página que está actualmente .
-
-Vistas de proyectos (Board, Calendario, Lista, Gantt)
---------------------------------------------
-
-- Cambie a la visión general del proyecto = **v o**
-- Cambie ala vista del tablero = **v b** (presiona **v** y despues **b**)
-- Cambie ala vista del calendario = **v c**
-- Cambie a la vista de lista = **v l**
-- Cambie a la vista de Gantt = **v g**
-
-Vista de tablero
----------------
-
-- Nueva tarea = **n**
-- Expandir/colapsar tarea = **s**
-- Vista Compacta/Amplia = **c**
-
-Vista de tarea
----------
-
-- Editar tarea = **e**
-- Nueva subtarea = **s**
-- Nuevo comentario = **c**
-- Nuevo link interno = **l**
-
-Aplicación
------------
-
-- Visualizar la lista de atajos de teclado = **?**
-- Abrir tablero y cambiarlo = **b**
-- Ir a la caja de busqueda = **f**
-- Eliminar la caja de busqueda = **r**
-- Cerrar dialog box = **ESC**
-- Submit al formulario = **CTRL+ENTER** or **⌘+ENTER**
diff --git a/doc/es_ES/mysql-configuration.markdown b/doc/es_ES/mysql-configuration.markdown
deleted file mode 100755
index 25c9e671..00000000
--- a/doc/es_ES/mysql-configuration.markdown
+++ /dev/null
@@ -1,74 +0,0 @@
-Configuración Mysql/MariaDB
-===========================
-
-
-Por defecto Kanboard utilizar SQLite para almacenar tus datos.
-Sin embargo, es posible usar MySQL o MariaDB en lugar de SQLite.
-
-Requirimientos
-------------
-
-- Mysql server
-- Instalar la extensión `pdo_mysql` en PHP
-
-Nota: Kanboard esta testeada con **Mysql >= 5.5 y MariaDB >= 10.0**
-
-configuración Mysql
--------------------
-
-### Crear una base de datos
-
-El primer paso es crear una base de datos en tu servidor MySQL
-Por ejemplo, se puede hacer eso con el cliente de línea de comandos mysql:
-
-```sql
-CREATE DATABASE kanboard;
-```
-
-### Crear un archivo de configuración
-
-El archivo `config.php` debería contener estos valores:
-
-```php
-<?php
-
-// Elegimos el uso de MySQL en lugar de SQLite
-define('DB_DRIVER', 'mysql');
-
-// Mysql parametros
-define('DB_USERNAME', 'REPLACE_ME');
-define('DB_PASSWORD', 'REPLACE_ME');
-define('DB_HOSTNAME', 'REPLACE_ME');
-define('DB_NAME', 'kanboard');
-```
-
-Nota: Se puede renombrar el archivo de plantilla `config.default.php` a `config.php`.
-
-### Importando SQL dump (metodo alternativo)
-
-
-Por primera vez, se ejecutará Kanboard uno por uno cada migración de base de datos y este proceso puede tardar algún tiempo de acuerdo a su configuración.
-
-Para evitar cualquier tiempo de espera de potencial se puede inicializar la base de datos directamente importando el esquema de SQL:
-
-```bash
-mysql -u root -p my_database < app/Schema/Sql/mysql.sql
-```
-
-El archivo `app/Schema/Sql/mysql.sql` es un dump SQL que representa la ultima versión de la base de datos
-
-SSL configuración
------------------
-
-Estos parámetros tienen que ser definidas para permitir la conexión SSL Mysql:
-
-```php
-// Mysql SSL key
-define('DB_SSL_KEY', '/path/to/client-key.pem');
-
-// Mysql SSL certificados
-define('DB_SSL_CERT', '/path/to/client-cert.pem');
-
-// Mysql SSL CA
-define('DB_SSL_CA', '/path/to/ca-cert.pem');
-```
diff --git a/doc/es_ES/plugin-authentication-architecture.markdown b/doc/es_ES/plugin-authentication-architecture.markdown
deleted file mode 100644
index fa11f1bc..00000000
--- a/doc/es_ES/plugin-authentication-architecture.markdown
+++ /dev/null
@@ -1,99 +0,0 @@
-Arquitectura de autenticación
-=============================
-
-Kanboard provee una flexible y conectable arquitectura de autenticación.
-
-Por default, el usuario puede autenticarse con multiple metodos:
-
-- Autenticación por usuario y password (Base de datos local y LDAP)
-- Autenticación OAuth2
-- Autenticación Reverse-Proxy
-- Autenticación basada en Cookie (Recuerdame)
-
-Además, despues de una autenticación satisfactoria un puede hacerse post de autenticación Two-Factor .
-Kanboard sopoarta nativamente el standart TOTP.
-
-Interfaces de autenticación
-----------------------------
-
-Para tener un sistema conectable, los drivers de autenticación deben implementar un conjunto de interfaces
-
-| Interface | Rol |
-|------------------------------------------|------------------------------------------------------------------|
-| AuthenticationProviderInterface | Interface base para otras interfaces de autenticación |
-| PreAuthenticationProviderInterface | The user is already authenticated al alcanzar la aplicación, Usualmente los servidores web definen algunas variables de entorno |
-| PasswordAuthenticationProviderInterface | El metodo de autenticación que usa el username y password provienen del formulario de login |
-| OAuthAuthenticationProviderInterface | Proveedores OAuth2 |
-| PostAuthenticationProviderInterface | Drivers de autenticación Two-Factor ,pide el código a confirmar |
-| SessionCheckProviderInterface | Los proveedores que son capaces de comprobar si la sesión de usuario es válida |
-
-### Ejemplos de autenticación de proveedores:
-
-- Database por default metodos a implementar `PasswordAuthenticationProviderInterface` y `SessionCheckProviderInterface`
-- Reverse-Proxy metodos a implementar `PreAuthenticationProviderInterface` y `SessionCheckProviderInterface`
-- Google metodos a implementar `OAuthAuthenticationProviderInterface`
-- LDAP metodos a implementar `PasswordAuthenticationProviderInterface`
-- RememberMe cookie metodos a implementar `PreAuthenticationProviderInterface`
-- Two-Factor TOTP metodos a implementar `PostAuthenticationProviderInterface`
-
-flujo de trabajo de autenticación ** Workflow **
-------------------------------------------------
-
-Para cada peticion HTTP:
-
-1. Si la sesión de usuario esta abierta, ejecuta el registro de proveedores que implementa`SessionCheckProviderInterface`
-2. Ejecuta todos los proveedores que implementa `PreAuthenticationProviderInterface`
-3. Si el usuario final hace un submit al formulario del login, Los proveedores que implementa `PasswordAuthenticationProviderInterface` are executed
-4. Si el usuario final quiere usar OAuth2, el selecciona el proveedor a ejecutar
-5. Despues de una autenticación satisfactoria, el ultimo registro utilizará `PostAuthenticationProviderInterface`
-6. Sincronizar la información del usuario si es necesario
-
-Este workflow es manejado por la clase `Kanboard\Core\Security\AuthenticationManager`.
-
-Eventos disparados:
-
-- `AuthenticationManager::EVENT_SUCCESS`: autenticación satisfactoria
-- `AuthenticationManager::EVENT_FAILURE`: autenticación fallida
-
-Cada vez que se produce un evento de fallo , el contador de intentos fallidos se incrementa.
-
-La cuenta de usuario se puede bloquear para el período de tiempo configurado y un captcha puede ser mostrado para evitar ataques de fuerza bruta .
-
-Interface de usuario del proveedor
----------------------------------
-
-Cuando la autenticación es satisfactoria, la `AuthenticationManager` pedura la información del usuario para que el driver llame al metodo `getUser()`.
-Este metodo debe regresar un objeto que implementa la interface `Kanboard\Core\User\UserProviderInterface`.
-
-Esta clase abstracta reune la información dede otro sistema.
-
-Ejemplos :
-
-- `DatabaseUserProvider` proporciona información para un usuario interno
-- `LdapUserProvider` para un usuario LDAP
-- `ReverseProxyUserProvider` para un usuario Reverse-Proxy
-- `GoogleUserProvider` represtan un usuario de Google
-
-Los métodos para la interface del proveedor de Usuario:
-
-- `isUserCreationAllowed()`: Regresa true para permitir la creación automática de usuarios
-- `getExternalIdColumn()`: Obtener Identificación del nombre de la columna externa (google_id, github_id, gitlab_id...)
-- `getInternalId()`: Obtener el id interno de la base de datos
-- `getExternalId()`: Obtener el id externo(Unique id)
-- `getRole()`: Obtener el rol de usuario
-- `getUsername()`: Obtener en nombre de usuario ** username **
-- `getName()`: Obtener nombre completo del usuario
-- `getEmail()`: Obtener el correo electronico del usuario
-- `getExternalGroupIds()`: Obtiene los ids externos del grupo, automáticamente sincroniza la membresia del grupo y la presenta
-- `getExtraAttributes()`: Obtiene los atributos extras para ser mostrados a el usuario durante la sincronización local
-
-No es obligatorio que el metodo devuelva un valor.
-
-Sincronización de un usuario local
-----------------------------------
-
-La información del usuario puede ser sincronizada automáticamente con la base de datos local.
-
-- Si el metodo`getInternalId()` regresa un valor no realiza la sincronización
-- Los metodos `getExternalIdColumn()` y `getExternalId()` debe regresar un valor para sincronizar el usuario
-- Las propiedades que regresan un ** String ** vacios no se sincronizan
diff --git a/doc/es_ES/plugin-authentication.markdown b/doc/es_ES/plugin-authentication.markdown
deleted file mode 100644
index 05742156..00000000
--- a/doc/es_ES/plugin-authentication.markdown
+++ /dev/null
@@ -1,42 +0,0 @@
-Plugin de autenticación
-=====================
-
-EL nuevo backend de autenticación se puede escribir con muy pocas lineas de codigo.
-
-Registro de proveedores
------------------------
-
-En el metodo `initialize()` nuestro plugin, llama al metodo `register()` de la clase `AuthenticationManager`:
-
-```php
-public function initialize()
-{
- $this->authenticationManager->register(new ReverseProxyLdapAuth($this->container));
-}
-```
-
-El objeto proveniente de el metodo `register()` debe implementar one de las interfaces de autenticación predefidas.
-
-Esas interfaces estan definidas en los namespace `Kanboard\Core\Security`:
-
-- `Kanboard\Core\Security\PreAuthenticationProviderInterface`
-- `Kanboard\Core\Security\PostAuthenticationProviderInterface`
-- `Kanboard\Core\Security\PasswordAuthenticationProviderInterface`
-- `Kanboard\Core\Security\OAuthAuthenticationProviderInterface`
-
-
-
-El único requisito es implementar las interfaces, la clase se puede escribir de la manera deseada y situado en cualquier lugar en el disco
-
-Usuario del proveedor
-----------------------
-
-Cuando la autenticación es satisfactoria, tu driver debe regresar un objato que representa al usuario.
-Este objeto debe implementasr la interface `Kanboard\Core\User\UserProviderInterface`.
-
-Ejemplo de plugin de autenticación
-----------------------------------
-
-- [Autenticación de proveedores incluido en kanboard](https://github.com/kanboard/kanboard/tree/master/app/Auth)
-- [Reverse-Proxy Autenticación con soporte LDAP](https://github.com/kanboard/plugin-reverse-proxy-ldap)
-- [Two-Factor Autenticación SMS](https://github.com/kanboard/plugin-sms-2fa)
diff --git a/doc/es_ES/plugin-authorization-architecture.markdown b/doc/es_ES/plugin-authorization-architecture.markdown
deleted file mode 100644
index 769adcf8..00000000
--- a/doc/es_ES/plugin-authorization-architecture.markdown
+++ /dev/null
@@ -1,39 +0,0 @@
-Arquitecuta de autorización
-===========================
-
-Kanboard [soporta multiples roles](roles.markdown) a nivel de aplicación y a nivel de proyecto.
-
-Workflow de autorización
---------------------------
-
-Para cada solicitud HTTP:
-
-1. Autorizar o no el acceso a los recursos en base a la lista de acceso a las aplicaciones
-2. Si el recurso es para un projecto (board, tarea...):
- 1. Extrae los roles de usuario para este proyecto
- 2. Permitir/Denegar accesos basados en el mapa de acceso del proyecto
-
-Extendiendo mapa de accesos
----------------------------
-
-Lista de accesos (ACL) se basa en el nombre de clase del controlador y el nombre del método
-La lista de acceso está a cargo de la clase `Kanboard\Core\Security\AccessMap`.
-
-Hay dos mapa de acceso: una para la aplicación y la otra para un proyecto.
-
-- Acceso al mapa de aplicación : `$this->applicationAccessMap`
-- Acceso al mapa del proyecto: `$this->projectAccessMap`
-
-Ejemplos para definir una nueva política para tu plugin:
-
-```php
-// Todos los metodos de la clase MyController:
-$this->projectAccessMap->add('MyController', '*', Role::PROJECT_MANAGER);
-
-// Todos los metodos:
-$this->projectAccessMap->add('MyOtherController', array('create', 'save'), Role::PROJECT_MEMBER);
-```
-
-Los roles estan defidos en la clase `Kanboard\Core\Security\Role`.
-
-Clase de autorización (`Kanboard\Core\Security\Authorization`) comprobará el acceso de cada página.
diff --git a/doc/es_ES/plugin-automatic-actions.markdown b/doc/es_ES/plugin-automatic-actions.markdown
deleted file mode 100644
index 27effaad..00000000
--- a/doc/es_ES/plugin-automatic-actions.markdown
+++ /dev/null
@@ -1,61 +0,0 @@
-Agregando acciones automáticas
-===============================
-
-Agregando una nueva acccion automática es bastante simple.
-
-Creando una nueva accion
-------------------------
-
-Tus acciones automáticas deben heradarse de la clase `Kanboard\Action\Base`.
-
-Varios métodos abstractos deben ser implementadas por sí mismo:
-
-| Metodos | Descripción |
-|-------------------------------------|------------------------------------------------------------------|
-| `getDescription()` | Descripcion visible en la interface del usuario |
-| `getCompatibleEvents()` | Obtener las listas de eventos compatibles |
-| `getActionRequiredParameters()` | Obtener los parametros requeridos para la acción (definidos por el usuario)|
-| `getEventRequiredParameters()` | Obtener los parametros requeridos para el evento |
-| `doAction(array $data)` | Ejecutar la acción, Debe regresar true si fue satisfactorio |
-| `hasRequiredCondition(array $data)` | Comprobar si los datos de eventos cumplen la condición de acción |
-
-Tu accion automatica es identificada en kanboard utilizando el nombre de la clase absoluta con el espacio de nombre incluido
-
-Agregando nuevos eventos
-------------------------
-
-La lista de eventos de la aplicación está disponible en la clase `Kanboard\Core\Event\EventManager::getAll()`.
-Sin embargo, si tu plugin dispara nuevos eventos, tu puedes registrar estos eventos :
-
-```php
-$this->actionManager->getAction('\Kanboard\Plugin\MyPlugin\MyActionName')->addEvent('my.event', 'My event description');
-```
-
-Tu puedes extender la lista de eventos compatibles de acciones existentes para ser usada en algun metodo.
-
-Registra la acción
-----------------------
-
-Tu tienes que llamar el metodo `register()` desde la clase `Kanboard\Core\Action\ActionManager`:
-
-```php
-<?php
-
-namespace Kanboard\Plugin\AutomaticAction;
-
-use Kanboard\Core\Plugin\Base;
-use Kanboard\Plugin\AutomaticAction\Action\TaskRename;
-
-class Plugin extends Base
-{
- public function initialize()
- {
- $this->actionManager->register(new TaskRename($this->container));
- }
-}
-```
-
-Ejemplo
--------
-
-- [Ejemplo de acción automatica](https://github.com/kanboard/plugin-example-automatic-action)
diff --git a/doc/es_ES/plugin-avatar-provider.markdown b/doc/es_ES/plugin-avatar-provider.markdown
deleted file mode 100644
index 2cce0647..00000000
--- a/doc/es_ES/plugin-avatar-provider.markdown
+++ /dev/null
@@ -1,32 +0,0 @@
-Agregando un nuevo avatar del proveedor
-=======================================
-
-Registrar
-------------
-
-```php
-$this->avatarManager->register(new CustomAvatarProvider());
-```
-
-Interface
----------
-
-El proveedor debe implementar la interface `Kanboard\Core\User\Avatar\AvatarProviderInterface`:
-
-
-| Metodo | Descripcion |
-|-------------------------------|---------------------------------------------------------------|
-| `render(array $user, $size)` | Renderizar HTML |
-| `isActive(array $user)` | Regresa un boolean si el proveedor esta activo |
-
-
-El argumento `$user` es un directorio que contiene estas llaves :
-
-```php
-[
- 'id' => 123,
- 'username' => 'admin',
- 'name' => 'Administrator',
- 'email' => 'me@localhost',
-]
-```
diff --git a/doc/es_ES/plugin-directory.markdown b/doc/es_ES/plugin-directory.markdown
deleted file mode 100644
index 0742b992..00000000
--- a/doc/es_ES/plugin-directory.markdown
+++ /dev/null
@@ -1,15 +0,0 @@
-Plugin de configuración del directorio
-======================================
-
-Para instalar, actualizar y eliminar plugins dede la interface de usuario, debes tener estos requerimientos:
-
-- El directorio del plugin debe ser de escritura por el usuario del servidor web
-- La extensión Zip debe estar disponible en tu server.
-- Los parametros de configuración `PLUGIN_INSTALLER` deben estar en `true`
-
-Para desactivar esta función , cambie el valor de `PLUGIN_INSTALLER` a `false` en tu archivo de configuración.
-También puede cambiar los permisos de la carpeta Plugin en el filesystem.
-
-Sólo los administradores pueden instalar plugins desde la interfaz de usuario.
-
-Por defecto, sólo plug-in que aparece en la página web de Kanboard están disponibles .
diff --git a/doc/es_ES/plugin-events.markdown b/doc/es_ES/plugin-events.markdown
deleted file mode 100644
index ebb9066b..00000000
--- a/doc/es_ES/plugin-events.markdown
+++ /dev/null
@@ -1,27 +0,0 @@
-Uso de eventos
-===============
-
-Kanboard usar internamente el [ Componente EventDispatcher de Symfony ](https://symfony.com/doc/2.3/components/event_dispatcher/index.html) para manegar internamente los eventos.
-
-Eventos escucha ** Listening **
--------------------------------
-
-```php
-$this->on('app.bootstrap', function($container) {
- // tu codigo
-});
-```
-
-- El primer argumento es el nombre del evento (string)
-- El segundo argumento es una funcion PHP callable (finalización o metodos de la clase)
-
-Agregando un nuevo evento
--------------------------
-
-Para agregar un nuevo, tienes que llamar al metodo `register()` de la clase `Kanboard\Core\Event\EventManager`:
-
-```php
-$this->eventManager->register('my.event.name', 'Mi descripcion del nuevo evento');
-```
-
-Estos eventos pueden ser utilizados por otros componentes de Kanboard como acciones automáticas .
diff --git a/doc/es_ES/plugin-external-link.markdown b/doc/es_ES/plugin-external-link.markdown
deleted file mode 100644
index 969c430c..00000000
--- a/doc/es_ES/plugin-external-link.markdown
+++ /dev/null
@@ -1,79 +0,0 @@
-Vinculación externa de proveedores
-==================================
-
-Esta funcionalidad le permite vincular una tarea a los elementos adicionales almacenados en otro sistema.
-
-Por ejemplo, tu puedes vincular una tarea a:
-For example, you can link a task to:
-
-- Una pagina web tradicional
-- Datos adjuntos (Documentos PDF almacenados en la web, archivos ...)
-- Cualquier sitema de tickets (bug tracker, soporte personalizado de tickets...)
-
-Cada item tiene un tipo, u na URL, un tipo dedependencia y un titulo.
-
-Por default,Kanboard incluye dos tipos de proveedores
-
-- Vinculación Web : Copiar y pegar un enlace y Kanboard se ha podido ir a la página de título de forma automática.
-- Datos adjuntos: Enlace a todo lo que no es una página web
-
-Flujo de trabajo ** Workflow **
---------------------------------
-
-1. El usuario final copia y pega el URL al submit del formulario.
-2.- Si el tipo de link es "auto", Kanboard crea un bucle a través de todos los proveedores registrados hasta que hay una coincidencia
-3. Entonces , el proveedor de enlace devuelve un objeto que implementa la interfaz de `ExternalLinkInterface`
-4. El formulario se muestra al usuario con todos los datos precargados antes de guardar el enlace
-
-Interfaces
-----------
-
-Para implementar un nuevo vinculo al proveedor desde un plugin, es necesario crear 2 clases que implementarlas en las interfaces:
-
-- `Kanboard\Core\ExternalLink\ExternalLinkProviderInterface`
-- `Kanboard\Core\ExternalLink\ExternalLinkInterface`
-
-### ExternalLinkProviderInterface
-
-| Method | Usage |
-|----------------------------|---------------------------------------------------------------------------------|
-| `getName()` | Obtener el nombre del proveedor(label) |
-| `getType()` | Obtener el tipo de link (se guardarán en la base de datos) |
-| `getDependencies()` | Obtener un diccionario de los tipos de dependencia soportados por el proveedor |
-| `setUserTextInput($input)` | Texto introducido por el usuario |
-| `match()` | Regresa true si el proveedor puede analizar correctamente la entrada del usuario|
-| `getLink()` | Obtener el enlace que se encuentra con las propiedades |
-
-### ExternalLinkInterface
-
-| Method | Usage |
-|-------------------|-----------------------------|
-| `getTitle()` | Obtiene un titulo de link |
-| `getUrl()` | Obtiene una link de URL |
-| `setUrl($url)` | URL del enlace |
-
-El registro de un nuevo proveedor de enlace
-------------------------------------------
-
-En tu `Plugin.php`, solo puedes llamar al metodo `register()` desde el objeto `ExternalLinkManager`:
-
-```php
-<?php
-
-namespace Kanboard\Plugin\MyExternalLink;
-
-use Kanboard\Core\Plugin\Base;
-
-class Plugin extends Base
-{
- public function initialize()
- {
- $this->externalLinkManager->register(new MyLinkProvider());
- }
-}
-```
-
-Ejemplos
---------
-
-- Kanboard incluye proveedores por default "WebLink" y "Attachment"
diff --git a/doc/es_ES/plugin-group-provider.markdown b/doc/es_ES/plugin-group-provider.markdown
deleted file mode 100644
index ac7d0d71..00000000
--- a/doc/es_ES/plugin-group-provider.markdown
+++ /dev/null
@@ -1,54 +0,0 @@
-Personalizar grupos de proveedores
-==================================
-
-Kanboard es capaz de cargar grupos de un sistema externo.
-Esta caracteristica es principalmente usada para permisos de proyectos.
-
-Los **Projects Managers** pueden permitir el acceso a un proyecto para un grupo
-El usuario final **end-user** utilizara una caja de autocomplementar y busquedas para un grupo
-
-Cada vez que se ejecuta una consulta de grupo , todos los proveedores de grupo registrados se ejecutan .
-
-Flujo de trabajo del Grupo de Proveedores **Workflow**
------------------------------------------------------
-
-1. El usuario final **end-user** comienza a escribir el nombre del grupo y el campo se autocompleta
-2. EL `GroupManager` la clase ejecuta la consulta para todos los proveedores de grupo registrados
-3. Los resultados son fusionados y regresados a la interface de usuario
-4. Antes de seleccionar un grupo, a información del grupo se sincronizan con la base de datos local si es necesario
-
-Interface del grupo de proveedores
-----------------------------------
-
-interface a implementar: `Kanboard\Core\Group\GroupProviderInterface`.
-
-Las clases que implementa esta interface abstracta del grupo de información, solo hay 3 metodos:
-
-- `getInternalId()`: Obtiene el id interno de la base de datos, de otra manera regresa 0
-- `getExternalId()`: Obtiene un id unico externo
-- `getName()`: Obtiene el nombre de grupo
-
-Kanboard utilizará el ID externo para sincronizar con la base de datos local.
-
-Interface Backend del grupo de proveedores
-------------------------------------------
-Interface a implementar: `Kanboard\Core\Group\GroupBackendProviderInterface`.
-
-Esta interface requiere solo un metodo: `find($input)`.
-El argumento `$input` es el texto introducido desde la interfaz de usuario.
-
-Este metodo debe regresar una lista de `GroupProviderInterface`, es es el resultado de la busqueda.
-
-Backend de registro desde Plugins
----------------------------------
-
-En el metodo `initialize()` de su plugins registrado se puede personalizar el backend :
-
-```php
-$groupManager->register(new MyCustomLdapBackendGroupProvider($this->container));
-```
-
-Ejemplos
---------
-
-- [Kanboard incluye el grupo de provedores (LDAP y base de datos)](https://github.com/kanboard/kanboard/tree/master/app/Group)
diff --git a/doc/es_ES/plugin-helpers.markdown b/doc/es_ES/plugin-helpers.markdown
deleted file mode 100644
index 66591075..00000000
--- a/doc/es_ES/plugin-helpers.markdown
+++ /dev/null
@@ -1,39 +0,0 @@
-Registrar nuevos helpers
-=======================
-
-Estrucura del helper:
-
-```php
-<?php
-
-namespace Kanboard\Plugin\MyPlugin\Helper\MyHelper;
-
-use Kanboard\Core\Base;
-
-class MyHelper extends Base
-{
- public function doSomething()
- {
- return 'foobar';
- }
-}
-```
-Registrar tu helper en la clase:
-
-```php
-$this->helper->register('myHelper', '\Kanboard\Plugin\MyPlugin\Helper\MyHelper');
-```
-
-Usar tu helper desde una plantilla **Template**:
-
-```php
-<p>
- <?= $this->myHelper->doSomething() ?>
-</p>
-```
-
-Usar tu helper dese otra clase:
-
-```php
-$this->helper->myHelper->doSomething();
-```
diff --git a/doc/es_ES/plugin-hooks.markdown b/doc/es_ES/plugin-hooks.markdown
deleted file mode 100644
index 9d842645..00000000
--- a/doc/es_ES/plugin-hooks.markdown
+++ /dev/null
@@ -1,249 +0,0 @@
-Plugin Hooks
-============
-
-Hooks de aplicación
------------------
-
-Los hooks pueden extender , reemplazar, filtar datos o cambiar los comportamientos por default, cad hook es identificado con unico nombre, ejemplo : `controller:calendar:user:events`
-
-### Escuchar en eventos hook
-
-En tu metodo `initialize()` tu necesitas llamar al metodo `on()` de la clase `Kanboard\Core\Plugin\Hook`:
-
-```php
-$this->hook->on('hook_name', $callable);
-```
-
-El primer argumento es el nombre del hook y el segundo es un callable PHP
-
-### Hooks ejecutado sólo una vez
-
-Algunos hooks solo tienen un listener:
-
-#### model:subtask-time-tracking:calculate:time-spent
-
-- Anular el cálculo del tiempo anterior cuando se detiene el temporizador de la subtarea
-- Argumentos :
- - `$user_id` (integer)
- - `$start` (DateTime)
- - `$end` (DateTime)
-
-### Fusionar hooks
-
-"Fusionar hooks" actuar de la misma manera que la función de `array_merge`. el hook callback solo regresa un array. Este array se fusionará con la que viene por defecto.
-
-Ejemplo para agregar eventos en el calendario del usuario:
-
-```php
-class Plugin extends Base
-{
- public function initialize()
- {
- $container = $this->container;
-
- $this->hook->on('controller:calendar:user:events', function($user_id, $start, $end) use ($container) {
- $model = new SubtaskForecast($container);
- return $model->getCalendarEvents($user_id, $end); // Return new events
- });
- }
-}
-```
-
-Ejemplo para sobrescribir los valores por default de las tareas:
-
-```php
-class Plugin extends Base
-{
- public function initialize()
- {
- $this->hook->on('controller:task:form:default', function (array $default_values) {
- return empty($default_values['score']) ? array('score' => 4) : array();
- });
- }
-}
-```
-
-Lista de fusión de hooks:
-
-`controller:task:form:default`
-
-- sobrescribir los valores por default de las tareas
-- Argumentos:
- - `$default_values`: actual default values (array)
-
-`controller:calendar:project:events`
-
-- Agregar mas eventos a el calendario del projecto
-- Argumentos:
- - `$project_id` (integer)
- - `$start` Calendar start date (string, ISO-8601 format)
- - `$end` Calendar` end date (string, ISO-8601 format)
-
-`controller:calendar:user:events`
-
-- Agregar mas eventos a el calendario de usuario
-- Argumentos:
- - `$user_id` (integer)
- - `$start` Calendar start date (string, ISO-8601 format)
- - `$end` Calendar end date (string, ISO-8601 format)
-
-Asset Hooks
------------
-
-Asset hooks pueden ser usados para agregar nuevas stylesheet facilmente o un nuevo archivo JavaScript en el layout. tu puedes usar estas caracteristicas para crear un tema y sobreescribir todo los estilos por dafault del kanboard.
-
-Ejemplo para agregar un stylesheet **hoja de estilo**
-
-```php
-<?php
-
-namespace Kanboard\Plugin\Css;
-
-use Kanboard\Core\Plugin\Base;
-
-class Plugin extends Base
-{
- public function initialize()
- {
- $this->hook->on('template:layout:css', array('template' => 'plugins/Css/skin.css'));
- }
-}
-```
-
-Lista de asset Hooks:
-
-- `template:layout:css`
-- `template:layout:js`
-
-
-Referencia de hooks
----------------
-
-La reference hooks son pasados a una variable por referencia.
-
-Ejemplo:
-
-```php
-$this->hook->on('formatter:board:query', function (\PicoDb\Table &query) {
- $query->eq('color_id', 'red');
-});
-```
-
-El código anterior mostrará sólo las tareas en rojo en el tablero.
-
-Lista de referencias de hooks:
-
-| Hook | Description |
-|--------------------------------------------|---------------------------------------------------------------|
-| `formatter:board:query` | Alterar consulta a la base antes de tablero de renderizado |
-| `pagination:dashboard:task:query` | Alterar consulta de base de datos para las tareas de la paginación en el dashboard |
-| `pagination:dashboard:subtask:query` | Alterar consulta a la base de la paginación en el subtareas del dashboard |
-| `model:task:creation:prepare` | Alterar los valores del formulario antes de guardar una tarea |
-| `model:task:modification:prepare` | Alterar los valores del formulario antes de editar una tarea
-
-Template Hooks
---------------
-
-Template hooks permitirá añadir nuevos contenidos en las plantillas existentes.
-
-Ejemplo para agregar nuevos contenidos en el sidebar del dashboard:
-
-```php
-$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar');
-```
-
-Ejemplo para adjuntar un template con variables locales:
-
-```php
-$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', array(
- 'variable' => 'foobar',
-));
-```
-
-Ejemplo para adjuntar un template con un callable:
-
-```php
-$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', function($hook_param1, $hook_param2) {
- return array('new_template_variable' => 'foobar'); // Inyectar una nueva variable en la plantilla Plugin
-});
-```
-
-Este llamada es usualmente definida en el metodo `initialize()`
-El primer argumento es el nombre del hook y el segundo argumento es el nombre del template.
-
-Los nombres de plantillas con el prefijo del nombre del plugin y los dos puntos indican la ubicación de la plantilla.
-
-Ejemplo con `myplugin:dashboard/sidebar`:
-
-- `myplugin` Es el nombre de tu plugin (minusculas)
-- `dashboard/sidebar` es el nombre del template
-- En el filesystem, El plugin esta localizado aqui: `plugins\Myplugin\Template\dashboard\sidebar.php`
-- Templates estan escritos en puro PHP (no se olvide de escapar los datos)
-
-Los nombres de plantillas sin prefijo son plantillas básicas.
-
-Lista de templates hooks:
-
-| Hook | Descripción |
-|--------------------------------------------|----------------------------------------------------|
-| `template:analytic:sidebar` | Sidebar en paginas analiticas |
-| `template:app:filters-helper:before` | Filtro helper dropdown (top) |
-| `template:app:filters-helper:after` | Filtro helper dropdown (bottom) |
-| `template:auth:login-form:before` | Pagina de login (top) |
-| `template:auth:login-form:after` | Pagina de login (bottom) |
-| `template:board:private:task:before-title` | Tarea en un tablero privado : despues del titulo |
-| `template:board:private:task:after-title` | Tarea en un tablero privado : antes del titulo |
-| `template:board:public:task:before-title` | Tarea en un tablero publico : despues del titulo |
-| `template:board:public:task:after-title` | Tarea en un tablero publico : antes del titulo |
-| `template:board:task:footer` | Tarea en el tablero : footer |
-| `template:board:task:icons` | Tarea en el tablero: tooltip icon |
-| `template:board:column:dropdown` | Menu Dropdown en las columnas del tablero |
-| `template:config:sidebar` | Sidebar pagina de configuración |
-| `template:config:application ` | Aplicación de configuración del formulario |
-| `template:config:email` | Email settings page |
-| `template:config:integrations` | Integration page in global settings |
-| `template:dashboard:sidebar` | Sidebar en la pagina del dashboard |
-| `template:dashboard:show` | Pagina principal del dashboard |
-| `template:export:sidebar` | Sidebar para exportar paginas |
-| `template:import:sidebar` | Sidebar para importar paginas |
-| `template:header:dropdown` | Dropdown menu Pagina header (icono avatar de usuario) |
-| `template:header:creation-dropdown` | Dropdown menu Pagina header (plus icon) |
-| `template:layout:head` | Layout de la pagina `<head/>` tag |
-| `template:layout:top` | Layout de la pagina top header |
-| `template:layout:bottom` | Layout de la pagina footer |
-| `template:project:dropdown` | "Actions" menu a la izquierda vista para diferentes proyectos |
-| `template:project:header:before` | Filtros de Proyectos (antes) |
-| `template:project:header:after` | Filtros de Proyectos (despues) |
-| `template:project:integrations` | Pagina de integracion de configuración de proyectos|
-| `template:project:sidebar` | Sidebar configuración de proyectos |
-| `template:project-user:sidebar` | Sidebar en la página de la información de usuario del proyecto |
-| `template:task:layout:top` | Task layout top (antes page header) |
-| `template:task:details:top` | Resumen de tarea top |
-| `template:task:details:bottom` | Resumen de tarea bottom |
-| `template:task:details:first-column` | Resumen de tarea columna |
-| `template:task:details:second-column` | Resumen de tarea dos columnas |
-| `template:task:details:third-column` | Resumen de tarea tres columnas |
-| `template:task:details:fourth-column` | Resumen de tarea cuatro columnas |
-| `template:task:dropdown` | Task dropdown menu en listado de paginas |
-| `template:task:sidebar:actions` | Sidebar on task page (sección de acciones) |
-| `template:task:sidebar:information` | Sidebar on task page (sección de información) |
-| `template:task:form:first-column` | 1st columna en forma de tarea |
-| `template:task:form:second-column` | 2nd columna en forma de tarea |
-| `template:task:form:third-column` | 3nd columna en forma de tarea |
-| `template:task:show:top ` | Mostrar página de tareas : top |
-| `template:task:show:bottom` | Mostrar página de tareas : bottom |
-| `template:task:show:before-description` | Mostrar página de tareas : despues de la descripción |
-| `template:task:show:before-tasklinks` | Mostrar página de tareas : despues tasklinks |
-| `template:task:show:before-subtasks` | Mostrar página de tareas : despues subtareas |
-| `template:task:show:before-timetracking` | Mostrar página de tareas : despues timetracking |
-| `template:task:show:before-attachments` | Mostrar página de tareas : despues archivos adjuntos |
-| `template:task:show:before-comments` | Mostrar página de tareas : despues comentarios |
-| `template:user:authentication:form` | "Editar autenticación" formulario de perfil de usuario |
-| `template:user:create-remote:form` | "Crear un usuario remoto" formulario |
-| `template:user:external` | "Autenticación externa" la página de perfil de usuario |
-| `template:user:integrations` | Integración en el perfil de usuario |
-| `template:user:sidebar:actions` | Sidebar en el perfil de usuario (sección de acciones) |
-| `template:user:sidebar:information` | Sidebar en el perfil de usuario (sección de información) |
-
-
-Otro de los ganchos plantilla se pueden añadir en caso necesario , sólo hay que preguntar en el seguimiento de incidencias ** issue tracking **.
diff --git a/doc/es_ES/plugin-ldap-client.markdown b/doc/es_ES/plugin-ldap-client.markdown
deleted file mode 100644
index 1a34a880..00000000
--- a/doc/es_ES/plugin-ldap-client.markdown
+++ /dev/null
@@ -1,99 +0,0 @@
-Libreria LDAP
-============
-
-Para facilirar la integracion LDAP. kanboard tiene su propia libreria LDAP
-Esta libreria puede ejecutar operaciones comunes.
-
-Cliente
--------
-
-Clase: `Kanboard\Core\Ldap\Client`
-
-Para conectar a tu servidor LDAP facilmente, usa este metodo:
-
-```php
-use Kanboard\Core\Ldap\Client as LdapClient;
-use Kanboard\Core\Ldap\ClientException as LdapException;
-
-try {
- $client = LdapClient::connect();
-
- // Get native LDAP resource
- $resource = $client->getConnection();
-
- // ...
-
-} catch (LdapException $e) {
- // ...
-}
-```
-
-Consultas LDAP
---------------
-
-Classes:
-
-- `Kanboard\Core\Ldap\Query`
-- `Kanboard\Core\Ldap\Entries`
-- `Kanboard\Core\Ldap\Entry`
-
-Ejemplo para una consulta al directorio LDAP:
-
-```php
-
-$query = new Query($client)
-$query->execute('ou=People,dc=kanboard,dc=local', 'uid=my_user', array('cn', 'mail'));
-
-if ($query->hasResult()) {
- $entries = $query->getEntries(); // Return an instance of Entries
-}
-```
-
-Leer una entrada:
-
-```php
-$firstEntry = $query->getEntries()->getFirstEntry();
-$email = $firstEntry->getFirstValue('mail');
-$name = $firstEntry->getFirstValue('cn', 'Default Name');
-```
-
-Leer multiples entradas:
-
-```php
-foreach ($query->getEntries()->getAll() as $entry) {
- $emails = $entry->getAll('mail'); // Fetch all emails
- $dn = $entry->getDn(); // Get LDAP DN of this user
-
- // Check if a value is present for an attribute
- if ($entry->hasValue('mail', 'user2@localhost')) {
- // ...
- }
-}
-```
-
-Usuario Helper
---------------
-
-Clase: `Kanboard\Core\Ldap\User`
-
-Obtener usuario en una sola linea
-
-```php
-// Return an instance of LdapUserProvider
-$user = User::getUser($client, 'my_username');
-```
-
-Grupo Helper
-------------
-
-Clase: `Kanboard\Core\Ldap\Group`
-
-Obtener grupos en una linea:
-
-```php
-// Define LDAP filter
-$filter = '(&(objectClass=group)(sAMAccountName=My group*))';
-
-// Return a list of LdapGroupProvider
-$groups = Group::getGroups($client, $filter);
-```
diff --git a/doc/es_ES/plugin-mail-transports.markdown b/doc/es_ES/plugin-mail-transports.markdown
deleted file mode 100644
index 3d3eecd9..00000000
--- a/doc/es_ES/plugin-mail-transports.markdown
+++ /dev/null
@@ -1,49 +0,0 @@
-Plugin: Agregar trasporte de email
-==================================
-
-Por default Kanboard soporta 3 estadares de trasporte de email:
-
-- Mail (PHP mail function)
-- Smtp
-- Sendmail command
-
-Con la API del plugin tu puedes agregar un driver para cualquier proveedor de email.
-Por ejemplo, nuestro plugin puede agregar un trasporte de email para un proveedor que usa un API HTTP.
-
-Implementación
---------------
-
-Nuestro plugin dede implementgar la interface `Kanboard\Core\Mail\ClientInterface` y extiende desde `Kanboard\Core\Base`.
-El único método que necesita para implementar es `sendEmail()`:
-
-```php
-interface ClientInterface
-{
- /**
- * Send a HTML email
- *
- * @access public
- * @param string $email
- * @param string $name
- * @param string $subject
- * @param string $html
- * @param string $author
- */
- public function sendEmail($email, $name, $subject, $html, $author);
-}
-```
-
-Para registrar el nuevo trasporte de email, usa el metodo `setTransport($transport, $class)` desde la clase `Kanboard\Core\Mail\Client`:
-
-```php
-$this->emailClient->setTransport('myprovider', '\Kanboard\Plugin\MyProvider\MyEmailHandler');
-```
-
-EL segundo argumento contiene el absoluto namespace de tu clase especifica
-
-Ejemplos de plugins para trasporte de email
-----------------------------------
-
-- [Sendgrid](https://github.com/kanboard/plugin-sendgrid)
-- [Mailgun](https://github.com/kanboard/plugin-mailgun)
-- [Postmark](https://github.com/kanboard/plugin-postmark)
diff --git a/doc/es_ES/plugin-metadata.markdown b/doc/es_ES/plugin-metadata.markdown
deleted file mode 100644
index f37ec7e3..00000000
--- a/doc/es_ES/plugin-metadata.markdown
+++ /dev/null
@@ -1,42 +0,0 @@
-Metadatos
-=========
-
-Tu piedes adjutnar metadatos para cada projecto,tarea , usuaio o para toda la aplicación
-Los metadatos son campos personalisados, es una key/value de una tabla.
-
-Por ejemplo nuestro plugin puede almacenar información externa para una tarea o nuevas configuraciones para un proyecto.
-Básicamente le permiten ampliar los campos predeterminados sin tener que crear nuevas tablas .
-
-Adjuntar y eliminar metadatos para tareas
---------------------------------------------
-
-```php
-
-// Return a dictionary of metadata (keys/values) for the $task_id
-$this->taskMetadataModel->getAll($task_id);
-
-// Get a value only for a task
-$this->taskMetadataModel->get($task_id, 'my_plugin_variable', 'default_value');
-
-// Return true if the metadata my_plugin_variable exists
-$this->taskMetadataModel->exists($task_id, 'my_plugin_variable');
-
-// Create or update metadata for the task
-$this->taskMetadataModel->save($task_id, ['my_plugin_variable' => 'something']);
-
-// Remove a metadata from a project
-$this->projectMetadataModel->remove($project_id, my_plugin_variable);
-```
-
-Tipos de metadatos
-------------------
-
-- TaskMetadata: `$this->taskMetadataModel`
-- ProjectMetadata: `$this->projectMetadataModel`
-- UserMetadata: `$this->userMetadataModel`
-- Settings/Config: `$this->configModel`
-
-Notas
------
-
-- Siempre prefijo del nombre de metadatos con el nombre del plugin
diff --git a/doc/es_ES/plugin-notifications.markdown b/doc/es_ES/plugin-notifications.markdown
deleted file mode 100644
index e014cf63..00000000
--- a/doc/es_ES/plugin-notifications.markdown
+++ /dev/null
@@ -1,59 +0,0 @@
-Agregar notificaciones con los tipos de plugin
-==============================================
-
-Puede enviar notificaciones a casi cualquier sistema mediante la adición de un nuevo tipo .
-There are two kinds of notifications: project and user.
-
-- Project: Notificaciones configuradas a nivel de proyecto
-- Usuario: Notificaciones enviadas individualmente y configurada a cada perfil de usuario.
-
-Registra un nuevo tipo de notificación
---------------------------------------
-
-En tu archivo de registro del plugin llama el metodo `setType()`:
-
-```php
-$this->userNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC\Notification\IrcHandler');
-$this->projectNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC\Notification\IrcHandler');
-```
-
-Su controlador puede ser registrado por el usuario o la notificación del proyecto. No necesariamente tienen que soportarlo .
-Cuando tu handler es registrdo, el usuario final **end-user** puede elegir recibir el nuevo tipo de notificación o no
-
-Notificación de Handler
------------------------
-
-Su controlador de notificación debe implementar la interfaz `Kanboard\Core\Notification\NotificationInterface`:
-
-```php
-interface NotificationInterface
-{
- /**
- * Envia notificación a un usuario
- *
- * @access public
- * @param array $user
- * @param string $event_name
- * @param array $event_data
- */
- public function notifyUser(array $user, $event_name, array $event_data);
-
- /**
- * Envia notificacion a un projecto
- *
- * @access public
- * @param array $project
- * @param string $event_name
- * @param array $event_data
- */
- public function notifyProject(array $project, $event_name, array $event_data);
-}
-```
-
-Ejemplo de notificacion de plugins
----------------------------------
-
-- [Slack](https://github.com/kanboard/plugin-slack)
-- [Hipchat](https://github.com/kanboard/plugin-hipchat)
-- [Jabber](https://github.com/kanboard/plugin-jabber)
-
diff --git a/doc/es_ES/plugin-overrides.markdown b/doc/es_ES/plugin-overrides.markdown
deleted file mode 100644
index a416d161..00000000
--- a/doc/es_ES/plugin-overrides.markdown
+++ /dev/null
@@ -1,42 +0,0 @@
-Plugin Reescritura
-================
-
-Reesritura HTTP Contenido Política de Seguridad
------------------------------------------------
-
-Si desea reemplazar el encabezado HTTP predeterminado de la directiva de seguridad del contenido, puede utilizar el método`setContentSecurityPolicy()`:
-
-```php
-<?php
-
-namespace Kanboard\Plugin\Csp;
-
-use Kanboard\Core\Plugin\Base;
-
-class Plugin extends Base
-{
- public function initialize()
- {
- $this->setContentSecurityPolicy(array('script-src' => 'something'));
- }
-}
-```
-
-Plantillas de reescrituras
---------------------------
-
-Las plantillas definidas en el núcleo se pueden anular . Por ejemplo , se puede redefinir el diseño predeterminado o cambiar notificaciones por correo electrónico.
-
-Ejemolo de plantilla de reescritura:
-
-```php
-$this->template->setTemplateOverride('header', 'theme:layout/header');
-```
-
-El primer argumento es el nombre de la plantilla original y el segundo argumento de la plantilla para usar como reemplazo.
-
-Puede seguir utilizando la plantilla original utilizando el prefijo "kanboard:" :
-
-```php
-<?= $this->render('kanboard:header') ?>
-```
diff --git a/doc/es_ES/plugin-registration.markdown b/doc/es_ES/plugin-registration.markdown
deleted file mode 100644
index 5031427f..00000000
--- a/doc/es_ES/plugin-registration.markdown
+++ /dev/null
@@ -1,160 +0,0 @@
-Registracion de Plugin
-======================
-
-Estructura del directorio
---------------------------
-
-Los Plugins estan almacenados en el subdirectorio `plugins. Un ejemplo de estructura del directorio de un plugin:
-
-```bash
-plugins
-└── Budget <= Plugin name
- ├── Asset <= Javascript/CSS files
- ├── Controller
- ├── LICENSE <= Plugin license
- ├── Locale
- │ ├── fr_FR
- │   ├── it_IT
- │   ├── ja_JP
- │   └── zh_CN
- ├── Model
- ├── Plugin.php <= Plugin registration file
- ├── README.md
- ├── Schema <= Database migrations
- ├── Template
- └── Test <= Unit tests
-```
-
-Solamente el archivo de registración `Plugin.php` es requerido. Las otras carpetas son opcionales.
-
-La primera letra del nombre del plugin debe ser capitalizada.
-
-Archivo de registración del plugin
-----------------------------------
-
-Kanboard Kanboard escaneará el directorio `plugins` y cargara automaticamente todo en este directorio. el archivo `Plugin.php` se utiliza para cargar y registrar el plugin.
-
-Ejemplo del archivo `Plugin.php` (`plugins/Foobar/Plugin.php`):
-
-```php
-<?php
-
-namespace Kanboard\Plugin\Foobar;
-
-use Kanboard\Core\Plugin\Base;
-
-class Plugin extends Base
-{
- public function initialize()
- {
- $this->template->hook->attach('template:layout:head', 'theme:layout/head');
- }
-}
-```
-
-Este archivo debera contener una clase `Plugin` se define en el namespace `Kanboard\Plugin\Yourplugin` y extiende `Kanboard\Core\Plugin\Base`.
-
-El único método requerido es `initialize()`. Este método se llama para cada petición cuando el plugin es cargado.
-
-Metodos del plugin
---------------
-
-Los métodos disponibles son `Kanboard\Core\Plugin\Base`:
-
-- `initialize()`: ejecuta cuando el plugin es cargafo
-- `getClasses()`: Regresa todas las clases que se deben almacenar en el contenedor de inyección de dependencias
-- `on($event, $callback)`: Escucha eventos internos.
-- `getPluginName()`: devuelve el nombre del plugin.
-- `getPluginAuthor()`: Devuelve el autor del plugin.
-- `getPluginVersion()`: Devuelve la versíon del plugin.
-- `getPluginDescription()`: Devuelve la descripcion del plugin.
-- `getPluginHomepage()`: Devuelve la pagina inicial del plugin (link)
-- `setContentSecurityPolicy(array $rules)`: Reescribe las reglas por default del HTTP CSP.
-- `onStartup()`: Si está presente este método, se ejecuta automáticamente cuando el evento "app.bootstrap" se dispara.
-
-Su registro de plugin tambien puede heradar de la clase Kanboard\Core\Base, de esta manera se puede acceder a todas las clases y los métodos de Kanboard facilmente.
-
-En este ejemplo se obtendrá el usuario #123:
-
-```php
-$this->user->getById(123);
-```
-
-Plugin de traducción
--------------------
-
-Este plugin se puede traducir en la misma forma que el resto de la aplicación . Debe cargar las traducciones a sí mismo cuando se crea la sesión :
-
-```php
-public function onStartup()
-{
- Translator::load($this->languageModel->getCurrentLanguage(), __DIR__.'/Locale');
-}
-```
-
-Las traducciones deben ser almacenadas en el archivo `plugins/Myplugin/Locale/xx_XX/translations.php` (remplazar xx_XX por el codigo del lenguaje fr_FR, en_US...).
-
-Las traducciones estan almacenadas en un diccionario, Si desea sobreescribir una cadena existente, sólo tiene que utilizar la misma clave en el archivo de traducción.
-
-Inyección de dependencias de contenedores
-------------------------------
-Kanboard utiliza la Pimple , un simple inyección de contenedores de dependencia PHP . Sin embargo , Kanboard puede registrar cualquier clase en el contenedor fácilmente.
-
-Estas clases están disponibles en todas partes en la aplicación y se crea una única instancia .
-
-Aquí un ejemplo para registrar sus propios modelos en el contenedor:
-
-```php
-public function getClasses()
-{
- return array(
- 'Plugin\Budget\Model' => array(
- 'HourlyRateModel',
- 'BudgetModel',
- )
- );
-}
-```
-
-Ahora bien, si se utiliza una clase que se extiende desde `Core\Base`, tu puedes acceder directamente cualquier instancia de la clase:
-
-```php
-$this->hourlyRateModel->remove(123);
-$this->budgetModel->getDailyBudgetBreakdown(456);
-
-// It's the same thing as using the container:
-$this->container['hourlyRateModel']->getAll();
-```
-
-Llaves de los contenedores son únicos a través de la aplicación . Si reemplaza una clase existente , que va a cambiar el comportamiento por defecto .
-
-Agregar un metodo nuevo en la API
----------------------------------
-
-Kanboard usa la libreria [JSON-RPC](https://github.com/fguillot/JsonRPC) para manejar las llamadas de la api.
-
-Para agregar un nuevo metodo tu puedes que puede hacer algo para llamar a tu plugin:
-
-```php
-$this->api->getProcedureHandler()->withCallback('my_method', function() {
- return 'foobar';
-});
-```
-
-`$this->container['api']` or `$this->api` expose an instance of the object `JsonRPC\Server`.
-
-Leer la documentacion de la libreria para mas información.
-
-Agregar una nueva consola de comandos
---------------------------------------
-
-Kanboard usa la libreria [Symfony Console](http://symfony.com/doc/current/components/console/introduction.html) para manejar las lineas de comandos.
-
-Kanboard genera una instancia del objeto `Symfony\Component\Console\Application` via `$this->cli`.
-Tu puedes agregar nuevos comandos desde tu plugin:
-
-```php
-$this->cli->add(new MyCommand());
-```
-
-Lea la documentación de la biblioteca para obtener más información.
diff --git a/doc/es_ES/plugin-routes.markdown b/doc/es_ES/plugin-routes.markdown
deleted file mode 100644
index 69357e3c..00000000
--- a/doc/es_ES/plugin-routes.markdown
+++ /dev/null
@@ -1,85 +0,0 @@
-Personalizar Rutas
-==================
-
-Cuando está habilitada la reescritura de URL, tu puedes definir rutas personalizadas desde tus plugins.
-
-Definir nuevas rutas
---------------------
-
-Las rutas son manejadas por la clase `Kanboard\Core\Http\Route`.
-
-Las nuevas rutas se pueden agregar mediante el uso del método `addRoute($path, $controller, $action, $plugin)`, here an example:
-
-```php
-$this->route->addRoute('/my/custom/route', 'myController', 'myAction', 'myplugin');
-```
-
-Cuando el usuario final **end-user** van a la URL `/my/custom/route`, el metodo `Kanboard\Plugin\Myplugin\Controller\MyController::myAction()` será ejecutado.
-
-El primer caracter del contraldor y el nombre del plugin serán convertidos en mayusculas con la funcion `ucfirst()`.
-
-Tu puedes ademas definir rutas con variables:
-
-```php
-$this->route->addRoute('/my/route/:my_variable', 'myController', 'myAction', 'myplugin');
-```
-
-El prefijo colon `:`, define una variable.
-Por ejemplo `:my_variable` declare el nombre de la nueva variable `my_variable`.
-
-Para extraer los valores de la variable puedes usar el metodo `getStringParam()` or `getIntegerParam()` desde la clase `Kanboard\Core\Http\Request`:
-
-Si tenemos la URL `/my/route/foobar`, el valor de `my_variable` es `foobar`:
-
-```php
-$this->request->getStringParam('my_variable'); // Return foobar
-```
-
-Generate links based on the routing table
------------------------------------------
-
-Desde las plantillas , se tiene que usar el helper `Kanboard\Helper\Url`.
-
-### Generar un link HTML
-
-```php
-<?= $this->url->link('My link', 'mycontroller', 'myaction', array('plugin' => 'myplugin')) ?>
-```
-
-Generara este HTML:
-
-```html
-<a href="/my/custom/route">My link</a>
-```
-
-### Generara solamente el atributo `href`:
-
-```php
-<?= $this->url->href('My link', 'mycontroller', 'myaction', array('plugin' => 'myplugin')) ?>
-```
-
-HTML salida:
-
-```html
-/my/custom/route
-```
-
-Salida HTML cuando la reescritura del URL no esta habilitada:
-
-```html
-?controller=mycontroller&amp;action=myaction&amp;plugin=myplugin
-```
-
-### Generar enlace de redirección:
-
-Desde un controlador, si tu necesitas para From a controller, si tu necesitas realizar una redirección:
-
-```php
-$this->url->to('mycontroller', 'myaction', array('plugin' => 'myplugin'));
-```
-
-Generar:
-
-```
-?controller=mycontroller&action=myaction&plugin=myplugin
-```
diff --git a/doc/es_ES/plugin-schema-migrations.markdown b/doc/es_ES/plugin-schema-migrations.markdown
deleted file mode 100644
index b7165490..00000000
--- a/doc/es_ES/plugin-schema-migrations.markdown
+++ /dev/null
@@ -1,40 +0,0 @@
-Plugin Migración de esquemas
-============================
-
-Kanboard realiza migraciones de base de datos automaticamente para ti.
-Las migraciones deben ser almacenadas en una carpeta **Schema** y el nombre de archivo debe ser el mismo que el controlador de base de datos:
-
-```bash
-Schema
-├── Mysql.php
-├── Postgres.php
-└── Sqlite.php
-```
-
-Cada archivo contiene todas las migraciones, aqui un ejemple para Sqlite:
-
-```php
-<?php
-
-namespace Kanboard\Plugin\Something\Schema;
-
-const VERSION = 1;
-
-function version_1($pdo)
-{
- $pdo->exec('CREATE TABLE IF NOT EXISTS something (
- "id" INTEGER PRIMARY KEY,
- "project_id" INTEGER NOT NULL,
- "something" TEXT,
- FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE
- )');
-}
-```
-
-- La constante `VERSION` es la ultima versión de tu esquema
-- Cada funcion es una migración `version_1()`, `version_2()`, etc.
-- Una instancia `PDO` es pasado como un primer argumneto
-- Todo se ejecuta dentro de una transacción , si algo no funciona se realiza una operación de rollback y se muestra el error al usuario
-
-Kanboard siempre compara la version definida en tu esquema y la version almacenada en la base de datos. Si la versiones son diferentes, kanboard siempre ejecuta cada migración una por una hasta alcanzar la ultima version.
-
diff --git a/doc/es_ES/plugins.markdown b/doc/es_ES/plugins.markdown
deleted file mode 100644
index 633d7126..00000000
--- a/doc/es_ES/plugins.markdown
+++ /dev/null
@@ -1,46 +0,0 @@
-Desarrollo de Plugin
-====================
-
-Nota : el plugin API es **considerado alpha** en estos momentos.
-
-Los plugins son útiles para extender las funcionalidades básicas de Kanboard , la adición de características , la creación de temas o cambiar el comportamiento por defecto .
-
-Los creadores de plugins deben especificar explícitamente las versiones compatibles de Kanboard . El código interno de Kanboard puede cambiar con el tiempo y su extensión debe ser probado con nuevas versiones . Compruebe siempre el [ChangeLog](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para realizar los cambios.
-
-- [Crear tu plugin](plugin-registration.markdown)
-- [Usar plugins hooks](plugin-hooks.markdown)
-- [Eventos](plugin-events.markdown)
-- [Rescribir compartamientos por default en la aplicación](plugin-overrides.markdown)
-- [Agregar plugins para migrar esquemas](plugin-schema-migrations.markdown)
-- [Personalizar rutas](plugin-routes.markdown)
-- [Agregar helpers](plugin-helpers.markdown)
-- [Agregar trasportes de email ](plugin-mail-transports.markdown)
-- [Agregar tipos de notificaciones](plugin-notifications.markdown)
-- [Agregar acciones automaticas](plugin-automatic-actions.markdown)
-- [Adjuntar metados para usuarios,tareas y proyectos](plugin-metadata.markdown)
-- [Arquitectura de autenticación](plugin-authentication-architecture.markdown)
-- [Registración de plugins de autenticación](plugin-authentication.markdown)
-- [Arquitectura de autorización](plugin-authorization-architecture.markdown)
-- [Personlizar grupos de proveedores](plugin-group-provider.markdown)
-- [Links externos para proveedores](plugin-external-link.markdown)
-- [Agregar avatar a proveedores](plugin-avatar-provider.markdown)
-- [Cliente LDAP](plugin-ldap-client.markdown)
-
-Ejemplos de plugins
--------------------
-
-- [SMS Two-Factor Authentication](https://github.com/kanboard/plugin-sms-2fa)
-- [Reverse-Proxy Authentication with LDAP support](https://github.com/kanboard/plugin-reverse-proxy-ldap)
-- [Slack](https://github.com/kanboard/plugin-slack)
-- [Hipchat](https://github.com/kanboard/plugin-hipchat)
-- [Jabber](https://github.com/kanboard/plugin-jabber)
-- [Sendgrid](https://github.com/kanboard/plugin-sendgrid)
-- [Mailgun](https://github.com/kanboard/plugin-mailgun)
-- [Postmark](https://github.com/kanboard/plugin-postmark)
-- [Amazon S3](https://github.com/kanboard/plugin-s3)
-- [Budget planning](https://github.com/kanboard/plugin-budget)
-- [User timetables](https://github.com/kanboard/plugin-timetable)
-- [Subtask Forecast](https://github.com/kanboard/plugin-subtask-forecast)
-- [Automatic Action example](https://github.com/kanboard/plugin-example-automatic-action)
-- [Theme plugin example](https://github.com/kanboard/plugin-example-theme)
-- [CSS plugin example](https://github.com/kanboard/plugin-example-css)
diff --git a/doc/es_ES/requirements.markdown b/doc/es_ES/requirements.markdown
deleted file mode 100755
index ef56dd67..00000000
--- a/doc/es_ES/requirements.markdown
+++ /dev/null
@@ -1,104 +0,0 @@
-Requerimientos
-===============
-
-Lado del servidor
---------------------
-
-### Sistemas operativos compatibles
-
-| Sistemas operativos |
-|--------------------------------------|
-| Linux Ubuntu Xenial Xerus 16.04 LTS |
-| Linux Centos 7.x |
-| Linux Redhat 7.x |
-| Linux Debian 9 |
-| FreeBSD 10.x |
-| Microsoft Windows 2016 |
-| Microsoft Windows 2012 R2 |
-
-### Base de datos compatibles
-
-| Base de datos |
-|--------------------|
-| Sqlite >= 3.7 |
-| Mysql >= 5.5 |
-| MariaDB >= 10 |
-| Postgresql >= 9.3 |
-
-Qué base de datos para elegir?
-
-| Tipo | Uso |
-|-----------------|-----------------------------------------------------|
-| Sqlite | un solo usuario o equipo pequeño (casi no hay concurrencia) |
-| Mysql/Postgres | Equipo grande, configuración de alta disponibilidad |
-
-No usar Sqlite en montajes de NFS, use Sqlite solo cuando tengas un disco con Fast I/O
-
-### Servidores Web Compatibles
-
-| Servidores Web |
-|--------------------|
-| Apache HTTP Server |
-| Nginx |
-| Microsoft IIS |
-
-Kanboard esta pre configurado para trabajar con Apache (URL rewriting).
-
-### Versiones de PHP
-
-| Versión de PHP |
-|----------------|
-| PHP >= 5.6 |
-
-### PHP Extensiones Requeridas
-
-| PHP Extensiones Requeridas | Nota |
-|----------------------------|-------------------------------|
-| pdo_sqlite | Solo si usas Sqlite |
-| pdo_mysql | Solo si usas Mysql/MariaDB |
-| pdo_pgsql | Solo si usas Postgres |
-| gd | |
-| mbstring | |
-| openssl | |
-| json | |
-| hash | |
-| ctype | |
-| session | |
-| ldap | Solamente para autenticación LDAP |
-| Zend OPcache | Recomendado |
-
-### Extensiones PHP opcionales
-
-| PHP Extensiones Requeridas | Nota |
-|----------------------------|--------------------------------------------|
-| zip | Usado para instalar plugins desde Kanboard |
-
-### Recomendaciones
-
-- Usar sistemas operativos modernos de Linux o Unix.
-- El mejor performace se obtienen con la última versión de PHP junto con la operación de OPcode esta activado.
-
-
-Lado del cliente
-----------------
-
-### Browsers [Navegadores]
-
-Siempre usar el navegador mas moderno o la ultima versión posible:
-
-| Browser |
-|---------------------------------------|
-| Safari |
-| Google Chrome |
-| Mozilla Firefox |
-| Microsoft Internet Explorer >= 11 |
-| Microsoft Edge |
-
-### Dispositivos
-
-| Device | Resolución de la pantalla |
-|-------------------|--------------------|
-| Laptop o desktop | >= 1366 x 768 |
-| Tablet | >= 1024 x 768 |
-
-Kanboard aún no está optimizado para smartphones. Está funcionando, pero la interfaz de usuario no es muy cómoda de usar.
diff --git a/doc/es_ES/reverse-proxy-authentication.markdown b/doc/es_ES/reverse-proxy-authentication.markdown
deleted file mode 100755
index 757301e5..00000000
--- a/doc/es_ES/reverse-proxy-authentication.markdown
+++ /dev/null
@@ -1,64 +0,0 @@
-Autenticación por proxy inverso
-============================
-
-Este metodo de autenticación a menudo es usado por [SSO](http://en.wikipedia.org/wiki/Single_sign-on) (Single Sign-On) especialmente para organizaciones mayores.
-
-La autenticación se realiza mediante otro sistema, Kanboard no conoce su contraseña y supongamos que ya está autenticado.
-
-Requerimentos
-------------
-
-- Un proxy inverso bien configurado
-
-o
-
-- Apache Auth en el mismo servidor
-
-
-¿Como funciona esto?
--------------------
-
-1. Su proxy inverso autentica al usuario y envia el nombre de usuario a través de una cabecera HTTP.
-2. Kanboard recuperar el nombre de usuario de la solicitud
- - El usuario se crea automáticamente si es necesario
- - Abrir una nueva sesión Kanboard sin ningún símbolo asumiendo que es válida
-
-Instrucciones de instalación
-----------------------------
-
-### Configuración de su proxy inverso
-
-Esto esta fuera del alcance de esta documentación.
-Debería comprobar la conexión del usuario ya que es enviado por el proxy inverso utilizando una cabecera HTTP.
-
-### Configuración de Kanboard
-
-Crear un archivo `config.php` copiar el archivo` config.default.php`:
-
-```php
-<?php
-
-// Activar / desactivar la autenticación del proxy inverso
-define('REVERSE_PROXY_AUTH', true); // Set this value to true
-
-// La cabecera HTTP para recuperar. Si no se especifica, el valor por defecto es REMOTE_USER
-define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
-
-// El Kanboard predeterminado esta el administrador para su organización.
-// Ya que todo debe ser filtrada por el proxy inverso,
-// Debe tener un usuario administrador para el arranque.
-define('REVERSE_PROXY_DEFAULT_ADMIN', 'myadmin');
-
-// El dominio predeterminado para asumir la dirección de correo electrónico.
-// En caso de que el nombre de usuario no es una dirección de correo electrónico,
-// Se actualizará automáticamente como USER@mydomain.com
-define('REVERSE_PROXY_DEFAULT_DOMAIN', 'mydomain.com');
-```
-
-Notas:
-
-- Si el proxy esta en el mismo servidor Web que ejecuta Kanboard, según la [CGI protocol](http://www.ietf.org/rfc/rfc3875) el Header será `REMOTE_USER`. Por ejemplo, Apache añadir `REMOTE_USER` por defecto si` Require valid-usuario de la red se establece.
-
-- Si Apache es un proxy inverso a otro Apache corriendo Kanboard, la cabecera `REMOTE_USER` no se establece (mismo comportamiento con IIS y Nginx)
-
-- Si tu tienes un autentico reverse proxy, the [HTTP ICAP draft](http://tools.ietf.org/html/draft-stecher-icap-subid-00#section-3.4) proposes the header to be `X-Authenticated-User`. This de facto standard has been adopted by a number of tools.
diff --git a/doc/es_ES/rss.markdown b/doc/es_ES/rss.markdown
deleted file mode 100755
index ac448391..00000000
--- a/doc/es_ES/rss.markdown
+++ /dev/null
@@ -1,23 +0,0 @@
-Suscripciones RSS/Atom
-======================
-
-Kanboard Soporta feeds RSS para proyectos y usuarios.
-
-- Los feeds del proyecto contiene solamente las actividades del proyecto.
-- Los feeds del usuario contiene el flujo de actividad de todos los proyectos que el usuario es un miembro
-
-Aquellas suscripciones estan solamente activadas cuando el acceso publico esta habilitado en el perfil del usuario o en la configuraci�n del proyecto.
-
-Habilitar/Deshabilitar Feeds RSS de proyectos
----------------------------------------------
-
-Ir a **Configuraci�n de proyecto > Acceso publico**.
-
-![Disable public access](../screenshots/project-disable-sharing.png)
-
-Habilitar/Deshabilitar Feeds RSS de usuarios
---------------------------------------------
-
-Ir a **Perfil de usuario > Acceso publico**.
-
-El enlace RSS est� protegido por un token aleatorio , s�lo las personas que conocen la URL pueden tener acceso al feed. \ No newline at end of file
diff --git a/doc/es_ES/screenshots.markdown b/doc/es_ES/screenshots.markdown
deleted file mode 100755
index 2ced69a0..00000000
--- a/doc/es_ES/screenshots.markdown
+++ /dev/null
@@ -1,25 +0,0 @@
-Agregar screenshots
-==================
-
-Tu puedes copiar y pegar imagenes directamente en Kanboard y salvarlo al mismo tiempo.
-Estas im�genes se cargan como archivos adjuntos a la tarea .
-
-Esto es especialmente �til para tomar capturas de pantalla para describir un problema , por ejemplo.
-
-Puede a�adir im�genes directamente desde el tablero haciendo clic en el men� desplegable o en la p�gina de vista de tareas .
-
-![Drop-down screenshot menu](../screenshots/dropdown-screenshot.png)
-
-Para a�adir una nueva imagen , coloque su captura de pantalla y pegar CTRL+V or Command+V:
-
-![Screenshot page](../screenshots/task-screenshot.png)
-
-En Mac OS X, puede utilizar los atajos para tomar screenshots:
-
-- Command-Control-Shift-3: Tome una screenshot de la pantalla , y guardarlo en el portapapeles
-- Command-Control-Shift-4, a continuaci�n, seleccione un �rea: Tome una captura de pantalla de la zona y la guarda en el portapapeles
-- Command-Control-Shift-4, entonces el espacio , a continuaci�n, haga clic en una ventana : Tome una captura de pantalla de una ventana y guardarlo en el portapapeles
-
-Tambi�n hay varias aplicaciones de terceros que pueden ser utilizados para tomar capturas de pantalla con anotaciones y formas.
-
-** Nota: Esta funci�n no funciona con todos los navegadores ** No funciona con Safari , debido a este error . : https://bugs.webkit.org/show_bug.cgi?id=49141
diff --git a/doc/es_ES/subtasks.markdown b/doc/es_ES/subtasks.markdown
deleted file mode 100644
index 6507e6e5..00000000
--- a/doc/es_ES/subtasks.markdown
+++ /dev/null
@@ -1,46 +0,0 @@
-Subtareas
-========
-
-Las subtareas son utiles por que dividen el trabajo de las tareas.
-
-Cada subtareas:
-
-- Se puede asignar a un miembro del proyecto
-- Tiene 3 diferentes estado: **Todo**, **En progreso**, **Realizado**
-- Tienen rastreo de información: **tiempo gastado** y **tiempo estimado**
-- Ordenar por posición
-
-Crear subtareas
------------------
-
-Desde la vista de la tarea en la barra lateral izquierda haga clic en **Agregar una subtarea**:
-
-![Añadir una subtarea](../screenshots/add-subtask.png)
-
-Tambien puede agregar una subtarea rápidamente introduciendo solamente el titulo:
-
-![Añadir una subtarea desde la vista de la subtarea](../screenshots/add-subtask-shortcut.png)
-
-Cambiar estado de subtarea
--------------------------
-
-Al hacer clic en el título de la subtarea, se hace el cambio de estado :
-
-![Subtask en progreso](../screenshots/subtask-status-inprogress.png)
-
-El icono antes de que el titulo se actualice el estatus.
-
-![Subtarea realizada](../screenshots/subtask-status-done.png)
-
-Nota: cuando la tarea se cierra todas las subtareas se cambian al estado **Hecho**.
-
-Temporizador de subtarea
--------------------------
-
-- Cada vez que una subtarea está en marcha, el temporizador se inicia también
-El temporizador puede ser iniciado y detenido en cualquier momento.
-- El contador registra el tiempo empleado en la subtarea automáticamente.
-También puede cambiar manualmente el valor del campo, al editar una subtarea.
-- El cálculo de tiempo se redondea al cuarto más cercano.Esta información se registra en una tabla separada.
-- El tiempo de tarea y tiempo de estimados es de actualización automáticamente según la suma de todas las subtareas.
-
diff --git a/doc/es_ES/suse-installation.markdown b/doc/es_ES/suse-installation.markdown
deleted file mode 100644
index 7fb318c9..00000000
--- a/doc/es_ES/suse-installation.markdown
+++ /dev/null
@@ -1,17 +0,0 @@
-Instalacion en OpenSuse
-========================
-
-OpenSuse Leap 42.1
-------------------
-
-```bash---terminal
-sudo zypper install php5 php5-sqlite php5-gd php5-json php5-mcrypt php5-mbstring php5-openssl
-cd /srv/www/htdocs
-
-# Download the latest release from https://github.com/kanboard/kanboard/releases
-sudo wget https://github.com/kanboard/kanboard/archive/v<VERSION>.zip
-
-sudo unzip kanboard-<version>.zip
-sudo chown -R wwwrun /srv/www/htdocs/kanboard-<version>/data
-sudo rm kanboard-<version>.zip
-
diff --git a/doc/es_ES/swimlanes.markdown b/doc/es_ES/swimlanes.markdown
deleted file mode 100755
index 2e608f95..00000000
--- a/doc/es_ES/swimlanes.markdown
+++ /dev/null
@@ -1,34 +0,0 @@
-Swimlanes
-=========
-
-Swimlanes son separaciones horizontales en tu tablero.
-Por ejemplo, es útil para separar las versiones de software, dividir las tareas en diferentes productos, equipos o lo que quieras.
-
-Tablero con swimlanes
-----------------------
-
-![Swimlanes](../screenshots/swimlanes.png)
-
-- Tu puedes colapsar los swimlanes haciendo click en el icono de la izquierda
-- El swimlane por defecto se muestra siempre en la parte superior
-
-La gestión de swimlanes
------------------------
-
-- Todos los proyectos tienen un swimlane predeterminado.
-- Si hay más de un swimlane, el tablero mostrará todos swimlanes.
-- Usted puede arrastrar y soltar las tareas entre swimlanes.
-
-Para configurar swimlanes ir a la página de **configuración del proyecto ** y elija la sección **Swimlanes**.
-
-
-![Configuración Swimlanes](../screenshots/swimlane-configuration.png)
-
-A partir de ahí, se puede añadir un nuevo swimlane o cambiar el nombre por defecto.
-También puede desactivar y cambiar la posición de los diferentes swimlanes.
-
-- El swimlane por defecto es siempre en la parte superior, pero se puede ocultarlo.
-- Swimlanes inactivas no se muestran en el tablero.
-- **Extracción de una swimlane no elimina tareas **, esas tareas se moverán a la swimlane predeterminada.
-
-
diff --git a/doc/es_ES/tags.markdown b/doc/es_ES/tags.markdown
deleted file mode 100755
index 621c01ff..00000000
--- a/doc/es_ES/tags.markdown
+++ /dev/null
@@ -1,28 +0,0 @@
-Tags ** Etiqueta **
-====================
-
-Con kanboard, tu puedes asociar una o mas tags a una tarea.
-Tu puedes definir etiquetas globalmente para todos los proyectos o solo para unos proyectos en especifico
-
-![Tags en el tablero](../screenshots/tags-board.png)
-
-Desde el formulario de tarea, tu puedes caputarar las tags deseadas:
-
-![Tags form](../screenshots/tags-task.png)
-
-La auto-completacion se forma para mostrar ó sugerir etiquetas disponibles.
-
-También puede crear etiquetas directamente desde el formulario de tareas .
-Por defecto , al crear etiquetas de un formulario de tarea que están asociados al proyecto actual :
-
-![Project Tags](../screenshots/tags-projects.png)
-
-Todas las tags pueden ser manejadas en configuración del proyecto.
-
-Para definir tags globalmente para todos los proyectos, ve a la configuración de la aplicación :
-
-![Global Tags](../screenshots/tags-global.png)
-
-Para buscar tareas basadas en etiquetas, solo use el atributo "tag":
-
-![Search Tags](../screenshots/tags-search.png)
diff --git a/doc/es_ES/translations.markdown b/doc/es_ES/translations.markdown
deleted file mode 100644
index 66fd2a4c..00000000
--- a/doc/es_ES/translations.markdown
+++ /dev/null
@@ -1,68 +0,0 @@
-Translations
-============
-
-How to translate Kanboard to a new language?
---------------------------------------------
-
-- Translations are stored inside the directory `app/Locale`
-- There is a subdirectory for each language, for example in French we have `fr_FR`, Italian `it_IT` etc.
-- A translation is a PHP file that returns an Array with a key-value pairs
-- The key is the original text in English and the value is the translation of the corresponding language
-- **French translations are always up to date**
-- Always use the last version (branch master)
-
-### Create a new translation:
-
-1. Make a new directory: `app/Locale/xx_XX` for example `app/Locale/fr_CA` for French Canadian
-2. Create a new file for the translation: `app/Locale/xx_XX/translations.php`
-3. Use the content of the French locales and replace the values
-4. Update the file `app/Model/Language.php`
-5. Check with your local installation of Kanboard if everything is OK
-6. Send a [pull-request with Github](https://help.github.com/articles/using-pull-requests/)
-
-How to update an existing translation?
---------------------------------------
-
-1. Open the translation file `app/Locale/xx_XX/translations.php`
-2. Missing translations are commented with `//` and the values are empty, just fill blank and remove the comment
-3. Check with your local installation of Kanboard and send a [pull-request](https://help.github.com/articles/using-pull-requests/)
-
-How to add new translated text in the application?
---------------------------------------------------
-
-Translations are displayed with the following functions in the source code:
-
-- `t()`: display text with HTML escaping
-- `e()`: display text without HTML escaping
-
-Always use the english version in the source code.
-
-Text strings use the function `sprintf()` to replace elements:
-
-- `%s` is used to replace a string
-- `%d` is used to replace an integer
-
-All formats are available in the [PHP documentation](http://php.net/sprintf).
-
-How to find missing translations in the applications?
------------------------------------------------------
-
-From a terminal, run the following command:
-
-```bash
-./cli locale:compare
-```
-
-All missing and unused translations are displayed on the screen.
-Put that in the French locale and sync other locales (see below).
-
-How to synchronize translation files?
--------------------------------------
-
-From a Unix shell run this command:
-
-```bash
-./cli locale:sync
-```
-
-The French translation is used a reference to other locales.
diff --git a/doc/es_ES/update.markdown b/doc/es_ES/update.markdown
deleted file mode 100755
index ae5d7a5e..00000000
--- a/doc/es_ES/update.markdown
+++ /dev/null
@@ -1,33 +0,0 @@
-Actualizar Kanboard a una nueva versión
-=======================================
-
-La actualización de Kanboard a una nueva versión es perfecta.
-El proceso se puede resumir simplemente copiar la carpeta de datos a la nueva carpeta Kanboard .
-Kanboard ejecutará migraciones de bases de datos de forma automática.
-
-Cosas importantes que hacer antes de actualizar
---------------------------------------
-
-- **Siempre crear un backup de tus datos antes de actualizarlo**
-- Verificar que tu backup es valido
-- Siempre leer el [change log](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para verificar si hay cambios destacados
-- Siempre cerrar las sesiones de todos los usuarios (eliminar todas las sesiones en el servidor)
-
-Desde el archivo (Versión estable )
----------------------------------
-
-1. Descomprimir el nuevo archivo
-2. Copiar el contenido de la carpeta de datos en el directorio recién descomprimido
-3. Copiar tu `config.php` personalizado si tienes uno
-4. Copiar tus plugins sin son necesarios
-5. Asegúrese de que el directorio `data` es escribible por el usuario del servidor web
-6. Testearlo
-7. Eliminar tu viejo directorio del Kanboard
-
-Desde el repositorio (development version)
------------------------------------------
-
-1. `git pull`
-2. Inicia la sesión y comprobar si todo está bien
-
-Nota: Este método se instalará la **versión de desarrollo actual**, utilice a su propio riesgo.
diff --git a/doc/es_ES/user-mentions.markdown b/doc/es_ES/user-mentions.markdown
deleted file mode 100644
index b3f2f169..00000000
--- a/doc/es_ES/user-mentions.markdown
+++ /dev/null
@@ -1,18 +0,0 @@
-Menciones de usuarios
-=====================
-
-Kanboard ofrece la posibilidad de enviar notificaciones cuando alguien es mencionado.
-
-Si usted necesita obtener la atención de alguien en un comentario o una tarea, use el simbolo @ seguido por el usuario.
-Kanboard automaticamente desplegara una lista de usuarios:
-
-![User Mention](../screenshots/mention-autocomplete.png)
-
-- Por el momento, solo las descripciones de la tarea y la area de comentarios la función esta activada.
-- El usuario mencionado sólo funciona durante las tareas y comentarios creados
-- Para notificar, necesita mencionar a los usuarios con su membresia de proyecto
-- Cuando alguien se mencionó, este usuario recibirá una notificación.
-- El @username mencionado está relacionado con el perfil de usuario.
-
-La notificacion es enviada de acuerdo a la configuracion del usuario, se le puede enviar un email, una notificaicon via web o mensajes en Slack/Hipchat/Jabber si y cuando se tenga instalados dichos plugins.
-