Просмотр исходного кода

Update Spanish translation (#8464)

* Update Spanish translation

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Martín González Gómez 2 месяцев назад
Родитель
Сommit
2b53203e88
11 измененных файлов с 219 добавлено и 219 удалено
  1. 1 1
      README.fr.md
  2. 1 1
      README.md
  3. 17 17
      app/i18n/es/admin.php
  4. 11 11
      app/i18n/es/api.php
  5. 54 54
      app/i18n/es/conf.php
  6. 5 5
      app/i18n/es/feedback.php
  7. 60 60
      app/i18n/es/gen.php
  8. 41 41
      app/i18n/es/index.php
  9. 6 6
      app/i18n/es/install.php
  10. 22 22
      app/i18n/es/sub.php
  11. 1 1
      app/i18n/es/user.php

+ 1 - 1
README.fr.md

@@ -231,7 +231,7 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
 | Ελληνικά (el) | ■■■・・・・・・・ 38% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |
 | English (en) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F) |
 | English (United States) (en-US) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-US+%2F%28TODO%7CDIRTY%29%24%2F) |
-| Español (es) | ■■■■■■■■・・ 87% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
+| Español (es) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
 | فارسی (fa) | ■■■■■■■■■・ 93% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Suomi (fi) | ■■■■■■■■■・ 95% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Français (fr) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |

+ 1 - 1
README.md

@@ -127,7 +127,7 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
 | Ελληνικά (el) | ■■■・・・・・・・ 38% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |
 | English (en) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F) |
 | English (United States) (en-US) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-US+%2F%28TODO%7CDIRTY%29%24%2F) |
-| Español (es) | ■■■■■■■■・・ 87% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
+| Español (es) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
 | فارسی (fa) | ■■■■■■■■■・ 93% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Suomi (fi) | ■■■■■■■■■・ 95% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Français (fr) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |

+ 17 - 17
app/i18n/es/admin.php

