PHPIndex

This page lists files in the current directory. You can view content, get download/execute commands for Wget, Curl, or PowerShell, or filter the list using wildcards (e.g., `*.sh`).

admin.php
wget 'https://lists2.roe3.org/FreshRSS/app/i18n/es/admin.php'
View Content
<?php

/******************************************************************************/
/* Each entry of that file can be associated with a comment to indicate its   */
/* state. When there is no comment, it means the entry is fully translated.   */
/* The recognized comments are (comment matching is case-insensitive):        */
/*   + TODO: the entry has never been translated.                             */
/*   + DIRTY: the entry has been translated but needs to be updated.          */
/*   + IGNORE: the entry does not need to be translated.                      */
/* When a comment is not recognized, it is discarded.                         */
/******************************************************************************/

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)</small>',
		'form' => 'Formulario Web (el más habitual, requiere JavaScript)',
		'http' => 'HTTP (para usuarios avanzados con HTTPS)',
		'none' => 'Ninguno (peligroso)',
		'title' => 'Identificación',
		'token' => 'Token de autentificación Master',
		'token_help' => 'Permite el acceso a todas las salidas RSS del usuario así como la actualización de fuentes sin autenticación:',
		'type' => 'Método de identificación',
		'unsafe_autologin' => 'Permite la identificación automática insegura usando el formato: ',
	),
	'check_install' => array(
		'cache' => array(
			'nok' => 'Comprueba los permisos en el directorio <em>./data/cache</em> . El servidor HTTP debe contar con permiso de escritura',
			'ok' => 'Los permisos en el cache son correctos.',
		),
		'categories' => array(
			'nok' => 'La tabla Categorías está configurada de forma incorrecta.',
			'ok' => 'La tabla Categorías está correcta.',
		),
		'connection' => array(
			'nok' => 'No se pudo establecer una conexión con la base de datos.',
			'ok' => 'La conexión con la base de datos es correcta.',
		),
		'ctype' => array(
			'nok' => 'No se puedo encontrar la librería necesaria para compropbar el tipo de caracteres (php-ctype).',
			'ok' => 'Dispones de la librería necesaria para la verificación del tipo de caracteres (ctype).',
		),
		'curl' => array(
			'nok' => 'No se pudo encontrar la librería cURL (paquete php-curl).',
			'ok' => 'Dispones de la librería cURL.',
		),
		'data' => array(
			'nok' => 'Comprueba los permisos en el directorio <em>./data</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos en el directorio data son correctos.',
		),
		'database' => 'Instalación de la base de datos',
		'dom' => array(
			'nok' => 'No se ha podido localizar la librería necesaria para explorar el DOM (paquete php-xml).',
			'ok' => 'Dispones de la librería necesaria para explorar el DOM.',
		),
		'entries' => array(
			'nok' => 'La tabla de entrada no está configurada correctamente.',
			'ok' => 'La tabla de entrada está correcta.',
		),
		'favicons' => array(
			'nok' => 'Comprueba los permisos en el directorio <em>./data/favicons</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos en el directorio favicons son correctos.',
		),
		'feeds' => array(
			'nok' => 'La tabla Fuentes está configurada de forma incorrecta.',
			'ok' => 'La tabla Fuentes está correcta.',
		),
		'fileinfo' => array(
			'nok' => 'No se ha podido localizar la librería PHP fileinfo (paquete fileinfo).',
			'ok' => 'Dispones de la librería fileinfo.',
		),
		'files' => 'Instalación de Archivos',
		'json' => array(
			'nok' => 'No se ha podido localizar JSON (paquete php-json).',
			'ok' => 'Dispones de la extensión JSON.',
		),
		'mbstring' => array(
			'nok' => 'No se puede encontrar la biblioteca mbstring recomendada para Unicode.',
			'ok' => 'Tiene la biblioteca mbstring recomendada para Unicode.',
		),
		'pcre' => array(
			'nok' => 'No se ha podido localizar la librería para las expresiones regulares (php-pcre).',
			'ok' => 'Dispones de la librería necesaria para expresiones regulares (PCRE).',
		),
		'pdo' => array(
			'nok' => 'No se ha podido localiar PDO o uno de los controladores compatibles (pdo_mysql, pdo_sqlite, pdo_pgsql).',
			'ok' => 'Dispones de PDO y, al menos, de uno de los controladores compatibles (pdo_mysql, pdo_sqlite, pdo_pgsql).',
		),
		'php' => array(
			'_' => 'Instalación PHP',
			'nok' => 'Dispones de la versión PHP %s pero FreshRSS requiere de, al menos, la versión %s.',
			'ok' => 'Dispones de la versión PHP %s, que es compatible con FreshRSS.',
		),
		'tables' => array(
			'nok' => 'Falta al menos una tabla en la base de datos.',
			'ok' => 'Todas las tablas necesarias están disponibles en la base de datos.',
		),
		'title' => 'Verificación de instalación',
		'tokens' => array(
			'nok' => 'Comprueba los permisos en el directorio <em>./data/tokens</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos en el directorio de tokens de identificación son correctos.',
		),
		'users' => array(
			'nok' => 'Comprueba los permisos en el directorio <em>./data/users</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos en el directorio users son correctos.',
		),
		'zip' => array(
			'nok' => 'No se ha podido localizar la extensión ZIP (paquete php-zip).',
			'ok' => 'Dispones de la extensión ZIP.',
		),
	),
	'extensions' => array(
		'author' => 'Autor',
		'community' => 'Extensiones de comunidad disponibles',
		'description' => 'Descripción',
		'disabled' => 'Desactivado',
		'empty_list' => 'No hay extensiones instaladas',
		'enabled' => 'Activado',
		'latest' => 'Instalado',
		'name' => 'Nombre',
		'no_configure_view' => 'Esta extensión no puede ser configurada.',
		'system' => array(
			'_' => 'Sistema de extensiones',
			'no_rights' => 'Sistema de extensiones (careces de los permisos necesarios)',
		),
		'title' => 'Extensiones',
		'update' => 'Actualización disponible',
		'user' => 'Extensiones de usuario',
		'version' => 'Versión',
	),
	'stats' => array(
		'_' => 'Estadísticas',
		'all_feeds' => 'Todas las fuentes',
		'category' => 'Categoría',
		'entry_count' => 'Cómputo total',
		'entry_per_category' => 'Entradas por categoría',
		'entry_per_day' => 'Entradas por día (últimos 30 días)',
		'entry_per_day_of_week' => 'Por día de la semana (media: %.2f mensajes)',
		'entry_per_hour' => 'Por hora (media: %.2f mensajes)',
		'entry_per_month' => 'Por mes (media: %.2f mensajes)',
		'entry_repartition' => 'Reparto de entradas',
		'feed' => 'Fuente',
		'feed_per_category' => 'Fuentes por categoría',
		'idle' => 'Fuentes inactivas',
		'main' => 'Estadísticas principales',
		'main_stream' => 'Salida principal',
		'no_idle' => 'No hay fuentes inactivas',
		'number_entries' => '%d artículos',
		'percent_of_total' => '% del total',
		'repartition' => 'Reparto de artículos',
		'status_favorites' => 'Favoritos',
		'status_read' => 'Leídos',
		'status_total' => 'Total',	// IGNORE
		'status_unread' => 'Pendientes',
		'title' => 'Estadísticas',
		'top_feed' => 'Las 10 fuentes más activas',
	),
	'system' => array(
		'_' => 'Configuración del sistema',
		'auto-update-url' => 'URL de auto-actualización',
		'base-url' => array(
			'_' => 'URL Base',
			'recommendation' => 'Recomendación automática: <kbd>%s</kbd>',
		),
		'cookie-duration' => array(
			'help' => 'en segundos',
			'number' => 'Duración para mantenerse conectado',
		),
		'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',
		'max-feeds' => 'Límite de fuentes por usuario',
		'registration' => array(
			'number' => 'Número máximo de cuentas',
			'select' => array(
				'label' => 'Formulario de registro',
				'option' => array(
					'noform' => 'Deshabilitado: Sin formulario de registro',
					'nolimit' => 'Habilitado: Sin límite de cuentas',
					'setaccountsnumber' => 'Establece el número máximo de cuentas',
				),
			),
			'status' => array(
				'disabled' => 'Formulario deshabilitado',
				'enabled' => 'Formulario habilitado',
			),
			'title' => 'Formulario de registro del usuario',
		),
		'sensitive-parameter' => 'Parámetro sensible. Lo puedes editar manualmente en <kbd>./data/config.php</kbd>',
		'tos' => array(
			'disabled' => 'no se proporciona',
			'enabled' => '<a href="./?a=tos">está activado</a>',
			'help' => 'Cómo <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">activar las Condiciones de servicio</a>',
		),
		'websub' => array(
			'help' => 'Acerca de <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',
		),
	),
	'update' => array(
		'_' => 'Actualizar sistema',
		'apply' => 'Aplicar',
		'changelog' => 'Changelog',	// IGNORE
		'check' => 'Buscar actualizaciones',
		'copiedFromURL' => 'update.php copiado desde %s a ./data',
		'current_version' => 'Dispones de la versión',
		'last' => 'Última comprobación',
		'loading' => 'Actualizando…',
		'none' => 'No hay actualizaciones disponibles',
		'releaseChannel' => array(
			'_' => 'Canal de publicación',
			'edge' => 'Publicación en marcha (“edge”)',
			'latest' => 'Publicación estable (“latest”)',
		),
		'title' => 'Actualizar sistema',
		'viaGit' => 'Actualización vía git and GitHub.com comenzada',
	),
	'user' => array(
		'admin' => 'Administrador',
		'article_count' => 'Artículos',
		'back_to_manage' => '← Volver a la lista de usuarios',
		'create' => 'Crear nuevo usuario',
		'database_size' => 'Tamaño de la base de datos',
		'email' => 'Dirección de correo electrónico',
		'enabled' => 'Permitido',
		'feed_count' => 'Fuentes',
		'is_admin' => 'Es admin',
		'language' => 'Idioma',
		'last_user_activity' => 'Última actividad del usuario',
		'list' => 'Lista de usuarios',
		'number' => 'Hay %d cuenta creada',
		'numbers' => 'Hay %d cuentas creadas',
		'password_form' => 'Contraseña<br /><small>(para el método de identificación por formulario web)</small>',
		'password_format' => 'Mínimo de 7 caracteres',
		'title' => 'Administrar usuarios',
		'username' => 'Nombre de usuario',
	),
);
conf.php
wget 'https://lists2.roe3.org/FreshRSS/app/i18n/es/conf.php'
View Content
<?php

