aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2013-04-27 13:40:48 +0200
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2013-04-27 13:40:48 +0200
commit19407e1ab6df2c239017fb20e47d6201bdaab223 (patch)
tree976a70c10a5aead037acab4e732bf9cae26e0c9a
parentf73d490a640b40abd074a9b2c83c3dae26ecc638 (diff)
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
-rwxr-xr-xapp/controllers/apiController.php6
-rwxr-xr-xapp/controllers/configureController.php28
-rwxr-xr-xapp/controllers/entryController.php10
-rwxr-xr-xapp/controllers/feedController.php44
-rwxr-xr-xapp/controllers/indexController.php12
-rw-r--r--app/i18n/fr.php146
-rw-r--r--app/layout/nav_menu.phtml2
-rw-r--r--app/views/configure/categorize.phtml20
-rw-r--r--app/views/configure/display.phtml54
-rw-r--r--app/views/configure/feed.phtml42
-rw-r--r--app/views/configure/importExport.phtml12
-rw-r--r--app/views/configure/shortcut.phtml30
-rw-r--r--app/views/entry/note.phtml24
-rw-r--r--app/views/error/index.phtml7
-rwxr-xr-xapp/views/helpers/pagination.phtml14
-rwxr-xr-xapp/views/helpers/rss.phtml2
-rw-r--r--app/views/index/about.phtml24
-rw-r--r--app/views/index/index.phtml27
-rw-r--r--app/views/javascript/actualize.phtml2
19 files changed, 327 insertions, 179 deletions
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 <a href="' . $feed->website () . '">' . $feed->name () . '</a>';
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 <a href="https://github.com/marienfressinaud/FreshRSS">FreshRSS</a>';
}
$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é à <em>' . $feed->name () . '</em>'
+ '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 <em>' . $feed->name () . '</em> 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' => '<em>' . $feed->name () . '</em> 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 <em>' . $url . '</em> 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' => '<em>' . $feed->name () . '</em> 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 @@
<?php
return array (
+ // LAYOUT
'login' => '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 <a href="%s">%s</a>, mis en favoris dans <a href="https://github.com/marienfressinaud/FreshRSS">FreshRSS</a>',
+ 'article_published_on_author' => 'Article publié initialement sur <a href="%s">%s</a> par %s, mis en favoris dans <a href="https://github.com/marienfressinaud/FreshRSS">FreshRSS</a>',
+
+ '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é à <em>%s</em>',
+ 'feed_added' => 'Le flux <em>%s</em> a bien été ajouté',
+ 'feed_not_added' => '<em>%s</em> 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 <em>%s</em> est invalide',
+ 'feed_actualized' => '<em>%s</em> 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 <em>%s</em>.',
+ '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' => '+ <code>shift</code> 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' => '+ <code>shift</code> pour passer au dernier article de la page',
+ 'previous_article' => 'Passer à l\'article précédent',
+ 'shift_for_first' => '+ <code>shift</code> 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 <a href="https://persona.org/">Persona</a>)',
+ '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 <em>%s</em>',
+ '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' => '<a href="https://github.com/marienfressinaud/FreshRSS/issues">sur Github</a> ou <a href="mailto:dev@marienfressinaud.fr">par mail</a>',
+ 'license' => 'Licence',
+ 'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>',
+ 'freshrss_description' => 'FreshRSS est un agrégateur de flux RSS à auto-héberger à l\'image de <a href="http://rsslounge.aditu.de/">RSSLounge</a>, <a href="http://tt-rss.org/redmine/projects/tt-rss/wiki">TinyTinyRSS</a> ou <a href="http://projet.idleman.fr/leed/">Leed</a>. 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 <a href="http://twitter.github.io/bootstrap/">projet Bootstrap</a> bien que FreshRSS n\'utilise pas ce framework. Les <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">icônes</a> sont issues du <a href="https://www.gnome.org/">projet GNOME</a>. La police <em>Open Sans</em> utilisée a été créée par <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a>. Les favicons sont récupérés grâce au site <a href="https://getfavicon.appspot.com/">getFavicon</a>. FreshRSS repose sur <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, 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 @@
<li class="item">
<?php if ($this->mode == 'not_read') { ?>
- <a class="print_all" href="<?php echo _url ('index', 'changeMode', 'mode', 'all'); ?>"><?php echo Translate::t ('show_all'); ?></a>
+ <a class="print_all" href="<?php echo _url ('index', 'changeMode', 'mode', 'all'); ?>"><?php echo Translate::t ('show_all_articles'); ?></a>
<?php } else { ?>
<a class="print_non_read" href="<?php echo _url ('index', 'changeMode', 'mode', 'not_read'); ?>"><?php echo Translate::t ('show_not_reads'); ?></a>
<?php } ?>
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 @@
<?php $this->partial ('aside_configure'); ?>
<div class="post">
- <a href="<?php echo _url ('index', 'index'); ?>">← Retour à vos flux RSS</a>
+ <a href="<?php echo _url ('index', 'index'); ?>"><?php echo Translate::t ('back_to_rss_feeds'); ?></a>
<form method="post" action="<?php echo _url ('configure', 'categorize'); ?>">
- <legend>Gestion des catégories - <a href="<?php echo _url ('configure', 'feed'); ?>">gestion des flux</a></legend>
+ <legend><?php echo Translate::t ('categories_management'); ?> - <a href="<?php echo _url ('configure', 'feed'); ?>"><?php echo Translate::t ('rss_feed_management'); ?></a></legend>
- <p class="alert alert-warn">Lors de la suppression d'une catégorie, ses flux seront automatiquement classés dans <em><?php echo $this->defaultCategory->name (); ?></em>.</p>
+ <p class="alert alert-warn"><?php echo Translate::t ('feeds_moved_category_deleted', $this->defaultCategory->name ()); ?></p>
<?php $i = 0; foreach ($this->categories as $cat) { $i++; ?>
<div class="form-group">
<label class="group-name" for="cat_<?php echo $cat->id (); ?>">
- Catégorie n°<?php echo $i; ?>
+ <?php echo Translate::t ('category_number', $i); ?>
</label>
<div class="group-controls">
<input type="text" id="cat_<?php echo $cat->id (); ?>" name="categories[]" value="<?php echo $cat->name (); ?>" />
- <a href="<?php echo _url ('feed', 'delete', 'id', $cat->id (), 'type', 'category'); ?>">Vider ?</a> (<?php echo $cat->nbFeed (); ?> flux)
+ <a href="<?php echo _url ('feed', 'delete', 'id', $cat->id (), 'type', 'category'); ?>"><?php echo Translate::t ('ask_empty'); ?></a> (<?php echo Translate::t ('number_feeds', $cat->nbFeed ()); ?>)
<?php if ($cat->id () == $this->defaultCategory->id ()) { ?>
- <i class="icon i_help"></i> ne peut pas être supprimée
+ <i class="icon i_help"></i> <?php echo Translate::t ('can_not_be_deleted'); ?>
<?php } ?>
<input type="hidden" name="ids[]" value="<?php echo $cat->id (); ?>" />
</div>
@@ -25,16 +25,16 @@
<?php } ?>
<div class="form-group">
- <label class="group-name" for="new_category">Ajouter une catégorie</label>
+ <label class="group-name" for="new_category"><?php echo Translate::t ('add_category'); ?></label>
<div class="group-controls">
- <input type="text" id="new_category" name="new_category" placeholder="Nouvelle catégorie" />
+ <input type="text" id="new_category" name="new_category" placeholder="<?php echo Translate::t ('new_category'); ?>" />
</div>
</div>
<div class="form-group form-actions">
<div class="group-controls">
- <button type="submit" class="btn btn-important">Sauvegarder</button>
- <button type="reset" class="btn">Annuler</button>
+ <button type="submit" class="btn btn-important"><?php echo Translate::t ('save'); ?></button>
+ <button type="reset" class="btn"><?php echo Translate::t ('cancel'); ?></button>
</div>
</div>
</form>
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 @@
<?php $this->partial ('aside_configure'); ?>
<div class="post">
- <a href="<?php echo _url ('index', 'index'); ?>">← Retour à vos flux RSS</a>
+ <a href="<?php echo _url ('index', 'index'); ?>"><?php echo Translate::t ('back_to_rss_feeds'); ?></a>
<form method="post" action="<?php echo _url ('configure', 'display'); ?>">
- <legend>Configuration générale</legend>
+ <legend><?php echo Translate::t ('general_configuration'); ?></legend>
<div class="form-group">
- <label class="group-name" for="old_entries">Supprimer les articles tous les</label>
+ <label class="group-name" for="old_entries"><?php echo Translate::t ('delete_articles_every'); ?></label>
<div class="group-controls">
- <input type="number" id="old_entries" name="old_entries" value="<?php echo $this->conf->oldEntries (); ?>" /> mois
+ <input type="number" id="old_entries" name="old_entries" value="<?php echo $this->conf->oldEntries (); ?>" /> <?php echo Translate::t ('month'); ?>
</div>
</div>
<div class="form-group">
- <label class="group-name" for="mail_login">Adresse mail de connexion (utilise <a href="https://persona.org/">Persona</a>)</label>
+ <label class="group-name" for="mail_login"><?php echo Translate::t ('persona_connection_email'); ?></label>
<?php $mail = $this->conf->mailLogin (); ?>
<div class="group-controls">
- <input type="email" id="mail_login" name="mail_login" value="<?php echo $mail ? $mail : ''; ?>" placeholder="Laissez vide pour désactiver" />
- <noscript><b>nécessite que javascript soit activé</b></noscript>
+ <input type="email" id="mail_login" name="mail_login" value="<?php echo $mail ? $mail : ''; ?>" placeholder="<?php echo Translate::t ('blank_to_disable'); ?>" />
+ <noscript><b><?php echo Translate::t ('javascript_should_be_activated'); ?></b></noscript>
</div>
</div>
- <legend>Configuration de lecture</legend>
+ <legend><?php echo Translate::t ('reading_configuration'); ?></legend>
<div class="form-group">
- <label class="group-name" for="posts_per_page">Nombre d'articles par page</label>
+ <label class="group-name" for="posts_per_page"><?php echo Translate::t ('articles_per_page'); ?></label>
<div class="group-controls">
<input type="number" id="posts_per_page" name="posts_per_page" value="<?php echo $this->conf->postsPerPage (); ?>" />
</div>
</div>
<div class="form-group">
- <label class="group-name">Vue par défaut</label>
+ <label class="group-name"><?php echo Translate::t ('default_view'); ?></label>
<div class="group-controls">
<label class="radio" for="radio_all">
<input type="radio" name="default_view" id="radio_all" value="all"<?php echo $this->conf->defaultView () == 'all' ? ' checked="checked"' : ''; ?> />
- Tout afficher
+ <?php echo Translate::t ('show_all_articles'); ?>
</label>
<label class="radio" for="radio_not_read">
<input type="radio" name="default_view" id="radio_not_read" value="not_read"<?php echo $this->conf->defaultView () == 'not_read' ? ' checked="checked"' : ''; ?> />
- Afficher les non lus
+ <?php echo Translate::t ('show_not_reads'); ?>
</label>
</div>
</div>
<div class="form-group">
- <label class="group-name" for="sort_order">Ordre de tri</label>
+ <label class="group-name" for="sort_order"><?php echo Translate::t ('sort_order'); ?></label>
<div class="group-controls">
<select name="sort_order" id="sort_order">
- <option value="low_to_high"<?php echo $this->conf->sortOrder () == 'low_to_high' ? ' selected="selected"' : ''; ?>>Du plus récent au plus ancien</option>
- <option value="high_to_low"<?php echo $this->conf->sortOrder () == 'high_to_low' ? ' selected="selected"' : ''; ?>>Du plus ancien au plus récent</option>
+ <option value="low_to_high"<?php echo $this->conf->sortOrder () == 'low_to_high' ? ' selected="selected"' : ''; ?>><?php echo Translate::t ('newer_first'); ?></option>
+ <option value="high_to_low"<?php echo $this->conf->sortOrder () == 'high_to_low' ? ' selected="selected"' : ''; ?>><?php echo Translate::t ('older_first'); ?></option>
</select>
</div>
</div>
<div class="form-group">
- <label class="group-name">Afficher les articles dépliés par défaut</label>
+ <label class="group-name"><?php echo Translate::t ('display_articles_unfolded'); ?></label>
<div class="group-controls">
<label class="radio" for="radio_yes">
<input type="radio" name="display_posts" id="radio_yes" value="yes"<?php echo $this->conf->displayPosts () == 'yes' ? ' checked="checked"' : ''; ?> />
- Oui
+ <?php echo Translate::t ('yes'); ?>
</label>
<label class="radio" for="radio_no">
<input type="radio" name="display_posts" id="radio_no" value="no"<?php echo $this->conf->displayPosts () == 'no' ? ' checked="checked"' : ''; ?> />
- Non<noscript> - <b>nécessite que javascript soit activé</b></noscript>
+ <?php echo Translate::t ('no'); ?><noscript> - <b><?php echo Translate::t ('javascript_should_be_activated'); ?></b></noscript>
</label>
</div>
</div>
<div class="form-group">
- <label class="group-name">Article automatiquement marqué comme lu lorsque</label>
+ <label class="group-name"><?php echo Translate::t ('auto_read_when'); ?></label>
<div class="group-controls">
<label class="checkbox" for="check_open_article">
<input type="checkbox" name="mark_open_article" id="check_open_article" value="yes"<?php echo $this->conf->markWhenArticle () == 'yes' ? ' checked="checked"' : ''; ?> />
- l'article est sélectionné
+ <?php echo Translate::t ('article_selected'); ?>
</label>
<label class="checkbox" for="check_open_site">
<input type="checkbox" name="mark_open_site" id="check_open_site" value="yes"<?php echo $this->conf->markWhenSite () == 'yes' ? ' checked="checked"' : ''; ?> />
- l'article est ouvert sur le site d'origine
+ <?php echo Translate::t ('article_open_on_website'); ?>
</label>
<label class="checkbox" for="check_open_page">
<input type="checkbox" name="mark_open_page" id="check_open_page" value="yes"<?php echo $this->conf->markWhenPage () == 'yes' ? ' checked="checked"' : ''; ?> />
- la page est chargée
+ <?php echo Translate::t ('page_loaded'); ?>
</label>
</div>
</div>
- <legend>Partage</legend>
+ <legend><?php echo Translate::t ('sharing'); ?></legend>
<div class="form-group">
- <label class="group-name" for="shaarli">Votre Shaarli</label>
+ <label class="group-name" for="shaarli"><?php echo Translate::t ('your_shaarli'); ?></label>
<div class="group-controls">
- <input type="text" id="shaarli" name="shaarli" value="<?php echo $this->conf->urlShaarli (); ?>" placeholder="Laissez vide pour désactiver"/>
+ <input type="text" id="shaarli" name="shaarli" value="<?php echo $this->conf->urlShaarli (); ?>" placeholder="<?php echo Translate::t ('blank_to_disable'); ?>"/>
</div>
</div>
<div class="form-group form-actions">
<div class="group-controls">
- <button type="submit" class="btn btn-important">Valider</button>
- <button type="reset" class="btn">Annuler</button>
+ <button type="submit" class="btn btn-important"><?php echo Translate::t ('save'); ?></button>
+ <button type="reset" class="btn"><?php echo Translate::t ('cancel'); ?></button>
</div>
</div>
</form>
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 @@
<?php if ($this->flux) { ?>
<div class="post">
- <a href="<?php echo _url ('index', 'index'); ?>">← Retour à vos flux RSS</a>
+ <a href="<?php echo _url ('index', 'index'); ?>"><?php echo Translate::t ('back_to_rss_feeds'); ?></a>
<h1><?php echo $this->flux->name (); ?></h1>
<?php echo $this->flux->description (); ?>
<form method="post" action="<?php echo _url ('configure', 'feed', 'id', $this->flux->id ()); ?>">
- <legend>Informations</legend>
+ <legend><?php echo Translate::t ('informations'); ?></legend>
<div class="form-group">
- <label class="group-name">URL du site</label>
+ <label class="group-name"><?php echo Translate::t ('website_url'); ?></label>
<div class="group-controls">
<span class="control"><a target="_blank" href="<?php echo $this->flux->website (); ?>"><?php echo $this->flux->website (); ?></a></span>
</div>
</div>
<div class="form-group">
- <label class="group-name">URL du flux</label>
+ <label class="group-name"><?php echo Translate::t ('feed_url'); ?></label>
<div class="group-controls">
<span class="control"><a target="_blank" href="<?php echo $this->flux->url (); ?>"><?php echo $this->flux->url (); ?></a></span>
</div>
</div>
<div class="form-group">
- <label class="group-name">Nombre d'articles</label>
+ <label class="group-name"><?php echo Translate::t ('number_articles'); ?></label>
<div class="group-controls">
<span class="control"><?php echo $this->flux->nbEntries (); ?></span>
</div>
</div>
- <legend>Catégorie - <a href="<?php echo _url ('configure', 'categorize'); ?>">gestion</a></legend>
+ <legend><?php echo Translate::t ('category'); ?> - <a href="<?php echo _url ('configure', 'categorize'); ?>"><?php echo Translate::t ('categories_management'); ?></a></legend>
<div class="form-group">
- <label class="group-name">Ranger dans une catégorie</label>
+ <label class="group-name"><?php echo Translate::t ('categorize'); ?></label>
<div class="group-controls">
<?php foreach ($this->categories as $cat) { ?>
<label class="radio" for="cat_<?php echo $cat->id (); ?>">
@@ -41,46 +41,46 @@
</div>
</div>
- <legend>Avancé</legend>
+ <legend><?php echo Translate::t ('advanced'); ?></legend>
<div class="form-group">
- <label class="group-name" for="priority">Afficher dans le flux principal</label>
+ <label class="group-name" for="priority"><?php echo Translate::t ('show_in_all_flux'); ?></label>
<div class="group-controls">
<label class="checkbox" for="priority">
<input type="checkbox" name="priority" id="priority" value="10"<?php echo $this->flux->priority () > 0 ? ' checked="checked"' : ''; ?> />
- Oui
+ <?php echo Translate::t ('yes'); ?>
</label>
</div>
</div>
<div class="form-group">
- <label class="group-name" for="path_entries">Chemin CSS des articles sur le site d'origine</label>
+ <label class="group-name" for="path_entries"><?php echo Translate::t ('css_path_on_website'); ?></label>
<div class="group-controls">
- <input type="text" name="path_entries" id="path_entries" value="<?php echo $this->flux->pathEntries (); ?>" placeholder="Laissez vide pour désactiver" />
- <i class="icon i_help"></i> Permet de récupérer les flux tronqués (attention, demande plus de temps !)
+ <input type="text" name="path_entries" id="path_entries" value="<?php echo $this->flux->pathEntries (); ?>" placeholder="<?php echo Translate::t ('blank_to_disable'); ?>" />
+ <i class="icon i_help"></i> <?php echo Translate::t ('retrieve_truncated_feeds'); ?>
</div>
</div>
<!--
<div class="form-group">
- <label class="group-name" for="http_user">Username HTTP</label>
+ <label class="group-name" for="http_user"><?php echo Translate::t ('http_username'); ?></label>
<div class="group-controls">
- <input type="text" name="http_user" id="http_user" value="Pas encore implémenté" />
- <i class="icon i_help"></i> La connexion permet d'accéder aux flux protégés par une authentification HTTP
+ <input type="text" name="http_user" id="http_user" value="<?php echo Translate::t ('not_yet_implemented'); ?>" />
+ <i class="icon i_help"></i> <?php echo Translate::t ('access_protected_feeds'); ?>
</div>
- <label class="group-name" for="http_pass">Password HTTP</label>
+ <label class="group-name" for="http_pass"><?php echo Translate::t ('http_password'); ?></label>
<div class="group-controls">
- <input type="text" name="http_pass" id="http_pass" value="Pas encore implémenté" />
+ <input type="text" name="http_pass" id="http_pass" value="<?php echo Translate::t ('not_yet_implemented'); ?>" />
</div>
</div>
-->
<div class="form-group form-actions">
<div class="group-controls">
- <button class="btn btn-important">Valider</button>
- <button class="btn btn-attention" formaction="<?php echo Url::display (array ('c' => 'feed', 'a' => 'delete', 'params' => array ('id' => $this->flux->id ()))); ?>">Supprimer</button>
+ <button class="btn btn-important"><?php echo Translate::t ('save'); ?></button>
+ <button class="btn btn-attention" formaction="<?php echo Url::display (array ('c' => 'feed', 'a' => 'delete', 'params' => array ('id' => $this->flux->id ()))); ?>"><?php echo Translate::t ('delete'); ?></button>
</div>
</div>
</form>
</div>
<?php } else { ?>
-<div class="alert"><span class="alert-head">Aucun flux sélectionné.</span> Pensez à en ajouter !</div>
+<div class="alert"><span class="alert-head"><?php echo Translate::t ('no_selected_feed'); ?></span> <?php echo Translate::t ('think_to_add'); ?></div>
<?php } ?>
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 @@
<?php $this->partial ('aside_feed'); ?>
<div class="post ">
- <a href="<?php echo _url ('index', 'index'); ?>">← Retour à vos flux RSS</a>
+ <a href="<?php echo _url ('index', 'index'); ?>"><?php echo Translate::t ('back_to_rss_feeds'); ?></a>
<form method="post" action="<?php echo Url::display (array ('c' => 'configure', 'a' => 'importExport', 'params' => array ('q' => 'import'))); ?>" enctype="multipart/form-data">
- <legend>Import / export au format OPML</legend>
+ <legend><?php echo Translate::t ('import_export_opml'); ?></legend>
<div class="form-group">
- <label class="group-name" for="file">Fichier à importer</label>
+ <label class="group-name" for="file"><?php echo Translate::t ('file_to_import'); ?></label>
<div class="group-controls">
<input type="file" name="file" id="file" />
</div>
@@ -27,9 +27,9 @@
<div class="form-group form-actions">
<div class="group-controls">
- <button type="submit" class="btn btn-important">Importer</button>
- ou
- <a target="_blank" class="btn btn-important" href="<?php echo _url ('configure', 'importExport', 'q', 'export'); ?>">Exporter</a>
+ <button type="submit" class="btn btn-important"><?php echo Translate::t ('import'); ?></button>
+ <?php echo Translate::t ('or'); ?>
+ <a target="_blank" class="btn btn-important" href="<?php echo _url ('configure', 'importExport', 'q', 'export'); ?>"><?php echo Translate::t ('export'); ?></a>
</div>
</div>
</form>
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 @@
<?php $this->partial ('aside_configure'); ?>
<div class="post">
- <a href="<?php echo _url ('index', 'index'); ?>">← Retour à vos flux RSS</a>
+ <a href="<?php echo _url ('index', 'index'); ?>"><?php echo Translate::t ('back_to_rss_feeds'); ?></a>
<datalist id="keys">
<?php foreach ($this->list_keys as $key) { ?>
@@ -12,57 +12,57 @@
<?php $s = $this->conf->shortcuts (); ?>
<form method="post" action="<?php echo _url ('configure', 'shortcut'); ?>">
- <legend>Gestion des raccourcis</legend>
+ <legend><?php echo Translate::t ('shortcuts_management'); ?></legend>
- <noscript><b>Le javascript doit être activé pour pouvoir profiter des raccourcis</b></noscript>
+ <noscript><p class="alert alert-error"><?php echo Translate::t ('javascript_for_shortcuts'); ?></p></noscript>
<div class="form-group">
- <label class="group-name" for="mark_read">Marquer l'article comme lu</label>
+ <label class="group-name" for="mark_read"><?php echo Translate::t ('mark_read'); ?></label>
<div class="group-controls">
<input type="text" id="mark_read" name="shortcuts[mark_read]" list="keys" value="<?php echo $s['mark_read']; ?>" />
- + <code>shift</code> pour marquer tous les articles comme non lus
+ <?php echo Translate::t ('shift_for_all_read'); ?>
</div>
</div>
<div class="form-group">
- <label class="group-name" for="mark_favorite">Mettre l'article en favori</label>
+ <label class="group-name" for="mark_favorite"><?php echo Translate::t ('mark_favorite'); ?></label>
<div class="group-controls">
<input type="text" id="mark_favorite" name="shortcuts[mark_favorite]" list="keys" value="<?php echo $s['mark_favorite']; ?>" />
</div>
</div>
<div class="form-group">
- <label class="group-name" for="go_website">Voir l'article sur le site d'origine</label>
+ <label class="group-name" for="go_website"><?php echo Translate::t ('see_on_website'); ?></label>
<div class="group-controls">
<input type="text" id="go_website" name="shortcuts[go_website]" list="keys" value="<?php echo $s['go_website']; ?>" />
</div>
</div>
<div class="form-group">
- <label class="group-name" for="next_entry">Passer à l'article suivant</label>
+ <label class="group-name" for="next_entry"><?php echo Translate::t ('next_article'); ?></label>
<div class="group-controls">
<input type="text" id="next_entry" name="shortcuts[next_entry]" list="keys" value="<?php echo $s['next_entry']; ?>" />
- + <code>shift</code> pour passer au dernier article de la page
+ <?php echo Translate::t ('shift_for_last'); ?>
</div>
</div>
<div class="form-group">
- <label class="group-name" for="prev_entry">Passer à l'article précédent</label>
+ <label class="group-name" for="prev_entry"><?php echo Translate::t ('previous_article'); ?></label>
<div class="group-controls">
<input type="text" id="prev_entry" name="shortcuts[prev_entry]" list="keys" value="<?php echo $s['prev_entry']; ?>" />
- + <code>shift</code> pour passer au premier article de la page
+ <?php echo Translate::t ('shift_for_first'); ?>
</div>
</div>
<div class="form-group">
- <label class="group-name" for="next_page">Passer à la page suivante</label>
+ <label class="group-name" for="next_page"><?php echo Translate::t ('next_page'); ?></label>
<div class="group-controls">
<input type="text" id="next_page" name="shortcuts[next_page]" list="keys" value="<?php echo $s['next_page']; ?>" />
</div>
</div>
<div class="form-group">
- <label class="group-name" for="prev_page">Passer à la page précédente</label>
+ <label class="group-name" for="prev_page"><?php echo Translate::t ('previous_page'); ?></label>
<div class="group-controls">
<input type="text" id="prev_page" name="shortcuts[prev_page]" list="keys" value="<?php echo $s['prev_page']; ?>" />
</div>
@@ -70,8 +70,8 @@
<div class="form-group form-actions">
<div class="group-controls">
- <button type="submit" class="btn btn-important">Sauvegarder</button>
- <button type="reset" class="btn">Annuler</button>
+ <button type="submit" class="btn btn-important"><?php echo Translate::t ('save'); ?></button>
+ <button type="reset" class="btn"><?php echo Translate::t ('cancel'); ?></button>
</div>
</div>
</form>
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 @@
<?php $this->partial ('aside_flux'); ?>
<div class="post">
- <a href="<?php echo _url ('index', 'index'); ?>">← Retour à vos flux RSS</a>
+ <a href="<?php echo _url ('index', 'index'); ?>"><?php echo Translate::t ('back_to_rss_feeds'); ?></a>
<form method="post" action="<?php echo _url ('entry', 'note', 'id', $this->entry->id ()); ?>">
- <legend>Note</legend>
+ <legend><?php echo Translate::t ('note'); ?></legend>
<div class="form-group">
- <label class="group-name" for="note">Ajouter une note</label>
+ <label class="group-name" for="note"><?php echo Translate::t ('add_note'); ?></label>
<div class="group-controls">
<textarea rows="5" cols="80" name="note" id="note"><?php echo $this->entry->notes (); ?></textarea>
</div>
</div>
<div class="form-group">
- <label class="group-name" for="public_note">Article public ?</label>
+ <label class="group-name" for="public_note"><?php echo Translate::t ('ask_public_article'); ?></label>
<div class="group-controls">
<label class="checkbox" for="public">
- <input type="checkbox" name="public" id="public" value="yes"<?php echo $this->entry->isPublic () ? ' checked="checked"' : ''; ?> /> Oui
+ <input type="checkbox" name="public" id="public" value="yes"<?php echo $this->entry->isPublic () ? ' checked="checked"' : ''; ?> /> <?php echo Translate::t ('yes'); ?>
</label>
</div>
</div>
<div class="form-group form-actions">
<div class="group-controls">
- <button type="submit" class="btn btn-important">Sauvegarder</button>
- <button type="reset" class="btn">Annuler</button>
+ <button type="submit" class="btn btn-important"><?php echo Translate::t ('save'); ?></button>
+ <button type="reset" class="btn"><?php echo Translate::t ('cancel'); ?></button>
</div>
</div>
- <legend>Article</legend>
+ <legend><?php echo Translate::t ('article'); ?></legend>
<div class="form-group">
- <label class="group-name">Titre</label>
+ <label class="group-name"><?php echo Translate::t ('title'); ?></label>
<div class="group-controls">
<span class="control"><a href="<?php echo $this->entry->link (); ?>"><?php echo $this->entry->title (); ?></a></span>
</div>
@@ -41,7 +41,7 @@
$author = $this->entry->author ();
if ($author) { ?>
<div class="form-group">
- <label class="group-name">Auteur</label>
+ <label class="group-name"><?php echo Translate::t ('author'); ?></label>
<div class="group-controls">
<span class="control"><?php echo $author; ?></span>
</div>
@@ -49,14 +49,14 @@
<?php } ?>
<div class="form-group">
- <label class="group-name">Date de publication</label>
+ <label class="group-name"><?php echo Translate::t ('publication_date'); ?></label>
<div class="group-controls">
<span class="control"><?php echo $this->entry->date (); ?></span>
</div>
</div>
<div class="form-group">
- <label class="group-name">Article</label>
+ <label class="group-name"><?php echo Translate::t ('article'); ?></label>
<div class="group-controls">
<span class="control"><?php echo $this->entry->content (); ?></span>
</div>
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 @@
<div class="post">
- <div class="alert">
+ <div class="alert alert-error">
<h1 class="alert-head"><?php echo $this->code; ?></h1>
- <p><a href="<?php echo Url::display (); ?>">Revenir à l'accueil</a></p>
+ <p>
+ <?php echo Translate::t ('page_not_found'); ?><br />
+ <a href="<?php echo _url ('index', 'index'); ?>"><?php echo Translate::t ('back_to_rss_feeds'); ?></a>
+ </p>
</div>
</div>
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');
+ }
?>
<ul class="pagination">
<li class="item pager-previous">
<?php if ($this->currentPage > 1) { ?>
<?php $params[$getteur] = $this->currentPage - 1; ?>
- <a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">‹ plus récents</a>
+ <a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">‹ <?php echo $first_link ?></a>
<?php } else { ?>
&nbsp;
<?php } ?>
@@ -19,7 +29,7 @@
<li class="item pager-next">
<?php if ($this->currentPage < $this->nbPage) { ?>
<?php $params[$getteur] = $this->currentPage + 1; ?>
- <a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">plus anciens ›</a>
+ <a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>"><?php echo $second_link; ?> ›</a>
<?php } else { ?>
&nbsp;
<?php } ?>
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 @@
<channel>
<title><?php echo View::title(); ?></title>
<link><?php echo Url::display(); ?></link>
- <description>Flux RSS de <?php echo View::title(); ?></description>
+ <description><?php echo Translate::t ('rss_feeds_of', View::title()); ?></description>
<pubDate><?php echo date('D, d M Y H:i:s O'); ?></pubDate>
<lastBuildDate><?php echo gmdate('D, d M Y H:i:s'); ?> GMT</lastBuildDate>
<atom:link href="<?php echo _url ('index', 'index', 'output', 'rss'); ?>" rel="self" type="application/rss+xml" />
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 @@
<div class="post content">
- <a href="<?php echo _url ('index', 'index'); ?>">← Retour à vos flux RSS</a>
+ <a href="<?php echo _url ('index', 'index'); ?>"><?php echo Translate::t ('back_to_rss_feeds'); ?></a>
- <h1>À propos de FreshRSS</h1>
+ <h1><?php echo Translate::t ('about_freshrss'); ?></h1>
<dl class="infos">
- <dt>Url du projet</dt>
+ <dt><?php echo Translate::t ('project_website'); ?></dt>
<dd><a href="https://github.com/marienfressinaud/FreshRSS">https://github.com/marienfressinaud/FreshRSS</a></dd>
- <dt>Développeur principal</dt>
- <dd><a href="mailto:contact@marienfressinaud.fr">Marien Fressinaud</a> - <a href="http://marienfressinaud.fr">site Internet</a></dd>
+ <dt><?php echo Translate::t ('lead_developer'); ?></dt>
+ <dd><a href="mailto:contact@marienfressinaud.fr">Marien Fressinaud</a> - <a href="http://marienfressinaud.fr"><?php echo Translate::t ('website'); ?></a></dd>
- <dt>Pour les rapports de bugs</dt>
- <dd><a href="https://github.com/marienfressinaud/FreshRSS/issues">sur Github</a> ou <a href="mailto:dev@marienfressinaud.fr">par mail</a></dd>
+ <dt><?php echo Translate::t ('bugs_reports'); ?></dt>
+ <dd><?php echo Translate::t ('github_or_email'); ?></dd>
- <dt>Licence</dt>
- <dd><a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a></dd>
+ <dt><?php echo Translate::t ('license'); ?></dt>
+ <dd><?php echo Translate::t ('agpl3'); ?></dd>
</dl>
- <p>FreshRSS est un agrégateur de flux RSS à auto-héberger à l'image de <a href="http://rsslounge.aditu.de/">RSSLounge</a>, <a href="http://tt-rss.org/redmine/projects/tt-rss/wiki">TinyTinyRSS</a> ou <a href="http://projet.idleman.fr/leed/">Leed</a>. 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.</p>
+ <p><?php echo Translate::t ('freshrss_description'); ?></p>
- <h1>Crédits</h1>
- Des éléments de design sont issus du <a href="http://twitter.github.io/bootstrap/">projet Bootstrap</a> bien que FreshRSS n'utilise pas ce framework. Les <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">icônes</a> sont issues du <a href="https://www.gnome.org/">projet GNOME</a>. La police <em>Open Sans</em> utilisée a été créée par <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a>. Les favicons sont récupérés grâce au site <a href="https://getfavicon.appspot.com/">getFavicon</a>. FreshRSS repose sur <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, un framework PHP.
+ <h1><?php echo Translate::t ('credits'); ?></h1>
+ <p><?php echo Translate::t ('credits_content'); ?></p>
</div>
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)) {
<?php foreach ($items as $item) { ?>
<?php if ($display_today && $item->isDay (Days::TODAY)) { ?>
- <div class="day">Aujourd'hui - <?php echo timestamptodate (time (), false); ?></div>
+ <div class="day"><?php echo Translate::t ('today'); ?> - <?php echo timestamptodate (time (), false); ?></div>
<?php $display_today = false; } ?>
<?php if ($display_yesterday && $item->isDay (Days::YESTERDAY)) { ?>
- <div class="day">Hier - <?php echo timestamptodate (time () - 86400, false); ?></div>
+ <div class="day"><?php echo Translate::t ('yesterday'); ?> - <?php echo timestamptodate (time () - 86400, false); ?></div>
<?php $display_yesterday = false; } ?>
<?php if ($display_others && $item->isDay (Days::BEFORE_YESTERDAY)) { ?>
- <div class="day">À partir d'avant-hier</div>
+ <div class="day"><?php echo Translate::t ('before_yesterday'); ?></div>
<?php $display_others = false; } ?>
<div class="flux<?php echo !$item->isRead () ? ' not_read' : ''; ?><?php echo $item->isFavorite () ? ' favorite' : ''; ?>" id="flux_<?php echo $item->id (); ?>">
@@ -59,32 +59,32 @@ if (isset ($this->entryPaginator)) {
<div class="content">
<h1 class="title"><?php echo $item->title (); ?></h1>
<?php $author = $item->author (); ?>
- <?php echo $author != '' ? '<div class="author">Par <em>' . $author . '</em></div>' : ''; ?>
+ <?php echo $author != '' ? '<div class="author">' . Translate::t ('by_author', $author) . '</div>' : ''; ?>
<?php echo $item->content (); ?>
</div>
<ul class="horizontal-list bottom">
<li class="item">
<?php if ($item->notes () != '') { ?>
- <i class="icon i_note"></i> <a class="note" href="<?php echo _url ('entry', 'note', 'id', $item->id ()); ?>">Modifier votre note</a>
+ <i class="icon i_note"></i> <a class="note" href="<?php echo _url ('entry', 'note', 'id', $item->id ()); ?>"><?php echo Translate::t ('update_note'); ?></a>
<?php } else { ?>
- <i class="icon i_note_empty"></i> <a class="note" href="<?php echo _url ('entry', 'note', 'id', $item->id ()); ?>">Ajouter une note</a>
+ <i class="icon i_note_empty"></i> <a class="note" href="<?php echo _url ('entry', 'note', 'id', $item->id ()); ?>"><?php echo Translate::t ('add_note'); ?></a>
<?php } ?>
</li>
<li class="item">
<div class="dropdown">
<div id="dropdown-share-<?php echo $item->id ();?>" class="dropdown-target"></div>
- <i class="icon i_share"></i> <a class="dropdown-toggle" href="#dropdown-share-<?php echo $item->id ();?>">Partager</a>
+ <i class="icon i_share"></i> <a class="dropdown-toggle" href="#dropdown-share-<?php echo $item->id ();?>"><?php echo Translate::t ('share'); ?></a>
<ul class="dropdown-menu">
<li class="dropdown-close"><a href="#close"><i class="icon i_close"></i></a></li>
- <li class="item"><a href="mailto:?subject=<?php echo $item->title (); ?>&amp;body=J'ai trouvé cet article intéressant, tu peux le lire à cette adresse : <?php echo urlencode($item->link ()); ?>">Par mail</a></li>
+ <li class="item"><a href="mailto:?subject=<?php echo $item->title (); ?>&amp;body=J'ai trouvé cet article intéressant, tu peux le lire à cette adresse : <?php echo urlencode($item->link ()); ?>"><?php echo Translate::t ('by_email'); ?></a></li>
<?php
$shaarli = $this->conf->urlShaarli ();
if ($shaarli) {
?>
- <li class="item"><a target="_blank" href="<?php echo $shaarli . '?post=' . urlencode($item->link ()) . '&amp;title=' . urlencode ($item->title ()) . '&amp;source=bookmarklet'; ?>">Shaarli</a></li>
+ <li class="item"><a target="_blank" href="<?php echo $shaarli . '?post=' . urlencode($item->link ()) . '&amp;title=' . urlencode ($item->title ()) . '&amp;source=bookmarklet'; ?>"><?php echo Translate::t ('on_shaarli'); ?></a></li>
<?php } ?>
</ul>
</div>
@@ -94,12 +94,11 @@ if (isset ($this->entryPaginator)) {
<li class="item">
<div class="dropdown">
<div id="dropdown-tags-<?php echo $item->id ();?>" class="dropdown-target"></div>
- <i class="icon i_tag"></i> <a class="dropdown-toggle" href="#dropdown-tags-<?php echo $item->id ();?>">Tags</a>
+ <i class="icon i_tag"></i> <a class="dropdown-toggle" href="#dropdown-tags-<?php echo $item->id ();?>"><?php echo Translate::t ('related_tags'); ?></a>
<ul class="dropdown-menu">
<li class="dropdown-close"><a href="#close"><i class="icon i_close"></i></a></li>
- <li class="dropdown-header">Tags associés</li>
<?php foreach($tags as $tag) { ?>
<li class="item"><span><?php echo $tag; ?></span></li>
<?php } ?>
@@ -115,10 +114,10 @@ if (isset ($this->entryPaginator)) {
<?php $this->entryPaginator->render ('pagination.phtml', 'page'); ?>
</div>
<?php } else { ?>
-<div class="alert">
- <span class="alert-head">Il n'y a aucun flux à afficher.</span>
+<div class="alert alert-warn">
+ <span class="alert-head"><?php echo Translate::t ('no_feed_to_display'); ?></span>
<?php if (Session::param ('mode', 'all') == 'not_read') { ?>
- <a class="print_all" href="<?php echo _url ('index', 'changeMode', 'mode', 'all'); ?>">Afficher tous les articles ?</a>
+ <a class="print_all" href="<?php echo _url ('index', 'changeMode', 'mode', 'all'); ?>"><?php echo Translate::t ('show_all_articles'); ?></a>
<?php } ?>
</div>
<?php } ?>
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 ("<?php echo Url::display (array ('c' => 'feed', 'a' => 'actualize',
function initProgressBar (init) {
if (init) {
$("body").after ("\<div id=\"actualizeProgress\" class=\"actualizeProgress\">\
- Actualisation <span class=\"progress\">0 / " + feeds.length + "</span><br />\
+ <?php echo Translate::t ('refresh'); ?> <span class=\"progress\">0 / " + feeds.length + "</span><br />\
<progress id=\"actualizeProgressBar\" value=\"0\" max=\"" + feeds.length + "\"></progress>\
</div>");
} else {