@@ -14,9 +14,9 @@ return array(
 	'auth' => array(
 		'allow_anonymous' => 'Permitir la lectura anónima de los artículos del usuario por defecto (%s)',
 		'allow_anonymous_refresh' => 'Permitir la actualización anónima de los artículos',
-		'api_enabled' => 'Concederle acceso a la <abbr>API</abbr> <small>(necesario para apps de móvil and sharing user queries)</small>',	// DIRTY
+		'api_enabled' => 'Concederle acceso a la <abbr>API</abbr> <small>(necesario para apps de móvil y compartir vistas de usuario)</small>',
 		'form' => 'Formulario Web (el más habitual, requiere JavaScript)',
-		'http' => 'HTTP (advanced: managed by Web server, OIDC, SSO…)',	// TODO
+		'http' => 'HTTP (avanzado: gestionado por el servidor, OIDC, SSO…)',
 		'none' => 'Ninguno (peligroso)',
 		'title' => 'Identificación',
 		'token' => 'Token de autentificación Master',
@@ -25,13 +25,13 @@ return array(
 	),
 	'extensions' => array(
 		'author' => 'Autor',
-		'community' => 'Extensiones de comunidad disponibles',
+		'community' => 'Extensiones de la comunidad disponibles',
 		'description' => 'Descripción',
 		'disabled' => 'Desactivado',
 		'empty_list' => 'No hay extensiones instaladas',
-		'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.',	// TODO
+		'empty_list_help' => 'Consulta los registros para ver por qué la lista de extensiones está vacía.',
 		'enabled' => 'Activado',
-		'is_compatible' => 'Is compatible',	// TODO
+		'is_compatible' => 'Es compatible',
 		'latest' => 'Instalado',
 		'name' => 'Nombre',
 		'no_configure_view' => 'Esta extensión no puede ser configurada.',
@@ -48,8 +48,8 @@ return array(
 		'_' => 'Estadísticas',
 		'all_feeds' => 'Todas las fuentes',
 		'category' => 'Categoría',
-		'date_published' => 'Publication date',	// TODO
-		'date_received' => 'Received date',	// TODO
+		'date_published' => 'Fecha de publicación',
+		'date_received' => 'Fecha de recepción',
 		'entry_count' => 'Cómputo total',
 		'entry_per_category' => 'Entradas por categoría',
 		'entry_per_day' => 'Entradas por día (últimos 30 días)',
@@ -61,11 +61,11 @@ return array(
 		'feed_per_category' => 'Fuentes por categoría',
 		'idle' => 'Fuentes inactivas',
 		'main' => 'Estadísticas principales',
-		'main_stream' => 'Salida principal',
-		'nb_unreads' => 'Number of unread articles',	// TODO
+		'main_stream' => 'Bandeja principal',
+		'nb_unreads' => 'Número de artículos no leídos',
 		'no_idle' => 'No hay fuentes inactivas',
 		'number_entries' => '%d artículos',
-		'overview' => 'Overview',	// TODO
+		'overview' => 'Resumen',
 		'percent_of_total' => '% del total',
 		'repartition' => 'Reparto de artículos: %s',
 		'status_favorites' => 'Favoritos',
@@ -74,7 +74,7 @@ return array(
 		'status_unread' => 'Pendientes',
 		'title' => 'Estadísticas',
 		'top_feed' => 'Las 10 fuentes más activas',
-		'unread_dates' => 'Dates with most unread articles',	// TODO
+		'unread_dates' => 'Fechas con más artículos no leídos',
 	),
 	'system' => array(
 		'_' => 'Configuración del sistema',
@@ -83,12 +83,12 @@ return array(
 			'_' => 'URL Base',
 			'recommendation' => 'Recomendación automática: <kbd>%s</kbd>',
 		),
-		'closed_registration_message' => 'Message if registrations are closed',	// TODO
+		'closed_registration_message' => 'Mensaje si el registro está cerrado',
 		'cookie-duration' => array(
 			'help' => 'en segundos',
 			'number' => 'Duración para mantenerse conectado',
 		),
-		'default_closed_registration_message' => 'This server does not accept new registrations at the moment.',	// TODO
+		'default_closed_registration_message' => 'Este servidor no acepta nuevos registros en este momento.',
 		'force_email_validation' => 'Forzar la validación de direcciones de correo electrónico',
 		'instance-name' => 'Nombre de la fuente',
 		'max-categories' => 'Límite de categorías por usuario',
@@ -122,7 +122,7 @@ return array(
 	'update' => array(
 		'_' => 'Actualizar sistema',
 		'apply' => 'Aplicar',
-		'changelog' => 'Changelog',	// IGNORE
+		'changelog' => 'Registro de cambios',
 		'check' => 'Buscar actualizaciones',
 		'copiedFromURL' => 'update.php copiado desde %s a ./data',
 		'current_version' => 'Dispones de la versión',
@@ -131,11 +131,11 @@ return array(
 		'none' => 'No hay actualizaciones disponibles',
 		'releaseChannel' => array(
 			'_' => 'Canal de publicación',
-			'edge' => 'Publicación en marcha (“edge”)',
-			'latest' => 'Publicación estable (“latest”)',
+			'edge' => 'Versión de pruebas (“edge”)',
+			'latest' => 'Versión estable (“latest”)',
 		),
 		'title' => 'Actualizar sistema',
-		'viaGit' => 'Actualización vía git and GitHub.com comenzada',
+		'viaGit' => 'Actualización comenzada vía git y GitHub',
 	),
 	'user' => array(
 		'admin' => 'Administrador',

+ 11 - 11
app/i18n/es/api.php

@@ -12,22 +12,22 @@
 
 return array(
 	'information' => array(
-		'address' => 'Your API address:',	// TODO
+		'address' => 'Tu dirección de la API:',
 		'output' => array(
-			'encoding-support' => '⚠️ WARN: no <code>%2F</code> support, some clients might not work!',	// TODO
-			'invalid-configuration' => '⚠️ WARN: Probable invalid base URL in ./data/config.php',	// TODO
-			'pass' => '✔️ PASS',	// TODO
-			'unknown-error' => '❌ ',	// TODO
+			'encoding-support' => '⚠️ ADVERTENCIA: no hay soporte para <code>%2F</code>, ¡algunos clientes podrían no funcionar!',
+			'invalid-configuration' => '⚠️ ADVERTENCIA: La URL base en ./data/config.php es probablemente incorrecta.',
+			'pass' => '✔️ APROBADO',
+			'unknown-error' => '❌',
 		),
 		'test' => array(
-			'fever' => 'Fever API configuration test:',	// TODO
-			'greader' => 'Google Reader API configuration test:',	// TODO
+			'fever' => 'Prueba de configuración de la API Fever:',
+			'greader' => 'Prueba de configuración de la API Google Reader:',
 		),
 		'title' => array(
-			'_' => 'FreshRSS API endpoints',	// TODO
-			'extension' => 'API for extensions',	// TODO
-			'fever' => 'Fever compatible API',	// TODO
-			'greader' => 'Google Reader compatible API',	// TODO
+			'_' => 'API FreshRSS',
+			'extension' => 'API para extensiones',
+			'fever' => 'API compatible con Fever',
+			'greader' => 'API compatible con Google Reader',
 		),
 	),
 );

+ 54 - 54
app/i18n/es/conf.php

@@ -100,59 +100,59 @@ return array(
 		),
 	),
 	'mark_read_button' => array(
-		'_' => '“marcar todos como leídos” button',	// DIRTY
-		'big' => 'Big',	// TODO
-		'none' => 'None',	// TODO
-		'small' => 'Small',	// TODO
+		'_' => 'botón “marcar todos como leídos”',
+		'big' => 'Grande',
+		'none' => 'Nada',
+		'small' => 'Pequeño',
 	),
 	'notification_timeout' => array(
 		'bad' => array(
-			'label' => 'Show warning banner',	// TODO
-			'seconds' => 'seconds (at least 1)',	// TODO
+			'label' => 'Mostrar mensaje de advertencia',
+			'seconds' => 'segundos (al menos 1)',
 		),
 		'good' => array(
-			'label' => 'Show acknowledgement banner',	// TODO
-			'seconds' => 'seconds (0 means not shown)',	// TODO
+			'label' => 'Mostrar mensaje de confirmación',
+			'seconds' => 'segundos (0 significa que no se muestra)',
 		),
 	),
 	'privacy' => array(
-		'_' => 'Privacy',	// TODO
-		'retrieve_extension_list' => 'Retrieve extension list',	// TODO
+		'_' => 'Privacidad',
+		'retrieve_extension_list' => 'Obtener lista de extensiones',
 	),
 	'profile' => array(
 		'_' => 'Administración de perfiles',
 		'api' => array(
 			'_' => 'Administración de API',
-			'api_not_set' => 'API password not set',	// TODO
-			'api_set' => 'API password set',	// TODO
-			'check_link' => 'Check API status via: <kbd><a href="../api/" target="_blank">%s</a></kbd>',	// TODO
-			'disabled' => 'The API access is disabled.',	// TODO
-			'documentation_link' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">documentation and list of known apps</a>',	// TODO
-			'help' => 'See <a href="http://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target=_blank>documentation</a>',	// TODO
+			'api_not_set' => 'Contraseña de la API no establecida',
+			'api_set' => 'Contraseña de la API establecida',
+			'check_link' => 'Comprobar estado de la API en: <kbd><a href="../api/" target="_blank">%s</a></kbd>',
+			'disabled' => 'El acceso a la API está deshabilitado.',
+			'documentation_link' => 'Ver la <a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">documentación y lista de aplicaciones conocidas</a>',
+			'help' => 'Ver <a href="http://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target=_blank>documentación</a>',
 		),
-		'change_password' => 'Change password',	// TODO
-		'confirm_new_password' => 'Confirm new password',	// TODO
-		'current_password' => 'Current password<br /><small>(for the Web-form login method)</small>',	// TODO
+		'change_password' => 'Cambiar contraseña',
+		'confirm_new_password' => 'Confirmar nueva contraseña',
+		'current_password' => 'Contraseña actual<br /><small>(para el método de inicio de sesión por formulario web)</small>',
 		'delete' => array(
 			'_' => 'Borrar cuenta',
 			'warn' => 'Tu cuenta y todos los datos asociados serán eliminados.',
 		),
 		'email' => 'Correo electrónico',
-		'new_password' => 'New password',	// TODO
+		'new_password' => 'Nueva contraseña',
 		'password_api' => 'Contraseña API <br /><small>(para apps móviles, por ej.)</small>',
 		'password_format' => 'Mínimo de 7 caracteres',
 		'title' => 'Perfil',
 	),
 	'query' => array(
-		'_' => 'Consultas de usuario',
-		'deprecated' => 'Esta consulta ya no es válida. La categoría referenciada o fuente ha sido eliminada.',
+		'_' => 'Vistas de usuario',
+		'deprecated' => 'Esta vista ya no es válida. La categoría referenciada o fuente ha sido eliminada.',
 		'description' => 'Descripción',
 		'filter' => array(
 			'_' => 'Filtro aplicado:',
 			'categories' => 'Mostrar por categoría',
 			'feeds' => 'Mostrar por fuente',
 			'order' => 'Ordenar por fecha',
-			'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS',	// TODO
+			'publish_labels_instead_of_tags' => 'Reemplazar <i>etiquetas de fuente</i> por <i>etiquetas de usuario</i> en el RSS compartido',
 			'search' => 'Expresión',
 			'shareOpml' => 'Permitir que OPML comparta las categorías y fuentes correspondientes',
 			'shareRss' => 'Permite compartir por HTML &amp; RSS',
@@ -160,8 +160,8 @@ return array(
 			'tags' => 'Mostrar por etiqueta',
 			'type' => 'Tipo',
 		),
-		'get_A' => 'Show all feeds, also those shown in their category',	// TODO
-		'get_Z' => 'Show all feeds, also archived ones',	// TODO
+		'get_A' => 'Mostrar todas las fuentes, también las de su categoría',
+		'get_Z' => 'Mostrar todas las fuentes, también las archivadas',
 		'get_all' => 'Mostrar todos los artículos',
 		'get_all_labels' => 'Mostrar artículos con cualquier etiqueta',
 		'get_category' => 'Mostrar la categoría “%s”',
@@ -169,26 +169,26 @@ return array(
 		'get_feed' => 'Mostrar fuente “%s”',
 		'get_important' => 'Mostrar artículos de fuentes importantes',
 		'get_label' => 'Mostrar artículos con la etiqueta “%s”',
-		'help' => 'Ver la <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentación para consultas de usuarios y compartir mediante HTML / RSS / OPML</a>.',
+		'help' => 'Ver la <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentación para búsquedas de usuarios y compartir mediante HTML / RSS / OPML</a>.',
 		'image_url' => 'URL de la imagen',
 		'name' => 'Nombre',
 		'no_filter' => 'Sin filtro',
 		'no_queries' => array(
-			'_' => 'No user queries are saved yet.',	// TODO
-			'help' => 'See <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation</a>',	// TODO
+			'_' => 'No hay búsquedas de usuario guardadas aún.',
+			'help' => 'Ver <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentación</a>.',
 		),
-		'number' => 'Consulta n° %d',
+		'number' => 'Vista n° %d',
 		'order_asc' => 'Mostrar primero los artículos más antiguos',
 		'order_desc' => 'Mostrar primero los artículos más recientes',
 		'search' => 'Buscar “%s”',
 		'share' => array(
-			'_' => 'Comparte esta consulta por enlace',
+			'_' => 'Comparte esta vista por enlace',
 			'disabled' => array(
-				'_' => 'disabled',	// TODO
-				'title' => 'Sharing',	// TODO
+				'_' => 'deshabilitado',
+				'title' => 'Compartir',
 			),
 			'greader' => 'Enlace para compartir en GReader',
-			'help' => 'Dale este enlace si quieres compartir esta consulta con alguien',
+			'help' => 'Dale este enlace si quieres compartir esta vista con alguien',
 			'html' => 'Enlace para compartir a la página HTML',
 			'opml' => 'Enlace para compartir a la lista de fuentes de OPML',
 			'rss' => 'Enlace para compartir a la fuente RSS',
@@ -209,13 +209,13 @@ return array(
 		'state_13' => 'Mostrar artículos leídos',
 		'state_14' => 'Mostrar artículos sin leer',
 		'state_15' => 'Mostrar todos los artículos',
-		'title' => 'Consultas de usuario',
+		'title' => 'Vistas de usuario',
 	),
 	'reading' => array(
 		'_' => 'Lectura',
 		'after_onread' => 'Tras “marcar todo como leído”,',
 		'always_show_favorites' => 'Mostrar todos los artículos en favoritos de forma predeterminada',
-		'apply_to_individual_feed' => 'Applies to feeds individually',	// TODO
+		'apply_to_individual_feed' => 'Aplica a fuentes individualmente',
 		'article' => array(
 			'authors_date' => array(
 				'_' => 'Autores y fecha',
@@ -261,13 +261,13 @@ return array(
 			'misc' => 'Variados',
 			'view' => 'Ver',
 		),
-		'hide_read_feeds' => 'Ocultar categorías & fuentes sin artículos no leídos (no funciona con la configuración “Mostrar todos los artículos”)',
-		'img_with_lazyload' => 'Usar el modo de “carga perezosa” para las imágenes',
+		'hide_read_feeds' => 'Ocultar categorías y fuentes sin artículos no leídos (no funciona con la configuración “Mostrar todos los artículos”)',
+		'img_with_lazyload' => 'Usar el modo de carga diferida para las imágenes',
 		'jump_next' => 'saltar al siguiente archivo sin leer emparentado',
 		'mark_updated_article_unread' => 'Marcar artículos actualizados como no leídos',
 		'number_divided_when_reader' => 'Dividido en 2 en la vista de lectura.',
 		'read' => array(
-			'article_open_on_website' => 'cuando el artículo se abra en su web original',
+			'article_open_on_website' => 'cuando el artículo se abra en su página original',
 			'article_viewed' => 'cuando se muestre el artículo',
 			'focus' => 'cuando tiene el foco (excepto para fuentes importantes)',
 			'keep_max_n_unread' => 'Número máximo de artículos para mantener sin leer',
@@ -275,19 +275,19 @@ return array(
 			'upon_gone' => 'cuando ya no está disponible en la fuente de noticias previa',
 			'upon_reception' => 'al recibir el artículo',
 			'when' => 'Marcar el artículo como leído…',
-			'when_same_title_in_category' => 'if an identical title already exists in the top <i>n</i> newest articles of the category',	// TODO
-			'when_same_title_in_feed' => 'Si ya existe un título idéntico en la parte superior <i>n</i> artículos más recientes (of the feed)',	// DIRTY
+			'when_same_title_in_category' => 'si ya existe un título idéntico en los <i>n</i> artículos más recientes de la categoría',
+			'when_same_title_in_feed' => 'Si ya existe un título idéntico en la parte superior <i>n</i> artículos más recientes (de la fuente)',
 		),
 		'show' => array(
 			'_' => 'Artículos a mostrar',
 			'active_category' => 'Categoría activa',
-			'adaptive' => 'Show unreads if any, all articles otherwise',	// TODO
+			'adaptive' => 'Mostrar no leídos si hay, todos los artículos en caso contrario',
 			'all_articles' => 'Mostrar todos los artículos',
 			'all_categories' => 'Todas las categorías',
 			'no_category' => 'Sin categoría',
 			'remember_categories' => 'Recordar categorías abiertas',
-			'unread' => 'Mostrar solo pendientes',
-			'unread_or_favorite' => 'Show unreads and favourites',	// TODO
+			'unread' => 'Mostrar solo no leídos',
+			'unread_or_favorite' => 'Mostrar no leídos y favoritos',
 		),
 		'show_fav_unread_help' => 'Se aplica también en las etiquetas',
 		'sides_close_article' => 'Pinchar fuera del área de texto del artículo lo cerrará',
@@ -297,29 +297,29 @@ return array(
 			'older_first' => 'Antiguos primero',
 		),
 		'star' => array(
-			'when' => 'Marca un árticulo como favorito…',
+			'when' => 'Marca un artículo como favorito…',
 		),
-		'sticky_post' => 'Pegar el artículo a la parte superior al abrirlo',
+		'sticky_post' => 'Fijar el artículo a la parte superior al abrirlo',
 		'title' => 'Lectura',
 		'view' => array(
 			'default' => 'Vista por defecto',
-			'global' => 'Vista Global',
-			'normal' => 'Vista Normal',
-			'reader' => 'Vista de Lectura',
+			'global' => 'Vista global',
+			'normal' => 'Vista normal',
+			'reader' => 'Vista de lectura',
 		),
 	),
 	'sharing' => array(
 		'_' => 'Compartir',
-		'add' => 'Agregar un método de uso compartido',
+		'add' => 'Agregar métodos para compartir artículos',
 		'bluesky' => 'Bluesky',	// IGNORE
-		'deprecated' => 'Este servicio está obsoleto y será removido de FreshRSS en un<a href="https://freshrss.github.io/FreshRSS/en/users/08_sharing_services.html" title="Abrir la documentación para más información" target="_blank">futuro lanzamiento</a>.',
+		'deprecated' => 'Este servicio está obsoleto y será eliminado de FreshRSS en un<a href="https://freshrss.github.io/FreshRSS/en/users/08_sharing_services.html" title="Abrir la documentación para más información" target="_blank">futura versión</a>.',
 		'diaspora' => 'Diaspora*',	// IGNORE
 		'email' => 'Correo electrónico',
 		'facebook' => 'Facebook',	// IGNORE
 		'more_information' => 'Más información',
 		'print' => 'Imprimir',
 		'raindrop' => 'Raindrop.io',	// IGNORE
-		'remove' => 'Quitar método de uso compartido',
+		'remove' => 'Quitar métodos para compartir artículos',
 		'shaarli' => 'Shaarli',	// IGNORE
 		'share_name' => 'Compartir nombre a mostrar',
 		'share_url' => 'Compartir URL a usar',
@@ -331,7 +331,7 @@ return array(
 		'_' => 'Atajos de teclado',
 		'article_action' => 'Acciones de artículo',
 		'auto_share' => 'Compartir',
-		'auto_share_help' => 'Si solo hay un modo para compartir, ese será el que se use. En caso contrario los modos quedarán accesibles por su numeración.',
+		'auto_share_help' => 'Si solo hay un método para compartir, ese será el que se use. En caso contrario los métodos quedarán accesibles por su numeración.',
 		'close_menus' => 'Cerrar menús',
 		'collapse_article' => 'Contraer',
 		'first_article' => 'Saltar al primer artículo',
@@ -359,8 +359,8 @@ return array(
 		'skip_next_article' => 'Enfoque siguiente sin abrir',
 		'skip_previous_article' => 'Enfoque anterior sin abrir',
 		'title' => 'Atajos de teclado',
-		'toggle_aside' => 'Toggle sidebar',	// TODO
-		'toggle_media' => 'Jugar/pausar medios',
+		'toggle_aside' => 'Activar panel lateral',
+		'toggle_media' => 'Reproducir/pausar medios',
 		'user_filter' => 'Acceso a filtros de usuario',
 		'user_filter_help' => 'Si solo hay un filtro de usuario, ese será el que se use. En caso contrario, los filtros están accesibles por su numeración.',
 		'views' => 'Vistas',

+ 5 - 5
app/i18n/es/feedback.php

@@ -50,7 +50,7 @@ return array(
 			'ko' => '%s no se puede activar. <a href="%s">Revisa el registro de FreshRSS</a> para más información.',
 			'ok' => '%s ha quedado activado',
 		),
-		'invalid_view_mode' => 'Invalid view mode “%s”! Fall back to “Normal view”.',	// TODO
+		'invalid_view_mode' => 'Modo de vista inválido “%s”! Se usará “Vista normal”.',
 		'no_access' => 'No tienes acceso a %s',
 		'not_enabled' => '%s no está activado',
 		'not_found' => '%s no existe',
@@ -66,7 +66,7 @@ return array(
 	),
 	'profile' => array(
 		'error' => 'Tu perfil no puede ser modificado',
-		'passwords_dont_match' => 'Passwords don’t match',	// TODO
+		'passwords_dont_match' => 'Las contraseñas no coinciden',
 		'updated' => 'Tu perfil ha sido modificado',
 	),
 	'sub' => array(
@@ -97,8 +97,8 @@ return array(
 			'deleted' => 'Fuente eliminada',
 			'error' => 'No es posible actualizar la fuente',
 			'favicon' => array(
-				'too_large' => 'Uploaded icon is too large. The maximum file size is <em>%s</em>.',	// TODO
-				'unsupported_format' => 'Unsupported image file format!',	// TODO
+				'too_large' => 'El icono subido es demasiado grande. El tamaño máximo de archivo es <em>%s</em>.',
+				'unsupported_format' => '¡Formato de archivo de imagen no soportado!',
 			),
 			'internal_problem' => 'No ha sido posible agregar la fuente RSS. <a href="%s">Revisa el registro de FreshRSS </a> para más información. Puedes probar de forzarlo añadiendo la etiqueta <code>#force_feed</code> a la URL.',
 			'invalid_url' => 'La URL <em>%s</em> es inválida',
@@ -113,7 +113,7 @@ return array(
 				'http_error' => 'Error al cargar el contenido del sitio web.',
 				'no_entries' => 'No hay artículos en esta fuente. Necesitas al menos un artículo para crear una vista previa.',
 				'no_feed' => 'Error interno (no se puede encontrar la fuente).',
-				'no_result' => 'El selector no coincidió con nada. Como reserva, se mostrará el texto original de la fuente en su lugar.',
+				'no_result' => 'El selector no coincidió con nada. Como precaución, se mostrará el texto original de la fuente en su lugar.',
 				'selector_empty' => 'El selector está vacío. Debe definir uno para crear una vista previa.',
 			),
 			'updated' => 'Fuente actualizada',

+ 60 - 60
app/i18n/es/gen.php

@@ -16,14 +16,14 @@ return array(
 		'add' => 'Añadir',
 		'back_to_rss_feeds' => '← regresar a tus fuentes RSS',
 		'cancel' => 'Cancelar',
-		'close' => 'Close',	// TODO
+		'close' => 'Cerrar',
 		'create' => 'Crear',
-		'delete_all_feeds' => 'Delete all feeds',	// TODO
-		'delete_errored_feeds' => 'Delete feeds with errors',	// TODO
+		'delete_all_feeds' => 'Eliminar todas las fuentes',
+		'delete_errored_feeds' => 'Eliminar fuentes con errores',
 		'delete_muted_feeds' => 'Eliminar fuentes silenciadas',
 		'demote' => 'Degradar',
 		'disable' => 'Desactivar',
-		'download' => 'Download',	// TODO
+		'download' => 'Descargar',
 		'empty' => 'Vaciar',
 		'enable' => 'Activar',
 		'export' => 'Exportar',
@@ -46,7 +46,7 @@ return array(
 		'refresh_opml' => 'Actualizar OPML',
 		'remove' => 'Borrar',
 		'rename' => 'Cambiar el nombre a',
-		'see_website' => 'Ver web',
+		'see_website' => 'Ver página',
 		'submit' => 'Enviar',
 		'truncate' => 'Borrar todos los artículos',
 		'update' => 'Actualizar',
@@ -62,9 +62,9 @@ return array(
 			'format' => '<small>Mínimo de 7 caracteres</small>',
 		),
 		'reauth' => array(
-			'header' => 'Reauthentication is required',	// TODO
-			'tip' => 'You won’t be asked to sign in again for <u>%d minutes</u>',	// TODO
-			'title' => 'Reauthentication',	// TODO
+			'header' => 'Se requiere reautenticación',
+			'tip' => 'No se te pedirá que inicies sesión de nuevo durante <u>%d minutos</u>',
+			'title' => 'Reautenticación',
 		),
 		'registration' => array(
 			'_' => 'Nueva cuenta',
@@ -93,47 +93,47 @@ return array(
 		'april' => 'abril',
 		'aug' => 'ago',
 		'august' => 'agosto',
-		'before_yesterday' => 'Anteayer',
+		'before_yesterday' => 'anteayer',
 		'dec' => 'dic',
 		'december' => 'diciembre',
 		'feb' => 'feb',
 		'february' => 'febrero',
 		'format_date' => 'j %s Y',	// IGNORE
 		'format_date_hour' => 'j %s Y \\a\\t H\\:i',	// IGNORE
-		'fri' => 'Vie',
+		'fri' => 'vie',
 		'jan' => 'ene',
 		'january' => 'ene',
 		'jul' => 'jul',
 		'july' => 'julio',
 		'jun' => 'jun',
 		'june' => 'junio',
-		'last_2_year' => 'Últimos dos años',
-		'last_3_month' => 'Últimos tres meses',
-		'last_3_year' => 'Últimos tres años',
-		'last_5_year' => 'Últimos cinco años',
-		'last_6_month' => 'Últimos seis meses',
-		'last_month' => 'Mes pasado',
-		'last_week' => 'Semana pasada',
-		'last_year' => 'Año pasado',
+		'last_2_year' => 'últimos dos años',
+		'last_3_month' => 'últimos tres meses',
+		'last_3_year' => 'últimos tres años',
+		'last_5_year' => 'últimos cinco años',
+		'last_6_month' => 'últimos seis meses',
+		'last_month' => 'mes pasado',
+		'last_week' => 'semana pasada',
+		'last_year' => 'año pasado',
 		'mar' => 'mar',
 		'march' => 'marzo',
 		'may' => 'mayo',
 		'may_' => 'may',
-		'mon' => 'Lun',
-		'month' => 'meses',
+		'mon' => 'lun',
+		'month' => 'mes',
 		'nov' => 'nov',
 		'november' => 'noviembre',
 		'oct' => 'oct',
 		'october' => 'octubre',
-		'sat' => 'Sab',
+		'sat' => 'sab',
 		'sep' => 'sep',
 		'september' => 'septiembre',
-		'sun' => 'Dom',
-		'thu' => 'Jue',
-		'today' => 'Hoy',
-		'tue' => 'Mar',
-		'wed' => 'Mie',
-		'yesterday' => 'Ayer',
+		'sun' => 'dom',
+		'thu' => 'jue',
+		'today' => 'hoy',
+		'tue' => 'mar',
+		'wed' => 'mié',
+		'yesterday' => 'ayer',
 	),
 	'dir' => 'ltr',	// IGNORE
 	'freshrss' => array(
@@ -143,18 +143,18 @@ return array(
 	'js' => array(
 		'category_empty' => 'Vaciar categoría',
 		'confirm_action' => '¿Seguro que quieres hacerlo? No hay marcha atrás…',
-		'confirm_action_feed_cat' => '¿Seguro que quieres hacerlo? Perderás todos los favoritos relacionados y las peticiones de usuario. ¡Y no hay marcha atrás!',
-		'confirm_exit_slider' => 'Are you sure you want to discard unsaved settings?',	// TODO
+		'confirm_action_feed_cat' => '¿Seguro que quieres hacerlo? Perderás todos los favoritos relacionados y las búsquedas de usuario. ¡Y no hay marcha atrás!',
+		'confirm_exit_slider' => '¿Estás seguro de que quieres descartar los cambios no guardados?',
 		'feedback' => array(
 			'body_new_articles' => 'Hay %%d nuevos artículos para leer en FreshRSS.',
 			'body_unread_articles' => '(No leídos: %%d)',
 			'request_failed' => 'La petición ha fallado. Puede ser debido a problemas de conexión a internet.',
-			'title_new_articles' => 'FreshRSS: ¡Nuevos artículos!',
+			'title_new_articles' => 'FreshRSS: ¡nuevos artículos!',
 		),
 		'labels_empty' => 'Sin etiquetas',
 		'new_article' => 'Hay nuevos artículos disponibles. Pincha para refrescar la página.',
 		'should_be_activated' => 'JavaScript debe estar activado',
-		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
+		'unsafe_csp_header' => 'La cabecera CSP en uso no es segura y FreshRSS puede ser vulnerable a ataques XSS. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Ver documentación</a>',
 	),
 	'lang' => array(
 		'cs' => 'Čeština',	// IGNORE
@@ -189,7 +189,7 @@ return array(
 		'about' => 'Acerca de',
 		'account' => 'Cuenta',
 		'admin' => 'Administración',
-		'advanced_search' => 'Advanced Search',	// TODO
+		'advanced_search' => 'Búsqueda avanzada',
 		'archiving' => 'Archivo',
 		'authentication' => 'Identificación',
 		'check_install' => 'Verificación de instalación',
@@ -197,8 +197,8 @@ return array(
 		'display' => 'Visualización',
 		'extensions' => 'Extensiones',
 		'logs' => 'Registros',
-		'privacy' => 'Privacy',	// TODO
-		'queries' => 'Peticiones de usuario',
+		'privacy' => 'Privacidad',
+		'queries' => 'Vistas de usuario',
 		'reading' => 'Lectura',
 		'search' => 'Buscar palabras o #etiquetas',
 		'search_help' => 'Consulte la documentación sobre <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">parámetros de búsqueda</a>',
@@ -223,31 +223,31 @@ return array(
 		'translated' => 'Progress',	// IGNORE
 	),
 	'search' => array(
-		'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.',	// TODO
-		'authors' => 'Authors',	// TODO
-		'categories' => 'Categories',	// TODO
-		'content' => 'Content',	// TODO
-		'date_from' => 'From',	// TODO
-		'date_past' => 'In the past',	// TODO
-		'date_published' => 'Publication Date',	// TODO
-		'date_range' => 'Date Range',	// TODO
-		'date_received' => 'Received Date',	// TODO
-		'date_to' => 'To',	// TODO
-		'date_user' => 'User Modification Date',	// TODO
-		'feeds' => 'Feeds',	// TODO
-		'free_text' => 'Free Text',	// TODO
-		'free_text_help' => 'Search both in title and content',	// TODO
-		'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>',	// TODO
-		'labels' => 'My Labels',	// TODO
-		'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)',	// TODO
-		'sources' => 'Sources',	// TODO
-		'tags' => 'Article Tags',	// TODO
-		'text' => 'Text Search',	// TODO
-		'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.',	// TODO
-		'text_placeholder' => 'Keyword',	// TODO
-		'title' => 'Title',	// TODO
-		'url' => 'URL',	// TODO
-		'user_queries' => 'User Queries',	// TODO
+		'advanced_search_help' => 'Este formulario ayuda a construir consultas de búsqueda, pero las consultas manuales son aún más potentes.',
+		'authors' => 'Autores',
+		'categories' => 'Categorías',
+		'content' => 'Contenido',
+		'date_from' => 'Desde',
+		'date_past' => 'En el pasado',
+		'date_published' => 'Fecha de publicación',
+		'date_range' => 'Rango de fechas',
+		'date_received' => 'Fecha de recepción',
+		'date_to' => 'Hasta',
+		'date_user' => 'Fecha de modificación del usuario',
+		'feeds' => 'Fuentes',
+		'free_text' => 'Texto libre',
+		'free_text_help' => 'Buscar tanto en el título como en el contenido',
+		'full_documentation' => 'Ver <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">documentación completa de búsqueda</a>',
+		'labels' => 'Mis etiquetas',
+		'multiple_help' => 'Selecciona uno o más (mantén presionado <kbd>Ctrl</kbd> o <kbd>Cmd</kbd>)',
+		'sources' => 'Fuentes',
+		'tags' => 'Etiquetas de artículos',
+		'text' => 'Búsqueda de texto',
+		'text_help' => 'Las líneas múltiples se combinan mediante un <i>or</i> lógico. También admite <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">expresiones regulares</a>.',
+		'text_placeholder' => 'Palabra clave',
+		'title' => 'Título',
+		'url' => 'URL',	// IGNORE
+		'user_queries' => 'Vistas de usuario',
 	),
 	'share' => array(
 		'Known' => 'Sitios basados en conocidos',
@@ -279,7 +279,7 @@ return array(
 		'twitter' => 'Twitter',	// IGNORE
 		'wallabag' => 'wallabag v1',	// IGNORE
 		'wallabagv2' => 'wallabag v2',	// IGNORE
-		'web-sharing-api' => 'Sistema de intercambio',
+		'web-sharing-api' => 'Web Sharing API',
 		'whatsapp' => 'Whatsapp',	// IGNORE
 		'xing' => 'Xing',	// IGNORE
 	),

+ 41 - 41
app/i18n/es/index.php

@@ -16,13 +16,13 @@ return array(
 		'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>',	// IGNORE
 		'bug_reports' => array(
 			'environment_information' => array(
-				'_' => 'System information',	// TODO
-				'browser' => 'Browser',	// TODO
-				'database' => 'Database',	// TODO
-				'server_software' => 'Server software',	// TODO
-				'version_curl' => 'cURL version',	// TODO
-				'version_frss' => 'FreshRSS version',	// TODO
-				'version_php' => 'PHP version',	// TODO
+				'_' => 'Información del sistema',
+				'browser' => 'Navegador',
+				'database' => 'Base de datos',
+				'server_software' => 'Programas del servidor',
+				'version_curl' => 'Versión de cURL',
+				'version_frss' => 'Versión de FreshRSS',
+				'version_php' => 'Versión de PHP',
 			),
 		),
 		'bugs_reports' => 'Informe de fallos',
@@ -30,31 +30,31 @@ return array(
 		'freshrss_description' => 'FreshRSS es un agregador de fuentes RSS de alojamiento privado. Es una herramienta potente, pero ligera y fácil de usar y configurar.',
 		'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">en GitHub</a>',
 		'license' => 'Licencia',
-		'project_website' => 'Web del proyecto',
+		'project_website' => 'Página del proyecto',
 		'title' => 'Acerca de',
 		'version' => 'Versión',
 	),
 	'feed' => array(
 		'empty' => 'No hay artículos a mostrar.',
 		'published' => array(
-			'_' => 'Published',	// TODO
-			'future' => 'Published in the future',	// TODO
-			'today' => 'Published today',	// TODO
-			'yesterday' => 'Published yesterday',	// TODO
+			'_' => 'Publicado',
+			'future' => 'Publicado en el futuro',
+			'today' => 'Publicado hoy',
+			'yesterday' => 'Publicado ayer',
 		),
 		'received' => array(
-			'_' => 'Received',	// TODO
-			'today' => 'Received today',	// TODO
-			'yesterday' => 'Received yesterday',	// TODO
+			'_' => 'Recibido',
+			'today' => 'Recibido hoy',
+			'yesterday' => 'Recibido ayer',
 		),
 		'rss_of' => 'Fuente RSS de %s',
-		'title' => 'Salida Principal',
+		'title' => 'Bandeja principal',
 		'title_fav' => 'Favoritos',
 		'title_global' => 'Vista global',
 		'userModified' => array(
-			'_' => 'Modified by user',	// TODO
-			'today' => 'Modified by user today',	// TODO
-			'yesterday' => 'Modified by user yesterday',	// TODO
+			'_' => 'Modificado por usuario',
+			'today' => 'Modificado por usuario hoy',
+			'yesterday' => 'Modificado por usuario ayer',
 		),
 	),
 	'log' => array(
@@ -67,11 +67,11 @@ return array(
 		'about' => 'Acerca de FreshRSS',
 		'before_one_day' => 'Con más de 1 día',
 		'before_one_week' => 'Con más de una semana',
-		'bookmark_query' => 'Marcar consulta actual',
+		'bookmark_query' => 'Guardar vista actual',
 		'favorites' => 'Favoritos (%s)',
-		'global_view' => 'Vista Global',
+		'global_view' => 'Vista global',
 		'important' => 'Fuentes importantes',
-		'main_stream' => 'Salida Principal',
+		'main_stream' => 'Bandeja principal',
 		'mark_all_read' => 'Marcar todo como leído',
 		'mark_cat_read' => 'Marcar categoría como leída',
 		'mark_feed_read' => 'Marcar fuente como leída',
@@ -81,34 +81,34 @@ return array(
 		'non-starred' => 'Mostrar todos menos los favoritos',
 		'normal_view' => 'Vista normal',
 		'older_first' => 'Más antiguos primero',
-		'queries' => 'Peticiones de usuario',
+		'queries' => 'Búsquedas de usuario',
 		'read' => 'Mostrar solo los leídos',
 		'reader_view' => 'Vista de lectura',
 		'rss_view' => 'Fuente RSS',
 		'search_short' => 'Buscar',
 		'sort' => array(
-			'_' => 'Sorting criteria',	// TODO
+			'_' => 'Criterios de ordenación',
 			'c' => array(
-				'name_asc' => 'Category, feed titles A→Z',	// TODO
-				'name_desc' => 'Category, feed titles Z→A',	// TODO
+				'name_asc' => 'Categoría, títulos de fuentes A→Z',
+				'name_desc' => 'Categoría, títulos de fuentes Z→A',
 			),
-			'date_asc' => 'Publication date 1→9',	// TODO
-			'date_desc' => 'Publication date 9→1',	// TODO
+			'date_asc' => 'Fecha de publicación 1→9',
+			'date_desc' => 'Fecha de publicación 9→1',
 			'f' => array(
-				'name_asc' => 'Feed title A→Z',	// TODO
-				'name_desc' => 'Feed title Z→A',	// TODO
+				'name_asc' => 'Título de fuente A→Z',
+				'name_desc' => 'Título de fuente Z→A',
 			),
-			'id_asc' => 'Freshly received last',	// TODO
-			'id_desc' => 'Freshly received first',	// TODO
-			'length_asc' => 'Content length 1→9',	// TODO
-			'length_desc' => 'Content length 9→1',	// TODO
-			'link_asc' => 'Link A→Z',	// TODO
-			'link_desc' => 'Link Z→A',	// TODO
-			'rand' => 'Random order',	// TODO
-			'title_asc' => 'Title A→Z',	// TODO
-			'title_desc' => 'Title Z→A',	// TODO
-			'user_modified_asc' => 'User modified 1→9',	// TODO
-			'user_modified_desc' => 'User modified 9→1',	// TODO
+			'id_asc' => 'Recién recibido último',
+			'id_desc' => 'Recién recibido primero',
+			'length_asc' => 'Longitud de contenido 1→9',
+			'length_desc' => 'Longitud de contenido 9→1',
+			'link_asc' => 'Enlace A→Z',
+			'link_desc' => 'Enlace Z→A',
+			'rand' => 'Orden aleatorio',
+			'title_asc' => 'Título A→Z',
+			'title_desc' => 'Título Z→A',
+			'user_modified_asc' => 'Modificado por usuario 1→9',
+			'user_modified_desc' => 'Modificado por usuario 9→1',
 		),
 		'starred' => 'Mostrar solo los favoritos',
 		'stats' => 'Estadísticas',

+ 6 - 6
app/i18n/es/install.php

@@ -64,8 +64,8 @@ return array(
 		),
 		'files' => 'Instalación de Archivos',
 		'intl' => array(
-			'nok' => 'Cannot find the recommended library php-intl for internationalisation.',	// TODO
-			'ok' => 'You have the recommended library php-intl for internationalisation.',	// TODO
+			'nok' => 'No se ha podido localizar la librería recomendada php-intl para internacionalización.',
+			'ok' => 'Dispones de la librería recomendada php-intl para internacionalización.',
 		),
 		'json' => array(
 			'nok' => 'No se ha podido localizar la librería para procesar JSON.',
@@ -80,14 +80,14 @@ return array(
 			'ok' => 'Dispones de la librería necesaria para las expresiones regulares (PCRE).',
 		),
 		'pdo-mysql' => array(
-			'nok' => 'Cannot find the required PDO driver for MySQL/MariaDB.',	// TODO
+			'nok' => 'No se ha podido localizar el controlador PDO requerido para MySQL/MariaDB.',
 		),
 		'pdo-pgsql' => array(
-			'nok' => 'Cannot find the required PDO driver for PostgreSQL.',	// TODO
+			'nok' => 'No se ha podido localizar el controlador PDO requerido para PostgreSQL.',
 		),
 		'pdo-sqlite' => array(
-			'nok' => 'Cannot find the PDO driver for SQLite.',	// TODO
-			'ok' => 'You have the PDO driver for SQLite.',	// TODO
+			'nok' => 'No se ha podido localizar el controlador PDO requerido para SQLite.',
+			'ok' => 'Dispones del controlador PDO para SQLite.',
 		),
 		'pdo' => array(
 			'nok' => 'No se ha podido localizar PDO o uno de los controladores compatibles (pdo_sqlite, pdo_pgsql, pdo_mysql).',

+ 22 - 22
app/i18n/es/sub.php

@@ -50,7 +50,7 @@ return array(
 			'password' => 'Contraseña HTTP',
 			'username' => 'Nombre de usuario HTTP',
 		),
-		'change_favicon' => 'Change…',	// TODO
+		'change_favicon' => 'Cambiar…',
 		'clear_cache' => 'Borrar siempre la memoria caché',
 		'content_action' => array(
 			'_' => 'Acción de contenido al obtener el contenido del artículo',
@@ -58,7 +58,7 @@ return array(
 			'prepend' => 'Añadir antes del contenido existente',
 			'replace' => 'Reemplazar contenido existente',
 		),
-		'content_retrieval' => 'Content retrieval',	// TODO
+		'content_retrieval' => 'Descarga de contenido',
 		'css_cookie' => 'Usar cookies al obtener el contenido del artículo',
 		'css_cookie_help' => 'Ejemplo: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
 		'css_help' => 'Recibir fuentes RSS truncadas (aviso, ¡necesita más tiempo!)',
@@ -69,31 +69,31 @@ return array(
 		),
 		'description' => 'Descripción',
 		'empty' => 'La fuente está vacía. Por favor, verifica que siga activa.',
-		'error' => 'Hay un problema con esta fuente. Por favor, verifica que esté disponible.',	// DIRTY
+		'error' => 'Hay un problema con esta fuente. Por favor, verifica que esté disponible.',
 		'export-as-opml' => array(
 			'download' => 'Descargar',
 			'help' => 'archivo XML (conjunto de datos. <a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">Ver la documentación</a>)',
 			'label' => 'Exportar como OPML',
 		),
-		'ext_favicon' => 'Set automatically',	// TODO
-		'favicon_changed_by_ext' => 'The icon has been set by the <b>%s</b> extension.',	// TODO
+		'ext_favicon' => 'Establecer automáticamente',
+		'favicon_changed_by_ext' => 'El icono ha sido establecido por la extensión <b>%s</b>.',
 		'filteractions' => array(
 			'_' => 'Filtrar acciones',
 			'help' => 'Escribir un filtro de búsqueda por línea. Ver <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">documentación de operadores de búsqueda</a>.',
-			'view_filter' => 'Preview filters on existing articles (new window)',	// TODO
+			'view_filter' => 'Vista previa de filtros en artículos existentes (nueva ventana)',
 		),
-		'http_headers' => 'HTTP Headers',	// IGNORE
-		'http_headers_help' => 'Los Headers son separados por un salto de linea, y el nombre y valor de un Header son separados con dos puntos (e.g: <kbd><code>Accept: application/atom+xml<br />Authorization: Bearer some-token</code></kbd>).',
-		'icon' => 'Icon',	// TODO
+		'http_headers' => 'Cabeceras HTTP',
+		'http_headers_help' => 'Las cabeceras son separadas por un salto de línea, y el nombre y valor de una cabecera son separadas por dos puntos (e.g: <kbd><code>Accept: application/atom+xml<br />Authorization: Bearer some-token</code></kbd>).',
+		'icon' => 'Icono',
 		'information' => 'Información',
 		'keep_min' => 'Número mínimo de artículos a conservar',
 		'kind' => array(
 			'_' => 'Tipo de origen de la fuente',
 			'html_json' => array(
-				'_' => 'HTML + XPath + JSON dot notation (JSON en HTML)',
+				'_' => 'HTML + XPath + notación dot JSON (JSON en HTML)',
 				'xpath' => array(
 					'_' => 'XPath para JSON en HTML',
-					'help' => 'Ejemplo: <code>normalize-space(//script[@type="application/json"])</code> (single JSON)<br />or: <code>//script[@type="application/ld+json"]</code> (one JSON object per article)',	// DIRTY
+					'help' => 'Ejemplo: <code>normalize-space(//script[@type="application/json"])</code> (single JSON)<br />or: <code>//script[@type="application/ld+json"]</code> (un objecto JSON por artículo)',
 				),
 			),
 			'html_xpath' => array(
@@ -108,7 +108,7 @@ return array(
 					'help' => 'Ejemplo: <code>//div[@class="elemento-noticias"]</code>',
 				),
 				'item_author' => array(
-					'_' => 'author del elemento',
+					'_' => 'autor del elemento',
 					'help' => 'También puede ser un texto estático. Ejemplo: <code>"Anónimo"</code>',
 				),
 				'item_categories' => 'etiquetas del elemento',
@@ -130,10 +130,10 @@ return array(
 				),
 				'item_title' => array(
 					'_' => 'título del elemento',
-					'help' => 'Usar en particular el <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">eje XPath</a> <code>descendant::</code> como <code>descendant::h2</code>',
+					'help' => 'Usar <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">eje XPath</a> <code>descendant::</code> como <code>descendant::h2</code>',
 				),
 				'item_uid' => array(
-					'_' => 'ID único del elemento',
+					'_' => 'Identificador único del elemento',
 					'help' => 'Opcional. Ejemplo: <code>descendant::div/@data-uri</code>',
 				),
 				'item_uri' => array(
@@ -149,7 +149,7 @@ return array(
 					'_' => 'título de la fuente',
 					'help' => 'Ejemplo: <code>meta.title</code> o texto estático: <code>"Fuente personalizada"</code>',
 				),
-				'help' => 'Un punto JSON anotado utiliza puntos entre objetos y corchetes para matrices (ejemplo: <code>data.items[0].title</code>)',
+				'help' => 'Una notación de JSON anotada utiliza puntos entre objetos y corchetes para matrices (ejemplo: <code>data.items[0].title</code>)',
 				'item' => array(
 					'_' => 'buscando nuevos <strong>items</strong><br /><small>(más importante)</small>',
 					'help' => 'Ruta JSON a la matriz que contiene los elementos, ejemplo: <code>$</code> o <code>newsItems</code>',
@@ -207,18 +207,18 @@ return array(
 		'no_selected' => 'No hay fuentes seleccionadas.',
 		'number_entries' => '%d artículos',
 		'open_feed' => 'Fuente abierta %s',
-		'path_entries_conditions' => 'Conditions for content retrieval',	// TODO
+		'path_entries_conditions' => 'Condiciones para descarga de contenidos',
 		'priority' => array(
 			'_' => 'Visibilidad',
 			'category' => 'Mostrar en su categoría',
-			'feed' => 'Show in its feed',	// TODO
+			'feed' => 'Mostrar en su fuente',
 			'hidden' => 'No mostrar',
 			'important' => 'Mostrar en fuentes importantes',
-			'main_stream' => 'Mostrar en salida principal',
+			'main_stream' => 'Mostrar en bandeja principal',
 		),
 		'proxy' => 'Establecer un proxy para obtener esta fuente',
 		'proxy_help' => 'Seleccione un protocolo (e.g: SOCKS5) e introduzca la dirección del proxy (e.g: <kbd>127.0.0.1:1080</kbd> o <kbd>username:password@127.0.0.1:1080</kbd>)',
-		'reset_favicon' => 'Reset to default',	// TODO
+		'reset_favicon' => 'Restablecer a predeterminado',
 		'selector_preview' => array(
 			'show_raw' => 'Mostrar código fuente',
 			'show_rendered' => 'Mostrar contenido',
@@ -263,7 +263,7 @@ return array(
 	'import_export' => array(
 		'export' => array(
 			'_' => 'Exportar',
-			'sqlite' => 'Download user database as SQLite',	// TODO
+			'sqlite' => 'Descargar base de datos de usuario en formato SQLite',
 		),
 		'export_labelled' => 'Exporta tus artículos etiquetados',
 		'export_opml' => 'Exportar la lista de fuentes (OPML)',
@@ -283,7 +283,7 @@ return array(
 			'idle' => 'Fuentes inactivas',
 			'main' => 'Estadísticas principales',
 			'repartition' => 'Reparto de artículos',
-			'unread_dates' => 'Unread dates',	// TODO
+			'unread_dates' => 'Fechas no leídas',
 		),
 		'subscription_management' => 'Administración de suscripciones',
 		'subscription_tools' => 'Herramientas de suscripción',
@@ -301,7 +301,7 @@ return array(
 		'add_dynamic_opml' => 'Agrega un OPML dinámico',
 		'add_feed' => 'Añadir una fuente',
 		'add_label' => 'Añadir una etiqueta',
-		'add_opml_category' => 'OPML category name',	// TODO
+		'add_opml_category' => 'Nombre de la categoría OPML',
 		'delete_label' => 'Eliminar una etiqueta',
 		'feed_management' => 'Administración de fuentes RSS',
 		'subscription_tools' => 'Herramientas de suscripción',

+ 1 - 1
app/i18n/es/user.php

@@ -44,7 +44,7 @@ return array(
 	),
 	'tos' => array(
 		'feedback' => array(
-			'invalid' => 'Debe aceptar los Términos de Servicio para poder registrarse.',
+			'invalid' => 'Debe aceptar los términos de servicio para poder registrarse.',
 		),
 	),
 	'username' => array(