From 7b17c60bb18b122f3d14795780f4642717cfd81b Mon Sep 17 00:00:00 2001 From: Alexis Degrugillier Date: Sun, 24 Aug 2014 11:34:58 -0400 Subject: Add shortcuts Add a shortcut to open the wiki. Shortcut is F1 and is not modifiable. Add a shortcut to access user filters the same way to access share actions. --- app/Models/Configuration.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app/Models/Configuration.php') diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index 4c804a9fb..989603b20 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -45,6 +45,8 @@ class FreshRSS_Configuration { 'load_more' => 'm', 'auto_share' => 's', 'focus_search' => 'a', + 'user_filter' => 'u', + 'help' => 'f1', ), 'topline_read' => true, 'topline_favorite' => true, -- cgit v1.2.3 From a2ba5e2a21ad79e065925d7642f62c5cf4083212 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Tue, 2 Sep 2014 18:50:41 +0200 Subject: Add a first version of i18n for German All the strings are not completed yet, but it's a good start! --- app/Models/Configuration.php | 1 + app/i18n/de.php | 326 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 327 insertions(+) create mode 100644 app/i18n/de.php (limited to 'app/Models/Configuration.php') diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index 4c804a9fb..e815561a9 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -61,6 +61,7 @@ class FreshRSS_Configuration { ); private $available_languages = array( + 'de' => 'Deutsch', 'en' => 'English', 'fr' => 'Français', ); diff --git a/app/i18n/de.php b/app/i18n/de.php new file mode 100644 index 000000000..4301a8b6d --- /dev/null +++ b/app/i18n/de.php @@ -0,0 +1,326 @@ + 'Login', + 'login_with_persona' => 'Login mit Persona', + 'logout' => 'Logout', + 'search' => 'Suche nach Worten oder #tags', + 'search_short' => 'Suche', + + 'configuration' => 'Konfiguration', + 'users' => 'Nutzer', + 'categories' => 'Kategorien', + 'category' => 'Kategorie', + 'feed' => 'Feed', + 'feeds' => 'Feeds', + 'shortcuts' => 'Shortcuts', + 'about' => 'Über', + 'stats' => 'Statistiken', + + 'your_rss_feeds' => 'Ihre RSS Feeds', + 'add_rss_feed' => 'RSS-Feed hinzufügen', + 'no_rss_feed' => 'Kein RSS Feed', + 'import_export_opml' => 'Import / Export (OPML)', + + 'subscription_management' => 'Abonnementsverwaltung', + 'main_stream' => 'Haupt-Nachrichtenfluß', + 'all_feeds' => 'Alle Feeds', + 'favorite_feeds' => 'Favoriten (%d)', + 'not_read' => '%d ungelesen', + 'not_reads' => '%d ungelesen', + + 'filter' => 'Filter', + 'see_website' => 'Website ansehen', + 'administration' => 'Verwaltung', + 'actualize' => 'Aktualisierung', + + 'mark_read' => 'Als gelesen markieren', + 'mark_favorite' => 'Als Favoriten markieren', + 'mark_all_read' => 'Alle als gelesen markieren', + 'mark_feed_read' => 'Feed als gelesen markieren', + 'mark_cat_read' => 'Kategorie als gelesen markieren', + 'before_one_day' => 'Vor einem Tag', + 'before_one_week' => 'Vor einer Woche', + 'display' => 'Anzeige', + 'normal_view' => 'Normale Anzeige', + 'reader_view' => 'Leseanzeige-Modus', + 'global_view' => 'Globale Anzeige', + 'rss_view' => 'RSS-Feed', + 'show_all_articles' => 'zeige alle Artikel', + 'show_not_reads' => 'zeige nicht gelesene', + 'show_read' => 'zeige nur gelesene', + 'show_favorite' => 'Favoriten anzeigen', + 'older_first' => 'Älteste zuerst', + 'newer_first' => 'Neuere zuerst', + + // Pagination + 'first' => 'Erste', + 'previous' => 'Vorherige', + 'next' => 'Nächste', + 'last' => 'Letzte', + + // CONTROLLERS + 'article_published_on' => 'Dieser Artikel erschien im Original bei %s', + 'article_published_on_author' => 'Dieser Artikel erschien im Original bei %s von %s', + + 'access_denied' => 'Sie haben nicht die Berechtigung, diese Seite aufzurufen', + 'page_not_found' => 'Sie suchen nach einer Seite, die es nicht gibt', + 'error_occurred' => 'Es gab einen Fehler', + 'error_occurred_update' => 'Es wurde nichts geändert', + + 'default_category' => 'Unkategorisiert', + 'categories_updated' => 'Kategorien wurden aktualisiert', + 'categories_management' => 'Kategorienverwaltung', + 'feed_updated' => 'Der Feed wurde aktualisiert', + 'rss_feed_management' => 'Verwaltung der RSS Feeds', + 'configuration_updated' => 'Die Konfiguration wurde aktualisiert', + 'sharing_management' => 'Verwaltung der Optionen für das Teilen', + 'bad_opml_file' => 'Ihre OPML-Datei ist ungültig', + 'shortcuts_updated' => 'Shortcuts wurden aktualisiert', + 'shortcuts_management' => 'Verwaltung der Shortcuts', + 'shortcuts_navigation' => 'Navigation', + 'shortcuts_navigation_help' => 'Mit der "Shift" Taste gelten die Navigations-Shortcuts für Feeds.
Mit der "Alt" Taste gelten die Navigations-Shortcuts für Kategorien.', + 'shortcuts_article_action' => 'Artikelaktionen', + 'shortcuts_other_action' => 'Andere Aktionen', + 'feeds_marked_read' => 'Die Feeds wurden als gelesen markiert', + 'updated' => 'Die Änderungen wurden aktualisiert', + + 'already_subscribed' => 'Sie haben bereits %s abonniert', + 'feed_added' => 'Der RSS Feed %s wurde hinzugefügt', + 'feed_not_added' => '%s konnte nicht hinzugefügt werden', + 'internal_problem_feed' => 'Der RSS Feed konnte nicht hinzugefügt werden. überprüfen Sie die Protokolldateien von FressRSS für weitere Informationen.', + 'invalid_url' => 'URL %s ist ungültig', + 'feed_actualized' => '%s wurde aktualisiert', + 'n_feeds_actualized' => '%d Feeds wurden aktualisiert', + 'feeds_actualized' => 'RSS Feeds wurden aktualisiert', + 'no_feed_actualized' => 'Es wurden keine RSS Feeds aktualisiert', + 'n_entries_deleted' => '%d Artikel wurden gelöscht', + 'feeds_imported_with_errors' => 'Ihre Feeds wurden importiert, es gab aber einige Fehler', + 'feeds_imported' => 'Ihre Feeds wurden importiert und werden jetzt aktualisiert', + 'category_emptied' => 'Die Kategorie wurde geleert', + 'feed_deleted' => 'Der Feed wurde gelöscht', + 'feed_validator' => '&Üuml;berprüfen Sie die Gültigkeit des Feeds', + + 'optimization_complete' => 'Die Optimierung ist beendet', + + 'your_rss_feeds' => 'Ihre RSS Feeds', + 'your_favorites' => 'Ihre Favoriten', + 'public' => 'Öffentlich', + 'invalid_login' => 'Das Login ist ungültig', + + // VIEWS + 'save' => 'Speichern', + 'delete' => 'Löschen', + 'cancel' => 'Abbrechen', + + 'back_to_rss_feeds' => '← Zurück zu den RSS Feeds gehen', + 'feeds_moved_category_deleted' => 'Wenn Sie eine Kategorie löschen, werden deren Feeds automatisch in die Kategorie %s eingefügt.', + 'category_number' => 'Kategorie n°%d', + 'ask_empty' => 'Leeren?', + 'number_feeds' => '%d Feeds', + 'can_not_be_deleted' => 'Kann nicht gelöscht werden', + 'add_category' => 'Füge eine Kategorie hinzu', + 'new_category' => 'Neue Kategorie', + + 'javascript_for_shortcuts' => 'JavaScript muss ermöglicht werden, wenn Shortcuts verwendet werden sollen', + 'javascript_should_be_activated'=> 'JavaScript muss ermöglicht werden', + 'shift_for_all_read' => '+ shift um alle Artikel als gelesen zu markieren', + 'see_on_website' => 'Auf der Originalwebseite anschauen', + 'next_article' => 'Zum nächsten Artikel springen', + 'last_article' => 'Zum letzten Artikel springen', + 'previous_article' => 'Zum vorherigen Artikel springen', + 'first_article' => 'Zum ersten Artikel springen', + 'next_page' => 'Zur nächsten Seite springen', + 'previous_page' => 'Zur vorherigen Seite springen', + 'collapse_article' => 'Zusammenfalten', + 'auto_share' => 'Teilen', + 'auto_share_help' => 'Wenn es nur eine Option zum Teilen gibt, wird die verwendet. Ansonsten werden die Optionen über die Nummer ausgewählt.', + + 'file_to_import' => 'Datei zum importieren', + 'import' => 'Import', + 'export' => 'Export', + 'or' => 'oder', + + 'informations' => 'Information', + 'damn' => 'Verdammt!', + 'feed_in_error' => 'Dieser Feed hat ein Problem verursacht. Bitte stellen Sie sicher, dass er immer lesbar ist und aktualisieren Sie ihn dann.', + 'feed_empty' => 'Dieser Feed ist leer. Bitte stellen Sie sicher, dass er noch gepflegt wird.', + 'feed_description' => 'Beschreibung', + 'website_url' => 'Webseiten-Adresse URL', + 'feed_url' => 'Feed URL', + 'articles' => 'Artikel', + 'number_articles' => 'Anzahl der Artikel', + 'by_feed' => 'per Feed', + 'by_default' => 'Als Vorgabe', + 'keep_history' => 'Kleinste Anzahl der Artikel, die behalten werden', + 'categorize' => 'In einer Kategorie speichern', + 'truncate' => 'Alle Artikel löschen', + 'advanced' => 'Erweitert', + 'show_in_all_flux' => 'Im Hauptstrom anzeigen', + 'yes' => 'Ja', + 'no' => 'Nein', + 'css_path_on_website' => 'Pfad zur CSS-Datei des Artikels auf der Original Webseite', + 'retrieve_truncated_feeds' => 'Gekürzte RSS Feeds abrufen (Achtung, benötigt mehr Zeit!)', + 'http_authentication' => 'HTTP Authentifizierung', + 'http_username' => 'HTTP Nutzername', + 'http_password' => 'HTTP Passwort', + 'blank_to_disable' => 'Zum Ausschalten frei lassen', + 'not_yet_implemented' => 'Noch nicht implementiert', + 'access_protected_feeds' => 'Die Verbindung erlaubt Zugriff zu HTTP-geschützten RSS Feeds', + 'no_selected_feed' => 'Kein Feed ausgewählt.', + 'think_to_add' => 'Sie können Feeds hinzufügen.', + + 'current_user' => 'Aktuelle Nutzung', + 'default_user' => 'Nutzername des Standardnutzers (maximal 16 Zeichen - alphanumerisch)', + 'password_form' => 'Passwort
(für die Anmeldemethode per Webformular)', + 'persona_connection_email' => 'Login E-Mail Adresse
(für Mozilla Persona)', + 'allow_anonymous' => 'Anonymes lesen der Artikel des Standardnutzers (%s) wird erlaubt', + 'allow_anonymous_refresh' => 'Aktualisieren der Artikel wird anonymen Nutzern erlaubt', + 'auth_token' => 'Authentifizierungs-Token', + 'explain_token' => 'Erlaube den Zugriff auf die RSS-Ausgabe des Standardnutzers ohne Authentifizierung.
%s?output=rss&token=%s', + 'login_configuration' => 'Login', + 'is_admin' => 'ist Administrator', + 'auth_type' => 'Authentifizierungsmethode', + 'auth_none' => 'Keine (gefährlich)', + 'auth_form' => 'Webformular (traditionell, JavaScript wird benötigt)', + 'http_auth' => 'HTTP (mit HTTPS für erfahrene Nutzer)', + 'auth_persona' => 'Mozilla Persona (modern, JavaScript wird benötigt)', + 'users_list' => 'Liste der Nutzer', + 'create_user' => 'Neuen Nutzer erstellen', + 'username' => 'Nutzername', + 'password' => 'Passwort', + 'create' => 'Erstellen', + 'user_created' => 'Nutzer %s wurde erstellt', + 'user_deleted' => 'Nutzer %s wurde gelöscht', + + 'language' => 'Sprache', + 'month' => 'Monate', + 'archiving_configuration' => 'Archivieren', + 'delete_articles_every' => 'Entfernen von Artikeln nach', + 'purge_now' => 'Jetzt bereinigen', + 'purge_completed' => 'Die Bereinigung ist abgeschlossen (%d Artikel wurden gelöscht)', + 'archiving_configuration_help' => 'Es gibt weitere Optionen bei den Einstellungen der individuellen Nachrichtenströme', + 'reading_configuration' => 'Lesen', + 'articles_per_page' => 'Anzahl der Artikel pro Seite', + 'default_view' => 'Standard-Ansicht', + 'sort_order' => 'Sortierreihenfolge', + 'auto_load_more' => 'Die nächsten Artikel am Seitenende laden', + 'display_articles_unfolded' => 'Die Artikel als Standard zusammen gefaltet anzeigen', + 'after_onread' => 'Nach “als gelesen markieren”', + 'jump_next' => 'springe zum nächsten ungelesenen Geschwisterelement (Feed oder Kategorie)', + 'reading_icons' => 'Lese Symbol', + 'top_line' => 'Kopfzeile', + 'bottom_line' => 'Fusszeile', + 'img_with_lazyload' => 'Verwende die "träge laden" Methode zum laden von Bildern', + 'auto_read_when' => 'Artikel als gelesen markieren…', + 'article_selected' => 'wenn der Artikel ausgewählt ist', + 'article_open_on_website' => 'wenn der Artikel auf der Originalwebseite geöffnet ist', + 'scroll' => 'während des Seiten-Scrollens', + 'upon_reception' => 'beim Empfang des Artikels', + 'your_shaarli' => 'Ihr Shaarli', + 'your_wallabag' => 'Ihr wallabag', + 'your_diaspora_pod' => 'Ihr Diaspora* pod', + 'sharing' => 'Teilen', + 'share' => 'teile', + 'by_email' => 'Per E-Mail', + 'optimize_bdd' => 'Datenbank optimieren', + 'optimize_todo_sometimes' => 'Sollte gelegentlich gemacht werden, um die Größe der Datenbank zu reduzieren', + 'theme' => 'Thema', + 'more_information' => 'Weitere Informationen', + 'activate_sharing' => 'Teilen aktivieren', + 'shaarli' => 'Shaarli', + 'wallabag' => 'wallabag', + 'diaspora' => 'Diaspora*', + 'twitter' => 'Twitter', + 'g+' => 'Google+', + 'facebook' => 'Facebook', + 'email' => 'E-Mail', + 'print' => 'Drucken', + + 'article' => 'Artikel', + 'title' => 'Titel', + 'author' => 'Autor', + 'publication_date' => 'Datum der Veröffentlichung', + 'by' => 'von', + + 'load_more' => 'Weitere Artikel laden', + 'nothing_to_load' => 'Es gibt keine weiteren Artikel', + + 'rss_feeds_of' => 'RSS Feed von %s', + + 'refresh' => 'Aktualisieren', + 'no_feed_to_refresh' => 'Es gibt keinen Feed zum aktualisieren', + + 'today' => 'Heute', + 'yesterday' => 'Gestern', + 'before_yesterday' => 'vor Gestern', + 'new_article' => 'Es gibt neue Artikel. Bitte klicken Sie hier, um die Seite erneut zu laden.', + 'by_author' => 'Von %s', + 'related_tags' => 'Verwandte tags', + 'no_feed_to_display' => 'Es gibt keinen Artikel zum anzeigen.', + + 'about_freshrss' => 'Über FreshRSS', + 'project_website' => 'Projekt Webseite', + 'lead_developer' => 'Hauptentwickler', + 'website' => 'Webseite', + 'bugs_reports' => 'Fehlerberichte', + 'github_or_email' => 'auf Github oder per Mail', + 'license' => 'Lizenz', + 'agpl3' => 'AGPL 3', + 'freshrss_description' => 'FreshRSS ist ein RSS Feedsaggregator zum selbst hosten wie zum Beispiel Kriss Feed oder Leed. Es ist leicht und einfach zu handhaben und gleichzeitig ein leistungsstark und konfigurierbares Werkzeug.', + 'credits' => 'Credits', + 'credits_content' => 'Einige Designelemente sind von Bootstrap obwohl FreshRSS dieses Framework nicht nutzt. Icons sind vom GNOME Projekt. Open Sans Font police wurde von Steve Matteson erstellt. Favicons wurden mit getFavicon API gesammelt. FreshRSS basiert auf Minz, einem PHP Framework.', + 'version' => 'Version', + + 'logs' => 'Protokolle', + 'logs_empty' => 'Die Protokolldatei ist leer', + 'clear_logs' => 'Protokolldateien leeren', + + 'forbidden_access' => 'Der Zugriff ist verboten!', + 'login_required' => 'Das Login ist nötig:', + + 'confirm_action' => 'Sind Sie sicher, dass Sie diese Aktion durchführen wollen? Die Aktion kann nicht abgebrochen werden!', + + // DATE + 'january' => 'januar', + 'february' => 'februar', + 'march' => 'märz', + 'april' => 'april', + 'may' => 'mai', + 'june' => 'juni', + 'july' => 'juli', + 'august' => 'august', + 'september' => 'september', + 'october' => 'oktober', + 'november' => 'november', + 'december' => 'dezember', + // special format for date() function + 'Jan' => '\J\a\n\u\a\r', + 'Feb' => '\F\e\b\r\u\a\r', + 'Mar' => '\M\a\e\r\z', + 'Apr' => '\A\p\r\i\l', + 'May' => '\M\a\i', + 'Jun' => '\J\u\n\i', + 'Jul' => '\J\u\l\i', + 'Aug' => '\A\u\g\u\s\t', + 'Sep' => '\S\e\p\t\e\m\b\e\r', + 'Oct' => '\O\k\t\o\b\e\r', + 'Nov' => '\N\o\v\e\m\b\e\r', + 'Dec' => '\D\e\z\e\m\b\e\r', + // format for date() function, %s allows to indicate month in letter + 'format_date' => 'd\.\ %s Y', + 'format_date_hour' => 'd\.\ %s Y \u\m H\:i', + + 'status_favorites' => 'Favoriten', + 'status_read' => 'Gelesen', + 'status_unread' => 'Ungelesen', + 'status_total' => 'Gesamt', + + 'stats_entry_repartition' => 'Verteilung der Einträge', + 'stats_entry_per_day' => 'Einträge pro Tag (während der letzten 30 Tage)', + 'stats_feed_per_category' => 'Feeds pro Kategorie', + 'stats_entry_per_category' => 'Einträge pro Kategorie', + 'stats_top_feed' => 'Top 10 Feeds', + 'stats_entry_count' => 'Zähler für Einträge', +); -- cgit v1.2.3 From 83832a39c4651bd3e4bfa007f75c91d040db79d3 Mon Sep 17 00:00:00 2001 From: Alexis Degrugillier Date: Sat, 6 Sep 2014 11:32:52 -0400 Subject: Add a new configuration option Before, when you selected the option to display only unread articles, it shows read articles if no unread article were found. Now, this option is renamed to include information on fallback behavior and a new option is created to have the "only unread" behavior See #551 It is missing the german translation --- app/Models/Configuration.php | 13 ++++++++++++- app/Models/Entry.php | 2 ++ app/Models/EntryDAO.php | 3 +++ app/i18n/en.php | 2 ++ app/i18n/fr.php | 2 ++ app/views/configure/reading.phtml | 19 +++++++++++-------- 6 files changed, 32 insertions(+), 9 deletions(-) (limited to 'app/Models/Configuration.php') diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index 3a408faa5..92bab6ad9 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -141,7 +141,18 @@ class FreshRSS_Configuration { } } public function _default_view ($value) { - $this->data['default_view'] = $value === FreshRSS_Entry::STATE_ALL ? FreshRSS_Entry::STATE_ALL : FreshRSS_Entry::STATE_NOT_READ; + switch ($value): + case FreshRSS_Entry::STATE_ALL: + // left blank on purpose + case FreshRSS_Entry::STATE_NOT_READ: + // left blank on purpose + case FreshRSS_Entry::STATE_NOT_READ_STRICT: + $this->data['default_view'] = $value; + break; + default: + $this->data['default_view'] = FreshRSS_Entry::STATE_ALL; + break; + endswitch; } public function _display_posts ($value) { $this->data['display_posts'] = ((bool)$value) && $value !== 'no'; diff --git a/app/Models/Entry.php b/app/Models/Entry.php index 0bf1f2616..5f1c8abc4 100644 --- a/app/Models/Entry.php +++ b/app/Models/Entry.php @@ -6,6 +6,8 @@ class FreshRSS_Entry extends Minz_Model { const STATE_NOT_READ = 2; const STATE_FAVORITE = 4; const STATE_NOT_FAVORITE = 8; + const STATE_READ_STRICT = 16; + const STATE_NOT_READ_STRICT = 32; private $id = 0; private $guid; diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index 75a8aeba4..dee49212d 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -338,6 +338,9 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo { elseif ($state & FreshRSS_Entry::STATE_READ) { $where .= 'AND e1.is_read=1 '; } + elseif ($state & FreshRSS_Entry::STATE_NOT_READ_STRICT) { + $where .= 'AND e1.is_read=0 '; + } if ($state & FreshRSS_Entry::STATE_FAVORITE) { if (!($state & FreshRSS_Entry::STATE_NOT_FAVORITE)) { $where .= 'AND e1.is_favorite=1 '; diff --git a/app/i18n/en.php b/app/i18n/en.php index bcd7a3da5..ea4e3d02a 100644 --- a/app/i18n/en.php +++ b/app/i18n/en.php @@ -92,6 +92,7 @@ return array ( 'rss_view' => 'RSS feed', 'show_all_articles' => 'Show all articles', 'show_not_reads' => 'Show only unread', + 'show_not_reads_with_fallback' => 'Show only unread or read if no unread', 'show_read' => 'Show only read', 'show_favorite' => 'Show only favorites', 'show_not_favorite' => 'Show all but favorites', @@ -267,6 +268,7 @@ return array ( 'display_configuration' => 'Display', 'articles_per_page' => 'Number of articles per page', 'default_view' => 'Default view', + 'articles_to_display' => 'Articles to display', 'sort_order' => 'Sort order', 'auto_load_more' => 'Load next articles at the page bottom', 'display_articles_unfolded' => 'Show articles unfolded by default', diff --git a/app/i18n/fr.php b/app/i18n/fr.php index 395f2b5d2..c23e291ab 100644 --- a/app/i18n/fr.php +++ b/app/i18n/fr.php @@ -92,6 +92,7 @@ return array ( 'rss_view' => 'Flux RSS', 'show_all_articles' => 'Afficher tous les articles', 'show_not_reads' => 'Afficher les non lus', + 'show_not_reads_with_fallback' => 'Afficher les non lus ou les lus si aucun non lus', 'show_read' => 'Afficher les lus', 'show_favorite' => 'Afficher les favoris', 'show_not_favorite' => 'Afficher tout sauf les favoris', @@ -267,6 +268,7 @@ return array ( 'display_configuration' => 'Affichage', 'articles_per_page' => 'Nombre d’articles par page', 'default_view' => 'Vue par défaut', + 'articles_to_display' => 'Articles à afficher', 'sort_order' => 'Ordre de tri', 'auto_load_more' => 'Charger les articles suivants en bas de page', 'display_articles_unfolded' => 'Afficher les articles dépliés par défaut', diff --git a/app/views/configure/reading.phtml b/app/views/configure/reading.phtml index 5a26501a4..df3b5277e 100644 --- a/app/views/configure/reading.phtml +++ b/app/views/configure/reading.phtml @@ -31,14 +31,17 @@ - - + + + +
+ +
+
-- cgit v1.2.3 From ce239f83c4812d1999d1be0be104e00a2ad23f90 Mon Sep 17 00:00:00 2001 From: Alexis Degrugillier Date: Mon, 15 Sep 2014 17:53:08 -0400 Subject: Add a feature to add only unique shares Before, it was possible to have different shares of the same type with the same information. Now, even if you try to input identical shares, only the first one is kept. Of course, the verification is simple, so for instance if you input two shares to the same shaarli instance with different names, they are kept. See #614 --- app/Models/Configuration.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'app/Models/Configuration.php') diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index 3a408faa5..e4408df73 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -212,6 +212,7 @@ class FreshRSS_Configuration { } public function _sharing ($values) { $this->data['sharing'] = array(); + $unique = array(); foreach ($values as $value) { if (!is_array($value)) { continue; @@ -237,7 +238,11 @@ class FreshRSS_Configuration { $value['name'] = $value['type']; } - $this->data['sharing'][] = $value; + $json_value = json_encode($value); + if (!in_array($json_value, $unique)) { + $unique[] = $json_value; + $this->data['sharing'][] = $value; + } } } public function _queries ($values) { -- cgit v1.2.3 From 9fec7f328b077993499c282ccb59414fb50ca84f Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 17 Sep 2014 11:22:45 +0200 Subject: Coding style + i18n Change "Show only unread or read if no unread" into "Adjust showing". It is less explicit but shorter. --- app/Models/Configuration.php | 24 ++++++++++++------------ app/i18n/en.php | 2 +- app/i18n/fr.php | 2 +- app/views/configure/reading.phtml | 8 ++++---- 4 files changed, 18 insertions(+), 18 deletions(-) (limited to 'app/Models/Configuration.php') diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index e47b042c8..352e70f4f 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -141,18 +141,18 @@ class FreshRSS_Configuration { } } public function _default_view ($value) { - switch ($value): - case FreshRSS_Entry::STATE_ALL: - // left blank on purpose - case FreshRSS_Entry::STATE_NOT_READ: - // left blank on purpose - case FreshRSS_Entry::STATE_NOT_READ_STRICT: - $this->data['default_view'] = $value; - break; - default: - $this->data['default_view'] = FreshRSS_Entry::STATE_ALL; - break; - endswitch; + switch ($value) { + case FreshRSS_Entry::STATE_ALL: + // left blank on purpose + case FreshRSS_Entry::STATE_NOT_READ: + // left blank on purpose + case FreshRSS_Entry::STATE_NOT_READ_STRICT: + $this->data['default_view'] = $value; + break; + default: + $this->data['default_view'] = FreshRSS_Entry::STATE_ALL; + break; + } } public function _display_posts ($value) { $this->data['display_posts'] = ((bool)$value) && $value !== 'no'; diff --git a/app/i18n/en.php b/app/i18n/en.php index 7c66864c1..562697585 100644 --- a/app/i18n/en.php +++ b/app/i18n/en.php @@ -92,7 +92,7 @@ return array ( 'rss_view' => 'RSS feed', 'show_all_articles' => 'Show all articles', 'show_not_reads' => 'Show only unread', - 'show_not_reads_with_fallback' => 'Show only unread or read if no unread', + 'show_adaptive' => 'Adjust showing', 'show_read' => 'Show only read', 'show_favorite' => 'Show only favorites', 'show_not_favorite' => 'Show all but favorites', diff --git a/app/i18n/fr.php b/app/i18n/fr.php index 327661035..9516f66cb 100644 --- a/app/i18n/fr.php +++ b/app/i18n/fr.php @@ -92,7 +92,7 @@ return array ( 'rss_view' => 'Flux RSS', 'show_all_articles' => 'Afficher tous les articles', 'show_not_reads' => 'Afficher les non lus', - 'show_not_reads_with_fallback' => 'Afficher les non lus ou les lus si aucun non lus', + 'show_adaptive' => 'Adapter l’affichage', 'show_read' => 'Afficher les lus', 'show_favorite' => 'Afficher les favoris', 'show_not_favorite' => 'Afficher tout sauf les favoris', diff --git a/app/views/configure/reading.phtml b/app/views/configure/reading.phtml index 9bd145a3b..3dd457a2b 100644 --- a/app/views/configure/reading.phtml +++ b/app/views/configure/reading.phtml @@ -38,12 +38,12 @@
- +
-- cgit v1.2.3 From 4211539c24e36531f2c5440ad454c4e208131047 Mon Sep 17 00:00:00 2001 From: plopoyop Date: Thu, 18 Sep 2014 10:46:34 +0200 Subject: Add timeout option for HTML5 notification --- app/Controllers/configureController.php | 1 + app/Models/Configuration.php | 7 +++++++ app/i18n/de.php | 2 ++ app/i18n/en.php | 2 ++ app/i18n/fr.php | 2 ++ app/views/configure/display.phtml | 7 +++++++ app/views/helpers/javascript_vars.phtml | 2 ++ p/scripts/main.js | 6 ++++++ 8 files changed, 29 insertions(+) (limited to 'app/Models/Configuration.php') diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index bb96bfae3..b1cd45014 100755 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -157,6 +157,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController { $this->view->conf->_bottomline_tags(Minz_Request::param('bottomline_tags', false)); $this->view->conf->_bottomline_date(Minz_Request::param('bottomline_date', false)); $this->view->conf->_bottomline_link(Minz_Request::param('bottomline_link', false)); + $this->view->conf->_html5_notif_timeout(Minz_Request::param('html5_notif_timeout', 0)); $this->view->conf->save(); Minz_Session::_param('language', $this->view->conf->language); diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index e4408df73..830d39f0d 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -60,6 +60,7 @@ class FreshRSS_Configuration { 'bottomline_link' => true, 'sharing' => array(), 'queries' => array(), + 'html5_notif_timeout' => 0, ); private $available_languages = array( @@ -269,6 +270,12 @@ class FreshRSS_Configuration { $this->data['content_width'] = 'thin'; } } + + public function _html5_notif_timeout ($value) { + $value = intval($value); + $this->data['html5_notif_timeout'] = $value >= 0 ? $value : 0; + } + public function _token($value) { $this->data['token'] = $value; } diff --git a/app/i18n/de.php b/app/i18n/de.php index 4301a8b6d..3f7d8ca27 100644 --- a/app/i18n/de.php +++ b/app/i18n/de.php @@ -212,6 +212,8 @@ return array ( 'reading_icons' => 'Lese Symbol', 'top_line' => 'Kopfzeile', 'bottom_line' => 'Fusszeile', + 'html5_notif_timeout' => 'HTML5 notification timeout', + 'seconds_(0_means_no_timeout)' => 'seconds (0 means no timeout)', 'img_with_lazyload' => 'Verwende die "träge laden" Methode zum laden von Bildern', 'auto_read_when' => 'Artikel als gelesen markieren…', 'article_selected' => 'wenn der Artikel ausgewählt ist', diff --git a/app/i18n/en.php b/app/i18n/en.php index 8f39115ad..1e842a1e1 100644 --- a/app/i18n/en.php +++ b/app/i18n/en.php @@ -280,6 +280,8 @@ return array ( 'article_icons' => 'Article icons', 'top_line' => 'Top line', 'bottom_line' => 'Bottom line', + 'html5_notif_timeout' => 'HTML5 notification timeout', + 'seconds_(0_means_no_timeout)' => 'seconds (0 means no timeout)', 'img_with_lazyload' => 'Use "lazy load" mode to load pictures', 'sticky_post' => 'Stick the article to the top when opened', 'reading_confirm' => 'Display a confirmation dialog on “mark all as read” actions', diff --git a/app/i18n/fr.php b/app/i18n/fr.php index 48b4c1732..bbfa71f66 100644 --- a/app/i18n/fr.php +++ b/app/i18n/fr.php @@ -280,6 +280,8 @@ return array ( 'article_icons' => 'Icônes d’article', 'top_line' => 'Ligne du haut', 'bottom_line' => 'Ligne du bas', + 'html5_notif_timeout' => 'Temps d\'affichage de la notification HTML5', + 'seconds_(0_means_no_timeout)' => 'secondes (0 signifie aucun timeout ) ', 'img_with_lazyload' => 'Utiliser le mode “chargement différé” pour les images', 'sticky_post' => 'Aligner l’article en haut quand il est ouvert', 'reading_confirm' => 'Afficher une confirmation lors des actions “marquer tout comme lu”', diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml index 955fc6747..8eb3a156b 100644 --- a/app/views/configure/display.phtml +++ b/app/views/configure/display.phtml @@ -91,6 +91,13 @@
+ +
+ +
+ +
+
diff --git a/app/views/helpers/javascript_vars.phtml b/app/views/helpers/javascript_vars.phtml index 2144f1576..bf0ffdb76 100644 --- a/app/views/helpers/javascript_vars.phtml +++ b/app/views/helpers/javascript_vars.phtml @@ -54,6 +54,8 @@ echo 'authType="', $authType, '",', echo 'str_confirmation="', Minz_Translate::t('confirm_action'), '"', ",\n"; echo 'str_notif_title_articles="', Minz_Translate::t('notif_title_new_articles'), '"', ",\n"; echo 'str_notif_body_articles="', Minz_Translate::t('notif_body_new_articles'), '"', ",\n"; +echo 'html5_notif_timeout=', $this->conf->html5_notif_timeout,",\n"; + $autoActualise = Minz_Session::param('actualize_feeds', false); echo 'auto_actualize_feeds=', $autoActualise ? 'true' : 'false', ";\n"; diff --git a/p/scripts/main.js b/p/scripts/main.js index fd49d62ba..c568bac35 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -866,6 +866,12 @@ function notifs_html5_show(nb) { notification.onclick = function() { window.location.reload(); } + + if (html5_notif_timeout !== 0){ + setTimeout(function() { + notification.close(); + }, html5_notif_timeout * 1000); + } } function init_notifs_html5() { -- cgit v1.2.3 From 71617080e224b8d3a3397a27b78e1f509499431c Mon Sep 17 00:00:00 2001 From: Alexis Degrugillier Date: Thu, 18 Sep 2014 21:06:38 -0400 Subject: Refactor code for strict unread message display Before, when you choose the show unread message option and the hide categories and feeds options, the categories and feeds weren't hidden. Now it is working properly. Before, the unread filter icon was not selected with the previous way of using the constants. Now, the filter is highlighted when selected in strict mode. See #619 --- app/Models/Configuration.php | 2 +- app/Models/Entry.php | 3 +-- app/Models/EntryDAO.php | 5 ++--- app/i18n/en.php | 2 +- app/i18n/fr.php | 2 +- app/views/configure/reading.phtml | 2 +- 6 files changed, 7 insertions(+), 9 deletions(-) (limited to 'app/Models/Configuration.php') diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index f94d82402..ea1556cbb 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -147,7 +147,7 @@ class FreshRSS_Configuration { // left blank on purpose case FreshRSS_Entry::STATE_NOT_READ: // left blank on purpose - case FreshRSS_Entry::STATE_NOT_READ_STRICT: + case FreshRSS_Entry::STATE_STRICT + FreshRSS_Entry::STATE_NOT_READ: $this->data['default_view'] = $value; break; default: diff --git a/app/Models/Entry.php b/app/Models/Entry.php index 5f1c8abc4..9d7dd5dc4 100644 --- a/app/Models/Entry.php +++ b/app/Models/Entry.php @@ -6,8 +6,7 @@ class FreshRSS_Entry extends Minz_Model { const STATE_NOT_READ = 2; const STATE_FAVORITE = 4; const STATE_NOT_FAVORITE = 8; - const STATE_READ_STRICT = 16; - const STATE_NOT_READ_STRICT = 32; + const STATE_STRICT = 16; private $id = 0; private $guid; diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index dee49212d..c1f87ee34 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -333,14 +333,13 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo { if ($state & FreshRSS_Entry::STATE_NOT_READ) { if (!($state & FreshRSS_Entry::STATE_READ)) { $where .= 'AND e1.is_read=0 '; + } elseif ($state & FreshRSS_Entry::STATE_STRICT) { + $where .= 'AND e1.is_read=0 '; } } elseif ($state & FreshRSS_Entry::STATE_READ) { $where .= 'AND e1.is_read=1 '; } - elseif ($state & FreshRSS_Entry::STATE_NOT_READ_STRICT) { - $where .= 'AND e1.is_read=0 '; - } if ($state & FreshRSS_Entry::STATE_FAVORITE) { if (!($state & FreshRSS_Entry::STATE_NOT_FAVORITE)) { $where .= 'AND e1.is_favorite=1 '; diff --git a/app/i18n/en.php b/app/i18n/en.php index 8598e61cb..c53adb409 100644 --- a/app/i18n/en.php +++ b/app/i18n/en.php @@ -281,7 +281,7 @@ return array ( 'auto_load_more' => 'Load next articles at the page bottom', '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 (only in “unread articles” display mode)', + 'hide_read_feeds' => 'Hide categories & feeds with no unread article (does not work with “Show all articles” configuration)', 'after_onread' => 'After “mark all as read”,', 'jump_next' => 'jump to next unread sibling (feed or category)', 'article_icons' => 'Article icons', diff --git a/app/i18n/fr.php b/app/i18n/fr.php index 4af819cac..58dccd2d4 100644 --- a/app/i18n/fr.php +++ b/app/i18n/fr.php @@ -281,7 +281,7 @@ return array ( 'auto_load_more' => 'Charger les articles suivants en bas de page', 'display_articles_unfolded' => 'Afficher les articles dépliés par défaut', 'display_categories_unfolded' => 'Afficher les catégories pliées par défaut', - 'hide_read_feeds' => 'Cacher les catégories & flux sans article non-lu (uniquement en affichage “articles non lus”)', + 'hide_read_feeds' => 'Cacher les catégories & flux sans article non-lu (ne fonctionne pas avec la configuration “Afficher tous les articles”)', 'after_onread' => 'Après “marquer tout comme lu”,', 'jump_next' => 'sauter au prochain voisin non lu (flux ou catégorie)', 'article_icons' => 'Icônes d’article', diff --git a/app/views/configure/reading.phtml b/app/views/configure/reading.phtml index 3dd457a2b..86d816eb3 100644 --- a/app/views/configure/reading.phtml +++ b/app/views/configure/reading.phtml @@ -43,7 +43,7 @@
-- cgit v1.2.3 From 5a1baff9be7cf9fe3f59fe2a7dc34fbadacc1a99 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 24 Sep 2014 13:28:09 +0200 Subject: Refactor removing query by get param See https://github.com/marienfressinaud/FreshRSS/issues/625 --- app/Controllers/configureController.php | 10 +--------- app/Models/Configuration.php | 10 ++++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) (limited to 'app/Models/Configuration.php') diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index e6e9172e6..231865bd7 100755 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -59,15 +59,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController { $catDAO->deleteCategory($ids[$key]); // Remove related queries. - $final_queries = array(); - $id_cat_in_query = 'c_' . $ids[$key]; - foreach ($this->view->conf->queries as $key => $query) { - if (empty($query['get']) || - $query['get'] !== $id_cat_in_query) { - $final_queries[$key] = $query; - } - } - $this->view->conf->_queries($final_queries); + $this->view->conf->remove_query_by_get('c_' . $ids[$key]); $this->view->conf->save(); } } diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index ea1556cbb..91d2ab846 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -124,6 +124,16 @@ class FreshRSS_Configuration { return $this->available_languages; } + public function remove_query_by_get($get) { + $final_queries = array(); + foreach ($this->queries as $key => $query) { + if (empty($query['get']) || $query['get'] !== $get) { + $final_queries[$key] = $query; + } + } + $this->_queries($final_queries); + } + public function _language($value) { if (!isset($this->available_languages[$value])) { $value = 'en'; -- cgit v1.2.3 From c14162221365077bcaeecde7127806190490dd58 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Fri, 26 Sep 2014 14:32:52 +0200 Subject: Remove German language for 0.8 release --- app/Models/Configuration.php | 1 - app/i18n/de.php | 328 ------------------------------------------- 2 files changed, 329 deletions(-) delete mode 100644 app/i18n/de.php (limited to 'app/Models/Configuration.php') diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index 91d2ab846..95f819779 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -64,7 +64,6 @@ class FreshRSS_Configuration { ); private $available_languages = array( - 'de' => 'Deutsch', 'en' => 'English', 'fr' => 'Français', ); diff --git a/app/i18n/de.php b/app/i18n/de.php deleted file mode 100644 index 77fb805fb..000000000 --- a/app/i18n/de.php +++ /dev/null @@ -1,328 +0,0 @@ - 'Login', - 'login_with_persona' => 'Login mit Persona', - 'logout' => 'Logout', - 'search' => 'Suche nach Worten oder #tags', - 'search_short' => 'Suche', - - 'configuration' => 'Konfiguration', - 'users' => 'Nutzer', - 'categories' => 'Kategorien', - 'category' => 'Kategorie', - 'feed' => 'Feed', - 'feeds' => 'Feeds', - 'shortcuts' => 'Shortcuts', - 'about' => 'Über', - 'stats' => 'Statistiken', - - 'your_rss_feeds' => 'Ihre RSS Feeds', - 'add_rss_feed' => 'RSS-Feed hinzufügen', - 'no_rss_feed' => 'Kein RSS Feed', - 'import_export_opml' => 'Import / Export (OPML)', - - 'subscription_management' => 'Abonnementsverwaltung', - 'main_stream' => 'Haupt-Nachrichtenfluß', - 'all_feeds' => 'Alle Feeds', - 'favorite_feeds' => 'Favoriten (%d)', - 'not_read' => '%d ungelesen', - 'not_reads' => '%d ungelesen', - - 'filter' => 'Filter', - 'see_website' => 'Website ansehen', - 'administration' => 'Verwaltung', - 'actualize' => 'Aktualisierung', - - 'mark_read' => 'Als gelesen markieren', - 'mark_favorite' => 'Als Favoriten markieren', - 'mark_all_read' => 'Alle als gelesen markieren', - 'mark_feed_read' => 'Feed als gelesen markieren', - 'mark_cat_read' => 'Kategorie als gelesen markieren', - 'before_one_day' => 'Vor einem Tag', - 'before_one_week' => 'Vor einer Woche', - 'display' => 'Anzeige', - 'normal_view' => 'Normale Anzeige', - 'reader_view' => 'Leseanzeige-Modus', - 'global_view' => 'Globale Anzeige', - 'rss_view' => 'RSS-Feed', - 'show_all_articles' => 'zeige alle Artikel', - 'show_not_reads' => 'zeige nicht gelesene', - 'show_read' => 'zeige nur gelesene', - 'show_favorite' => 'Favoriten anzeigen', - 'older_first' => 'Älteste zuerst', - 'newer_first' => 'Neuere zuerst', - - // Pagination - 'first' => 'Erste', - 'previous' => 'Vorherige', - 'next' => 'Nächste', - 'last' => 'Letzte', - - // CONTROLLERS - 'article_published_on' => 'Dieser Artikel erschien im Original bei %s', - 'article_published_on_author' => 'Dieser Artikel erschien im Original bei %s von %s', - - 'access_denied' => 'Sie haben nicht die Berechtigung, diese Seite aufzurufen', - 'page_not_found' => 'Sie suchen nach einer Seite, die es nicht gibt', - 'error_occurred' => 'Es gab einen Fehler', - 'error_occurred_update' => 'Es wurde nichts geändert', - - 'default_category' => 'Unkategorisiert', - 'categories_updated' => 'Kategorien wurden aktualisiert', - 'categories_management' => 'Kategorienverwaltung', - 'feed_updated' => 'Der Feed wurde aktualisiert', - 'rss_feed_management' => 'Verwaltung der RSS Feeds', - 'configuration_updated' => 'Die Konfiguration wurde aktualisiert', - 'sharing_management' => 'Verwaltung der Optionen für das Teilen', - 'bad_opml_file' => 'Ihre OPML-Datei ist ungültig', - 'shortcuts_updated' => 'Shortcuts wurden aktualisiert', - 'shortcuts_management' => 'Verwaltung der Shortcuts', - 'shortcuts_navigation' => 'Navigation', - 'shortcuts_navigation_help' => 'Mit der "Shift" Taste gelten die Navigations-Shortcuts für Feeds.
Mit der "Alt" Taste gelten die Navigations-Shortcuts für Kategorien.', - 'shortcuts_article_action' => 'Artikelaktionen', - 'shortcuts_other_action' => 'Andere Aktionen', - 'feeds_marked_read' => 'Die Feeds wurden als gelesen markiert', - 'updated' => 'Die Änderungen wurden aktualisiert', - - 'already_subscribed' => 'Sie haben bereits %s abonniert', - 'feed_added' => 'Der RSS Feed %s wurde hinzugefügt', - 'feed_not_added' => '%s konnte nicht hinzugefügt werden', - 'internal_problem_feed' => 'Der RSS Feed konnte nicht hinzugefügt werden. überprüfen Sie die Protokolldateien von FressRSS für weitere Informationen.', - 'invalid_url' => 'URL %s ist ungültig', - 'feed_actualized' => '%s wurde aktualisiert', - 'n_feeds_actualized' => '%d Feeds wurden aktualisiert', - 'feeds_actualized' => 'RSS Feeds wurden aktualisiert', - 'no_feed_actualized' => 'Es wurden keine RSS Feeds aktualisiert', - 'n_entries_deleted' => '%d Artikel wurden gelöscht', - 'feeds_imported_with_errors' => 'Ihre Feeds wurden importiert, es gab aber einige Fehler', - 'feeds_imported' => 'Ihre Feeds wurden importiert und werden jetzt aktualisiert', - 'category_emptied' => 'Die Kategorie wurde geleert', - 'feed_deleted' => 'Der Feed wurde gelöscht', - 'feed_validator' => 'Überprüfen Sie die Gültigkeit des Feeds', - - 'optimization_complete' => 'Die Optimierung ist beendet', - - 'your_rss_feeds' => 'Ihre RSS Feeds', - 'your_favorites' => 'Ihre Favoriten', - 'public' => 'Öffentlich', - 'invalid_login' => 'Das Login ist ungültig', - - // VIEWS - 'save' => 'Speichern', - 'delete' => 'Löschen', - 'cancel' => 'Abbrechen', - - 'back_to_rss_feeds' => '← Zurück zu den RSS Feeds gehen', - 'feeds_moved_category_deleted' => 'Wenn Sie eine Kategorie löschen, werden deren Feeds automatisch in die Kategorie %s eingefügt.', - 'category_number' => 'Kategorie n°%d', - 'ask_empty' => 'Leeren?', - 'number_feeds' => '%d Feeds', - 'can_not_be_deleted' => 'Kann nicht gelöscht werden', - 'add_category' => 'Füge eine Kategorie hinzu', - 'new_category' => 'Neue Kategorie', - - 'javascript_for_shortcuts' => 'JavaScript muss ermöglicht werden, wenn Shortcuts verwendet werden sollen', - 'javascript_should_be_activated'=> 'JavaScript muss ermöglicht werden', - 'shift_for_all_read' => '+ shift um alle Artikel als gelesen zu markieren', - 'see_on_website' => 'Auf der Originalwebseite anschauen', - 'next_article' => 'Zum nächsten Artikel springen', - 'last_article' => 'Zum letzten Artikel springen', - 'previous_article' => 'Zum vorherigen Artikel springen', - 'first_article' => 'Zum ersten Artikel springen', - 'next_page' => 'Zur nächsten Seite springen', - 'previous_page' => 'Zur vorherigen Seite springen', - 'collapse_article' => 'Zusammenfalten', - 'auto_share' => 'Teilen', - 'auto_share_help' => 'Wenn es nur eine Option zum Teilen gibt, wird die verwendet. Ansonsten werden die Optionen über die Nummer ausgewählt.', - - 'file_to_import' => 'Datei zum importieren', - 'import' => 'Import', - 'export' => 'Export', - 'or' => 'oder', - - 'informations' => 'Information', - 'damn' => 'Verdammt!', - 'feed_in_error' => 'Dieser Feed hat ein Problem verursacht. Bitte stellen Sie sicher, dass er immer lesbar ist und aktualisieren Sie ihn dann.', - 'feed_empty' => 'Dieser Feed ist leer. Bitte stellen Sie sicher, dass er noch gepflegt wird.', - 'feed_description' => 'Beschreibung', - 'website_url' => 'Webseiten-Adresse URL', - 'feed_url' => 'Feed URL', - 'articles' => 'Artikel', - 'number_articles' => '%d Artikel', - 'by_feed' => 'per Feed', - 'by_default' => 'Als Vorgabe', - 'keep_history' => 'Kleinste Anzahl der Artikel, die behalten werden', - 'categorize' => 'In einer Kategorie speichern', - 'truncate' => 'Alle Artikel löschen', - 'advanced' => 'Erweitert', - 'show_in_all_flux' => 'Im Hauptstrom anzeigen', - 'yes' => 'Ja', - 'no' => 'Nein', - 'css_path_on_website' => 'Pfad zur CSS-Datei des Artikels auf der Original Webseite', - 'retrieve_truncated_feeds' => 'Gekürzte RSS Feeds abrufen (Achtung, benötigt mehr Zeit!)', - 'http_authentication' => 'HTTP Authentifizierung', - 'http_username' => 'HTTP Nutzername', - 'http_password' => 'HTTP Passwort', - 'blank_to_disable' => 'Zum Ausschalten frei lassen', - 'not_yet_implemented' => 'Noch nicht implementiert', - 'access_protected_feeds' => 'Die Verbindung erlaubt Zugriff zu HTTP-geschützten RSS Feeds', - 'no_selected_feed' => 'Kein Feed ausgewählt.', - 'think_to_add' => 'Sie können Feeds hinzufügen.', - - 'current_user' => 'Aktuelle Nutzung', - 'default_user' => 'Nutzername des Standardnutzers (maximal 16 Zeichen - alphanumerisch)', - 'password_form' => 'Passwort
(für die Anmeldemethode per Webformular)', - 'persona_connection_email' => 'Login E-Mail Adresse
(für Mozilla Persona)', - 'allow_anonymous' => 'Anonymes lesen der Artikel des Standardnutzers (%s) wird erlaubt', - 'allow_anonymous_refresh' => 'Aktualisieren der Artikel wird anonymen Nutzern erlaubt', - 'auth_token' => 'Authentifizierungs-Token', - 'explain_token' => 'Erlaube den Zugriff auf die RSS-Ausgabe des Standardnutzers ohne Authentifizierung.
%s?output=rss&token=%s', - 'login_configuration' => 'Login', - 'is_admin' => 'ist Administrator', - 'auth_type' => 'Authentifizierungsmethode', - 'auth_none' => 'Keine (gefährlich)', - 'auth_form' => 'Webformular (traditionell, JavaScript wird benötigt)', - 'http_auth' => 'HTTP (mit HTTPS für erfahrene Nutzer)', - 'auth_persona' => 'Mozilla Persona (modern, JavaScript wird benötigt)', - 'users_list' => 'Liste der Nutzer', - 'create_user' => 'Neuen Nutzer erstellen', - 'username' => 'Nutzername', - 'password' => 'Passwort', - 'create' => 'Erstellen', - 'user_created' => 'Nutzer %s wurde erstellt', - 'user_deleted' => 'Nutzer %s wurde gelöscht', - - 'language' => 'Sprache', - 'month' => 'Monate', - 'archiving_configuration' => 'Archivieren', - 'delete_articles_every' => 'Entfernen von Artikeln nach', - 'purge_now' => 'Jetzt bereinigen', - 'purge_completed' => 'Die Bereinigung ist abgeschlossen (%d Artikel wurden gelöscht)', - 'archiving_configuration_help' => 'Es gibt weitere Optionen bei den Einstellungen der individuellen Nachrichtenströme', - 'reading_configuration' => 'Lesen', - 'articles_per_page' => 'Anzahl der Artikel pro Seite', - 'default_view' => 'Standard-Ansicht', - 'sort_order' => 'Sortierreihenfolge', - 'auto_load_more' => 'Die nächsten Artikel am Seitenende laden', - 'display_articles_unfolded' => 'Die Artikel als Standard zusammen gefaltet anzeigen', - 'after_onread' => 'Nach “als gelesen markieren”', - 'jump_next' => 'springe zum nächsten ungelesenen Geschwisterelement (Feed oder Kategorie)', - 'reading_icons' => 'Lese Symbol', - 'top_line' => 'Kopfzeile', - 'bottom_line' => 'Fusszeile', - 'html5_notif_timeout' => 'HTML5 notification timeout', - 'seconds_(0_means_no_timeout)' => 'seconds (0 means no timeout)', - 'img_with_lazyload' => 'Verwende die "träge laden" Methode zum laden von Bildern', - 'auto_read_when' => 'Artikel als gelesen markieren…', - 'article_selected' => 'wenn der Artikel ausgewählt ist', - 'article_open_on_website' => 'wenn der Artikel auf der Originalwebseite geöffnet ist', - 'scroll' => 'während des Seiten-Scrollens', - 'upon_reception' => 'beim Empfang des Artikels', - 'your_shaarli' => 'Ihr Shaarli', - 'your_wallabag' => 'Ihr wallabag', - 'your_diaspora_pod' => 'Ihr Diaspora* pod', - 'sharing' => 'Teilen', - 'share' => 'teile', - 'by_email' => 'Per E-Mail', - 'optimize_bdd' => 'Datenbank optimieren', - 'optimize_todo_sometimes' => 'Sollte gelegentlich gemacht werden, um die Größe der Datenbank zu reduzieren', - 'theme' => 'Thema', - 'more_information' => 'Weitere Informationen', - 'activate_sharing' => 'Teilen aktivieren', - 'shaarli' => 'Shaarli', - 'wallabag' => 'wallabag', - 'diaspora' => 'Diaspora*', - 'twitter' => 'Twitter', - 'g+' => 'Google+', - 'facebook' => 'Facebook', - 'email' => 'E-Mail', - 'print' => 'Drucken', - - 'article' => 'Artikel', - 'title' => 'Titel', - 'author' => 'Autor', - 'publication_date' => 'Datum der Veröffentlichung', - 'by' => 'von', - - 'load_more' => 'Weitere Artikel laden', - 'nothing_to_load' => 'Es gibt keine weiteren Artikel', - - 'rss_feeds_of' => 'RSS Feed von %s', - - 'refresh' => 'Aktualisieren', - 'no_feed_to_refresh' => 'Es gibt keinen Feed zum aktualisieren', - - 'today' => 'Heute', - 'yesterday' => 'Gestern', - 'before_yesterday' => 'vor Gestern', - 'new_article' => 'Es gibt neue Artikel. Bitte klicken Sie hier, um die Seite erneut zu laden.', - 'by_author' => 'Von %s', - 'related_tags' => 'Verwandte tags', - 'no_feed_to_display' => 'Es gibt keinen Artikel zum anzeigen.', - - 'about_freshrss' => 'Über FreshRSS', - 'project_website' => 'Projekt Webseite', - 'lead_developer' => 'Hauptentwickler', - 'website' => 'Webseite', - 'bugs_reports' => 'Fehlerberichte', - 'github_or_email' => 'auf Github oder per Mail', - 'license' => 'Lizenz', - 'agpl3' => 'AGPL 3', - 'freshrss_description' => 'FreshRSS ist ein RSS Feedsaggregator zum selbst hosten wie zum Beispiel Kriss Feed oder Leed. Es ist leicht und einfach zu handhaben und gleichzeitig ein leistungsstark und konfigurierbares Werkzeug.', - 'credits' => 'Credits', - 'credits_content' => 'Einige Designelemente sind von Bootstrap obwohl FreshRSS dieses Framework nicht nutzt. Icons sind vom GNOME Projekt. Open Sans Font police wurde von Steve Matteson erstellt. Favicons wurden mit getFavicon API gesammelt. FreshRSS basiert auf Minz, einem PHP Framework.', - 'version' => 'Version', - - 'logs' => 'Protokolle', - 'logs_empty' => 'Die Protokolldatei ist leer', - 'clear_logs' => 'Protokolldateien leeren', - - 'forbidden_access' => 'Der Zugriff ist verboten!', - 'login_required' => 'Das Login ist nötig:', - - 'confirm_action' => 'Sind Sie sicher, dass Sie diese Aktion durchführen wollen? Die Aktion kann nicht abgebrochen werden!', - - // DATE - 'january' => 'januar', - 'february' => 'februar', - 'march' => 'märz', - 'april' => 'april', - 'may' => 'mai', - 'june' => 'juni', - 'july' => 'juli', - 'august' => 'august', - 'september' => 'september', - 'october' => 'oktober', - 'november' => 'november', - 'december' => 'dezember', - // special format for date() function - 'Jan' => '\J\a\n\u\a\r', - 'Feb' => '\F\e\b\r\u\a\r', - 'Mar' => '\M\a\e\r\z', - 'Apr' => '\A\p\r\i\l', - 'May' => '\M\a\i', - 'Jun' => '\J\u\n\i', - 'Jul' => '\J\u\l\i', - 'Aug' => '\A\u\g\u\s\t', - 'Sep' => '\S\e\p\t\e\m\b\e\r', - 'Oct' => '\O\k\t\o\b\e\r', - 'Nov' => '\N\o\v\e\m\b\e\r', - 'Dec' => '\D\e\z\e\m\b\e\r', - // format for date() function, %s allows to indicate month in letter - 'format_date' => 'd\.\ %s Y', - 'format_date_hour' => 'd\.\ %s Y \u\m H\:i', - - 'status_favorites' => 'Favoriten', - 'status_read' => 'Gelesen', - 'status_unread' => 'Ungelesen', - 'status_total' => 'Gesamt', - - 'stats_entry_repartition' => 'Verteilung der Einträge', - 'stats_entry_per_day' => 'Einträge pro Tag (während der letzten 30 Tage)', - 'stats_feed_per_category' => 'Feeds pro Kategorie', - 'stats_entry_per_category' => 'Einträge pro Kategorie', - 'stats_top_feed' => 'Top 10 Feeds', - 'stats_entry_count' => 'Zähler für Einträge', -); -- cgit v1.2.3