1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-07-17 17:08:37 +00:00

Merge remote-tracking branch 'origin/master' into 2.2

This commit is contained in:
Jeremy Benoist 2016-10-24 12:03:17 +02:00
commit 64a8781e45
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
82 changed files with 654 additions and 1569 deletions

View file

@ -380,7 +380,7 @@ class InstallCommand extends ContainerAwareCommand
],
[
'name' => 'piwik_host',
'value' => 'http://v2.wallabag.org',
'value' => 'v2.wallabag.org',
'section' => 'analytics',
],
[

View file

@ -330,6 +330,15 @@ class EntryController extends Controller
$this->updateEntry($entry, 'entry_reloaded');
// if refreshing entry failed, don't save it
if ($this->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) {
$bag = $this->get('session')->getFlashBag();
$bag->clear();
$bag->add('notice', 'flashes.entry.notice.entry_reloaded_failed');
return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
}
$em = $this->getDoctrine()->getManager();
$em->persist($entry);
$em->flush();

View file

@ -122,7 +122,7 @@ class LoadSettingData extends AbstractFixture implements OrderedFixtureInterface
],
[
'name' => 'piwik_host',
'value' => 'http://v2.wallabag.org',
'value' => 'v2.wallabag.org',
'section' => 'analytics',
],
[

View file

@ -39,6 +39,8 @@ class Configuration implements ConfigurationInterface
->integerNode('cache_lifetime')
->defaultValue(10)
->end()
->scalarNode('fetching_error_message')
->end()
->end()
;

View file

@ -23,6 +23,7 @@ class WallabagCoreExtension extends Extension
$container->setParameter('wallabag_core.version', $config['version']);
$container->setParameter('wallabag_core.paypal_url', $config['paypal_url']);
$container->setParameter('wallabag_core.cache_lifetime', $config['cache_lifetime']);
$container->setParameter('wallabag_core.fetching_error_message', $config['fetching_error_message']);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');

View file

@ -40,7 +40,7 @@ services:
class: Graby\Graby
arguments:
-
error_message: "wallabag can't retrieve contents for this article. Please report this issue to us."
error_message: '%wallabag_core.fetching_error_message%'
http_client:
user_agents:
'lifehacker.com': 'PHP/5.2'

View file

@ -457,6 +457,9 @@ user:
# delete_confirm: Are you sure?
# back_to_list: Back to list
error:
# page_title: An error occurred
flashes:
config:
notice:

View file

@ -11,8 +11,8 @@ security:
resetting:
description: "Gib unten deine E-Mail-Adresse ein und wir senden dir eine Anleitung für das Zurücksetzen deines Kennworts."
register:
page_title: 'Account erstellen'
go_to_account: 'Gehe zu deinem Account'
page_title: 'Konto erstellen'
go_to_account: 'Gehe zu deinem Konto'
menu:
left:
@ -53,7 +53,7 @@ config:
tab_menu:
settings: 'Einstellungen'
rss: 'RSS'
user_info: 'Benutzer-Information'
user_info: 'Benutzerinformation'
password: 'Kennwort'
rules: 'Tagging-Regeln'
new_user: 'Benutzer hinzufügen'
@ -73,18 +73,18 @@ config:
pocket_consumer_key_label: Consumer-Key für Pocket, um Inhalte zu importieren
form_rss:
description: 'Die RSS-Feeds von wallabag erlauben es dir, deine gespeicherten Artikel mit deinem bevorzugten RSS-Reader zu lesen. Vorher musst du jedoch einen Token erstellen.'
token_label: 'RSS-token'
token_label: 'RSS-Token'
no_token: 'Kein Token'
token_create: 'Token erstellen'
token_reset: 'Token zurücksetzen'
rss_links: 'RSS-Links'
rss_link:
unread: 'ungelesen'
starred: 'favoriten'
archive: 'archiv'
rss_limit: 'Anzahl der Einträge im Feed'
unread: 'Ungelesene'
starred: 'Favoriten'
archive: 'Archivierte'
rss_limit: 'Anzahl der Einträge pro Feed'
form_user:
two_factor_description: "Wenn du die Zwei-Faktor-Authentifizierung aktivierst, erhältst du eine E-Mail mit einem Code bei jeder nicht vertraulichen Verbindung"
two_factor_description: "Wenn du die Zwei-Faktor-Authentifizierung aktivierst, erhältst du eine E-Mail mit einem Code bei jeder nicht vertrauenswürdigen Verbindung"
name_label: 'Name'
email_label: 'E-Mail-Adresse'
twoFactorAuthentication_label: 'Zwei-Faktor-Authentifizierung'
@ -114,10 +114,10 @@ config:
faq:
title: 'FAQ'
tagging_rules_definition_title: 'Was bedeuten die "Tagging-Regeln"?'
tagging_rules_definition_description: 'Dies sind Regeln von wallabag, um neu hinzugefügte Einträge autmatisch zu taggen.<br />Jedes Mal, wenn ein neuer Eintrag hinzufügt wird, werden die Tagging-Regeln angewandt. Dies erleichtert dir die Arbeit, deine Einträge manuell zu klassifizieren.'
tagging_rules_definition_description: 'Dies sind Regeln von wallabag, um neu hinzugefügte Einträge automatisch zu taggen.<br />Jedes Mal, wenn ein neuer Eintrag hinzugefügt wird, werden die Tagging-Regeln angewandt. Dies erleichtert dir die Arbeit, deine Einträge manuell zu kategorisieren.'
how_to_use_them_title: 'Wie nutze ich sie?'
how_to_use_them_description: 'Nehmen wir an, du möchtest deine Einträge als "<i>schnell lesbar</i>" taggen, wenn die Lesezeit kürzer als drei Minuten ist.<br />In diesem Falle solltest du "readingTime &lt;= 3" in das <i>Regel</i>-Feld und "<i>schnell lesbar</i>" in das <i>Tags</i>-Feld schreiben.<br />Mehrere Tags können gleichzeitig hinzugefügt werden, indem sie durch ein Kommata getrennt werden: "<i>schnell lesbar, interessant</i>"<br />Komplexe Regeln können durch vordefinierte Operatoren geschrieben werden: if "<i>readingTime &gt;= 5 AND domainName = "github.com"</i>" then tag as "<i>long reading, github </i>"'
variables_available_title: 'Welche Variablen und Operatoren kann ich nutzen, um Regeln zu schreiben?'
how_to_use_them_description: 'Nehmen wir an, du möchtest deine Einträge als "<i>schnell lesbar</i>" taggen, wenn die Lesezeit kürzer als drei Minuten ist.<br />In diesem Fall solltest du "readingTime &lt;= 3" in das Feld <i>Regel</i> und "<i>schnell lesbar</i>" in das Feld <i>Tags</i> schreiben.<br />Mehrere Tags können gleichzeitig hinzugefügt werden, indem sie durch ein Komma getrennt werden: "<i>schnell lesbar, interessant</i>".<br />Komplexe Regeln können durch vordefinierte Operatoren geschrieben werden: if "<i>readingTime &gt;= 5 AND domainName = "github.com"</i>" dann tagge als "<i>länger lesen, github</i>".'
variables_available_title: 'Welche Variablen und Operatoren kann ich benutzen, um Regeln zu schreiben?'
variables_available_description: 'Die folgenden Variablen und Operatoren können genutzt werden, um Tagging-Regeln zu erstellen:'
meaning: 'Bedeutung'
variable_description:
@ -130,7 +130,7 @@ config:
language: "Sprache des Eintrags"
mimetype: "MIME-Typ des Eintrags"
readingTime: "Die geschätzte Lesezeit in Minuten"
domainName: 'Der Domain-Name des Eintrags'
domainName: 'Der Domainname des Eintrags'
operator_description:
label: 'Operator'
less_than: 'Weniger oder gleich als…'
@ -141,7 +141,7 @@ config:
not_equal_to: 'ungleich'
or: 'Eine Regel ODER die andere'
and: 'Eine Regel UND eine andere'
matches: 'Tests, ob eine <i>Variable</i> auf eine <i>Suche</i> zutrifft (Groß- und Kleinschreibung wird nicht berücksichtigt).<br />Beispiel: <code>title matches "Fußball"</code>'
matches: 'Testet, ob eine <i>Variable</i> auf eine <i>Suche</i> zutrifft (Groß- und Kleinschreibung wird nicht berücksichtigt).<br />Beispiel: <code>title matches "Fußball"</code>'
entry:
page_titles:
@ -159,13 +159,13 @@ entry:
number_of_tags: '{1}und ein anderer Tag|]1,Inf[und %count% andere Tags'
reading_time_minutes_short: '%readingTime% min'
reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
original_article: 'original'
original_article: 'Original'
toogle_as_read: 'Gelesen-Status ändern'
toogle_as_star: 'Favoriten-Status ändern'
delete: 'Löschen'
export_title: 'Exportieren'
filters:
title: 'Filters'
title: 'Filter'
status_label: 'Status'
archived_label: 'Archiviert'
starred_label: 'Favorisiert'
@ -177,14 +177,14 @@ entry:
label: 'Lesezeit in Minuten'
from: 'von'
to: 'bis'
domain_label: 'Domain-Name'
domain_label: 'Domainname'
created_at:
label: 'Erstellungsdatum'
from: 'von'
to: 'bis'
action:
clear: 'Zurücksetzen'
filter: 'Filter'
filter: 'Filtern'
view:
left_menu:
back_to_top: 'Nach oben'
@ -192,7 +192,7 @@ entry:
set_as_read: 'Als gelesen markieren'
set_as_unread: 'Als ungelesen markieren'
set_as_starred: 'Favorisieren'
view_original_article: 'Original-Artikel'
view_original_article: 'Originalartikel'
re_fetch_content: 'Inhalt neu laden'
delete: 'Löschen'
add_a_tag: 'Tag hinzufügen'
@ -221,7 +221,7 @@ entry:
is_public_label: 'Öffentlich'
save_label: 'Speichern'
public:
# shared_by_wallabag: "This article has been shared by <a href='%wallabag_instance%'>wallabag</a>"
shared_by_wallabag: "Dieser Artikel wurde mittels <a href='%wallabag_instance%'>wallabag</a> geteilt"
about:
page_title: 'Über'
@ -230,7 +230,7 @@ about:
getting_help: 'Hilfe bekommen'
helping: 'wallabag unterstützen'
contributors: 'Unterstützer'
third_party: 'Third-party libraries'
third_party: 'Bibliotheken von Drittanbietern'
who_behind_wallabag:
developped_by: 'Entwickelt von'
website: 'Webseite'
@ -240,12 +240,12 @@ about:
version: 'Version'
getting_help:
documentation: 'Dokumentation'
bug_reports: 'Bugs'
bug_reports: 'Fehlerberichte'
support: '<a href="https://support.wallabag.org">Auf unserer Support-Webseite</a> oder <a href="https://github.com/wallabag/wallabag/issues">auf GitHub</a>'
helping:
description: 'wallabag ist kostenlos und Open-Source. Du kannst uns helfen:'
description: 'wallabag ist frei und Open Source. Du kannst uns helfen:'
by_contributing: 'indem du zu dem Projekt beiträgst:'
by_contributing_2: 'ein Issue listet alle unsere Bedürfnisse:'
by_contributing_2: 'ein Ticket listet alle unsere Bedürfnisse:'
by_paypal: 'via PayPal'
contributors:
description: 'Ein Dankeschön an die Unterstützer von wallabag'
@ -258,11 +258,11 @@ howto:
page_title: 'How-To'
page_description: 'Es gibt mehrere Möglichkeiten, einen Artikel zu speichern:'
top_menu:
browser_addons: 'Browser-Addons'
browser_addons: 'Browser-Erweiterungen'
mobile_apps: 'Apps'
bookmarklet: 'Bookmarklet'
bookmarklet: 'Lesezeichen'
form:
description: 'Danke an dieses Formular'
description: 'Dank dieses Formulars'
browser_addons:
firefox: 'Firefox-Erweiterung'
chrome: 'Chrome-Erweiterung'
@ -291,16 +291,16 @@ quickstart:
admin:
title: 'Administration'
description: 'Als Adminstrator hast du einige Privilegien. Du kannst:'
new_user: 'Einen neuen Nutzer anlegen'
new_user: 'Einen neuen Benutzer anlegen'
analytics: 'das Tracking konfigurieren'
sharing: 'Einige Parameter für das Teilen von Artikel setzen'
export: 'Export-Einstellungen ändern'
import: 'Import-Einstellungen ändern'
first_steps:
title: 'Erste Schritte'
description: "Jetzt ist wallabag gut konfiguriert, es ist Zeit das Web zu archivieren. Du kannst auf das Plussymbol + oben rechts klicken, um einen Link hinzuzufügen"
description: "Jetzt ist wallabag gut konfiguriert, es ist Zeit, das Web zu archivieren. Du kannst auf das Plussymbol + oben rechts klicken, um einen Link hinzuzufügen"
new_article: 'Speichere deinen ersten Artikel'
unread_articles: 'Und klassifiziere ihn!'
unread_articles: 'Und kategorisiere ihn!'
migrate:
title: 'Von einem anderen Dienst migrieren'
description: "Du nutzt einen anderen Dienst? Wir helfen dir, um deine Daten zu wallabag zu transportieren."
@ -333,7 +333,7 @@ tag:
page_title: 'Tags'
list:
number_on_the_page: '{0} Es gibt keine Tags.|{1} Es gibt einen Tag.|]1,Inf[ Es gibt %count% Tags.'
see_untagged_entries: 'Siehe nicht getaggte Einträge'
see_untagged_entries: 'Zeige nicht getaggte Einträge'
import:
page_title: 'Importieren'
@ -350,14 +350,14 @@ import:
description: "Dieser Importer wird all deine Pocket-Daten importieren. Pocket erlaubt es uns nicht, den Inhalt zu migrieren, daher wird der lesbare Inhalt erneut von wallabag heruntergeladen."
config_missing:
description: "Pocket-Import ist nicht konfiguriert."
admin_message: 'Du musst noch den %keyurls%a pocket_consumer_key%keyurle% definieren.'
user_message: 'Der Server-Administrator muss noch einen API-Key für Pocket konfigurieren.'
authorize_message: 'Du kannst deine Daten von deinem Pocket-Account importieren. Dazu musst du nur den nachfolgenden Button klicken und die Anwendung authentifizieren, sich mit getpocket.com zu verbinden.'
admin_message: 'Du musst noch den %keyurls%pocket_consumer_key%keyurle% eintragen.'
user_message: 'Der Administrator des Servers muss noch einen API-Schlüssel für Pocket konfigurieren.'
authorize_message: 'Du kannst deine Daten von deinem Pocket-Konto importieren. Dazu musst du nur den nachfolgenden Button klicken und die Anwendung authentifizieren, sich mit getpocket.com zu verbinden zu dürfen.'
connect_to_pocket: 'Mit Pocket verbinden und Daten importieren'
wallabag_v1:
page_title: 'Aus wallabag v1 importieren'
description: 'Dieser Import wird all deine Artikel aus wallabag v1 importieren. Klicke auf der Konfigurations-Seite auf "JSON-Export" im "wallabag-Daten exportieren"-Abschnitt. Du erhältst eine "wallabag-export-1-xxxx-xx-xx.json"-Datei.'
how_to: 'Wähle die Export-Datei aus und klicke den nachfolgenden Button, um diese hochzuladen und zu importieren.'
description: 'Dieser Import wird all deine Artikel aus wallabag v1 importieren. Klicke in der Konfigurationsseite auf "JSON-Export" im "wallabag-Daten exportieren"-Abschnitt. Du erhältst eine "wallabag-export-1-xxxx-xx-xx.json"-Datei.'
how_to: 'Wähle die exportierte Datei aus und klicke den nachfolgenden Button, um diese hochzuladen und zu importieren.'
wallabag_v2:
page_title: 'Aus wallabag v2 importieren'
description: 'Dieser Import wird all deine Artikel aus wallabag v2 importieren. Gehe auf "Alle Artikel" und dann, in der Exportieren-Seitenleiste auf "JSON". Dabei erhältst du eine "All articles.json"-Datei.'
@ -369,11 +369,11 @@ import:
enabled: "Der Import erfolgt asynchron. Sobald der Import gestartet ist, wird diese Aufgabe extern abgearbeitet. Der aktuelle Service dafür ist:"
firefox:
page_title: 'Aus Firefox importieren'
description: "Dieser Import wird all deine Firefox Lesezeichen importieren. Gehe zu deinen Lesezeichen (Strg+Shift+O), dann auf \"Importen und Sichern\", wähle \"Sichern…\". Du erhälst eine .json Datei."
description: "Dieser Import wird all deine Lesezeichen aus Firefox importieren. Gehe zu deinen Lesezeichen (Strg+Shift+O), dann auf \"Importen und Sichern\", wähle \"Sichern…\". Du erhälst eine .json Datei."
how_to: "Bitte wähle deine Lesezeichensicherungsdatei aus und klicke den nachfolgenden Button zum Importieren. Beachte, dass dieser Prozess eine lange Zeit in Anspruch nehmen kann, da alle Artikel geladen werden müssen."
chrome:
page_title: 'Aus Chrome importieren'
description: "Dieser Import wird all deine Chrome Lesezeichen importieren. Der Pfad zu der Datei hängt von deinem Betriebssystem ab: <ul><li>In Linux gehst du zu dem <code>~/.config/chromium/Default/</code> Verzeichnis</li><li>In Windows sollte es unter <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code> sein</li><li>In OS X sollte es unter <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code> sein</li></ul>Wenn du dort angekommen bist, kopiere die Lesezeichendatei zu einem Ort, den du später wiederfindest.<em><br>Beachte falls du Chromium statt Chrome hast, dass du den zuvor genannten Pfad entsprechend anpasst.</em></p>"
description: "Dieser Import wird all deine Lesezeichen aus Chrome importieren. Der Pfad zu der Datei hängt von deinem Betriebssystem ab: <ul><li>In Linux gehst du zu dem <code>~/.config/chromium/Default/</code> Verzeichnis</li><li>In Windows sollte es unter <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code> sein</li><li>In OS X sollte es unter <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code> sein</li></ul>Wenn du dort angekommen bist, kopiere die Lesezeichendatei <code>Bookmarks</code> zu einem Ort, den du später wiederfindest.<em><br>Beachte falls du Chromium statt Chrome hast, dass du den zuvor genannten Pfad entsprechend anpasst.</em></p>"
how_to: "Bitte wähle deine Lesezeichensicherungsdatei aus und klicke den nachfolgenden Button zum Importieren. Beachte, dass dieser Prozess eine lange Zeit in Anspruch nehmen kann, da alle Artikel geladen werden müssen."
instapaper:
page_title: 'Aus Instapaper importieren'
@ -382,7 +382,7 @@ import:
developer:
page_title: 'Entwickler'
welcome_message: 'Willkomen zur wallabag-API'
welcome_message: 'Willkomen zur wallabag API'
documentation: 'Dokumentation'
how_to_first_app: 'Wie erstelle ich meine erste Anwendung'
full_documentation: 'Komplette API-Dokumentation einsehen'
@ -399,7 +399,7 @@ developer:
no_client: 'Bisher kein Client.'
remove:
warn_message_1: 'Du hast die Möglichkeit, diesen Client zu entfernen. DIESE AKTION IST NICHT WIDERRUFBAR!'
warn_message_2: "Wenn du ihn entfernst, hat keine der damit konfigurierten Anwendungen mehr die Möglichkeit, sich in deinen wallabag-Account anzumelden."
warn_message_2: "Wenn du ihn entfernst, hat keine der damit konfigurierten Anwendungen mehr die Möglichkeit, sich in deinen wallabag-Konto anzumelden."
action: 'Client entfernen'
client:
page_title: 'Entwickler > Neuer Client'
@ -457,12 +457,15 @@ user:
delete_confirm: Bist du sicher?
back_to_list: Zurück zur Liste
error:
# page_title: An error occurred
flashes:
config:
notice:
config_saved: 'Konfiguration gespeichert. Einige Einstellungen werden erst nach einer erneuten Anmeldung übernommen.'
password_updated: 'Kennwort aktualisiert'
password_not_updated_demo: "Im Test-Modus kannst du das Kennwort nicht ändern."
password_not_updated_demo: "Im Testmodus kannst du das Kennwort nicht ändern."
user_updated: 'Information aktualisiert'
rss_updated: 'RSS-Informationen aktualisiert'
tagging_rules_updated: 'Tagging-Regeln aktualisiert'
@ -480,11 +483,11 @@ flashes:
entry_updated: 'Eintrag aktualisiert'
entry_reloaded: 'Eintrag neugeladen'
entry_reloaded_failed: 'Eintrag neugeladen, aber das Abrufen des Inhalts ist fehlgeschlagen'
entry_archived: 'Artikel archiviert'
entry_unarchived: 'Artikel dearchiviert'
entry_starred: 'Artikel favorisiert'
entry_unstarred: 'Artikel defavorisiert'
entry_deleted: 'Artikel gelöscht'
entry_archived: 'Eintrag archiviert'
entry_unarchived: 'Eintrag dearchiviert'
entry_starred: 'Eintrag favorisiert'
entry_unstarred: 'Eintrag defavorisiert'
entry_deleted: 'Eintrag gelöscht'
tag:
notice:
tag_added: 'Tag hinzugefügt'
@ -492,8 +495,8 @@ flashes:
notice:
failed: 'Import fehlgeschlagen, bitte erneut probieren.'
failed_on_file: 'Fehler während des Imports. Bitte überprüfe deine Import-Datei.'
summary: 'Import-Zusammenfassung: %imported% importiert, %skipped% bereits gespeichert.'
summary_with_queue: 'Import-Zusammenfassung: %queued% eingereiht.'
summary: 'Importzusammenfassung: %imported% importiert, %skipped% bereits gespeichert.'
summary_with_queue: 'Importzusammenfassung: %queued% eingereiht.'
error:
redis_enabled_not_installed: 'Redis ist aktiviert, um den asynchronen Import zu bewerkstelligen, aber es sieht so aus, dass <u>wir keine Verbindung herstellen können</u>. Bitte prüfe deine Redis-Konfiguration.'
rabbit_enabled_not_installed: 'RabbitMQ ist aktiviert, um den asynchronen Import zu bewerkstelligen, aber es sieht so aus, dass <u>wir keine Verbindung herstellen können</u>. Bitte prüfe deine RabbitMQ-Konfiguration.'

View file

@ -373,7 +373,7 @@ import:
how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched."
chrome:
page_title: 'Import > Chrome'
description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>"
description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the <code>Bookmarks</code> file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>"
how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched."
instapaper:
page_title: 'Import > Instapaper'
@ -457,6 +457,9 @@ user:
delete_confirm: Are you sure?
back_to_list: Back to list
error:
page_title: An error occurred
flashes:
config:
notice:

View file

@ -457,6 +457,9 @@ user:
# delete_confirm: Are you sure?
# back_to_list: Back to list
error:
# page_title: An error occurred
flashes:
config:
notice:

View file

@ -456,6 +456,9 @@ user:
# delete_confirm: Are you sure?
# back_to_list: Back to list
error:
# page_title: An error occurred
flashes:
config:
notice:

View file

@ -377,7 +377,7 @@ import:
how_to: "Choisissez le fichier de sauvegarde de vos marques-page et cliquez sur le bouton pour l'importer. Soyez avertis que le processus peut prendre un temps assez long car tous les articles doivent être récupérés en ligne."
instapaper:
page_title: 'Import > Instapaper'
description: 'Sur la page des paramètres (`https://www.instapaper.com/user<https://www.instapaper.com/user>`_), cliquez sur "Download .CSV file" dans la section "Export". Un fichier CSV se téléchargera ("instapaper-export.csv").'
description: 'Sur la page des paramètres (https://www.instapaper.com/user), cliquez sur "Download .CSV file" dans la section "Export". Un fichier CSV se téléchargera ("instapaper-export.csv").'
how_to: "Choisissez le fichier de votre export Instapaper et cliquez sur le bouton ci-dessous pour l'importer."
developer:
@ -457,6 +457,9 @@ user:
delete_confirm: Êtes-vous sûr?
back_to_list: Revenir à la liste
error:
page_title: Une erreur est survenue
flashes:
config:
notice:

View file

@ -457,6 +457,9 @@ user:
# delete_confirm: Are you sure?
# back_to_list: Back to list
error:
# page_title: An error occurred
flashes:
config:
notice:

View file

@ -457,6 +457,9 @@ user:
delete_confirm: 'Sètz segur ?'
back_to_list: 'Tornar a la lista'
error:
# page_title: An error occurred
flashes:
config:
notice:

View file

@ -457,6 +457,9 @@ user:
delete_confirm: Jesteś pewien?
back_to_list: Powrót do listy
error:
# page_title: An error occurred
flashes:
config:
notice:

View file

@ -457,6 +457,9 @@ user:
# delete_confirm: Are you sure?
# back_to_list: Back to list
error:
# page_title: An error occurred
flashes:
config:
notice:

View file

@ -456,6 +456,9 @@ user:
# delete_confirm: Are you sure?
# back_to_list: Back to list
error:
# page_title: An error occurred
flashes:
config:
notice:

View file

@ -23,12 +23,12 @@
{% block menu %}
<button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
<ul id="links" class="links">
<li><a href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a></li>
<li><a href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a></li>
<li><a href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a></li>
<li><a href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a></li>
<li><a href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a></li>
<li><a href="{{ path('new') }}">{{ 'menu.left.save_link'|trans }}</a></li>
<li class="menu unread"><a href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a></li>
<li class="menu starred"><a href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a></li>
<li class="menu archive"><a href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a></li>
<li class="menu all"><a href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a></li>
<li class="menu tag"><a href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a></li>
<li class="menu new"><a href="{{ path('new') }}">{{ 'menu.left.save_link'|trans }}</a></li>
<!--<li style="position: relative;"><a href="javascript: void(null);" id="search">{{ 'menu.left.search'|trans }}</a>
<div id="search-form" class="messages info popup-form">
<form method="get" action="index.php">
@ -40,16 +40,16 @@
</form>
</div>
</li>-->
<li><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li>
<li class="menu config"><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li>
{% if is_granted('ROLE_SUPER_ADMIN') %}
<li><a href="{{ path('user_index') }}">{{ 'menu.left.users_management'|trans }}</a></li>
<li><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
<li class="menu users"><a href="{{ path('user_index') }}">{{ 'menu.left.users_management'|trans }}</a></li>
<li class="menu internal"><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
{% endif %}
<li><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
<li><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
<li><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li>
<li><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li>
<li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li>
<li class="menu import"><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
<li class="menu howto"><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
<li class="menu developer"><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li>
<li class="menu about"><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li>
<li class="menu logout"><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li>
</ul>
{% endblock %}

View file

@ -39,7 +39,7 @@
<meta name="twitter:image" content="{{ picturePath }}" />
<meta name="twitter:site" content="@wallabagapp" />
<meta name="twitter:title" content="{{ entry.title | raw }}" />
<meta name="twitter:description" content="{{ entry.title | raw }}" />
<meta name="twitter:description" content="{{ entry.content|striptags|slice(0, 300)|raw }}&hellip;" />
</head>
<body>
<header>

View file

@ -11,11 +11,11 @@
<div class="row">
<div class="div_tabs col s12">
<ul class="tabs">
<li class="tab col s3"><a class="active" href="#set1">{{ 'about.top_menu.who_behind_wallabag'|trans }}</a></li>
<li class="tab col s3"><a href="#set2">{{ 'about.top_menu.getting_help'|trans }}</a></li>
<li class="tab col s3"><a href="#set3">{{ 'about.top_menu.helping'|trans }}</a></li>
<li class="tab col s3"><a href="#set4">{{ 'about.top_menu.contributors'|trans }}</a></li>
<li class="tab col s3"><a href="#set5">{{ 'about.top_menu.third_party'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a class="active" href="#set1">{{ 'about.top_menu.who_behind_wallabag'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set2">{{ 'about.top_menu.getting_help'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set3">{{ 'about.top_menu.helping'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set4">{{ 'about.top_menu.contributors'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set5">{{ 'about.top_menu.third_party'|trans }}</a></li>
</ul>
</div>
@ -36,6 +36,7 @@
<dt>{{ 'about.getting_help.documentation'|trans }}</dt>
<dd><a href="http://doc.wallabag.org/en/master/">english</a></dd>
<dd><a href="http://doc.wallabag.org/fr/master/">français</a></dd>
<dd><a href="http://doc.wallabag.org/de/master/">deutsch</a></dd>
<dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
<dd>{{ 'about.getting_help.support'|trans|raw }}</dd>

View file

@ -11,11 +11,11 @@
<div class="row">
<div class="div_tabs col s12">
<ul class="tabs">
<li class="tab col s3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
<li class="tab col s3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li>
<li class="tab col s3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
<li class="tab col s3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
<li class="tab col s3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
</ul>
</div>

View file

@ -138,8 +138,11 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa
$interval = $user->getCreatedAt()->diff(new \DateTime('now'));
$nbDays = (int) $interval->format('%a') ?: 1;
// force setlocale for date translation
setlocale(LC_TIME, strtolower($user->getConfig()->getLanguage()).'_'.strtoupper(strtolower($user->getConfig()->getLanguage())));
return $this->translator->trans('footer.stats', [
'%user_creation%' => $user->getCreatedAt()->format('F jS, Y'),
'%user_creation%' => strftime('%e %B %Y', $user->getCreatedAt()->getTimestamp()),
'%nb_archives%' => $nbArchives,
'%per_day%' => round($nbArchives / $nbDays, 2),
]);

View file

@ -50,9 +50,10 @@ abstract class AbstractConsumer
$entry = $this->import->parseEntry($storedEntry);
if (null === $entry) {
$this->logger->warning('Unable to parse entry', ['entry' => $storedEntry]);
$this->logger->warning('Entry already exists', ['entry' => $storedEntry]);
return false;
// return true to skip message
return true;
}
try {

View file

@ -139,12 +139,24 @@ abstract class BrowserImport extends AbstractImport
public function parseEntry(array $importedEntry)
{
if ((!array_key_exists('guid', $importedEntry) || (!array_key_exists('id', $importedEntry))) && is_array(reset($importedEntry))) {
if ($this->producer) {
$this->parseEntriesForProducer($importedEntry);
return;
}
$this->parseEntries($importedEntry);
return;
}
if (array_key_exists('children', $importedEntry)) {
if ($this->producer) {
$this->parseEntriesForProducer($importedEntry['children']);
return;
}
$this->parseEntries($importedEntry['children']);
return;

View file

@ -5,11 +5,11 @@
<div class="card-content">
{% if error %}
<span class="black-text">{{ error.message }}</span>
<script>Materialize.toast('{{ error.message }}', 4000)</script>
{% endif %}
{% for flashMessage in app.session.flashbag.get('notice') %}
<span class="black-text"><p>{{ flashMessage }}</p></span>
<script>Materialize.toast('{{ flashMessage }}')</script>
{% endfor %}
<div class="row">
@ -41,7 +41,7 @@
<i class="material-icons right">send</i>
</button>
</div>
<div class="row center">
<div class="card-action center">
<a href="{{ path('fos_user_resetting_request') }}">{{ 'security.login.forgot_password'|trans }}</a>
</div>
</form>