]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #2500 from wallabag/add-check-composer
authorJeremy Benoist <j0k3r@users.noreply.github.com>
Thu, 27 Oct 2016 05:30:50 +0000 (07:30 +0200)
committerGitHub <noreply@github.com>
Thu, 27 Oct 2016 05:30:50 +0000 (07:30 +0200)
Added a check in Makefile to see if composer is installed

54 files changed:
.travis.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.da.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.de.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.en.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.es.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fa.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fr.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.oc.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.pl.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.pt.yml [new file with mode: 0644]
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.ro.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.tr.yml
app/Resources/FOSUserBundle/translations/FOSUserBundle.pt.yml [new file with mode: 0644]
app/config/config.yml
docs/de/index.rst
docs/de/user/backup.rst [new file with mode: 0644]
docs/de/user/upgrade-2.1.x-2.1.y.rst
docs/en/index.rst
docs/en/user/android.rst
docs/en/user/backup.rst [new file with mode: 0644]
docs/en/user/upgrade-2.1.x-2.1.y.rst
docs/fr/index.rst
docs/fr/user/backup.rst [new file with mode: 0644]
docs/fr/user/upgrade-2.1.x-2.1.y.rst
src/Wallabag/CoreBundle/Command/InstallCommand.php
src/Wallabag/CoreBundle/Controller/EntryController.php
src/Wallabag/CoreBundle/Controller/TagController.php
src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSettingData.php
src/Wallabag/CoreBundle/DependencyInjection/Configuration.php
src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php
src/Wallabag/CoreBundle/Resources/config/services.yml
src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml [new file with mode: 0644]
src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
src/Wallabag/CoreBundle/Resources/translations/validators.pt.yml [new file with mode: 0644]
src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_title.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
src/Wallabag/CoreBundle/Twig/WallabagExtension.php
src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php
src/Wallabag/ImportBundle/Import/BrowserImport.php
tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php

index c7bb05fb1fa2cbbf4ac3da396527ae2889f8e883..a8f6a74416b3ea09cec36717d810b098e8380803 100644 (file)
@@ -75,4 +75,6 @@ script:
     - if [[ $VALIDATE_TRANSLATION_FILE = '' ]]; then phpunit -v ; fi;
     - if [[ $CS_FIXER = run ]]; then php bin/php-cs-fixer fix src/ --verbose --dry-run ; fi;
     - if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml src/Wallabag/CoreBundle/Resources/translations -v ; fi;
+    - if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml app/Resources/CraueConfigBundle/translations -v ; fi;
+    - if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml app/Resources/FOSUserBundle/translations -v ; fi;
     - if [[ $ASSETS = build ]]; then ./node_modules/grunt-cli/bin/grunt tests; fi;
index 85079330fc7b1063635fd337122ee2e557dcb2d7..3e11d675c35a7534ec85e4ef54443cd59cabe0f2 100644 (file)
@@ -23,7 +23,7 @@ export: "eksport"
 import: "import"
 misc: "misc"
 modify_settings: "Gem ændring"
