Przeglądaj źródła

Fix i18n for conf, entry, error, feed Controllers

Marien Fressinaud 11 lat temu
rodzic
commit
fee1ae997a

+ 4 - 4
app/Controllers/authController.php

@@ -22,7 +22,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
 			Minz_Error::error(403);
 		}
 
-		Minz_View::prependTitle(_t('gen.auth.title') . ' · ');
+		Minz_View::prependTitle(_t('admin.auth.title') . ' · ');
 
 		if (Minz_Request::isPost()) {
 			$ok = true;
@@ -56,10 +56,10 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
 			invalidateHttpCache();
 
 			if ($ok) {
-				Minz_Request::good(_t('feedback.configuration.updated'),
+				Minz_Request::good(_t('feedback.conf.updated'),
 				                   array('c' => 'auth', 'a' => 'index'));
 			} else {
-				Minz_Request::bad(_t('feedback.configuration.error'),
+				Minz_Request::bad(_t('feedback.conf.error'),
 				                  array('c' => 'auth', 'a' => 'index'));
 			}
 		}
@@ -285,7 +285,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
 	 * After reseting, form auth is set by default.
 	 */
 	public function resetAction() {
-		Minz_View::prependTitle(_t('feedback.auth.title_reset') . ' · ');
+		Minz_View::prependTitle(_t('admin.auth.title_reset') . ' · ');
 
 		Minz_View::appendScript(Minz_Url::display(
 			'/scripts/bcrypt.min.js?' . @filemtime(PUBLIC_PATH . '/scripts/bcrypt.min.js')

+ 15 - 15
app/Controllers/configureController.php

@@ -61,13 +61,13 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 			Minz_Translate::reset();
 			invalidateHttpCache();
 
-			Minz_Request::good(_t('configuration_updated'),
+			Minz_Request::good(_t('feedback.conf.updated'),
 			                   array('c' => 'configure', 'a' => 'display'));
 		}
 
 		$this->view->themes = FreshRSS_Themes::get();
 
-		Minz_View::prependTitle(_t('display_configuration') . ' · ');
+		Minz_View::prependTitle(_t('conf.display.title') . ' · ');
 	}
 
 	/**
@@ -125,11 +125,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 			Minz_Translate::reset();
 			invalidateHttpCache();
 
-			Minz_Request::good(_t('configuration_updated'),
+			Minz_Request::good(_t('feedback.conf.updated'),
 			                   array('c' => 'configure', 'a' => 'reading'));
 		}
 
-		Minz_View::prependTitle(_t('reading_configuration') . ' · ');
+		Minz_View::prependTitle(_t('conf.reading.title') . ' · ');
 	}
 
 	/**
@@ -146,11 +146,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 			FreshRSS_Context::$conf->save();
 			invalidateHttpCache();
 
-			Minz_Request::good(_t('configuration_updated'),
+			Minz_Request::good(_t('feedback.conf.updated'),
 			                   array('c' => 'configure', 'a' => 'sharing'));
 		}
 
-		Minz_View::prependTitle(_t('sharing') . ' · ');
+		Minz_View::prependTitle(_t('conf.sharing.title') . ' · ');
 	}
 
 	/**
@@ -188,11 +188,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 			FreshRSS_Context::$conf->save();
 			invalidateHttpCache();
 
-			Minz_Request::good(_t('shortcuts_updated'),
+			Minz_Request::good(_t('feedback.conf.shortcuts_updated'),
 			                   array('c' => 'configure', 'a' => 'shortcut'));
 		}
 
-		Minz_View::prependTitle(_t('shortcuts') . ' · ');
+		Minz_View::prependTitle(_t('conf.shortcut.title') . ' · ');
 	}
 
 	/**
@@ -218,11 +218,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 			FreshRSS_Context::$conf->save();
 			invalidateHttpCache();
 
-			Minz_Request::good(_t('configuration_updated'),
+			Minz_Request::good(_t('feedback.conf.updated'),
 			                   array('c' => 'configure', 'a' => 'archiving'));
 		}
 
-		Minz_View::prependTitle(_t('archiving_configuration') . ' · ');
+		Minz_View::prependTitle(_t('conf.archiving.title') . ' · ');
 
 		$entryDAO = FreshRSS_Factory::createEntryDao();
 		$this->view->nb_total = $entryDAO->count();
@@ -249,13 +249,13 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 
 			foreach ($queries as $key => $query) {
 				if (!$query['name']) {
-					$query['name'] = _t('query_number', $key + 1);
+					$query['name'] = _t('conf.query.number', $key + 1);
 				}
 			}
 			FreshRSS_Context::$conf->_queries($queries);
 			FreshRSS_Context::$conf->save();
 
-			Minz_Request::good(_t('configuration_updated'),
+			Minz_Request::good(_t('feedback.conf.updated'),
 			                   array('c' => 'configure', 'a' => 'queries'));
 		} else {
 			$this->view->query_get = array();
@@ -317,7 +317,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 			}
 		}
 
-		Minz_View::prependTitle(_t('queries') . ' · ');
+		Minz_View::prependTitle(_t('conf.query.title') . ' · ');
 	}
 
 	/**
@@ -331,7 +331,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 		$whitelist = array('get', 'order', 'name', 'search', 'state');
 		$queries = FreshRSS_Context::$conf->queries;
 		$query = Minz_Request::params();
-		$query['name'] = _t('query_number', count($queries) + 1);
+		$query['name'] = _t('conf.query.number', count($queries) + 1);
 		foreach ($query as $key => $value) {
 			if (!in_array($key, $whitelist)) {
 				unset($query[$key]);
@@ -341,7 +341,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 		FreshRSS_Context::$conf->_queries($queries);
 		FreshRSS_Context::$conf->save();
 
-		Minz_Request::good(_t('query_created', $query['name']),
+		Minz_Request::good(_t('feedback.conf.query_created', $query['name']),
 		                   array('c' => 'configure', 'a' => 'queries'));
 	}
 }

+ 3 - 3
app/Controllers/entryController.php

@@ -85,7 +85,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController {
 		}
 
 		if (!$this->ajax) {
-			Minz_Request::good(_t('feeds_marked_read'), array(
+			Minz_Request::good(_t('feedback.sub.feed.marked_read'), array(
 				'c' => 'index',
 				'a' => 'index',
 				'params' => $params,
@@ -144,7 +144,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController {
 		$feedDAO->updateCachedValues();
 
 		invalidateHttpCache();
-		Minz_Request::good(_t('optimization_complete'), $url_redirect);
+		Minz_Request::good(_t('feedback.admin.optimization_complete'), $url_redirect);
 	}
 
 	/**
@@ -185,7 +185,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController {
 		$feedDAO->updateCachedValues();
 
 		invalidateHttpCache();
-		Minz_Request::good(_t('purge_completed', $nb_total), array(
+		Minz_Request::good(_t('feedback.sub.purge_completed', $nb_total), array(
 			'c' => 'configure',
 			'a' => 'archiving'
 		));

+ 2 - 2
app/Controllers/errorController.php

@@ -37,11 +37,11 @@ class FreshRSS_error_Controller extends Minz_ActionController {
 		if ($this->view->errorMessage == '') {
 			switch($code_int) {
 			case 403:
-				$this->view->errorMessage = _t('access_denied');
+				$this->view->errorMessage = _t('feedback.access.denied');
 				break;
 			case 404:
 			default:
-				$this->view->errorMessage = _t('page_not_found');
+				$this->view->errorMessage = _t('feedback.access.not_found');
 				break;
 			}
 		}

+ 20 - 17
app/Controllers/feedController.php

@@ -68,7 +68,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 		$limits = Minz_Configuration::limits();
 		$this->view->feeds = $feedDAO->listFeeds();
 		if (count($this->view->feeds) >= $limits['max_feeds']) {
-			Minz_Request::bad(_t('sub.feeds.over_max', $limits['max_feeds']),
+			Minz_Request::bad(_t('feedback.sub.feed.over_max', $limits['max_feeds']),
 			                  $url_redirect);
 		}
 
@@ -110,7 +110,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 			} catch (FreshRSS_BadUrl_Exception $e) {
 				// Given url was not a valid url!
 				Minz_Log::warning($e->getMessage());
-				Minz_Request::bad(_t('invalid_url', $url), $url_redirect);
+				Minz_Request::bad(_t('feedback.sub.feed.invalid_url', $url), $url_redirect);
 			}
 
 			try {
@@ -119,20 +119,23 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 				// Something went bad (timeout, server not found, etc.)
 				Minz_Log::warning($e->getMessage());
 				Minz_Request::bad(
-					_t('internal_problem_feed', _url('index', 'logs')),
+					_t('feedback.sub.feed.internal_problem', _url('index', 'logs')),
 					$url_redirect
 				);
 			} catch (Minz_FileNotExistException $e) {
 				// Cache directory doesn't exist!
 				Minz_Log::error($e->getMessage());
 				Minz_Request::bad(
-					_t('internal_problem_feed', _url('index', 'logs')),
+					_t('feedback.sub.feed.internal_problem', _url('index', 'logs')),
 					$url_redirect
 				);
 			}
 
 			if ($feedDAO->searchByUrl($feed->url())) {
-				Minz_Request::bad(_t('already_subscribed', $feed->name()), $url_redirect);
+				Minz_Request::bad(
+					_t('feedback.sub.feed.already_subscribed', $feed->name()),
+					$url_redirect
+				);
 			}
 
 			$feed->_category($cat);
@@ -151,7 +154,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 			$id = $feedDAO->addFeed($values);
 			if (!$id) {
 				// There was an error in database... we cannot say what here.
-				Minz_Request::bad(_t('feed_not_added', $feed->name()), $url_redirect);
+				Minz_Request::bad(_t('feedback.sub.feed.not_added', $feed->name()), $url_redirect);
 			}
 
 			// Ok, feed has been added in database. Now we have to refresh entries.
@@ -185,10 +188,10 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 
 			// Entries are in DB, we redirect to feed configuration page.
 			$url_redirect['params']['id'] = $feed->id();
-			Minz_Request::good(_t('feed_added', $feed->name()), $url_redirect);
+			Minz_Request::good(_t('feedback.sub.feed.added', $feed->name()), $url_redirect);
 		} else {
 			// GET request: we must ask confirmation to user before adding feed.
-			Minz_View::prependTitle(_t('add_rss_feed') . ' · ');
+			Minz_View::prependTitle(_t('sub.feed.title_add') . ' · ');
 
 			$this->view->categories = $this->catDAO->listCategories(false);
 			$this->view->feed = new FreshRSS_Feed($url);
@@ -204,7 +207,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 			if ($feed) {
 				// Already subscribe so we redirect to the feed configuration page.
 				$url_redirect['params']['id'] = $feed->id();
-				Minz_Request::good(_t('already_subscribed', $feed->name()), $url_redirect);
+				Minz_Request::good(_t('feedback.sub.feed.already_subscribed', $feed->name()), $url_redirect);
 			}
 		}
 	}
@@ -234,9 +237,9 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 
 		invalidateHttpCache();
 		if ($n === false) {
-			Minz_Request::bad(_t('error_occurred'), $url_redirect);
+			Minz_Request::bad(_t('feedback.sub.feed.error'), $url_redirect);
 		} else {
-			Minz_Request::good(_t('n_entries_deleted', $n), $url_redirect);
+			Minz_Request::good(_t('feedback.sub.feed.n_entries_deleted', $n), $url_redirect);
 		}
 	}
 
@@ -381,7 +384,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 			// are several updated feeds.
 			$notif = array(
 				'type' => 'good',
-				'content' => _t('feeds_actualized')
+				'content' => _t('feedback.sub.feed.actualizeds')
 			);
 			Minz_Session::_param('notification', $notif);
 			// No layout in ajax request.
@@ -392,13 +395,13 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 		// Redirect to the main page with correct notification.
 		if ($updated_feeds === 1) {
 			$feed = reset($feeds);
-			Minz_Request::good(_t('feed_actualized', $feed->name()), array(
+			Minz_Request::good(_t('feedback.sub.feed.actualized', $feed->name()), array(
 				'params' => array('get' => 'f_' . $feed->id())
 			));
 		} elseif ($updated_feeds > 1) {
-			Minz_Request::good(_t('n_feeds_actualized', $updated_feeds), array());
+			Minz_Request::good(_t('feedback.sub.feed.n_actualized', $updated_feeds), array());
 		} else {
-			Minz_Request::good(_t('no_feed_to_refresh'), array());
+			Minz_Request::good(_t('feedback.sub.feed.no_refresh'), array());
 		}
 	}
 
@@ -476,9 +479,9 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 			FreshRSS_Context::$conf->remove_query_by_get('f_' . $id);
 			FreshRSS_Context::$conf->save();
 
-			Minz_Request::good(_t('feed_deleted'), $redirect_url);
+			Minz_Request::good(_t('feedback.sub.feed.deleted'), $redirect_url);
 		} else {
-			Minz_Request::bad(_t('error_occurred'), $redirect_url);
+			Minz_Request::bad(_t('feedback.sub.feed.error'), $redirect_url);
 		}
 	}
 }

+ 2 - 2
app/Controllers/subscriptionController.php

@@ -106,9 +106,9 @@ class FreshRSS_subscription_Controller extends Minz_ActionController {
 				$this->view->feed->_category($cat);
 				$this->view->feed->faviconPrepare();
 
-				Minz_Request::good(_t('feedback.sub.feed_updated'), array('c' => 'subscription', 'params' => array('id' => $id)));
+				Minz_Request::good(_t('feedback.sub.feed.updated'), array('c' => 'subscription', 'params' => array('id' => $id)));
 			} else {
-				Minz_Request::bad(_t('feedback.sub.error_occurred'), array('c' => 'subscription'));
+				Minz_Request::bad(_t('feedback.sub.error'), array('c' => 'subscription'));
 			}
 		}
 	}

+ 4 - 0
app/i18n/en/admin.php

@@ -1,6 +1,10 @@
 <?php
 
 return array(
+	'auth' => array(
+		'title' => 'Authentication',
+		'title_reset' => 'Authentication reset',
+	),
 	'check_install' => array(
 		'cache' => array(
 			'nok' => 'Check permissions on <em>./data/cache</em> directory. HTTP server must have rights to write into',

+ 20 - 1
app/i18n/en/conf.php

@@ -1,7 +1,26 @@
 <?php
 
 return array(
-	'users' => array(
+	'archiving' => array(
+		'title' => 'Archiving',
+	),
+	'display' => array(
+		'title' => 'Display',
+	),
+	'query' => array(
+		'number' => 'Query n°%d',
+		'title' => 'User queries',
+	),
+	'reading' => array(
+		'title' => 'Reading',
+	),
+	'sharing' => array(
+		'title' => 'Sharing',
+	),
+	'shortcut' => array(
+		'title' => 'Shortcuts',
+	),
+	'user' => array(
 		'articles_and_size' => '%s articles (%s)',
 	),
 );

+ 24 - 2
app/i18n/en/feedback.php

@@ -1,6 +1,13 @@
 <?php
 
 return array(
+	'admin' => array(
+		'optimization_complete' => 'Optimization complete',
+	),
+	'access' => array(
+		'denied' => 'You don’t have permission to access this page',
+		'not_found' => 'You are looking for a page which doesn’t exist',
+	),
 	'auth' => array(
 		'form' => array(
 			'not_set' => 'A problem occured during authentication system configuration. Please retry later.',
@@ -16,9 +23,11 @@ return array(
 		'no_password_set' => 'Administrator password hasn’t been set. This feature isn’t available.',
 		'not_persona' => 'Only Persona system can be reset.',
 	),
-	'configuration' => array(
-		'updated' => 'Configuration has been updated',
+	'conf' => array(
 		'error' => 'An error occurred during configuration saving',
+		'query_created' => 'Query "%s" has been created.',
+		'shortcuts_updated' => 'Shortcuts have been updated',
+		'updated' => 'Configuration has been updated',
 	),
 	'import_export' => array(
 		'export_no_zip_extension' => 'Zip extension is not present on your server. Please try to export files one by one.',
@@ -43,10 +52,23 @@ return array(
 			'updated' => 'Category has been updated.',
 		),
 		'feed' => array(
+			'actualized' => '<em>%s</em> has been updated',
+			'actualizeds' => 'RSS feeds have been updated',
+			'added' => 'RSS feed <em>%s</em> has been added',
+			'already_subscribed' => 'You have already subscribed to <em>%s</em>',
+			'deleted' => 'Feed has been deleted',
 			'error' => 'Feed cannot be updated',
+			'internal_problem_feed' => 'The RSS feed could not be added. <a href="%s">Check FressRSS logs</a> for details.',
+			'invalid_url' => 'URL <em>%s</em> is invalid',
+			'marked_read' => 'Feeds have been marked as read',
+			'n_actualized' => '%d feeds have been updated',
+			'n_entries_deleted' => '%d articles have been deleted',
+			'no_refresh' => 'There is no feed to refresh…',
+			'not_added' => '<em>%s</em> could not be added',
 			'over_max' => 'You have reached your limit of feeds (%d)',
 			'updated' => 'Feed has been updated',
 		),
+		'purge_completed' => 'Purge completed (%d articles deleted)',
 	),
 	'user_profile' => array(
 		'updated' => 'Your profile has been modified',

+ 0 - 20
app/i18n/en/gen.php

@@ -130,12 +130,10 @@ return array(
 		'user_profile' => 'Profile',
 	),
 	'freshrss' => 'FreshRSS',
-	'access_denied' => 'You don’t have permission to access this page',
 	'activate_sharing' => 'Activate sharing',
 	'after_onread' => 'After “mark all as read”,',
 	'allow_anonymous' => 'Allow anonymous reading of the articles of the default user (%s)',
 	'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles',
-	'already_subscribed' => 'You have already subscribed to <em>%s</em>',
 	'api_enabled' => 'Allow <abbr>API</abbr> access <small>(required for mobile apps)</small>',
 	'archiving_configuration_help' => 'More options are available in the individual stream settings',
 	'article' => 'Article',
@@ -150,7 +148,6 @@ return array(
 	'auth_form' => 'Web form (traditional, requires JavaScript)',
 	'auth_none' => 'None (dangerous)',
 	'auth_persona' => 'Mozilla Persona (modern, requires JavaScript)',
-	'auth_reset' => 'Authentication reset',
 	'auth_token' => 'Authentication token',
 	'auth_type' => 'Authentication method',
 	'auth_will_reset' => 'Authentication system will be reset: a form will be used instead of Persona.',
@@ -205,13 +202,7 @@ return array(
 	'explain_token' => 'Allows to access RSS output of the default user without authentication.<br /><kbd>%s?output=rss&token=%s</kbd>',
 	'favicons_is_ok' => 'Permissions on favicons directory are good',
 	'feed' => 'Feed',
-	'feed_actualized' => '<em>%s</em> has been updated',
-	'feed_added' => 'RSS feed <em>%s</em> has been added',
-	'feed_deleted' => 'Feed has been deleted',
-	'feed_not_added' => '<em>%s</em> could not be added',
 	'feeds' => 'Feeds',
-	'feeds_actualized' => 'RSS feeds have been updated',
-	'feeds_marked_read' => 'Feeds have been marked as read',
 	'file_is_nok' => 'Check permissions on <em>%s</em> directory. HTTP server must have rights to write into',
 	'finish_installation' => 'Complete installation',
 	'first_article' => 'Skip to the first article',
@@ -231,8 +222,6 @@ return array(
 	'install_not_deleted' => 'Something went wrong; you must delete the file <em>%s</em> manually.',
 	'installation_is_ok' => 'The installation process was successful.<br />The final step will now attempt to delete any file and database backup created during the update process.<br />You may choose to skip this step by deleting <kbd>./data/do-install.txt</kbd> manually.',
 	'installation_step' => 'Installation — step %d · FreshRSS',
-	'internal_problem_feed' => 'The RSS feed could not be added. <a href="%s">Check FressRSS logs</a> for details.',
-	'invalid_url' => 'URL <em>%s</em> is invalid',
 	'is_admin' => 'is administrator',
 	'javascript_for_shortcuts' => 'JavaScript must be enabled in order to use shortcuts',
 	'javascript_is_better' => 'FreshRSS is more pleasant with JavaScript enabled',
@@ -253,13 +242,10 @@ return array(
 	'minz_is_ok' => 'You have the Minz framework',
 	'month' => 'months',
 	'more_information' => 'More information',
-	'n_entries_deleted' => '%d articles have been deleted',
-	'n_feeds_actualized' => '%d feeds have been updated',
 	'next_article' => 'Skip to the next article',
 	'next_page' => 'Skip to the next page',
 	'next_step' => 'Go to the next step',
 	'no_feed_actualized' => 'No RSS feed has been updated',
-	'no_feed_to_refresh' => 'There is no feed to refresh…',
 	'no_query' => 'You haven’t created any user query yet.',
 	'no_query_filter' => 'No filter',
 	'no_rss_feed' => 'No RSS feed',
@@ -270,10 +256,8 @@ return array(
 	'not_yet_implemented' => 'Not yet implemented',
 	'number_divided_when_reader' => 'Divided by 2 in the reading view.',
 	'number_feeds' => '%d feeds',
-	'optimization_complete' => 'Optimization complete',
 	'optimize_bdd' => 'Optimize database',
 	'optimize_todo_sometimes' => 'To do occasionally to reduce the size of the database',
-	'page_not_found' => 'You are looking for a page which doesn’t exist',
 	'password' => 'Password',
 	'password_api' => 'Password API<br /><small>(e.g., for mobile apps)</small>',
 	'password_form' => 'Password<br /><small>(for the Web-form login method)</small>',
@@ -290,16 +274,13 @@ return array(
 	'previous_page' => 'Skip to the previous page',
 	'public' => 'Public',
 	'publication_date' => 'Date of publication',
-	'purge_completed' => 'Purge completed (%d articles deleted)',
 	'purge_now' => 'Purge now',
-	'query_created' => 'Query "%s" has been created.',
 	'query_deprecated' => 'This query is no longer valid. The referenced category or feed has been deleted.',
 	'query_filter' => 'Filter applied:',
 	'query_get_all' => 'Display all articles',
 	'query_get_category' => 'Display "%s" category',
 	'query_get_favorite' => 'Display favorite articles',
 	'query_get_feed' => 'Display "%s" feed',
-	'query_number' => 'Query n°%d',
 	'query_order_asc' => 'Display oldest articles first',
 	'query_order_desc' => 'Display newest articles first',
 	'query_search' => 'Search for "%s"',
@@ -332,7 +313,6 @@ return array(
 	'shortcuts_navigation' => 'Navigation',
 	'shortcuts_navigation_help' => 'With the "Shift" modifier, navigation shortcuts apply on feeds.<br/>With the "Alt" modifier, navigation shortcuts apply on categories.',
 	'shortcuts_other_action' => 'Other actions',
-	'shortcuts_updated' => 'Shortcuts have been updated',
 	'show_adaptive' => 'Adjust showing',
 	'show_all_articles' => 'Show all articles',
 	'sort_order' => 'Sort order',

+ 1 - 0
app/i18n/en/sub.php

@@ -30,6 +30,7 @@ return array(
 		'number_entries' => '%d articles',
 		'stats' => 'Statistics',
 		'title' => 'Title',
+		'title_add' => 'Add a RSS feed',
 		'ttl' => 'Do not automatically refresh more often than',
 		'url' => 'Feed URL',
 		'validator' => 'Check the validity of the feed',

+ 4 - 0
app/i18n/fr/admin.php

@@ -1,6 +1,10 @@
 <?php
 
 return array(
+	'auth' => array(
+		'title' => 'Authentification',
+		'title_reset' => 'Réinitialisation de l’authentification',
+	),
 	'check_install' => array(
 		'cache' => array(
 			'nok' => 'Veuillez vérifier les droits sur le répertoire <em>./data/cache</em>. Le serveur HTTP doit être capable d’écrire dedans',

+ 20 - 1
app/i18n/fr/conf.php

@@ -1,7 +1,26 @@
 <?php
 
 return array(
-	'users' => array(
+	'archiving' => array(
+		'title' => 'Archivage',
+	),
+	'display' => array(
+		'title' => 'Affichage',
+	),
+	'query' => array(
+		'number' => 'Filtre n°%d',
+		'title' => 'Filtres utilisateurs',
+	),
+	'reading' => array(
+		'title' => 'Lecture',
+	),
+	'sharing' => array(
+		'title' => 'Partage',
+	),
+	'shortcut' => array(
+		'title' => 'Raccourcis',
+	),
+	'user' => array(
 		'articles_and_size' => '%s articles (%s)',
 	),
 );

+ 25 - 3
app/i18n/fr/feedback.php

@@ -1,6 +1,13 @@
 <?php
 
 return array(
+	'admin' => array(
+		'optimization_complete' => 'Optimisation terminée.',
+	),
+	'access' => array(
+		'denied' => 'Vous n’avez pas le droit d’accéder à cette page !',
+		'not_found' => 'La page que vous cherchez n’existe pas !',
+	),
 	'auth' => array(
 		'form' => array(
 			'not_set' => 'Un problème est survenu lors de la configuration de votre système d’authentification. Veuillez réessayer plus tard.',
@@ -16,9 +23,11 @@ return array(
 		'no_password_set' => 'Aucun mot de passe administrateur n’a été précisé. Cette fonctionnalité n’est pas disponible.',
 		'not_persona' => 'Seul le système d’authentification Persona peut être réinitialisé.',
 	),
-	'configuration' => array(
+	'conf' => array(
+		'error' => 'Une erreur est survenue durant la sauvegarde de la configuration',
+		'query_created' => 'Le filtre "%s" a bien été créé.',
+		'shortcuts_updated' => 'Les raccourcis ont été mis à jour.',
 		'updated' => 'La configuration a été mise à jour',
-		'error' => 'Une erreur est survenue en sauvegardant la configuration',
 	),
 	'import_export' => array(
 		'export_no_zip_extension' => 'L’extension Zip n’est pas présente sur votre serveur. Veuillez essayer d’exporter les fichiers un par un.',
@@ -43,10 +52,23 @@ return array(
 			'updated' => 'La catégorie a été mise à jour.',
 		),
 		'feed' => array(
-			'error' => 'Le flux n’a pas pu être modifié',
+			'actualized' => '<em>%s</em> a été mis à jour.',
+			'actualizeds' => 'Les flux ont été mis à jour.',
+			'added' => 'Le flux <em>%s</em> a bien été ajouté.',
+			'already_subscribed' => 'Vous êtes déjà abonné à <em>%s</em>',
+			'deleted' => 'Le flux a été supprimé.',
+			'error' => 'Une erreur est survenue',
+			'internal_problem' => 'Le flux ne peut pas être ajouté. <a href="%s">Consulter les logs de FreshRSS</a> pour plus de détails.',
+			'invalid_url' => 'L’url <em>%s</em> est invalide.',
+			'marked_read' => 'Les flux ont été marqués comme lus.',
+			'n_actualized' => '%d flux ont été mis à jour.',
+			'n_entries_deleted' => '%d articles ont été supprimés.',
+			'no_refresh' => 'Il n’y a aucun flux à actualiser…',
+			'not_added' => '<em>%s</em> n’a pas pu être ajouté.',
 			'over_max' => 'Vous avez atteint votre limite de flux (%d)',
 			'updated' => 'Le flux a été mis à jour',
 		),
+		'purge_completed' => 'Purge effectuée (%d articles supprimés).',
 	),
 	'user_profile' => array(
 		'updated' => 'Votre profil a été mis à jour',

+ 1 - 22
app/i18n/fr/gen.php

@@ -15,14 +15,12 @@ return array(
 		'mark_read' => 'Marquer comme lu',
 		'remove' => 'Supprimer',
 		'see_website' => 'Voir le site',
-		'truncate' => 'Supprimer tous les articles',
 		'submit' => 'Valider',
+		'truncate' => 'Supprimer tous les articles',
 	),
 	'auth' => array(
 		'login' => 'Connexion',
 		'logout' => 'Déconnexion',
-		'title' => 'Authentification',
-		'title_reset' => 'Réinitialisation de l’authentification',
 	),
 	'date' => array(
 		'Apr' => '\\a\\v\\r\\i\\l',
@@ -131,12 +129,10 @@ return array(
 		'user_profile' => 'Profil',
 	),
 	'freshrss' => 'FreshRSS',
-	'access_denied' => 'Vous n’avez pas le droit d’accéder à cette page !',
 	'activate_sharing' => 'Activer le partage',
 	'after_onread' => 'Après “marquer tout comme lu”,',
 	'allow_anonymous' => 'Autoriser la lecture anonyme des articles de l’utilisateur par défaut (%s)',
 	'allow_anonymous_refresh' => 'Autoriser le rafraîchissement anonyme des flux',
-	'already_subscribed' => 'Vous êtes déjà abonné à <em>%s</em>',
 	'api_enabled' => 'Autoriser l’accès par <abbr>API</abbr> <small>(nécessaire pour les applis mobiles)</small>',
 	'archiving_configuration_help' => 'D’autres options sont disponibles dans la configuration individuelle des flux.',
 	'article' => 'Article',
@@ -205,13 +201,7 @@ return array(
 	'explain_token' => 'Permet d’accéder à la sortie RSS de l’utilisateur par défaut sans besoin de s’authentifier.<br /><kbd>%s?output=rss&token=%s</kbd>',
 	'favicons_is_ok' => 'Les droits sur le répertoire des favicons sont bons',
 	'feed' => 'Flux',
-	'feed_actualized' => '<em>%s</em> a été mis à jour.',
-	'feed_added' => 'Le flux <em>%s</em> a bien été ajouté.',
-	'feed_deleted' => 'Le flux a été supprimé.',
-	'feed_not_added' => '<em>%s</em> n’a pas pu être ajouté.',
 	'feeds' => 'Flux',
-	'feeds_actualized' => 'Les flux ont été mis à jour.',
-	'feeds_marked_read' => 'Les flux ont été marqués comme lus.',
 	'file_is_nok' => 'Veuillez vérifier les droits sur le répertoire <em>%s</em>. Le serveur HTTP doit être capable d’écrire dedans',
 	'finish_installation' => 'Terminer l’installation',
 	'first_article' => 'Passer au premier article',
@@ -231,8 +221,6 @@ return array(
 	'install_not_deleted' => 'Quelque chose s’est mal passé, vous devez supprimer le fichier <em>%s</em> à la main.',
 	'installation_is_ok' => 'L’installation s’est bien passée.<br />La dernière étape va maintenant tenter de supprimer les fichiers ainsi que d’éventuelles copies de base de données créés durant le processus de mise à jour.<br />Vous pouvez choisir de sauter cette étape en supprimant <kbd>./data/do-install.txt</kbd> manuellement.',
 	'installation_step' => 'Installation — étape %d · FreshRSS',
-	'internal_problem_feed' => 'Le flux ne peut pas être ajouté. <a href="%s">Consulter les logs de FreshRSS</a> pour plus de détails.',
-	'invalid_url' => 'L’url <em>%s</em> est invalide.',
 	'is_admin' => 'est administrateur',
 	'javascript_for_shortcuts' => 'Le JavaScript doit être activé pour pouvoir profiter des raccourcis.',
 	'javascript_is_better' => 'FreshRSS est plus agréable à utiliser avec JavaScript activé',
@@ -253,13 +241,10 @@ return array(
 	'minz_is_ok' => 'Vous disposez du framework Minz',
 	'month' => 'mois',
 	'more_information' => 'Plus d’informations',
-	'n_entries_deleted' => '%d articles ont été supprimés.',
-	'n_feeds_actualized' => '%d flux ont été mis à jour.',
 	'next_article' => 'Passer à l’article suivant',
 	'next_page' => 'Passer à la page suivante',
 	'next_step' => 'Passer à l’étape suivante',
 	'no_feed_actualized' => 'Aucun flux n’a pu être mis à jour.',
-	'no_feed_to_refresh' => 'Il n’y a aucun flux à actualiser…',
 	'no_query' => 'Vous n’avez pas encore créé de filtre.',
 	'no_query_filter' => 'Aucun filtre appliqué',
 	'no_rss_feed' => 'Aucun flux RSS',
@@ -270,10 +255,8 @@ return array(
 	'not_yet_implemented' => 'Pas encore implémenté',
 	'number_divided_when_reader' => 'Divisé par 2 dans la vue de lecture.',
 	'number_feeds' => '%d flux',
-	'optimization_complete' => 'Optimisation terminée.',
 	'optimize_bdd' => 'Optimiser la base de données',
 	'optimize_todo_sometimes' => 'À faire de temps en temps pour réduire la taille de la BDD',
-	'page_not_found' => 'La page que vous cherchez n’existe pas !',
 	'password' => 'Mot de passe',
 	'password_api' => 'Mot de passe API<br /><small>(ex. : pour applis mobiles)</small>',
 	'password_form' => 'Mot de passe<br /><small>(pour connexion par formulaire)</small>',
@@ -290,16 +273,13 @@ return array(
 	'previous_page' => 'Passer à la page précédente',
 	'public' => 'Public',
 	'publication_date' => 'Date de publication',
-	'purge_completed' => 'Purge effectuée (%d articles supprimés).',
 	'purge_now' => 'Purger maintenant',
-	'query_created' => 'Le filtre "%s" a bien été créé.',
 	'query_deprecated' => 'Ce filtre n’est plus valide. La catégorie ou le flux concerné a été supprimé.',
 	'query_filter' => 'Filtres appliqués :',
 	'query_get_all' => 'Afficher tous les articles',
 	'query_get_category' => 'Afficher la catégorie "%s"',
 	'query_get_favorite' => 'Afficher les articles favoris',
 	'query_get_feed' => 'Afficher le flux "%s"',
-	'query_number' => 'Filtre n°%d',
 	'query_order_asc' => 'Afficher les articles les plus anciens en premier',
 	'query_order_desc' => 'Afficher les articles les plus récents en premier',
 	'query_search' => 'Recherche de "%s"',
@@ -332,7 +312,6 @@ return array(
 	'shortcuts_navigation' => 'Navigation',
 	'shortcuts_navigation_help' => 'Avec le modificateur "Shift", les raccourcis de navigation s’appliquent aux flux.<br/>Avec le modificateur "Alt", les raccourcis de navigation s’appliquent aux catégories.',
 	'shortcuts_other_action' => 'Autres actions',
-	'shortcuts_updated' => 'Les raccourcis ont été mis à jour.',
 	'show_adaptive' => 'Adapter l’affichage',
 	'show_all_articles' => 'Afficher tous les articles',
 	'sort_order' => 'Ordre de tri',

+ 1 - 0
app/i18n/fr/sub.php

@@ -30,6 +30,7 @@ return array(
 		'number_entries' => '%d articles',
 		'stats' => 'Statistiques',
 		'title' => 'Titre',
+		'title_add' => 'Ajouter un flux RSS',
 		'ttl' => 'Ne pas automatiquement rafraîchir plus souvent que',
 		'url' => 'URL du flux',
 		'validator' => 'Vérifier la valididé du flux',