diff --git a/app/Controllers/authController.php b/app/Controllers/authController.php
index 44496cd3e..ccc32ec0d 100644
--- a/app/Controllers/authController.php
+++ b/app/Controllers/authController.php
@@ -22,7 +22,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
Minz_Error::error(403);
}
- Minz_View::prependTitle(_t('gen.title.authentication') . ' · ');
+ 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('configuration_updated'),
+ Minz_Request::good(_t('feedback.conf.updated'),
array('c' => 'auth', 'a' => 'index'));
} else {
- Minz_Request::bad(_t('error_occurred'),
+ Minz_Request::bad(_t('feedback.conf.error'),
array('c' => 'auth', 'a' => 'index'));
}
}
@@ -123,7 +123,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
} catch(Minz_Exception $e) {
// $username is not a valid user, nor the configuration file!
Minz_Log::warning('Login failure: ' . $e->getMessage());
- Minz_Request::bad(_t('invalid_login'),
+ Minz_Request::bad(_t('feedback.auth.login.invalid'),
array('c' => 'auth', 'a' => 'login'));
}
@@ -144,14 +144,14 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
}
// All is good, go back to the index.
- Minz_Request::good(_t('feedback.login.success'),
+ Minz_Request::good(_t('feedback.auth.login.success'),
array('c' => 'index', 'a' => 'index'));
} else {
Minz_Log::warning('Password mismatch for' .
' user=' . $username .
', nonce=' . $nonce .
', c=' . $challenge);
- Minz_Request::bad(_t('invalid_login'),
+ Minz_Request::bad(_t('feedback.auth.login.invalid'),
array('c' => 'auth', 'a' => 'login'));
}
} elseif (Minz_Configuration::unsafeAutologinEnabled()) {
@@ -183,11 +183,11 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
Minz_Session::_param('passwordHash', $s);
FreshRSS_Auth::giveAccess();
- Minz_Request::good(_t('feedback.login.success'),
+ Minz_Request::good(_t('feedback.auth.login.success'),
array('c' => 'index', 'a' => 'index'));
} else {
Minz_Log::warning('Unsafe password mismatch for user ' . $username);
- Minz_Request::bad(_t('invalid_login'),
+ Minz_Request::bad(_t('feedback.auth.login.invalid'),
array('c' => 'auth', 'a' => 'login'));
}
}
@@ -261,7 +261,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
$res = array();
$res['status'] = 'failure';
- $res['reason'] = _t('invalid_login');
+ $res['reason'] = _t('feedback.auth.login.invalid');
}
header('Content-Type: application/json; charset=UTF-8');
@@ -275,7 +275,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
public function logoutAction() {
invalidateHttpCache();
FreshRSS_Auth::removeAccess();
- Minz_Request::good(_t('feedback.logout.success'),
+ Minz_Request::good(_t('feedback.auth.logout.success'),
array('c' => 'index', '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('auth_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')
@@ -296,8 +296,8 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
if (Minz_Configuration::authType() != 'persona') {
$this->view->message = array(
'status' => 'bad',
- 'title' => _t('damn'),
- 'body' => _t('auth_not_persona')
+ 'title' => _t('gen.short.damn'),
+ 'body' => _t('feedback.auth.not_persona')
);
$this->view->no_form = true;
return;
@@ -308,8 +308,8 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
if (!$conf->passwordHash) {
$this->view->message = array(
'status' => 'bad',
- 'title' => _t('damn'),
- 'body' => _t('auth_no_password_set')
+ 'title' => _t('gen.short.damn'),
+ 'body' => _t('feedback.auth.no_password_set')
);
$this->view->no_form = true;
return;
@@ -331,9 +331,9 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
$ok = Minz_Configuration::writeFile();
if ($ok) {
- Minz_Request::good(_t('auth_form_set'));
+ Minz_Request::good(_t('feedback.auth.form.set'));
} else {
- Minz_Request::bad(_t('auth_form_not_set'),
+ Minz_Request::bad(_t('feedback.auth.form.not_set'),
array('c' => 'auth', 'a' => 'reset'));
}
} else {
@@ -341,7 +341,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController {
' user=' . $username .
', nonce=' . $nonce .
', c=' . $challenge);
- Minz_Request::bad(_t('invalid_login'),
+ Minz_Request::bad(_t('feedback.auth.login.invalid'),
array('c' => 'auth', 'a' => 'reset'));
}
}
diff --git a/app/Controllers/categoryController.php b/app/Controllers/categoryController.php
index 50b1d841a..5f1beae90 100644
--- a/app/Controllers/categoryController.php
+++ b/app/Controllers/categoryController.php
@@ -34,7 +34,7 @@ class FreshRSS_category_Controller extends Minz_ActionController {
$this->view->categories = $catDAO->listCategories(false);
if (count($this->view->categories) >= $limits['max_categories']) {
- Minz_Request::bad(_t('sub.categories.over_max', $limits['max_categories']),
+ Minz_Request::bad(_t('feedback.sub.category.over_max', $limits['max_categories']),
$url_redirect);
}
@@ -43,13 +43,13 @@ class FreshRSS_category_Controller extends Minz_ActionController {
$cat_name = Minz_Request::param('new-category');
if (!$cat_name) {
- Minz_Request::bad(_t('category_no_name'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.no_name'), $url_redirect);
}
$cat = new FreshRSS_Category($cat_name);
if ($catDAO->searchByName($cat->name()) != null) {
- Minz_Request::bad(_t('category_name_exists'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.name_exists'), $url_redirect);
}
$values = array(
@@ -58,9 +58,9 @@ class FreshRSS_category_Controller extends Minz_ActionController {
);
if ($catDAO->addCategory($values)) {
- Minz_Request::good(_t('category_created', $cat->name()), $url_redirect);
+ Minz_Request::good(_t('feedback.sub.category.created', $cat->name()), $url_redirect);
} else {
- Minz_Request::bad(_t('error_occurred'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.error'), $url_redirect);
}
}
@@ -84,11 +84,11 @@ class FreshRSS_category_Controller extends Minz_ActionController {
$id = Minz_Request::param('id');
$name = Minz_Request::param('name', '');
if (strlen($name) <= 0) {
- Minz_Request::bad(_t('category_no_name'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.no_name'), $url_redirect);
}
if ($catDAO->searchById($id) == null) {
- Minz_Request::bad(_t('category_not_exist'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.not_exist'), $url_redirect);
}
$cat = new FreshRSS_Category($name);
@@ -97,9 +97,9 @@ class FreshRSS_category_Controller extends Minz_ActionController {
);
if ($catDAO->updateCategory($id, $values)) {
- Minz_Request::good(_t('category_updated'), $url_redirect);
+ Minz_Request::good(_t('feedback.sub.category.updated'), $url_redirect);
} else {
- Minz_Request::bad(_t('error_occurred'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.error'), $url_redirect);
}
}
@@ -125,26 +125,26 @@ class FreshRSS_category_Controller extends Minz_ActionController {
$id = Minz_Request::param('id');
if (!$id) {
- Minz_Request::bad(_t('category_no_id'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.no_id'), $url_redirect);
}
if ($id === $default_category->id()) {
- Minz_Request::bad(_t('category_not_delete_default'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.not_delete_default'), $url_redirect);
}
if ($feedDAO->changeCategory($id, $default_category->id()) === false) {
- Minz_Request::bad(_t('error_occurred'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.error'), $url_redirect);
}
if ($catDAO->deleteCategory($id) === false) {
- Minz_Request::bad(_t('error_occurred'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.error'), $url_redirect);
}
// Remove related queries.
FreshRSS_Context::$conf->remove_query_by_get('c_' . $id);
FreshRSS_Context::$conf->save();
- Minz_Request::good(_t('category_deleted'), $url_redirect);
+ Minz_Request::good(_t('feedback.sub.category.deleted'), $url_redirect);
}
Minz_Request::forward($url_redirect, true);
@@ -166,7 +166,7 @@ class FreshRSS_category_Controller extends Minz_ActionController {
$id = Minz_Request::param('id');
if (!$id) {
- Minz_Request::bad(_t('category_no_id'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.no_id'), $url_redirect);
}
// List feeds to remove then related user queries.
@@ -181,9 +181,9 @@ class FreshRSS_category_Controller extends Minz_ActionController {
}
FreshRSS_Context::$conf->save();
- Minz_Request::good(_t('category_emptied'), $url_redirect);
+ Minz_Request::good(_t('feedback.sub.category.emptied'), $url_redirect);
} else {
- Minz_Request::bad(_t('error_occurred'), $url_redirect);
+ Minz_Request::bad(_t('feedback.sub.category.error'), $url_redirect);
}
}
diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php
index 561544578..feb5483fb 100755
--- a/app/Controllers/configureController.php
+++ b/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'));
}
}
diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php
index b4beed619..c894ae9aa 100755
--- a/app/Controllers/entryController.php
+++ b/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'
));
diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php
index 6c080bea8..06fa186cf 100644
--- a/app/Controllers/errorController.php
+++ b/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;
}
}
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index c8727c727..121cb8921 100755
--- a/app/Controllers/feedController.php
+++ b/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);
}
}
}
diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php
index 4e2dbd157..f29051f34 100644
--- a/app/Controllers/importExportController.php
+++ b/app/Controllers/importExportController.php
@@ -26,7 +26,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
*/
public function indexAction() {
$this->view->feeds = $this->feedDAO->listFeeds();
- Minz_View::prependTitle(_t('import_export') . ' · ');
+ Minz_View::prependTitle(_t('sub.import_export.title') . ' · ');
}
/**
@@ -48,7 +48,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
if ($status_file !== 0) {
Minz_Log::error('File cannot be uploaded. Error code: ' . $status_file);
- Minz_Request::bad(_t('file_cannot_be_uploaded'),
+ Minz_Request::bad(_t('feedback.import_export.file_cannot_be_uploaded'),
array('c' => 'importExport', 'a' => 'index'));
}
@@ -70,7 +70,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
if (!is_resource($zip)) {
// zip_open cannot open file: something is wrong
Minz_Log::error('Zip archive cannot be imported. Error code: ' . $zip);
- Minz_Request::bad(_t('zip_error'),
+ Minz_Request::bad(_t('feedback.import_export.zip_error'),
array('c' => 'importExport', 'a' => 'index'));
}
@@ -92,7 +92,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
zip_close($zip);
} elseif ($type_file === 'zip') {
// Zip extension is not loaded
- Minz_Request::bad(_t('no_zip_extension'),
+ Minz_Request::bad(_t('feedback.import_export.no_zip_extension'),
array('c' => 'importExport', 'a' => 'index'));
} elseif ($type_file !== 'unknown') {
$list_files[$type_file][] = file_get_contents($file['tmp_name']);
@@ -115,8 +115,8 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
// And finally, we get import status and redirect to the home page
Minz_Session::_param('actualize_feeds', true);
- $content_notif = $error === true ? _t('feeds_imported_with_errors') :
- _t('feeds_imported');
+ $content_notif = $error === true ? _t('feedback.import_export.feeds_imported_with_errors') :
+ _t('feedback.import_export.feeds_imported');
Minz_Request::good($content_notif);
}
@@ -183,7 +183,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
if (isset($elt['xmlUrl'])) {
// If xmlUrl exists, it means it is a feed
if ($nb_feeds >= $limits['max_feeds']) {
- Minz_Log::warning(_t('sub.feeds.over_max',
+ Minz_Log::warning(_t('feedback.sub.feed.over_max',
$limits['max_feeds']));
$is_error = true;
continue;
@@ -197,7 +197,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
// No xmlUrl? It should be a category!
$limit_reached = ($nb_cats >= $limits['max_categories']);
if ($limit_reached) {
- Minz_Log::warning(_t('sub.categories.over_max',
+ Minz_Log::warning(_t('feedback.sub.category.over_max',
$limits['max_categories']));
}
@@ -337,7 +337,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
// Feed does not exist in DB,we should to try to add it.
if ($nb_feeds >= $limits['max_feeds']) {
// Oops, no more place!
- Minz_Log::warning(_t('sub.feeds.over_max', $limits['max_feeds']));
+ Minz_Log::warning(_t('feedback.sub.feed.over_max', $limits['max_feeds']));
} else {
$feed = $this->addFeedJson($item['origin'], $google_compliant);
}
@@ -482,7 +482,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
$this->exportZip($export_files);
} catch (Exception $e) {
# Oops, there is no Zip extension!
- Minz_Request::bad(_t('export_no_zip_extension'),
+ Minz_Request::bad(_t('feedback.import_export.export_no_zip_extension'),
array('c' => 'importExport', 'a' => 'index'));
}
} elseif ($nb_files === 1) {
@@ -523,14 +523,14 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
$this->view->categories = $this->catDAO->listCategories();
if ($type == 'starred') {
- $this->view->list_title = _t('starred_list');
+ $this->view->list_title = _t('sub.import_export.starred_list');
$this->view->type = 'starred';
$unread_fav = $this->entryDAO->countUnreadReadFavorites();
$this->view->entries = $this->entryDAO->listWhere(
's', '', FreshRSS_Entry::STATE_ALL, 'ASC', $unread_fav['all']
);
} elseif ($type == 'feed' && !is_null($feed)) {
- $this->view->list_title = _t('feed_list', $feed->name());
+ $this->view->list_title = _t('sub.import_export.feed_list', $feed->name());
$this->view->type = 'feed/' . $feed->id();
$this->view->entries = $this->entryDAO->listWhere(
'f', $feed->id(), FreshRSS_Entry::STATE_ALL, 'ASC',
diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php
index 1cf618f7f..33cd2843c 100755
--- a/app/Controllers/indexController.php
+++ b/app/Controllers/indexController.php
@@ -98,7 +98,7 @@ class FreshRSS_index_Controller extends Minz_ActionController {
$this->view->categories = FreshRSS_Context::$categories;
$this->view->rss_title = FreshRSS_Context::$name . ' | ' . Minz_View::title();
- $title = _t('gen.title.global_view');
+ $title = _t('index.feed.title_global');
if (FreshRSS_Context::$get_unread > 0) {
$title = '(' . FreshRSS_Context::$get_unread . ') ' . $title;
}
@@ -206,7 +206,7 @@ class FreshRSS_index_Controller extends Minz_ActionController {
* This action displays the about page of FreshRSS.
*/
public function aboutAction() {
- Minz_View::prependTitle(_t('about') . ' · ');
+ Minz_View::prependTitle(_t('index.about.title') . ' · ');
}
/**
@@ -217,7 +217,7 @@ class FreshRSS_index_Controller extends Minz_ActionController {
Minz_Error::error(403);
}
- Minz_View::prependTitle(_t('logs') . ' · ');
+ Minz_View::prependTitle(_t('index.log.title') . ' · ');
if (Minz_Request::isPost()) {
FreshRSS_LogDAO::truncate();
diff --git a/app/Controllers/statsController.php b/app/Controllers/statsController.php
index 578df9434..4a597ae7d 100644
--- a/app/Controllers/statsController.php
+++ b/app/Controllers/statsController.php
@@ -15,7 +15,7 @@ class FreshRSS_stats_Controller extends Minz_ActionController {
Minz_Error::error(403);
}
- Minz_View::prependTitle(_t('stats') . ' · ');
+ Minz_View::prependTitle(_t('admin.stats.title') . ' · ');
}
/**
diff --git a/app/Controllers/subscriptionController.php b/app/Controllers/subscriptionController.php
index 67b95eba6..6152b7252 100644
--- a/app/Controllers/subscriptionController.php
+++ b/app/Controllers/subscriptionController.php
@@ -29,7 +29,7 @@ class FreshRSS_subscription_Controller extends Minz_ActionController {
public function indexAction() {
Minz_View::appendScript(Minz_Url::display('/scripts/category.js?' .
@filemtime(PUBLIC_PATH . '/scripts/category.js')));
- Minz_View::prependTitle(_t('subscription_management') . ' · ');
+ Minz_View::prependTitle(_t('sub.title') . ' · ');
$id = Minz_Request::param('id');
if ($id !== false) {
@@ -74,7 +74,7 @@ class FreshRSS_subscription_Controller extends Minz_ActionController {
$this->view->feed = $this->view->feeds[$id];
- Minz_View::prependTitle(_t('rss_feed_management') . ' · ' . $this->view->feed->name() . ' · ');
+ Minz_View::prependTitle(_t('sub.title.feed_management') . ' · ' . $this->view->feed->name() . ' · ');
if (Minz_Request::isPost()) {
$user = Minz_Request::param('http_user', '');
@@ -106,9 +106,9 @@ class FreshRSS_subscription_Controller extends Minz_ActionController {
$this->view->feed->_category($cat);
$this->view->feed->faviconPrepare();
- Minz_Request::good(_t('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('error_occurred_update'), array('c' => 'subscription'));
+ Minz_Request::bad(_t('feedback.sub.error'), array('c' => 'subscription'));
}
}
}
diff --git a/app/Controllers/updateController.php b/app/Controllers/updateController.php
index 0896b13ac..1b44a739c 100644
--- a/app/Controllers/updateController.php
+++ b/app/Controllers/updateController.php
@@ -20,21 +20,21 @@ class FreshRSS_update_Controller extends Minz_ActionController {
}
public function indexAction() {
- Minz_View::prependTitle(_t('update_system') . ' · ');
+ Minz_View::prependTitle(_t('admin.update.title') . ' · ');
if (file_exists(UPDATE_FILENAME) && !is_writable(FRESHRSS_PATH)) {
$this->view->message = array(
'status' => 'bad',
- 'title' => _t('damn'),
- 'body' => _t('file_is_nok', FRESHRSS_PATH)
+ 'title' => _t('gen.short.damn'),
+ 'body' => _t('feedback.update.file_is_nok', FRESHRSS_PATH)
);
} elseif (file_exists(UPDATE_FILENAME)) {
// There is an update file to apply!
$this->view->update_to_apply = true;
$this->view->message = array(
'status' => 'good',
- 'title' => _t('ok'),
- 'body' => _t('update_can_apply')
+ 'title' => _t('gen.short.ok'),
+ 'body' => _t('feedback.update.can_apply')
);
}
}
@@ -67,8 +67,8 @@ class FreshRSS_update_Controller extends Minz_ActionController {
$this->view->message = array(
'status' => 'bad',
- 'title' => _t('damn'),
- 'body' => _t('update_server_not_found', FRESHRSS_UPDATE_WEBSITE)
+ 'title' => _t('gen.short.damn'),
+ 'body' => _t('feedback.update.server_not_found', FRESHRSS_UPDATE_WEBSITE)
);
return;
}
@@ -78,8 +78,8 @@ class FreshRSS_update_Controller extends Minz_ActionController {
if (strpos($status, 'UPDATE') !== 0) {
$this->view->message = array(
'status' => 'bad',
- 'title' => _t('damn'),
- 'body' => _t('no_update')
+ 'title' => _t('gen.short.damn'),
+ 'body' => _t('feedback.update.none')
);
@file_put_contents(DATA_PATH . '/last_update.txt', time());
@@ -93,8 +93,8 @@ class FreshRSS_update_Controller extends Minz_ActionController {
} else {
$this->view->message = array(
'status' => 'bad',
- 'title' => _t('damn'),
- 'body' => _t('update_problem', 'Cannot save the update script')
+ 'title' => _t('gen.short.damn'),
+ 'body' => _t('feedback.update.error', 'Cannot save the update script')
);
}
}
@@ -112,9 +112,9 @@ class FreshRSS_update_Controller extends Minz_ActionController {
if ($res === true) {
@unlink(UPDATE_FILENAME);
@file_put_contents(DATA_PATH . '/last_update.txt', time());
- Minz_Request::good(_t('update_finished'));
+ Minz_Request::good(_t('feedback.update.finished'));
} else {
- Minz_Request::bad(_t('update_problem', $res),
+ Minz_Request::bad(_t('feedback.update.error', $res),
array('c' => 'update', 'a' => 'index'));
}
}
@@ -133,7 +133,7 @@ class FreshRSS_update_Controller extends Minz_ActionController {
'params' => array('post_conf' => true)
), true);
} else {
- Minz_Request::bad(_t('update_problem', $res),
+ Minz_Request::bad(_t('feedback.update.error', $res),
array('c' => 'update', 'a' => 'index'));
}
}
@@ -143,7 +143,7 @@ class FreshRSS_update_Controller extends Minz_ActionController {
* This action displays information about installation.
*/
public function checkInstallAction() {
- Minz_View::prependTitle(_t('gen.title.check_install') . ' · ');
+ Minz_View::prependTitle(_t('admin.check_install.title') . ' · ');
$this->view->status_php = check_install_php();
$this->view->status_files = check_install_files();
diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php
index 5050571a9..3b40e42dc 100644
--- a/app/Controllers/userController.php
+++ b/app/Controllers/userController.php
@@ -23,7 +23,7 @@ class FreshRSS_user_Controller extends Minz_ActionController {
* This action displays the user profile page.
*/
public function profileAction() {
- Minz_View::prependTitle(_t('gen.title.user_profile') . ' · ');
+ Minz_View::prependTitle(_t('conf.profile.title') . ' · ');
if (Minz_Request::isPost()) {
$ok = true;
@@ -71,10 +71,10 @@ class FreshRSS_user_Controller extends Minz_ActionController {
}
if ($ok) {
- Minz_Request::good(_t('feedback.user_profile.updated'),
+ Minz_Request::good(_t('feedback.profile.updated'),
array('c' => 'user', 'a' => 'profile'));
} else {
- Minz_Request::bad(_t('error_occurred'),
+ Minz_Request::bad(_t('feedback.profile.error'),
array('c' => 'user', 'a' => 'profile'));
}
}
@@ -88,7 +88,7 @@ class FreshRSS_user_Controller extends Minz_ActionController {
Minz_Error::error(403);
}
- Minz_View::prependTitle(_t('gen.title.user_management') . ' · ');
+ Minz_View::prependTitle(_t('admin.user.title') . ' · ');
// Get the correct current user.
$username = Minz_Request::param('u', Minz_Session::param('currentUser'));
@@ -168,7 +168,7 @@ class FreshRSS_user_Controller extends Minz_ActionController {
$notif = array(
'type' => $ok ? 'good' : 'bad',
- 'content' => _t($ok ? 'user_created' : 'error_occurred', $new_user_name)
+ 'content' => _t('feedback.user.created' . (!$ok ? '.error' : ''), $new_user_name)
);
Minz_Session::_param('notification', $notif);
}
@@ -201,7 +201,7 @@ class FreshRSS_user_Controller extends Minz_ActionController {
$notif = array(
'type' => $ok ? 'good' : 'bad',
- 'content' => _t($ok ? 'user_deleted' : 'error_occurred', $username)
+ 'content' => _t('feedback.user.deleted' . (!$ok ? '.error' : ''), $username)
);
Minz_Session::_param('notification', $notif);
}
diff --git a/app/Models/CategoryDAO.php b/app/Models/CategoryDAO.php
index 2e333d2f1..27a558522 100644
--- a/app/Models/CategoryDAO.php
+++ b/app/Models/CategoryDAO.php
@@ -134,7 +134,7 @@ class FreshRSS_CategoryDAO extends Minz_ModelPdo {
$def_cat = $this->searchById(1);
if ($def_cat == null) {
- $cat = new FreshRSS_Category(_t('default_category'));
+ $cat = new FreshRSS_Category(_t('gen.short.default_category'));
$cat->_id(1);
$values = array(
diff --git a/app/Models/Context.php b/app/Models/Context.php
index 3dc5349ad..c8a65063a 100644
--- a/app/Models/Context.php
+++ b/app/Models/Context.php
@@ -138,12 +138,12 @@ class FreshRSS_Context {
switch($type) {
case 'a':
self::$current_get['all'] = true;
- self::$name = _t('your_rss_feeds');
+ self::$name = _t('index.feed.title');
self::$get_unread = self::$total_unread;
break;
case 's':
self::$current_get['starred'] = true;
- self::$name = _t('your_favorites');
+ self::$name = _t('index.feed.title_fav');
self::$get_unread = self::$total_starred['unread'];
// Update state if favorite is not yet enabled.
diff --git a/app/Models/StatsDAO.php b/app/Models/StatsDAO.php
index 255a2b1ff..80caccc49 100644
--- a/app/Models/StatsDAO.php
+++ b/app/Models/StatsDAO.php
@@ -418,7 +418,7 @@ SQL;
*/
private function convertToTranslatedJson($data = array()) {
$translated = array_map(function($a) {
- return _t($a);
+ return _t('gen.date.' . $a);
}, $data);
return json_encode($translated);
diff --git a/app/Models/UserDAO.php b/app/Models/UserDAO.php
index 60fca71b1..f04ae26bf 100644
--- a/app/Models/UserDAO.php
+++ b/app/Models/UserDAO.php
@@ -9,7 +9,7 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
$ok = false;
if (defined('SQL_CREATE_TABLES')) { //E.g. MySQL
- $sql = sprintf(SQL_CREATE_TABLES, $db['prefix'] . $username . '_', _t('default_category'));
+ $sql = sprintf(SQL_CREATE_TABLES, $db['prefix'] . $username . '_', _t('gen.short.default_category'));
$stm = $userPDO->bd->prepare($sql);
$ok = $stm && $stm->execute();
} else { //E.g. SQLite
@@ -17,7 +17,7 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
if (is_array($SQL_CREATE_TABLES)) {
$ok = true;
foreach ($SQL_CREATE_TABLES as $instruction) {
- $sql = sprintf($instruction, '', _t('default_category'));
+ $sql = sprintf($instruction, '', _t('gen.short.default_category'));
$stm = $userPDO->bd->prepare($sql);
$ok &= ($stm && $stm->execute());
}
diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php
index 74f01ae06..d93e52f04 100644
--- a/app/i18n/en/admin.php
+++ b/app/i18n/en/admin.php
@@ -1,6 +1,21 @@
array(
+ 'allow_anonymous' => 'Allow anonymous reading of the articles of the default user (%s)',
+ 'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles',
+ 'api_enabled' => 'Allow API access (required for mobile apps)',
+ 'form' => 'Web form (traditional, requires JavaScript)',
+ 'http' => 'HTTP (for advanced users with HTTPS)',
+ 'none' => 'None (dangerous)',
+ 'persona' => 'Mozilla Persona (modern, requires JavaScript)',
+ 'title' => 'Authentication',
+ 'title_reset' => 'Authentication reset',
+ 'token' => 'Authentication token',
+ 'token_help' => 'Allows to access RSS output of the default user without authentication.
%s?output=rss&token=%s',
+ 'type' => 'Authentication method',
+ 'unsafe_autologin' => 'Allow unsafe automatic login using the format: ',
+ ),
'check_install' => array(
'cache' => array(
'nok' => 'Check permissions on ./data/cache directory. HTTP server must have rights to write into',
@@ -77,6 +92,7 @@ return array(
'nok' => 'There is one or more lacking tables in the database.',
'ok' => 'Tables are existing in the database.',
),
+ 'title' => 'Installation checking',
'tokens' => array(
'nok' => 'Check permissions on ./data/tokens directory. HTTP server must have rights to write into',
'ok' => 'Permissions on tokens directory are good.',
@@ -86,7 +102,54 @@ return array(
'ok' => 'You have ZIP extension.',
),
),
- 'users' => array(
+ 'stats' => array(
+ '_' => 'Statistics',
+ 'all_feeds' => 'All feeds',
+ 'category' => 'Category',
+ 'entry_count' => 'Entry count',
+ 'entry_per_category' => 'Entries per category',
+ 'entry_per_day' => 'Entries per day (last 30 days)',
+ 'entry_per_day_of_week' => 'Per day of week (average: %.2f messages)',
+ 'entry_per_hour' => 'Per hour (average: %.2f messages)',
+ 'entry_per_month' => 'Per month (average: %.2f messages)',
+ 'entry_repartition' => 'Entries repartition',
+ 'feed' => 'Feed',
+ 'feed_per_category' => 'Feeds per category',
+ 'idle' => 'Idle feeds',
+ 'main' => 'Main statistics',
+ 'main_stream' => 'Main stream',
+ 'menu' => array(
+ 'idle' => 'Idle feeds',
+ 'main' => 'Main statistics',
+ 'repartition' => 'Articles repartition',
+ ),
+ 'no_idle' => 'There is no idle feed!',
+ 'number_entries' => '%d articles',
+ 'percent_of_total' => '%% of total',
+ 'repartition' => 'Articles repartition',
+ 'status_favorites' => 'Favourites',
+ 'status_read' => 'Read',
+ 'status_total' => 'Total',
+ 'status_unread' => 'Unread',
+ 'title' => 'Statistics',
+ 'top_feed' => 'Top ten feeds',
+ ),
+ 'update' => array(
+ '_' => 'Update system',
+ 'apply' => 'Apply',
+ 'check' => 'Check for new updates',
+ 'last' => 'Last verification: %s',
+ 'title' => 'Update system',
+ ),
+ 'user' => array(
'articles_and_size' => '%s articles (%s)',
+ 'create' => 'Create new user',
+ 'email_persona' => 'Login mail address
(for Mozilla Persona)',
+ 'language' => 'Language',
+ 'password_form' => 'Password
(for the Web-form login method)',
+ 'title' => 'Manage users',
+ 'user_list' => 'List of users',
+ 'username' => 'Username',
+ 'users' => 'Users',
),
);
diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php
index 460804774..13efb650b 100644
--- a/app/i18n/en/conf.php
+++ b/app/i18n/en/conf.php
@@ -1,7 +1,168 @@
array(
+ 'archiving' => array(
+ '_' => 'Archiving',
+ 'advanced' => 'Advanced',
+ 'delete_after' => 'Remove articles after',
+ 'help' => 'More options are available in the individual stream settings',
+ 'keep_history_by_feed' => 'Minimum number of articles to keep by feed',
+ 'optimize' => 'Optimize database',
+ 'optimize_help' => 'To do occasionally to reduce the size of the database',
+ 'purge_now' => 'Purge now',
+ 'title' => 'Archiving',
+ 'ttl' => 'Do not automatically refresh more often than',
+ ),
+ 'display' => array(
+ '_' => 'Display',
+ 'icon' => array(
+ 'bottom_line' => 'Bottom line',
+ 'entry' => 'Article icons',
+ 'publication_date' => 'Date of publication',
+ 'related_tags' => 'Related tags',
+ 'sharing' => 'Sharing',
+ 'top_line' => 'Top line',
+ ),
+ 'language' => 'Language',
+ 'notif_html5' => array(
+ 'seconds' => 'seconds (0 means no timeout)',
+ 'timeout' => 'HTML5 notification timeout',
+ ),
+ 'theme' => 'Theme',
+ 'title' => 'Display',
+ 'width' => array(
+ 'content' => 'Content width',
+ 'large' => 'Large',
+ 'medium' => 'Medium',
+ 'no_limit' => 'No limit',
+ 'thin' => 'Thin',
+ ),
+ ),
+ 'query' => array(
+ '_' => 'User queries',
+ 'deprecated' => 'This query is no longer valid. The referenced category or feed has been deleted.',
+ 'filter' => 'Filter applied:',
+ 'get_all' => 'Display all articles',
+ 'get_category' => 'Display "%s" category',
+ 'get_favorite' => 'Display favorite articles',
+ 'get_feed' => 'Display "%s" feed',
+ 'no_filter' => 'No filter',
+ 'none' => 'You haven’t created any user query yet.',
+ 'number' => 'Query n°%d',
+ 'order_asc' => 'Display oldest articles first',
+ 'order_desc' => 'Display newest articles first',
+ 'search' => 'Search for "%s"',
+ 'state_0' => 'Display all articles',
+ 'state_1' => 'Display read articles',
+ 'state_2' => 'Display unread articles',
+ 'state_3' => 'Display all articles',
+ 'state_4' => 'Display favorite articles',
+ 'state_5' => 'Display read favorite articles',
+ 'state_6' => 'Display unread favorite articles',
+ 'state_7' => 'Display favorite articles',
+ 'state_8' => 'Display not favorite articles',
+ 'state_9' => 'Display read not favorite articles',
+ 'state_10' => 'Display unread not favorite articles',
+ 'state_11' => 'Display not favorite articles',
+ 'state_12' => 'Display all articles',
+ 'state_13' => 'Display read articles',
+ 'state_14' => 'Display unread articles',
+ 'state_15' => 'Display all articles',
+ 'title' => 'User queries',
+ ),
+ 'profile' => array(
+ '_' => 'Profile management',
+ 'email_persona' => 'Login mail address
(for Mozilla Persona)',
+ 'password_api' => 'Password API
(e.g., for mobile apps)',
+ 'password_form' => 'Password
(for the Web-form login method)',
+ 'title' => 'Profile',
+ ),
+ 'reading' => array(
+ '_' => 'Reading',
+ 'after_onread' => 'After “mark all as read”,',
+ 'articles_per_page' => 'Number of articles per page',
+ 'auto_load_more' => 'Load next articles at the page bottom',
+ 'auto_remove_article' => 'Hide articles after reading',
+ 'confirm_enabled' => 'Display a confirmation dialog on “mark all as read” actions',
+ 'display_articles_unfolded' => 'Show articles unfolded by default',
+ 'display_categories_unfolded' => 'Show categories folded by default',
+ 'hide_read_feeds' => 'Hide categories & feeds with no unread article (does not work with “Show all articles” configuration)',
+ 'img_with_lazyload' => 'Use "lazy load" mode to load pictures',
+ 'jump_next' => 'jump to next unread sibling (feed or category)',
+ 'number_divided_when_reader' => 'Divided by 2 in the reading view.',
+ 'read' => array(
+ 'article_open_on_website' => 'when article is opened on its original website',
+ 'article_viewed' => 'when article is viewed',
+ 'scroll' => 'while scrolling',
+ 'upon_reception' => 'upon reception of the article',
+ 'when' => 'Mark article as read…',
+ ),
+ 'show' => array(
+ '_' => 'Articles to display',
+ 'adaptive' => 'Adjust showing',
+ 'all_articles' => 'Show all articles',
+ 'unread' => 'Show only unread',
+ ),
+ 'sort' => array(
+ '_' => 'Sort order',
+ 'newer_first' => 'Newer first',
+ 'older_first' => 'Oldest first',
+ ),
+ 'sticky_post' => 'Stick the article to the top when opened',
+ 'title' => 'Reading',
+ 'view' => array(
+ 'default' => 'Default view',
+ 'global' => 'Global view',
+ 'normal' => 'Normal view',
+ 'reader' => 'Reading view',
+ ),
+ ),
+ 'sharing' => array(
+ '_' => 'Sharing',
+ 'blogotext' => 'Blogotext',
+ 'diaspora' => 'Diaspora*',
+ 'email' => 'Email',
+ 'facebook' => 'Facebook',
+ 'g+' => 'Google+',
+ 'more_information' => 'More information',
+ 'print' => 'Print',
+ 'shaarli' => 'Shaarli',
+ 'share_name' => 'Share name to display',
+ 'share_url' => 'Share URL to use',
+ 'title' => 'Sharing',
+ 'twitter' => 'Twitter',
+ 'wallabag' => 'wallabag',
+ ),
+ 'shortcut' => array(
+ '_' => 'Shortcuts',
+ 'article_action' => 'Article actions',
+ 'auto_share' => 'Share',
+ 'auto_share_help' => 'If there is only one sharing mode, it is used. Else modes are accessible by their number.',
+ 'close_dropdown' => 'Close menus',
+ 'collapse_article' => 'Collapse',
+ 'first_article' => 'Skip to the first article',
+ 'focus_search' => 'Access search box',
+ 'help' => 'Display documentation',
+ 'javascript' => 'JavaScript must be enabled in order to use shortcuts',
+ 'last_article' => 'Skip to the last article',
+ 'load_more' => 'Load more articles',
+ 'mark_read' => 'Mark as read',
+ 'mark_favorite' => 'Mark as favourite',
+ 'navigation' => 'Navigation',
+ 'navigation_help' => 'With the "Shift" modifier, navigation shortcuts apply on feeds.
With the "Alt" modifier, navigation shortcuts apply on categories.',
+ 'next_article' => 'Skip to the next article',
+ 'other_action' => 'Other actions',
+ 'previous_article' => 'Skip to the previous article',
+ 'see_on_website' => 'See on original website',
+ 'shift_for_all_read' => '+ shift to mark all articles as read',
+ 'title' => 'Shortcuts',
+ 'user_filter' => 'Access user filters',
+ 'user_filter_help' => 'If there is only one user filter, it is used. Else filters are accessible by their number.',
+ ),
+ 'user' => array(
'articles_and_size' => '%s articles (%s)',
+ 'current' => 'Current user',
+ 'is_admin' => 'is administrator',
+ 'users' => 'Users',
),
);
diff --git a/app/i18n/en/feedback.php b/app/i18n/en/feedback.php
index b3866f1dc..8df83ac0a 100644
--- a/app/i18n/en/feedback.php
+++ b/app/i18n/en/feedback.php
@@ -1,14 +1,96 @@
array(
- 'error' => 'Login is invalid',
- 'success' => 'You are connected',
+ 'admin' => array(
+ 'optimization_complete' => 'Optimization complete',
),
- 'logout' => array(
- 'success' => 'You are disconnected',
+ 'access' => array(
+ 'denied' => 'You don’t have permission to access this page',
+ 'not_found' => 'You are looking for a page which doesn’t exist',
),
- 'user_profile' => array(
+ 'auth' => array(
+ 'form' => array(
+ 'not_set' => 'A problem occured during authentication system configuration. Please retry later.',
+ 'set' => 'Form is now your default authentication system.',
+ ),
+ 'login' => array(
+ 'invalid' => 'Login is invalid',
+ 'success' => 'You are connected',
+ ),
+ 'logout' => array(
+ 'success' => 'You are disconnected',
+ ),
+ 'no_password_set' => 'Administrator password hasn’t been set. This feature isn’t available.',
+ 'not_persona' => 'Only Persona system can be reset.',
+ ),
+ '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.',
+ 'feeds_imported' => 'Your feeds have been imported and will now be updated',
+ 'feeds_imported_with_errors' => 'Your feeds have been imported but some errors occurred',
+ 'file_cannot_be_uploaded' => 'File cannot be uploaded!',
+ 'no_zip_extension' => 'Zip extension is not present on your server.',
+ 'zip_error' => 'An error occured during Zip import.',
+ ),
+ 'sub' => array(
+ 'actualize' => 'Actualize',
+ 'category' => array(
+ 'created' => 'Category %s has been created.',
+ 'deleted' => 'Category has been deleted.',
+ 'emptied' => 'Category has been emptied',
+ 'error' => 'Category cannot be updated',
+ 'name_exists' => 'Category name already exists.',
+ 'no_id' => 'You must precise the id of the category.',
+ 'no_name' => 'Category name cannot be empty.',
+ 'not_delete_default' => 'You cannot delete the default category!',
+ 'not_exist' => 'The category does not exist!',
+ 'over_max' => 'You have reached your limit of categories (%d)',
+ 'updated' => 'Category has been updated.',
+ ),
+ 'feed' => array(
+ 'actualized' => '%s has been updated',
+ 'actualizeds' => 'RSS feeds have been updated',
+ 'added' => 'RSS feed %s has been added',
+ 'already_subscribed' => 'You have already subscribed to %s',
+ 'deleted' => 'Feed has been deleted',
+ 'error' => 'Feed cannot be updated',
+ 'internal_problem_feed' => 'The RSS feed could not be added. Check FressRSS logs for details.',
+ 'invalid_url' => 'URL %s 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' => '%s 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)',
+ ),
+ 'update' => array(
+ 'can_apply' => 'An update is available.',
+ 'error' => 'The update process has encountered an error: %s',
+ 'file_is_nok' => 'Check permissions on %s directory. HTTP server must have rights to write into',
+ 'finished' => 'Update completed!',
+ 'none' => 'No update to apply',
+ 'server_not_found' => 'Update server cannot be found. [%s]',
+ ),
+ 'user' => array(
+ 'created' => array(
+ '_' => 'User %s has been created',
+ 'error' => 'User %s cannot be created',
+ ),
+ 'deleted' => array(
+ '_' => 'User %s has been deleted',
+ 'error' => 'User %s cannot be deleted',
+ ),
+ ),
+ 'profile' => array(
+ 'error' => 'Your profile cannot be modified',
'updated' => 'Your profile has been modified',
),
);
diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php
index a7f51e8f9..43f94f1bc 100644
--- a/app/i18n/en/gen.php
+++ b/app/i18n/en/gen.php
@@ -1,488 +1,143 @@
'\\A\\p\\r\\i\\l',
- 'Aug' => '\\A\\u\\g\\u\\s\\t',
- 'Dec' => '\\D\\e\\c\\e\\m\\b\\e\\r',
- 'Feb' => '\\F\\e\\b\\r\\u\\a\\r\\y',
- 'Jan' => '\\J\\a\\n\\u\\a\\r\\y',
- 'Jul' => '\\J\\u\\l\\y',
- 'Jun' => '\\J\\u\\n\\e',
- 'Mar' => '\\M\\a\\r\\c\\h',
- 'May' => '\\M\\a\\y',
- 'Nov' => '\\N\\o\\v\\e\\m\\b\\e\\r',
- 'Oct' => '\\O\\c\\t\\o\\b\\e\\r',
- 'Sep' => '\\S\\e\\p\\t\\e\\m\\b\\e\\r',
- 'about' => 'About',
- 'about_freshrss' => 'About FreshRSS',
- 'access_denied' => 'You don’t have permission to access this page',
- 'access_protected_feeds' => 'Connection allows to access HTTP protected RSS feeds',
- 'activate_sharing' => 'Activate sharing',
- 'actualize' => 'Actualize',
- 'add_category' => 'Add a category',
- 'add_query' => 'Add a query',
- 'add_rss_feed' => 'Add a RSS feed',
- 'administration' => 'Manage',
- 'advanced' => 'Advanced',
- 'after_onread' => 'After “mark all as read”,',
- 'agpl3' => 'AGPL 3',
- 'all_feeds' => 'All feeds',
- '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 %s',
- 'api_enabled' => 'Allow API access (required for mobile apps)',
- 'apr' => 'apr',
- 'april' => 'Apr',
- 'archiving_configuration' => 'Archiving',
- 'archiving_configuration_help' => 'More options are available in the individual stream settings',
- 'article' => 'Article',
- 'article_icons' => 'Article icons',
- 'article_open_on_website' => 'when article is opened on its original website',
- 'article_published_on' => 'This article originally appeared on %s',
- 'article_published_on_author' => 'This article originally appeared on %s by %s',
- 'article_viewed' => 'when article is viewed',
- 'articles' => 'articles',
- 'articles_per_page' => 'Number of articles per page',
- 'articles_to_display' => 'Articles to display',
- 'ask_empty' => 'Clear?',
- 'attention' => 'Attention!',
- 'aug' => 'aug',
- 'august' => 'Aug',
- 'auth_form' => 'Web form (traditional, requires JavaScript)',
- 'auth_form_not_set' => 'A problem occured during authentication system configuration. Please retry later.',
- 'auth_form_set' => 'Form is now your default authentication system.',
- 'auth_no_password_set' => 'Administrator password hasn’t been set. This feature isn’t available.',
- 'auth_none' => 'None (dangerous)',
- 'auth_not_persona' => 'Only Persona system can be reset.',
- '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.',
- 'author' => 'Author',
- 'auto_load_more' => 'Load next articles at the page bottom',
- 'auto_read_when' => 'Mark article as read…',
- 'auto_remove_article' => 'Hide articles after reading',
- 'auto_share' => 'Share',
- 'auto_share_help' => 'If there is only one sharing mode, it is used. Else modes are accessible by their number.',
- 'back_to_rss_feeds' => '← Go back to your RSS feeds',
- 'bad_opml_file' => 'Your OPML file is invalid',
- 'base_url' => 'Base URL',
- 'bdd' => 'Database',
- 'bdd_conf_is_ko' => 'Verify your database information.',
- 'bdd_conf_is_ok' => 'Database configuration has been saved.',
- 'bdd_configuration' => 'Database configuration',
- 'bdd_type' => 'Type of database',
- 'before_one_day' => 'Before one day',
- 'before_one_week' => 'Before one week',
- 'before_yesterday' => 'Before yesterday',
- 'blank_to_disable' => 'Leave blank to disable',
- 'blogotext' => 'Blogotext',
- 'bookmark' => 'Subscribe (FreshRSS bookmark)',
- 'bottom_line' => 'Bottom line',
- 'bugs_reports' => 'Bugs reports',
- 'by' => 'by',
- 'by_author' => 'By %s',
- 'by_default' => 'By default',
- 'by_email' => 'By email',
- 'by_feed' => 'by feed',
- 'cache_is_ok' => 'Permissions on cache directory are good',
- 'can_not_be_deleted' => 'Cannot be deleted',
- 'cancel' => 'Cancel',
- 'categories' => 'Categories',
- 'categories_management' => 'Categories management',
- 'categories_updated' => 'Categories have been updated',
- 'categorize' => 'Store in a category',
- 'category' => 'Category',
- 'category_created' => 'Category %s has been created.',
- 'category_deleted' => 'Category has been deleted.',
- 'category_emptied' => 'Category has been emptied',
- 'category_empty' => 'Empty category',
- 'category_name_exists' => 'Category name already exists.',
- 'category_no_id' => 'You must precise the id of the category.',
- 'category_no_name' => 'Category name cannot be empty.',
- 'category_not_delete_default' => 'You cannot delete the default category!',
- 'category_not_exist' => 'The category does not exist!',
- 'category_number' => 'Category n°%d',
- 'category_updated' => 'Category has been updated.',
- 'change_value' => 'You should change this value by any other',
- 'checks' => 'Checks',
- 'choose_language' => 'Choose a language for FreshRSS',
- 'clear_logs' => 'Clear the logs',
- 'collapse_article' => 'Collapse',
- 'configuration' => 'Configuration',
- 'configuration_updated' => 'Configuration has been updated',
- 'confirm_action' => 'Are you sure you want to perform this action? It cannot be cancelled!',
- 'confirm_action_feed_cat' => 'Are you sure you want to perform this action? You will lose related favorites and user queries. It cannot be cancelled!',
- 'congratulations' => 'Congratulations!',
- 'content_width' => 'Content width',
- 'create' => 'Create',
- 'create_user' => 'Create new user',
- 'credits' => 'Credits',
- 'credits_content' => 'Some design elements come from Bootstrap although FreshRSS doesn’t use this framework. Icons come from GNOME project. Open Sans font police has been created by Steve Matteson. Favicons are collected with getFavicon API. FreshRSS is based on Minz, a PHP framework.',
- 'css_path_on_website' => 'Articles CSS path on original website',
- 'ctype_is_nok' => 'You lack a required library for character type checking (php-ctype)',
- 'ctype_is_ok' => 'You have the required library for character type checking (ctype)',
- 'curl_is_nok' => 'You lack cURL (php5-curl package)',
- 'curl_is_ok' => 'You have version %s of cURL',
- 'current_user' => 'Current user',
- 'damn' => 'Damn!',
- 'data_is_ok' => 'Permissions on data directory are good',
- 'dec' => 'dec',
- 'december' => 'Dec',
- 'default_category' => 'Uncategorized',
- 'default_user' => 'Username of the default user (maximum 16 alphanumeric characters)',
- 'default_view' => 'Default view',
- 'delete' => 'Delete',
- 'delete_articles_every' => 'Remove articles after',
- 'diaspora' => 'Diaspora*',
- 'display' => 'Display',
- 'display_articles_unfolded' => 'Show articles unfolded by default',
- 'display_categories_unfolded' => 'Show categories folded by default',
- 'display_configuration' => 'Display',
- 'do_not_change_if_doubt' => 'Don’t change if you doubt about it',
- 'dom_is_nok' => 'You lack a required library to browse the DOM (php-xml package)',
- 'dom_is_ok' => 'You have the required library to browse the DOM',
- 'email' => 'Email',
- 'error_occurred' => 'An error occurred',
- 'error_occurred_update' => 'Nothing was changed',
- 'explain_token' => 'Allows to access RSS output of the default user without authentication.
%s?output=rss&token=%s',
- 'export' => 'Export',
- 'export_no_zip_extension' => 'Zip extension is not present on your server. Please try to export files one by one.',
- 'export_opml' => 'Export list of feeds (OPML)',
- 'export_starred' => 'Export your favourites',
- 'facebook' => 'Facebook',
- 'favicons_is_ok' => 'Permissions on favicons directory are good',
- 'favorite_feeds' => 'Favourites (%s)',
- 'feb' => 'feb',
- 'february' => 'Feb',
- 'feed' => 'Feed',
- 'feed_actualized' => '%s has been updated',
- 'feed_added' => 'RSS feed %s has been added',
- 'feed_deleted' => 'Feed has been deleted',
- 'feed_description' => 'Description',
- 'feed_empty' => 'This feed is empty. Please verify that it is still maintained.',
- 'feed_in_error' => 'This feed has encountered a problem. Please verify that it is always reachable then actualize it.',
- 'feed_list' => 'List of %s articles',
- 'feed_not_added' => '%s could not be added',
- 'feed_updated' => 'Feed has been updated',
- 'feed_url' => 'Feed URL',
- 'feed_validator' => 'Check the validity of the feed',
- 'feeds' => 'Feeds',
- 'feeds_actualized' => 'RSS feeds have been updated',
- 'feeds_imported' => 'Your feeds have been imported and will now be updated',
- 'feeds_imported_with_errors' => 'Your feeds have been imported but some errors occurred',
- 'feeds_marked_read' => 'Feeds have been marked as read',
- 'feeds_moved_category_deleted' => 'When you delete a category, their feeds are automatically classified under %s.',
- 'file_cannot_be_uploaded' => 'File cannot be uploaded!',
- 'file_is_nok' => 'Check permissions on %s directory. HTTP server must have rights to write into',
- 'file_to_import' => 'File to import
(OPML, Json or Zip)',
- 'file_to_import_no_zip' => 'File to import
(OPML or Json)',
- 'filter' => 'Filter',
- 'finish_installation' => 'Complete installation',
- 'first' => 'First',
- 'first_article' => 'Skip to the first article',
- 'fix_errors_before' => 'Fix errors before skip to the next step.',
- 'focus_search' => 'Access search box',
- 'format_date' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y',
- 'format_date_hour' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y \\a\\t H\\:i',
- 'freshrss' => 'FreshRSS',
- 'freshrss_description' => 'FreshRSS is a RSS feeds aggregator to self-host like Kriss Feed or Leed. It is light and easy to take in hand while being powerful and configurable tool.',
- 'freshrss_installation' => 'Installation · FreshRSS',
- 'fri' => 'Fri',
- 'g+' => 'Google+',
+ 'action' => array(
+ 'actualize' => 'Actualize',
+ 'back_to_rss_feeds' => '← Go back to your RSS feeds',
+ 'cancel' => 'Cancel',
+ 'create' => 'Create',
+ 'disable' => 'Disable',
+ 'empty' => 'Empty',
+ 'enable' => 'Enable',
+ 'export' => 'Export',
+ 'filter' => 'Filtrer',
+ 'import' => 'Import',
+ 'manage' => 'Manage',
+ 'mark_read' => 'Mark as read',
+ 'mark_favorite' => 'Mark as favourite',
+ 'remove' => 'Remove',
+ 'see_website' => 'See website',
+ 'submit' => 'Submit',
+ 'truncate' => 'Delete all articles',
+ ),
+ 'auth' => array(
+ 'keep_logged_in' => 'Keep me logged in (1 month)',
+ 'login' => 'Login',
+ 'login_persona' => 'Login with Persona',
+ 'login_persona_problem' => 'Connection problem with Persona?',
+ 'logout' => 'Logout',
+ 'password' => 'Password',
+ 'reset' => 'Authentication reset',
+ 'username' => 'Username',
+ 'username_admin' => 'Administrator username',
+ 'will_reset' => 'Authentication system will be reset: a form will be used instead of Persona.',
+ ),
+ 'date' => array(
+ 'Apr' => '\\A\\p\\r\\i\\l',
+ 'Aug' => '\\A\\u\\g\\u\\s\\t',
+ 'Dec' => '\\D\\e\\c\\e\\m\\b\\e\\r',
+ 'Feb' => '\\F\\e\\b\\r\\u\\a\\r\\y',
+ 'Jan' => '\\J\\a\\n\\u\\a\\r\\y',
+ 'Jul' => '\\J\\u\\l\\y',
+ 'Jun' => '\\J\\u\\n\\e',
+ 'Mar' => '\\M\\a\\r\\c\\h',
+ 'May' => '\\M\\a\\y',
+ 'Nov' => '\\N\\o\\v\\e\\m\\b\\e\\r',
+ 'Oct' => '\\O\\c\\t\\o\\b\\e\\r',
+ 'Sep' => '\\S\\e\\p\\t\\e\\m\\b\\e\\r',
+ 'apr' => 'apr',
+ 'april' => 'Apr',
+ 'aug' => 'aug',
+ 'august' => 'Aug',
+ 'before_yesterday' => 'Before yesterday',
+ 'dec' => 'dec',
+ 'december' => 'Dec',
+ 'feb' => 'feb',
+ 'february' => 'Feb',
+ 'format_date' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y',
+ 'format_date_hour' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y \\a\\t H\\:i',
+ 'fri' => 'Fri',
+ 'jan' => 'jan',
+ 'january' => 'Jan',
+ 'jul' => 'jul',
+ 'july' => 'Jul',
+ 'jun' => 'jun',
+ 'june' => 'Jun',
+ 'last_3_month' => 'Last three months',
+ 'last_6_month' => 'Last six months',
+ 'last_month' => 'Last month',
+ 'last_week' => 'Last week',
+ 'last_year' => 'Last year',
+ 'mar' => 'mar',
+ 'march' => 'Mar',
+ 'may' => 'May',
+ 'mon' => 'Mon',
+ 'month' => 'months',
+ 'nov' => 'nov',
+ 'november' => 'Nov',
+ 'oct' => 'oct',
+ 'october' => 'Oct',
+ 'sat' => 'Sat',
+ 'sep' => 'sep',
+ 'september' => 'Sep',
+ 'sun' => 'Sun',
+ 'thu' => 'Thu',
+ 'today' => 'Today',
+ 'tue' => 'Tue',
+ 'wed' => 'Wed',
+ 'yesterday' => 'Yesterday',
+ ),
+ 'freshrss' => array(
+ '_' => 'FreshRSS',
+ 'about' => 'About FreshRSS',
+ ),
+ 'js' => array(
+ 'category_empty' => 'Empty category',
+ 'confirm_action' => 'Are you sure you want to perform this action? It cannot be cancelled!',
+ 'confirm_action_feed_cat' => 'Are you sure you want to perform this action? You will lose related favorites and user queries. It cannot be cancelled!',
+ 'new_article' => 'There are new available articles, click to refresh the page.',
+ 'notif_body_new_articles' => 'There are \\d new articles to read on FreshRSS.',
+ 'notif_title_new_articles' => 'FreshRSS: new articles!',
+ 'should_be_activated' => 'JavaScript must be enabled',
+ ),
'menu' => array(
+ 'about' => 'About',
'admin' => 'Administration',
+ 'archiving' => 'Archiving',
'authentication' => 'Authentication',
'check_install' => 'Installation checking',
+ 'configuration' => 'Configuration',
+ 'display' => 'Display',
+ 'logs' => 'Logs',
+ 'queries' => 'User queries',
+ 'reading' => 'Reading',
+ 'search' => 'Search words or #tags',
+ 'sharing' => 'Sharing',
+ 'shortcuts' => 'Shortcuts',
+ 'stats' => 'Statistics',
+ 'update' => 'Update',
'user_management' => 'Manage users',
'user_profile' => 'Profile',
),
- 'title' => array(
- '_' => 'Title',
- 'authentication' => 'Authentication',
- 'check_install' => 'Installation checking',
- 'global_view' => 'Global view',
- 'user_management' => 'Manage users',
- 'user_profile' => 'Profile',
+ 'pagination' => array(
+ 'first' => 'First',
+ 'last' => 'Last',
+ 'load_more' => 'Load more articles',
+ 'mark_all_read' => 'Mark all as read',
+ 'next' => 'Next',
+ 'nothing_to_load' => 'There are no more articles',
+ 'previous' => 'Previous',
+ ),
+ 'short' => array(
+ 'attention' => 'Attention!',
+ 'blank_to_disable' => 'Leave blank to disable',
+ 'by_author' => 'By %s',
+ 'by_default' => 'By default',
+ 'damn' => 'Damn!',
+ 'default_category' => 'Uncategorized',
+ 'no' => 'No',
+ 'ok' => 'Ok!',
+ 'or' => 'or',
+ 'yes' => 'Yes',
),
- 'general_conf_is_ok' => 'General configuration has been saved.',
- 'general_configuration' => 'General configuration',
- 'github_or_email' => 'on Github or by mail',
- 'global_view' => 'Global view',
- 'help' => 'Display documentation',
- 'hide_read_feeds' => 'Hide categories & feeds with no unread article (does not work with “Show all articles” configuration)',
- 'host' => 'Host',
- 'html5_notif_timeout' => 'HTML5 notification timeout',
- 'http_auth' => 'HTTP (for advanced users with HTTPS)',
- 'http_authentication' => 'HTTP Authentication',
- 'http_password' => 'HTTP password',
- 'http_referer_is_nok' => 'Please check that you are not altering your HTTP REFERER.',
- 'http_referer_is_ok' => 'Your HTTP REFERER is known and corresponds to your server.',
- 'http_username' => 'HTTP username',
- 'img_with_lazyload' => 'Use "lazy load" mode to load pictures',
- 'import' => 'Import',
- 'import_export' => 'Import / export',
- 'informations' => 'Information',
- 'install_not_deleted' => 'Something went wrong; you must delete the file %s manually.',
- 'installation_is_ok' => 'The installation process was successful.
The final step will now attempt to delete any file and database backup created during the update process.
You may choose to skip this step by deleting ./data/do-install.txt manually.',
- 'installation_step' => 'Installation — step %d · FreshRSS',
- 'internal_problem_feed' => 'The RSS feed could not be added. Check FressRSS logs for details.',
- 'invalid_login' => 'Login is invalid',
- 'invalid_url' => 'URL %s is invalid',
- 'is_admin' => 'is administrator',
- 'jan' => 'jan',
- 'january' => 'Jan',
- 'javascript_for_shortcuts' => 'JavaScript must be enabled in order to use shortcuts',
- 'javascript_is_better' => 'FreshRSS is more pleasant with JavaScript enabled',
- 'javascript_should_be_activated' => 'JavaScript must be enabled',
- 'jul' => 'jul',
- 'july' => 'Jul',
- 'jump_next' => 'jump to next unread sibling (feed or category)',
- 'jun' => 'jun',
- 'june' => 'Jun',
- 'keep_history' => 'Minimum number of articles to keep',
- 'keep_logged_in' => 'Keep me logged in (1 month)',
- 'language' => 'Language',
- 'language_defined' => 'Language has been defined.',
- 'last' => 'Last',
- 'last_3_month' => 'Last three months',
- 'last_6_month' => 'Last six months',
- 'last_article' => 'Skip to the last article',
- 'last_month' => 'Last month',
- 'last_week' => 'Last week',
- 'last_year' => 'Last year',
- 'lead_developer' => 'Lead developer',
- 'license' => 'License',
- 'load_more' => 'Load more articles',
- 'log_is_ok' => 'Permissions on logs directory are good',
- 'login' => 'Login',
- 'login_configuration' => 'Login',
- 'login_persona_problem' => 'Connection problem with Persona?',
- 'login_required' => 'Login required:',
- 'login_with_persona' => 'Login with Persona',
- 'logout' => 'Logout',
- 'logs' => 'Logs',
- 'logs_empty' => 'Log file is empty',
- 'main_stream' => 'Main stream',
- 'mar' => 'mar',
- 'march' => 'Mar',
- 'mark_all_read' => 'Mark all as read',
- 'mark_cat_read' => 'Mark category as read',
- 'mark_favorite' => 'Mark as favourite',
- 'mark_feed_read' => 'Mark feed as read',
- 'mark_read' => 'Mark as read',
- 'may' => 'May',
- 'minz_is_nok' => 'You lack the Minz framework. You should execute build.sh script or download it on Github and install in %s directory the content of its /lib directory.',
- 'minz_is_ok' => 'You have the Minz framework',
- 'mon' => 'Mon',
- 'month' => 'months',
- 'more_information' => 'More information',
- 'n_entries_deleted' => '%d articles have been deleted',
- 'n_feeds_actualized' => '%d feeds have been updated',
- 'new_article' => 'There are new available articles, click to refresh the page.',
- 'new_category' => 'New category',
- 'newer_first' => 'Newer first',
- 'next' => 'Next',
- 'next_article' => 'Skip to the next article',
- 'next_page' => 'Skip to the next page',
- 'next_step' => 'Go to the next step',
- 'no' => 'No',
- 'no_feed_actualized' => 'No RSS feed has been updated',
- 'no_feed_to_display' => 'There is no article to show.',
- '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',
- 'no_selected_feed' => 'No feed selected.',
- 'no_update' => 'No update to apply',
- 'no_zip_extension' => 'Zip extension is not present on your server.',
- 'normal_view' => 'Normal view',
- 'not_read' => '%d unread',
- 'not_reads' => '%d unread',
- 'not_yet_implemented' => 'Not yet implemented',
- 'nothing_to_load' => 'There are no more articles',
- 'notif_body_new_articles' => 'There are \\d new articles to read on FreshRSS.',
- 'notif_title_new_articles' => 'FreshRSS: new articles!',
- 'nov' => 'nov',
- 'november' => 'Nov',
- 'number_articles' => '%d articles',
- 'number_divided_when_reader' => 'Divided by 2 in the reading view.',
- 'number_feeds' => '%d feeds',
- 'oct' => 'oct',
- 'october' => 'Oct',
- 'ok' => 'Ok!',
- 'older_first' => 'Oldest first',
- 'oops' => 'Oops!',
- 'optimization_complete' => 'Optimization complete',
- 'optimize_bdd' => 'Optimize database',
- 'optimize_todo_sometimes' => 'To do occasionally to reduce the size of the database',
- 'or' => 'or',
- 'page_not_found' => 'You are looking for a page which doesn’t exist',
- 'password' => 'Password',
- 'password_api' => 'Password API
(e.g., for mobile apps)',
- 'password_form' => 'Password
(for the Web-form login method)',
- 'pcre_is_nok' => 'You lack a required library for regular expressions (php-pcre)',
- 'pcre_is_ok' => 'You have the required library for regular expressions (PCRE)',
- 'pdo_is_nok' => 'You lack PDO or one of the supported drivers (pdo_mysql, pdo_sqlite)',
- 'pdo_is_ok' => 'You have PDO and at least one of the supported drivers (pdo_mysql, pdo_sqlite)',
- 'persona_connection_email' => 'Login mail address
(for Mozilla Persona)',
- 'persona_is_ok' => 'Permissions on Mozilla Persona directory are good',
- 'php_is_nok' => 'Your PHP version is %s but FreshRSS requires at least version %s',
- 'php_is_ok' => 'Your PHP version is %s, which is compatible with FreshRSS',
- 'prefix' => 'Table prefix',
- 'previous' => 'Previous',
- 'previous_article' => 'Skip to the previous article',
- 'previous_page' => 'Skip to the previous page',
- 'print' => 'Print',
- 'project_website' => 'Project website',
- 'public' => 'Public',
- 'publication_date' => 'Date of publication',
- 'purge_completed' => 'Purge completed (%d articles deleted)',
- 'purge_now' => 'Purge now',
- 'queries' => 'User queries',
- '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"',
- 'query_state_0' => 'Display all articles',
- 'query_state_1' => 'Display read articles',
- 'query_state_2' => 'Display unread articles',
- 'query_state_3' => 'Display all articles',
- 'query_state_4' => 'Display favorite articles',
- 'query_state_5' => 'Display read favorite articles',
- 'query_state_6' => 'Display unread favorite articles',
- 'query_state_7' => 'Display favorite articles',
- 'query_state_8' => 'Display not favorite articles',
- 'query_state_9' => 'Display read not favorite articles',
- 'query_state_10' => 'Display unread not favorite articles',
- 'query_state_11' => 'Display not favorite articles',
- 'query_state_12' => 'Display all articles',
- 'query_state_13' => 'Display read articles',
- 'query_state_14' => 'Display unread articles',
- 'query_state_15' => 'Display all articles',
- 'random_string' => 'Random string',
- 'reader_view' => 'Reading view',
- 'reading_configuration' => 'Reading',
- 'reading_confirm' => 'Display a confirmation dialog on “mark all as read” actions',
- 'refresh' => 'Refresh',
- 'related_tags' => 'Related tags',
- 'retrieve_truncated_feeds' => 'Retrieves truncated RSS feeds (attention, requires more time!)',
- 'rss_feed_management' => 'RSS feeds management',
- 'rss_feeds_of' => 'RSS feed of %s',
- 'rss_view' => 'RSS feed',
- 'sat' => 'Sat',
- 'save' => 'Save',
- 'scroll' => 'while scrolling',
- 'search' => 'Search words or #tags',
- 'search_short' => 'Search',
- 'seconds_(0_means_no_timeout)' => 'seconds (0 means no timeout)',
- 'see_on_website' => 'See on original website',
- 'see_website' => 'See website',
- 'sep' => 'sep',
- 'september' => 'Sep',
- 'shaarli' => 'Shaarli',
- 'share' => 'Share',
- 'share_name' => 'Share name to display',
- 'share_url' => 'Share URL to use',
- 'sharing' => 'Sharing',
- 'sharing_management' => 'Sharing options management',
- 'shift_for_all_read' => '+ shift to mark all articles as read',
- 'shortcuts' => 'Shortcuts',
- 'shortcuts_article_action' => 'Article actions',
- 'shortcuts_navigation' => 'Navigation',
- 'shortcuts_navigation_help' => 'With the "Shift" modifier, navigation shortcuts apply on feeds.
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',
- 'show_favorite' => 'Show only favorites',
- 'show_in_all_flux' => 'Show in main stream',
- 'show_not_favorite' => 'Show all but favorites',
- 'show_not_reads' => 'Show only unread',
- 'show_read' => 'Show only read',
- 'sort_order' => 'Sort order',
- 'starred_list' => 'List of favourite articles',
- 'stats' => 'Statistics',
- 'stats_entry_count' => 'Entry count',
- 'stats_entry_per_category' => 'Entries per category',
- 'stats_entry_per_day' => 'Entries per day (last 30 days)',
- 'stats_entry_per_day_of_week' => 'Per day of week (average: %.2f messages)',
- 'stats_entry_per_hour' => 'Per hour (average: %.2f messages)',
- 'stats_entry_per_month' => 'Per month (average: %.2f messages)',
- 'stats_entry_repartition' => 'Entries repartition',
- 'stats_feed_per_category' => 'Feeds per category',
- 'stats_idle' => 'Idle feeds',
- 'stats_main' => 'Main statistics',
- 'stats_no_idle' => 'There is no idle feed!',
- 'stats_percent_of_total' => '%% of total',
- 'stats_repartition' => 'Articles repartition',
- 'stats_top_feed' => 'Top ten feeds',
- 'status_favorites' => 'Favourites',
- 'status_read' => 'Read',
- 'status_total' => 'Total',
- 'status_unread' => 'Unread',
- 'steps' => 'Steps',
- 'sticky_post' => 'Stick the article to the top when opened',
- 'submit' => 'Submit',
- 'subscription_management' => 'Subscriptions management',
- 'sun' => 'Sun',
- 'theme' => 'Theme',
- 'think_to_add' => 'You may add some feeds.',
- 'this_is_the_end' => 'This is the end',
- 'thu' => 'Thu',
- 'today' => 'Today',
- 'top_line' => 'Top line',
- 'truncate' => 'Delete all articles',
- 'ttl' => 'Do not automatically refresh more often than',
- 'tue' => 'Tue',
- 'twitter' => 'Twitter',
- 'unsafe_autologin' => 'Allow unsafe automatic login using the format: ',
- 'update' => 'Update',
- 'update_apply' => 'Apply',
- 'update_can_apply' => 'An update is available.',
- 'update_check' => 'Check for new updates',
- 'update_end' => 'Update process is completed, now you can go to the final step.',
- 'update_finished' => 'Update completed!',
- 'update_last' => 'Last verification: %s',
- 'update_long' => 'This can take a long time, depending on the size of your database. You may have to wait for this page to time out (~5 minutes) and then refresh this page.',
- 'update_problem' => 'The update process has encountered an error: %s',
- 'update_server_not_found' => 'Update server cannot be found. [%s]',
- 'update_start' => 'Start update process',
- 'update_system' => 'Update system',
- 'updated' => 'Modifications have been updated',
- 'upon_reception' => 'upon reception of the article',
- 'user_created' => 'User %s has been created',
- 'user_deleted' => 'User %s has been deleted',
- 'user_filter' => 'Access user filters',
- 'user_filter_help' => 'If there is only one user filter, it is used. Else filters are accessible by their number.',
- 'username' => 'Username',
- 'username_admin' => 'Administrator username',
- 'users' => 'Users',
- 'users_list' => 'List of users',
- 'version' => 'Version',
- 'version_update' => 'Update',
- 'wallabag' => 'wallabag',
- 'website' => 'Website',
- 'website_url' => 'Website URL',
- 'wed' => 'Wed',
- 'width_large' => 'Large',
- 'width_medium' => 'Medium',
- 'width_no_limit' => 'No limit',
- 'width_thin' => 'Thin',
- 'yes' => 'Yes',
- 'yesterday' => 'Yesterday',
- 'your_diaspora_pod' => 'Your Diaspora* pod',
- 'your_favorites' => 'Your favourites',
- 'your_rss_feeds' => 'Your RSS feeds',
- 'your_shaarli' => 'Your Shaarli',
- 'your_wallabag' => 'Your wallabag',
- 'zip_error' => 'An error occured during Zip import.',
);
diff --git a/app/i18n/en/index.php b/app/i18n/en/index.php
index afca37ed3..941388b68 100644
--- a/app/i18n/en/index.php
+++ b/app/i18n/en/index.php
@@ -1,5 +1,73 @@
array(
+ '_' => 'About',
+ 'agpl3' => 'AGPL 3',
+ 'bugs_reports' => 'Bugs reports',
+ 'credits' => 'Credits',
+ 'credits_content' => 'Some design elements come from Bootstrap although FreshRSS doesn’t use this framework. Icons come from GNOME project. Open Sans font police has been created by Steve Matteson. Favicons are collected with getFavicon API. FreshRSS is based on Minz, a PHP framework.',
+ 'freshrss_description' => 'FreshRSS is a RSS feeds aggregator to self-host like Kriss Feed or Leed. It is light and easy to take in hand while being powerful and configurable tool.',
+ 'github_or_email' => 'on Github or by mail',
+ 'lead_developer' => 'Lead developer',
+ 'license' => 'License',
+ 'project_website' => 'Project website',
+ 'title' => 'About',
+ 'version' => 'Version',
+ 'website' => 'Website',
+ ),
+ 'feed' => array(
+ 'add' => 'You may add some feeds.',
+ 'empty' => 'There is no article to show.',
+ 'rss_of' => 'RSS feed of %s',
+ 'title' => 'Your RSS feeds',
+ 'title_global' => 'Global view',
+ 'title_fav' => 'Your favourites',
+ ),
+ 'log' => array(
+ '_' => 'Logs',
+ 'clear' => 'Clear the logs',
+ 'empty' => 'Log file is empty',
+ 'title' => 'Logs',
+ ),
+ 'menu' => array(
+ 'about' => 'About FreshRSS',
+ 'add_query' => 'Add a query',
+ 'before_one_day' => 'Before one day',
+ 'before_one_week' => 'Before one week',
+ 'favorites' => 'Favourites (%s)',
+ 'global_view' => 'Global view',
+ 'main_stream' => 'Main stream',
+ 'mark_all_read' => 'Mark all as read',
+ 'mark_cat_read' => 'Mark category as read',
+ 'mark_feed_read' => 'Mark feed as read',
+ 'newer_first' => 'Newer first',
+ 'non-starred' => 'Show all but favorites',
+ 'normal_view' => 'Normal view',
+ 'older_first' => 'Oldest first',
+ 'queries' => 'User queries',
+ 'read' => 'Show only read',
+ 'reader_view' => 'Reading view',
+ 'rss_view' => 'RSS feed',
+ 'search_short' => 'Search',
+ 'starred' => 'Show only favorites',
+ 'stats' => 'Statistics',
+ 'subscription' => 'Subscriptions management',
+ 'unread' => 'Show only unread',
+ ),
+ 'share' => array(
+ '_' => 'Share',
+ 'blogotext' => 'Blogotext',
+ 'diaspora' => 'Diaspora*',
+ 'email' => 'Email',
+ 'facebook' => 'Facebook',
+ 'g+' => 'Google+',
+ 'print' => 'Print',
+ 'shaarli' => 'Shaarli',
+ 'twitter' => 'Twitter',
+ 'wallabag' => 'wallabag',
+ ),
+ 'tag' => array(
+ 'related' => 'Related tags',
+ ),
);
diff --git a/app/i18n/en/install.php b/app/i18n/en/install.php
index afca37ed3..ed3210190 100644
--- a/app/i18n/en/install.php
+++ b/app/i18n/en/install.php
@@ -1,5 +1,105 @@
array(
+ 'finish' => 'Complete installation',
+ 'next_step' => 'Go to the next step',
+ ),
+ 'auth' => array(
+ 'email_persona' => 'Login mail address
(for Mozilla Persona)',
+ 'form' => 'Web form (traditional, requires JavaScript)',
+ 'http' => 'HTTP (for advanced users with HTTPS)',
+ 'none' => 'None (dangerous)',
+ 'password_form' => 'Password
(for the Web-form login method)',
+ 'persona' => 'Mozilla Persona (modern, requires JavaScript)',
+ 'type' => 'Authentication method',
+ ),
+ 'bdd' => array(
+ '_' => 'Database',
+ 'conf' => array(
+ '_' => 'Database configuration',
+ 'ko' => 'Verify your database information.',
+ 'ok' => 'Database configuration has been saved.',
+ ),
+ 'host' => 'Host',
+ 'prefix' => 'Table prefix',
+ 'password' => 'HTTP password',
+ 'type' => 'Type of database',
+ 'username' => 'HTTP username',
+ ),
+ 'check' => array(
+ '_' => 'Checks',
+ 'cache' => array(
+ 'nok' => 'Check permissions on ./data/cache directory. HTTP server must have rights to write into',
+ 'ok' => 'Permissions on cache directory are good.',
+ ),
+ 'ctype' => array(
+ 'nok' => 'You lack a required library for character type checking (php-ctype).',
+ 'ok' => 'You have the required library for character type checking (ctype).',
+ ),
+ 'curl' => array(
+ 'nok' => 'You lack cURL (php5-curl package).',
+ 'ok' => 'You have cURL extension.',
+ ),
+ 'data' => array(
+ 'nok' => 'Check permissions on ./data directory. HTTP server must have rights to write into',
+ 'ok' => 'Permissions on data directory are good.',
+ ),
+ 'dom' => array(
+ 'nok' => 'You lack a required library to browse the DOM (php-xml package).',
+ 'ok' => 'You have the required library to browse the DOM.',
+ ),
+ 'favicons' => array(
+ 'nok' => 'Check permissions on ./data/favicons directory. HTTP server must have rights to write into',
+ 'ok' => 'Permissions on favicons directory are good.',
+ ),
+ 'http_referer' => array(
+ 'nok' => 'Please check that you are not altering your HTTP REFERER.',
+ 'ok' => 'Your HTTP REFERER is known and corresponds to your server.',
+ ),
+ 'logs' => array(
+ 'nok' => 'Check permissions on ./data/logs directory. HTTP server must have rights to write into',
+ 'ok' => 'Permissions on logs directory are good.',
+ ),
+ 'minz' => array(
+ 'nok' => 'You lack the Minz framework.',
+ 'ok' => 'You have the Minz framework.',
+ ),
+ 'pcre' => array(
+ 'nok' => 'You lack a required library for regular expressions (php-pcre).',
+ 'ok' => 'You have the required library for regular expressions (PCRE).',
+ ),
+ 'pdo' => array(
+ 'nok' => 'You lack PDO or one of the supported drivers (pdo_mysql, pdo_sqlite).',
+ 'ok' => 'You have PDO and at least one of the supported drivers (pdo_mysql, pdo_sqlite).',
+ ),
+ 'persona' => array(
+ 'nok' => 'Check permissions on ./data/persona directory. HTTP server must have rights to write into',
+ 'ok' => 'Permissions on Mozilla Persona directory are good.',
+ ),
+ 'php' => array(
+ 'nok' => 'Your PHP version is %s but FreshRSS requires at least version %s.',
+ 'ok' => 'Your PHP version is %s, which is compatible with FreshRSS.',
+ ),
+ ),
+ 'conf' => array(
+ '_' => 'General configuration',
+ 'ok' => 'General configuration has been saved.',
+ ),
+ 'congratulations' => 'Congratulations!',
+ 'default_user' => 'Username of the default user (maximum 16 alphanumeric characters)',
+ 'delete_articles_after' => 'Remove articles after',
+ 'fix_errors_before' => 'Fix errors before skip to the next step.',
+ 'javascript_is_better' => 'FreshRSS is more pleasant with JavaScript enabled',
+ 'language' => array(
+ '_' => 'Language',
+ 'choose' => 'Choose a language for FreshRSS',
+ 'defined' => 'Language has been defined.',
+ ),
+ 'not_deleted' => 'Something went wrong; you must delete the file %s manually.',
+ 'ok' => 'The installation process was successful.',
+ 'step' => 'step %d',
+ 'steps' => 'Steps',
+ 'title' => 'Installation · FreshRSS',
+ 'this_is_the_end' => 'This is the end',
);
diff --git a/app/i18n/en/sub.php b/app/i18n/en/sub.php
index e64b6ca4b..2b62e4775 100644
--- a/app/i18n/en/sub.php
+++ b/app/i18n/en/sub.php
@@ -1,10 +1,61 @@
array(
- 'over_max' => 'You have reached your limit of categories (%d)',
+ 'category' => array(
+ '_' => 'Category',
+ 'add' => 'Add a category',
+ 'empty' => 'Empty category',
+ 'new' => 'New category',
),
- 'feeds' => array(
- 'over_max' => 'You have reached your limit of feeds (%d)',
+ 'feed' => array(
+ 'add' => 'Add a RSS feed',
+ 'advanced' => 'Advanced',
+ 'archiving' => 'Archivage',
+ 'auth' => array(
+ 'configuration' => 'Login',
+ 'help' => 'Connection allows to access HTTP protected RSS feeds',
+ 'http' => 'HTTP Authentication',
+ 'password' => 'HTTP password',
+ 'username' => 'HTTP username',
+ ),
+ 'css_help' => 'Retrieves truncated RSS feeds (attention, requires more time!)',
+ 'css_path' => 'Articles CSS path on original website',
+ 'description' => 'Description',
+ 'empty' => 'This feed is empty. Please verify that it is still maintained.',
+ 'error' => 'This feed has encountered a problem. Please verify that it is always reachable then actualize it.',
+ 'in_main_stream' => 'Show in main stream',
+ 'informations' => 'Information',
+ 'keep_history' => 'Minimum number of articles to keep',
+ 'moved_category_deleted' => 'When you delete a category, their feeds are automatically classified under %s.',
+ 'no_selected' => 'No feed selected.',
+ 'number_entries' => '%d articles',
+ 'stats' => 'Statistics',
+ 'think_to_add' => 'You may add some feeds.',
+ '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',
+ 'website' => 'Website URL',
+ ),
+ 'import_export' => array(
+ 'export' => 'Export',
+ 'export_opml' => 'Export list of feeds (OPML)',
+ 'export_starred' => 'Export your favourites',
+ 'feed_list' => 'List of %s articles',
+ 'file_to_import' => 'File to import
(OPML, Json or Zip)',
+ 'file_to_import_no_zip' => 'File to import
(OPML or Json)',
+ 'import' => 'Import',
+ 'starred_list' => 'List of favourite articles',
+ 'title' => 'Import / export',
+ ),
+ 'menu' => array(
+ 'bookmark' => 'Subscribe (FreshRSS bookmark)',
+ 'import_export' => 'Import / export',
+ 'subscription_management' => 'Subscriptions management',
+ ),
+ 'title' => array(
+ '_' => 'Subscriptions management',
+ 'feed_management' => 'RSS feeds management',
),
);
diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php
index ad1fae6c0..b822a867d 100644
--- a/app/i18n/fr/admin.php
+++ b/app/i18n/fr/admin.php
@@ -1,6 +1,21 @@
array(
+ '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',
+ 'api_enabled' => 'Autoriser l’accès par API (nécessaire pour les applis mobiles)',
+ 'form' => 'Formulaire (traditionnel, requiert JavaScript)',
+ 'http' => 'HTTP (pour utilisateurs avancés avec HTTPS)',
+ 'none' => 'Aucune (dangereux)',
+ 'persona' => 'Mozilla Persona (moderne, requiert JavaScript)',
+ 'title' => 'Authentification',
+ 'title_reset' => 'Réinitialisation de l’authentification',
+ 'token' => 'Jeton d’identification',
+ 'token_help' => 'Permet d’accéder à la sortie RSS de l’utilisateur par défaut sans besoin de s’authentifier.
%s?output=rss&token=%s',
+ 'type' => 'Méthode d’authentification',
+ 'unsafe_autologin' => 'Autoriser les connexions automatiques non-sûres au format : ',
+ ),
'check_install' => array(
'cache' => array(
'nok' => 'Veuillez vérifier les droits sur le répertoire ./data/cache. Le serveur HTTP doit être capable d’écrire dedans',
@@ -77,6 +92,7 @@ return array(
'nok' => 'Il manque une ou plusieurs tables en base de données.',
'ok' => 'Les tables sont bien présentes en base de données.',
),
+ 'title' => 'Vérification de l’installation',
'tokens' => array(
'nok' => 'Veuillez vérifier les droits sur le répertoire ./data/tokens. Le serveur HTTP doit être capable d’écrire dedans',
'ok' => 'Les droits sur le répertoire des tokens sont bons.',
@@ -86,7 +102,54 @@ return array(
'ok' => 'Vous disposez de l\'extension ZIP.',
),
),
- 'users' => array(
+ 'stats' => array(
+ '_' => 'Statistiques',
+ 'all_feeds' => 'Tous les flux',
+ 'category' => 'Catégorie',
+ 'entry_count' => 'Nombre d’articles',
+ 'entry_per_category' => 'Articles par catégorie',
+ 'entry_per_day' => 'Nombre d’articles par jour (30 derniers jours)',
+ 'entry_per_day_of_week' => 'Par jour de la semaine (moyenne : %.2f messages)',
+ 'entry_per_hour' => 'Par heure (moyenne : %.2f messages)',
+ 'entry_per_month' => 'Par mois (moyenne : %.2f messages)',
+ 'entry_repartition' => 'Répartition des articles',
+ 'feed' => 'Flux',
+ 'feed_per_category' => 'Flux par catégorie',
+ 'idle' => 'Flux inactifs',
+ 'main' => 'Statistiques principales',
+ 'main_stream' => 'Flux principal',
+ 'menu' => array(
+ 'idle' => 'Flux inactifs',
+ 'main' => 'Statistiques principales',
+ 'repartition' => 'Répartition des articles',
+ ),
+ 'no_idle' => 'Il n’y a aucun flux inactif !',
+ 'number_entries' => '%d articles',
+ 'percent_of_total' => '%% du total',
+ 'repartition' => 'Répartition des articles',
+ 'status_favorites' => 'favoris',
+ 'status_read' => 'lus',
+ 'status_total' => 'total',
+ 'status_unread' => 'non lus',
+ 'title' => 'Statistiques',
+ 'top_feed' => 'Les dix plus gros flux',
+ ),
+ 'update' => array(
+ '_' => 'Système de mise à jour',
+ 'apply' => 'Appliquer la mise à jour',
+ 'check' => 'Vérifier les mises à jour',
+ 'last' => 'Dernière vérification : %s',
+ 'title' => 'Système de mise à jour',
+ ),
+ 'user' => array(
'articles_and_size' => '%s articles (%s)',
+ 'create' => 'Créer un nouvel utilisateur',
+ 'email_persona' => 'Adresse courriel de connexion
(pour Mozilla Persona)',
+ 'language' => 'Langue',
+ 'password_form' => 'Mot de passe
(pour connexion par formulaire)',
+ 'title' => 'Gestion des utilisateurs',
+ 'user_list' => 'Liste des utilisateurs',
+ 'username' => 'Nom d’utilisateur',
+ 'users' => 'Utilisateurs',
),
);
diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php
index 460804774..62d6342e9 100644
--- a/app/i18n/fr/conf.php
+++ b/app/i18n/fr/conf.php
@@ -1,7 +1,168 @@
array(
+ 'archiving' => array(
+ '_' => 'Archivage',
+ 'advanced' => 'Avancé',
+ 'delete_after' => 'Supprimer les articles après',
+ 'help' => 'D’autres options sont disponibles dans la configuration individuelle des flux.',
+ 'keep_history_by_feed' => 'Nombre minimum d’articles à conserver par flux',
+ 'optimize' => 'Optimiser la base de données',
+ 'optimize_help' => 'À faire de temps en temps pour réduire la taille de la BDD',
+ 'purge_now' => 'Purger maintenant',
+ 'title' => 'Archivage',
+ 'ttl' => 'Ne pas automatiquement rafraîchir plus souvent que',
+ ),
+ 'display' => array(
+ '_' => 'Affichage',
+ 'icon' => array(
+ 'bottom_line' => 'Ligne du bas',
+ 'entry' => 'Icônes d’article',
+ 'publication_date' => 'Date de publication',
+ 'related_tags' => 'Tags associés',
+ 'sharing' => 'Partage',
+ 'top_line' => 'Ligne du haut',
+ ),
+ 'language' => 'Langue',
+ 'notif_html5' => array(
+ 'seconds' => 'secondes (0 signifie aucun timeout)',
+ 'timeout' => 'Temps d’affichage de la notification HTML5',
+ ),
+ 'theme' => 'Thème',
+ 'title' => 'Affichage',
+ 'width' => array(
+ 'content' => 'Largeur du contenu',
+ 'large' => 'Large',
+ 'medium' => 'Moyenne',
+ 'no_limit' => 'Pas de limite',
+ 'thin' => 'Fine',
+ ),
+ ),
+ 'query' => array(
+ '_' => 'Filtres utilisateurs',
+ 'deprecated' => 'Ce filtre n’est plus valide. La catégorie ou le flux concerné a été supprimé.',
+ 'filter' => 'Filtres appliqués :',
+ 'get_all' => 'Afficher tous les articles',
+ 'get_category' => 'Afficher la catégorie "%s"',
+ 'get_favorite' => 'Afficher les articles favoris',
+ 'get_feed' => 'Afficher le flux "%s"',
+ 'no_filter' => 'Aucun filtre appliqué',
+ 'none' => 'Vous n’avez pas encore créé de filtre.',
+ 'number' => 'Filtre n°%d',
+ 'order_asc' => 'Afficher les articles les plus anciens en premier',
+ 'order_desc' => 'Afficher les articles les plus récents en premier',
+ 'search' => 'Recherche de "%s"',
+ 'state_0' => 'Afficher tous les articles',
+ 'state_1' => 'Afficher les articles lus',
+ 'state_2' => 'Afficher les articles non lus',
+ 'state_3' => 'Afficher tous les articles',
+ 'state_4' => 'Afficher les articles favoris',
+ 'state_5' => 'Afficher les articles lus et favoris',
+ 'state_6' => 'Afficher les articles non lus et favoris',
+ 'state_7' => 'Afficher les articles favoris',
+ 'state_8' => 'Afficher les articles non favoris',
+ 'state_9' => 'Afficher les articles lus et non favoris',
+ 'state_10' => 'Afficher les articles non lus et non favoris',
+ 'state_11' => 'Afficher les articles non favoris',
+ 'state_12' => 'Afficher tous les articles',
+ 'state_13' => 'Afficher les articles lus',
+ 'state_14' => 'Afficher les articles non lus',
+ 'state_15' => 'Afficher tous les articles',
+ 'title' => 'Filtres utilisateurs',
+ ),
+ 'profile' => array(
+ '_' => 'Gestion du profil',
+ 'email_persona' => 'Adresse courriel de connexion
(pour Mozilla Persona)',
+ 'password_api' => 'Mot de passe API
(ex. : pour applis mobiles)',
+ 'password_form' => 'Mot de passe
(pour connexion par formulaire)',
+ 'title' => 'Profil',
+ ),
+ 'reading' => array(
+ '_' => 'Lecture',
+ 'after_onread' => 'Après “marquer tout comme lu”,',
+ 'articles_per_page' => 'Nombre d’articles par page',
+ 'auto_load_more' => 'Charger les articles suivants en bas de page',
+ 'auto_remove_article' => 'Cacher les articles après lecture',
+ 'confirm_enabled' => 'Afficher une confirmation lors des actions “marquer tout comme lu”',
+ 'display_articles_unfolded' => 'Afficher les articles dépliés par défaut',
+ 'display_categories_unfolded' => 'Afficher les catégories pliées par défaut',
+ 'hide_read_feeds' => 'Cacher les catégories & flux sans article non-lu (ne fonctionne pas avec la configuration “Afficher tous les articles”)',
+ 'img_with_lazyload' => 'Utiliser le mode “chargement différé” pour les images',
+ 'jump_next' => 'sauter au prochain voisin non lu (flux ou catégorie)',
+ 'number_divided_when_reader' => 'Divisé par 2 dans la vue de lecture.',
+ 'read' => array(
+ 'article_open_on_website' => 'lorsque l’article est ouvert sur le site d’origine',
+ 'article_viewed' => 'lorsque l’article est affiché',
+ 'scroll' => 'au défilement de la page',
+ 'upon_reception' => 'dès la réception du nouvel article',
+ 'when' => 'Marquer un article comme lu…',
+ ),
+ 'show' => array(
+ '_' => 'Articles à afficher',
+ 'adaptive' => 'Adapter l’affichage',
+ 'all_articles' => 'Afficher tous les articles',
+ 'unread' => 'Afficher les non lus',
+ ),
+ 'sort' => array(
+ '_' => 'Ordre de tri',
+ 'newer_first' => 'Plus récents en premier',
+ 'older_first' => 'Plus anciens en premier',
+ ),
+ 'sticky_post' => 'Aligner l’article en haut quand il est ouvert',
+ 'title' => 'Lecture',
+ 'view' => array(
+ 'default' => 'Vue par défaut',
+ 'global' => 'Vue globale',
+ 'normal' => 'Vue normale',
+ 'reader' => 'Vue lecture',
+ ),
+ ),
+ 'sharing' => array(
+ '_' => 'Partage',
+ 'blogotext' => 'Blogotext',
+ 'diaspora' => 'Diaspora*',
+ 'email' => 'Email',
+ 'facebook' => 'Facebook',
+ 'g+' => 'Google+',
+ 'more_information' => 'Plus d’informations',
+ 'print' => 'Print',
+ 'shaarli' => 'Shaarli',
+ 'share_name' => 'Nom du partage à afficher',
+ 'share_url' => 'URL du partage à utiliser',
+ 'title' => 'Partage',
+ 'twitter' => 'Twitter',
+ 'wallabag' => 'wallabag',
+ ),
+ 'shortcut' => array(
+ '_' => 'Raccourcis',
+ 'article_action' => 'Actions associées à l’article courant',
+ 'auto_share' => 'Partager',
+ 'auto_share_help' => 'S’il n’y a qu’un mode de partage, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.',
+ 'close_dropdown' => 'Fermer les menus',
+ 'collapse_article' => 'Refermer',
+ 'first_article' => 'Passer au premier article',
+ 'focus_search' => 'Accéder à la recherche',
+ 'help' => 'Afficher la documentation',
+ 'javascript' => 'Le JavaScript doit être activé pour pouvoir profiter des raccourcis.',
+ 'last_article' => 'Passer au dernier article',
+ 'load_more' => 'Charger plus d’articles',
+ 'mark_read' => 'Marquer comme lu',
+ 'mark_favorite' => 'Mettre en favori',
+ 'navigation' => 'Navigation',
+ 'navigation_help' => 'Avec le modificateur "Shift", les raccourcis de navigation s’appliquent aux flux.
Avec le modificateur "Alt", les raccourcis de navigation s’appliquent aux catégories.',
+ 'next_article' => 'Passer à l’article suivant',
+ 'other_action' => 'Autres actions',
+ 'previous_article' => 'Passer à l’article précédent',
+ 'see_on_website' => 'Voir sur le site d’origine',
+ 'shift_for_all_read' => '+ shift pour marquer tous les articles comme lus',
+ 'title' => 'Raccourcis',
+ 'user_filter' => 'Accéder aux filtres utilisateur',
+ 'user_filter_help' => 'S’il n’y a qu’un filtre utilisateur, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.',
+ ),
+ 'user' => array(
'articles_and_size' => '%s articles (%s)',
+ 'current' => 'Utilisateur actuel',
+ 'is_admin' => 'est administrateur',
+ 'users' => 'Utilisateurs',
),
);
diff --git a/app/i18n/fr/feedback.php b/app/i18n/fr/feedback.php
index f4bb7cccf..b9d1f6c99 100644
--- a/app/i18n/fr/feedback.php
+++ b/app/i18n/fr/feedback.php
@@ -1,14 +1,96 @@
array(
- 'error' => 'L’identifiant est invalide !',
- 'success' => 'Vous êtes désormais connecté',
+ 'admin' => array(
+ 'optimization_complete' => 'Optimisation terminée.',
),
- 'logout' => array(
- 'success' => 'Vous avez été déconnecté',
+ 'access' => array(
+ 'denied' => 'Vous n’avez pas le droit d’accéder à cette page !',
+ 'not_found' => 'La page que vous cherchez n’existe pas !',
),
- 'user_profile' => array(
+ '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.',
+ 'set' => 'Le formulaire est désormais votre système d’authentification.',
+ ),
+ 'login' => array(
+ 'invalid' => 'L’identifiant est invalide',
+ 'success' => 'Vous êtes désormais connecté',
+ ),
+ 'logout' => array(
+ 'success' => 'Vous avez été déconnecté',
+ ),
+ '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é.',
+ ),
+ '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',
+ ),
+ '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.',
+ 'feeds_imported' => 'Vos flux ont été importés et vont maintenant être actualisés.',
+ 'feeds_imported_with_errors' => 'Vos flux ont été importés mais des erreurs sont survenues.',
+ 'file_cannot_be_uploaded' => 'Le fichier ne peut pas être téléchargé !',
+ 'no_zip_extension' => 'L’extension Zip n’est pas présente sur votre serveur.',
+ 'zip_error' => 'Une erreur est survenue durant l’import du fichier Zip.',
+ ),
+ 'sub' => array(
+ 'actualize' => 'Actualiser',
+ 'category' => array(
+ 'created' => 'La catégorie %s a été créée.',
+ 'deleted' => 'La catégorie a été supprimée.',
+ 'emptied' => 'La catégorie a été vidée.',
+ 'error' => 'La catégorie n’a pas pu être modifiée',
+ 'name_exists' => 'Une catégorie possède déjà ce nom.',
+ 'no_id' => 'Vous devez préciser l’id de la catégorie.',
+ 'no_name' => 'Vous devez préciser un nom pour la catégorie.',
+ 'not_delete_default' => 'Vous ne pouvez pas supprimer la catégorie par défaut !',
+ 'not_exist' => 'Cette catégorie n’existe pas !',
+ 'over_max' => 'Vous avez atteint votre limite de catégories (%d)',
+ 'updated' => 'La catégorie a été mise à jour.',
+ ),
+ 'feed' => array(
+ 'actualized' => '%s a été mis à jour.',
+ 'actualizeds' => 'Les flux ont été mis à jour.',
+ 'added' => 'Le flux %s a bien été ajouté.',
+ 'already_subscribed' => 'Vous êtes déjà abonné à %s',
+ 'deleted' => 'Le flux a été supprimé.',
+ 'error' => 'Une erreur est survenue',
+ 'internal_problem' => 'Le flux ne peut pas être ajouté. Consulter les logs de FreshRSS pour plus de détails.',
+ 'invalid_url' => 'L’url %s 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' => '%s 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).',
+ ),
+ 'update' => array(
+ 'can_apply' => 'Une mise à jour est disponible.',
+ 'error' => 'La mise à jour a rencontré un problème : %s',
+ 'file_is_nok' => 'Veuillez vérifier les droits sur le répertoire %s. Le serveur HTTP doit être capable d’écrire dedans',
+ 'finished' => 'La mise à jour est terminée !',
+ 'none' => 'Aucune mise à jour à appliquer',
+ 'server_not_found' => 'Le serveur de mise à jour n’a pas été trouvé. [%s]',
+ ),
+ 'user' => array(
+ 'created' => array(
+ '_' => 'L’utilisateur %s a été créé.',
+ 'error' => 'L’utilisateur %s ne peut pas être créé.',
+ ),
+ 'deleted' => array(
+ '_' => 'L’utilisateur %s a été supprimé.',
+ 'error' => 'L’utilisateur %s ne peut pas être supprimé.',
+ ),
+ ),
+ 'profile' => array(
+ 'error' => 'Votre profil n’a pas pu être mis à jour',
'updated' => 'Votre profil a été mis à jour',
),
);
diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php
index 0b2395bd0..bb4478360 100644
--- a/app/i18n/fr/gen.php
+++ b/app/i18n/fr/gen.php
@@ -1,488 +1,143 @@
'\\a\\v\\r\\i\\l',
- 'Aug' => '\\a\\o\\û\\t',
- 'Dec' => '\\d\\é\\c\\e\\m\\b\\r\\e',
- 'Feb' => '\\f\\é\\v\\r\\i\\e\\r',
- 'Jan' => '\\j\\a\\n\\v\\i\\e\\r',
- 'Jul' => '\\j\\u\\i\\l\\l\\e\\t',
- 'Jun' => '\\j\\u\\i\\n',
- 'Mar' => '\\m\\a\\r\\s',
- 'May' => '\\m\\a\\i',
- 'Nov' => '\\n\\o\\v\\e\\m\\b\\r\\e',
- 'Oct' => '\\o\\c\\t\\o\\b\\r\\e',
- 'Sep' => '\\s\\e\\p\\t\\e\\m\\b\\r\\e',
- 'about' => 'À propos',
- 'about_freshrss' => 'À propos de FreshRSS',
- 'access_denied' => 'Vous n’avez pas le droit d’accéder à cette page !',
- 'access_protected_feeds' => 'La connexion permet d’accéder aux flux protégés par une authentification HTTP.',
- 'activate_sharing' => 'Activer le partage',
- 'actualize' => 'Actualiser',
- 'add_category' => 'Ajouter une catégorie',
- 'add_query' => 'Créer un filtre',
- 'add_rss_feed' => 'Ajouter un flux RSS',
- 'administration' => 'Gérer',
- 'advanced' => 'Avancé',
- 'after_onread' => 'Après “marquer tout comme lu”,',
- 'agpl3' => 'AGPL 3',
- 'all_feeds' => 'Tous les flux',
- '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é à %s',
- 'api_enabled' => 'Autoriser l’accès par API (nécessaire pour les applis mobiles)',
- 'apr' => 'avr.',
- 'april' => 'avril',
- 'archiving_configuration' => 'Archivage',
- 'archiving_configuration_help' => 'D’autres options sont disponibles dans la configuration individuelle des flux.',
- 'article' => 'Article',
- 'article_icons' => 'Icônes d’article',
- 'article_open_on_website' => 'lorsque l’article est ouvert sur le site d’origine',
- 'article_published_on' => 'Article publié initialement sur %s',
- 'article_published_on_author' => 'Article publié initialement sur %s par %s',
- 'article_viewed' => 'lorsque l’article est affiché',
- 'articles' => 'articles',
- 'articles_per_page' => 'Nombre d’articles par page',
- 'articles_to_display' => 'Articles à afficher',
- 'ask_empty' => 'Vider ?',
- 'attention' => 'Attention !',
- 'aug' => 'août',
- 'august' => 'août',
- 'auth_form' => 'Formulaire (traditionnel, requiert JavaScript)',
- 'auth_form_not_set' => 'Un problème est survenu lors de la configuration de votre système d’authentification. Veuillez réessayer plus tard.',
- 'auth_form_set' => 'Le formulaire est désormais votre système d’authentification.',
- 'auth_no_password_set' => 'Aucun mot de passe administrateur n’a été précisé. Cette fonctionnalité n’est pas disponible.',
- 'auth_none' => 'Aucune (dangereux)',
- 'auth_not_persona' => 'Seul le système d’authentification Persona peut être réinitialisé.',
- 'auth_persona' => 'Mozilla Persona (moderne, requiert JavaScript)',
- 'auth_reset' => 'Réinitialisation de l’authentification',
- 'auth_token' => 'Jeton d’identification',
- 'auth_type' => 'Méthode d’authentification',
- 'auth_will_reset' => 'Le système d’authentification va être réinitialisé : un formulaire sera utilisé à la place de Persona.',
- 'author' => 'Auteur',
- 'auto_load_more' => 'Charger les articles suivants en bas de page',
- 'auto_read_when' => 'Marquer un article comme lu…',
- 'auto_remove_article' => 'Cacher les articles après lecture',
- 'auto_share' => 'Partager',
- 'auto_share_help' => 'S’il n’y a qu’un mode de partage, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.',
- 'back_to_rss_feeds' => '← Retour à vos flux RSS',
- 'bad_opml_file' => 'Votre fichier OPML n’est pas valide.',
- 'base_url' => 'Base de l’URL',
- 'bdd' => 'Base de données',
- 'bdd_conf_is_ko' => 'Vérifiez les informations d’accès à la base de données.',
- 'bdd_conf_is_ok' => 'La configuration de la base de données a été enregistrée.',
- 'bdd_configuration' => 'Base de données',
- 'bdd_type' => 'Type de base de données',
- 'before_one_day' => 'Antérieurs à 1 jour',
- 'before_one_week' => 'Antérieurs à 1 semaine',
- 'before_yesterday' => 'À partir d’avant-hier',
- 'blank_to_disable' => 'Laissez vide pour désactiver',
- 'blogotext' => 'Blogotext',
- 'bookmark' => 'S’abonner (bookmark FreshRSS)',
- 'bottom_line' => 'Ligne du bas',
- 'bugs_reports' => 'Rapports de bugs',
- 'by' => 'par',
- 'by_author' => 'Par %s',
- 'by_default' => 'Par défaut',
- 'by_email' => 'Par courriel',
- 'by_feed' => 'par flux',
- 'cache_is_ok' => 'Les droits sur le répertoire de cache sont bons',
- 'can_not_be_deleted' => 'Ne peut pas être supprimée.',
- 'cancel' => 'Annuler',
- 'categories' => 'Catégories',
- 'categories_management' => 'Gestion des catégories',
- 'categories_updated' => 'Les catégories ont été mises à jour.',
- 'categorize' => 'Ranger dans une catégorie',
- 'category' => 'Catégorie',
- 'category_created' => 'La catégorie %s a été créée.',
- 'category_deleted' => 'La catégorie a été supprimée.',
- 'category_emptied' => 'La catégorie a été vidée.',
- 'category_empty' => 'Catégorie vide',
- 'category_name_exists' => 'Une catégorie possède déjà ce nom.',
- 'category_no_id' => 'Vous devez préciser l’id de la catégorie.',
- 'category_no_name' => 'Vous devez préciser un nom pour la catégorie.',
- 'category_not_delete_default' => 'Vous ne pouvez pas supprimer la catégorie par défaut !',
- 'category_not_exist' => 'Cette catégorie n’existe pas !',
- 'category_number' => 'Catégorie n°%d',
- 'category_updated' => 'La catégorie a été mise à jour.',
- 'change_value' => 'Vous devriez changer cette valeur par n’importe quelle autre',
- 'checks' => 'Vérifications',
- 'choose_language' => 'Choisissez la langue pour FreshRSS',
- 'clear_logs' => 'Effacer les logs',
- 'collapse_article' => 'Refermer',
- 'configuration' => 'Configuration',
- 'configuration_updated' => 'La configuration a été mise à jour.',
- 'confirm_action' => 'Êtes-vous sûr(e) de vouloir continuer ? Cette action ne peut être annulée !',
- 'confirm_action_feed_cat' => 'Êtes-vous sûr(e) de vouloir continuer ? Vous perdrez les favoris et les filtres associés. Cette action ne peut être annulée !',
- 'congratulations' => 'Félicitations !',
- 'content_width' => 'Largeur du contenu',
- 'create' => 'Créer',
- 'create_user' => 'Créer un nouvel utilisateur',
- 'credits' => 'Crédits',
- 'credits_content' => 'Des éléments de design sont issus du projet Bootstrap bien que FreshRSS n’utilise pas ce framework. Les icônes sont issues du projet GNOME. La police Open Sans utilisée a été créée par Steve Matteson. Les favicons sont récupérés grâce au site getFavicon. FreshRSS repose sur Minz, un framework PHP.',
- 'css_path_on_website' => 'Sélecteur CSS des articles sur le site d’origine',
- 'ctype_is_nok' => 'Il manque une librairie pour la vérification des types de caractères (php-ctype)',
- 'ctype_is_ok' => 'Vous disposez du nécessaire pour la vérification des types de caractères (ctype)',
- 'curl_is_nok' => 'Vous ne disposez pas de cURL (paquet php5-curl)',
- 'curl_is_ok' => 'Vous disposez de cURL dans sa version %s',
- 'current_user' => 'Utilisateur actuel',
- 'damn' => 'Arf !',
- 'data_is_ok' => 'Les droits sur le répertoire de data sont bons',
- 'dec' => 'déc.',
- 'december' => 'décembre',
- 'default_category' => 'Sans catégorie',
- 'default_user' => 'Nom de l’utilisateur par défaut (16 caractères alphanumériques maximum)',
- 'default_view' => 'Vue par défaut',
- 'delete' => 'Supprimer',
- 'delete_articles_every' => 'Supprimer les articles après',
- 'diaspora' => 'Diaspora*',
- 'display' => 'Affichage',
- 'display_articles_unfolded' => 'Afficher les articles dépliés par défaut',
- 'display_categories_unfolded' => 'Afficher les catégories pliées par défaut',
- 'display_configuration' => 'Affichage',
- 'do_not_change_if_doubt' => 'Laissez tel quel dans le doute',
- 'dom_is_nok' => 'Il manque une librairie pour parcourir le DOM (paquet php-xml)',
- 'dom_is_ok' => 'Vous disposez du nécessaire pour parcourir le DOM',
- 'email' => 'Courriel',
- 'error_occurred' => 'Une erreur est survenue !',
- 'error_occurred_update' => 'Rien n’a été modifié !',
- 'explain_token' => 'Permet d’accéder à la sortie RSS de l’utilisateur par défaut sans besoin de s’authentifier.
%s?output=rss&token=%s',
- 'export' => 'Exporter',
- 'export_no_zip_extension' => 'L’extension Zip n’est pas présente sur votre serveur. Veuillez essayer d’exporter les fichiers un par un.',
- 'export_opml' => 'Exporter la liste des flux (OPML)',
- 'export_starred' => 'Exporter les favoris',
- 'facebook' => 'Facebook',
- 'favicons_is_ok' => 'Les droits sur le répertoire des favicons sont bons',
- 'favorite_feeds' => 'Favoris (%s)',
- 'feb' => 'fév.',
- 'february' => 'février',
- 'feed' => 'Flux',
- 'feed_actualized' => '%s a été mis à jour.',
- 'feed_added' => 'Le flux %s a bien été ajouté.',
- 'feed_deleted' => 'Le flux a été supprimé.',
- 'feed_description' => 'Description',
- 'feed_empty' => 'Ce flux est vide. Veuillez vérifier qu’il est toujours maintenu.',
- 'feed_in_error' => 'Ce flux a rencontré un problème. Veuillez vérifier qu’il est toujours accessible puis actualisez-le.',
- 'feed_list' => 'Liste des articles de %s',
- 'feed_not_added' => '%s n’a pas pu être ajouté.',
- 'feed_updated' => 'Le flux a été mis à jour.',
- 'feed_url' => 'URL du flux',
- 'feed_validator' => 'Vérifier la valididé du flux',
- 'feeds' => 'Flux',
- 'feeds_actualized' => 'Les flux ont été mis à jour.',
- 'feeds_imported' => 'Vos flux ont été importés et vont maintenant être actualisés.',
- 'feeds_imported_with_errors' => 'Vos flux ont été importés mais des erreurs sont survenues.',
- 'feeds_marked_read' => 'Les flux ont été marqués comme lus.',
- 'feeds_moved_category_deleted' => 'Lors de la suppression d’une catégorie, ses flux seront automatiquement classés dans %s.',
- 'file_cannot_be_uploaded' => 'Le fichier ne peut pas être téléchargé !',
- 'file_is_nok' => 'Veuillez vérifier les droits sur le répertoire %s. Le serveur HTTP doit être capable d’écrire dedans',
- 'file_to_import' => 'Fichier à importer
(OPML, Json ou Zip)',
- 'file_to_import_no_zip' => 'Fichier à importer
(OPML ou Json)',
- 'filter' => 'Filtrer',
- 'finish_installation' => 'Terminer l’installation',
- 'first' => 'Début',
- 'first_article' => 'Passer au premier article',
- 'fix_errors_before' => 'Veuillez corriger les erreurs avant de passer à l’étape suivante.',
- 'focus_search' => 'Accéder à la recherche',
- 'format_date' => 'j %s Y',
- 'format_date_hour' => 'j %s Y \\à H\\:i',
- 'freshrss' => 'FreshRSS',
- 'freshrss_description' => 'FreshRSS est un agrégateur de flux RSS à auto-héberger à l’image de Kriss Feed ou Leed. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable.',
- 'freshrss_installation' => 'Installation · FreshRSS',
- 'fri' => 'ven.',
- 'g+' => 'Google+',
+ 'action' => array(
+ 'actualize' => 'Actualiser',
+ 'back_to_rss_feeds' => '← Retour à vos flux RSS',
+ 'cancel' => 'Annuler',
+ 'create' => 'Créer',
+ 'disable' => 'Désactiver',
+ 'empty' => 'Vider',
+ 'enable' => 'Activer',
+ 'export' => 'Exporter',
+ 'filter' => 'Filtrer',
+ 'import' => 'Importer',
+ 'manage' => 'Gérer',
+ 'mark_read' => 'Marquer comme lu',
+ 'mark_favorite' => 'Mettre en favori',
+ 'remove' => 'Supprimer',
+ 'see_website' => 'Voir le site',
+ 'submit' => 'Valider',
+ 'truncate' => 'Supprimer tous les articles',
+ ),
+ 'auth' => array(
+ 'keep_logged_in' => 'Rester connecté (1 mois)',
+ 'login' => 'Connexion',
+ 'login_persona' => 'Connexion avec Persona',
+ 'login_persona_problem' => 'Problème de connexion à Persona ?',
+ 'logout' => 'Déconnexion',
+ 'password' => 'Mot de passe',
+ 'reset' => 'Réinitialisation de l’authentification',
+ 'username' => 'Nom d’utilisateur',
+ 'username_admin' => 'Nom d’utilisateur administrateur',
+ 'will_reset' => 'Le système d’authentification va être réinitialisé : un formulaire sera utilisé à la place de Persona.',
+ ),
+ 'date' => array(
+ 'Apr' => '\\a\\v\\r\\i\\l',
+ 'Aug' => '\\a\\o\\û\\t',
+ 'Dec' => '\\d\\é\\c\\e\\m\\b\\r\\e',
+ 'Feb' => '\\f\\é\\v\\r\\i\\e\\r',
+ 'Jan' => '\\j\\a\\n\\v\\i\\e\\r',
+ 'Jul' => '\\j\\u\\i\\l\\l\\e\\t',
+ 'Jun' => '\\j\\u\\i\\n',
+ 'Mar' => '\\m\\a\\r\\s',
+ 'May' => '\\m\\a\\i',
+ 'Nov' => '\\n\\o\\v\\e\\m\\b\\r\\e',
+ 'Oct' => '\\o\\c\\t\\o\\b\\r\\e',
+ 'Sep' => '\\s\\e\\p\\t\\e\\m\\b\\r\\e',
+ 'apr' => 'avr.',
+ 'april' => 'avril',
+ 'aug' => 'août',
+ 'august' => 'août',
+ 'before_yesterday' => 'À partir d’avant-hier',
+ 'dec' => 'déc.',
+ 'december' => 'décembre',
+ 'feb' => 'fév.',
+ 'february' => 'février',
+ 'format_date' => 'j %s Y',
+ 'format_date_hour' => 'j %s Y \\à H\\:i',
+ 'fri' => 'ven.',
+ 'jan' => 'jan.',
+ 'january' => 'janvier',
+ 'jul' => 'jui.',
+ 'july' => 'juillet',
+ 'jun' => 'juin',
+ 'june' => 'juin',
+ 'last_3_month' => 'Depuis les trois derniers mois',
+ 'last_6_month' => 'Depuis les six derniers mois',
+ 'last_month' => 'Depuis le mois dernier',
+ 'last_week' => 'Depuis la semaine dernière',
+ 'last_year' => 'Depuis l’année dernière',
+ 'mar' => 'mar.',
+ 'march' => 'mars',
+ 'may' => 'mai.',
+ 'mon' => 'lun.',
+ 'month' => 'mois',
+ 'nov' => 'nov.',
+ 'november' => 'novembre',
+ 'oct' => 'oct.',
+ 'october' => 'octobre',
+ 'sat' => 'sam.',
+ 'sep' => 'sep.',
+ 'september' => 'septembre',
+ 'sun' => 'dim.',
+ 'thu' => 'jeu.',
+ 'today' => 'Aujourd’hui',
+ 'tue' => 'mar.',
+ 'wed' => 'mer.',
+ 'yesterday' => 'Hier',
+ ),
+ 'freshrss' => array(
+ '_' => 'FreshRSS',
+ 'about' => 'À propos de FreshRSS',
+ ),
+ 'js' => array(
+ 'category_empty' => 'Catégorie vide',
+ 'confirm_action' => 'Êtes-vous sûr(e) de vouloir continuer ? Cette action ne peut être annulée !',
+ 'confirm_action_feed_cat' => 'Êtes-vous sûr(e) de vouloir continuer ? Vous perdrez les favoris et les filtres associés. Cette action ne peut être annulée !',
+ 'new_article' => 'Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.',
+ 'notif_body_new_articles' => 'Il y a \\d nouveaux articles à lire sur FreshRSS.',
+ 'notif_title_new_articles' => 'FreshRSS : nouveaux articles !',
+ 'should_be_activated' => 'Le JavaScript doit être activé.',
+ ),
'menu' => array(
+ 'about' => 'À propos',
'admin' => 'Administration',
+ 'archiving' => 'Archivage',
'authentication' => 'Authentification',
'check_install' => 'Vérification de l’installation',
+ 'configuration' => 'Configuration',
+ 'display' => 'Affichage',
+ 'logs' => 'Logs',
+ 'queries' => 'Filtres utilisateurs',
+ 'reading' => 'Lecture',
+ 'search' => 'Rechercher des mots ou des #tags',
+ 'sharing' => 'Partage',
+ 'shortcuts' => 'Raccourcis',
+ 'stats' => 'Statistiques',
+ 'update' => 'Mise à jour',
'user_management' => 'Gestion des utilisateurs',
'user_profile' => 'Profil',
),
- 'title' => array(
- '_' => 'Titre',
- 'authentication' => 'Authentification',
- 'check_install' => 'Vérification de l’installation',
- 'global_view' => 'Vue globale',
- 'user_management' => 'Gestion des utilisateurs',
- 'user_profile' => 'Profil',
+ 'pagination' => array(
+ 'first' => 'Début',
+ 'last' => 'Fin',
+ 'load_more' => 'Charger plus d’articles',
+ 'mark_all_read' => 'Tout marquer comme lu',
+ 'next' => 'Suivant',
+ 'nothing_to_load' => 'Fin des articles',
+ 'previous' => 'Précédent',
+ ),
+ 'short' => array(
+ 'attention' => 'Attention !',
+ 'blank_to_disable' => 'Laissez vide pour désactiver',
+ 'by_author' => 'Par %s',
+ 'by_default' => 'Par défaut',
+ 'damn' => 'Arf !',
+ 'default_category' => 'Sans catégorie',
+ 'no' => 'Non',
+ 'ok' => 'Ok !',
+ 'or' => 'ou',
+ 'yes' => 'Oui',
),
- 'general_conf_is_ok' => 'La configuration générale a été enregistrée.',
- 'general_configuration' => 'Configuration générale',
- 'github_or_email' => 'sur Github ou par courriel',
- 'global_view' => 'Vue globale',
- 'help' => 'Afficher la documentation',
- 'hide_read_feeds' => 'Cacher les catégories & flux sans article non-lu (ne fonctionne pas avec la configuration “Afficher tous les articles”)',
- 'host' => 'Hôte',
- 'html5_notif_timeout' => 'Temps d’affichage de la notification HTML5',
- 'http_auth' => 'HTTP (pour utilisateurs avancés avec HTTPS)',
- 'http_authentication' => 'Authentification HTTP',
- 'http_password' => 'Mot de passe HTTP',
- 'http_referer_is_nok' => 'Veuillez vérifier que vous ne modifiez pas votre HTTP REFERER.',
- 'http_referer_is_ok' => 'Le HTTP REFERER est connu et semble correspondre à votre serveur.',
- 'http_username' => 'Identifiant HTTP',
- 'img_with_lazyload' => 'Utiliser le mode “chargement différé” pour les images',
- 'import' => 'Importer',
- 'import_export' => 'Importer / exporter',
- 'informations' => 'Informations',
- 'install_not_deleted' => 'Quelque chose s’est mal passé, vous devez supprimer le fichier %s à la main.',
- 'installation_is_ok' => 'L’installation s’est bien passée.
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.
Vous pouvez choisir de sauter cette étape en supprimant ./data/do-install.txt manuellement.',
- 'installation_step' => 'Installation — étape %d · FreshRSS',
- 'internal_problem_feed' => 'Le flux ne peut pas être ajouté. Consulter les logs de FreshRSS pour plus de détails.',
- 'invalid_login' => 'L’identifiant est invalide !',
- 'invalid_url' => 'L’url %s est invalide.',
- 'is_admin' => 'est administrateur',
- 'jan' => 'jan.',
- 'january' => 'janvier',
- '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é',
- 'javascript_should_be_activated' => 'Le JavaScript doit être activé.',
- 'jul' => 'jui.',
- 'july' => 'juillet',
- 'jump_next' => 'sauter au prochain voisin non lu (flux ou catégorie)',
- 'jun' => 'juin',
- 'june' => 'juin',
- 'keep_history' => 'Nombre minimum d’articles à conserver',
- 'keep_logged_in' => 'Rester connecté (1 mois)',
- 'language' => 'Langue',
- 'language_defined' => 'La langue a bien été définie.',
- 'last' => 'Fin',
- 'last_3_month' => 'Depuis les trois derniers mois',
- 'last_6_month' => 'Depuis les six derniers mois',
- 'last_article' => 'Passer au dernier article',
- 'last_month' => 'Depuis le mois dernier',
- 'last_week' => 'Depuis la semaine dernière',
- 'last_year' => 'Depuis l’année dernière',
- 'lead_developer' => 'Développeur principal',
- 'license' => 'Licence',
- 'load_more' => 'Charger plus d’articles',
- 'log_is_ok' => 'Les droits sur le répertoire des logs sont bons',
- 'login' => 'Connexion',
- 'login_configuration' => 'Identification',
- 'login_persona_problem' => 'Problème de connexion à Persona ?',
- 'login_required' => 'Accès protégé par mot de passe :',
- 'login_with_persona' => 'Connexion avec Persona',
- 'logout' => 'Déconnexion',
- 'logs' => 'Logs',
- 'logs_empty' => 'Les logs sont vides.',
- 'main_stream' => 'Flux principal',
- 'mar' => 'mar.',
- 'march' => 'mars',
- 'mark_all_read' => 'Tout marquer comme lu',
- 'mark_cat_read' => 'Marquer la catégorie comme lue',
- 'mark_favorite' => 'Mettre en favori',
- 'mark_feed_read' => 'Marquer le flux comme lu',
- 'mark_read' => 'Marquer comme lu',
- 'may' => 'mai.',
- 'minz_is_nok' => 'Vous ne disposez pas de la librairie Minz. Vous devriez exécuter le script build.sh ou bien la télécharger sur Github et installer dans le répertoire %s le contenu de son répertoire /lib.',
- 'minz_is_ok' => 'Vous disposez du framework Minz',
- 'mon' => 'lun.',
- '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.',
- 'new_article' => 'Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.',
- 'new_category' => 'Nouvelle catégorie',
- 'newer_first' => 'Plus récents en premier',
- 'next' => 'Suivant',
- 'next_article' => 'Passer à l’article suivant',
- 'next_page' => 'Passer à la page suivante',
- 'next_step' => 'Passer à l’étape suivante',
- 'no' => 'Non',
- 'no_feed_actualized' => 'Aucun flux n’a pu être mis à jour.',
- 'no_feed_to_display' => 'Il n’y a aucun article à afficher.',
- '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',
- 'no_selected_feed' => 'Aucun flux sélectionné.',
- 'no_update' => 'Aucune mise à jour à appliquer',
- 'no_zip_extension' => 'L’extension Zip n’est pas présente sur votre serveur.',
- 'normal_view' => 'Vue normale',
- 'not_read' => '%d non lu',
- 'not_reads' => '%d non lus',
- 'not_yet_implemented' => 'Pas encore implémenté',
- 'nothing_to_load' => 'Fin des articles',
- 'notif_body_new_articles' => 'Il y a \\d nouveaux articles à lire sur FreshRSS.',
- 'notif_title_new_articles' => 'FreshRSS : nouveaux articles !',
- 'nov' => 'nov.',
- 'november' => 'novembre',
- 'number_articles' => '%d articles',
- 'number_divided_when_reader' => 'Divisé par 2 dans la vue de lecture.',
- 'number_feeds' => '%d flux',
- 'oct' => 'oct.',
- 'october' => 'octobre',
- 'ok' => 'Ok !',
- 'older_first' => 'Plus anciens en premier',
- 'oops' => 'Oups !',
- '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',
- 'or' => 'ou',
- 'page_not_found' => 'La page que vous cherchez n’existe pas !',
- 'password' => 'Mot de passe',
- 'password_api' => 'Mot de passe API
(ex. : pour applis mobiles)',
- 'password_form' => 'Mot de passe
(pour connexion par formulaire)',
- 'pcre_is_nok' => 'Il manque une librairie pour les expressions régulières (php-pcre)',
- 'pcre_is_ok' => 'Vous disposez du nécessaire pour les expressions régulières (PCRE)',
- 'pdo_is_nok' => 'Vous ne disposez pas de PDO ou d’un des drivers supportés (pdo_mysql, pdo_sqlite)',
- 'pdo_is_ok' => 'Vous disposez de PDO et d’au moins un des drivers supportés (pdo_mysql, pdo_sqlite)',
- 'persona_connection_email' => 'Adresse courriel de connexion
(pour Mozilla Persona)',
- 'persona_is_ok' => 'Les droits sur le répertoire de Mozilla Persona sont bons',
- 'php_is_nok' => 'Votre version de PHP est la %s mais FreshRSS requiert au moins la version %s',
- 'php_is_ok' => 'Votre version de PHP est la %s, qui est compatible avec FreshRSS',
- 'prefix' => 'Préfixe des tables',
- 'previous' => 'Précédent',
- 'previous_article' => 'Passer à l’article précédent',
- 'previous_page' => 'Passer à la page précédente',
- 'print' => 'Imprimer',
- 'project_website' => 'Site du projet',
- 'public' => 'Public',
- 'publication_date' => 'Date de publication',
- 'purge_completed' => 'Purge effectuée (%d articles supprimés).',
- 'purge_now' => 'Purger maintenant',
- 'queries' => 'Filtres utilisateurs',
- '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"',
- 'query_state_0' => 'Afficher tous les articles',
- 'query_state_1' => 'Afficher les articles lus',
- 'query_state_2' => 'Afficher les articles non lus',
- 'query_state_3' => 'Afficher tous les articles',
- 'query_state_4' => 'Afficher les articles favoris',
- 'query_state_5' => 'Afficher les articles lus et favoris',
- 'query_state_6' => 'Afficher les articles non lus et favoris',
- 'query_state_7' => 'Afficher les articles favoris',
- 'query_state_8' => 'Afficher les articles non favoris',
- 'query_state_9' => 'Afficher les articles lus et non favoris',
- 'query_state_10' => 'Afficher les articles non lus et non favoris',
- 'query_state_11' => 'Afficher les articles non favoris',
- 'query_state_12' => 'Afficher tous les articles',
- 'query_state_13' => 'Afficher les articles lus',
- 'query_state_14' => 'Afficher les articles non lus',
- 'query_state_15' => 'Afficher tous les articles',
- 'random_string' => 'Chaîne aléatoire',
- 'reader_view' => 'Vue lecture',
- 'reading_configuration' => 'Lecture',
- 'reading_confirm' => 'Afficher une confirmation lors des actions “marquer tout comme lu”',
- 'refresh' => 'Actualisation',
- 'related_tags' => 'Tags associés',
- 'retrieve_truncated_feeds' => 'Permet de récupérer les flux tronqués (attention, demande plus de temps !)',
- 'rss_feed_management' => 'Gestion des flux RSS',
- 'rss_feeds_of' => 'Flux RSS de %s',
- 'rss_view' => 'Flux RSS',
- 'sat' => 'sam.',
- 'save' => 'Enregistrer',
- 'scroll' => 'au défilement de la page',
- 'search' => 'Rechercher des mots ou des #tags',
- 'search_short' => 'Rechercher',
- 'seconds_(0_means_no_timeout)' => 'secondes (0 signifie aucun timeout ) ',
- 'see_on_website' => 'Voir sur le site d’origine',
- 'see_website' => 'Voir le site',
- 'sep' => 'sep.',
- 'september' => 'septembre',
- 'shaarli' => 'Shaarli',
- 'share' => 'Partager',
- 'share_name' => 'Nom du partage à afficher',
- 'share_url' => 'URL du partage à utiliser',
- 'sharing' => 'Partage',
- 'sharing_management' => 'Gestion des options de partage',
- 'shift_for_all_read' => '+ shift pour marquer tous les articles comme lus',
- 'shortcuts' => 'Raccourcis',
- 'shortcuts_article_action' => 'Actions associées à l’article courant',
- 'shortcuts_navigation' => 'Navigation',
- 'shortcuts_navigation_help' => 'Avec le modificateur "Shift", les raccourcis de navigation s’appliquent aux flux.
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',
- 'show_favorite' => 'Afficher les favoris',
- 'show_in_all_flux' => 'Afficher dans le flux principal',
- 'show_not_favorite' => 'Afficher tout sauf les favoris',
- 'show_not_reads' => 'Afficher les non lus',
- 'show_read' => 'Afficher les lus',
- 'sort_order' => 'Ordre de tri',
- 'starred_list' => 'Liste des articles favoris',
- 'stats' => 'Statistiques',
- 'stats_entry_count' => 'Nombre d’articles',
- 'stats_entry_per_category' => 'Articles par catégorie',
- 'stats_entry_per_day' => 'Nombre d’articles par jour (30 derniers jours)',
- 'stats_entry_per_day_of_week' => 'Par jour de la semaine (moyenne : %.2f messages)',
- 'stats_entry_per_hour' => 'Par heure (moyenne : %.2f messages)',
- 'stats_entry_per_month' => 'Par mois (moyenne : %.2f messages)',
- 'stats_entry_repartition' => 'Répartition des articles',
- 'stats_feed_per_category' => 'Flux par catégorie',
- 'stats_idle' => 'Flux inactifs',
- 'stats_main' => 'Statistiques principales',
- 'stats_no_idle' => 'Il n’y a aucun flux inactif !',
- 'stats_percent_of_total' => '%% du total',
- 'stats_repartition' => 'Répartition des articles',
- 'stats_top_feed' => 'Les dix plus gros flux',
- 'status_favorites' => 'favoris',
- 'status_read' => 'lus',
- 'status_total' => 'total',
- 'status_unread' => 'non lus',
- 'steps' => 'Étapes',
- 'sticky_post' => 'Aligner l’article en haut quand il est ouvert',
- 'submit' => 'Valider',
- 'subscription_management' => 'Gestion des abonnements',
- 'sun' => 'dim.',
- 'theme' => 'Thème',
- 'think_to_add' => 'Vous pouvez ajouter des flux.',
- 'this_is_the_end' => 'This is the end',
- 'thu' => 'jeu.',
- 'today' => 'Aujourd’hui',
- 'top_line' => 'Ligne du haut',
- 'truncate' => 'Supprimer tous les articles',
- 'ttl' => 'Ne pas automatiquement rafraîchir plus souvent que',
- 'tue' => 'mar.',
- 'twitter' => 'Twitter',
- 'unsafe_autologin' => 'Autoriser les connexions automatiques non-sûres au format : ',
- 'update' => 'Mise à jour',
- 'update_apply' => 'Appliquer la mise à jour',
- 'update_can_apply' => 'Une mise à jour est disponible.',
- 'update_check' => 'Vérifier les mises à jour',
- 'update_end' => 'La mise à jour est terminée, vous pouvez maintenant passer à l’étape finale.',
- 'update_finished' => 'La mise à jour est terminée !',
- 'update_last' => 'Dernière vérification : %s',
- 'update_long' => 'Ce processus peut prendre longtemps, selon la taille de votre base de données. Vous aurez peut-être à attendre que cette page dépasse son temps maximum d’exécution (~5 minutes) puis à la recharger.',
- 'update_problem' => 'La mise à jour a rencontré un problème : %s',
- 'update_server_not_found' => 'Le serveur de mise à jour n’a pas été trouvé. [%s]',
- 'update_start' => 'Lancer la mise à jour',
- 'update_system' => 'Système de mise à jour',
- 'updated' => 'Modifications enregistrées.',
- 'upon_reception' => 'dès la réception du nouvel article',
- 'user_created' => 'L’utilisateur %s a été créé.',
- 'user_deleted' => 'L’utilisateur %s a été supprimé.',
- 'user_filter' => 'Accéder aux filtres utilisateur',
- 'user_filter_help' => 'S’il n’y a qu’un filtre utilisateur, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.',
- 'username' => 'Nom d’utilisateur',
- 'username_admin' => 'Nom d’utilisateur administrateur',
- 'users' => 'Utilisateurs',
- 'users_list' => 'Liste des utilisateurs',
- 'version' => 'Version',
- 'version_update' => 'Mise à jour',
- 'wallabag' => 'wallabag',
- 'website' => 'Site Internet',
- 'website_url' => 'URL du site',
- 'wed' => 'mer.',
- 'width_large' => 'Large',
- 'width_medium' => 'Moyenne',
- 'width_no_limit' => 'Pas de limite',
- 'width_thin' => 'Fine',
- 'yes' => 'Oui',
- 'yesterday' => 'Hier',
- 'your_diaspora_pod' => 'Votre pod Diaspora*',
- 'your_favorites' => 'Vos favoris',
- 'your_rss_feeds' => 'Vos flux RSS',
- 'your_shaarli' => 'Votre Shaarli',
- 'your_wallabag' => 'Votre wallabag',
- 'zip_error' => 'Une erreur est survenue durant l’import du fichier Zip.',
);
diff --git a/app/i18n/fr/index.php b/app/i18n/fr/index.php
index afca37ed3..3279543bd 100644
--- a/app/i18n/fr/index.php
+++ b/app/i18n/fr/index.php
@@ -1,5 +1,73 @@
array(
+ '_' => 'À propos',
+ 'agpl3' => 'AGPL 3',
+ 'bugs_reports' => 'Rapports de bugs',
+ 'credits' => 'Crédits',
+ 'credits_content' => 'Des éléments de design sont issus du projet Bootstrap bien que FreshRSS n’utilise pas ce framework. Les icônes sont issues du projet GNOME. La police Open Sans utilisée a été créée par Steve Matteson. Les favicons sont récupérés grâce au site getFavicon. FreshRSS repose sur Minz, un framework PHP.',
+ 'freshrss_description' => 'FreshRSS est un agrégateur de flux RSS à auto-héberger à l’image de Kriss Feed ou Leed. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable.',
+ 'github_or_email' => 'sur Github ou par courriel',
+ 'lead_developer' => 'Développeur principal',
+ 'license' => 'Licence',
+ 'project_website' => 'Site du projet',
+ 'title' => 'À propos',
+ 'version' => 'Version',
+ 'website' => 'Site Internet',
+ ),
+ 'feed' => array(
+ 'add' => 'Vous pouvez ajouter des flux.',
+ 'empty' => 'Il n’y a aucun article à afficher.',
+ 'rss_of' => 'Flux RSS de %s',
+ 'title' => 'Vos flux RSS',
+ 'title_global' => 'Vue globale',
+ 'title_fav' => 'Vos favoris',
+ ),
+ 'log' => array(
+ '_' => 'Logs',
+ 'clear' => 'Effacer les logs',
+ 'empty' => 'Les logs sont vides.',
+ 'title' => 'Logs',
+ ),
+ 'menu' => array(
+ 'about' => 'À propos de FreshRSS',
+ 'add_query' => 'Créer un filtre',
+ 'before_one_day' => 'Antérieurs à 1 jour',
+ 'before_one_week' => 'Antérieurs à 1 semaine',
+ 'favorites' => 'Favoris (%s)',
+ 'global_view' => 'Vue globale',
+ 'main_stream' => 'Flux principal',
+ 'mark_all_read' => 'Tout marquer comme lu',
+ 'mark_cat_read' => 'Marquer la catégorie comme lue',
+ 'mark_feed_read' => 'Marquer le flux comme lu',
+ 'newer_first' => 'Plus récents en premier',
+ 'non-starred' => 'Afficher tout sauf les favoris',
+ 'normal_view' => 'Vue normale',
+ 'older_first' => 'Plus anciens en premier',
+ 'queries' => 'Filtres utilisateurs',
+ 'read' => 'Afficher les lus',
+ 'reader_view' => 'Vue lecture',
+ 'rss_view' => 'Flux RSS',
+ 'search_short' => 'Rechercher',
+ 'starred' => 'Afficher les favoris',
+ 'stats' => 'Statistiques',
+ 'subscription' => 'Gestion des abonnements',
+ 'unread' => 'Afficher les non lus',
+ ),
+ 'share' => array(
+ '_' => 'Partager',
+ 'blogotext' => 'Blogotext',
+ 'diaspora' => 'Diaspora*',
+ 'email' => 'Courriel',
+ 'facebook' => 'Facebook',
+ 'g+' => 'Google+',
+ 'print' => 'Imprimer',
+ 'shaarli' => 'Shaarli',
+ 'twitter' => 'Twitter',
+ 'wallabag' => 'wallabag',
+ ),
+ 'tag' => array(
+ 'related' => 'Tags associés',
+ ),
);
diff --git a/app/i18n/fr/install.php b/app/i18n/fr/install.php
index afca37ed3..f1ef2ea3f 100644
--- a/app/i18n/fr/install.php
+++ b/app/i18n/fr/install.php
@@ -1,5 +1,105 @@
array(
+ 'finish' => 'Terminer l’installation',
+ 'next_step' => 'Passer à l’étape suivante',
+ ),
+ 'auth' => array(
+ 'email_persona' => 'Adresse courriel de connexion
(pour Mozilla Persona)',
+ 'form' => 'Formulaire (traditionnel, requiert JavaScript)',
+ 'http' => 'HTTP (pour utilisateurs avancés avec HTTPS)',
+ 'none' => 'Aucune (dangereux)',
+ 'password_form' => 'Mot de passe
(pour connexion par formulaire)',
+ 'persona' => 'Mozilla Persona (moderne, requiert JavaScript)',
+ 'type' => 'Méthode d’authentification',
+ ),
+ 'bdd' => array(
+ '_' => 'Base de données',
+ 'conf' => array(
+ '_' => 'Configuration de la base de données',
+ 'ko' => 'Vérifiez les informations d’accès à la base de données.',
+ 'ok' => 'La configuration de la base de données a été enregistrée.',
+ ),
+ 'host' => 'Hôte',
+ 'password' => 'Mot de passe',
+ 'prefix' => 'Préfixe des tables',
+ 'type' => 'Type de base de données',
+ 'username' => 'Nom d’utilisateur',
+ ),
+ 'check' => array(
+ '_' => 'Vérifications',
+ 'cache' => array(
+ 'nok' => 'Veuillez vérifier les droits sur le répertoire ./data/cache. Le serveur HTTP doit être capable d’écrire dedans',
+ 'ok' => 'Les droits sur le répertoire de cache sont bons.',
+ ),
+ 'ctype' => array(
+ 'nok' => 'Il manque une librairie pour la vérification des types de caractères (php-ctype).',
+ 'ok' => 'Vous disposez du nécessaire pour la vérification des types de caractères (ctype).',
+ ),
+ 'curl' => array(
+ 'nok' => 'Vous ne disposez pas de cURL (paquet php5-curl).',
+ 'ok' => 'Vous disposez de cURL.',
+ ),
+ 'data' => array(
+ 'nok' => 'Veuillez vérifier les droits sur le répertoire ./data. Le serveur HTTP doit être capable d’écrire dedans',
+ 'ok' => 'Les droits sur le répertoire de data sont bons.',
+ ),
+ 'dom' => array(
+ 'nok' => 'Il manque une librairie pour parcourir le DOM (paquet php-xml).',
+ 'ok' => 'Vous disposez du nécessaire pour parcourir le DOM.',
+ ),
+ 'favicons' => array(
+ 'nok' => 'Veuillez vérifier les droits sur le répertoire ./data/favicons. Le serveur HTTP doit être capable d’écrire dedans',
+ 'ok' => 'Les droits sur le répertoire des favicons sont bons.',
+ ),
+ 'http_referer' => array(
+ 'nok' => 'Veuillez vérifier que vous ne modifiez pas votre HTTP REFERER.',
+ 'ok' => 'Le HTTP REFERER est connu et semble correspondre à votre serveur.',
+ ),
+ 'logs' => array(
+ 'nok' => 'Veuillez vérifier les droits sur le répertoire ./data/logs. Le serveur HTTP doit être capable d’écrire dedans',
+ 'ok' => 'Les droits sur le répertoire des logs sont bons.',
+ ),
+ 'minz' => array(
+ 'nok' => 'Vous ne disposez pas de la librairie Minz.',
+ 'ok' => 'Vous disposez du framework Minz',
+ ),
+ 'pcre' => array(
+ 'nok' => 'Il manque une librairie pour les expressions régulières (php-pcre).',
+ 'ok' => 'Vous disposez du nécessaire pour les expressions régulières (PCRE).',
+ ),
+ 'pdo' => array(
+ 'nok' => 'Vous ne disposez pas de PDO ou d’un des drivers supportés (pdo_mysql, pdo_sqlite).',
+ 'ok' => 'Vous disposez de PDO et d’au moins un des drivers supportés (pdo_mysql, pdo_sqlite).',
+ ),
+ 'persona' => array(
+ 'nok' => 'Veuillez vérifier les droits sur le répertoire ./data/persona. Le serveur HTTP doit être capable d’écrire dedans',
+ 'ok' => 'Les droits sur le répertoire de Mozilla Persona sont bons.',
+ ),
+ 'php' => array(
+ 'nok' => 'Votre version de PHP est la %s mais FreshRSS requiert au moins la version %s.',
+ 'ok' => 'Votre version de PHP est la %s, qui est compatible avec FreshRSS.',
+ ),
+ ),
+ 'conf' => array(
+ '_' => 'Configuration générale',
+ 'ok' => 'La configuration générale a été enregistrée.',
+ ),
+ 'congratulations' => 'Félicitations !',
+ 'default_user' => 'Nom de l’utilisateur par défaut (16 caractères alphanumériques maximum)',
+ 'delete_articles_after' => 'Supprimer les articles après',
+ 'fix_errors_before' => 'Veuillez corriger les erreurs avant de passer à l’étape suivante.',
+ 'javascript_is_better' => 'FreshRSS est plus agréable à utiliser avec JavaScript activé',
+ 'language' => array(
+ '_' => 'Langue',
+ 'choose' => 'Choisissez la langue pour FreshRSS',
+ 'defined' => 'La langue a bien été définie.',
+ ),
+ 'not_deleted' => 'Quelque chose s’est mal passé, vous devez supprimer le fichier %s à la main.',
+ 'ok' => 'L’installation s’est bien passée.',
+ 'step' => 'étape %d',
+ 'steps' => 'Étapes',
+ 'title' => 'Installation · FreshRSS',
+ 'this_is_the_end' => 'This is the end',
);
diff --git a/app/i18n/fr/sub.php b/app/i18n/fr/sub.php
index 6ef4002a6..a3f7c4d6d 100644
--- a/app/i18n/fr/sub.php
+++ b/app/i18n/fr/sub.php
@@ -1,10 +1,61 @@
array(
- 'over_max' => 'Vous avez atteint votre limite de catégories (%d)',
+ 'category' => array(
+ '_' => 'Catégorie',
+ 'add' => 'Ajouter une catégorie',
+ 'empty' => 'Catégorie vide',
+ 'new' => 'Nouvelle catégorie',
),
- 'feeds' => array(
- 'over_max' => 'Vous avez atteint votre limite de flux (%d)',
+ 'feed' => array(
+ 'add' => 'Ajouter un flux RSS',
+ 'advanced' => 'Avancé',
+ 'archiving' => 'Archivage',
+ 'auth' => array(
+ 'configuration' => 'Identification',
+ 'help' => 'La connexion permet d’accéder aux flux protégés par une authentification HTTP.',
+ 'http' => 'Authentification HTTP',
+ 'password' => 'Mot de passe HTTP',
+ 'username' => 'Identifiant HTTP',
+ ),
+ 'css_help' => 'Permet de récupérer les flux tronqués (attention, demande plus de temps !)',
+ 'css_path' => 'Sélecteur CSS des articles sur le site d’origine',
+ 'description' => 'Description',
+ 'empty' => 'Ce flux est vide. Veuillez vérifier qu’il est toujours maintenu.',
+ 'error' => 'Ce flux a rencontré un problème. Veuillez vérifier qu’il est toujours accessible puis actualisez-le.',
+ 'in_main_stream' => 'Afficher dans le flux principal',
+ 'informations' => 'Informations',
+ 'keep_history' => 'Nombre minimum d’articles à conserver',
+ 'moved_category_deleted' => 'Lors de la suppression d’une catégorie, ses flux seront automatiquement classés dans %s.',
+ 'no_selected' => 'Aucun flux sélectionné.',
+ 'number_entries' => '%d articles',
+ 'stats' => 'Statistiques',
+ 'think_to_add' => 'Vous pouvez ajouter des flux.',
+ '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',
+ 'website' => 'URL du site',
+ ),
+ 'import_export' => array(
+ 'export' => 'Exporter',
+ 'export_opml' => 'Exporter la liste des flux (OPML)',
+ 'export_starred' => 'Exporter les favoris',
+ 'feed_list' => 'Liste des articles de %s',
+ 'file_to_import' => 'Fichier à importer
(OPML, Json ou Zip)',
+ 'file_to_import_no_zip' => 'Fichier à importer
(OPML ou Json)',
+ 'import' => 'Importer',
+ 'starred_list' => 'Liste des articles favoris',
+ 'title' => 'Importer / exporter',
+ ),
+ 'menu' => array(
+ 'bookmark' => 'S’abonner (bookmark FreshRSS)',
+ 'import_export' => 'Importer / exporter',
+ 'subscription_management' => 'Gestion des abonnements',
+ ),
+ 'title' => array(
+ '_' => 'Gestion des abonnements',
+ 'feed_management' => 'Gestion des flux RSS',
),
);
diff --git a/app/install.php b/app/install.php
index f54565c73..8091a9eb0 100644
--- a/app/install.php
+++ b/app/install.php
@@ -85,7 +85,7 @@ function saveLanguage() {
function saveStep2() {
if (!empty($_POST)) {
- $_SESSION['title'] = substr(trim(param('title', _t('freshrss'))), 0, 25);
+ $_SESSION['title'] = substr(trim(param('title', _t('gen.freshrss'))), 0, 25);
$_SESSION['old_entries'] = param('old_entries', 3);
$_SESSION['auth_type'] = param('auth_type', 'form');
$_SESSION['default_user'] = substr(preg_replace('/[^a-zA-Z0-9]/', '', param('default_user', '')), 0, 16);
@@ -394,7 +394,7 @@ function checkBD() {
$c = new PDO($str, $_SESSION['bd_user'], $_SESSION['bd_password'], $driver_options);
if (defined('SQL_CREATE_TABLES')) {
- $sql = sprintf(SQL_CREATE_TABLES, $_SESSION['bd_prefix_user'], _t('default_category'));
+ $sql = sprintf(SQL_CREATE_TABLES, $_SESSION['bd_prefix_user'], _t('gen.short.default_category'));
$stm = $c->prepare($sql);
$ok = $stm->execute();
} else {
@@ -402,7 +402,7 @@ function checkBD() {
if (is_array($SQL_CREATE_TABLES)) {
$ok = true;
foreach ($SQL_CREATE_TABLES as $instruction) {
- $sql = sprintf($instruction, $_SESSION['bd_prefix_user'], _t('default_category'));
+ $sql = sprintf($instruction, $_SESSION['bd_prefix_user'], _t('gen.short.default_category'));
$stm = $c->prepare($sql);
$ok &= $stm->execute();
}
@@ -425,13 +425,13 @@ function printStep0() {
global $actual;
?>
-
+