diff --git a/.gitignore b/.gitignore
index 49ff72c6d..553b0e947 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,7 @@ web/uploads/
# Build
/app/build
/build
+/coverage
# Composer PHAR
/composer.phar
diff --git a/src/Wallabag/ApiBundle/Controller/TaggingRuleRestController.php b/src/Wallabag/ApiBundle/Controller/TaggingRuleRestController.php
new file mode 100644
index 000000000..2496298aa
--- /dev/null
+++ b/src/Wallabag/ApiBundle/Controller/TaggingRuleRestController.php
@@ -0,0 +1,39 @@
+validateAuthentication();
+
+ $data = SerializerBuilder::create()->build()->serialize(
+ $this->getUser()->getConfig()->getTaggingRules(),
+ 'json',
+ SerializationContext::create()->setGroups(['export_tagging_rule'])
+ );
+
+ return Response::create(
+ $data,
+ 200,
+ [
+ 'Content-type' => 'application/json',
+ 'Content-Disposition' => 'attachment; filename="tagging_rules_' . $this->getUser()->getUsername() . '.json"',
+ 'Content-Transfer-Encoding' => 'UTF-8',
+ ]
+ );
+ }
+}
diff --git a/src/Wallabag/ApiBundle/Resources/config/routing_rest.yml b/src/Wallabag/ApiBundle/Resources/config/routing_rest.yml
index 06e62c379..98efeeb12 100644
--- a/src/Wallabag/ApiBundle/Resources/config/routing_rest.yml
+++ b/src/Wallabag/ApiBundle/Resources/config/routing_rest.yml
@@ -13,6 +13,11 @@ tag:
resource: "WallabagApiBundle:TagRest"
name_prefix: api_
+tagging_rule:
+ type: rest
+ resource: "WallabagApiBundle:TaggingRuleRest"
+ name_prefix: api_
+
annotation:
type: rest
resource: "WallabagApiBundle:AnnotationRest"
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php
index cea413031..0db90ba4b 100644
--- a/src/Wallabag/CoreBundle/Controller/ConfigController.php
+++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php
@@ -2,11 +2,14 @@
namespace Wallabag\CoreBundle\Controller;
+use JMS\Serializer\SerializationContext;
+use JMS\Serializer\SerializerBuilder;
use PragmaRX\Recovery\Recovery as BackupCodes;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Constraints\Locale as LocaleConstraint;
@@ -15,6 +18,7 @@ use Wallabag\CoreBundle\Entity\TaggingRule;
use Wallabag\CoreBundle\Form\Type\ChangePasswordType;
use Wallabag\CoreBundle\Form\Type\ConfigType;
use Wallabag\CoreBundle\Form\Type\FeedType;
+use Wallabag\CoreBundle\Form\Type\TaggingRuleImportType;
use Wallabag\CoreBundle\Form\Type\TaggingRuleType;
use Wallabag\CoreBundle\Form\Type\UserInformationType;
use Wallabag\CoreBundle\Tools\Utils;
@@ -140,6 +144,37 @@ class ConfigController extends Controller
return $this->redirect($this->generateUrl('config') . '#set5');
}
+ // handle tagging rules import
+ $taggingRulesImportform = $this->createForm(TaggingRuleImportType::class);
+ $taggingRulesImportform->handleRequest($request);
+
+ if ($taggingRulesImportform->isSubmitted() && $taggingRulesImportform->isValid()) {
+ $message = 'flashes.config.notice.tagging_rules_not_imported';
+ $file = $taggingRulesImportform->get('file')->getData();
+
+ if (null !== $file && $file->isValid() && \in_array($file->getClientMimeType(), ['application/json', 'application/octet-stream'], true)) {
+ $content = json_decode(file_get_contents($file->getPathname()), true);
+
+ if (\is_array($content)) {
+ foreach ($content as $rule) {
+ $taggingRule = new TaggingRule();
+ $taggingRule->setRule($rule['rule']);
+ $taggingRule->setTags($rule['tags']);
+ $taggingRule->setConfig($config);
+ $em->persist($taggingRule);
+ }
+
+ $em->flush();
+
+ $message = 'flashes.config.notice.tagging_rules_imported';
+ }
+ }
+
+ $this->addFlash('notice', $message);
+
+ return $this->redirect($this->generateUrl('config') . '#set5');
+ }
+
return $this->render('WallabagCoreBundle:Config:index.html.twig', [
'form' => [
'config' => $configForm->createView(),
@@ -147,6 +182,7 @@ class ConfigController extends Controller
'pwd' => $pwdForm->createView(),
'user' => $userForm->createView(),
'new_tagging_rule' => $newTaggingRule->createView(),
+ 'import_tagging_rule' => $taggingRulesImportform->createView(),
],
'feed' => [
'username' => $user->getUsername(),
@@ -492,6 +528,32 @@ class ConfigController extends Controller
return $this->redirect($request->headers->get('referer', $this->generateUrl('homepage')));
}
+ /**
+ * Export tagging rules for the logged in user.
+ *
+ * @Route("/tagging-rule/export", name="export_tagging_rule")
+ *
+ * @return Response
+ */
+ public function exportTaggingRulesAction()
+ {
+ $data = SerializerBuilder::create()->build()->serialize(
+ $this->getUser()->getConfig()->getTaggingRules(),
+ 'json',
+ SerializationContext::create()->setGroups(['export_tagging_rule'])
+ );
+
+ return Response::create(
+ $data,
+ 200,
+ [
+ 'Content-type' => 'application/json',
+ 'Content-Disposition' => 'attachment; filename="tagging_rules_' . $this->getUser()->getUsername() . '.json"',
+ 'Content-Transfer-Encoding' => 'UTF-8',
+ ]
+ );
+ }
+
/**
* Remove all tags for given tags and a given user and cleanup orphan tags.
*
diff --git a/src/Wallabag/CoreBundle/Entity/TaggingRule.php b/src/Wallabag/CoreBundle/Entity/TaggingRule.php
index c1be3165d..eac53fa32 100644
--- a/src/Wallabag/CoreBundle/Entity/TaggingRule.php
+++ b/src/Wallabag/CoreBundle/Entity/TaggingRule.php
@@ -3,12 +3,16 @@
namespace Wallabag\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
+use JMS\Serializer\Annotation\Exclude;
+use JMS\Serializer\Annotation\Groups;
+use JMS\Serializer\Annotation\XmlRoot;
use Symfony\Bridge\RulerZ\Validator\Constraints as RulerZAssert;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Tagging rule.
*
+ * @XmlRoot("tagging_rule")
* @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\TaggingRuleRepository")
* @ORM\Table(name="`tagging_rule`")
* @ORM\Entity
@@ -34,6 +38,8 @@ class TaggingRule
* allowed_operators={">", "<", ">=", "<=", "=", "is", "!=", "and", "not", "or", "matches", "notmatches"}
* )
* @ORM\Column(name="rule", type="string", nullable=false)
+ *
+ * @Groups({"export_tagging_rule"})
*/
private $rule;
@@ -42,10 +48,14 @@ class TaggingRule
*
* @Assert\NotBlank()
* @ORM\Column(name="tags", type="simple_array", nullable=false)
+ *
+ * @Groups({"export_tagging_rule"})
*/
private $tags = [];
/**
+ * @Exclude
+ *
* @ORM\ManyToOne(targetEntity="Wallabag\CoreBundle\Entity\Config", inversedBy="taggingRules")
*/
private $config;
diff --git a/src/Wallabag/CoreBundle/Form/Type/TaggingRuleImportType.php b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleImportType.php
new file mode 100644
index 000000000..c6a8c0b81
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleImportType.php
@@ -0,0 +1,29 @@
+add('file', FileType::class, [
+ 'label' => 'config.form_rules.file_label',
+ 'required' => true,
+ ])
+ ->add('import', SubmitType::class, [
+ 'label' => 'config.form_rules.import_submit',
+ ])
+ ;
+ }
+
+ public function getBlockPrefix()
+ {
+ return 'upload_tagging_rule_file';
+ }
+}
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
index 5c4ca29ce..fab05835b 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
@@ -140,6 +140,15 @@ config:
# edit_rule_label: 'edit'
# rule_label: 'Rule'
# tags_label: 'Tags'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
# faq:
# title: 'FAQ'
# tagging_rules_definition_title: 'What does « tagging rules » mean?'
@@ -602,6 +611,9 @@ flashes:
# tags_reset: Tags reset
# entries_reset: Entries reset
# archived_reset: Archived entries deleted
+ # otp_enabled: Two-factor authentication enabled
+ # tagging_rules_imported: Tagging rules imported
+ # tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
# entry_already_saved: 'Entry already saved on %date%'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
index a21bd0f10..6ba464d04 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
@@ -140,6 +140,15 @@ config:
edit_rule_label: 'bearbeiten'
rule_label: 'Regel'
tags_label: 'Tags'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
faq:
title: 'FAQ'
tagging_rules_definition_title: 'Was bedeuten die "Tagging-Regeln"?'
@@ -172,6 +181,15 @@ config:
and: 'Eine Regel UND eine andere'
matches: 'Testet, ob eine Variable auf eine Suche zutrifft (Groß- und Kleinschreibung wird nicht berücksichtigt).
Beispiel: title matches "Fußball"
'
notmatches: 'Testet, ob ein Titel nicht auf eine Suche zutrifft (Groß- und Kleinschreibung wird nicht berücksichtigt).
Beispiel: title notmatches "Fußball"
'
+ otp:
+ # page_title: Two-factor authentication
+ # app:
+ # two_factor_code_description_1: You just enabled the OTP two factor authentication, open your OTP app and use that code to get a one time password. It'll disapear after a page reload.
+ # two_factor_code_description_2: 'You can scan that QR Code with your app:'
+ # two_factor_code_description_3: 'Also, save these backup codes in a safe place, you can use them in case you lose access to your OTP app:'
+ # two_factor_code_description_4: 'Test an OTP code from your configured app:'
+ # cancel: Cancel
+ # enable: Enable
entry:
default_title: 'Titel des Eintrags'
@@ -593,6 +611,9 @@ flashes:
tags_reset: Tags zurücksetzen
entries_reset: Einträge zurücksetzen
archived_reset: Archiverte Einträge zurücksetzen
+ # otp_enabled: Two-factor authentication enabled
+ # tagging_rules_imported: Tagging rules imported
+ # tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
entry_already_saved: 'Eintrag bereits am %date% gespeichert'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
index 2f310246b..a7c32f115 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
@@ -140,6 +140,15 @@ config:
edit_rule_label: 'edit'
rule_label: 'Rule'
tags_label: 'Tags'
+ card:
+ new_tagging_rule: Create a tagging rule
+ import_tagging_rules: Import tagging rules
+ import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ export_tagging_rules: Export tagging rules
+ export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ file_label: JSON file
+ import_submit: Import
+ export: Export
faq:
title: 'FAQ'
tagging_rules_definition_title: 'What does « tagging rules » mean?'
@@ -603,6 +612,8 @@ flashes:
entries_reset: Entries reset
archived_reset: Archived entries deleted
otp_enabled: Two-factor authentication enabled
+ tagging_rules_imported: Tagging rules imported
+ tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
entry_already_saved: 'Entry already saved on %date%'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
index c194041a5..093c58574 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
@@ -140,6 +140,15 @@ config:
edit_rule_label: 'editar'
rule_label: 'Regla'
tags_label: 'Etiquetas'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
faq:
title: 'Preguntas frecuentes'
tagging_rules_definition_title: '¿Qué significa « reglas de etiquetado automático »?'
@@ -602,6 +611,9 @@ flashes:
tags_reset: Etiquetas reiniciadas
entries_reset: Artículos reiniciados
# archived_reset: Archived entries deleted
+ # otp_enabled: Two-factor authentication enabled
+ # tagging_rules_imported: Tagging rules imported
+ # tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
entry_already_saved: 'Artículo ya guardado el %fecha%'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
index 9aef7ddec..00caa0ac0 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
@@ -140,6 +140,15 @@ config:
# edit_rule_label: 'edit'
rule_label: 'قانون'
tags_label: 'برچسبها'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
faq:
title: 'پرسشهای متداول'
tagging_rules_definition_title: 'برچسبگذاری خودکار یعنی چه؟'
@@ -602,6 +611,9 @@ flashes:
# tags_reset: Tags reset
# entries_reset: Entries reset
# archived_reset: Archived entries deleted
+ # otp_enabled: Two-factor authentication enabled
+ # tagging_rules_imported: Tagging rules imported
+ # tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
entry_already_saved: 'این مقاله در تاریخ %date% ذخیره شده بود'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
index 9848ed9ae..ca66acde7 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
@@ -140,6 +140,15 @@ config:
edit_rule_label: "éditer"
rule_label: "Règle"
tags_label: "Tags"
+ card:
+ new_tagging_rule: Créer une règle
+ import_tagging_rules: Importer des règles
+ import_tagging_rules_detail: Vous devez sélectionné un fichier JSON que vous avez précédemment exporté.
+ export_tagging_rules: Exporter les règles
+ export_tagging_rules_detail: Un fichier JSON sera téléchargé et vous pourrez l'utiliser pour ré-importer les règles ou comme sauvegarde.
+ file_label: Fichier JSON
+ import_submit: Importer
+ export: Export
faq:
title: "FAQ"
tagging_rules_definition_title: "Que signifient les règles de tag automatiques ?"
@@ -604,6 +613,8 @@ flashes:
entries_reset: "Articles supprimés"
archived_reset: "Articles archivés supprimés"
otp_enabled: "Authentification à double-facteur activée"
+ tagging_rules_imported: Règles bien importées
+ tagging_rules_not_imported: Impossible d'importer les règles
entry:
notice:
entry_already_saved: "Article déjà sauvegardé le %date%"
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
index efbf062b1..85720ef8c 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
@@ -105,6 +105,7 @@ config:
# login_label: 'Login (can not be changed)'
name_label: 'Nome'
email_label: 'E-mail'
+ two_factor:
# emailTwoFactor_label: 'Using email (receive a code by email)'
# googleTwoFactor_label: 'Using an OTP app (open the app, like Google Authenticator, Authy or FreeOTP, to get a one time code)'
# table_method: Method
@@ -139,6 +140,15 @@ config:
edit_rule_label: 'modifica'
rule_label: 'Regola'
tags_label: 'Etichetta'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
faq:
title: 'FAQ'
tagging_rules_definition_title: 'Cosa significa « regole di etichettatura » ?'
@@ -601,6 +611,9 @@ flashes:
tags_reset: Reset etichette
entries_reset: Reset articoli
# archived_reset: Archived entries deleted
+ # otp_enabled: Two-factor authentication enabled
+ # tagging_rules_imported: Tagging rules imported
+ # tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
entry_already_saved: 'Contenuto già salvato in data %date%'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
index 86ce46449..18d1173bd 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
@@ -105,6 +105,7 @@ config:
# login_label: 'Login (can not be changed)'
name_label: 'Nom'
email_label: 'Adreça de corrièl'
+ two_factor:
# emailTwoFactor_label: 'Using email (receive a code by email)'
# googleTwoFactor_label: 'Using an OTP app (open the app, like Google Authenticator, Authy or FreeOTP, to get a one time code)'
# table_method: Method
@@ -139,6 +140,15 @@ config:
edit_rule_label: 'modificar'
rule_label: 'Règla'
tags_label: 'Etiquetas'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
faq:
title: 'FAQ'
tagging_rules_definition_title: "Qué significa las règlas d'etiquetas automaticas ?"
@@ -601,6 +611,9 @@ flashes:
tags_reset: Etiquetas levadas
entries_reset: Articles levats
archived_reset: Articles archivat suprimits
+ # otp_enabled: Two-factor authentication enabled
+ # tagging_rules_imported: Tagging rules imported
+ # tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
entry_already_saved: 'Article ja salvagardat lo %date%'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
index 9ebe02360..6528a5623 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
@@ -105,6 +105,7 @@ config:
# login_label: 'Login (can not be changed)'
name_label: 'Nazwa'
email_label: 'Adres email'
+ two_factor:
# emailTwoFactor_label: 'Using email (receive a code by email)'
# googleTwoFactor_label: 'Using an OTP app (open the app, like Google Authenticator, Authy or FreeOTP, to get a one time code)'
# table_method: Method
@@ -139,6 +140,15 @@ config:
edit_rule_label: 'edytuj'
rule_label: 'Reguła'
tags_label: 'Tagi'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
faq:
title: 'FAQ'
tagging_rules_definition_title: 'Co oznaczają « reguły tagowania » ?'
@@ -601,6 +611,9 @@ flashes:
tags_reset: Zresetuj tagi
entries_reset: Zresetuj wpisy
archived_reset: Zarchiwizowane wpisy usunięte
+ # otp_enabled: Two-factor authentication enabled
+ # tagging_rules_imported: Tagging rules imported
+ # tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
entry_already_saved: 'Wpis już został dodany %date%'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
index d310e016f..3f1c7a689 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
@@ -105,6 +105,7 @@ config:
# login_label: 'Login (can not be changed)'
name_label: 'Nome'
email_label: 'E-mail'
+ two_factor:
# emailTwoFactor_label: 'Using email (receive a code by email)'
# googleTwoFactor_label: 'Using an OTP app (open the app, like Google Authenticator, Authy or FreeOTP, to get a one time code)'
# table_method: Method
@@ -139,6 +140,15 @@ config:
edit_rule_label: 'editar'
rule_label: 'Regras'
tags_label: 'Tags'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
faq:
title: 'FAQ'
tagging_rules_definition_title: 'O que as « regras de tags » significam?'
@@ -601,6 +611,9 @@ flashes:
# tags_reset: Tags reset
# entries_reset: Entries reset
# archived_reset: Archived entries deleted
+ # otp_enabled: Two-factor authentication enabled
+ # tagging_rules_imported: Tagging rules imported
+ # tagging_rules_not_imported: Error while importing tagging rules
entry:
notice:
entry_already_saved: 'Entrada já foi salva em %date%'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
index c11ff0b8a..d82e9377a 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
@@ -105,6 +105,7 @@ config:
# login_label: 'Login (can not be changed)'
name_label: 'Nume'
email_label: 'E-mail'
+ two_factor:
# emailTwoFactor_label: 'Using email (receive a code by email)'
# googleTwoFactor_label: 'Using an OTP app (open the app, like Google Authenticator, Authy or FreeOTP, to get a one time code)'
# table_method: Method
@@ -139,6 +140,15 @@ config:
# edit_rule_label: 'edit'
# rule_label: 'Rule'
# tags_label: 'Tags'
+ # card:
+ # new_tagging_rule: Create a tagging rule
+ # import_tagging_rules: Import tagging rules
+ # import_tagging_rules_detail: You have to select the JSON file you previously exported.
+ # export_tagging_rules: Export tagging rules
+ # export_tagging_rules_detail: This will download a JSON file that you can use to import tagging rules elsewhere or to backup them.
+ # file_label: JSON file
+ # import_submit: Import
+ # export: Export
# faq:
# title: 'FAQ'
# tagging_rules_definition_title: 'What does « tagging rules » mean?'
@@ -429,9 +439,9 @@ tag:
rename:
# placeholder: 'You can update tag name.'
-# export:
-# footer_template: '
Produced by wallabag with %method%
Please open an issue if you have trouble with the display of this E-Book on your device.
Produced by wallabag with %method%
Please open an issue if you have trouble with the display of this E-Book on your device.
title matches "футбол"
'
+ # notmatches: 'Tests that a subject doesn''t match match a search (case-insensitive).title notmatches "football"
'
otp:
# page_title: Two-factor authentication
# app:
@@ -187,6 +201,7 @@ entry:
filtered_tags: 'Отфильтрованные по тегу:'
filtered_search: 'Отфильтрованные по поиску:'
untagged: 'Записи без тегов'
+ # all: 'All entries'
list:
number_on_the_page: '{0} Записей не обнаружено.|{1} Одна запись.|]1,Inf[ Найдено %count% записей.'
reading_time: 'расчетное время чтения'
@@ -208,6 +223,8 @@ entry:
unread_label: 'Непрочитанная'
preview_picture_label: 'Есть картинка предварительного просмотра'
preview_picture_help: 'Картинка предварительного просмотра'
+ # is_public_label: 'Has a public link'
+ # is_public_help: 'Public link'
language_label: 'Язык'
http_status_label: 'статус HTTP'
reading_time:
@@ -246,6 +263,8 @@ entry:
original_article: 'оригинал'
annotations_on_the_entry: '{0} Нет аннотации|{1} Одна аннотация|]1,Inf[ %count% аннотаций'
created_at: 'Дата создания'
+ # published_at: 'Publication date'
+ # published_by: 'Published by'
# provided_by: 'Provided by'
new:
page_title: 'Сохранить новую запись'
@@ -259,10 +278,12 @@ entry:
title_label: 'Название'
url_label: 'Ссылка'
# origin_url_label: 'Origin url (from where you found that entry)'
- is_public_label: 'Публичная'
save_label: 'Сохранить'
public:
shared_by_wallabag: "Запись была опубликована wallabag"
+ confirm:
+ # delete: "Are you sure you want to remove that article?"
+ # delete_tag: "Are you sure you want to remove that tag from that article?"
metadata:
# reading_time: "Estimated reading time"
# reading_time_minutes_short: "%readingTime% min"
@@ -418,9 +439,9 @@ tag:
rename:
# placeholder: 'You can update tag name.'
-# export:
-# footer_template: 'Produced by wallabag with %method%
Please open an issue if you have trouble with the display of this E-Book on your device.
Produced by wallabag with %method%
Please open an issue if you have trouble with the display of this E-Book on your device.
Produced by wallabag with %method%
Please open an issue if you have trouble with the display of this E-Book on your device.
Produced by wallabag with %method%
Please open an issue if you have trouble with the display of this E-Book on your device.
{{ 'config.form_rules.card.import_tagging_rules_detail'|trans }}
+{{ 'config.form_rules.card.export_tagging_rules_detail'|trans }}
+ +{{ 'config.form_rules.card.import_tagging_rules_detail'|trans }}
+ {{ form_start(form.import_tagging_rule) }} + {{ form_errors(form.import_tagging_rule) }} +{{ 'config.form_rules.card.export_tagging_rules_detail'|trans }}
+