diff options
| author | 2015-01-31 14:48:35 +0100 | |
|---|---|---|
| committer | 2015-01-31 14:48:35 +0100 | |
| commit | c29b6d4c226cf9c45d7d372ee4bce3bcbcca99a6 (patch) | |
| tree | 9a8f2be9185cd110988bf8a687aaa316c9145db9 /app | |
| parent | e92acfd8227bc3ac94e9039343ff76c20facf29a (diff) | |
| parent | e91b72b63cd11ae3c4f59e48439e93955242c673 (diff) | |
Merge branch 'dev' into beta
Conflicts:
README.fr.md
README.md
Diffstat (limited to 'app')
35 files changed, 941 insertions, 83 deletions
diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index 06fa186cf..b0bafda72 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -9,41 +9,43 @@ class FreshRSS_error_Controller extends Minz_ActionController { * * It is called by Minz_Error::error() method. * - * Parameters are: - * - code (default: 404) - * - logs (default: array()) + * Parameters are passed by Minz_Session to have a proper url: + * - error_code (default: 404) + * - error_logs (default: array()) */ public function indexAction() { - $code_int = Minz_Request::param('code', 404); + $code_int = Minz_Session::param('error_code', 404); + $error_logs = Minz_Session::param('error_logs', array()); + Minz_Session::_param('error_code'); + Minz_Session::_param('error_logs'); + switch ($code_int) { + case 200 : + header('HTTP/1.1 200 OK'); + break; case 403: + header('HTTP/1.1 403 Forbidden'); $this->view->code = 'Error 403 - Forbidden'; - break; - case 404: - $this->view->code = 'Error 404 - Not found'; + $this->view->errorMessage = _t('feedback.access.denied'); break; case 500: + header('HTTP/1.1 500 Internal Server Error'); $this->view->code = 'Error 500 - Internal Server Error'; break; case 503: + header('HTTP/1.1 503 Service Unavailable'); $this->view->code = 'Error 503 - Service Unavailable'; break; + case 404: default: + header('HTTP/1.1 404 Not Found'); $this->view->code = 'Error 404 - Not found'; + $this->view->errorMessage = _t('feedback.access.not_found'); } - $errors = Minz_Request::param('logs', array()); - $this->view->errorMessage = trim(implode($errors)); - if ($this->view->errorMessage == '') { - switch($code_int) { - case 403: - $this->view->errorMessage = _t('feedback.access.denied'); - break; - case 404: - default: - $this->view->errorMessage = _t('feedback.access.not_found'); - break; - } + $error_message = trim(implode($error_logs)); + if ($error_message !== '') { + $this->view->errorMessage = $error_message; } Minz_View::prependTitle($this->view->code . ' · '); diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php index db9db66a7..589777b2a 100644 --- a/app/Controllers/importExportController.php +++ b/app/Controllers/importExportController.php @@ -151,7 +151,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { private function importOpml($opml_file) { $opml_array = array(); try { - $opml_array = libopml_parse_string($opml_file); + $opml_array = libopml_parse_string($opml_file, false); } catch (LibOPML_Exception $e) { Minz_Log::warning($e->getMessage()); return true; diff --git a/app/Controllers/subscriptionController.php b/app/Controllers/subscriptionController.php index 6152b7252..333565faf 100644 --- a/app/Controllers/subscriptionController.php +++ b/app/Controllers/subscriptionController.php @@ -102,13 +102,14 @@ class FreshRSS_subscription_Controller extends Minz_ActionController { invalidateHttpCache(); - if ($feedDAO->updateFeed($id, $values)) { + $url_redirect = array('c' => 'subscription', 'params' => array('id' => $id)); + if ($feedDAO->updateFeed($id, $values) !== false) { $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'), $url_redirect); } else { - Minz_Request::bad(_t('feedback.sub.error'), array('c' => 'subscription')); + Minz_Request::bad(_t('feedback.sub.feed.error'), $url_redirect); } } } diff --git a/app/Controllers/updateController.php b/app/Controllers/updateController.php index 61b62773b..4797a3486 100644 --- a/app/Controllers/updateController.php +++ b/app/Controllers/updateController.php @@ -28,7 +28,10 @@ class FreshRSS_update_Controller extends Minz_ActionController { ); } elseif (file_exists(UPDATE_FILENAME)) { // There is an update file to apply! - $version = file_get_contents(join_path(DATA_PATH, 'last_update.txt')); + $version = @file_get_contents(join_path(DATA_PATH, 'last_update.txt')); + if (empty($version)) { + $version = 'unknown'; + } $this->view->update_to_apply = true; $this->view->message = array( 'status' => 'good', diff --git a/app/Models/ConfigurationSetter.php b/app/Models/ConfigurationSetter.php index f1c465c7c..eeb1f2f4c 100644 --- a/app/Models/ConfigurationSetter.php +++ b/app/Models/ConfigurationSetter.php @@ -153,11 +153,11 @@ class FreshRSS_ConfigurationSetter { } private function _shortcuts(&$data, $values) { - foreach ($values as $key => $value) { - if (isset($data['shortcuts'][$key])) { - $data['shortcuts'][$key] = $value; - } + if (!is_array($values)) { + return; } + + $data['shortcuts'] = $values; } private function _sort_order(&$data, $value) { @@ -210,9 +210,7 @@ class FreshRSS_ConfigurationSetter { private function _mark_when(&$data, $values) { foreach ($values as $key => $value) { - if (isset($data['mark_when'][$key])) { - $data['mark_when'][$key] = $this->handleBool($value); - } + $data['mark_when'][$key] = $this->handleBool($value); } } diff --git a/app/Models/Feed.php b/app/Models/Feed.php index 86cbb783e..5ce03be5d 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -240,19 +240,16 @@ class FreshRSS_Feed extends Minz_Model { $subscribe_url = $feed->subscribe_url(true); } + $clean_url = url_remove_credentials($subscribe_url); if ($subscribe_url !== null && $subscribe_url !== $url) { - if ($this->httpAuth != '') { - // on enlève les id si authentification HTTP - $subscribe_url = preg_replace('#((.+)://)((.+)@)(.+)#', '${1}${5}', $subscribe_url); - } - $this->_url($subscribe_url); + $this->_url($clean_url); } if (($mtime === true) ||($mtime > $this->lastUpdate)) { - syslog(LOG_DEBUG, 'FreshRSS no cache ' . $mtime . ' > ' . $this->lastUpdate . ' for ' . $subscribe_url); + Minz_Log::notice('FreshRSS no cache ' . $mtime . ' > ' . $this->lastUpdate . ' for ' . $clean_url); $this->loadEntries($feed); // et on charge les articles du flux } else { - syslog(LOG_DEBUG, 'FreshRSS use cache for ' . $subscribe_url); + Minz_Log::notice('FreshRSS use cache for ' . $clean_url); $this->entries = array(); } diff --git a/app/actualize_script.php b/app/actualize_script.php index c7959be82..fc4f9bfbb 100755 --- a/app/actualize_script.php +++ b/app/actualize_script.php @@ -21,8 +21,10 @@ $_GET['force'] = true; $_SERVER['HTTP_HOST'] = ''; +$log_file = join_path(USERS_PATH, '_', 'log.txt'); + + $app = new FreshRSS(); -$app->init(); $system_conf = Minz_Configuration::get('system'); $system_conf->auth_type = 'none'; // avoid necessity to be logged in (not saved!) @@ -42,13 +44,13 @@ $min_last_activity = time() - $limits['max_inactivity']; foreach ($users as $user) { if (($user !== $system_conf->default_user) && (FreshRSS_UserDAO::mtime($user) < $min_last_activity)) { - syslog(LOG_INFO, 'FreshRSS skip inactive user ' . $user); + Minz_Log::notice('FreshRSS skip inactive user ' . $user, $log_file); if (defined('STDOUT')) { fwrite(STDOUT, 'FreshRSS skip inactive user ' . $user . "\n"); //Unbuffered } continue; } - syslog(LOG_INFO, 'FreshRSS actualize ' . $user); + Minz_Log::notice('FreshRSS actualize ' . $user, $log_file); if (defined('STDOUT')) { fwrite(STDOUT, 'Actualize ' . $user . "...\n"); //Unbuffered } @@ -56,12 +58,15 @@ foreach ($users as $user) { Minz_Session::_param('currentUser', $user); + new Minz_ModelPdo($user); //TODO: FIXME: Quick-fix while waiting for a better FreshRSS() constructor/init FreshRSS_Auth::giveAccess(); + $app->init(); $app->run(); if (!invalidateHttpCache()) { - syslog(LOG_NOTICE, 'FreshRSS write access problem in ' . join_path(USERS_PATH, $user, 'log.txt')); + Minz_Log::notice('FreshRSS write access problem in ' . join_path(USERS_PATH, $user, 'log.txt'), + $log_file); if (defined('STDERR')) { fwrite(STDERR, 'Write access problem in ' . join_path(USERS_PATH, $user, 'log.txt') . "\n"); } @@ -69,7 +74,7 @@ foreach ($users as $user) { } -syslog(LOG_INFO, 'FreshRSS actualize done.'); +Minz_Log::notice('FreshRSS actualize done.', $log_file); if (defined('STDOUT')) { fwrite(STDOUT, 'Done.' . "\n"); $end_date = date_create('now'); diff --git a/app/i18n/de/admin.php b/app/i18n/de/admin.php new file mode 100644 index 000000000..bcd0fcc61 --- /dev/null +++ b/app/i18n/de/admin.php @@ -0,0 +1,170 @@ +<?php + +return array( + 'auth' => array( + 'allow_anonymous' => 'Anonymes Lesen der Artikel des Standardbenutzers (%s) erlauben', + 'allow_anonymous_refresh' => 'Anonymes Aktualisieren der Artikel erlauben', + 'api_enabled' => '<abbr>API</abbr>-Zugriff erlauben <small>(für mobile Anwendungen benötigt)</small>', + 'form' => 'Webformular (traditionell, benötigt JavaScript)', + 'http' => 'HTTP (HTTPS für erfahrene Benutzer)', + 'none' => 'Keine (gefährlich)', + 'persona' => 'Mozilla Persona (modern, benötigt JavaScript)', + 'title' => 'Authentifizierung', + 'title_reset' => 'Zurücksetzen der Authentifizierung', + 'token' => 'Authentifizierungs-Token', + 'token_help' => 'Erlaubt den Zugriff auf die RSS-Ausgabe des Standardbenutzers ohne Authentifizierung.', + 'type' => 'Authentifizierungsmethode', + 'unsafe_autologin' => 'Erlaube unsicheres automatisches Anmelden mit folgendem Format: ', + ), + 'check_install' => array( + 'cache' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/cache</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/cache</em> sind in Ordnung.', + ), + 'categories' => array( + 'nok' => 'Die Tabelle <em>category</em> ist schlecht konfiguriert.', + 'ok' => 'Die Tabelle <em>category</em> ist in Ordnung.', + ), + 'connection' => array( + 'nok' => 'Verbindung zur Datenbank kann nicht aufgebaut werden.', + 'ok' => 'Verbindung zur Datenbank ist in Ordnung.', + ), + 'ctype' => array( + 'nok' => 'Ihnen fehlt eine benötigte Bibliothek für die Überprüfung von Zeichentypen (php-ctype).', + 'ok' => 'Sie haben die benötigte Bibliothek für die Überprüfung von Zeichentypen (ctype).', + ), + 'curl' => array( + 'nok' => 'Ihnen fehlt cURL (Paket php5-curl).', + 'ok' => 'Sie haben die cURL-Erweiterung.', + ), + 'data' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data</em> sind in Ordnung.', + ), + 'database' => 'Datenbank-Installation', + 'dom' => array( + 'nok' => 'Ihnen fehlt eine benötigte Bibliothek um DOM zu durchstöbern (Paket php-xml).', + 'ok' => 'Sie haben die benötigte Bibliothek um DOM zu durchstöbern.', + ), + 'entries' => array( + 'nok' => 'Die Tabelle <em>entry</em> ist schlecht konfiguriert.', + 'ok' => 'Die Tabelle <em>entry</em> ist in Ordnung.', + ), + 'favicons' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/favicons</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/favicons</em> sind in Ordnung.', + ), + 'feeds' => array( + 'nok' => 'Die Tabelle <em>feed</em> ist schlecht konfiguriert.', + 'ok' => 'Die Tabelle <em>feed</em> ist in Ordnung.', + ), + 'files' => 'Datei-Installation', + 'json' => array( + 'nok' => 'Ihnen fehlt JSON (Paket php5-json).', + 'ok' => 'Sie haben die JSON-Erweiterung.', + ), + 'minz' => array( + 'nok' => 'Ihnen fehlt das Minz-Framework.', + 'ok' => 'Sie haben das Minz-Framework.', + ), + 'pcre' => array( + 'nok' => 'Ihnen fehlt eine benötigte Bibliothek für reguläre Ausdrücke (php-pcre).', + 'ok' => 'Sie haben die benötigte Bibliothek für reguläre Ausdrücke (PCRE).', + ), + 'pdo' => array( + 'nok' => 'Ihnen fehlt PDO oder einer der unterstützten Treiber (pdo_mysql, pdo_sqlite).', + 'ok' => 'Sie haben PDO und mindestens einen der unterstützten Treiber (pdo_mysql, pdo_sqlite).', + ), + 'persona' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/persona</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/persona</em> sind in Ordnung.', + ), + 'php' => array( + '_' => 'PHP-Installation', + 'nok' => 'Ihre PHP-Version ist %s aber FreshRSS benötigt mindestens Version %s.', + 'ok' => 'Ihre PHP-Version ist %s, welche kompatibel mit FreshRSS ist.', + ), + 'tables' => array( + 'nok' => 'Es fehlen eine oder mehrere Tabellen in der Datenbank.', + 'ok' => 'Tabellen existieren in der Datenbank.', + ), + 'title' => 'Installationsüberprüfung', + 'tokens' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/tokens</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/tokens</em> sind in Ordnung.', + ), + 'users' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/users</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/users</em> sind in Ordnung.', + ), + 'zip' => array( + 'nok' => 'Ihnen fehlt die ZIP-Erweiterung (Paket php5-zip).', + 'ok' => 'Sie haben die ZIP-Erweiterung.', + ), + ), + 'extensions' => array( + 'disabled' => 'Deaktiviert', + 'empty_list' => 'Es gibt keine installierte Erweiterung.', + 'enabled' => 'Aktiviert', + 'no_configure_view' => 'Diese Erweiterung kann nicht konfiguriert werden.', + 'system' => array( + '_' => 'System-Erweiterungen', + 'no_rights' => 'System-Erweiterung (Sie haben keine Berechtigung dafür)', + ), + 'title' => 'Erweiterungen', + 'user' => 'Benutzer-Erweiterungen', + ), + 'stats' => array( + '_' => 'Statistiken', + 'all_feeds' => 'Alle Feeds', + 'category' => 'Kategorie', + 'entry_count' => 'Anzahl der Einträge', + 'entry_per_category' => 'Einträge pro Kategorie', + 'entry_per_day' => 'Einträge pro Tag (letzte 30 Tage)', + 'entry_per_day_of_week' => 'Pro Wochentag (Durchschnitt: %.2f Nachrichten)', + 'entry_per_hour' => 'Pro Stunde (Durchschnitt: %.2f Nachrichten)', + 'entry_per_month' => 'Pro Monat (Durchschnitt: %.2f Nachrichten)', + 'entry_repartition' => 'Einträge-Verteilung', + 'feed' => 'Feed', + 'feed_per_category' => 'Feeds pro Kategorie', + 'idle' => 'Untätige Feeds', + 'main' => 'Haupt-Statistiken', + 'main_stream' => 'Haupt-Feeds', + 'menu' => array( + 'idle' => 'Untätige Feeds', + 'main' => 'Haupt-Statistiken', + 'repartition' => 'Artikel-Verteilung', + ), + 'no_idle' => 'Es gibt keinen untätigen Feed!', + 'number_entries' => '%d Artikel', + 'percent_of_total' => '%% Gesamt', + 'repartition' => 'Artikel-Verteilung', + 'status_favorites' => 'Favoriten', + 'status_read' => 'Gelesen', + 'status_total' => 'Gesamt', + 'status_unread' => 'Ungelesen', + 'title' => 'Statistiken', + 'top_feed' => 'Top 10-Feeds', + ), + 'update' => array( + '_' => 'System aktualisieren', + 'apply' => 'Anwenden', + 'check' => 'Auf neue Aktualisierungen prüfen', + 'current_version' => 'Ihre aktuelle Version von FreshRSS ist %s.', + 'last' => 'Letzte Überprüfung: %s', + 'none' => 'Keine Aktualisierung zum Anwenden', + 'title' => 'System aktualisieren', + ), + 'user' => array( + 'articles_and_size' => '%s Artikel (%s)', + 'create' => 'Neuen Benutzer erstellen', + 'email_persona' => 'Anmelde-E-Mail-Adresse<br /><small>(für <a href="https://persona.org/" rel="external">Mozilla Persona</a>)</small>', + 'language' => 'Sprache', + 'password_form' => 'Passwort<br /><small>(für die Anmeldemethode per Webformular)</small>', + 'password_format' => 'mindestens 7 Zeichen', + 'title' => 'Benutzer verwalten', + 'user_list' => 'Liste der Benutzer', + 'username' => 'Nutzername', + 'users' => 'Benutzer', + ), +); diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php new file mode 100644 index 000000000..64c2c0945 --- /dev/null +++ b/app/i18n/de/conf.php @@ -0,0 +1,169 @@ +<?php + +return array( + 'archiving' => array( + '_' => 'Archivierung', + 'advanced' => 'Erweitert', + 'delete_after' => 'Entferne Artikel nach', + 'help' => 'Weitere Optionen sind in den Einstellungen der individuellen Nachrichten-Feeds vorhanden.', + 'keep_history_by_feed' => 'Minimale Anzahl an Artikeln, die pro Feed behalten wird', + 'optimize' => 'Datenbank optimieren', + 'optimize_help' => 'Sollte gelegentlich durchgeführt werden, um die Größe der Datenbank zu reduzieren.', + 'purge_now' => 'Jetzt bereinigen', + 'title' => 'Archivierung', + 'ttl' => 'Aktualisiere automatisch nicht öfter als', + ), + 'display' => array( + '_' => 'Anzeige', + 'icon' => array( + 'bottom_line' => 'Fußzeile', + 'entry' => 'Artikel-Symbole', + 'publication_date' => 'Datum der Veröffentlichung', + 'related_tags' => 'Verwandte Tags', + 'sharing' => 'Teilen', + 'top_line' => 'Kopfzeile', + ), + 'language' => 'Sprache', + 'notif_html5' => array( + 'seconds' => 'Sekunden (0 bedeutet keine Zeitüberschreitung)', + 'timeout' => 'Zeitüberschreitung für HTML5-Benachrichtigung', + ), + 'theme' => 'Erscheinungsbild', + 'title' => 'Anzeige', + 'width' => array( + 'content' => 'Inhaltsbreite', + 'large' => 'Weit', + 'medium' => 'Mittel', + 'no_limit' => 'Keine Begrenzung', + 'thin' => 'Schmal', + ), + ), + 'query' => array( + '_' => 'Benutzerabfragen', + 'deprecated' => 'Diese Abfrage ist nicht länger gültig. Die referenzierte Kategorie oder der Feed ist gelöscht worden.', + 'filter' => 'Angewendeter Filter:', + 'get_all' => 'Alle Artikel anzeigen', + 'get_category' => 'Kategorie "%s" anzeigen', + 'get_favorite' => 'Lieblingsartikel anzeigen', + 'get_feed' => 'Feed "%s" anzeigen', + 'no_filter' => 'Kein Filter', + 'none' => 'Sie haben bisher keine Benutzerabfrage erstellt.', + 'number' => 'Abfrage Nr. %d', + 'order_asc' => 'Älteste Artikel zuerst anzeigen', + 'order_desc' => 'Neueste Artikel zuerst anzeigen', + 'search' => 'Suche nach "%s"', + 'state_0' => 'Alle Artikel anzeigen', + 'state_1' => 'Gelesene Artikel anzeigen', + 'state_2' => 'Ungelesene Artikel anzeigen', + 'state_3' => 'Alle Artikel anzeigen', + 'state_4' => 'Lieblingsartikel anzeigen', + 'state_5' => 'Gelesene Lieblingsartikel anzeigen', + 'state_6' => 'Ungelesene Lieblingsartikel anzeigen', + 'state_7' => 'Lieblingsartikel anzeigen', + 'state_8' => 'Keine Lieblingsartikel anzeigen', + 'state_9' => 'Gelesene ohne Lieblingsartikel anzeigen', + 'state_10' => 'Ungelesene ohne Lieblingsartikel anzeigen', + 'state_11' => 'Keine Lieblingsartikel anzeigen', + 'state_12' => 'Alle Artikel anzeigen', + 'state_13' => 'Gelesene Artikel anzeigen', + 'state_14' => 'Ungelesene Artikel anzeigen', + 'state_15' => 'Alle Artikel anzeigen', + 'title' => 'Benutzerabfragen', + ), + 'profile' => array( + '_' => 'Profil-Verwaltung', + 'email_persona' => 'Anmelde-E-Mail-Adresse<br /><small>(für <a href="https://persona.org/" rel="external">Mozilla Persona</a>)</small>', + 'password_api' => 'Passwort-API<br /><small>(z. B. für mobile Anwendungen)</small>', + 'password_form' => 'Passwort<br /><small>(für die Anmeldemethode per Webformular)</small>', + 'password_format' => 'mindestens 7 Zeichen', + 'title' => 'Profil', + ), + 'reading' => array( + '_' => 'Lesen', + 'after_onread' => 'Nach „Alle als gelesen markieren“,', + 'articles_per_page' => 'Anzahl der Artikel pro Seite', + 'auto_load_more' => 'Die nächsten Artikel am Seitenende laden', + 'auto_remove_article' => 'Artikel nach dem Lesen verstecken', + 'confirm_enabled' => 'Bei der Aktion „Alle als gelesen markieren“ einen Bestätigungsdialog anzeigen', + 'display_articles_unfolded' => 'Artikel standardmäßig ausgeklappt zeigen', + 'display_categories_unfolded' => 'Kategorien standardmäßig eingeklappt zeigen', + 'hide_read_feeds' => 'Kategorien & Feeds ohne ungelesene Artikel verstecken (funktioniert nicht mit der Einstellung „Alle Artikel zeigen“)', + 'img_with_lazyload' => 'Verwende die "träges Laden"-Methode zum Laden von Bildern', + 'jump_next' => 'springe zum nächsten ungelesenen Geschwisterelement (Feed oder Kategorie)', + 'number_divided_when_reader' => 'Geteilt durch 2 in der Lese-Ansicht.', + 'read' => array( + 'article_open_on_website' => 'wenn der Artikel auf der Original-Webseite geöffnet wird', + 'article_viewed' => 'wenn der Artikel angesehen wird', + 'scroll' => 'beim Blättern', + 'upon_reception' => 'beim Empfang des Artikels', + 'when' => 'Artikel als gelesen markieren…', + ), + 'show' => array( + '_' => 'Artikel zum Anzeigen', + 'adaptive' => 'Anzeige anpassen', + 'all_articles' => 'Alle Artikel zeigen', + 'unread' => 'Nur ungelesene zeigen', + ), + 'sort' => array( + '_' => 'Sortierreihenfolge', + 'newer_first' => 'Neuere zuerst', + 'older_first' => 'Ältere zuerst', + ), + 'sticky_post' => 'Wenn geöffnet, den Artikel ganz oben anheften', + 'title' => 'Lesen', + 'view' => array( + 'default' => 'Standard-Ansicht', + 'global' => 'Globale Ansicht', + 'normal' => 'Normale Ansicht', + 'reader' => 'Lese-Ansicht', + ), + ), + 'sharing' => array( + '_' => 'Teilen', + 'blogotext' => 'Blogotext', + 'diaspora' => 'Diaspora*', + 'email' => 'E-Mail', + 'facebook' => 'Facebook', + 'g+' => 'Google+', + 'more_information' => 'Weitere Informationen', + 'print' => 'Drucken', + 'shaarli' => 'Shaarli', + 'share_name' => 'Anzuzeigender Teilen-Name', + 'share_url' => 'Zu verwendende Teilen-URL', + 'title' => 'Teilen', + 'twitter' => 'Twitter', + 'wallabag' => 'wallabag', + ), + 'shortcut' => array( + '_' => 'Tastaturkürzel', + 'article_action' => 'Artikelaktionen', + 'auto_share' => 'Teilen', + 'auto_share_help' => 'Wenn es nur eine Option zum Teilen gibt, wird diese verwendet. Ansonsten sind die Optionen über ihre Nummer erreichbar.', + 'close_dropdown' => 'Menüs schließen', + 'collapse_article' => 'Zusammenfalten', + 'first_article' => 'Zum ersten Artikel springen', + 'focus_search' => 'Auf Suchfeld zugreifen', + 'help' => 'Dokumentation anzeigen', + 'javascript' => 'JavaScript muss aktiviert sein, um Tastaturkürzel benutzen zu können', + 'last_article' => 'Zum letzten Artikel springen', + 'load_more' => 'Weitere Artikel laden', + 'mark_read' => 'Als gelesen markieren', + 'mark_favorite' => 'Als Favorit markieren', + 'navigation' => 'Navigation', + 'navigation_help' => 'Mit der "Umschalttaste" finden die Tastaturkürzel auf Feeds Anwendung.<br/>Mit der "Alt-Taste" finden die Tastaturkürzel auf Kategorien Anwendung.', + 'next_article' => 'Zum nächsten Artikel springen', + 'other_action' => 'Andere Aktionen', + 'previous_article' => 'Zum vorherigen Artikel springen', + 'see_on_website' => 'Auf der Original-Webseite ansehen', + 'shift_for_all_read' => '+ <code>Umschalttaste</code>, um alle Artikel als gelesen zu markieren.', + 'title' => 'Tastaturkürzel', + 'user_filter' => 'Auf Benutzerfilter zugreifen', + 'user_filter_help' => 'Wenn es nur einen Benutzerfilter gibt, wird dieser verwendet. Ansonsten sind die Filter über ihre Nummer erreichbar.', + ), + 'user' => array( + 'articles_and_size' => '%s Artikel (%s)', + 'current' => 'Aktueller Benutzer', + 'is_admin' => 'ist Administrator', + 'users' => 'Benutzer', + ), +); diff --git a/app/i18n/de/feedback.php b/app/i18n/de/feedback.php new file mode 100644 index 000000000..48f8b74f5 --- /dev/null +++ b/app/i18n/de/feedback.php @@ -0,0 +1,110 @@ +<?php + +return array( + 'admin' => array( + 'optimization_complete' => 'Optimierung abgeschlossen', + ), + 'access' => array( + 'denied' => 'Sie haben nicht die Berechtigung, diese Seite aufzurufen', + 'not_found' => 'Sie suchen nach einer Seite, die nicht existiert', + ), + 'auth' => array( + 'form' => array( + 'not_set' => 'Während der Konfiguration des Authentifikationssystems trat ein Fehler auf. Bitte versuchen Sie es später erneut.', + 'set' => 'Formular ist ab sofort ihr Standard-Authentifikationssystem.', + ), + 'login' => array( + 'invalid' => 'Anmeldung ist ungültig', + 'success' => 'Sie sind verbunden', + ), + 'logout' => array( + 'success' => 'Sie sind getrennt', + ), + 'no_password_set' => 'Administrator-Passwort ist nicht gesetzt worden. Dieses Feature ist nicht verfügbar.', + 'not_persona' => 'Nur das Persona-System kann zurückgesetzt werden.', + ), + 'conf' => array( + 'error' => 'Während des Speicherung der Konfiguration trat ein Fehler auf', + 'query_created' => 'Abfrage "%s" ist erstellt worden.', + 'shortcuts_updated' => 'Tastaturkürzel sind aktualisiert worden', + 'updated' => 'Konfiguration ist aktualisiert worden', + ), + 'extensions' => array( + 'already_enabled' => '%s ist bereits aktiviert', + 'disable' => array( + 'ko' => '%s kann nicht deaktiviert werden. Für Details <a href="%s">prüfen Sie die FressRSS-Protokolle</a>.', + 'ok' => '%s ist jetzt deaktiviert', + ), + 'enable' => array( + 'ko' => '%s kann nicht aktiviert werden. Für Details <a href="%s">prüfen Sie die FressRSS-Protokolle</a>.', + 'ok' => '%s ist jetzt aktiviert', + ), + 'no_access' => 'Sie haben keinen Zugang zu %s', + 'not_enabled' => '%s ist noch nicht aktiviert', + 'not_found' => '%s existiert nicht', + ), + 'import_export' => array( + 'export_no_zip_extension' => 'Die Zip-Erweiterung fehlt auf Ihrem Server. Bitte versuchen Sie, Dateien eine nach der anderen zu exportieren.', + 'feeds_imported' => 'Ihre Feeds sind importiert worden und werden jetzt aktualisiert', + 'feeds_imported_with_errors' => 'Ihre Feeds sind importiert worden, aber es traten einige Fehler auf', + 'file_cannot_be_uploaded' => 'Datei kann nicht hochgeladen werden!', + 'no_zip_extension' => 'Die Zip-Erweiterung ist auf Ihrem Server nicht vorhanden.', + 'zip_error' => 'Ein Fehler trat während des Zip-Imports auf.', + ), + 'sub' => array( + 'actualize' => 'Aktualisieren', + 'category' => array( + 'created' => 'Kategorie %s ist erstellt worden.', + 'deleted' => 'Kategorie ist gelöscht worden.', + 'emptied' => 'Kategorie ist geleert worden.', + 'error' => 'Kategorie kann nicht aktualisiert werden', + 'name_exists' => 'Kategorie-Name existiert bereits.', + 'no_id' => 'Sie müssen die ID der Kategorie präzisieren.', + 'no_name' => 'Kategorie-Name kann nicht leer sein.', + 'not_delete_default' => 'Sie können die Vorgabe-Kategorie nicht löschen!', + 'not_exist' => 'Die Kategorie existiert nicht!', + 'over_max' => 'Sie haben Ihr Kategorien-Limit erreicht (%d)', + 'updated' => 'Kategorie ist aktualisiert worden.', + ), + 'feed' => array( + 'actualized' => '<em>%s</em> ist aktualisiert worden', + 'actualizeds' => 'RSS-Feeds sind aktualisiert worden', + 'added' => 'RSS-Feed <em>%s</em> ist hinzugefügt worden', + 'already_subscribed' => 'Sie haben <em>%s</em> bereits abonniert', + 'deleted' => 'Feed ist gelöscht worden', + 'error' => 'Feed kann nicht aktualisiert werden', + 'internal_problem' => 'Der RSS-Feed konnte nicht hinzugefügt werden. Für Details <a href="%s">prüfen Sie die FressRSS-Protokolle</a>.', + 'invalid_url' => 'URL <em>%s</em> ist ungültig', + 'marked_read' => 'Feeds sind als gelesen markiert worden', + 'n_actualized' => '%d Feeds sind aktualisiert worden', + 'n_entries_deleted' => '%d Artikel sind gelöscht worden', + 'no_refresh' => 'Es gibt keinen Feed zum Aktualisieren…', + 'not_added' => '<em>%s</em> konnte nicht hinzugefügt werden', + 'over_max' => 'Sie haben Ihr Feeds-Limit erreicht (%d)', + 'updated' => 'Feed ist aktualisiert worden', + ), + 'purge_completed' => 'Bereinigung abgeschlossen (%d Artikel gelöscht)', + ), + 'update' => array( + 'can_apply' => 'FreshRSS wird nun auf die <strong>Version %s</strong> aktualisiert.', + 'error' => 'Der Aktualisierungsvorgang stieß auf einen Fehler: %s', + 'file_is_nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>%s</em>. Der HTTP-Server muss Schreibrechte besitzen', + 'finished' => 'Aktualisierung abgeschlossen!', + 'none' => 'Keine Aktualisierung zum Anwenden', + 'server_not_found' => 'Aktualisierungs-Server kann nicht gefunden werden. [%s]', + ), + 'user' => array( + 'created' => array( + '_' => 'Benutzer %s ist erstellt worden', + 'error' => 'Benutzer %s kann nicht erstellt werden', + ), + 'deleted' => array( + '_' => 'Benutzer %s ist gelöscht worden', + 'error' => 'Benutzer %s kann nicht gelöscht werden', + ), + ), + 'profile' => array( + 'error' => 'Ihr Profil kann nicht geändert werden', + 'updated' => 'Ihr Profil ist geändert worden', + ), +); diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php new file mode 100644 index 000000000..f3479ed53 --- /dev/null +++ b/app/i18n/de/gen.php @@ -0,0 +1,163 @@ +<?php + +return array( + 'action' => array( + 'actualize' => 'Aktualisieren', + 'back_to_rss_feeds' => '← Zurück zu Ihren RSS-Feeds gehen', + 'cancel' => 'Abbrechen', + 'create' => 'Erstellen', + 'disable' => 'Deaktivieren', + 'empty' => 'Leeren', + 'enable' => 'Aktivieren', + 'export' => 'Exportieren', + 'filter' => 'Filtern', + 'import' => 'Importieren', + 'manage' => 'Verwalten', + 'mark_read' => 'Als gelesen markieren', + 'mark_favorite' => 'Als Favorit markieren', + 'remove' => 'Entfernen', + 'see_website' => 'Webseite ansehen', + 'submit' => 'Abschicken', + 'truncate' => 'Alle Artikel löschen', + ), + 'auth' => array( + 'keep_logged_in' => 'Eingeloggt bleiben <small>(1 Monat)</small>', + 'login' => 'Anmelden', + 'login_persona' => 'Anmelden mit Persona', + 'login_persona_problem' => 'Verbindungsproblem mit Persona?', + 'logout' => 'Abmelden', + 'password' => 'Passwort', + 'reset' => 'Zurücksetzen der Authentifizierung', + 'username' => 'Nutzername', + 'username_admin' => 'Administrator-Nutzername', + 'will_reset' => 'Authentifikationssystem wird zurückgesetzt: ein Formular wird anstelle von Persona benutzt.', + ), + 'date' => array( + 'Apr' => '\\A\\p\\r\\i\\l', + 'Aug' => '\\A\\u\\g\\u\\s\\t', + 'Dec' => '\\D\\e\\z\\e\\m\\b\\e\\r', + 'Feb' => '\\F\\e\\b\\r\\u\\a\\r', + 'Jan' => '\\J\\a\\n\\u\\a\\r', + 'Jul' => '\\J\\u\\l\\i', + 'Jun' => '\\J\\u\\n\\i', + 'Mar' => '\\M\\ä\\r\\z', + 'May' => '\\M\\a\\i', + 'Nov' => '\\N\\o\\v\\e\\m\\b\\e\\r', + 'Oct' => '\\O\\k\\t\\o\\b\\e\\r', + 'Sep' => '\\S\\e\\p\\t\\e\\m\\b\\e\\r', + 'apr' => 'Apr', + 'april' => 'April', + 'aug' => 'Aug', + 'august' => 'August', + 'before_yesterday' => 'Vor gestern', + 'dec' => 'Dez', + 'december' => 'Dezember', + 'feb' => 'Feb', + 'february' => 'Februar', + 'format_date' => 'd\\. %s Y', + 'format_date_hour' => 'd\\. %s Y \\u\\m H\\:i', + 'fri' => 'Fr', + 'jan' => 'Jan', + 'january' => 'Januar', + 'jul' => 'Jul', + 'july' => 'Juli', + 'jun' => 'Jun', + 'june' => 'Juni', + 'last_3_month' => 'Letzte drei Monate', + 'last_6_month' => 'Letzte sechs Monate', + 'last_month' => 'Letzter Monat', + 'last_week' => 'Letzte Woche', + 'last_year' => 'Letztes Jahr', + 'mar' => 'Mär', + 'march' => 'März', + 'may' => 'Mai', + 'mon' => 'Mo', + 'month' => 'Monat(en)', + 'nov' => 'Nov', + 'november' => 'November', + 'oct' => 'Okt', + 'october' => 'Oktober', + 'sat' => 'Sa', + 'sep' => 'Sep', + 'september' => 'September', + 'sun' => 'So', + 'thu' => 'Do', + 'today' => 'Heute', + 'tue' => 'Di', + 'wed' => 'Mi', + 'yesterday' => 'Gestern', + ), + 'freshrss' => array( + '_' => 'FreshRSS', + 'about' => 'Über FreshRSS', + ), + 'js' => array( + 'category_empty' => 'Kategorie leeren', + 'confirm_action' => 'Sind Sie sicher, dass Sie diese Aktion durchführen wollen? Dies kann nicht abgebrochen werden!', + 'confirm_action_feed_cat' => 'Sind Sie sicher, dass Sie diese Aktion durchführen wollen? Sie werden zugehörige Favoriten und Benutzerabfragen verlieren. Dies kann nicht abgebrochen werden!', + 'feedback' => array( + 'body_new_articles' => 'Es gibt \\d neue Artikel zum Lesen auf FreshRSS.', + 'request_failed' => 'Eine Anfrage ist fehlgeschlagen, dies könnte durch Probleme mit der Internetverbindung verursacht worden sein.', + 'title_new_articles' => 'FreshRSS: neue Artikel!', + ), + 'new_article' => 'Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.', + 'should_be_activated' => 'JavaScript muss aktiviert sein', + ), + 'lang' => array( + 'de' => 'Deutsch', + 'en' => 'English', + 'fr' => 'Français', + ), + 'menu' => array( + 'about' => 'Über', + 'admin' => 'Administration', + 'archiving' => 'Archivierung', + 'authentication' => 'Authentifizierung', + 'check_install' => 'Installationsüberprüfung', + 'configuration' => 'Konfiguration', + 'display' => 'Anzeige', + 'extensions' => 'Erweiterungen', + 'logs' => 'Protokolle', + 'queries' => 'Benutzerabfragen', + 'reading' => 'Lesen', + 'search' => 'Suche Worte oder #Tags', + 'sharing' => 'Teilen', + 'shortcuts' => 'Tastaturkürzel', + 'stats' => 'Statistiken', + 'update' => 'Aktualisieren', + 'user_management' => 'Benutzer verwalten', + 'user_profile' => 'Profil', + ), + 'pagination' => array( + 'first' => 'Erste', + 'last' => 'Letzte', + 'load_more' => 'Weitere Artikel laden', + 'mark_all_read' => 'Alle als gelesen markieren', + 'next' => 'Nächste', + 'nothing_to_load' => 'Es gibt keine weiteren Artikel', + 'previous' => 'Vorherige', + ), + 'share' => array( + 'blogotext' => 'Blogotext', + 'diaspora' => 'Diaspora*', + 'email' => 'E-Mail', + 'facebook' => 'Facebook', + 'g+' => 'Google+', + 'print' => 'Drucken', + 'shaarli' => 'Shaarli', + 'twitter' => 'Twitter', + 'wallabag' => 'wallabag', + ), + 'short' => array( + 'attention' => 'Achtung!', + 'blank_to_disable' => 'Zum Deaktivieren frei lassen', + 'by_author' => 'Von <em>%s</em>', + 'by_default' => 'standardmäßig', + 'damn' => 'Verdammt!', + 'default_category' => 'Unkategorisiert', + 'no' => 'Nein', + 'ok' => 'OK!', + 'or' => 'oder', + 'yes' => 'Ja', + ), +); diff --git a/app/i18n/de/index.php b/app/i18n/de/index.php new file mode 100644 index 000000000..3449de87d --- /dev/null +++ b/app/i18n/de/index.php @@ -0,0 +1,61 @@ +<?php + +return array( + 'about' => array( + '_' => 'Über', + 'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>', + 'bugs_reports' => 'Fehlerberichte', + 'credits' => 'Credits', + 'credits_content' => 'Einige Designelemente stammen von <a href="http://twitter.github.io/bootstrap/">Bootstrap</a>, obwohl FreshRSS dieses Framework nicht nutzt. <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">Icons</a> stammen vom <a href="https://www.gnome.org/">GNOME project</a>. <em>Open Sans</em> Font wurde von <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a> erstellt. Favicons werden mit <a href="https://getfavicon.appspot.com/">getFavicon API</a> gesammelt. FreshRSS basiert auf <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, einem PHP-Framework.', + 'freshrss_description' => 'FreshRSS ist ein RSS-Feedsaggregator zum selbst hosten wie zum Beispiel <a href="http://tontof.net/kriss/feed/">Kriss Feed</a> oder <a href="http://projet.idleman.fr/leed/">Leed</a>. Er ist leicht und einfach zu handhaben und gleichzeitig ein leistungsstarkes und konfigurierbares Werkzeug.', + 'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">on Github</a>', + 'license' => 'Lizenz', + 'project_website' => 'Projekt-Webseite', + 'title' => 'Über', + 'version' => 'Version', + 'website' => 'Webseite', + ), + 'feed' => array( + 'add' => 'Sie können Feeds hinzufügen.', + 'empty' => 'Es gibt keinen Artikel zum Zeigen.', + 'rss_of' => 'RSS-Feed von %s', + 'title' => 'Ihre RSS-Feeds', + 'title_global' => 'Globale Ansicht', + 'title_fav' => 'Ihre Favoriten', + ), + 'log' => array( + '_' => 'Protokolle', + 'clear' => 'Protokolle leeren', + 'empty' => 'Protokolldatei ist leer.', + 'title' => 'Protokolle', + ), + 'menu' => array( + 'about' => 'Über FreshRSS', + 'add_query' => 'Eine Abfrage hinzufügen', + 'before_one_day' => 'Vor einem Tag', + 'before_one_week' => 'Vor einer Woche', + 'favorites' => 'Favoriten (%s)', + 'global_view' => 'Globale Ansicht', + 'main_stream' => 'Haupt-Feeds', + 'mark_all_read' => 'Alle als gelesen markieren', + 'mark_cat_read' => 'Kategorie als gelesen markieren', + 'mark_feed_read' => 'Feed als gelesen markieren', + 'newer_first' => 'Neuere zuerst', + 'non-starred' => 'Alle außer Favoriten zeigen', + 'normal_view' => 'Normale Ansicht', + 'older_first' => 'Ältere zuerst', + 'queries' => 'Benutzerabfragen', + 'read' => 'Nur gelesene zeigen', + 'reader_view' => 'Lese-Ansicht', + 'rss_view' => 'RSS-Feed', + 'search_short' => 'Suchen', + 'starred' => 'Nur Favoriten zeigen', + 'stats' => 'Statistiken', + 'subscription' => 'Abonnementverwaltung', + 'unread' => 'Nur ungelesene zeigen', + ), + 'share' => 'Teilen', + 'tag' => array( + 'related' => 'Verwandte Tags', + ), +); diff --git a/app/i18n/de/install.php b/app/i18n/de/install.php new file mode 100644 index 000000000..e9267bbbd --- /dev/null +++ b/app/i18n/de/install.php @@ -0,0 +1,107 @@ +<?php + +return array( + 'action' => array( + 'finish' => 'Installation fertigstellen', + 'fix_errors_before' => 'Fehler korrigieren, bevor zum nächsten Schritt gesprungen wird.', + 'next_step' => 'Zum nächsten Schritt gehen', + ), + 'auth' => array( + 'email_persona' => 'Anmelde-E-Mail-Adresse<br /><small>(für <a href="https://persona.org/" rel="external">Mozilla Persona</a>)</small>', + 'form' => 'Webformular (traditionell, benötigt JavaScript)', + 'http' => 'HTTP (HTTPS für erfahrene Benutzer)', + 'none' => 'Keine (gefährlich)', + 'password_form' => 'Passwort<br /><small>(für die Anmeldemethode per Webformular)</small>', + 'password_format' => 'mindestens 7 Zeichen', + 'persona' => 'Mozilla Persona (modern, benötigt JavaScript)', + 'type' => 'Authentifizierungsmethode', + ), + 'bdd' => array( + '_' => 'Datenbank', + 'conf' => array( + '_' => 'Datenbank-Konfiguration', + 'ko' => 'Überprüfen Sie Ihre Datenbank-Information.', + 'ok' => 'Datenbank-Konfiguration ist gespeichert worden.', + ), + 'host' => 'Host', + 'prefix' => 'Tabellen-Präfix', + 'password' => 'HTTP-Password', + 'type' => 'Datenbank-Typ', + 'username' => 'HTTP-Nutzername', + ), + 'check' => array( + '_' => 'Überprüfungen', + 'cache' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/cache</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/cache</em> sind in Ordnung.', + ), + 'ctype' => array( + 'nok' => 'Ihnen fehlt eine benötigte Bibliothek für die Überprüfung von Zeichentypen (php-ctype).', + 'ok' => 'Sie haben die benötigte Bibliothek für die Überprüfung von Zeichentypen (ctype).', + ), + 'curl' => array( + 'nok' => 'Ihnen fehlt cURL (Paket php5-curl).', + 'ok' => 'Sie haben die cURL-Erweiterung.', + ), + 'data' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data</em> sind in Ordnung.', + ), + 'dom' => array( + 'nok' => 'Ihnen fehlt eine benötigte Bibliothek um DOM zu durchstöbern (Paket php-xml).', + 'ok' => 'Sie haben die benötigte Bibliothek um DOM zu durchstöbern.', + ), + 'favicons' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/favicons</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/favicons</em> sind in Ordnung.', + ), + 'http_referer' => array( + 'nok' => 'Bitte stellen Sie sicher, dass Sie Ihren HTTP REFERER nicht abändern.', + 'ok' => 'Ihr HTTP REFERER ist bekannt und entspricht Ihrem Server.', + ), + 'minz' => array( + 'nok' => 'Ihnen fehlt das Minz-Framework.', + 'ok' => 'Sie haben das Minz-Framework.', + ), + 'pcre' => array( + 'nok' => 'Ihnen fehlt eine benötigte Bibliothek für reguläre Ausdrücke (php-pcre).', + 'ok' => 'Sie haben die benötigte Bibliothek für reguläre Ausdrücke (PCRE).', + ), + 'pdo' => array( + 'nok' => 'Ihnen fehlt PDO oder einer der unterstützten Treiber (pdo_mysql, pdo_sqlite).', + 'ok' => 'Sie haben PDO und mindestens einen der unterstützten Treiber (pdo_mysql, pdo_sqlite).', + ), + 'persona' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/persona</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/persona</em> sind in Ordnung.', + ), + 'php' => array( + 'nok' => 'Ihre PHP-Version ist %s aber FreshRSS benötigt mindestens Version %s.', + 'ok' => 'Ihre PHP-Version ist %s, welche kompatibel mit FreshRSS ist.', + ), + 'users' => array( + 'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>./data/users</em>. Der HTTP-Server muss Schreibrechte besitzen.', + 'ok' => 'Berechtigungen des Verzeichnisses <em>./data/users</em> sind in Ordnung.', + ), + ), + 'conf' => array( + '_' => 'Allgemeine Konfiguration', + 'ok' => 'Allgemeine Konfiguration ist gespeichert worden.', + ), + 'congratulations' => 'Glückwunsch!', + 'default_user' => 'Nutzername des Standardbenutzers <small>(maximal 16 alphanumerische Zeichen)</small>', + 'delete_articles_after' => 'Entferne Artikel nach', + 'fix_errors_before' => 'Fehler korrigieren, bevor zum nächsten Schritt gesprungen wird.', + 'javascript_is_better' => 'FreshRSS ist ansprechender mit aktiviertem JavaScript', + 'language' => array( + '_' => 'Sprache', + 'choose' => 'Wählen Sie eine Sprache für FreshRSS', + 'defined' => 'Sprache ist festgelegt worden.', + ), + 'not_deleted' => 'Etwas ist schiefgelaufen; Sie müssen die Datei <em>%s</em> manuell löschen.', + 'ok' => 'Der Installationsvorgang war erfolgreich.', + 'step' => 'Schritt %d', + 'steps' => 'Schritte', + 'title' => 'Installation · FreshRSS', + 'this_is_the_end' => 'Das ist das Ende', +); diff --git a/app/i18n/de/sub.php b/app/i18n/de/sub.php new file mode 100644 index 000000000..0479b8f46 --- /dev/null +++ b/app/i18n/de/sub.php @@ -0,0 +1,61 @@ +<?php + +return array( + 'category' => array( + '_' => 'Kategorie', + 'add' => 'Eine Kategorie hinzufügen', + 'empty' => 'Leere Kategorie', + 'new' => 'Neue Kategorie', + ), + 'feed' => array( + 'add' => 'Einen RSS-Feed hinzufügen', + 'advanced' => 'Erweitert', + 'archiving' => 'Archivierung', + 'auth' => array( + 'configuration' => 'Anmelden', + 'help' => 'Die Verbindung erlaubt Zugriff auf HTTP-geschützte RSS-Feeds', + 'http' => 'HTTP-Authentifizierung', + 'password' => 'HTTP-Passwort', + 'username' => 'HTTP-Nutzername', + ), + 'css_help' => 'Ruft gekürzte RSS-Feeds ab (Achtung, benötigt mehr Zeit!)', + 'css_path' => 'Pfad zur CSS-Datei des Artikels auf der Original-Webseite', + 'description' => 'Beschreibung', + 'empty' => 'Dieser Feed ist leer. Bitte stellen Sie sicher, dass er noch gepflegt wird.', + 'error' => 'Dieser Feed ist auf ein Problem gestoßen. Bitte stellen Sie sicher, dass er immer lesbar ist und aktualisieren Sie ihn dann.', + 'in_main_stream' => 'In Haupt-Feeds zeigen', + 'informations' => 'Information', + 'keep_history' => 'Minimale Anzahl an Artikeln, die behalten wird', + 'moved_category_deleted' => 'Wenn Sie eine Kategorie entfernen, werden deren Feeds automatisch in die Kategorie <em>%s</em> eingefügt.', + 'no_selected' => 'Kein Feed ausgewählt.', + 'number_entries' => '%d Artikel', + 'stats' => 'Statistiken', + 'think_to_add' => 'Sie können Feeds hinzufügen.', + 'title' => 'Titel', + 'title_add' => 'Einen RSS-Feed hinzufügen', + 'ttl' => 'Aktualisiere automatisch nicht öfter als', + 'url' => 'Feed-URL', + 'validator' => 'Überprüfen Sie die Gültigkeit des Feeds', + 'website' => 'Webseiten-URL', + ), + 'import_export' => array( + 'export' => 'Exportieren', + 'export_opml' => 'Liste der Feeds exportieren (OPML)', + 'export_starred' => 'Ihre Favoriten exportieren', + 'feed_list' => 'Liste von %s Artikeln', + 'file_to_import' => 'Zu importierende Datei<br />(OPML, JSON oder Zip)', + 'file_to_import_no_zip' => 'Zu importierende Datei<br />(OPML oder JSON)', + 'import' => 'Importieren', + 'starred_list' => 'Liste der Lieblingsartikel', + 'title' => 'Importieren / Exportieren', + ), + 'menu' => array( + 'bookmark' => 'Abonnieren (FreshRSS-Lesezeichen)', + 'import_export' => 'Importieren / Exportieren', + 'subscription_management' => 'Abonnementverwaltung', + ), + 'title' => array( + '_' => 'Abonnementverwaltung', + 'feed_management' => 'Verwaltung der RSS-Feeds', + ), +); 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<br /><small>(for <a href="https://persona.org/" rel="external">Mozilla Persona</a>)</small>', 'language' => 'Language', 'password_form' => 'Password<br /><small>(for the Web-form login method)</small>', + '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<br /><small>(for <a href="https://persona.org/" rel="external">Mozilla Persona</a>)</small>', 'password_api' => 'Password API<br /><small>(e.g., for mobile apps)</small>', 'password_form' => 'Password<br /><small>(for the Web-form login method)</small>', + 'password_format' => 'At least 7 characters', 'title' => 'Profile', ), 'reading' => array( diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index 6271717d4..2143822ed 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -95,12 +95,16 @@ return 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!', + 'feedback' => array( + 'body_new_articles' => 'There are \\d new articles to read on FreshRSS.', + 'request_failed' => 'A request has failed, it may have been caused by Internet connection problems.', + 'title_new_articles' => 'FreshRSS: new articles!', + ), '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', ), 'lang' => array( + 'de' => 'Deutsch', 'en' => 'English', 'fr' => 'Français', ), diff --git a/app/i18n/en/index.php b/app/i18n/en/index.php index 8e7d81db8..80fa3d950 100644 --- a/app/i18n/en/index.php +++ b/app/i18n/en/index.php @@ -8,8 +8,7 @@ return array( 'credits' => 'Credits', 'credits_content' => 'Some design elements come from <a href="http://twitter.github.io/bootstrap/">Bootstrap</a> although FreshRSS doesn’t use this framework. <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">Icons</a> come from <a href="https://www.gnome.org/">GNOME project</a>. <em>Open Sans</em> font police has been created by <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a>. Favicons are collected with <a href="https://getfavicon.appspot.com/">getFavicon API</a>. FreshRSS is based on <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, a PHP framework.', 'freshrss_description' => 'FreshRSS is a RSS feeds aggregator to self-host like <a href="http://tontof.net/kriss/feed/">Kriss Feed</a> or <a href="http://projet.idleman.fr/leed/">Leed</a>. It is light and easy to take in hand while being powerful and configurable tool.', - 'github_or_email' => '<a href="https://github.com/marienfressinaud/FreshRSS/issues">on Github</a> or <a href="mailto:dev@marienfressinaud.fr">by mail</a>', - 'lead_developer' => 'Lead developer', + 'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">on Github</a>', 'license' => 'License', 'project_website' => 'Project website', 'title' => 'About', diff --git a/app/i18n/en/install.php b/app/i18n/en/install.php index e8073e8b6..2bc6bd38f 100644 --- a/app/i18n/en/install.php +++ b/app/i18n/en/install.php @@ -12,6 +12,7 @@ return array( 'http' => 'HTTP (for advanced users with HTTPS)', 'none' => 'None (dangerous)', 'password_form' => 'Password<br /><small>(for the Web-form login method)</small>', + 'password_format' => 'At least 7 characters', 'persona' => 'Mozilla Persona (modern, requires JavaScript)', 'type' => 'Authentication method', ), 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<br /><small>(pour <a href="https://persona.org/" rel="external">Mozilla Persona</a>)</small>', 'language' => 'Langue', 'password_form' => 'Mot de passe<br /><small>(pour connexion par formulaire)</small>', + '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<br /><small>(pour <a href="https://persona.org/" rel="external">Mozilla Persona</a>)</small>', 'password_api' => 'Mot de passe API<br /><small>(ex. : pour applis mobiles)</small>', 'password_form' => 'Mot de passe<br /><small>(pour connexion par formulaire)</small>', + 'password_format' => '7 caractères minimum', 'title' => 'Profil', ), 'reading' => array( diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 6b449484f..1cfec6969 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -95,12 +95,16 @@ return 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 !', + 'feedback' => array( + 'body_new_articles' => 'Il y a \\d nouveaux articles à lire sur FreshRSS.', + 'request_failed' => 'Une requête a échoué, cela peut être dû à des problèmes de connexion à Internet.', + 'title_new_articles' => 'FreshRSS : nouveaux articles !', + ), '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é.', ), 'lang' => array( + 'de' => 'Deutsch', 'en' => 'English', 'fr' => 'Français', ), diff --git a/app/i18n/fr/index.php b/app/i18n/fr/index.php index f9975c593..7e028ab92 100644 --- a/app/i18n/fr/index.php +++ b/app/i18n/fr/index.php @@ -8,8 +8,7 @@ return array( 'credits' => 'Crédits', 'credits_content' => 'Des éléments de design sont issus du <a href="http://twitter.github.io/bootstrap/">projet Bootstrap</a> bien que FreshRSS n’utilise pas ce framework. Les <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">icônes</a> sont issues du <a href="https://www.gnome.org/">projet GNOME</a>. La police <em>Open Sans</em> utilisée a été créée par <a href="https://www.google.com/webfonts/specimen/Open+Sans">Steve Matteson</a>. Les favicons sont récupérés grâce au site <a href="https://getfavicon.appspot.com/">getFavicon</a>. FreshRSS repose sur <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, un framework PHP.', 'freshrss_description' => 'FreshRSS est un agrégateur de flux RSS à auto-héberger à l’image de <a href="http://tontof.net/kriss/feed/">Kriss Feed</a> ou <a href="http://projet.idleman.fr/leed/">Leed</a>. Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable.', - 'github_or_email' => '<a href="https://github.com/marienfressinaud/FreshRSS/issues">sur Github</a> ou <a href="mailto:dev@marienfressinaud.fr">par courriel</a>', - 'lead_developer' => 'Développeur principal', + 'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">sur Github</a>', 'license' => 'Licence', 'project_website' => 'Site du projet', 'title' => 'À propos', diff --git a/app/i18n/fr/install.php b/app/i18n/fr/install.php index d1b78ffb6..245a20c56 100644 --- a/app/i18n/fr/install.php +++ b/app/i18n/fr/install.php @@ -12,6 +12,7 @@ return array( 'http' => 'HTTP (pour utilisateurs avancés avec HTTPS)', 'none' => 'Aucune (dangereux)', 'password_form' => 'Mot de passe<br /><small>(pour connexion par formulaire)</small>', + 'password_format' => '7 caractères minimum', 'persona' => 'Mozilla Persona (moderne, requiert JavaScript)', 'type' => 'Méthode d’authentification', ), diff --git a/app/install.php b/app/install.php index eb2f764f9..177173fdb 100644 --- a/app/install.php +++ b/app/install.php @@ -598,6 +598,7 @@ function printStep2() { <input type="password" id="passwordPlain" name="passwordPlain" pattern=".{7,}" autocomplete="off" <?php echo $auth_type === 'form' ? ' required="required"' : ''; ?> /> <a class="btn toggle-password" data-toggle="passwordPlain"><?php echo FreshRSS_Themes::icon('key'); ?></a> </div> + <?php echo _i('help'); ?> <?php echo _t('install.auth.password_format'); ?> <noscript><b><?php echo _t('gen.js.should_be_activated'); ?></b></noscript> </div> </div> diff --git a/app/layout/aside_feed.phtml b/app/layout/aside_feed.phtml index d2612e751..a6d22f878 100644 --- a/app/layout/aside_feed.phtml +++ b/app/layout/aside_feed.phtml @@ -74,20 +74,20 @@ <script id="feed_config_template" type="text/html"> <ul class="dropdown-menu"> <li class="dropdown-close"><a href="#close">❌</a></li> - <li class="item"><a href="<?php echo _url('index', 'index', 'get', 'f_!!!!!!'); ?>"><?php echo _t('gen.action.filter'); ?></a></li> + <li class="item"><a href="<?php echo _url('index', 'index', 'get', 'f_------'); ?>"><?php echo _t('gen.action.filter'); ?></a></li> <?php if (FreshRSS_Auth::hasAccess()) { ?> - <li class="item"><a href="<?php echo _url('stats', 'repartition', 'id', '!!!!!!'); ?>"><?php echo _t('index.menu.stats'); ?></a></li> + <li class="item"><a href="<?php echo _url('stats', 'repartition', 'id', '------'); ?>"><?php echo _t('index.menu.stats'); ?></a></li> <?php } ?> <li class="item"><a target="_blank" href="http://example.net/"><?php echo _t('gen.action.see_website'); ?></a></li> <?php if (FreshRSS_Auth::hasAccess()) { ?> <li class="separator"></li> - <li class="item"><a href="<?php echo _url('subscription', 'index', 'id', '!!!!!!'); ?>"><?php echo _t('gen.action.manage'); ?></a></li> - <li class="item"><a href="<?php echo _url('feed', 'actualize', 'id', '!!!!!!'); ?>"><?php echo _t('gen.action.actualize'); ?></a></li> + <li class="item"><a href="<?php echo _url('subscription', 'index', 'id', '------'); ?>"><?php echo _t('gen.action.manage'); ?></a></li> + <li class="item"><a href="<?php echo _url('feed', 'actualize', 'id', '------'); ?>"><?php echo _t('gen.action.actualize'); ?></a></li> <li class="item"> <?php $confirm = FreshRSS_Context::$user_conf->reading_confirm ? 'confirm' : ''; ?> <button class="read_all as-link <?php echo $confirm; ?>" form="mark-read-aside" - formaction="<?php echo _url('entry', 'read', 'get', 'f_!!!!!!'); ?>" + formaction="<?php echo _url('entry', 'read', 'get', 'f_------'); ?>" type="submit"><?php echo _t('gen.action.mark_read'); ?></button> </li> <?php } ?> diff --git a/app/layout/header.phtml b/app/layout/header.phtml index 2b968252b..41a63a565 100644 --- a/app/layout/header.phtml +++ b/app/layout/header.phtml @@ -25,8 +25,7 @@ if (FreshRSS_Auth::accessNeedsAction()) { <?php if (FreshRSS_Auth::hasAccess() || FreshRSS_Context::$system_conf->allow_anonymous) { ?> <form action="<?php echo _url('index', 'index'); ?>" method="get"> <div class="stick"> - <?php $search = Minz_Request::param('search', ''); ?> - <input type="search" name="search" id="search" class="extend" value="<?php echo $search; ?>" placeholder="<?php echo _t('gen.menu.search'); ?>" /> + <input type="search" name="search" id="search" class="extend" value="<?php echo FreshRSS_Context::$search; ?>" placeholder="<?php echo _t('gen.menu.search'); ?>" /> <?php $get = Minz_Request::param('get', ''); ?> <?php if ($get != '') { ?> diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index d35a0b5fb..3a755b560 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -156,8 +156,7 @@ <div class="item search"> <form action="<?php echo _url('index', 'index'); ?>" method="get"> - <?php $search = Minz_Request::param('search', ''); ?> - <input type="search" name="search" class="extend" value="<?php echo $search; ?>" placeholder="<?php echo _t('index.menu.search_short'); ?>" /> + <input type="search" name="search" class="extend" value="<?php echo FreshRSS_Context::$search; ?>" placeholder="<?php echo _t('index.menu.search_short'); ?>" /> <?php $get = Minz_Request::param('get', ''); ?> <?php if($get != '') { ?> diff --git a/app/views/configure/shortcut.phtml b/app/views/configure/shortcut.phtml index fdbeed3ea..f68091af9 100644 --- a/app/views/configure/shortcut.phtml +++ b/app/views/configure/shortcut.phtml @@ -114,7 +114,7 @@ <div class="form-group"> <label class="group-name" for="close_dropdown_shortcut"><?php echo _t('conf.shortcut.close_dropdown'); ?></label> <div class="group-controls"> - <input type="text" id="help_shortcut" name="shortcuts[close_dropdown]" list="keys" value="<?php echo $s['close_dropdown']; ?>" /> + <input type="text" id="close_dropdown" name="shortcuts[close_dropdown]" list="keys" value="<?php echo $s['close_dropdown']; ?>" /> </div> </div> diff --git a/app/views/helpers/javascript_vars.phtml b/app/views/helpers/javascript_vars.phtml index fec3a6f7c..adf0783f3 100644 --- a/app/views/helpers/javascript_vars.phtml +++ b/app/views/helpers/javascript_vars.phtml @@ -35,20 +35,20 @@ echo 'var context={', "},\n"; echo 'shortcuts={', - 'mark_read:"', $s['mark_read'], '",', - 'mark_favorite:"', $s['mark_favorite'], '",', - 'go_website:"', $s['go_website'], '",', - 'prev_entry:"', $s['prev_entry'], '",', - 'next_entry:"', $s['next_entry'], '",', - 'first_entry:"', $s['first_entry'], '",', - 'last_entry:"', $s['last_entry'], '",', - 'collapse_entry:"', $s['collapse_entry'], '",', - 'load_more:"', $s['load_more'], '",', - 'auto_share:"', $s['auto_share'], '",', - 'focus_search:"', $s['focus_search'], '",', - 'user_filter:"', $s['user_filter'], '",', - 'help:"', $s['help'], '",', - 'close_dropdown:"', $s['close_dropdown'], '"', + 'mark_read:"', @$s['mark_read'], '",', + 'mark_favorite:"', @$s['mark_favorite'], '",', + 'go_website:"', @$s['go_website'], '",', + 'prev_entry:"', @$s['prev_entry'], '",', + 'next_entry:"', @$s['next_entry'], '",', + 'first_entry:"', @$s['first_entry'], '",', + 'last_entry:"', @$s['last_entry'], '",', + 'collapse_entry:"', @$s['collapse_entry'], '",', + 'load_more:"', @$s['load_more'], '",', + 'auto_share:"', @$s['auto_share'], '",', + 'focus_search:"', @$s['focus_search'], '",', + 'user_filter:"', @$s['user_filter'], '",', + 'help:"', @$s['help'], '",', + 'close_dropdown:"', @$s['close_dropdown'], '"', "},\n"; echo 'url={', @@ -60,8 +60,9 @@ echo 'url={', echo 'i18n={', 'confirmation_default:"', _t('gen.js.confirm_action'), '",', - 'notif_title_articles:"', _t('gen.js.notif_title_new_articles'), '",', - 'notif_body_articles:"', _t('gen.js.notif_body_new_articles'), '",', + 'notif_title_articles:"', _t('gen.js.feedback.title_new_articles'), '",', + 'notif_body_articles:"', _t('gen.js.feedback.body_new_articles'), '",', + 'notif_request_failed:"', _t('gen.js.feedback.request_failed'), '",', 'category_empty:"', _t('gen.js.category_empty'), '"', "},\n"; diff --git a/app/views/index/about.phtml b/app/views/index/about.phtml index ff2c538a2..3fdb5160d 100644 --- a/app/views/index/about.phtml +++ b/app/views/index/about.phtml @@ -7,11 +7,8 @@ <dt><?php echo _t('index.about.project_website'); ?></dt> <dd><a href="<?php echo FRESHRSS_WEBSITE; ?>"><?php echo FRESHRSS_WEBSITE; ?></a></dd> - <dt><?php echo _t('index.about.lead_developer'); ?></dt> - <dd><a href="mailto:contact@marienfressinaud.fr">Marien Fressinaud</a> — <a href="http://marienfressinaud.fr"><?php echo _t('index.about.website'); ?></a></dd> - <dt><?php echo _t('index.about.bugs_reports'); ?></dt> - <dd><?php echo _t('index.about.github_or_email'); ?></dd> + <dd><?php echo _t('index.about.github'); ?></dd> <dt><?php echo _t('index.about.license'); ?></dt> <dd><?php echo _t('index.about.agpl3'); ?></dd> diff --git a/app/views/index/global.phtml b/app/views/index/global.phtml index cf95bd0f5..0ffa3bc54 100644 --- a/app/views/index/global.phtml +++ b/app/views/index/global.phtml @@ -13,7 +13,7 @@ <?php $url_base = array( 'c' => 'index', - 'a' => 'index', + 'a' => 'normal', 'params' => Minz_Request::params() ); diff --git a/app/views/subscription/index.phtml b/app/views/subscription/index.phtml index b9e40988c..331e8244e 100644 --- a/app/views/subscription/index.phtml +++ b/app/views/subscription/index.phtml @@ -7,7 +7,7 @@ <form id="add_rss" method="post" action="<?php echo _url('feed', 'add'); ?>" autocomplete="off"> <div class="stick"> - <input type="url" name="url_rss" class="extend" placeholder="<?php echo _t('sub.feed.add'); ?>" /> + <input type="url" name="url_rss" class="long" placeholder="<?php echo _t('sub.feed.add'); ?>" /> <div class="dropdown"> <div id="dropdown-cat" class="dropdown-target"></div> 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 @@ <input type="password" id="new_user_passwordPlain" name="new_user_passwordPlain" autocomplete="off" pattern=".{7,}" /> <a class="btn toggle-password" data-toggle="new_user_passwordPlain"><?php echo _i('key'); ?></a> </div> + <?php echo _i('help'); ?> <?php echo _t('admin.user.password_format'); ?> <noscript><b><?php echo _t('gen.js.should_be_activated'); ?></b></noscript> </div> </div> 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 @@ <input type="password" id="passwordPlain" name="passwordPlain" autocomplete="off" pattern=".{7,}" <?php echo cryptAvailable() ? '' : 'disabled="disabled" '; ?>/> <a class="btn toggle-password" data-toggle="passwordPlain"><?php echo _i('key'); ?></a> </div> + <?php echo _i('help'); ?> <?php echo _t('conf.profile.password_format'); ?> <noscript><b><?php echo _t('gen.js.should_be_activated'); ?></b></noscript> </div> </div> |
