aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/web/forms.py4
-rw-r--r--src/web/templates/management.html2
-rw-r--r--src/web/translations/fr/LC_MESSAGES/messages.mobin16842 -> 17338 bytes
-rw-r--r--src/web/translations/fr/LC_MESSAGES/messages.po849
-rw-r--r--src/web/views/__init__.py8
5 files changed, 481 insertions, 382 deletions
diff --git a/src/web/forms.py b/src/web/forms.py
index 97ca75b0..fbfff85f 100644
--- a/src/web/forms.py
+++ b/src/web/forms.py
@@ -197,8 +197,8 @@ class AddFeedForm(Form):
class CategoryForm(Form):
- name = TextField(lazy_gettext("Name"))
- submit = SubmitField(lazy_gettext("Submit"))
+ name = TextField(lazy_gettext("Category name"))
+ submit = SubmitField(lazy_gettext("Save"))
class InformationMessageForm(Form):
diff --git a/src/web/templates/management.html b/src/web/templates/management.html
index 0a844365..eaf1de31 100644
--- a/src/web/templates/management.html
+++ b/src/web/templates/management.html
@@ -5,7 +5,7 @@
<h1>{{ _('Your subscriptions') }}</h1>
<p>{{ _('You are subscribed to') }} {{ nb_feeds }} <a href="/feeds">{{ _('feeds') }}</a>. <a href="{{ url_for("feed.form") }}">{{ _('Add') }}</a> {{ _('a feed') }}.</p>
<p>{{ nb_articles }} {{ _('articles are stored in the database with') }} {{ nb_unread_articles }} {{ _('unread articles') }}.</p>
- <p>You have {{ nb_categories }} <a href="{{ url_for("categories.list_")}}">categories</a>.</p>
+ <p>{{ _('You have') }} {{ nb_categories }} <a href="{{ url_for("categories.list_")}}">{{ _('categories') }}</a>.</p>
<a href="{{ url_for("articles.expire", weeks=10) }}" class="btn btn-default" onclick="return confirm('{{ _('You are going to delete old articles.') }}');">{{ _('Delete articles older than 10 weeks') }}</a>
</div>
<div class="well">
diff --git a/src/web/translations/fr/LC_MESSAGES/messages.mo b/src/web/translations/fr/LC_MESSAGES/messages.mo
index c7135b4c..434275dc 100644
--- a/src/web/translations/fr/LC_MESSAGES/messages.mo
+++ b/src/web/translations/fr/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/src/web/translations/fr/LC_MESSAGES/messages.po b/src/web/translations/fr/LC_MESSAGES/messages.po
index 3e454127..9b6b8c9a 100644
--- a/src/web/translations/fr/LC_MESSAGES/messages.po
+++ b/src/web/translations/fr/LC_MESSAGES/messages.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-01-05 14:37+0100\n"
-"PO-Revision-Date: 2016-01-05 14:39+0100\n"
+"POT-Creation-Date: 2016-04-09 14:05+0200\n"
+"PO-Revision-Date: 2016-04-09 14:06+0200\n"
"Last-Translator: Cédric Bonhomme <cedric@cedricbonhomme.org>\n"
"Language-Team: fr <LL@li.org>\n"
"Language: fr\n"
@@ -19,132 +19,136 @@ msgstr ""
"Generated-By: Babel 1.3\n"
"X-Generator: Poedit 1.8.4\n"
-#: src/web/forms.py:45 src/web/forms.py:113 src/web/forms.py:136
+#: src/web/forms.py:47 src/web/forms.py:131 src/web/forms.py:156
#: src/web/templates/admin/dashboard.html:12
msgid "Nickname"
msgstr "Pseudonyme"
-#: src/web/forms.py:46 src/web/forms.py:114 src/web/forms.py:137
+#: src/web/forms.py:48 src/web/forms.py:132 src/web/forms.py:157
msgid "Please enter your nickname."
msgstr "S'il vous plaît, entrez votre pseudonyme."
-#: src/web/forms.py:47 src/web/forms.py:115 src/web/forms.py:138
-#: src/web/forms.py:186 src/web/templates/admin/dashboard.html:13
+#: src/web/forms.py:49 src/web/forms.py:133 src/web/forms.py:158
+#: src/web/forms.py:213 src/web/templates/admin/dashboard.html:13
msgid "Email"
msgstr "Email"
-#: src/web/forms.py:50 src/web/forms.py:86 src/web/forms.py:189
+#: src/web/forms.py:52 src/web/forms.py:216
msgid "Please enter your email address."
msgstr "S'il vous plaît, entrez votre adresse email."
-#: src/web/forms.py:51 src/web/forms.py:87 src/web/forms.py:118
-#: src/web/forms.py:141
+#: src/web/forms.py:53 src/web/forms.py:96 src/web/forms.py:136
+#: src/web/forms.py:161
msgid "Password"
msgstr "Mot de passe"
-#: src/web/forms.py:52 src/web/forms.py:88
+#: src/web/forms.py:54 src/web/forms.py:97
msgid "Please enter a password."
msgstr "S'il vous plaît entrer un mot de passe."
-#: src/web/forms.py:55 src/web/templates/login.html:26
+#: src/web/forms.py:56 src/web/templates/login.html:26
msgid "Sign up"
msgstr "S'inscrire"
-#: src/web/forms.py:60 src/web/forms.py:127 src/web/forms.py:156
-msgid ""
-"This nickname has invalid characters. Please use letters, numbers, dots and "
-"underscores only."
-msgstr ""
-"Ce pseudonyme a des caractères non valides. Utilisez seulement des lettres, "
-"des chiffres, des points et '_'."
+#: src/web/forms.py:95
+msgid "Please enter your email address or nickname."
+msgstr "S'il vous plaît, entrez votre adresse email ou pseudo."
-#: src/web/forms.py:90 src/web/templates/login.html:5
+#: src/web/forms.py:99 src/web/templates/login.html:5
msgid "Log In"
msgstr "Connexion"
-#: src/web/forms.py:101
-msgid "Account not confirmed"
-msgstr "Compte non confirmé"
-
-#: src/web/forms.py:104
-msgid "Invalid email or password"
-msgstr "E-mail ou mot de passe invalide"
-
-#: src/web/forms.py:117 src/web/forms.py:140
+#: src/web/forms.py:135 src/web/forms.py:160
msgid "Please enter your email."
msgstr "S'il vous plaît, entrez votre email."
-#: src/web/forms.py:119 src/web/forms.py:143
+#: src/web/forms.py:137 src/web/forms.py:163
msgid "Feeds refresh frequency (in minutes)"
msgstr "Fréquence de rafraîchissement du flux (en minutes)"
-#: src/web/forms.py:122 src/web/forms.py:146 src/web/forms.py:169
+#: src/web/forms.py:140 src/web/forms.py:166 src/web/forms.py:189
+#: src/web/forms.py:201
msgid "Save"
msgstr "Sauver"
-#: src/web/forms.py:142
+#: src/web/forms.py:145 src/web/forms.py:176
+msgid ""
+"This nickname has invalid characters. Please use letters, numbers, dots and "
+"underscores only."
+msgstr ""
+"Ce pseudonyme a des caractères non valides. Utilisez seulement des lettres, "
+"des chiffres, des points et '_'."
+
+#: src/web/forms.py:162
msgid "Password Confirmation"
msgstr "Confirmation du mot de passe"
-#: src/web/forms.py:151
+#: src/web/forms.py:171
msgid "Passwords aren't the same."
msgstr "Les mots de passe ne sont pas identiques."
-#: src/web/forms.py:164 src/web/templates/feed_list.html:10
-#: src/web/templates/layout.html:107
+#: src/web/forms.py:184 src/web/templates/feed_list.html:8
msgid "Title"
msgstr "Titre"
-#: src/web/forms.py:165
+#: src/web/forms.py:185
msgid "Feed link"
msgstr "Lien du flux"
-#: src/web/forms.py:166
+#: src/web/forms.py:186
msgid "Please enter the URL."
msgstr "S'il vous plaît, entrez une adresse."
-#: src/web/forms.py:167
+#: src/web/forms.py:187
msgid "Site link"
msgstr "Lien du site"
-#: src/web/forms.py:168
+#: src/web/forms.py:188
msgid "Check for updates"
msgstr "Vérifier les mises à jour"
-#: src/web/forms.py:178
+#: src/web/forms.py:190
+msgid "Category of the feed"
+msgstr "Catégorie du flux"
+
+#: src/web/forms.py:200 src/web/templates/layout.html:71
+msgid "Category name"
+msgstr "Nom de la catégorie"
+
+#: src/web/forms.py:205
msgid "Subject"
msgstr "Objet"
-#: src/web/forms.py:179
+#: src/web/forms.py:206
msgid "Please enter a subject."
msgstr "S'il vous plaît entrer un objet."
-#: src/web/forms.py:180
+#: src/web/forms.py:207
msgid "Message"
msgstr "Message"
-#: src/web/forms.py:181
+#: src/web/forms.py:208
msgid "Please enter a content."
msgstr "S'il vous plaît entrer un contenu."
-#: src/web/forms.py:182
+#: src/web/forms.py:209
msgid "Send"
msgstr "Envoyer"
-#: src/web/forms.py:190
+#: src/web/forms.py:217
msgid "Recover"
msgstr "Récupérer"
-#: src/web/forms.py:200
+#: src/web/forms.py:227
msgid "Account not confirmed."
msgstr "Compte non confirmé."
-#: src/web/forms.py:203
+#: src/web/forms.py:230
msgid "Invalid email."
msgstr "Email invalide."
-#: src/web/templates/about.html:5 src/web/templates/layout.html:86
-#: src/web/templates/layout.html:119
+#: src/web/templates/about.html:5 src/web/templates/layout.html:95
+#: src/web/templates/layout.html:105
msgid "About"
msgstr "À propos"
@@ -244,23 +248,23 @@ msgid "from"
msgstr "de"
#: src/web/templates/article.html:7 src/web/templates/duplicates.html:22
-#: src/web/templates/duplicates.html:23 src/web/templates/home.html:95
+#: src/web/templates/duplicates.html:23
msgid "Delete this article"
msgstr "Supprimer cet article"
-#: src/web/templates/article.html:9 src/web/templates/home.html:97
+#: src/web/templates/article.html:9
msgid "One of your favorites"
msgstr "Un de vos favoris"
-#: src/web/templates/article.html:11 src/web/templates/home.html:99
+#: src/web/templates/article.html:11
msgid "Click if you like this article"
msgstr "Cliquez si vous aimez cet article"
-#: src/web/templates/article.html:14 src/web/templates/home.html:102
+#: src/web/templates/article.html:14
msgid "Mark this article as unread"
msgstr "Marquer cet article comme non lu"
-#: src/web/templates/article.html:16 src/web/templates/home.html:104
+#: src/web/templates/article.html:16
msgid "Mark this article as read"
msgstr "Marquer cet article comme lu"
@@ -277,6 +281,48 @@ msgstr "Billet précédent:"
msgid "Share on"
msgstr "Partager sur"
+#: src/web/templates/categories.html:4
+#, python-format
+msgid ""
+"You have %(categories)d categories &middot; Add a %(start_link)scategory"
+"%(end_link)s"
+msgstr ""
+"Vous avez %(categories)d catégories &middot; Ajouter une "
+"%(start_link)scategorie%(end_link)s"
+
+#: src/web/templates/categories.html:6
+msgid "No category"
+msgstr "Aucune catégorie"
+
+#: src/web/templates/categories.html:13
+msgid "Name"
+msgstr "Nom de famille"
+
+#: src/web/templates/categories.html:14
+msgid "Feeds"
+msgstr "Flux"
+
+#: src/web/templates/categories.html:15 src/web/templates/feed_list.html:10
+msgid "Articles"
+msgstr "Articles"
+
+#: src/web/templates/categories.html:16 src/web/templates/feed_list.html:11
+#: src/web/templates/admin/dashboard.html:16
+msgid "Actions"
+msgstr "Actions"
+
+#: src/web/templates/categories.html:27
+msgid "Edit this category"
+msgstr "Éditer la catégorie"
+
+#: src/web/templates/categories.html:28
+msgid "Delete this category"
+msgstr "Supprimer cette catégorie"
+
+#: src/web/templates/categories.html:28
+msgid "You are going to delete this category."
+msgstr "Vous allez supprimer cette catégorie."
+
#: src/web/templates/duplicates.html:4
msgid "Duplicates in the feed"
msgstr "Doublons dans le flux"
@@ -286,49 +332,47 @@ msgid "Delete all in this column"
msgstr "Supprimer tout dans cette colonne"
#: src/web/templates/edit_feed.html:19 src/web/templates/edit_feed.html:27
+#: src/web/templates/edit_feed.html:35
msgid "Optional"
msgstr "Facultatif"
-#: src/web/templates/edit_feed.html:41
+#: src/web/templates/edit_feed.html:49
msgid "Filters"
msgstr "Filtres"
-#: src/web/templates/edit_feed.html:52
+#: src/web/templates/edit_feed.html:60
msgid "simple match"
msgstr "correspondance exact"
-#: src/web/templates/edit_feed.html:53
+#: src/web/templates/edit_feed.html:61
msgid "regex"
msgstr "expression régulière"
-#: src/web/templates/edit_feed.html:57
+#: src/web/templates/edit_feed.html:65
msgid "match"
msgstr "correspond"
-#: src/web/templates/edit_feed.html:58
+#: src/web/templates/edit_feed.html:66
msgid "no match"
msgstr "ne correspond pas"
-#: src/web/templates/edit_feed.html:61
+#: src/web/templates/edit_feed.html:69
msgid "mark as read"
msgstr "Marquer cet article comme lu"
-#: src/web/templates/edit_feed.html:62
+#: src/web/templates/edit_feed.html:70
msgid "mark as favorite"
msgstr "Marquer comme favori"
-#: src/web/templates/feed.html:7 src/web/templates/feed_list.html:40
-#: src/web/templates/home.html:31 src/web/templates/home.html:48
+#: src/web/templates/feed.html:7 src/web/templates/feed_list.html:35
msgid "Delete this feed"
msgstr "Supprimer ce flux"
-#: src/web/templates/feed.html:7 src/web/templates/feed_list.html:40
-#: src/web/templates/home.html:31 src/web/templates/home.html:48
+#: src/web/templates/feed.html:7 src/web/templates/feed_list.html:35
msgid "You are going to delete this feed."
msgstr "Vous allez supprimer ce flux."
-#: src/web/templates/feed.html:8 src/web/templates/feed_list.html:38
-#: src/web/templates/home.html:30 src/web/templates/home.html:47
+#: src/web/templates/feed.html:8 src/web/templates/feed_list.html:33
msgid "Edit this feed"
msgstr "Éditer ce flux"
@@ -340,26 +384,31 @@ msgstr "Ce flux contient"
msgid "articles"
msgstr "articles"
-#: src/web/templates/feed.html:13
+#: src/web/templates/feed.html:14
+#, python-format
+msgid "This feed is part of category %(category_name)s"
+msgstr "Ce flux fait partie de la catégorie %(category_name)s"
+
+#: src/web/templates/feed.html:16
msgid "Address of the feed"
msgstr "Adresse du flux"
-#: src/web/templates/feed.html:15
+#: src/web/templates/feed.html:18
msgid "Address of the site"
msgstr "Adresse du site"
-#: src/web/templates/feed.html:21
+#: src/web/templates/feed.html:24
msgid "Last download:"
msgstr "Dernier téléchargement:"
-#: src/web/templates/feed.html:25
+#: src/web/templates/feed.html:28
msgid ""
"That feed has encountered too much consecutive errors and won't be retrieved "
"anymore."
msgstr ""
"Ce flux a rencontré trop d'erreurs consécutives et ne sera plus récupéré."
-#: src/web/templates/feed.html:26
+#: src/web/templates/feed.html:29
#, python-format
msgid ""
"You can click <a href='%(reset_error_url)s'>here</a> to reset the error "
@@ -368,7 +417,7 @@ msgstr ""
"Vous pouvez cliquer <a href='%(reset_error_url)s'>ici</a> pour réinitialiser "
"le nombre d'erreurs et réactiver le flux."
-#: src/web/templates/feed.html:28
+#: src/web/templates/feed.html:31
msgid ""
"The download of this feed has encountered some problems. However its error "
"counter will be reinitialized at the next successful retrieving."
@@ -377,84 +426,72 @@ msgstr ""
"compteur d'erreurs sera réinitialisé lors de la prochaine récupération "
"réussie."
-#: src/web/templates/feed.html:32
+#: src/web/templates/feed.html:35
msgid "Here's the last error encountered while retrieving this feed:"
msgstr "Voici la dernière erreur survenue lors de la récupération ce flux:"
-#: src/web/templates/feed.html:36
+#: src/web/templates/feed.html:39
msgid "The last article was posted"
msgstr "Le dernier article a été posté il y a"
-#: src/web/templates/feed.html:36
+#: src/web/templates/feed.html:39
msgid "day(s) ago."
msgstr "jours."
-#: src/web/templates/feed.html:37
+#: src/web/templates/feed.html:40
msgid "Daily average"
msgstr "Moyenne journalière"
-#: src/web/templates/feed.html:37
+#: src/web/templates/feed.html:40
msgid "between the"
msgstr "entre le"
-#: src/web/templates/feed.html:37
+#: src/web/templates/feed.html:40
msgid "and the"
msgstr "et le"
-#: src/web/templates/feed_list.html:2
-msgid "No feed"
-msgstr "Aucun flux"
-
-#: src/web/templates/feed_list.html:9
+#: src/web/templates/feed_list.html:7
msgid "Status"
msgstr "Statut"
-#: src/web/templates/feed_list.html:11
+#: src/web/templates/feed_list.html:9
msgid "Site"
msgstr "Site"
-#: src/web/templates/feed_list.html:12 src/web/templates/feed_list.html:37
-msgid "Articles"
-msgstr "Articles"
-
-#: src/web/templates/feed_list.html:13
-#: src/web/templates/admin/dashboard.html:15
-msgid "Actions"
-msgstr "Actions"
-
-#: src/web/templates/feed_list.html:22
+#: src/web/templates/feed_list.html:20
msgid "Feed enabled"
msgstr "Flux activé"
-#: src/web/templates/feed_list.html:24
+#: src/web/templates/feed_list.html:22
msgid "Feed disabled"
msgstr "Flux désactivé"
-#: src/web/templates/feed_list.html:27
+#: src/web/templates/feed_list.html:25
msgid "Feed encountered too much errors."
msgstr "Le flux a rencontré trop d'erreurs."
-#: src/web/templates/feed_list.html:39
+#: src/web/templates/feed_list.html:32
+msgid "Information"
+msgstr "Information"
+
+#: src/web/templates/feed_list.html:34
msgid "Duplicate articles"
msgstr "Articles doublon"
-#: src/web/templates/feeds.html:4 src/web/templates/management.html:6
-msgid "You are subscribed to"
-msgstr "Vous êtes abonné à"
+#: src/web/templates/feeds.html:4
+#, python-format
+msgid "You are subscribed to %(feed_count)d feeds."
+msgstr "Vous êtes abonné à %(feed_count)d flux."
#: src/web/templates/feeds.html:4 src/web/templates/management.html:6
-msgid "feeds"
-msgstr "flux"
-
-#: src/web/templates/feeds.html:4
-msgid "Add a"
-msgstr "Ajouter un"
+msgid "Add"
+msgstr "Ajouter"
-#: src/web/templates/feeds.html:4
-msgid "feed"
-msgstr "flux"
+#: src/web/templates/feeds.html:4 src/web/templates/management.html:6
+msgid "a feed"
+msgstr "un flux"
-#: src/web/templates/history.html:4 src/web/templates/layout.html:75
+#: src/web/templates/history.html:4 src/web/templates/layout.html:84
msgid "History"
msgstr "Historique"
@@ -462,71 +499,6 @@ msgstr "Historique"
msgid "all years"
msgstr "toutes les années"
-#: src/web/templates/home.html:5
-msgid "You don't have any feeds."
-msgstr "Vous n'avez pas de flux."
-
-#: src/web/templates/home.html:6
-msgid "Add some"
-msgstr "Ajoutez en"
-
-#: src/web/templates/home.html:6 src/web/templates/management.html:13
-msgid "or"
-msgstr "ou"
-
-#: src/web/templates/home.html:6
-msgid "upload an OPML file."
-msgstr "téléchargez un fichier OPML."
-
-#: src/web/templates/home.html:15
-msgid "All feeds"
-msgstr "Tous les flux"
-
-#: src/web/templates/home.html:22 src/web/templates/home.html:39
-msgid "error"
-msgstr "erreur"
-
-#: src/web/templates/home.html:29 src/web/templates/home.html:46
-msgid "Details"
-msgstr "Détails"
-
-#: src/web/templates/home.html:32 src/web/templates/home.html:49
-msgid "Mark this feed as read"
-msgstr "Marquer ce flux comme lu"
-
-#: src/web/templates/home.html:33 src/web/templates/home.html:50
-msgid "Mark this feed as unread"
-msgstr "Marquer ce flux comme non lu"
-
-#: src/web/templates/home.html:68 src/web/templates/home.html:76
-#: src/web/templates/layout.html:76
-msgid "All"
-msgstr "Tout"
-
-#: src/web/templates/home.html:69
-msgid "Read"
-msgstr "Lus"
-
-#: src/web/templates/home.html:70
-msgid "Unread"
-msgstr "Non lus"
-
-#: src/web/templates/home.html:86 src/web/templates/layout.html:67
-msgid "Feed"
-msgstr "Flux"
-
-#: src/web/templates/home.html:87 src/web/views/views.py:418
-msgid "Article"
-msgstr "Article"
-
-#: src/web/templates/home.html:88
-msgid "Date"
-msgstr "Date"
-
-#: src/web/templates/home.html:113
-msgid "No icon found for this feed"
-msgstr "Aucune icône trouvé pour ce flux."
-
#: src/web/templates/inactives.html:6
msgid "Days of inactivity"
msgstr "Jours d'inactivité"
@@ -539,71 +511,53 @@ msgstr "jours"
msgid "No inactive feeds."
msgstr "Aucun flux inactifs."
-#: src/web/templates/layout.html:40 src/web/templates/layout.html:43
-#: src/web/views/feed.py:151
-msgid "Add a feed"
-msgstr "Ajouter un flux"
-
-#: src/web/templates/layout.html:49
-msgid "site or feed url"
-msgstr "site ou adresse de flux"
-
-#: src/web/templates/layout.html:59
-msgid "Home"
-msgstr "Accueil"
-
-#: src/web/templates/layout.html:61 src/web/views/views.py:315
-msgid "Favorites"
-msgstr "Favoris"
-
-#: src/web/templates/layout.html:64
+#: src/web/templates/layout.html:44
msgid "Fetch"
msgstr "Télécharger"
-#: src/web/templates/layout.html:69
-msgid "Mark all as read"
-msgstr "Marquer tout comme lu"
+#: src/web/templates/layout.html:48
+msgid "Add a new feed"
+msgstr "Ajouter un nouveau flux"
-#: src/web/templates/layout.html:70
-msgid "Mark all as read older than yesterday"
-msgstr "Marquer tout comme lu plus ancien qu'hier"
+#: src/web/templates/layout.html:54
+msgid "Site or feed url"
+msgstr "Site ou adresse de flux"
-#: src/web/templates/layout.html:71 src/web/templates/layout.html:72
-#, python-format
-msgid "Mark all as read older than %(days)s days"
-msgstr "Marquer tout comme lu plus ancien que %(days)s jours"
+#: src/web/templates/layout.html:65
+msgid "Add a new category"
+msgstr "Ajouter une nouvelle catégorie"
-#: src/web/templates/layout.html:74
+#: src/web/templates/layout.html:81
+msgid "Feed"
+msgstr "Flux"
+
+#: src/web/templates/layout.html:83
msgid "Inactive"
msgstr "Flux inactifs"
-#: src/web/templates/layout.html:84
+#: src/web/templates/layout.html:85
+msgid "All"
+msgstr "Tout"
+
+#: src/web/templates/layout.html:93
msgid "Profile"
msgstr "Profil"
-#: src/web/templates/layout.html:85
+#: src/web/templates/layout.html:94
msgid "Your data"
msgstr "Vos données"
-#: src/web/templates/layout.html:89
+#: src/web/templates/layout.html:98
msgid "Dashboard"
msgstr "Tableau de bord"
-#: src/web/templates/layout.html:92
+#: src/web/templates/layout.html:101
msgid "Logout"
msgstr "Déconnexion"
-#: src/web/templates/layout.html:110
-msgid "Content"
-msgstr "Contenu"
-
-#: src/web/templates/layout.html:112
-msgid "Search"
-msgstr "Recherche"
-
-#: src/web/templates/login.html:10 src/web/templates/recover.html:12
-msgid "Your email"
-msgstr "Votre email"
+#: src/web/templates/login.html:10
+msgid "Your email or nickname"
+msgstr "Votre email ou pseudo"
#: src/web/templates/login.html:17
msgid "Your Password"
@@ -618,12 +572,12 @@ msgid "Your subscriptions"
msgstr "Vos abonnements"
#: src/web/templates/management.html:6
-msgid "Add"
-msgstr "Ajouter"
+msgid "You are subscribed to"
+msgstr "Vous êtes abonné à"
#: src/web/templates/management.html:6
-msgid "a feed"
-msgstr "un flux"
+msgid "feeds"
+msgstr "flux"
#: src/web/templates/management.html:7
msgid "articles are stored in the database with"
@@ -634,38 +588,50 @@ msgid "unread articles"
msgstr "articles non lus"
#: src/web/templates/management.html:8
+msgid "You have"
+msgstr "Vous avez"
+
+#: src/web/templates/management.html:8
+msgid "categories"
+msgstr "categories"
+
+#: src/web/templates/management.html:9
msgid "You are going to delete old articles."
msgstr "Vous allez supprimer les anciens articles."
-#: src/web/templates/management.html:8
+#: src/web/templates/management.html:9
msgid "Delete articles older than 10 weeks"
msgstr "Supprimer les articles de plus de 10 semaines"
-#: src/web/templates/management.html:11
+#: src/web/templates/management.html:12
msgid "OPML import/export"
msgstr "Import/export OPML"
-#: src/web/templates/management.html:13
+#: src/web/templates/management.html:14
msgid "Batch import feeds from OPML"
msgstr "Import en lot via un fichier OPML"
-#: src/web/templates/management.html:17
+#: src/web/templates/management.html:14
+msgid "or"
+msgstr "ou"
+
+#: src/web/templates/management.html:18
msgid "Export feeds to OPML"
msgstr "Exporter les flux au format OPML"
-#: src/web/templates/management.html:18
+#: src/web/templates/management.html:19
msgid "Data liberation"
msgstr "Libération des données"
-#: src/web/templates/management.html:20
+#: src/web/templates/management.html:21
msgid "Import account"
msgstr "Importer un compte"
-#: src/web/templates/management.html:24
+#: src/web/templates/management.html:25
msgid "Export account to JSON"
msgstr "Exporter le compte au format JSON"
-#: src/web/templates/management.html:27
+#: src/web/templates/management.html:28
msgid "Export articles"
msgstr "Exporter les articles"
@@ -673,11 +639,11 @@ msgstr "Exporter les articles"
msgid "Your Profile"
msgstr "Votre profil"
-#: src/web/templates/profile.html:8 src/web/templates/admin/user.html:12
+#: src/web/templates/profile.html:8 src/web/templates/admin/dashboard.html:14
msgid "Member since"
msgstr "Membre depuis le"
-#: src/web/templates/profile.html:9 src/web/templates/admin/user.html:13
+#: src/web/templates/profile.html:9
msgid "Last seen:"
msgstr "Vue la dernière fois le"
@@ -693,6 +659,10 @@ msgstr "Supprimer votre compte"
msgid "Recover your account"
msgstr "Récupérer votre compte"
+#: src/web/templates/recover.html:12
+msgid "Your email"
+msgstr "Votre email"
+
#: src/web/templates/signup.html:10
msgid "Letters, numbers, dots and underscores only."
msgstr "Lettres, chiffres, points et '_' seulement."
@@ -705,62 +675,144 @@ msgstr "Minimum 6 caractères."
msgid "Registered users"
msgstr "Utilisateurs enregistrés"
-#: src/web/templates/admin/dashboard.html:14
+#: src/web/templates/admin/dashboard.html:15
msgid "Last seen"
msgstr "Vue la dernière fois le"
-#: src/web/templates/admin/dashboard.html:30
-msgid "View this user"
-msgstr "Voir cet utilisateur"
-
-#: src/web/templates/admin/dashboard.html:31
-#: src/web/templates/admin/user.html:8
+#: src/web/templates/admin/dashboard.html:28
msgid "Edit this user"
msgstr "Éditer cet utilisateur"
-#: src/web/templates/admin/dashboard.html:38
+#: src/web/templates/admin/dashboard.html:32
+msgid "Disable this account"
+msgstr "Désactiver ce comptes"
+
+#: src/web/templates/admin/dashboard.html:34
+msgid "Enable this account"
+msgstr "Activer ce compte"
+
+#: src/web/templates/admin/dashboard.html:37
msgid "Delete this user"
msgstr "Supprimer cet utilisateur"
-#: src/web/templates/admin/dashboard.html:38
+#: src/web/templates/admin/dashboard.html:37
msgid "You are going to delete this account."
msgstr "Vous allez supprimer ce compte."
-#: src/web/templates/admin/dashboard.html:45 src/web/views/views.py:734
+#: src/web/templates/admin/dashboard.html:44 src/web/views/admin.py:40
msgid "Add a new user"
msgstr "Ajouter un nouvel utilisateur"
-#: src/web/templates/admin/dashboard.html:46
+#: src/web/templates/admin/dashboard.html:45
msgid "Send notification messages"
msgstr "Envoyer des messages de notification"
-#: src/web/templates/admin/user.html:9
-msgid "Membership"
-msgstr "Adhésion"
+#: src/web/views/admin.py:37
+#, python-format
+msgid "Edit the user <i>%(nick)s</i>"
+msgstr "Éditer l'utilisateur <i>%(nick)s</i>"
+
+#: src/web/views/admin.py:58
+msgid "Some errors were found"
+msgstr "Des erreurs ont été trouvées"
+
+#: src/web/views/admin.py:68 src/web/views/user.py:87
+#, python-format
+msgid "User %(nick)s successfully updated"
+msgstr "Utilisateur %(nick)s mis à jour avec succès."
+
+#: src/web/views/admin.py:78
+#, python-format
+msgid "User %(nick)s successfully created"
+msgstr "Utilisateur %(nick)s créé avec succès."
+
+#: src/web/views/admin.py:92
+#, python-format
+msgid "User %(nick)s successfully deleted"
+msgstr "Utilisateur %(nick)s supprimé avec succès."
+
+#: src/web/views/admin.py:95
+msgid "An error occured while trying to delete a user: %(error)"
+msgstr ""
+"Une erreur est apparue lors de la suppression de l'utilisateur: %(error)"
+
+#: src/web/views/admin.py:113
+msgid "This user does not exist."
+msgstr "Cet utilisateur n'existe pas."
+
+#: src/web/views/admin.py:118
+#, python-format
+msgid "User %(nickname)s successfully %(is_active)s"
+msgstr "Utilisateur %(nickname)s %(is_active)s avec succès."
+
+#: src/web/views/article.py:72
+#, python-format
+msgid "Article %(article_title)s deleted"
+msgstr "Article %(article_title)s supprimé."
+
+#: src/web/views/article.py:129
+#, python-format
+msgid "%(count)d articles deleted"
+msgstr "%(count)d articles supprimés."
+
+#: src/web/views/article.py:146 src/web/views/article.py:157
+msgid "Error when exporting articles."
+msgstr "Erreur lors de l'export des articles."
+
+#: src/web/views/article.py:172
+msgid "Export format not supported."
+msgstr "Ce format d'export n'est pas supporté."
+
+#: src/web/views/category.py:33
+msgid "Add a category"
+msgstr "Ajouter une catégorie"
+
+#: src/web/views/category.py:39
+msgid "Edit category"
+msgstr "Éditer la catégorie"
+
+#: src/web/views/category.py:52
+#, python-format
+msgid "Category %(category_name)s successfully deleted."
+msgstr "Catégorie %(category_name)s supprimée avec succès."
+
+#: src/web/views/category.py:68
+msgid "Couldn't add category: already exists."
+msgstr "Impossible d'ajouter la catégorie: le catégorie existe déjà."
+
+#: src/web/views/category.py:76
+#, python-format
+msgid "Category %(cat_name)r successfully updated."
+msgstr "Catégorie %(cat_name)r mise à jour avec succès."
+
+#: src/web/views/category.py:83
+#, python-format
+msgid "Category %(category_name)r successfully created."
+msgstr "Catégorie %(category_name)r créée avec succès."
-#: src/web/views/feed.py:78
+#: src/web/views/feed.py:80
#, python-format
msgid "Feed %(feed_title)s successfully deleted."
msgstr "Flux %(feed_title)s supprimé avec succès."
-#: src/web/views/feed.py:89 src/web/views/feed.py:193
+#: src/web/views/feed.py:91 src/web/views/feed.py:207
#, python-format
msgid "Feed %(feed_title)r successfully updated."
msgstr "Flux %(feed_title)r mis à jour avec succès."
-#: src/web/views/feed.py:100
+#: src/web/views/feed.py:103
msgid "Couldn't add feed: url missing."
msgstr "Impossible d'ajouter le flux: URL manquante."
-#: src/web/views/feed.py:105 src/web/views/feed.py:177
+#: src/web/views/feed.py:108 src/web/views/feed.py:189
msgid "Couldn't add feed: feed already exists."
msgstr "Impossible d'ajouter le flux: le flux existe déjà."
-#: src/web/views/feed.py:112
+#: src/web/views/feed.py:115
msgid "Impossible to connect to the address: {}."
msgstr "Impossible de se connecter à l'adresse: {}."
-#: src/web/views/feed.py:117
+#: src/web/views/feed.py:123
msgid ""
"Couldn't find a feed url, you'll need to find a Atom or RSS link manually "
"and reactivate this feed"
@@ -768,69 +820,40 @@ msgstr ""
"Impossible de trouver une URL de flux, vous devez trouver un lien RSS ou "
"Atom manuellement et réactiver ce flux"
-#: src/web/views/feed.py:121
+#: src/web/views/feed.py:127
msgid "Feed was successfully created."
msgstr "Flux créé avec succès."
-#: src/web/views/feed.py:124 src/web/views/feed.py:205
+#: src/web/views/feed.py:130 src/web/views/feed.py:219
msgid "Downloading articles for the new feed..."
msgstr "Téléchargement des articles du nouveau flux..."
-#: src/web/views/feed.py:142
+#: src/web/views/feed.py:148
msgid "Feed successfully updated."
msgstr "Flux mis à jour avec succès."
#: src/web/views/feed.py:157
+msgid "Add a feed"
+msgstr "Ajouter un flux"
+
+#: src/web/views/feed.py:168
msgid "Edit feed"
msgstr "Éditez ce flux"
-#: src/web/views/feed.py:200
+#: src/web/views/feed.py:214
#, python-format
msgid "Feed %(feed_title)r successfully created."
msgstr "Flux %(feed_title)r créé avec succès."
-#: src/web/views/views.py:69 src/web/views/views.py:111
-msgid "Authentication required."
-msgstr "Authentification requise."
-
-#: src/web/views/views.py:116
-msgid "Forbidden."
-msgstr "Interdit."
-
-#: src/web/views/views.py:189
-msgid "Logged out successfully."
-msgstr "Déconnecté avec succès."
-
-#: src/web/views/views.py:198
-msgid "Self-registration is disabled."
-msgstr "L'auto-enregistrement est désactivé."
-
-#: src/web/views/views.py:215
-msgid "Email already used."
-msgstr "Email déjà utilisé."
-
-#: src/web/views/views.py:222
-#, python-format
-msgid "Problem while sending activation email: %(error)s"
-msgstr "Problème lors de l'envoi d'email d'activation: %(error)s"
-
-#: src/web/views/views.py:226
-msgid "Your account has been created. Check your mail to confirm it."
-msgstr "Votre compte a été créé. Vérifiez votre courrier pour le confirmer."
-
-#: src/web/views/views.py:323
-msgid "No text to search were provided."
-msgstr "Aucun texte à chercher a été soumis."
-
-#: src/web/views/views.py:338
-msgid "Search:"
-msgstr "Recherche:"
+#: src/web/views/feed.py:244
+msgid "No duplicates in the feed \"{}\"."
+msgstr "Pas de doublon dans le flux \"{}\"."
-#: src/web/views/views.py:354 src/web/views/views.py:527
+#: src/web/views/home.py:152 src/web/views/user.py:39
msgid "Downloading articles..."
msgstr "Téléchargement des articles."
-#: src/web/views/views.py:356
+#: src/web/views/home.py:154
msgid ""
"The manual retrieving of news is only available for administrator, on the "
"Heroku platform."
@@ -838,116 +861,196 @@ msgstr ""
"La récupération manuelle de nouvelles est disponible uniquement pour "
"l'administrateur, sur la plate-forme Heroku."
-#: src/web/views/views.py:418
-msgid "deleted."
-msgstr "supprimé."
-
-#: src/web/views/views.py:421
-msgid "This article do not exist."
-msgstr "Cet article n'existe pas."
-
-#: src/web/views/views.py:456
-msgid "No duplicates in the feed \"{}\"."
-msgstr "Pas de doublon dans le flux \"{}\"."
+#: src/web/views/session_mgmt.py:82
+msgid "Self-registration is disabled."
+msgstr "L'auto-enregistrement est désactivé."
-#: src/web/views/views.py:473 src/web/views/views.py:484
-msgid "Error when exporting articles."
-msgstr "Erreur lors de l'export des articles."
+#: src/web/views/session_mgmt.py:97
+#, python-format
+msgid "Problem while sending activation email: %(error)s"
+msgstr "Problème lors de l'envoi d'email d'activation: %(error)s"
-#: src/web/views/views.py:490
-msgid "Export format not supported."
-msgstr "Ce format d'export n'est pas supporté."
+#: src/web/views/session_mgmt.py:101
+msgid "Your account has been created. Check your mail to confirm it."
+msgstr "Votre compte a été créé. Vérifiez votre courrier pour le confirmer."
-#: src/web/views/views.py:519 src/web/views/views.py:535
-#: src/web/views/views.py:544
+#: src/web/views/user.py:31 src/web/views/user.py:47 src/web/views/user.py:56
msgid "File not allowed."
msgstr "Fichier non autorisé."
-#: src/web/views/views.py:525
+#: src/web/views/user.py:37
msgid "feeds imported."
msgstr "flux importés."
-#: src/web/views/views.py:529
+#: src/web/views/user.py:41
msgid "Impossible to import the new feeds."
msgstr "Impossible d'importer les nouveaux flux."
-#: src/web/views/views.py:539
+#: src/web/views/user.py:51
msgid "Account imported."
msgstr "Compte importé."
-#: src/web/views/views.py:541
+#: src/web/views/user.py:53
msgid "Impossible to import the account."
msgstr "Impossible d'importer le compte."
-#: src/web/views/views.py:581 src/web/views/views.py:709
-#: src/web/views/views.py:719 src/web/views/views.py:767
-msgid "User"
-msgstr "Utilisateur"
-
-#: src/web/views/views.py:582 src/web/views/views.py:709
-msgid "successfully updated."
-msgstr "mis à jour avec succès."
-
-#: src/web/views/views.py:602
+#: src/web/views/user.py:105
msgid "Your account has been deleted."
msgstr "Votre compte a été supprimé."
-#: src/web/views/views.py:604 src/web/views/views.py:753
-#: src/web/views/views.py:769 src/web/views/views.py:797
-msgid "This user does not exist."
-msgstr "Cet utilisateur n'existe pas."
-
-#: src/web/views/views.py:619
-msgid "Articles deleted."
-msgstr "Articles supprimés."
-
-#: src/web/views/views.py:633
+#: src/web/views/user.py:122
msgid "Your account has been confirmed."
msgstr "Votre compte a été confirmé."
-#: src/web/views/views.py:635
+#: src/web/views/user.py:124
msgid "Impossible to confirm this account."
msgstr "Impossible de confirmer ce compte."
-#: src/web/views/views.py:657
+#: src/web/views/user.py:149
msgid "New password sent to your address."
msgstr "Nouveau mot de passe envoyé à votre adresse."
-#: src/web/views/views.py:659
-msgid "Problem while sending your new password."
-msgstr "Problème lors de l'envoi de votre nouveau mot de passe."
+#: src/web/views/user.py:151
+#, python-format
+msgid "Problem while sending your new password: %(error)s"
+msgstr "Problème lors de l'envoi de votre nouveau mot de passe: %(error)s"
+
+#: src/web/views/views.py:16
+msgid "Authentication required."
+msgstr "Authentification requise."
-#: src/web/views/views.py:684
-msgid "Problem while sending email"
-msgstr "Problème lors de l'envoi de l'email"
+#: src/web/views/views.py:24
+msgid "Forbidden."
+msgstr "Interdit."
-#: src/web/views/views.py:720
-msgid "successfully created."
-msgstr "créé avec succès."
+#~ msgid "Submit"
+#~ msgstr "Soumettre"
-#: src/web/views/views.py:730
-msgid "Edit the user"
-msgstr "Éditer cet utilisateur"
+#~ msgid "Account not confirmed"
+#~ msgstr "Compte non confirmé"
+
+#~ msgid "Invalid email or password"
+#~ msgstr "E-mail ou mot de passe invalide"
+
+#~ msgid "No feed"
+#~ msgstr "Aucun flux"
+
+#~ msgid "Add a"
+#~ msgstr "Ajouter un"
+
+#~ msgid "feed"
+#~ msgstr "flux"
+
+#~ msgid "You don't have any feeds."
+#~ msgstr "Vous n'avez pas de flux."
+
+#~ msgid "Add some"
+#~ msgstr "Ajoutez en"
+
+#~ msgid "upload an OPML file."
+#~ msgstr "téléchargez un fichier OPML."
+
+#~ msgid "All feeds"
+#~ msgstr "Tous les flux"
+
+#~ msgid "error"
+#~ msgstr "erreur"
-#: src/web/views/views.py:767
-msgid "successfully deleted."
-msgstr "supprimé avec succès."
+#~ msgid "Details"
+#~ msgstr "Détails"
-#: src/web/views/views.py:788 src/web/views/views.py:794
-msgid "Account of the user"
-msgstr "Compte de l'utilisateur"
+#~ msgid "Mark this feed as read"
+#~ msgstr "Marquer ce flux comme lu"
-#: src/web/views/views.py:788
-msgid "successfully activated."
-msgstr "activé avec succès."
+#~ msgid "Mark this feed as unread"
+#~ msgstr "Marquer ce flux comme non lu"
-#: src/web/views/views.py:790
-msgid "Problem while sending activation email"
-msgstr "Problème lors de l'envoi d'email d'activation"
+#~ msgid "Read"
+#~ msgstr "Lus"
-#: src/web/views/views.py:794
-msgid "successfully disabled."
-msgstr "désactivé avec succès."
+#~ msgid "Unread"
+#~ msgstr "Non lus"
+
+#~ msgid "Article"
+#~ msgstr "Article"
+
+#~ msgid "Date"
+#~ msgstr "Date"
+
+#~ msgid "No icon found for this feed"
+#~ msgstr "Aucune icône trouvé pour ce flux."
+
+#~ msgid "Home"
+#~ msgstr "Accueil"
+
+#~ msgid "Favorites"
+#~ msgstr "Favoris"
+
+#~ msgid "Mark all as read"
+#~ msgstr "Marquer tout comme lu"
+
+#~ msgid "Mark all as read older than yesterday"
+#~ msgstr "Marquer tout comme lu plus ancien qu'hier"
+
+#~ msgid "Mark all as read older than %(days)s days"
+#~ msgstr "Marquer tout comme lu plus ancien que %(days)s jours"
+
+#~ msgid "Content"
+#~ msgstr "Contenu"
+
+#~ msgid "Search"
+#~ msgstr "Recherche"
+
+#~ msgid "View this user"
+#~ msgstr "Voir cet utilisateur"
+
+#~ msgid "Membership"
+#~ msgstr "Adhésion"
+
+#~ msgid "Logged out successfully."
+#~ msgstr "Déconnecté avec succès."
+
+#~ msgid "Email already used."
+#~ msgstr "Email déjà utilisé."
+
+#~ msgid "No text to search were provided."
+#~ msgstr "Aucun texte à chercher a été soumis."
+
+#~ msgid "Search:"
+#~ msgstr "Recherche:"
+
+#~ msgid "deleted."
+#~ msgstr "supprimé."
+
+#~ msgid "This article do not exist."
+#~ msgstr "Cet article n'existe pas."
+
+#~ msgid "User"
+#~ msgstr "Utilisateur"
+
+#~ msgid "successfully updated."
+#~ msgstr "mis à jour avec succès."
+
+#~ msgid "Problem while sending email"
+#~ msgstr "Problème lors de l'envoi de l'email"
+
+#~ msgid "successfully created."
+#~ msgstr "créé avec succès."
+
+#~ msgid "successfully deleted."
+#~ msgstr "supprimé avec succès."
+
+#~ msgid "Account of the user"
+#~ msgstr "Compte de l'utilisateur"
+
+#~ msgid "successfully activated."
+#~ msgstr "activé avec succès."
+
+#~ msgid "Problem while sending activation email"
+#~ msgstr "Problème lors de l'envoi d'email d'activation"
+
+#~ msgid "successfully disabled."
+#~ msgstr "désactivé avec succès."
#~ msgid "You can easily install JARR on your server."
#~ msgstr "Vous pouvez facilement installer JARR sur votre serveur."
@@ -955,15 +1058,9 @@ msgstr "désactivé avec succès."
#~ msgid "This user is not subscribed to any feed."
#~ msgstr "Cet utilisateur n'est pas encore abonné à des flux."
-#~ msgid "Feeds"
-#~ msgstr "Flux"
-
#~ msgid "(unread) articles"
#~ msgstr "(non lus) articles"
-#~ msgid "Name"
-#~ msgstr "Nom de famille"
-
#~ msgid "Number of articles"
#~ msgstr "Nombre d'articles"
@@ -1054,15 +1151,9 @@ msgstr "désactivé avec succès."
#~ msgid "Export"
#~ msgstr "Exporter"
-#~ msgid "You are not subscribed to any feed."
-#~ msgstr "Vous êtes abonné à aucun flux."
-
#~ msgid "Fix this."
#~ msgstr "Résolvez ce problème."
-#~ msgid "Add a new feed"
-#~ msgstr "Ajouter un flux"
-
#~ msgid "As an administrator you are not listed in this table"
#~ msgstr "En tant qu'administrateur vous ne figurez pas dans ce tableau"
diff --git a/src/web/views/__init__.py b/src/web/views/__init__.py
index c5903d9b..6de83818 100644
--- a/src/web/views/__init__.py
+++ b/src/web/views/__init__.py
@@ -10,3 +10,11 @@ __all__ = ['views', 'home', 'session_mgmt', 'api',
'article_bp', 'articles_bp', 'feed_bp', 'feeds_bp',
'category_bp', 'categories_bp', 'icon_bp',
'admin_bp', 'user_bp', 'users_bp']
+
+import conf
+from flask import request
+from flask import g
+
+@g.babel.localeselector
+def get_locale():
+ return request.accept_languages.best_match(conf.LANGUAGES.keys())
bgstack15