/******************************************************************************/
/* Each entry of that file can be associated with a comment to indicate its   */
/* state. When there is no comment, it means the entry is fully translated.   */
/* The recognized comments are (comment matching is case-insensitive):        */
/*   + TODO: the entry has never been translated.                             */
/*   + DIRTY: the entry has been translated but needs to be updated.          */
/*   + IGNORE: the entry does not need to be translated.                      */
/* When a comment is not recognized, it is discarded.                         */
/******************************************************************************/

return array(
	'archiving' => array(
		'_' => 'Archivo',
		'exception' => 'Excepción de purga',
		'help' => 'Hay más opciones disponibles en los ajustes de la fuente',
		'keep_favourites' => 'Nunca elimines favoritos',
		'keep_labels' => 'Nunca elimine etiquetas',
		'keep_max' => 'Número máximo de artículos a conservar por fuente',
		'keep_min_by_feed' => 'Número mínimo de artículos a conservar por fuente',
		'keep_period' => 'Edad máxima de los artículos a conservar',
		'keep_unreads' => 'Nunca elimine artículos no leídos',
		'maintenance' => 'Mantenimiento',
		'optimize' => 'Optimizar la base de datos',
		'optimize_help' => 'Ejecuta la optimización de vez en cuando para reducir el tamaño de la base de datos',
		'policy' => 'Política de purga',
		'policy_warning' => 'Si no se selecciona ninguna política de purga, se conservarán todos los artículos.',
		'purge_now' => 'Limpiar ahora',
		'title' => 'Archivo',
		'ttl' => 'No actualizar automáticamente más de',
	),
	'display' => array(
		'_' => 'Visualización',
		'darkMode' => array(
			'_' => 'Modo oscuro automático',
			'auto' => 'Automático',
			'help' => 'Solo para temas compatibles',
			'no' => 'No',	// IGNORE
		),
		'icon' => array(
			'bottom_line' => 'Línea inferior',
			'display_authors' => 'Autores',
			'entry' => 'Iconos de artículos',
			'publication_date' => 'Fecha de publicación',
			'related_tags' => 'Etiquetas relacionadas',
			'sharing' => 'Compartir',
			'summary' => 'Resumen',
			'top_line' => 'Línea superior',
		),
		'language' => 'Idioma',
		'notif_html5' => array(
			'seconds' => 'segundos (0 significa sin límite de espera)',
			'timeout' => 'Notificación de fin de espera HTML5',
		),
		'show_nav_buttons' => 'Mostrar los botones de navegación',
		'theme' => array(
			'_' => 'Tema',
			'deprecated' => array(
				'_' => 'Obsoleto',
				'description' => 'Este tema no tiene soporte y no volverá a estar disponible en <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">Futuros lanzamientos de FreshRSS</a>',
			),
		),
		'theme_not_available' => 'El tema “%s” ya no está disponible. Por favor, elija otro tema.',
		'thumbnail' => array(
			'label' => 'Miniatura',
			'landscape' => 'Horizontal',
			'none' => 'Ninguno',
			'portrait' => 'Retrato',
			'square' => 'Cuadrado',
		),
		'timezone' => 'Zona Horaria',
		'title' => 'Visualización',
		'website' => array(
			'full' => 'Icono y nombre',
			'icon' => 'Solo icono',
			'label' => 'Sitio web',
			'name' => 'Solo nombre',
			'none' => 'Ninguno',
		),
		'width' => array(
			'content' => 'Ancho de contenido',
			'large' => 'Grande',
			'medium' => 'Mediano',
			'no_limit' => 'Sin límite',
			'thin' => 'Estrecho',
		),
	),
	'logs' => array(
		'loglist' => array(
			'level' => 'Nivel de registro',
			'message' => 'Mensaje de registro',
			'timestamp' => 'Marca de tiempo',
		),
		'pagination' => array(
			'first' => 'Primero',
			'last' => 'Último',
			'next' => 'Siguiente',
			'previous' => 'Anterior',
		),
	),
	'profile' => array(
		'_' => 'Administración de perfiles',
		'api' => 'Administración de API',
		'delete' => array(
			'_' => 'Borrar cuenta',
			'warn' => 'Tu cuenta y todos los datos asociados serán eliminados.',
		),
		'email' => 'Correo electrónico',
		'password_api' => 'Contraseña API <br /><small>(para apps móviles, por ej.)</small>',
		'password_form' => 'Contraseña<br /><small>(para el método de identificación por formulario web)</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.',
		'description' => 'Descripción',
		'filter' => array(
			'_' => 'Filtro aplicado:',
			'categories' => 'Mostrar por categoría',
			'feeds' => 'Mostrar por fuente',
			'order' => 'Ordenar por fecha',
			'search' => 'Expresión',
			'shareOpml' => 'Permitir que OPML comparta las categorías y fuentes correspondientes',
			'shareRss' => 'Permite compartir por HTML &amp; RSS',
			'state' => 'Estado',
			'tags' => 'Mostrar por etiqueta',
			'type' => 'Tipo',
		),
		'get_all' => 'Mostrar todos los artículos',
		'get_all_labels' => 'Mostrar artículos con cualquier etiqueta',
		'get_category' => 'Mostrar la categoría “%s”',
		'get_favorite' => 'Mostrar artículos favoritos',
		'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>.',
		'image_url' => 'URL de la imagen',
		'name' => 'Nombre',
		'no_filter' => 'Sin filtro',
		'number' => 'Consulta 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',
			'greader' => 'Shareable link to the GReader JSON',	// TODO
			'help' => 'Dale este enlace si quieres compartir esta consulta 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',
		),
		'state_0' => 'Mostrar todos los artículos',
		'state_1' => 'Mostrar artículos leídos',
		'state_2' => 'Mostrar artículos pendientes',
		'state_3' => 'Mostrar todos los artículos',
		'state_4' => 'Mostrar artículos favoritos',
		'state_5' => 'Mostrar artículos favoritos leídos',
		'state_6' => 'Mostrar artículos favoritos pendientes',
		'state_7' => 'Mostrar artículos favoritos',
		'state_8' => 'Mostrar artículos no favoritos',
		'state_9' => 'Mostrar artículos no favoritos leídos',
		'state_10' => 'Mostrar artículos no favoritos pendientes',
		'state_11' => 'Mostrar artículos no favoritos',
		'state_12' => 'Mostrar todos los artículos',
		'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',
	),
	'reading' => array(
		'_' => 'Lectura',
		'after_onread' => 'Tras “marcar todo como leído”,',
		'always_show_favorites' => 'Mostrar todos los artículos en favoritos de forma predeterminada',
		'article' => array(
			'authors_date' => array(
				'_' => 'Autores y fecha',
				'both' => 'En el encabezado y pie de página',
				'footer' => 'En el pie de página',
				'header' => 'En el encabezado',
				'none' => 'Ninguno',
			),
			'feed_name' => array(
				'above_title' => 'Encima de título/etiquetas',
				'none' => 'Ninguno',
				'with_authors' => 'En la fila de autores y fecha',
			),
			'feed_title' => 'Título de la fuente',
			'icons' => array(
				'_' => 'Posición de los iconos del artículo<br /><small>(Solo en vista de lectura)</small>',
				'above_title' => 'Encima del título',
				'with_authors' => 'En la fila de autores y fecha',
			),
			'tags' => array(
				'_' => 'Etiquetas',
				'both' => 'En el encabezado y pie de página',
				'footer' => 'En el pie de página',
				'header' => 'En el encabezado',
				'none' => 'Ninguno',
			),
			'tags_max' => array(
				'_' => 'Máximo número de etiquetas a mostrar',
				'help' => '0 significa: mostrar todas las etiquetas y que no estén colapsadas',
			),
		),
		'articles_per_page' => 'Número de artículos por página',
		'auto_load_more' => 'Cargar más artículos al final de la página',
		'auto_remove_article' => 'Ocultar artículos tras la lectura',
		'confirm_enabled' => 'Mostrar ventana de confirmación al usar la función “marcar todos como leídos”',
		'display_articles_unfolded' => 'Mostrar los artículos expandidos por defecto',
		'display_categories_unfolded' => 'Categorías a desarrollar',
		'headline' => array(
			'articles' => 'Artículos: Abrir/Cerrar',
			'articles_header_footer' => 'Artículos: encabezado/pie de página',
			'categories' => 'Navegación izquierda: Categorías',
			'mark_as_read' => 'Marcar artículo como leído',
			'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',
		'jump_next' => 'saltar al siguiente archivo sin leer emparentado (fuente o categoría)',
		'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_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',
			'scroll' => 'durante el desplazamiento (excepto para fuentes importantes)',
			'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' => 'Si ya existe un título idéntico en la parte superior <i>n</i> artículos más recientes',
		),
		'show' => array(
			'_' => 'Artículos a mostrar',
			'active_category' => 'Categoría activa',
			'adaptive' => 'Ajustar la visualización',
			'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',
		),
		'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á',
		'sort' => array(
			'_' => 'Orden',
			'newer_first' => 'Nuevos primero',
			'older_first' => 'Antiguos primero',
		),
		'star' => array(
			'when' => 'Mark an article as favourite…',	// TODO
		),
		'sticky_post' => 'Pegar 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',
		),
	),
	'sharing' => array(
		'_' => 'Compartir',
		'add' => 'Agregar un método de uso compartido',
		'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>.',
		'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',
		'shaarli' => 'Shaarli',	// IGNORE
		'share_name' => 'Compartir nombre a mostrar',
		'share_url' => 'Compartir URL a usar',
		'title' => 'Compartir',
		'twitter' => 'Twitter',	// IGNORE
		'wallabag' => 'wallabag',	// IGNORE
	),
	'shortcut' => 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.',
		'close_dropdown' => 'Cerrar menús',
		'collapse_article' => 'Contraer',
		'first_article' => 'Saltar al primer artículo',
		'focus_search' => 'Acceso a la casilla de búsqueda',
		'global_view' => 'Cambiar a la vista global',
		'help' => 'Mostrar documentación',
		'javascript' => 'JavaScript debe estar activado para poder usar atajos de teclado',
		'last_article' => 'Saltar al último artículo',
		'load_more' => 'Cargar más artículos',
		'mark_favorite' => 'Marcar como favorito',
		'mark_read' => 'Marcar como leído',
		'navigation' => 'Navegación',
		'navigation_help' => 'Con el modificador <kbd>⇧ Mayúsculas</kbd> es posible usar los atajos de teclado en las fuentes.<br/>Con el modificador <kbd>Alt ⎇</kbd> es posible aplicar los atajos de teclado en las categorías.',
		'navigation_no_mod_help' => 'Los siguientes accesos directos de navegación no admiten modificadores.',
		'next_article' => 'Saltar al siguiente artículo',
		'next_unread_article' => 'Abrir el siguiente artículo no leído',
		'non_standard' => 'Es posible que algunas teclas (<kbd>%s</kbd>) no funcionen como métodos abreviados.',
		'normal_view' => 'Cambiar a la vista normal',
		'other_action' => 'Otras acciones',
		'previous_article' => 'Saltar al artículo anterior',
		'reading_view' => 'Cambiar a la vista de lectura',
		'rss_view' => 'Abrir como fuente RSS',
		'see_on_website' => 'Ver en la web original',
		'shift_for_all_read' => '+ <kbd>Alt ⎇</kbd> para marcar los artículos anteriores como leídos<br />+ <kbd>⇧ Shift</kbd> marcar todos los artículos como leídos',
		'skip_next_article' => 'Enfoque siguiente sin abrir',
		'skip_previous_article' => 'Enfoque anterior sin abrir',
		'title' => 'Atajos de teclado',
		'toggle_media' => 'Jugar/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',
	),
	'user' => array(
		'articles_and_size' => '%s artículos (%s)',
		'current' => 'Usuario actual',
		'is_admin' => 'es administrador',
		'users' => 'Usuarios',
	),
);
feedback.php
wget 'https://lists2.roe3.org/FreshRSS/app/i18n/es/feedback.php'
View Content
<?php

