From aa232d8fd52cf548c0b2e7d96e026e684eadda53 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 3 Dec 2014 16:45:51 +0100 Subject: Update the i18n system. Follow recommendations from https://github.com/FreshRSS/FreshRSS/issues/334 --- app/i18n/en/conf.php | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 app/i18n/en/conf.php (limited to 'app/i18n/en/conf.php') diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php new file mode 100644 index 000000000..460804774 --- /dev/null +++ b/app/i18n/en/conf.php @@ -0,0 +1,7 @@ + array( + 'articles_and_size' => '%s articles (%s)', + ), +); -- cgit v1.2.3 From fee1ae997af678cb834d9db25a636032f43a5674 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Dec 2014 19:02:05 +0100 Subject: Fix i18n for conf, entry, error, feed Controllers --- app/Controllers/authController.php | 8 +++---- app/Controllers/configureController.php | 30 ++++++++++++------------ app/Controllers/entryController.php | 6 ++--- app/Controllers/errorController.php | 4 ++-- app/Controllers/feedController.php | 37 ++++++++++++++++-------------- app/Controllers/subscriptionController.php | 4 ++-- app/i18n/en/admin.php | 4 ++++ app/i18n/en/conf.php | 21 ++++++++++++++++- app/i18n/en/feedback.php | 26 +++++++++++++++++++-- app/i18n/en/gen.php | 20 ---------------- app/i18n/en/sub.php | 1 + app/i18n/fr/admin.php | 4 ++++ app/i18n/fr/conf.php | 21 ++++++++++++++++- app/i18n/fr/feedback.php | 28 +++++++++++++++++++--- app/i18n/fr/gen.php | 23 +------------------ app/i18n/fr/sub.php | 1 + 16 files changed, 146 insertions(+), 92 deletions(-) (limited to 'app/i18n/en/conf.php') diff --git a/app/Controllers/authController.php b/app/Controllers/authController.php index 55481f859..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.auth.title') . ' · '); + Minz_View::prependTitle(_t('admin.auth.title') . ' · '); if (Minz_Request::isPost()) { $ok = true; @@ -56,10 +56,10 @@ class FreshRSS_auth_Controller extends Minz_ActionController { invalidateHttpCache(); if ($ok) { - Minz_Request::good(_t('feedback.configuration.updated'), + Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'auth', 'a' => 'index')); } else { - Minz_Request::bad(_t('feedback.configuration.error'), + Minz_Request::bad(_t('feedback.conf.error'), array('c' => 'auth', 'a' => 'index')); } } @@ -285,7 +285,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { * After reseting, form auth is set by default. */ public function resetAction() { - Minz_View::prependTitle(_t('feedback.auth.title_reset') . ' · '); + Minz_View::prependTitle(_t('admin.auth.title_reset') . ' · '); Minz_View::appendScript(Minz_Url::display( '/scripts/bcrypt.min.js?' . @filemtime(PUBLIC_PATH . '/scripts/bcrypt.min.js') 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/subscriptionController.php b/app/Controllers/subscriptionController.php index 1ed2b6bbf..6152b7252 100644 --- a/app/Controllers/subscriptionController.php +++ b/app/Controllers/subscriptionController.php @@ -106,9 +106,9 @@ class FreshRSS_subscription_Controller extends Minz_ActionController { $this->view->feed->_category($cat); $this->view->feed->faviconPrepare(); - Minz_Request::good(_t('feedback.sub.feed_updated'), array('c' => 'subscription', 'params' => array('id' => $id))); + Minz_Request::good(_t('feedback.sub.feed.updated'), array('c' => 'subscription', 'params' => array('id' => $id))); } else { - Minz_Request::bad(_t('feedback.sub.error_occurred'), array('c' => 'subscription')); + Minz_Request::bad(_t('feedback.sub.error'), array('c' => 'subscription')); } } } diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php index 2dac57d91..05077cf66 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -1,6 +1,10 @@ array( + 'title' => 'Authentication', + 'title_reset' => 'Authentication reset', + ), 'check_install' => array( 'cache' => array( 'nok' => 'Check permissions on ./data/cache directory. HTTP server must have rights to write into', diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index 460804774..0a1aa9f8e 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -1,7 +1,26 @@ array( + 'archiving' => array( + 'title' => 'Archiving', + ), + 'display' => array( + 'title' => 'Display', + ), + 'query' => array( + 'number' => 'Query n°%d', + 'title' => 'User queries', + ), + 'reading' => array( + 'title' => 'Reading', + ), + 'sharing' => array( + 'title' => 'Sharing', + ), + 'shortcut' => array( + 'title' => 'Shortcuts', + ), + 'user' => array( 'articles_and_size' => '%s articles (%s)', ), ); diff --git a/app/i18n/en/feedback.php b/app/i18n/en/feedback.php index 148ec1acc..0dcbbe44d 100644 --- a/app/i18n/en/feedback.php +++ b/app/i18n/en/feedback.php @@ -1,6 +1,13 @@ array( + 'optimization_complete' => 'Optimization complete', + ), + 'access' => array( + 'denied' => 'You don’t have permission to access this page', + 'not_found' => 'You are looking for a page which doesn’t exist', + ), 'auth' => array( 'form' => array( 'not_set' => 'A problem occured during authentication system configuration. Please retry later.', @@ -16,9 +23,11 @@ return array( 'no_password_set' => 'Administrator password hasn’t been set. This feature isn’t available.', 'not_persona' => 'Only Persona system can be reset.', ), - 'configuration' => array( - 'updated' => 'Configuration has been updated', + 'conf' => array( 'error' => 'An error occurred during configuration saving', + 'query_created' => 'Query "%s" has been created.', + 'shortcuts_updated' => 'Shortcuts have been updated', + 'updated' => 'Configuration has been updated', ), 'import_export' => array( 'export_no_zip_extension' => 'Zip extension is not present on your server. Please try to export files one by one.', @@ -43,10 +52,23 @@ return array( 'updated' => 'Category has been updated.', ), 'feed' => array( + 'actualized' => '%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)', ), 'user_profile' => array( 'updated' => 'Your profile has been modified', diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index 48bda04a1..2a858d6a6 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -130,12 +130,10 @@ return array( 'user_profile' => 'Profile', ), 'freshrss' => 'FreshRSS', - 'access_denied' => 'You don’t have permission to access this page', 'activate_sharing' => 'Activate sharing', 'after_onread' => 'After “mark all as read”,', 'allow_anonymous' => 'Allow anonymous reading of the articles of the default user (%s)', 'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles', - 'already_subscribed' => 'You have already subscribed to %s', 'api_enabled' => 'Allow API access (required for mobile apps)', 'archiving_configuration_help' => 'More options are available in the individual stream settings', 'article' => 'Article', @@ -150,7 +148,6 @@ return array( 'auth_form' => 'Web form (traditional, requires JavaScript)', 'auth_none' => 'None (dangerous)', 'auth_persona' => 'Mozilla Persona (modern, requires JavaScript)', - 'auth_reset' => 'Authentication reset', 'auth_token' => 'Authentication token', 'auth_type' => 'Authentication method', 'auth_will_reset' => 'Authentication system will be reset: a form will be used instead of Persona.', @@ -205,13 +202,7 @@ return array( 'explain_token' => 'Allows to access RSS output of the default user without authentication.
%s?output=rss&token=%s', 'favicons_is_ok' => 'Permissions on favicons directory are good', 'feed' => 'Feed', - 'feed_actualized' => '%s has been updated', - 'feed_added' => 'RSS feed %s has been added', - 'feed_deleted' => 'Feed has been deleted', - 'feed_not_added' => '%s could not be added', 'feeds' => 'Feeds', - 'feeds_actualized' => 'RSS feeds have been updated', - 'feeds_marked_read' => 'Feeds have been marked as read', 'file_is_nok' => 'Check permissions on %s directory. HTTP server must have rights to write into', 'finish_installation' => 'Complete installation', 'first_article' => 'Skip to the first article', @@ -231,8 +222,6 @@ return array( 'install_not_deleted' => 'Something went wrong; you must delete the file %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_url' => 'URL %s is invalid', 'is_admin' => 'is administrator', 'javascript_for_shortcuts' => 'JavaScript must be enabled in order to use shortcuts', 'javascript_is_better' => 'FreshRSS is more pleasant with JavaScript enabled', @@ -253,13 +242,10 @@ return array( 'minz_is_ok' => 'You have the Minz framework', 'month' => 'months', 'more_information' => 'More information', - 'n_entries_deleted' => '%d articles have been deleted', - 'n_feeds_actualized' => '%d feeds have been updated', 'next_article' => 'Skip to the next article', 'next_page' => 'Skip to the next page', 'next_step' => 'Go to the next step', 'no_feed_actualized' => 'No RSS feed has been updated', - 'no_feed_to_refresh' => 'There is no feed to refresh…', 'no_query' => 'You haven’t created any user query yet.', 'no_query_filter' => 'No filter', 'no_rss_feed' => 'No RSS feed', @@ -270,10 +256,8 @@ return array( 'not_yet_implemented' => 'Not yet implemented', 'number_divided_when_reader' => 'Divided by 2 in the reading view.', 'number_feeds' => '%d feeds', - 'optimization_complete' => 'Optimization complete', 'optimize_bdd' => 'Optimize database', 'optimize_todo_sometimes' => 'To do occasionally to reduce the size of the database', - 'page_not_found' => 'You are looking for a page which doesn’t exist', 'password' => 'Password', 'password_api' => 'Password API
(e.g., for mobile apps)', 'password_form' => 'Password
(for the Web-form login method)', @@ -290,16 +274,13 @@ return array( 'previous_page' => 'Skip to the previous page', 'public' => 'Public', 'publication_date' => 'Date of publication', - 'purge_completed' => 'Purge completed (%d articles deleted)', 'purge_now' => 'Purge now', - 'query_created' => 'Query "%s" has been created.', 'query_deprecated' => 'This query is no longer valid. The referenced category or feed has been deleted.', 'query_filter' => 'Filter applied:', 'query_get_all' => 'Display all articles', 'query_get_category' => 'Display "%s" category', 'query_get_favorite' => 'Display favorite articles', 'query_get_feed' => 'Display "%s" feed', - 'query_number' => 'Query n°%d', 'query_order_asc' => 'Display oldest articles first', 'query_order_desc' => 'Display newest articles first', 'query_search' => 'Search for "%s"', @@ -332,7 +313,6 @@ return array( 'shortcuts_navigation' => 'Navigation', 'shortcuts_navigation_help' => 'With the "Shift" modifier, navigation shortcuts apply on feeds.
With the "Alt" modifier, navigation shortcuts apply on categories.', 'shortcuts_other_action' => 'Other actions', - 'shortcuts_updated' => 'Shortcuts have been updated', 'show_adaptive' => 'Adjust showing', 'show_all_articles' => 'Show all articles', 'sort_order' => 'Sort order', diff --git a/app/i18n/en/sub.php b/app/i18n/en/sub.php index 14268c72c..27559bbc4 100644 --- a/app/i18n/en/sub.php +++ b/app/i18n/en/sub.php @@ -30,6 +30,7 @@ return array( 'number_entries' => '%d articles', 'stats' => 'Statistics', 'title' => 'Title', + 'title_add' => 'Add a RSS feed', 'ttl' => 'Do not automatically refresh more often than', 'url' => 'Feed URL', 'validator' => 'Check the validity of the feed', diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index 3132458b9..25c62c6ea 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -1,6 +1,10 @@ array( + 'title' => 'Authentification', + 'title_reset' => 'Réinitialisation de l’authentification', + ), 'check_install' => array( 'cache' => array( 'nok' => 'Veuillez vérifier les droits sur le répertoire ./data/cache. Le serveur HTTP doit être capable d’écrire dedans', diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index 460804774..deba4509e 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -1,7 +1,26 @@ array( + 'archiving' => array( + 'title' => 'Archivage', + ), + 'display' => array( + 'title' => 'Affichage', + ), + 'query' => array( + 'number' => 'Filtre n°%d', + 'title' => 'Filtres utilisateurs', + ), + 'reading' => array( + 'title' => 'Lecture', + ), + 'sharing' => array( + 'title' => 'Partage', + ), + 'shortcut' => array( + 'title' => 'Raccourcis', + ), + 'user' => array( 'articles_and_size' => '%s articles (%s)', ), ); diff --git a/app/i18n/fr/feedback.php b/app/i18n/fr/feedback.php index d79d3eccd..539fce55d 100644 --- a/app/i18n/fr/feedback.php +++ b/app/i18n/fr/feedback.php @@ -1,6 +1,13 @@ array( + 'optimization_complete' => 'Optimisation terminée.', + ), + 'access' => array( + 'denied' => 'Vous n’avez pas le droit d’accéder à cette page !', + 'not_found' => 'La page que vous cherchez n’existe pas !', + ), 'auth' => array( 'form' => array( 'not_set' => 'Un problème est survenu lors de la configuration de votre système d’authentification. Veuillez réessayer plus tard.', @@ -16,9 +23,11 @@ return array( 'no_password_set' => 'Aucun mot de passe administrateur n’a été précisé. Cette fonctionnalité n’est pas disponible.', 'not_persona' => 'Seul le système d’authentification Persona peut être réinitialisé.', ), - 'configuration' => array( + 'conf' => array( + 'error' => 'Une erreur est survenue durant la sauvegarde de la configuration', + 'query_created' => 'Le filtre "%s" a bien été créé.', + 'shortcuts_updated' => 'Les raccourcis ont été mis à jour.', 'updated' => 'La configuration a été mise à jour', - 'error' => 'Une erreur est survenue en sauvegardant la configuration', ), 'import_export' => array( 'export_no_zip_extension' => 'L’extension Zip n’est pas présente sur votre serveur. Veuillez essayer d’exporter les fichiers un par un.', @@ -43,10 +52,23 @@ return array( 'updated' => 'La catégorie a été mise à jour.', ), 'feed' => array( - 'error' => 'Le flux n’a pas pu être modifié', + 'actualized' => '%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).', ), 'user_profile' => array( 'updated' => 'Votre profil a été mis à jour', diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 55941c39d..f67ee3d52 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -15,14 +15,12 @@ return array( 'mark_read' => 'Marquer comme lu', 'remove' => 'Supprimer', 'see_website' => 'Voir le site', - 'truncate' => 'Supprimer tous les articles', 'submit' => 'Valider', + 'truncate' => 'Supprimer tous les articles', ), 'auth' => array( 'login' => 'Connexion', 'logout' => 'Déconnexion', - 'title' => 'Authentification', - 'title_reset' => 'Réinitialisation de l’authentification', ), 'date' => array( 'Apr' => '\\a\\v\\r\\i\\l', @@ -131,12 +129,10 @@ return array( 'user_profile' => 'Profil', ), 'freshrss' => 'FreshRSS', - 'access_denied' => 'Vous n’avez pas le droit d’accéder à cette page !', 'activate_sharing' => 'Activer le partage', 'after_onread' => 'Après “marquer tout comme lu”,', 'allow_anonymous' => 'Autoriser la lecture anonyme des articles de l’utilisateur par défaut (%s)', 'allow_anonymous_refresh' => 'Autoriser le rafraîchissement anonyme des flux', - 'already_subscribed' => 'Vous êtes déjà abonné à %s', 'api_enabled' => 'Autoriser l’accès par API (nécessaire pour les applis mobiles)', 'archiving_configuration_help' => 'D’autres options sont disponibles dans la configuration individuelle des flux.', 'article' => 'Article', @@ -205,13 +201,7 @@ return array( 'explain_token' => 'Permet d’accéder à la sortie RSS de l’utilisateur par défaut sans besoin de s’authentifier.
%s?output=rss&token=%s', 'favicons_is_ok' => 'Les droits sur le répertoire des favicons sont bons', '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_not_added' => '%s n’a pas pu être ajouté.', 'feeds' => 'Flux', - 'feeds_actualized' => 'Les flux ont été mis à jour.', - 'feeds_marked_read' => 'Les flux ont été marqués comme lus.', 'file_is_nok' => 'Veuillez vérifier les droits sur le répertoire %s. Le serveur HTTP doit être capable d’écrire dedans', 'finish_installation' => 'Terminer l’installation', 'first_article' => 'Passer au premier article', @@ -231,8 +221,6 @@ return array( 'install_not_deleted' => 'Quelque chose s’est mal passé, vous devez supprimer le fichier %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_url' => 'L’url %s est invalide.', 'is_admin' => 'est administrateur', 'javascript_for_shortcuts' => 'Le JavaScript doit être activé pour pouvoir profiter des raccourcis.', 'javascript_is_better' => 'FreshRSS est plus agréable à utiliser avec JavaScript activé', @@ -253,13 +241,10 @@ return array( 'minz_is_ok' => 'Vous disposez du framework Minz', 'month' => 'mois', 'more_information' => 'Plus d’informations', - 'n_entries_deleted' => '%d articles ont été supprimés.', - 'n_feeds_actualized' => '%d flux ont été mis à jour.', 'next_article' => 'Passer à l’article suivant', 'next_page' => 'Passer à la page suivante', 'next_step' => 'Passer à l’étape suivante', 'no_feed_actualized' => 'Aucun flux n’a pu être mis à jour.', - 'no_feed_to_refresh' => 'Il n’y a aucun flux à actualiser…', 'no_query' => 'Vous n’avez pas encore créé de filtre.', 'no_query_filter' => 'Aucun filtre appliqué', 'no_rss_feed' => 'Aucun flux RSS', @@ -270,10 +255,8 @@ return array( 'not_yet_implemented' => 'Pas encore implémenté', 'number_divided_when_reader' => 'Divisé par 2 dans la vue de lecture.', 'number_feeds' => '%d flux', - 'optimization_complete' => 'Optimisation terminée.', 'optimize_bdd' => 'Optimiser la base de données', 'optimize_todo_sometimes' => 'À faire de temps en temps pour réduire la taille de la BDD', - 'page_not_found' => 'La page que vous cherchez n’existe pas !', 'password' => 'Mot de passe', 'password_api' => 'Mot de passe API
(ex. : pour applis mobiles)', 'password_form' => 'Mot de passe
(pour connexion par formulaire)', @@ -290,16 +273,13 @@ return array( 'previous_page' => 'Passer à la page précédente', 'public' => 'Public', 'publication_date' => 'Date de publication', - 'purge_completed' => 'Purge effectuée (%d articles supprimés).', 'purge_now' => 'Purger maintenant', - 'query_created' => 'Le filtre "%s" a bien été créé.', 'query_deprecated' => 'Ce filtre n’est plus valide. La catégorie ou le flux concerné a été supprimé.', 'query_filter' => 'Filtres appliqués :', 'query_get_all' => 'Afficher tous les articles', 'query_get_category' => 'Afficher la catégorie "%s"', 'query_get_favorite' => 'Afficher les articles favoris', 'query_get_feed' => 'Afficher le flux "%s"', - 'query_number' => 'Filtre n°%d', 'query_order_asc' => 'Afficher les articles les plus anciens en premier', 'query_order_desc' => 'Afficher les articles les plus récents en premier', 'query_search' => 'Recherche de "%s"', @@ -332,7 +312,6 @@ return array( 'shortcuts_navigation' => 'Navigation', 'shortcuts_navigation_help' => 'Avec le modificateur "Shift", les raccourcis de navigation s’appliquent aux flux.
Avec le modificateur "Alt", les raccourcis de navigation s’appliquent aux catégories.', 'shortcuts_other_action' => 'Autres actions', - 'shortcuts_updated' => 'Les raccourcis ont été mis à jour.', 'show_adaptive' => 'Adapter l’affichage', 'show_all_articles' => 'Afficher tous les articles', 'sort_order' => 'Ordre de tri', diff --git a/app/i18n/fr/sub.php b/app/i18n/fr/sub.php index 0257c8b4d..b9d9f4bc2 100644 --- a/app/i18n/fr/sub.php +++ b/app/i18n/fr/sub.php @@ -30,6 +30,7 @@ return array( 'number_entries' => '%d articles', 'stats' => 'Statistiques', 'title' => 'Titre', + 'title_add' => 'Ajouter un flux RSS', 'ttl' => 'Ne pas automatiquement rafraîchir plus souvent que', 'url' => 'URL du flux', 'validator' => 'Vérifier la valididé du flux', -- cgit v1.2.3 From 59fc73baa9cbd87fdc2d63e83533a36533c740bf Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Dec 2014 19:32:59 +0100 Subject: Fix i18n for update and user controllers --- app/Controllers/updateController.php | 30 +++++++++++++++--------------- app/Controllers/userController.php | 12 ++++++------ app/i18n/en/admin.php | 5 +++++ app/i18n/en/conf.php | 3 +++ app/i18n/en/feedback.php | 21 ++++++++++++++++++++- app/i18n/en/gen.php | 15 --------------- app/i18n/fr/admin.php | 7 ++++++- app/i18n/fr/conf.php | 3 +++ app/i18n/fr/feedback.php | 21 ++++++++++++++++++++- app/i18n/fr/gen.php | 14 -------------- 10 files changed, 78 insertions(+), 53 deletions(-) (limited to 'app/i18n/en/conf.php') 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/i18n/en/admin.php b/app/i18n/en/admin.php index 05077cf66..7778c56a7 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -81,6 +81,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.', @@ -122,7 +123,11 @@ return array( 'title' => 'Statistics', 'top_feed' => 'Top ten feeds', ), + 'update' => array( + 'title' => 'Update system', + ), 'users' => array( 'articles_and_size' => '%s articles (%s)', + 'title' => 'Manage users', ), ); diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index 0a1aa9f8e..09f9fa9ce 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -11,6 +11,9 @@ return array( 'number' => 'Query n°%d', 'title' => 'User queries', ), + 'profile' => array( + 'title' => 'Profile', + ), 'reading' => array( 'title' => 'Reading', ), diff --git a/app/i18n/en/feedback.php b/app/i18n/en/feedback.php index 0dcbbe44d..192a33fcf 100644 --- a/app/i18n/en/feedback.php +++ b/app/i18n/en/feedback.php @@ -70,7 +70,26 @@ return array( ), 'purge_completed' => 'Purge completed (%d articles deleted)', ), - 'user_profile' => array( + '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 2a858d6a6..761d566bf 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -123,12 +123,6 @@ return array( 'or' => 'or', 'yes' => 'Yes', ), - 'title' => array( - 'authentication' => 'Authentication', - 'check_install' => 'Installation checking', - 'user_management' => 'Manage users', - 'user_profile' => 'Profile', - ), 'freshrss' => 'FreshRSS', 'activate_sharing' => 'Activate sharing', 'after_onread' => 'After “mark all as read”,', @@ -203,7 +197,6 @@ return array( 'favicons_is_ok' => 'Permissions on favicons directory are good', 'feed' => 'Feed', 'feeds' => 'Feeds', - 'file_is_nok' => 'Check permissions on %s directory. HTTP server must have rights to write into', 'finish_installation' => 'Complete installation', 'first_article' => 'Skip to the first article', 'fix_errors_before' => 'Fix errors before skip to the next step.', @@ -250,7 +243,6 @@ return array( 'no_query_filter' => 'No filter', 'no_rss_feed' => 'No RSS feed', 'no_selected_feed' => 'No feed selected.', - 'no_update' => 'No update to apply', 'not_read' => '%d unread', 'not_reads' => '%d unread', 'not_yet_implemented' => 'Not yet implemented', @@ -323,20 +315,13 @@ return array( 'top_line' => 'Top line', 'unsafe_autologin' => 'Allow unsafe automatic login using the format: ', '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', diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index 25c62c6ea..ffb390876 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -81,6 +81,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.', @@ -122,7 +123,11 @@ return array( 'title' => 'Statistiques', 'top_feed' => 'Les dix plus gros flux', ), - 'users' => array( + 'update' => array( + 'title' => 'Système de mise à jour', + ), + 'user' => array( 'articles_and_size' => '%s articles (%s)', + 'title' => 'Gestion des utilisateurs', ), ); diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index deba4509e..9f78fde87 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -11,6 +11,9 @@ return array( 'number' => 'Filtre n°%d', 'title' => 'Filtres utilisateurs', ), + 'profile' => array( + 'title' => 'Profil', + ), 'reading' => array( 'title' => 'Lecture', ), diff --git a/app/i18n/fr/feedback.php b/app/i18n/fr/feedback.php index 539fce55d..992300c7d 100644 --- a/app/i18n/fr/feedback.php +++ b/app/i18n/fr/feedback.php @@ -70,7 +70,26 @@ return array( ), 'purge_completed' => 'Purge effectuée (%d articles supprimés).', ), - 'user_profile' => array( + '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 f67ee3d52..1866f8e22 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -123,11 +123,6 @@ return array( 'or' => 'ou', 'yes' => 'Oui', ), - 'title' => array( - 'check_install' => 'Vérification de l’installation', - 'user_management' => 'Gestion des utilisateurs', - 'user_profile' => 'Profil', - ), 'freshrss' => 'FreshRSS', 'activate_sharing' => 'Activer le partage', 'after_onread' => 'Après “marquer tout comme lu”,', @@ -202,7 +197,6 @@ return array( 'favicons_is_ok' => 'Les droits sur le répertoire des favicons sont bons', 'feed' => 'Flux', 'feeds' => 'Flux', - 'file_is_nok' => 'Veuillez vérifier les droits sur le répertoire %s. Le serveur HTTP doit être capable d’écrire dedans', 'finish_installation' => 'Terminer l’installation', 'first_article' => 'Passer au premier article', 'fix_errors_before' => 'Veuillez corriger les erreurs avant de passer à l’étape suivante.', @@ -249,7 +243,6 @@ return array( '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', 'not_read' => '%d non lu', 'not_reads' => '%d non lus', 'not_yet_implemented' => 'Pas encore implémenté', @@ -322,20 +315,13 @@ return array( 'top_line' => 'Ligne du haut', 'unsafe_autologin' => 'Autoriser les connexions automatiques non-sûres au format : ', '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', -- cgit v1.2.3 From 9ddf3679c5c0a43bad1b2d02248047e2e4e26716 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Dec 2014 23:43:55 +0100 Subject: Finish to update i18n!! See https://github.com/FreshRSS/FreshRSS/issues/334 --- app/i18n/en/conf.php | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++ app/i18n/en/gen.php | 107 --------------------------------------- app/i18n/fr/conf.php | 6 +-- 3 files changed, 142 insertions(+), 110 deletions(-) (limited to 'app/i18n/en/conf.php') diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index 09f9fa9ce..13efb650b 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -2,28 +2,167 @@ return 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/gen.php b/app/i18n/en/gen.php index 5459b83e1..43f94f1bc 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -140,111 +140,4 @@ return array( 'or' => 'or', 'yes' => 'Yes', ), - - 'after_onread' => 'After “mark all as read”,', - 'archiving_configuration_help' => 'More options are available in the individual stream settings', - '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_per_page' => 'Number of articles per page', - 'articles_to_display' => 'Articles to display', - '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.', - 'bottom_line' => 'Bottom line', - 'categories' => 'Categories', - 'categories_management' => 'Categories management', - 'categories_updated' => 'Categories have been updated', - 'collapse_article' => 'Collapse', - 'content_width' => 'Content width', - 'current_user' => 'Current user', - 'default_view' => 'Default view', - 'delete_articles_every' => 'Remove articles after', - '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', - 'first_article' => 'Skip to the first article', - 'focus_search' => 'Access search box', - 'help' => 'Display documentation', - 'hide_read_feeds' => 'Hide categories & feeds with no unread article (does not work with “Show all articles” configuration)', - 'html5_notif_timeout' => 'HTML5 notification timeout', - 'img_with_lazyload' => 'Use "lazy load" mode to load pictures', - 'is_admin' => 'is administrator', - 'javascript_for_shortcuts' => 'JavaScript must be enabled in order to use shortcuts', - 'jump_next' => 'jump to next unread sibling (feed or category)', - 'last_article' => 'Skip to the last article', - 'login_required' => 'Login required:', - 'more_information' => 'More information', - 'next_article' => 'Skip to the next article', - 'no_feed_actualized' => 'No RSS feed has been updated', - 'no_query' => 'You haven’t created any user query yet.', - 'no_query_filter' => 'No filter', - 'no_rss_feed' => 'No RSS feed', - 'not_yet_implemented' => 'Not yet implemented', - 'number_divided_when_reader' => 'Divided by 2 in the reading view.', - 'number_feeds' => '%d feeds', - 'optimize_bdd' => 'Optimize database', - 'optimize_todo_sometimes' => 'To do occasionally to reduce the size of the database', - 'password_api' => 'Password API
(e.g., for mobile apps)', - 'previous_article' => 'Skip to the previous article', - 'previous_page' => 'Skip to the previous page', - 'public' => 'Public', - 'publication_date' => 'Date of publication', - 'purge_now' => 'Purge now', - '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_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', - 'reading_confirm' => 'Display a confirmation dialog on “mark all as read” actions', - 'scroll' => 'while scrolling', - 'seconds_(0_means_no_timeout)' => 'seconds (0 means no timeout)', - 'see_on_website' => 'See on original website', - 'share_name' => 'Share name to display', - 'share_url' => 'Share URL to use', - 'sharing_management' => 'Sharing options management', - 'shift_for_all_read' => '+ shift to mark all articles as read', - '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', - 'show_adaptive' => 'Adjust showing', - 'show_all_articles' => 'Show all articles', - 'sort_order' => 'Sort order', - 'sticky_post' => 'Stick the article to the top when opened', - 'theme' => 'Theme', - 'top_line' => 'Top line', - 'upon_reception' => 'upon reception of the article', - '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.', - 'width_large' => 'Large', - 'width_medium' => 'Medium', - 'width_no_limit' => 'No limit', - 'width_thin' => 'Thin', ); diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index cf2c542e6..62d6342e9 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -6,7 +6,7 @@ return array( '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', + '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', @@ -24,12 +24,12 @@ return array( 'top_line' => 'Ligne du haut', ), 'language' => 'Langue', - 'title' => 'Affichage', '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', @@ -46,9 +46,9 @@ return array( 'get_category' => 'Afficher la catégorie "%s"', 'get_favorite' => 'Afficher les articles favoris', 'get_feed' => 'Afficher le flux "%s"', - 'number' => 'Filtre n°%d', '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"', -- cgit v1.2.3 From 39b8c75c40c74dce2730ad99cd1e0a5392c4f5f5 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Mon, 26 Jan 2015 11:48:25 +0100 Subject: Password format on profile and manage user pages Related to https://github.com/FreshRSS/FreshRSS/commit/ec75139939780810f43f4e85fbf37de2409fe584 See https://github.com/FreshRSS/FreshRSS/issues/769 --- app/i18n/de/admin.php | 1 + app/i18n/de/conf.php | 1 + app/i18n/en/admin.php | 1 + app/i18n/en/conf.php | 1 + app/i18n/fr/admin.php | 1 + app/i18n/fr/conf.php | 1 + app/i18n/fr/install.php | 2 +- app/views/user/manage.phtml | 1 + app/views/user/profile.phtml | 1 + 9 files changed, 9 insertions(+), 1 deletion(-) (limited to 'app/i18n/en/conf.php') diff --git a/app/i18n/de/admin.php b/app/i18n/de/admin.php index 597c653ff..bcd0fcc61 100644 --- a/app/i18n/de/admin.php +++ b/app/i18n/de/admin.php @@ -161,6 +161,7 @@ return array( 'email_persona' => 'Anmelde-E-Mail-Adresse
(für Mozilla Persona)', 'language' => 'Sprache', 'password_form' => 'Passwort
(für die Anmeldemethode per Webformular)', + 'password_format' => 'mindestens 7 Zeichen', 'title' => 'Benutzer verwalten', 'user_list' => 'Liste der Benutzer', 'username' => 'Nutzername', diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php index 46816c25b..64c2c0945 100644 --- a/app/i18n/de/conf.php +++ b/app/i18n/de/conf.php @@ -75,6 +75,7 @@ return array( 'email_persona' => 'Anmelde-E-Mail-Adresse
(für Mozilla Persona)', 'password_api' => 'Passwort-API
(z. B. für mobile Anwendungen)', 'password_form' => 'Passwort
(für die Anmeldemethode per Webformular)', + 'password_format' => 'mindestens 7 Zeichen', 'title' => 'Profil', ), 'reading' => array( diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php index 947d0e6c7..d2fcd3e82 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -161,6 +161,7 @@ return array( 'email_persona' => 'Login mail address
(for Mozilla Persona)', 'language' => 'Language', 'password_form' => 'Password
(for the Web-form login method)', + 'password_format' => 'At least 7 characters', 'title' => 'Manage users', 'user_list' => 'List of users', 'username' => 'Username', diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index 13efb650b..308c45d2c 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -75,6 +75,7 @@ return array( '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)', + 'password_format' => 'At least 7 characters', 'title' => 'Profile', ), 'reading' => array( diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index 980f1fccf..b740bd0d2 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -161,6 +161,7 @@ return array( 'email_persona' => 'Adresse courriel de connexion
(pour Mozilla Persona)', 'language' => 'Langue', 'password_form' => 'Mot de passe
(pour connexion par formulaire)', + 'password_format' => '7 caractères minimum', 'title' => 'Gestion des utilisateurs', 'user_list' => 'Liste des utilisateurs', 'username' => 'Nom d’utilisateur', diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index e91aeb66a..d38445b99 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -75,6 +75,7 @@ return array( '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)', + 'password_format' => '7 caractères minimum', 'title' => 'Profil', ), 'reading' => array( diff --git a/app/i18n/fr/install.php b/app/i18n/fr/install.php index 1aa4854ef..245a20c56 100644 --- a/app/i18n/fr/install.php +++ b/app/i18n/fr/install.php @@ -12,7 +12,7 @@ return array( 'http' => 'HTTP (pour utilisateurs avancés avec HTTPS)', 'none' => 'Aucune (dangereux)', 'password_form' => 'Mot de passe
(pour connexion par formulaire)', - 'password_format' => 'Minimum 7 caractères', + 'password_format' => '7 caractères minimum', 'persona' => 'Mozilla Persona (moderne, requiert JavaScript)', 'type' => 'Méthode d’authentification', ), diff --git a/app/views/user/manage.phtml b/app/views/user/manage.phtml index 11562093e..fe1b6618b 100644 --- a/app/views/user/manage.phtml +++ b/app/views/user/manage.phtml @@ -32,6 +32,7 @@ + diff --git a/app/views/user/profile.phtml b/app/views/user/profile.phtml index 4e61664bc..c44202edd 100644 --- a/app/views/user/profile.phtml +++ b/app/views/user/profile.phtml @@ -24,6 +24,7 @@ /> + -- cgit v1.2.3