From 9b9543109e36a5409fe71eb084cfac680dfc7cbd Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sat, 13 Apr 2013 15:27:36 +0200 Subject: Fix issue #39 : actualisation de tous les flux grâce à Ajax MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/javascript/actualize.phtml | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 app/views/javascript/actualize.phtml (limited to 'app/views/javascript/actualize.phtml') diff --git a/app/views/javascript/actualize.phtml b/app/views/javascript/actualize.phtml new file mode 100644 index 000000000..ad1c4e2e6 --- /dev/null +++ b/app/views/javascript/actualize.phtml @@ -0,0 +1,46 @@ +var feeds = new Array (); +feeds as $feed) { ?> +feeds.push (" 'feed', 'a' => 'actualize', 'params' => array ('id' => $feed->id (), 'ajax' => '1')), 'php'); ?>"); + + +function initProgressBar (init) { + if (init) { + $("body").after ("\
\ + Actualisation :\ + \ + 0 / " + feeds.length + "\ +
"); + } else { + window.location.reload (); + } +} +function updateProgressBar (i) { + $("#actualizeProgressBar").val(i); + $("#actualizeProgress .progress").html (i + " / " + feeds.length); +} + +function updateFeeds () { + initProgressBar (true); + + var i = 0; + for (var f in feeds) { + $.ajax ({ + type: 'POST', + url: feeds[f], + }).done (function (data) { + i++; + updateProgressBar (i); + + if (i == feeds.length) { + initProgressBar (false); + } + }); + } +} + +$(document).ready (function () { + $("#actualize").click (function () { + updateFeeds (); + return false; + }); +}); -- cgit v1.2.3 From 5768d0fc7fe7e29491b788b08096ca1435b82aeb Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 14 Apr 2013 19:40:29 +0200 Subject: Amélioration esthétique pour l'actualisation des flux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/javascript/actualize.phtml | 3 +-- public/theme/freshrss.css | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'app/views/javascript/actualize.phtml') diff --git a/app/views/javascript/actualize.phtml b/app/views/javascript/actualize.phtml index ad1c4e2e6..16188422a 100644 --- a/app/views/javascript/actualize.phtml +++ b/app/views/javascript/actualize.phtml @@ -6,9 +6,8 @@ feeds.push (" 'feed', 'a' => 'actualize', function initProgressBar (init) { if (init) { $("body").after ("\
\ - Actualisation :\ + Actualisation 0 / " + feeds.length + "
\ \ - 0 / " + feeds.length + "\
"); } else { window.location.reload (); diff --git a/public/theme/freshrss.css b/public/theme/freshrss.css index f64770b81..ed6646269 100644 --- a/public/theme/freshrss.css +++ b/public/theme/freshrss.css @@ -383,8 +383,8 @@ .actualizeProgress { position: fixed; - top: 0; left: 33%; right: 33%; - width: 33%; + top: 0; left: 25%; right: 25%; + width: 50%; padding: 5px; background: #fff; text-align: center; @@ -393,6 +393,7 @@ border-radius: 0 0 5px 5px; } .actualizeProgress progress { + max-width: 100%; vertical-align: middle; } .actualizeProgress .progress { -- cgit v1.2.3 From 19407e1ab6df2c239017fb20e47d6201bdaab223 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sat, 27 Apr 2013 13:40:48 +0200 Subject: Structure pour l'internationalisation terminée (voir bug #38) : il reste à faire la traduction en anglais notamment, rajouter une option pour changer la langue, détecter la langue préférée de l'utilisateur et voir si on peut migrer facilement l'installateur aussi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/apiController.php | 6 +- app/controllers/configureController.php | 28 +++--- app/controllers/entryController.php | 10 +-- app/controllers/feedController.php | 44 ++++------ app/controllers/indexController.php | 12 +-- app/i18n/fr.php | 146 +++++++++++++++++++++++++++++++- app/layout/nav_menu.phtml | 2 +- app/views/configure/categorize.phtml | 20 ++--- app/views/configure/display.phtml | 54 ++++++------ app/views/configure/feed.phtml | 42 ++++----- app/views/configure/importExport.phtml | 12 +-- app/views/configure/shortcut.phtml | 30 +++---- app/views/entry/note.phtml | 24 +++--- app/views/error/index.phtml | 7 +- app/views/helpers/pagination.phtml | 14 ++- app/views/helpers/rss.phtml | 2 +- app/views/index/about.phtml | 24 +++--- app/views/index/index.phtml | 27 +++--- app/views/javascript/actualize.phtml | 2 +- 19 files changed, 327 insertions(+), 179 deletions(-) (limited to 'app/views/javascript/actualize.phtml') diff --git a/app/controllers/apiController.php b/app/controllers/apiController.php index bc08386b5..025908f3e 100755 --- a/app/controllers/apiController.php +++ b/app/controllers/apiController.php @@ -20,11 +20,11 @@ class apiController extends ActionController { $notes = $e->notes (); if ($notes == '') { $feed = $e->feed (true); - $notes = 'Article publié initialement sur ' . $feed->name () . ''; if($author != '') { - $notes .= ' par ' . $author; + $notes = Translate::t ('article_published_on_author', $feed->website (), $feed->name (), $author); + } else { + $notes = Translate::t ('article_published_on', $feed->website (), $feed->name ()); } - $notes .= ', mis en favoris dans FreshRSS'; } $id = $e->id (); diff --git a/app/controllers/configureController.php b/app/controllers/configureController.php index 18a56c066..7e73fd2ba 100755 --- a/app/controllers/configureController.php +++ b/app/controllers/configureController.php @@ -5,7 +5,7 @@ class configureController extends ActionController { if (login_is_conf ($this->view->conf) && !is_logged ()) { Error::error ( 403, - array ('error' => array ('Vous n\'avez pas le droit d\'accéder à cette page')) + array ('error' => array (Translate::t ('access denied'))) ); } } @@ -48,7 +48,7 @@ class configureController extends ActionController { // notif $notif = array ( 'type' => 'good', - 'content' => 'Les catégories ont été mises à jour' + 'content' => Translate::t ('categories_updated') ); Session::_param ('notification', $notif); @@ -58,7 +58,7 @@ class configureController extends ActionController { $this->view->categories = $catDAO->listCategories (); $this->view->defaultCategory = $catDAO->getDefault (); - View::prependTitle ('Gestion des catégories - '); + View::prependTitle (Translate::t ('categories_management') . ' - '); } public function feedAction () { @@ -80,7 +80,7 @@ class configureController extends ActionController { if (!$this->view->flux) { Error::error ( 404, - array ('error' => array ('La page que vous cherchez n\'existe pas')) + array ('error' => array (Translate::t ('page_not_found'))) ); } else { $catDAO = new CategoryDAO (); @@ -102,12 +102,12 @@ class configureController extends ActionController { $notif = array ( 'type' => 'good', - 'content' => 'Le flux a été mis à jour' + 'content' => Translate::t ('feed_updated') ); } else { $notif = array ( 'type' => 'bad', - 'content' => 'Une erreur est survenue lors de la mise à jour' + 'content' => Translate::t ('error_occurred_update') ); } @@ -115,10 +115,10 @@ class configureController extends ActionController { Request::forward (array ('c' => 'configure', 'a' => 'feed', 'params' => array ('id' => $id)), true); } - View::prependTitle ('Gestion des flux RSS - ' . $this->view->flux->name () . ' - '); + View::prependTitle (Translate::t ('rss_feed_management') . ' - ' . $this->view->flux->name () . ' - '); } } else { - View::prependTitle ('Gestion des flux RSS - '); + View::prependTitle (Translate::t ('rss_feed_management') . ' - '); } } @@ -167,21 +167,21 @@ class configureController extends ActionController { // notif $notif = array ( 'type' => 'good', - 'content' => 'La configuration a été mise à jour' + 'content' => Translate::t ('configuration_updated') ); Session::_param ('notification', $notif); Request::forward (array ('c' => 'configure', 'a' => 'display'), true); } - View::prependTitle ('Gestion générale et affichage - '); + View::prependTitle (Translate::t ('general_and_reading_management') . ' - '); } public function importExportAction () { $this->view->req = Request::param ('q'); if ($this->view->req == 'export') { - View::_title ('feeds_opml.xml'); + View::_title ('feeds.opml'); $this->view->_useLayout (false); header('Content-Type: text/xml; charset=utf-8'); @@ -212,7 +212,7 @@ class configureController extends ActionController { $this->view->feeds = $feedDAO->listFeeds (); $this->view->flux = false; - View::prependTitle ('Importation et exportation OPML - '); + View::prependTitle (Translate::t ('import_export_opml') . ' - '); } public function shortcutAction () { @@ -251,13 +251,13 @@ class configureController extends ActionController { // notif $notif = array ( 'type' => 'good', - 'content' => 'Les raccourcis ont été mis à jour' + 'content' => Translate::t ('shortcuts_updated') ); Session::_param ('notification', $notif); Request::forward (array ('c' => 'configure', 'a' => 'shortcut'), true); } - View::prependTitle ('Gestion des raccourcis - '); + View::prependTitle (Translate::t ('shortcuts_management') . ' - '); } } diff --git a/app/controllers/entryController.php b/app/controllers/entryController.php index e3c4fe165..2ce260297 100755 --- a/app/controllers/entryController.php +++ b/app/controllers/entryController.php @@ -5,7 +5,7 @@ class entryController extends ActionController { if (login_is_conf ($this->view->conf) && !is_logged ()) { Error::error ( 403, - array ('error' => array ('Vous n\'avez pas le droit d\'accéder à cette page')) + array ('error' => array (Translate::t ('access denied'))) ); } @@ -63,7 +63,7 @@ class entryController extends ActionController { // notif $notif = array ( 'type' => 'good', - 'content' => 'Les flux ont été marqués comme lu' + 'content' => Translate::t ('feeds_marked_read') ); Session::_param ('notification', $notif); } else { @@ -130,12 +130,12 @@ class entryController extends ActionController { if ($entryDAO->updateEntry ($id, $values)) { $notif = array ( 'type' => 'good', - 'content' => 'Modifications enregistrées' + 'content' => Translate::t ('updated') ); } else { $notif = array ( 'type' => 'bad', - 'content' => 'Une erreur est survenue' + 'content' => Translate::t ('error_occured') ); } Session::_param ('notification', $notif); @@ -157,7 +157,7 @@ class entryController extends ActionController { if ($not_found) { Error::error ( 404, - array ('error' => array ('La page que vous cherchez n\'existe pas')) + array ('error' => array (Translate::t ('page_not_found'))) ); } else { $this->view->entry = $entry; diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php index c67609d57..1232ddff4 100755 --- a/app/controllers/feedController.php +++ b/app/controllers/feedController.php @@ -10,7 +10,7 @@ class feedController extends ActionController { if (login_is_conf ($this->view->conf) && !is_logged ()) { Error::error ( 403, - array ('error' => array ('Vous n\'avez pas le droit d\'accéder à cette page')) + array ('error' => array (Translate::t ('access_denied'))) ); } else { if (Request::isPost ()) { @@ -37,7 +37,7 @@ class feedController extends ActionController { if ($feedDAO->searchByUrl ($values['url'])) { $notif = array ( 'type' => 'bad', - 'content' => 'Vous êtes déjà abonné à ' . $feed->name () . '' + 'content' => Translate::t ('already_subscribed', $feed->name ()) ); Session::_param ('notification', $notif); } elseif ($feedDAO->addFeed ($values)) { @@ -52,7 +52,7 @@ class feedController extends ActionController { // notif $notif = array ( 'type' => 'good', - 'content' => 'Le flux ' . $feed->name () . ' a bien été ajouté' + 'content' => Translate::t ('feed_added', $feed->name ()) ); Session::_param ('notification', $notif); $params['id'] = $feed->id (); @@ -60,7 +60,7 @@ class feedController extends ActionController { // notif $notif = array ( 'type' => 'bad', - 'content' => '' . $feed->name () . ' n\' a pas pu être ajouté' + 'content' => Translate::t ('feed_not_added', $feed->name ()) ); Session::_param ('notification', $notif); } @@ -68,22 +68,14 @@ class feedController extends ActionController { Log::record ($e->getMessage (), Log::ERROR); $notif = array ( 'type' => 'bad', - 'content' => 'Un problème interne a été rencontré, le flux n\'a pas pu être ajouté' - ); - Session::_param ('notification', $notif); - } catch (FileNotExistException $e) { - Log::record ($e->getMessage (), Log::ERROR); - // notif - $notif = array ( - 'type' => 'bad', - 'content' => 'Un problème de configuration a empêché l\'ajout du flux. Voir les logs pour plus d\'informations' + 'content' => Translate::t ('internal_problem_feed') ); Session::_param ('notification', $notif); } catch (Exception $e) { // notif $notif = array ( 'type' => 'bad', - 'content' => 'L\'url ' . $url . ' est invalide' + 'content' => Translate::t ('invalid_url', $url) ); Session::_param ('notification', $notif); } @@ -144,18 +136,18 @@ class feedController extends ActionController { $feed = reset ($feeds); $notif = array ( 'type' => 'good', - 'content' => '' . $feed->name () . ' a été mis à jour' + 'content' => Translate::t ('feed_actualized', $feed->name ()) ); $url['params'] = array ('get' => 'f_' . $feed->id ()); } elseif ($i > 0) { $notif = array ( 'type' => 'good', - 'content' => $i . ' flux ont été mis à jour' + 'content' => Translate::t ('n_feeds_actualized', $i) ); } else { $notif = array ( 'type' => 'bad', - 'content' => 'Aucun flux n\'a pu être mis à jour' + 'content' => Translate::t ('no_feed_actualized') ); } @@ -165,7 +157,7 @@ class feedController extends ActionController { } else { $notif = array ( 'type' => 'good', - 'content' => 'Les flux ont été mis à jour' + 'content' => Translate::t ('feeds_actualized') ); Session::_param ('notification', $notif); $this->view->_useLayout (false); @@ -176,7 +168,7 @@ class feedController extends ActionController { if (login_is_conf ($this->view->conf) && !is_logged ()) { Error::error ( 403, - array ('error' => array ('Vous n\'avez pas le droit d\'accéder à cette page')) + array ('error' => array (Translate::t ('access_denied'))) ); } else { $entryDAO = new EntryDAO (); @@ -219,9 +211,9 @@ class feedController extends ActionController { } if ($error) { - $res = 'Les flux ont été importés mais des erreurs sont survenus'; + $res = Translate::t ('feeds_imported_with_errors'); } else { - $res = 'Les flux ont été importés'; + $res = Translate::t ('feeds_imported'); } $notif = array ( 'type' => 'good', @@ -240,7 +232,7 @@ class feedController extends ActionController { if (login_is_conf ($this->view->conf) && !is_logged ()) { Error::error ( 403, - array ('error' => array ('Vous n\'avez pas le droit d\'accéder à cette page')) + array ('error' => array (Translate::t ('access_denied'))) ); } else { $type = Request::param ('type', 'feed'); @@ -251,24 +243,24 @@ class feedController extends ActionController { if ($feedDAO->deleteFeedByCategory ($id)) { $notif = array ( 'type' => 'good', - 'content' => 'La catégorie a été vidée' + 'content' => Translate::t ('category_emptied') ); } else { $notif = array ( 'type' => 'bad', - 'content' => 'Un problème est survenu' + 'content' => Translate::t ('error_occured') ); } } else { if ($feedDAO->deleteFeed ($id)) { $notif = array ( 'type' => 'good', - 'content' => 'Le flux a été supprimé' + 'content' => Translate::t ('feed_deleted') ); } else { $notif = array ( 'type' => 'bad', - 'content' => 'Un problème est survenu' + 'content' => Translate::t ('error_occured') ); } } diff --git a/app/controllers/indexController.php b/app/controllers/indexController.php index 8fa911631..dfdcfde42 100755 --- a/app/controllers/indexController.php +++ b/app/controllers/indexController.php @@ -35,13 +35,13 @@ class indexController extends ActionController { // Récupère les flux par catégorie, favoris ou tous if ($this->get['type'] == 'all') { $entries = $entryDAO->listEntries ($this->mode, $search, $order); - View::prependTitle ('Vos flux RSS - '); + View::prependTitle (Translate::t ('your_rss_feeds') . ' - '); } elseif ($this->get['type'] == 'favoris') { $entries = $entryDAO->listFavorites ($this->mode, $search, $order); - View::prependTitle ('Vos favoris - '); + View::prependTitle (Translate::t ('your_favorites') . ' - '); } elseif ($this->get['type'] == 'public') { $entries = $entryDAO->listPublic ($this->mode, $search, $order); - View::prependTitle ('Public - '); + View::prependTitle (Translate::t ('public') . ' - '); } elseif ($this->get != false) { if ($this->get['type'] == 'c') { $cat = $catDAO->searchById ($this->get['filter']); @@ -72,7 +72,7 @@ class indexController extends ActionController { if ($error) { Error::error ( 404, - array ('error' => array ('La page que vous cherchez n\'existe pas')) + array ('error' => array (Translate::t ('page_not_found'))) ); } else { $this->view->mode = $this->mode; @@ -93,7 +93,7 @@ class indexController extends ActionController { } public function aboutAction () { - View::prependTitle ('À propos - '); + View::prependTitle (Translate::t ('about') . ' - '); } public function changeModeAction () { @@ -143,7 +143,7 @@ class indexController extends ActionController { } else { $res = array (); $res['status'] = 'failure'; - $res['reason'] = 'L\'identifiant est invalide'; + $res['reason'] = Translate::t ('invalid_login'); } $this->view->res = json_encode ($res); diff --git a/app/i18n/fr.php b/app/i18n/fr.php index 753a0d469..2ddac3066 100644 --- a/app/i18n/fr.php +++ b/app/i18n/fr.php @@ -1,6 +1,7 @@ 'Connexion', 'logout' => 'Déconnexion', 'search_on_title' => 'Rechercher sur les titres', @@ -29,14 +30,157 @@ return array ( 'actualize' => 'Actualiser', 'mark_read' => 'Marquer comme lu', + 'mark_favorite' => 'Mettre en favori', 'mark_all_read' => 'Tout marquer comme lu', 'mark_feed_read' => 'Marquer le flux comme lu', 'mark_cat_read' => 'Marquer la catégorie comme lue', 'before_one_day' => 'Antérieurs à 1 jour', 'before_one_week' => 'Antérieurs à 1 semaine', 'display' => 'Affichage', - 'show_all' => 'Tout afficher', + 'show_all_articles' => 'Afficher tous les articles', 'show_not_reads' => 'Afficher les non lus', 'older_first' => 'Plus anciens en premier', 'newer_first' => 'Plus récents en premier', + + // CONTROLLERS + 'article_published_on' => 'Article publié initialement sur %s, mis en favoris dans FreshRSS', + 'article_published_on_author' => 'Article publié initialement sur %s par %s, mis en favoris dans FreshRSS', + + 'access denied' => 'Vous n\'avez pas le droit d\'accéder à cette page', + 'page_not_found' => 'La page que vous cherchez n\'existe pas', + 'error_occurred' => 'Une erreur est survenue', + 'error_occurred_update' => 'Une erreur est survenue lors de la mise à jour', + + 'categories_updated' => 'Les catégories ont été mises à jour', + 'categories_management' => 'Gestion des catégories', + 'feed_updated' => 'Le flux a été mis à jour', + 'rss_feed_management' => 'Gestion des flux RSS', + 'configuration_updated' => 'La configuration a été mise à jour', + 'general_and_reading_management'=> 'Gestion générale et affichage', + 'shortcuts_updated' => 'Les raccourcis ont été mis à jour', + 'shortcuts_management' => 'Gestion des raccourcis', + 'feeds_marked_read' => 'Les flux ont été marqués comme lu', + 'updated' => 'Modifications enregistrées', + + 'already_subscribed' => 'Vous êtes déjà abonné à %s', + 'feed_added' => 'Le flux %s a bien été ajouté', + 'feed_not_added' => '%s n\' a pas pu être ajouté', + 'internal_problem_feed' => 'Un problème interne a été rencontré, le flux n\'a pas pu être ajouté', + 'invalid_url' => 'L\'url %s est invalide', + 'feed_actualized' => '%s a été mis à jour', + 'n_feeds_actualized' => '%d flux ont été mis à jour', + 'feeds_actualized' => 'Les flux ont été mis à jour', + 'no_feed_actualized' => 'Aucun flux n\'a pu être mis à jour', + 'feeds_imported_with_errors' => 'Les flux ont été importés mais des erreurs sont survenues', + 'feeds_imported' => 'Les flux ont été importés', + 'category_emptied' => 'La catégorie a été vidée', + 'feed_deleted' => 'Le flux a été supprimé', + + 'your_rss_feeds' => 'Vos flux RSS', + 'your_favorites' => 'Vos favoris', + 'public' => 'Public', + 'invalid_login' => 'L\'identifiant est invalide', + + // VIEWS + 'save' => 'Enregistrer', + 'delete' => 'Supprimer', + 'cancel' => 'Annuler', + + 'back_to_rss_feeds' => '← Retour à vos flux RSS', + 'feeds_moved_category_deleted' => 'Lors de la suppression d\'une catégorie, ses flux seront automatiquement classés dans %s.', + 'category_number' => 'Catégorie n°%d', + 'ask_empty' => 'Vider ?', + 'number_feeds' => '%d flux', + 'can_not_be_deleted' => 'Ne peut pas être supprimée', + 'add_category' => 'Ajouter une catégorie', + 'new_category' => 'Nouvelle catégorie', + + 'javascript_for_shortcuts' => 'Le javascript doit être activé pour pouvoir profiter des raccourcis', + 'javascript_should_be_activated'=> 'Le javascript doit être activé', + 'shift_for_all_read' => '+ shift pour marquer tous les articles comme non lus', + 'see_on_website' => 'Voir l\'article sur le site d\'origine', + 'next_article' => 'Passer à l\'article suivant', + 'shift_for_last' => '+ shift pour passer au dernier article de la page', + 'previous_article' => 'Passer à l\'article précédent', + 'shift_for_first' => '+ shift pour passer au premier article de la page', + 'next_page' => 'Passer à la page suivante', + 'previous_page' => 'Passer à la page précédente', + + 'file_to_import' => 'Fichier à importer', + 'import' => 'Importer', + 'export' => 'Exporter', + 'or' => 'ou', + + 'informations' => 'Informations', + 'website_url' => 'URL du site', + 'feed_url' => 'URL du flux', + 'number_articles' => 'Nombre d\'articles', + 'categorize' => 'Ranger dans une catégorie', + 'advanced' => 'Avancé', + 'show_in_all_flux' => 'Afficher dans le flux principal', + 'yes' => 'Oui', + 'no' => 'Non', + 'css_path_on_website' => 'Chemin CSS des articles sur le site d\'origine', + 'retrieve_truncated_feeds' => 'Permet de récupérer les flux tronqués (attention, demande plus de temps !)', + 'http_username' => 'Username HTTP', + 'http_password' => 'Mot de passe HTTP', + 'blank_to_disable' => 'Laissez vide pour désactiver', + 'not_yet_implemented' => 'Pas encore implémenté', + 'access_protected_feeds' => 'La connexion permet d\'accéder aux flux protégés par une authentification HTTP', + 'no_selected_feed' => 'Aucun flux sélectionné.', + 'think_to_add' => 'Pensez à en ajouter !', + + 'general_configuration' => 'Configuration générale', + 'delete_articles_every' => 'Supprimer les articles tous les', + 'month' => 'mois', + 'persona_connection_email' => 'Adresse mail de connexion (utilise Persona)', + 'reading_configuration' => 'Configuration de lecture', + 'articles_per_page' => 'Nombre d\'articles par page', + 'default_view' => 'Vue par défaut', + 'sort_order' => 'Ordre de tri', + 'display_articles_unfolded' => 'Afficher les articles dépliés par défaut', + 'auto_read_when' => 'Marquer automatiquement comme lu lorsque', + 'article_selected' => 'L\'article est sélectionné', + 'article_open_on_website' => 'L\'article est ouvert sur le site d\'origine', + 'page_loaded' => 'La page est chargée', + 'your_shaarli' => 'Votre Shaarli', + 'sharing' => 'Partage', + 'share' => 'Partager', + 'by_email' => 'Par mail', + 'on_shaarli' => 'Sur votre Shaarli', + + 'note' => 'Note', + 'add_note' => 'Ajouter une note', + 'update_note' => 'Modifier votre note', + 'ask_public_article' => 'Article public ?', + 'article' => 'Article', + 'title' => 'Titre', + 'author' => 'Auteur', + 'publication_date' => 'Date de publication', + + 'newer' => 'plus récents', + 'older' => 'plus anciens', + + 'rss_feeds_of' => 'Flux RSS de %s', + + 'refresh' => 'Actualisation', + + 'today' => 'Aujourd\'hui', + 'yesterday' => 'Hier', + 'before_yesterday' => 'À partir d\'avant-hier', + 'by_author' => 'Par %s', + 'related_tags' => 'Tags associés', + 'no_feed_to_display' => 'Il n\'y a aucun flux à afficher.', + + 'about_freshrss' => 'À propos de FreshRSS', + 'project_website' => 'Site du projet', + 'lead_developer' => 'Développeur principal', + 'website' => 'Site Internet', + 'bugs_reports' => 'Rapports de bugs', + 'github_or_email' => 'sur Github ou par mail', + 'license' => 'Licence', + 'agpl3' => 'AGPL 3', + 'freshrss_description' => 'FreshRSS est un agrégateur de flux RSS à auto-héberger à l\'image de RSSLounge, TinyTinyRSS ou Leed. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable. L\'objectif étant d\'offrir une alternative sérieuse au futur feu-Google Reader.', + 'credits' => 'Crédits', + 'credits_content' => 'Des éléments de design sont issus du projet Bootstrap bien que FreshRSS n\'utilise pas ce framework. Les icônes sont issues du projet GNOME. La police Open Sans utilisée a été créée par Steve Matteson. Les favicons sont récupérés grâce au site getFavicon. FreshRSS repose sur Minz, un framework PHP.', ); diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index 02e340ca1..1ee935db9 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -47,7 +47,7 @@
  • mode == 'not_read') { ?> - + diff --git a/app/views/configure/categorize.phtml b/app/views/configure/categorize.phtml index 660ddef20..b6ba5c3c7 100644 --- a/app/views/configure/categorize.phtml +++ b/app/views/configure/categorize.phtml @@ -1,23 +1,23 @@ partial ('aside_configure'); ?>
    - ← Retour à vos flux RSS +
    - Gestion des catégories - gestion des flux + - -

    Lors de la suppression d'une catégorie, ses flux seront automatiquement classés dans defaultCategory->name (); ?>.

    +

    defaultCategory->name ()); ?>

    categories as $cat) { $i++; ?>
    - Vider ? (nbFeed (); ?> flux) + (nbFeed ()); ?>) id () == $this->defaultCategory->id ()) { ?> - ne peut pas être supprimée +
    @@ -25,16 +25,16 @@
    - +
    - +
    - - + +
    diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml index 79fa4b43c..fcae83d9a 100644 --- a/app/views/configure/display.phtml +++ b/app/views/configure/display.phtml @@ -1,104 +1,104 @@ partial ('aside_configure'); ?>
    - ← Retour à vos flux RSS +
    - Configuration générale +
    - +
    - mois +
    - + conf->mailLogin (); ?>
    - - + +
    - Configuration de lecture +
    - +
    - +
    - +
    - +
    - +
    - Partage +
    - +
    - +
    - - + +
    diff --git a/app/views/configure/feed.phtml b/app/views/configure/feed.phtml index adea27e52..73b70ec4c 100644 --- a/app/views/configure/feed.phtml +++ b/app/views/configure/feed.phtml @@ -2,35 +2,35 @@ flux) { ?>
    - ← Retour à vos flux RSS +

    flux->name (); ?>

    flux->description (); ?>
    - Informations +
    - +
    - +
    - +
    flux->nbEntries (); ?>
    - Catégorie - gestion + -
    - +
    categories as $cat) { ?>
    - Avancé +
    - +
    - +
    - - Permet de récupérer les flux tronqués (attention, demande plus de temps !) + +
    - - + +
    -
    Aucun flux sélectionné. Pensez à en ajouter !
    +
    diff --git a/app/views/configure/importExport.phtml b/app/views/configure/importExport.phtml index 34bee4a07..4cc575356 100644 --- a/app/views/configure/importExport.phtml +++ b/app/views/configure/importExport.phtml @@ -14,12 +14,12 @@ partial ('aside_feed'); ?>
    - ← Retour à vos flux RSS +
    - Import / export au format OPML +
    - +
    @@ -27,9 +27,9 @@
    - - ou - Exporter + + +
    diff --git a/app/views/configure/shortcut.phtml b/app/views/configure/shortcut.phtml index 86682465a..4c7884234 100644 --- a/app/views/configure/shortcut.phtml +++ b/app/views/configure/shortcut.phtml @@ -1,7 +1,7 @@ partial ('aside_configure'); ?>
    - ← Retour à vos flux RSS + list_keys as $key) { ?> @@ -12,57 +12,57 @@ conf->shortcuts (); ?>
    - Gestion des raccourcis + - +
    - +
    - + shift pour marquer tous les articles comme non lus +
    - +
    - +
    - +
    - + shift pour passer au dernier article de la page +
    - +
    - + shift pour passer au premier article de la page +
    - +
    - +
    @@ -70,8 +70,8 @@
    - - + +
    diff --git a/app/views/entry/note.phtml b/app/views/entry/note.phtml index 912d4846d..061060106 100644 --- a/app/views/entry/note.phtml +++ b/app/views/entry/note.phtml @@ -1,37 +1,37 @@ partial ('aside_flux'); ?>
    - ← Retour à vos flux RSS +
    - Note +
    - +
    - +
    - - + +
    - Article +
    - + @@ -41,7 +41,7 @@ $author = $this->entry->author (); if ($author) { ?>
    - +
    @@ -49,14 +49,14 @@
    - +
    entry->date (); ?>
    - +
    entry->content (); ?>
    diff --git a/app/views/error/index.phtml b/app/views/error/index.phtml index 21d298eb4..d5d090c72 100644 --- a/app/views/error/index.phtml +++ b/app/views/error/index.phtml @@ -1,7 +1,10 @@
    -
    +

    code; ?>

    -

    Revenir à l'accueil

    +

    +
    + +

    diff --git a/app/views/helpers/pagination.phtml b/app/views/helpers/pagination.phtml index f91e3d95d..d5428d304 100755 --- a/app/views/helpers/pagination.phtml +++ b/app/views/helpers/pagination.phtml @@ -2,13 +2,23 @@ $c = Request::controllerName (); $a = Request::actionName (); $params = Request::params (); + + $conf = new RSSConfiguration (); + $order = Session::param ('order', $conf->sortOrder ()); + if ($order == 'low_to_high') { + $first_link = Translate::t ('newer'); + $second_link = Translate::t ('older'); + } else { + $first_link = Translate::t ('older'); + $second_link = Translate::t ('newer'); + } ?>
    • currentPage > 1) { ?> currentPage - 1; ?> - ‹ plus récents +   @@ -19,7 +29,7 @@
    • currentPage < $this->nbPage) { ?> currentPage + 1; ?> - plus anciens › +   diff --git a/app/views/helpers/rss.phtml b/app/views/helpers/rss.phtml index 1aa0ac44a..83de6de2e 100755 --- a/app/views/helpers/rss.phtml +++ b/app/views/helpers/rss.phtml @@ -3,7 +3,7 @@ <?php echo View::title(); ?> - Flux RSS de + GMT diff --git a/app/views/index/about.phtml b/app/views/index/about.phtml index 73f5f4001..7c228b581 100644 --- a/app/views/index/about.phtml +++ b/app/views/index/about.phtml @@ -1,24 +1,24 @@
      - ← Retour à vos flux RSS + -

      À propos de FreshRSS

      +

      -
      Url du projet
      +
      https://github.com/marienfressinaud/FreshRSS
      -
      Développeur principal
      -
      Marien Fressinaud - site Internet
      +
      +
      Marien Fressinaud -
      -
      Pour les rapports de bugs
      -
      sur Github ou par mail
      +
      +
      -
      Licence
      -
      AGPL 3
      +
      +
      -

      FreshRSS est un agrégateur de flux RSS à auto-héberger à l'image de RSSLounge, TinyTinyRSS ou Leed. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable. L'objectif étant d'offrir une alternative sérieuse au futur feu-Google Reader.

      +

      -

      Crédits

      - Des éléments de design sont issus du projet Bootstrap bien que FreshRSS n'utilise pas ce framework. Les icônes sont issues du projet GNOME. La police Open Sans utilisée a été créée par Steve Matteson. Les favicons sont récupérés grâce au site getFavicon. FreshRSS repose sur Minz, un framework PHP. +

      +

      diff --git a/app/views/index/index.phtml b/app/views/index/index.phtml index ff7325996..5c6ab0376 100644 --- a/app/views/index/index.phtml +++ b/app/views/index/index.phtml @@ -22,13 +22,13 @@ if (isset ($this->entryPaginator)) { isDay (Days::TODAY)) { ?> -
      Aujourd'hui -
      +
      -
      isDay (Days::YESTERDAY)) { ?> -
      Hier -
      +
      -
      isDay (Days::BEFORE_YESTERDAY)) { ?> -
      À partir d'avant-hier
      +
      @@ -59,32 +59,32 @@ if (isset ($this->entryPaginator)) {

      title (); ?>

      author (); ?> - Par ' . $author . '
      ' : ''; ?> + ' . Translate::t ('by_author', $author) . '
      ' : ''; ?> content (); ?>
    • notes () != '') { ?> - Modifier votre note + - Ajouter une note +
    • @@ -94,12 +94,11 @@ if (isset ($this->entryPaginator)) {
    • -
      - Il n'y a aucun flux à afficher. + diff --git a/app/views/javascript/actualize.phtml b/app/views/javascript/actualize.phtml index 16188422a..fa6e67ddb 100644 --- a/app/views/javascript/actualize.phtml +++ b/app/views/javascript/actualize.phtml @@ -6,7 +6,7 @@ feeds.push (" 'feed', 'a' => 'actualize', function initProgressBar (init) { if (init) { $("body").after ("\
      \ - Actualisation 0 / " + feeds.length + "
      \ + 0 / " + feeds.length + "
      \ \
      "); } else { -- cgit v1.2.3