/******************************************************************************/
/* Each entry of that file can be associated with a comment to indicate its   */
/* state. When there is no comment, it means the entry is fully translated.   */
/* The recognized comments are (comment matching is case-insensitive):        */
/*   + TODO: the entry has never been translated.                             */
/*   + DIRTY: the entry has been translated but needs to be updated.          */
/*   + IGNORE: the entry does not need to be translated.                      */
/* When a comment is not recognized, it is discarded.                         */
/******************************************************************************/

return array(
	'access' => array(
		'denied' => 'No dispones de permiso para acceder a esta página',
		'not_found' => 'La página que buscas no existe',
	),
	'admin' => array(
		'optimization_complete' => 'Optimización completada',
	),
	'api' => array(
		'password' => array(
			'failed' => 'Su contraseña no se puede modificar',
			'updated' => 'Su contraseña ha sido modificada',
		),
	),
	'auth' => array(
		'login' => array(
			'invalid' => 'Identificación incorrecta',
			'success' => 'Conexión',
		),
		'logout' => array(
			'success' => 'Desconexión',
		),
	),
	'conf' => array(
		'error' => 'Hubo un error durante el guardado de la configuración.',
		'query_created' => 'Se ha creado la petición “%s”.',
		'shortcuts_updated' => 'Se han actualizado los atajos de teclado',
		'updated' => 'Se ha actualizado la configuración',
	),
	'extensions' => array(
		'already_enabled' => '%s ya está activado',
		'cannot_remove' => '%s no se puede quitar',
		'disable' => array(
			'ko' => '%s no se puede desactivar. <a href="%s">Revisa el registro de FreshRSS</a> para más información.',
			'ok' => '%s ha quedado desactivado',
		),
		'enable' => 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',
		),
		'no_access' => 'No tienes acceso a %s',
		'not_enabled' => '%s no está activado',
		'not_found' => '%s no existe',
		'removed' => '%s eliminado',
	),
	'import_export' => array(
		'export_no_zip_extension' => 'La extensión ZIP no está disponible en tu servidor. Por favor, exporta estos archivos uno a uno.',
		'feeds_imported' => 'Se han importado tus fuentes y quedarán actualizadas. Si has terminado, puedes hacer click en el botón <i>Actualizar fuentes</i>.',
		'feeds_imported_with_errors' => 'Se importaron tus fuentes; pero hubo algunos errores. Si has terminado, puedes hacer click en el botón <i>Actualizar fuentes</i>',
		'file_cannot_be_uploaded' => 'No es posible enviar el archivo',
		'no_zip_extension' => 'La extensión ZIP no está disponible en tu servidor.',
		'zip_error' => 'Hubo un error durante la importación del ZIP.',
	),
	'profile' => array(
		'error' => 'Tu perfil no puede ser modificado',
		'updated' => 'Tu perfil ha sido modificado',
	),
	'sub' => array(
		'actualize' => 'Actualización',
		'articles' => array(
			'marked_read' => 'Los artículos seleccionados han sido marcados como leídos.',
			'marked_unread' => 'Los artículos han sido marcados como no leídos.',
		),
		'category' => array(
			'created' => 'Se ha creado la categoría %s.',
			'deleted' => 'Se ha eliminado la categoría.',
			'emptied' => 'Se ha vaciado la categoría',
			'error' => 'No es posible actualizar la categoría',
			'name_exists' => 'Ya existe una categoría con ese nombre.',
			'no_id' => 'Debes especificar la id de la categoría.',
			'no_name' => '¡El nombre de la categoría no puede dejarse en blanco!.',
			'not_delete_default' => '¡No puedes borrar la categoría por defecto!',
			'not_exist' => 'La categoría no existe',
			'over_max' => 'Has alcanzado el límite de categorías (%d)',
			'updated' => 'La categoría se ha actualizado.',
		),
		'feed' => array(
			'actualized' => '<em>%s</em> ha sido actualizada',
			'actualizeds' => 'Las fuentes RSS se han actualizado',
			'added' => 'Fuente RSS agregada <em>%s</em>',
			'already_subscribed' => 'Ya estás suscrito a <em>%s</em>',
			'cache_cleared' => '<em>%s</em> se ha borrado la caché',
			'deleted' => 'Fuente eliminada',
			'error' => 'No es posible actualizar la fuente',
			'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',
			'n_actualized' => 'Se han actualizado %d fuentes',
			'n_entries_deleted' => 'Se han eliminado %d artículos',
			'no_refresh' => 'No hay fuente a actualizar…',
			'not_added' => '<em>%s</em> no ha podido se añadida',
			'not_found' => 'No se puede encontrar la fuente',
			'over_max' => 'Has alcanzado tu límite de fuentes (%d)',
			'reloaded' => '<em>%s</em> se ha vuelto a cargar',
			'selector_preview' => 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.',
				'selector_empty' => 'El selector está vacío. Debe definir uno para crear una vista previa.',
			),
			'updated' => 'Fuente actualizada',
		),
		'purge_completed' => 'Limpieza completada (se han eliminado %d artículos)',
	),
	'tag' => array(
		'created' => 'Se ha creado la etiqueta “%s”.',
		'error' => '¡La etiqueta no se pudo actualizar!',
		'name_exists' => 'El nombre de la etiqueta ya existe.',
		'renamed' => 'La etiqueta “%s” ha sido renombrada a “%s”.',
		'updated' => 'La etiqueta se ha actualizado.',
	),
	'update' => array(
		'can_apply' => 'FreshRSS se va a actualizar a la <strong>versión %s</strong>.',
		'error' => 'Hubo un error durante el proceso de actualización: %s',
		'file_is_nok' => 'Disponible la nueva <strong>versión %s</strong>. Sin embargo, debes revisar los permisos en el directorio <em>%s</em>. El servidor HTTP debe contar con permisos de escritura',
		'finished' => '¡Actualización completada!',
		'none' => 'No hay actualizaciones para procesar',
		'server_not_found' => 'No se ha podido conectar con el servidor de actualizaciones. [%s]',
	),
	'user' => array(
		'created' => array(
			'_' => 'Se ha creado el usuario %s',
			'error' => 'No se ha podido crear al usuario %s',
		),
		'deleted' => array(
			'_' => 'El usuario %s ha sido eliminado',
			'error' => 'El usuario %s no ha podido ser eliminado',
		),
		'updated' => array(
			'_' => 'Se ha actualizado el usuario %s',
			'error' => 'El usuario %s no se ha actualizado',
		),
	),
);
gen.php
wget 'https://lists2.roe3.org/FreshRSS/app/i18n/es/gen.php'
View Content
<?php