-piwik_host: Hosting af din side hos Piwik
+piwik_host: Hosting af din side hos Piwik (uden http:// eller https://)
 piwik_site_id: ID for din side hos Piwik
 piwik_enabled: Aktiver Piwik
 demo_mode_enabled: "Aktiver demo-indstilling? (anvendes kun til wallabags offentlige demo)"
index b3412af7fe93106a9de4ae3765ed0bd330bb99f2..c74b5c1ff1f7eb4ea99d981d37aac2710a6c1e28 100644 (file)
@@ -23,7 +23,7 @@ export: "Export"
 import: "Import"
 misc: "Verschiedenes"
 modify_settings: "Übernehmen"
-piwik_host: Host deiner Webseite in Piwik
+piwik_host: Host deiner Webseite in Piwik (ohne http:// oder https://)
 piwik_site_id: ID deiner Webseite in Piwik
 piwik_enabled: Piwik aktivieren
 demo_mode_enabled: "Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)"
index 8aaa27e766ed2b26cb2cc515171c82c38c43f5a8..77c09db4333fabcaab863979aa1e3ee3c9a36efa 100644 (file)
@@ -23,7 +23,7 @@ export: "export"
 import: "import"
 misc: "misc"
 modify_settings: "apply"
-piwik_host: Host of your website in Piwik
+piwik_host: Host of your website in Piwik (without http:// ou https://)
 piwik_site_id: ID of your website in Piwik
 piwik_enabled: Enable Piwik
 demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
index bf3a79af85225e89bd9d80ebf926dd0ac5acf669..baa838493d62190678426479e016b904dae9470e 100644 (file)
@@ -23,7 +23,7 @@ export: "exportar"
 import: "importar"
 misc: "misc"
 modify_settings: "modificar configuración"
-piwik_host: Host de tu website de Piwik
+piwik_host: Host de tu website de Piwik (sin http:// o https://)
 piwik_site_id: ID de tu website de Piwik
 piwik_enabled: Activar Piwik
 demo_mode_enabled: "Activar modo demo (sólo usado para la demo de wallabag)"
index d86c434333262d2b5a115e7e35b000be338eb165..b394977e2e2c9b00de9684c60fb757cafa7ce073 100644 (file)
@@ -23,7 +23,7 @@ export: "برون‌سپاری"
 import: "درون‌ریزی"
 misc: "غیره"
 modify_settings: "اعمال"
-# piwik_host: Host of your website in Piwik
+# piwik_host: Host of your website in Piwik (without http:// or https://)
 # piwik_site_id: ID of your website in Piwik
 # piwik_enabled: Enable Piwik
 # demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
index 5e1ecf26c8a100229c0c5b5112e88a305aa68dd4..31a80880440a379f8d9f6805626d65cfdecf36d7 100644 (file)
@@ -23,7 +23,7 @@ export: "export"
 import: "import"
 misc: "divers"
 modify_settings: "appliquer"
-piwik_host: URL de votre site dans Piwik
+piwik_host: URL de votre site dans Piwik (sans http:// ou https://)
 piwik_site_id: ID de votre site dans Piwik
 piwik_enabled: Activer Piwik
 demo_mode_enabled: "Activer le mode démo ? (utiliser uniquement pour la démo publique de wallabag)"
index 9d820e4bc28f63076e292ebcff889bffb500ded5..ba038556159a9ff4bdef8e9a4b5f41c49895317a 100644 (file)
@@ -23,7 +23,7 @@ export: "esporta"
 import: "importa"
 misc: "misc"
 modify_settings: "applica"
-piwik_host: Host del tuo sito in Piwik
+piwik_host: Host del tuo sito in Piwik (senza http:// o https://)
 piwik_site_id: ID del tuo sito in Piwik
 piwik_enabled: Abilita Piwik
 demo_mode_enabled: "Abilita modalità demo ? (usato solo per la demo pubblica di wallabag)"
index 49dc77326c80884418ca8a5ded7aaf1668bbfe82..55249e33b529e696131bba1db8d8322aeac17d88 100644 (file)
@@ -23,7 +23,7 @@ export: "expòrt"
 import: "impòrt"
 misc: "divèrs"
 modify_settings: "aplicar"
-piwik_host: URL de vòstre site dins Piwik
+piwik_host: URL de vòstre site dins Piwik (sense http:// o https://)
 piwik_site_id: ID de vòstre site dins Piwik
 piwik_enabled: Activar Piwik
 demo_mode_enabled: "Activar lo mode demostracion ? (utilizar solament per la demostracion publica de wallabag)"
index 7432b0a797f801fea2794e0d6f6a0a4dc2b966c1..42cc5b5253ba1e381fc89f29c158a72fbd14601c 100644 (file)
@@ -23,7 +23,7 @@ export: "eksport"
 import: "import"
 misc: "różne"
 modify_settings: "zatwierdz"
-piwik_host: Host twojej strony Piwik
+piwik_host: Host twojej strony Piwik (bez http:// lub https://)
 piwik_site_id: ID twojej strony Piwik
 piwik_enabled: Włacz Piwik
 demo_mode_enabled: "Włacz tryb demo? (używany wyłącznie dla publicznej demonstracji Wallabag)"
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.pt.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.pt.yml
new file mode 100644 (file)
index 0000000..e826042
--- /dev/null
@@ -0,0 +1,29 @@
+download_pictures: Download imagens no seu servidor
+carrot: Habilitar compartilhamento para o Carrot
+diaspora_url: URL Diaspora, se o serviço está habilitado
+export_epub: Habilita exportação para ePub
+export_mobi: Habilita exportação para .mobi
+export_pdf: Habilita exportação para PDF
+export_csv: Habilita exportação para CSV
+export_json: Habilita exportação para JSON
+export_txt: Habilita exportação para TXT
+export_xml: Habilita exportação para XML
+pocket_consumer_key: Chave de consumidor do Pocket para importar conteúdo (https://getpocket.com/developer/docs/authentication)
+shaarli_url: URL Shaarli, se o serviço está habilitado
+share_diaspora: Habilitar compartilhamento para o Diaspora
+share_mail: Habilitar compartilhamento por e-mail
+share_shaarli: Habilitar compartilhamento para o Shaarli
+share_twitter: Habilitar compartilhamento para o Twitter
+show_printlink: Mostrar um link para imprimir o conteúdo
+wallabag_support_url: URL de Suporte do wallabag
+wallabag_url: URL de *sua* instância do wallabag
+entry: "artigo"
+export: "exportar"
+import: "importar"
+misc: "misc"
+modify_settings: "aplicar"
+piwik_host: Host de seu website Piwik
+piwik_site_id: ID de seu website Piwik
+piwik_enabled: Habilitar Piwik
+demo_mode_enabled: "Habilitar modo demo? (somente usado para o demo público do wallabag)"
+demo_mode_username: "Usuário demo"
index 20d664f7ec4b975d30d4e737c05695db395e1e6e..8e72b95555c161950a55d4475592e630a097273e 100644 (file)
@@ -23,7 +23,7 @@ export: "exportă"
 import: "importă"
 misc: "diverse"
 modify_settings: "aplică"
-# piwik_host: Host of your website in Piwik
+# piwik_host: Host of your website in Piwik (without http:// or https://)
 # piwik_site_id: ID of your website in Piwik
 # piwik_enabled: Enable Piwik
 # demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
index 4b4d3edb9abe0086fa3416ec464bc733f2f98ffe..55f70843397c754843bf061b9aadbed247f2891a 100644 (file)
@@ -23,7 +23,7 @@
 # import: "import"
 # misc: "misc"
 # modify_settings: "apply"
-# piwik_host: Host of your website in Piwik
+# piwik_host: Host of your website in Piwik (without http:// or https://)
 # piwik_site_id: ID of your website in Piwik
 # piwik_enabled: Enable Piwik
 # demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
diff --git a/app/Resources/FOSUserBundle/translations/FOSUserBundle.pt.yml b/app/Resources/FOSUserBundle/translations/FOSUserBundle.pt.yml
new file mode 100644 (file)
index 0000000..85eadfd
--- /dev/null
@@ -0,0 +1,2 @@
+Login: "Login"
+Enter your email address below and we'll send you password reset instructions.: "Digite seu endereço de e-mail para enviarmos as instruções de recupeção de sua senha."
index ed2e7416b9bef84ac8275cb88cd367b13f39a1de..81d1728a3b9193b3c08d75bb6a3eb366f6235c30 100644 (file)
@@ -30,7 +30,7 @@ framework:
     assets: ~
 
 wallabag_core:
-    version: 2.1.2
+    version: 2.1.3-dev
     paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb"
     languages:
         en: 'English'
@@ -44,12 +44,15 @@ wallabag_core:
         es: 'Español'
         oc: 'Occitan'
         it: 'Italiano'
+        pt: 'Português'
     items_on_page: 12
     theme: material
     language: '%locale%'
     rss_limit: 50
     reading_speed: 1
     cache_lifetime: 10
+    fetching_error_message: |
+        wallabag can't retrieve contents for this article. Please <a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html#how-can-i-help-to-fix-that">troubleshoot this issue</a>.
 
 wallabag_user:
     registration_enabled: "%fosuser_registration%"
index a380d7bdd54eb0728fb0b658da4c2f33a66f1a8b..b422bf831f29ce4d594a8a58167ce2d7bb7d5108 100644 (file)
@@ -45,6 +45,7 @@ Die Dokumentation ist in anderen Sprachen verfügbar :
    user/tags
    user/android
    user/parameters
+   user/backup
 
 .. _dev-docs:
 
diff --git a/docs/de/user/backup.rst b/docs/de/user/backup.rst
new file mode 100644 (file)
index 0000000..ffe3ce3
--- /dev/null
@@ -0,0 +1,25 @@
+wallabag sichern
+================
+Da es manchmal vorkommen kann, dass dir ein Fehler mit deiner wallabag unterläuft und du Daten verlierst oder deine wallabag auf einen anderen Server verschieben willst, ist eine Sicherung der Daten sicher ratsam.
+Dieser Artikel beschreibt, was du für die Sicherung benötigst.
+
+Grundlegende Einstellungen
+--------------------------
+wallabag speichert grundlegende Parameter (etwa der SMTP-Server oder das Datenbank-Backend) in der Datei `app/config/parameters.yml`.
+
+Datenbank
+---------
+Da wallabag verschiedene Datenbank-Typen unterstützt, hängt der Weg der Sicherung von dem verwendeten Typ ab. Daher verweisen wir an dieser Stelle auf die entsprechenden Dokumentationen:
+
+Hier sind einige Beispiele:
+
+- MySQL: http://dev.mysql.com/doc/refman/5.7/en/backup-methods.html
+- PostgreSQL: https://www.postgresql.org/docs/current/static/backup.html
+
+SQLite
+~~~~~~
+Um die SQLite-Datenbank zu sichern, ist es lediglich notwendig, das Verzeichnis `data/db` aus dem wallabag-Installations-Ordner zu kopieren.
+
+Bilder
+------
+Die Bilder, die von wallabag empfangen worden, sind unter `data/assets/images` gespeichert (der Bilder-Speicher wird in wallabag 2.2 implementiert).
index e638ea9b64db29f20c672469845cb69e5b6d2d11..2f9b7791b3830ba33d285f1b8e3c6f150d7df894 100644 (file)
@@ -26,7 +26,7 @@ Lade das neueste Release von wallabag herunter:
 
     wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package
 
-(md5 Hashsumme von 2.1.1: ``9584a3b60a2b2a4de87f536548caac93``)
+Du findest die `md5 Hashsumme des neuesten Pakets auf unserer Website <https://www.wallabag.org/pages/download-wallabag.html>`_.
 
 Entpacke das Archiv in deinen wallabag Ordner und ersetze ``app/config/parameters.yml`` mit deiner Datei.
 
index 6d85db2ba903b3ac8565d43420a8863871ab62f0..0ead261b1f9120997a276bc50b9c6c71f05a0c9c 100644 (file)
@@ -46,6 +46,7 @@ The documentation is available in other languages:
    user/tags
    user/android
    user/parameters
+   user/backup
 
 .. _dev-docs:
 
index ccbad264260201150fcebae0b5fcb6908bcdc213..91dcb2fc07db491d64773ad88334b488c598045c 100644 (file)
@@ -79,7 +79,7 @@ Known limitations
 2FA
 ~~~
 
-Currently the does not support two-factor authentication. You should disable that to get the app working.
+Currently the Android application does not support two-factor authentication. You should disable that to get the application working.
 
 
 Limited amount of articles with wallabag v2
diff --git a/docs/en/user/backup.rst b/docs/en/user/backup.rst
new file mode 100644 (file)
index 0000000..5172100
--- /dev/null
@@ -0,0 +1,25 @@
+Backup wallabag
+===============
+Because sometimes you may do a mistake with your wallabag and lose data or in case you need to move your wallabag to another server you want to backup your data.
+This articles describes what you need to backup.
+
+Basic settings
+--------------
+wallabag stores some basic parameters (like SMTP server or database backend) in the file `app/config/parameters.yml`.
+
+Database
+--------
+As wallabag supports different kinds of database, the way to perform the backup depends on the database you use, so you need to refer to the vendor documentation.
+
+Here's some examples:
+
+- MySQL: http://dev.mysql.com/doc/refman/5.7/en/backup-methods.html
+- PostgreSQL: https://www.postgresql.org/docs/current/static/backup.html
+
+SQLite
+~~~~~~
+To backup the SQLite database, you just need to copy the directory `data/db` from the wallabag application directory.
+
+Images
+------
+The images retrieved by wallabag are stored under `data/assets/images` (the images storage will be implemented in wallabag 2.2).
index 575f4ba9d72b197433bc148702c3d9ed4668d032..62cb7dc0ae205689e0b61b7569e6c65fbaaef3a3 100644 (file)
@@ -26,7 +26,7 @@ Download the last release of wallabag:
 
     wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package
 
-(md5 hash of the 2.1.1 package: ``9584a3b60a2b2a4de87f536548caac93``)
+You will find the `md5 hash of the latest package on our website <https://www.wallabag.org/pages/download-wallabag.html>`_.
 
 Extract the archive in your wallabag folder and replace ``app/config/parameters.yml`` with yours.
 
index 2a265ff34ffd2455080b1a4b98b74bf277e166b6..dbb8591033b1847a9a5eb392153db4497376aa8a 100644 (file)
@@ -46,6 +46,7 @@ La documentation est disponible dans d'autres langues :
    user/filters
    user/tags
    user/parameters
+   user/backup
 
 .. _dev-docs:
 
diff --git a/docs/fr/user/backup.rst b/docs/fr/user/backup.rst
new file mode 100644 (file)
index 0000000..ec4b1f4
--- /dev/null
@@ -0,0 +1,26 @@
+Sauvegarde de wallabag
+======================
+
+Parce que des fois vous faites des erreurs avec votre installation de wallabag et vous perdez des données ou parce que vous souhaitez migrer votre installation sur un autre serveur, vous souhaitez faire une sauvegarde de vos données.
+Cette documentation décrit ce que vous devez sauvegarder.
+
+Configuration
+-------------
+wallabag stocke quelques paramètres (comme la configuration SMTP ou les infos de bases de données) dans le fichier `app/config/parameters.yml`.
+
+Base de données
+---------------
+Comme wallabag supporte différentes sortes de bases de données, la manière de sauvegarder dépend du type de base de données que vous utilisez, donc vous devez vous en référez à la documentation correspondante.
+
+Quelques exemples :
+
+- MySQL: http://dev.mysql.com/doc/refman/5.7/en/backup-methods.html
+- PostgreSQL: https://www.postgresql.org/docs/current/static/backup.html
+
+SQLite
+~~~~~~
+Pour sauvegarder une base SQLite, vous devez juste copier le répertoire `data/db` de votre installation wallabag.
+
+Images
+------
+Les images sauvegardées par wallabag sont stockées dans `data/assets/images` (le stockage des images sera implémenté dans wallabag 2.2).
index c048099f980d4c682c8badb7feb56da1a5115845..b6f1a2d09f712d95f5e9d8826c7b0155dadb4831 100644 (file)
@@ -26,7 +26,7 @@ Téléchargez la dernière version de wallabag :
 
     wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package
 
-(hash md5 de l'archive 2.1.1 : ``9584a3b60a2b2a4de87f536548caac93``)
+Vous trouverez `le hash md5 du dernier package sur notre site <https://www.wallabag.org/pages/download-wallabag.html>`_.
 
 Décompressez l'archive dans votre répertoire d'installation et remplacez le fichier ``app/config/parameters.yml`` avec le votre.
 
index 8e438229f9584d788b299ce51d634939e791eac2..857a8b4cfb2abed26a449d8ee270b8a4b9a224ab 100644 (file)
@@ -364,7 +364,7 @@ class InstallCommand extends ContainerAwareCommand
             ],
             [
                 'name' => 'piwik_host',
-                'value' => 'http://v2.wallabag.org',
+                'value' => 'v2.wallabag.org',
                 'section' => 'analytics',
             ],
             [
index 3b28e635025253a8a7baa1c4eb6ff6c12600aba4..97bb3d12fa3b07afc7ef8a4620e1ae512d946151 100644 (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();
index 5acc685281a205a57cf88b92e72125cc040abc0b..707f3bbe3ea152a45964189baaf5f5ba313fbbfb 100644 (file)
@@ -143,6 +143,7 @@ class TagController extends Controller
             'form' => null,
             'entries' => $entries,
             'currentPage' => $page,
+            'tag' => $tag->getLabel(),
         ]);
     }
 }
index 9425f961fd9668fa7fc47029405e5fd8eb920607..a5e1be65f402ae5e18511ce3c320892e338aa433 100644 (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',
             ],
             [
index d8141eea993ffbb277bf0954407ddeb2d774466e..3a3da0246f2d5869537a4b620fcb80782bcee99d 100644 (file)
@@ -39,6 +39,8 @@ class Configuration implements ConfigurationInterface
                 ->integerNode('cache_lifetime')
                     ->defaultValue(10)
                 ->end()
+                ->scalarNode('fetching_error_message')
+                ->end()
             ->end()
         ;
 
index 0cbde908d0f205f8a2f6e798316c18837866289e..b4992d545066506cf4824d0357977f6dfc08ac2b 100644 (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');
index a4b727f42b57d21ef4b3a9eedc881370ecca8cef..614488a64fd92596243a19ba5bea04d81c989c1a 100644 (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'
index bb23b5fedfbce9b8090e95aadbd993496faf51c4..6ca7e459c7a6ffaca14f1676de5e501481c0d2ef 100644 (file)
@@ -137,7 +137,7 @@ entry:
         # starred: 'Starred entries'
         # archived: 'Archived entries'
         # filtered: 'Filtered entries'
-        # filtered_tags: 'Filtered by tags'
+        # filtered_tags: 'Filtered by tags:'
         # untagged: 'Untagged entries'
     list:
         # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
@@ -445,6 +445,9 @@ user:
         # delete_confirm: Are you sure?
         # back_to_list: Back to list
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
index d1df8669b39d74a1bf48eac4f2490745bb52989e..8fd1d82a2f59e95308d667fe2a068fe48452ec08 100644 (file)
@@ -137,7 +137,7 @@ entry:
         starred: 'Favorisierte Einträge'
         archived: 'Archivierte Einträge'
         filtered: 'Gefilterte Einträge'
-        filtered_tags: 'Gefiltert nach Tags'
+        filtered_tags: 'Gefiltert nach Tags:'
         untagged: 'Nicht getaggte Einträge'
     list:
         number_on_the_page: '{0} Es gibt keine Einträge.|{1} Es gibt einen Eintrag.|]1,Inf[ Es gibt %count% Einträge.'
@@ -445,6 +445,9 @@ user:
         delete_confirm: Bist du sicher?
         back_to_list: Zurück zur Liste
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
index 4a8934b8bac8996481718e4bf9b76bdbc5b84c58..02f56535cc4980dee2e206f2bc16a95eb62b7e41 100644 (file)
@@ -137,7 +137,7 @@ entry:
         starred: 'Starred entries'
         archived: 'Archived entries'
         filtered: 'Filtered entries'
-        filtered_tags: 'Filtered by tags'
+        filtered_tags: 'Filtered by tags:'
         untagged: 'Untagged entries'
     list:
         number_on_the_page: '{0} There are no entries.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
@@ -445,6 +445,9 @@ user:
         delete_confirm: Are you sure?
         back_to_list: Back to list
 
+error:
+    page_title: An error occurred
+
 flashes:
     config:
         notice:
index 29f0676ee07a91aaaf4f68fc28e9f81776329cee..42ec8183fdab25fcc76075bc4e8f9b9375df5467 100644 (file)
@@ -137,7 +137,7 @@ entry:
         starred: 'Artículos favoritos'
         archived: 'Artículos archivados'
         filtered: 'Artículos filtrados'
-        # filtered_tags: 'Filtered by tags'
+        # filtered_tags: 'Filtered by tags:'
         # untagged: 'Untagged entries'
     list:
         number_on_the_page: '{0} No hay artículos.|{1} Hay un artículo.|]1,Inf[ Hay %count% artículos.'
@@ -445,6 +445,9 @@ user:
         # delete_confirm: Are you sure?
         # back_to_list: Back to list
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
index 074ab7a8981c84666abd240110ff85f03358cc3c..f82167df9ebf8b7583506cdc7e10d9c323445251 100644 (file)
@@ -137,7 +137,7 @@ entry:
         starred: 'مقاله‌های برگزیده'
         archived: 'مقاله‌های بایگانی‌شده'
         filtered: 'مقاله‌های فیلترشده'
-        # filtered_tags: 'Filtered by tags'
+        # filtered_tags: 'Filtered by tags:'
         # untagged: 'Untagged entries'
     list:
         number_on_the_page: '{0} هیج مقاله‌ای نیست.|{1} یک مقاله هست.|]1,Inf[ %count% مقاله هست.'
@@ -444,6 +444,9 @@ user:
         # delete_confirm: Are you sure?
         # back_to_list: Back to list
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
index 55453b6cee7b148faecae1ed2ef6175d161d0d1c..574cc1a747b5084355e32e137e7273e794b122a3 100644 (file)
@@ -137,7 +137,7 @@ entry:
         starred: 'Articles favoris'
         archived: 'Articles lus'
         filtered: 'Articles filtrés'
-        filtered_tags: 'Articles filtrés par tags'
+        filtered_tags: 'Articles filtrés par tags :'
         untagged: 'Article sans tag'
     list:
         number_on_the_page: "{0} Il n'y a pas d'articles.|{1} Il y a un article.|]1,Inf[ Il y a %count% articles."
@@ -365,7 +365,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:
@@ -445,6 +445,9 @@ user:
         delete_confirm: Êtes-vous sûr?
         back_to_list: Revenir à la liste
 
+error:
+    page_title: Une erreur est survenue
+
 flashes:
     config:
         notice:
index 67205c6d1694ddec19041f67f85796831e8937b9..d679ef003240aa9a043d9e9f97ab94646fbc4692 100644 (file)
@@ -137,7 +137,7 @@ entry:
         starred: 'Contenuti preferiti'
         archived: 'Contenuti archiviati'
         filtered: 'Contenuti filtrati'
-        # filtered_tags: 'Filtered by tags'
+        # filtered_tags: 'Filtered by tags:'
         # untagged: 'Untagged entries'
     list:
         number_on_the_page: "{0} Non ci sono contenuti.|{1} C'è un contenuto.|]1,Inf[ Ci sono %count% contenuti."
@@ -445,6 +445,9 @@ user:
         # delete_confirm: Are you sure?
         # back_to_list: Back to list
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
index 25e5f05a1b0f1eff2421298d59341fa589dd5ed9..af0fba0dc409dac909604cf992cc39a7ce9e94ce 100644 (file)
@@ -137,7 +137,7 @@ entry:
         starred: 'Articles favorits'
         archived: 'Articles legits'
         filtered: 'Articles filtrats'
-        filtered_tags: 'Filtats per etiquetas'
+        filtered_tags: 'Filtats per etiquetas:'
         untagged: 'Articles sens etiqueta'
     list:
         number_on_the_page: "{0} I a pas cap d'article.|{1} I a un article.|]1,Inf[ I a %count% articles."
@@ -445,6 +445,9 @@ user:
         # delete_confirm: Are you sure?
         # back_to_list: Back to list
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
index 392f9c19456cbaf8a5ec746e82321663b522f789..bf47b58a72e3ad602ea92f350917f2581fee9933 100644 (file)
@@ -137,7 +137,7 @@ entry:
         starred: 'Wpisy oznaczone gwiazdką'
         archived: 'Zarchiwizowane wpisy'
         filtered: 'Odfiltrowane wpisy'
-        filtered_tags: 'Filtrowane po tagach'
+        filtered_tags: 'Filtrowane po tagach:'
         untagged: 'Odtaguj wpisy'
     list:
         number_on_the_page: '{0} Nie ma wpisów.|{1} Jest jeden wpis.|]1,Inf[ Są %count% wpisy.'
@@ -445,6 +445,9 @@ user:
         delete_confirm: Jesteś pewien?
         back_to_list: Powrót do listy
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
new file mode 100644 (file)
index 0000000..f10dc9a
--- /dev/null
@@ -0,0 +1,492 @@
+security:
+    login:
+        page_title: 'Bem vindo ao wallabag!'
+        keep_logged_in: 'Mantenha-me autenticado'
+        forgot_password: 'Esqueceu a senha?'
+        submit: 'Login'
+        register: 'Registre-se'
+        username: 'Nome de usuário'
+        password: 'Senha'
+        cancel: 'Cancelar'
+    resetting:
+        description: 'Digite seu endereço de e-mail abaixo e enviaremos instruções para resetar sua senha.'
+    register:
+        page_title: 'Criar uma conta'
+        go_to_account: 'Ir para sua conta'
+
+menu:
+    left:
+        unread: 'Não lido'
+        starred: 'Destacado'
+        archive: 'Arquivo'
+        all_articles: 'Todas as entradas'
+        config: 'Configurações'
+        tags: 'Tags'
+        internal_settings: 'Configurações Internas'
+        import: 'Importar'
+        howto: 'How to'
+        developer: 'Desenvolvedor'
+        logout: 'Sair'
+        about: 'Sobre'
+        search: 'Pesquisa'
+        save_link: 'Salvar um link'
+        back_to_unread: 'Voltar para os artigos não lidos'
+        users_management: 'Gestão de Usuários'
+    top:
+        add_new_entry: 'Adicionar uma nova entrada'
+        search: 'Pesquisa'
+        filter_entries: 'Filtrar entradas'
+        export: 'Exportar'
+    search_form:
+        input_label: 'Digite aqui sua pesquisa'
+
+footer:
+    wallabag:
+        elsewhere: 'Leve o wallabag com você'
+        social: 'Social'
+        powered_by: 'provido por'
+        about: 'Sobre'
+    stats: 'Desde %user_creation% você leu %nb_archives% artigos. Isso é %per_day% por dia!'
+
+config:
+    page_title: 'Config'
+    tab_menu:
+        settings: 'Configurações'
+        rss: 'RSS'
+        user_info: 'Informação do Usuário'
+        password: 'Senha'
+        rules: 'Regras de tags'
+        new_user: 'Adicionar um usuário'
+    form:
+        save: 'Salvar'
+    form_settings:
+        theme_label: 'Tema'
+        items_per_page_label: 'Itens por página'
+        language_label: 'Idioma'
+        reading_speed:
+            label: 'Velocidade de leitura'
+            help_message: 'Você pode usar ferramentas online para estimar sua velocidade de leitura:'
+            100_word: 'Posso ler ~100 palavras por minuto'
+            200_word: 'Posso ler ~200 palavras por minuto'
+            300_word: 'Posso ler ~300 palavras por minuto'
+            400_word: 'Posso ler ~400 palavras por minuto'
+        pocket_consumer_key_label: 'Chave do consumidor do Pocket para importar conteúdo'
+    form_rss:
+        description: 'Feeds RSS providos pelo wallabag permitem que você leia seus artigos salvos em seu leitor de RSS favorito. Você precisa gerar um token primeiro.'
+        token_label: 'Token RSS'
+        no_token: 'Nenhum Token'
+        token_create: 'Criar seu token'
+        token_reset: 'Gerar novamente seu token'
+        rss_links: 'Links RSS'
+        rss_link:
+            unread: 'não lido'
+            starred: 'destacado'
+            archive: 'arquivado'
+        rss_limit: 'Número de itens no feed'
+    form_user:
+        two_factor_description: 'Habilitar autenticação de dois passos significa que você receberá um e-mail com um código a cada nova conexão desconhecida.'
+        name_label: 'Nome'
+        email_label: 'E-mail'
+        twoFactorAuthentication_label: 'Autenticação de dois passos'
+    form_password:
+        old_password_label: 'Senha atual'
+        new_password_label: 'Nova senha'
+        repeat_new_password_label: 'Repita a nova senha'
+    form_rules:
+        if_label: 'if'
+        then_tag_as_label: 'então coloque a tag'
+        delete_rule_label: 'apagar'
+        edit_rule_label: 'editar'
+        rule_label: 'Regras'
+        tags_label: 'Tags'
+        faq:
+            title: 'FAQ'
+            tagging_rules_definition_title: 'O que as « regras de tags » significam?'
+            tagging_rules_definition_description: 'São regras usadas pelo Wallabag para automaticamente adicionar tags em novos artigos.<br />Cada vez que um novo artigo é adicionado, todas as regras de tags podem ser usadas para adicionar as tags que você configurou, ajudando-o com o problema de classificar manualmente seus artigos.'
+            how_to_use_them_title: 'Como eu as utilizo?'
+            how_to_use_them_description: 'Vamos dizer que você deseja adicionar a tag « <i>leitura rápida</i> » quando o tempo de leitura for menor que 3 minutos.<br />Neste caso, você deve « readingTime &lt;= 3 » no campo <i>Regra</i> e « <i>leitura rápida</i> » no campo <i>Tags</i>.<br />Diversas tags podem ser adicionadas simultâneamente separando-as com vírgula: « <i>leitura rápida, precisa ser lido</i> »<br />Regras complexas podem ser escritas usando os seguintes operadores pré-definidos: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » então adicione a tag « <i>leitura longa, github </i> »'
+            variables_available_title: 'Quais variáveis e operadores eu posso usar para escrever regras?'
+            variables_available_description: 'As seguintes variáveis e operadores podem ser usados para criar regras de tags:'
+            meaning: 'Meaning'
+            variable_description:
+                label: 'Variável'
+                title: 'Título da entrada'
+                url: 'URL da entrada'
+                isArchived: 'Se a entrada está arquivada ou não'
+                isDestacado: 'Se a entrada está destacada ou não'
+                content: 'O conteúdo da entrada'
+                language: 'O idioma da entrada'
+                mimetype: 'O mime-type da entrada'
+                readingTime: 'O tempo estimado de leitura da entrada, em minutos'
+                domainName: 'O domínio da entrada'
+            operator_description:
+                label: 'Operador'
+                less_than: 'Menor que...'
+                strictly_less_than: 'Estritamente menor que...'
+                greater_than: 'Maior que...'
+                strictly_greater_than: 'Estritamente maior que...'
+                equal_to: 'Igual a...'
+                not_equal_to: 'Diferente de...'
+                or: 'Uma regra OU outra'
+                and: 'Uma regra E outra'
+                matches: 'Testa que um <i>assunto</i> corresponde a uma <i>pesquisa</i> (maiúscula ou minúscula).<br />Exemplo: <code>título corresponde a "futebol"</code>'
+
+entry:
+    page_titles:
+        unread: 'Entradas não lidas'
+        starred: 'Entradas destacadas'
+        archived: 'Entradas arquivadas'
+        filtered: 'Entradas filtradas'
+        filtered_tags: 'Filtrar por tags:'
+        untagged: 'Entradas sem tags'
+    list:
+        number_on_the_page: '{0} Não existem entradas.|{1} Existe uma entrada.|]1,Inf[ Existem %count% entradas.'
+        reading_time: 'tempo estimado de leitura'
+        reading_time_minutes: 'tempo estimado de leitura: %readingTime% min'
+        reading_time_less_one_minute: 'tempo estimado de leitura: <small class="inferieur">&lt;</small> 1 min'
+        number_of_tags: '{1}e uma outra tag|]1,Inf[e %count% outras tags'
+        reading_time_minutes_short: '%readingTime% min'
+        reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
+        original_article: 'original'
+        toogle_as_read: 'Marcar como lido'
+        toogle_as_star: 'Marcar como destacado'
+        delete: 'Apagar'
+        export_title: 'Exportar'
+    filters:
+        title: 'Filtros'
+        status_label: 'Status'
+        archived_label: 'Arquivado'
+        starred_label: 'Destacado'
+        unread_label: 'Não Lido'
+        preview_picture_label: 'Possui uma imagem de preview'
+        preview_picture_help: 'Imagem de preview'
+        language_label: 'Idioma'
+        reading_time:
+            label: 'Tempo de leitura em minutos'
+            from: 'de'
+            to: 'para'
+        domain_label: 'Nome do domínio'
+        created_at:
+            label: 'Data de criação'
+            from: 'de'
+            to: 'para'
+        action:
+            clear: 'Limpar'
+            filter: 'Filtro'
+    view:
+        left_menu:
+            back_to_top: 'Voltar ao topo'
+            back_to_homepage: 'Voltar'
+            set_as_read: 'Marcar como lido'
+            set_as_unread: 'Marcar como não lido'
+            set_as_starred: 'Alternar destaque'
+            view_original_article: 'Artigo original'
+            re_fetch_content: 'Recapturar o conteúdo'
+            delete: 'Apagar'
+            add_a_tag: 'Adicionar uma tag'
+            share_content: 'Compartilhar'
+            share_email_label: 'E-mail'
+            public_link: 'link público'
+            delete_public_link: 'apagar link público'
+            download: 'Download'
+            print: 'Imprimir'
+            problem:
+                label: 'Problemas?'
+                description: 'este artigo aparece errado?'
+        edit_title: 'Editar título'
+        original_article: 'original'
+        annotations_on_the_entry: '{0} Sem anotações|{1} Uma anotação|]1,Inf[ %nbAnnotations% anotações'
+        created_at: 'Data de criação'
+    new:
+        page_title: 'Salvar nova entrada'
+        placeholder: 'http://website.com'
+        form_new:
+            url_label: Url
+    edit:
+        page_title: 'Editar uma entrada'
+        title_label: 'Título'
+        url_label: 'Url'
+        is_public_label: 'Público'
+        save_label: 'Salvar'
+    public:
+        shared_by_wallabag: "Este artigo foi compartilhado pelo <a href='%wallabag_instance%'>wallabag</a>"
+
+about:
+    page_title: 'Sobre'
+    top_menu:
+        who_behind_wallabag: 'Quem está por trás do wallabag'
+        getting_help: 'Obtendo ajuda'
+        helping: 'Ajudando o wallabag'
+        contributors: 'Contribuidores'
+        third_party: 'Bibliotecas terceiras'
+    who_behind_wallabag:
+        developped_by: 'Desenvolvido por'
+        website: 'website'
+        many_contributors: 'E muitos outros contribuidores ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">no Github</a>'
+        project_website: 'Website do projeto'
+        license: 'Licença'
+        version: 'Versão'
+    getting_help:
+        documentation: 'Documentação'
+        bug_reports: 'Informar bugs'
+        support: '<a href="https://support.wallabag.org">Em nosso site de suporte</a> ou <a href="https://github.com/wallabag/wallabag/issues">no GitHub</a>'
+    helping:
+        description: 'wallabag é livre e software livre. Você pode nos ajudar:'
+        by_contributing: 'contribuindo com o projeto:'
+        by_contributing_2: 'uma lista de todas as nossas necessidades'
+        by_paypal: 'via Paypal'
+    contributors:
+        description: 'Obrigado por contribuir com a aplicação web wallabag'
+    third_party:
+        description: 'Aqui está a lista de bibliotecas terceiras usadas no wallabag (com suas licenças):'
+        package: 'Pacote'
+        license: 'Licença'
+
+howto:
+    page_title: 'How to'
+    page_description: 'Existem diferentes formas de salvar um artigo:'
+    top_menu:
+        browser_addons: 'Extensões de navegadores'
+        mobile_apps: "App's móveis"
+        bookmarklet: 'Bookmarklet'
+    form:
+        description: 'Obrigado por este formulário'
+    browser_addons:
+        firefox: 'Extensão padrão do Firefox'
+        chrome: 'Extensão do Chrome'
+    mobile_apps:
+        android:
+            via_f_droid: 'via F-Droid'
+            via_google_play: 'via Google Play'
+        ios: 'na iTunes Store'
+        windows: 'na Microsoft Store'
+    bookmarklet:
+        description: 'Arraste e solve este link na sua barra de favoritos:'
+
+quickstart:
+    page_title: 'Começo Rápido'
+    more: 'Mais...'
+    intro:
+        title: 'Bem-vindo ao wallabag!'
+        paragraph_1: 'Nós podemos acompanhar você em sua visita ao wallabag e mostrar algumas funcionalidades que podem lhe interessar.'
+        paragraph_2: 'Siga-nos!'
+    configure:
+        title: 'Configurar a aplicação'
+        description: 'Para ter uma aplicação que atende você, dê uma olhada na configuração do wallabag.'
+        language: 'Alterar idioma e design'
+        rss: 'Habilitar feeds RSS'
+        tagging_rules: 'Escrever regras para acrescentar tags automaticamente em seus artigos'
+    admin:
+        title: 'Administração'
+        description: 'Como administrador você tem privilégios no wallabag. Você pode:'
+        new_user: 'Criar um novo usuário'
+        analytics: 'Configurar o analytics'
+        sharing: 'habilitar alguns parâmetros para compartilhamento de artigos'
+        export: 'Configurar exportação'
+        import: 'Configurar importação'
+    first_steps:
+        title: 'Primeiros passos'
+        description: "Agora o wallabag está bem configurado, é hora de arquivar a web. Você pode clicar no sinal de + no topo a direita para adicionar um link."
+        new_article: 'Salvar seu primeiro artigo'
+        unread_articles: 'E classificá-lo!'
+    migrate:
+        title: 'Migrar de um serviço existente'
+        description: 'Você está usando um outro serviço? Nós podemos ajudá-lo a recuperar seus dados para o wallabag.'
+        pocket: 'Migrar do Pocket'
+        wallabag_v1: 'Migrar do wallabag v1'
+        wallabag_v2: 'Migrar do wallabag v2'
+        readability: 'Migrate from Readability'
+        instapaper: 'Migrate from Instapaper'
+    developer:
+        title: 'Desenvolvedores'
+        description: 'Nós também agradecemos os desenvolvedores: Docker, API, traduções, etc.'
+        create_application: 'Criar sua aplicação terceira'
+        use_docker: 'Usar o Docker para instalar o wallabag'
+    docs:
+        title: 'Documentação completa'
+        description: "Existem muitas funcionalidades no wallabag. Não hesite em ler o manual para conhecê-las e aprender como usá-las."
+        annotate: 'Anotar seu artigo'
+        export: 'Converter seu artigo em ePUB ou PDF'
+        search_filters: 'veja coo você pode encontrar um artigo usanndo o motor de busca e filtros'
+        fetching_errors: 'O que eu posso fazer quando um artigo encontra erros na recuperação?'
+        all_docs: 'E outros muitos artigos!'
+    support:
+        title: 'Suporte'
+        description: 'Se você precisa de ajuda, nós estamos aqui.'
+        github: 'No GitHub'
+        email: 'Por e-mail'
+        gitter: 'No Gitter'
+
+tag:
+    page_title: 'Tags'
+    list:
+        number_on_the_page: '{0} Não existem tags.|{1} Uma tag.|]1,Inf[ Existem %count% tags.'
+        see_untagged_entries: 'Ver entradas sem tags'
+
+import:
+    page_title: 'Importar'
+    page_description: 'Bem-vindo ao importador do wallabag. Por favo selecione o serviço do qual deseja migrar.'
+    action:
+        import_contents: 'Importar conteúdos'
+    form:
+        mark_as_read_title: 'Marcar todos como lidos?'
+        mark_as_read_label: 'Marcar todas as entradas importadas como lidas'
+        file_label: 'Arquivo'
+        save_label: 'Carregar arquivo'
+    pocket:
+        page_title: 'Importar > Pocket'
+        description: 'Com este importador você importa todos os seus dados do Pocket. O Pocket não nos permite recuperar o conteúdo de seu serviço, então o conteúdo que pode ser lido é recarregado pelo wallabag.'
+        config_missing:
+            description: 'O importador do Pocket não está configurado.'
+            admin_message: 'Você precisa definir uma %keyurls%a pocket_consumer_key%keyurle%.'
+            user_message: 'Seu administrador do servidor precisa definir uma chave de API para o Pocket.'
+        authorize_message: 'Você pode importar seus dados de sua conta do Pocket. Você somente precisa clicar no botão abaixo e autorizar a aplicação a conectar-se ao getpocket.com.'
+        connect_to_pocket: 'Conecte ao Pocket e importe os dados'
+    wallabag_v1:
+        page_title: 'Importar > Wallabag v1'
+        description: 'Com este importador você importa todos os seus artigos do wallabag v1. Na sua página de configuração, clique em "JSON export" na opção "Export your wallabag data". Você irá criar um arquivo "wallabag-export-1-xxxx-xx-xx.json".'
+        how_to: 'Por favor, selecione seu exportador wallabag e clique no botão abaixo para carregar e importar.'
+    wallabag_v2:
+        page_title: 'Importar > Wallabag v2'
+        description: 'Com este importador você importa todos os seus artigos do wallabag v2. Vá em Todos os artigos e então, na barra lateral de exportação, clique em "JSON". Você irá criar um arquivo "All articles.json".'
+    readability:
+        page_title: 'Importar > Readability'
+        description: 'Este importador pode importar todos os artigos do Readability. Nas página ferramentas (https://www.readability.com/tools/), clique em "Export your data" na seção "Data Export". Você receberá um e-mail para fazer o download de um json (que de fato não termina com .json).'
+        how_to: 'Por favor, selecione sua exportação do Readability e clique no botão abaixo para importá-la.'
+    worker:
+        enabled: "A importação é feita assíncronamente. Uma vez que a tarefa de importação é iniciada, um trabalho externo pode executar tarefas uma por vez. O serviço atual é:"
+    firefox:
+        page_title: 'Importar > Firefox'
+        description: "Com este importador você importa todos os favoritos de seu Firefox. Somente vá até seus favoritos (Ctrl+Maj+O), e em \"Importar e Backup\" e escolha \"Backup...\". Você terá então um arquivo .json."
+        how_to: "Por favor, escolha o arquivo de backup dos favoritos e clique no botão abaixo para importá-lo. Note que o processo pode demorar até que todos os artigos tenham sido copiados."
+    chrome:
+        page_title: 'Importar > Chrome'
+        description: "Com este importador você importa todos os favoritos de seu Chrome. A localização do arquivo depende de seu sistema operacional: <ul><li>Em Linux, vá para o diretório <code>~/.config/chromium/Default/</code></li><li>Em Windows, ele deve estar em <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>Em OS X, ele deve estar em <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Uma vez que você pegou o arquivo, copie-o para algum lugar que você o encontre.<em><br>Note que se você possui o Chromium ao invés do Chrome, você precisa corrigir os caminhos.</em></p>"
+        how_to: "Por favor, escolha o arquivo de backup dos favoritos e clique no botão abaixo para importá-lo. Note que o processo pode demorar até que todos os artigos tenham sido copiados."
+    instapaper:
+        page_title: 'Importar > Instapaper'
+        description: 'Este importador pode importar todos os artigos do seu Instapaper. Nas página de configurações (https://www.instapaper.com/user), clique em "Download .CSV file" na seção "Export". Um arquivo CSV será baixado (algo como "instapaper-export.csv").'
+        how_to: 'Por favor, selecione sua exportação do seu Instapaper e clique no botão abaixo para importá-la.'
+
+developer:
+    page_title: 'Desenvolvedor'
+    welcome_message: 'Bem-vindo a API do wallabag'
+    documentation: 'Documentação'
+    how_to_first_app: 'Como criar minha primeira aplicação'
+    full_documentation: 'Ver a documentação completa da API'
+    list_methods: 'Lista de métodos da API'
+    clients:
+        title: 'Clientes'
+        create_new: 'Criar um novo cliente'
+    existing_clients:
+        title: 'Clientes existentes'
+        field_id: 'ID do cliente'
+        field_secret: 'Chave do cliente'
+        field_uris: 'URIs de redirecionamento'
+        field_grant_types: 'Tipo permitido'
+        no_client: 'Nenhum cliente até agora.'
+    remove:
+        warn_message_1: 'Você tem permissão pare remover este cliente. Esta ação é IRREVERSÍVEL !'
+        warn_message_2: 'Se você remover isso, todo o aplicativo configurado com este cliente não poderá se autenticar no seu wallabag.'
+        action: 'Remover este cliente'
+    client:
+        page_title: 'Desenvolvedor > Novo cliente'
+        page_description: 'Você está prestes a criar um novo cliente. Por favor preencha o campo abaixo para a URI de redirecionamento de sua aplicação.'
+        form:
+            name_label: 'Nome do cliente'
+            redirect_uris_label: 'URIs de redirecionamento'
+            save_label: 'Criar um novo cliente'
+        action_back: 'Voltar'
+    client_parameter:
+        page_title: 'Desenvolvedor > Parâmetros de clientes'
+        page_description: 'Aqui estão os parâmetros de seus clientes.'
+        field_name: 'Nome do cliente'
+        field_id: 'ID do cliente'
+        field_secret: 'Chave do cliente'
+        back: 'Voltar'
+        read_howto: 'Leia o how-to "Criar minha primeira aplicação"'
+    howto:
+        page_title: 'Desenvolvedor > Criar minha primeira aplicação'
+        description:
+            paragraph_1: 'Os seguintes comandos fazem uso da <a href="https://github.com/jkbrzt/httpie">biblioteca HTTPie</a>. Tenha certeza que ela está instalada em seu servidor antes de usá-la.'
+            paragraph_2: 'Você precisa de um token para a comunicação entre sua aplicação terceira e a API do wallabag.'
+            paragraph_3: 'Para criar este token, você precisa <a href="%link%">criar um novo cliente</a>.'
+            paragraph_4: 'Agora, crie seu token (altere client_id, client_secret, username e password com os valores corretos):'
+            paragraph_5: 'A API pode retornar uma resposta como essa:'
+            paragraph_6: 'O access_token é utilizável para fazer uma chamada para o endpoint da API. Por exemplo:'
+            paragraph_7: 'Esta chamada pode retornar todas as entradas de seu usuário.'
+            paragraph_8: 'Se você deseja ver todos os endpoints da API, dê uma olhada <a href="%link%">em nossa documentação da API</a>.'
+        back: 'Voltar'
+
+user:
+    page_title: 'Gerenciamento de Usuários'
+    new_user: 'Criar um novo usuário'
+    edit_user: 'Editar um usuário existente'
+    description: 'Aqui você gerencia todos os usuários (cria, edita e apaga)'
+    list:
+        actions: 'Ações'
+        edit_action: 'Editar'
+        yes: 'Sim'
+        no: 'Não'
+        create_new_one: 'Criar um novo usuário'
+    form:
+        username_label: 'Nome de Usuário'
+        name_label: 'Nome'
+        password_label: 'Senha'
+        repeat_new_password_label: 'Repita a nova senha'
+        plain_password_label: '????'
+        email_label: 'E-mail'
+        enabled_label: 'Habilitado'
+        locked_label: 'Travado'
+        last_login_label: 'Último login'
+        twofactor_label: 'Autenticação de dois passos'
+        save: 'Salvar'
+        delete: 'Apagar'
+        delete_confirm: 'Tem certeza?'
+        back_to_list: 'Voltar para a lista'
+
+flashes:
+    config:
+        notice:
+            config_saved: 'Configiração salva. Alguns parâmetros podem ser considerados depois da desconexão.'
+            password_updated: 'Senha atualizada'
+            password_not_updated_demo: 'Em modo de demonstração, você não pode alterar a senha deste usuário.'
+            user_updated: 'Informação atualizada'
+            rss_updated: 'Informação de RSS atualizada'
+            tagging_rules_updated: 'Regras de tags atualizadas'
+            tagging_rules_deleted: 'Regra de tag apagada'
+            rss_token_updated: 'Token RSS atualizado'
+    entry:
+        notice:
+            entry_already_saved: 'Entrada já foi salva em %date%'
+            entry_saved: 'Entrada salva'
+            entry_saved_failed: 'Failed to save entry'
+            entry_updated: 'Entrada atualizada'
+            entry_reloaded: 'Entrada recarregada'
+            entry_reloaded_failed: 'Falha em recarregar a entrada'
+            entry_archived: 'Entrada arquivada'
+            entry_unarchived: 'Entrada desarquivada'
+            entry_starred: 'Entrada destacada'
+            entry_unstarred: 'Entrada não destacada'
+            entry_deleted: 'Entrada apagada'
+    tag:
+        notice:
+            tag_added: 'Tag adicionada'
+    import:
+        notice:
+            failed: 'Importação falhou, por favor tente novamente.'
+            failed_on_file: 'Erro ao processar a importação. Por favor verifique seu arquivo de importação.'
+            summary: 'relatório de importação: %imported% importados, %skipped% já existem.'
+            summary_with_queue: 'Importar sumáario: %queued% agendados.'
+        error:
+            redis_enabled_not_installed: 'O Redis está habilitado para importação assíncrona mas parece que <u>não podemos nos conectar nele</u>. Por favor verifique as configurações do Redis.'
+            rabbit_enabled_not_installed: 'O RabbitMQ está habilitado para importação assíncrona mas parece que <u>não podemos nos conectar nele</u>. Por favor verifique as configurações do RabbitMQ.'
+    developer:
+        notice:
+            client_created: 'Novo cliente criado.'
+            client_deleted: 'Cliente removido'
+    user:
+        notice:
+            added: 'Usuário "%username%" adicionado'
+            updated: 'Usuário "%username%" atualizado'
+            deleted: 'Usuário "%username%" removido'
index 152d5020dd517b310d4e5d76f46b7ef7377e1ef6..875c82e8372b29b5bc3195e20b592821fcb5b014 100644 (file)
@@ -137,7 +137,7 @@ entry:
         # starred: 'Starred entries'
         # archived: 'Archived entries'
         # filtered: 'Filtered entries'
-        # filtered_tags: 'Filtered by tags'
+        # filtered_tags: 'Filtered by tags:'
         # untagged: 'Untagged entries'
     list:
         # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
@@ -445,6 +445,9 @@ user:
         # delete_confirm: Are you sure?
         # back_to_list: Back to list
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
index a2eca59ba1c8b43f2a7b7e3c5f575ba70e86df8b..f50f629a0224261c3eff8f81917874de9bb7d404 100644 (file)
@@ -136,7 +136,7 @@ entry:
         # starred: 'Starred entries'
         # archived: 'Archived entries'
         # filtered: 'Filtered entries'
-        # filtered_tags: 'Filtered by tags'
+        # filtered_tags: 'Filtered by tags:'
         # untagged: 'Untagged entries'
     list:
         number_on_the_page: '{0} Herhangi bir makale yok.|{1} Burada bir adet makale var.|]1,Inf[ Burada %count% adet makale var.'
@@ -444,6 +444,9 @@ user:
         # delete_confirm: Are you sure?
         # back_to_list: Back to list
 
+error:
+    # page_title: An error occurred
+
 flashes:
     config:
         notice:
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.pt.yml
new file mode 100644 (file)
index 0000000..4989083
--- /dev/null
@@ -0,0 +1,6 @@
+validator:
+    password_must_match: 'Os campos de senha devem coincidir.'
+    password_too_short: 'A senha deve ter pelo menos 8 caracteres'
+    password_wrong_value: 'A senha atual informada está errada'
+    item_per_page_too_high: 'Certamente isso pode matar a aplicação'
+    rss_limit_too_hight: 'Certamente isso pode matar a aplicação'
index 3af88b2378dfd81e58c9b138686b220056c64f27..f19f2922c6168016c4f2529a10bdf2f198e6b497 100644 (file)
@@ -1,7 +1,11 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
 {% block title %}
-    {% include "@WallabagCore/themes/common/Entry/_title.html.twig" %}
+    {% set currentTag = '' %}
+    {% if tag is defined %}
+        {% set currentTag = tag %}
+    {% endif %}
+    {% include "@WallabagCore/themes/common/Entry/_title.html.twig" with {'currentTag': currentTag} %}
 {% endblock %}
 
 {% block content %}
index d1c2f20379f19182b0a4a312604e07f37f1f1519..92cabdd92e0ed2969500687a9f52f00e6d1d6ef2 100644 (file)
@@ -7,7 +7,7 @@
 {% elseif currentRoute == 'all' %}
     {{ 'entry.page_titles.filtered'|trans }}
 {% elseif currentRoute == 'tag_entries' %}
-    {{ 'entry.page_titles.filtered_tags'|trans }}
+    {{ 'entry.page_titles.filtered_tags'|trans }} {{ currentTag }}
 {% elseif currentRoute == 'untagged' %}
     {{ 'entry.page_titles.untagged'|trans }}
 {% else %}
index 804adb36283a643c799c6cb9b9106f6dd6990856..f77264c672691df3c1b73f4254615e84e26eccb6 100644 (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>
index 919f94ecad7b898c799f5607ab1a8f9cf41854ba..5c7cfd6538e46c9eb021059aed0cf2e5bb99762e 100644 (file)
@@ -1,7 +1,11 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
 {% block title %}
-  {% include "@WallabagCore/themes/common/Entry/_title.html.twig" %}
+    {% set currentTag = '' %}
+    {% if tag is defined %}
+        {% set currentTag = tag %}
+    {% endif %}
+    {% include "@WallabagCore/themes/common/Entry/_title.html.twig" with {'currentTag': currentTag} %}
 {% endblock %}
 
 {% block content %}
index 783cde3e70897aedb877f45f8ad0562a5b68cc9b..a305c53fc1819a50733746578b9bd30792ab66ef 100644 (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),
         ]);
index 2b85ad7672324b31f90a68d27da3022469841436..b893ea2956bdb2c07b73a7e518519735d9904b84 100644 (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 {
index 9d75685b74d84aa13c9d90d9672b5893f271f2fd..2ca1683b1688b33ff7c9e203e635b0bb83b09f7a 100644 (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;
index 9b03a5193d1c7b8edb6d660f0cb021336061f663..051136503969722f78b7720ab40cc90890efb2b9 100644 (file)
@@ -359,11 +359,49 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $content = $em
             ->getRepository('WallabagCoreBundle:Entry')
-            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+            ->find($content->getId());
 
         $this->assertNotEmpty($content->getContent());
     }
 
+    /**
+     * @depends testPostNewOk
+     */
+    public function testReloadWithFetchingFailed()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $em = $client->getContainer()
+            ->get('doctrine.orm.entity_manager');
+
+        $content = $em
+            ->getRepository('WallabagCoreBundle:Entry')
+            ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+
+        // put a known failed url
+        $content->setUrl('http://0.0.0.0/failed.html');
+        $em->persist($content);
+        $em->flush();
+
+        $client->request('GET', '/reload/'.$content->getId());
+
+        $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+        // force EntityManager to clear previous entity
+        // otherwise, retrieve the same entity will retrieve change from the previous request :0
+        $em->clear();
+        $newContent = $em
+            ->getRepository('WallabagCoreBundle:Entry')
+            ->find($content->getId());
+
+        $newContent->setUrl($this->url);
+        $em->persist($newContent);
+        $em->flush();
+
+        $this->assertNotEquals($client->getContainer()->getParameter('wallabag_core.fetching_error_message'), $newContent->getContent());
+    }
+
     public function testEdit()
     {
         $this->logInAs('admin');
index 5e8ee41d846522cd68b2b84ee6e9428eb22ba86b..01a92ad2a660c8d6fae4884737e02e7f2ccab584 100644 (file)
@@ -219,7 +219,7 @@ JSON;
 
         $res = $consumer->manage($body);
 
-        $this->assertFalse($res);
+        $this->assertTrue($res);
         $this->assertFalse($consumer->isStopJob($body));
     }
 }