aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas Lœuillet <nicolas@loeuillet.org>2016-03-21 12:47:57 +0100
committerNicolas Lœuillet <nicolas@loeuillet.org>2016-03-21 12:47:57 +0100
commit439b36323e37f669b056cc5228c44bb91196256c (patch)
treeecd84477adf3e12819b26aff2a6d2e644e45ea72
parentbd46de6b25f982e1a0d3f975971fe8014db13833 (diff)
parent4083887afe4dd3f568b2dfea3392506b554c79b8 (diff)
downloadwallabag-439b36323e37f669b056cc5228c44bb91196256c.tar.gz
wallabag-439b36323e37f669b056cc5228c44bb91196256c.tar.zst
wallabag-439b36323e37f669b056cc5228c44bb91196256c.zip
Merge pull request #1774 from wallabag/v2-key-translation
Switch to keys in translated files
-rw-r--r--.travis.yml6
-rw-r--r--app/config/config_test.yml2
l---------bin/php-cs-fixer1
-rw-r--r--composer.json3
-rw-r--r--docs/en/developer/translate.rst2
-rw-r--r--docs/fr/developer/translate.rst2
-rw-r--r--src/Wallabag/CoreBundle/Controller/ConfigController.php20
-rw-r--r--src/Wallabag/CoreBundle/Controller/DeveloperController.php4
-rw-r--r--src/Wallabag/CoreBundle/Controller/EntryController.php26
-rw-r--r--src/Wallabag/CoreBundle/Controller/TagController.php2
-rw-r--r--src/Wallabag/CoreBundle/Entity/Config.php4
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php16
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/ClientType.php4
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/ConfigType.php19
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/EditEntryType.php19
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php16
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/NewEntryType.php7
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/NewTagType.php2
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/NewUserType.php22
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/RssType.php8
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php13
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/UserInformationType.php17
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.da.yml534
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.de.yml535
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.en.yml424
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.es.yml642
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml535
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml684
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml535
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml535
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml626
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.da.yml3
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.es.yml3
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml3
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml3
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml3
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml3
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig58
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig6
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig12
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig20
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig32
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig105
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig32
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig52
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig26
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig83
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig3
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig18
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig36
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig168
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig6
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig12
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig20
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig32
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig16
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig65
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig57
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig50
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig36
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig79
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig119
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php61
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php27
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php74
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php2
-rw-r--r--src/Wallabag/ImportBundle/Controller/PocketController.php18
-rw-r--r--src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php9
-rw-r--r--src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php9
-rw-r--r--src/Wallabag/ImportBundle/Form/Type/UploadImportType.php10
-rw-r--r--src/Wallabag/ImportBundle/Import/PocketImport.php4
-rw-r--r--src/Wallabag/ImportBundle/Import/WallabagV1Import.php2
-rw-r--r--src/Wallabag/ImportBundle/Import/WallabagV2Import.php2
-rw-r--r--src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig7
-rw-r--r--src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig27
-rw-r--r--src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig20
-rw-r--r--src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig3
-rw-r--r--src/Wallabag/ImportBundle/Tests/Controller/PocketControllerTest.php2
-rw-r--r--src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php11
-rw-r--r--src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php8
-rw-r--r--src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php2
-rw-r--r--src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php2
-rw-r--r--src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php2
-rw-r--r--src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml16
-rw-r--r--src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml16
-rw-r--r--src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml16
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Authentication/form.html.twig)2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/ChangePassword/changePassword_content.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/ChangePassword/changePassword_content.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Registration/checkEmail.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/checkEmail.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/confirmed.html.twig)2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/register_content.html.twig)2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Resetting/checkEmail.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/checkEmail.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Resetting/passwordAlreadyRequested.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/passwordAlreadyRequested.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/request_content.html.twig)8
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/reset_content.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Security/login.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Security/login.html.twig)12
-rw-r--r--src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/layout.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/layout.html.twig)2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig32
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig20
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig37
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig17
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig20
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig17
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig33
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig16
115 files changed, 4704 insertions, 2322 deletions
diff --git a/.travis.yml b/.travis.yml
index 5741b533..e2bf90ca 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,6 +11,7 @@ addons:
11 11
12# cache vendor dirs 12# cache vendor dirs
13cache: 13cache:
14 apt: true
14 directories: 15 directories:
15 - vendor 16 - vendor
16 - $HOME/.composer/cache 17 - $HOME/.composer/cache
@@ -28,6 +29,9 @@ env:
28 29
29matrix: 30matrix:
30 fast_finish: true 31 fast_finish: true
32 include:
33 - php: 7.0
34 env: CS_FIXER=run VALIDATE_TRANSLATION_FILE=run DB=sqlite
31 exclude: 35 exclude:
32 - php: hhvm 36 - php: hhvm
33 env: DB=pgsql # driver for PostgreSQL currently unsupported by HHVM, requires 3rd party dependency 37 env: DB=pgsql # driver for PostgreSQL currently unsupported by HHVM, requires 3rd party dependency
@@ -53,3 +57,5 @@ script:
53 - travis_wait composer install --no-interaction --no-progress --prefer-dist -o 57 - travis_wait composer install --no-interaction --no-progress --prefer-dist -o
54 - ant prepare-$DB 58 - ant prepare-$DB
55 - bin/phpunit -v 59 - bin/phpunit -v
60 - if [ "$CS_FIXER" = "run" ]; then php bin/php-cs-fixer fix src/ --verbose --dry-run ; fi;
61 - if [ "$VALIDATE_TRANSLATION_FILE" = "run" ]; then php bin/console lint:yaml src/Wallabag/CoreBundle/Resources/translations ; fi;
diff --git a/app/config/config_test.yml b/app/config/config_test.yml
index 2fd489be..d43d872a 100644
--- a/app/config/config_test.yml
+++ b/app/config/config_test.yml
@@ -7,6 +7,8 @@ framework:
7 storage_id: session.storage.mock_file 7 storage_id: session.storage.mock_file
8 profiler: 8 profiler:
9 collect: false 9 collect: false
10 translator:
11 enabled: false
10 12
11web_profiler: 13web_profiler:
12 toolbar: false 14 toolbar: false
diff --git a/bin/php-cs-fixer b/bin/php-cs-fixer
new file mode 120000
index 00000000..902e8f5f
--- /dev/null
+++ b/bin/php-cs-fixer
@@ -0,0 +1 @@
../vendor/fabpot/php-cs-fixer/php-cs-fixer \ No newline at end of file
diff --git a/composer.json b/composer.json
index a1a7ebb4..1abf6f20 100644
--- a/composer.json
+++ b/composer.json
@@ -86,7 +86,8 @@
86 "doctrine/doctrine-fixtures-bundle": "~2.2", 86 "doctrine/doctrine-fixtures-bundle": "~2.2",
87 "sensio/generator-bundle": "^3.0", 87 "sensio/generator-bundle": "^3.0",
88 "phpunit/phpunit": "~4.4", 88 "phpunit/phpunit": "~4.4",
89 "symfony/phpunit-bridge": "^2.7" 89 "symfony/phpunit-bridge": "^2.7",
90 "fabpot/php-cs-fixer": "~1.9"
90 }, 91 },
91 "scripts": { 92 "scripts": {
92 "build-parameters": [ 93 "build-parameters": [
diff --git a/docs/en/developer/translate.rst b/docs/en/developer/translate.rst
index 33b0ebdb..39478fd5 100644
--- a/docs/en/developer/translate.rst
+++ b/docs/en/developer/translate.rst
@@ -14,7 +14,7 @@ Translation files
14 14
15You can find translation files here: https://github.com/wallabag/wallabag/tree/v2/src/Wallabag/CoreBundle/Resources/translations. 15You can find translation files here: https://github.com/wallabag/wallabag/tree/v2/src/Wallabag/CoreBundle/Resources/translations.
16 16
17You have to create ``messages.CODE.yml`` and ``validators.CODE.yml``, where CODE 17You have to create ``messages.CODE.yml``, where CODE
18is the ISO 639-1 code of your language (`see wikipedia <https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>`__). 18is the ISO 639-1 code of your language (`see wikipedia <https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>`__).
19 19
20Other files to translate: 20Other files to translate:
diff --git a/docs/fr/developer/translate.rst b/docs/fr/developer/translate.rst
index 87e78cb4..410aafe6 100644
--- a/docs/fr/developer/translate.rst
+++ b/docs/fr/developer/translate.rst
@@ -15,7 +15,7 @@ Fichiers de traductions
15 15
16Les principaux fichiers de traduction se trouvent ici : https://github.com/wallabag/wallabag/tree/v2/src/Wallabag/CoreBundle/Resources/translations. 16Les principaux fichiers de traduction se trouvent ici : https://github.com/wallabag/wallabag/tree/v2/src/Wallabag/CoreBundle/Resources/translations.
17 17
18Vous devez créer les fichiers ``messages.CODE.yml`` et ``validators.CODE.yml``, 18Vous devez créer le fichier ``messages.CODE.yml``,
19où CODE est le code ISO 639-1 de votre langue (`cf wikipedia <https://fr.wikipedia.org/wiki/Liste_des_codes_ISO_639-1>`__). 19où CODE est le code ISO 639-1 de votre langue (`cf wikipedia <https://fr.wikipedia.org/wiki/Liste_des_codes_ISO_639-1>`__).
20 20
21Autres fichiers à traduire : 21Autres fichiers à traduire :
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php
index 1930a2ae..779be268 100644
--- a/src/Wallabag/CoreBundle/Controller/ConfigController.php
+++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php
@@ -45,7 +45,7 @@ class ConfigController extends Controller
45 45
46 $this->get('session')->getFlashBag()->add( 46 $this->get('session')->getFlashBag()->add(
47 'notice', 47 'notice',
48 'Config saved. Some parameters will be considered after disconnection.' 48 'flashes.config.notice.config_saved'
49 ); 49 );
50 50
51 return $this->redirect($this->generateUrl('config')); 51 return $this->redirect($this->generateUrl('config'));
@@ -57,9 +57,9 @@ class ConfigController extends Controller
57 57
58 if ($pwdForm->isValid()) { 58 if ($pwdForm->isValid()) {
59 if ($this->get('craue_config')->get('demo_mode_enabled') && $this->get('craue_config')->get('demo_mode_username') === $user->getUsername()) { 59 if ($this->get('craue_config')->get('demo_mode_enabled') && $this->get('craue_config')->get('demo_mode_username') === $user->getUsername()) {
60 $message = 'In demonstration mode, you can\'t change password for this user.'; 60 $message = 'flashes.config.notice.password_not_updated_demo';
61 } else { 61 } else {
62 $message = 'Password updated'; 62 $message = 'flashes.config.notice.password_updated';
63 63
64 $user->setPlainPassword($pwdForm->get('new_password')->getData()); 64 $user->setPlainPassword($pwdForm->get('new_password')->getData());
65 $userManager->updateUser($user, true); 65 $userManager->updateUser($user, true);
@@ -82,7 +82,7 @@ class ConfigController extends Controller
82 82
83 $this->get('session')->getFlashBag()->add( 83 $this->get('session')->getFlashBag()->add(
84 'notice', 84 'notice',
85 'Information updated' 85 'flashes.config.notice.user_updated'
86 ); 86 );
87 87
88 return $this->redirect($this->generateUrl('config').'#set3'); 88 return $this->redirect($this->generateUrl('config').'#set3');
@@ -98,7 +98,7 @@ class ConfigController extends Controller
98 98
99 $this->get('session')->getFlashBag()->add( 99 $this->get('session')->getFlashBag()->add(
100 'notice', 100 'notice',
101 'RSS information updated' 101 'flashes.config.notice.rss_updated'
102 ); 102 );
103 103
104 return $this->redirect($this->generateUrl('config').'#set2'); 104 return $this->redirect($this->generateUrl('config').'#set2');
@@ -116,7 +116,7 @@ class ConfigController extends Controller
116 116
117 $this->get('session')->getFlashBag()->add( 117 $this->get('session')->getFlashBag()->add(
118 'notice', 118 'notice',
119 'Tagging rules updated' 119 'flashes.config.notice.tagging_rules_updated'
120 ); 120 );
121 121
122 return $this->redirect($this->generateUrl('config').'#set5'); 122 return $this->redirect($this->generateUrl('config').'#set5');
@@ -147,7 +147,7 @@ class ConfigController extends Controller
147 147
148 $this->get('session')->getFlashBag()->add( 148 $this->get('session')->getFlashBag()->add(
149 'notice', 149 'notice',
150 $this->get('translator')->trans('User "%username%" added', array('%username%' => $newUser->getUsername())) 150 $this->get('translator')->trans('flashes.config.notice.user_added', array('%username%' => $newUser->getUsername()))
151 ); 151 );
152 152
153 return $this->redirect($this->generateUrl('config').'#set6'); 153 return $this->redirect($this->generateUrl('config').'#set6');
@@ -192,7 +192,7 @@ class ConfigController extends Controller
192 192
193 $this->get('session')->getFlashBag()->add( 193 $this->get('session')->getFlashBag()->add(
194 'notice', 194 'notice',
195 'RSS token updated' 195 'flashes.config.notice.rss_token_updated'
196 ); 196 );
197 197
198 return $this->redirect($this->generateUrl('config').'#set2'); 198 return $this->redirect($this->generateUrl('config').'#set2');
@@ -210,7 +210,7 @@ class ConfigController extends Controller
210 public function deleteTaggingRuleAction(TaggingRule $rule) 210 public function deleteTaggingRuleAction(TaggingRule $rule)
211 { 211 {
212 if ($this->getUser()->getId() != $rule->getConfig()->getUser()->getId()) { 212 if ($this->getUser()->getId() != $rule->getConfig()->getUser()->getId()) {
213 throw $this->createAccessDeniedException('You can not access this tagging ryle.'); 213 throw $this->createAccessDeniedException('You can not access this tagging rule.');
214 } 214 }
215 215
216 $em = $this->getDoctrine()->getManager(); 216 $em = $this->getDoctrine()->getManager();
@@ -219,7 +219,7 @@ class ConfigController extends Controller
219 219
220 $this->get('session')->getFlashBag()->add( 220 $this->get('session')->getFlashBag()->add(
221 'notice', 221 'notice',
222 'Tagging rule deleted' 222 'flashes.config.notice.tagging_rules_deleted'
223 ); 223 );
224 224
225 return $this->redirect($this->generateUrl('config').'#set5'); 225 return $this->redirect($this->generateUrl('config').'#set5');
diff --git a/src/Wallabag/CoreBundle/Controller/DeveloperController.php b/src/Wallabag/CoreBundle/Controller/DeveloperController.php
index e5cfd83c..7cb0ead2 100644
--- a/src/Wallabag/CoreBundle/Controller/DeveloperController.php
+++ b/src/Wallabag/CoreBundle/Controller/DeveloperController.php
@@ -49,7 +49,7 @@ class DeveloperController extends Controller
49 49
50 $this->get('session')->getFlashBag()->add( 50 $this->get('session')->getFlashBag()->add(
51 'notice', 51 'notice',
52 'New client created.' 52 'flashes.developer.notice.client_created'
53 ); 53 );
54 54
55 return $this->render('WallabagCoreBundle:Developer:client_parameters.html.twig', array( 55 return $this->render('WallabagCoreBundle:Developer:client_parameters.html.twig', array(
@@ -80,7 +80,7 @@ class DeveloperController extends Controller
80 80
81 $this->get('session')->getFlashBag()->add( 81 $this->get('session')->getFlashBag()->add(
82 'notice', 82 'notice',
83 'Client deleted' 83 'flashes.developer.notice.client_deleted'
84 ); 84 );
85 85
86 return $this->redirect($this->generateUrl('developer')); 86 return $this->redirect($this->generateUrl('developer'));
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php
index 0fae3a0f..1a0b80ac 100644
--- a/src/Wallabag/CoreBundle/Controller/EntryController.php
+++ b/src/Wallabag/CoreBundle/Controller/EntryController.php
@@ -55,7 +55,7 @@ class EntryController extends Controller
55 if (false !== $existingEntry) { 55 if (false !== $existingEntry) {
56 $this->get('session')->getFlashBag()->add( 56 $this->get('session')->getFlashBag()->add(
57 'notice', 57 'notice',
58 'Entry already saved on '.$existingEntry->getCreatedAt()->format('d-m-Y') 58 $this->get('translator')->trans('flashes.entry.notice.entry_already_saved', array('%date%' => $existingEntry->getCreatedAt()->format('d-m-Y')))
59 ); 59 );
60 60
61 return $this->redirect($this->generateUrl('view', array('id' => $existingEntry->getId()))); 61 return $this->redirect($this->generateUrl('view', array('id' => $existingEntry->getId())));
@@ -64,7 +64,7 @@ class EntryController extends Controller
64 $this->updateEntry($entry); 64 $this->updateEntry($entry);
65 $this->get('session')->getFlashBag()->add( 65 $this->get('session')->getFlashBag()->add(
66 'notice', 66 'notice',
67 'Entry saved' 67 'flashes.entry.notice.entry_saved'
68 ); 68 );
69 69
70 return $this->redirect($this->generateUrl('homepage')); 70 return $this->redirect($this->generateUrl('homepage'));
@@ -128,7 +128,7 @@ class EntryController extends Controller
128 128
129 $this->get('session')->getFlashBag()->add( 129 $this->get('session')->getFlashBag()->add(
130 'notice', 130 'notice',
131 'Entry updated' 131 'flashes.entry.notice.entry_updated'
132 ); 132 );
133 133
134 return $this->redirect($this->generateUrl('view', array('id' => $entry->getId()))); 134 return $this->redirect($this->generateUrl('view', array('id' => $entry->getId())));
@@ -304,9 +304,9 @@ class EntryController extends Controller
304 { 304 {
305 $this->checkUserAction($entry); 305 $this->checkUserAction($entry);
306 306
307 $message = 'Entry reloaded'; 307 $message = 'flashes.entry.notice.entry_reloaded';
308 if (false === $this->updateEntry($entry)) { 308 if (false === $this->updateEntry($entry)) {
309 $message = 'Failed to reload entry'; 309 $message = 'flashes.entry.notice.entry_reload_failed';
310 } 310 }
311 311
312 $this->get('session')->getFlashBag()->add( 312 $this->get('session')->getFlashBag()->add(
@@ -334,9 +334,14 @@ class EntryController extends Controller
334 $entry->toggleArchive(); 334 $entry->toggleArchive();
335 $this->getDoctrine()->getManager()->flush(); 335 $this->getDoctrine()->getManager()->flush();
336 336
337 $message = 'flashes.entry.notice.entry_unarchived';
338 if ($entry->isArchived()) {
339 $message = 'flashes.entry.notice.entry_archived';
340 }
341
337 $this->get('session')->getFlashBag()->add( 342 $this->get('session')->getFlashBag()->add(
338 'notice', 343 'notice',
339 'Entry '.($entry->isArchived() ? 'archived' : 'unarchived') 344 $message
340 ); 345 );
341 346
342 return $this->redirect($request->headers->get('referer')); 347 return $this->redirect($request->headers->get('referer'));
@@ -359,9 +364,14 @@ class EntryController extends Controller
359 $entry->toggleStar(); 364 $entry->toggleStar();
360 $this->getDoctrine()->getManager()->flush(); 365 $this->getDoctrine()->getManager()->flush();
361 366
367 $message = 'flashes.entry.notice.entry_unstarred';
368 if ($entry->isStarred()) {
369 $message = 'flashes.entry.notice.entry_starred';
370 }
371
362 $this->get('session')->getFlashBag()->add( 372 $this->get('session')->getFlashBag()->add(
363 'notice', 373 'notice',
364 'Entry '.($entry->isStarred() ? 'starred' : 'unstarred') 374 $message
365 ); 375 );
366 376
367 return $this->redirect($request->headers->get('referer')); 377 return $this->redirect($request->headers->get('referer'));
@@ -394,7 +404,7 @@ class EntryController extends Controller
394 404
395 $this->get('session')->getFlashBag()->add( 405 $this->get('session')->getFlashBag()->add(
396 'notice', 406 'notice',
397 'Entry deleted' 407 'flashes.entry.notice.entry_deleted'
398 ); 408 );
399 409
400 // don't redirect user to the deleted entry 410 // don't redirect user to the deleted entry
diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Wallabag/CoreBundle/Controller/TagController.php
index 7b34939d..56e5195c 100644
--- a/src/Wallabag/CoreBundle/Controller/TagController.php
+++ b/src/Wallabag/CoreBundle/Controller/TagController.php
@@ -43,7 +43,7 @@ class TagController extends Controller
43 43
44 $this->get('session')->getFlashBag()->add( 44 $this->get('session')->getFlashBag()->add(
45 'notice', 45 'notice',
46 'Tag added' 46 'flashes.tag.notice.tag_added'
47 ); 47 );
48 48
49 return $this->redirect($this->generateUrl('view', array('id' => $entry->getId()))); 49 return $this->redirect($this->generateUrl('view', array('id' => $entry->getId())));
diff --git a/src/Wallabag/CoreBundle/Entity/Config.php b/src/Wallabag/CoreBundle/Entity/Config.php
index e18b543b..a25656d3 100644
--- a/src/Wallabag/CoreBundle/Entity/Config.php
+++ b/src/Wallabag/CoreBundle/Entity/Config.php
@@ -40,7 +40,7 @@ class Config
40 * @Assert\Range( 40 * @Assert\Range(
41 * min = 1, 41 * min = 1,
42 * max = 100000, 42 * max = 100000,
43 * maxMessage = "This will certainly kill the app" 43 * maxMessage = "validator.item_per_page_too_high"
44 * ) 44 * )
45 * @ORM\Column(name="items_per_page", type="integer", nullable=false) 45 * @ORM\Column(name="items_per_page", type="integer", nullable=false)
46 */ 46 */
@@ -68,7 +68,7 @@ class Config
68 * @Assert\Range( 68 * @Assert\Range(
69 * min = 1, 69 * min = 1,
70 * max = 100000, 70 * max = 100000,
71 * maxMessage = "This will certainly kill the app" 71 * maxMessage = "validator.rss_limit_too_hight"
72 * ) 72 * )
73 */ 73 */
74 private $rssLimit; 74 private $rssLimit;
diff --git a/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php b/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php
index 7d05a5d8..841af51e 100644
--- a/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php
@@ -16,23 +16,27 @@ class ChangePasswordType extends AbstractType
16 { 16 {
17 $builder 17 $builder
18 ->add('old_password', PasswordType::class, array( 18 ->add('old_password', PasswordType::class, array(
19 'constraints' => new UserPassword(array('message' => 'Wrong value for your current password')), 19 'constraints' => new UserPassword(array('message' => 'validator.password_wrong_value')),
20 'label' => 'config.form_password.old_password_label',
20 )) 21 ))
21 ->add('new_password', RepeatedType::class, array( 22 ->add('new_password', RepeatedType::class, array(
22 'type' => PasswordType::class, 23 'type' => PasswordType::class,
23 'invalid_message' => 'The password fields must match.', 24 'invalid_message' => 'validator.password_must_match',
24 'required' => true, 25 'required' => true,
25 'first_options' => array('label' => 'New password'), 26 'first_options' => array('label' => 'config.form_password.new_password_label'),
26 'second_options' => array('label' => 'Repeat new password'), 27 'second_options' => array('label' => 'config.form_password.repeat_new_password_label'),
27 'constraints' => array( 28 'constraints' => array(
28 new Constraints\Length(array( 29 new Constraints\Length(array(
29 'min' => 8, 30 'min' => 8,
30 'minMessage' => 'Password should by at least 8 chars long', 31 'minMessage' => 'validator.password_too_short',
31 )), 32 )),
32 new Constraints\NotBlank(), 33 new Constraints\NotBlank(),
33 ), 34 ),
35 'label' => 'config.form_password.new_password_label',
36 ))
37 ->add('save', SubmitType::class, array(
38 'label' => 'config.form.save',
34 )) 39 ))
35 ->add('save', SubmitType::class)
36 ; 40 ;
37 } 41 }
38 42
diff --git a/src/Wallabag/CoreBundle/Form/Type/ClientType.php b/src/Wallabag/CoreBundle/Form/Type/ClientType.php
index dd934715..9f620414 100644
--- a/src/Wallabag/CoreBundle/Form/Type/ClientType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/ClientType.php
@@ -14,8 +14,8 @@ class ClientType extends AbstractType
14 public function buildForm(FormBuilderInterface $builder, array $options) 14 public function buildForm(FormBuilderInterface $builder, array $options)
15 { 15 {
16 $builder 16 $builder
17 ->add('redirect_uris', UrlType::class, array('required' => true, 'label' => 'Redirect URIs')) 17 ->add('redirect_uris', UrlType::class, array('required' => true, 'label' => 'developer.client.form.redirect_uris_label'))
18 ->add('save', SubmitType::class, array('label' => 'Create a new client')) 18 ->add('save', SubmitType::class, array('label' => 'developer.client.form.save_label'))
19 ; 19 ;
20 20
21 $builder->get('redirect_uris') 21 $builder->get('redirect_uris')
diff --git a/src/Wallabag/CoreBundle/Form/Type/ConfigType.php b/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
index 0a5ea6cc..b30b4706 100644
--- a/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
@@ -33,21 +33,28 @@ class ConfigType extends AbstractType
33 ->add('theme', ChoiceType::class, array( 33 ->add('theme', ChoiceType::class, array(
34 'choices' => array_flip($this->themes), 34 'choices' => array_flip($this->themes),
35 'choices_as_values' => true, 35 'choices_as_values' => true,
36 'label' => 'config.form_settings.theme_label',
37 ))
38 ->add('items_per_page', null, array(
39 'label' => 'config.form_settings.items_per_page_label',
36 )) 40 ))
37 ->add('items_per_page')
38 ->add('reading_speed', ChoiceType::class, array( 41 ->add('reading_speed', ChoiceType::class, array(
42 'label' => 'config.form_settings.reading_speed.label',
39 'choices' => array( 43 'choices' => array(
40 'I read ~100 words per minute' => '0.5', 44 'config.form_settings.reading_speed.100_word' => '0.5',
41 'I read ~200 words per minute' => '1', 45 'config.form_settings.reading_speed.200_word' => '1',
42 'I read ~300 words per minute' => '1.5', 46 'config.form_settings.reading_speed.300_word' => '1.5',
43 'I read ~400 words per minute' => '2', 47 'config.form_settings.reading_speed.400_word' => '2',
44 ), 48 ),
45 )) 49 ))
46 ->add('language', ChoiceType::class, array( 50 ->add('language', ChoiceType::class, array(
47 'choices' => array_flip($this->languages), 51 'choices' => array_flip($this->languages),
48 'choices_as_values' => true, 52 'choices_as_values' => true,
53 'label' => 'config.form_settings.language_label',
54 ))
55 ->add('save', SubmitType::class, array(
56 'label' => 'config.form.save',
49 )) 57 ))
50 ->add('save', SubmitType::class)
51 ; 58 ;
52 } 59 }
53 60
diff --git a/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php b/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php
index 2b1e1ef4..23d7b239 100644
--- a/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php
@@ -14,9 +14,22 @@ class EditEntryType extends AbstractType
14 public function buildForm(FormBuilderInterface $builder, array $options) 14 public function buildForm(FormBuilderInterface $builder, array $options)
15 { 15 {
16 $builder 16 $builder
17 ->add('title', TextType::class, array('required' => true)) 17 ->add('title', TextType::class, array(
18 ->add('is_public', CheckboxType::class, array('required' => false)) 18 'required' => true,
19 ->add('save', SubmitType::class) 19 'label' => 'entry.edit.title_label',
20 ))
21 ->add('is_public', CheckboxType::class, array(
22 'required' => false,
23 'label' => 'entry.edit.is_public_label',
24 ))
25 ->add('url', TextType::class, array(
26 'disabled' => true,
27 'required' => false,
28 'label' => 'entry.edit.url_label',
29 ))
30 ->add('save', SubmitType::class, array(
31 'label' => 'entry.edit.save_label',
32 ))
20 ; 33 ;
21 } 34 }
22 35
diff --git a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
index ee10bc8b..ec36503b 100644
--- a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
@@ -34,7 +34,9 @@ class EntryFilterType extends AbstractType
34 public function buildForm(FormBuilderInterface $builder, array $options) 34 public function buildForm(FormBuilderInterface $builder, array $options)
35 { 35 {
36 $builder 36 $builder
37 ->add('readingTime', NumberRangeFilterType::class) 37 ->add('readingTime', NumberRangeFilterType::class, array(
38 'label' => 'entry.filters.reading_time.label',
39 ))
38 ->add('createdAt', DateRangeFilterType::class, array( 40 ->add('createdAt', DateRangeFilterType::class, array(
39 'left_date_options' => array( 41 'left_date_options' => array(
40 'attr' => array( 42 'attr' => array(
@@ -50,6 +52,7 @@ class EntryFilterType extends AbstractType
50 'format' => 'dd/MM/yyyy', 52 'format' => 'dd/MM/yyyy',
51 'widget' => 'single_text', 53 'widget' => 'single_text',
52 ), 54 ),
55 'label' => 'entry.filters.created_at.label',
53 ) 56 )
54 ) 57 )
55 ->add('domainName', TextFilterType::class, array( 58 ->add('domainName', TextFilterType::class, array(
@@ -62,9 +65,14 @@ class EntryFilterType extends AbstractType
62 65
63 return $filterQuery->createCondition($expression); 66 return $filterQuery->createCondition($expression);
64 }, 67 },
68 'label' => 'entry.filters.domain_label',
69 ))
70 ->add('isArchived', CheckboxFilterType::class, array(
71 'label' => 'entry.filters.archived_label',
72 ))
73 ->add('isStarred', CheckboxFilterType::class, array(
74 'label' => 'entry.filters.starred_label',
65 )) 75 ))
66 ->add('isArchived', CheckboxFilterType::class)
67 ->add('isStarred', CheckboxFilterType::class)
68 ->add('previewPicture', CheckboxFilterType::class, array( 76 ->add('previewPicture', CheckboxFilterType::class, array(
69 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { 77 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
70 if (false === $values['value']) { 78 if (false === $values['value']) {
@@ -75,10 +83,12 @@ class EntryFilterType extends AbstractType
75 83
76 return $filterQuery->createCondition($expression); 84 return $filterQuery->createCondition($expression);
77 }, 85 },
86 'label' => 'entry.filters.preview_picture_label',
78 )) 87 ))
79 ->add('language', ChoiceFilterType::class, array( 88 ->add('language', ChoiceFilterType::class, array(
80 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())), 89 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())),
81 'choices_as_values' => true, 90 'choices_as_values' => true,
91 'label' => 'entry.filters.language_label',
82 )) 92 ))
83 ; 93 ;
84 } 94 }
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php b/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
index fbce13f1..69fab6fb 100644
--- a/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
@@ -3,7 +3,6 @@
3namespace Wallabag\CoreBundle\Form\Type; 3namespace Wallabag\CoreBundle\Form\Type;
4 4
5use Symfony\Component\Form\AbstractType; 5use Symfony\Component\Form\AbstractType;
6use Symfony\Component\Form\Extension\Core\Type\SubmitType;
7use Symfony\Component\Form\Extension\Core\Type\UrlType; 6use Symfony\Component\Form\Extension\Core\Type\UrlType;
8use Symfony\Component\Form\FormBuilderInterface; 7use Symfony\Component\Form\FormBuilderInterface;
9use Symfony\Component\OptionsResolver\OptionsResolver; 8use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -13,8 +12,10 @@ class NewEntryType extends AbstractType
13 public function buildForm(FormBuilderInterface $builder, array $options) 12 public function buildForm(FormBuilderInterface $builder, array $options)
14 { 13 {
15 $builder 14 $builder
16 ->add('url', UrlType::class, array('required' => true)) 15 ->add('url', UrlType::class, array(
17 ->add('save', SubmitType::class) 16 'required' => true,
17 'label' => 'entry.new.form_new.url_label',
18 ))
18 ; 19 ;
19 } 20 }
20 21
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewTagType.php b/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
index 0f559031..c7568de7 100644
--- a/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
@@ -3,7 +3,6 @@
3namespace Wallabag\CoreBundle\Form\Type; 3namespace Wallabag\CoreBundle\Form\Type;
4 4
5use Symfony\Component\Form\AbstractType; 5use Symfony\Component\Form\AbstractType;
6use Symfony\Component\Form\Extension\Core\Type\SubmitType;
7use Symfony\Component\Form\Extension\Core\Type\TextType; 6use Symfony\Component\Form\Extension\Core\Type\TextType;
8use Symfony\Component\Form\FormBuilderInterface; 7use Symfony\Component\Form\FormBuilderInterface;
9use Symfony\Component\OptionsResolver\OptionsResolver; 8use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -14,7 +13,6 @@ class NewTagType extends AbstractType
14 { 13 {
15 $builder 14 $builder
16 ->add('label', TextType::class, array('required' => true)) 15 ->add('label', TextType::class, array('required' => true))
17 ->add('save', SubmitType::class)
18 ; 16 ;
19 } 17 }
20 18
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewUserType.php b/src/Wallabag/CoreBundle/Form/Type/NewUserType.php
index 6eb0e63f..60fcc20c 100644
--- a/src/Wallabag/CoreBundle/Form/Type/NewUserType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/NewUserType.php
@@ -17,22 +17,30 @@ class NewUserType extends AbstractType
17 public function buildForm(FormBuilderInterface $builder, array $options) 17 public function buildForm(FormBuilderInterface $builder, array $options)
18 { 18 {
19 $builder 19 $builder
20 ->add('username', TextType::class, array('required' => true)) 20 ->add('username', TextType::class, array(
21 'required' => true,
22 'label' => 'config.form_new_user.username_label',
23 ))
21 ->add('plainPassword', RepeatedType::class, array( 24 ->add('plainPassword', RepeatedType::class, array(
22 'type' => PasswordType::class, 25 'type' => PasswordType::class,
23 'invalid_message' => 'The password fields must match', 26 'invalid_message' => 'validator.password_must_match',
24 'first_options' => array('label' => 'Password'), 27 'first_options' => array('label' => 'config.form_new_user.password_label'),
25 'second_options' => array('label' => 'Repeat new password'), 28 'second_options' => array('label' => 'config.form_new_user.repeat_new_password_label'),
26 'constraints' => array( 29 'constraints' => array(
27 new Constraints\Length(array( 30 new Constraints\Length(array(
28 'min' => 8, 31 'min' => 8,
29 'minMessage' => 'Password should by at least 8 chars long', 32 'minMessage' => 'validator.password_too_short',
30 )), 33 )),
31 new Constraints\NotBlank(), 34 new Constraints\NotBlank(),
32 ), 35 ),
36 'label' => 'config.form_new_user.plain_password_label',
37 ))
38 ->add('email', EmailType::class, array(
39 'label' => 'config.form_new_user.email_label',
40 ))
41 ->add('save', SubmitType::class, array(
42 'label' => 'config.form.save',
33 )) 43 ))
34 ->add('email', EmailType::class)
35 ->add('save', SubmitType::class)
36 ; 44 ;
37 } 45 }
38 46
diff --git a/src/Wallabag/CoreBundle/Form/Type/RssType.php b/src/Wallabag/CoreBundle/Form/Type/RssType.php
index def8782c..a9f68e54 100644
--- a/src/Wallabag/CoreBundle/Form/Type/RssType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/RssType.php
@@ -12,8 +12,12 @@ class RssType extends AbstractType
12 public function buildForm(FormBuilderInterface $builder, array $options) 12 public function buildForm(FormBuilderInterface $builder, array $options)
13 { 13 {
14 $builder 14 $builder
15 ->add('rss_limit') 15 ->add('rss_limit', null, array(
16 ->add('save', SubmitType::class) 16 'label' => 'config.form_rss.rss_limit',
17 ))
18 ->add('save', SubmitType::class, array(
19 'label' => 'config.form.save',
20 ))
17 ; 21 ;
18 } 22 }
19 23
diff --git a/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
index 5815b8c6..cfee21f1 100644
--- a/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
@@ -14,12 +14,19 @@ class TaggingRuleType extends AbstractType
14 public function buildForm(FormBuilderInterface $builder, array $options) 14 public function buildForm(FormBuilderInterface $builder, array $options)
15 { 15 {
16 $builder 16 $builder
17 ->add('rule', TextType::class, array('required' => true)) 17 ->add('rule', TextType::class, array(
18 ->add('save', SubmitType::class) 18 'required' => true,
19 'label' => 'config.form_rules.rule_label',
20 ))
21 ->add('save', SubmitType::class, array(
22 'label' => 'config.form.save',
23 ))
19 ; 24 ;
20 25
21 $tagsField = $builder 26 $tagsField = $builder
22 ->create('tags', TextType::class) 27 ->create('tags', TextType::class, array(
28 'label' => 'config.form_rules.tags_label',
29 ))
23 ->addModelTransformer(new StringToListTransformer(',')); 30 ->addModelTransformer(new StringToListTransformer(','));
24 31
25 $builder->add($tagsField); 32 $builder->add($tagsField);
diff --git a/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php b/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php
index f491b0ae..799ea39e 100644
--- a/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php
@@ -15,10 +15,19 @@ class UserInformationType extends AbstractType
15 public function buildForm(FormBuilderInterface $builder, array $options) 15 public function buildForm(FormBuilderInterface $builder, array $options)
16 { 16 {
17 $builder 17 $builder
18 ->add('name', TextType::class) 18 ->add('name', TextType::class, array(
19 ->add('email', EmailType::class) 19 'label' => 'config.form_user.name_label',
20 ->add('twoFactorAuthentication', CheckboxType::class, array('required' => false)) 20 ))
21 ->add('save', SubmitType::class) 21 ->add('email', EmailType::class, array(
22 'label' => 'config.form_user.email_label',
23 ))
24 ->add('twoFactorAuthentication', CheckboxType::class, array(
25 'required' => false,
26 'label' => 'config.form_user.twoFactorAuthentication_label',
27 ))
28 ->add('save', SubmitType::class, array(
29 'label' => 'config.form.save',
30 ))
22 ->remove('username') 31 ->remove('username')
23 ->remove('plainPassword') 32 ->remove('plainPassword')
24 ; 33 ;
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
index d3311d3a..40ae4e5a 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
@@ -1,130 +1,424 @@
1#Login 1security:
2Keep me logged in: 'Forbliv logget ind' 2 login:
3Forgot your password?: 'Glemt adgangskoden?' 3 # page_title: 'Welcome to wallabag!'
4Login: 'Log ind' 4 keep_logged_in: 'Forbliv logget ind'
5Back to login: 'Tilbage til login' 5 forgot_password: 'Glemt adgangskoden?'
6Send: 'Send' 6 submit: 'Log ind'
7"Enter your email address below and we'll send you password reset instructions.": "Indtast din emailadresse nedenfor, så vil du modtage instrukser om at nulstille adgangskoden." 7 # register: 'Register'
8 username: 'Brugernavn'
9 password: 'Adgangskode'
10 # cancel: 'Cancel'
11 resetting:
12 description: "Indtast din emailadresse nedenfor, så vil du modtage instrukser om at nulstille adgangskoden."
13 register:
14 # page_title: 'Create an account'
15 # go_to_account: 'Go to your account'
8 16
9# Menu 17menu:
10unread: 'ulæst' 18 left:
11starred: 'favoritter' 19 unread: 'Ulæst'
12archive: 'arkiv' 20 starred: 'Favoritter'
13all: 'alle artikler' 21 archive: 'Arkiv'
14tags: 'tags' 22 all_articles: 'Alle artikler'
15config: 'Opsætning' 23 config: 'Opsætning'
16howto: 'how-to' 24 tags: 'Tags'
17logout: 'log ud' 25 # internal_settings: 'Internal Settings'
18Filtered: 'Filtreret' 26 # import: 'Import'
19About: 'Om' 27 howto: 'KUow-to'
28 # developer: 'Developer'
29 logout: 'Log ud'
30 about: 'Om'
31 search: 'Søg'
32 # save_link: 'Save a link'
33 back_to_unread: 'Tilbage til de ulæste artikler'
34 top:
35 add_new_entry: 'Tilføj ny artikel'
36 search: 'Søg'
37 filter_entries: 'Filtrer artikler'
38 # export: 'Export'
39 search_form:
40 input_label: 'Indtast søgning'
20 41
21# Header 42footer:
22Back to unread articles: 'Tilbage til de ulæste artikler' 43 wallabag:
23Add a new entry: 'Tilføj ny artikel' 44 # elsewhere: 'Take wallabag with you'
24Search: 'Søg' 45 # social: 'Social'
25Filter entries: 'Filtrer artikler' 46 # powered_by: 'powered by'
26Enter your search here: 'Indtast søgning' 47 about: 'Om'
27Save new entry: 'Gem ny artikel'
28 48
29# Config screen 49config:
30Settings: 'Indstillinger' 50 page_title: 'Opsætning'
31User information: 'Brugeroplysninger' 51 tab_menu:
32Password: 'Adgangskode' 52 settings: 'Indstillinger'
33RSS: 'RSS' 53 rss: 'RSS'
34Add a user: 'Tilføj bruger' 54 user_info: 'Brugeroplysninger'
35Theme: 'Tema' 55 password: 'Adgangskode'
36Items per page: 'Poster pr. side' 56 # rules: 'Tagging rules'
37Language: 'Sprog' 57 new_user: 'Tilføj bruger'
38Save: 'Gem' 58 form:
39RSS token: 'RSS-Token' 59 save: 'Gem'
40Name: 'Navn' 60 form_settings:
41Email: 'Emailadresse' 61 theme_label: 'Tema'
42No token: 'Intet token' 62 items_per_page_label: 'Poster pr. side'
43Reset your token: 'Nulstil token' 63 language_label: 'Sprog'
44Create your token: 'Opret token' 64 reading_speed:
45Rss limit: 'RSS-grænse' 65 # label: 'Reading speed'
46RSS links: 'RSS-Links' 66 # help_message: 'You can use online tools to estimate your reading speed:'
47'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.': 'RSS-feeds fra wallabag gør det muligt at læse de artikler, der gemmes i wallabag, med din RSS-læser. Det kræver, at du genererer et token først.' 67 # 100_word: 'I read ~100 words per minute'
48Old password: 'Gammel adgangskode' 68 # 200_word: 'I read ~200 words per minute'
49New password: 'Ny adgangskode' 69 # 300_word: 'I read ~300 words per minute'
50Repeat new password: 'Gentag adgangskode' 70 # 400_word: 'I read ~400 words per minute'
51Username: 'Brugernavn' 71 form_rss:
72 description: 'RSS-feeds fra wallabag gør det muligt at læse de artikler, der gemmes i wallabag, med din RSS-læser. Det kræver, at du genererer et token først.'
73 token_label: 'RSS-Token'
74 no_token: 'Intet token'
75 token_create: 'Opret token'
76 token_reset: 'Nulstil token'
77 rss_links: 'RSS-Links'
78 rss_link:
79 unread: 'ulæst'
80 starred: 'favoritter'
81 archive: 'arkiv'
82 # rss_limit: 'Number of items in the feed'
83 form_user:
84 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
85 name_label: 'Navn'
86 email_label: 'Emailadresse'
87 # twoFactorAuthentication_label: 'Two factor authentication'
88 form_password:
89 old_password_label: 'Gammel adgangskode'
90 new_password_label: 'Ny adgangskode'
91 repeat_new_password_label: 'Gentag adgangskode'
92 form_rules:
93 # if_label: 'if'
94 # then_tag_as_label: 'then tag as'
95 # delete_rule_label: 'delete'
96 # rule_label: 'Rule'
97 # tags_label: 'Tags'
98 # faq:
99 # title: 'FAQ'
100 # tagging_rules_definition_title: 'What does « tagging rules » mean?'
101 # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.'
102 # how_to_use_them_title: 'How do I use them?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
104 # variables_available_title: 'Which variables and operators can I use to write rules?'
105 # variables_available_description: 'The following variables and operators can be used to create tagging rules:'
106 # meaning: 'Meaning'
107 # variable_description:
108 # label: 'Variable'
109 # title: 'Title of the entry'
110 # url: 'URL of the entry'
111 # isArchived: 'Whether the entry is archived or not'
112 # isStarred: 'Whether the entry is starred or not'
113 # content: "The entry's content"
114 # language: "The entry's language"
115 # mimetype: "The entry's mime-type"
116 # readingTime: "The estimated entry's reading time, in minutes"
117 # domainName: 'The domain name of the entry'
118 # operator_description:
119 # label: 'Operator'
120 # less_than: 'Less than...'
121 # strictly_less_than: 'Strictly less than...'
122 # greater_than: 'Greater than...'
123 # strictly_greater_than: 'Strictly greater than...'
124 # equal_to: 'Equal to...'
125 # not_equal_to: 'Not equal to...'
126 # or: 'One rule OR another'
127 # and: 'One rule AND another'
128 # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
129 form_new_user:
130 username_label: 'Brugernavn'
131 password_label: 'Adgangskode'
132 repeat_new_password_label: 'Gentag adgangskode'
133 plain_password_label: '????'
134 email_label: 'Emailadresse'
52 135
53# Entries 136entry:
54'estimated reading time': 'estimeret læsetid' 137 page_titles:
55original: original 138 # unread: 'Unread entries'
56Toggle mark as read: 'Marker som læst' 139 # starred: 'Starred entries'
57Toggle favorite: 'Skift favoritstatus' 140 # archive: 'Archived entries'
58Delete: 'Slet' 141 # filtered: 'Filtered entries'
142 list:
143 # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
144 reading_time: 'estimeret læsetid'
145 reading_time_minutes: 'estimeret læsetid: %readingTime% min'
146 reading_time_less_one_minute: 'estimeret læsetid: <small class="inferieur">&lt;</small> 1 min'
147 original_article: 'original'
148 toogle_as_read: 'Marker som læst'
149 toogle_as_star: 'Skift favoritstatus'
150 delete: 'Slet'
151 # export_title: 'Export'
152 filters:
153 title: 'Filtre'
154 status_label: 'Status'
155 archived_label: 'Arkiveret'
156 starred_label: 'Favorit'
157 preview_picture_label: 'Har et vist billede'
158 preview_picture_help: 'Forhåndsvis billede'
159 language_label: 'Sprog'
160 reading_time:
161 label: 'Læsetid i minutter'
162 from: 'fra'
163 to: 'til'
164 domain_label: 'Domænenavn'
165 created_at:
166 label: 'Oprettelsesdato'
167 from: 'fra'
168 to: 'til'
169 action:
170 clear: 'Ryd'
171 filter: 'Filter'
172 view:
173 left_menu:
174 # back_to_top: 'Back to top'
175 back_to_homepage: 'Tilbage'
176 set_as_read: 'Marker som læst'
177 # set_as_unread: 'Mark as unread'
178 set_as_favorite: 'Marker som favorit'
179 view_original_article: 'Originalartikel'
180 # re_fetch_content: 'Re-fetch content'
181 delete: 'Slet'
182 add_a_tag: 'Tliføj et tag'
183 share_content: 'Deling'
184 # share_email_label: 'Email'
185 download: 'Download'
186 # print: 'Print'
187 problem:
188 label: 'Problemer?'
189 description: 'Vises artiklen forkert?'
190 edit_title: 'Rediger titel'
191 original_article: 'original'
192 # annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
193 new:
194 page_title: 'Gem ny artikel'
195 placeholder: 'http://website.com'
196 form_new:
197 url_label: Url
198 edit:
199 # page_title: 'Edit an entry'
200 # title_label: 'Title'
201 url_label: 'Url'
202 # is_public_label: 'Public'
203 save_label: 'Gem'
59 204
60# Filters 205about:
61Filters: 'Filtre' 206 page_title: 'Om'
62Status: 'Status' 207 top_menu:
63Archived: 'Arkiveret' 208 who_behind_wallabag: 'Hvem står bag wallabag'
64Starred: 'Favorit' 209 getting_help: 'Find hjælp'
65Preview picture: 'Forhåndsvis billede' 210 helping: 'Hjælp wallabag'
66Has a preview picture: 'Har et vist billede' 211 contributors: 'Bidragsydere'
67Reading time in minutes: 'Læsetid i minutter' 212 # third_party: 'Third-party libraries'
68from: 'fra' 213 who_behind_wallabag:
69to: 'til' 214 developped_by: 'Udviklet af'
70website.com: 'website.com' 215 website: 'Hjemmeside'
71Domain name: 'Domænenavn' 216 many_contributors: 'Og mange andre bidragsydere ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">på Github</a>'
72Creation date: 'Oprettelsesdato' 217 project_website: 'Projektets hjemmeside'
73dd/mm/yyyy: 'dd.mm.åååå' 218 license: 'Licens'
74Clear: 'Ryd' 219 version: 'Version'
75Filter: 'Filter' 220 getting_help:
221 documentation: 'Dokumentation'
222 bug_reports: 'Bugs'
223 support: '<a href="https://support.wallabag.org">På vor support-side</a> eller <a href="https://github.com/wallabag/wallabag/issues">på GitHub</a>'
224 helping:
225 description: 'wallabag er gratis og Open source. Du kan hjælpe os:'
226 by_contributing: 'ved at bidrage til projektet:'
227 by_contributing_2: 'et Github-issue fortæller om alt, hvad vi har brug for:'
228 by_paypal: 'via Paypal'
229 contributors:
230 # description: 'Thank you to contributors on wallabag web application'
231 third_party:
232 # description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
233 # package: 'Package'
234 license: 'Licens'
76 235
77# About 236howto:
78Who is behind wallabag: "hvem står bag wallabag" 237 page_title: 'How-to'
79Getting help: "Find hjælp" 238 # page_description: 'There are several ways to save an article:'
80Helping wallabag: "hjælp wallabag" 239 top_menu:
81Developed by: "Udviklet af" 240 browser_addons: 'Browserudvidelser'
82website: "Hjemmeside" 241 mobile_apps: 'Apps'
83And many others contributors ♥: "Og mange andre bidragsydere ♥" 242 bookmarklet: 'Bookmarklet'
84on GitHub: "på GitHub" 243 form:
85Project website: "Projektets hjemmeside" 244 description: 'Tak gennem denne formular'
86License: "Licens" 245 browser_addons:
87Version: "Version" 246 firefox: 'Standardudvidelse til Firefox'
88Documentation: "Dokumentation" 247 chrome: 'Chrome-udvidelse'
89Bug reports: "Bugs" 248 mobile_apps:
90On our support website: "På vor support-side" 249 android:
91or: "eller" 250 via_f_droid: 'via F-Droid'
92"wallabag is free and opensource. You can help us:": "wallabag er gratis og Open source. Du kan hjælpe os:" 251 via_google_play: 'via Google Play'
93"by contributing to the project:": "ved at bidrage til projektet:" 252 # ios: 'on the iTunes Store'
94an issue lists all our needs: "et Github-issue fortæller om alt, hvad vi har brug for:" 253 # windows: 'on the Microsoft Store'
95via Paypal: "via PayPal" 254 bookmarklet:
255 description: 'Træk dette link til din bogmærkeliste:'
96 256
97# Howto 257quickstart:
98Form: Formular 258 # page_title: 'Quickstart'
99Thanks to this form: "Tak gennem denne formular" 259 # intro:
100Browser addons: "Browserudvidelser" 260 # title: 'Welcome to wallabag!'
101Mobile apps: "Apps" 261 # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you."
102Bookmarklet: "Bookmarklet" 262 # paragraph_2: 'Follow us!'
103Standard Firefox Add-On: "Standardudvidelse til Firefox" 263 # configure:
104Chrome Extension: "Chrome-udvidelse" 264 # title: 'Configure the application'
105download the application: "Download" 265 # language: 'Change language and design'
106"Drag &amp; drop this link to your bookmarks bar:": "Træk dette link til din bogmærkeliste:" 266 # rss: 'Enable RSS feeds'
267 # tagging_rules: 'Write rules to automatically tag your articles'
268 # admin:
269 # title: 'Administration'
270 # description: 'As an administrator, you have privileges on wallabag. You can:'
271 # new_user: 'Create a new user'
272 # analytics: 'Configure analytics'
273 # sharing: 'Enable some parameters about article sharing'
274 # export: 'Configure export'
275 # import: 'Configure import'
276 # first_steps:
277 # title: 'First steps'
278 # new_article: 'Save your first article'
279 # unread_articles: 'And classify it!'
280 # migrate:
281 # title: 'Migrate from an existing service'
282 # description: "Are you using another service? We'll help you to retrieve your data on wallabag."
283 # pocket: 'Migrate from Pocket'
284 # wallabag_v1: 'Migrate from wallabag v1'
285 # wallabag_v2: 'Migrate from wallabag v2'
286 # developer:
287 # title: 'Developers'
288 # create_application: 'Create your third application'
289 # docs:
290 # title: 'Full documentation'
291 # annotate: 'Annotate your article'
292 # export: 'Convert your articles into ePUB or PDF'
293 # search_filters: 'See how you can look for an article by using search engine and filters'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?'
295 # all_docs: 'And so many other articles!'
296 # support:
297 # title: 'Support'
298 # description: 'If you need some help, we are here for you.'
299 # github: 'On GitHub'
300 # email: 'By email'
301 # gitter: 'On Gitter'
107 302
108# Flash messages 303tag:
109Information updated: "Oplysninger opdateret" 304 page_title: 'Tags'
110"Config saved. Some parameters will be considered after disconnection.": "Opsætning gemt. Visse ændringer vil først fremgå ved næste login." 305 list:
111RSS information updated: "RSS-oplysninger opdateret" 306 # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
112Password updated: "Adgangskode opdateret"
113Entry starred: "Artikel markeret som favorit"
114Entry unstarred: "Artikel ikke længere markeret som favorit"
115Entry archived: "Artikel arkiveret"
116Entry unarchived: "Artikel ikke længere arkiveret"
117Entry deleted: "Artikel slettet"
118 307
119# Entry 308import:
120Mark as read: 'Marker som læst' 309 # page_title: 'Import'
121Favorite: 'Marker som favorit' 310 # page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
122back: 'tilbage' 311 # action:
123original article: 'Originalartikel' 312 # import_contents: 'Import contents'
124Add a tag: 'Tliføj et tag' 313 # form:
125Share: 'Deling' 314 # mark_as_read_title: 'Mark all as read?'
126Download: 'Download' 315 # mark_as_read_label: 'Mark all imported entries as read'
127Does this article appear wrong?: "Vises artiklen forkert?" 316 # file_label: 'File'
128Problems?: 'Problemer?' 317 # save_label: 'Upload file'
129Edit title: "Rediger titel" 318 # pocket:
319 # page_title: 'Import > Pocket'
320 # description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag."
321 # config_missing:
322 # description: "Pocket import isn't configured."
323 # admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
324 # user_message: 'Your server admin needs to define an API Key for Pocket.'
325 # authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.'
326 # connect_to_pocket: 'Connect to Pocket and import data'
327 # wallabag_v1:
328 # page_title: 'Import > Wallabag v1'
329 # description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'
330 # how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
331 # wallabag_v2:
332 # page_title: 'Import > Wallabag v2'
333 # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
130 334
335developer:
336 # page_title: 'Developer'
337 # welcome_message: 'Welcome to the wallabag API'
338 # documentation: 'Documentation'
339 # how_to_first_app: 'How to create my first application'
340 # full_documentation: 'View full API documentation'
341 # clients:
342 # title: 'Clients'
343 # create_new: 'Create a new client'
344 # existing_clients:
345 # title: 'Existing clients'
346 # field_id: 'Client ID'
347 # field_secret: 'Client secret'
348 # field_uris: 'Redirect URIs'
349 # field_grant_types: 'Grant type allowed'
350 # no_client: 'No client yet.'
351 # remove:
352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
354 # action: 'Remove this client'
355 # client:
356 # page_title: 'Developer > New client'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
358 # form:
359 # redirect_uris_label: 'Redirect URIs'
360 # save_label: 'Create a new client'
361 # action_back: 'Back'
362 # client_parameter:
363 # page_title: 'Developer > Client parameters'
364 # page_description: 'Here are your client parameters.'
365 # field_id: 'Client ID'
366 # field_secret: 'Client secret'
367 # back: 'Back'
368 # read_howto: 'Read the howto "Create my first application"'
369 # howto:
370 # page_title: 'Developer > How to create my first application'
371 # description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):'
376 # paragraph_5: 'The API will return a response like this:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:'
378 # paragraph_7: 'This call will return all the entries for your user.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.'
380 # back: 'Back'
381
382validator:
383 password_must_match: 'De indtastede adgangskoder skal være ens'
384 password_too_short: 'Adgangskoden skal være mindst 8 tegn'
385 # password_wrong_value: 'Wrong value for your current password'
386 # item_per_page_too_high: 'This will certainly kill the app'
387 # rss_limit_too_hight: 'This will certainly kill the app'
388
389flashes:
390 config:
391 notice:
392 config_saved: 'Opsætning gemt. Visse ændringer vil først fremgå ved næste login.'
393 password_updated: 'Adgangskode opdateret'
394 # password_not_updated_demo: "In demonstration mode, you can't change password for this user."
395 user_updated: 'Oplysninger opdateret'
396 rss_updated: 'RSS-oplysninger opdateret'
397 # tagging_rules_updated: 'Tagging rules updated'
398 # tagging_rules_deleted: 'Tagging rule deleted'
399 # user_added: 'User "%username%" added'
400 # rss_token_updated: 'RSS token updated'
401 entry:
402 notice:
403 # entry_already_saved: 'Entry already saved on %date%'
404 # entry_saved: 'Entry saved'
405 # entry_updated: 'Entry updated'
406 # entry_reloaded: 'Entry reloaded'
407 # entry_reload_failed: 'Failed to reload entry'
408 entry_archived: 'Artikel arkiveret'
409 entry_unarchived: 'Artikel ikke længere arkiveret'
410 entry_starred: 'Artikel markeret som favorit'
411 entry_unstarred: 'Artikel ikke længere markeret som favorit'
412 entry_deleted: 'Artikel slettet'
413 tag:
414 notice:
415 # tag_added: 'Tag added'
416 import:
417 notice:
418 # failed: 'Import failed, please try again.'
419 # failed_on_file: 'Error while processing import. Please verify your import file.'
420 # summary: 'Import summary: %imported% imported, %skipped% already saved.'
421 developer:
422 notice:
423 # client_created: 'New client created.'
424 # client_deleted: 'Client deleted'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
index 8b75594c..34f567b1 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
@@ -1,129 +1,424 @@
1#Login 1security:
2Keep me logged in: 'Angemeldet bleiben' 2 login:
3Forgot your password?: 'Kennwort vergessen?' 3 # page_title: 'Welcome to wallabag!'
4Login: 'Anmelden' 4 keep_logged_in: 'Angemeldet bleiben'
5Back to login: 'Zurück zur Anmeldung' 5 forgot_password: 'Kennwort vergessen?'
6Send: 'Senden' 6 submit: 'Anmelden'
7"Enter your email address below and we'll send you password reset instructions.": "Gib unten deine E-Mail-Adresse ein und wir senden dir eine Anleitung für das Zurücksetzen deines Kennworts." 7 # register: 'Register'
8 username: 'Benutzername'
9 password: 'Kennwort'
10 # cancel: 'Cancel'
11 resetting:
12 description: "Gib unten deine E-Mail-Adresse ein und wir senden dir eine Anleitung für das Zurücksetzen deines Kennworts."
13 register:
14 # page_title: 'Create an account'
15 # go_to_account: 'Go to your account'
8 16
9# Menu 17menu:
10unread: 'ungelesen' 18 left:
11starred: 'favoriten' 19 unread: 'Ungelesen'
12archive: 'archiv' 20 starred: 'Favoriten'
13all: 'alle artikel' 21 archive: 'Archiv'
14tags: 'tags' 22 all_articles: 'Alle artikel'
15config: 'konfiguration' 23 config: 'Konfiguration'
16howto: 'how-to' 24 tags: 'Tags'
17logout: 'abmelden' 25 # internal_settings: 'Internal Settings'
18Filtered: 'Gefiltert' 26 # import: 'Import'
19About: 'Über' 27 howto: 'How-to'
28 # developer: 'Developer'
29 logout: 'Abmelden'
30 about: 'Über'
31 search: 'Suche'
32 # save_link: 'Save a link'
33 back_to_unread: 'Zurück zu ungelesenen Artikeln'
34 top:
35 add_new_entry: 'Neuen Artikel hinzufügen'
36 search: 'Suche'
37 filter_entries: 'Artikel filtern'
38 # export: 'Export'
39 search_form:
40 input_label: 'Suchbegriff hier eingeben'
20 41
21# Header 42footer:
22Back to unread articles: 'Zurück zu ungelesenen Artikeln' 43 wallabag:
23Add a new entry: 'Neuen Artikel hinzufügen' 44 # elsewhere: 'Take wallabag with you'
24Search: 'Suche' 45 # social: 'Social'
25Filter entries: 'Artikel filtern' 46 # powered_by: 'powered by'
26Enter your search here: 'Suchbegriff hier eingeben' 47 about: 'Über'
27Save new entry: 'Neuen Artikel speichern'
28 48
29# Config screen 49config:
30Settings: 'Einstellungen' 50 page_title: 'Config'
31User information: 'Benutzer-Information' 51 tab_menu:
32Password: 'Kennwort' 52 settings: 'Einstellungen'
33RSS: 'RSS' 53 rss: 'RSS'
34Add a user: 'Benutzer hinzufügen' 54 user_info: 'Benutzer-Information'
35Theme: 'Theme' 55 password: 'Kennwort'
36Items per page: 'Einträge pro Seite' 56 # rules: 'Tagging rules'
37Language: 'Sprache' 57 new_user: 'Benutzer hinzufügen'
38Save: 'Speichern' 58 form:
39RSS token: 'RSS-Token' 59 save: 'Speichern'
40Name: 'Name' 60 form_settings:
41Email: 'E-Mail-Adresse' 61 theme_label: 'Theme'
42No token: 'Kein Token' 62 items_per_page_label: 'Einträge pro Seite'
43Reset your token: 'Token zurücksetzen' 63 language_label: 'Sprache'
44Create your token: 'Token erstellen' 64 reading_speed:
45Rss limit: 'RSS-Limit' 65 # label: 'Reading speed'
46RSS links: 'RSS-Links' 66 # help_message: 'You can use online tools to estimate your reading speed:'
47'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.': '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.' 67 # 100_word: 'I read ~100 words per minute'
48Old password: 'Altes Kennwort' 68 # 200_word: 'I read ~200 words per minute'
49New password: 'Neues Kennwort' 69 # 300_word: 'I read ~300 words per minute'
50Repeat new password: 'Neues Kennwort wiederholen' 70 # 400_word: 'I read ~400 words per minute'
51Username: 'Benutzername' 71 form_rss:
72 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.'
73 token_label: 'RSS-token'
74 no_token: 'Kein Token'
75 token_create: 'Token erstellen'
76 token_reset: 'Token zurücksetzen'
77 rss_links: 'RSS-Links'
78 rss_link:
79 unread: 'ungelesen'
80 starred: 'favoriten'
81 archive: 'archiv'
82 # rss_limit: 'Number of items in the feed'
83 form_user:
84 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
85 name_label: 'Name'
86 email_label: 'E-Mail-Adresse'
87 # twoFactorAuthentication_label: 'Two factor authentication'
88 form_password:
89 old_password_label: 'Altes Kennwort'
90 new_password_label: 'Neues Kennwort'
91 repeat_new_password_label: 'Neues Kennwort wiederholen'
92 form_rules:
93 # if_label: 'if'
94 # then_tag_as_label: 'then tag as'
95 # delete_rule_label: 'delete'
96 # rule_label: 'Rule'
97 # tags_label: 'Tags'
98 # faq:
99 # title: 'FAQ'
100 # tagging_rules_definition_title: 'What does « tagging rules » mean?'
101 # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.'
102 # how_to_use_them_title: 'How do I use them?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
104 # variables_available_title: 'Which variables and operators can I use to write rules?'
105 # variables_available_description: 'The following variables and operators can be used to create tagging rules:'
106 # meaning: 'Meaning'
107 # variable_description:
108 # label: 'Variable'
109 # title: 'Title of the entry'
110 # url: 'URL of the entry'
111 # isArchived: 'Whether the entry is archived or not'
112 # isStarred: 'Whether the entry is starred or not'
113 # content: "The entry's content"
114 # language: "The entry's language"
115 # mimetype: "The entry's mime-type"
116 # readingTime: "The estimated entry's reading time, in minutes"
117 # domainName: 'The domain name of the entry'
118 # operator_description:
119 # label: 'Operator'
120 # less_than: 'Less than...'
121 # strictly_less_than: 'Strictly less than...'
122 # greater_than: 'Greater than...'
123 # strictly_greater_than: 'Strictly greater than...'
124 # equal_to: 'Equal to...'
125 # not_equal_to: 'Not equal to...'
126 # or: 'One rule OR another'
127 # and: 'One rule AND another'
128 # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
129 form_new_user:
130 username_label: 'Benutzername'
131 password_label: 'Kennwort'
132 repeat_new_password_label: 'Neues Kennwort wiederholen'
133 plain_password_label: '????'
134 email_label: 'E-Mail-Adresse'
52 135
53# Entries 136entry:
54'estimated reading time': 'geschätzte Lesezeit' 137 page_titles:
55original: original 138 # unread: 'Unread entries'
56Toggle mark as read: 'Gelesen-Status ändern' 139 # starred: 'Starred entries'
57Toggle favorite: 'Favoriten-Status ändern' 140 # archive: 'Archived entries'
58Delete: 'Löschen' 141 # filtered: 'Filtered entries'
142 list:
143 # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
144 reading_time: 'geschätzte Lesezeit'
145 reading_time_minutes: 'geschätzte Lesezeit: %readingTime% min'
146 reading_time_less_one_minute: 'geschätzte Lesezeit: <small class="inferieur">&lt;</small> 1 min'
147 original_article: 'original'
148 toogle_as_read: 'Gelesen-Status ändern'
149 toogle_as_star: 'Favoriten-Status ändern'
150 delete: 'Löschen'
151 # export_title: 'Export'
152 filters:
153 title: 'Filters'
154 status_label: 'Status'
155 archived_label: 'Archiviert'
156 starred_label: 'Favorisiert'
157 preview_picture_label: 'Vorschaubild vorhanden'
158 preview_picture_help: 'Vorschaubild'
159 language_label: 'Sprache'
160 reading_time:
161 label: 'Lesezeit in Minuten'
162 from: 'von'
163 to: 'bis'
164 domain_label: 'Domain-Name'
165 created_at:
166 label: 'Erstellungsdatum'
167 from: 'von'
168 to: 'bis'
169 action:
170 clear: 'Zurücksetzen'
171 filter: 'Filter'
172 view:
173 left_menu:
174 # back_to_top: 'Back to top'
175 back_to_homepage: 'Zurück'
176 set_as_read: 'Als gelesen markieren'
177 # set_as_unread: 'Mark as unread'
178 set_as_favorite: 'Favorisieren'
179 view_original_article: 'Original-Artikel'
180 # re_fetch_content: 'Re-fetch content'
181 delete: 'Löschen'
182 add_a_tag: 'Tag hinzufügen'
183 share_content: 'Teilen'
184 # share_email_label: 'Email'
185 download: 'Herunterladen'
186 # print: 'Print'
187 problem:
188 label: 'Probleme?'
189 description: 'Erscheint dieser Artikel falsch?'
190 edit_title: 'Titel ändern'
191 original_article: 'original'
192 # annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
193 new:
194 page_title: 'Neuen Artikel speichern'
195 placeholder: 'http://website.com'
196 form_new:
197 url_label: Url
198 edit:
199 # page_title: 'Edit an entry'
200 # title_label: 'Title'
201 # url_label: 'Url'
202 # is_public_label: 'Public'
203 save_label: 'Speichern'
59 204
60# Filters 205about:
61Filters: 'Filter' 206 page_title: 'Über'
62Status: 'Status' 207 top_menu:
63Archived: 'Archiviert' 208 who_behind_wallabag: 'Wer steht hinter wallabag'
64Starred: 'Favorisiert' 209 getting_help: 'Hilfe bekommen'
65Preview picture: 'Vorschaubild' 210 helping: 'wallabag unterstützen'
66Has a preview picture: 'Vorschaubild vorhanden' 211 contributors: 'Contributors'
67Reading time in minutes: 'Lesezeit in Minuten' 212 third_party: 'Third-party libraries'
68from: 'von' 213 who_behind_wallabag:
69to: 'bis' 214 developped_by: 'Entwickelt von'
70website.com: 'website.com' 215 website: 'Webseite'
71Domain name: 'Domain-Name' 216 many_contributors: 'Und vielen anderen Unterstützern ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">auf Github</a>'
72Creation date: 'Erstellungsdatum' 217 project_website: 'Projektwebseite'
73dd/mm/yyyy: 'dd.mm.yyyy' 218 license: 'Lizenz'
74Clear: 'zurücksetzen' 219 version: 'Version'
75Filter: 'Filter' 220 getting_help:
221 documentation: 'Dokumentation'
222 bug_reports: 'Bugs'
223 support: '<a href="https://support.wallabag.org">Auf unserer Support-Webseite</a> oder <a href="https://github.com/wallabag/wallabag/issues">auf GitHub</a>'
224 helping:
225 description: 'wallabag ist kostenlos und Open-Source. Du kannst uns helfen:'
226 by_contributing: 'indem du zu dem Projekt beiträgst:'
227 by_contributing_2: 'ein Issue listet alle unsere Bedürfnisse:'
228 by_paypal: 'via Paypal'
229 contributors:
230 # description: 'Thank you to contributors on wallabag web application'
231 third_party:
232 # description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
233 # package: 'Package'
234 license: 'Lizenz'
76 235
77# About 236howto:
78Who is behind wallabag: "Wer steht hinter wallabag" 237 page_title: 'How-to'
79Getting help: "Hilfe bekommen" 238 # page_description: 'There are several ways to save an article:'
80Helping wallabag: "wallabag unterstützen" 239 top_menu:
81Developed by: "Entwickelt von" 240 browser_addons: 'Browser-Addons'
82website: "Webseite" 241 mobile_apps: 'Apps'
83And many others contributors ♥: "Und vielen anderen Unterstützern ♥" 242 bookmarklet: 'Bookmarklet'
84on GitHub: "auf GitHub" 243 form:
85Project website: "Projektwebseite" 244 description: 'Danke an dieses Formular'
86License: "Lizenz" 245 browser_addons:
87Version: "Version" 246 firefox: 'Firefox-Erweiterung'
88Documentation: "Dokumentation" 247 chrome: 'Chrome-Erweiterung'
89Bug reports: "Bugs" 248 mobile_apps:
90On our support website: "Auf unserer Support-Webseite" 249 android:
91or: "oder" 250 via_f_droid: 'via F-Droid'
92"wallabag is free and opensource. You can help us:": "wallabag ist kostenlos und Open-Source. Du kannst uns helfen:" 251 via_google_play: 'via Google Play'
93"by contributing to the project:": "indem du zu dem Projekt beiträgst:" 252 # ios: 'on the iTunes Store'
94an issue lists all our needs: "ein Issue listet alle unsere Bedürfnisse:" 253 # windows: 'on the Microsoft Store'
95via Paypal: "via PayPal" 254 bookmarklet:
255 description: 'Ziehe diesen Link in deine Lesezeichenleiste:'
96 256
97# Howto 257quickstart:
98Form: Formular 258 # page_title: 'Quickstart'
99Thanks to this form: "Danke an dieses Formular" 259 # intro:
100Browser addons: "Browser-Addons" 260 # title: 'Welcome to wallabag!'
101Mobile apps: "Apps" 261 # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you."
102Bookmarklet: "Bookmarklet" 262 # paragraph_2: 'Follow us!'
103Standard Firefox Add-On: "Firefox-Erweiterung" 263 # configure:
104Chrome Extension: "Chrome-Erweiterung" 264 # title: 'Configure the application'
105download the application: "herunterladen" 265 # language: 'Change language and design'
106"Drag &amp; drop this link to your bookmarks bar:": "Ziehe diesen Link in deine Lesezeichenleiste:" 266 # rss: 'Enable RSS feeds'
267 # tagging_rules: 'Write rules to automatically tag your articles'
268 # admin:
269 # title: 'Administration'
270 # description: 'As an administrator, you have privileges on wallabag. You can:'
271 # new_user: 'Create a new user'
272 # analytics: 'Configure analytics'
273 # sharing: 'Enable some parameters about article sharing'
274 # export: 'Configure export'
275 # import: 'Configure import'
276 # first_steps:
277 # title: 'First steps'
278 # new_article: 'Save your first article'
279 # unread_articles: 'And classify it!'
280 # migrate:
281 # title: 'Migrate from an existing service'
282 # description: "Are you using another service? We'll help you to retrieve your data on wallabag."
283 # pocket: 'Migrate from Pocket'
284 # wallabag_v1: 'Migrate from wallabag v1'
285 # wallabag_v2: 'Migrate from wallabag v2'
286 # developer:
287 # title: 'Developers'
288 # create_application: 'Create your third application'
289 # docs:
290 # title: 'Full documentation'
291 # annotate: 'Annotate your article'
292 # export: 'Convert your articles into ePUB or PDF'
293 # search_filters: 'See how you can look for an article by using search engine and filters'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?'
295 # all_docs: 'And so many other articles!'
296 # support:
297 # title: 'Support'
298 # description: 'If you need some help, we are here for you.'
299 # github: 'On GitHub'
300 # email: 'By email'
301 # gitter: 'On Gitter'
107 302
108# Flash messages 303tag:
109Information updated: "Information aktualisiert" 304 page_title: 'Tags'
110"Config saved. Some parameters will be considered after disconnection.": "Konfiguration gespeichert. Einige Einstellungen werden erst nach einer erneuten Anmeldung übernommen." 305 list:
111RSS information updated: "RSS-Informationen aktualisiert" 306 # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
112Password updated: "Kennwort aktualisiert"
113Entry starred: "Artikel favorisiert"
114Entry unstarred: "Artikel defavorisiert"
115Entry archived: "Artikel archiviert"
116Entry unarchived: "Artikel dearchiviert"
117Entry deleted: "Artikel gelöscht"
118 307
119# Entry 308import:
120Mark as read: 'Als gelesen markieren' 309 # page_title: 'Import'
121Favorite: 'Favorisieren' 310 # page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
122back: 'zurück' 311 # action:
123original article: 'Original-Artikel' 312 # import_contents: 'Import contents'
124Add a tag: 'Tag hinzufügen' 313 # form:
125Share: 'Teilen' 314 # mark_as_read_title: 'Mark all as read?'
126Download: 'Herunterladen' 315 # mark_as_read_label: 'Mark all imported entries as read'
127Does this article appear wrong?: "Erscheint dieser Artikel falsch?" 316 # file_label: 'File'
128Problems?: 'Probleme?' 317 # save_label: 'Upload file'
129Edit title: "Titel ändern" 318 # pocket:
319 # page_title: 'Import > Pocket'
320 # description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag."
321 # config_missing:
322 # description: "Pocket import isn't configured."
323 # admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
324 # user_message: 'Your server admin needs to define an API Key for Pocket.'
325 # authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.'
326 # connect_to_pocket: 'Connect to Pocket and import data'
327 # wallabag_v1:
328 # page_title: 'Import > Wallabag v1'
329 # description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'
330 # how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
331 # wallabag_v2:
332 # page_title: 'Import > Wallabag v2'
333 # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
334
335developer:
336 # page_title: 'Developer'
337 # welcome_message: 'Welcome to the wallabag API'
338 # documentation: 'Documentation'
339 # how_to_first_app: 'How to create my first application'
340 # full_documentation: 'View full API documentation'
341 # clients:
342 # title: 'Clients'
343 # create_new: 'Create a new client'
344 # existing_clients:
345 # title: 'Existing clients'
346 # field_id: 'Client ID'
347 # field_secret: 'Client secret'
348 # field_uris: 'Redirect URIs'
349 # field_grant_types: 'Grant type allowed'
350 # no_client: 'No client yet.'
351 # remove:
352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
354 # action: 'Remove this client'
355 # client:
356 # page_title: 'Developer > New client'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
358 # form:
359 # redirect_uris_label: 'Redirect URIs'
360 # save_label: 'Create a new client'
361 # action_back: 'Back'
362 # client_parameter:
363 # page_title: 'Developer > Client parameters'
364 # page_description: 'Here are your client parameters.'
365 # field_id: 'Client ID'
366 # field_secret: 'Client secret'
367 # back: 'Back'
368 # read_howto: 'Read the howto "Create my first application"'
369 # howto:
370 # page_title: 'Developer > How to create my first application'
371 # description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):'
376 # paragraph_5: 'The API will return a response like this:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:'
378 # paragraph_7: 'This call will return all the entries for your user.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.'
380 # back: 'Back'
381
382validator:
383 # password_must_match: 'The password fields must match.'
384 # password_too_short: 'Password should by at least 8 chars long'
385 # password_wrong_value: 'Wrong value for your current password'
386 # item_per_page_too_high: 'This will certainly kill the app'
387 # rss_limit_too_hight: 'This will certainly kill the app'
388
389flashes:
390 config:
391 notice:
392 config_saved: 'Konfiguration gespeichert. Einige Einstellungen werden erst nach einer erneuten Anmeldung übernommen.'
393 password_updated: 'Kennwort aktualisiert'
394 # password_not_updated_demo: "In demonstration mode, you can't change password for this user."
395 user_updated: 'Information aktualisiert'
396 rss_updated: 'RSS-Informationen aktualisiert'
397 # tagging_rules_updated: 'Tagging rules updated'
398 # tagging_rules_deleted: 'Tagging rule deleted'
399 # user_added: 'User "%username%" added'
400 # rss_token_updated: 'RSS token updated'
401 entry:
402 notice:
403 # entry_already_saved: 'Entry already saved on %date%'
404 # entry_saved: 'Entry saved'
405 # entry_updated: 'Entry updated'
406 # entry_reloaded: 'Entry reloaded'
407 # entry_reload_failed: 'Failed to reload entry'
408 entry_archived: 'Artikel archiviert'
409 entry_unarchived: 'Artikel dearchiviert'
410 entry_starred: 'Artikel favorisiert'
411 entry_unstarred: 'Artikel defavorisiert'
412 entry_deleted: 'Artikel gelöscht'
413 tag:
414 notice:
415 # tag_added: 'Tag added'
416 import:
417 notice:
418 # failed: 'Import failed, please try again.'
419 # failed_on_file: 'Error while processing import. Please verify your import file.'
420 # summary: 'Import summary: %imported% imported, %skipped% already saved.'
421 developer:
422 notice:
423 # client_created: 'New client created.'
424 # client_deleted: 'Client deleted'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
new file mode 100644
index 00000000..1e49d4ba
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
@@ -0,0 +1,424 @@
1security:
2 login:
3 page_title: 'Welcome to wallabag!'
4 keep_logged_in: 'Keep me logged in'
5 forgot_password: 'Forgot your password?'
6 submit: 'Login'
7 register: 'Register'
8 username: 'Username'
9 password: 'Password'
10 cancel: 'Cancel'
11 resetting:
12 description: "Enter your email address below and we'll send you password reset instructions."
13 register:
14 page_title: 'Create an account'
15 go_to_account: 'Go to your account'
16
17menu:
18 left:
19 unread: 'Unread'
20 starred: 'Starred'
21 archive: 'Archive'
22 all_articles: 'All entries'
23 config: 'Config'
24 tags: 'Tags'
25 internal_settings: 'Internal Settings'
26 import: 'Import'
27 howto: 'How to'
28 developer: 'Developer'
29 logout: 'Logout'
30 about: 'About'
31 search: 'Search'
32 save_link: 'Save a link'
33 back_to_unread: 'Back to unread articles'
34 top:
35 add_new_entry: 'Add a new entry'
36 search: 'Search'
37 filter_entries: 'Filter entries'
38 export: 'Export'
39 search_form:
40 input_label: 'Enter your search here'
41
42footer:
43 wallabag:
44 elsewhere: 'Take wallabag with you'
45 social: 'Social'
46 powered_by: 'powered by'
47 about: 'About'
48
49config:
50 page_title: 'Config'
51 tab_menu:
52 settings: 'Settings'
53 rss: 'RSS'
54 user_info: 'User information'
55 password: 'Password'
56 rules: 'Tagging rules'
57 new_user: 'Add a user'
58 form:
59 save: 'Save'
60 form_settings:
61 theme_label: 'Theme'
62 items_per_page_label: 'Items per page'
63 language_label: 'Language'
64 reading_speed:
65 label: 'Reading speed'
66 help_message: 'You can use online tools to estimate your reading speed:'
67 100_word: 'I read ~100 words per minute'
68 200_word: 'I read ~200 words per minute'
69 300_word: 'I read ~300 words per minute'
70 400_word: 'I read ~400 words per minute'
71 form_rss:
72 description: 'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.'
73 token_label: 'RSS token'
74 no_token: 'No token'
75 token_create: 'Create your token'
76 token_reset: 'Regenerate your token'
77 rss_links: 'RSS links'
78 rss_link:
79 unread: 'unread'
80 starred: 'starred'
81 archive: 'archived'
82 rss_limit: 'Number of items in the feed'
83 form_user:
84 two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
85 name_label: 'Name'
86 email_label: 'Email'
87 twoFactorAuthentication_label: 'Two factor authentication'
88 form_password:
89 old_password_label: 'Current password'
90 new_password_label: 'New password'
91 repeat_new_password_label: 'Repeat new password'
92 form_rules:
93 if_label: 'if'
94 then_tag_as_label: 'then tag as'
95 delete_rule_label: 'delete'
96 rule_label: 'Rule'
97 tags_label: 'Tags'
98 faq:
99 title: 'FAQ'
100 tagging_rules_definition_title: 'What does « tagging rules » mean?'
101 tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.'
102 how_to_use_them_title: 'How do I use them?'
103 how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
104 variables_available_title: 'Which variables and operators can I use to write rules?'
105 variables_available_description: 'The following variables and operators can be used to create tagging rules:'
106 meaning: 'Meaning'
107 variable_description:
108 label: 'Variable'
109 title: 'Title of the entry'
110 url: 'URL of the entry'
111 isArchived: 'Whether the entry is archived or not'
112 isStarred: 'Whether the entry is starred or not'
113 content: "The entry's content"
114 language: "The entry's language"
115 mimetype: "The entry's mime-type"
116 readingTime: "The estimated entry's reading time, in minutes"
117 domainName: 'The domain name of the entry'
118 operator_description:
119 label: 'Operator'
120 less_than: 'Less than...'
121 strictly_less_than: 'Strictly less than...'
122 greater_than: 'Greater than...'
123 strictly_greater_than: 'Strictly greater than...'
124 equal_to: 'Equal to...'
125 not_equal_to: 'Not equal to...'
126 or: 'One rule OR another'
127 and: 'One rule AND another'
128 matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
129 form_new_user:
130 username_label: 'Username'
131 password_label: 'Password'
132 repeat_new_password_label: 'Repeat new password'
133 plain_password_label: '????'
134 email_label: 'Email'
135
136entry:
137 page_titles:
138 unread: 'Unread entries'
139 starred: 'Starred entries'
140 archive: 'Archived entries'
141 filtered: 'Filtered entries'
142 list:
143 number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
144 reading_time: 'estimated reading time'
145 reading_time_minutes: 'estimated reading time: %readingTime% min'
146 reading_time_less_one_minute: 'estimated reading time: <small class="inferieur">&lt;</small> 1 min'
147 original_article: 'original'
148 toogle_as_read: 'Toggle mark as read'
149 toogle_as_star: 'Toggle favorite'
150 delete: 'Delete'
151 export_title: 'Export'
152 filters:
153 title: 'Filters'
154 status_label: 'Status'
155 archived_label: 'Archived'
156 starred_label: 'Starred'
157 preview_picture_label: 'Has a preview picture'
158 preview_picture_help: 'Preview picture'
159 language_label: 'Language'
160 reading_time:
161 label: 'Reading time in minutes'
162 from: 'from'
163 to: 'to'
164 domain_label: 'Domain name'
165 created_at:
166 label: 'Creation date'
167 from: 'from'
168 to: 'to'
169 action:
170 clear: 'Clear'
171 filter: 'Filter'
172 view:
173 left_menu:
174 back_to_top: 'Back to top'
175 back_to_homepage: 'Back'
176 set_as_read: 'Mark as read'
177 set_as_unread: 'Mark as unread'
178 set_as_favorite: 'Favorite'
179 view_original_article: 'Orignal article'
180 re_fetch_content: 'Re-fetch content'
181 delete: 'Delete'
182 add_a_tag: 'Add a tag'
183 share_content: 'Share'
184 share_email_label: 'Email'
185 download: 'Download'
186 print: 'Print'
187 problem:
188 label: 'Problems?'
189 description: 'Does this article appear wrong?'
190 edit_title: 'Edit title'
191 original_article: 'original'
192 annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
193 new:
194 page_title: 'Save new entry'
195 placeholder: 'http://website.com'
196 form_new:
197 url_label: Url
198 edit:
199 page_title: 'Edit an entry'
200 title_label: 'Title'
201 url_label: 'Url'
202 is_public_label: 'Public'
203 save_label: 'Save'
204
205about:
206 page_title: 'About'
207 top_menu:
208 who_behind_wallabag: 'Who is behind wallabag'
209 getting_help: 'Getting help'
210 helping: 'Helping wallabag'
211 contributors: 'Contributors'
212 third_party: 'Third-party libraries'
213 who_behind_wallabag:
214 developped_by: 'Developed by'
215 website: 'website'
216 many_contributors: 'And many others contributors ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">on Github</a>'
217 project_website: 'Project website'
218 license: 'License'
219 version: 'Version'
220 getting_help:
221 documentation: 'Documentation'
222 bug_reports: 'Bug reports'
223 support: '<a href="https://support.wallabag.org">On our support website</a> or <a href="https://github.com/wallabag/wallabag/issues">on GitHub</a>'
224 helping:
225 description: 'wallabag is free and opensource. You can help us:'
226 by_contributing: 'by contributing to the project:'
227 by_contributing_2: 'an issue lists all our needs'
228 by_paypal: 'via Paypal'
229 contributors:
230 description: 'Thank you to contributors on wallabag web application'
231 third_party:
232 description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
233 package: 'Package'
234 license: 'License'
235
236howto:
237 page_title: 'How to'
238 page_description: 'There are several ways to save an article:'
239 top_menu:
240 browser_addons: 'Browser addons'
241 mobile_apps: 'Mobile apps'
242 bookmarklet: 'Bookmarklet'
243 form:
244 description: 'Thanks to this form'
245 browser_addons:
246 firefox: 'Standard Firefox Add-On'
247 chrome: 'Chrome Extension'
248 mobile_apps:
249 android:
250 via_f_droid: 'via F-Droid'
251 via_google_play: 'via Google Play'
252 ios: 'on the iTunes Store'
253 windows: 'on the Microsoft Store'
254 bookmarklet:
255 description: 'Drag & drop this link to your bookmarks bar:'
256
257quickstart:
258 page_title: 'Quickstart'
259 intro:
260 title: 'Welcome to wallabag!'
261 paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you."
262 paragraph_2: 'Follow us!'
263 configure:
264 title: 'Configure the application'
265 language: 'Change language and design'
266 rss: 'Enable RSS feeds'
267 tagging_rules: 'Write rules to automatically tag your articles'
268 admin:
269 title: 'Administration'
270 description: 'As an administrator, you have privileges on wallabag. You can:'
271 new_user: 'Create a new user'
272 analytics: 'Configure analytics'
273 sharing: 'Enable some parameters about article sharing'
274 export: 'Configure export'
275 import: 'Configure import'
276 first_steps:
277 title: 'First steps'
278 new_article: 'Save your first article'
279 unread_articles: 'And classify it!'
280 migrate:
281 title: 'Migrate from an existing service'
282 description: "Are you using another service? We'll help you to retrieve your data on wallabag."
283 pocket: 'Migrate from Pocket'
284 wallabag_v1: 'Migrate from wallabag v1'
285 wallabag_v2: 'Migrate from wallabag v2'
286 developer:
287 title: 'Developers'
288 create_application: 'Create your third application'
289 docs:
290 title: 'Full documentation'
291 annotate: 'Annotate your article'
292 export: 'Convert your articles into ePUB or PDF'
293 search_filters: 'See how you can look for an article by using search engine and filters'
294 fetching_errors: 'What can I do if an article encounters errors during fetching?'
295 all_docs: 'And so many other articles!'
296 support:
297 title: 'Support'
298 description: 'If you need some help, we are here for you.'
299 github: 'On GitHub'
300 email: 'By email'
301 gitter: 'On Gitter'
302
303tag:
304 page_title: 'Tags'
305 list:
306 number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
307
308import:
309 page_title: 'Import'
310 page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
311 action:
312 import_contents: 'Import contents'
313 form:
314 mark_as_read_title: 'Mark all as read?'
315 mark_as_read_label: 'Mark all imported entries as read'
316 file_label: 'File'
317 save_label: 'Upload file'
318 pocket:
319 page_title: 'Import > Pocket'
320 description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag."
321 config_missing:
322 description: "Pocket import isn't configured."
323 admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
324 user_message: 'Your server admin needs to define an API Key for Pocket.'
325 authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.'
326 connect_to_pocket: 'Connect to Pocket and import data'
327 wallabag_v1:
328 page_title: 'Import > Wallabag v1'
329 description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'
330 how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
331 wallabag_v2:
332 page_title: 'Import > Wallabag v2'
333 description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
334
335developer:
336 page_title: 'Developer'
337 welcome_message: 'Welcome to the wallabag API'
338 documentation: 'Documentation'
339 how_to_first_app: 'How to create my first application'
340 full_documentation: 'View full API documentation'
341 clients:
342 title: 'Clients'
343 create_new: 'Create a new client'
344 existing_clients:
345 title: 'Existing clients'
346 field_id: 'Client ID'
347 field_secret: 'Client secret'
348 field_uris: 'Redirect URIs'
349 field_grant_types: 'Grant type allowed'
350 no_client: 'No client yet.'
351 remove:
352 warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
353 warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
354 action: 'Remove this client'
355 client:
356 page_title: 'Developer > New client'
357 page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
358 form:
359 redirect_uris_label: 'Redirect URIs'
360 save_label: 'Create a new client'
361 action_back: 'Back'
362 client_parameter:
363 page_title: 'Developer > Client parameters'
364 page_description: 'Here are your client parameters.'
365 field_id: 'Client ID'
366 field_secret: 'Client secret'
367 back: 'Back'
368 read_howto: 'Read the howto "Create my first application"'
369 howto:
370 page_title: 'Developer > How to create my first application'
371 description:
372 paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.'
373 paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.'
374 paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.'
375 paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):'
376 paragraph_5: 'The API will return a response like this:'
377 paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:'
378 paragraph_7: 'This call will return all the entries for your user.'
379 paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.'
380 back: 'Back'
381
382validator:
383 password_must_match: 'The password fields must match.'
384 password_too_short: 'Password should by at least 8 chars long'
385 password_wrong_value: 'Wrong value for your current password'
386 item_per_page_too_high: 'This will certainly kill the app'
387 rss_limit_too_hight: 'This will certainly kill the app'
388
389flashes:
390 config:
391 notice:
392 config_saved: 'Config saved. Some parameters will be considered after disconnection.'
393 password_updated: 'Password updated'
394 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
395 user_updated: 'Information updated'
396 rss_updated: 'RSS information updated'
397 tagging_rules_updated: 'Tagging rules updated'
398 tagging_rules_deleted: 'Tagging rule deleted'
399 user_added: 'User "%username%" added'
400 rss_token_updated: 'RSS token updated'
401 entry:
402 notice:
403 entry_already_saved: 'Entry already saved on %date%'
404 entry_saved: 'Entry saved'
405 entry_updated: 'Entry updated'
406 entry_reloaded: 'Entry reloaded'
407 entry_reload_failed: 'Failed to reload entry'
408 entry_archived: 'Entry archived'
409 entry_unarchived: 'Entry unarchived'
410 entry_starred: 'Entry starred'
411 entry_unstarred: 'Entry unstarred'
412 entry_deleted: 'Entry deleted'
413 tag:
414 notice:
415 tag_added: 'Tag added'
416 import:
417 notice:
418 failed: 'Import failed, please try again.'
419 failed_on_file: 'Error while processing import. Please verify your import file.'
420 summary: 'Import summary: %imported% imported, %skipped% already saved.'
421 developer:
422 notice:
423 client_created: 'New client created.'
424 client_deleted: 'Client deleted'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
index b666f2df..9b32d038 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
@@ -1,242 +1,424 @@
1#Login 1security:
2Keep me logged in: 'Mantenme conectado' 2 login:
3Forgot your password?: '¿Ha olvidado su contraseña?' 3 page_title: 'Bienvenido a wallabag !'
4Login: 'Conectarse' 4 keep_logged_in: 'Mantenme conectado'
5Back to login: 'Revenir au formulaire de connexion' 5 forgot_password: '¿Ha olvidado su contraseña?'
6Send: 'Envíar' 6 submit: 'Conectarse'
7"Enter your email address below and we'll send you password reset instructions.": "Introduce tu dirección de email y le enviaremos las instrucciones para resetear la contraseña" 7 register: 'Registrarse'
8Register: 'Registrarse' 8 username: 'Nombre de usuario'
9 password: 'Contraseña'
10 # cancel: 'Cancel'
11 resetting:
12 description: "Introduce tu dirección de email y le enviaremos las instrucciones para resetear la contraseña"
13 register:
14 # page_title: 'Create an account'
15 # go_to_account: 'Go to your account'
9 16
10# Menu 17menu:
11unread: 'Sin leer' 18 left:
12starred: 'Favoritos' 19 unread: 'Sin leer'
13archive: 'Archivo' 20 starred: 'Favoritos'
14all: 'Todos los artículos' 21 archive: 'Archivo'
15tags: 'Tags' 22 all_articles: 'Todos los artículos'
16config: 'Configuración' 23 config: 'Configuración'
17internal settings: 'Configuración interna' 24 tags: 'Tags'
18import: 'Importar' 25 internal_settings: 'Configuración interna'
19howto: 'Ayuda' 26 import: 'Importar'
20logout: 'Desconectarse' 27 howto: 'Ayuda'
21Filtered: 'Articulos filtrados' 28 # developer: 'Developer'
22About: 'Acerca de' 29 logout: 'Desconectarse'
30 about: 'Acerca de'
31 search: 'Buscar'
32 # save_link: 'Save a link'
33 back_to_unread: 'Volver a los artículos sin leer'
34 top:
35 add_new_entry: 'Añadir un nuevo artículo'
36 search: 'Buscar'
37 filter_entries: 'Filtrar los artículos'
38 export: 'Exportar'
39 search_form:
40 input_label: 'Introduce tu búsqueda aquí'
23 41
24# Header 42footer:
25Back to unread articles: 'Volver a los artículos sin leer' 43 wallabag:
26Add a new entry: 'Añadir un nuevo artículo' 44 elsewhere: 'Llevate wallabag contigo'
27Search: 'Buscar' 45 social: 'Social'
28Filter entries: 'Filtrar los artículos' 46 # powered_by: 'powered by'
29Enter your search here: 'Introduce tu búsqueda aquí' 47 about: 'Acerca de'
30Save new entry: 'Guardar un nuevo artículo'
31Export: 'Exportar'
32 48
33# Config screen 49config:
34Settings: 'Configuración' 50 page_title: 'Configuración'
35User information: 'Información de usuario' 51 tab_menu:
36Password: 'Contraseña' 52 settings: 'Configuración'
37RSS: 'RSS' 53 rss: 'RSS'
38Add a user: 'Añadir un usuario' 54 user_info: 'Información de usuario'
39Theme: 'Tema' 55 password: 'Contraseña'
40Items per page: "Número de artículos por página" 56 rules: 'Reglas de etiquetado automáticas'
41Language: 'Idioma' 57 new_user: 'Añadir un usuario'
42Save: 'Enregistrer' 58 form:
43RSS token: 'RSS token' 59 save: 'Guardar'
44RSS token updated: 'RSS token actualizado ' 60 form_settings:
45Name: 'Nombre' 61 theme_label: 'Tema'
46Email: 'Direccion e-mail' 62 items_per_page_label: 'Número de artículos por página'
47No token: 'Aucun jeton généré' 63 language_label: 'Idioma'
48Reset your token: 'Resetear token' 64 reading_speed:
49Create your token: 'Crear token' 65 # label: 'Reading speed'
50Rss limit: "Límite de artículos en feed RSS" 66 # help_message: 'You can use online tools to estimate your reading speed:'
51RSS links: 'URL de su feed RSS' 67 # 100_word: 'I read ~100 words per minute'
52"RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.": "Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Necesita generar un token primero" 68 # 200_word: 'I read ~200 words per minute'
53Old password: 'Contraseña actual' 69 # 300_word: 'I read ~300 words per minute'
54New password: 'Nueva contraseña' 70 # 400_word: 'I read ~400 words per minute'
55Repeat new password: 'Confirmar la nueva contraseña' 71 form_rss:
56Username: "Nombre de usuario" 72 description: 'Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Necesita generar un token primero'
57Two factor authentication: "Autentificación de dos factores" 73 token_label: 'RSS token'
58"Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion": "Con la autentificación de dos factores recibirá código mediante email en cada nueva conexión que no sea de confianza" 74 # no_token: 'No token'
75 token_create: 'Crear token'
76 token_reset: 'Resetear token'
77 rss_links: 'URL de su feed RSS'
78 rss_link:
79 unread: 'sin leer'
80 starred: 'favoritos'
81 archive: 'archivo'
82 rss_limit: 'Límite de artículos en feed RSS'
83 form_user:
84 two_factor_description: "Con la autentificación de dos factores recibirá código mediante email en cada nueva conexión que no sea de confianza"
85 name_label: 'Nombre'
86 email_label: 'Direccion e-mail'
87 twoFactorAuthentication_label: 'Autentificación de dos factores'
88 form_password:
89 old_password_label: 'Contraseña actual'
90 new_password_label: 'Nueva contraseña'
91 repeat_new_password_label: 'Confirmar la nueva contraseña'
92 form_rules:
93 # if_label: 'if'
94 # then_tag_as_label: 'then tag as'
95 # delete_rule_label: 'delete'
96 rule_label: 'Regla'
97 tags_label: 'Tags'
98 faq:
99 title: 'FAQ'
100 tagging_rules_definition_title: '¿Qué significa reglas de etiquetado autómaticas?'
101 tagging_rules_definition_description: 'Son las reglas usadas por Wallabag para etiquetar automáticamente los nuevos artículos.<br />Cáda vez que un nuevo artículo es añadido, todas las reglas de etiquetado automáticas serán usadas para etiquetarlo, ayudandote a clasificar automáticamente los artículos.'
102 how_to_use_them_title: '¿Cómo se utilizan?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
104 variables_available_title: '¿Qué variables y operadores se pueden utilizar para escribir las reglas?'
105 variables_available_description: 'Las siguientes variables y operadores se pueden utilizar para crear las reglas de etiquetado automáticas:'
106 meaning: 'Significado'
107 variable_description:
108 label: 'Variable'
109 title: 'Titúlo del artículo'
110 url: 'URL del artículo'
111 isArchived: 'El artículo está guardado o no'
112 isStarred: 'Si el artículo es un favorito o no'
113 content: "El contenido del artículo"
114 language: "El idoma del artículo"
115 mimetype: "Tipo MIME del artículo"
116 readingTime: "El tiempo estimado de lectura del artículo, en minutos"
117 domainName: 'El dominio del artículo'
118 operator_description:
119 label: 'Operador'
120 less_than: 'Menos que…'
121 strictly_less_than: 'Estrictámente menos que…'
122 greater_than: 'Más que…'
123 strictly_greater_than: 'Estrictámente mas que…'
124 equal_to: 'Egual a…'
125 not_equal_to: 'Diferente de…'
126 or: 'Una regla O otra'
127 and: 'Una regla Y la otra'
128 matches: 'Prueba si un <i>sujeto</i> corresponde a una <i>busqueda</i> (insensible a mayusculas).<br />Ejemplo : <code>título coincide "football"</code>'
129 form_new_user:
130 username_label: 'Nombre de usuario'
131 password_label: 'Contraseña'
132 repeat_new_password_label: 'Confirmar la nueva contraseña'
133 plain_password_label: '????'
134 email_label: 'Email'
59 135
60# Tagging rules 136entry:
61Tagging rules: "Reglas de etiquetado automáticas" 137 page_titles:
62What does « tagging rules » mean?: "¿Qué significa reglas de etiquetado autómaticas?" 138 # unread: 'Unread entries'
63"They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.": "Son las reglas usadas por Wallabag para etiquetar automáticamente los nuevos artículos.<br />Cáda vez que un nuevo artículo es añadido, todas las reglas de etiquetado automáticas serán usadas para etiquetarlo, ayudandote a clasificar automáticamente los artículos." 139 # starred: 'Starred entries'
64How do I use them?: "¿Cómo se utilizan?" 140 # archive: 'Archived entries'
65"Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = \"github.com\"</i> » then tag as « <i>long reading, github </i> »": "Imaginons que voulez attribuer aux nouveaux articles le tag « <i>lecture courte</i> » lorsque le temps de lecture est inférieur à 3 minutes.<br />Dans ce cas, vous devriez mettre « readingTime &lt;= 3 » dans le champ <i>Règle</i> et « <i>lecture courte</i> » dans le champ <i>Tag</i>.<br />Plusieurs tags peuvent être ajoutés simultanément en les séparant par des virgules : « <i>lecture courte, à lire</i> »<br />Des règles complexes peuvent être créées en utilisant des opérateurs prédéfinis: si « <i>readingTime &gt;= 5 AND domainName = \"github.com\"</i> » alors attribuer les tags « <i>lecteur longue, github </i> »" 141 # filtered: 'Filtered entries'
66Which variables and operators can I use to write rules?: "¿Qué variables y operadores se pueden utilizar para escribir las reglas?" 142 list:
67The following variables and operators can be used to create tagging rules:: "Las siguientes variables y operadores se pueden utilizar para crear las reglas de etiquetado automáticas:" 143 number_on_the_page: '{0} No hay artículos.|{1} Hay un artículo.|]1,Inf[ Hay %count% artículos.'
68Variable: "Variable" 144 reading_time: 'tiempo estimado de lectura'
69Meaning: "Significado" 145 reading_time_minutes: 'tiempo estimado de lectura: %readingTime% min'
70Operator: "Operador" 146 reading_time_less_one_minute: 'tiempo estimado de lectura: <small class="inferieur">&lt;</small> 1 min'
71Title of the entry: "Titúlo del artículo" 147 original_article: 'original'
72Less than…: "Menos que…" 148 toogle_as_read: 'Marcar cómo leído/ no leído'
73URL of the entry: "URL del artículo" 149 toogle_as_star: 'Marcar cómo favorito/ no favorito'
74Strictly less than…: "Estrictámente menos que…" 150 delete: 'Suprimir'
75Whether the entry is archived or not: "El artículo está guardado o no" 151 export_title: 'Exportar'
76Greater than…: "Más que…" 152 filters:
77Whether the entry is starred or not: "Si el artículo es un favorito o no" 153 title: 'Filtros'
78Strictly greater than…: "Estrictámente mas que…" 154 status_label: 'Estatus'
79The entry's content: "El contenido del artículo" 155 archived_label: 'Archivado'
80Equal to…: "Egual a…" 156 starred_label: 'Favorito'
81The entry's language: "El idoma del artículo" 157 preview_picture_label: 'Hay una foto'
82Not equal to…: "Diferente de…" 158 preview_picture_help: 'Foto de preview'
83The entry's mime-type: "Tipo MIME del artículo" 159 language_label: 'Idioma'
84One rule or another: "Una regla o otra" 160 reading_time:
85The estimated entry's reading time, in minutes: "El tiempo estimado de lectura del artículo, en minutos" 161 label: 'Duración de lectura en minutos'
86One rule and another: "Una regla y la otra" 162 from: 'de'
87The domain name of the entry: "El dominio del artículo" 163 to: 'a'
88"Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches \"football\"</code>": "Prueba si un <i>sujeto</i> corresponde a una <i>busqueda</i> (insensible a mayusculas).<br />Ejemplo : <code>título coincide \"football\"</code>" 164 domain_label: 'Nombre de dominio'
89Rule: "Regla" 165 created_at:
90FAQ: "FAQ" 166 label: 'Fecha de creación'
167 from: 'de'
168 to: 'a'
169 action:
170 clear: 'Limpiar'
171 filter: 'Filtrar'
172 view:
173 left_menu:
174 # back_to_top: 'Back to top'
175 back_to_homepage: 'Volver'
176 set_as_read: 'Marcar como leído'
177 # set_as_unread: 'Mark as unread'
178 set_as_favorite: 'Marcar cómo favorito'
179 view_original_article: 'Artículo original'
180 re_fetch_content: 'Redescargar el contenido'
181 delete: 'Suprimir'
182 add_a_tag: 'Añadir una etiqueta'
183 share_content: 'Compartir'
184 share_email_label: 'Direccion e-mail'
185 download: 'Descargar'
186 # print: 'Print'
187 problem:
188 label: '¿Algún problema?'
189 description: '¿Este artículo no se muestra bien?'
190 edit_title: 'Modificar el título'
191 original_article: 'original'
192 annotations_on_the_entry: '{0} Sin anotaciones|{1} Una anotación|]1,Inf[ %nbAnnotations% anotaciones'
193 new:
194 page_title: 'Guardar un nuevo artículo'
195 placeholder: 'http://website.com'
196 form_new:
197 url_label: Url
198 edit:
199 page_title: 'Editar una artículo'
200 title_label: 'Título'
201 url_label: 'Url'
202 is_public_label: 'Es Público'
203 save_label: 'Guardar'
91 204
92# Entries 205about:
93"estimated reading time: %readingTime% min": "tiempo estimado de lectura: %readingTime% min" 206 page_title: 'Acerca de'
94"estimated reading time: %inferior% 1 min": "tiempo estimado de lectura: %inferior% 1 min" 207 top_menu:
95original: "original" 208 who_behind_wallabag: 'Equipo de desarrollo de wallabag'
96Toggle mark as read: 'Marcar cómo leído/ no leído' 209 getting_help: 'Conseguir ayuda'
97Toggle favorite: 'Marcar cómo favorito/ no favorito' 210 helping: 'Ayudar a wallabag'
98Delete: 'Suprimir' 211 contributors: 'Contribuidores'
99"{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.": "{0} No hay artículos.|{1} Hay un artículo.|]1,Inf[ Hay %count% artículos." 212 third_party: 'Librerías de terceeros'
100http://website: "http://website" 213 who_behind_wallabag:
101"{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations": "{0} Sin anotaciones|{1} Una anotación|]1,Inf[ %nbAnnotations% anotaciones" 214 developped_by: 'Desarrollado por'
215 website: 'Sitio web'
216 many_contributors: 'Y muchos otros contribuidores ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">en Github</a>'
217 project_website: 'Web del proyecto'
218 license: 'Licencia'
219 version: 'Version'
220 getting_help:
221 documentation: 'Documentación'
222 bug_reports: 'Reporte de errores'
223 support: '<a href="https://support.wallabag.org">En nuestra web de soporte website</a> o <a href="https://github.com/wallabag/wallabag/issues">en GitHub</a>'
224 helping:
225 description: 'wallabag es libre y gratuito. Usted puede ayudarnos :'
226 by_contributing: 'contribuyendo al proyecto :'
227 by_contributing_2: 'nuestras necesidades están en un ticket'
228 by_paypal: 'via Paypal'
229 contributors:
230 description: 'Gradias a los contribuidores de la aplicación web de wallabag'
231 third_party:
232 description: 'Aquí está la lista de las dependencias utilizadas por wallabag (con sus licencias) :'
233 package: 'Paquete'
234 license: 'Licencia'
102 235
103# Edit entry 236howto:
104Edit an entry: "Editar una artículo" 237 page_title: 'Ayuda'
105Title: "Título" 238 # page_description: 'There are several ways to save an article:'
106Is public: "Es Público" 239 top_menu:
240 browser_addons: 'Extensiones de navigador'
241 mobile_apps: 'Applicaciones para smartphone'
242 bookmarklet: 'Bookmarklet'
243 form:
244 description: 'Gracias a este formulario'
245 browser_addons:
246 firefox: 'Extensión Firefox'
247 chrome: 'Extensión Chrome'
248 mobile_apps:
249 android:
250 via_f_droid: 'via F-Droid'
251 via_google_play: 'via Google Play'
252 # ios: 'on the iTunes Store'
253 # windows: 'on the Microsoft Store'
254 bookmarklet:
255 description: 'Desplazar y soltar este link en la barra de marcadores :'
107 256
108# tag 257quickstart:
109Tags: Tags 258 page_title: 'Comienzo rápido'
110"{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.": "{0} No hay ningun tag.|{1} Hay un tag.|]1,Inf[ Hay %count% tags." 259 intro:
260 title: 'Bienvenido a wallabag !'
261 paragraph_1: "Le acompañaremos a su visita de wallabag y le mostraremos algunas características que le pueden interesar."
262 paragraph_2: '¡Siganos!'
263 configure:
264 title: 'Configure la aplicación'
265 language: 'Cambie el idoma y el diseño de la aplicación'
266 rss: 'Activar los feeds RSS'
267 # tagging_rules: 'Write rules to automatically tag your articles'
268 admin:
269 # title: 'Administration'
270 # description: 'As an administrator, you have privileges on wallabag. You can:'
271 # new_user: 'Create a new user'
272 # analytics: 'Configure analytics'
273 # sharing: 'Enable some parameters about article sharing'
274 # export: 'Configure export'
275 # import: 'Configure import'
276 first_steps:
277 title: 'Prieros pasos'
278 new_article: 'Guarde su primer artículo'
279 unread_articles: '¡Y clasifiquelo!'
280 migrate:
281 title: 'Migrar de un servicio existente'
282 description: "¿Está usando otro servicio? Le ayudaremos a migrar sus datos a wallabag."
283 pocket: 'Migrar desde Pocket'
284 wallabag_v1: 'Migrar desde wallabag v1'
285 wallabag_v2: 'Migrar desde wallabag v2'
286 developer:
287 # title: 'Developers'
288 # create_application: 'Create your third application'
289 docs:
290 title: 'Documentación completa'
291 # annotate: 'Annotate your article'
292 export: 'Convierta sus artículos a ePub o a PDF'
293 search_filters: 'Aprenda a utilizar el buscador y los filtros para encontrar el artículo que le interese'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?'
295 all_docs: '¡Y muchos más artículos!'
296 support:
297 title: 'Soporte'
298 description: 'Sí necesita ayuda, estamos disponibles para usted.'
299 github: 'En GitHub'
300 email: 'Por email'
301 gitter: 'En Gitter'
111 302
112# Filters 303tag:
113Filters: 'Filtros' 304 page_title: 'Tags'
114Status: 'Estatus' 305 list:
115Archived: 'Archivado' 306 number_on_the_page: '{0} No hay ningun tag.|{1} Hay un tag.|]1,Inf[ Hay %count% tags.'
116Starred: 'Favorito'
117Preview picture: 'Foto de preview'
118Has a preview picture: 'Hay una foto'
119Reading time in minutes: 'Duración de lectura en minutos'
120from: 'de'
121to: 'a'
122website.com: 'website.com'
123Domain name: 'Nombre de dominio'
124Creation date: 'Fecha de creación'
125dd/mm/yyyy: 'dd/mm/aaaa'
126Clear: 'Limpiar'
127Filter: 'Filtrar'
128website.com: "website.com"
129 307
130# About 308import:
131About: "Acerca de" 309 page_title: 'Importar'
132Who is behind wallabag: "Equipo de desarrollo de wallabag" 310 page_description: 'Bienvenido al útil de migración de wallabag. Seleccione el servicio previo del que usted quiera migrar.'
133Getting help: "Conseguir ayuda" 311 action:
134Helping wallabag: "Ayudar a wallabag" 312 import_contents: 'Importar los contenidos'
135Developed by: "Desarrollado por" 313 form:
136website: "Sitio web" 314 # mark_as_read_title: 'Mark all as read?'
137And many others contributors ♥: "Y muchos otros contribuidores ♥" 315 # mark_as_read_label: 'Mark all imported entries as read'
138on GitHub: "en GitHub" 316 file_label: 'Fichero'
139Project website: "Web del proyecto" 317 save_label: 'Importar el fichero'
140License: "Licencia" 318 pocket:
141Version: "Versión" 319 page_title: 'Importar > Pocket'
142Documentation: "Documentación" 320 description: "Va a importar sus datos de Pocket. Pocket no nos permite descargar el contenido de su servicio, así que el contenido de cada artículo será redescargado por wallabag."
143Bug reports: "Reporte de errores" 321 config_missing:
144On our support website: "En nuestra web de soporte" 322 description: "La importación de Pocket no está configurada."
145or: "o" 323 admin_message: 'Debe definir %keyurls%una clava del API Pocket%keyurle%.'
146"wallabag is free and opensource. You can help us:": "wallabag es libre y gratuito. Usted puede ayudarnos :" 324 user_message: 'El administrador de vuestro servidor debe definir una clave API Pocket.'
147"by contributing to the project:": "contribuyendo al proyecto :" 325 authorize_message: 'Puedes importar sus datos desde su cuenta de Pocket. Sólo tienes que pulsar en el botón para autrizar que wallabag se conecte a getpocket.com.'
148an issue lists all our needs: "nuestras necesidades están en un ticket" 326 connect_to_pocket: 'Conectese a Pocket para importar los datos'
149via Paypal: "via Paypal" 327 wallabag_v1:
150Take wallabag with you: "Llevate wallabag contigo" 328 page_title: 'Importar > Wallabag v1'
151Social: "Social" 329 description: 'Va a importar sus artículos de wallabag v1. En su configuración de wallabag v1, pulse sobre "Exportar JSON" dentro de la sección "Exportar sus datos de wallabag". Usted tendrá un fichero "wallabag-export-1-xxxx-xx-xx.json".'
152powered by: "propulsé par" 330 how_to: 'Seleccione el fichero de su exportación de wallabag v1 y puelse en el botón para subirla y importarla.'
153Contributors: "Contribuidores" 331 wallabag_v2:
154Thank you to contributors on wallabag web application: "Gradias a los contribuidores de la aplicación web de wallabag" 332 page_title: 'Importar > Wallabag v2'
155Third-party libraries: "Librerías de terceeros" 333 description: 'Va a importar sus artículos de otra instancia de wallabag v2. Vaya a Todos los artículos, entonces, en la barra lateral, clickee en "JSON". Usted tendrá un fichero "All articles.json"'
156"Here are the list of third-party libraries used in wallabag (with their licenses):": "Aquí está la lista de las dependencias utilizadas por wallabag (con sus licencias):"
157Package: Paquete
158License: Licencia
159 334
160# Howto 335developer:
161Form: "Formulario" 336 # page_title: 'Developer'
162Thanks to this form: "Gracias a este formulario" 337 # welcome_message: 'Welcome to the wallabag API'
163Browser addons: "Extensiones de navigador" 338 # documentation: 'Documentation'
164Mobile apps: "Applicaciones para smartphone" 339 # how_to_first_app: 'How to create my first application'
165Bookmarklet: "Bookmarklet" 340 # full_documentation: 'View full API documentation'
166Standard Firefox Add-On: "Extensión Firefox" 341 # clients:
167Chrome Extension: "Extensión Chrome" 342 # title: 'Clients'
168download the application: "descargar la aplicación" 343 # create_new: 'Create a new client'
169"Drag &amp; drop this link to your bookmarks bar:": "Desplazar y soltar este link en la barra de marcadores :" 344 # existing_clients:
345 # title: 'Existing clients'
346 # field_id: 'Client ID'
347 # field_secret: 'Client secret'
348 # field_uris: 'Redirect URIs'
349 # field_grant_types: 'Grant type allowed'
350 # no_client: 'No client yet.'
351 # remove:
352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
354 # action: 'Remove this client'
355 # client:
356 # page_title: 'Developer > New client'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
358 # form:
359 # redirect_uris_label: 'Redirect URIs'
360 # save_label: 'Create a new client'
361 # action_back: 'Back'
362 # client_parameter:
363 # page_title: 'Developer > Client parameters'
364 # page_description: 'Here are your client parameters.'
365 # field_id: 'Client ID'
366 # field_secret: 'Client secret'
367 # back: 'Back'
368 # read_howto: 'Read the howto "Create my first application"'
369 # howto:
370 # page_title: 'Developer > How to create my first application'
371 # description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):'
376 # paragraph_5: 'The API will return a response like this:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:'
378 # paragraph_7: 'This call will return all the entries for your user.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.'
380 # back: 'Back'
170 381
171# Flash messages 382validator:
172Information updated: "Su información personal ha sido actualizada" 383 password_must_match: 'Las contraseñas no coinciden'
173"Config saved. Some parameters will be considered after disconnection.": "Configuración guardada. Algunos parámetros serán recargados cuando se vuelva a conectar." 384 password_too_short: 'La contraseña debe tener al menos 8 carácteres'
174RSS information updated: "La configuración de los feeds RSS ha sido actualizada" 385 # password_wrong_value: 'Wrong value for your current password'
175Password updated: "Contraseña actualizada" 386 # item_per_page_too_high: 'This will certainly kill the app'
176Entry starred: "Artículo guardado en los favoritos" 387 # rss_limit_too_hight: 'This will certainly kill the app'
177Entry unstarred: "Artículo retirado de los favoritos"
178Entry archived: "Artículo archivado"
179Entry unarchived: "Artículo desarchivado"
180Entry deleted: "Artículo suprimido"
181Tagging rule deleted: "Regla de etiquetado borrada"
182Tagging rules updated: "Regla de etiquetado actualizada"
183User "%username%" added: 'Usuario "%username%" añadido'
184In demonstration mode, you can't change password for this user.: 'En modo demo, no puedes cambiar la contraseña del usuario.'
185 388
186# Entry 389flashes:
187Mark as read: 'Marcar como leído' 390 config:
188Favorite: 'Marcar cómo favorito' 391 notice:
189back: 'Volver' 392 config_saved: 'Configuración guardada. Algunos parámetros serán recargados cuando se vuelva a conectar.'
190original article: 'Artículo original' 393 password_updated: 'Contraseña actualizada'
191Add a tag: 'Añadir una etiqueta' 394 password_not_updated_demo: "En modo demo, no puedes cambiar la contraseña del usuario."
192Share: 'Compartir' 395 user_updated: 'Su información personal ha sido actualizada'
193Download: 'Descargar' 396 rss_updated: 'La configuración de los feeds RSS ha sido actualizada'
194Does this article appear wrong?: "¿Este artículo no se muestra bien?" 397 tagging_rules_updated: 'Regla de etiquetado borrada'
195Problems?: '¿Algún problema?' 398 tagging_rules_deleted: 'Regla de etiquetado actualizada'
196Edit title: "Modificar el título" 399 user_added: 'Usuario "%username%" añadido'
197Re-fetch content: "Redescargar el contenido" 400 rss_token_updated: 'RSS token actualizado'
198Tag added: "Etiqueta añadida" 401 entry:
199 402 notice:
200# Import 403 # entry_already_saved: 'Entry already saved on %date%'
201Welcome to wallabag importer. Please select your previous service that you want to migrate.: "Bienvenido al útil de migración de wallabag. Seleccione el servicio previo del que usted quiera migrar." 404 # entry_saved: 'Entry saved'
202"This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag.": "Va a importar sus datos de Pocket. Pocket no nos permite descargar el contenido de su servicio, así que el contenido de cada artículo será redescargado por wallabag." 405 # entry_updated: 'Entry updated'
203"This importer will import all your wallabag v1 articles. On your config page, click on \"JSON export\" in the \"Export your wallabag data\" section. You will have a \"wallabag-export-1-xxxx-xx-xx.json\" file.": "Va a importar sus artículos de wallabag v1. En su configuración de wallabag v1, pulse sobre \"Exportar JSON\" dentro de la sección \"Exportar sus datos de wallabag\". Usted tendrá un fichero \"wallabag-export-1-xxxx-xx-xx.json\"." 406 # entry_reloaded: 'Entry reloaded'
204"This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on \"JSON\". You will have a \"All articles.json\" file.": "Va a importar sus artículos de otra instancia de wallabag v2. Vaya a Todos los artículos, entonces, en la barra lateral, clickee en \"JSON\". Usted tendrá un fichero \"All articles.json\"" 407 # entry_reload_failed: 'Failed to reload entry'
205"You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.": "Puedes importar sus datos desde su cuenta de Pocket. Sólo tienes que pulsar en el botón para autrizar que wallabag se conecte a getpocket.com." 408 entry_archived: 'Artículo archivado'
206Import > Pocket: "Importar > Pocket" 409 entry_unarchived: 'Artículo desarchivado'
207Pocket import isn't configured.: "La importación de Pocket no está configurada." 410 entry_starred: 'Artículo guardado en los favoritos'
208You need to define %keyurls% a pocket_consumer_key %keyurle%.: "Debe definir %keyurls% una clava del API Pocket %keyurle%." 411 entry_unstarred: 'Artículo retirado de los favoritos'
209Your server admin needs to define an API Key for Pocket.: "El administrador de vuestro servidor debe definir una clave API Pocket." 412 entry_deleted: 'Artículo suprimido'
210Connect to Pocket and import data: "Conectese a Pocket para importar los datos" 413 tag:
211Please select your wallabag export and click on the below button to upload and import it.: "Seleccione el fichero de su exportación de wallabag v1 y puelse en el botón para subirla y importarla." 414 notice:
212File: "Fichero" 415 tag_added: 'Etiqueta añadida'
213Upload file: "Importar el fichero" 416 import:
214Import contents: "Importar los contenidos" 417 notice:
215Import: "Importar" 418 # failed: 'Import failed, please try again.'
216Import > Wallabag v1: "Importar > Wallabag v1" 419 # failed_on_file: 'Error while processing import. Please verify your import file.'
217Import > Wallabag v2: "Importar > Wallabag v2" 420 # summary: 'Import summary: %imported% imported, %skipped% already saved.'
218 421 developer:
219# Quickstart 422 notice:
220Quickstart: Comienzo rápido 423 # client_created: 'New client created.'
221Welcome to wallabag!: "Bienvenido a wallabag !" 424 # client_deleted: 'Client deleted'
222We'll accompany you to visit wallabag and show you some features which can interess you.: "Le acompañaremos a su visita de wallabag y le mostraremos algunas características que le pueden interesar."
223Follow us!: "¡Siganos!"
224Configure the application: "Configure la aplicación"
225Change language and design: "Cambie el idoma y el diseño de la aplicación"
226Enable RSS feeds: "Activar los feeds RSS"
227First steps: "Prieros pasos"
228Save your first article: "Guarde su primer artículo"
229And classify it!: "¡Y clasifiquelo!"
230Migrate from an existing service: "Migrar de un servicio existente"
231You're using an other service? We'll help you to retrieve your data on wallabag.: "¿Está usando otro servicio? Le ayudaremos a migrar sus datos a wallabag."
232Migrate from Pocket: "Migrar desde Pocket"
233Migrate from wallabag v1: "Migrar desde wallabag v1"
234Full documentation: "Documentación completa"
235Convert your articles into ePUB or PDF: "Convierta sus artículos a ePub o a PDF"
236See how you can look for an article by using search engine and filters: "Aprenda a utilizar el buscador y los filtros para encontrar el artículo que le interese"
237And so many other articles!: "¡Y muchos más artículos!"
238Support: "Soporte"
239If you need some help, we are here for you.: "Sí necesita ayuda, estamos disponibles para usted."
240On GitHub: "En GitHub"
241By email: "Por email"
242On Gitter: "On Gitter"
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
index e0ef3102..97f52a78 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
@@ -1,129 +1,424 @@
1#Login 1security:
2Keep me logged in: 'مرا به خاطر بسپار' 2 login:
3Forgot your password?: ' رمزتان را گم کرده‌اید؟' 3 # page_title: 'Welcome to wallabag!'
4Login: 'ورود' 4 keep_logged_in: 'مرا به خاطر بسپار'
5Back to login: 'بازگشت به صفحهٔ ورود' 5 forgot_password: ' رمزتان را گم کرده‌اید؟'
6Send: 'بفرست' 6 submit: 'ورود'
7"Enter your email address below and we'll send you password reset instructions.": "نشانی ایمیل خود را بنویسید تا راهنمای تغییر رمز را برایتان بفرستیم." 7 # register: 'Register'
8 username: 'نام کاربری'
9 password: 'رمز'
10 # cancel: 'Cancel'
11 resetting:
12 description: "نشانی ایمیل خود را بنویسید تا راهنمای تغییر رمز را برایتان بفرستیم."
13 register:
14 # page_title: 'Create an account'
15 # go_to_account: 'Go to your account'
8 16
9# Menu 17menu:
10unread: 'خوانده‌نشده' 18 left:
11starred: 'برگزیده' 19 unread: 'خوانده‌نشده'
12archive: 'بایگانی' 20 starred: 'برگزیده'
13all: 'همه' 21 archive: 'بایگانی'
14tags: 'برچسب‌ها' 22 all_articles: 'همه'
15config: 'پیکربندی' 23 config: 'پیکربندی'
16howto: 'خودآموز' 24 tags: 'برچسب‌ها'
17logout: 'خروج' 25 # internal_settings: 'Internal Settings'
18Filtered: 'فیلترشده' 26 # import: 'Import'
19About: 'درباره' 27 howto: 'خودآموز'
28 # developer: 'Developer'
29 logout: 'خروج'
30 about: 'درباره'
31 search: 'جستجو'
32 # save_link: 'Save a link'
33 back_to_unread: 'بازگشت به خوانده‌نشده‌ها'
34 top:
35 add_new_entry: 'افزودن مقالهٔ تازه'
36 search: 'جستجو'
37 filter_entries: 'فیلترکردن مقاله‌ها'
38 # export: 'Export'
39 search_form:
40 input_label: 'جستجوی خود را این‌جا بنویسید:'
20 41
21# Header 42footer:
22Back to unread articles: 'بازگشت به خوانده‌نشده‌ها' 43 wallabag:
23Add a new entry: 'افزودن مقالهٔ تازه' 44 # elsewhere: 'Take wallabag with you'
24Search: 'جستجو' 45 # social: 'Social'
25Filter entries: 'فیلترکردن مقاله‌ها' 46 # powered_by: 'powered by'
26Enter your search here: 'جستجوی خود را این‌جا بنویسید:' 47 about: 'درباره'
27Save new entry: 'ذخیرهٔ مقالهٔ تازه'
28 48
29# Config screen 49config:
30Settings: 'تنظیمات' 50 page_title: 'پیکربندی'
31User information: 'اطلاعات کاربر' 51 tab_menu:
32Password: 'رمز' 52 settings: 'تنظیمات'
33RSS: 'آر-اس-اس' 53 rss: 'آر-اس-اس'
34Add a user: 'افزودن کاربر' 54 user_info: 'اطلاعات کاربر'
35Theme: 'پوسته' 55 password: 'رمز'
36Items per page: 'تعداد مقاله در هر صفحه' 56 # rules: 'Tagging rules'
37Language: 'زبان' 57 new_user: 'افزودن کاربر'
38Save: 'ذخیره' 58 form:
39RSS token: 'کد آر-اس-اس' 59 save: 'ذخیره'
40Name: 'نام' 60 form_settings:
41Email: 'نشانی ایمیل' 61 theme_label: 'پوسته'
42No token: 'بدون کد' 62 items_per_page_label: 'تعداد مقاله در هر صفحه'
43Reset your token: 'بازنشانی کد' 63 language_label: 'زبان'
44Create your token: 'کد خود را بسازید' 64 reading_speed:
45Rss limit: 'محدودیت آر-اس-اس' 65 # label: 'Reading speed'
46RSS links: 'پیوند آر-اس-اس' 66 # help_message: 'You can use online tools to estimate your reading speed:'
47'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.': 'با خوراک آر-اس-اس که wallabag در اختیارتان می‌گذارد، می‌توانید مقاله‌های ذخیره‌شده را در نرم‌افزار آر-اس-اس دلخواه خود بخوانید. برای این کار نخست باید یک کد بسازید.' 67 # 100_word: 'I read ~100 words per minute'
48Old password: 'رمز قدیمی' 68 # 200_word: 'I read ~200 words per minute'
49New password: 'رمز تازه' 69 # 300_word: 'I read ~300 words per minute'
50Repeat new password: 'رمز تازه را دوباره بنویسید' 70 # 400_word: 'I read ~400 words per minute'
51Username: 'نام کاربری' 71 form_rss:
72 description: 'با خوراک آر-اس-اس که wallabag در اختیارتان می‌گذارد، می‌توانید مقاله‌های ذخیره‌شده را در نرم‌افزار آر-اس-اس دلخواه خود بخوانید. برای این کار نخست باید یک کد بسازید.'
73 token_label: 'کد آر-اس-اس'
74 no_token: 'بدون کد'
75 token_create: 'کد خود را بسازید'
76 token_reset: 'بازنشانی کد'
77 rss_links: 'پیوند آر-اس-اس'
78 rss_link:
79 unread: 'خوانده‌نشده'
80 starred: 'برگزیده'
81 archive: 'بایگانی'
82 rss_limit: 'محدودیت آر-اس-اس'
83 form_user:
84 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
85 name_label: 'نام'
86 email_label: 'نشانی ایمیل'
87 # twoFactorAuthentication_label: 'Two factor authentication'
88 form_password:
89 old_password_label: 'رمز قدیمی'
90 new_password_label: 'رمز تازه'
91 repeat_new_password_label: 'رمز تازه را دوباره بنویسید'
92 form_rules:
93 # if_label: 'if'
94 # then_tag_as_label: 'then tag as'
95 # delete_rule_label: 'delete'
96 # rule_label: 'Rule'
97 # tags_label: 'Tags'
98 # faq:
99 # title: 'FAQ'
100 # tagging_rules_definition_title: 'What does « tagging rules » mean?'
101 # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.'
102 # how_to_use_them_title: 'How do I use them?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
104 # variables_available_title: 'Which variables and operators can I use to write rules?'
105 # variables_available_description: 'The following variables and operators can be used to create tagging rules:'
106 # meaning: 'Meaning'
107 # variable_description:
108 # label: 'Variable'
109 # title: 'Title of the entry'
110 # url: 'URL of the entry'
111 # isArchived: 'Whether the entry is archived or not'
112 # isStarred: 'Whether the entry is starred or not'
113 # content: "The entry's content"
114 # language: "The entry's language"
115 # mimetype: "The entry's mime-type"
116 # readingTime: "The estimated entry's reading time, in minutes"
117 # domainName: 'The domain name of the entry'
118 # operator_description:
119 # label: 'Operator'
120 # less_than: 'Less than...'
121 # strictly_less_than: 'Strictly less than...'
122 # greater_than: 'Greater than...'
123 # strictly_greater_than: 'Strictly greater than...'
124 # equal_to: 'Equal to...'
125 # not_equal_to: 'Not equal to...'
126 # or: 'One rule OR another'
127 # and: 'One rule AND another'
128 # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
129 form_new_user:
130 username_label: 'نام کاربری'
131 password_label: 'رمز'
132 repeat_new_password_label: 'رمز تازه را دوباره بنویسید'
133 plain_password_label: '????'
134 email_label: 'نشانی ایمیل'
52 135
53# Entries 136entry:
54'estimated reading time': 'زمان تخمینی برای خواندن' 137 page_titles:
55original: اصلی 138 # unread: 'Unread entries'
56Toggle mark as read: 'خوانده‌شده/خوانده‌نشده' 139 # starred: 'Starred entries'
57Toggle favorite: 'برگزیده/نابرگزیده' 140 # archive: 'Archived entries'
58Delete: 'پاک کردن' 141 # filtered: 'Filtered entries'
142 list:
143 # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
144 reading_time: 'زمان تخمینی برای خواندن'
145 reading_time_minutes: 'زمان تخمینی برای خواندن: %readingTime% min'
146 reading_time_less_one_minute: 'زمان تخمینی برای خواندن: <small class="inferieur">&lt;</small> 1 min'
147 original_article: 'original'
148 toogle_as_read: 'خوانده‌شده/خوانده‌نشده'
149 toogle_as_star: 'برگزیده/نابرگزیده'
150 delete: 'پاک کردن'
151 # export_title: 'Export'
152 filters:
153 title: 'فیلتر'
154 status_label: 'وضعیت'
155 archived_label: 'بایگانی‌شده'
156 starred_label: 'برگزیده'
157 preview_picture_label: 'دارای عکس پیش‌نمایش'
158 preview_picture_help: 'پیش‌نمایش عکس'
159 language_label: 'زبان'
160 reading_time:
161 label: 'زمان خواندن به دقیقه'
162 from: 'از'
163 to: 'تا'
164 domain_label: 'نام دامنه'
165 created_at:
166 label: 'زمان ساخت'
167 from: 'از'
168 to: 'تا'
169 action:
170 clear: 'از نو'
171 filter: 'فیلتر'
172 view:
173 left_menu:
174 # back_to_top: 'Back to top'
175 back_to_homepage: 'بازگشت'
176 set_as_read: 'خوانده‌شده'
177 # set_as_unread: 'Mark as unread'
178 set_as_favorite: 'برگزیده'
179 view_original_article: 'مقالهٔ اصلی'
180 # re_fetch_content: 'Re-fetch content'
181 delete: 'پاک کردن'
182 add_a_tag: 'افزودن برچسب'
183 share_content: 'هم‌رسانی'
184 share_email_label: 'نشانی ایمیل'
185 download: 'بارگیری'
186 # print: 'Print'
187 problem:
188 label: 'مشکلات؟'
189 description: 'آیا مقاله نادرست نشان داده شده؟'
190 edit_title: 'ویرایش عنوان'
191 original_article: 'original'
192 # annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
193 new:
194 page_title: 'ذخیرهٔ مقالهٔ تازه'
195 placeholder: 'http://website.com'
196 form_new:
197 # url_label: Url
198 edit:
199 # page_title: 'Edit an entry'
200 # title_label: 'Title'
201 # url_label: 'Url'
202 # is_public_label: 'Public'
203 save_label: 'ذخیره'
59 204
60# Filters 205about:
61Filters: 'فیلتر' 206 page_title: 'درباره'
62Status: 'وضعیت' 207 top_menu:
63Archived: 'بایگانی‌شده' 208 who_behind_wallabag: 'سازندگان wallabag'
64Starred: 'برگزیده' 209 getting_help: 'گرفتن کمک'
65Preview picture: 'پیش‌نمایش عکس' 210 helping: 'کمک‌کردن به wallabag'
66Has a preview picture: 'دارای عکس پیش‌نمایش' 211 # contributors: 'Contributors'
67Reading time in minutes: 'زمان خواندن به دقیقه' 212 # third_party: 'Third-party libraries'
68from: 'از' 213 who_behind_wallabag:
69to: 'تا' 214 developped_by: 'ساختهٔ'
70website.com: 'website.com' 215 website: 'وب‌گاه'
71Domain name: 'نام دامنه' 216 many_contributors: 'و بسیاری دیگر از مشارکت‌کنندگان ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">روی Github</a>'
72Creation date: 'زمان ساخت' 217 project_website: 'وب‌گاه پروژه'
73dd/mm/yyyy: 'dd.mm.yyyy' 218 license: 'پروانه'
74Clear: 'از نو' 219 version: 'نسخه'
75Filter: 'فیلتر' 220 getting_help:
221 documentation: 'راهنما'
222 bug_reports: 'گزارش اشکال‌ها'
223 support: '<a href="https://support.wallabag.org">در وب‌گاه پشتیبانی</a> یا <a href="https://github.com/wallabag/wallabag/issues">روی GitHub</a>'
224 helping:
225 description: 'wallabag رایگان، آزاد، و متن‌باز است. شما می‌توانید به ما کمک کنید:'
226 by_contributing: 'با مشارکت در پروژه:'
227 by_contributing_2: 'فهرست نیازمندی‌های ما در این صفحه است:'
228 by_paypal: 'از راه Paypal'
229 contributors:
230 # description: 'Thank you to contributors on wallabag web application'
231 third_party:
232 # description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
233 # package: 'Package'
234 license: 'پروانه'
76 235
77# About 236howto:
78Who is behind wallabag: "سازندگان wallabag" 237 page_title: 'خودآموز'
79Getting help: "گرفتن کمک" 238 # page_description: 'There are several ways to save an article:'
80Helping wallabag: "کمک‌کردن به wallabag" 239 top_menu:
81Developed by: "ساختهٔ" 240 browser_addons: 'افزونه برای مرورگرها'
82website: "وب‌گاه" 241 mobile_apps: 'برنامه‌های موبایل'
83And many others contributors ♥: "و بسیاری دیگر از مشارکت‌کنندگان ♥" 242 bookmarklet: 'ابزار علامت‌گذاری صفحه‌ها'
84on GitHub: "روی GitHub" 243 form:
85Project website: "وب‌گاه پروژه" 244 description: 'به کمک این فرم'
86License: "پروانه" 245 browser_addons:
87Version: "نسخه" 246 firefox: 'افزونهٔ فایرفاکس'
88Documentation: "راهنما" 247 chrome: 'افزونهٔ کروم'
89Bug reports: "گزارش اشکال‌ها" 248 mobile_apps:
90On our support website: "در وب‌گاه پشتیبانی" 249 android:
91or: "یا" 250 via_f_droid: 'از راه F-Droid'
92"wallabag is free and opensource. You can help us:": "wallabag رایگان، آزاد، و متن‌باز است. شما می‌توانید به ما کمک کنید:" 251 via_google_play: 'از راه Google Play'
93"by contributing to the project:": "با مشارکت در پروژه:" 252 ios: 'از راه iTunes Store'
94an issue lists all our needs: "فهرست نیازمندی‌های ما در این صفحه است:" 253 windows: 'از راه Microsoft Store'
95via Paypal: "از راه PayPal" 254 bookmarklet:
255 description: 'این پیوند را به نوار بوک‌مارک مرورگرتان بکشید:'
96 256
97# Howto 257quickstart:
98Form: فرم 258 # page_title: 'Quickstart'
99Thanks to this form: "به کمک این فرم" 259 # intro:
100Browser addons: "افزونه برای مرورگرها" 260 # title: 'Welcome to wallabag!'
101Mobile apps: "برنامه‌های موبایل" 261 # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you."
102Bookmarklet: "ابزار علامت‌گذاری صفحه‌ها" 262 # paragraph_2: 'Follow us!'
103Standard Firefox Add-On: "افزونهٔ فایرفاکس" 263 # configure:
104Chrome Extension: "افزونهٔ کروم" 264 # title: 'Configure the application'
105download the application: "برنامه را باربگیرید" 265 # language: 'Change language and design'
106"Drag &amp; drop this link to your bookmarks bar:": "این پیوند را به نوار بوک‌مارک مرورگرتان بکشید:" 266 # rss: 'Enable RSS feeds'
267 # tagging_rules: 'Write rules to automatically tag your articles'
268 # admin:
269 # title: 'Administration'
270 # description: 'As an administrator, you have privileges on wallabag. You can:'
271 # new_user: 'Create a new user'
272 # analytics: 'Configure analytics'
273 # sharing: 'Enable some parameters about article sharing'
274 # export: 'Configure export'
275 # import: 'Configure import'
276 # first_steps:
277 # title: 'First steps'
278 # new_article: 'Save your first article'
279 # unread_articles: 'And classify it!'
280 # migrate:
281 # title: 'Migrate from an existing service'
282 # description: "Are you using another service? We'll help you to retrieve your data on wallabag."
283 # pocket: 'Migrate from Pocket'
284 # wallabag_v1: 'Migrate from wallabag v1'
285 # wallabag_v2: 'Migrate from wallabag v2'
286 # developer:
287 # title: 'Developers'
288 # create_application: 'Create your third application'
289 # docs:
290 # title: 'Full documentation'
291 # annotate: 'Annotate your article'
292 # export: 'Convert your articles into ePUB or PDF'
293 # search_filters: 'See how you can look for an article by using search engine and filters'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?'
295 # all_docs: 'And so many other articles!'
296 # support:
297 # title: 'Support'
298 # description: 'If you need some help, we are here for you.'
299 # github: 'On GitHub'
300 # email: 'By email'
301 # gitter: 'On Gitter'
107 302
108# Flash messages 303tag:
109Information updated: "اطلاعات به‌روز شد" 304 page_title: 'برچسب‌ها'
110"Config saved. Some parameters will be considered after disconnection.": "پیکربندی ذخیره شد. برخی از تنظیمات پس از این که قطع شدید اعمال می‌شود." 305 list:
111RSS information updated: "اطلاعات آر-اس-اس به‌روز شد" 306 # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
112Password updated: "رمز به‌روز شد"
113Entry starred: "مقاله برگزیده شد"
114Entry unstarred: "مقاله نابرگزیده شد"
115Entry archived: "مقاله بایگانی شد"
116Entry unarchived: "مقاله از بایگانی درآمد"
117Entry deleted: "مقاله پاک شد"
118 307
119# Entry 308import:
120Mark as read: 'خوانده‌شده' 309 # page_title: 'Import'
121Favorite: 'برگزیده' 310 # page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
122back: 'بازگشت' 311 # action:
123original article: 'مقالهٔ اصلی' 312 # import_contents: 'Import contents'
124Add a tag: 'افزودن برچسب' 313 # form:
125Share: 'هم‌رسانی' 314 # mark_as_read_title: 'Mark all as read?'
126Download: 'بارگیری' 315 # mark_as_read_label: 'Mark all imported entries as read'
127Does this article appear wrong?: "آیا مقاله نادرست نشان داده شده؟" 316 # file_label: 'File'
128Problems?: 'مشکلات؟' 317 # save_label: 'Upload file'
129Edit title: "ویرایش عنوان" 318 # pocket:
319 # page_title: 'Import > Pocket'
320 # description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag."
321 # config_missing:
322 # description: "Pocket import isn't configured."
323 # admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
324 # user_message: 'Your server admin needs to define an API Key for Pocket.'
325 # authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.'
326 # connect_to_pocket: 'Connect to Pocket and import data'
327 # wallabag_v1:
328 # page_title: 'Import > Wallabag v1'
329 # description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'
330 # how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
331 # wallabag_v2:
332 # page_title: 'Import > Wallabag v2'
333 # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
334
335developer:
336 # page_title: 'Developer'
337 # welcome_message: 'Welcome to the wallabag API'
338 # documentation: 'Documentation'
339 # how_to_first_app: 'How to create my first application'
340 # full_documentation: 'View full API documentation'
341 # clients:
342 # title: 'Clients'
343 # create_new: 'Create a new client'
344 # existing_clients:
345 # title: 'Existing clients'
346 # field_id: 'Client ID'
347 # field_secret: 'Client secret'
348 # field_uris: 'Redirect URIs'
349 # field_grant_types: 'Grant type allowed'
350 # no_client: 'No client yet.'
351 # remove:
352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
354 # action: 'Remove this client'
355 # client:
356 # page_title: 'Developer > New client'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
358 # form:
359 # redirect_uris_label: 'Redirect URIs'
360 # save_label: 'Create a new client'
361 # action_back: 'بازگشت'
362 # client_parameter:
363 # page_title: 'Developer > Client parameters'
364 # page_description: 'Here are your client parameters.'
365 # field_id: 'Client ID'
366 # field_secret: 'Client secret'
367 # back: 'بازگشت'
368 # read_howto: 'Read the howto "Create my first application"'
369 # howto:
370 # page_title: 'Developer > How to create my first application'
371 # description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):'
376 # paragraph_5: 'The API will return a response like this:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:'
378 # paragraph_7: 'This call will return all the entries for your user.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.'
380 # back: 'بازگشت'
381
382validator:
383 password_must_match: 'رمزها باید یکی باشند'
384 password_too_short: 'رمز شما باید ۸ حرف یا بیشتر باشد'
385 # password_wrong_value: 'Wrong value for your current password'
386 # item_per_page_too_high: 'This will certainly kill the app'
387 # rss_limit_too_hight: 'This will certainly kill the app'
388
389flashes:
390 config:
391 notice:
392 config_saved: 'پیکربندی ذخیره شد. برخی از تنظیمات پس از این که قطع شدید اعمال می‌شود.'
393 password_updated: 'رمز به‌روز شد'
394 # password_not_updated_demo: "In demonstration mode, you can't change password for this user."
395 user_updated: 'اطلاعات به‌روز شد'
396 rss_updated: 'اطلاعات آر-اس-اس به‌روز شد'
397 # tagging_rules_updated: 'Tagging rules updated'
398 # tagging_rules_deleted: 'Tagging rule deleted'
399 # user_added: 'User "%username%" added'
400 # rss_token_updated: 'RSS token updated'
401 entry:
402 notice:
403 # entry_already_saved: 'Entry already saved on %date%'
404 # entry_saved: 'Entry saved'
405 # entry_updated: 'Entry updated'
406 # entry_reloaded: 'Entry reloaded'
407 # entry_reload_failed: 'Failed to reload entry'
408 entry_archived: 'مقاله بایگانی شد'
409 entry_unarchived: 'مقاله از بایگانی درآمد'
410 entry_starred: 'مقاله برگزیده شد'
411 entry_unstarred: 'مقاله نابرگزیده شد'
412 entry_deleted: 'مقاله پاک شد'
413 tag:
414 notice:
415 # tag_added: 'Tag added'
416 import:
417 notice:
418 # failed: 'Import failed, please try again.'
419 # failed_on_file: 'Error while processing import. Please verify your import file.'
420 # summary: 'Import summary: %imported% imported, %skipped% already saved.'
421 developer:
422 notice:
423 # client_created: 'New client created.'
424 # client_deleted: 'Client deleted'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
index 7c6ad07e..56172463 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
@@ -1,284 +1,424 @@
1#Login 1security:
2Keep me logged in: 'Rester connecté' 2 login:
3Forgot your password?: 'Mot de passe oublié ?' 3 page_title: 'Bienvenue sur wallabag !'
4Login: 'Se connecter' 4 keep_logged_in: 'Rester connecté'
5Back to login: 'Revenir au formulaire de connexion' 5 forgot_password: 'Mot de passe oublié ?'
6Send: 'Envoyer' 6 submit: 'Se connecter'
7"Enter your email address below and we'll send you password reset instructions.": "Saisissez votre adresse e-mail ci-dessous, nous vous enverrons les instructions pour réinitialiser votre mot de passe." 7 register: 'Créer un compte'
8Register: 'Créer un compte' 8 username: "Nom d'utilisateur"
9 password: 'Mot de passe'
10 cancel: 'Annuler'
11 resetting:
12 description: "Saisissez votre adresse e-mail ci-dessous, nous vous enverrons les instructions pour réinitialiser votre mot de passe."
13 register:
14 page_title: 'Se créer un compte'
15 go_to_account: 'Aller sur votre compte'
9 16
10# Menu 17menu:
11unread: 'Non lus' 18 left:
12starred: 'Favoris' 19 unread: 'Non lus'
13archive: 'Lus' 20 starred: 'Favoris'
14all: 'Tous les articles' 21 archive: 'Lus'
15tags: 'Tags' 22 all_articles: 'Tous les articles'
16config: 'Configuration' 23 config: 'Configuration'
17internal settings: 'Configuration interne' 24 tags: 'Tags'
18import: 'Importer' 25 internal_settings: 'Configuration interne'
19howto: 'Aide' 26 import: 'Importer'
20logout: 'Déconnexion' 27 howto: 'Aide'
21Filtered: 'Articles filtrés' 28 developer: 'Développeur'
22About: 'À propos' 29 logout: 'Déconnexion'
30 about: 'À propos'
31 search: 'Recherche'
32 save_link: 'Sauvegarder un nouvel article'
33 back_to_unread: 'Retour aux articles non lus'
34 top:
35 add_new_entry: 'Sauvegarder un nouvel article'
36 search: 'Rechercher'
37 filter_entries: 'Filtrer les articles'
38 export: 'Exporter'
39 search_form:
40 input_label: 'Saisissez votre terme de recherche'
23 41
24# Header 42footer:
25Back to unread articles: 'Retour aux articles non lus' 43 wallabag:
26Add a new entry: 'Sauvegarder un nouvel article' 44 elsewhere: 'Emportez wallabag avec vous'
27Search: 'Rechercher' 45 social: 'Social'
28Filter entries: 'Filtrer les articles' 46 powered_by: 'propulsé par'
29Enter your search here: 'Saisissez votre terme de recherche' 47 about: 'À propos'
30Save new entry: 'Sauvegarder un nouvel article' 48 page_title: 'Configuration'
31Export: Exporter
32 49
33# Config screen 50config:
34Settings: 'Paramètres' 51 tab_menu:
35User information: 'Mon compte' 52 settings: 'Paramètres'
36Password: 'Mot de passe' 53 rss: 'RSS'
37RSS: 'RSS' 54 user_info: 'Mon compte'
38Add a user: 'Créer un compte' 55 password: 'Mot de passe'
39Theme: 'Thème' 56 rules: 'Règles de tag automatiques'
40Items per page: "Nombre d'articles par page" 57 new_user: 'Créer un compte'
41Reading speed: "Vitesse de lecture" 58 form:
42Language: 'Langue' 59 save: 'Enregistrer'
43Save: 'Enregistrer' 60 form_settings:
44RSS token: 'Jeton RSS' 61 theme_label: 'Thème'
45RSS token updated: 'Jeton RSS mis à jour' 62 items_per_page_label: "Nombre d'articles par page"
46Name: 'Nom' 63 language_label: 'Langue'
47Email: 'Adresse e-mail' 64 reading_speed:
48No token: 'Aucun jeton généré' 65 label: 'Vitesse de lecture'
49Reset your token: 'Réinitialisez votre jeton' 66 help_message: 'Vous pouvez utiliser un outil en ligne pour estimer votre vitesse de lecture :'
50Create your token: 'Créez votre jeton' 67 100_word: 'Je lis environ 100 mots par minute'
51Rss limit: "Nombre d'articles dans un flux RSS" 68 200_word: 'Je lis environ 200 mots par minute'
52RSS links: 'URL de vos flux RSS' 69 300_word: 'Je lis environ 300 mots par minute'
53"RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.": "Les flux RSS fournis par wallabag vous permettent de lire vos articles sauvegardés dans votre lecteur de flux préféré. Pour pouvoir les utiliser, vous devez d'abord créer un jeton." 70 400_word: 'Je lis environ 400 mots par minute'
54Old password: 'Mot de passe actuel' 71 form_rss:
55New password: 'Nouveau mot de passe' 72 description: "Les flux RSS fournis par wallabag vous permettent de lire vos articles sauvegardés dans votre lecteur de flux préféré. Pour pouvoir les utiliser, vous devez d'abord créer un jeton."
56Repeat new password: 'Confirmez votre nouveau mot de passe' 73 token_label: 'Jeton RSS'
57Username: "Nom d'utilisateur" 74 no_token: 'Aucun jeton généré'
58Two factor authentication: "Double authentification" 75 token_create: 'Créez votre jeton'
59"Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion": "Activer l'authentification double-facteur veut dire que vous allez recevoir un code par email à chaque nouvelle connexion non approuvée." 76 token_reset: 'Réinitialisez votre jeton'
60"I read ~100 words per minute": "Je lis environ 100 mots par minute" 77 rss_links: 'URL de vos flux RSS'
61"I read ~200 words per minute": "Je lis environ 200 mots par minute" 78 rss_link:
62"I read ~300 words per minute": "Je lis environ 300 mots par minute" 79 unread: 'non lus'
63"I read ~400 words per minute": "Je lis environ 400 mots par minute" 80 starred: 'favoris'
64"You can use online tools to estimate your reading speed": "Vous pouvez utiliser un outil en ligne pour estimer votre vitesse de lecture" 81 archive: 'lus'
65"like this one": "comme celui-ci" 82 rss_limit: "Nombre d'articles dans le flux"
83 form_user:
84 two_factor_description: "Activer l'authentification double-facteur veut dire que vous allez recevoir un code par email à chaque nouvelle connexion non approuvée."
85 name_label: 'Nom'
86 email_label: 'Adresse e-mail'
87 twoFactorAuthentication_label: 'Double authentification'
88 form_password:
89 old_password_label: 'Mot de passe actuel'
90 new_password_label: 'Nouveau mot de passe'
91 repeat_new_password_label: 'Confirmez votre nouveau mot de passe'
92 form_rules:
93 if_label: 'si'
94 then_tag_as_label: 'alors attribuer les tags'
95 delete_rule_label: 'supprimer'
96 rule_label: 'Règle'
97 tags_label: 'Tags'
98 faq:
99 title: 'FAQ'
100 tagging_rules_definition_title: 'Que signifient les règles de tag automatiques ?'
101 tagging_rules_definition_description: "Ce sont des règles utilisées par wallabag pour classer automatiquement vos nouveaux articles.<br />À chaque fois qu'un nouvel article est ajouté, toutes les règles de tag automatiques seront utilisées afin d'ajouter les tags que vous avez configurés, vous épargnant ainsi l'effort de classifier vos articles manuellement."
102 how_to_use_them_title: 'Comment les utiliser ?'
103 how_to_use_them_description: 'Imaginons que voulez attribuer aux nouveaux articles le tag « <i>lecture courte</i> » lorsque le temps de lecture est inférieur à 3 minutes.<br />Dans ce cas, vous devriez mettre « readingTime &lt;= 3 » dans le champ <i>Règle</i> et « <i>lecture courte</i> » dans le champ <i>Tag</i>.<br />Plusieurs tags peuvent être ajoutés simultanément en les séparant par des virgules : « <i>lecture courte, à lire</i> »<br />Des règles complexes peuvent être créées en utilisant des opérateurs prédéfinis: si « <i>readingTime &gt;= 5 AND domainName = \"github.com\"</i> » alors attribuer les tags « <i>lecture longue, github </i> »'
104 variables_available_title: 'Quelles variables et opérateurs puis-je utiliser pour écrire des règles ?'
105 variables_available_description: 'Les variables et opérateurs suivants peuvent être utilisés pour écrire des règles de tag automatiques :'
106 meaning: 'Signification'
107 variable_description:
108 label: 'Variable'
109 title: "Titre de l'article"
110 url: "URL de l'article"
111 isArchived: "Si l'article est archivé ou non"
112 isStarred: "Si l'article est favori ou non"
113 content: "Le contenu de l'article"
114 language: "La langue de l'article"
115 mimetype: "Le type MIME de l'article"
116 readingTime: "Le temps de lecture estimé de l'article, en minutes"
117 domainName: "Le nom de domaine de l'article"
118 operator_description:
119 label: 'Opérateur'
120 less_than: 'Moins que…...'
121 strictly_less_than: 'Strictement moins que…'
122 greater_than: 'Plus que…'
123 strictly_greater_than: 'Strictement plus que…'
124 equal_to: 'Égal à…'
125 not_equal_to: 'Différent de…'
126 or: "Une règle OU l'autre"
127 and: "Une règle ET l'autre"
128 matches: 'Teste si un <i>sujet</i> correspond à une <i>recherche</i> (non sensible à la casse).<br />Exemple : <code>title matches "football"</code>'
129 form_new_user:
130 username_label: "Nom d'utilisateur"
131 password_label: 'Mot de passe'
132 repeat_new_password_label: 'Confirmez votre nouveau mot de passe'
133 plain_password_label: 'Mot de passe en clair'
134 email_label: 'Adresse e-mail'
66 135
67# Tagging rules 136entry:
68Tagging rules: "Règles de tag automatiques" 137 page_titles:
69What does « tagging rules » mean?: "Que signifient les règles de tag automatiques ?" 138 unread: 'Articles non lus'
70"They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.": "Ce sont des règles utilisées par wallabag pour classer automatiquement vos nouveaux articles.<br />À chaque fois qu'un nouvel article est ajouté, toutes les règles de tag automatiques seront utilisées afin d'ajouter les tags que vous avez configurés, vous épargnant ainsi l'effort de classifier vos articles manuellement." 139 starred: 'Articles favoris'
71How do I use them?: "Comment les utiliser ?" 140 archive: 'Articles lus'
72"Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = \"github.com\"</i> » then tag as « <i>long reading, github </i> »": "Imaginons que voulez attribuer aux nouveaux articles le tag « <i>lecture courte</i> » lorsque le temps de lecture est inférieur à 3 minutes.<br />Dans ce cas, vous devriez mettre « readingTime &lt;= 3 » dans le champ <i>Règle</i> et « <i>lecture courte</i> » dans le champ <i>Tag</i>.<br />Plusieurs tags peuvent être ajoutés simultanément en les séparant par des virgules : « <i>lecture courte, à lire</i> »<br />Des règles complexes peuvent être créées en utilisant des opérateurs prédéfinis: si « <i>readingTime &gt;= 5 AND domainName = \"github.com\"</i> » alors attribuer les tags « <i>lecteur longue, github </i> »" 141 filtered: 'Articles filtrés'
73Which variables and operators can I use to write rules?: "Quelles variables et opérateurs puis-je utiliser pour écrire des règles ?" 142 list:
74The following variables and operators can be used to create tagging rules:: "Les variables et opérateurs suivants peuvent être utilisés pour écrire des règles de tag automatiques :" 143 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."
75Variable: "Variable" 144 reading_time: 'durée de lecture'
76Meaning: "Signification" 145 reading_time_minutes: 'durée de lecture: %readingTime% min'
77Operator: "Opérateur" 146 reading_time_less_one_minute: 'durée de lecture: <small class="inferieur">&lt;</small> 1 min'
78Title of the entry: "Titre de l'article" 147 original_article: 'original'
79Less than…: "Moins que…" 148 toogle_as_read: 'Marquer comme lu/non lu'
80URL of the entry: "URL de l'article" 149 toogle_as_star: 'Marquer comme favori'
81Strictly less than…: "Strictement moins que…" 150 delete: 'Supprimer'
82Whether the entry is archived or not: "Si l'article est archivé ou non" 151 export_title: 'Exporter'
83Greater than…: "Plus que…" 152 filters:
84Whether the entry is starred or not: "Si l'article est favori ou non" 153 title: 'Filtres'
85Strictly greater than…: "Strictement plus que…" 154 status_label: 'Status'
86The entry's content: "Le contenu de l'article" 155 archived_label: 'Lus'
87Equal to…: "Égal à…" 156 starred_label: 'Favoris'
88The entry's language: "La langue de l'article" 157 preview_picture_label: 'A une photo'
89Not equal to…: "Différent de…" 158 preview_picture_help: 'Photo'
90The entry's mime-type: "Le Type MIME de l'article" 159 language_label: 'Langue'
91One rule or another: "Une règle ou l'autre" 160 reading_time:
92The estimated entry's reading time, in minutes: "Le temps de lecture estimé de l'article, en minutes" 161 label: 'Durée de lecture en minutes'
93One rule and another: "Une règle et l'autre" 162 from: 'de'
94The domain name of the entry: "Le nom de domaine de l'article" 163 to: 'à'
95"Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches \"football\"</code>": "Teste si un <i>sujet</i> correspond à une <i>recherche</i> (non sensible à la casse).<br />Exemple : <code>title matches \"football\"</code>" 164 domain_label: 'Nom de domaine'
96Rule: "Règle" 165 created_at:
97FAQ: "FAQ" 166 label: 'Date de création'
167 from: 'de'
168 to: 'à'
169 action:
170 clear: 'Effacer'
171 filter: 'Filtrer'
172 view:
173 left_menu:
174 back_to_top: 'Revenir en haut'
175 back_to_homepage: 'Retour'
176 set_as_read: 'Marquer comme lu'
177 set_as_unread: 'Marquer comme non lu'
178 set_as_favorite: 'Mettre en favori'
179 view_original_article: 'Article original'
180 re_fetch_content: 'Recharger le contenu'
181 delete: 'Supprimer'
182 add_a_tag: 'Ajouter un tag'
183 share_content: 'Partager'
184 share_email_label: 'Email'
185 download: 'Télécharger'
186 print: 'Imprimer'
187 problem:
188 label: 'Un problème ?'
189 description: "Est-ce que cet article s'affiche mal ?"
190 edit_title: 'Modifier le titre'
191 original_article: 'original'
192 annotations_on_the_entry: '{0} Aucune annotation|{1} Une annotation|]1,Inf[ %nbAnnotations% annotations'
193 new:
194 page_title: 'Sauvegarder un nouvel article'
195 placeholder: 'http://website.com'
196 form_new:
197 url_label: Url
198 edit:
199 page_title: 'Éditer un article'
200 title_label: 'Titre'
201 url_label: 'Url'
202 is_public_label: 'Public'
203 save_label: 'Enregistrer'
98 204
99# Entries 205about:
100"estimated reading time: %readingTime% min": "durée de lecture : %readingTime% min" 206 page_title: 'À propos'
101"estimated reading time: %inferior% 1 min": "durée de lecture : %inferior% 1 min" 207 top_menu:
102original: "original" 208 who_behind_wallabag: "L'équipe derrière wallabag"
103Toggle mark as read: 'Marquer comme lu/non lu' 209 getting_help: "Besoin d'aide"
104Toggle favorite: 'Marquer comme favori' 210 helping: 'Aider wallabag'
105Delete: 'Supprimer' 211 contributors: 'Contributeurs'
106"{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.": "{0} Il n'y a pas d'articles.|{1} Il y a un article.|]1,Inf[ Il y a %count% articles." 212 third_party: 'Librairies tierces'
107http://website: "http://siteweb" 213 who_behind_wallabag:
108"{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations": "{0} Aucune annotation|{1} Une annotation|]1,Inf[ %nbAnnotations% annotations" 214 developped_by: 'Développé par'
215 website: 'Site web'
216 many_contributors: 'Et plein de contributeurs ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">sur Github</a>'
217 project_website: 'Site web du projet'
218 license: 'Licence'
219 version: 'Version'
220 getting_help:
221 documentation: 'Documentation'
222 bug_reports: 'Rapport de bugs'
223 support: '<a href="https://support.wallabag.org">Sur notre site de support</a> ou <a href="https://github.com/wallabag/wallabag/issues">sur GitHub</a>'
224 helping:
225 description: 'wallabag est gratuit et opensource. Vous pouvez nous aider :'
226 by_contributing: 'en contribuant au projet :'
227 by_contributing_2: 'un ticket recense tous nos besoins'
228 by_paypal: 'via Paypal'
229 contributors:
230 description: "Merci aux contributeurs de l'application web de wallabag"
231 third_party:
232 description: 'Voici la liste des dépendances utilisées dans wallabag (et leur license) :'
233 package: 'Dépendance'
234 license: 'Licence'
109 235
110# Edit entry 236howto:
111Edit an entry: "Éditer un article" 237 page_title: 'Aide'
112Title: "Titre" 238 page_description: "Il y a plusieurs façon d'enregistrer un article :"
113Is public: "Public" 239 top_menu:
240 browser_addons: 'Extensions de navigateur'
241 mobile_apps: 'Applications smartphone'
242 bookmarklet: 'Bookmarklet'
243 form:
244 description: 'Grâce à ce formulaire'
245 browser_addons:
246 firefox: 'Extension Firefox'
247 chrome: 'Extension Chrome'
248 mobile_apps:
249 android:
250 via_f_droid: 'via F-Droid'
251 via_google_play: 'via Google Play'
252 ios: 'sur iTunes Store'
253 windows: 'sur Microsoft Store'
254 bookmarklet:
255 description: 'Glissez et déposez ce lien dans votre barre de favoris :'
114 256
115# tag 257quickstart:
116Tags: Tags 258 page_title: 'Pour bien débuter'
117"{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.": "{0} Il n'y a pas de tag.|{1} Il y a un tag.|]1,Inf[ Il y a %count% tags." 259 intro:
260 title: 'Bienvenue sur wallabag !'
261 paragraph_1: "Nous allons vous accompagner pour vous faire faire le tour de la maison et vous présenter quelques fonctionnalités qui pourraient vous intéresser pour vous approprier cet outil."
262 paragraph_2: 'Suivez-nous !'
263 configure:
264 title: "Configurez l'application"
265 language: "Changez la langue et le design de l'application"
266 rss: 'Activez les flux RSS'
267 tagging_rules: 'Écrivez des règles pour classer automatiquement vos articles'
268 admin:
269 title: 'Administration'
270 description: "En tant qu'adminitrasteur sur wallabag, vous avez des privilèges qui vous permette de :"
271 new_user: 'Créer un nouvel utilisateur'
272 analytics: 'Configurer les statistiques'
273 sharing: 'Activer des paramètres de partages'
274 export: 'Configurer les export'
275 import: 'Configurer les import'
276 first_steps:
277 title: 'Premiers pas'
278 new_article: 'Ajoutez votre premier article'
279 unread_articles: 'Et rangez-le !'
280 migrate:
281 title: 'Migrer depuis un service existant'
282 description: "Vous êtes un ancien utilisateur d'un service existant ? Nous allons vous aider à récupérer vos données sur wallabag."
283 pocket: 'Migrer depuis Pocket'
284 wallabag_v1: 'Migrer depuis wallabag v1'
285 wallabag_v2: 'Migrer depuis wallabag v2'
286 developer:
287 title: 'Pour les développeurs'
288 create_application: 'Créer votre application tierce'
289 docs:
290 title: 'Documentation complète'
291 annotate: 'Annotater votre article'
292 export: 'Convertissez vos articles en ePub ou en PDF'
293 search_filters: "Apprenez à utiliser le moteur de recherche et les filtres pour retrouver l'article qui vous intéresse"
294 fetching_errors: "Que faire si mon article n'est pas correctement récupéré ?"
295 all_docs: "Et encore plein d'autres choses !"
296 support:
297 title: 'Support'
298 description: 'Parce que vous avez peut-être besoin de nous poser une question, nous sommes disponibles pour vous.'
299 github: 'Sur GitHub'
300 email: 'Par e-mail'
301 gitter: 'Sur Gitter'
118 302
119# Filters 303tag:
120Filters: 'Filtres' 304 page_title: 'Tags'
121Status: 'Statut' 305 list:
122Archived: 'Lu' 306 number_on_the_page: "{0} Il n'y a pas de tag.|{1} Il y a un tag.|]1,Inf[ Il y a %count% tags."
123Starred: 'Favori'
124Preview picture: 'Photo'
125Has a preview picture: 'A une photo'
126Reading time in minutes: 'Durée de lecture en minutes'
127from: 'de'
128to: 'à'
129website.com: 'website.com'
130Domain name: 'Nom de domaine'
131Creation date: 'Date de création'
132dd/mm/yyyy: 'jj/mm/aaaa'
133Clear: 'Effacer'
134Filter: 'Filtrer'
135website.com: "siteweb.com"
136 307
137# About 308import:
138About: "À propos" 309 page_title: 'Importer'
139Who is behind wallabag: "L'équipe derrière wallabag" 310 page_description: "Bienvenue dans l'outil de migration de wallabag. Choisissez ci-dessous le service depuis lequel vous souhaitez migrer."
140Getting help: "Besoin d'aide" 311 action:
141Helping wallabag: "Aider wallabag" 312 import_contents: 'Importer les contenus'
142Developed by: "Développé par" 313 form:
143website: "Site web" 314 mark_as_read_title: 'Marquer tout comme lu ?'
144And many others contributors ♥: "Et plein de contributeurs ♥" 315 mark_as_read_label: 'Marquer tous les contenus importés comme lus'
145on GitHub: "sur GitHub" 316 file_label: 'Fichier'
146Project website: "Site web du projet" 317 save_label: 'Importer le fichier'
147License: "Licence" 318 pocket:
148Version: "Version" 319 page_title: 'Importer > Pocket'
149Documentation: "Documentation" 320 description: "Cet outil va importer toutes vos données de Pocket. Pocket ne nous autorise pas à récupérer le contenu depuis leur service, donc wallabag doit reparcourir chaque article pour récupérer son contenu."
150Bug reports: "Rapport de bugs" 321 config_missing:
151On our support website: "Sur notre site de support" 322 description: "L'import à partir de Pocket n'est pas configuré."
152or: "ou" 323 admin_message: "Vous devez définir %keyurls%une clé pour l'API Pocket%keyurle%."
153"wallabag is free and opensource. You can help us:": "wallabag est gratuit et opensource. Vous pouvez nous aider :" 324 user_message: "L'administrateur de votre serveur doit définir une clé pour l'API Pocket."
154"by contributing to the project:": "en contribuant au projet :" 325 authorize_message: "Vous pouvez importer vos données depuis votre compte Pocket. Vous n'avez qu'à cliquer sur le bouton ci-dessous et à autoriser wallabag à se connecter à getpocket.com."
155an issue lists all our needs: "un ticket recense tous nos besoins" 326 connect_to_pocket: 'Se connecter à Pocket et importer les données'
156via Paypal: "via Paypal" 327 wallabag_v1:
157Take wallabag with you: "Emportez wallabag avec vous" 328 page_title: 'Importer > Wallabag v1'
158Social: "Social" 329 description: 'Cet outil va importer toutes vos données de wallabag v1. Sur votre page de configuration de wallabag v1, cliquez sur "Export JSON" dans la section "Exporter vos données de wallabag". Vous allez récupérer un fichier "wallabag-export-1-xxxx-xx-xx.json".'
159powered by: "propulsé par" 330 how_to: "Choisissez le fichier de votre export wallabag v1 et cliquez sur le bouton ci-dessous pour l'importer."
160Contributors: "Contributeurs" 331 wallabag_v2:
161Thank you to contributors on wallabag web application: "Merci aux contributeurs de l'application web de wallabag" 332 page_title: 'Importer > Wallabag v2'
162Third-party libraries: Librairies tierces 333 description: "Cet outil va importer tous vos articles d'une autre instance de wallabag v2. Allez dans tous vos articles, puis, sur la barre latérale, cliquez sur \"JSON\". Vous allez récupérer un fichier \"All articles.json\""
163"Here are the list of third-party libraries used in wallabag (with their licenses):": "Voici la liste des dépendances utilisées dans wallabag (et leur license) :"
164Package: Dépendance
165License: Licence
166 334
167# Howto 335developer:
168Form: "Formulaire" 336 page_title: 'Développeur'
169Thanks to this form: "Grâce à ce formulaire" 337 welcome_message: "Bienvenue sur l'API de wallabag"
170Browser addons: "Extensions de navigateur" 338 documentation: 'Documentation'
171Mobile apps: "Applications smartphone" 339 how_to_first_app: 'Comment créer votre première application'
172Bookmarklet: "Bookmarklet" 340 full_documentation: "Voir la documentation complète de l'API"
173Standard Firefox Add-On: "Extension Firefox" 341 clients:
174Chrome Extension: "Extension Chrome" 342 title: 'Clients'
175download the application: "téléchargez l'application" 343 create_new: 'Créer une nouveau client'
176"Drag &amp; drop this link to your bookmarks bar:": "Glissez et déposez ce lien dans votre barre de favoris :" 344 existing_clients:
345 title: 'Les clients existants'
346 field_id: 'ID Client'
347 field_secret: 'Clé secrète'
348 field_uris: 'URLs de redirection'
349 field_grant_types: 'Type de privilège accordé'
350 no_client: 'Aucun client pour le moment'
351 remove:
352 warn_message_1: 'Vous avez la possibilité de supprimer un client. Cette action est IRREVERSIBLE !'
353 warn_message_2: "Si vous supprimez un client, toutes les applications qui l'utilisaient ne fonctionneront plus avec votre compte wallabag."
354 action: 'Supprimer ce client'
355 client:
356 page_title: 'Développeur > Nouveau client'
357 page_description: "Vous allez créer un nouveau client. Merci de remplir l'url de redirection vers votre application."
358 form:
359 redirect_uris_label: 'URLs de redirection'
360 save_label: 'Créer un nouveau client'
361 action_back: 'Retour'
362 client_parameter:
363 page_title: 'Développeur > Les paramètres de votre client'
364 page_description: 'Voilà les paramètres de votre client'
365 field_id: 'ID Client'
366 field_secret: 'Clé secrète'
367 back: 'Retour'
368 read_howto: 'Lire "comment créer ma première application"'
369 howto:
370 page_title: 'Développeur > Comment créer votre première application'
371 description:
372 paragraph_1: "Les commandes suivantes utilisent la <a href=\"https://github.com/jkbrzt/httpie\">librarie HTTPie</a>. Assurez-vous qu'elle soit installée avant de l'utiliser."
373 paragraph_2: "Vous avez besoin d'un token pour échanger entre votre application et l'API de wallabag."
374 paragraph_3: 'Pour créer un token, vous devez <a href="%link%">créer un nouveau client</a>.'
375 paragraph_4: 'Maintenant créez votre token (remplacer client_id, client_secret, username et password avec les bonnes valeurs):'
376 paragraph_5: "L'API vous retournera une réponse comme ça :"
377 paragraph_6: "L'access_token doit être utilisé pour faire un appel à l'API. Par exemple :"
378 paragraph_7: "Cet appel va retourner tous les articles de l'utilisateur."
379 paragraph_8: "Si vous voulez toutes les méthodes de l'API, jetez un oeil <a href=\"%link%\">à la documentation de l'API</a>."
380 back: 'Retour'
177 381
178# Flash messages 382validator:
179Information updated: "Vos informations personnelles ont bien été mises à jour" 383 password_must_match: 'Les deux mots de passe doivent être les mêmes'
180"Config saved. Some parameters will be considered after disconnection.": "Les paramètres ont bien été mis à jour. Certains seront pris en compte après déconnexion." 384 password_too_short: 'Le mot de passe doit contenir au moins 8 caractères'
181RSS information updated: "La configuration des flux RSS a bien été mise à jour" 385 password_wrong_value: 'Votre mot de passe actuel est faux'
182Password updated: "Votre mot de passe a bien été mis à jour" 386 item_per_page_too_high: "Ca ne va pas plaire à l'application"
183Entry starred: "Article ajouté dans les favoris" 387 rss_limit_too_hight: "Ca ne va pas plaire à l'application"
184Entry unstarred: "Article retiré des favoris"
185Entry archived: "Article marqué comme lu"
186Entry unarchived: "Article marqué comme non lu"
187Entry deleted: "Article supprimé"
188Tagging rule deleted: "Règle supprimée"
189Tagging rules updated: "Règles mises à jour"
190User "%username%" added: 'Utilisateur "%username%" ajouté'
191In demonstration mode, you can't change password for this user.: 'En démo, vous ne pouvez pas changer le mot de passe de cet utilisateur.'
192 388
193# Entry 389flashes:
194Mark as read: 'Marquer comme lu' 390 config:
195Favorite: 'Mettre en favori' 391 notice:
196back: 'Retour' 392 config_saved: 'Les paramètres ont bien été mis à jour. Certains seront pris en compte après déconnexion.'
197original article: 'Article original' 393 password_updated: 'Votre mot de passe a bien été mis à jour'
198Add a tag: 'Ajouter un tag' 394 password_not_updated_demo: "En démo, vous ne pouvez pas changer le mot de passe de cet utilisateur."
199Share: 'Partager' 395 user_updated: 'Vos informations personnelles ont bien été mises à jour'
200Download: 'Télécharger' 396 rss_updated: 'La configuration des flux RSS a bien été mise à jour'
201Does this article appear wrong?: "Est-ce que cet article s'affiche mal ?" 397 tagging_rules_updated: 'Règles mises à jour'
202Problems?: 'Un problème ?' 398 tagging_rules_deleted: 'Règle supprimée'
203Edit title: "Modifier le titre" 399 user_added: 'Utilisateur "%username%" ajouté'
204Re-fetch content: "Recharger le contenu" 400 rss_token_updated: 'Jeton RSS mis à jour'
205Tag added: "Tag ajouté" 401 entry:
206 402 notice:
207# Import 403 entry_already_saved: 'Article déjà sauvergardé le %date%'
208Welcome to wallabag importer. Please select your previous service that you want to migrate.: "Bienvenue dans l'outil de migration de wallabag. Choisissez ci-dessous le service depuis lequel vous souhaitez migrer." 404 entry_saved: 'Article enregistré'
209"This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag.": "Cet outil va importer toutes vos données de Pocket. Pocket ne nous autorise pas à récupérer le contenu depuis leur service, donc wallabag doit reparcourir chaque article pour récupérer son contenu." 405 entry_updated: 'Article mis à jour'
210"This importer will import all your wallabag v1 articles. On your config page, click on \"JSON export\" in the \"Export your wallabag data\" section. You will have a \"wallabag-export-1-xxxx-xx-xx.json\" file.": "Cet outil va importer toutes vos données de wallabag v1. Sur votre page de configuration de wallabag v1, cliquez sur \"Export JSON\" dans la section \"Exporter vos données de wallabag\". Vous allez récupérer un fichier \"wallabag-export-1-xxxx-xx-xx.json\"." 406 entry_reloaded: 'Article rechargé'
211"This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on \"JSON\". You will have a \"All articles.json\" file.": "Cet outil va importer tous vos articles d'une autre instance de wallabag v2. Allez dans tous vos articles, puis, sur la barre latérale, cliquez sur \"JSON\". Vous allez récupérer un fichier \"All articles.json\"" 407 entry_reload_failed: "Le rechargement de l'article a échoué"
212"You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.": "Vous pouvez importer vos données depuis votre compte Pocket. Vous n'avez qu'à cliquer sur le bouton ci-dessous et à autoriser wallabag à se connecter à getpocket.com." 408 entry_archived: 'Article marqué comme lu'
213Import > Pocket: "Import > Pocket" 409 entry_unarchived: 'Article marqué comme non lu'
214Pocket import isn't configured.: "L'import à partir de Pocket n'est pas configuré." 410 entry_starred: 'Article ajouté dans les favoris'
215You need to define %keyurls% a pocket_consumer_key %keyurle%.: "Vous devez définir %keyurls% une clé pour l'API Pocket %keyurle%." 411 entry_unstarred: 'Article retiré des favoris'
216Your server admin needs to define an API Key for Pocket.: L'administrateur de votre serveur doit définir une clé pour l'API Pocket." 412 entry_deleted: 'Article supprimé'
217Connect to Pocket and import data: "Se connecter à Pocket et importer les données" 413 tag:
218Please select your wallabag export and click on the below button to upload and import it.: "Choisissez le fichier de votre export wallabag v1 et cliquez sur le bouton ci-dessous pour l'importer." 414 notice:
219File: "Fichier" 415 tag_added: 'Tag ajouté'
220Upload file: "Importer le fichier" 416 import:
221Import contents: "Importer les contenus" 417 notice:
222Import: "Importer" 418 failed: "L'import a échoué, veuillez ré-essayer"
223Import > Wallabag v1: "Importer > Wallabag v1" 419 failed_on_file: "Erreur lors du traitement de l'import. Vérifier votre fichier."
224Import > Wallabag v2: "Importer > Wallabag v2" 420 summary: "Rapport d'import: %imported% importés, %skipped% déjà présent."
225Mark all as read ?: "Marquer tout comme lu ?" 421 developer:
226Mark all imported entries as read: "Marquer tous les contenus importés comme lus" 422 notice:
227 423 client_created: 'Nouveau client créé'
228# Quickstart 424 client_deleted: 'Client supprimé'
229Quickstart: Pour bien débuter
230Welcome to wallabag!: "Bienvenue sur wallabag !"
231We'll accompany you to visit wallabag and show you some features which can interess you.: "Nous allons vous accompagner pour vous faire faire le tour de la maison et vous présenter quelques fonctionnalités qui pourraient vous intéresser pour vous approprier cet outil."
232Follow us!: "Suivez-nous !"
233Configure the application: "Configurez l'application"
234Change language and design: "Changez la langue et le design de l'application"
235Enable RSS feeds: "Activez les flux RSS"
236First steps: "Premiers pas"
237Save your first article: "Ajoutez votre premier article"
238And classify it!: "Et rangez-le !"
239Migrate from an existing service: "Migrer depuis un service existant"
240You're using an other service? We'll help you to retrieve your data on wallabag.: "Vous êtes un ancien utilisateur d'un service existant ? Nous allons vous aider à récupérer vos données sur wallabag."
241Migrate from Pocket: "Migrer depuis Pocket"
242Migrate from wallabag v1: "Migrer depuis wallabag v1"
243Full documentation: "Documentation complète"
244Convert your articles into ePUB or PDF: "Convertissez vos articles en ePub ou en PDF"
245See how you can look for an article by using search engine and filters: "Apprenez à utiliser le moteur de recherche et les filtres pour retrouver l'article qui vous intéresse"
246And so many other articles!: "Et encore plein d'autres choses !"
247Support: "Support"
248If you need some help, we are here for you.: "Parce que vous avez peut-être besoin de nous poser une question, nous sommes disponibles pour vous."
249On GitHub: "Sur GitHub"
250By email: "Par email"
251On Gitter: "Sur Gitter"
252
253# developer
254Developer: Développeur
255Welcome to the wallabag API: "Bienvenue sur l'API de wallabag"
256How to create my first application: "Comment créer votre première application"
257View full API documentation: "Voir la documentation complète de l'API"
258Clients: "Clients"
259Create a new client: "Créer une nouveau client"
260Existing clients: "Les clients existants"
261Client ID: "ID Client"
262Client secret: "Clé secrète"
263Redirect URIs: "URLs de redirection"
264Grant type allowed: "Type de privilège accordé"
265You have the ability to remove this client. This action is IRREVERSIBLE !: "Vous avez la possibilité de supprimer un client. Cette action est IRREVERSIBLE !"
266If you remove it, every app configured with that client won't be able to auth on your wallabag.: "Si vous supprimez un client, toutes les applications qui l'utilisaient ne fonctionneront plus avec votre compte wallabag."
267Remove this client: "Supprimer ce client"
268New client: "Nouveau client"
269You are about to create a new client. Please fill the field below for the redirect URI of your application.: "Vous allez créer un nouveau client. Merci de remplir l'url de redirection vers votre application."
270Back: "Retour"
271Client parameters: "Les paramètres de votre client"
272New client created.: "Nouveau client créé."
273Here are your client parameters.: "Voilà les paramètres de votre client"
274Read the howto "Create my first application": "Lire \"comment créer ma première application\""
275Client deleted: "Client supprimé"
276No client yet.: "Aucun client pour le moment"
277"The following commands make use of the <a href=\"https://github.com/jkbrzt/httpie\">HTTPie library</a>. Make sure it is installed on your system before using it.": "Les commandes suivantes utilisent la <a href=\"https://github.com/jkbrzt/httpie\">librarie HTTPie</a>. Assurez-vous qu'elle soit installée avant de l'utiliser."
278You need a token to communicate between your 3rd application and wallabag API.: "Vous avez besoin d'un token pour échanger entre votre application et l'API de wallabag."
279"To create this token, you need <a href=\"%link%\">to create a new client</a>.": "Pour créer un token, vous devez <a href=\"%link%\">créer un nouveau client</a>."
280Now, create your token (replace client_id, client_secret, username and password with the good values):: "Maintenant créez votre token (remplacer client_id, client_secret, username et password avec les bonnes valeurs):"
281The API will return a response like this:: "L'API vous retournera une réponse comme ça:"
282The access_token is useful to do a call to the API endpoint. For example:: "L'access_token doit être utilisé pour faire un appel à l'API. Par exemple :"
283This call will return all the entries for your user.: "Cet appel va retourner tous les articles de l'utilisateur."
284"If you want to see all the API endpoints, you can have a look <a href=\"%link%\">to our API documentation</a>.": "Si vous voulez toutes les méthodes de l'API, jetez un oeil <a href=\"%link%\">à la documentation de l'API</a>."
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
index 61f05c89..daeac4bf 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
@@ -1,129 +1,424 @@
1#Login 1security:
2Keep me logged in: 'Zapamiętaj mnie' 2 login:
3Forgot your password?: 'Zapomniałeś hasła' 3 # page_title: 'Welcome to wallabag!'
4Login: 'Loguj' 4 keep_logged_in: 'Zapamiętaj mnie'
5Back to login: 'Wróć do logowania' 5 forgot_password: 'Zapomniałeś hasła'
6Send: 'Wyślij' 6 submit: 'Loguj'
7"Enter your email address below and we'll send you password reset instructions.": 'Wpisz swój adres email poniżej. Wyślemy Ci instrukcję resetowania hasła' 7 # register: 'Register'
8 username: 'Nazwa użytkownika'
9 password: 'Hasło'
10 # cancel: 'Cancel'
11 resetting:
12 description: "Wpisz swój adres email poniżej. Wyślemy Ci instrukcję resetowania hasła"
13 register:
14 # page_title: 'Create an account'
15 # go_to_account: 'Go to your account'
8 16
9# Menu 17menu:
10unread: 'nieprzeczytane' 18 left:
11starred: 'oznaczone gwiazdką' 19 unread: 'Nieprzeczytane'
12archive: 'archiwum' 20 starred: 'Oznaczone gwiazdką'
13all: 'wszystkie' 21 archive: 'Archiwum'
14tags: 'tagi' 22 all_articles: 'Wszystkie'
15config: 'konfiguracja' 23 config: 'Konfiguracja'
16howto: 'howto' 24 tags: 'Tagi'
17logout: 'wyloguj' 25 # internal_settings: 'Internal Settings'
18Filtered: 'Filtrowane' 26 # import: 'Import'
19About: 'O nas' 27 howto: 'Howto'
28 # developer: 'Developer'
29 logout: 'Wyloguj'
30 about: 'O nas'
31 search: 'Szukaj'
32 # save_link: 'Save a link'
33 back_to_unread: 'Powrót do nieprzeczytanych artykułów'
34 top:
35 add_new_entry: 'Dodaj nowy wpis'
36 search: 'Szukaj'
37 filter_entries: 'Filtruj wpisy'
38 # export: 'Export'
39 search_form:
40 input_label: 'Wpisz swoje zapytanie tutaj'
20 41
21# Header 42footer:
22Back to unread articles: 'Powrót do nieprzeczytanych artykułów' 43 wallabag:
23Add a new entry: 'Dodaj nowy wpis' 44 # elsewhere: 'Take wallabag with you'
24Search: 'Szukaj' 45 # social: 'Social'
25Filter entries: 'Filtruj wpisy' 46 # powered_by: 'powered by'
26Enter your search here: 'Wpisz swoje zapytanie tutaj:' 47 about: 'O nas'
27Save new entry: 'Zapisz nowy wpis'
28 48
29# Config screen 49config:
30Settings: 'Ustawienia' 50 page_title: 'Konfiguracja'
31User information: 'Informacje o użytkowniku' 51 tab_menu:
32Password: 'Hasło' 52 # settings: 'Settings'
33RSS: 'Kanał RSS' 53 rss: 'Kanał RSS'
34Add a user: 'Dodaj użytkownika' 54 user_info: 'Informacje o użytkowniku'
35Theme: 'Temat' 55 password: 'Hasło'
36Items per page: 'Ilość elementóœ na stronie' 56 # rules: 'Tagging rules'
37Language: 'Język' 57 new_user: 'Dodaj użytkownika'
38Save: 'Zapisz' 58 form:
39RSS token: 'Token RSS' 59 save: 'Zapisz'
40Name: 'Nazwa' 60 form_settings:
41Email: 'Adres email' 61 theme_label: 'Temat'
42No token: 'Brak tokena' 62 items_per_page_label: 'Ilość elementóœ na stronie'
43Reset your token: 'Zresetuj swojego tokena' 63 language_label: 'Język'
44Create your token: 'Stwórz tokena' 64 reading_speed:
45Rss limit: 'Limit RSS' 65 # label: 'Reading speed'
46RSS links: 'Link do RSS' 66 # help_message: 'You can use online tools to estimate your reading speed:'
47RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.': 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoium ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.‌' 67 # 100_word: 'I read ~100 words per minute'
48Old password: 'Stare hasło' 68 # 200_word: 'I read ~200 words per minute'
49New password: 'Nowe hasło' 69 # 300_word: 'I read ~300 words per minute'
50Repeat new password: 'Powtórz nowe hasło' 70 # 400_word: 'I read ~400 words per minute'
51Username: 'Nazwa użytkownika' 71 form_rss:
72 description: 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoium ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.‌'
73 token_label: 'Token RSS'
74 no_token: 'Brak tokena'
75 token_create: 'Stwórz tokena'
76 token_reset: 'Zresetuj swojego tokena'
77 rss_links: 'RSS links'
78 rss_link:
79 unread: 'nieprzeczytane'
80 starred: 'oznaczone gwiazdką'
81 archive: 'archiwum'
82 rss_limit: 'Link do RSS'
83 form_user:
84 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
85 name_label: 'Nazwa'
86 email_label: 'Adres email'
87 # twoFactorAuthentication_label: 'Two factor authentication'
88 form_password:
89 old_password_label: 'Stare hasło'
90 new_password_label: 'Nowe hasło'
91 repeat_new_password_label: 'Powtórz nowe hasło'
92 form_rules:
93 # if_label: 'if'
94 # then_tag_as_label: 'then tag as'
95 delete_rule_label: 'usuń'
96 # rule_label: 'Rule'
97 # tags_label: 'Tags'
98 # faq:
99 # title: 'FAQ'
100 # tagging_rules_definition_title: 'What does « tagging rules » mean?'
101 # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.'
102 # how_to_use_them_title: 'How do I use them?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
104 # variables_available_title: 'Which variables and operators can I use to write rules?'
105 # variables_available_description: 'The following variables and operators can be used to create tagging rules:'
106 # meaning: 'Meaning'
107 # variable_description:
108 # label: 'Variable'
109 # title: 'Title of the entry'
110 # url: 'URL of the entry'
111 # isArchived: 'Whether the entry is archived or not'
112 # isStarred: 'Whether the entry is starred or not'
113 # content: "The entry's content"
114 # language: "The entry's language"
115 # mimetype: "The entry's mime-type"
116 # readingTime: "The estimated entry's reading time, in minutes"
117 # domainName: 'The domain name of the entry'
118 # operator_description:
119 # label: 'Operator'
120 # less_than: 'Less than...'
121 # strictly_less_than: 'Strictly less than...'
122 # greater_than: 'Greater than...'
123 # strictly_greater_than: 'Strictly greater than...'
124 # equal_to: 'Equal to...'
125 # not_equal_to: 'Not equal to...'
126 # or: 'One rule OR another'
127 # and: 'One rule AND another'
128 # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
129 form_new_user:
130 username_label: 'Nazwa użytkownika'
131 password_label: 'Hasło'
132 repeat_new_password_label: 'Powtórz nowe hasło'
133 plain_password_label: '????'
134 email_label: 'Adres email'
52 135
53# Entries 136entry:
54'estimated reading time': 'Szacunkowy czas czytania' 137 page_titles:
55original: 'oryginał' 138 # unread: 'Unread entries'
56Toggle mark as read: 'Oznacz jako przeczytane' 139 # starred: 'Starred entries'
57Toggle favorite: 'Oznacz jako ulubione' 140 # archive: 'Archived entries'
58Delete: 'Usuń' 141 # filtered: 'Filtered entries'
142 list:
143 # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
144 reading_time: 'szacunkowy czas czytania'
145 reading_time_minutes: 'szacunkowy czas czytania: %readingTime% min'
146 reading_time_less_one_minute: 'szacunkowy czas czytania: <small class="inferieur">&lt;</small> 1 min'
147 original_article: 'oryginał'
148 toogle_as_read: 'Oznacz jako przeczytane'
149 toogle_as_star: 'Oznacz jako ulubione'
150 delete: 'Usuń'
151 # export_title: 'Export'
152 filters:
153 title: 'Filtry'
154 status_label: 'Status'
155 archived_label: 'Zarchiwizowane'
156 starred_label: 'Oznaczone gwiazdką'
157 preview_picture_label: 'Posiada podgląd obrazu'
158 preview_picture_help: 'Podgląd obrazu'
159 language_label: 'Język'
160 reading_time:
161 label: 'Czas czytania w minutach'
162 from: 'od'
163 to: 'do'
164 domain_label: 'Nazwa domeny'
165 created_at:
166 label: 'Czas stworzenia'
167 from: 'od'
168 to: 'do'
169 action:
170 clear: 'Wyczyść'
171 filter: 'Filtruj'
172 view:
173 left_menu:
174 # back_to_top: 'Back to top'
175 back_to_homepage: 'Cofnij'
176 set_as_read: 'Oznacz jako przeczytane'
177 # set_as_unread: 'Mark as unread'
178 set_as_favorite: 'Ulubione'
179 view_original_article: 'Oryginalny artykuł'
180 # re_fetch_content: 'Re-fetch content'
181 delete: 'Usuń'
182 add_a_tag: 'Dodaj tag'
183 share_content: 'Udostępnij'
184 share_email_label: 'Adres email'
185 download: 'Pobierz'
186 # print: 'Print'
187 problem:
188 label: 'Problemy'
189 description: 'Czy ten artykuł wygląda źle?'
190 edit_title: 'Edytuj tytuł'
191 original_article: 'oryginalny'
192 # annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
193 new:
194 page_title: 'Zapisz nowy wpis'
195 placeholder: 'http://website.com'
196 form_new:
197 url_label: Url
198 edit:
199 # page_title: 'Edit an entry'
200 # title_label: 'Title'
201 # url_label: 'Url'
202 # is_public_label: 'Public'
203 save_label: 'Zapisz'
59 204
60# Filters 205about:
61Filters: 'Filtry' 206 page_title: 'O nas'
62Status: 'Status' 207 top_menu:
63Archived: 'Zarchiwizowane' 208 who_behind_wallabag: 'Kto stoi za wallabag'
64Starred: 'Oznaczone gwiazdką' 209 getting_help: 'Pomoc'
65Preview picture: 'Podgląd obrazu' 210 helping: 'Pomóż wallabag'
66Has a preview picture: 'Posiada podgląd obrazu' 211 # contributors: 'Contributors'
67Reading time in minutes: 'Czas czytania w minutach' 212 # third_party: 'Third-party libraries'
68from: 'od' 213 who_behind_wallabag:
69to: 'do' 214 developped_by: 'Stworzony przez'
70website.com: 'website.com' 215 website: 'strona internetowa'
71Domain name: 'Nazwa domeny' 216 many_contributors: 'i wielu innych ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">na GitHubie</a>'
72Creation date: 'Czas stworzenia' 217 project_website: 'Stona projektu'
73dd/mm/yyyy: 'dd.mm.yyyy' 218 license: 'Licencja'
74Clear: 'Wyczyść' 219 version: 'Wersja'
75Filter: 'Filtruj' 220 getting_help:
221 documentation: 'Dokumentacja'
222 bug_reports: 'Raportuj błędy'
223 support: '<a href="https://support.wallabag.org">Na naszeej stronie wsparcia technicznego</a> lub <a href="https://github.com/wallabag/wallabag/issues">na GitHubie</a>'
224 helping:
225 description: 'wallabag jest darmowy i otwartoźródłowy. Możesz nam pomóc:'
226 by_contributing: 'przez przyłączenie się do projektu:'
227 by_contributing_2: 'lista wszystkich naszych potrzeb'
228 by_paypal: 'przez Paypal'
229 contributors:
230 # description: 'Thank you to contributors on wallabag web application'
231 third_party:
232 # description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
233 # package: 'Package'
234 license: 'Licencja'
76 235
77# About 236howto:
78Who is behind wallabag: 'Kto stoi za wallabag' 237 page_title: 'Howto'
79Getting help: 'Pomoc' 238 # page_description: 'There are several ways to save an article:'
80Helping wallabag: 'Pomóż wallabag' 239 top_menu:
81Developed by: 'Stworzony przez' 240 browser_addons: 'Wtyczki dla przeglądarki'
82website: 'strona internetowa' 241 mobile_apps: 'Aplikacje mobilne'
83And many others contributors ♥: ' i wielu innych ♥' 242 bookmarklet: 'Bookmarklet'
84on GitHub: 'na GitHubie' 243 form:
85Project website: 'Stona projektu' 244 description: 'Podziękuj przez ten formularz'
86License: 'Licencja' 245 browser_addons:
87Version: 'Wersja' 246 firefox: 'Standardowe rozszerzenia dla Firefox'
88Documentation: 'Dokumentacja' 247 chrome: 'Rozszerzenie dla Chrome'
89Bug reports: 'Raportuj błędy' 248 mobile_apps:
90On our support website: 'Na naszeej stronie wsparcia technicznego' 249 android:
91or: 'lub' 250 via_f_droid: 'przez F-Droid'
92'wallabag is free and opensource. You can help us:': 'wallabag jest darmowy i otwartoźródłowy. Możesz nam pomóc: ' 251 via_google_play: 'przez Google Play'
93'by contributing to the project:': 'przez przyłączenie się do projektu:' 252 ios: 'przez iTunes Store'
94an issue lists all our needs: 'lista wszystkich naszych potrzeb' 253 windows: 'przez Microsoft Store'
95via Paypal: 'przez PayPal' 254 bookmarklet:
255 description: 'Przeciągnij i upuść ten link na swój pasek zakładek'
96 256
97# Howto 257quickstart:
98Form: 'Od' 258 # page_title: 'Quickstart'
99Thanks to this form: 'Podziękuj przez ten formularz' 259 # intro:
100Browser addons: 'Wtyczki dla przeglądarki' 260 # title: 'Welcome to wallabag!'
101Mobile apps: 'Aplikacje mobilne' 261 # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you."
102Bookmarklet: 'Bookmarklet' 262 # paragraph_2: 'Follow us!'
103Standard Firefox Add-On: 'Standardowe rozszerzenia dla Firefox' 263 # configure:
104Chrome Extension: 'Rozszerzenie dla Chrome' 264 # title: 'Configure the application'
105download the application: 'Pobierz aplikację ' 265 # language: 'Change language and design'
106'Drag &amp; drop this link to your bookmarks bar:': 'Przeciągnij i upuść ten link na swój pasek zakładek' 266 # rss: 'Enable RSS feeds'
267 # tagging_rules: 'Write rules to automatically tag your articles'
268 # admin:
269 # title: 'Administration'
270 # description: 'As an administrator, you have privileges on wallabag. You can:'
271 # new_user: 'Create a new user'
272 # analytics: 'Configure analytics'
273 # sharing: 'Enable some parameters about article sharing'
274 # export: 'Configure export'
275 # import: 'Configure import'
276 # first_steps:
277 # title: 'First steps'
278 # new_article: 'Save your first article'
279 # unread_articles: 'And classify it!'
280 # migrate:
281 # title: 'Migrate from an existing service'
282 # description: "Are you using another service? We'll help you to retrieve your data on wallabag."
283 # pocket: 'Migrate from Pocket'
284 # wallabag_v1: 'Migrate from wallabag v1'
285 # wallabag_v2: 'Migrate from wallabag v2'
286 # developer:
287 # title: 'Developers'
288 # create_application: 'Create your third application'
289 # docs:
290 # title: 'Full documentation'
291 # annotate: 'Annotate your article'
292 # export: 'Convert your articles into ePUB or PDF'
293 # search_filters: 'See how you can look for an article by using search engine and filters'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?'
295 # all_docs: 'And so many other articles!'
296 # support:
297 # title: 'Support'
298 # description: 'If you need some help, we are here for you.'
299 # github: 'On GitHub'
300 # email: 'By email'
301 # gitter: 'On Gitter'
107 302
108# Flash messages 303tag:
109Information updated: 'Informacje zaktualizowane' 304 page_title: 'Tagi'
110Config saved. Some parameters will be considered after disconnection.': 'Konfiguracja zapisana. Niektóre parametry zostaną uznane po rozłączeniu' 305 list:
111RSS information updated: 'Informacje RSS zaktualizowane' 306 # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
112Password updated: 'Hasło zaktualizowane'
113Entry starred: 'Wpis oznaczony gwiazdką'
114Entry unstarred: 'Wpis odznaczony gwiazdką'
115Entry archived: 'Wpis dodany do archiwum'
116Entry unarchived: 'Wpis usunięty z archiwum'
117Entry deleted: 'Wpis usunięty'
118 307
119# Entry 308import:
120Mark as read: 'Oznacz jako przeczytane' 309 # page_title: 'Import'
121Favorite: 'Ulubione' 310 # page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
122back: 'Cofnij' 311 # action:
123original article: 'Oryginalny artykuł' 312 # import_contents: 'Import contents'
124Add a tag: 'Dodaj tag' 313 # form:
125Share: 'Udostępnij' 314 # mark_as_read_title: 'Mark all as read?'
126Download: 'Pobierz' 315 # mark_as_read_label: 'Mark all imported entries as read'
127Does this article appear wrong?: 'Czy ten artykuł wygląda źle?' 316 # file_label: 'File'
128Problems?: 'Problemy' 317 # save_label: 'Upload file'
129Edit title: 'Edytuj tytuł' 318 # pocket:
319 # page_title: 'Import > Pocket'
320 # description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag."
321 # config_missing:
322 # description: "Pocket import isn't configured."
323 # admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
324 # user_message: 'Your server admin needs to define an API Key for Pocket.'
325 # authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.'
326 # connect_to_pocket: 'Connect to Pocket and import data'
327 # wallabag_v1:
328 # page_title: 'Import > Wallabag v1'
329 # description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'
330 # how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
331 # wallabag_v2:
332 # page_title: 'Import > Wallabag v2'
333 # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
334
335developer:
336 # page_title: 'Developer'
337 # welcome_message: 'Welcome to the wallabag API'
338 # documentation: 'Documentation'
339 # how_to_first_app: 'How to create my first application'
340 # full_documentation: 'View full API documentation'
341 # clients:
342 # title: 'Clients'
343 # create_new: 'Create a new client'
344 # existing_clients:
345 # title: 'Existing clients'
346 # field_id: 'Client ID'
347 # field_secret: 'Client secret'
348 # field_uris: 'Redirect URIs'
349 # field_grant_types: 'Grant type allowed'
350 # no_client: 'No client yet.'
351 # remove:
352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
354 # action: 'Remove this client'
355 # client:
356 # page_title: 'Developer > New client'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
358 # form:
359 # redirect_uris_label: 'Redirect URIs'
360 # save_label: 'Create a new client'
361 # action_back: 'Cofnij'
362 # client_parameter:
363 # page_title: 'Developer > Client parameters'
364 # page_description: 'Here are your client parameters.'
365 # field_id: 'Client ID'
366 # field_secret: 'Client secret'
367 # back: 'Cofnij'
368 # read_howto: 'Read the howto "Create my first application"'
369 # howto:
370 # page_title: 'Developer > How to create my first application'
371 # description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):'
376 # paragraph_5: 'The API will return a response like this:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:'
378 # paragraph_7: 'This call will return all the entries for your user.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.'
380 # back: 'Cofnij'
381
382validator:
383 password_must_match: 'Hasło w polach musi być takie same'
384 password_too_short: 'Hasło powinno mieć minimum 8 znaków długości'
385 # password_wrong_value: 'Wrong value for your current password'
386 # item_per_page_too_high: 'This will certainly kill the app'
387 # rss_limit_too_hight: 'This will certainly kill the app'
388
389flashes:
390 config:
391 notice:
392 config_saved: 'Konfiguracja zapisana. Niektóre parametry zostaną uznane po rozłączeniu'
393 password_updated: 'Hasło zaktualizowane'
394 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
395 user_updated: 'Informacje zaktualizowane'
396 rss_updated: 'Informacje RSS zaktualizowane'
397 # tagging_rules_updated: 'Tagging rules updated'
398 # tagging_rules_deleted: 'Tagging rule deleted'
399 # user_added: 'User "%username%" added'
400 # rss_token_updated: 'RSS token updated'
401 entry:
402 notice:
403 # entry_already_saved: 'Entry already saved on %date%'
404 # entry_saved: 'Entry saved'
405 # entry_updated: 'Entry updated'
406 # entry_reloaded: 'Entry reloaded'
407 # entry_reload_failed: 'Failed to reload entry'
408 entry_archived: 'Wpis dodany do archiwum'
409 entry_unarchived: 'Wpis usunięty z archiwum'
410 entry_starred: 'Wpis oznaczony gwiazdką'
411 entry_unstarred: 'Wpis odznaczony gwiazdką'
412 entry_deleted: 'Wpis usunięty'
413 tag:
414 notice:
415 # tag_added: 'Tag added'
416 import:
417 notice:
418 # failed: 'Import failed, please try again.'
419 # failed_on_file: 'Error while processing import. Please verify your import file.'
420 # summary: 'Import summary: %imported% imported, %skipped% already saved.'
421 developer:
422 notice:
423 # client_created: 'New client created.'
424 # client_deleted: 'Client deleted'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
index d779bcbd..af4470b2 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
@@ -1,129 +1,424 @@
1#Login 1security:
2Keep me logged in: 'Ține-mă logat' 2 login:
3Forgot your password?: 'Ți-ai uitat parola?' 3 # page_title: 'Welcome to wallabag!'
4Login: 'Logare' 4 keep_logged_in: 'Ține-mă logat'
5Back to login: 'Înapoi la logare' 5 forgot_password: 'Ți-ai uitat parola?'
6Send: 'Trimite' 6 submit: 'Logare'
7"Enter your email address below and we'll send you password reset instructions.": "Introduceți adresa de e-mail, iar noi vă vom trimite instrucțiunile pentru resetarea parolei." 7 # register: 'Register'
8 username: 'Nume de utilizator'
9 password: 'Parolă'
10 # cancel: 'Cancel'
11 resetting:
12 description: "Introduceți adresa de e-mail, iar noi vă vom trimite instrucțiunile pentru resetarea parolei."
13 register:
14 # page_title: 'Create an account'
15 # go_to_account: 'Go to your account'
8 16
9# Menu 17menu:
10unread: 'necitite' 18 left:
11starred: 'cu steluță' 19 unread: 'Necitite'
12archive: 'arhivă' 20 starred: 'Cu steluță'
13all: 'toate' 21 archive: 'Arhivă'
14tags: 'tag-uri' 22 all_articles: 'Toate'
15config: 'configurație' 23 config: 'Configurație'
16howto: 'cum să' 24 tags: 'Tag-uri'
17logout: 'delogare' 25 # internal_settings: 'Internal Settings'
18Filtered: 'Filtrate' 26 # import: 'Import'
19About: 'Despre' 27 howto: 'Cum să'
28 # developer: 'Developer'
29 logout: 'cum să'
30 about: 'Despre'
31 search: 'Căutare'
32 # save_link: 'Save a link'
33 back_to_unread: 'Înapoi la articolele necitite'
34 top:
35 add_new_entry: 'Introdu un nou articol'
36 search: 'Căutare'
37 filter_entries: 'Filtrează articolele'
38 # export: 'Export'
39 search_form:
40 input_label: 'Introdu căutarea ta'
20 41
21# Header 42footer:
22Back to unread articles: 'Înapoi la articolele necitite' 43 wallabag:
23Add a new entry: 'Introdu un nou articol' 44 # elsewhere: 'Take wallabag with you'
24Search: 'Căutare' 45 # social: 'Social'
25Filter entries: 'Filtrează articolele' 46 # powered_by: 'powered by'
26Enter your search here: 'Introdu căutarea ta' 47 about: 'Despre'
27Save new entry: 'Salvează un nou articol'
28 48
29# Config screen 49config:
30Settings: 'Setări' 50 page_title: 'Configurație'
31User information: 'Informații despre utilizator' 51 tab_menu:
32Password: 'Parolă' 52 settings: 'Setări'
33RSS: 'RSS' 53 rss: 'RSS'
34Add a user: 'Crează un utilizator' 54 user_info: 'Informații despre utilizator'
35Theme: 'Temă' 55 password: 'Parolă'
36Items per page: 'Articole pe pagină' 56 # rules: 'Tagging rules'
37Language: 'Limbă' 57 new_user: 'Crează un utilizator'
38Save: 'Salvează' 58 form:
39RSS token: 'RSS-Token' 59 save: 'Salvează'
40Name: 'Nume' 60 form_settings:
41Email: 'E-mail' 61 theme_label: 'Temă'
42No token: 'Fără token' 62 items_per_page_label: 'Articole pe pagină'
43Reset your token: 'Resetează-ți token-ul' 63 language_label: 'Limbă'
44Create your token: 'Crează-ți token' 64 reading_speed:
45Rss limit: 'Limită RSS' 65 # label: 'Reading speed'
46RSS links: 'Link-uri RSS' 66 # help_message: 'You can use online tools to estimate your reading speed:'
47'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.': 'Feed-urile RSS oferite de wallabag îți permit să-ți citești articolele salvate în reader-ul tău preferat RSS.' 67 # 100_word: 'I read ~100 words per minute'
48Old password: 'Parola veche' 68 # 200_word: 'I read ~200 words per minute'
49New password: 'Parola nouă' 69 # 300_word: 'I read ~300 words per minute'
50Repeat new password: 'Repetă parola' 70 # 400_word: 'I read ~400 words per minute'
51Username: 'Nume de utilizator' 71 form_rss:
72 description: 'Feed-urile RSS oferite de wallabag îți permit să-ți citești articolele salvate în reader-ul tău preferat RSS.'
73 token_label: 'RSS-Token'
74 no_token: 'Fără token'
75 token_create: 'Crează-ți token'
76 token_reset: 'Resetează-ți token-ul'
77 rss_links: 'Link-uri RSS'
78 rss_link:
79 unread: 'unread'
80 starred: 'starred'
81 archive: 'archived'
82 rss_limit: 'Limită RSS'
83 form_user:
84 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
85 name_label: 'Nume'
86 email_label: 'E-mail'
87 # twoFactorAuthentication_label: 'Two factor authentication'
88 form_password:
89 old_password_label: 'Parola veche'
90 new_password_label: 'Parola nouă'
91 repeat_new_password_label: 'Repeat new password'
92 form_rules:
93 # if_label: 'if'
94 # then_tag_as_label: 'then tag as'
95 # delete_rule_label: 'delete'
96 # rule_label: 'Rule'
97 # tags_label: 'Tags'
98 # faq:
99 # title: 'FAQ'
100 # tagging_rules_definition_title: 'What does « tagging rules » mean?'
101 # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.'
102 # how_to_use_them_title: 'How do I use them?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
104 # variables_available_title: 'Which variables and operators can I use to write rules?'
105 # variables_available_description: 'The following variables and operators can be used to create tagging rules:'
106 # meaning: 'Meaning'
107 # variable_description:
108 # label: 'Variable'
109 # title: 'Title of the entry'
110 # url: 'URL of the entry'
111 # isArchived: 'Whether the entry is archived or not'
112 # isStarred: 'Whether the entry is starred or not'
113 # content: "The entry's content"
114 # language: "The entry's language"
115 # mimetype: "The entry's mime-type"
116 # readingTime: "The estimated entry's reading time, in minutes"
117 # domainName: 'The domain name of the entry'
118 # operator_description:
119 # label: 'Operator'
120 # less_than: 'Less than...'
121 # strictly_less_than: 'Strictly less than...'
122 # greater_than: 'Greater than...'
123 # strictly_greater_than: 'Strictly greater than...'
124 # equal_to: 'Equal to...'
125 # not_equal_to: 'Not equal to...'
126 # or: 'One rule OR another'
127 # and: 'One rule AND another'
128 # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
129 form_new_user:
130 username_label: 'Nume de utilizator'
131 password_label: 'Parolă'
132 repeat_new_password_label: 'Repeat new password'
133 plain_password_label: '????'
134 email_label: 'E-mail'
52 135
53# Entries 136entry:
54'estimated reading time': 'timp estimat de citire' 137 page_titles:
55original: original 138 # unread: 'Unread entries'
56Toggle mark as read: 'Comută marcat ca citit' 139 # starred: 'Starred entries'
57Toggle favorite: 'Comută marcat ca favorit' 140 # archive: 'Archived entries'
58Delete: 'Șterge' 141 # filtered: 'Filtered entries'
142 list:
143 # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
144 reading_time: 'timp estimat de citire'
145 reading_time_minutes: 'timp estimat de citire: %readingTime% min'
146 reading_time_less_one_minute: 'timp estimat de citire: <small class="inferieur">&lt;</small> 1 min'
147 original_article: 'original'
148 toogle_as_read: 'Comută marcat ca citit'
149 toogle_as_star: 'Comută marcat ca favorit'
150 delete: 'Șterge'
151 # export_title: 'Export'
152 filters:
153 title: 'Filtre'
154 status_label: 'Status'
155 archived_label: 'Arhivat'
156 starred_label: 'Steluțe'
157 preview_picture_label: 'Are o imagine de previzualizare'
158 preview_picture_help: 'Previzualizare imagine'
159 language_label: 'Limbă'
160 reading_time:
161 label: 'Timp de citire în minute'
162 from: 'de la'
163 to: 'către'
164 domain_label: 'Nume domeniu'
165 created_at:
166 label: 'Data creării'
167 from: 'de la'
168 to: 'către'
169 action:
170 clear: 'Șterge'
171 filter: 'Filtru'
172 view:
173 left_menu:
174 # back_to_top: 'Back to top'
175 back_to_homepage: 'Înapoi'
176 set_as_read: 'Marchează ca citit'
177 # set_as_unread: 'Mark as unread'
178 set_as_favorite: 'Favorit'
179 view_original_article: 'Articol original'
180 # re_fetch_content: 'Re-fetch content'
181 delete: 'Șterge'
182 add_a_tag: 'Adaugă un tag'
183 share_content: 'Dă mai departe'
184 share_email_label: 'E-mail'
185 download: 'Descarcă'
186 # print: 'Print'
187 problem:
188 label: 'Probleme?'
189 description: 'Îți pare ciudat articolul?'
190 edit_title: 'Editează titlul'
191 original_article: 'original'
192 # annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
193 new:
194 page_title: 'Salvează un nou articol'
195 placeholder: 'http://website.com'
196 form_new:
197 url_label: Url
198 edit:
199 # page_title: 'Edit an entry'
200 # title_label: 'Title'
201 url_label: 'Url'
202 # is_public_label: 'Public'
203 save_label: 'Salvează'
59 204
60# Filters 205about:
61Filters: 'Filtre' 206 page_title: 'Despre'
62Status: 'Status' 207 top_menu:
63Archived: 'Arhivat' 208 who_behind_wallabag: 'Cine e în spatele wallabag'
64Starred: 'Steluțe' 209 getting_help: 'Ajutor'
65Preview picture: 'Previzualizare imagine' 210 helping: 'Cum să ajuți wallabag'
66Has a preview picture: 'Are o imagine de previzualizare' 211 # contributors: 'Contributors'
67Reading time in minutes: 'Timp de citire în minute' 212 # third_party: 'Third-party libraries'
68from: 'de la' 213 who_behind_wallabag:
69to: 'către' 214 developped_by: 'Dezvoltat de'
70website.com: 'website.com' 215 website: 'website'
71Domain name: 'Nume domeniu' 216 many_contributors: 'Și mulți alți contribuitori ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">pe Github</a>'
72Creation date: 'Data creării' 217 project_website: 'Website-ul proiectului'
73dd/mm/yyyy: 'zz/ll/aaaa' 218 license: 'Licență'
74Clear: 'Șterge' 219 version: 'Versiune'
75Filter: 'Filtru' 220 getting_help:
221 documentation: 'Documentație'
222 bug_reports: 'Bug-uri'
223 support: '<a href="https://support.wallabag.org">Pe site-ul nostru de suport</a> sau <a href="https://github.com/wallabag/wallabag/issues">pe GitHub</a>'
224 helping:
225 description: 'wallabag este gratis și Open-Source. Cum ne poți ajuta:'
226 by_contributing: 'contribuind la proiect:'
227 by_contributing_2: 'o problemă ne listează toate nevoile:'
228 by_paypal: 'prin Paypal'
229 contributors:
230 # description: 'Thank you to contributors on wallabag web application'
231 third_party:
232 # description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
233 # package: 'Package'
234 license: 'Licență'
76 235
77# About 236howto:
78Who is behind wallabag: "Cine e în spatele wallabag" 237 page_title: 'Cum să'
79Getting help: "Ajutor" 238 # page_description: 'There are several ways to save an article:'
80Helping wallabag: "Cum să ajuți wallabag" 239 top_menu:
81Developed by: "Dezvoltat de" 240 browser_addons: 'Add-On-uri de Browser'
82website: "website" 241 mobile_apps: 'Aplicații mobile'
83And many others contributors ♥: "Și mulți alți contribuitori ♥" 242 bookmarklet: 'Bookmarklet'
84on GitHub: "pe GitHub" 243 form:
85Project website: "Website-ul proiectului" 244 description: 'Mulțumită acestui formular'
86License: "Licență" 245 browser_addons:
87Version: "Versiune" 246 firefox: 'Add-On standard de Firefox'
88Documentation: "Documentație" 247 chrome: 'Extensie Chrome'
89Bug reports: "Bug-uri" 248 mobile_apps:
90On our support website: "Pe site-ul nostru de suport" 249 android:
91or: "sau" 250 via_f_droid: 'prin F-Droid'
92"wallabag is free and opensource. You can help us:": "wallabag este gratis și Open-Source. Cum ne poți ajuta:" 251 via_google_play: 'prin Google Play'
93"by contributing to the project:": "contribuind la proiect:" 252 ios: 'prin iTunes Store'
94an issue lists all our needs: "o problemă ne listează toate nevoile:" 253 windows: 'prin Microsoft Store'
95via Paypal: "prin PayPal" 254 bookmarklet:
255 description: 'Drag &amp; drop acest link în bara de bookmark-uri:'
96 256
97# Howto 257quickstart:
98Form: Formular 258 # page_title: 'Quickstart'
99Thanks to this form: "Mulțumită acestui formular" 259 # intro:
100Browser addons: "Add-On-uri de Browser" 260 # title: 'Welcome to wallabag!'
101Mobile apps: "Aplicații mobile" 261 # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you."
102Bookmarklet: "Bookmarklet" 262 # paragraph_2: 'Follow us!'
103Standard Firefox Add-On: "Add-On standard de Firefox" 263 # configure:
104Chrome Extension: "Extensie Chrome" 264 # title: 'Configure the application'
105download the application: "descarcă aplicația" 265 # language: 'Change language and design'
106"Drag &amp; drop this link to your bookmarks bar:": "Drag &amp; drop acest link în bara de bookmark-uri:" 266 # rss: 'Enable RSS feeds'
267 # tagging_rules: 'Write rules to automatically tag your articles'
268 # admin:
269 # title: 'Administration'
270 # description: 'As an administrator, you have privileges on wallabag. You can:'
271 # new_user: 'Create a new user'
272 # analytics: 'Configure analytics'
273 # sharing: 'Enable some parameters about article sharing'
274 # export: 'Configure export'
275 # import: 'Configure import'
276 # first_steps:
277 # title: 'First steps'
278 # new_article: 'Save your first article'
279 # unread_articles: 'And classify it!'
280 # migrate:
281 # title: 'Migrate from an existing service'
282 # description: "Are you using another service? We'll help you to retrieve your data on wallabag."
283 # pocket: 'Migrate from Pocket'
284 # wallabag_v1: 'Migrate from wallabag v1'
285 # wallabag_v2: 'Migrate from wallabag v2'
286 # developer:
287 # title: 'Developers'
288 # create_application: 'Create your third application'
289 # docs:
290 # title: 'Full documentation'
291 # annotate: 'Annotate your article'
292 # export: 'Convert your articles into ePUB or PDF'
293 # search_filters: 'See how you can look for an article by using search engine and filters'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?'
295 # all_docs: 'And so many other articles!'
296 # support:
297 # title: 'Support'
298 # description: 'If you need some help, we are here for you.'
299 # github: 'On GitHub'
300 # email: 'By email'
301 # gitter: 'On Gitter'
107 302
108# Flash messages 303tag:
109Information updated: "Informație actualizată" 304 page_title: 'Tag-uri'
110"Config saved. Some parameters will be considered after disconnection.": "configurație salvată. Unii parametrii vor fi considerați după deconectare." 305 list:
111RSS information updated: "Informație RSS actualizată" 306 # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
112Password updated: "Parolă actualizată"
113Entry starred: "Articol adăugat la favorite"
114Entry unstarred: "Articol șters de la favorite"
115Entry archived: "Articol arhivat"
116Entry unarchived: "Articol dezarhivat"
117Entry deleted: "Articol șters"
118 307
119# Entry 308import:
120Mark as read: 'Marchează ca citit' 309 # page_title: 'Import'
121Favorite: 'Favorit' 310 # page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
122back: 'înapoi' 311 # action:
123original article: 'articol original' 312 # import_contents: 'Import contents'
124Add a tag: 'Adaugă un tag' 313 # form:
125Share: 'Dă mai departe' 314 # mark_as_read_title: 'Mark all as read?'
126Download: 'Descarcă' 315 # mark_as_read_label: 'Mark all imported entries as read'
127Does this article appear wrong?: "Îți pare ciudat articolul?" 316 # file_label: 'File'
128Problems?: 'Probleme?' 317 # save_label: 'Upload file'
129Edit title: "Editează titlul" 318 # pocket:
319 # page_title: 'Import > Pocket'
320 # description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag."
321 # config_missing:
322 # description: "Pocket import isn't configured."
323 # admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
324 # user_message: 'Your server admin needs to define an API Key for Pocket.'
325 # authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.'
326 # connect_to_pocket: 'Connect to Pocket and import data'
327 # wallabag_v1:
328 # page_title: 'Import > Wallabag v1'
329 # description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'
330 # how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
331 # wallabag_v2:
332 # page_title: 'Import > Wallabag v2'
333 # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
334
335developer:
336 # page_title: 'Developer'
337 # welcome_message: 'Welcome to the wallabag API'
338 # documentation: 'Documentation'
339 # how_to_first_app: 'How to create my first application'
340 # full_documentation: 'View full API documentation'
341 # clients:
342 # title: 'Clients'
343 # create_new: 'Create a new client'
344 # existing_clients:
345 # title: 'Existing clients'
346 # field_id: 'Client ID'
347 # field_secret: 'Client secret'
348 # field_uris: 'Redirect URIs'
349 # field_grant_types: 'Grant type allowed'
350 # no_client: 'No client yet.'
351 # remove:
352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
354 # action: 'Remove this client'
355 # client:
356 # page_title: 'Developer > New client'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
358 # form:
359 # redirect_uris_label: 'Redirect URIs'
360 # save_label: 'Create a new client'
361 # action_back: 'Back'
362 # client_parameter:
363 # page_title: 'Developer > Client parameters'
364 # page_description: 'Here are your client parameters.'
365 # field_id: 'Client ID'
366 # field_secret: 'Client secret'
367 # back: 'Back'
368 # read_howto: 'Read the howto "Create my first application"'
369 # howto:
370 # page_title: 'Developer > How to create my first application'
371 # description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):'
376 # paragraph_5: 'The API will return a response like this:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:'
378 # paragraph_7: 'This call will return all the entries for your user.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.'
380 # back: 'Back'
381
382validator:
383 password_must_match: 'Câmpurile destinate parolelor trebuie să se potrivească'
384 password_too_short: 'Parola ar trebui să conțină cel puțin 8 caractere'
385 # password_wrong_value: 'Wrong value for your current password'
386 # item_per_page_too_high: 'This will certainly kill the app'
387 # rss_limit_too_hight: 'This will certainly kill the app'
388
389flashes:
390 config:
391 notice:
392 config_saved: 'Configurație salvată. Unii parametrii vor fi considerați după deconectare.'
393 password_updated: 'Parolă actualizată'
394 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
395 user_updated: 'Informație actualizată'
396 rss_updated: 'Informație RSS actualizată'
397 # tagging_rules_updated: 'Tagging rules updated'
398 # tagging_rules_deleted: 'Tagging rule deleted'
399 # user_added: 'User "%username%" added'
400 # rss_token_updated: 'RSS token updated'
401 entry:
402 notice:
403 # entry_already_saved: 'Entry already saved on %date%'
404 # entry_saved: 'Entry saved'
405 # entry_updated: 'Entry updated'
406 # entry_reloaded: 'Entry reloaded'
407 # entry_reload_failed: 'Failed to reload entry'
408 entry_archived: 'Articol arhivat'
409 entry_unarchived: 'Articol dezarhivat'
410 entry_starred: 'Articol adăugat la favorite'
411 entry_unstarred: 'Articol șters de la favorite'
412 entry_deleted: 'Articol șters'
413 tag:
414 notice:
415 # tag_added: 'Tag added'
416 import:
417 notice:
418 # failed: 'Import failed, please try again.'
419 # failed_on_file: 'Error while processing import. Please verify your import file.'
420 # summary: 'Import summary: %imported% imported, %skipped% already saved.'
421 developer:
422 notice:
423 # client_created: 'New client created.'
424 # client_deleted: 'Client deleted'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
index 6d9bf0db..5d859950 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
@@ -1,226 +1,424 @@
1# Login 1security:
2Keep me logged in: 'Oturumumu açık tut' 2 login:
3Forgot your password?: 'Şifrenizi mi unuttunuz?' 3 page_title: 'wallabag'
4Login: 'Giriş Yap' 4 keep_logged_in: 'Oturumumu açık tut'
5Back to login: 'Giriş yapma ekranına geri dön' 5 forgot_password: 'Şifrenizi mi unuttunuz?'
6Send: 'Gönder' 6 submit: 'Giriş Yap'
7Register: 'Kayıt Ol' 7 register: 'Kayıt Ol'
8 username: 'Kullanıcı adı'
9 password: 'Şifre'
10 # cancel: 'Cancel'
11 resetting:
12 # description: "Enter your email address below and we'll send you password reset instructions."
13 register:
14 # page_title: 'Create an account'
15 # go_to_account: 'Go to your account'
8 16
9# Menu 17menu:
10unread: 'Okunmayan' 18 left:
11starred: 'Favoriler' 19 unread: 'Okunmayan'
12archive: 'Arşiv' 20 starred: 'Favoriler'
13all: 'Hepsi' 21 archive: 'Arşiv'
14tags: 'Etiketler' 22 all_articles: 'Hepsi'
15config: 'Yapılandırma' 23 config: 'Yapılandırma'
16import: 'İçe Aktar' 24 tags: 'Etiketler'
17howto: 'Yardım' 25 # internal_settings: 'Internal Settings'
18logout: 'Çıkış Yap' 26 import: 'İçe Aktar'
19Filtered: 'Filtreli' 27 howto: 'Yardım'
20About: 'Hakkımızda' 28 # developer: 'Developer'
29 logout: 'Çıkış Yap'
30 about: 'Hakkımızda'
31 search: 'Ara'
32 # save_link: 'Save a link'
33 back_to_unread: 'Okunmayan makalelere geri dön'
34 top:
35 add_new_entry: 'Yeni bir makale ekle'
36 search: 'Ara'
37 filter_entries: 'Filtrele'
38 export: 'Dışa Aktar'
39 search_form:
40 input_label: 'Aramak istediğiniz herhangi bir şey yazın'
21 41
22# Header 42footer:
23Back to unread articles: 'Okunmayan makalelere geri dön' 43 wallabag:
24Add a new entry: 'Yeni bir makale ekle' 44 elsewhere: 'wallabag her an seninle'
25Search: 'Ara' 45 social: 'Sosyal'
26Filter entries: 'Filtrele' 46 powered_by: 'powered by'
27Enter your search here: 'Aramak istediğiniz herhangi bir şey yazın' 47 about: 'Hakkımızda'
28Save new entry: 'Yeni makaleyi kaydet'
29 48
30# Config screen 49config:
31Settings: 'Ayarlar' 50 page_title: 'Yapılandırma'
32User information: 'Kullanıcı bilgileri' 51 tab_menu:
33Tagging rules: "Etiketleme kuralları" 52 settings: 'Ayarlar'
34Password: 'Şifre' 53 rss: 'RSS'
35RSS: 'RSS' 54 user_info: 'Kullanıcı bilgileri'
36Add a user: 'Bir kullanıcı ekle' 55 password: 'Şifre'
37Theme: 'Tema' 56 rules: 'Etiketleme kuralları'
38Items per page: "Sayfa başına makale sayısı" 57 new_user: 'Bir kullanıcı ekle'
39Language: 'Dil' 58 form:
40Save: 'Kaydet' 59 save: 'Kaydet'
41RSS token: 'RSS belirteci (token)' 60 form_settings:
42Name: 'İsim' 61 theme_label: 'Tema'
43Email: 'E-posta' 62 items_per_page_label: 'Sayfa başına makale sayısı'
44No token: 'Belirteç (token) yok' 63 language_label: 'Dil'
45Reset your token: 'Belirteci (token) sıfırla' 64 reading_speed:
46Create your token: 'Yeni belirteç (token) oluştur' 65 # label: 'Reading speed'
47Rss limit: "RSS içeriğinden talep edilecek makale limiti" 66 # help_message: 'You can use online tools to estimate your reading speed:'
48RSS links: 'RSS akış bağlantıları' 67 # 100_word: 'I read ~100 words per minute'
49"RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.": "wallabag RSS akışı kaydetmiş olduğunuz makalelerini favori RSS okuyucunuzda görüntülemenizi sağlar. Bunu yapabilmek için öncelikle belirteç (token) oluşturmalısınız." 68 # 200_word: 'I read ~200 words per minute'
50Old password: 'Eski şifre' 69 # 300_word: 'I read ~300 words per minute'
51New password: 'Yeni şifre' 70 # 400_word: 'I read ~400 words per minute'
52Repeat new password: 'Yeni şifrenin tekrarı' 71 form_rss:
53Username: "Kullanıcı adı" 72 description: 'wallabag RSS akışı kaydetmiş olduğunuz makalelerini favori RSS okuyucunuzda görüntülemenizi sağlar. Bunu yapabilmek için öncelikle belirteç (token) oluşturmalısınız.'
54Two factor authentication: "İki adımlı doğrulama" 73 token_label: 'RSS belirteci (token)'
55"Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion": "İki adımlı doğrulamayı aktifleştirdiğinizde, her yeni güvenilmeyen bağlantılarda size e-posta ile bir kod alacaksınız." 74 no_token: 'Belirteç (token) yok'
56Baggy: "Baggy" 75 token_create: 'Yeni belirteç (token) oluştur'
57Material: "Material" 76 token_reset: 'Belirteci (token) sıfırla'
58English: "İngilizce" 77 rss_links: 'RSS akış bağlantıları'
59Français: "Fransızca" 78 rss_link:
60Deutsch: "Almanca" 79 unread: 'okunmayan'
61Türkçe: "Türkçe" 80 starred: 'favoriler'
81 archive: 'arşiv'
82 rss_limit: 'RSS içeriğinden talep edilecek makale limiti'
83 form_user:
84 two_factor_description: "İki adımlı doğrulamayı aktifleştirdiğinizde, her yeni güvenilmeyen bağlantılarda size e-posta ile bir kod alacaksınız."
85 name_label: 'İsim'
86 email_label: 'E-posta'
87 twoFactorAuthentication_label: 'İki adımlı doğrulama'
88 form_password:
89 old_password_label: 'Eski şifre'
90 new_password_label: 'Yeni şifre'
91 repeat_new_password_label: 'Yeni şifrenin tekrarı'
92 form_rules:
93 # if_label: 'if'
94 # then_tag_as_label: 'then tag as'
95 # delete_rule_label: 'delete'
96 rule_label: 'Kural'
97 tags_label: 'Etiketler'
98 faq:
99 title: 'S.S.S.'
100 tagging_rules_definition_title: '« etiketleme kuralları » ne anlama geliyor?'
101 # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.'
102 how_to_use_them_title: 'Bunu nasıl kullanırım?'
103 # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
104 variables_available_title: 'Kurallar içerisinde hangi değişken ve operatörleri kullanabilirim?'
105 variables_available_description: 'Etiket kuralı oluşturmak istediğinizde aşağıdaki değişken ve operatörleri kullanabilirsin:'
106 meaning: 'Anlamı'
107 variable_description:
108 label: 'Değişken'
109 title: 'Makalenin başlığı'
110 url: 'Makalenin bağlantısı'
111 isArchived: 'Makale arşivlendi mi? Arşivlenmedi mi?'
112 isStarred: 'Makale favorilere eklendi mi? Eklenmedi mi?'
113 content: "Makalenin içeriği"
114 language: "Makalenin dili"
115 mimetype: "Makalenin mime türü"
116 readingTime: "Makalenin dakika cinsinden tahmini okuma süresi"
117 domainName: 'Makalenin bulunduğu internet sitesinin alan adı'
118 operator_description:
119 label: 'Operatör'
120 less_than: 'Küçüktür ve eşittir…'
121 strictly_less_than: 'Küçüktür…'
122 greater_than: 'Büyüktür ve eşittir…'
123 strictly_greater_than: 'Büyüktür…'
124 equal_to: 'Eşittir…'
125 not_equal_to: 'Eşit değildir…'
126 or: 'Bir kural veya birbaşkası'
127 and: 'Bir kural ve diğeri'
128 # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
129 form_new_user:
130 username_label: 'Kullanıcı adı'
131 password_label: 'Şifre'
132 repeat_new_password_label: 'Yeni şifrenin tekrarı'
133 plain_password_label: '????'
134 email_label: 'E-posta'
62 135
63# Tagging rules 136entry:
64Rule: "Kural" 137 page_titles:
65Tags: "Etiketler" 138 # unread: 'Unread entries'
66FAQ: "S.S.S." 139 # starred: 'Starred entries'
67Variable: "Değişken" 140 # archive: 'Archived entries'
68Meaning: "Anlamı" 141 # filtered: 'Filtered entries'
69Operator: "Operatör" 142 list:
70"What does « tagging rules » mean?": "« etiketleme kuralları » ne anlama geliyor?" 143 number_on_the_page: '{0} Herhangi bir makale yok.|{1} Burada bir adet makale var.|]1,Inf[ Burada %count% adet makale var.'
71"How do I use them?": "Bunu nasıl kullanırım?" 144 reading_time: 'tahmini okuma süresi'
72"Which variables and operators can I use to write rules?": "Kurallar içerisinde hangi değişken ve operatörleri kullanabilirim?" 145 reading_time_minutes: 'tahmini okuma süresi: %readingTime% min'
73"The following variables and operators can be used to create tagging rules:": "Etiket kuralı oluşturmak istediğinizde aşağıdaki değişken ve operatörleri kullanabilirsin:" 146 reading_time_less_one_minute: 'tahmini okuma süresi: <small class="inferieur">&lt;</small> 1 min'
74Title of the entry: "Makalenin başlığı" 147 original_article: 'orijinal'
75URL of the entry: "Makalenin bağlantısı" 148 toogle_as_read: 'Okundu/okunmadı olarak işaretle'
76The domain name of the entry: "Makalenin bulunduğu internet sitesinin alan adı" 149 toogle_as_star: 'Favorilere ekle/çıkar'
77"The entry's content": "Makalenin içeriği" 150 delete: 'Sil'
78"The entry's language": "Makalenin dili" 151 export_title: 'Dışa Aktar'
79"The entry's mime-type": "Makalenin mime türü" 152 filters:
80"The estimated entry's reading time, in minutes": "Makalenin dakika cinsinden tahmini okuma süresi" 153 title: 'Filtreler'
81"Whether the entry is archived or not": "Makale arşivlendi mi? Arşivlenmedi mi?" 154 status_label: 'Durum'
82"Whether the entry is starred or not": "Makale favorilere eklendi mi? Eklenmedi mi?" 155 archived_label: 'Arşiv'
83"Less than…": "Küçüktür ve eşittir…" 156 starred_label: 'Favori'
84"Strictly less than…": "Küçüktür…" 157 preview_picture_label: 'Resim önizlemesi varsa'
85"Greater than…": "Büyüktür ve eşittir…" 158 preview_picture_help: 'Resim önizlemesi'
86"Strictly greater than…": "Büyüktür…" 159 language_label: 'Dil'
87"Equal to…": "Eşittir…" 160 reading_time:
88"Not equal to…": "Eşit değildir…" 161 label: 'Dakika cinsinden okuma süresi'
89"One rule or another": "Bir kural veya birbaşkası" 162 from: 'başlangıç'
90"One rule and another": "Bir kural ve diğeri" 163 to: 'bitiş'
164 domain_label: 'Alan adı'
165 created_at:
166 label: 'Oluşturulma tarihi'
167 from: 'başlangıç'
168 to: 'bitiş'
169 action:
170 clear: 'Temizle'
171 filter: 'Filtrele'
172 view:
173 left_menu:
174 # back_to_top: 'Back to top'
175 back_to_homepage: 'Back'
176 set_as_read: 'Okundu olarak işaretle'
177 set_as_unread: 'Okunmadı olarak işaretle'
178 set_as_favorite: 'Favorilere ekle/çıkar'
179 view_original_article: 'Orijinal makale'
180 re_fetch_content: 'İçeriği yenile'
181 delete: 'Sil'
182 add_a_tag: 'Bir etiket ekle'
183 share_content: 'Paylaş'
184 share_email_label: 'E-posta'
185 download: 'İndir'
186 # print: 'Print'
187 problem:
188 label: 'Bir sorun mu var?'
189 description: 'Bu makalede herhangi bir yanlışlık mı var?'
190 edit_title: 'Başlığı düzenle'
191 original_article: 'orijinal'
192 # annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
193 new:
194 page_title: 'Yeni makaleyi kaydet'
195 placeholder: 'http://website.com'
196 form_new:
197 url_label: Url
198 edit:
199 page_title: 'Makaleyi düzenle'
200 title_label: 'Başlık'
201 url_label: 'Url'
202 is_public_label: 'Herkes tarafından erişime açık olsun mu?'
203 save_label: 'Kaydet'
91 204
92# Entries 205about:
93'estimated reading time': 'tahmini okuma süresi' 206 page_title: 'Hakkımızda'
94original: "orijinal" 207 top_menu:
95Toggle mark as read: 'Okundu/okunmadı olarak işaretle' 208 who_behind_wallabag: "wallabag'in arkasındakiler"
96Toggle favorite: 'Favorilere ekle/çıkar' 209 getting_help: 'Yardım'
97Delete: 'Sil' 210 helping: 'wallabag destek olun'
211 # contributors: 'Contributors'
212 # third_party: 'Third-party libraries'
213 who_behind_wallabag:
214 developped_by: 'Geliştiriciler'
215 website: 'i̇nternet sitesi'
216 many_contributors: 'Ve katkıda bulunanlar ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">GitHub üzerinde</a>'
217 project_website: 'Proje internet sitesi'
218 license: 'Lisans'
219 version: 'Sürüm'
220 getting_help:
221 documentation: 'Dokümantasyon'
222 bug_reports: 'Sorun bildir'
223 support: '<a href="https://support.wallabag.org">Destek internet sitesinde</a> ya da <a href="https://github.com/wallabag/wallabag/issues">GitHub üzerinde</a>'
224 helping:
225 description: 'wallabag açık kaynak kodlu ve ücretsizdir. Bize destek ol :'
226 by_contributing: 'projemize katkıda bulunun :'
227 by_contributing_2: 'ihtiyacımız olanların listelendiği yapılacaklar listesi'
228 by_paypal: 'PayPal ile'
229 contributors:
230 # description: 'Thank you to contributors on wallabag web application'
231 third_party:
232 # description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
233 # package: 'Package'
234 license: 'Lisans'
98 235
99# Filters 236howto:
100Filters: 'Filtreler' 237 page_title: 'Yardım'
101Status: 'Durum' 238 # page_description: 'There are several ways to save an article:'
102Archived: 'Arşiv' 239 top_menu:
103Starred: 'Favori' 240 browser_addons: 'Tarayıcı eklentileri'
104Preview picture: 'Resim önizlemesi' 241 mobile_apps: 'Mobil uygulamalar'
105Has a preview picture: 'Resim önizlemesi varsa' 242 bookmarklet: 'Bookmarklet'
106Reading time in minutes: 'Dakika cinsinden okuma süresi' 243 form:
107from: 'başlangıç' 244 description: 'Yeni makale kaydet'
108to: 'bitiş' 245 browser_addons:
109website.com: 'internet-sitesi.com' 246 firefox: 'Standart Firefox Eklentisi'
110Domain name: 'Alan adı' 247 chrome: 'Chrome Eklentisi'
111Creation date: 'Oluşturulma tarihi' 248 mobile_apps:
112dd/mm/yyyy: 'dd/mm/aaaa' 249 android:
113Clear: 'Temizle' 250 # via_f_droid: 'via F-Droid'
114Filter: 'Filtrele' 251 # via_google_play: 'via Google Play'
252 # ios: 'on the iTunes Store'
253 # windows: 'on the Microsoft Store'
254 bookmarklet:
255 description: "Bu bağlantı ile yer imlerinizi sürükleyip bırakarak wallabag'e ekleyebilirsiniz:"
115 256
116# About 257quickstart:
117Who is behind wallabag: "wallabag'in arkasındakiler" 258 page_title: 'Hızlı başlangıç'
118Getting help: "Yardım" 259 intro:
119Helping wallabag: "wallabag destek olun" 260 title: 'wallabag'
120Developed by: "Geliştiriciler:" 261 paragraph_1: "wallabag kurduğunuz için teşekkür ederiz. Bu sayfada biz size eşlik edecek ve ilginizi çekecek birkaç özellik göstereceğim."
121website: "İnternet sitesi" 262 paragraph_2: 'Bizi takip edin!'
122And many others contributors ♥: "Ve katkıda bulunanlar ♥" 263 configure:
123on GitHub: "GitHub üzerinde" 264 title: 'Uygulamayı Yapılandırma'
124Project website: "Proje internet sitesi" 265 language: 'Dili ve tasarımı değiştirme'
125License: "Lisans" 266 rss: 'RSS akışını aktifleştirme'
126Version: "Sürüm" 267 # tagging_rules: 'Write rules to automatically tag your articles'
127Documentation: "Dokümantasyon" 268 admin:
128Bug reports: "Sorun bildir" 269 # title: 'Administration'
129On our support website: "Destek internet sitesinde" 270 # description: 'As an administrator, you have privileges on wallabag. You can:'
130or: "ya da" 271 # new_user: 'Create a new user'
131"wallabag is free and opensource. You can help us:": "wallabag açık kaynak kodlu ve ücretsizdir. Bize destek ol :" 272 # analytics: 'Configure analytics'
132"by contributing to the project:": "projemize katkıda bulunun :" 273 # sharing: 'Enable some parameters about article sharing'
133an issue lists all our needs: "ihtiyacımız olanların listelendiği yapılacaklar listesi" 274 # export: 'Configure export'
134via Paypal: "PayPal ile" 275 # import: 'Configure import'
276 first_steps:
277 title: 'İlk adım'
278 new_article: 'İlk makalenizi kaydedin'
279 unread_articles: 'Ve bunu sınıflandırın!'
280 migrate:
281 title: 'Varolan servislerden veri aktarma'
282 description: "Kullanmakta olduğunuz farklı bir hizmet mi var? Biz size yardımcı olacak ve verilerinizi wallabag'e aktarmanıza yardımcı olacağız."
283 pocket: "Pocket üzerindeki verilerinizi wallabag'e aktarın"
284 wallabag_v1: "wallabag v1 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın"
285 wallabag_v2: "wallabag v2 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın"
286 developer:
287 # title: 'Developers'
288 # create_application: 'Create your third application'
289 docs:
290 title: 'Dokümantasyon'
291 # annotate: 'Annotate your article'
292 export: 'Makalelerinizi ePUB ya da PDF formatına çevirme'
293 search_filters: 'Makaleleri görüntülemek için arama motorlarını ve filteri kullanma'
294 # fetching_errors: 'What can I do if an article encounters errors during fetching?'
295 all_docs: 'Ve daha fazlası!'
296 support:
297 title: 'Destek'
298 description: 'Eğer yardıma ihtiyacınız varsa, biz her daim senin için burada olacağız.'
299 github: 'GitHub'
300 email: 'E-posta'
301 gitter: 'Gitter'
135 302
136# Howto 303tag:
137Form: "Form" 304 page_title: 'Etiketler'
138Thanks to this form: "Yeni makale kaydet" 305 list:
139Browser addons: "Tarayıcı eklentileri" 306 number_on_the_page: '{0} Herhangi bir etiket yok.|{1} Burada bir adet etiket var.|]1,Inf[ Burada %count% adet etiket var.'
140Mobile apps: "Mobil uygulamalar"
141Bookmarklet: "Bookmarklet"
142Standard Firefox Add-On: "Standart Firefox Eklentisi"
143Chrome Extension: "Chrome Eklentisi"
144download the application: "uygulamayı indir"
145"Drag &amp; drop this link to your bookmarks bar:": "Bu bağlantı ile yer imlerinizi sürükleyip bırakarak wallabag'e ekleyebilirsiniz:"
146via F-Droid: "F-Droid"
147via Google Play: "Google Play"
148bag it!: "bag it!"
149 307
150# Flash messages 308import:
151Information updated: "Bilgiler güncellendi" 309 page_title: 'İçe Aktar'
152"Config saved. Some parameters will be considered after disconnection.": "Yapılandırma ayarları kaydedildi. Bazı yapılandırmalar tekrar giriş yaptığınızda aktif olacaktır." 310 page_description: 'wallabag içe aktarma aracına hoşgeldiniz. Lütfen içe aktarmak istediğiiz önceki servisinizi seçin.'
153RSS information updated: "RSS bilgiler güncellendi" 311 action:
154Password updated: "Şifre güncellendi" 312 import_contents: 'İçe Aktar contents'
155Entry starred: "Makale favorilere eklendi" 313 form:
156Entry unstarred: "Makale favorilerden çıkartıldı" 314 # mark_as_read_title: 'Mark all as read?'
157Entry archived: "Makale arşivlendi" 315 # mark_as_read_label: 'Mark all imported entries as read'
158Entry unarchived: "Makale arşivden çıkartıldı" 316 file_label: 'Dosya'
159Entry reloaded: "Makale içeriği yenilendi" 317 save_label: 'Dosyayı yükle'
160Entry deleted: "Makale silindi" 318 pocket:
161Entry saved: "Makale kaydedildi" 319 page_title: 'İçe Aktar > Pocket'
162Tag added: "Etiket eklendi" 320 description: "Bu araç tüm Pocket verinizi içe aktarır. Pocket içeriklerin getirilmesine izin vermez, okunabilen içerikler wallabag tarafından yeniden getirilir."
321 config_missing:
322 # description: "Pocket import isn't configured."
323 # admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
324 # user_message: 'Your server admin needs to define an API Key for Pocket.'
325 authorize_message: 'Pocket hesabınızda verilerinizi içe aktarabilmemiz için öncelikle aşağıdaki butona tıklayın. Daha sonra, getpocket.com üzerindeki uygulamamıza gereken izinleri verin. Hepsi bu kadar!'
326 connect_to_pocket: "Pocket'a bağlanın ve verilerinizi içe aktarın"
327 wallabag_v1:
328 page_title: 'İçe Aktar > Wallabag v1'
329 description: 'Bu araç wallabag v1 üzerindeki tüm makalelerinizi içe aktarır. Yapılandırma sayfasında, "Export your wallabag data" sekmesinden "JSON export" adımını izleyin. Bu adım size "wallabag-export-1-xxxx-xx-xx.json" isimli bir dosya verecektir.'
330 how_to: 'Aşağıdaki butona tıklayarak wallabag v1 tarafından dışa aktarılmış dosyanızı yükleyin.'
331 wallabag_v2:
332 page_title: 'İçe Aktar > Wallabag v2'
333 # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
163 334
164# Entry 335developer:
165Mark as read: 'Okundu olarak işaretle' 336 # page_title: 'Developer'
166Mark as unread: 'Okunmadı olarak işaretle' 337 # welcome_message: 'Welcome to the wallabag API'
167Favorite: 'Favorilere ekle/çıkar' 338 # documentation: 'Documentation'
168back: 'geri dön' 339 # how_to_first_app: 'How to create my first application'
169original article: 'Orijinal makale' 340 # full_documentation: 'View full API documentation'
170Add a tag: 'Bir etiket ekle' 341 # clients:
171Share: 'Paylaş' 342 # title: 'Clients'
172Download: 'İndir' 343 # create_new: 'Create a new client'
173Does this article appear wrong?: "Bu makalede herhangi bir yanlışlık mı var?" 344 # existing_clients:
174Problems?: 'Bir sorun mu var?' 345 # title: 'Existing clients'
175Edit title: "Başlığı düzenle" 346 # field_id: 'Client ID'
176"{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.": "{0} Herhangi bir makale yok.|{1} Burada bir adet makale var.|]1,Inf[ Burada %count% adet makale var." 347 # field_secret: 'Client secret'
177"{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.": "{0} Herhangi bir etiket yok.|{1} Burada bir adet etiket var.|]1,Inf[ Burada %count% adet etiket var." 348 # field_uris: 'Redirect URIs'
178Reload content: "İçeriği yenile" 349 # field_grant_types: 'Grant type allowed'
179Edit an entry: "Makaleyi düzenle" 350 # no_client: 'No client yet.'
180Title: "Başlık" 351 # remove:
181Is public: "Herkes tarafından erişime açık olsun mu?" 352 # warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
353 # warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
354 # action: 'Remove this client'
355 # client:
356 # page_title: 'Developer > New client'
357 # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
358 # form:
359 # redirect_uris_label: 'Redirect URIs'
360 # save_label: 'Create a new client'
361 # action_back: 'Back'
362 # client_parameter:
363 # page_title: 'Developer > Client parameters'
364 # page_description: 'Here are your client parameters.'
365 # field_id: 'Client ID'
366 # field_secret: 'Client secret'
367 # back: 'Back'
368 # read_howto: 'Read the howto "Create my first application"'
369 # howto:
370 # page_title: 'Developer > How to create my first application'
371 # description:
372 # paragraph_1: 'The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.'
373 # paragraph_2: 'You need a token to communicate between your 3rd application and wallabag API.'
374 # paragraph_3: 'To create this token, you need <a href="%link%">to create a new client</a>.'
375 # paragraph_4: 'Now, create your token (replace client_id, client_secret, username and password with the good values):'
376 # paragraph_5: 'The API will return a response like this:'
377 # paragraph_6: 'The access_token is useful to do a call to the API endpoint. For example:'
378 # paragraph_7: 'This call will return all the entries for your user.'
379 # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.'
380 # back: 'Back'
182 381
183# Import 382validator:
184Import: "İçe Aktar" 383 # password_must_match: 'The password fields must match.'
185"Import > Pocket": "İçe Aktar > Pocket" 384 # password_too_short: 'Password should by at least 8 chars long'
186"Import > Wallabag v1": "İçe Aktar > Wallabag v1" 385 # password_wrong_value: 'Wrong value for your current password'
187Welcome to wallabag importer. Please select your previous service that you want to migrate.: "wallabag içe aktarma aracına hoşgeldiniz. Lütfen içe aktarmak istediğiiz önceki servisinizi seçin." 386 # item_per_page_too_high: 'This will certainly kill the app'
188"This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag.": "Bu araç tüm Pocket verinizi içe aktarır. Pocket içeriklerin getirilmesine izin vermez, okunabilen içerikler wallabag tarafından yeniden getirilir." 387 # rss_limit_too_hight: 'This will certainly kill the app'
189"This importer will import all your wallabag v1 articles. On your config page, click on \"JSON export\" in the \"Export your wallabag data\" section. You will have a \"wallabag-export-1-xxxx-xx-xx.json\" file.": "Bu araç wallabag v1 üzerindeki tüm makalelerinizi içe aktarır. Yapılandırma sayfasında, \"Export your wallabag data\" sekmesinden \"JSON export\" adımını izleyin. Bu adım size \"wallabag-export-1-xxxx-xx-xx.json\" isimli bir dosya verecektir."
190"You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.": "Pocket hesabınızda verilerinizi içe aktarabilmemiz için öncelikle aşağıdaki butona tıklayın. Daha sonra, getpocket.com üzerindeki uygulamamıza gereken izinleri verin. Hepsi bu kadar!"
191Connect to Pocket and import data: "Pocket'a bağlanın ve verilerinizi içe aktarın"
192Please select your wallabag export and click on the below button to upload and import it.: "Aşağıdaki butona tıklayarak wallabag v1 tarafından dışa aktarılmış dosyanızı yükleyin."
193File: "Dosya"
194Upload file: "Dosyayı yükle"
195Import contents: "İçerikleri içe aktar"
196 388
197# Quickstart 389flashes:
198Welcome to wallabag!: "wallabag" 390 config:
199Quickstart: "Hızlı başlangıç" 391 notice:
200We'll accompany you to visit wallabag and show you some features which can interess you.: "wallabag kurduğunuz için teşekkür ederiz. Bu sayfada biz size eşlik edecek ve ilginizi çekecek birkaç özellik göstereceğim." 392 config_saved: 'Yapılandırma ayarları kaydedildi. Bazı yapılandırmalar tekrar giriş yaptığınızda aktif olacaktır.'
201Follow us!: "Bizi takip edin!" 393 password_updated: 'Şifre güncellendi'
202Configure the application: "Uygulamayı Yapılandırma" 394 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
203Change language and design: "Dili ve tasarımı değiştirme" 395 user_updated: 'Bilgiler güncellendi'
204Enable RSS feeds: "RSS akışını aktifleştirme" 396 rss_updated: 'RSS bilgiler güncellendi'
205First steps: "İlk adım" 397 tagging_rules_updated: 'Tagging rules updated'
206Save your first article: "İlk makalenizi kaydedin" 398 tagging_rules_deleted: 'Tagging rule deleted'
207And classify it!: "Ve bunu sınıflandırın!" 399 user_added: 'User "%username%" added'
208Migrate from an existing service: "Varolan servislerden veri aktarma" 400 rss_token_updated: 'RSS token updated'
209You're using an other service? We'll help you to retrieve your data on wallabag.: "Kullanmakta olduğunuz farklı bir hizmet mi var? Biz size yardımcı olacak ve verilerinizi wallabag'e aktarmanıza yardımcı olacağız." 401 entry:
210Migrate from Pocket: "Pocket üzerindeki verilerinizi wallabag'e aktarın" 402 notice:
211Migrate from wallabag v1: "wallabag v1 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" 403 entry_already_saved: 'Entry already saved on %date%'
212Full documentation: "Dokümantasyon" 404 entry_saved: 'Makale kaydedildi'
213Convert your articles into ePUB or PDF: "Makalelerinizi ePUB ya da PDF formatına çevirme" 405 # entry_updated: 'Entry updated'
214See how you can look for an article by using search engine and filters: "Makaleleri görüntülemek için arama motorlarını ve filteri kullanma" 406 entry_reloaded: 'Makale içeriği yenilendi'
215And so many other articles!: "Ve daha fazlası!" 407 # entry_reload_failed: 'Failed to reload entry'
216Support: "Destek" 408 entry_archived: 'Makale arşivlendi'
217Social: "Sosyal" 409 entry_unarchived: 'Makale arşivden çıkartıldı'
218If you need some help, we are here for you.: "Eğer yardıma ihtiyacınız varsa, biz her daim senin için burada olacağız." 410 entry_starred: 'Makale favorilere eklendi'
219On GitHub: "GitHub" 411 entry_unstarred: 'Makale favorilerden çıkartıldı'
220By email: "E-posta" 412 entry_deleted: 'Makale silindi'
221On Gitter: "Gitter" 413 tag:
222Export: "Dışa Aktar" 414 notice:
223"http://website": "http://internet-sitesi" 415 tag_added: 'Etiket eklendi'
224Take wallabag with you: "wallabag her an seninle" 416 import:
225about: "hakkımızda" 417 notice:
226powered by: "powered by" 418 # failed: 'Import failed, please try again.'
419 # failed_on_file: 'Error while processing import. Please verify your import file.'
420 # summary: 'Import summary: %imported% imported, %skipped% already saved.'
421 developer:
422 notice:
423 # client_created: 'New client created.'
424 # client_deleted: 'Client deleted'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml
deleted file mode 100644
index 196f1ade..00000000
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml
+++ /dev/null
@@ -1,3 +0,0 @@
1# Config screen
2The password fields must match: 'De indtastede adgangskoder skal være ens'
3Password should by at least 8 chars long: 'Adgangskoden skal være mindst 8 tegn'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.es.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.es.yml
deleted file mode 100644
index 5c0b6df3..00000000
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.es.yml
+++ /dev/null
@@ -1,3 +0,0 @@
1# Config screen
2The password fields must match: 'Las contraseñas no coinciden'
3Password should by at least 8 chars long: 'La contraseña debe tener al menos 8 carácteres'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml
deleted file mode 100644
index fe63af76..00000000
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml
+++ /dev/null
@@ -1,3 +0,0 @@
1# Config screen
2The password fields must match: 'رمزها باید یکی باشند'
3Password should by at least 8 chars long: 'رمز شما باید ۸ حرف یا بیشتر باشد'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml
deleted file mode 100644
index 40513f2a..00000000
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml
+++ /dev/null
@@ -1,3 +0,0 @@
1# Config screen
2The password fields must match: 'Les deux mots de passe doivent être les mêmes'
3Password should by at least 8 chars long: 'Le mot de passe doit contenir au moins 8 caractères'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml
deleted file mode 100644
index f3cde461..00000000
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml
+++ /dev/null
@@ -1,3 +0,0 @@
1# Config screen
2The password fields must match: 'Hasło w polach musi być takie same '
3Password should by at least 8 chars long: 'Hasło powinno mieć minimum 8 znaków długości'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml
deleted file mode 100644
index d6d4dfcc..00000000
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml
+++ /dev/null
@@ -1,3 +0,0 @@
1# Config screen
2The password fields must match: 'Câmpurile destinate parolelor trebuie să se potrivească'
3Password should by at least 8 chars long: 'Parola ar trebui să conțină cel puțin 8 caractere'
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
index 54faa788..89e6e076 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
@@ -1,9 +1,9 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Config{% endtrans %}{% endblock %} 3{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 <h2>{% trans %}Wallabag configuration{% endtrans %}</h2> 6 <h2>{{ 'config.tab_menu.settings'|trans }}</h2>
7 7
8 {{ form_start(form.config) }} 8 {{ form_start(form.config) }}
9 {{ form_errors(form.config) }} 9 {{ form_errors(form.config) }}
@@ -29,7 +29,10 @@
29 {{ form_label(form.config.reading_speed) }} 29 {{ form_label(form.config.reading_speed) }}
30 {{ form_errors(form.config.reading_speed) }} 30 {{ form_errors(form.config.reading_speed) }}
31 {{ form_widget(form.config.reading_speed) }} 31 {{ form_widget(form.config.reading_speed) }}
32 <p>{% trans %}You can use online tools to estimate your reading speed{% endtrans %} (<a href="http://www.myreadspeed.com/calculate/">{% trans %}like this one{%endtrans%}</a>).</p> 32 <p>
33 {{ 'config.form_settings.reading_speed.help_message'|trans }}
34 <a href="http://www.myreadspeed.com/calculate/">myreadspeed</a>
35 </p>
33 </div> 36 </div>
34 </fieldset> 37 </fieldset>
35 38
@@ -44,13 +47,13 @@
44 {{ form_rest(form.config) }} 47 {{ form_rest(form.config) }}
45 </form> 48 </form>
46 49
47 <h2>{% trans %}RSS configuration{% endtrans %}</h2> 50 <h2>{{ 'config.tab_menu.rss'|trans }}</h2>
48 51
49 {{ form_start(form.rss) }} 52 {{ form_start(form.rss) }}
50 {{ form_errors(form.rss) }} 53 {{ form_errors(form.rss) }}
51 54
52 <div class="row"> 55 <div class="row">
53 {% trans %}RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader.{% endtrans %} 56 {{ 'config.form_rss.description'|trans }}
54 </div> 57 </div>
55 58
56 <fieldset class="w500p inline"> 59 <fieldset class="w500p inline">
@@ -59,27 +62,31 @@
59 {% if rss.token %} 62 {% if rss.token %}
60 {{ rss.token }} 63 {{ rss.token }}
61 {% else %} 64 {% else %}
62 <em>No token</em> 65 <em>{{ 'config.form_rss.no_token'|trans }}</em>
63 {% endif %} 66 {% endif %}
64 67
65 <a href="{{ path('generate_token') }}">Regenerate ?</a> 68 <a href="{{ path('generate_token') }}">
69 {% if rss.token %}
70 {{ 'config.form_rss.token_reset'|trans }}
71 {% else %}
72 {{ 'config.form_rss.token_create'|trans }}
73 {% endif %}
74 </a>
66 </div> 75 </div>
67 </fieldset> 76 </fieldset>
68 77
78 {% if rss.token %}
69 <fieldset class="w500p inline"> 79 <fieldset class="w500p inline">
70 <div class="row"> 80 <div class="row">
71 <label>Rss links:</label> 81 <label>{{ 'config.form_rss.rss_links'|trans }}</label>
72 {% if rss.token %} 82 <ul>
73 <ul> 83 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">unread</a></li>
74 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">unread</a></li> 84 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">fav</a></li>
75 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">fav</a></li> 85 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">archives</a></li>
76 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">archives</a></li> 86 </ul>
77 </ul>
78 {% else %}
79 <strong>You need to generate a token first.</strong>
80 {% endif %}
81 </div> 87 </div>
82 </fieldset> 88 </fieldset>
89 {% endif %}
83 90
84 <fieldset class="w500p inline"> 91 <fieldset class="w500p inline">
85 <div class="row"> 92 <div class="row">
@@ -92,7 +99,7 @@
92 {{ form_rest(form.rss) }} 99 {{ form_rest(form.rss) }}
93 </form> 100 </form>
94 101
95 <h2>{% trans %}User information{% endtrans %}</h2> 102 <h2>{{ 'config.tab_menu.user_info'|trans }}</h2>
96 103
97 {{ form_start(form.user) }} 104 {{ form_start(form.user) }}
98 {{ form_errors(form.user) }} 105 {{ form_errors(form.user) }}
@@ -115,7 +122,7 @@
115 122
116 {% if twofactor_auth %} 123 {% if twofactor_auth %}
117 <div class="row"> 124 <div class="row">
118 {% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %} 125 {{ 'config.form_user.two_factor_description'|trans }}
119 </div> 126 </div>
120 127
121 <fieldset class="w500p inline"> 128 <fieldset class="w500p inline">
@@ -130,7 +137,7 @@
130 {{ form_rest(form.user) }} 137 {{ form_rest(form.user) }}
131 </form> 138 </form>
132 139
133 <h2>{% trans %}Change your password{% endtrans %}</h2> 140 <h2>{{ 'config.tab_menu.password'|trans }}</h2>
134 141
135 {{ form_start(form.pwd) }} 142 {{ form_start(form.pwd) }}
136 {{ form_errors(form.pwd) }} 143 {{ form_errors(form.pwd) }}
@@ -162,13 +169,16 @@
162 {{ form_rest(form.pwd) }} 169 {{ form_rest(form.pwd) }}
163 </form> 170 </form>
164 171
165 <h2>{% trans %}Tagging rules{% endtrans %}</h2> 172 <h2>{{ 'config.tab_menu.rules'|trans }}}</h2>
166 173
167 <ul> 174 <ul>
168 {% for tagging_rule in app.user.config.taggingRules %} 175 {% for tagging_rule in app.user.config.taggingRules %}
169 <li> 176 <li>
170 if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} » 177 {{ 'config.form_rules.if_label'|trans }}
171 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}" class="tool delete icon-trash icon"></a> 178 « {{ tagging_rule.rule }} »
179 {{ 'config.form_rules.then_tag_as_label'|trans }}
180 « {{ tagging_rule.tags|join(', ') }} »
181 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}" class="tool delete icon-trash icon"></a>
172 </li> 182 </li>
173 {% endfor %} 183 {% endfor %}
174 </ul> 184 </ul>
@@ -196,7 +206,7 @@
196 </form> 206 </form>
197 207
198 {% if is_granted('ROLE_SUPER_ADMIN') %} 208 {% if is_granted('ROLE_SUPER_ADMIN') %}
199 <h2>{% trans %}Add a user{% endtrans %}</h2> 209 <h2>{{ 'config.tab_menu.new_user'|trans }}</h2>
200 210
201 {{ form_start(form.new_user) }} 211 {{ form_start(form.new_user) }}
202 {{ form_errors(form.new_user) }} 212 {{ form_errors(form.new_user) }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig
index c9ce6d08..78a9dc04 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}New client{% endtrans %}{% endblock %} 3{% block title %}{{ 'developer.client.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6<div class="row"> 6<div class="row">
@@ -8,7 +8,7 @@
8 <div class="card-panel settings"> 8 <div class="card-panel settings">
9 9
10 <div class="row"> 10 <div class="row">
11 <p>{% trans %}You are about to create a new client. Please fill the field below for the redirect URI of your application.{% endtrans %}</p> 11 <p>{{ 'developer.client.page_description'|trans }}</p>
12 {{ form_start(form) }} 12 {{ form_start(form) }}
13 {{ form_errors(form) }} 13 {{ form_errors(form) }}
14 14
@@ -18,7 +18,7 @@
18 {{ form_widget(form.redirect_uris) }} 18 {{ form_widget(form.redirect_uris) }}
19 </div> 19 </div>
20 20
21 <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{% trans %}Back{% endtrans %}</a> 21 <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.client.action_back'|trans }}</a>
22 {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} 22 {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
23 23
24 {{ form_rest(form) }} 24 {{ form_rest(form) }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig
index a214dfd0..b615fa3b 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig
@@ -1,20 +1,20 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Client parameters{% endtrans %}{% endblock %} 3{% block title %}{{ 'developer.client_parameter.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6<div class="row"> 6<div class="row">
7 <div class="col s12"> 7 <div class="col s12">
8 <div class="card-panel settings"> 8 <div class="card-panel settings">
9 <div class="row"> 9 <div class="row">
10 <p>{% trans %}Here are your client parameters.{% endtrans %}</p> 10 <p>{{ 'developer.client_parameter.page_description'|trans }}</p>
11 <ul> 11 <ul>
12 <li>{% trans %}Client ID{% endtrans %}: <strong><pre>{{ client_id }}</pre></strong></li> 12 <li>{{ 'developer.client_parameter.field_id'|trans }}: <strong><pre>{{ client_id }}</pre></strong></li>
13 <li>{% trans %}Client secret{% endtrans %}: <strong><pre>{{ client_secret }}</pre></strong></li> 13 <li>{{ 'developer.client_parameter.field_secret'|trans }}: <strong><pre>{{ client_secret }}</pre></strong></li>
14 </ul> 14 </ul>
15 15
16 <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{% trans %}Back{% endtrans %}</a> 16 <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.client_parameter.back'|trans }}</a>
17 <a href="{{ path('developer_howto_firstapp') }}" class="btn waves-effect waves-light">{% trans %}Read the howto "Create my first application"{% endtrans %}</a> 17 <a href="{{ path('developer_howto_firstapp') }}" class="btn waves-effect waves-light">{{ 'developer.client_parameter.read_howto'|trans }}</a>
18 </div> 18 </div>
19 </div> 19 </div>
20 </div> 20 </div>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig
index 382e6311..acbc2c88 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}How to create my first application{% endtrans %}{% endblock %} 3{% block title %}{{ 'developer.howto.page_title'|trans }}{% endblock %}
4 4
5{% block css %} 5{% block css %}
6 {{ parent() }} 6 {{ parent() }}
@@ -13,10 +13,10 @@
13 <div class="card-panel settings"> 13 <div class="card-panel settings">
14 14
15 <div class="row"> 15 <div class="row">
16 <p>{% trans %}The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.{% endtrans %}</p> 16 <p>{{ 'developer.howto.description.paragraph_1'|trans|raw }}</p>
17 <p>{% trans %}You need a token to communicate between your 3rd application and wallabag API.{% endtrans %}</p> 17 <p>{{ 'developer.howto.description.paragraph_2'|trans }}</p>
18 <p>{% trans with {'%link%': path('developer_create_client')} %}To create this token, you need <a href="%link%">to create a new client</a>.{% endtrans %}</p> 18 <p>{{ 'developer.howto.description.paragraph_3'|trans({'%link%': path('developer_create_client')})|raw }}</p>
19 <p>{% trans %}Now, create your token (replace client_id, client_secret, username and password with the good values):{% endtrans %}</p> 19 <p>{{ 'developer.howto.description.paragraph_4'|trans }}</p>
20 <p> 20 <p>
21 <pre><code class="language-bash">http POST http://v2.wallabag.org/oauth/v2/token \ 21 <pre><code class="language-bash">http POST http://v2.wallabag.org/oauth/v2/token \
22 grant_type=password \ 22 grant_type=password \
@@ -25,7 +25,7 @@
25 username=yourUsername \ 25 username=yourUsername \
26 password=yourPassw0rd</code></pre> 26 password=yourPassw0rd</code></pre>
27 </p> 27 </p>
28 <p>{% trans %}The API will return a response like this:{% endtrans %}</p> 28 <p>{{ 'developer.howto.description.paragraph_5'|trans }}</p>
29 <p> 29 <p>
30 <pre><code class="language-bash">HTTP/1.1 200 OK 30 <pre><code class="language-bash">HTTP/1.1 200 OK
31Cache-Control: no-store, private 31Cache-Control: no-store, private
@@ -45,14 +45,14 @@ X-Powered-By: PHP/5.5.9-1ubuntu4.13
45 "token_type": "bearer" 45 "token_type": "bearer"
46}</code></pre> 46}</code></pre>
47 </p> 47 </p>
48 <p>{% trans %}The access_token is useful to do a call to the API endpoint. For example:{% endtrans %}</p> 48 <p>{{ 'developer.howto.description.paragraph_6'|trans }}</p>
49 <p> 49 <p>
50 <pre><code class="language-bash">http GET http://v2.wallabag.org/api/entries.json \ 50 <pre><code class="language-bash">http GET http://v2.wallabag.org/api/entries.json \
51 "Authorization:Bearer ZWFjNjA3ZWMwYWVmYzRkYTBlMmQ3NTllYmVhOGJiZDE0ZTg1NjE4MjczOTVlNzM0ZTRlMWQ0MmRlMmYwNTk5Mw"</code></pre> 51 "Authorization:Bearer ZWFjNjA3ZWMwYWVmYzRkYTBlMmQ3NTllYmVhOGJiZDE0ZTg1NjE4MjczOTVlNzM0ZTRlMWQ0MmRlMmYwNTk5Mw"</code></pre>
52 </p> 52 </p>
53 <p>{% trans %}This call will return all the entries for your user.{% endtrans %}</p> 53 <p>{{ 'developer.howto.description.paragraph_7'|trans }}</p>
54 <p>{% trans with {'%link%': path('nelmio_api_doc_index')} %}If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.{% endtrans %}</p> 54 <p>{{ 'developer.howto.description.paragraph_8'|trans({'%link%': path('nelmio_api_doc_index')})|raw }}</p>
55 <p><a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{% trans %}Back{% endtrans %}</a></p> 55 <p><a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.howto.back'|trans }}</a></p>
56 </div> 56 </div>
57 57
58 </div> 58 </div>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig
index 2e7dbcab..e12779b7 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Developer{% endtrans %}{% endblock %} 3{% block title %}{{ 'developer.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6<div class="row"> 6<div class="row">
@@ -8,21 +8,21 @@
8 <div class="card-panel settings"> 8 <div class="card-panel settings">
9 9
10 <div class="row"> 10 <div class="row">
11 <h3>{% trans %}Welcome to the wallabag API{% endtrans %}</h3> 11 <h3>{{ 'developer.welcome_message'|trans }}</h3>
12 12
13 <h4>{% trans %}Documentation{% endtrans %}</h4> 13 <h4>{{ 'developer.documentation'|trans }}</h4>
14 14
15 <ul> 15 <ul>
16 <li><a href="{{ path('developer_howto_firstapp') }}">{% trans %}How to create my first application{% endtrans %}</a></li> 16 <li><a href="{{ path('developer_howto_firstapp') }}">{{ 'developer.how_to_first_app'|trans }}</a></li>
17 <li><a href="{{ path('nelmio_api_doc_index') }}">{% trans %}View full API documentation{% endtrans %}</a></li> 17 <li><a href="{{ path('nelmio_api_doc_index') }}">{{ 'developer.full_documentation'|trans }}</a></li>
18 </ul> 18 </ul>
19 19
20 <h4>{% trans %}Clients{% endtrans %}</h4> 20 <h4>{{ 'developer.clients.title'|trans }}</h4>
21 <ul> 21 <ul>
22 <li><a href="{{ path('developer_create_client') }}">{% trans %}Create a new client{% endtrans %}</a></li> 22 <li><a href="{{ path('developer_create_client') }}">{{ 'developer.clients.create_new'|trans }}</a></li>
23 </ul> 23 </ul>
24 24
25 <h4>{% trans %}Existing clients{% endtrans %}</h4> 25 <h4>{{ 'developer.existing_clients.title'|trans }}</h4>
26 {% if clients %} 26 {% if clients %}
27 <ul class="collapsible" data-collapsible="expandable"> 27 <ul class="collapsible" data-collapsible="expandable">
28 {% for client in clients %} 28 {% for client in clients %}
@@ -31,33 +31,33 @@
31 <div class="collapsible-body"> 31 <div class="collapsible-body">
32 <table class="striped"> 32 <table class="striped">
33 <tr> 33 <tr>
34 <td>{% trans %}Client ID{% endtrans %}</td> 34 <td>{{ 'developer.existing_clients.field_id'|trans }}</td>
35 <td><strong><code>{{ client.id }}_{{ client.randomId }}</code></strong></td> 35 <td><strong><code>{{ client.id }}_{{ client.randomId }}</code></strong></td>
36 </tr> 36 </tr>
37 <tr> 37 <tr>
38 <td>{% trans %}Client secret{% endtrans %}</td> 38 <td>{{ 'developer.existing_clients.field_secret'|trans }}</td>
39 <td><strong><code>{{ client.secret }}</code></strong></td> 39 <td><strong><code>{{ client.secret }}</code></strong></td>
40 </tr> 40 </tr>
41 <tr> 41 <tr>
42 <td>{% trans %}Redirect URIs{% endtrans %}</td> 42 <td>{{ 'developer.existing_clients.field_uris'|trans }}</td>
43 <td><strong><code>{{ client.redirectUris|json_encode() }}</code></strong></td> 43 <td><strong><code>{{ client.redirectUris|json_encode() }}</code></strong></td>
44 </tr> 44 </tr>
45 <tr> 45 <tr>
46 <td>{% trans %}Grant type allowed{% endtrans %}</td> 46 <td>{{ 'developer.existing_clients.field_grant_types'|trans }}</td>
47 <td><strong><code>{{ client.allowedGrantTypes|json_encode() }}</code></strong></td> 47 <td><strong><code>{{ client.allowedGrantTypes|json_encode() }}</code></strong></td>
48 </tr> 48 </tr>
49 </table> 49 </table>
50 <p> 50 <p>
51 {% trans %}You have the ability to remove this client. This action is IRREVERSIBLE !{% endtrans %}<br/> 51 {{ 'developer.remove.warn_message_1'|trans }}<br/>
52 {% trans %}If you remove it, every app configured with that client won't be able to auth on your wallabag.{% endtrans %}<br/> 52 {{ 'developer.remove.warn_message_2'|trans }}<br/>
53 <a class="waves-effect waves-light red btn" href="{{ path('developer_delete_client', {'id': client.id}) }}">{% trans %}Remove this client{% endtrans %}</a> 53 <a class="waves-effect waves-light red btn" href="{{ path('developer_delete_client', {'id': client.id}) }}">{{ 'developer.remove.action'|trans }}</a>
54 </p> 54 </p>
55 </div> 55 </div>
56 </li> 56 </li>
57 {% endfor %} 57 {% endfor %}
58 </ul> 58 </ul>
59 {% else %} 59 {% else %}
60 {% trans %}No client yet.{% endtrans %} 60 {{ 'developer.existing_clients.no_client'|trans }}
61 {% endif %} 61 {% endif %}
62 </div> 62 </div>
63 63
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
index 0d4d5ad2..e974fc69 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Edit an entry{% endtrans %}{% endblock %} 3{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {{ form(form) }} 6 {{ form(form) }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
index 7271bdaa..f718043b 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
@@ -1,13 +1,13 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title "Unread" %} 3{% block title %}{{ 'entry.page_titles.unread'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {% block pager %} 6 {% block pager %}
7 <div class="results"> 7 <div class="results">
8 <div class="nb-results">{{ entries.count }} {% trans %}entries{% endtrans %}</div> 8 <div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
9 <div class="pagination"> 9 <div class="pagination">
10 <a href="#" id="filter">{% trans %}Filter{% endtrans %}</a> 10 <a href="#" id="filter">{{ 'entry.filters.title'|trans }}</a>
11 {% if entries is not empty %} 11 {% if entries is not empty %}
12 12
13 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %} 13 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
@@ -20,68 +20,64 @@
20 </div> 20 </div>
21 {% endblock %} 21 {% endblock %}
22 22
23 {% if entries is empty %} 23 {% for entry in entries %}
24 <div class="messages warning"><p>{% trans %}No articles found.{% endtrans %}</p></div> 24 <div id="entry-{{ entry.id|e }}" class="entry">
25 {% else %} 25 <h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
26 {% for entry in entries %} 26 {% if entry.readingTime > 0 %}
27 <div id="entry-{{ entry.id|e }}" class="entry"> 27 <div class="estimatedTime">
28 <h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2> 28 <span class="tool reading-time">
29 {% if entry.readingTime > 0 %} 29 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
30 <div class="estimatedTime"> 30 </span>
31 <span class="tool reading-time"> 31 </div>
32 {% trans with {'%readingTime%': entry.readingTime } %}estimated reading time: %readingTime% min{% endtrans %} 32 {% else %}
33 </span> 33 <div class="estimatedTime">
34 </div> 34 <span class="tool reading-time">
35 {% else %} 35 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
36 <div class="estimatedTime"> 36 </span>
37 <span class="tool reading-time"> 37 </div>
38 {% trans with {'%inferior%': '<small class="inferieur">&lt;</small>'} %}estimated reading time: %inferior% 1 min{% endtrans %} 38 {% endif %}
39 </span> 39
40 </div> 40 <ul class="tools links">
41 {% endif %} 41 <li><a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool icon-check icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{{ 'entry.list.toogle_as_read'|trans }}</span></a></li>
42 42 <li><a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool icon-star icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.list.toogle_as_star'|trans }}</span></a></li>
43 <ul class="tools links"> 43 <li><a title="{{ 'entry.list.delete'|trans }}" class="tool delete icon-trash icon" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.list.delete'|trans }}</span></a></li>
44 <li><a title="{% trans %}Toggle mark as read{% endtrans %}" class="tool icon-check icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li> 44 <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.domainName|removeWww }}</span></a></li>
45 <li><a title="{% trans %}toggle favorite{% endtrans %}" class="tool icon-star icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}toggle favorite{% endtrans %}</span></a></li> 45 </ul>
46 <li><a title="{% trans %}delete{% endtrans %}" class="tool delete icon-trash icon" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{% trans %}delete{% endtrans %}</span></a></li> 46 {% if entry.previewPicture is null %}
47 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.domainName|removeWww }}</span></a></li> 47 <p>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p>
48 </ul> 48 {% else %}
49 {% if entry.previewPicture is null %} 49 <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
50 <p>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p> 50 {% endif %}
51 {% else %} 51 </div>
52 <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" /> 52 {% endfor %}
53 {% endif %}
54 </div>
55 {% endfor %}
56 {% endif %}
57 53
58 <aside id="filter-form" class=""> 54 <aside id="filter-form" class="">
59 <form method="get" action="{{ path('all') }}"> 55 <form method="get" action="{{ path('all') }}">
60 <h2>{% trans %}Filters{% endtrans %}</h2> 56 <h2>{{ 'entry.filters.title'|trans }}</h2>
61 <a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a> 57 <a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a>
62 58
63 <div id="filter-status" class="filter-group"> 59 <div id="filter-status" class="filter-group">
64 <div class=""> 60 <div class="">
65 <label>{% trans %}Status{% endtrans %}</label> 61 <label>{{ 'entry.filters.status_label'|trans }}</label>
66 </div> 62 </div>
67 <div class="input-field"> 63 <div class="input-field">
68 {{ form_widget(form.isArchived) }} 64 {{ form_widget(form.isArchived) }}
69 <label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label> 65 {{ form_label(form.isArchived) }}
70 </div> 66 </div>
71 67
72 <div class="input-field"> 68 <div class="input-field">
73 {{ form_widget(form.isStarred) }} 69 {{ form_widget(form.isStarred) }}
74 <label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label> 70 {{ form_label(form.isStarred) }}
75 </div> 71 </div>
76 72
77 <div class="input-field"> 73 <div class="input-field">
78 {{ form_widget(form.previewPicture) }} 74 {{ form_widget(form.previewPicture) }}
79 <label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label> 75 {{ form_label(form.previewPicture) }}
80 </div> 76 </div>
81 </div> 77 </div>
82 78
83 <div id="filter-language" class="filter-group"> 79 <div id="filter-language" class="filter-group">
84 <label for="entry_filter_language">{% trans %}Language{% endtrans %}</label> 80 {{ form_label(form.language) }}
85 <div class="input-field "> 81 <div class="input-field ">
86 {{ form_widget(form.language) }} 82 {{ form_widget(form.language) }}
87 </div> 83 </div>
@@ -89,20 +85,20 @@
89 85
90 <div id="filter-reading-time" class="filter-group"> 86 <div id="filter-reading-time" class="filter-group">
91 <div class=""> 87 <div class="">
92 <label>{% trans %}Reading time in minutes{% endtrans %}</label> 88 {{ form_label(form.readingTime) }}
93 </div> 89 </div>
94 <div class="input-field "> 90 <div class="input-field ">
95 <label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label> 91 <label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
96 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }} 92 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
97 </div> 93 </div>
98 <div class="input-field "> 94 <div class="input-field ">
99 <label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label> 95 <label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
100 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }} 96 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
101 </div> 97 </div>
102 </div> 98 </div>
103 99
104 <div id="filter-domain-name" class="filter-group"> 100 <div id="filter-domain-name" class="filter-group">
105 <label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label> 101 {{ form_label(form.domainName) }}
106 <div class="input-field "> 102 <div class="input-field ">
107 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }} 103 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
108 </div> 104 </div>
@@ -110,26 +106,25 @@
110 106
111 <div id="filter-creation-date" class="filter-group"> 107 <div id="filter-creation-date" class="filter-group">
112 <div class=""> 108 <div class="">
113 <label>{% trans %}Creation date{% endtrans %}</label> 109 {{ form_label(form.createdAt) }}
114 </div> 110 </div>
115 <div class="input-field "> 111 <div class="input-field ">
116 <label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label> 112 <label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
117 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }} 113 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
118 </div> 114 </div>
119 <div class="input-field "> 115 <div class="input-field ">
120 <label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label> 116 <label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
121 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }} 117 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
122 </div> 118 </div>
123 </div> 119 </div>
124 <div id="filter-buttons" class="filter-group">
125 120
121 <div id="filter-buttons" class="filter-group">
126 <div class=""> 122 <div class="">
127 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a> 123 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
128 </div> 124 </div>
129 125
130 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filters{% endtrans %}</button> 126 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
131 127 </div>
132 </div>
133 </form> 128 </form>
134 </aside> 129 </aside>
135 130
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig
index a39a8dc3..98f7194c 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig
@@ -18,9 +18,9 @@
18 <description> 18 <description>
19 <![CDATA[ 19 <![CDATA[
20 {%- if entry.readingTime > 0 -%} 20 {%- if entry.readingTime > 0 -%}
21 {% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min 21 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
22 {%- else -%} 22 {%- else -%}
23 {% trans %}estimated reading time :{% endtrans %} &lt; 1 min 23 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
24 {%- endif %} 24 {%- endif %}
25 25
26 {{ entry.content|raw -}} 26 {{ entry.content|raw -}}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
index 9323e787..3cda3949 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
@@ -5,32 +5,32 @@
5{% block content %} 5{% block content %}
6 <div id="article"> 6 <div id="article">
7 <header class="mbm"> 7 <header class="mbm">
8 <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{% trans %}Edit title{% endtrans %}">✎</a></h1> 8 <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
9 </header> 9 </header>
10 10
11 <div id="article_toolbar"> 11 <div id="article_toolbar">
12 <ul class="links"> 12 <ul class="links">
13 <li class="topPosF"><a href="#top" title="{% trans %}Back to top{% endtrans %}" class="tool top icon icon-arrow-up-thick"><span>{% trans %}Back to top{% endtrans %}</span></a></li> 13 <li class="topPosF"><a href="#top" title="{{ 'entry.view.left_menu.back_to_top'|trans }}" class="tool top icon icon-arrow-up-thick"><span>{{ 'entry.view.left_menu.set_as_read'|trans }}</span></a></li>
14 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li> 14 <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li>
15 <li><a title="{% trans %}Re-fetch content{% endtrans %}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{% trans %}Re-fetch content{% endtrans %}</span></a></li> 15 <li><a title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span></a></li>
16 <li><a title="{% if entry.isArchived == 0 %}{% trans %}Mark as read{% endtrans %}{% else %}{% trans %}Mark as unread{% endtrans %}{% endif %}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% if entry.isArchived == 0 %}{% trans %}Mark as read{% endtrans %}{% else %}{% trans %}Mark as unread{% endtrans %}{% endif %}</span></a></li> 16 <li><a title="{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span></a></li>
17 <li><a title="{% trans %}Favorite{% endtrans %}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle favorite{% endtrans %}</span></a></li> 17 <li><a title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_favorite'|trans }}</span></a></li>
18 <li><a id="nav-btn-add-tag" title="{% trans %}Add a tag{% endtrans %}"><span>{% trans %}Tag{% endtrans %}</span></a></li> 18 <li><a id="nav-btn-add-tag" title="{{ 'entry.view.left_menu.add_a_tag'|trans }}"><span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span></a></li>
19 <li><a title="{% trans %}Delete{% endtrans %}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{% trans %}Delete{% endtrans %}</span></a></li> 19 <li><a title="{{ 'entry.view.left_menu.delete'|trans }}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.delete'|trans }}</span></a></li>
20 {% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans %}Tweet{% endtrans %}"><span>{% trans %}Tweet{% endtrans %}</span></a></li>{% endif %} 20 {% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="Tweet"><span>Tweet</span></a></li>{% endif %}
21 {% if craue_setting('share_mail') %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans %}Email{% endtrans %}"><span>{% trans %}Email{% endtrans %}</span></a></li>{% endif %} 21 {% if craue_setting('share_mail') %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="Email"><span>Email</span></a></li>{% endif %}
22 {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans %}shaarli{% endtrans %}"><span>{% trans %}shaarli{% endtrans %}</span></a></li>{% endif %} 22 {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %}
23 {% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="{% trans %}diaspora{% endtrans %}"><span>{% trans %}diaspora{% endtrans %}</span></a></li>{% endif %} 23 {% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %}
24 {% if craue_setting('carrot') %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="{% trans %}carrot{% endtrans %}"><span>Carrot</span></a></li>{% endif %} 24 {% if craue_setting('carrot') %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="carrot"><span>Carrot</span></a></li>{% endif %}
25 {% if craue_setting('show_printlink') %}<li><a title="{% trans %}Print{% endtrans %}" class="tool icon icon-print" href="javascript: window.print();"><span>{% trans %}Print{% endtrans %}</span></a></li>{% endif %} 25 {% if craue_setting('show_printlink') %}<li><a title="{{ 'entry.view.left_menu.print'|trans }}" class="tool icon icon-print" href="javascript: window.print();"><span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span></a></li>{% endif %}
26 {% if craue_setting('export_epub') %}<li><a href="?epub&amp;method=id&amp;value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %} 26 {% if craue_setting('export_epub') %}<li><a href="?epub&amp;method=id&amp;value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
27 {% if craue_setting('export_mobi') %}<li><a href="?mobi&amp;method=id&amp;value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %} 27 {% if craue_setting('export_mobi') %}<li><a href="?mobi&amp;method=id&amp;value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
28 {% if craue_setting('export_pdf') %}<li><a href="?pdf&amp;method=id&amp;value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %} 28 {% if craue_setting('export_pdf') %}<li><a href="?pdf&amp;method=id&amp;value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
29 <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans %}Does this article appear wrong?{% endtrans %}" class="tool bad-display icon icon-delete"><span>{% trans %}Does this article appear wrong?{% endtrans %}</span></a></li> 29 <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li>
30 </ul> 30 </ul>
31 </div> 31 </div>
32 {% set nbAnnotations = entry.annotations | length %} 32 {% set nbAnnotations = entry.annotations | length %}
33 <span class="tool link mdi-communication-comment"> {% transchoice nbAnnotations %}{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations{% endtranschoice %}</span> 33 <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
34 <aside class="tags"> 34 <aside class="tags">
35 {% for tag in entry.tags %} 35 {% for tag in entry.tags %}
36 <span class="mdi-action-label-outline">{{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i>✘</i></a> 36 <span class="mdi-action-label-outline">{{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i>✘</i></a>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
index 95ed0785..03768a3d 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Save new entry{% endtrans %}{% endblock %} 3{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }} 6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig
index fa0a9f53..8c129068 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig
@@ -8,7 +8,7 @@
8 {% endif %} 8 {% endif %}
9 9
10 {{ form_label(form.url) }} 10 {{ form_label(form.url) }}
11 {{ form_widget(form.url) }} 11 {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
12 12
13 <div class="hidden">{{ form_rest(form) }}</div> 13 {{ form_rest(form) }}
14</form> 14</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig
index fdd12cf7..5c0046d1 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig
@@ -1,57 +1,57 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}About{% endtrans %}{% endblock %} 3{% block title %}{{ 'about.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 <h2>{% trans %}Who is behind wallabag{% endtrans %}</h2> 6 <h2>{{ 'about.top_menu.who_behind_wallabag'|trans }}</h2>
7 7
8 <dl> 8 <dl>
9 <dt>{% trans %}Developed by{% endtrans %}</dt> 9 <dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt>
10 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans %}website{% endtrans %}</a></dd> 10 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
11 <dd>Thomas Citharel — <a href="https://tcit.fr">{% trans %}website{% endtrans %}</a></dd> 11 <dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
12 <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{% trans %}website{% endtrans %}</a></dd> 12 <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
13 13
14 <dt>{% trans %}And many others contributors ♥{% endtrans %} <a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}on Github{% endtrans %}</a></dt> 14 <dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt>
15 15
16 <dt>{% trans %}Project website{% endtrans %}</dt> 16 <dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt>
17 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd> 17 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
18 18
19 <dt>{% trans %}License{% endtrans %}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt> 19 <dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
20 20
21 <dt>{% trans %}Version{% endtrans %}: {{ version }}</dt> 21 <dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt>
22 </dl> 22 </dl>
23 23
24 <h2>{% trans %}Getting help{% endtrans %}</h2> 24 <h2>{{ 'about.top_menu.getting_help'|trans }}</h2>
25 25
26 <dl> 26 <dl>
27 <dt>{% trans %}Documentation{% endtrans %}</dt> 27 <dt>{{ 'about.getting_help.documentation'|trans }}</dt>
28 <dd><a href="https://doc.wallabag.org/en">english</a></dd> 28 <dd><a href="https://doc.wallabag.org/en">english</a></dd>
29 <dd><a href="https://doc.wallabag.org/fr">français</a></dd> 29 <dd><a href="https://doc.wallabag.org/fr">français</a></dd>
30 <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd> 30 <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd>
31 31
32 <dt>{% trans %}Bug reports{% endtrans %}</dt> 32 <dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
33 <dd><a href="https://support.wallabag.org">{% trans %}On our support website{% endtrans %}</a> {% trans %}or{% endtrans %} <a href="https://github.com/wallabag/wallabag/issues">{% trans %}on Github{% endtrans %}</a></dd> 33 <dd>{{ 'about.getting_help.support'|trans|raw }}</dd>
34 </dl> 34 </dl>
35 35
36 <h2>{% trans %}Helping wallabag{% endtrans %}</h2> 36 <h2>{{ 'about.top_menu.helping'|trans }}</h2>
37 37
38 <p>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</p> 38 <p>{{ 'about.helping.description'|trans }}</p>
39 39
40 <dl> 40 <dl>
41 <dt>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</dt> 41 <dt>{{ 'about.helping.description'|trans }}</dt>
42 <dd>by contributing to the project: <a href="https://github.com/wallabag/wallabag/issues/1254">an issue lists all our needs</a></dd> 42 <dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
43 <dd><a href="{{ paypal_url }}">{% trans %}via Paypal{% endtrans %}</a></dd> 43 <dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
44 </dl> 44 </dl>
45 45
46 <h2>{% trans %}Contributors{% endtrans %}</h2> 46 <h2>{{ 'about.top_menu.contributors'|trans }}</h2>
47 <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}Thank you to contributors on wallabag web application{% endtrans %}</a></p> 47 <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p>
48 48
49 <h2>{% trans %}Third-party libraries{% endtrans %}</h2> 49 <h2>{{ 'about.top_menu.third_party'|trans }}</h2>
50 <p>{% trans %}Here are the list of third-party libraries used in wallabag (with their licenses):{% endtrans %}</p> 50 <p>{{ 'about.third_party.description'|trans }}</p>
51 <table> 51 <table class="striped">
52 <tr> 52 <tr>
53 <th>{% trans %}Package{% endtrans %}</th> 53 <th>{{ 'about.third_party.package'|trans }}</th>
54 <th>{% trans %}License{% endtrans %}</th> 54 <th>{{ 'about.third_party.license'|trans }}</th>
55 </tr> 55 </tr>
56 <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr> 56 <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr>
57 <tr><td>CraueConfigBundle</td><td>MIT</td></tr> 57 <tr><td>CraueConfigBundle</td><td>MIT</td></tr>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig
index e32264f3..8da1afa0 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig
@@ -1,28 +1,28 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Howto{% endtrans %}{% endblock %} 3{% block title %}{{ 'howto.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 <h2>{% trans %}Howto{% endtrans %}</h2> 6 <h2>{{ 'howto.page_title'|trans }}</h2>
7 7
8 <p>{% trans %}There are several ways to save an article:{% endtrans %}</p> 8 <p>{{ 'howto.page_description'|trans }}</p>
9 <ul> 9 <ul>
10 <li><a href="{{ path('new') }}">{% trans %}Thanks to this form{% endtrans %}</a></li> 10 <li><a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a></li>
11 </ul> 11 </ul>
12 <h3>{% trans %}Browser Addons{% endtrans %}</h3> 12 <h3>{{ 'howto.top_menu.browser_addons'|trans }}</h3>
13 <ul> 13 <ul>
14 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans %}Standard Firefox Add-On{% endtrans %}</a></li> 14 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li>
15 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans %}Chrome Extension{% endtrans %}</a></li> 15 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li>
16 </ul> 16 </ul>
17 <h3>{% trans %}Mobile Apps{% endtrans %}</h3> 17 <h3>{{ 'howto.top_menu.mobile_apps'|trans }}</h3>
18 <ul> 18 <ul>
19 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">via F-Droid</a> {% trans %} or {% endtrans %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">via Google Play</a></li> 19 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">{{ 'howto.mobile_apps.android.via_f_droid'|trans }}</a> / <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">{{ 'howto.mobile_apps.android.via_google_play'|trans }}</a></li>
20 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans %}download the application{% endtrans %}</a></li> 20 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li>
21 <li>Windows Phone: <a href="http://www.windowsphone.com/en-US/store/app/wallabag/d5226cf1-f422-4e00-996c-88e9c5233332" target="_blank">{% trans %}download the application{% endtrans %}</a></li> 21 <li>Windows Phone: <a href="http://www.windowsphone.com/en-US/store/app/wallabag/d5226cf1-f422-4e00-996c-88e9c5233332" target="_blank">{{ 'howto.mobile_apps.windows'|trans }}</a></li>
22 </ul> 22 </ul>
23 <h3>{% trans %}Bookmarklet{% endtrans %}</h3> 23 <h3>{{ 'howto.top_menu.bookmarklet'|trans }}</h3>
24 <p> 24 <p>
25 {% trans %}Drag &amp; drop this link to your bookmarks bar:{% endtrans %} 25 {{ 'howto.bookmarklet.description'|trans }}
26 {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %} 26 {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
27 27
28{% endblock %} 28{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig
index 6b008fca..5f65ce15 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig
@@ -1,55 +1,66 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Quickstart{% endtrans %}{% endblock %} 3{% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
7 <h3>{% trans %}Welcome to wallabag!{% endtrans %}</h3> 7 <h3>{{ 'quickstart.intro.title'|trans }}</h3>
8 <p>{% trans %}We'll accompany you to visit wallabag and show you some features which can interess you.{% endtrans %}</p> 8 <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p>
9 <p>{% trans %}Follow us!{% endtrans %}</p> 9 <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p>
10 <h4>{% trans %}Configure the application{% endtrans %}</h4> 10
11 <h4>{{ 'quickstart.configure.title'|trans }}</h4>
11 <ul> 12 <ul>
12 <li><a href="{{ path('config') }}">{% trans %}Change language and design{% endtrans %}</a></li> 13 <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
13 <li><a href="{{ path('config') }}#set2">{% trans %}Enable RSS feeds{% endtrans %}</a></li> 14 <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
14 <li><a href="{{ path('config') }}#set5">{% trans %}Write rules to automatically tag your articles{% endtrans %}</a></li> 15 <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li>
15 </ul> 16 </ul>
17
16 {% if is_granted('ROLE_SUPER_ADMIN') %} 18 {% if is_granted('ROLE_SUPER_ADMIN') %}
17 <h4>{% trans %}Administration{% endtrans %}</h4> 19 <h4>{{ 'quickstart.admin.title'|trans }}</h4>
18 <p>{% trans %}As a administrator, you have privileges on wallabag. You can:{% endtrans %}</p> 20 <p>{{ 'quickstart.admin.description'|trans }}</p>
19 <ul> 21 <ul>
20 <li><a href="{{ path('config') }}#set6">{% trans %}Create a new user{% endtrans %}</a></li> 22 <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li>
21 <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{% trans %}Configure analytics{% endtrans %}</a></li> 23 <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li>
22 <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{% trans %}Enable some parameters about article sharing{% endtrans %}</a></li> 24 <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li>
23 <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{% trans %}Configure export{% endtrans %}</a></li> 25 <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li>
24 <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{% trans %}Configure import{% endtrans %}</a></li> 26 <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li>
25 </ul> 27 </ul>
26 {% endif %} 28 {% endif %}
27 <h4>{% trans %}First steps{% endtrans %}</h4> 29
30 <h4>{{ 'quickstart.first_steps.title'|trans }}</h4>
28 <ul> 31 <ul>
29 <li><a href="{{ path('new') }}">{% trans %}Save your first article{% endtrans %}</a></li> 32 <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li>
30 <li><a href="{{ path('unread') }}">{% trans %}And classify it!{% endtrans %}</a></li> 33 <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li>
31 </ul> 34 </ul>
32 <h4>{% trans %}Migrate from an existing service{% endtrans %}</h4> 35
33 <p>{% trans %}You're using an other service? We'll help you to retrieve your data on wallabag.{% endtrans %}</p> 36 <h4>{{ 'quickstart.migrate.title'|trans }}</h4>
37 <p>{{ 'quickstart.migrate.description'|trans }}</p>
34 <ul> 38 <ul>
35 <li><a href="{{ path('import_pocket') }}">{% trans %}Migrate from Pocket{% endtrans %}</a></li> 39 <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li>
36 <li><a href="{{ path('import_wallabag_v1') }}">{% trans %}Migrate from wallabag v1{% endtrans %}</a></li> 40 <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li>
37 <li><a href="{{ path('import_wallabag_v2') }}">{% trans %}Migrate from wallabag v2{% endtrans %}</a></li> 41 <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li>
38 </ul> 42 </ul>
39 <h4>{% trans %}Full documentation{% endtrans %}</h4> 43
44 <h4>{{ 'quickstart.developer.title'|trans }}</h4>
40 <ul> 45 <ul>
41 <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{% trans %}Annotate your article{% endtrans %}</a></li> 46 <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li>
42 <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{% trans %}Convert your articles into ePUB or PDF{% endtrans %}</a></li>
43 <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{% trans %}See how you can look for an article by using search engine and filters{% endtrans %}</a></li>
44 <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{% trans %}What can I do if an article encounters errors during fetching?{% endtrans %}</a></li>
45 <li><a href="http://doc.wallabag.org/">{% trans %}And so many other articles!{% endtrans %}</a></li>
46 </ul> 47 </ul>
47 <h4>{% trans %}Support{% endtrans %}</h4> 48
48 <p>{% trans %}If you need some help, we are here for you.{% endtrans %}</p> 49 <h4>{{ 'quickstart.docs.title'|trans }}</h4>
50 <ul>
51 <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li>
52 <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li>
53 <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li>
54 <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li>
55 <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li>
56 </ul>
57
58 <h4>{{ 'quickstart.support.title'|trans }}</h4>
59 <p>{{ 'quickstart.support.description'|trans }}</p>
49 <ul> 60 <ul>
50 <li><a href="https://github.com/wallabag/wallabag/issues/">{% trans %}On GitHub{% endtrans %}</a></li> 61 <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li>
51 <li><a href="mailto:hello@wallabag.org">{% trans %}By email{% endtrans %}</a></li> 62 <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li>
52 <li><a href="https://gitter.im/wallabag/wallabag">{% trans %}On Gitter{% endtrans %}</a></li> 63 <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li>
53 </ul> 64 </ul>
54 65
55{% endblock %} 66{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig
index ade7f56d..6e552560 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig
@@ -8,7 +8,6 @@
8 {% endif %} 8 {% endif %}
9 9
10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }} 10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
11 {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'}, 'label': 'add tag' }) }}
12 11
13 <div class="hidden">{{ form_rest(form) }}</div> 12 {{ form_rest(form) }}
14</form> 13</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
index c2a461b8..dfc61751 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
@@ -1,13 +1,15 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title "Tags" %} 3{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {% if tags is empty %} 6 <div class="results">
7 <div class="messages warning"><p>{% trans %}No tags found.{% endtrans %}</p></div> 7 <div class="nb-results">{{ 'tag.list.number_on_the_page'|transchoice(tags.count) }}</div>
8 {% else %} 8 </div>
9 {% for tag in tags %} 9
10 {{tag.label}} 10 <ul>
11 {% endfor %} 11 {% for tag in tags %}
12 {% endif %} 12 <li id="tag-{{ tag.id|e }}">{{tag.label}} ({{ tag.entries.getValues | length }})</li>
13 {% endfor %}
14 </ul>
13{% endblock %} 15{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
index 7f098066..0ce06962 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
@@ -33,32 +33,32 @@
33{% block menu %} 33{% block menu %}
34 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button> 34 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
35 <ul id="links" class="links"> 35 <ul id="links" class="links">
36 <li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li> 36 <li><a href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a></li>
37 <li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li> 37 <li><a href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a></li>
38 <li><a href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li> 38 <li><a href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a></li>
39 <li><a href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li> 39 <li><a href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a></li>
40 <li><a href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li> 40 <li><a href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a></li>
41 <li><a href="{{ path('new') }}">{% trans %}save a link{% endtrans %}</a></li> 41 <li><a href="{{ path('new') }}">{{ 'menu.left.save_link'|trans }}</a></li>
42 <li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a> 42 <li style="position: relative;"><a href="javascript: void(null);" id="search">{{ 'menu.left.search'|trans }}</a>
43 <div id="search-form" class="messages info popup-form"> 43 <div id="search-form" class="messages info popup-form">
44 <form method="get" action="index.php"> 44 <form method="get" action="index.php">
45 <h2>{% trans %}Search{% endtrans %}</h2> 45 <h2>{{ 'menu.left.search'|trans }}</h2>
46 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a> 46 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
47 <input type="hidden" name="view" value="search"> 47 <input type="hidden" name="view" value="search">
48 <input required placeholder="{% trans %}Enter your search here{% endtrans %}" type="text" name="search" id="searchfield"><br> 48 <input required placeholder="{{ 'menu.search_form.input_label'|trans }}" type="text" name="search" id="searchfield"><br>
49 <input id="submit-search" type="submit" value="{% trans %}Search{% endtrans %}"> 49 <input id="submit-search" type="submit" value="{{ 'menu.left.search'|trans }}">
50 </form> 50 </form>
51 </div> 51 </div>
52 </li> 52 </li>
53 <li><a href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li> 53 <li><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li>
54 {% if is_granted('ROLE_SUPER_ADMIN') %} 54 {% if is_granted('ROLE_SUPER_ADMIN') %}
55 <li><a href="{{ path('craue_config_settings_modify') }}">{% trans %}internal settings{% endtrans %}</a></li> 55 <li><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
56 {% endif %} 56 {% endif %}
57 <li><a href="{{ path('import') }}">{% trans %}import{% endtrans %}</a></li> 57 <li><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
58 <li><a href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li> 58 <li><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
59 <li><a href="{{ path('developer') }}">{% trans %}Developer{% endtrans %}</a></li> 59 <li><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li>
60 <li><a href="{{ path('about') }}">{% trans %}about{% endtrans %}</a></li> 60 <li><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li>
61 <li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li> 61 <li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li>
62 </ul> 62 </ul>
63{% endblock %} 63{% endblock %}
64 64
@@ -73,6 +73,6 @@
73 73
74{% block footer %} 74{% block footer %}
75 <footer class="w600p center mt3 mb3 smaller txtright"> 75 <footer class="w600p center mt3 mb3 smaller txtright">
76 <p>{% trans %}powered by{% endtrans %} <a href="http://wallabag.org">wallabag</a></p> 76 <p>{{ 'footer.wallabag.powered_by'|trans }} <a href="http://wallabag.org">wallabag</a></p>
77 </footer> 77 </footer>
78{% endblock %} 78{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
index 2b0b0828..3343a1d2 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}config{% endtrans %}{% endblock %} 3{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
@@ -11,13 +11,13 @@
11 <div class="row"> 11 <div class="row">
12 <div class="div_tabs col s12"> 12 <div class="div_tabs col s12">
13 <ul class="tabs"> 13 <ul class="tabs">
14 <li class="tab col s3"><a class="active" href="#set1">{% trans %}Settings{% endtrans %}</a></li> 14 <li class="tab col s3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
15 <li class="tab col s3"><a href="#set2">{% trans %}RSS{% endtrans %}</a></li> 15 <li class="tab col s3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li>
16 <li class="tab col s3"><a href="#set3">{% trans %}User information{% endtrans %}</a></li> 16 <li class="tab col s3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
17 <li class="tab col s3"><a href="#set4">{% trans %}Password{% endtrans %}</a></li> 17 <li class="tab col s3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
18 <li class="tab col s3"><a href="#set5">{% trans %}Tagging rules{% endtrans %}</a></li> 18 <li class="tab col s3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
19 {% if is_granted('ROLE_SUPER_ADMIN') %} 19 {% if is_granted('ROLE_SUPER_ADMIN') %}
20 <li class="tab col s3"><a href="#set6">{% trans %}Add a user{% endtrans %}</a></li> 20 <li class="tab col s3"><a href="#set6">{{ 'config.tab_menu.new_user'|trans }}</a></li>
21 {% endif %} 21 {% endif %}
22 </ul> 22 </ul>
23 </div> 23 </div>
@@ -28,9 +28,9 @@
28 28
29 <div class="row"> 29 <div class="row">
30 <div class="input-field col s12"> 30 <div class="input-field col s12">
31 {{ form_label(form.config.theme) }}
31 {{ form_errors(form.config.theme) }} 32 {{ form_errors(form.config.theme) }}
32 {{ form_widget(form.config.theme) }} 33 {{ form_widget(form.config.theme) }}
33 <label class="required">{% trans %}Theme{% endtrans %}</label>
34 </div> 34 </div>
35 </div> 35 </div>
36 36
@@ -47,7 +47,10 @@
47 {{ form_label(form.config.reading_speed) }} 47 {{ form_label(form.config.reading_speed) }}
48 {{ form_errors(form.config.reading_speed) }} 48 {{ form_errors(form.config.reading_speed) }}
49 {{ form_widget(form.config.reading_speed) }} 49 {{ form_widget(form.config.reading_speed) }}
50 <p>{% trans %}You can use online tools to estimate your reading speed{% endtrans %} (<a href="http://www.myreadspeed.com/calculate/">{% trans %}like this one{%endtrans%}</a>).</p> 50 <p>
51 {{ 'config.form_settings.reading_speed.help_message'|trans }}
52 <a href="http://www.myreadspeed.com/calculate/">myreadspeed</a>
53 </p>
51 </div> 54 </div>
52 </div> 55 </div>
53 56
@@ -59,10 +62,8 @@
59 </div> 62 </div>
60 </div> 63 </div>
61 64
62 <div class="hidden">{{ form_rest(form.config) }}</div> 65 {{ form_widget(form.config.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
63 <button class="btn waves-effect waves-light" type="submit" name="action"> 66 {{ form_rest(form.config) }}
64 {% trans %}Save{% endtrans %}
65 </button>
66 </form> 67 </form>
67 </div> 68 </div>
68 69
@@ -72,33 +73,37 @@
72 73
73 <div class="row"> 74 <div class="row">
74 <div class="input-field col s12"> 75 <div class="input-field col s12">
75 {% trans %}RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.{% endtrans %} 76 {{ 'config.form_rss.description'|trans }}
76 </div> 77 </div>
77 </div> 78 </div>
78 79
79 <div class="row"> 80 <div class="row">
80 <div class="input-field col s12"> 81 <div class="input-field col s12">
81 <label>{% trans %}RSS token{% endtrans %}</label> 82 <label>{{ 'config.form_rss.token_label'|trans }}</label>
82 <div> 83 <div>
83 {% if rss.token %} 84 {% if rss.token %}
84 {{ rss.token }} 85 {{ rss.token }}
85 {% else %} 86 {% else %}
86 <em>{% trans %}No token{% endtrans %}</em> 87 <em>{{ 'config.form_rss.no_token'|trans }}</em>
87 {% endif %} 88 {% endif %}
88 – <a href="{{ path('generate_token') }}">{% if rss.token %}{% trans %}Reset your token{% endtrans %}{% else %}{% trans %}Create your token{% endtrans %}{% endif %}</a> 89 – <a href="{{ path('generate_token') }}">
90 {% if rss.token %}
91 {{ 'config.form_rss.token_reset'|trans }}
92 {% else %}
93 {{ 'config.form_rss.token_create'|trans }}
94 {% endif %}</a>
89 </div> 95 </div>
90 </div> 96 </div>
91 </div> 97 </div>
92 {% if rss.token %} 98 {% if rss.token %}
93 <div class="row"> 99 <div class="row">
94 <div class="input-field col s12"> 100 <div class="input-field col s12">
95 <label>{% trans %}RSS links{% endtrans %}</label> 101 <label>{{ 'config.form_rss.rss_links'|trans }}</label>
96 <ul> 102 <ul>
97 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}unread{% endtrans %}</a></li> 103 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li>
98 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}starred{% endtrans %}</a></li> 104 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li>
99 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}archive{% endtrans %}</a></li> 105 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li>
100 </ul> 106 </ul>
101
102 </div> 107 </div>
103 </div> 108 </div>
104 {% endif %} 109 {% endif %}
@@ -111,11 +116,8 @@
111 </div> 116 </div>
112 </div> 117 </div>
113 118
114 <div class="hidden">{{ form_rest(form.rss) }}</div> 119 {{ form_widget(form.rss.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
115 <button class="btn waves-effect waves-light" type="submit" name="action"> 120 {{ form_rest(form.rss) }}
116 {% trans %}Save{% endtrans %}
117 </button>
118
119 </form> 121 </form>
120 </div> 122 </div>
121 123
@@ -142,7 +144,7 @@
142 {% if twofactor_auth %} 144 {% if twofactor_auth %}
143 <div class="row"> 145 <div class="row">
144 <div class="input-field col s12"> 146 <div class="input-field col s12">
145 {% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %} 147 {{ 'config.form_user.two_factor_description'|trans }}
146 </div> 148 </div>
147 </div> 149 </div>
148 150
@@ -155,11 +157,8 @@
155 </div> 157 </div>
156 {% endif %} 158 {% endif %}
157 159
158 <div class="hidden">{{ form_rest(form.user) }}</div> 160 {{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
159 <button class="btn waves-effect waves-light" type="submit" name="action"> 161 {{ form_rest(form.user) }}
160 {% trans %}Save{% endtrans %}
161 </button>
162
163 </form> 162 </form>
164 </div> 163 </div>
165 164
@@ -191,11 +190,8 @@
191 </div> 190 </div>
192 </div> 191 </div>
193 192
194 <div class="hidden">{{ form_rest(form.pwd) }}</div> 193 {{ form_widget(form.pwd.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
195 <button class="btn waves-effect waves-light" type="submit" name="action"> 194 {{ form_rest(form.pwd) }}
196 {% trans %}Save{% endtrans %}
197 </button>
198
199 </form> 195 </form>
200 </div> 196 </div>
201 197
@@ -205,8 +201,11 @@
205 <ul> 201 <ul>
206 {% for tagging_rule in app.user.config.taggingRules %} 202 {% for tagging_rule in app.user.config.taggingRules %}
207 <li> 203 <li>
208 if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} » 204 {{ 'config.form_rules.if_label'|trans }}
209 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}"> 205 « {{ tagging_rule.rule }} »
206 {{ 'config.form_rules.then_tag_as_label'|trans }}
207 « {{ tagging_rule.tags|join(', ') }} »
208 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}">
210 <i class="tool grey-text delete mdi-action-delete"></i> 209 <i class="tool grey-text delete mdi-action-delete"></i>
211 </a> 210 </a>
212 </li> 211 </li>
@@ -234,102 +233,88 @@
234 </div> 233 </div>
235 </div> 234 </div>
236 235
237 <div class="hidden">{{ form_rest(form.new_tagging_rule) }}</div> 236 {{ form_widget(form.new_tagging_rule.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
238 <button class="btn waves-effect waves-light" type="submit" name="action"> 237 {{ form_rest(form.new_tagging_rule) }}
239 {% trans %}Save{% endtrans %}
240 </button>
241 </form> 238 </form>
242 239
243 <div class="row"> 240 <div class="row">
244 <div class="input-field col s12"> 241 <div class="input-field col s12">
245 <h4>{% trans %}FAQ{% endtrans %}</h4> 242 <h4>{{ 'config.form_rules.faq.title'|trans }}</h4>
246 243
247 <h5>{% trans %}What does « tagging rules » mean?{% endtrans %}</h5> 244 <h5>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h5>
248 <p class="help"> 245 <p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
249 {% trans %}
250 They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.
251 {% endtrans %}
252 </p>
253 246
254 <h5>{% trans %}How do I use them?{% endtrans %}</h5> 247 <h5>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h5>
255 <p class="help"> 248 <p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
256 {% trans %}
257 Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »
258 {% endtrans %}
259 </p>
260 249
261 <h5>{% trans %}Which variables and operators can I use to write rules?{% endtrans %}</h5> 250 <h5>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h5>
262 <p class="help"> 251 <p class="help">
263 {% trans %}The following variables and operators can be used to create tagging rules:{% endtrans %} 252 {{ 'config.form_rules.faq.variables_available_description'|trans }}
264 253
265 <table> 254 <table class="bordered">
266 <thead> 255 <thead>
267 <tr> 256 <tr>
268 <th>{% trans %}Variable{% endtrans %}</th> 257 <th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
269 <th>{% trans %}Meaning{% endtrans %}</th> 258 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
270 <th>{% trans %}Operator{% endtrans %}</th> 259 <th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
271 <th>{% trans %}Meaning{% endtrans %}</th> 260 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
272 </tr> 261 </tr>
273 </thead> 262 </thead>
274 263
275 <tbody> 264 <tbody>
276 <tr> 265 <tr>
277 <td>title</td> 266 <td>title</td>
278 <td>{% trans %}Title of the entry{% endtrans %}</td> 267 <td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
279 <td>&lt;=</td> 268 <td>&lt;=</td>
280 <td>{% trans %}Less than…{% endtrans %}</td> 269 <td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
281 </tr> 270 </tr>
282 <tr> 271 <tr>
283 <td>url</td> 272 <td>url</td>
284 <td>{% trans %}URL of the entry{% endtrans %}</td> 273 <td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
285 <td>&lt;</td> 274 <td>&lt;</td>
286 <td>{% trans %}Strictly less than…{% endtrans %}</td> 275 <td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
287 </tr> 276 </tr>
288 <tr> 277 <tr>
289 <td>isArchived</td> 278 <td>isArchived</td>
290 <td>{% trans %}Whether the entry is archived or not{% endtrans %}</td> 279 <td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
291 <td>=&gt;</td> 280 <td>=&gt;</td>
292 <td>{% trans %}Greater than…{% endtrans %}</td> 281 <td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
293 </tr> 282 </tr>
294 <tr> 283 <tr>
295 <td>isStarred</td> 284 <td>isStarred</td>
296 <td>{% trans %}Whether the entry is starred or not{% endtrans %}</td> 285 <td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
297 <td>&gt;</td> 286 <td>&gt;</td>
298 <td>{% trans %}Strictly greater than…{% endtrans %}</td> 287 <td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
299 </tr> 288 </tr>
300 <tr> 289 <tr>
301 <td>content</td> 290 <td>content</td>
302 <td>{% trans %}The entry's content{% endtrans %}</td> 291 <td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
303 <td>=</td> 292 <td>=</td>
304 <td>{% trans %}Equal to…{% endtrans %}</td> 293 <td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
305 </tr> 294 </tr>
306 <tr> 295 <tr>
307 <td>language</td> 296 <td>language</td>
308 <td>{% trans %}The entry's language{% endtrans %}</td> 297 <td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
309 <td>!=</td> 298 <td>!=</td>
310 <td>{% trans %}Not equal to…{% endtrans %}</td> 299 <td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
311 </tr> 300 </tr>
312 <tr> 301 <tr>
313 <td>mimetype</td> 302 <td>mimetype</td>
314 <td>{% trans %}The entry's mime-type{% endtrans %}</td> 303 <td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
315 <td>OR</td> 304 <td>OR</td>
316 <td>{% trans %}One rule or another{% endtrans %}</td> 305 <td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
317 </tr> 306 </tr>
318 <tr> 307 <tr>
319 <td>readingTime</td> 308 <td>readingTime</td>
320 <td>{% trans %}The estimated entry's reading time, in minutes{% endtrans %}</td> 309 <td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
321 <td>AND</td> 310 <td>AND</td>
322 <td>{% trans %}One rule and another{% endtrans %}</td> 311 <td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
323 </tr> 312 </tr>
324 <tr> 313 <tr>
325 <td>domainName</td> 314 <td>domainName</td>
326 <td>{% trans %}The domain name of the entry{% endtrans %}</td> 315 <td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
327 <td>matches</td> 316 <td>matches</td>
328 <td> 317 <td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}</td>
329 {% trans %}
330 Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>
331 {% endtrans %}
332 </td>
333 </tr> 318 </tr>
334 </tbody> 319 </tbody>
335 </table> 320 </table>
@@ -375,11 +360,8 @@
375 </div> 360 </div>
376 </div> 361 </div>
377 362
378 <div class="hidden">{{ form_rest(form.new_user) }}</div> 363 {{ form_widget(form.new_user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
379 <button class="btn waves-effect waves-light" type="submit" name="action"> 364 {{ form_rest(form.new_user) }}
380 {% trans %}Add a user{% endtrans %}
381 </button>
382
383 </form> 365 </form>
384 </div> 366 </div>
385 {% endif %} 367 {% endif %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig
index c9ce6d08..78a9dc04 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}New client{% endtrans %}{% endblock %} 3{% block title %}{{ 'developer.client.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6<div class="row"> 6<div class="row">
@@ -8,7 +8,7 @@
8 <div class="card-panel settings"> 8 <div class="card-panel settings">
9 9
10 <div class="row"> 10 <div class="row">
11 <p>{% trans %}You are about to create a new client. Please fill the field below for the redirect URI of your application.{% endtrans %}</p> 11 <p>{{ 'developer.client.page_description'|trans }}</p>
12 {{ form_start(form) }} 12 {{ form_start(form) }}
13 {{ form_errors(form) }} 13 {{ form_errors(form) }}
14 14
@@ -18,7 +18,7 @@
18 {{ form_widget(form.redirect_uris) }} 18 {{ form_widget(form.redirect_uris) }}
19 </div> 19 </div>
20 20
21 <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{% trans %}Back{% endtrans %}</a> 21 <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.client.action_back'|trans }}</a>
22 {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} 22 {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
23 23
24 {{ form_rest(form) }} 24 {{ form_rest(form) }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig
index a214dfd0..b615fa3b 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig
@@ -1,20 +1,20 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Client parameters{% endtrans %}{% endblock %} 3{% block title %}{{ 'developer.client_parameter.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6<div class="row"> 6<div class="row">
7 <div class="col s12"> 7 <div class="col s12">
8 <div class="card-panel settings"> 8 <div class="card-panel settings">
9 <div class="row"> 9 <div class="row">
10 <p>{% trans %}Here are your client parameters.{% endtrans %}</p> 10 <p>{{ 'developer.client_parameter.page_description'|trans }}</p>
11 <ul> 11 <ul>
12 <li>{% trans %}Client ID{% endtrans %}: <strong><pre>{{ client_id }}</pre></strong></li> 12 <li>{{ 'developer.client_parameter.field_id'|trans }}: <strong><pre>{{ client_id }}</pre></strong></li>
13 <li>{% trans %}Client secret{% endtrans %}: <strong><pre>{{ client_secret }}</pre></strong></li> 13 <li>{{ 'developer.client_parameter.field_secret'|trans }}: <strong><pre>{{ client_secret }}</pre></strong></li>
14 </ul> 14 </ul>
15 15
16 <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{% trans %}Back{% endtrans %}</a> 16 <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.client_parameter.back'|trans }}</a>
17 <a href="{{ path('developer_howto_firstapp') }}" class="btn waves-effect waves-light">{% trans %}Read the howto "Create my first application"{% endtrans %}</a> 17 <a href="{{ path('developer_howto_firstapp') }}" class="btn waves-effect waves-light">{{ 'developer.client_parameter.read_howto'|trans }}</a>
18 </div> 18 </div>
19 </div> 19 </div>
20 </div> 20 </div>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig
index 382e6311..acbc2c88 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}How to create my first application{% endtrans %}{% endblock %} 3{% block title %}{{ 'developer.howto.page_title'|trans }}{% endblock %}
4 4
5{% block css %} 5{% block css %}
6 {{ parent() }} 6 {{ parent() }}
@@ -13,10 +13,10 @@
13 <div class="card-panel settings"> 13 <div class="card-panel settings">
14 14
15 <div class="row"> 15 <div class="row">
16 <p>{% trans %}The following commands make use of the <a href="https://github.com/jkbrzt/httpie">HTTPie library</a>. Make sure it is installed on your system before using it.{% endtrans %}</p> 16 <p>{{ 'developer.howto.description.paragraph_1'|trans|raw }}</p>
17 <p>{% trans %}You need a token to communicate between your 3rd application and wallabag API.{% endtrans %}</p> 17 <p>{{ 'developer.howto.description.paragraph_2'|trans }}</p>
18 <p>{% trans with {'%link%': path('developer_create_client')} %}To create this token, you need <a href="%link%">to create a new client</a>.{% endtrans %}</p> 18 <p>{{ 'developer.howto.description.paragraph_3'|trans({'%link%': path('developer_create_client')})|raw }}</p>
19 <p>{% trans %}Now, create your token (replace client_id, client_secret, username and password with the good values):{% endtrans %}</p> 19 <p>{{ 'developer.howto.description.paragraph_4'|trans }}</p>
20 <p> 20 <p>
21 <pre><code class="language-bash">http POST http://v2.wallabag.org/oauth/v2/token \ 21 <pre><code class="language-bash">http POST http://v2.wallabag.org/oauth/v2/token \
22 grant_type=password \ 22 grant_type=password \
@@ -25,7 +25,7 @@
25 username=yourUsername \ 25 username=yourUsername \
26 password=yourPassw0rd</code></pre> 26 password=yourPassw0rd</code></pre>
27 </p> 27 </p>
28 <p>{% trans %}The API will return a response like this:{% endtrans %}</p> 28 <p>{{ 'developer.howto.description.paragraph_5'|trans }}</p>
29 <p> 29 <p>
30 <pre><code class="language-bash">HTTP/1.1 200 OK 30 <pre><code class="language-bash">HTTP/1.1 200 OK
31Cache-Control: no-store, private 31Cache-Control: no-store, private
@@ -45,14 +45,14 @@ X-Powered-By: PHP/5.5.9-1ubuntu4.13
45 "token_type": "bearer" 45 "token_type": "bearer"
46}</code></pre> 46}</code></pre>
47 </p> 47 </p>
48 <p>{% trans %}The access_token is useful to do a call to the API endpoint. For example:{% endtrans %}</p> 48 <p>{{ 'developer.howto.description.paragraph_6'|trans }}</p>
49 <p> 49 <p>
50 <pre><code class="language-bash">http GET http://v2.wallabag.org/api/entries.json \ 50 <pre><code class="language-bash">http GET http://v2.wallabag.org/api/entries.json \
51 "Authorization:Bearer ZWFjNjA3ZWMwYWVmYzRkYTBlMmQ3NTllYmVhOGJiZDE0ZTg1NjE4MjczOTVlNzM0ZTRlMWQ0MmRlMmYwNTk5Mw"</code></pre> 51 "Authorization:Bearer ZWFjNjA3ZWMwYWVmYzRkYTBlMmQ3NTllYmVhOGJiZDE0ZTg1NjE4MjczOTVlNzM0ZTRlMWQ0MmRlMmYwNTk5Mw"</code></pre>
52 </p> 52 </p>
53 <p>{% trans %}This call will return all the entries for your user.{% endtrans %}</p> 53 <p>{{ 'developer.howto.description.paragraph_7'|trans }}</p>
54 <p>{% trans with {'%link%': path('nelmio_api_doc_index')} %}If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.{% endtrans %}</p> 54 <p>{{ 'developer.howto.description.paragraph_8'|trans({'%link%': path('nelmio_api_doc_index')})|raw }}</p>
55 <p><a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{% trans %}Back{% endtrans %}</a></p> 55 <p><a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.howto.back'|trans }}</a></p>
56 </div> 56 </div>
57 57
58 </div> 58 </div>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig
index 2e7dbcab..e12779b7 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Developer{% endtrans %}{% endblock %} 3{% block title %}{{ 'developer.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6<div class="row"> 6<div class="row">
@@ -8,21 +8,21 @@
8 <div class="card-panel settings"> 8 <div class="card-panel settings">
9 9
10 <div class="row"> 10 <div class="row">
11 <h3>{% trans %}Welcome to the wallabag API{% endtrans %}</h3> 11 <h3>{{ 'developer.welcome_message'|trans }}</h3>
12 12
13 <h4>{% trans %}Documentation{% endtrans %}</h4> 13 <h4>{{ 'developer.documentation'|trans }}</h4>
14 14
15 <ul> 15 <ul>
16 <li><a href="{{ path('developer_howto_firstapp') }}">{% trans %}How to create my first application{% endtrans %}</a></li> 16 <li><a href="{{ path('developer_howto_firstapp') }}">{{ 'developer.how_to_first_app'|trans }}</a></li>
17 <li><a href="{{ path('nelmio_api_doc_index') }}">{% trans %}View full API documentation{% endtrans %}</a></li> 17 <li><a href="{{ path('nelmio_api_doc_index') }}">{{ 'developer.full_documentation'|trans }}</a></li>
18 </ul> 18 </ul>
19 19
20 <h4>{% trans %}Clients{% endtrans %}</h4> 20 <h4>{{ 'developer.clients.title'|trans }}</h4>
21 <ul> 21 <ul>
22 <li><a href="{{ path('developer_create_client') }}">{% trans %}Create a new client{% endtrans %}</a></li> 22 <li><a href="{{ path('developer_create_client') }}">{{ 'developer.clients.create_new'|trans }}</a></li>
23 </ul> 23 </ul>
24 24
25 <h4>{% trans %}Existing clients{% endtrans %}</h4> 25 <h4>{{ 'developer.existing_clients.title'|trans }}</h4>
26 {% if clients %} 26 {% if clients %}
27 <ul class="collapsible" data-collapsible="expandable"> 27 <ul class="collapsible" data-collapsible="expandable">
28 {% for client in clients %} 28 {% for client in clients %}
@@ -31,33 +31,33 @@
31 <div class="collapsible-body"> 31 <div class="collapsible-body">
32 <table class="striped"> 32 <table class="striped">
33 <tr> 33 <tr>
34 <td>{% trans %}Client ID{% endtrans %}</td> 34 <td>{{ 'developer.existing_clients.field_id'|trans }}</td>
35 <td><strong><code>{{ client.id }}_{{ client.randomId }}</code></strong></td> 35 <td><strong><code>{{ client.id }}_{{ client.randomId }}</code></strong></td>
36 </tr> 36 </tr>
37 <tr> 37 <tr>
38 <td>{% trans %}Client secret{% endtrans %}</td> 38 <td>{{ 'developer.existing_clients.field_secret'|trans }}</td>
39 <td><strong><code>{{ client.secret }}</code></strong></td> 39 <td><strong><code>{{ client.secret }}</code></strong></td>
40 </tr> 40 </tr>
41 <tr> 41 <tr>
42 <td>{% trans %}Redirect URIs{% endtrans %}</td> 42 <td>{{ 'developer.existing_clients.field_uris'|trans }}</td>
43 <td><strong><code>{{ client.redirectUris|json_encode() }}</code></strong></td> 43 <td><strong><code>{{ client.redirectUris|json_encode() }}</code></strong></td>
44 </tr> 44 </tr>
45 <tr> 45 <tr>
46 <td>{% trans %}Grant type allowed{% endtrans %}</td> 46 <td>{{ 'developer.existing_clients.field_grant_types'|trans }}</td>
47 <td><strong><code>{{ client.allowedGrantTypes|json_encode() }}</code></strong></td> 47 <td><strong><code>{{ client.allowedGrantTypes|json_encode() }}</code></strong></td>
48 </tr> 48 </tr>
49 </table> 49 </table>
50 <p> 50 <p>
51 {% trans %}You have the ability to remove this client. This action is IRREVERSIBLE !{% endtrans %}<br/> 51 {{ 'developer.remove.warn_message_1'|trans }}<br/>
52 {% trans %}If you remove it, every app configured with that client won't be able to auth on your wallabag.{% endtrans %}<br/> 52 {{ 'developer.remove.warn_message_2'|trans }}<br/>
53 <a class="waves-effect waves-light red btn" href="{{ path('developer_delete_client', {'id': client.id}) }}">{% trans %}Remove this client{% endtrans %}</a> 53 <a class="waves-effect waves-light red btn" href="{{ path('developer_delete_client', {'id': client.id}) }}">{{ 'developer.remove.action'|trans }}</a>
54 </p> 54 </p>
55 </div> 55 </div>
56 </li> 56 </li>
57 {% endfor %} 57 {% endfor %}
58 </ul> 58 </ul>
59 {% else %} 59 {% else %}
60 {% trans %}No client yet.{% endtrans %} 60 {{ 'developer.existing_clients.no_client'|trans }}
61 {% endif %} 61 {% endif %}
62 </div> 62 </div>
63 63
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig
index c002c4c3..1c5e2aab 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Edit an entry{% endtrans %}{% endblock %} 3{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
@@ -10,7 +10,6 @@
10 10
11 <form name="entry" method="post" action=""> 11 <form name="entry" method="post" action="">
12 <div class="card-content"> 12 <div class="card-content">
13
14 {% if form_errors(form) %} 13 {% if form_errors(form) %}
15 <span class="black-text">{{ form_errors(form) }}</span> 14 <span class="black-text">{{ form_errors(form) }}</span>
16 {% endif %} 15 {% endif %}
@@ -25,16 +24,19 @@
25 </div> 24 </div>
26 25
27 <div class="input-field s12"> 26 <div class="input-field s12">
27 {{ form_label(form.url) }}
28 {{ form_widget(form.url) }}
29 </div>
30
31 <div class="input-field s12">
28 {{ form_widget(form.is_public) }} 32 {{ form_widget(form.is_public) }}
29 {{ form_label(form.is_public) }} 33 {{ form_label(form.is_public) }}
30 </div> 34 </div>
31 <br> 35 <br>
32 <button class="btn waves-effect waves-light" type="submit" name="entry[save]"> 36
33 {% trans %}Save{% endtrans %} 37 {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
34 <i class="mdi-content-send right"></i>
35 </button>
36 </div> 38 </div>
37 <div class="hidden">{{ form_rest(form) }}</div> 39 {{ form_rest(form) }}
38 </form> 40 </form>
39 41
40 </div> 42 </div>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
index 371992df..433b1cae 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
@@ -4,13 +4,13 @@
4 {% set currentRoute = app.request.attributes.get('_route') %} 4 {% set currentRoute = app.request.attributes.get('_route') %}
5 5
6 {% if currentRoute == 'starred' %} 6 {% if currentRoute == 'starred' %}
7 {% trans %}starred{% endtrans %} 7 {{ 'entry.page_titles.starred'|trans }}
8 {% elseif currentRoute == 'archive' %} 8 {% elseif currentRoute == 'archive' %}
9 {% trans %}archive{% endtrans %} 9 {{ 'entry.page_titles.archived'|trans }}
10 {% elseif currentRoute == 'all' %} 10 {% elseif currentRoute == 'all' %}
11 {% trans %}Filtered{% endtrans %} 11 {{ 'entry.page_titles.filtered'|trans }}
12 {% else %} 12 {% else %}
13 {% trans %}unread{% endtrans %} 13 {{ 'entry.page_titles.unread'|trans }}
14 {% endif %} 14 {% endif %}
15 15
16{% endblock %} 16{% endblock %}
@@ -18,7 +18,9 @@
18{% block content %} 18{% block content %}
19 {% block pager %} 19 {% block pager %}
20 <div class="results clearfix"> 20 <div class="results clearfix">
21 <div class="nb-results left">{% transchoice entries.count %}{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.{% endtranschoice %}</div> 21 <div class="nb-results left">
22 {{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}
23 </div>
22 <ul class="pagination right"> 24 <ul class="pagination right">
23 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %} 25 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
24 <li class="{{ currentPage == p ? 'active':'waves-effect'}}"> 26 <li class="{{ currentPage == p ? 'active':'waves-effect'}}">
@@ -52,9 +54,9 @@
52 <span class="tool reading-time"> 54 <span class="tool reading-time">
53 {% set readingTime = entry.readingTime / app.user.config.readingSpeed %} 55 {% set readingTime = entry.readingTime / app.user.config.readingSpeed %}
54 {% if readingTime > 0 %} 56 {% if readingTime > 0 %}
55 {% trans with {'%readingTime%': readingTime } %}estimated reading time: %readingTime% min{% endtrans %} 57 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': readingTime}) }}
56 {% else %} 58 {% else %}
57 {% trans with {'%inferior%': '<small class="inferieur">&lt;</small>'} %}estimated reading time: %inferior% 1 min{% endtrans %} 59 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
58 {% endif %} 60 {% endif %}
59 </span> 61 </span>
60 </div> 62 </div>
@@ -72,7 +74,7 @@
72 74
73 <div class="estimatedTime grey-text"> 75 <div class="estimatedTime grey-text">
74 <span class="tool reading-time"> 76 <span class="tool reading-time">
75 {% trans %}estimated reading time{% endtrans %}: 77 {{ 'entry.list.reading_time'|trans }}
76 {% if entry.readingTime > 0 %}{{ entry.readingTime }}{% else %}<small class="inferieur">&lt;</small> 1{% endif %} min 78 {% if entry.readingTime > 0 %}{{ entry.readingTime }}{% else %}<small class="inferieur">&lt;</small> 1{% endif %} min
77 </span> 79 </span>
78 </div> 80 </div>
@@ -82,13 +84,15 @@
82 {% endif %} 84 {% endif %}
83 85
84 <div class="card-action"> 86 <div class="card-action">
85 <span class="bold"><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %}: {{ entry.title|e }} - {{ entry.domainName|removeWww }}" class="tool original grey-text"><span>{{ entry.domainName|removeWww|truncate(18) }}</span></a></bold> 87 <span class="bold">
88 <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }}: {{ entry.title|e }} - {{ entry.domainName|removeWww }}" class="tool original grey-text"><span>{{ entry.domainName|removeWww|truncate(18) }}</span></a>
89 </bold>
86 90
87 <ul class="tools links right"> 91 <ul class="tools links right">
88 <li> 92 <li>
89 <a title="{% trans %}Toggle mark as read{% endtrans %}" class="tool grey-text {% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"></a> 93 <a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text {% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"></a>
90 <a title="{% trans %}Toggle favorite{% endtrans %}" class="tool grey-text {% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"></a> 94 <a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text {% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"></a>
91 <a title="{% trans %}Delete{% endtrans %}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a> 95 <a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a>
92 </li> 96 </li>
93 </ul> 97 </ul>
94 </div> 98 </div>
@@ -103,7 +107,7 @@
103 {% if currentRoute == 'homepage' %} 107 {% if currentRoute == 'homepage' %}
104 {% set currentRoute = 'unread' %} 108 {% set currentRoute = 'unread' %}
105 {% endif %} 109 {% endif %}
106 <h4 class="center">{% trans %}Export{% endtrans %}</h4> 110 <h4 class="center">{{ 'entry.list.export_title'|trans }}</h4>
107 <ul> 111 <ul>
108 {% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub' }) }}">EPUB</a></li>{% endif %} 112 {% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub' }) }}">EPUB</a></li>{% endif %}
109 {% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'mobi' }) }}">MOBI</a></li>{% endif %} 113 {% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'mobi' }) }}">MOBI</a></li>{% endif %}
@@ -119,34 +123,34 @@
119 <div id="filters" class="side-nav fixed right-aligned"> 123 <div id="filters" class="side-nav fixed right-aligned">
120 <form action="{{ path('all') }}"> 124 <form action="{{ path('all') }}">
121 125
122 <h4 class="center">{% trans %}Filters{% endtrans %}</h4> 126 <h4 class="center">{{ 'entry.filters.title'|trans }}</h4>
123 127
124 <div class="row"> 128 <div class="row">
125 <div class="col s12"> 129 <div class="col s12">
126 <label>{% trans %}Status{% endtrans %}</label> 130 <label>{{ 'entry.filters.status_label'|trans }}</label>
127 </div> 131 </div>
128 132
129 <div class="input-field col s6 with-checkbox"> 133 <div class="input-field col s6 with-checkbox">
130 {{ form_widget(form.isArchived) }} 134 {{ form_widget(form.isArchived) }}
131 <label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label> 135 {{ form_label(form.isArchived) }}
132 </div> 136 </div>
133 137
134 <div class="input-field col s6 with-checkbox"> 138 <div class="input-field col s6 with-checkbox">
135 {{ form_widget(form.isStarred) }} 139 {{ form_widget(form.isStarred) }}
136 <label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label> 140 {{ form_label(form.isStarred) }}
137 </div> 141 </div>
138 142
139 <div class="col s12"> 143 <div class="col s12">
140 <label>{% trans %}Preview picture{% endtrans %}</label> 144 <label>{{ 'entry.filters.preview_picture_help'|trans }}</label>
141 </div> 145 </div>
142 146
143 <div class="input-field col s12 with-checkbox"> 147 <div class="input-field col s12 with-checkbox">
144 {{ form_widget(form.previewPicture) }} 148 {{ form_widget(form.previewPicture) }}
145 <label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label> 149 {{ form_label(form.previewPicture) }}
146 </div> 150 </div>
147 151
148 <div class="col s12"> 152 <div class="col s12">
149 <label>{% trans %}Language{% endtrans %}</label> 153 {{ form_label(form.language) }}
150 </div> 154 </div>
151 155
152 <div class="input-field col s12"> 156 <div class="input-field col s12">
@@ -154,43 +158,42 @@
154 </div> 158 </div>
155 159
156 <div class="col s12"> 160 <div class="col s12">
157 <label>{% trans %}Reading time in minutes{% endtrans %}</label> 161 {{ form_label(form.readingTime) }}
158 </div> 162 </div>
159 <div class="input-field col s6"> 163 <div class="input-field col s6">
160 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }} 164 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
161 <label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label> 165 <label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
162 </div> 166 </div>
163 <div class="input-field col s6"> 167 <div class="input-field col s6">
164 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }} 168 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
165 <label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label> 169 <label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
166 </div> 170 </div>
167 171
168 <div class="input-field col s12"> 172 <div class="input-field col s12">
169 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com' | trans} }) }} 173 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
170 <label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label> 174 {{ form_label(form.domainName) }}
171 </div> 175 </div>
172 176
173 <div class="col s12"> 177 <div class="col s12">
174 <label>{% trans %}Creation date{% endtrans %}</label> 178 {{ form_label(form.createdAt) }}
175 </div> 179 </div>
176 180
177 <div class="input-field col s6"> 181 <div class="input-field col s6">
178 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }} 182 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
179 <label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label> 183 <label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
180 </div> 184 </div>
181 <div class="input-field col s6"> 185 <div class="input-field col s6">
182 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }} 186 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
183 <label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label> 187 <label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
184 </div> 188 </div>
185 189
186 <div class="col s6"> 190 <div class="col s6">
187 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a> 191 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
188 </div> 192 </div>
189 193
190 <div class="col s6"> 194 <div class="col s6">
191 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filter{% endtrans %}</button> 195 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
192 </div> 196 </div>
193
194 </div> 197 </div>
195 198
196 </form> 199 </form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig
index a39a8dc3..98f7194c 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig
@@ -18,9 +18,9 @@
18 <description> 18 <description>
19 <![CDATA[ 19 <![CDATA[
20 {%- if entry.readingTime > 0 -%} 20 {%- if entry.readingTime > 0 -%}
21 {% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min 21 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
22 {%- else -%} 22 {%- else -%}
23 {% trans %}estimated reading time :{% endtrans %} &lt; 1 min 23 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
24 {%- endif %} 24 {%- endif %}
25 25
26 {{ entry.content|raw -}} 26 {{ entry.content|raw -}}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
index 6f33da23..4eebf18f 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
@@ -2,6 +2,8 @@
2 2
3{% block title %}{{ entry.title|raw }} ({{ entry.domainName|removeWww }}){% endblock %} 3{% block title %}{{ entry.title|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
4 4
5{% block body_class %}entry{% endblock %}
6
5{% block menu %} 7{% block menu %}
6 <div class="progress"> 8 <div class="progress">
7 <div class="determinate"></div> 9 <div class="determinate"></div>
@@ -17,12 +19,12 @@
17 </ul> 19 </ul>
18 <ul class="right"> 20 <ul class="right">
19 <li> 21 <li>
20 <a class="waves-effect" title="{% trans %}Mark as read{% endtrans %}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead"> 22 <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
21 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i> 23 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
22 </a> 24 </a>
23 </li> 25 </li>
24 <li> 26 <li>
25 <a class="waves-effect" title="{% trans %}Favorite{% endtrans %}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav"> 27 <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
26 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i> 28 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
27 </a> 29 </a>
28 </li> 30 </li>
@@ -38,7 +40,7 @@
38 <li class="bold border-bottom hide-on-med-and-down"> 40 <li class="bold border-bottom hide-on-med-and-down">
39 <a class="waves-effect collapsible-header" href="{{ path('homepage') }}"> 41 <a class="waves-effect collapsible-header" href="{{ path('homepage') }}">
40 <i class="mdi-action-exit-to-app small"></i> 42 <i class="mdi-action-exit-to-app small"></i>
41 <span>{% trans %}back{% endtrans %}</span> 43 <span>{{ 'entry.view.left_menu.back_to_homepage'|trans }}</span>
42 </a> 44 </a>
43 <div class="collapsible-body"></div> 45 <div class="collapsible-body"></div>
44 </li> 46 </li>
@@ -46,38 +48,38 @@
46 <li class="bold border-bottom hide-on-med-and-down"> 48 <li class="bold border-bottom hide-on-med-and-down">
47 <a class="waves-effect collapsible-header" href="{{ entry.url|e }}"> 49 <a class="waves-effect collapsible-header" href="{{ entry.url|e }}">
48 <i class="mdi-content-link small"></i> 50 <i class="mdi-content-link small"></i>
49 <span>{% trans %}original article{% endtrans %}</span> 51 <span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span>
50 </a> 52 </a>
51 <div class="collapsible-body"></div> 53 <div class="collapsible-body"></div>
52 </li> 54 </li>
53 55
54 <li class="bold hide-on-med-and-down"> 56 <li class="bold hide-on-med-and-down">
55 <a class="waves-effect collapsible-header" title="{% trans %}Re-fetch content{% endtrans %}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload"> 57 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload">
56 <i class="mdi-action-autorenew small"></i> 58 <i class="mdi-action-autorenew small"></i>
57 <span>{% trans %}Re-fetch content{% endtrans %}</span> 59 <span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span>
58 </a> 60 </a>
59 <div class="collapsible-body"></div> 61 <div class="collapsible-body"></div>
60 </li> 62 </li>
61 63
62 <li class="bold hide-on-med-and-down"> 64 <li class="bold hide-on-med-and-down">
63 <a class="waves-effect collapsible-header" title="{% trans %}Mark as read{% endtrans %}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead"> 65 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
64 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i> 66 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
65 <span>{% if entry.isArchived == 0 %}{% trans %}Mark as read{% endtrans %}{% else %}{% trans %}Mark as unread{% endtrans %}{% endif %}</span> 67 <span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span>
66 </a> 68 </a>
67 <div class="collapsible-body"></div> 69 <div class="collapsible-body"></div>
68 </li> 70 </li>
69 71
70 <li class="bold hide-on-med-and-down"> 72 <li class="bold hide-on-med-and-down">
71 <a class="waves-effect collapsible-header" title="{% trans %}Favorite{% endtrans %}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav"> 73 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
72 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i> 74 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
73 <span>{% trans %}Favorite{% endtrans %}</span> 75 <span>{{ 'entry.view.left_menu.set_as_favorite'|trans }}</span>
74 </a> 76 </a>
75 <div class="collapsible-body"></div> 77 <div class="collapsible-body"></div>
76 </li> 78 </li>
77 <li class="bold border-bottom hide-on-med-and-down"> 79 <li class="bold border-bottom hide-on-med-and-down">
78 <a class="waves-effect collapsible-header" title="{% trans %}Delete{% endtrans %}" href="{{ path('delete_entry', { 'id': entry.id }) }}"> 80 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
79 <i class="mdi-action-delete small"></i> 81 <i class="mdi-action-delete small"></i>
80 <span>{% trans %}Delete{% endtrans %}</span> 82 <span>{{ 'entry.view.left_menu.delete'|trans }}</span>
81 </a> 83 </a>
82 <div class="collapsible-body"></div> 84 <div class="collapsible-body"></div>
83 </li> 85 </li>
@@ -85,7 +87,7 @@
85 <li class="bold border-bottom hide-on-med-and-down"> 87 <li class="bold border-bottom hide-on-med-and-down">
86 <a class="waves-effect collapsible-header" id="nav-btn-add-tag"> 88 <a class="waves-effect collapsible-header" id="nav-btn-add-tag">
87 <i class="mdi-action-label-outline small"></i> 89 <i class="mdi-action-label-outline small"></i>
88 <span>{% trans %}Add a tag{% endtrans %}</span> 90 <span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span>
89 </a> 91 </a>
90 <div class="collapsible-body"></div> 92 <div class="collapsible-body"></div>
91 </li> 93 </li>
@@ -93,7 +95,7 @@
93 <li class="bold"> 95 <li class="bold">
94 <a class="waves-effect collapsible-header"> 96 <a class="waves-effect collapsible-header">
95 <i class="mdi-social-share small"></i> 97 <i class="mdi-social-share small"></i>
96 <span>{% trans %}Share{% endtrans %}</span> 98 <span>{{ 'entry.view.left_menu.share_content'|trans }}</span>
97 </a> 99 </a>
98 <div class="collapsible-body"> 100 <div class="collapsible-body">
99 <ul> 101 <ul>
@@ -127,8 +129,8 @@
127 {% endif %} 129 {% endif %}
128 {% if craue_setting('share_mail') %} 130 {% if craue_setting('share_mail') %}
129 <li> 131 <li>
130 <a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans %}Email{% endtrans %}"> 132 <a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{{ 'entry.view.left_menu.share_email_label'|trans }}">
131 <span>{% trans %}Email{% endtrans %}</span> 133 <span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span>
132 </a> 134 </a>
133 </li> 135 </li>
134 {% endif %} 136 {% endif %}
@@ -139,7 +141,7 @@
139 <li class="bold"> 141 <li class="bold">
140 <a class="waves-effect collapsible-header"> 142 <a class="waves-effect collapsible-header">
141 <i class="mdi-file-file-download small"></i> 143 <i class="mdi-file-file-download small"></i>
142 <span>{% trans %}Download{% endtrans %}</span> 144 <span>{{ 'entry.view.left_menu.download'|trans }}</span>
143 </a> 145 </a>
144 <div class="collapsible-body"> 146 <div class="collapsible-body">
145 <ul> 147 <ul>
@@ -155,40 +157,33 @@
155 </li> 157 </li>
156 158
157 <li class="bold hide-on-large-only"> 159 <li class="bold hide-on-large-only">
158 <a class="waves-effect collapsible-header" title="{% trans %}Delete{% endtrans %}" href="{{ path('delete_entry', { 'id': entry.id }) }}"> 160 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
159 <i class="mdi-action-delete small"></i> 161 <i class="mdi-action-delete small"></i>
160 <span>{% trans %}Delete{% endtrans %}</span> 162 <span>{{ 'entry.view.left_menu.delete'|trans }}</span>
161 </a> 163 </a>
162 <div class="collapsible-body"></div> 164 <div class="collapsible-body"></div>
163 </li> 165 </li>
164 166
165 <li class="bold"> 167 <li class="bold">
166 <a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans %}Does this article appear wrong?{% endtrans %}"> 168 <a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}">
167 <i class="mdi-alert-error small"></i> 169 <i class="mdi-alert-error small"></i>
168 <span>{% trans %}Problems?{% endtrans %}</span> 170 <span>{{ 'entry.view.left_menu.problem.label'|trans }}</span>
169 </a> 171 </a>
170 <div class="collapsible-body"></div> 172 <div class="collapsible-body"></div>
171 </li> 173 </li>
172 174
173 </ul> 175 </ul>
174 176
175<style>
176main {
177 padding: 0;
178}
179</style>
180
181{% endblock %} 177{% endblock %}
182 178
183{% block content %} 179{% block content %}
184 <div id="article"> 180 <div id="article">
185 <header class="mbm"> 181 <header class="mbm">
186 <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{% trans %}Edit title{% endtrans %}">✎</a></h1> 182 <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
187 </header> 183 </header>
188 <aside> 184 <aside>
189 <a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link mdi-content-link"> <span>{{ entry.domainName|removeWww }}</span></a> 185 <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link mdi-content-link"> <span>{{ entry.domainName|removeWww }}</span></a>
190 {% set nbAnnotations = entry.annotations | length %} 186 <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
191 <span class="tool link mdi-communication-comment"> {% transchoice nbAnnotations %}{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations{% endtranschoice %}</span>
192 <div id="list"> 187 <div id="list">
193 {% for tag in entry.tags %} 188 {% for tag in entry.tags %}
194 <div class="chip"> 189 <div class="chip">
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig
index 95ed0785..03768a3d 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Save new entry{% endtrans %}{% endblock %} 3{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }} 6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig
index f1e56412..0cf4fb74 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig
@@ -7,7 +7,7 @@
7 <span class="black-text">{{ form_errors(form.url) }}</span> 7 <span class="black-text">{{ form_errors(form.url) }}</span>
8 {% endif %} 8 {% endif %}
9 9
10 {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'http://website'} }) }} 10 {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
11 11
12 <div class="hidden">{{ form_rest(form) }}</div> 12 {{ form_rest(form) }}
13</form> 13</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig
index 1368bb09..a294b74d 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}About{% endtrans %}{% endblock %} 3{% block title %}{{ 'about.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
@@ -11,56 +11,56 @@
11 <div class="row"> 11 <div class="row">
12 <div class="div_tabs col s12"> 12 <div class="div_tabs col s12">
13 <ul class="tabs"> 13 <ul class="tabs">
14 <li class="tab col s3"><a class="active" href="#set1">{% trans %}Who is behind wallabag{% endtrans %}</a></li> 14 <li class="tab col s3"><a class="active" href="#set1">{{ 'about.top_menu.who_behind_wallabag'|trans }}</a></li>
15 <li class="tab col s3"><a href="#set2">{% trans %}Getting help{% endtrans %}</a></li> 15 <li class="tab col s3"><a href="#set2">{{ 'about.top_menu.getting_help'|trans }}</a></li>
16 <li class="tab col s3"><a href="#set3">{% trans %}Helping wallabag{% endtrans %}</a></li> 16 <li class="tab col s3"><a href="#set3">{{ 'about.top_menu.helping'|trans }}</a></li>
17 <li class="tab col s3"><a href="#set4">{% trans %}Contributors{% endtrans %}</a></li> 17 <li class="tab col s3"><a href="#set4">{{ 'about.top_menu.contributors'|trans }}</a></li>
18 <li class="tab col s3"><a href="#set5">{% trans %}Third-party libraries{% endtrans %}</a></li> 18 <li class="tab col s3"><a href="#set5">{{ 'about.top_menu.third_party'|trans }}</a></li>
19 </ul> 19 </ul>
20 </div> 20 </div>
21 21
22 <div id="set1" class="col s12"> 22 <div id="set1" class="col s12">
23 <dt>{% trans %}Developed by{% endtrans %}</dt> 23 <dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt>
24 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans %}website{% endtrans %}</a></dd> 24 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
25 <dd>Thomas Citharel — <a href="https://tcit.fr">{% trans %}website{% endtrans %}</a></dd> 25 <dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
26 <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{% trans %}website{% endtrans %}</a></dd> 26 <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
27 <dt>{% trans %}And many others contributors ♥{% endtrans %} <a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}on GitHub{% endtrans %}</a></dt> 27 <dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt>
28 <dt>{% trans %}Project website{% endtrans %}</dt> 28 <dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt>
29 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd> 29 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
30 <dt>{% trans %}License{% endtrans %}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt> 30 <dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="https://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
31 <dt>{% trans %}Version{% endtrans %}: {{ version }}</dt> 31 <dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt>
32 </div> 32 </div>
33 33
34 <div id="set2" class="col s12"> 34 <div id="set2" class="col s12">
35 <dl> 35 <dl>
36 <dt>{% trans %}Documentation{% endtrans %}</dt> 36 <dt>{{ 'about.getting_help.documentation'|trans }}</dt>
37 <dd><a href="https://doc.wallabag.org/en">english</a></dd> 37 <dd><a href="https://doc.wallabag.org/en">english</a></dd>
38 <dd><a href="https://doc.wallabag.org/fr">français</a></dd> 38 <dd><a href="https://doc.wallabag.org/fr">français</a></dd>
39 <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd> 39 <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd>
40 40
41 <dt>{% trans %}Bug reports{% endtrans %}</dt> 41 <dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
42 <dd><a href="https://support.wallabag.org">{% trans %}On our support website{% endtrans %}</a> {% trans %}or{% endtrans %} <a href="https://github.com/wallabag/wallabag/issues">{% trans %}on GitHub{% endtrans %}</a></dd> 42 <dd>{{ 'about.getting_help.support'|trans|raw }}</dd>
43 </dl> 43 </dl>
44 </div> 44 </div>
45 45
46 <div id="set3" class="col s12"> 46 <div id="set3" class="col s12">
47 <dl> 47 <dl>
48 <dt>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</dt> 48 <dt>{{ 'about.helping.description'|trans }}</dt>
49 <dd>{% trans %}by contributing to the project:{% endtrans %} <a href="https://github.com/wallabag/wallabag/issues/1254">{% trans %}an issue lists all our needs{% endtrans %}</a></dd> 49 <dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
50 <dd><a href="{{ paypal_url }}">{% trans %}via Paypal{% endtrans %}</a></dd> 50 <dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
51 </dl> 51 </dl>
52 </div> 52 </div>
53 53
54 <div id="set4" class="col s12"> 54 <div id="set4" class="col s12">
55 <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}Thank you to contributors on wallabag web application{% endtrans %}</a></p> 55 <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p>
56 </div> 56 </div>
57 57
58 <div id="set5" class="col s12"> 58 <div id="set5" class="col s12">
59 <p>{% trans %}Here are the list of third-party libraries used in wallabag (with their licenses):{% endtrans %}</p> 59 <p>{{ 'about.third_party.description'|trans }}</p>
60 <table> 60 <table class="striped">
61 <tr> 61 <tr>
62 <th>{% trans %}Package{% endtrans %}</th> 62 <th>{{ 'about.third_party.package'|trans }}</th>
63 <th>{% trans %}License{% endtrans %}</th> 63 <th>{{ 'about.third_party.license'|trans }}</th>
64 </tr> 64 </tr>
65 <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr> 65 <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr>
66 <tr><td>CraueConfigBundle</td><td>MIT</td></tr> 66 <tr><td>CraueConfigBundle</td><td>MIT</td></tr>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig
index e2795409..15b548d8 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig
@@ -1,44 +1,40 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}howto{% endtrans %}{% endblock %} 3{% block title %}{{ 'howto.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
7 <div class="row"> 7 <div class="row">
8 <div class="col s12"> 8 <div class="col s12">
9 <div class="card-panel settings"> 9 <div class="card-panel settings">
10 <p>{{ 'howto.page_description'|trans }}</p>
10 11
11 <div class="row"> 12 <div class="row">
12 <div class="div_tabs col s12">
13 <ul class="tabs">
14 <li class="tab col s3"><a class="active" href="#set1">{% trans %}Form{% endtrans %}</a></li>
15 <li class="tab col s3"><a href="#set2">{% trans %}Browser addons{% endtrans %}</a></li>
16 <li class="tab col s3"><a href="#set3">{% trans %}Mobile apps{% endtrans %}</a></li>
17 <li class="tab col s3"><a href="#set4">{% trans %}Bookmarklet{% endtrans %}</a></li>
18 </ul>
19 </div>
20 13
21 <div id="set1" class="col s12"> 14 <div class="col s12">
22 <a href="{{ path('new') }}">{% trans %}Thanks to this form{% endtrans %}</a> 15 <a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a>
23 </div> 16 </div>
24 17
25 <div id="set2" class="col s12"> 18 <div class="col s12">
19 <h5>{{ 'howto.top_menu.browser_addons'|trans }}</h5>
26 <ul> 20 <ul>
27 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans %}Standard Firefox Add-On{% endtrans %}</a></li> 21 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li>
28 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans %}Chrome Extension{% endtrans %}</a></li> 22 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li>
29 </ul> 23 </ul>
30 </div> 24 </div>
31 25
32 <div id="set3" class="col s12"> 26 <div class="col s12">
27 <h5>{{ 'howto.top_menu.mobile_apps'|trans }}</h5>
33 <ul> 28 <ul>
34 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">via F-Droid</a> {% trans %} or {% endtrans %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">via Google Play</a></li> 29 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">{{ 'howto.mobile_apps.android.via_f_droid'|trans }}</a> / <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">{{ 'howto.mobile_apps.android.via_google_play'|trans }}</a></li>
35 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans %}download the application{% endtrans %}</a></li> 30 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li>
36 <li>Windows Phone: <a href="http://www.windowsphone.com/en-US/store/app/wallabag/d5226cf1-f422-4e00-996c-88e9c5233332" target="_blank">{% trans %}download the application{% endtrans %}</a></li> 31 <li>Windows Phone: <a href="http://www.windowsphone.com/en-US/store/app/wallabag/d5226cf1-f422-4e00-996c-88e9c5233332" target="_blank">{{ 'howto.mobile_apps.windows'|trans }}</a></li>
37 </ul> 32 </ul>
38 </div> 33 </div>
39 34
40 <div id="set4" class="col s12"> 35 <div class="col s12">
41 {% trans %}Drag &amp; drop this link to your bookmarks bar:{% endtrans %} 36 <h5>{{ 'howto.top_menu.bookmarklet'|trans }}</h5>
37 {{ 'howto.bookmarklet.description'|trans }}
42 {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %} 38 {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
43 </div> 39 </div>
44 40
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig
index 03754d38..706c4a79 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Quickstart{% endtrans %}{% endblock %} 3{% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
@@ -9,56 +9,63 @@
9 <div class="card-panel settings"> 9 <div class="card-panel settings">
10 10
11 <div class="row"> 11 <div class="row">
12 <h3>{% trans %}Welcome to wallabag!{% endtrans %}</h3> 12 <h3>{{ 'quickstart.intro.title'|trans }}</h3>
13 <p>{% trans %}We'll accompany you to visit wallabag and show you some features which can interess you.{% endtrans %}</p> 13 <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p>
14 <p>{% trans %}Follow us!{% endtrans %}</p> 14 <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p>
15 <h4>{% trans %}Configure the application{% endtrans %}</h4> 15
16 <h4>{{ 'quickstart.configure.title'|trans }}</h4>
16 <ul> 17 <ul>
17 <li><a href="{{ path('config') }}">{% trans %}Change language and design{% endtrans %}</a></li> 18 <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
18 <li><a href="{{ path('config') }}#set2">{% trans %}Enable RSS feeds{% endtrans %}</a></li> 19 <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
19 <li><a href="{{ path('config') }}#set5">{% trans %}Write rules to automatically tag your articles{% endtrans %}</a></li> 20 <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li>
20 </ul> 21 </ul>
22
21 {% if is_granted('ROLE_SUPER_ADMIN') %} 23 {% if is_granted('ROLE_SUPER_ADMIN') %}
22 <h4>{% trans %}Administration{% endtrans %}</h4> 24 <h4>{{ 'quickstart.admin.title'|trans }}</h4>
23 <p>{% trans %}As a administrator, you have privileges on wallabag. You can:{% endtrans %}</p> 25 <p>{{ 'quickstart.admin.description'|trans }}</p>
24 <ul> 26 <ul>
25 <li><a href="{{ path('config') }}#set6">{% trans %}Create a new user{% endtrans %}</a></li> 27 <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li>
26 <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{% trans %}Configure analytics{% endtrans %}</a></li> 28 <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li>
27 <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{% trans %}Enable some parameters about article sharing{% endtrans %}</a></li> 29 <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li>
28 <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{% trans %}Configure export{% endtrans %}</a></li> 30 <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li>
29 <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{% trans %}Configure import{% endtrans %}</a></li> 31 <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li>
30 </ul> 32 </ul>
31 {% endif %} 33 {% endif %}
32 <h4>{% trans %}First steps{% endtrans %}</h4> 34
35 <h4>{{ 'quickstart.first_steps.title'|trans }}</h4>
33 <ul> 36 <ul>
34 <li><a href="{{ path('new') }}">{% trans %}Save your first article{% endtrans %}</a></li> 37 <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li>
35 <li><a href="{{ path('unread') }}">{% trans %}And classify it!{% endtrans %}</a></li> 38 <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li>
36 </ul> 39 </ul>
37 <h4>{% trans %}Migrate from an existing service{% endtrans %}</h4> 40
38 <p>{% trans %}You're using an other service? We'll help you to retrieve your data on wallabag.{% endtrans %}</p> 41 <h4>{{ 'quickstart.migrate.title'|trans }}</h4>
42 <p>{{ 'quickstart.migrate.description'|trans }}</p>
39 <ul> 43 <ul>
40 <li><a href="{{ path('import_pocket') }}">{% trans %}Migrate from Pocket{% endtrans %}</a></li> 44 <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li>
41 <li><a href="{{ path('import_wallabag_v1') }}">{% trans %}Migrate from wallabag v1{% endtrans %}</a></li> 45 <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li>
42 <li><a href="{{ path('import_wallabag_v2') }}">{% trans %}Migrate from wallabag v2{% endtrans %}</a></li> 46 <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li>
43 </ul> 47 </ul>
44 <h4>{% trans %}Developers{% endtrans %}</h4> 48
49 <h4>{{ 'quickstart.developer.title'|trans }}</h4>
45 <ul> 50 <ul>
46 <li><a href="{{ path('developer') }}">{% trans %}Create your third application{% endtrans %}</a></li> 51 <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li>
47 </ul> 52 </ul>
48 <h4>{% trans %}Full documentation{% endtrans %}</h4> 53
54 <h4>{{ 'quickstart.docs.title'|trans }}</h4>
49 <ul> 55 <ul>
50 <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{% trans %}Annotate your article{% endtrans %}</a></li> 56 <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li>
51 <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{% trans %}Convert your articles into ePUB or PDF{% endtrans %}</a></li> 57 <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li>
52 <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{% trans %}See how you can look for an article by using search engine and filters{% endtrans %}</a></li> 58 <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li>
53 <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{% trans %}What can I do if an article encounters errors during fetching?{% endtrans %}</a></li> 59 <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li>
54 <li><a href="http://doc.wallabag.org/">{% trans %}And so many other articles!{% endtrans %}</a></li> 60 <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li>
55 </ul> 61 </ul>
56 <h4>{% trans %}Support{% endtrans %}</h4> 62
57 <p>{% trans %}If you need some help, we are here for you.{% endtrans %}</p> 63 <h4>{{ 'quickstart.support.title'|trans }}</h4>
64 <p>{{ 'quickstart.support.description'|trans }}</p>
58 <ul> 65 <ul>
59 <li><a href="https://github.com/wallabag/wallabag/issues/">{% trans %}On GitHub{% endtrans %}</a></li> 66 <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li>
60 <li><a href="mailto:hello@wallabag.org">{% trans %}By email{% endtrans %}</a></li> 67 <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li>
61 <li><a href="https://gitter.im/wallabag/wallabag">{% trans %}On Gitter{% endtrans %}</a></li> 68 <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li>
62 </ul> 69 </ul>
63 </div> 70 </div>
64 71
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig
index 79310307..6e552560 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig
@@ -9,5 +9,5 @@
9 9
10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }} 10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
11 11
12 <div class="hidden">{{ form_rest(form) }}</div> 12 {{ form_rest(form) }}
13</form> 13</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
index 19754d41..6b583689 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
@@ -1,10 +1,10 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title "Tags" %} 3{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 <div class="results clearfix"> 6 <div class="results clearfix">
7 <div class="nb-results left">{% transchoice tags.count %}{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.{% endtranschoice %}</div> 7 <div class="nb-results left">{{ 'tag.list.number_on_the_page'|transchoice(tags.count) }}</div>
8 </div> 8 </div>
9 <br /> 9 <br />
10 <ul class="row data"> 10 <ul class="row data">
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
index f5d03084..48eaca81 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
@@ -31,7 +31,7 @@
31 <ul id="slide-out" class="side-nav fixed"> 31 <ul id="slide-out" class="side-nav fixed">
32 {% block logo %} 32 {% block logo %}
33 <li class="logo border-bottom"> 33 <li class="logo border-bottom">
34 <a title="{% trans %}Back to unread articles{% endtrans %}" href="{{ path('unread') }}"> 34 <a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}">
35 <img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" /> 35 <img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" />
36 </a> 36 </a>
37 </li> 37 </li>
@@ -39,19 +39,41 @@
39 39
40 {% set currentRoute = app.request.attributes.get('_route') %} 40 {% set currentRoute = app.request.attributes.get('_route') %}
41 41
42 <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}"><a class="waves-effect" href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li> 42 <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}">
43 <li class="bold {% if currentRoute == 'starred' %}active{% endif %}"><a class="waves-effect" href="{{ path('starred') }}">{% trans %}starred{% endtrans %}</a></li> 43 <a class="waves-effect" href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a>
44 <li class="bold {% if currentRoute == 'archive' %}active{% endif %}"><a class="waves-effect" href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li> 44 </li>
45 <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}"><a class="waves-effect" href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li> 45 <li class="bold {% if currentRoute == 'starred' %}active{% endif %}">
46 <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"><a class="waves-effect" href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li> 46 <a class="waves-effect" href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a>
47 <li class="bold {% if currentRoute == 'config' %}active{% endif %}"><a class="waves-effect" href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li> 47 </li>
48 <li class="bold {% if currentRoute == 'archive' %}active{% endif %}">
49 <a class="waves-effect" href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a>
50 </li>
51 <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}">
52 <a class="waves-effect" href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a>
53 </li>
54 <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}">
55 <a class="waves-effect" href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a>
56 </li>
57 <li class="bold {% if currentRoute == 'config' %}active{% endif %}">
58 <a class="waves-effect" href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a>
59 </li>
48 {% if is_granted('ROLE_SUPER_ADMIN') %} 60 {% if is_granted('ROLE_SUPER_ADMIN') %}
49 <li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}"><a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{% trans %}internal settings{% endtrans %}</a></li> 61 <li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}">
62 <a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a>
63 </li>
50 {% endif %} 64 {% endif %}
51 <li class="bold {% if currentRoute == 'import' %}active{% endif %}"><a class="waves-effect" href="{{ path('import') }}">{% trans %}import{% endtrans %}</a></li> 65 <li class="bold {% if currentRoute == 'import' %}active{% endif %}">
52 <li class="bold {% if currentRoute == 'howto' %}active{% endif %}"><a class="waves-effect" href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li> 66 <a class="waves-effect" href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a>
53 <li class="bold {% if currentRoute == 'developer' %}active{% endif %}"><a class="waves-effect" href="{{ path('developer') }}">{% trans %}Developer{% endtrans %}</a></li> 67 </li>
54 <li class="bold"><a class="waves-effect" class="icon icon-power" href="{{ path('fos_user_security_logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li> 68 <li class="bold {% if currentRoute == 'developer' %}active{% endif %}">
69 <a class="waves-effect" href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a>
70 </li>
71 <li class="bold {% if currentRoute == 'howto' %}active{% endif %}">
72 <a class="waves-effect" href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a>
73 </li>
74 <li class="bold">
75 <a class="waves-effect" class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a>
76 </li>
55 </ul> 77 </ul>
56 <div class="nav-wrapper nav-panels"> 78 <div class="nav-wrapper nav-panels">
57 <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a> 79 <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a>
@@ -61,21 +83,37 @@
61 </div> 83 </div>
62 <div class="input-field nav-panel-buttom"> 84 <div class="input-field nav-panel-buttom">
63 <ul> 85 <ul>
64 <li class="bold"><a title="{% trans %}Add a new entry{% endtrans %}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add"><i class="mdi-content-add"></i></a></li> 86 <li class="bold">
65 <li><a title="{% trans %}Search{% endtrans %}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search"><i class="mdi-action-search"></i></a> 87 <a title="{{ 'menu.top.add_new_entry'|trans }}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add">
66 <li id="button_filters"><a title="{% trans %}Filter entries{% endtrans %}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right"><i class="mdi-content-filter-list"></i></a></li> 88 <i class="mdi-content-add"></i>
67 <li id="button_export"><a title="{% trans %}Export{% endtrans %}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export" class="nav-panel-menu button-collapse-right"><i class="mdi-file-file-download"></i></a></li> 89 </a>
90 </li>
91 <li>
92 <a title="{{ 'menu.top.search'|trans }}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search">
93 <i class="mdi-action-search"></i>
94 </a>
95 </li>
96 <li id="button_filters">
97 <a title="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right">
98 <i class="mdi-content-filter-list"></i>
99 </a>
100 </li>
101 <li id="button_export">
102 <a title="{{ 'menu.top.export'|trans }}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export" class="nav-panel-menu button-collapse-right">
103 <i class="mdi-file-file-download"></i>
104 </a>
105 </li>
68 </ul> 106 </ul>
69 </div> 107 </div>
70 <form method="get" action="index.php"> 108 <form method="get" action="index.php">
71 <div class="input-field nav-panel-search" style="display: none"> 109 <div class="input-field nav-panel-search" style="display: none">
72 <input name="search" id="searchfield" type="search" required placeholder="{% trans %}Enter your search here{% endtrans %}"> 110 <input name="search" id="searchfield" type="search" required placeholder="{{ 'menu.search_form.input_label'|trans }}">
73 <label for="search"><i class="mdi-action-search"></i></label> 111 <label for="search"><i class="mdi-action-search"></i></label>
74 <i class="mdi-navigation-close"></i> 112 <i class="mdi-navigation-close"></i>
75 </div> 113 </div>
76 </form> 114 </form>
77 <div class="input-field nav-panel-add" style="display: none"> 115 <div class="input-field nav-panel-add" style="display: none">
78 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }} 116 {{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }}
79 <label for="add" class="active"><i class="mdi-content-add"></i></label> 117 <label for="add" class="active"><i class="mdi-content-add"></i></label>
80 <i class="mdi-navigation-close"></i> 118 <i class="mdi-navigation-close"></i>
81 </div> 119 </div>
@@ -88,35 +126,40 @@
88 <div class="container"> 126 <div class="container">
89 <div class="row"> 127 <div class="row">
90 <div class="col l6 s12"> 128 <div class="col l6 s12">
91 <h5 class="white-text">{% trans %}Take wallabag with you{% endtrans %}</h5> 129 <h5 class="white-text">{{ 'footer.wallabag.elsewhere'|trans }}</h5>
92 <p class="grey-text text-lighten-4"> 130 <p class="grey-text text-lighten-4">
93 131 <a target="_blank" class="grey-text text-lighten-3" href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" title="Android">
94 <a target="_blank" class="grey-text text-lighten-3" href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" title="android"><span class="icon-android"></span></a> 132 <span class="icon-android"></span>
95 133 </a>
96 <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS"><span class="icon-apple"></a> 134 <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS">
97 135 <span class="icon-apple"></span>
98 <a target="_blank" class="grey-text text-lighten-3" href="https://addons.mozilla.org/ru/firefox/addon/wallabag/" title="Firefox"><span class="icon-firefox"></span></a> 136 </a>
99 137 <a target="_blank" class="grey-text text-lighten-3" href="https://addons.mozilla.org/ru/firefox/addon/wallabag/" title="Firefox">
100 <a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagit/peehlcgckcnclnjlndmoddifcicdnabm" title="Chrome"><span class="icon-chrome"></a> 138 <span class="icon-firefox"></span>
101 139 </a>
140 <a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagit/peehlcgckcnclnjlndmoddifcicdnabm" title="Chrome">
141 <span class="icon-chrome"></span>
142 </a>
102 </p> 143 </p>
103 </div> 144 </div>
104 <div class="col l4 offset-l2 s12"> 145 <div class="col l4 offset-l2 s12">
105 <h5 class="white-text">{% trans %}Social{% endtrans %}</h5> 146 <h5 class="white-text">{{ 'footer.wallabag.social'|trans }}</h5>
106 147 <a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter">
107 <a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter"><span class="icon-twitter"></span></a> 148 <span class="icon-twitter"></span>
108 149 </a>
109 <a target="_blank" class="grey-text text-lighten-3" href="https://plus.google.com/+WallabagOrg/posts" title="Google+"><span class="icon-google-plus2"></span></a> 150 <a target="_blank" class="grey-text text-lighten-3" href="https://plus.google.com/+WallabagOrg/posts" title="Google+">
110 151 <span class="icon-google-plus2"></span>
111 <a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook"><span class="icon-facebook2"></span></a> 152 </a>
112 153 <a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook">
154 <span class="icon-facebook2"></span>
155 </a>
113 </div> 156 </div>
114 </div> 157 </div>
115 </div> 158 </div>
116 <div class="footer-copyright"> 159 <div class="footer-copyright">
117 <div class="container"> 160 <div class="container">
118 <p>{% trans %}powered by{% endtrans %} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p> 161 <p>{{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p>
119 <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{% trans %}About{% endtrans %}</a> 162 <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a>
120 </div> 163 </div>
121 </div> 164 </div>
122 </footer> 165 </footer>
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
index 51425fe1..f2d26750 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
@@ -57,7 +57,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
57 $crawler = $client->followRedirect(); 57 $crawler = $client->followRedirect();
58 58
59 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 59 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
60 $this->assertContains('Config saved', $alert[0]); 60 $this->assertContains('flashes.config.notice.config_saved', $alert[0]);
61 } 61 }
62 62
63 public function dataForUpdateFailed() 63 public function dataForUpdateFailed()
@@ -102,7 +102,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
102 'change_passwd[new_password][first]' => '', 102 'change_passwd[new_password][first]' => '',
103 'change_passwd[new_password][second]' => '', 103 'change_passwd[new_password][second]' => '',
104 ), 104 ),
105 'Wrong value for your current password', 105 'validator.password_wrong_value',
106 ), 106 ),
107 array( 107 array(
108 array( 108 array(
@@ -118,7 +118,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
118 'change_passwd[new_password][first]' => 'hop', 118 'change_passwd[new_password][first]' => 'hop',
119 'change_passwd[new_password][second]' => '', 119 'change_passwd[new_password][second]' => '',
120 ), 120 ),
121 'The password fields must match', 121 'validator.password_must_match',
122 ), 122 ),
123 array( 123 array(
124 array( 124 array(
@@ -126,7 +126,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
126 'change_passwd[new_password][first]' => 'hop', 126 'change_passwd[new_password][first]' => 'hop',
127 'change_passwd[new_password][second]' => 'hop', 127 'change_passwd[new_password][second]' => 'hop',
128 ), 128 ),
129 'Password should by at least', 129 'validator.password_too_short',
130 ), 130 ),
131 ); 131 );
132 } 132 }
@@ -177,7 +177,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
177 $crawler = $client->followRedirect(); 177 $crawler = $client->followRedirect();
178 178
179 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 179 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
180 $this->assertContains('Password updated', $alert[0]); 180 $this->assertContains('flashes.config.notice.password_updated', $alert[0]);
181 } 181 }
182 182
183 public function dataForUserFailed() 183 public function dataForUserFailed()
@@ -188,14 +188,14 @@ class ConfigControllerTest extends WallabagCoreTestCase
188 'update_user[name]' => '', 188 'update_user[name]' => '',
189 'update_user[email]' => '', 189 'update_user[email]' => '',
190 ), 190 ),
191 'Please enter an email', 191 'fos_user.email.blank',
192 ), 192 ),
193 array( 193 array(
194 array( 194 array(
195 'update_user[name]' => '', 195 'update_user[name]' => '',
196 'update_user[email]' => 'test', 196 'update_user[email]' => 'test',
197 ), 197 ),
198 'The email is not valid', 198 'fos_user.email.invalid',
199 ), 199 ),
200 ); 200 );
201 } 201 }
@@ -244,8 +244,8 @@ class ConfigControllerTest extends WallabagCoreTestCase
244 244
245 $crawler = $client->followRedirect(); 245 $crawler = $client->followRedirect();
246 246
247 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 247 $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
248 $this->assertContains('Information updated', $alert[0]); 248 $this->assertContains('flashes.config.notice.user_updated', $alert[0]);
249 } 249 }
250 250
251 public function dataForNewUserFailed() 251 public function dataForNewUserFailed()
@@ -258,7 +258,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
258 'new_user[plainPassword][second]' => '', 258 'new_user[plainPassword][second]' => '',
259 'new_user[email]' => '', 259 'new_user[email]' => '',
260 ), 260 ),
261 'Please enter a username', 261 'fos_user.username.blank',
262 ), 262 ),
263 array( 263 array(
264 array( 264 array(
@@ -267,7 +267,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
267 'new_user[plainPassword][second]' => 'mypassword', 267 'new_user[plainPassword][second]' => 'mypassword',
268 'new_user[email]' => '', 268 'new_user[email]' => '',
269 ), 269 ),
270 'The username is too short', 270 'fos_user.username.short',
271 ), 271 ),
272 array( 272 array(
273 array( 273 array(
@@ -276,7 +276,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
276 'new_user[plainPassword][second]' => 'mypassword', 276 'new_user[plainPassword][second]' => 'mypassword',
277 'new_user[email]' => 'test', 277 'new_user[email]' => 'test',
278 ), 278 ),
279 'The email is not valid', 279 'fos_user.email.invalid',
280 ), 280 ),
281 array( 281 array(
282 array( 282 array(
@@ -285,7 +285,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
285 'new_user[plainPassword][second]' => 'wallacewallace', 285 'new_user[plainPassword][second]' => 'wallacewallace',
286 'new_user[email]' => 'wallace@wallace.me', 286 'new_user[email]' => 'wallace@wallace.me',
287 ), 287 ),
288 'The username is already used', 288 'fos_user.username.already_used',
289 ), 289 ),
290 array( 290 array(
291 array( 291 array(
@@ -294,7 +294,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
294 'new_user[plainPassword][second]' => 'mypassword2', 294 'new_user[plainPassword][second]' => 'mypassword2',
295 'new_user[email]' => 'wallace@wallace.me', 295 'new_user[email]' => 'wallace@wallace.me',
296 ), 296 ),
297 'The password fields must match', 297 'validator.password_must_match',
298 ), 298 ),
299 ); 299 );
300 } 300 }
@@ -346,7 +346,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
346 $crawler = $client->followRedirect(); 346 $crawler = $client->followRedirect();
347 347
348 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 348 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
349 $this->assertContains('User "wallace" added', $alert[0]); 349 $this->assertContains('flashes.config.notice.user_added', $alert[0]);
350 350
351 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 351 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
352 $user = $em 352 $user = $em
@@ -382,7 +382,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
382 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 382 $this->assertEquals(200, $client->getResponse()->getStatusCode());
383 383
384 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text'))); 384 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
385 $this->assertContains('You need to generate a token first.', $body[0]); 385 $this->assertContains('config.form_rss.no_token', $body[0]);
386 386
387 $client->request('GET', '/generate-token'); 387 $client->request('GET', '/generate-token');
388 $this->assertEquals(302, $client->getResponse()->getStatusCode()); 388 $this->assertEquals(302, $client->getResponse()->getStatusCode());
@@ -390,7 +390,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
390 $crawler = $client->followRedirect(); 390 $crawler = $client->followRedirect();
391 391
392 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text'))); 392 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
393 $this->assertNotContains('You need to generate a token first.', $body[0]); 393 $this->assertNotContains('config.form_rss.no_token', $body[0]);
394 } 394 }
395 395
396 public function testGenerateTokenAjax() 396 public function testGenerateTokenAjax()
@@ -418,11 +418,6 @@ class ConfigControllerTest extends WallabagCoreTestCase
418 418
419 $crawler = $client->request('GET', '/config'); 419 $crawler = $client->request('GET', '/config');
420 420
421 if (500 == $client->getResponse()->getStatusCode()) {
422 var_export($client->getResponse()->getContent());
423 die();
424 }
425
426 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 421 $this->assertEquals(200, $client->getResponse()->getStatusCode());
427 422
428 $form = $crawler->filter('button[id=rss_config_save]')->form(); 423 $form = $crawler->filter('button[id=rss_config_save]')->form();
@@ -438,7 +433,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
438 $crawler = $client->followRedirect(); 433 $crawler = $client->followRedirect();
439 434
440 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 435 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
441 $this->assertContains('RSS information updated', $alert[0]); 436 $this->assertContains('flashes.config.notice.rss_updated', $alert[0]);
442 } 437 }
443 438
444 public function dataForRssFailed() 439 public function dataForRssFailed()
@@ -454,7 +449,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
454 array( 449 array(
455 'rss_config[rss_limit]' => 1000000000000, 450 'rss_config[rss_limit]' => 1000000000000,
456 ), 451 ),
457 'This will certainly kill the app', 452 'validator.rss_limit_too_hight',
458 ), 453 ),
459 ); 454 );
460 } 455 }
@@ -504,7 +499,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
504 $crawler = $client->followRedirect(); 499 $crawler = $client->followRedirect();
505 500
506 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 501 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
507 $this->assertContains('Tagging rules updated', $alert[0]); 502 $this->assertContains('flashes.config.notice.tagging_rules_updated', $alert[0]);
508 503
509 $deleteLink = $crawler->filter('.delete')->last()->link(); 504 $deleteLink = $crawler->filter('.delete')->last()->link();
510 505
@@ -513,7 +508,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
513 508
514 $crawler = $client->followRedirect(); 509 $crawler = $client->followRedirect();
515 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 510 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
516 $this->assertContains('Tagging rule deleted', $alert[0]); 511 $this->assertContains('flashes.config.notice.tagging_rules_deleted', $alert[0]);
517 } 512 }
518 513
519 public function dataForTaggingRuleFailed() 514 public function dataForTaggingRuleFailed()
@@ -556,12 +551,14 @@ class ConfigControllerTest extends WallabagCoreTestCase
556 551
557 $form = $crawler->filter('button[id=tagging_rule_save]')->form(); 552 $form = $crawler->filter('button[id=tagging_rule_save]')->form();
558 553
559 $client->submit($form, $data); 554 $crawler = $client->submit($form, $data);
560 555
561 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 556 $this->assertEquals(200, $client->getResponse()->getStatusCode());
562 557
558 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
559
563 foreach ($messages as $message) { 560 foreach ($messages as $message) {
564 $this->assertContains($message, $client->getResponse()->getContent()); 561 $this->assertContains($message, $body[0]);
565 } 562 }
566 } 563 }
567 564
@@ -574,9 +571,11 @@ class ConfigControllerTest extends WallabagCoreTestCase
574 ->getRepository('WallabagCoreBundle:TaggingRule') 571 ->getRepository('WallabagCoreBundle:TaggingRule')
575 ->findAll()[0]; 572 ->findAll()[0];
576 573
577 $client->request('GET', '/tagging-rule/delete/'.$rule->getId()); 574 $crawler = $client->request('GET', '/tagging-rule/delete/'.$rule->getId());
575
578 $this->assertEquals(403, $client->getResponse()->getStatusCode()); 576 $this->assertEquals(403, $client->getResponse()->getStatusCode());
579 $this->assertContains('You can not access this tagging ryle', $client->getResponse()->getContent()); 577 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
578 $this->assertContains('You can not access this tagging rule', $body[0]);
580 } 579 }
581 580
582 public function testDemoMode() 581 public function testDemoMode()
@@ -603,7 +602,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
603 $client->submit($form, $data); 602 $client->submit($form, $data);
604 603
605 $this->assertEquals(302, $client->getResponse()->getStatusCode()); 604 $this->assertEquals(302, $client->getResponse()->getStatusCode());
606 $this->assertContains('In demonstration mode, you can\'t change password for this user.', $client->getContainer()->get('session')->getFlashBag()->get('notice')[0]); 605 $this->assertContains('flashes.config.notice.password_not_updated_demo', $client->getContainer()->get('session')->getFlashBag()->get('notice')[0]);
607 606
608 $config->set('demo_mode_enabled', 0); 607 $config->set('demo_mode_enabled', 0);
609 $config->set('demo_mode_username', 'wallabag'); 608 $config->set('demo_mode_username', 'wallabag');
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
index 5512d6e1..46fbaf91 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
@@ -25,17 +25,18 @@ class EntryControllerTest extends WallabagCoreTestCase
25 $client = $this->getClient(); 25 $client = $this->getClient();
26 26
27 $client->request('GET', '/unread/list'); 27 $client->request('GET', '/unread/list');
28 $client->followRedirect(); 28 $crawler = $client->followRedirect();
29 29
30 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 30 $this->assertEquals(200, $client->getResponse()->getStatusCode());
31 $this->assertContains('We\'ll accompany you to visit wallabag', $client->getResponse()->getContent()); 31 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
32 $this->assertContains('quickstart.intro.paragraph_1', $body[0]);
32 33
33 // Test if quickstart is disabled when user has 1 entry 34 // Test if quickstart is disabled when user has 1 entry
34 $crawler = $client->request('GET', '/new'); 35 $crawler = $client->request('GET', '/new');
35 36
36 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 37 $this->assertEquals(200, $client->getResponse()->getStatusCode());
37 38
38 $form = $crawler->filter('button[type=submit]')->form(); 39 $form = $crawler->filter('form[name=entry]')->form();
39 40
40 $data = array( 41 $data = array(
41 'entry[url]' => $this->url, 42 'entry[url]' => $this->url,
@@ -45,8 +46,9 @@ class EntryControllerTest extends WallabagCoreTestCase
45 $this->assertEquals(302, $client->getResponse()->getStatusCode()); 46 $this->assertEquals(302, $client->getResponse()->getStatusCode());
46 $client->followRedirect(); 47 $client->followRedirect();
47 48
48 $client->request('GET', '/unread/list'); 49 $crawler = $client->request('GET', '/unread/list');
49 $this->assertContains('There is one entry.', $client->getResponse()->getContent()); 50 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
51 $this->assertContains('entry.list.number_on_the_page', $body[0]);
50 } 52 }
51 53
52 public function testGetNew() 54 public function testGetNew()
@@ -59,7 +61,7 @@ class EntryControllerTest extends WallabagCoreTestCase
59 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 61 $this->assertEquals(200, $client->getResponse()->getStatusCode());
60 62
61 $this->assertCount(1, $crawler->filter('input[type=url]')); 63 $this->assertCount(1, $crawler->filter('input[type=url]'));
62 $this->assertCount(1, $crawler->filter('button[type=submit]')); 64 $this->assertCount(1, $crawler->filter('form[name=entry]'));
63 } 65 }
64 66
65 public function testPostNewViaBookmarklet() 67 public function testPostNewViaBookmarklet()
@@ -96,7 +98,7 @@ class EntryControllerTest extends WallabagCoreTestCase
96 98
97 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 99 $this->assertEquals(200, $client->getResponse()->getStatusCode());
98 100
99 $form = $crawler->filter('button[type=submit]')->form(); 101 $form = $crawler->filter('form[name=entry]')->form();
100 102
101 $crawler = $client->submit($form); 103 $crawler = $client->submit($form);
102 104
@@ -117,7 +119,7 @@ class EntryControllerTest extends WallabagCoreTestCase
117 119
118 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 120 $this->assertEquals(200, $client->getResponse()->getStatusCode());
119 121
120 $form = $crawler->filter('button[type=submit]')->form(); 122 $form = $crawler->filter('form[name=entry]')->form();
121 123
122 $data = array( 124 $data = array(
123 'entry[url]' => $this->url, 125 'entry[url]' => $this->url,
@@ -146,7 +148,7 @@ class EntryControllerTest extends WallabagCoreTestCase
146 148
147 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 149 $this->assertEquals(200, $client->getResponse()->getStatusCode());
148 150
149 $form = $crawler->filter('button[type=submit]')->form(); 151 $form = $crawler->filter('form[name=entry]')->form();
150 152
151 $data = array( 153 $data = array(
152 'entry[url]' => $this->url, 154 'entry[url]' => $this->url,
@@ -170,7 +172,7 @@ class EntryControllerTest extends WallabagCoreTestCase
170 172
171 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 173 $this->assertEquals(200, $client->getResponse()->getStatusCode());
172 174
173 $form = $crawler->filter('button[type=submit]')->form(); 175 $form = $crawler->filter('form[name=entry]')->form();
174 176
175 $data = array( 177 $data = array(
176 'entry[url]' => $url = 'https://github.com/wallabag/wallabag', 178 'entry[url]' => $url = 'https://github.com/wallabag/wallabag',
@@ -240,10 +242,11 @@ class EntryControllerTest extends WallabagCoreTestCase
240 ->getRepository('WallabagCoreBundle:Entry') 242 ->getRepository('WallabagCoreBundle:Entry')
241 ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); 243 ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
242 244
243 $client->request('GET', '/view/'.$content->getId()); 245 $crawler = $client->request('GET', '/view/'.$content->getId());
244 246
245 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 247 $this->assertEquals(200, $client->getResponse()->getStatusCode());
246 $this->assertContains($content->getTitle(), $client->getResponse()->getContent()); 248 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
249 $this->assertContains($content->getTitle(), $body[0]);
247 } 250 }
248 251
249 /** 252 /**
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
index b9f5d835..ed292633 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
@@ -12,53 +12,61 @@ class SecurityControllerTest extends WallabagCoreTestCase
12 $client = $this->getClient(); 12 $client = $this->getClient();
13 $client->followRedirects(); 13 $client->followRedirects();
14 14
15 $client->request('GET', '/config'); 15 $crawler = $client->request('GET', '/config');
16 $this->assertContains('RSS', $client->getResponse()->getContent()); 16 $this->assertContains('config.form_rss.description', $crawler->filter('body')->extract(array('_text'))[0]);
17 } 17 }
18 18
19 public function testLoginWith2Factor() 19 public function testLoginWith2Factor()
20 { 20 {
21 $client = $this->getClient(); 21 $client = $this->getClient();
22 22
23 if ($client->getContainer()->getParameter('twofactor_auth')) { 23 if (!$client->getContainer()->getParameter('twofactor_auth')) {
24 $client->followRedirects(); 24 $this->markTestSkipped('twofactor_auth is not enabled.');
25 25
26 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 26 return;
27 $user = $em
28 ->getRepository('WallabagUserBundle:User')
29 ->findOneByUsername('admin');
30 $user->setTwoFactorAuthentication(true);
31 $em->persist($user);
32 $em->flush();
33
34 $this->logInAs('admin');
35 $client->request('GET', '/config');
36 $this->assertContains('trusted computer', $client->getResponse()->getContent());
37
38 // restore user
39 $user = $em
40 ->getRepository('WallabagUserBundle:User')
41 ->findOneByUsername('admin');
42 $user->setTwoFactorAuthentication(false);
43 $em->persist($user);
44 $em->flush();
45 } 27 }
28
29 $client->followRedirects();
30
31 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
32 $user = $em
33 ->getRepository('WallabagUserBundle:User')
34 ->findOneByUsername('admin');
35 $user->setTwoFactorAuthentication(true);
36 $em->persist($user);
37 $em->flush();
38
39 $this->logInAs('admin');
40 $crawler = $client->request('GET', '/config');
41 $this->assertContains('scheb_two_factor.trusted', $crawler->filter('body')->extract(array('_text'))[0]);
42
43 // restore user
44 $user = $em
45 ->getRepository('WallabagUserBundle:User')
46 ->findOneByUsername('admin');
47 $user->setTwoFactorAuthentication(false);
48 $em->persist($user);
49 $em->flush();
46 } 50 }
47 51
48 public function testTrustedComputer() 52 public function testTrustedComputer()
49 { 53 {
50 $client = $this->getClient(); 54 $client = $this->getClient();
51 55
52 if ($client->getContainer()->getParameter('twofactor_auth')) { 56 if (!$client->getContainer()->getParameter('twofactor_auth')) {
53 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 57 $this->markTestSkipped('twofactor_auth is not enabled.');
54 $user = $em
55 ->getRepository('WallabagUserBundle:User')
56 ->findOneByUsername('admin');
57 58
58 $date = new \DateTime(); 59 return;
59 $user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M')));
60 $this->assertTrue($user->isTrustedComputer('ABCDEF'));
61 $this->assertFalse($user->isTrustedComputer('FEDCBA'));
62 } 60 }
61
62 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
63 $user = $em
64 ->getRepository('WallabagUserBundle:User')
65 ->findOneByUsername('admin');
66
67 $date = new \DateTime();
68 $user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M')));
69 $this->assertTrue($user->isTrustedComputer('ABCDEF'));
70 $this->assertFalse($user->isTrustedComputer('FEDCBA'));
63 } 71 }
64} 72}
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php
index d6391282..338121e7 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php
@@ -30,7 +30,7 @@ class TagControllerTest extends WallabagCoreTestCase
30 30
31 $crawler = $client->request('GET', '/view/'.$entry->getId()); 31 $crawler = $client->request('GET', '/view/'.$entry->getId());
32 32
33 $form = $crawler->filter('button[id=tag_save]')->form(); 33 $form = $crawler->filter('form[name=tag]')->form();
34 34
35 $data = array( 35 $data = array(
36 'tag[label]' => $this->tagName, 36 'tag[label]' => $this->tagName,
diff --git a/src/Wallabag/ImportBundle/Controller/PocketController.php b/src/Wallabag/ImportBundle/Controller/PocketController.php
index c88e115e..1d804219 100644
--- a/src/Wallabag/ImportBundle/Controller/PocketController.php
+++ b/src/Wallabag/ImportBundle/Controller/PocketController.php
@@ -17,8 +17,8 @@ class PocketController extends Controller
17 { 17 {
18 $pocket = $this->get('wallabag_import.pocket.import'); 18 $pocket = $this->get('wallabag_import.pocket.import');
19 $form = $this->createFormBuilder($pocket) 19 $form = $this->createFormBuilder($pocket)
20 ->add('read', CheckboxType::class, array( 20 ->add('mark_as_read', CheckboxType::class, array(
21 'label' => 'Mark all as read', 21 'label' => 'import.form.mark_as_read_label',
22 'required' => false, 22 'required' => false,
23 )) 23 ))
24 ->getForm(); 24 ->getForm();
@@ -39,7 +39,7 @@ class PocketController extends Controller
39 ->getRequestToken($this->generateUrl('import', array(), UrlGeneratorInterface::ABSOLUTE_URL)); 39 ->getRequestToken($this->generateUrl('import', array(), UrlGeneratorInterface::ABSOLUTE_URL));
40 40
41 $this->get('session')->set('import.pocket.code', $requestToken); 41 $this->get('session')->set('import.pocket.code', $requestToken);
42 $this->get('session')->set('read', $request->request->get('form')['read']); 42 $this->get('session')->set('mark_as_read', $request->request->get('form')['mark_as_read']);
43 43
44 return $this->redirect( 44 return $this->redirect(
45 'https://getpocket.com/auth/authorize?request_token='.$requestToken.'&redirect_uri='.$this->generateUrl('import_pocket_callback', array(), UrlGeneratorInterface::ABSOLUTE_URL), 45 'https://getpocket.com/auth/authorize?request_token='.$requestToken.'&redirect_uri='.$this->generateUrl('import_pocket_callback', array(), UrlGeneratorInterface::ABSOLUTE_URL),
@@ -52,10 +52,11 @@ class PocketController extends Controller
52 */ 52 */
53 public function callbackAction() 53 public function callbackAction()
54 { 54 {
55 $message = 'Import failed, please try again.'; 55 $message = 'flashes.import.notice.failed';
56 $pocket = $this->get('wallabag_import.pocket.import'); 56 $pocket = $this->get('wallabag_import.pocket.import');
57 $markAsRead = $this->get('session')->get('read'); 57
58 $this->get('session')->remove('read'); 58 $markAsRead = $this->get('session')->get('mark_as_read');
59 $this->get('session')->remove('mark_as_read');
59 60
60 // something bad happend on pocket side 61 // something bad happend on pocket side
61 if (false === $pocket->authorize($this->get('session')->get('import.pocket.code'))) { 62 if (false === $pocket->authorize($this->get('session')->get('import.pocket.code'))) {
@@ -69,7 +70,10 @@ class PocketController extends Controller
69 70
70 if (true === $pocket->setMarkAsRead($markAsRead)->import()) { 71 if (true === $pocket->setMarkAsRead($markAsRead)->import()) {
71 $summary = $pocket->getSummary(); 72 $summary = $pocket->getSummary();
72 $message = 'Import summary: '.$summary['imported'].' imported, '.$summary['skipped'].' already saved.'; 73 $message = $this->get('translator')->trans('flashes.import.notice.summary', array(
74 '%imported%' => $summary['imported'],
75 '%skipped%' => $summary['skipped'],
76 ));
73 } 77 }
74 78
75 $this->get('session')->getFlashBag()->add( 79 $this->get('session')->getFlashBag()->add(
diff --git a/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php b/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php
index 154a0769..1bc9696d 100644
--- a/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php
+++ b/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php
@@ -31,11 +31,14 @@ class WallabagV1Controller extends Controller
31 ->setMarkAsRead($markAsRead) 31 ->setMarkAsRead($markAsRead)
32 ->import(); 32 ->import();
33 33
34 $message = 'Import failed, please try again.'; 34 $message = 'flashes.import.notice.failed';
35 35
36 if (true === $res) { 36 if (true === $res) {
37 $summary = $wallabag->getSummary(); 37 $summary = $wallabag->getSummary();
38 $message = 'Import summary: '.$summary['imported'].' imported, '.$summary['skipped'].' already saved.'; 38 $message = $this->get('translator')->trans('flashes.import.notice.summary', array(
39 '%imported%' => $summary['imported'],
40 '%skipped%' => $summary['skipped'],
41 ));
39 42
40 unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); 43 unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name);
41 } 44 }
@@ -49,7 +52,7 @@ class WallabagV1Controller extends Controller
49 } else { 52 } else {
50 $this->get('session')->getFlashBag()->add( 53 $this->get('session')->getFlashBag()->add(
51 'notice', 54 'notice',
52 'Error while processing import. Please verify your import file.' 55 'flashes.import.notice.failed_on_file'
53 ); 56 );
54 } 57 }
55 } 58 }
diff --git a/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php b/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php
index 6dcd204a..3e6428a0 100644
--- a/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php
+++ b/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php
@@ -31,11 +31,14 @@ class WallabagV2Controller extends Controller
31 ->setMarkAsRead($markAsRead) 31 ->setMarkAsRead($markAsRead)
32 ->import(); 32 ->import();
33 33
34 $message = 'Import failed, please try again.'; 34 $message = 'flashes.import.notice.failed';
35 35
36 if (true === $res) { 36 if (true === $res) {
37 $summary = $wallabag->getSummary(); 37 $summary = $wallabag->getSummary();
38 $message = 'Import summary: '.$summary['imported'].' imported, '.$summary['skipped'].' already saved.'; 38 $message = $this->get('translator')->trans('flashes.import.notice.summary', array(
39 '%imported%' => $summary['imported'],
40 '%skipped%' => $summary['skipped'],
41 ));
39 42
40 unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); 43 unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name);
41 } 44 }
@@ -49,7 +52,7 @@ class WallabagV2Controller extends Controller
49 } else { 52 } else {
50 $this->get('session')->getFlashBag()->add( 53 $this->get('session')->getFlashBag()->add(
51 'notice', 54 'notice',
52 'Error while processing import. Please verify your import file.' 55 'flashes.import.notice.failed_on_file'
53 ); 56 );
54 } 57 }
55 } 58 }
diff --git a/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php b/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php
index 38670379..e0a44c36 100644
--- a/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php
+++ b/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php
@@ -13,12 +13,16 @@ class UploadImportType extends AbstractType
13 public function buildForm(FormBuilderInterface $builder, array $options) 13 public function buildForm(FormBuilderInterface $builder, array $options)
14 { 14 {
15 $builder 15 $builder
16 ->add('file', FileType::class) 16 ->add('file', FileType::class, array(
17 'label' => 'import.form.file_label',
18 ))
17 ->add('mark_as_read', CheckboxType::class, array( 19 ->add('mark_as_read', CheckboxType::class, array(
18 'label' => 'Mark all as read', 20 'label' => 'import.form.mark_as_read_label',
19 'required' => false, 21 'required' => false,
20 )) 22 ))
21 ->add('save', SubmitType::class) 23 ->add('save', SubmitType::class, array(
24 'label' => 'import.form.save_label',
25 ))
22 ; 26 ;
23 } 27 }
24 28
diff --git a/src/Wallabag/ImportBundle/Import/PocketImport.php b/src/Wallabag/ImportBundle/Import/PocketImport.php
index 238ddbd1..4499ce69 100644
--- a/src/Wallabag/ImportBundle/Import/PocketImport.php
+++ b/src/Wallabag/ImportBundle/Import/PocketImport.php
@@ -60,7 +60,7 @@ class PocketImport implements ImportInterface
60 */ 60 */
61 public function getDescription() 61 public function getDescription()
62 { 62 {
63 return 'This importer will import all your Pocket data. Pocket doesn\'t allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag.'; 63 return 'import.pocket.description';
64 } 64 }
65 65
66 /** 66 /**
@@ -139,7 +139,7 @@ class PocketImport implements ImportInterface
139 /** 139 /**
140 * Get whether articles must be all marked as read. 140 * Get whether articles must be all marked as read.
141 */ 141 */
142 public function getRead() 142 public function getMarkAsRead()
143 { 143 {
144 return $this->markAsRead; 144 return $this->markAsRead;
145 } 145 }
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
index 1d773d3b..173a587f 100644
--- a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
+++ b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
@@ -67,7 +67,7 @@ class WallabagV1Import implements ImportInterface
67 */ 67 */
68 public function getDescription() 68 public function getDescription()
69 { 69 {
70 return 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'; 70 return 'import.wallabag_v1.description';
71 } 71 }
72 72
73 /** 73 /**
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php
index c4bac561..0a32864e 100644
--- a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php
+++ b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php
@@ -27,7 +27,7 @@ class WallabagV2Import extends WallabagV1Import implements ImportInterface
27 */ 27 */
28 public function getDescription() 28 public function getDescription()
29 { 29 {
30 return 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'; 30 return 'import.wallabag_v2.description';
31 } 31 }
32 32
33 /** 33 /**
diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig
index 8c300624..aebbfa20 100644
--- a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig
+++ b/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig
@@ -1,17 +1,18 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2{% block title %}{% trans %}Import{% endtrans %}{% endblock %} 2
3{% block title %}{{ 'import.page_title'|trans }}{% endblock %}
3 4
4{% block content %} 5{% block content %}
5<div class="row"> 6<div class="row">
6 <div class="col s12"> 7 <div class="col s12">
7 <div class="card-panel settings"> 8 <div class="card-panel settings">
8 {% trans %}Welcome to wallabag importer. Please select your previous service that you want to migrate.{% endtrans %} 9 {{ 'import.page_description'|trans }}
9 <ul> 10 <ul>
10 {% for import in imports %} 11 {% for import in imports %}
11 <li> 12 <li>
12 <h5>{{ import.name }}</h5> 13 <h5>{{ import.name }}</h5>
13 <blockquote>{{ import.description|trans }}</blockquote> 14 <blockquote>{{ import.description|trans }}</blockquote>
14 <p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{% trans %}Import contents{% endtrans %}</a></p> 15 <p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{{ 'import.action.import_contents'|trans }}</a></p>
15 </li> 16 </li>
16 {% endfor %} 17 {% endfor %}
17 </ul> 18 </ul>
diff --git a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig
index 3365fc6a..401dbd33 100644
--- a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig
+++ b/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig
@@ -1,5 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2{% block title %}{% trans %}Import > Pocket{% endtrans %}{% endblock %} 2
3{% block title %}{{ 'import.pocket.page_title'|trans }}{% endblock %}
3 4
4{% block content %} 5{% block content %}
5<div class="row"> 6<div class="row">
@@ -7,27 +8,29 @@
7 <div class="card-panel settings"> 8 <div class="card-panel settings">
8 {% if not has_consumer_key %} 9 {% if not has_consumer_key %}
9 <div class="card-panel red darken-1"> 10 <div class="card-panel red darken-1">
10 {% trans %}Pocket import isn't configured.{% endtrans %} 11 {{ 'import.pocket.config_missing.description'|trans }}
12
11 {% if is_granted('ROLE_SUPER_ADMIN') %} 13 {% if is_granted('ROLE_SUPER_ADMIN') %}
12 {% trans with {'%keyurls%': '<a href="' ~ path('craue_config_settings_modify') ~ '#set-import">', '%keyurle%':'</a>'} %}You need to define %keyurls% a pocket_consumer_key %keyurle%.{% endtrans %} 14 {{ 'import.pocket.config_missing.admin_message'|trans({'%keyurls%': '<a href="' ~ path('craue_config_settings_modify') ~ '#set-import">', '%keyurle%':'</a>'})|raw }}
13 {% else %} 15 {% else %}
14 {% trans %}Your server admin needs to define an API Key for Pocket.{% endtrans %} 16 {{ 'import.pocket.config_missing.user_message'|trans }}
15 {% endif %} 17 {% endif %}
16 </div> 18 </div>
17 {% endif %} 19 {% endif %}
18 20
19 <blockquote>{{ import.description|trans }}</blockquote> 21 <blockquote>{{ import.description|trans }}</blockquote>
20 <p>{% trans %}You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.{% endtrans %}</p> 22 <p>{{ 'import.pocket.authorize_message'|trans }}</p>
23
21 <form method="post" action="{{ path('import_pocket_auth') }}"> 24 <form method="post" action="{{ path('import_pocket_auth') }}">
22 <div class="row"> 25 <div class="row">
23 <div class="input-field col s6 with-checkbox"> 26 <div class="input-field col s6 with-checkbox">
24 <h6>{% trans %}Mark all as read ?{% endtrans %}</h6> 27 <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6>
25 {{ form_widget(form.read) }} 28 {{ form_widget(form.mark_as_read) }}
26 <label for="form_read">{% trans %}Mark all imported entries as read{% endtrans %}</label> 29 {{ form_label(form.mark_as_read) }}
30 </div>
27 </div> 31 </div>
28 </div>
29 <button class="btn waves-effect waves-light" type="submit" name="action"> 32 <button class="btn waves-effect waves-light" type="submit" name="action">
30 {% trans %}Connect to Pocket and import data{% endtrans %} 33 {{ 'import.pocket.connect_to_pocket'|trans }}
31 </button> 34 </button>
32 </form> 35 </form>
33 </div> 36 </div>
diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig
index a418ed1c..13e24c8c 100644
--- a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig
+++ b/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig
@@ -1,5 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2{% block title %}{% trans %}Import > Wallabag v1{% endtrans %}{% endblock %} 2
3{% block title %}{{ 'import.wallabag_v1.page_title'|trans }}{% endblock %}
3 4
4{% block content %} 5{% block content %}
5<div class="row"> 6<div class="row">
@@ -7,7 +8,8 @@
7 <div class="card-panel settings"> 8 <div class="card-panel settings">
8 <div class="row"> 9 <div class="row">
9 <blockquote>{{ import.description|trans }}</blockquote> 10 <blockquote>{{ import.description|trans }}</blockquote>
10 <p>{% trans %}Please select your wallabag export and click on the below button to upload and import it.{% endtrans %}</p> 11 <p>{{ 'import.wallabag_v1.how_to'|trans }}</p>
12
11 <div class="col s12"> 13 <div class="col s12">
12 {{ form_start(form, {'method': 'POST'}) }} 14 {{ form_start(form, {'method': 'POST'}) }}
13 {{ form_errors(form) }} 15 {{ form_errors(form) }}
@@ -15,7 +17,7 @@
15 <div class="file-field input-field col s12"> 17 <div class="file-field input-field col s12">
16 {{ form_errors(form.file) }} 18 {{ form_errors(form.file) }}
17 <div class="btn"> 19 <div class="btn">
18 <span>{% trans %}File{% endtrans %}</span> 20 <span>{{ form.file.vars.label|trans }}</span>
19 {{ form_widget(form.file) }} 21 {{ form_widget(form.file) }}
20 </div> 22 </div>
21 <div class="file-path-wrapper"> 23 <div class="file-path-wrapper">
@@ -23,15 +25,15 @@
23 </div> 25 </div>
24 </div> 26 </div>
25 <div class="input-field col s6 with-checkbox"> 27 <div class="input-field col s6 with-checkbox">
26 <h6>{% trans %}Mark all as read ?{% endtrans %}</h6> 28 <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6>
27 {{ form_widget(form.mark_as_read) }} 29 {{ form_widget(form.mark_as_read) }}
28 <label for="upload_import_file_mark_as_read">{% trans %}Mark all imported entries as read{% endtrans %}</label> 30 {{ form_label(form.mark_as_read) }}
29 </div> 31 </div>
30 </div> 32 </div>
31 <div class="hidden">{{ form_rest(form) }}</div> 33
32 <button class="btn waves-effect waves-light" type="submit" name="action"> 34 {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }}
33 {% trans %}Upload file{% endtrans %} 35
34 </button> 36 {{ form_rest(form) }}
35 </form> 37 </form>
36 </div> 38 </div>
37 </div> 39 </div>
diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig
index 78fe67e4..c2905fc6 100644
--- a/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig
+++ b/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig
@@ -1,2 +1,3 @@
1{% extends "WallabagImportBundle:WallabagV1:index.html.twig" %} 1{% extends "WallabagImportBundle:WallabagV1:index.html.twig" %}
2{% block title %}{% trans %}Import > Wallabag v2{% endtrans %}{% endblock %} 2
3{% block title %}{{ 'import.wallabag_v2.page_title'|trans }}{% endblock %}
diff --git a/src/Wallabag/ImportBundle/Tests/Controller/PocketControllerTest.php b/src/Wallabag/ImportBundle/Tests/Controller/PocketControllerTest.php
index c2acd68c..174641fd 100644
--- a/src/Wallabag/ImportBundle/Tests/Controller/PocketControllerTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Controller/PocketControllerTest.php
@@ -37,6 +37,6 @@ class PocketControllerTest extends WallabagCoreTestCase
37 37
38 $this->assertEquals(302, $client->getResponse()->getStatusCode()); 38 $this->assertEquals(302, $client->getResponse()->getStatusCode());
39 $this->assertContains('import/pocket', $client->getResponse()->headers->get('location')); 39 $this->assertContains('import/pocket', $client->getResponse()->headers->get('location'));
40 $this->assertEquals('Import failed, please try again.', $client->getContainer()->get('session')->getFlashBag()->peek('notice')[0]); 40 $this->assertEquals('flashes.import.notice.failed', $client->getContainer()->get('session')->getFlashBag()->peek('notice')[0]);
41 } 41 }
42} 42}
diff --git a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php
index 7f97b0f5..8d353a71 100644
--- a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php
@@ -54,8 +54,8 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
54 54
55 $this->assertTrue($content->getTags()->contains($tag)); 55 $this->assertTrue($content->getTags()->contains($tag));
56 56
57 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 57 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
58 $this->assertContains('Import summary', $alert[0]); 58 $this->assertContains('flashes.import.notice.summary', $body[0]);
59 } 59 }
60 60
61 public function testImportWallabagWithFileAndMarkAllAsRead() 61 public function testImportWallabagWithFileAndMarkAllAsRead()
@@ -99,7 +99,8 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
99 99
100 $this->assertTrue($content2->isArchived()); 100 $this->assertTrue($content2->isArchived());
101 101
102 $this->assertContains('Import summary', $client->getResponse()->getContent()); 102 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
103 $this->assertContains('flashes.import.notice.summary', $body[0]);
103 } 104 }
104 105
105 public function testImportWallabagWithEmptyFile() 106 public function testImportWallabagWithEmptyFile()
@@ -122,7 +123,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
122 123
123 $crawler = $client->followRedirect(); 124 $crawler = $client->followRedirect();
124 125
125 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 126 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
126 $this->assertContains('Import failed, please try again', $alert[0]); 127 $this->assertContains('flashes.import.notice.failed', $body[0]);
127 } 128 }
128} 129}
diff --git a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php
index 617c0517..bcbd6305 100644
--- a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php
@@ -39,8 +39,8 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
39 39
40 $crawler = $client->followRedirect(); 40 $crawler = $client->followRedirect();
41 41
42 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 42 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
43 $this->assertContains('Import summary', $alert[0]); 43 $this->assertContains('flashes.import.notice.summary', $body[0]);
44 44
45 $content = $client->getContainer() 45 $content = $client->getContainer()
46 ->get('doctrine.orm.entity_manager') 46 ->get('doctrine.orm.entity_manager')
@@ -87,7 +87,7 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
87 87
88 $crawler = $client->followRedirect(); 88 $crawler = $client->followRedirect();
89 89
90 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 90 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
91 $this->assertContains('Import failed, please try again', $alert[0]); 91 $this->assertContains('flashes.import.notice.failed', $body[0]);
92 } 92 }
93} 93}
diff --git a/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php
index 450cdc95..43b60ec3 100644
--- a/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php
@@ -85,7 +85,7 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase
85 85
86 $this->assertEquals('Pocket', $pocketImport->getName()); 86 $this->assertEquals('Pocket', $pocketImport->getName());
87 $this->assertNotEmpty($pocketImport->getUrl()); 87 $this->assertNotEmpty($pocketImport->getUrl());
88 $this->assertContains('This importer will import all your Pocket data.', $pocketImport->getDescription()); 88 $this->assertEquals('import.pocket.description', $pocketImport->getDescription());
89 } 89 }
90 90
91 public function testOAuthRequest() 91 public function testOAuthRequest()
diff --git a/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php
index 8ab7e830..496cf2d3 100644
--- a/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php
@@ -45,7 +45,7 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase
45 45
46 $this->assertEquals('wallabag v1', $wallabagV1Import->getName()); 46 $this->assertEquals('wallabag v1', $wallabagV1Import->getName());
47 $this->assertNotEmpty($wallabagV1Import->getUrl()); 47 $this->assertNotEmpty($wallabagV1Import->getUrl());
48 $this->assertContains('This importer will import all your wallabag v1 articles.', $wallabagV1Import->getDescription()); 48 $this->assertEquals('import.wallabag_v1.description', $wallabagV1Import->getDescription());
49 } 49 }
50 50
51 public function testImport() 51 public function testImport()
diff --git a/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php
index 2b642d27..341b1076 100644
--- a/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php
@@ -45,7 +45,7 @@ class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase
45 45
46 $this->assertEquals('wallabag v2', $wallabagV2Import->getName()); 46 $this->assertEquals('wallabag v2', $wallabagV2Import->getName());
47 $this->assertNotEmpty($wallabagV2Import->getUrl()); 47 $this->assertNotEmpty($wallabagV2Import->getUrl());
48 $this->assertContains('This importer will import all your wallabag v2 articles.', $wallabagV2Import->getDescription()); 48 $this->assertEquals('import.wallabag_v2.description', $wallabagV2Import->getDescription());
49 } 49 }
50 50
51 public function testImport() 51 public function testImport()
diff --git a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml
index 4da6075f..85f2ea9c 100644
--- a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml
+++ b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml
@@ -1,7 +1,11 @@
1# Two factor mail 1# Two factor mail
2auth_code.mailer.subject: 'Wallabag authentication Code' 2auth_code:
3auth_code.mailer.body.hello: "Hi %user%," 3 on: 'on'
4auth_code.mailer.body.first_para: "Since you enable two factor authentication on your wallabag account and you just logged in from a new device (computer, phone, etc.), we send you a code to validate your connection." 4 mailer:
5auth_code.mailer.body.second_para: "Here is the code:" 5 subject: 'Wallabag authentication Code'
6auth_code.mailer.body.support: "Please don't hesitate to contact us if you have any problems:" 6 body:
7auth_code.mailer.body.signature: "The wallabag team" 7 hello: "Hi %user%,"
8 first_para: "Since you enable two factor authentication on your wallabag account and you just logged in from a new device (computer, phone, etc.), we send you a code to validate your connection."
9 second_para: "Here is the code:"
10 support: "Please don't hesitate to contact us if you have any problems:"
11 signature: "The wallabag team"
diff --git a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml
index b4448d3a..30ab5dd9 100644
--- a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml
+++ b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml
@@ -1,7 +1,11 @@
1# Two factor mail 1# Two factor mail
2auth_code.mailer.subject: "Code d'authentification wallabag" 2auth_code:
3auth_code.mailer.body.hello: "Bonjour %user%," 3 on: 'sur'
4auth_code.mailer.body.first_para: "Comme vous avez activé la double authentification sur votre compte wallabag et que vous venez de vous connecter depuis un nouvel appareil (ordinateur, téléphone, etc.), nous vous envoyons un code pour valider votre connexion." 4 mailer:
5auth_code.mailer.body.second_para: "Voici le code à renseigner :" 5 subject: "Code d'authentification wallabag"
6auth_code.mailer.body.support: "Si vous avez un problème de connexion, n'hésitez pas à contacter le support :" 6 body:
7auth_code.mailer.body.signature: "L'équipe wallabag" 7 hello: "Bonjour %user%,"
8 first_para: "Comme vous avez activé la double authentification sur votre compte wallabag et que vous venez de vous connecter depuis un nouvel appareil (ordinateur, téléphone, etc.), nous vous envoyons un code pour valider votre connexion."
9 second_para: "Voici le code à renseigner :"
10 support: "Si vous avez un problème de connexion, n'hésitez pas à contacter le support :"
11 signature: "L'équipe wallabag"
diff --git a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml
index d1fcb0e0..70646355 100644
--- a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml
+++ b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml
@@ -1,7 +1,11 @@
1# Two factor mail 1# Two factor mail
2auth_code.mailer.subject: 'Wallabag Doğrulama Kodu' 2auth_code:
3auth_code.mailer.body.hello: "Merhaba %user%," 3 on: 'on'
4auth_code.mailer.body.first_para: "wallabag hesabınızda iki adımlı doğrulamayı etkinleştirdiğinizde ve bu yeni cihaz olduğunda (bilgisayar, telefon, vs.), biz size bu işlemi doğrulamak için bir kod göndeririz." 4 mailer:
5auth_code.mailer.body.second_para: "Bu işlem için doğrulama kodunuz:" 5 subject: 'Wallabag Doğrulama Kodu'
6auth_code.mailer.body.support: "Eğer herhangi bir soru/sorununuz varsa, bizimle iletişime geçmekten çekinmeyin:" 6 body:
7auth_code.mailer.body.signature: "wallabag ekibi" 7 hello: "Merhaba %user%,"
8 first_para: "wallabag hesabınızda iki adımlı doğrulamayı etkinleştirdiğinizde ve bu yeni cihaz olduğunda (bilgisayar, telefon, vs.), biz size bu işlemi doğrulamak için bir kod göndeririz."
9 second_para: "Bu işlem için doğrulama kodunuz:"
10 support: "Eğer herhangi bir soru/sorununuz varsa, bizimle iletişime geçmekten çekinmeyin:"
11 signature: "wallabag ekibi"
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Authentication/form.html.twig b/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig
index fa0e3dc1..acf69196 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Authentication/form.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig
@@ -23,7 +23,7 @@
23 </div> 23 </div>
24 </div> 24 </div>
25 <div class="card-action center"> 25 <div class="card-action center">
26 <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Cancel{% endtrans %}</a> 26 <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.cancel'|trans }}</a>
27 <button class="btn waves-effect waves-light" type="submit" name="send"> 27 <button class="btn waves-effect waves-light" type="submit" name="send">
28 {{ "scheb_two_factor.login"|trans }} 28 {{ "scheb_two_factor.login"|trans }}
29 <i class="mdi-content-send right"></i> 29 <i class="mdi-content-send right"></i>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/ChangePassword/changePassword_content.html.twig b/src/Wallabag/UserBundle/Resources/views/ChangePassword/changePassword_content.html.twig
index abb68421..abb68421 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/ChangePassword/changePassword_content.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/ChangePassword/changePassword_content.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/checkEmail.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/checkEmail.html.twig
index 50937276..50937276 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/checkEmail.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Registration/checkEmail.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/confirmed.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig
index c6d4d3d2..674eb217 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/confirmed.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig
@@ -11,7 +11,7 @@
11 {% endif %} 11 {% endif %}
12 </div> 12 </div>
13 <div class="card-action center"> 13 <div class="card-action center">
14 <a href="{{ path('homepage') }}" class="waves-effect waves-light btn"><i class="material-icons left"></i> {% trans %}Go to your account{% endtrans %}</a> 14 <a href="{{ path('homepage') }}" class="waves-effect waves-light btn"><i class="material-icons left"></i> {{ 'security.register.go_to_account'|trans }}</a>
15 </div> 15 </div>
16</div> 16</div>
17{% endblock fos_user_content %} 17{% endblock fos_user_content %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/register_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig
index e92b515e..7d2b45d4 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/register_content.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig
@@ -36,7 +36,7 @@
36 </div> 36 </div>
37 </div> 37 </div>
38 <div class="card-action center"> 38 <div class="card-action center">
39 <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Login{% endtrans %}</a> 39 <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.submit'|trans }}</a>
40 <button class="btn waves-effect waves-light" type="submit" name="send"> 40 <button class="btn waves-effect waves-light" type="submit" name="send">
41 {{ 'registration.submit'|trans({}, 'FOSUserBundle') }} 41 {{ 'registration.submit'|trans({}, 'FOSUserBundle') }}
42 <i class="mdi-content-send right"></i> 42 <i class="mdi-content-send right"></i>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/checkEmail.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/checkEmail.html.twig
index 66cbdc28..66cbdc28 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/checkEmail.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Resetting/checkEmail.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/passwordAlreadyRequested.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/passwordAlreadyRequested.html.twig
index 1e245372..1e245372 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/passwordAlreadyRequested.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Resetting/passwordAlreadyRequested.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/request_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig
index e871d7be..7a5ac838 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/request_content.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig
@@ -1,8 +1,10 @@
1{% trans_default_domain 'FOSUserBundle' %} 1{% trans_default_domain 'FOSUserBundle' %}
2
2<form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="fos_user_resetting_request"> 3<form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="fos_user_resetting_request">
3 <div class="card-content"> 4 <div class="card-content">
4 <div class="row"> 5 <div class="row">
5 <p>{% trans %}Enter your email address below and we'll send you password reset instructions.{% endtrans %}</p> 6 <p>{{ 'security.resetting.description'|trans({}, "messages") }}</p>
7
6 {% for flashMessage in app.session.flashbag.get('notice') %} 8 {% for flashMessage in app.session.flashbag.get('notice') %}
7 <span class="black-text"><p>{{ flashMessage }}</p></span> 9 <span class="black-text"><p>{{ flashMessage }}</p></span>
8 {% endfor %} 10 {% endfor %}
@@ -18,7 +20,9 @@
18 </div> 20 </div>
19 </div> 21 </div>
20 <div class="card-action center"> 22 <div class="card-action center">
21 <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Login{% endtrans %}</a> 23 <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn">
24 <i class="material-icons left"></i> {{ 'security.login.submit'|trans({}, "messages") }}
25 </a>
22 <button class="btn waves-effect waves-light" type="submit" name="send"> 26 <button class="btn waves-effect waves-light" type="submit" name="send">
23 {{ 'resetting.request.submit'|trans }} 27 {{ 'resetting.request.submit'|trans }}
24 </button> 28 </button>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/reset_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig
index 9d0a061c..9d0a061c 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/reset_content.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Security/login.html.twig b/src/Wallabag/UserBundle/Resources/views/Security/login.html.twig
index 6bf99bf8..982a33b2 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Security/login.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Security/login.html.twig
@@ -15,32 +15,32 @@
15 <div class="row"> 15 <div class="row">
16 16
17 <div class="input-field col s12"> 17 <div class="input-field col s12">
18 <label for="username">{% trans %}Username{% endtrans %}</label> 18 <label for="username">{{ 'security.login.username'|trans }}</label>
19 <input type="text" id="username" name="_username" value="{{ last_username }}" /> 19 <input type="text" id="username" name="_username" value="{{ last_username }}" />
20 </div> 20 </div>
21 21
22 <div class="input-field col s12"> 22 <div class="input-field col s12">
23 <label for="password">{% trans %}Password{% endtrans %}</label> 23 <label for="password">{{ 'security.login.password'|trans }}</label>
24 <input type="password" id="password" name="_password" /> 24 <input type="password" id="password" name="_password" />
25 </div> 25 </div>
26 26
27 <div class="input-field col s12"> 27 <div class="input-field col s12">
28 <input type="checkbox" id="remember_me" name="_remember_me" checked /> 28 <input type="checkbox" id="remember_me" name="_remember_me" checked />
29 <label for="remember_me">{% trans %}Keep me logged in{% endtrans %}</label> 29 <label for="remember_me">{{ 'security.login.keep_logged_in'|trans }}</label>
30 </div> 30 </div>
31 31
32 </div> 32 </div>
33 </div> 33 </div>
34 <div class="card-action center"> 34 <div class="card-action center">
35 <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" /> 35 <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
36 <a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Register{% endtrans %}</a> 36 <a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.register'|trans }}</a>
37 <button class="btn waves-effect waves-light" type="submit" name="send"> 37 <button class="btn waves-effect waves-light" type="submit" name="send">
38 {% trans %}Login{% endtrans %} 38 {{ 'security.login.submit'|trans }}
39 <i class="mdi-content-send right"></i> 39 <i class="mdi-content-send right"></i>
40 </button> 40 </button>
41 </div> 41 </div>
42 <div class="center"> 42 <div class="center">
43 <a href="{{ path('fos_user_resetting_request') }}">{% trans %}Forgot your password?{% endtrans %}</a> 43 <a href="{{ path('fos_user_resetting_request') }}">{{ 'security.login.forgot_password'|trans }}</a>
44 </div> 44 </div>
45</form> 45</form>
46{% endblock fos_user_content %} 46{% endblock fos_user_content %}
diff --git a/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig b/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig
index 69d23160..c44fcfb7 100644
--- a/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig
@@ -77,7 +77,7 @@
77 <td style="padding: 20px;" width="96px" valign="top"><img class="image_fix" src="{{ wallabag_url }}/themes/material/img/logo-other_themes.png" alt="logo" title="{{ wallabag_url }}" style="width: 96px; height: 96px;" /></td> 77 <td style="padding: 20px;" width="96px" valign="top"><img class="image_fix" src="{{ wallabag_url }}/themes/material/img/logo-other_themes.png" alt="logo" title="{{ wallabag_url }}" style="width: 96px; height: 96px;" /></td>
78 <td style="padding: 20px; padding-left: 0;" valign="top" id="cell_desc"> 78 <td style="padding: 20px; padding-left: 0;" valign="top" id="cell_desc">
79 <h1>wallabag</h1> 79 <h1>wallabag</h1>
80 <h5>{% trans %}on{% endtrans %} {{ wallabag_url }}</h5> 80 <h5>{{ "auth_code.on"|trans({}, 'wallabag_user') }} {{ wallabag_url }}</h5>
81 </td> 81 </td>
82 </tr> 82 </tr>
83 <tr><td colspan="2" style="padding: 0;"><div style="height: 0; border-top: 1px solid #c5c5c5;">&nbsp;</div></td></tr> 83 <tr><td colspan="2" style="padding: 0;"><div style="height: 0; border-top: 1px solid #c5c5c5;">&nbsp;</div></td></tr>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/UserBundle/Resources/views/layout.html.twig
index cbdc1da2..1d0189ca 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/layout.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/layout.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Welcome to wallabag!{% endtrans %}{% endblock %} 3{% block title %}{{ 'security.login.page_title'|trans }}{% endblock %}
4 4
5{% block body_class %}login{% endblock %} 5{% block body_class %}login{% endblock %}
6 6
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig
deleted file mode 100644
index 5bb91081..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig
+++ /dev/null
@@ -1,32 +0,0 @@
1{% extends "WallabagUserBundle::layout.html.twig" %}
2
3{% block fos_user_content %}
4<form class="form" action="" method="post">
5 <fieldset class="w500p center">
6 {% for flashMessage in app.session.flashbag.get("two_factor") %}
7 <p class="error">{{ flashMessage|trans }}</p>
8 {% endfor %}
9
10 <div class="row">
11 <label for="_auth_code">{{ "scheb_two_factor.auth_code"|trans }}</label>
12 <input id="_auth_code" type="text" autocomplete="off" name="_auth_code" />
13 </div>
14
15 {% if useTrustedOption %}
16 <div class="row">
17 <input id="_trusted" type="checkbox" name="_trusted" />
18 <label for="_trusted">{{ "scheb_two_factor.trusted"|trans }}</label>
19 </div>
20 {% endif %}
21
22 <div class="row mts txtcenter">
23 <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Cancel{% endtrans %}</a>
24 <button type="submit" name="send">
25 {{ "scheb_two_factor.login"|trans }}
26 <i class="mdi-content-send right"></i>
27 </button>
28 </div>
29 </fieldset>
30
31</form>
32{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig
deleted file mode 100644
index 2713bf45..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig
+++ /dev/null
@@ -1,20 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{% trans %}create an account{% endtrans %}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8{% block messages %}{% endblock %}
9
10{% block content %}
11 {{ form_start(form) }}
12 <fieldset class="w500p center">
13 <h2 class="mbs txtcenter">{% trans %}create an account{% endtrans %}</h2>
14 {% include "FOSUserBundle:Registration:register_content.html.twig" %}
15 </fieldset>
16 </form>
17{% endblock %}
18
19{% block footer %}
20{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig
deleted file mode 100644
index 41f94006..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig
+++ /dev/null
@@ -1,37 +0,0 @@
1{% trans_default_domain 'FOSUserBundle' %}
2
3{{ form_widget(form._token) }}
4
5{% for flashMessage in app.session.flashbag.get('notice') %}
6 <span><p>{{ flashMessage }}</p></span>
7{% endfor %}
8
9<div class="row">
10 {{ form_errors(form.email) }}
11 {{ form_label(form.email) }}
12 {{ form_widget(form.email) }}
13</div>
14
15<div class="row">
16 {{ form_errors(form.username) }}
17 {{ form_label(form.username) }}
18 {{ form_widget(form.username) }}
19</div>
20
21<div class="row">
22 {{ form_errors(form.plainPassword.first) }}
23 {{ form_label(form.plainPassword.first) }}
24 {{ form_widget(form.plainPassword.first) }}
25</div>
26
27<div class="row">
28 {{ form_errors(form.plainPassword.second) }}
29 {{ form_label(form.plainPassword.second) }}
30 {{ form_widget(form.plainPassword.second) }}
31</div>
32
33
34<div class="row mts txtcenter">
35 <button type="submit">{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}</button>
36 <a href="{{ path('fos_user_security_login') }}" class="button">{% trans %}Login{% endtrans %}</a>
37</div>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig
deleted file mode 100644
index 056d65b5..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig
+++ /dev/null
@@ -1,17 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{% trans %}Forgot password{% endtrans %}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8
9{% block content %}
10 <form>
11 <fieldset class="w500p center">
12 <h2 class="mbs txtcenter">{% trans %}Forgot password{% endtrans %}</h2>
13
14 <p>{{ 'An email has been sent to %email%. It contains a link you must click to reset your password.'|trans({'%email%': email}) }}</p>
15 </fieldset>
16 </form>
17{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig
deleted file mode 100644
index 10094e83..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig
+++ /dev/null
@@ -1,20 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{% trans %}Forgot password{% endtrans %}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8{% block messages %}{% endblock %}
9
10{% block content %}
11 <form action="{{ path('fos_user_resetting_send_email') }}" method="post" name="forgotPasswordform">
12 <fieldset class="w500p center">
13 <h2 class="mbs txtcenter">{% trans %}Forgot password{% endtrans %}</h2>
14 {% include "FOSUserBundle:Resetting:request_content.html.twig" %}
15 </fieldset>
16 </form>
17{% endblock %}
18
19{% block footer %}
20{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig
deleted file mode 100644
index 1f8da8d7..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig
+++ /dev/null
@@ -1,17 +0,0 @@
1{% trans_default_domain 'FOSUserBundle' %}
2
3{% trans %}Enter your email address below and we'll send you password reset instructions.{% endtrans %}
4
5{% if invalid_username is defined %}
6 <p>{{ 'resetting.request.invalid_username'|trans({'%username%': invalid_username}) }}</p>
7{% endif %}
8
9<div class="row">
10 <label for="username">{{ 'resetting.request.username'|trans }}</label>
11 <input type="text" id="username" name="username" required="required" />
12</div>
13
14<div class="row mts txtcenter">
15 <button type="submit">{{ 'resetting.request.submit'|trans }}</button>
16 <a href="{{ path('fos_user_security_login') }}" class="button">{% trans %}Login{% endtrans %}</a>
17</div>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig
deleted file mode 100644
index d52c3662..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig
+++ /dev/null
@@ -1,33 +0,0 @@
1{% extends "FOSUserBundle::layout.html.twig" %}
2
3{% block fos_user_content %}
4 <form action="{{ path('fos_user_security_check') }}" method="post" name="loginform">
5 <fieldset class="w500p center">
6 <h2 class="mbs txtcenter">{% trans %}Login to wallabag{% endtrans %}</h2>
7 {% if error %}
8 <div>{{ error.message }}</div>
9 {% endif %}
10
11 {% for flashMessage in app.session.flashbag.get('notice') %}
12 <p>{{ flashMessage }}</p>
13 {% endfor %}
14
15 <div class="row">
16 <label class="col w150p" for="username">{% trans %}Username{% endtrans %}</label>
17 <input type="text" id="username" name="_username" value="{{ last_username }}" />
18 </div>
19
20 <div class="row">
21 <label class="col w150p" for="password">{% trans %}Password{% endtrans %}</label>
22 <input type="password" id="password" name="_password" />
23 </div>
24
25 <div class="row mts txtcenter">
26 <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
27 <button type="submit">Login</button>
28 <a href="{{ path('fos_user_registration_register') }}" class="button">{% trans %}Register{% endtrans %}</a>
29 <a href="{{ path('fos_user_resetting_request') }}" class="small">Forgot your password?</a>
30 </div>
31 </fieldset>
32 </form>
33{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig
deleted file mode 100644
index 60b321bf..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig
+++ /dev/null
@@ -1,16 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{% trans %}Welcome to wallabag!{% endtrans %}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8{% block messages %}{% endblock %}
9
10{% block content %}
11 {% block fos_user_content %}
12 {% endblock fos_user_content %}
13{% endblock %}
14
15{% block footer %}
16{% endblock %}