/******************************************************************************/
/* Each entry of that file can be associated with a comment to indicate its   */
/* state. When there is no comment, it means the entry is fully translated.   */
/* The recognized comments are (comment matching is case-insensitive):        */
/*   + TODO: the entry has never been translated.                             */
/*   + DIRTY: the entry has been translated but needs to be updated.          */
/*   + IGNORE: the entry does not need to be translated.                      */
/* When a comment is not recognized, it is discarded.                         */
/******************************************************************************/

return array(
	'action' => array(
		'actualize' => 'Actualizar fuentes',
		'add' => 'Añadir',
		'back' => '← Volver',
		'back_to_rss_feeds' => '← regresar a tus fuentes RSS',
		'cancel' => 'Cancelar',
		'create' => 'Crear',
		'delete_muted_feeds' => 'Eliminar fuentes silenciadas',
		'demote' => 'Degradar',
		'disable' => 'Desactivar',
		'empty' => 'Vaciar',
		'enable' => 'Activar',
		'export' => 'Exportar',
		'filter' => 'Filtrar',
		'import' => 'Importar',
		'load_default_shortcuts' => 'Cargar accesos directos predeterminados',
		'manage' => 'Administrar',
		'mark_read' => 'Marcar como leído',
		'menu' => array(
			'open' => 'Abrir menú',
		),
		'nav_buttons' => array(
			'next' => 'Siguiente artículo',
			'prev' => 'Anterior artículo',
			'up' => 'Ir arriba',
		),
		'open_url' => 'Abrir URL',
		'promote' => 'Promover',
		'purge' => 'Eliminar',
		'refresh_opml' => 'Actualizar OPML',
		'remove' => 'Borrar',
		'rename' => 'Cambiar el nombre a',
		'see_website' => 'Ver web',
		'submit' => 'Enviar',
		'truncate' => 'Borrar todos los artículos',
		'update' => 'Actualizar',
	),
	'auth' => array(
		'accept_tos' => 'Acepto los <a href="%s">Términos de Servicio</a>.',
		'email' => 'Correo electrónico',
		'keep_logged_in' => 'Mantenerme identificado <small>(%s días)</small>',
		'login' => 'Conectar',
		'logout' => 'Desconectar',
		'password' => array(
			'_' => 'Contraseña',
			'format' => '<small>Mínimo de 7 caracteres</small>',
		),
		'registration' => array(
			'_' => 'Nueva cuenta',
			'ask' => '¿Crear una cuenta?',
			'title' => 'Creación de cuenta',
		),
		'username' => array(
			'_' => 'Nombre de usuario',
			'format' => '<small>Máximo 16 caracteres alfanuméricos</small>',
		),
	),
	'date' => array(
		'Apr' => '\\A\\b\\r\\i\\l',
		'Aug' => '\\A\\g\\o\\s\\t\\o',
		'Dec' => '\\D\\i\\c\\i\\e\\m\\b\\r\\e',
		'Feb' => '\\F\\e\\b\\r\\e\\r\\o',
		'Jan' => '\\E\\n\\e\\r\\o',
		'Jul' => '\\J\\u\\l\\i\\o',
		'Jun' => '\\J\\u\\n\\i\\o',
		'Mar' => '\\M\\a\\r\\z\\o',
		'May' => '\\M\\a\\y\\o',
		'Nov' => '\\N\\o\\v\\i\\e\\m\\b\\r\\e',
		'Oct' => '\\O\\c\\t\\u\\b\\r\\e',
		'Sep' => '\\S\\e\\p\\t\\i\\e\\m\\b\\r\\e',
		'apr' => 'abr',
		'april' => 'abril',
		'aug' => 'ago',
		'august' => 'agosto',
		'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',
		'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',
		'mar' => 'mar',
		'march' => 'marzo',
		'may' => 'mayo',
		'may_' => 'may',
		'mon' => 'Lun',
		'month' => 'meses',
		'nov' => 'nov',
		'november' => 'noviembre',
		'oct' => 'oct',
		'october' => 'octubre',
		'sat' => 'Sab',
		'sep' => 'sep',
		'september' => 'septiembre',
		'sun' => 'Dom',
		'thu' => 'Jue',
		'today' => 'Hoy',
		'tue' => 'Mar',
		'wed' => 'Mie',
		'yesterday' => 'Ayer',
	),
	'dir' => 'ltr',	// IGNORE
	'freshrss' => array(
		'_' => 'FreshRSS',	// IGNORE
		'about' => 'Acerca de FreshRSS',
	),
	'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!',
		'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!',
		),
		'labels_empty' => 'Sin etiquetas',
		'new_article' => 'Hay nuevos artículos disponibles. Pincha para refrescar la página.',
		'should_be_activated' => 'JavaScript debe estar activado',
	),
	'lang' => array(
		'cs' => 'Čeština',	// IGNORE
		'de' => 'Deutsch',	// IGNORE
		'el' => 'Ελληνικά',	// IGNORE
		'en' => 'English',	// IGNORE
		'en-us' => 'English (United States)',	// IGNORE
		'es' => 'Español',	// IGNORE
		'fa' => 'فارسی',	// IGNORE
		'fr' => 'Français',	// IGNORE
		'he' => 'עברית',	// IGNORE
		'hu' => 'Magyar',	// IGNORE
		'id' => 'Bahasa Indonesia',	// IGNORE
		'it' => 'Italiano',	// IGNORE
		'ja' => '日本語',	// IGNORE
		'ko' => '한국어',	// IGNORE
		'lv' => 'Latviešu',	// IGNORE
		'nl' => 'Nederlands',	// IGNORE
		'oc' => 'Occitan',	// IGNORE
		'pl' => 'Polski',	// IGNORE
		'pt-br' => 'Português (Brasil)',	// IGNORE
		'ru' => 'Русский',	// IGNORE
		'sk' => 'Slovenčina',	// IGNORE
		'tr' => 'Türkçe',	// IGNORE
		'zh-cn' => '简体中文',	// IGNORE
		'zh-tw' => '正體中文',	// IGNORE
	),
	'menu' => array(
		'about' => 'Acerca de',
		'account' => 'Cuenta',
		'admin' => 'Administración',
		'archiving' => 'Archivo',
		'authentication' => 'Identificación',
		'check_install' => 'Verificación de instalación',
		'configuration' => 'Configuración',
		'display' => 'Visualización',
		'extensions' => 'Extensiones',
		'logs' => 'Registros',
		'queries' => 'Peticiones 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>',
		'sharing' => 'Compartir',
		'shortcuts' => 'Atajos',
		'stats' => 'Estadísticas',
		'system' => 'Configuración del sistema',
		'update' => 'Actualización',
		'user_management' => 'Administrar usuarios',
		'user_profile' => 'Perfil',
	),
	'period' => array(
		'days' => 'días',
		'hours' => 'horas',
		'months' => 'meses',
		'weeks' => 'semanas',
		'years' => 'años',
	),
	'share' => array(
		'Known' => 'Sitios basados en conocidos',
		'archiveIS' => 'archive.is',	// IGNORE
		'archiveORG' => 'archive.org',	// IGNORE
		'archivePH' => 'archive.ph',	// IGNORE
		'buffer' => 'Buffer',	// IGNORE
		'clipboard' => 'Portapapeles',
		'diaspora' => 'Diaspora*',	// IGNORE
		'email' => 'Email',	// IGNORE
		'email-webmail-firefox-fix' => 'Email (Email Web - corrección para Firefox)',
		'facebook' => 'Facebook',	// IGNORE
		'gnusocial' => 'GNU social',	// IGNORE
		'jdh' => 'Journal du hacker',	// IGNORE
		'lemmy' => 'Lemmy',	// IGNORE
		'linkding' => 'Linkding',	// IGNORE
		'linkedin' => 'LinkedIn',	// IGNORE
		'mastodon' => 'Mastodon',	// IGNORE
		'movim' => 'Movim',	// IGNORE
		'omnivore' => 'Omnivore',	// IGNORE
		'pinboard' => 'Pinboard',	// IGNORE
		'pinterest' => 'Pinterest',	// IGNORE
		'pocket' => 'Pocket',	// IGNORE
		'print' => 'Imprimir',
		'raindrop' => 'Raindrop.io',	// IGNORE
		'reddit' => 'Reddit',	// IGNORE
		'shaarli' => 'Shaarli',	// IGNORE
		'twitter' => 'Twitter',	// IGNORE
		'wallabag' => 'wallabag v1',	// IGNORE
		'wallabagv2' => 'wallabag v2',	// IGNORE
		'web-sharing-api' => 'Sistema de intercambio',
		'whatsapp' => 'Whatsapp',	// IGNORE
		'xing' => 'Xing',	// IGNORE
	),
	'short' => array(
		'attention' => '¡Aviso!',
		'blank_to_disable' => 'Deja en blanco para desactivar',
		'by_author' => 'Por:',
		'by_default' => 'Por defecto',
		'damn' => '¡Córcholis!',
		'default_category' => 'Sin categorizar',
		'no' => 'No',	// IGNORE
		'not_applicable' => 'No disponible',
		'ok' => '¡Vale!',
		'or' => 'o',
		'yes' => 'Sí',
	),
	'stream' => array(
		'load_more' => 'Cargar más artículos',
		'mark_all_read' => 'Marcar todo como leído',
		'nothing_to_load' => 'No hay más artículos',
	),
);
install.php
wget 'https://lists2.roe3.org/FreshRSS/app/i18n/es/install.php'
View Content
<?php

