summaryrefslogtreecommitdiff
path: root/app
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 /app
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
Diffstat (limited to 'app')
-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 {