aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag
diff options
context:
space:
mode:
authorJeremy Benoist <jeremy.benoist@gmail.com>2017-03-28 14:07:42 +0200
committerJeremy Benoist <jeremy.benoist@gmail.com>2017-03-28 14:07:42 +0200
commit7d1d961267c129e2110ce9cc14c5a9d0a7d255cb (patch)
treed260d7b4ffc8466d7d410ec61bd896bdadd8456e /src/Wallabag
parente1cc8fd79921fdff9999087ba896c88b14ffc0cd (diff)
parent6ae579e43f6a4ffe607a6361191366410d19f806 (diff)
downloadwallabag-7d1d961267c129e2110ce9cc14c5a9d0a7d255cb.tar.gz
wallabag-7d1d961267c129e2110ce9cc14c5a9d0a7d255cb.tar.zst
wallabag-7d1d961267c129e2110ce9cc14c5a9d0a7d255cb.zip
Merge remote-tracking branch 'origin/master' into 2.3
Diffstat (limited to 'src/Wallabag')
-rw-r--r--src/Wallabag/CoreBundle/Helper/HttpClientFactory.php10
-rw-r--r--src/Wallabag/CoreBundle/Repository/EntryRepository.php3
-rw-r--r--src/Wallabag/CoreBundle/Resources/config/services.yml1
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.es.yml532
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.it.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/base.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_full_image.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_no_preview.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_preview.html.twig8
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig20
-rw-r--r--src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php3
-rw-r--r--src/Wallabag/UserBundle/Resources/translations/wallabag_user.es.yml11
13 files changed, 311 insertions, 291 deletions
diff --git a/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php b/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php
index 8891887b..1ac8feb1 100644
--- a/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php
+++ b/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php
@@ -6,6 +6,7 @@ use Graby\Ring\Client\SafeCurlHandler;
6use GuzzleHttp\Client; 6use GuzzleHttp\Client;
7use GuzzleHttp\Cookie\CookieJar; 7use GuzzleHttp\Cookie\CookieJar;
8use GuzzleHttp\Event\SubscriberInterface; 8use GuzzleHttp\Event\SubscriberInterface;
9use Psr\Log\LoggerInterface;
9 10
10/** 11/**
11 * Builds and configures the Guzzle HTTP client. 12 * Builds and configures the Guzzle HTTP client.
@@ -19,6 +20,7 @@ class HttpClientFactory
19 private $cookieJar; 20 private $cookieJar;
20 21
21 private $restrictedAccess; 22 private $restrictedAccess;
23 private $logger;
22 24
23 /** 25 /**
24 * HttpClientFactory constructor. 26 * HttpClientFactory constructor.
@@ -26,12 +28,14 @@ class HttpClientFactory
26 * @param \GuzzleHttp\Event\SubscriberInterface $authenticatorSubscriber 28 * @param \GuzzleHttp\Event\SubscriberInterface $authenticatorSubscriber
27 * @param \GuzzleHttp\Cookie\CookieJar $cookieJar 29 * @param \GuzzleHttp\Cookie\CookieJar $cookieJar
28 * @param string $restrictedAccess this param is a kind of boolean. Values: 0 or 1 30 * @param string $restrictedAccess this param is a kind of boolean. Values: 0 or 1
31 * @param LoggerInterface $logger
29 */ 32 */
30 public function __construct(SubscriberInterface $authenticatorSubscriber, CookieJar $cookieJar, $restrictedAccess) 33 public function __construct(SubscriberInterface $authenticatorSubscriber, CookieJar $cookieJar, $restrictedAccess, LoggerInterface $logger)
31 { 34 {
32 $this->authenticatorSubscriber = $authenticatorSubscriber; 35 $this->authenticatorSubscriber = $authenticatorSubscriber;
33 $this->cookieJar = $cookieJar; 36 $this->cookieJar = $cookieJar;
34 $this->restrictedAccess = $restrictedAccess; 37 $this->restrictedAccess = $restrictedAccess;
38 $this->logger = $logger;
35 } 39 }
36 40
37 /** 41 /**
@@ -39,8 +43,10 @@ class HttpClientFactory
39 */ 43 */
40 public function buildHttpClient() 44 public function buildHttpClient()
41 { 45 {
46 $this->logger->log('debug', 'Restricted access config enabled?', array('enabled' => (int) $this->restrictedAccess));
47
42 if (0 === (int) $this->restrictedAccess) { 48 if (0 === (int) $this->restrictedAccess) {
43 return null; 49 return;
44 } 50 }
45 51
46 // we clear the cookie to avoid websites who use cookies for analytics 52 // we clear the cookie to avoid websites who use cookies for analytics
diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php
index b9532fa2..4071301d 100644
--- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php
+++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php
@@ -106,8 +106,9 @@ class EntryRepository extends EntityRepository
106 $qb->andWhere('e.isArchived = true'); 106 $qb->andWhere('e.isArchived = true');
107 } 107 }
108 108
109 // We lower() all parts here because PostgreSQL 'LIKE' verb is case-sensitive
109 $qb 110 $qb
110 ->andWhere('e.content LIKE :term OR e.title LIKE :term')->setParameter('term', '%'.$term.'%') 111 ->andWhere('lower(e.content) LIKE lower(:term) OR lower(e.title) LIKE lower(:term) OR lower(e.url) LIKE lower(:term)')->setParameter('term', '%'.$term.'%')
111 ->leftJoin('e.tags', 't') 112 ->leftJoin('e.tags', 't')
112 ->groupBy('e.id'); 113 ->groupBy('e.id');
113 114
diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml
index 036735ec..51d6ab47 100644
--- a/src/Wallabag/CoreBundle/Resources/config/services.yml
+++ b/src/Wallabag/CoreBundle/Resources/config/services.yml
@@ -74,6 +74,7 @@ services:
74 - "@bd_guzzle_site_authenticator.authenticator_subscriber" 74 - "@bd_guzzle_site_authenticator.authenticator_subscriber"
75 - "@wallabag_core.guzzle.cookie_jar" 75 - "@wallabag_core.guzzle.cookie_jar"
76 - '@=service(''craue_config'').get(''restricted_access'')' 76 - '@=service(''craue_config'').get(''restricted_access'')'
77 - '@logger'
77 78
78 wallabag_core.guzzle.cookie_jar: 79 wallabag_core.guzzle.cookie_jar:
79 class: GuzzleHttp\Cookie\FileCookieJar 80 class: GuzzleHttp\Cookie\FileCookieJar
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
index 8ae1c400..3d65c311 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
@@ -1,7 +1,7 @@
1security: 1security:
2 login: 2 login:
3 page_title: '¡Bienvenido a wallabag !' 3 page_title: '¡Bienvenido a wallabag!'
4 keep_logged_in: 'Manténgame conectado' 4 keep_logged_in: 'Permanecer conectado'
5 forgot_password: '¿Se ha olvidado de su contraseña?' 5 forgot_password: '¿Se ha olvidado de su contraseña?'
6 submit: 'Conectarse' 6 submit: 'Conectarse'
7 register: 'Registrarse' 7 register: 'Registrarse'
@@ -9,7 +9,7 @@ security:
9 password: 'Contraseña' 9 password: 'Contraseña'
10 cancel: 'Cancelar' 10 cancel: 'Cancelar'
11 resetting: 11 resetting:
12 description: "Introduzca su dirección del correo electrónico y le enviaremos las instrucciones para reiniciar la contraseña" 12 description: "Introduzca su dirección de correo electrónico y le enviaremos las instrucciones para reiniciar la contraseña."
13 register: 13 register:
14 page_title: 'Crear una cuenta' 14 page_title: 'Crear una cuenta'
15 go_to_account: 'Acceder su cuenta' 15 go_to_account: 'Acceder su cuenta'
@@ -19,19 +19,19 @@ menu:
19 unread: 'Sin leer' 19 unread: 'Sin leer'
20 starred: 'Favoritos' 20 starred: 'Favoritos'
21 archive: 'Archivo' 21 archive: 'Archivo'
22 all_articles: 'Todos artículos' 22 all_articles: 'Todos los artículos'
23 config: 'Configuración' 23 config: 'Configuración'
24 tags: 'Etiquetas' 24 tags: 'Etiquetas'
25 internal_settings: 'Configuración interna' 25 internal_settings: 'Configuración interna'
26 import: 'Importar' 26 import: 'Importar'
27 howto: 'Ayuda' 27 howto: 'Ayuda'
28 # developer: 'API clients management' 28 developer: 'Configuración de clientes API'
29 logout: 'Desconectarse' 29 logout: 'Desconectarse'
30 about: 'Acerca de' 30 about: 'Acerca de'
31 search: 'Buscar' 31 search: 'Buscar'
32 save_link: 'Archivar un enlace' 32 save_link: 'Guardar un enlace'
33 back_to_unread: 'Volver a los artículos sin leer' 33 back_to_unread: 'Volver a los artículos sin leer'
34 # users_management: 'Users management' 34 users_management: 'Configuración de usuarios'
35 top: 35 top:
36 add_new_entry: 'Añadir un nuevo artículo' 36 add_new_entry: 'Añadir un nuevo artículo'
37 search: 'Buscar' 37 search: 'Buscar'
@@ -42,11 +42,11 @@ menu:
42 42
43footer: 43footer:
44 wallabag: 44 wallabag:
45 elsewhere: 'Lleve wallabag consigo' 45 elsewhere: 'Lleva wallabag contigo'
46 social: 'Social' 46 social: 'Social'
47 powered_by: 'funciona por' 47 powered_by: 'funciona con'
48 about: 'Acerca de' 48 about: 'Acerca de'
49 # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! 49 stats: Desde el %user_creation% has leído %nb_archives% artículos. ¡Eso hace unos %per_day% por día!
50 50
51config: 51config:
52 page_title: 'Configuración' 52 page_title: 'Configuración'
@@ -64,96 +64,96 @@ config:
64 items_per_page_label: 'Número de artículos por página' 64 items_per_page_label: 'Número de artículos por página'
65 language_label: 'Idioma' 65 language_label: 'Idioma'
66 reading_speed: 66 reading_speed:
67 label: 'Velocidad de leer' 67 label: 'Velocidad de lectura'
68 help_message: 'Se puede usar las técnicas para calcular su velocidad de leer:' 68 help_message: 'Puede utilizar herramientas en línea para calcular su velocidad de lectura:'
69 100_word: 'Leo ~100 palabras por minuto' 69 100_word: 'Leo ~100 palabras por minuto'
70 200_word: 'Leo ~200 palabras por minuto' 70 200_word: 'Leo ~200 palabras por minuto'
71 300_word: 'Leo ~300 palabras por minuto' 71 300_word: 'Leo ~300 palabras por minuto'
72 400_word: 'Leo ~400 palabras por minuto' 72 400_word: 'Leo ~400 palabras por minuto'
73 action_mark_as_read: 73 action_mark_as_read:
74 # label: 'Where do you to be redirected after mark an article as read?' 74 label: '¿Dónde quieres ser redirigido después de marcar un artículo como leído?'
75 # redirect_homepage: 'To the homepage' 75 redirect_homepage: 'A la página de inicio'
76 # redirect_current_page: 'To the current page' 76 redirect_current_page: 'A la página actual'
77 # pocket_consumer_key_label: Consumer key for Pocket to import contents 77 pocket_consumer_key_label: Clave de consumidor para importar contenidos de Pocket
78 # android_configuration: Configure your Android application 78 android_configuration: Configura tu aplicación Android
79 # help_theme: "wallabag is customizable. You can choose your prefered theme here." 79 help_theme: "wallabag es personalizable. Puedes elegir tu tema preferido aquí."
80 # help_items_per_page: "You can change the number of articles displayed on each page." 80 help_items_per_page: "Puedes cambiar el número de artículos mostrados en cada página."
81 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article." 81 help_reading_speed: "wallabag calcula un tiempo de lectura para cada artículo. Puedes definir aquí, gracias a esta lista, si eres un lector rápido o lento. wallabag recalculará el tiempo de lectura para cada artículo."
82 # help_language: "You can change the language of wallabag interface." 82 help_language: "Puedes cambiar el idioma de la interfaz de wallabag."
83 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account." 83 help_pocket_consumer_key: "Requerido para la importación desde Pocket. Puedes crearla en tu cuenta de Pocket."
84 form_rss: 84 form_rss:
85 description: 'Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Necesita generar un token primero' 85 description: 'Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Primero necesitas generar un token.'
86 token_label: 'RSS token' 86 token_label: 'Token RSS'
87 no_token: 'No token' 87 no_token: 'Sin token'
88 token_create: 'Crear token' 88 token_create: 'Crear token'
89 token_reset: 'Reiniciar token' 89 token_reset: 'Reiniciar token'
90 rss_links: 'URL de su feed RSS' 90 rss_links: 'URLs de feeds RSS'
91 rss_link: 91 rss_link:
92 unread: 'sin leer' 92 unread: 'sin leer'
93 starred: 'favoritos' 93 starred: 'favoritos'
94 archive: 'archivo' 94 archive: 'archivados'
95 rss_limit: 'Límite de artículos en feed RSS' 95 rss_limit: 'Límite de artículos en feed RSS'
96 form_user: 96 form_user:
97 two_factor_description: "Con la autentificación de dos factores recibirá código mediante email en cada nueva conexión que no sea de confianza" 97 two_factor_description: "Con la autenticación en dos pasos recibirá código por e-mail en cada nueva conexión que no sea de confianza."
98 name_label: 'Nombre' 98 name_label: 'Nombre'
99 email_label: 'Direccion e-mail' 99 email_label: 'Dirección de e-mail'
100 twoFactorAuthentication_label: 'Autentificación de dos factores' 100 twoFactorAuthentication_label: 'Autenticación en dos pasos'
101 # help_twoFactorAuthentication: "If you enable 2FA, each time you want to login to wallabag, you'll receive a code by email." 101 help_twoFactorAuthentication: "Si activas la autenticación en dos pasos, cada vez que quieras iniciar sesión en wallabag recibirás un código por e-mail."
102 delete: 102 delete:
103 # title: Delete my account (a.k.a danger zone) 103 title: Eliminar mi cuenta (Zona peligrosa)
104 # description: If you remove your account, ALL your articles, ALL your tags, ALL your annotations and your account will be PERMANENTLY removed (it can't be UNDONE). You'll then be logged out. 104 description: Si eliminas tu cuenta, TODOS tus artículos, TODAS tus etiquetas, TODAS tus anotaciones y tu cuenta serán eliminadas de forma PERMANENTE (no se puede deshacer). Después serás desconectado.
105 # confirm: Are you really sure? (THIS CAN'T BE UNDONE) 105 confirm: ¿Estás completamente seguro? (NO SE PUEDE DESHACER)
106 # button: Delete my account 106 button: Eliminar mi cuenta
107 reset: 107 reset:
108 # title: Reset area (a.k.a danger zone) 108 title: Reiniciar mi cuenta (Zona peligrosa)
109 # description: By hiting buttons below you'll have ability to remove some informations from your account. Be aware that these actions are IRREVERSIBLE. 109 description: Pulsando los botones de abajo puedes eliminar información de tu cuenta. Ten en cuenta que estas acciones son IRREVERSIBLES.
110 # annotations: Remove ALL annotations 110 annotations: Eliminar TODAS las anotaciones
111 # tags: Remove ALL tags 111 tags: Eliminar TODAS las etiquetas
112 # entries: Remove ALL entries 112 entries: Eliminar TODOS los artículos
113 # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) 113 confirm: ¿Estás completamente seguro? (NO SE PUEDE DESHACER)
114 form_password: 114 form_password:
115 # description: "You can change your password here. Your new password should by at least 8 characters long." 115 description: "Puedes cambiar la contraseña aquí. Tu nueva contraseña debe tener al menos 8 caracteres."
116 old_password_label: 'Contraseña actual' 116 old_password_label: 'Contraseña actual'
117 new_password_label: 'Nueva contraseña' 117 new_password_label: 'Nueva contraseña'
118 repeat_new_password_label: 'Confirmar la nueva contraseña' 118 repeat_new_password_label: 'Confirmar nueva contraseña'
119 form_rules: 119 form_rules:
120 if_label: 'si' 120 if_label: 'si'
121 then_tag_as_label: 'Etiquete como' 121 then_tag_as_label: 'etiquetar como'
122 delete_rule_label: 'Borre' 122 delete_rule_label: 'borrar'
123 # edit_rule_label: 'edit' 123 edit_rule_label: 'editar'
124 rule_label: 'Regla' 124 rule_label: 'Regla'
125 tags_label: 'Etiquetas' 125 tags_label: 'Etiquetas'
126 faq: 126 faq:
127 title: 'FAQ' 127 title: 'Preguntas frecuentes'
128 tagging_rules_definition_title: '¿Qué significa reglas de etiquetado autómaticas?' 128 tagging_rules_definition_title: '¿Qué significa « reglas de etiquetado automático »?'
129 tagging_rules_definition_description: 'Son las reglas usadas por Wallabag para etiquetar automáticamente los nuevos artículos.<br />Cada vez que un nuevo artículo sea añadido, todas las reglas de etiquetado automáticas serán usadas para etiquetarlo, ayudándole a clasificar automáticamente los artículos.' 129 tagging_rules_definition_description: 'Son las reglas usadas por wallabag para etiquetar automáticamente los nuevos artículos.<br />Cada vez que un artículo sea añadido, todas las reglas de etiquetado automático serán usadas para etiquetarlo, ayudándote a clasificar automáticamente tus artículos.'
130 how_to_use_them_title: '¿Cómo se utilizan?' 130 how_to_use_them_title: '¿Cómo se utilizan?'
131 how_to_use_them_description: 'Supongamos que quiere etiquetar nuevos artículos como « <i>lectura corta</i> » cuando el tiempo de leer sea menos de 3 minutos. <br /> En ese caso, debe poner « tiempo de leer &lt;= 3 » en el <i>Regla</i> campo y « <i>lectura corta</i> » en el <i>Etiquetas</i> campo.<br />Algunas etiquetas se pueden ser añadidas al mismo tiempo por separarlas con una coma: « <i>lectura corta, debe leer</i> »<br />Reglas complejas se pueden ser escritas por usar operadores predefinidos: si « <i>tiempo de leer &gt;= 5 Y nombre del dominio = "github.com"</i> » entonces etiquete como « <i>lectura larga, github </i> »' 131 how_to_use_them_description: 'Supongamos que quiere etiquetar los artículos nuevos como « <i>lectura corta</i> » cuando el tiempo de lectura sea menos de 3 minutos.<br /> En ese caso, debe poner « readingTime &lt;= 3 » en el campo <i>Regla</i> y « <i>lectura corta</i> » en el campo <i>Etiquetas</i>.<br />Se pueden añadir varias etiquetas al mismo tiempo separadas por comas: « <i>lectura corta, lectura obligada</i> »<br />Se pueden escribir reglas complejas utilizando los operadores predefinidos: si « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » entonces etiqueta como « <i>lectura larga, github </i> »'
132 variables_available_title: '¿Qué variables y operadores se pueden utilizar para escribir las reglas?' 132 variables_available_title: '¿Qué variables y operadores se pueden utilizar para escribir las reglas?'
133 variables_available_description: 'Las siguientes variables y operadores se pueden utilizar para crear las reglas de etiquetado automáticas:' 133 variables_available_description: 'Las siguientes variables y operadores se pueden utilizar para crear reglas de etiquetado automático:'
134 meaning: 'Significado' 134 meaning: 'Significado'
135 variable_description: 135 variable_description:
136 label: 'Variable' 136 label: 'Variable'
137 title: 'Titúlo del artículo' 137 title: 'Título del artículo'
138 url: 'URL del artículo' 138 url: 'URL del artículo'
139 isArchived: 'El artículo está guardado o no' 139 isArchived: 'Si artículo está archivado o no'
140 isStarred: 'Si el artículo es un favorito o no' 140 isStarred: 'Si el artículo está en favoritos o no'
141 content: "El contenido del artículo" 141 content: "El contenido del artículo"
142 language: "El idioma del artículo" 142 language: "El idioma del artículo"
143 mimetype: "Tipo MIME del artículo" 143 mimetype: "El tipo MIME del artículo"
144 readingTime: "El tiempo estimado de lectura del artículo, en minutos" 144 readingTime: "El tiempo estimado de lectura del artículo, en minutos"
145 domainName: 'El dominio del artículo' 145 domainName: 'El nombre de dominio del artículo'
146 operator_description: 146 operator_description:
147 label: 'Operador' 147 label: 'Operador'
148 less_than: 'Menos que…' 148 less_than: 'Menor que…'
149 strictly_less_than: 'Estrictámente menos que…' 149 strictly_less_than: 'Estrictamente menor que…'
150 greater_than: 'Más que…' 150 greater_than: 'Mayor que…'
151 strictly_greater_than: 'Estrictámente mas que…' 151 strictly_greater_than: 'Estrictamente mayor que…'
152 equal_to: 'Egual a…' 152 equal_to: 'Igual a…'
153 not_equal_to: 'Diferente de…' 153 not_equal_to: 'Diferente de…'
154 or: 'Una regla U otra' 154 or: 'Una regla U otra'
155 and: 'Una regla Y la otra' 155 and: 'Una regla Y la otra'
156 matches: 'Pruebe si un <i>sujeto</i> corresponde a una <i>búsqueda</i> (insensible a mayusculas).<br />Ejemplo : <code>título coincide "football"</code>' 156 matches: 'Prueba si un <i>sujeto</i> corresponde a una <i>búsqueda</i> (insensible a mayusculas).<br />Ejemplo : <code>title matches "fútbol"</code>'
157 157
158entry: 158entry:
159 page_titles: 159 page_titles:
@@ -161,32 +161,32 @@ entry:
161 starred: 'Artículos favoritos' 161 starred: 'Artículos favoritos'
162 archived: 'Artículos archivados' 162 archived: 'Artículos archivados'
163 filtered: 'Artículos filtrados' 163 filtered: 'Artículos filtrados'
164 # filtered_tags: 'Filtered by tags:' 164 filtered_tags: 'Filtrado por etiquetas:'
165 # filtered_search: 'Filtered by search:' 165 filtered_search: 'Filtrado por búsqueda:'
166 # untagged: 'Untagged entries' 166 untagged: 'Artículos sin etiquetas'
167 list: 167 list:
168 number_on_the_page: '{0} No hay artículos.|{1} Hay un artículo.|]1,Inf[ Hay %count% artículos.' 168 number_on_the_page: '{0} No hay artículos.|{1} Hay un artículo.|]1,Inf[ Hay %count% artículos.'
169 reading_time: 'tiempo estimado de lectura' 169 reading_time: 'tiempo estimado de lectura'
170 reading_time_minutes: 'tiempo estimado de lectura: %readingTime% min' 170 reading_time_minutes: 'tiempo estimado de lectura: %readingTime% min'
171 reading_time_less_one_minute: 'tiempo estimado de lectura: &lt; 1 min' 171 reading_time_less_one_minute: 'tiempo estimado de lectura: &lt; 1 min'
172 # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' 172 number_of_tags: '{1}y una etiqueta más|]1,Inf[y %count% etiquetas más'
173 reading_time_minutes_short: '%readingTime% min' 173 reading_time_minutes_short: '%readingTime% min'
174 reading_time_less_one_minute_short: '&lt; 1 min' 174 reading_time_less_one_minute_short: '&lt; 1 min'
175 original_article: 'original' 175 original_article: 'original'
176 toogle_as_read: 'Marcar como leído/ no leído' 176 toogle_as_read: 'Marcar como leído / no leído'
177 toogle_as_star: 'Marcar como favorito/ no favorito' 177 toogle_as_star: 'Marcar como favorito / no favorito'
178 delete: 'Suprimir' 178 delete: 'Eliminar'
179 export_title: 'Exportar' 179 export_title: 'Exportar'
180 filters: 180 filters:
181 title: 'Filtros' 181 title: 'Filtros'
182 status_label: 'Estatus' 182 status_label: 'Estado'
183 archived_label: 'Archivado' 183 archived_label: 'Archivado'
184 starred_label: 'Favorito' 184 starred_label: 'Favorito'
185 unread_label: 'Sin leer' 185 unread_label: 'Sin leer'
186 preview_picture_label: 'Hay una foto' 186 preview_picture_label: 'Tiene imagen de previsualización'
187 preview_picture_help: 'Foto de preview' 187 preview_picture_help: 'Imagen de previsualización'
188 language_label: 'Idioma' 188 language_label: 'Idioma'
189 # http_status_label: 'HTTP status' 189 http_status_label: 'Código de estado HTTP'
190 reading_time: 190 reading_time:
191 label: 'Duración de lectura en minutos' 191 label: 'Duración de lectura en minutos'
192 from: 'de' 192 from: 'de'
@@ -208,12 +208,12 @@ entry:
208 set_as_starred: 'Marcar como favorito' 208 set_as_starred: 'Marcar como favorito'
209 view_original_article: 'Artículo original' 209 view_original_article: 'Artículo original'
210 re_fetch_content: 'Redescargar el contenido' 210 re_fetch_content: 'Redescargar el contenido'
211 delete: 'Suprimir' 211 delete: 'Eliminar'
212 add_a_tag: 'Añadir una etiqueta' 212 add_a_tag: 'Añadir una etiqueta'
213 share_content: 'Compartir' 213 share_content: 'Compartir'
214 share_email_label: 'Dirección e-mail' 214 share_email_label: 'e-mail'
215 # public_link: 'public link' 215 public_link: 'enlace público'
216 # delete_public_link: 'delete public link' 216 delete_public_link: 'eliminar enlace público'
217 download: 'Descargar' 217 download: 'Descargar'
218 print: 'Imprimir' 218 print: 'Imprimir'
219 problem: 219 problem:
@@ -225,32 +225,32 @@ entry:
225 created_at: 'Fecha de creación' 225 created_at: 'Fecha de creación'
226 new: 226 new:
227 page_title: 'Guardar un nuevo artículo' 227 page_title: 'Guardar un nuevo artículo'
228 placeholder: 'http://website.com' 228 placeholder: 'http://sitioweb.com'
229 form_new: 229 form_new:
230 url_label: Url 230 url_label: URL
231 search: 231 search:
232 # placeholder: 'What are you looking for?' 232 placeholder: '¿Qué estás buscando?'
233 edit: 233 edit:
234 page_title: 'Editar un artículo' 234 page_title: 'Editar un artículo'
235 title_label: 'Título' 235 title_label: 'Título'
236 url_label: 'Url' 236 url_label: 'URL'
237 is_public_label: 'Es Público' 237 is_public_label: 'Es público'
238 save_label: 'Guardar' 238 save_label: 'Guardar'
239 public: 239 public:
240 # shared_by_wallabag: "This article has been shared by <a href='%wallabag_instance%'>wallabag</a>" 240 shared_by_wallabag: "Este artículo se ha compartido con <a href='%wallabag_instance%'>wallabag</a>"
241 241
242about: 242about:
243 page_title: 'Acerca de' 243 page_title: 'Acerca de'
244 top_menu: 244 top_menu:
245 who_behind_wallabag: 'Equipo del desarrollo de wallabag' 245 who_behind_wallabag: 'Quién está detrás de wallabag'
246 getting_help: 'Pedir ayuda' 246 getting_help: 'Pedir ayuda'
247 helping: 'Ayudar a wallabag' 247 helping: 'Ayudar a wallabag'
248 contributors: 'Colaboradores' 248 contributors: 'Colaboradores'
249 third_party: 'Librerías de terceros' 249 third_party: 'Bibliotecas de terceros'
250 who_behind_wallabag: 250 who_behind_wallabag:
251 developped_by: 'Desarrollado por' 251 developped_by: 'Desarrollado por'
252 website: 'Sitio web' 252 website: 'Sitio web'
253 many_contributors: 'Y muchos otros colaboradores ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">en Github</a>' 253 many_contributors: 'Y otros muchos colaboradores ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">en Github</a>'
254 project_website: 'Sitio web del proyecto' 254 project_website: 'Sitio web del proyecto'
255 license: 'Licencia' 255 license: 'Licencia'
256 version: 'Versión' 256 version: 'Versión'
@@ -259,306 +259,306 @@ about:
259 bug_reports: 'Reporte de errores' 259 bug_reports: 'Reporte de errores'
260 support: '<a href="https://github.com/wallabag/wallabag/issues">en GitHub</a>' 260 support: '<a href="https://github.com/wallabag/wallabag/issues">en GitHub</a>'
261 helping: 261 helping:
262 description: 'wallabag es libre y gratuito. Usted puede ayudarnos :' 262 description: 'wallabag es software libre y gratuito. Usted puede ayudarnos :'
263 by_contributing: 'contribuyendo al proyecto :' 263 by_contributing: 'contribuyendo al proyecto :'
264 by_contributing_2: 'nuestras necesidades están en un ticket' 264 by_contributing_2: 'nuestras necesidades están en un ticket'
265 by_paypal: 'via Paypal' 265 by_paypal: 'vía Paypal'
266 contributors: 266 contributors:
267 description: 'Gracias a los colaboradores de la aplicación web de wallabag' 267 description: 'Gracias a los colaboradores de la aplicación web de wallabag'
268 third_party: 268 third_party:
269 description: 'Aquí está la lista de las dependencias utilizadas por wallabag (con sus licencias) :' 269 description: 'Aquí está la lista de bibliotecas de terceros utilizadas por wallabag (con sus licencias) :'
270 package: 'Paquete' 270 package: 'Paquete'
271 license: 'Licencia' 271 license: 'Licencia'
272 272
273howto: 273howto:
274 page_title: 'Ayuda' 274 page_title: 'Ayuda'
275 page_description: 'Hay muchas maneras para guardar un artículo:'
276 tab_menu: 275 tab_menu:
277 # add_link: "Add a link" 276 add_link: "Añadir un artículo"
278 # shortcuts: "Use shortcuts" 277 shortcuts: "Utilizar atajos de teclado"
278 page_description: 'Hay muchas maneras de guardar un artículo:'
279 top_menu: 279 top_menu:
280 browser_addons: 'Extensiones de navigador' 280 browser_addons: 'Extensiones de navegador'
281 mobile_apps: 'Aplicaciones para smartphone' 281 mobile_apps: 'Aplicaciones para smartphone'
282 bookmarklet: 'Bookmarklet' 282 bookmarklet: 'Bookmarklet'
283 form: 283 form:
284 description: 'Gracias a este formulario' 284 description: 'Gracias a este formulario'
285 browser_addons: 285 browser_addons:
286 firefox: 'Extensión Firefox' 286 firefox: 'Extensión para Firefox'
287 chrome: 'Extensión Chrome' 287 chrome: 'Extensión para Chrome'
288 opera: 'Extensión Opera' 288 opera: 'Extensión para Opera'
289 mobile_apps: 289 mobile_apps:
290 android: 290 android:
291 via_f_droid: 'via F-Droid' 291 via_f_droid: 'en F-Droid'
292 via_google_play: 'via Google Play' 292 via_google_play: 'en Google Play'
293 ios: 'por la tienda de iTunes' 293 ios: 'en la tienda de iTunes'
294 windows: 'por la tienda de Microsoft' 294 windows: 'en la tienda de Microsoft'
295 bookmarklet: 295 bookmarklet:
296 description: 'Desplazar y soltar este link en la barra de marcadores :' 296 description: 'Arrastra y suelta este enlace en la barra de marcadores:'
297 shortcuts: 297 shortcuts:
298 # page_description: Here are the shortcuts available in wallabag. 298 page_description: Estos son los atajos de teclado disponibles en wallabag.
299 # shortcut: Shortcut 299 shortcut: Atajo de teclado
300 # action: Action 300 action: Acción
301 # all_pages_title: Shortcuts available in all pages 301 all_pages_title: Atajos de teclado disponibles en todas las páginas
302 # go_unread: Go to unread 302 go_unread: Ir a sin leer
303 # go_starred: Go to starred 303 go_starred: Ir a favoritos
304 # go_archive: Go to archive 304 go_archive: Ir a archivados
305 # go_all: Go to all entries 305 go_all: Ir a todos los artículos
306 # go_tags: Go to tags 306 go_tags: Ir a etiquetas
307 # go_config: Go to config 307 go_config: Ir a configuración
308 # go_import: Go to import 308 go_import: Ir a importar
309 # go_developers: Go to developers 309 go_developers: Ir a desarrolladores
310 # go_howto: Go to howto (this page!) 310 go_howto: Ir a ayuda (esta página)
311 # go_logout: Logout 311 go_logout: Desconectar
312 # list_title: Shortcuts available in listing pages 312 list_title: Atajos de teclado disponibles en las páginas de listados
313 # search: Display the search form 313 search: Mostrar el formulario de búsqueda
314 # article_title: Shortcuts available in entry view 314 article_title: Atajos de teclado disponibles en el artículo
315 # open_original: Open original URL of the entry 315 open_original: Abrir la URL original de un artículo
316 # toggle_favorite: Toggle star status for the entry 316 toggle_favorite: Marcar como favorito / no favorito el artículo
317 # toggle_archive: Toggle read status for the entry 317 toggle_archive: marcar como leído / no leído el artículo
318 # delete: Delete the entry 318 delete: Borrar el artículo
319 # material_title: Shortcuts available with Material theme only 319 material_title: Atajos de teclado disponibles solo en el tema Material
320 # add_link: Add a new link 320 add_link: Añadir un nuevo artículo
321 # hide_form: Hide the current form (search or new link) 321 hide_form: Ocultar el formulario actual (búsqueda o nuevo artículo)
322 # arrows_navigation: Navigate through articles 322 arrows_navigation: Navegar por los artículos
323 # open_article: Display the selected entry 323 open_article: Mostrar el artículo seleccionado
324 324
325quickstart: 325quickstart:
326 page_title: 'Comienzo rápido' 326 page_title: 'Inicio rápido'
327 # more: 'More…' 327 more: 'Más…'
328 intro: 328 intro:
329 title: 'Bienvenido a wallabag !' 329 title: '¡Bienvenido a wallabag!'
330 paragraph_1: "Le acompañaremos a su visita de wallabag y le mostraremos algunas características que le pueden interesar." 330 paragraph_1: "Le acompañaremos en su visita a wallabag y le mostraremos algunas características que le pueden interesar."
331 paragraph_2: '¡Síganos!' 331 paragraph_2: '¡Síguenos!'
332 configure: 332 configure:
333 title: 'Configure la aplicación' 333 title: 'Configure la aplicación'
334 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' 334 description: 'Para que la aplicación se ajuste a tus necesidades, echa un vistazo a la configuración de wallabag.'
335 language: 'Cambie el idioma y el diseño de la aplicación' 335 language: 'Cambie el idioma y el diseño'
336 rss: 'Activar los feeds RSS' 336 rss: 'Activar los feeds RSS'
337 tagging_rules: 'Escribir reglas para etiquetear automaticamente sus artículos' 337 tagging_rules: 'Escribe reglas para etiquetar automáticamente tus artículos'
338 admin: 338 admin:
339 title: 'Administración' 339 title: 'Administración'
340 description: 'Como administrador, tiene privilegios por wallabag. Se puede:' 340 description: 'Como administrador, tiene algunos privilegios en wallabag. Puedes:'
341 new_user: 'Crear un nuevo usuario' 341 new_user: 'Crear un nuevo usuario'
342 analytics: 'Configure analíticas' 342 analytics: 'Configurar analíticas'
343 sharing: 'Active unos parámetros de compartir artículos' 343 sharing: 'Activar algunos parámetros de compartir artículos'
344 export: 'Configure exportación' 344 export: 'Configurar exportación'
345 import: 'Configure importación' 345 import: 'Configurar importación'
346 first_steps: 346 first_steps:
347 title: 'Primeros pasos' 347 title: 'Primeros pasos'
348 # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." 348 description: "Ahora que wallabag está bien configurado, es el momento de archivar la web. Puedes hacer clic en el signo + de la parte superior derecha para añadir un artículo."
349 new_article: 'Guarde su primer artículo' 349 new_article: 'Guarda tu primer artículo'
350 unread_articles: '¡Y clasifíquelo!' 350 unread_articles: '¡Y clasifícalo!'
351 migrate: 351 migrate:
352 title: 'Migrar de un servicio existente' 352 title: 'Migrar de un servicio existente'
353 description: "¿Está usando otro servicio? Le ayudaremos a migrar sus datos a wallabag." 353 description: "¿Estás usando otro servicio? Le ayudaremos a migrar sus datos a wallabag."
354 pocket: 'Migrar desde Pocket' 354 pocket: 'Migrar desde Pocket'
355 wallabag_v1: 'Migrar desde wallabag v1' 355 wallabag_v1: 'Migrar desde wallabag v1'
356 wallabag_v2: 'Migrar desde wallabag v2' 356 wallabag_v2: 'Migrar desde wallabag v2'
357 readability: 'Migrar desde Readability' 357 readability: 'Migrar desde Readability'
358 instapaper: 'Migrar desde Instapaper' 358 instapaper: 'Migrar desde Instapaper'
359 developer: 359 developer:
360 title: 'Promotores' 360 title: 'Desarrolladores'
361 # description: 'We also thought to the developers: Docker, API, translations, etc.' 361 description: 'Nosotros también pensamos en los desarrolladores: Docker, API, traducciones, etc.'
362 create_application: 'Cree su tercera aplicación' 362 create_application: 'Cree su aplicación de terceros'
363 # use_docker: 'Use Docker to install wallabag' 363 use_docker: 'Utilice Docker para instalar wallabag'
364 docs: 364 docs:
365 title: 'Documentación completa' 365 title: 'Documentación completa'
366 # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." 366 description: "Hay muchas funcionalidades en wallabag. No dudes en leer el manual para conocerlas y aprender a utilizarlas."
367 annotate: 'Anote su artículo' 367 annotate: 'Anotar en un artículo'
368 export: 'Convierta sus artículos a ePub o a PDF' 368 export: 'Convertir tus artículos a ePUB o PDF'
369 search_filters: 'Aprenda a utilizar el buscador y los filtros para encontrar el artículo que le interese' 369 search_filters: 'Aprender a utilizar el buscador y los filtros para encontrar artículos'
370 fetching_errors: '¿Qué puedo hacer si un artículo encuentra errores por la búsqueda?' 370 fetching_errors: '¿Qué puedo hacer si se encuentran errores mientras se descarga un artículo?'
371 all_docs: '¡Y muchos más artículos!' 371 all_docs: '¡Y muchos más artículos!'
372 support: 372 support:
373 title: 'Apoyo' 373 title: 'Apoyo'
374 description: 'Si necesita ayuda, estamos disponibles para usted.' 374 description: 'Si necesitas ayuda, estamos a tu disposición.'
375 github: 'En GitHub' 375 github: 'En GitHub'
376 email: 'Por email' 376 email: 'Por e-mail'
377 gitter: 'En Gitter' 377 gitter: 'En Gitter'
378 378
379tag: 379tag:
380 page_title: 'Etiquetas' 380 page_title: 'Etiquetas'
381 list: 381 list:
382 number_on_the_page: '{0} No hay ninguna etiqueta.|{1} Hay una etiqueta.|]1,Inf[ Hay %count% etiquetas.' 382 number_on_the_page: '{0} No hay ninguna etiqueta.|{1} Hay una etiqueta.|]1,Inf[ Hay %count% etiquetas.'
383 # see_untagged_entries: 'See untagged entries' 383 see_untagged_entries: 'Ver artículos sin etiquetas'
384 new: 384 new:
385 # add: 'Add' 385 add: 'Añadir'
386 # placeholder: 'You can add several tags, separated by a comma.' 386 placeholder: 'Puedes añadir varias etiquetas, separadas por una coma.'
387 387
388import: 388import:
389 page_title: 'Importar' 389 page_title: 'Importar'
390 page_description: 'Bienvenido al útil de migración de wallabag. Seleccione el servicio previo del que usted quiera migrar.' 390 page_description: 'Bienvenido a la herramienta de importación de wallabag. Seleccione el servicio desde el que desea migrar.'
391 action: 391 action:
392 import_contents: 'Importar los contenidos' 392 import_contents: 'Importar los contenidos'
393 form: 393 form:
394 mark_as_read_title: '¿Marcar todos como leídos?' 394 mark_as_read_title: '¿Marcar todos como leídos?'
395 mark_as_read_label: 'Marcar todos artículos importados como leídos' 395 mark_as_read_label: 'Marcar todos artículos importados como leídos'
396 file_label: 'Fichero' 396 file_label: 'Archivo'
397 save_label: 'Importar el fichero' 397 save_label: 'Subir el archivo'
398 pocket: 398 pocket:
399 page_title: 'Importar > Pocket' 399 page_title: 'Importar > Pocket'
400 description: "Va a importar sus datos de Pocket. Pocket no nos permite descargar el contenido de su servicio, así que el contenido de cada artículo será redescargado por wallabag." 400 description: "Importa todos tus datos de Pocket. Pocket no nos permite descargar el contenido desde su servicio, de manera que el contenido de cada artículo será redescargado por wallabag."
401 config_missing: 401 config_missing:
402 description: "La importación de Pocket no está configurada." 402 description: "La importación de Pocket no está configurada."
403 admin_message: 'Debe definir %keyurls%una clava del API Pocket%keyurle%.' 403 admin_message: 'Debe definir %keyurls%una clave del API Pocket%keyurle%.'
404 user_message: 'El administrador de su servidor debe definir una clave API Pocket.' 404 user_message: 'El administrador de su servidor debe definir una clave del API Pocket.'
405 authorize_message: 'Puede importar sus datos desde su cuenta de Pocket. Sólo tiene que oprimir el botón para autorizar que wallabag se conecte a getpocket.com.' 405 authorize_message: 'Puede importar sus datos desde su cuenta de Pocket. Sólo tiene que hacer clic el botón para autorizar que wallabag se conecte a getpocket.com.'
406 connect_to_pocket: 'Conéctese a Pocket para importar los datos' 406 connect_to_pocket: 'Conectar a Pocket e importar los datos'
407 wallabag_v1: 407 wallabag_v1:
408 page_title: 'Importar > Wallabag v1' 408 page_title: 'Importar > Wallabag v1'
409 description: 'Va a importar sus artículos de wallabag v1. En su configuración de wallabag v1, oprima "Exportar JSON" dentro de la sección "Exportar sus datos de wallabag". Usted tendrá un fichero "wallabag-export-1-xxxx-xx-xx.json".' 409 description: 'Importa todos tus artículos de wallabag v1. En la configuración de wallabag v1, haga clic en "Exportar JSON" dentro de la sección "Exportar datos de wallabag". Obtendrás un archivo llamado "wallabag-export-1-xxxx-xx-xx.json".'
410 how_to: 'Seleccione el fichero de su exportación de wallabag v1 y oprima el botón para subirlo y importarlo.' 410 how_to: 'Seleccione el archivo exportado de wallabag v1 y haga clic en el botón para subirlo e importarlo.'
411 wallabag_v2: 411 wallabag_v2:
412 page_title: 'Importar > Wallabag v2' 412 page_title: 'Importar > Wallabag v2'
413 description: 'Va a importar sus artículos de otra instancia de wallabag v2. Vaya a Todos los artículos, entonces, en la barra lateral, oprima en "JSON". Usted tendrá un fichero "All articles.json"' 413 description: 'Importa todos tus artículos de wallabag v2. En la sección Todos los artículos, en la barra lateral, haga clic en "JSON". Obtendrás un archivo llamado "All articles.json".'
414 readability: 414 readability:
415 page_title: 'Importar > Readability' 415 page_title: 'Importar > Readability'
416 # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' 416 description: 'Importa todos tus artículos de Readability. En la página de herramientas (https://www.readability.com/tools/), haga clic en "Exportar tus datos" en la sección "Exportar datos". Recibirás un e-mail para descargar un JSON (que no tiene extensión .json).'
417 # how_to: 'Please select your Readability export and click on the below button to upload and import it.' 417 how_to: 'Seleccione el archivo exportado de Readability y haga clic en el botón para subirlo e importarlo.'
418 worker: 418 worker:
419 # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" 419 enabled: "La importación se realiza de forma asíncrona. Una vez que la tarea de importación ha comenzado, un trabajador externo se encargará de los artículos uno a uno. El servicio actual es:"
420 # download_images_warning: "You enabled downloading images for your articles. Combined with classic import it can take ages to proceed (or maybe failed). We <strong>strongly recommend</strong> to enable asynchronous import to avoid errors." 420 download_images_warning: "Tienes activado descargar imágenes de los artículos. Esto justo con la importación clásica de artículos puede tardar mucho tiempo en ser procesado (o incluso fallar). <strong>Recomendamos encarecidamente</strong> habilitar la importación asíncrona para evitar errores."
421 firefox: 421 firefox:
422 page_title: 'Importar > Firefox' 422 page_title: 'Importar > Firefox'
423 # description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." 423 description: "Importa todos tus marcadores de Firefox. En la ventana de marcadores (Ctrl+Mayus+O), en \"Importar y respaldar\", elige \"Copiar...\". Obtendrás un archivo .json."
424 # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." 424 how_to: "Seleccione el archivo exportado de Firefox y haga clic en el botón para subirlo e importarlo. Tenga en cuenta que este proceso puede tardar ya que se tienen que descargar todos los artículos."
425 chrome: 425 chrome:
426 page_title: 'Importar > Chrome' 426 page_title: 'Importar > Chrome'
427 # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" 427 description: "Importa todos tus marcadores de Chrome. La ubicación del archivo depende de tu sistema operativo : <ul><li>En Linux, <code>~/.config/chromium/Default/</code></li><li>En Windows, <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>En OS X, <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Una vez estés en ese directorio, copia el archivo de favoritos (bookmarks) en algún sitio fácil de encontrar.<em><br>Ten en cuenta que si utilizas Chromium en vez de Chrome, la ubicación del archivo cambia.</em></p>"
428 # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." 428 how_to: "Seleccione el archivo exportado de Chrome y haga clic en el botón para subirlo e importarlo. Tenga en cuenta que este proceso puede tardar ya que se tienen que descargar todos los artículos."
429 instapaper: 429 instapaper:
430 page_title: 'Importar > Instapaper' 430 page_title: 'Importar > Instapaper'
431 # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' 431 description: 'Importa todos tus artículos de Instapaper. En la página de preferencias (https://www.instapaper.com/user), haz clic en "Descargar archivo .CSV" en la sección "Exportar". Obtendrás un archivo CSV llamado "instapaper-export.csv".'
432 # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' 432 how_to: 'Seleccione el archivo exportado de Instapaper y haga clic en el botón para subirlo e importarlo.'
433 pinboard: 433 pinboard:
434 page_title: "Importar > Pinboard" 434 page_title: "Importar > Pinboard"
435 # description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").' 435 description: 'Importa todos tus artículos de Pinboard. En la página de backup (https://pinboard.in/settings/backup), haz clic en "JSON" en la sección "Marcadores". Obtendrás un archivo JSON llamado "pinboard_export".'
436 # how_to: 'Please select your Pinboard export and click on the below button to upload and import it.' 436 how_to: 'Seleccione el archivo exportado de Pinboard y haga clic en el botón para subirlo e importarlo.'
437 437
438developer: 438developer:
439 # page_title: 'API clients management' 439 page_title: 'Gestión de clientes API'
440 welcome_message: 'Bienvenido a wallabag API' 440 welcome_message: 'Bienvenido al API de wallabag'
441 documentation: 'Documentación' 441 documentation: 'Documentación'
442 how_to_first_app: 'Cómo crear mi primera aplicación' 442 how_to_first_app: 'Cómo crear mi primera aplicación'
443 full_documentation: 'Ver documentación de API entera' 443 full_documentation: 'Ver documentación completa del API'
444 list_methods: 'Hacer una lista de métodos API' 444 list_methods: 'Lista con los métodos del API'
445 clients: 445 clients:
446 title: 'Clientes' 446 title: 'Clientes'
447 create_new: 'Crear un nuevo cliente' 447 create_new: 'Crear un nuevo cliente'
448 existing_clients: 448 existing_clients:
449 title: 'Clientes actuales' 449 title: 'Clientes existentes'
450 field_id: 'identificación del cliente' 450 field_id: 'Identificador del cliente'
451 field_secret: 'Cliente secreto' 451 field_secret: 'Secreto del cliente'
452 field_uris: 'Redirigir los URI' 452 field_uris: 'URIs de redirección'
453 field_grant_types: 'Conceder manera permitida' 453 field_grant_types: 'Permisos concedidos'
454 no_client: 'No cliente todavía.' 454 no_client: 'Todavía no hay clientes.'
455 remove: 455 remove:
456 warn_message_1: 'Se puede quitar este cliente. ¡Está acción no se puede ser irreversible !' 456 warn_message_1: 'Tienes permiso para eliminar el cliente %name%. ¡Está acción es IRREVERSIBLE!'
457 warn_message_2: "Si lo elimine, cada aplicación configurada con ese cliente no se puede ser autorizada por su wallbag." 457 warn_message_2: "Si lo eliminas, cada aplicación configurada con ese cliente no podrá autenticarse en wallabag."
458 action: 'Quite este cliente' 458 action: 'Eliminar el cliente %name%'
459 client: 459 client:
460 # page_title: 'API clients management > Nuevo cliente' 460 page_title: 'Gestión de clientes API > Nuevo cliente'
461 page_description: 'Va a crear un nuevo cliente. Por favor, llene el campo abajo para URI redirigido de su aplicación.' 461 page_description: 'Está a punto de crear un nuevo cliente. Por favor, rellene el campo de abajo con la URI de redirección de su aplicación.'
462 form: 462 form:
463 # name_label: 'Name of the client' 463 name_label: 'Nombre del cliente'
464 redirect_uris_label: 'los URI redirigidos' 464 redirect_uris_label: 'URIs de redirección'
465 save_label: 'Crear un nuevo cliente' 465 save_label: 'Crear un nuevo cliente'
466 action_back: 'Atrás' 466 action_back: 'Volver'
467 client_parameter: 467 client_parameter:
468 # page_title: 'API clients management > Parámetros del cliente' 468 page_title: 'Gestión de clientes API > Parámetros del cliente'
469 page_description: 'Aquí hay sus parámetros del cliente.' 469 page_description: 'Aquí están los parámetros del cliente.'
470 # field_name: 'Client name' 470 field_name: 'Nombre del cliente'
471 field_id: 'Identificación del cliente' 471 field_id: 'Identificador del cliente'
472 field_secret: 'Cliente secreto' 472 field_secret: 'Secreto del cliente'
473 back: 'Atrás' 473 back: 'Volver'
474 read_howto: 'Leer el howto "Crear mi primera aplicación"' 474 read_howto: 'Lea la guía "Crear mi primera aplicación"'
475 howto: 475 howto:
476 # page_title: 'API clients management > Cómo crear mi primera aplicación' 476 page_title: 'Gestión de clientes API > Cómo crear mi primera aplicación'
477 description: 477 description:
478 paragraph_1: 'Los siguientes comandos se usan el <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Esté seguro de que se instalen en sus sistema antes de usarlos.' 478 paragraph_1: 'Los siguientes comandos hacen uso de la <a href="https://github.com/jkbrzt/httpie">biblioteca HTTPie</a>. Compruebe que está instalada en su sistema antes de usarla.'
479 paragraph_2: 'Necesita un token para comunicar entre su tercera aplicación y wallabag API.' 479 paragraph_2: 'Necesitas un token para establecer la comunicación entre una aplicación de terceros y la API de wallabag.'
480 paragraph_3: 'Para crear este token, necesita <a href="%link%">to create a new client</a>.' 480 paragraph_3: 'Para crear este token, necesitas <a href="%link%">crear un nuevo cliente</a>.'
481 paragraph_4: 'Ahora, cree su token (reemplace cliente_id, cliente_secreto, usuario y contraseñ con las buenas entradas):' 481 paragraph_4: 'Ahora crea tu token (reemplace client_id, client_secret, username y password con los valores generados):'
482 paragraph_5: 'Este API devolverá una respuestas así:' 482 paragraph_5: 'Este API devolverá una respuesta como esta:'
483 paragraph_6: 'El acceso_token es útil para hacer una llamada al final API. Por ejempolo:' 483 paragraph_6: 'El access_token es útil para llamar a los métodos del API. Por ejemplo:'
484 paragraph_7: 'Esta llamada devolverá todos los artículos para su usuario.' 484 paragraph_7: 'Esta llamada devolverá todos los artículos de tu usuario.'
485 paragraph_8: 'Si quiere ver todos los fines de API, se puede ver <a href="%link%">a nuestra documentación API</a>.' 485 paragraph_8: 'Si quiere ver todos los métodos del API, puede verlos en <a href="%link%">nuestra documentación del API</a>.'
486 back: 'Atrás' 486 back: 'Volver'
487 487
488user: 488user:
489 # page_title: Users management 489 page_title: Gestión de usuarios
490 # new_user: Create a new user 490 new_user: Crear un usuario
491 # edit_user: Edit an existing user 491 edit_user: Editar un usuario existente
492 # description: "Here you can manage all users (create, edit and delete)" 492 description: "Aquí puedes gestionar todos los usuarios (crear, editar y eliminar)"
493 # list: 493 list:
494 # actions: Actions 494 actions: Acciones
495 # edit_action: Edit 495 edit_action: Editar
496 # yes: Yes 496 yes: Sí
497 # no: No 497 no: No
498 # create_new_one: Create a new user 498 create_new_one: Crear un usuario
499 form: 499 form:
500 username_label: 'Nombre de usuario' 500 username_label: 'Nombre de usuario'
501 # name_label: 'Name' 501 name_label: 'Nombre'
502 password_label: 'Contraseña' 502 password_label: 'Contraseña'
503 repeat_new_password_label: 'Confirmar la nueva contraseña' 503 repeat_new_password_label: 'Confirmar la contraseña'
504 plain_password_label: '????' 504 plain_password_label: '????'
505 email_label: 'Email' 505 email_label: 'E-mail'
506 # enabled_label: 'Enabled' 506 enabled_label: 'Activado'
507 # last_login_label: 'Last login' 507 last_login_label: 'Último inicio de sesión'
508 # twofactor_label: Two factor authentication 508 twofactor_label: Autenticación en dos pasos
509 # save: Save 509 save: Guardar
510 # delete: Delete 510 delete: Eliminar
511 # delete_confirm: Are you sure? 511 delete_confirm: ¿Estás seguro?
512 # back_to_list: Back to list 512 back_to_list: Volver a la lista
513 513
514error: 514error:
515 # page_title: An error occurred 515 page_title: Ha ocurrido un error
516 516
517flashes: 517flashes:
518 config: 518 config:
519 notice: 519 notice:
520 config_saved: 'Configuración guardada.' 520 config_saved: 'Configuración guardada.'
521 password_updated: 'Contraseña actualizada' 521 password_updated: 'Contraseña actualizada'
522 password_not_updated_demo: "En modo demo, no puede cambiar la contraseña del usuario." 522 password_not_updated_demo: "En el modo demo, no puede cambiar la contraseña del usuario."
523 user_updated: 'Su información personal ha sido actualizada' 523 user_updated: 'Información actualizada'
524 rss_updated: 'La configuración de los feeds RSS ha sido actualizada' 524 rss_updated: 'Configuración RSS actualizada'
525 tagging_rules_updated: 'Regla de etiquetado borrada' 525 tagging_rules_updated: 'Regla de etiquetado actualizada'
526 tagging_rules_deleted: 'Regla de etiquetado actualizada' 526 tagging_rules_deleted: 'Regla de etiquetado eliminada'
527 rss_token_updated: 'RSS token actualizado' 527 rss_token_updated: 'Token RSS actualizado'
528 # annotations_reset: Annotations reset 528 annotations_reset: Anotaciones reiniciadas
529 # tags_reset: Tags reset 529 tags_reset: Etiquetas reiniciadas
530 # entries_reset: Entries reset 530 entries_reset: Artículos reiniciados
531 entry: 531 entry:
532 notice: 532 notice:
533 entry_already_saved: 'Entrada ya guardada por %fecha%' 533 entry_already_saved: 'Artículo ya guardado el %fecha%'
534 entry_saved: 'Entrada guardada' 534 entry_saved: 'Artículo guardado'
535 # entry_saved_failed: 'Entry saved but fetching content failed' 535 entry_saved_failed: 'Artículo guardado pero falló la descarga del contenido'
536 entry_updated: 'Entrada actualizada' 536 entry_updated: 'Artículo actualizado'
537 entry_reloaded: 'Entrada recargada' 537 entry_reloaded: 'Artículo redescargado'
538 # entry_reloaded_failed: 'Entry reloaded but fetching content failed' 538 entry_reloaded_failed: 'Artículo redescargado pero falló la descarga del contenido'
539 entry_archived: 'Artículo archivado' 539 entry_archived: 'Artículo archivado'
540 entry_unarchived: 'Artículo desarchivado' 540 entry_unarchived: 'Artículo desarchivado'
541 entry_starred: 'Artículo guardado en los favoritos' 541 entry_starred: 'Artículo marcado como favorito'
542 entry_unstarred: 'Artículo retirado de los favoritos' 542 entry_unstarred: 'Artículo desmarcado como favorito'
543 entry_deleted: 'Artículo suprimido' 543 entry_deleted: 'Artículo eliminado'
544 tag: 544 tag:
545 notice: 545 notice:
546 tag_added: 'Etiqueta añadida' 546 tag_added: 'Etiqueta añadida'
547 import: 547 import:
548 notice: 548 notice:
549 failed: 'Importación reprobada, por favor inténtelo de nuevo.' 549 failed: 'Importación fallida, por favor, inténtelo de nuevo.'
550 failed_on_file: 'Se ocurre un error por procesar importación. Por favor verifique su archivo importado.' 550 failed_on_file: 'Ocurrió un error al procesar la importación. Por favor, verifique el archivo importado.'
551 summary: 'Resúmen importado: %importado% importado, %saltados% ya guardado.' 551 summary: 'Resúmen de la importación: %imported% importados, %skipped% ya guardados.'
552 # summary_with_queue: 'Import summary: %queued% queued.' 552 summary_with_queue: 'Resúmen de la importación: %queued% encolados.'
553 error: 553 error:
554 # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. 554 redis_enabled_not_installed: Redis está activado para gestionar la importación asíncrona pero parece que <u>no se puede conectar</u>. Por favor, comprueba la configuración de Redis.
555 # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. 555 rabbit_enabled_not_installed: RabbitMQ está activado para gestionar la importación asíncrona pero parece que <u>no se puede conectar</u>. Por favor, comprueba la configuración de RabbitMQ.
556 developer: 556 developer:
557 notice: 557 notice:
558 client_created: 'Nuevo cliente creado.' 558 client_created: 'Creado el cliente %name%.'
559 client_deleted: 'Cliente suprimido' 559 client_deleted: 'Eliminado el cliente %name%'
560 user: 560 user:
561 notice: 561 notice:
562 # added: 'User "%username%" added' 562 added: 'Añadido el usuario "%username%"'
563 # updated: 'User "%username%" updated' 563 updated: 'Actualizado el usuario "%username%"'
564 # deleted: 'User "%username%" deleted' 564 deleted: 'Eliminado el usuario "%username%"'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
index bb0ed48d..992ff71c 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
@@ -344,7 +344,7 @@ quickstart:
344 export: "Configura l'esportazione" 344 export: "Configura l'esportazione"
345 import: "Configura l'importazione" 345 import: "Configura l'importazione"
346 first_steps: 346 first_steps:
347 title: 'Pimi passi' 347 title: 'Primi passi'
348 # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." 348 # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link."
349 new_article: 'Salva il tuo primo contenuto' 349 new_article: 'Salva il tuo primo contenuto'
350 unread_articles: 'E classificalo!' 350 unread_articles: 'E classificalo!'
diff --git a/src/Wallabag/CoreBundle/Resources/views/base.html.twig b/src/Wallabag/CoreBundle/Resources/views/base.html.twig
index 289458d4..020d8efc 100644
--- a/src/Wallabag/CoreBundle/Resources/views/base.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/base.html.twig
@@ -3,7 +3,7 @@
3<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678" lang="en"><![endif]--> 3<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678" lang="en"><![endif]-->
4<!--[if IE 8]><html class="no-js ie8 ie678" lang="en"><![endif]--> 4<!--[if IE 8]><html class="no-js ie8 ie678" lang="en"><![endif]-->
5<!--[if gt IE 8]><html class="no-js" lang="en"><![endif]--> 5<!--[if gt IE 8]><html class="no-js" lang="en"><![endif]-->
6<html lang="fr"> 6<html>
7 <head> 7 <head>
8 {% block head %} 8 {% block head %}
9 <meta name="viewport" content="initial-scale=1.0"> 9 <meta name="viewport" content="initial-scale=1.0">
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_full_image.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_full_image.html.twig
index 91a1bac0..58757158 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_full_image.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_full_image.html.twig
@@ -11,8 +11,8 @@
11 11
12 <div class="card-content"> 12 <div class="card-content">
13 <span class="card-title dot-ellipsis dot-resize-update"> 13 <span class="card-title dot-ellipsis dot-resize-update">
14 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title| e | raw | striptags }}"> 14 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title| striptags | e('html_attr') }}">
15 {{ entry.title | e | raw | striptags | truncate(80, true, '…') }} 15 {{ entry.title | striptags | truncate(80, true, '…') | raw }}
16 </a> 16 </a>
17 </span> 17 </span>
18 18
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig
index bb9b64ce..3ba6253a 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig
@@ -2,7 +2,7 @@
2 <div class="card-stacked"> 2 <div class="card-stacked">
3 <div class="card-content"> 3 <div class="card-content">
4 <span class="card-title dot-ellipsis dot-resize-update"> 4 <span class="card-title dot-ellipsis dot-resize-update">
5 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title | raw | striptags }}"> 5 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title | striptags | e('html_attr') }}">
6 {{ entry.title| striptags | truncate(120, true, '…') | raw }} 6 {{ entry.title| striptags | truncate(120, true, '…') | raw }}
7 </a> 7 </a>
8 </span> 8 </span>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_no_preview.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_no_preview.html.twig
index ed916e79..eb158659 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_no_preview.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_no_preview.html.twig
@@ -2,8 +2,8 @@
2 <div class="card-body"> 2 <div class="card-body">
3 <div class="card-content"> 3 <div class="card-content">
4 <span class="card-title dot-ellipsis dot-resize-update"> 4 <span class="card-title dot-ellipsis dot-resize-update">
5 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title | e | raw | striptags }}"> 5 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title | striptags | e('html_attr') }}">
6 {{ entry.title | e | raw | striptags | truncate(80, true, '…') }} 6 {{ entry.title | striptags | truncate(80, true, '…') | raw }}
7 </a> 7 </a>
8 </span> 8 </span>
9 9
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_preview.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_preview.html.twig
index d23be4d0..fb5301c8 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_preview.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_preview.html.twig
@@ -13,8 +13,8 @@
13 <i class="grey-text text-darken-4 activator material-icons right">more_vert</i> 13 <i class="grey-text text-darken-4 activator material-icons right">more_vert</i>
14 14
15 <span class="card-title dot-ellipsis dot-resize-update"> 15 <span class="card-title dot-ellipsis dot-resize-update">
16 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title | e | raw | striptags }}"> 16 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title | striptags | e('html_attr') }}">
17 {{ entry.title | e | striptags | truncate(80, true, '…') | raw }} 17 {{ entry.title | striptags | truncate(80, true, '…') | raw }}
18 </a> 18 </a>
19 </span> 19 </span>
20 20
@@ -29,8 +29,8 @@
29 <div class="card-reveal"> 29 <div class="card-reveal">
30 <i class="card-title activator grey-text text-darken-4 material-icons right">clear</i> 30 <i class="card-title activator grey-text text-darken-4 material-icons right">clear</i>
31 <span class="card-title"> 31 <span class="card-title">
32 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title | e | raw | striptags }}"> 32 <a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title | striptags | e('html_attr') }}">
33 {{ entry.title | e | raw | striptags | truncate(80, true, '…') }} 33 {{ entry.title | striptags | truncate(80, true, '…') | raw }}
34 </a> 34 </a>
35 </span> 35 </span>
36 36
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
index 15428b92..c3508083 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{{ entry.title|e|raw }} ({{ entry.domainName|removeWww }}){% endblock %} 3{% block title %}{{ entry.title|striptags|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
4 4
5{% block body_class %}entry{% endblock %} 5{% block body_class %}entry{% endblock %}
6 6
@@ -118,14 +118,14 @@
118 {% endif %} 118 {% endif %}
119 {% if craue_setting('share_twitter') %} 119 {% if craue_setting('share_twitter') %}
120 <li> 120 <li>
121 <a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool icon-twitter" title="twitter"> 121 <a href="https://twitter.com/home?status={{entry.title|striptags|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool icon-twitter" title="twitter">
122 <span>twitter</span> 122 <span>twitter</span>
123 </a> 123 </a>
124 </li> 124 </li>
125 {% endif %} 125 {% endif %}
126 {% if craue_setting('share_shaarli') %} 126 {% if craue_setting('share_shaarli') %}
127 <li> 127 <li>
128 <a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}&amp;tags={{ entry.tags|join(',')|url_encode }}" target="_blank"> 128 <a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|striptags|url_encode }}&amp;tags={{ entry.tags|join(',')|striptags|url_encode }}" target="_blank">
129 <i class="tool icon-image icon-image--shaarli" title="shaarli"></i> 129 <i class="tool icon-image icon-image--shaarli" title="shaarli"></i>
130 <span>shaarli</span> 130 <span>shaarli</span>
131 </a> 131 </a>
@@ -133,7 +133,7 @@
133 {% endif %} 133 {% endif %}
134 {% if craue_setting('share_diaspora') %} 134 {% if craue_setting('share_diaspora') %}
135 <li> 135 <li>
136 <a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank"> 136 <a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&amp;title={{ entry.title|striptags|url_encode }}&amp;notes=&amp;v=1&amp;noui=1&amp;jump=doclose" target="_blank">
137 <i class="tool icon-image icon-image--diaspora" title="diaspora"></i> 137 <i class="tool icon-image icon-image--diaspora" title="diaspora"></i>
138 <span>diaspora*</span> 138 <span>diaspora*</span>
139 </a> 139 </a>
@@ -141,7 +141,7 @@
141 {% endif %} 141 {% endif %}
142 {% if craue_setting('share_unmark') %} 142 {% if craue_setting('share_unmark') %}
143 <li> 143 <li>
144 <a href="{{ craue_setting('unmark_url') }}/mark/add?url={{ entry.url|url_encode }}&amp;title={{entry.title|url_encode}}&amp;v=6" target="_blank"> 144 <a href="{{ craue_setting('unmark_url') }}/mark/add?url={{ entry.url|url_encode }}&amp;title={{entry.title|striptags|url_encode}}&amp;v=6" target="_blank">
145 <i class="tool icon-image icon-image--unmark" title="unmark"></i> 145 <i class="tool icon-image icon-image--unmark" title="unmark"></i>
146 <span>unmark.it</span> 146 <span>unmark.it</span>
147 </a> 147 </a>
@@ -149,7 +149,7 @@
149 {% endif %} 149 {% endif %}
150 {% if craue_setting('carrot') %} 150 {% if craue_setting('carrot') %}
151 <li> 151 <li>
152 <a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank" title="carrot"> 152 <a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&amp;title={{ entry.title|striptags|url_encode }}" target="_blank" title="carrot">
153 <i class="tool icon-image icon-image--carrot"></i> 153 <i class="tool icon-image icon-image--carrot"></i>
154 <span>Carrot</span> 154 <span>Carrot</span>
155 </a> 155 </a>
@@ -157,7 +157,7 @@
157 {% endif %} 157 {% endif %}
158 {% if craue_setting('share_mail') %} 158 {% if craue_setting('share_mail') %}
159 <li> 159 <li>
160 <a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" title="{{ 'entry.view.left_menu.share_email_label'|trans }}" class="tool email icon icon-mail"> 160 <a href="mailto:?subject={{ entry.title|striptags|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" title="{{ 'entry.view.left_menu.share_email_label'|trans }}" class="tool email icon icon-mail">
161 <span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span> 161 <span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span>
162 </a> 162 </a>
163 </li> 163 </li>
@@ -209,7 +209,7 @@
209{% block content %} 209{% block content %}
210 <div id="article"> 210 <div id="article">
211 <header class="mbm"> 211 <header class="mbm">
212 <h1>{{ entry.title|e|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1> 212 <h1>{{ entry.title|striptags|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
213 </header> 213 </header>
214 <aside> 214 <aside>
215 <ul class="tools"> 215 <ul class="tools">
@@ -222,7 +222,7 @@
222 </li> 222 </li>
223 <li> 223 <li>
224 <i class="material-icons link">link</i> 224 <i class="material-icons link">link</i>
225 <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool"> 225 <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|striptags }}" class="tool">
226 {{ entry.domainName|removeWww }} 226 {{ entry.domainName|removeWww }}
227 </a> 227 </a>
228 </li> 228 </li>
@@ -244,7 +244,7 @@
244 </div> 244 </div>
245 245
246 {% if entry.previewPicture is not null %} 246 {% if entry.previewPicture is not null %}
247 <div><img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" /></div> 247 <div><img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|striptags|e('html_attr') }}" /></div>
248 {% endif %} 248 {% endif %}
249 249
250 </aside> 250 </aside>
diff --git a/src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php b/src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php
index fc175f67..992ce1ad 100644
--- a/src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php
+++ b/src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php
@@ -46,7 +46,8 @@ abstract class AbstractConsumer
46 if (null === $user) { 46 if (null === $user) {
47 $this->logger->warning('Unable to retrieve user', ['entry' => $storedEntry]); 47 $this->logger->warning('Unable to retrieve user', ['entry' => $storedEntry]);
48 48
49 return false; 49 // return true to skip message
50 return true;
50 } 51 }
51 52
52 $this->import->setUser($user); 53 $this->import->setUser($user);
diff --git a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.es.yml b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.es.yml
new file mode 100644
index 00000000..eb867a76
--- /dev/null
+++ b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.es.yml
@@ -0,0 +1,11 @@
1# Two factor mail
2auth_code:
3 on: 'on'
4 mailer:
5 subject: 'código de autenticación de wallabag'
6 body:
7 hello: "Hola %user%,"
8 first_para: "Debido a que tienes activada la autenticación en dos pasos y acabas de iniciar sesión en un nuevo dispositivo (ordenador, teléfono, etc.), hemos enviado un código para validar tu conexión."
9 second_para: "Este es el código:"
10 support: "Por favor, no dudes en contactarnos si tienes algún problema:"
11 signature: "El equipo de wallabag"