/******************************************************************************/
/* Each entry of that file can be associated with a comment to indicate its   */
/* state. When there is no comment, it means the entry is fully translated.   */
/* The recognized comments are (comment matching is case-insensitive):        */
/*   + TODO: the entry has never been translated.                             */
/*   + DIRTY: the entry has been translated but needs to be updated.          */
/*   + IGNORE: the entry does not need to be translated.                      */
/* When a comment is not recognized, it is discarded.                         */
/******************************************************************************/

return array(
	'action' => array(
		'finish' => 'Completar instalación',
		'fix_errors_before' => 'Por favor, soluciona los errores detectados antes de continuar con el siguiente paso.',
		'keep_install' => 'Conservar la configuración anterior',
		'next_step' => 'Ir al siguiente paso',
		'reinstall' => 'Reinstalar FreshRSS',
	),
	'auth' => array(
		'form' => 'Formulario Web (método más habitual, requiere JavaScript)',
		'http' => 'HTTP (para usuarios avanzados con HTTPS)',
		'none' => 'Ninguna (peligroso)',
		'password_form' => 'Contraseña<br /><small>(para el método de acceso mediante formulario web)</small>',
		'password_format' => 'Al menos 7 caracteres',
		'type' => 'Método de identificación',
	),
	'bdd' => array(
		'_' => 'Base de datos',
		'conf' => array(
			'_' => 'Configuración de la base de datos',
			'ko' => 'Verificar la información de tu base de datos.',
			'ok' => 'La configuración de la base de datos ha sido guardada.',
		),
		'host' => 'Servidor',
		'password' => 'Contraseña de la base de datos',
		'prefix' => 'Prefijo de la tabla',
		'type' => 'Tipo de base de datos',
		'username' => 'Nombre de usuario de la base de datos',
	),
	'check' => array(
		'_' => 'Verificaciones',
		'already_installed' => '¡FreshRSS ya está instalado!',
		'cache' => array(
			'nok' => 'Comprueba los permisos en el directorio <em>%s</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos del directorio cache son correctos.',
		),
		'ctype' => array(
			'nok' => 'No se ha podido localizar la librería para la verificación del tipo de caracteres (php-ctype).',
			'ok' => 'Cuentas con la librería necesaria para la verificación del tipo de caracteres (ctype).',
		),
		'curl' => array(
			'nok' => 'No se ha podido localizar la librería cURL (paquete php-curl).',
			'ok' => 'Dispones de la librería cURL.',
		),
		'data' => array(
			'nok' => 'Comprueba los permisos del directorio <em>%s</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos del directorio data son correctos.',
		),
		'dom' => array(
			'nok' => 'No se ha podido localizar la librería necesaria para explorar la DOM.',
			'ok' => 'Dispones de la librería necesaria para explorar la DOM.',
		),
		'favicons' => array(
			'nok' => 'Verifica los permisos en el directorio <em>%s</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos del directorio favicons son correctos.',
		),
		'fileinfo' => array(
			'nok' => 'No se ha podido localizar la librería PHP fileinfo (paquete fileinfo).',
			'ok' => 'Dispones de la librería fileinfo.',
		),
		'json' => array(
			'nok' => 'No se ha podido localizar la librería para procesar JSON.',
			'ok' => 'Dispones de la librería recomendada para procesar JSON.',
		),
		'mbstring' => array(
			'nok' => 'No se puede encontrar la mbstring de biblioteca recomendada para Unicode.',
			'ok' => 'Tiene la biblioteca mbstring recomendada para Unicode.',
		),
		'pcre' => array(
			'nok' => 'No se ha podido encontrar la librería necesaria para las expresiones regulares (php-pcre).',
			'ok' => 'Dispones de la librería necesaria para las expresiones regulares (PCRE).',
		),
		'pdo' => array(
			'nok' => 'No se ha podido localizar PDO o uno de los controladores compatibles (pdo_mysql, pdo_sqlite, pdo_pgsql).',
			'ok' => 'Dispones de PDO y al menos uno de los controladores compatibles (pdo_mysql, pdo_sqlite, pdo_pgsql).',
		),
		'php' => array(
			'nok' => 'Dispones de la versión PHP %s, pero FreshRSS necesita de, al menos, la versión %s.',
			'ok' => 'Dispones de la versión PHP %s, que es compatible con FreshRSS.',
		),
		'reload' => 'Revisar otra vez',
		'tmp' => array(
			'nok' => 'Revisa los permisos en el directorio <em>%s</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos en el directorio temp son buenos.',
		),
		'unknown_process_username' => 'desconocido',
		'users' => array(
			'nok' => 'Revisa los permisos en el directorio <em>%s</em>. El servidor HTTP debe contar con permisos de escritura.',
			'ok' => 'Los permisos en el directorio users son correctos.',
		),
		'xml' => array(
			'nok' => 'No se ha podido localizar la librería necesaria para procesar XML.',
			'ok' => 'Dispones de la librería necesaria para procesar XML.',
		),
	),
	'conf' => array(
		'_' => 'Configuración general',
		'ok' => 'La configuración general se ha guardado.',
	),
	'congratulations' => '¡Enhorabuena!',
	'default_user' => array(
		'_' => 'Nombre de usuario para el usuario por defecto',
		'max_char' => 'máximo de 16 caracteres alfanuméricos',
	),
	'fix_errors_before' => 'Por favor, soluciona los errores detectados antes de proceder con el siguiente paso.',
	'javascript_is_better' => 'FreshRSS funciona mejor con JavaScript activado',
	'js' => array(
		'confirm_reinstall' => 'Al reinstalar FreshRSS perderás cualquier configuración anterior. ¿Seguro que quieres continuar?',
	),
	'language' => array(
		'_' => 'Idioma',
		'choose' => 'Selecciona el idioma para FreshRSS',
		'defined' => 'Idioma seleccionado.',
	),
	'missing_applied_migrations' => 'Algo salió mal; Debe crear un archivo vacío <em>%s</em> manualmente.',
	'ok' => 'La instalación se ha completado correctamente.',
	'session' => array(
		'nok' => '¡El servidor web parece estar configurado incorrectamente para las cookies requeridas para las sesiones de PHP!',
	),
	'step' => 'paso %d',
	'steps' => 'Pasos',
	'this_is_the_end' => '¡Terminamos!',
	'title' => 'Instalación · FreshRSS',
);
sub.php
wget 'https://lists2.roe3.org/FreshRSS/app/i18n/es/sub.php'
View Content
<?php

