diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/web/forms.py | 4 | ||||
-rw-r--r-- | src/web/templates/management.html | 2 | ||||
-rw-r--r-- | src/web/translations/fr/LC_MESSAGES/messages.mo | bin | 16842 -> 17338 bytes | |||
-rw-r--r-- | src/web/translations/fr/LC_MESSAGES/messages.po | 849 | ||||
-rw-r--r-- | src/web/views/__init__.py | 8 |
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 Binary files differindex c7135b4c..434275dc 100644 --- a/src/web/translations/fr/LC_MESSAGES/messages.mo +++ b/src/web/translations/fr/LC_MESSAGES/messages.mo 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 · Add a %(start_link)scategory" +"%(end_link)s" +msgstr "" +"Vous avez %(categories)d catégories · 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()) |