/******************************************************************************/
/* Each entry of that file can be associated with a comment to indicate its   */
/* state. When there is no comment, it means the entry is fully translated.   */
/* The recognized comments are (comment matching is case-insensitive):        */
/*   + TODO: the entry has never been translated.                             */
/*   + DIRTY: the entry has been translated but needs to be updated.          */
/*   + IGNORE: the entry does not need to be translated.                      */
/* When a comment is not recognized, it is discarded.                         */
/******************************************************************************/

return array(
	'api' => array(
		'documentation' => 'Copie la siguiente URL para usarla dentro de una herramienta externa.',
		'title' => 'API',	// IGNORE
	),
	'bookmarklet' => array(
		'documentation' => 'Arrastre este botón a la barra de herramientas de marcadores o haga clic derecho en él y elija “Marcar este enlace”. Luego haga clic en el botón “Suscribirse” en cualquier página a la que desee suscribirse.',
		'label' => 'Subscribirse',
		'title' => 'Bookmarklet',	// IGNORE
	),
	'category' => array(
		'_' => 'Categoría',
		'add' => 'Añadir categoría',
		'archiving' => 'Archivo',
		'dynamic_opml' => array(
			'_' => 'OPML dinámico',
			'help' => 'Provee la URL a un <a href=http://opml.org/ target="_blank">archivo OPML</a> para llenar dinámicamente esta categoría con fuentes',
		),
		'empty' => 'Vaciar categoría',
		'expand' => 'Expandir categoría',
		'information' => 'Información',
		'open' => 'Abrir categoría',
		'opml_url' => 'URL del OPML',
		'position' => 'Posición de visualización',
		'position_help' => 'Para controlar el orden de clasificación de categorías',
		'title' => 'Título',
	),
	'feed' => array(
		'accept_cookies' => 'Aceptar cookies',
		'accept_cookies_help' => 'Permitir que el servidor de fuentes configure las cookies (guardadas en memoria únicamente para el tiempo de vida de la solicitud)',
		'add' => 'Añadir fuente RSS',
		'advanced' => 'Avanzado',
		'archiving' => 'Archivo',
		'auth' => array(
			'configuration' => 'Identificación',
			'help' => 'Permitir acceso a fuentes RSS protegidas con HTTP',
			'http' => 'Identificación HTTP',
			'password' => 'Contraseña HTTP',
			'username' => 'Nombre de usuario HTTP',
		),
		'clear_cache' => 'Borrar siempre la memoria caché',
		'content_action' => array(
			'_' => 'Acción de contenido al obtener el contenido del artículo',
			'append' => 'Añadir después del contenido existente',
			'prepend' => 'Añadir antes del contenido existente',
			'replace' => 'Reemplazar contenido existente',
		),
		'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!)',
		'css_path' => 'Ruta a la CSS de los artículos en la web original',
		'css_path_filter' => array(
			'_' => 'Selector CSS de los elementos a remover',
			'help' => 'Un selector CSS puede ser una lista, por ejemplo: <kbd>.footer, .aside</kbd>',
		),
		'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 y prueba de nuevo.',
		'export-as-opml' => array(
			'download' => 'Descargar',
			'help' => 'archivo XML (data subset. <a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">See documentation</a>)',	// DIRTY
			'label' => 'Exportar como OPML',
		),
		'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>.',
		),
		'information' => 'Información',
		'keep_min' => 'Número mínimo de artículos a conservar',
		'kind' => array(
			'_' => 'Tipo de origen de la fuente',
			'html_xpath' => array(
				'_' => 'HTML + XPath (Web scraping)',	// IGNORE
				'feed_title' => array(
					'_' => 'Título de la fuente',
					'help' => 'Ejemplo: <code>//título</code> o un texto estático: <code>"Mi fuente personalizada"</code>',
				),
				'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> es un lenguaje de consulta estándar para usuarios avanzados, el cual FreshRSS soporta para habilitar Web scraping',
				'item' => array(
					'_' => 'encontrando <strong>noticias</strong> <br /><small>(más importante)</small>',
					'help' => 'Ejemplo: <code>//div[@class="elemento-noticias"]</code>',
				),
				'item_author' => array(
					'_' => 'author del elemento',
					'help' => 'También puede ser un texto estático. Ejemplo: <code>"Anónimo"</code>',
				),
				'item_categories' => 'etiquetas del elemento',
				'item_content' => array(
					'_' => 'contenido del elemento',
					'help' => 'Ejemplo para tomar el elemento completo: <code>.</code>',
				),
				'item_thumbnail' => array(
					'_' => 'miniatura del elemento',
					'help' => 'Ejemplo: <code>descendiente::img/@src</code>',
				),
				'item_timeFormat' => array(
					'_' => 'Formato personalizado de fecha y hora',
					'help' => 'Opcional. Un formato compatible con <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> como <code>d-m-Y H:i:s</code>',
				),
				'item_timestamp' => array(
					'_' => 'fecha del elemento',
					'help' => 'El resultado será analizado por <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',
				),
				'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>descendiente::</code> como <code>descendiente::h2</code>',
				),
				'item_uid' => array(
					'_' => 'ID único del elemento',
					'help' => 'Opcional. Ejemplo: <code>descendente::div/@data-uri</code>',
				),
				'item_uri' => array(
					'_' => 'enlace del elemento (URL)',
					'help' => 'Ejemplo: <code>descendente::a/@href</code>',
				),
				'relative' => 'XPath (relativo al elemento) para:',
				'xpath' => 'XPath para:',
			),
			'json_dotnotation' => array(
				'_' => 'JSON (notación de punto)',
				'feed_title' => 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>)',
				'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>newsItems</code>',
				),
				'item_author' => 'autor del item',
				'item_categories' => 'etiquetas del item',
				'item_content' => array(
					'_' => 'contenido del item',
					'help' => 'Clave bajo la cual se encuentra el contenido, ejemplo: <code>content</code>',
				),
				'item_thumbnail' => array(
					'_' => 'miniatura del item',
					'help' => 'Ejemplo: <code>image</code>',
				),
				'item_timeFormat' => array(
					'_' => 'fecha/hora personalizada',
					'help' => 'Opcional. Formato soportado por <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> como <code>d-m-Y H:i:s</code>',
				),
				'item_timestamp' => array(
					'_' => 'fecha del item',
					'help' => 'El resultado será analizado por <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',
				),
				'item_title' => 'título del item',
				'item_uid' => 'ID único del item',
				'item_uri' => array(
					'_' => 'enlace del item (URL)',
					'help' => 'Ejemplo: <code>permalink</code>',
				),
				'json' => 'notación de punto por:',
				'relative' => 'ruta de notación con puntos (relativa al elemento) para:',
			),
			'jsonfeed' => 'Fuente JSON',
			'rss' => 'RSS / Atom (por defecto)',
			'xml_xpath' => 'XML + XPath',	// IGNORE
		),
		'maintenance' => array(
			'clear_cache' => 'Borrar caché',
			'clear_cache_help' => 'Borrar la memoria caché de esta fuente.',
			'reload_articles' => 'Recargar artículos',
			'reload_articles_help' => 'Vuelve a cargar artículos y obtiene contenido completo si se define un selector.',
			'title' => 'Mantenimiento',
		),
		'max_http_redir' => 'Máximas redirecciones HTTP',
		'max_http_redir_help' => 'Escribir 0 o dejarlo en blanco para deshabilitar, -1 para redirecciones ilimitadas',
		'method' => array(
			'_' => 'HTTP Method',	// IGNORE
		),
		'method_help' => 'La carga útil del POST tiene soporte automático para <code>application/x-www-form-urlencoded</code> y <code>application/json</code>',
		'method_postparams' => 'Carga útil para POST',
		'moved_category_deleted' => 'Al borrar una categoría todas sus fuentes pasan automáticamente a la categoría <em>%s</em>.',
		'mute' => array(
			'_' => 'silenciar',
			'state_is_muted' => 'Esta fuente está silenciada',
		),
		'no_selected' => 'No hay fuentes seleccionadas.',
		'number_entries' => '%d artículos',
		'open_feed' => 'Fuente abierta %s',
		'priority' => array(
			'_' => 'Visibilidad',
			'archived' => 'No mostrar (archivado)',
			'category' => 'Mostrar en su categoría',
			'important' => 'Mostrar en fuentes importantes',
			'main_stream' => 'Mostrar en salida 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>)',
		'selector_preview' => array(
			'show_raw' => 'Mostrar código fuente',
			'show_rendered' => 'Mostrar contenido',
		),
		'show' => array(
			'all' => 'Mostrar todas las fuentes',
			'error' => 'Mostrar solo fuentes con errores',
		),
		'showing' => array(
			'error' => 'Mostrar solo fuentes con errores',
		),
		'ssl_verify' => 'Verificar la seguridad SSL',
		'stats' => 'Estadísticas',
		'think_to_add' => 'Puedes añadir fuentes.',
		'timeout' => 'Tiempo de espera en segundos',
		'title' => 'Título',
		'title_add' => 'Añadir fuente RSS',
		'ttl' => 'No actualizar de forma automática con una frecuencia mayor a',
		'url' => 'URL de la fuente',
		'useragent' => 'Selecciona el agente de usuario por recuperar la fuente',
		'useragent_help' => 'Ejemplo: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',
		'validator' => 'Verifica la validez de la fuente',
		'website' => 'Web de la URL',
		'websub' => 'Notificación inmediata con WebSub',
	),
	'import_export' => array(
		'export' => 'Exportar',
		'export_labelled' => 'Exporta tus artículos etiquetados',
		'export_opml' => 'Exportar la lista de fuentes (OPML)',
		'export_starred' => 'Exportar tus favoritos',
		'feed_list' => 'Lista de %s artículos',
		'file_to_import' => 'Archivo a importar<br />(OPML, JSON o ZIP)',
		'file_to_import_no_zip' => 'Archivo a importar<br />(OPML o JSON)',
		'import' => 'Importar',
		'starred_list' => 'Lista de artículos favoritos',
		'title' => 'Importar / exportar',
	),
	'menu' => array(
		'add' => 'Añadir una fuente o categoría',
		'import_export' => 'Importar / exportar',
		'label_management' => 'Gestión de etiquetas',
		'stats' => array(
			'idle' => 'Fuentes inactivas',
			'main' => 'Estadísticas principales',
			'repartition' => 'Reparto de artículos',
		),
		'subscription_management' => 'Administración de suscripciones',
		'subscription_tools' => 'Herramientas de suscripción',
	),
	'tag' => array(
		'auto_label' => 'Añadir esta etiqueta a nuevos artículos',
		'name' => 'Nombre',
		'new_name' => 'Nuevo nombre',
		'old_name' => 'Nombre antiguo',
	),
	'title' => array(
		'_' => 'Administración de suscripciones',
		'add' => 'Añadir una fuente o categoría',
		'add_category' => 'Añadir una categoría',
		'add_dynamic_opml' => 'Agrega un OPML dinámico',
		'add_feed' => 'Añadir una fuente',
		'add_label' => 'Añadir una etiqueta',
		'delete_label' => 'Eliminar una etiqueta',
		'feed_management' => 'Administración de fuentes RSS',
		'rename_label' => 'Cambiar el nombre de una etiqueta',
		'subscription_tools' => 'Herramientas de suscripción',
	),
);
user.php
wget 'https://lists2.roe3.org/FreshRSS/app/i18n/es/user.php'
View Content
<?php

/******************************************************************************/
/* Each entry of that file can be associated with a comment to indicate its   */
/* state. When there is no comment, it means the entry is fully translated.   */
/* The recognized comments are (comment matching is case-insensitive):        */
/*   + TODO: the entry has never been translated.                             */
/*   + DIRTY: the entry has been translated but needs to be updated.          */
/*   + IGNORE: the entry does not need to be translated.                      */
/* When a comment is not recognized, it is discarded.                         */
/******************************************************************************/

return array(
	'email' => array(
		'feedback' => array(
			'invalid' => 'Esta dirección de correo electrónico no es válida.',
			'required' => 'Se requiere una dirección de correo electrónico.',
		),
		'validation' => array(
			'change_email' => 'Puedes cambiar tu dirección de correo electrónico <a href="%s">en la página de perfil</a>.',
			'email_sent_to' => 'Te enviamos un correo electrónico a <strong>%s</strong>. Siga sus instrucciones para validar su dirección.',
			'feedback' => array(
				'email_failed' => 'No pudimos enviarle un correo electrónico debido a un error de configuración del servidor.',
				'email_sent' => 'Se ha enviado un correo electrónico a su dirección.',
				'error' => 'Error en la validación de la dirección de correo electrónico.',
				'ok' => 'Esta dirección de correo electrónico ha sido validada.',
				'unnecessary' => 'Esta dirección de correo electrónico ya fue validada.',
				'wrong_token' => 'Esta dirección de correo electrónico no se pudo validar debido a un token incorrecto.',
			),
			'need_to' => 'Debe validar su dirección de correo electrónico antes de poder usar %s.',
			'resend_email' => 'Volver a enviar el correo electrónico',
			'title' => 'Validación de direcciones de correo electrónico',
		),
	),
	'mailer' => array(
		'email_need_validation' => array(
			'body' => 'Acabas de registrarte en %s, pero aún necesitas validar tu dirección de correo electrónico. Para eso, solo sigue el enlace:',
			'title' => 'Necesitas validar tu cuenta',
			'welcome' => 'Bienvenido %s,',
		),
	),
	'password' => array(
		'invalid' => 'La contraseña no es válida.',
	),
	'tos' => array(
		'feedback' => array(
			'invalid' => 'Debe aceptar los Términos de Servicio para poder registrarse.',
		),
	),
	'username' => array(
		'invalid' => 'Este nombre de usuario no es válido.',
		'taken' => 'Se toma este nombre de usuario, %s.',
	),
);