From 0d42217e4e8210dd2cf86f35ba9662ca02c8a2dc Mon Sep 17 00:00:00 2001
From: Jeremy Benoist <jeremy.benoist@gmail.com>
Date: Wed, 9 Mar 2016 08:59:08 +0100
Subject: [PATCH] Convert english translation file

- convert english translation to translate key
- remove baggy template for login (never used since user isn't logged in and it'll use the default theme: material)
- fix tests about text in response (now checking translation key instead of translated text)
- remove all ugly `<div class="hidden">{{ form_rest(form) }}</div>`
---
 src/Wallabag/CoreBundle/Entity/Config.php     |   4 +-
 .../Form/Type/ChangePasswordType.php          |  16 +-
 .../CoreBundle/Form/Type/ConfigType.php       |  11 +-
 .../CoreBundle/Form/Type/EditEntryType.php    |  19 +-
 .../CoreBundle/Form/Type/EntryFilterType.php  |  16 +-
 .../CoreBundle/Form/Type/NewEntryType.php     |   7 +-
 .../CoreBundle/Form/Type/NewTagType.php       |   2 -
 .../CoreBundle/Form/Type/NewUserType.php      |  22 +-
 src/Wallabag/CoreBundle/Form/Type/RssType.php |   8 +-
 .../CoreBundle/Form/Type/TaggingRuleType.php  |  13 +-
 .../Form/Type/UserInformationType.php         |  17 +-
 .../Resources/translations/messages.en.yml    | 334 ++++++++++++++++++
 .../Resources/translations/messages.fr.yml    |  19 +-
 .../views/themes/baggy/Config/index.html.twig |  53 +--
 .../views/themes/baggy/Entry/edit.html.twig   |   2 +-
 .../themes/baggy/Entry/entries.html.twig      | 103 +++---
 .../views/themes/baggy/Entry/entries.xml.twig |   4 +-
 .../views/themes/baggy/Entry/entry.html.twig  |  32 +-
 .../views/themes/baggy/Entry/new.html.twig    |   2 +-
 .../themes/baggy/Entry/new_form.html.twig     |   4 +-
 .../views/themes/baggy/Static/about.html.twig |  52 +--
 .../views/themes/baggy/Static/howto.html.twig |  26 +-
 .../themes/baggy/Static/quickstart.html.twig  |  83 +++--
 .../views/themes/baggy/Tag/new_form.html.twig |   3 +-
 .../views/themes/baggy/Tag/tags.html.twig     |  18 +-
 .../views/themes/baggy/layout.html.twig       |  36 +-
 .../themes/material/Config/index.html.twig    | 167 ++++-----
 .../themes/material/Entry/edit.html.twig      |  16 +-
 .../themes/material/Entry/entries.html.twig   |  65 ++--
 .../themes/material/Entry/entries.xml.twig    |   4 +-
 .../themes/material/Entry/entry.html.twig     |  57 ++-
 .../views/themes/material/Entry/new.html.twig |   2 +-
 .../themes/material/Entry/new_form.html.twig  |   4 +-
 .../themes/material/Static/about.html.twig    |  50 +--
 .../themes/material/Static/howto.html.twig    |  38 +-
 .../material/Static/quickstart.html.twig      |  79 +++--
 .../themes/material/Tag/new_form.html.twig    |   2 +-
 .../views/themes/material/Tag/tags.html.twig  |   4 +-
 .../views/themes/material/layout.html.twig    | 119 +++++--
 .../Tests/Controller/ConfigControllerTest.php |  28 +-
 .../Tests/Controller/EntryControllerTest.php  |  16 +-
 .../Controller/SecurityControllerTest.php     |  74 ++--
 .../Tests/Controller/TagControllerTest.php    |   2 +-
 .../Controller/PocketController.php           |  10 +-
 .../Form/Type/UploadImportType.php            |  10 +-
 .../ImportBundle/Import/PocketImport.php      |   4 +-
 .../ImportBundle/Import/WallabagV1Import.php  |   2 +-
 .../ImportBundle/Import/WallabagV2Import.php  |   2 +-
 .../Resources/views/Import/index.html.twig    |   7 +-
 .../Resources/views/Pocket/index.html.twig    |  27 +-
 .../views/WallabagV1/index.html.twig          |  20 +-
 .../views/WallabagV2/index.html.twig          |   3 +-
 .../Controller/WallabagV1ControllerTest.php   |  11 +-
 .../Controller/WallabagV2ControllerTest.php   |   8 +-
 .../Tests/Import/PocketImportTest.php         |   2 +-
 .../Tests/Import/WallabagV1ImportTest.php     |   2 +-
 .../Tests/Import/WallabagV2ImportTest.php     |   2 +-
 .../translations/wallabag_user.en.yml         |  16 +-
 .../translations/wallabag_user.fr.yml         |  16 +-
 .../translations/wallabag_user.tr.yml         |  16 +-
 .../Authentication/form.html.twig             |   2 +-
 .../changePassword_content.html.twig          |   0
 .../Registration/checkEmail.html.twig         |   0
 .../Registration/confirmed.html.twig          |   2 +-
 .../Registration/register_content.html.twig   |   2 +-
 .../Resetting/checkEmail.html.twig            |   0
 .../passwordAlreadyRequested.html.twig        |   0
 .../Resetting/request_content.html.twig       |   8 +-
 .../Resetting/reset_content.html.twig         |   0
 .../material => }/Security/login.html.twig    |  12 +-
 .../views/TwoFactor/email_auth_code.html.twig |   2 +-
 .../{themes/material => }/layout.html.twig    |   2 +-
 .../baggy/Authentication/form.html.twig       |  32 --
 .../baggy/Registration/register.html.twig     |  20 --
 .../Registration/register_content.html.twig   |  37 --
 .../baggy/Resetting/checkEmail.html.twig      |  17 -
 .../themes/baggy/Resetting/request.html.twig  |  20 --
 .../baggy/Resetting/request_content.html.twig |  17 -
 .../themes/baggy/Security/login.html.twig     |  33 --
 .../views/themes/baggy/layout.html.twig       |  16 -
 80 files changed, 1145 insertions(+), 868 deletions(-)
 create mode 100644 src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Authentication/form.html.twig (96%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/ChangePassword/changePassword_content.html.twig (100%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Registration/checkEmail.html.twig (100%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Registration/confirmed.html.twig (84%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Registration/register_content.html.twig (97%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Resetting/checkEmail.html.twig (100%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Resetting/passwordAlreadyRequested.html.twig (100%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Resetting/request_content.html.twig (82%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Resetting/reset_content.html.twig (100%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/Security/login.html.twig (75%)
 rename src/Wallabag/UserBundle/Resources/views/{themes/material => }/layout.html.twig (88%)
 delete mode 100644 src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig
 delete mode 100644 src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig
 delete mode 100644 src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig
 delete mode 100644 src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig
 delete mode 100644 src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig
 delete mode 100644 src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig
 delete mode 100644 src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig
 delete mode 100644 src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig

diff --git a/src/Wallabag/CoreBundle/Entity/Config.php b/src/Wallabag/CoreBundle/Entity/Config.php
index e18b543b1..a25656d3b 100644
--- a/src/Wallabag/CoreBundle/Entity/Config.php
+++ b/src/Wallabag/CoreBundle/Entity/Config.php
@@ -40,7 +40,7 @@ class Config
      * @Assert\Range(
      *      min = 1,
      *      max = 100000,
-     *      maxMessage = "This will certainly kill the app"
+     *      maxMessage = "validator.item_per_page_too_high"
      * )
      * @ORM\Column(name="items_per_page", type="integer", nullable=false)
      */
@@ -68,7 +68,7 @@ class Config
      * @Assert\Range(
      *      min = 1,
      *      max = 100000,
-     *      maxMessage = "This will certainly kill the app"
+     *      maxMessage = "validator.rss_limit_too_hight"
      * )
      */
     private $rssLimit;
diff --git a/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php b/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php
index 7d05a5d81..841af51e0 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
     {
         $builder
             ->add('old_password', PasswordType::class, array(
-                'constraints' => new UserPassword(array('message' => 'Wrong value for your current password')),
+                'constraints' => new UserPassword(array('message' => 'validator.password_wrong_value')),
+                'label' => 'config.form_password.old_password_label',
             ))
             ->add('new_password', RepeatedType::class, array(
                 'type' => PasswordType::class,
-                'invalid_message' => 'The password fields must match.',
+                'invalid_message' => 'validator.password_must_match',
                 'required' => true,
-                'first_options' => array('label' => 'New password'),
-                'second_options' => array('label' => 'Repeat new password'),
+                'first_options' => array('label' => 'config.form_password.new_password_label'),
+                'second_options' => array('label' => 'config.form_password.repeat_new_password_label'),
                 'constraints' => array(
                     new Constraints\Length(array(
                         'min' => 8,
-                        'minMessage' => 'Password should by at least 8 chars long',
+                        'minMessage' => 'validator.password_too_short',
                     )),
                     new Constraints\NotBlank(),
                 ),
+                'label' => 'config.form_password.new_password_label',
+            ))
+            ->add('save', SubmitType::class, array(
+                'label' => 'config.form.save',
             ))
-            ->add('save', SubmitType::class)
         ;
     }
 
diff --git a/src/Wallabag/CoreBundle/Form/Type/ConfigType.php b/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
index 0a5ea6cc8..25ea9efa2 100644
--- a/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
@@ -33,9 +33,13 @@ class ConfigType extends AbstractType
             ->add('theme', ChoiceType::class, array(
                 'choices' => array_flip($this->themes),
                 'choices_as_values' => true,
+                'label' => 'config.form_settings.theme_label',
+            ))
+            ->add('items_per_page', null, array(
+                'label' => 'config.form_settings.items_per_page_label',
             ))
-            ->add('items_per_page')
             ->add('reading_speed', ChoiceType::class, array(
+                'label' => 'config.form_settings.reading_speed',
                 'choices' => array(
                     'I read ~100 words per minute' => '0.5',
                     'I read ~200 words per minute' => '1',
@@ -46,8 +50,11 @@ class ConfigType extends AbstractType
             ->add('language', ChoiceType::class, array(
                 'choices' => array_flip($this->languages),
                 'choices_as_values' => true,
+                'label' => 'config.form_settings.language_label',
+            ))
+            ->add('save', SubmitType::class, array(
+                'label' => 'config.form.save',
             ))
-            ->add('save', SubmitType::class)
         ;
     }
 
diff --git a/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php b/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php
index 2b1e1ef43..23d7b2398 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
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('title', TextType::class, array('required' => true))
-            ->add('is_public', CheckboxType::class, array('required' => false))
-            ->add('save', SubmitType::class)
+            ->add('title', TextType::class, array(
+                'required' => true,
+                'label' => 'entry.edit.title_label',
+            ))
+            ->add('is_public', CheckboxType::class, array(
+                'required' => false,
+                'label' => 'entry.edit.is_public_label',
+            ))
+            ->add('url', TextType::class, array(
+                'disabled' => true,
+                'required' => false,
+                'label' => 'entry.edit.url_label',
+            ))
+            ->add('save', SubmitType::class, array(
+                'label' => 'entry.edit.save_label',
+            ))
         ;
     }
 
diff --git a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
index ee10bc8b5..ec36503b7 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
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('readingTime', NumberRangeFilterType::class)
+            ->add('readingTime', NumberRangeFilterType::class, array(
+                'label' => 'entry.filters.reading_time.label',
+            ))
             ->add('createdAt', DateRangeFilterType::class, array(
                     'left_date_options' => array(
                         'attr' => array(
@@ -50,6 +52,7 @@ class EntryFilterType extends AbstractType
                         'format' => 'dd/MM/yyyy',
                         'widget' => 'single_text',
                     ),
+                    'label' => 'entry.filters.created_at.label',
                 )
             )
             ->add('domainName', TextFilterType::class, array(
@@ -62,9 +65,14 @@ class EntryFilterType extends AbstractType
 
                     return $filterQuery->createCondition($expression);
                 },
+                'label' => 'entry.filters.domain_label',
+            ))
+            ->add('isArchived', CheckboxFilterType::class, array(
+                'label' => 'entry.filters.archived_label',
+            ))
+            ->add('isStarred', CheckboxFilterType::class, array(
+                'label' => 'entry.filters.starred_label',
             ))
-            ->add('isArchived', CheckboxFilterType::class)
-            ->add('isStarred', CheckboxFilterType::class)
             ->add('previewPicture', CheckboxFilterType::class, array(
                 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
                     if (false === $values['value']) {
@@ -75,10 +83,12 @@ class EntryFilterType extends AbstractType
 
                     return $filterQuery->createCondition($expression);
                 },
+                'label' => 'entry.filters.preview_picture_label',
             ))
             ->add('language', ChoiceFilterType::class, array(
                 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())),
                 'choices_as_values' => true,
+                'label' => 'entry.filters.language_label',
             ))
         ;
     }
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php b/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
index fbce13f1f..69fab6fbc 100644
--- a/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
@@ -3,7 +3,6 @@
 namespace Wallabag\CoreBundle\Form\Type;
 
 use Symfony\Component\Form\AbstractType;
-use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 use Symfony\Component\Form\Extension\Core\Type\UrlType;
 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -13,8 +12,10 @@ class NewEntryType extends AbstractType
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('url', UrlType::class, array('required' => true))
-            ->add('save', SubmitType::class)
+            ->add('url', UrlType::class, array(
+                'required' => true,
+                'label' => 'entry.new.form_new.url_label',
+            ))
         ;
     }
 
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewTagType.php b/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
index 0f5590311..c7568de77 100644
--- a/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
@@ -3,7 +3,6 @@
 namespace Wallabag\CoreBundle\Form\Type;
 
 use Symfony\Component\Form\AbstractType;
-use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 use Symfony\Component\Form\Extension\Core\Type\TextType;
 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -14,7 +13,6 @@ class NewTagType extends AbstractType
     {
         $builder
             ->add('label', TextType::class, array('required' => true))
-            ->add('save', SubmitType::class)
         ;
     }
 
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewUserType.php b/src/Wallabag/CoreBundle/Form/Type/NewUserType.php
index 6eb0e63f7..60fcc20c6 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
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('username', TextType::class, array('required' => true))
+            ->add('username', TextType::class, array(
+                'required' => true,
+                'label' => 'config.form_new_user.username_label',
+            ))
             ->add('plainPassword', RepeatedType::class, array(
                 'type' => PasswordType::class,
-                'invalid_message' => 'The password fields must match',
-                'first_options' => array('label' => 'Password'),
-                'second_options' => array('label' => 'Repeat new password'),
+                'invalid_message' => 'validator.password_must_match',
+                'first_options' => array('label' => 'config.form_new_user.password_label'),
+                'second_options' => array('label' => 'config.form_new_user.repeat_new_password_label'),
                 'constraints' => array(
                     new Constraints\Length(array(
                         'min' => 8,
-                        'minMessage' => 'Password should by at least 8 chars long',
+                        'minMessage' => 'validator.password_too_short',
                     )),
                     new Constraints\NotBlank(),
                 ),
+                'label' => 'config.form_new_user.plain_password_label',
+            ))
+            ->add('email', EmailType::class, array(
+                'label' => 'config.form_new_user.email_label',
+            ))
+            ->add('save', SubmitType::class, array(
+                'label' => 'config.form.save',
             ))
-            ->add('email', EmailType::class)
-            ->add('save', SubmitType::class)
         ;
     }
 
diff --git a/src/Wallabag/CoreBundle/Form/Type/RssType.php b/src/Wallabag/CoreBundle/Form/Type/RssType.php
index def8782cc..a9f68e542 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
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('rss_limit')
-            ->add('save', SubmitType::class)
+            ->add('rss_limit', null, array(
+                'label' => 'config.form_rss.rss_limit',
+            ))
+            ->add('save', SubmitType::class, array(
+                'label' => 'config.form.save',
+            ))
         ;
     }
 
diff --git a/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
index 5815b8c66..cfee21f17 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
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('rule', TextType::class, array('required' => true))
-            ->add('save', SubmitType::class)
+            ->add('rule', TextType::class, array(
+                'required' => true,
+                'label' => 'config.form_rules.rule_label',
+            ))
+            ->add('save', SubmitType::class, array(
+                'label' => 'config.form.save',
+            ))
         ;
 
         $tagsField = $builder
-            ->create('tags', TextType::class)
+            ->create('tags', TextType::class, array(
+                'label' => 'config.form_rules.tags_label',
+            ))
             ->addModelTransformer(new StringToListTransformer(','));
 
         $builder->add($tagsField);
diff --git a/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php b/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php
index f491b0ae3..799ea39e6 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
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('name', TextType::class)
-            ->add('email', EmailType::class)
-            ->add('twoFactorAuthentication', CheckboxType::class, array('required' => false))
-            ->add('save', SubmitType::class)
+            ->add('name', TextType::class, array(
+                'label' => 'config.form_user.name_label',
+            ))
+            ->add('email', EmailType::class, array(
+                'label' => 'config.form_user.email_label',
+            ))
+            ->add('twoFactorAuthentication', CheckboxType::class, array(
+                'required' => false,
+                'label' => 'config.form_user.twoFactorAuthentication_label',
+            ))
+            ->add('save', SubmitType::class, array(
+                'label' => 'config.form.save',
+            ))
             ->remove('username')
             ->remove('plainPassword')
         ;
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 000000000..22039de32
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
@@ -0,0 +1,334 @@
+security:
+    login:
+        page_title: 'Welcome to wallabag!'
+        keep_logged_in: 'Keep me logged in'
+        forgot_password: 'Forgot your password?'
+        submit: 'Login'
+        register: 'Register'
+        username: 'Username'
+        password: 'Password'
+        cancel: 'Cancel'
+    resetting:
+        description: "Enter your email address below and we'll send you password reset instructions."
+    register:
+        page_title: 'Create an account'
+        go_to_account: 'Go to your account'
+
+menu:
+    left:
+        unread: 'Unread'
+        starred: 'Starred'
+        archive: 'Archive'
+        all_articles: 'All entries'
+        config: 'Config'
+        tags: 'Tags'
+        internal_settings: 'Internal Settings'
+        import: 'Import'
+        howto: 'How to'
+        developer: 'Developer'
+        logout: 'Logout'
+        about: 'About'
+        search: 'Search'
+        save_link: 'Save a link'
+        back_to_unread: 'Back to unread articles'
+    top:
+        add_new_entry: 'Add a new entry'
+        search: 'Search'
+        filter_entries: 'Filter entries'
+        export: 'Export'
+    search_form:
+        input_label: 'Enter your search here'
+
+footer:
+    wallabag:
+        elsewhere: 'Take wallabag with you'
+        social: 'Social'
+        powered_by: 'powered by'
+        about: 'About'
+
+config:
+    page_title: Config
+    tab_menu:
+        settings: 'Settings'
+        rss: 'RSS'
+        user_info: 'User information'
+        password: 'Password'
+        rules: 'Tagging rules'
+        new_user: 'Add a user'
+    form:
+        save: 'Save'
+    form_settings:
+        theme_label: 'Theme'
+        items_per_page_label: 'Items per page'
+        language_label: 'Language'
+    form_rss:
+        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.'
+        token_label: 'RSS token'
+        no_token: 'No token'
+        token_create: 'Create your token'
+        token_reset: 'Regenerate your token'
+        rss_links: 'RSS links'
+        rss_link:
+            unread: 'unread'
+            starred: 'starred'
+            archive: 'archived'
+        rss_limit: 'Number of items in the feed'
+    form_user:
+        two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
+        name_label: 'Name'
+        email_label: 'Email'
+        twoFactorAuthentication_label: 'Two factor authentication'
+    form_password:
+        old_password_label: 'Current password'
+        new_password_label: 'New password'
+        repeat_new_password_label: 'Repeat new password'
+    form_rules:
+        if_label: 'if'
+        then_tag_as_label: 'then tag as'
+        delete_rule_label: 'delete'
+        rule_label: 'Rule'
+        tags_label: 'Tags'
+        faq:
+            title: 'FAQ'
+            tagging_rules_definition_title: 'What does « tagging rules » mean?'
+            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.'
+            how_to_use_them_title: 'How do I use them?'
+            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> »'
+            variables_available_title: 'Which variables and operators can I use to write rules?'
+            variables_available_description: 'The following variables and operators can be used to create tagging rules:'
+            meaning: 'Meaning'
+            variable_description:
+                label: 'Variable'
+                title: 'Title of the entry'
+                url: 'URL of the entry'
+                isArchived: 'Whether the entry is archived or not'
+                isStarred: 'Whether the entry is starred or not'
+                content: "The entry's content"
+                language: "The entry's language"
+                mimetype: "The entry's mime-type"
+                readingTime: "The estimated entry's reading time, in minutes"
+                domainName: 'The domain name of the entry'
+            operator_description:
+                label: 'Operator'
+                less_than: 'Less than...'
+                strictly_less_than: 'Strictly less than...'
+                greater_than: 'Greater than...'
+                strictly_greater_than: 'Strictly greater than...'
+                equal_to: 'Equal to...'
+                not_equal_to: 'Not equal to...'
+                or: 'One rule OR another'
+                and: 'One rule AND another'
+                matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
+    form_new_user:
+        username_label: 'Username'
+        password_label: 'Password'
+        repeat_new_password_label: 'Repeat new password'
+        plain_password_label: '????'
+        email_label: 'Email'
+
+entry:
+    page_titles:
+        unread: 'Unread entries'
+        starred: 'Starred entries'
+        archive: 'Archived entries'
+        filtered: 'Filtered entries'
+    list:
+        number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
+        reading_time: 'estimated reading time'
+        reading_time_minutes: 'estimated reading time: %readingTime% min'
+        reading_time_less_one_minute: 'estimated reading time: <small class="inferieur">&lt;</small> 1 min'
+        original_article: 'original'
+        toogle_as_read: 'Toggle mark as read'
+        toogle_as_star: 'Toggle favorite'
+        delete: 'Delete'
+        export_title: 'Export'
+    filters:
+        title: 'Filters'
+        status_label: 'Status'
+        archived_label: 'Archived'
+        starred_label: 'Starred'
+        preview_picture_label: 'Has a preview picture'
+        preview_picture_help: 'Preview picture'
+        language_label: 'Language'
+        reading_time:
+            label: 'Reading time in minutes'
+            from: 'from'
+            to: 'to'
+        domain_label: 'Domain name'
+        created_at:
+            label: 'Creation date'
+            from: 'from'
+            to: 'to'
+        action:
+            clear: 'Clear'
+            filter: 'Filter'
+    view:
+        left_menu:
+            back_to_top: 'Back to top'
+            back_to_homepage: 'Back'
+            set_as_read: 'Mark as read'
+            set_as_unread: 'Mark as unread'
+            set_as_favorite: 'Favorite'
+            view_original_article: 'Orignal article'
+            re_fetch_content: 'Re-fetch content'
+            delete: 'Delete'
+            add_a_tag: 'Add a tag'
+            share_content: 'Share'
+            share_email_label: 'Email'
+            download: 'Download'
+            print: 'Print'
+            problem:
+                label: 'Problems?'
+                description: 'Does this article appear wrong?'
+        edit_title: 'Edit title'
+        original_article: 'original'
+        annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
+    new:
+        page_title: 'Save new entry'
+        placeholder: 'http://website.com'
+        form_new:
+            url_label: Url
+    edit:
+        page_title: 'Edit an entry'
+        title_label: 'Title'
+        url_label: 'Url'
+        is_public_label: 'Public'
+        save_label: 'Save'
+
+about:
+    page_title: 'About'
+    top_menu:
+        who_behind_wallabag: 'Who is behind wallabag'
+        getting_help: 'Getting help'
+        helping: 'Helping wallabag'
+        contributors: 'Contributors'
+        third_party: 'Third-party libraries'
+    who_behind_wallabag:
+        developped_by: 'Developed by'
+        website: 'website'
+        many_contributors: 'And many others contributors ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">on Github</a>'
+        on_github: 'on GitHub'
+        project_website: 'Project website'
+        license: 'License'
+        version: 'Version'
+    getting_help:
+        documentation: 'Documentation'
+        bug_reports: 'Bug reports'
+        support: '<a href="https://support.wallabag.org">On our support website</a> or <a href="https://github.com/wallabag/wallabag/issues">on GitHub</a>'
+    helping:
+        description: 'wallabag is free and opensource. You can help us:'
+        by_contributing: 'by contributing to the project:'
+        by_contributing_2: 'an issue lists all our needs'
+        by_paypal: 'via Paypal'
+    contributors:
+        description: 'Thank you to contributors on wallabag web application'
+    third_party:
+        description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
+        package: 'Package'
+        license: 'License'
+
+howto:
+    page_title: 'How to'
+    page_description: 'There are several ways to save an article:'
+    top_menu:
+        browser_addons: 'Browser addons'
+        mobile_apps: 'Mobile apps'
+        bookmarklet: 'Bookmarklet'
+    form:
+        description: 'Thanks to this form'
+    browser_addons:
+        firefox: 'Standard Firefox Add-On'
+        chrome: 'Chrome Extension'
+    mobile_apps:
+        android:
+            via_f_droid: 'via F-Droid'
+            via_google_play: 'via Google Play'
+        ios: 'on the iTunes Store'
+        windows: 'on the Microsoft Store'
+    bookmarklet:
+        description: 'Drag & drop this link to your bookmarks bar:'
+
+quickstart:
+    page_title: 'Quickstart'
+    intro:
+        title: 'Welcome to wallabag!'
+        paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interess you."
+        paragraph_2: 'Follow us!'
+    configure:
+        title: 'Configure the application'
+        language: 'Change language and design'
+        rss: 'Enable RSS feeds'
+        tagging_rules: 'Write rules to automatically tag your articles'
+    admin:
+        title: 'Administration'
+        description: 'As a administrator, you have privileges on wallabag. You can:'
+        new_user: 'Create a new user'
+        analytics: 'Configure analytics'
+        sharing: 'Enable some parameters about article sharing'
+        export: 'Configure export'
+        import: 'Configure import'
+    first_steps:
+        title: 'First steps'
+        new_article: 'Save your first article'
+        unread_articles: 'And classify it!'
+    migrate:
+        title: 'Migrate from an existing service'
+        description: "You're using an other service? We'll help you to retrieve your data on wallabag."
+        pocket: 'Migrate from Pocket'
+        wallabag_v1: 'Migrate from wallabag v1'
+        wallabag_v2: 'Migrate from wallabag v2'
+    developer:
+        title: 'Developers'
+        create_application: 'Create your third application'
+    docs:
+        title: 'Full documentation'
+        annotate: 'Annotate your article'
+        export: 'Convert your articles into ePUB or PDF'
+        search_filters: 'See how you can look for an article by using search engine and filters'
+        fetching_errors: 'What can I do if an article encounters errors during fetching?'
+        all_docs: 'And so many other articles!'
+    support:
+        title: 'Support'
+        description: 'If you need some help, we are here for you.'
+        github: 'On GitHub'
+        email: 'By email'
+        gitter: 'On Gitter'
+
+tag:
+    page_title: 'Tags'
+    list:
+        number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
+
+import:
+    page_title: 'Import'
+    page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
+    action:
+        import_contents: 'Import contents'
+    form:
+        mark_as_read_title: 'Mark all as read?'
+        mark_as_read_label: 'Mark all imported entries as read'
+        file_label: 'File'
+        save_label: 'Upload file'
+    pocket:
+        page_title: 'Import > Pocket'
+        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."
+        config_missing:
+            description: "Pocket import isn't configured."
+            admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
+            user_message: 'Your server admin needs to define an API Key for Pocket.'
+        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.'
+        connect_to_pocket: 'Connect to Pocket and import data'
+    wallabag_v1:
+        page_title: 'Import > Wallabag v1'
+        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.'
+        how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
+    wallabag_v2:
+        page_title: 'Import > Wallabag v2'
+        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.'
+
+validator:
+    password_must_match: 'The password fields must match.'
+    password_too_short: 'Password should by at least 8 chars long'
+    password_wrong_value: 'Wrong value for your current password'
+    item_per_page_too_high: 'This will certainly kill the app'
+    rss_limit_too_hight: 'This will certainly kill the app'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
index 7c6ad07e8..ddc453d01 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
@@ -1,11 +1,14 @@
 #Login
-Keep me logged in: 'Rester connecté'
-Forgot your password?: 'Mot de passe oublié ?'
-Login: 'Se connecter'
-Back to login: 'Revenir au formulaire de connexion'
-Send: 'Envoyer'
-"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."
-Register: 'Créer un compte'
+security:
+    login:
+        keep_logged_in: 'Rester connecté'
+        forgot_password: 'Mot de passe oublié ?'
+        submit: 'Se connecter'
+        register: 'Créer un compte'
+        username: "Nom d'utilisateur"
+        password: 'Mot de passe'
+    resetting:
+        description: 'Saisissez votre adresse e-mail ci-dessous, nous vous enverrons les instructions pour réinitialiser votre mot de passe.'
 
 # Menu
 unread: 'Non lus'
@@ -33,7 +36,6 @@ Export: Exporter
 # Config screen
 Settings: 'Paramètres'
 User information: 'Mon compte'
-Password: 'Mot de passe'
 RSS: 'RSS'
 Add a user: 'Créer un compte'
 Theme: 'Thème'
@@ -54,7 +56,6 @@ RSS links: 'URL de vos flux RSS'
 Old password: 'Mot de passe actuel'
 New password: 'Nouveau mot de passe'
 Repeat new password: 'Confirmez votre nouveau mot de passe'
-Username: "Nom d'utilisateur"
 Two factor authentication: "Double authentification"
 "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."
 "I read ~100 words per minute": "Je lis environ 100 mots par minute"
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 54faa788c..721948ef5 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Config{% endtrans %}{% endblock %}
+{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
 
 {% block content %}
-    <h2>{% trans %}Wallabag configuration{% endtrans %}</h2>
+    <h2>{{ 'config.tab_menu.settings'|trans }}</h2>
 
     {{ form_start(form.config) }}
         {{ form_errors(form.config) }}
@@ -44,13 +44,13 @@
         {{ form_rest(form.config) }}
     </form>
 
-    <h2>{% trans %}RSS configuration{% endtrans %}</h2>
+    <h2>{{ 'config.tab_menu.rss'|trans }}</h2>
 
     {{ form_start(form.rss) }}
         {{ form_errors(form.rss) }}
 
         <div class="row">
-            {% trans %}RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader.{% endtrans %}
+            {{ 'config.form_rss.description'|trans }}
         </div>
 
         <fieldset class="w500p inline">
@@ -59,27 +59,31 @@
                 {% if rss.token %}
                     {{ rss.token }}
                 {% else %}
-                    <em>No token</em>
+                    <em>{{ 'config.form_rss.no_token'|trans }}</em>
                 {% endif %}
                 –
-                <a href="{{ path('generate_token') }}">Regenerate ?</a>
+                <a href="{{ path('generate_token') }}">
+                    {% if rss.token %}
+                        {{ 'config.form_rss.token_reset'|trans }}
+                    {% else %}
+                        {{ 'config.form_rss.token_create'|trans }}
+                    {% endif %}
+                </a>
             </div>
         </fieldset>
 
+        {% if rss.token %}
         <fieldset class="w500p inline">
             <div class="row">
-                <label>Rss links:</label>
-                {% if rss.token %}
-                    <ul>
-                        <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">unread</a></li>
-                        <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">fav</a></li>
-                        <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">archives</a></li>
-                    </ul>
-                {% else %}
-                    <strong>You need to generate a token first.</strong>
-                {% endif %}
+                <label>{{ 'config.form_rss.rss_links'|trans }}</label>
+                <ul>
+                    <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">unread</a></li>
+                    <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">fav</a></li>
+                    <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">archives</a></li>
+                </ul>
             </div>
         </fieldset>
+        {% endif %}
 
         <fieldset class="w500p inline">
             <div class="row">
@@ -92,7 +96,7 @@
         {{ form_rest(form.rss) }}
     </form>
 
-    <h2>{% trans %}User information{% endtrans %}</h2>
+    <h2>{{ 'config.tab_menu.user_info'|trans }}</h2>
 
     {{ form_start(form.user) }}
         {{ form_errors(form.user) }}
@@ -115,7 +119,7 @@
 
         {% if twofactor_auth %}
         <div class="row">
-            {% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %}
+            {{ 'config.form_user.two_factor_description'|trans }}
         </div>
 
         <fieldset class="w500p inline">
@@ -130,7 +134,7 @@
         {{ form_rest(form.user) }}
     </form>
 
-    <h2>{% trans %}Change your password{% endtrans %}</h2>
+    <h2>{{ 'config.tab_menu.password'|trans }}</h2>
 
     {{ form_start(form.pwd) }}
         {{ form_errors(form.pwd) }}
@@ -162,13 +166,16 @@
         {{ form_rest(form.pwd) }}
     </form>
 
-    <h2>{% trans %}Tagging rules{% endtrans %}</h2>
+    <h2>{{ 'config.tab_menu.rules'|trans }}}</h2>
 
     <ul>
         {% for tagging_rule in app.user.config.taggingRules %}
         <li>
-            if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} »
-            <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}" class="tool delete icon-trash icon"></a>
+            {{ 'config.form_rules.if_label'|trans }}
+            « {{ tagging_rule.rule }} »
+            {{ 'config.form_rules.then_tag_as_label'|trans }}
+            « {{ tagging_rule.tags|join(', ') }} »
+            <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>
         </li>
         {% endfor %}
     </ul>
@@ -196,7 +203,7 @@
     </form>
 
     {% if is_granted('ROLE_SUPER_ADMIN') %}
-    <h2>{% trans %}Add a user{% endtrans %}</h2>
+    <h2>{{ 'config.tab_menu.new_user'|trans }}</h2>
 
     {{ form_start(form.new_user) }}
         {{ form_errors(form.new_user) }}
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 0d4d5ad25..e974fc694 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Edit an entry{% endtrans %}{% endblock %}
+{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
 
 {% block content %}
     {{ 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 7271bdaa2..f718043b0 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title "Unread" %}
+{% block title %}{{ 'entry.page_titles.unread'|trans }}{% endblock %}
 
 {% block content %}
     {% block pager %}
         <div class="results">
-            <div class="nb-results">{{ entries.count }} {% trans %}entries{% endtrans %}</div>
+            <div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
                 <div class="pagination">
-                <a href="#" id="filter">{% trans %}Filter{% endtrans %}</a>
+                <a href="#" id="filter">{{ 'entry.filters.title'|trans }}</a>
                 {% if entries is not empty %}
                     –
                     {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
@@ -20,68 +20,64 @@
         </div>
     {% endblock %}
 
-    {% if entries is empty %}
-        <div class="messages warning"><p>{% trans %}No articles found.{% endtrans %}</p></div>
-    {% else %}
-        {% for entry in entries %}
-            <div id="entry-{{ entry.id|e }}" class="entry">
-                <h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
-                {% if entry.readingTime > 0 %}
-                    <div class="estimatedTime">
-                        <span class="tool reading-time">
-                            {% trans with {'%readingTime%': entry.readingTime } %}estimated reading time: %readingTime% min{% endtrans %}
-                        </span>
-                    </div>
-                {% else %}
-                    <div class="estimatedTime">
-                        <span class="tool reading-time">
-                        {% trans with {'%inferior%': '<small class="inferieur">&lt;</small>'} %}estimated reading time: %inferior% 1 min{% endtrans %}
-                        </span>
-                    </div>
-                {% endif %}
+    {% for entry in entries %}
+        <div id="entry-{{ entry.id|e }}" class="entry">
+            <h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
+            {% if entry.readingTime > 0 %}
+                <div class="estimatedTime">
+                    <span class="tool reading-time">
+                        {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
+                    </span>
+                </div>
+            {% else %}
+                <div class="estimatedTime">
+                    <span class="tool reading-time">
+                    {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
+                    </span>
+                </div>
+            {% endif %}
 
-                <ul class="tools links">
-                    <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>
-                    <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>
-                    <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>
-                    <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>
-                </ul>
-                {% if entry.previewPicture is null %}
-                    <p>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p>
-                {% else %}
-                    <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
-                {% endif %}
-            </div>
-        {% endfor %}
-    {% endif %}
+            <ul class="tools links">
+                <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>
+                <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>
+                <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>
+                <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>
+            </ul>
+            {% if entry.previewPicture is null %}
+                <p>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p>
+            {% else %}
+                <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
+            {% endif %}
+        </div>
+    {% endfor %}
 
     <aside id="filter-form" class="">
         <form method="get" action="{{ path('all') }}">
-            <h2>{% trans %}Filters{% endtrans %}</h2>
+            <h2>{{ 'entry.filters.title'|trans }}</h2>
             <a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a>
 
             <div id="filter-status" class="filter-group">
                 <div class="">
-                    <label>{% trans %}Status{% endtrans %}</label>
+                    <label>{{ 'entry.filters.status_label'|trans }}</label>
                 </div>
                 <div class="input-field">
                     {{ form_widget(form.isArchived) }}
-                    <label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label>
+                    {{ form_label(form.isArchived) }}
                 </div>
 
                 <div class="input-field">
                     {{ form_widget(form.isStarred) }}
-                    <label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label>
+                    {{ form_label(form.isStarred) }}
                 </div>
 
                 <div class="input-field">
                     {{ form_widget(form.previewPicture) }}
-                    <label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label>
+                    {{ form_label(form.previewPicture) }}
                 </div>
             </div>
 
             <div id="filter-language" class="filter-group">
-                <label for="entry_filter_language">{% trans %}Language{% endtrans %}</label>
+                {{ form_label(form.language) }}
                 <div class="input-field ">
                     {{ form_widget(form.language) }}
                 </div>
@@ -89,20 +85,20 @@
 
             <div id="filter-reading-time" class="filter-group">
                 <div class="">
-                    <label>{% trans %}Reading time in minutes{% endtrans %}</label>
+                    {{ form_label(form.readingTime) }}
                 </div>
                 <div class="input-field ">
-                    <label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label>
+                    <label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
                     {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
                 </div>
                 <div class="input-field ">
-                    <label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
+                    <label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
                     {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
                 </div>
             </div>
 
             <div id="filter-domain-name" class="filter-group">
-                <label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label>
+                {{ form_label(form.domainName) }}
                 <div class="input-field ">
                     {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
                 </div>
@@ -110,26 +106,25 @@
 
             <div id="filter-creation-date" class="filter-group">
                 <div class="">
-                    <label>{% trans %}Creation date{% endtrans %}</label>
+                    {{ form_label(form.createdAt) }}
                 </div>
                 <div class="input-field ">
-                    <label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label>
+                    <label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
                     {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
                 </div>
                 <div class="input-field ">
-                    <label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label>
+                    <label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
                     {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
                 </div>
             </div>
+
             <div id="filter-buttons" class="filter-group">
-
                 <div class="">
-                    <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a>
+                    <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
                 </div>
 
-                <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filters{% endtrans %}</button>
-
-                </div>
+                <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
+            </div>
         </form>
     </aside>
 
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 a39a8dc37..98f7194cf 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 @@
                 <description>
                     <![CDATA[
                     {%- if entry.readingTime > 0 -%}
-                        {% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min
+                        {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
                     {%- else -%}
-                        {% trans %}estimated reading time :{% endtrans %} &lt; 1 min
+                        {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
                     {%- endif %}
 
                     {{ 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 9323e7873..3cda3949e 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 @@
 {% block content %}
     <div id="article">
         <header class="mbm">
-            <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{% trans %}Edit title{% endtrans %}">✎</a></h1>
+            <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
         </header>
 
         <div id="article_toolbar">
         <ul class="links">
-            <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>
-            <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>
-            <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>
-            <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>
-            <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>
-            <li><a id="nav-btn-add-tag" title="{% trans %}Add a tag{% endtrans %}"><span>{% trans %}Tag{% endtrans %}</span></a></li>
-            <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>
-            {% 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 %}
-            {% 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 %}
-            {% 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 %}
-            {% 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 %}
-            {% 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 %}
-            {% 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 %}
+            <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>
+            <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>
+            <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>
+            <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>
+            <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>
+            <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>
+            <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>
+            {% 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 %}
+            {% 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 %}
+            {% 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 %}
+            {% 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 %}
+            {% 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 %}
+            {% 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 %}
             {% if craue_setting('export_epub') %}<li><a href="?epub&amp;method=id&amp;value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
             {% if craue_setting('export_mobi') %}<li><a href="?mobi&amp;method=id&amp;value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
             {% if craue_setting('export_pdf') %}<li><a href="?pdf&amp;method=id&amp;value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
-            <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>
+            <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>
         </ul>
     </div>
         {% set nbAnnotations = entry.annotations | length %}
-        <span class="tool link mdi-communication-comment"> {% transchoice nbAnnotations %}{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations{% endtranschoice %}</span>
+        <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
         <aside class="tags">
             {% for tag in entry.tags %}
                 <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 95ed07852..03768a3d8 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Save new entry{% endtrans %}{% endblock %}
+{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
 
 {% block content %}
     {{ 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 fa0a9f53f..8c1290681 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 @@
     {% endif %}
 
     {{ form_label(form.url) }}
-    {{ form_widget(form.url) }}
+    {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
 
-    <div class="hidden">{{ form_rest(form) }}</div>
+    {{ form_rest(form) }}
 </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 fdd12cf7d..5c0046d10 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}About{% endtrans %}{% endblock %}
+{% block title %}{{ 'about.page_title'|trans }}{% endblock %}
 
 {% block content %}
-    <h2>{% trans %}Who is behind wallabag{% endtrans %}</h2>
+    <h2>{{ 'about.top_menu.who_behind_wallabag'|trans }}</h2>
 
     <dl>
-        <dt>{% trans %}Developed by{% endtrans %}</dt>
-        <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans %}website{% endtrans %}</a></dd>
-        <dd>Thomas Citharel — <a href="https://tcit.fr">{% trans %}website{% endtrans %}</a></dd>
-        <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{% trans %}website{% endtrans %}</a></dd>
+        <dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt>
+        <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
+        <dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
+        <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
 
-        <dt>{% trans %}And many others contributors ♥{% endtrans %} <a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}on Github{% endtrans %}</a></dt>
+        <dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt>
 
-        <dt>{% trans %}Project website{% endtrans %}</dt>
+        <dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt>
         <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
 
-        <dt>{% trans %}License{% endtrans %}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
+        <dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
 
-        <dt>{% trans %}Version{% endtrans %}: {{ version }}</dt>
+        <dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt>
     </dl>
 
-    <h2>{% trans %}Getting help{% endtrans %}</h2>
+    <h2>{{ 'about.top_menu.getting_help'|trans }}</h2>
 
     <dl>
-        <dt>{% trans %}Documentation{% endtrans %}</dt>
+        <dt>{{ 'about.getting_help.documentation'|trans }}</dt>
         <dd><a href="https://doc.wallabag.org/en">english</a></dd>
         <dd><a href="https://doc.wallabag.org/fr">français</a></dd>
         <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd>
 
-        <dt>{% trans %}Bug reports{% endtrans %}</dt>
-        <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>
+        <dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
+        <dd>{{ 'about.getting_help.support'|trans|raw }}</dd>
     </dl>
 
-    <h2>{% trans %}Helping wallabag{% endtrans %}</h2>
+    <h2>{{ 'about.top_menu.helping'|trans }}</h2>
 
-    <p>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</p>
+    <p>{{ 'about.helping.description'|trans }}</p>
 
     <dl>
-        <dt>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</dt>
-        <dd>by contributing to the project: <a href="https://github.com/wallabag/wallabag/issues/1254">an issue lists all our needs</a></dd>
-        <dd><a href="{{ paypal_url }}">{% trans %}via Paypal{% endtrans %}</a></dd>
+        <dt>{{ 'about.helping.description'|trans }}</dt>
+        <dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
+        <dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
     </dl>
 
-    <h2>{% trans %}Contributors{% endtrans %}</h2>
-    <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}Thank you to contributors on wallabag web application{% endtrans %}</a></p>
+    <h2>{{ 'about.top_menu.contributors'|trans }}</h2>
+    <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p>
 
-    <h2>{% trans %}Third-party libraries{% endtrans %}</h2>
-    <p>{% trans %}Here are the list of third-party libraries used in wallabag (with their licenses):{% endtrans %}</p>
-    <table>
+    <h2>{{ 'about.top_menu.third_party'|trans }}</h2>
+    <p>{{ 'about.third_party.description'|trans }}</p>
+    <table class="striped">
         <tr>
-            <th>{% trans %}Package{% endtrans %}</th>
-            <th>{% trans %}License{% endtrans %}</th>
+            <th>{{ 'about.third_party.package'|trans }}</th>
+            <th>{{ 'about.third_party.license'|trans }}</th>
         </tr>
         <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr>
         <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 e32264f3e..8da1afa0f 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Howto{% endtrans %}{% endblock %}
+{% block title %}{{ 'howto.page_title'|trans }}{% endblock %}
 
 {% block content %}
-    <h2>{% trans %}Howto{% endtrans %}</h2>
+    <h2>{{ 'howto.page_title'|trans }}</h2>
 
-    <p>{% trans %}There are several ways to save an article:{% endtrans %}</p>
+    <p>{{ 'howto.page_description'|trans }}</p>
     <ul>
-        <li><a href="{{ path('new') }}">{% trans %}Thanks to this form{% endtrans %}</a></li>
+        <li><a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a></li>
     </ul>
-    <h3>{% trans %}Browser Addons{% endtrans %}</h3>
+    <h3>{{ 'howto.top_menu.browser_addons'|trans }}</h3>
     <ul>
-        <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans %}Standard Firefox Add-On{% endtrans %}</a></li>
-        <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans %}Chrome Extension{% endtrans %}</a></li>
+        <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li>
+        <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li>
     </ul>
-    <h3>{% trans %}Mobile Apps{% endtrans %}</h3>
+    <h3>{{ 'howto.top_menu.mobile_apps'|trans }}</h3>
     <ul>
-        <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>
-        <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans %}download the application{% endtrans %}</a></li>
-        <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>
+        <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>
+        <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li>
+        <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>
     </ul>
-    <h3>{% trans %}Bookmarklet{% endtrans %}</h3>
+    <h3>{{ 'howto.top_menu.bookmarklet'|trans }}</h3>
     <p>
-    {% trans %}Drag &amp; drop this link to your bookmarks bar:{% endtrans %}
+    {{ 'howto.bookmarklet.description'|trans }}
     {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
 
 {% 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 6b008fca6..5f65ce151 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Quickstart{% endtrans %}{% endblock %}
+{% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %}
 
 {% block content %}
 
-    <h3>{% trans %}Welcome to wallabag!{% endtrans %}</h3>
-    <p>{% trans %}We'll accompany you to visit wallabag and show you some features which can interess you.{% endtrans %}</p>
-    <p>{% trans %}Follow us!{% endtrans %}</p>
-    <h4>{% trans %}Configure the application{% endtrans %}</h4>
+    <h3>{{ 'quickstart.intro.title'|trans }}</h3>
+    <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p>
+    <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p>
+
+    <h4>{{ 'quickstart.configure.title'|trans }}</h4>
     <ul>
-        <li><a href="{{ path('config') }}">{% trans %}Change language and design{% endtrans %}</a></li>
-        <li><a href="{{ path('config') }}#set2">{% trans %}Enable RSS feeds{% endtrans %}</a></li>
-        <li><a href="{{ path('config') }}#set5">{% trans %}Write rules to automatically tag your articles{% endtrans %}</a></li>
+        <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
+        <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
+        <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li>
     </ul>
+
     {% if is_granted('ROLE_SUPER_ADMIN') %}
-        <h4>{% trans %}Administration{% endtrans %}</h4>
-        <p>{% trans %}As a administrator, you have privileges on wallabag. You can:{% endtrans %}</p>
-        <ul>
-            <li><a href="{{ path('config') }}#set6">{% trans %}Create a new user{% endtrans %}</a></li>
-            <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{% trans %}Configure analytics{% endtrans %}</a></li>
-            <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{% trans %}Enable some parameters about article sharing{% endtrans %}</a></li>
-            <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{% trans %}Configure export{% endtrans %}</a></li>
-            <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{% trans %}Configure import{% endtrans %}</a></li>
-        </ul>
+    <h4>{{ 'quickstart.admin.title'|trans }}</h4>
+    <p>{{ 'quickstart.admin.description'|trans }}</p>
+    <ul>
+        <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li>
+        <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li>
+        <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li>
+        <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li>
+        <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li>
+    </ul>
     {% endif %}
-    <h4>{% trans %}First steps{% endtrans %}</h4>
+
+    <h4>{{ 'quickstart.first_steps.title'|trans }}</h4>
     <ul>
-        <li><a href="{{ path('new') }}">{% trans %}Save your first article{% endtrans %}</a></li>
-        <li><a href="{{ path('unread') }}">{% trans %}And classify it!{% endtrans %}</a></li>
+        <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li>
+        <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li>
     </ul>
-    <h4>{% trans %}Migrate from an existing service{% endtrans %}</h4>
-    <p>{% trans %}You're using an other service? We'll help you to retrieve your data on wallabag.{% endtrans %}</p>
+
+    <h4>{{ 'quickstart.migrate.title'|trans }}</h4>
+    <p>{{ 'quickstart.migrate.description'|trans }}</p>
     <ul>
-        <li><a href="{{ path('import_pocket') }}">{% trans %}Migrate from Pocket{% endtrans %}</a></li>
-        <li><a href="{{ path('import_wallabag_v1') }}">{% trans %}Migrate from wallabag v1{% endtrans %}</a></li>
-        <li><a href="{{ path('import_wallabag_v2') }}">{% trans %}Migrate from wallabag v2{% endtrans %}</a></li>
+        <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li>
+        <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li>
+        <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li>
     </ul>
-    <h4>{% trans %}Full documentation{% endtrans %}</h4>
+
+    <h4>{{ 'quickstart.developer.title'|trans }}</h4>
     <ul>
-        <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{% trans %}Annotate your article{% endtrans %}</a></li>
-        <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{% trans %}Convert your articles into ePUB or PDF{% endtrans %}</a></li>
-        <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>
-        <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>
-        <li><a href="http://doc.wallabag.org/">{% trans %}And so many other articles!{% endtrans %}</a></li>
+        <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li>
     </ul>
-    <h4>{% trans %}Support{% endtrans %}</h4>
-    <p>{% trans %}If you need some help, we are here for you.{% endtrans %}</p>
+
+    <h4>{{ 'quickstart.docs.title'|trans }}</h4>
     <ul>
-        <li><a href="https://github.com/wallabag/wallabag/issues/">{% trans %}On GitHub{% endtrans %}</a></li>
-        <li><a href="mailto:hello@wallabag.org">{% trans %}By email{% endtrans %}</a></li>
-        <li><a href="https://gitter.im/wallabag/wallabag">{% trans %}On Gitter{% endtrans %}</a></li>
+        <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li>
+        <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li>
+        <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li>
+        <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li>
+        <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li>
+    </ul>
+
+    <h4>{{ 'quickstart.support.title'|trans }}</h4>
+    <p>{{ 'quickstart.support.description'|trans }}</p>
+    <ul>
+        <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li>
+        <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li>
+        <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li>
     </ul>
 
 {% 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 ade7f56d7..6e552560e 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 @@
     {% endif %}
 
     {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
-    {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'}, 'label': 'add tag' }) }}
 
-    <div class="hidden">{{ form_rest(form) }}</div>
+    {{ form_rest(form) }}
 </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 c2a461b83..dfc617513 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title "Tags" %}
+{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
 
 {% block content %}
-    {% if tags is empty %}
-        <div class="messages warning"><p>{% trans %}No tags found.{% endtrans %}</p></div>
-    {% else %}
-        {% for tag in tags %}
-            {{tag.label}}
-        {% endfor %}
-    {% endif %}
+    <div class="results">
+        <div class="nb-results">{{ 'tag.list.number_on_the_page'|transchoice(tags.count) }}</div>
+    </div>
+
+    <ul>
+    {% for tag in tags %}
+        <li id="tag-{{ tag.id|e }}">{{tag.label}} ({{ tag.entries.getValues | length }})</li>
+    {% endfor %}
+    </ul>
 {% 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 7f0980660..0ce069625 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 @@
 {% block menu %}
     <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
     <ul id="links" class="links">
-        <li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
-        <li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li>
-        <li><a href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li>
-        <li><a href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li>
-        <li><a href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li>
-        <li><a href="{{ path('new') }}">{% trans %}save a link{% endtrans %}</a></li>
-        <li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a>
+        <li><a href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a></li>
+        <li><a href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a></li>
+        <li><a href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a></li>
+        <li><a href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a></li>
+        <li><a href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a></li>
+        <li><a href="{{ path('new') }}">{{ 'menu.left.save_link'|trans }}</a></li>
+        <li style="position: relative;"><a href="javascript: void(null);" id="search">{{ 'menu.left.search'|trans }}</a>
             <div id="search-form" class="messages info popup-form">
                 <form method="get" action="index.php">
-                    <h2>{% trans %}Search{% endtrans %}</h2>
+                    <h2>{{ 'menu.left.search'|trans }}</h2>
                     <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
                     <input type="hidden" name="view" value="search">
-                    <input required placeholder="{% trans %}Enter your search here{% endtrans %}" type="text" name="search" id="searchfield"><br>
-                    <input id="submit-search" type="submit" value="{% trans %}Search{% endtrans %}">
+                    <input required placeholder="{{ 'menu.search_form.input_label'|trans }}" type="text" name="search" id="searchfield"><br>
+                    <input id="submit-search" type="submit" value="{{ 'menu.left.search'|trans }}">
                 </form>
             </div>
         </li>
-        <li><a href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
+        <li><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li>
         {% if is_granted('ROLE_SUPER_ADMIN') %}
-            <li><a href="{{ path('craue_config_settings_modify') }}">{% trans %}internal settings{% endtrans %}</a></li>
+            <li><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
         {% endif %}
-        <li><a href="{{ path('import') }}">{% trans %}import{% endtrans %}</a></li>
-        <li><a href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li>
-        <li><a href="{{ path('developer') }}">{% trans %}Developer{% endtrans %}</a></li>
-        <li><a href="{{ path('about') }}">{% trans %}about{% endtrans %}</a></li>
-        <li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li>
+        <li><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
+        <li><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
+        <li><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li>
+        <li><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li>
+        <li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li>
     </ul>
 {% endblock %}
 
@@ -73,6 +73,6 @@
 
 {% block footer %}
     <footer class="w600p center mt3 mb3 smaller txtright">
-        <p>{% trans %}powered by{% endtrans %} <a href="http://wallabag.org">wallabag</a></p>
+        <p>{{ 'footer.wallabag.powered_by'|trans }} <a href="http://wallabag.org">wallabag</a></p>
     </footer>
 {% 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 2b0b08289..698219b9e 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}config{% endtrans %}{% endblock %}
+{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
 
 {% block content %}
 
@@ -11,13 +11,13 @@
                 <div class="row">
                     <div class="div_tabs col s12">
                         <ul class="tabs">
-                            <li class="tab col s3"><a class="active" href="#set1">{% trans %}Settings{% endtrans %}</a></li>
-                            <li class="tab col s3"><a href="#set2">{% trans %}RSS{% endtrans %}</a></li>
-                            <li class="tab col s3"><a href="#set3">{% trans %}User information{% endtrans %}</a></li>
-                            <li class="tab col s3"><a href="#set4">{% trans %}Password{% endtrans %}</a></li>
-                            <li class="tab col s3"><a href="#set5">{% trans %}Tagging rules{% endtrans %}</a></li>
+                            <li class="tab col s3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
+                            <li class="tab col s3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li>
+                            <li class="tab col s3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
+                            <li class="tab col s3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
+                            <li class="tab col s3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
                             {% if is_granted('ROLE_SUPER_ADMIN') %}
-                            <li class="tab col s3"><a href="#set6">{% trans %}Add a user{% endtrans %}</a></li>
+                            <li class="tab col s3"><a href="#set6">{{ 'config.tab_menu.new_user'|trans }}</a></li>
                             {% endif %}
                         </ul>
                     </div>
@@ -28,9 +28,9 @@
 
                             <div class="row">
                                 <div class="input-field col s12">
+                                    {{ form_label(form.config.theme) }}
                                     {{ form_errors(form.config.theme) }}
                                     {{ form_widget(form.config.theme) }}
-                                    <label class="required">{% trans %}Theme{% endtrans %}</label>
                                 </div>
                             </div>
 
@@ -59,10 +59,8 @@
                                 </div>
                             </div>
 
-                            <div class="hidden">{{ form_rest(form.config) }}</div>
-                            <button class="btn waves-effect waves-light" type="submit" name="action">
-                                {% trans %}Save{% endtrans %}
-                            </button>
+                            {{ form_widget(form.config.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
+                            {{ form_rest(form.config) }}
                         </form>
                     </div>
 
@@ -72,33 +70,37 @@
 
                             <div class="row">
                                 <div class="input-field col s12">
-                                    {% 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 %}
+                                    {{ 'config.form_rss.description'|trans }}
                                 </div>
                             </div>
 
                             <div class="row">
                                 <div class="input-field col s12">
-                                    <label>{% trans %}RSS token{% endtrans %}</label>
+                                    <label>{{ 'config.form_rss.token_label'|trans }}</label>
                                     <div>
                                         {% if rss.token %}
                                             {{ rss.token }}
                                         {% else %}
-                                            <em>{% trans %}No token{% endtrans %}</em>
+                                            <em>{{ 'config.form_rss.no_token'|trans }}</em>
                                         {% endif %}
-                                        – <a href="{{ path('generate_token') }}">{% if rss.token %}{% trans %}Reset your token{% endtrans %}{% else %}{% trans %}Create your token{% endtrans %}{% endif %}</a>
+                                        – <a href="{{ path('generate_token') }}">
+                                        {% if rss.token %}
+                                            {{ 'config.form_rss.token_reset'|trans }}
+                                        {% else %}
+                                            {{ 'config.form_rss.token_create'|trans }}
+                                        {% endif %}</a>
                                     </div>
                                 </div>
                             </div>
                             {% if rss.token %}
                             <div class="row">
                                 <div class="input-field col s12">
-                                    <label>{% trans %}RSS links{% endtrans %}</label>
-                                        <ul>
-                                            <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}unread{% endtrans %}</a></li>
-                                            <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}starred{% endtrans %}</a></li>
-                                            <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}archive{% endtrans %}</a></li>
-                                        </ul>
-
+                                    <label>{{ 'config.form_rss.rss_links'|trans }}</label>
+                                    <ul>
+                                        <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li>
+                                        <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li>
+                                        <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li>
+                                    </ul>
                                 </div>
                             </div>
                             {% endif %}
@@ -111,11 +113,8 @@
                                 </div>
                             </div>
 
-                            <div class="hidden">{{ form_rest(form.rss) }}</div>
-                            <button class="btn waves-effect waves-light" type="submit" name="action">
-                                {% trans %}Save{% endtrans %}
-                            </button>
-
+                            {{ form_widget(form.rss.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
+                            {{ form_rest(form.rss) }}
                         </form>
                     </div>
 
@@ -142,7 +141,7 @@
                             {% if twofactor_auth %}
                             <div class="row">
                                 <div class="input-field col s12">
-                                    {% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %}
+                                    {{ 'config.form_user.two_factor_description'|trans }}
                                 </div>
                             </div>
 
@@ -155,11 +154,8 @@
                             </div>
                             {% endif %}
 
-                            <div class="hidden">{{ form_rest(form.user) }}</div>
-                            <button class="btn waves-effect waves-light" type="submit" name="action">
-                                {% trans %}Save{% endtrans %}
-                            </button>
-
+                            {{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
+                            {{ form_rest(form.user) }}
                         </form>
                     </div>
 
@@ -191,11 +187,8 @@
                                 </div>
                             </div>
 
-                            <div class="hidden">{{ form_rest(form.pwd) }}</div>
-                            <button class="btn waves-effect waves-light" type="submit" name="action">
-                                {% trans %}Save{% endtrans %}
-                            </button>
-
+                            {{ form_widget(form.pwd.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
+                            {{ form_rest(form.pwd) }}
                         </form>
                     </div>
 
@@ -205,8 +198,11 @@
                                 <ul>
                                     {% for tagging_rule in app.user.config.taggingRules %}
                                     <li>
-                                        if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} »
-                                        <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}">
+                                        {{ 'config.form_rules.if_label'|trans }}
+                                        « {{ tagging_rule.rule }} »
+                                        {{ 'config.form_rules.then_tag_as_label'|trans }}
+                                        « {{ tagging_rule.tags|join(', ') }} »
+                                        <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}">
                                             <i class="tool grey-text delete mdi-action-delete"></i>
                                         </a>
                                     </li>
@@ -234,102 +230,88 @@
                                 </div>
                             </div>
 
-                            <div class="hidden">{{ form_rest(form.new_tagging_rule) }}</div>
-                            <button class="btn waves-effect waves-light" type="submit" name="action">
-                                {% trans %}Save{% endtrans %}
-                            </button>
+                            {{ form_widget(form.new_tagging_rule.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
+                            {{ form_rest(form.new_tagging_rule) }}
                         </form>
 
                         <div class="row">
                             <div class="input-field col s12">
-                                <h4>{% trans %}FAQ{% endtrans %}</h4>
+                                <h4>{{ 'config.form_rules.faq.title'|trans }}</h4>
 
-                                <h5>{% trans %}What does « tagging rules » mean?{% endtrans %}</h5>
+                                <h5>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h5>
+                                <p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
+
+                                <h5>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h5>
+                                <p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
+
+                                <h5>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h5>
                                 <p class="help">
-                                    {% trans %}
-                                    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.
-                                    {% endtrans %}
-                                </p>
+                                    {{ 'config.form_rules.faq.variables_available_description'|trans }}
 
-                                <h5>{% trans %}How do I use them?{% endtrans %}</h5>
-                                <p class="help">
-                                    {% trans %}
-                                    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> »
-                                    {% endtrans %}
-                                </p>
-
-                                <h5>{% trans %}Which variables and operators can I use to write rules?{% endtrans %}</h5>
-                                <p class="help">
-                                    {% trans %}The following variables and operators can be used to create tagging rules:{% endtrans %}
-
-                                    <table>
+                                    <table class="bordered">
                                         <thead>
                                             <tr>
-                                                <th>{% trans %}Variable{% endtrans %}</th>
-                                                <th>{% trans %}Meaning{% endtrans %}</th>
-                                                <th>{% trans %}Operator{% endtrans %}</th>
-                                                <th>{% trans %}Meaning{% endtrans %}</th>
+                                                <th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
+                                                <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
+                                                <th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
+                                                <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
                                             </tr>
                                         </thead>
 
                                         <tbody>
                                             <tr>
                                                 <td>title</td>
-                                                <td>{% trans %}Title of the entry{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
                                                 <td>&lt;=</td>
-                                                <td>{% trans %}Less than…{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
                                             </tr>
                                             <tr>
                                                 <td>url</td>
-                                                <td>{% trans %}URL of the entry{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
                                                 <td>&lt;</td>
-                                                <td>{% trans %}Strictly less than…{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
                                             </tr>
                                             <tr>
                                                 <td>isArchived</td>
-                                                <td>{% trans %}Whether the entry is archived or not{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
                                                 <td>=&gt;</td>
-                                                <td>{% trans %}Greater than…{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
                                             </tr>
                                             <tr>
                                                 <td>isStarred</td>
-                                                <td>{% trans %}Whether the entry is starred or not{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
                                                 <td>&gt;</td>
-                                                <td>{% trans %}Strictly greater than…{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
                                             </tr>
                                             <tr>
                                                 <td>content</td>
-                                                <td>{% trans %}The entry's content{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
                                                 <td>=</td>
-                                                <td>{% trans %}Equal to…{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
                                             </tr>
                                             <tr>
                                                 <td>language</td>
-                                                <td>{% trans %}The entry's language{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
                                                 <td>!=</td>
-                                                <td>{% trans %}Not equal to…{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
                                             </tr>
                                             <tr>
                                                 <td>mimetype</td>
-                                                <td>{% trans %}The entry's mime-type{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
                                                 <td>OR</td>
-                                                <td>{% trans %}One rule or another{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
                                             </tr>
                                             <tr>
                                                 <td>readingTime</td>
-                                                <td>{% trans %}The estimated entry's reading time, in minutes{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
                                                 <td>AND</td>
-                                                <td>{% trans %}One rule and another{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
                                             </tr>
                                             <tr>
                                                 <td>domainName</td>
-                                                <td>{% trans %}The domain name of the entry{% endtrans %}</td>
+                                                <td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
                                                 <td>matches</td>
-                                                <td>
-                                                    {% trans %}
-                                                    Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>
-                                                    {% endtrans %}
-                                                </td>
+                                                <td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}</td>
                                             </tr>
                                         </tbody>
                                     </table>
@@ -375,11 +357,8 @@
                                 </div>
                             </div>
 
-                            <div class="hidden">{{ form_rest(form.new_user) }}</div>
-                            <button class="btn waves-effect waves-light" type="submit" name="action">
-                                {% trans %}Add a user{% endtrans %}
-                            </button>
-
+                            {{ form_widget(form.new_user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
+                            {{ form_rest(form.new_user) }}
                         </form>
                     </div>
                     {% endif %}
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 c002c4c35..1c5e2aab5 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Edit an entry{% endtrans %}{% endblock %}
+{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
 
 {% block content %}
 
@@ -10,7 +10,6 @@
 
                 <form name="entry" method="post" action="">
                     <div class="card-content">
-
                         {% if form_errors(form) %}
                             <span class="black-text">{{ form_errors(form) }}</span>
                         {% endif %}
@@ -24,17 +23,20 @@
                             {{ form_widget(form.title) }}
                         </div>
 
+                        <div class="input-field s12">
+                            {{ form_label(form.url) }}
+                            {{ form_widget(form.url) }}
+                        </div>
+
                         <div class="input-field s12">
                             {{ form_widget(form.is_public) }}
                             {{ form_label(form.is_public) }}
                         </div>
                         <br>
-                        <button class="btn waves-effect waves-light" type="submit" name="entry[save]">
-                            {% trans %}Save{% endtrans %}
-                            <i class="mdi-content-send right"></i>
-                        </button>
+
+                        {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
                     </div>
-                    <div class="hidden">{{ form_rest(form) }}</div>
+                    {{ form_rest(form) }}
                 </form>
 
             </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 371992df4..433b1caeb 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 @@
   {% set currentRoute = app.request.attributes.get('_route') %}
 
   {% if currentRoute == 'starred' %}
-    {% trans %}starred{% endtrans %}
+    {{ 'entry.page_titles.starred'|trans }}
   {% elseif currentRoute == 'archive' %}
-    {% trans %}archive{% endtrans %}
+    {{ 'entry.page_titles.archived'|trans }}
   {% elseif currentRoute == 'all' %}
-    {% trans %}Filtered{% endtrans %}
+    {{ 'entry.page_titles.filtered'|trans }}
   {% else %}
-    {% trans %}unread{% endtrans %}
+    {{ 'entry.page_titles.unread'|trans }}
   {% endif %}
 
 {% endblock %}
@@ -18,7 +18,9 @@
 {% block content %}
     {% block pager %}
     <div class="results clearfix">
-        <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>
+        <div class="nb-results left">
+            {{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}
+        </div>
         <ul class="pagination right">
             {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
                 <li class="{{ currentPage == p ? 'active':'waves-effect'}}">
@@ -52,9 +54,9 @@
                                 <span class="tool reading-time">
                                     {% set readingTime = entry.readingTime / app.user.config.readingSpeed %}
                                     {% if readingTime > 0 %}
-                                        {% trans with {'%readingTime%': readingTime } %}estimated reading time: %readingTime% min{% endtrans %}
+                                        {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': readingTime}) }}
                                     {% else %}
-                                        {% trans with {'%inferior%': '<small class="inferieur">&lt;</small>'} %}estimated reading time: %inferior% 1 min{% endtrans %}
+                                        {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
                                     {% endif %}
                                 </span>
                             </div>
@@ -72,7 +74,7 @@
 
                             <div class="estimatedTime grey-text">
                                 <span class="tool reading-time">
-                                    {% trans %}estimated reading time{% endtrans %}:
+                                    {{ 'entry.list.reading_time'|trans }}
                                     {% if entry.readingTime > 0 %}{{ entry.readingTime }}{% else %}<small class="inferieur">&lt;</small> 1{% endif %} min
                                 </span>
                             </div>
@@ -82,13 +84,15 @@
                     {% endif %}
 
                     <div class="card-action">
-                        <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>
+                        <span class="bold">
+                            <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>
+                        </bold>
 
                         <ul class="tools links right">
                             <li>
-                                <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>
-                                <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>
-                                <a title="{% trans %}Delete{% endtrans %}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a>
+                                <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>
+                                <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>
+                                <a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a>
                             </li>
                         </ul>
                     </div>
@@ -103,7 +107,7 @@
     {% if currentRoute == 'homepage' %}
         {% set currentRoute = 'unread' %}
     {% endif %}
-        <h4 class="center">{% trans %}Export{% endtrans %}</h4>
+        <h4 class="center">{{ 'entry.list.export_title'|trans }}</h4>
         <ul>
             {% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub' }) }}">EPUB</a></li>{% endif %}
             {% 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 @@
     <div id="filters" class="side-nav fixed right-aligned">
         <form action="{{ path('all') }}">
 
-            <h4 class="center">{% trans %}Filters{% endtrans %}</h4>
+            <h4 class="center">{{ 'entry.filters.title'|trans }}</h4>
 
             <div class="row">
                 <div class="col s12">
-                    <label>{% trans %}Status{% endtrans %}</label>
+                    <label>{{ 'entry.filters.status_label'|trans }}</label>
                 </div>
 
                 <div class="input-field col s6 with-checkbox">
                     {{ form_widget(form.isArchived) }}
-                    <label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label>
+                    {{ form_label(form.isArchived) }}
                 </div>
 
                 <div class="input-field col s6 with-checkbox">
                     {{ form_widget(form.isStarred) }}
-                    <label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label>
+                    {{ form_label(form.isStarred) }}
                 </div>
 
                 <div class="col s12">
-                    <label>{% trans %}Preview picture{% endtrans %}</label>
+                    <label>{{ 'entry.filters.preview_picture_help'|trans }}</label>
                 </div>
 
                 <div class="input-field col s12 with-checkbox">
                     {{ form_widget(form.previewPicture) }}
-                    <label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label>
+                    {{ form_label(form.previewPicture) }}
                 </div>
 
                 <div class="col s12">
-                    <label>{% trans %}Language{% endtrans %}</label>
+                    {{ form_label(form.language) }}
                 </div>
 
                 <div class="input-field col s12">
@@ -154,43 +158,42 @@
                 </div>
 
                 <div class="col s12">
-                    <label>{% trans %}Reading time in minutes{% endtrans %}</label>
+                    {{ form_label(form.readingTime) }}
                 </div>
                 <div class="input-field col s6">
                     {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
-                    <label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label>
+                    <label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
                 </div>
                 <div class="input-field col s6">
                     {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
-                    <label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
+                    <label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
                 </div>
 
                 <div class="input-field col s12">
-                    {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com' | trans} }) }}
-                    <label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label>
+                    {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
+                    {{ form_label(form.domainName) }}
                 </div>
 
                 <div class="col s12">
-                    <label>{% trans %}Creation date{% endtrans %}</label>
+                    {{ form_label(form.createdAt) }}
                 </div>
 
                 <div class="input-field col s6">
                     {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
-                    <label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label>
+                    <label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
                 </div>
                 <div class="input-field col s6">
                     {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
-                    <label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label>
+                    <label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
                 </div>
 
                 <div class="col s6">
-                    <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a>
+                    <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
                 </div>
 
                 <div class="col s6">
-                    <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filter{% endtrans %}</button>
+                    <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
                 </div>
-
             </div>
 
         </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 a39a8dc37..98f7194cf 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 @@
                 <description>
                     <![CDATA[
                     {%- if entry.readingTime > 0 -%}
-                        {% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min
+                        {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
                     {%- else -%}
-                        {% trans %}estimated reading time :{% endtrans %} &lt; 1 min
+                        {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
                     {%- endif %}
 
                     {{ 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 6f33da23c..4eebf18fb 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 @@
 
 {% block title %}{{ entry.title|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
 
+{% block body_class %}entry{% endblock %}
+
 {% block menu %}
     <div class="progress">
         <div class="determinate"></div>
@@ -17,12 +19,12 @@
             </ul>
             <ul class="right">
                 <li>
-                    <a class="waves-effect" title="{% trans %}Mark as read{% endtrans %}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
+                    <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
                         <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
                     </a>
                 </li>
                 <li>
-                    <a class="waves-effect" title="{% trans %}Favorite{% endtrans %}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
+                    <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
                         <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
                     </a>
                 </li>
@@ -38,7 +40,7 @@
         <li class="bold border-bottom hide-on-med-and-down">
             <a class="waves-effect collapsible-header" href="{{ path('homepage') }}">
                 <i class="mdi-action-exit-to-app small"></i>
-                <span>{% trans %}back{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.back_to_homepage'|trans }}</span>
             </a>
             <div class="collapsible-body"></div>
         </li>
@@ -46,38 +48,38 @@
         <li class="bold border-bottom hide-on-med-and-down">
             <a class="waves-effect collapsible-header" href="{{ entry.url|e }}">
                 <i class="mdi-content-link small"></i>
-                <span>{% trans %}original article{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span>
             </a>
             <div class="collapsible-body"></div>
         </li>
 
         <li class="bold hide-on-med-and-down">
-            <a class="waves-effect collapsible-header" title="{% trans %}Re-fetch content{% endtrans %}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload">
+            <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload">
                 <i class="mdi-action-autorenew small"></i>
-                <span>{% trans %}Re-fetch content{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span>
             </a>
             <div class="collapsible-body"></div>
         </li>
 
         <li class="bold hide-on-med-and-down">
-            <a class="waves-effect collapsible-header" title="{% trans %}Mark as read{% endtrans %}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
+            <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
                 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
-                <span>{% if entry.isArchived == 0 %}{% trans %}Mark as read{% endtrans %}{% else %}{% trans %}Mark as unread{% endtrans %}{% endif %}</span>
+                <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>
             <div class="collapsible-body"></div>
         </li>
 
         <li class="bold hide-on-med-and-down">
-            <a class="waves-effect collapsible-header" title="{% trans %}Favorite{% endtrans %}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
+            <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
                 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
-                <span>{% trans %}Favorite{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.set_as_favorite'|trans }}</span>
             </a>
             <div class="collapsible-body"></div>
         </li>
         <li class="bold border-bottom hide-on-med-and-down">
-            <a class="waves-effect collapsible-header" title="{% trans %}Delete{% endtrans %}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
+            <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
                 <i class="mdi-action-delete small"></i>
-                <span>{% trans %}Delete{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.delete'|trans }}</span>
             </a>
             <div class="collapsible-body"></div>
         </li>
@@ -85,7 +87,7 @@
         <li class="bold border-bottom hide-on-med-and-down">
             <a class="waves-effect collapsible-header" id="nav-btn-add-tag">
                 <i class="mdi-action-label-outline small"></i>
-                <span>{% trans %}Add a tag{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span>
             </a>
             <div class="collapsible-body"></div>
         </li>
@@ -93,7 +95,7 @@
         <li class="bold">
             <a class="waves-effect collapsible-header">
                 <i class="mdi-social-share small"></i>
-                <span>{% trans %}Share{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.share_content'|trans }}</span>
             </a>
             <div class="collapsible-body">
                 <ul>
@@ -127,8 +129,8 @@
                     {% endif %}
                     {% 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 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 }}">
+                                <span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span>
                             </a>
                         </li>
                     {% endif %}
@@ -139,7 +141,7 @@
         <li class="bold">
             <a class="waves-effect collapsible-header">
                 <i class="mdi-file-file-download small"></i>
-                <span>{% trans %}Download{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.download'|trans }}</span>
             </a>
             <div class="collapsible-body">
                 <ul>
@@ -155,40 +157,33 @@
         </li>
 
         <li class="bold hide-on-large-only">
-            <a class="waves-effect collapsible-header" title="{% trans %}Delete{% endtrans %}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
+            <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
                 <i class="mdi-action-delete small"></i>
-                <span>{% trans %}Delete{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.delete'|trans }}</span>
             </a>
             <div class="collapsible-body"></div>
         </li>
 
         <li class="bold">
-            <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 %}">
+            <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 }}">
                 <i class="mdi-alert-error small"></i>
-                <span>{% trans %}Problems?{% endtrans %}</span>
+                <span>{{ 'entry.view.left_menu.problem.label'|trans }}</span>
             </a>
             <div class="collapsible-body"></div>
         </li>
 
     </ul>
 
-<style>
-main {
-    padding: 0;
-}
-</style>
-
 {% endblock %}
 
 {% block content %}
     <div id="article">
         <header class="mbm">
-            <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{% trans %}Edit title{% endtrans %}">✎</a></h1>
+            <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
         </header>
         <aside>
-            <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>
-            {% set nbAnnotations = entry.annotations | length %}
-            <span class="tool link mdi-communication-comment"> {% transchoice nbAnnotations %}{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations{% endtranschoice %}</span>
+            <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>
+            <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
             <div id="list">
                 {% for tag in entry.tags %}
                     <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 95ed07852..03768a3d8 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Save new entry{% endtrans %}{% endblock %}
+{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
 
 {% block content %}
     {{ 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 f1e564126..0cf4fb746 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 @@
         <span class="black-text">{{ form_errors(form.url) }}</span>
     {% endif %}
 
-    {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'http://website'} }) }}
+    {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
 
-    <div class="hidden">{{ form_rest(form) }}</div>
+    {{ form_rest(form) }}
 </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 1368bb092..a294b74db 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}About{% endtrans %}{% endblock %}
+{% block title %}{{ 'about.page_title'|trans }}{% endblock %}
 
 {% block content %}
 
@@ -11,56 +11,56 @@
                 <div class="row">
                     <div class="div_tabs col s12">
                         <ul class="tabs">
-                        <li class="tab col s3"><a class="active" href="#set1">{% trans %}Who is behind wallabag{% endtrans %}</a></li>
-                        <li class="tab col s3"><a href="#set2">{% trans %}Getting help{% endtrans %}</a></li>
-                        <li class="tab col s3"><a href="#set3">{% trans %}Helping wallabag{% endtrans %}</a></li>
-                        <li class="tab col s3"><a href="#set4">{% trans %}Contributors{% endtrans %}</a></li>
-                        <li class="tab col s3"><a href="#set5">{% trans %}Third-party libraries{% endtrans %}</a></li>
+                        <li class="tab col s3"><a class="active" href="#set1">{{ 'about.top_menu.who_behind_wallabag'|trans }}</a></li>
+                        <li class="tab col s3"><a href="#set2">{{ 'about.top_menu.getting_help'|trans }}</a></li>
+                        <li class="tab col s3"><a href="#set3">{{ 'about.top_menu.helping'|trans }}</a></li>
+                        <li class="tab col s3"><a href="#set4">{{ 'about.top_menu.contributors'|trans }}</a></li>
+                        <li class="tab col s3"><a href="#set5">{{ 'about.top_menu.third_party'|trans }}</a></li>
                         </ul>
                     </div>
 
                     <div id="set1" class="col s12">
-                        <dt>{% trans %}Developed by{% endtrans %}</dt>
-                        <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans %}website{% endtrans %}</a></dd>
-                        <dd>Thomas Citharel — <a href="https://tcit.fr">{% trans %}website{% endtrans %}</a></dd>
-                        <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{% trans %}website{% endtrans %}</a></dd>
-                        <dt>{% trans %}And many others contributors ♥{% endtrans %} <a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}on GitHub{% endtrans %}</a></dt>
-                        <dt>{% trans %}Project website{% endtrans %}</dt>
+                        <dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt>
+                        <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
+                        <dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
+                        <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
+                        <dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt>
+                        <dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt>
                         <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
-                        <dt>{% trans %}License{% endtrans %}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
-                        <dt>{% trans %}Version{% endtrans %}: {{ version }}</dt>
+                        <dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="https://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
+                        <dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt>
                     </div>
 
                     <div id="set2" class="col s12">
                         <dl>
-                            <dt>{% trans %}Documentation{% endtrans %}</dt>
+                            <dt>{{ 'about.getting_help.documentation'|trans }}</dt>
                             <dd><a href="https://doc.wallabag.org/en">english</a></dd>
                             <dd><a href="https://doc.wallabag.org/fr">français</a></dd>
                             <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd>
 
-                            <dt>{% trans %}Bug reports{% endtrans %}</dt>
-                            <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>
+                            <dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
+                            <dd>{{ 'about.getting_help.support'|trans|raw }}</dd>
                         </dl>
                     </div>
 
                     <div id="set3" class="col s12">
                         <dl>
-                            <dt>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</dt>
-                            <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>
-                            <dd><a href="{{ paypal_url }}">{% trans %}via Paypal{% endtrans %}</a></dd>
+                            <dt>{{ 'about.helping.description'|trans }}</dt>
+                            <dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
+                            <dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
                         </dl>
                     </div>
 
                     <div id="set4" class="col s12">
-                        <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}Thank you to contributors on wallabag web application{% endtrans %}</a></p>
+                        <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p>
                     </div>
 
                     <div id="set5" class="col s12">
-                        <p>{% trans %}Here are the list of third-party libraries used in wallabag (with their licenses):{% endtrans %}</p>
-                        <table>
+                        <p>{{ 'about.third_party.description'|trans }}</p>
+                        <table class="striped">
                             <tr>
-                                <th>{% trans %}Package{% endtrans %}</th>
-                                <th>{% trans %}License{% endtrans %}</th>
+                                <th>{{ 'about.third_party.package'|trans }}</th>
+                                <th>{{ 'about.third_party.license'|trans }}</th>
                             </tr>
                             <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr>
                             <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 e27954094..15b548d89 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}howto{% endtrans %}{% endblock %}
+{% block title %}{{ 'howto.page_title'|trans }}{% endblock %}
 
 {% block content %}
 
     <div class="row">
         <div class="col s12">
             <div class="card-panel settings">
+                <p>{{ 'howto.page_description'|trans }}</p>
 
                 <div class="row">
-                    <div class="div_tabs col s12">
-                        <ul class="tabs">
-                        <li class="tab col s3"><a class="active" href="#set1">{% trans %}Form{% endtrans %}</a></li>
-                        <li class="tab col s3"><a href="#set2">{% trans %}Browser addons{% endtrans %}</a></li>
-                        <li class="tab col s3"><a href="#set3">{% trans %}Mobile apps{% endtrans %}</a></li>
-                        <li class="tab col s3"><a href="#set4">{% trans %}Bookmarklet{% endtrans %}</a></li>
-                        </ul>
+
+                    <div class="col s12">
+                        <a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a>
                     </div>
 
-                    <div id="set1" class="col s12">
-                        <a href="{{ path('new') }}">{% trans %}Thanks to this form{% endtrans %}</a>
-                    </div>
-
-                    <div id="set2" class="col s12">
+                    <div class="col s12">
+                        <h5>{{ 'howto.top_menu.browser_addons'|trans }}</h5>
                         <ul>
-                            <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans %}Standard Firefox Add-On{% endtrans %}</a></li>
-                            <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans %}Chrome Extension{% endtrans %}</a></li>
+                            <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li>
+                            <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li>
                         </ul>
                     </div>
 
-                    <div id="set3" class="col s12">
+                    <div class="col s12">
+                        <h5>{{ 'howto.top_menu.mobile_apps'|trans }}</h5>
                         <ul>
-                            <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>
-                            <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans %}download the application{% endtrans %}</a></li>
-                            <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>
+                            <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>
+                            <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li>
+                            <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>
                         </ul>
                     </div>
 
-                    <div id="set4" class="col s12">
-                        {% trans %}Drag &amp; drop this link to your bookmarks bar:{% endtrans %}
+                    <div class="col s12">
+                        <h5>{{ 'howto.top_menu.bookmarklet'|trans }}</h5>
+                        {{ 'howto.bookmarklet.description'|trans }}
                         {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
                     </div>
 
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 03754d389..706c4a792 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Quickstart{% endtrans %}{% endblock %}
+{% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %}
 
 {% block content %}
 
@@ -9,56 +9,63 @@
             <div class="card-panel settings">
 
                 <div class="row">
-                    <h3>{% trans %}Welcome to wallabag!{% endtrans %}</h3>
-                    <p>{% trans %}We'll accompany you to visit wallabag and show you some features which can interess you.{% endtrans %}</p>
-                    <p>{% trans %}Follow us!{% endtrans %}</p>
-                    <h4>{% trans %}Configure the application{% endtrans %}</h4>
+                    <h3>{{ 'quickstart.intro.title'|trans }}</h3>
+                    <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p>
+                    <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p>
+
+                    <h4>{{ 'quickstart.configure.title'|trans }}</h4>
                     <ul>
-                        <li><a href="{{ path('config') }}">{% trans %}Change language and design{% endtrans %}</a></li>
-                        <li><a href="{{ path('config') }}#set2">{% trans %}Enable RSS feeds{% endtrans %}</a></li>
-                        <li><a href="{{ path('config') }}#set5">{% trans %}Write rules to automatically tag your articles{% endtrans %}</a></li>
+                        <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
+                        <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
+                        <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li>
                     </ul>
+
                     {% if is_granted('ROLE_SUPER_ADMIN') %}
-                    <h4>{% trans %}Administration{% endtrans %}</h4>
-                    <p>{% trans %}As a administrator, you have privileges on wallabag. You can:{% endtrans %}</p>
+                    <h4>{{ 'quickstart.admin.title'|trans }}</h4>
+                    <p>{{ 'quickstart.admin.description'|trans }}</p>
                     <ul>
-                        <li><a href="{{ path('config') }}#set6">{% trans %}Create a new user{% endtrans %}</a></li>
-                        <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{% trans %}Configure analytics{% endtrans %}</a></li>
-                        <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{% trans %}Enable some parameters about article sharing{% endtrans %}</a></li>
-                        <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{% trans %}Configure export{% endtrans %}</a></li>
-                        <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{% trans %}Configure import{% endtrans %}</a></li>
+                        <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li>
+                        <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li>
+                        <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li>
+                        <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li>
+                        <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li>
                     </ul>
                     {% endif %}
-                    <h4>{% trans %}First steps{% endtrans %}</h4>
+
+                    <h4>{{ 'quickstart.first_steps.title'|trans }}</h4>
                     <ul>
-                        <li><a href="{{ path('new') }}">{% trans %}Save your first article{% endtrans %}</a></li>
-                        <li><a href="{{ path('unread') }}">{% trans %}And classify it!{% endtrans %}</a></li>
+                        <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li>
+                        <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li>
                     </ul>
-                    <h4>{% trans %}Migrate from an existing service{% endtrans %}</h4>
-                    <p>{% trans %}You're using an other service? We'll help you to retrieve your data on wallabag.{% endtrans %}</p>
+
+                    <h4>{{ 'quickstart.migrate.title'|trans }}</h4>
+                    <p>{{ 'quickstart.migrate.description'|trans }}</p>
                     <ul>
-                        <li><a href="{{ path('import_pocket') }}">{% trans %}Migrate from Pocket{% endtrans %}</a></li>
-                        <li><a href="{{ path('import_wallabag_v1') }}">{% trans %}Migrate from wallabag v1{% endtrans %}</a></li>
-                        <li><a href="{{ path('import_wallabag_v2') }}">{% trans %}Migrate from wallabag v2{% endtrans %}</a></li>
+                        <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li>
+                        <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li>
+                        <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li>
                     </ul>
-                    <h4>{% trans %}Developers{% endtrans %}</h4>
+
+                    <h4>{{ 'quickstart.developer.title'|trans }}</h4>
                     <ul>
-                        <li><a href="{{ path('developer') }}">{% trans %}Create your third application{% endtrans %}</a></li>
+                        <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li>
                     </ul>
-                    <h4>{% trans %}Full documentation{% endtrans %}</h4>
+
+                    <h4>{{ 'quickstart.docs.title'|trans }}</h4>
                     <ul>
-                        <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{% trans %}Annotate your article{% endtrans %}</a></li>
-                        <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{% trans %}Convert your articles into ePUB or PDF{% endtrans %}</a></li>
-                        <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>
-                        <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>
-                        <li><a href="http://doc.wallabag.org/">{% trans %}And so many other articles!{% endtrans %}</a></li>
+                        <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li>
+                        <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li>
+                        <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li>
+                        <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li>
+                        <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li>
                     </ul>
-                    <h4>{% trans %}Support{% endtrans %}</h4>
-                    <p>{% trans %}If you need some help, we are here for you.{% endtrans %}</p>
+
+                    <h4>{{ 'quickstart.support.title'|trans }}</h4>
+                    <p>{{ 'quickstart.support.description'|trans }}</p>
                     <ul>
-                        <li><a href="https://github.com/wallabag/wallabag/issues/">{% trans %}On GitHub{% endtrans %}</a></li>
-                        <li><a href="mailto:hello@wallabag.org">{% trans %}By email{% endtrans %}</a></li>
-                        <li><a href="https://gitter.im/wallabag/wallabag">{% trans %}On Gitter{% endtrans %}</a></li>
+                        <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li>
+                        <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li>
+                        <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li>
                     </ul>
                 </div>
 
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 793103078..6e552560e 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 @@
 
     {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
 
-    <div class="hidden">{{ form_rest(form) }}</div>
+    {{ form_rest(form) }}
 </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 19754d415..6b5836892 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title "Tags" %}
+{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
 
 {% block content %}
     <div class="results clearfix">
-        <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>
+        <div class="nb-results left">{{ 'tag.list.number_on_the_page'|transchoice(tags.count) }}</div>
     </div>
     <br />
     <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 f5d03084d..48eaca817 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 @@
         <ul id="slide-out" class="side-nav fixed">
             {% block logo %}
                 <li class="logo border-bottom">
-                    <a title="{% trans %}Back to unread articles{% endtrans %}" href="{{ path('unread') }}">
+                    <a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}">
                         <img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" />
                     </a>
                 </li>
@@ -39,19 +39,41 @@
 
             {% set currentRoute = app.request.attributes.get('_route') %}
 
-            <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}"><a class="waves-effect" href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
-            <li class="bold {% if currentRoute == 'starred' %}active{% endif %}"><a class="waves-effect" href="{{ path('starred') }}">{% trans %}starred{% endtrans %}</a></li>
-            <li class="bold {% if currentRoute == 'archive' %}active{% endif %}"><a class="waves-effect" href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li>
-            <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}"><a class="waves-effect" href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li>
-            <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"><a class="waves-effect" href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li>
-            <li class="bold {% if currentRoute == 'config' %}active{% endif %}"><a class="waves-effect" href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
+            <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a>
+            </li>
+            <li class="bold {% if currentRoute == 'starred' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a>
+            </li>
+            <li class="bold {% if currentRoute == 'archive' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a>
+            </li>
+            <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a>
+            </li>
+            <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a>
+            </li>
+            <li class="bold {% if currentRoute == 'config' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a>
+            </li>
             {% if is_granted('ROLE_SUPER_ADMIN') %}
-                <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>
+                <li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}">
+                    <a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a>
+                </li>
             {% endif %}
-            <li class="bold {% if currentRoute == 'import' %}active{% endif %}"><a class="waves-effect" href="{{ path('import') }}">{% trans %}import{% endtrans %}</a></li>
-            <li class="bold {% if currentRoute == 'howto' %}active{% endif %}"><a class="waves-effect" href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li>
-            <li class="bold {% if currentRoute == 'developer' %}active{% endif %}"><a class="waves-effect" href="{{ path('developer') }}">{% trans %}Developer{% endtrans %}</a></li>
-            <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>
+            <li class="bold {% if currentRoute == 'import' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a>
+            </li>
+            <li class="bold {% if currentRoute == 'developer' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a>
+            </li>
+            <li class="bold {% if currentRoute == 'howto' %}active{% endif %}">
+                <a class="waves-effect" href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a>
+            </li>
+            <li class="bold">
+                <a class="waves-effect" class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a>
+            </li>
         </ul>
         <div class="nav-wrapper nav-panels">
             <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a>
@@ -61,21 +83,37 @@
             </div>
             <div class="input-field nav-panel-buttom">
                 <ul>
-                    <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>
-                    <li><a title="{% trans %}Search{% endtrans %}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search"><i class="mdi-action-search"></i></a>
-                    <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>
-                    <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>
+                    <li class="bold">
+                        <a title="{{ 'menu.top.add_new_entry'|trans }}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add">
+                            <i class="mdi-content-add"></i>
+                        </a>
+                    </li>
+                    <li>
+                        <a title="{{ 'menu.top.search'|trans }}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search">
+                            <i class="mdi-action-search"></i>
+                        </a>
+                    </li>
+                    <li id="button_filters">
+                        <a title="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right">
+                            <i class="mdi-content-filter-list"></i>
+                        </a>
+                    </li>
+                    <li id="button_export">
+                        <a title="{{ 'menu.top.export'|trans }}" 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>
                 </ul>
             </div>
             <form method="get" action="index.php">
                 <div class="input-field nav-panel-search" style="display: none">
-                    <input name="search" id="searchfield" type="search" required placeholder="{% trans %}Enter your search here{% endtrans %}">
+                    <input name="search" id="searchfield" type="search" required placeholder="{{ 'menu.search_form.input_label'|trans }}">
                     <label for="search"><i class="mdi-action-search"></i></label>
                     <i class="mdi-navigation-close"></i>
                 </div>
             </form>
             <div class="input-field nav-panel-add" style="display: none">
-                {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
+                {{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }}
                 <label for="add" class="active"><i class="mdi-content-add"></i></label>
                 <i class="mdi-navigation-close"></i>
             </div>
@@ -88,35 +126,40 @@
         <div class="container">
             <div class="row">
                 <div class="col l6 s12">
-                    <h5 class="white-text">{% trans %}Take wallabag with you{% endtrans %}</h5>
+                    <h5 class="white-text">{{ 'footer.wallabag.elsewhere'|trans }}</h5>
                     <p class="grey-text text-lighten-4">
-
-                        <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>
-
-                        <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS"><span class="icon-apple"></a>
-
-                        <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>
-
-                        <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>
-
+                        <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>
+                        <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS">
+                            <span class="icon-apple"></span>
+                        </a>
+                        <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>
+                        <a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagit/peehlcgckcnclnjlndmoddifcicdnabm" title="Chrome">
+                            <span class="icon-chrome"></span>
+                        </a>
                     </p>
                 </div>
                 <div class="col l4 offset-l2 s12">
-                    <h5 class="white-text">{% trans %}Social{% endtrans %}</h5>
-
-                    <a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter"><span class="icon-twitter"></span></a>
-
-                    <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>
-
-                    <a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook"><span class="icon-facebook2"></span></a>
-
+                    <h5 class="white-text">{{ 'footer.wallabag.social'|trans }}</h5>
+                    <a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter">
+                        <span class="icon-twitter"></span>
+                    </a>
+                    <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>
+                    <a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook">
+                        <span class="icon-facebook2"></span>
+                    </a>
                 </div>
             </div>
         </div>
         <div class="footer-copyright">
             <div class="container">
-                <p>{% trans %}powered by{% endtrans %} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p>
-                <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{% trans %}About{% endtrans %}</a>
+                <p>{{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p>
+                <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a>
             </div>
         </div>
     </footer>
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
index 51425fe1c..bf455f328 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
@@ -102,7 +102,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'change_passwd[new_password][first]' => '',
                     'change_passwd[new_password][second]' => '',
                 ),
-                'Wrong value for your current password',
+                'validator.password_wrong_value',
             ),
             array(
                 array(
@@ -118,7 +118,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'change_passwd[new_password][first]' => 'hop',
                     'change_passwd[new_password][second]' => '',
                 ),
-                'The password fields must match',
+                'validator.password_must_match',
             ),
             array(
                 array(
@@ -126,7 +126,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'change_passwd[new_password][first]' => 'hop',
                     'change_passwd[new_password][second]' => 'hop',
                 ),
-                'Password should by at least',
+                'validator.password_too_short',
             ),
         );
     }
@@ -188,14 +188,14 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'update_user[name]' => '',
                     'update_user[email]' => '',
                 ),
-                'Please enter an email',
+                'fos_user.email.blank',
             ),
             array(
                 array(
                     'update_user[name]' => '',
                     'update_user[email]' => 'test',
                 ),
-                'The email is not valid',
+                'fos_user.email.invalid',
             ),
         );
     }
@@ -244,7 +244,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
 
         $crawler = $client->followRedirect();
 
-        $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
+        $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
         $this->assertContains('Information updated', $alert[0]);
     }
 
@@ -258,7 +258,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'new_user[plainPassword][second]' => '',
                     'new_user[email]' => '',
                 ),
-                'Please enter a username',
+                'fos_user.username.blank',
             ),
             array(
                 array(
@@ -267,7 +267,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'new_user[plainPassword][second]' => 'mypassword',
                     'new_user[email]' => '',
                 ),
-                'The username is too short',
+                'fos_user.username.short',
             ),
             array(
                 array(
@@ -276,7 +276,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'new_user[plainPassword][second]' => 'mypassword',
                     'new_user[email]' => 'test',
                 ),
-                'The email is not valid',
+                'fos_user.email.invalid',
             ),
             array(
                 array(
@@ -285,7 +285,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'new_user[plainPassword][second]' => 'wallacewallace',
                     'new_user[email]' => 'wallace@wallace.me',
                 ),
-                'The username is already used',
+                'fos_user.username.already_used',
             ),
             array(
                 array(
@@ -294,7 +294,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                     'new_user[plainPassword][second]' => 'mypassword2',
                     'new_user[email]' => 'wallace@wallace.me',
                 ),
-                'The password fields must match',
+                'validator.password_must_match',
             ),
         );
     }
@@ -382,7 +382,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
         $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
-        $this->assertContains('You need to generate a token first.', $body[0]);
+        $this->assertContains('config.form_rss.no_token', $body[0]);
 
         $client->request('GET', '/generate-token');
         $this->assertEquals(302, $client->getResponse()->getStatusCode());
@@ -390,7 +390,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
         $crawler = $client->followRedirect();
 
         $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
-        $this->assertNotContains('You need to generate a token first.', $body[0]);
+        $this->assertNotContains('config.form_rss.no_token', $body[0]);
     }
 
     public function testGenerateTokenAjax()
@@ -454,7 +454,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
                 array(
                     'rss_config[rss_limit]' => 1000000000000,
                 ),
-                'This will certainly kill the app',
+                'validator.rss_limit_too_hight',
             ),
         );
     }
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
index 5512d6e1b..0fcf323cd 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
@@ -28,14 +28,14 @@ class EntryControllerTest extends WallabagCoreTestCase
         $client->followRedirect();
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
-        $this->assertContains('We\'ll accompany you to visit wallabag', $client->getResponse()->getContent());
+        $this->assertContains('quickstart.intro.paragraph_1', $client->getResponse()->getContent());
 
         // Test if quickstart is disabled when user has 1 entry
         $crawler = $client->request('GET', '/new');
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
-        $form = $crawler->filter('button[type=submit]')->form();
+        $form = $crawler->filter('form[name=entry]')->form();
 
         $data = array(
             'entry[url]' => $this->url,
@@ -46,7 +46,7 @@ class EntryControllerTest extends WallabagCoreTestCase
         $client->followRedirect();
 
         $client->request('GET', '/unread/list');
-        $this->assertContains('There is one entry.', $client->getResponse()->getContent());
+        $this->assertContains('entry.list.number_on_the_page', $client->getResponse()->getContent());
     }
 
     public function testGetNew()
@@ -59,7 +59,7 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
         $this->assertCount(1, $crawler->filter('input[type=url]'));
-        $this->assertCount(1, $crawler->filter('button[type=submit]'));
+        $this->assertCount(1, $crawler->filter('form[name=entry]'));
     }
 
     public function testPostNewViaBookmarklet()
@@ -96,7 +96,7 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
-        $form = $crawler->filter('button[type=submit]')->form();
+        $form = $crawler->filter('form[name=entry]')->form();
 
         $crawler = $client->submit($form);
 
@@ -117,7 +117,7 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
-        $form = $crawler->filter('button[type=submit]')->form();
+        $form = $crawler->filter('form[name=entry]')->form();
 
         $data = array(
             'entry[url]' => $this->url,
@@ -146,7 +146,7 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
-        $form = $crawler->filter('button[type=submit]')->form();
+        $form = $crawler->filter('form[name=entry]')->form();
 
         $data = array(
             'entry[url]' => $this->url,
@@ -170,7 +170,7 @@ class EntryControllerTest extends WallabagCoreTestCase
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
-        $form = $crawler->filter('button[type=submit]')->form();
+        $form = $crawler->filter('form[name=entry]')->form();
 
         $data = array(
             'entry[url]' => $url = 'https://github.com/wallabag/wallabag',
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
index b9f5d8355..5c098cc28 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
@@ -12,53 +12,59 @@ class SecurityControllerTest extends WallabagCoreTestCase
         $client = $this->getClient();
         $client->followRedirects();
 
-        $client->request('GET', '/config');
-        $this->assertContains('RSS', $client->getResponse()->getContent());
+        $crawler = $client->request('GET', '/config');
+        $this->assertContains('config.form_rss.description', $crawler->filter('body')->extract(array('_text'))[0]);
     }
 
     public function testLoginWith2Factor()
     {
         $client = $this->getClient();
 
-        if ($client->getContainer()->getParameter('twofactor_auth')) {
-            $client->followRedirects();
-
-            $em = $client->getContainer()->get('doctrine.orm.entity_manager');
-            $user = $em
-                ->getRepository('WallabagUserBundle:User')
-                ->findOneByUsername('admin');
-            $user->setTwoFactorAuthentication(true);
-            $em->persist($user);
-            $em->flush();
-
-            $this->logInAs('admin');
-            $client->request('GET', '/config');
-            $this->assertContains('trusted computer', $client->getResponse()->getContent());
-
-            // restore user
-            $user = $em
-                ->getRepository('WallabagUserBundle:User')
-                ->findOneByUsername('admin');
-            $user->setTwoFactorAuthentication(false);
-            $em->persist($user);
-            $em->flush();
+        if (!$client->getContainer()->getParameter('twofactor_auth')) {
+            $this->markTestSkipped('twofactor_auth is not enabled.');
+            return;
         }
+
+        $client->followRedirects();
+
+        $em = $client->getContainer()->get('doctrine.orm.entity_manager');
+        $user = $em
+            ->getRepository('WallabagUserBundle:User')
+            ->findOneByUsername('admin');
+        $user->setTwoFactorAuthentication(true);
+        $em->persist($user);
+        $em->flush();
+
+        $this->logInAs('admin');
+        $crawler = $client->request('GET', '/config');
+        $this->assertContains('scheb_two_factor.trusted', $crawler->filter('body')->extract(array('_text'))[0]);
+
+        // restore user
+        $user = $em
+            ->getRepository('WallabagUserBundle:User')
+            ->findOneByUsername('admin');
+        $user->setTwoFactorAuthentication(false);
+        $em->persist($user);
+        $em->flush();
     }
 
     public function testTrustedComputer()
     {
         $client = $this->getClient();
 
-        if ($client->getContainer()->getParameter('twofactor_auth')) {
-            $em = $client->getContainer()->get('doctrine.orm.entity_manager');
-            $user = $em
-                ->getRepository('WallabagUserBundle:User')
-                ->findOneByUsername('admin');
-
-            $date = new \DateTime();
-            $user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M')));
-            $this->assertTrue($user->isTrustedComputer('ABCDEF'));
-            $this->assertFalse($user->isTrustedComputer('FEDCBA'));
+        if (!$client->getContainer()->getParameter('twofactor_auth')) {
+            $this->markTestSkipped('twofactor_auth is not enabled.');
+            return;
         }
+
+        $em = $client->getContainer()->get('doctrine.orm.entity_manager');
+        $user = $em
+            ->getRepository('WallabagUserBundle:User')
+            ->findOneByUsername('admin');
+
+        $date = new \DateTime();
+        $user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M')));
+        $this->assertTrue($user->isTrustedComputer('ABCDEF'));
+        $this->assertFalse($user->isTrustedComputer('FEDCBA'));
     }
 }
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php
index d63912822..338121e7e 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
 
         $crawler = $client->request('GET', '/view/'.$entry->getId());
 
-        $form = $crawler->filter('button[id=tag_save]')->form();
+        $form = $crawler->filter('form[name=tag]')->form();
 
         $data = array(
             'tag[label]' => $this->tagName,
diff --git a/src/Wallabag/ImportBundle/Controller/PocketController.php b/src/Wallabag/ImportBundle/Controller/PocketController.php
index c88e115e4..7a35514ba 100644
--- a/src/Wallabag/ImportBundle/Controller/PocketController.php
+++ b/src/Wallabag/ImportBundle/Controller/PocketController.php
@@ -17,8 +17,8 @@ class PocketController extends Controller
     {
         $pocket = $this->get('wallabag_import.pocket.import');
         $form = $this->createFormBuilder($pocket)
-            ->add('read', CheckboxType::class, array(
-                'label' => 'Mark all as read',
+            ->add('mark_as_read', CheckboxType::class, array(
+                'label' => 'import.form.mark_as_read_label',
                 'required' => false,
             ))
             ->getForm();
@@ -39,7 +39,7 @@ class PocketController extends Controller
             ->getRequestToken($this->generateUrl('import', array(), UrlGeneratorInterface::ABSOLUTE_URL));
 
         $this->get('session')->set('import.pocket.code', $requestToken);
-        $this->get('session')->set('read', $request->request->get('form')['read']);
+        $this->get('session')->set('mark_as_read', $request->request->get('form')['mark_as_read']);
 
         return $this->redirect(
             'https://getpocket.com/auth/authorize?request_token='.$requestToken.'&redirect_uri='.$this->generateUrl('import_pocket_callback', array(), UrlGeneratorInterface::ABSOLUTE_URL),
@@ -54,8 +54,8 @@ class PocketController extends Controller
     {
         $message = 'Import failed, please try again.';
         $pocket = $this->get('wallabag_import.pocket.import');
-        $markAsRead = $this->get('session')->get('read');
-        $this->get('session')->remove('read');
+        $markAsRead = $this->get('session')->get('mark_as_read');
+        $this->get('session')->remove('mark_as_read');
 
         // something bad happend on pocket side
         if (false === $pocket->authorize($this->get('session')->get('import.pocket.code'))) {
diff --git a/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php b/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php
index 386703796..e0a44c366 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
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('file', FileType::class)
+            ->add('file', FileType::class, array(
+                'label' => 'import.form.file_label',
+            ))
             ->add('mark_as_read', CheckboxType::class, array(
-                'label' => 'Mark all as read',
+                'label' => 'import.form.mark_as_read_label',
                 'required' => false,
             ))
-            ->add('save', SubmitType::class)
+            ->add('save', SubmitType::class, array(
+                'label' => 'import.form.save_label',
+            ))
         ;
     }
 
diff --git a/src/Wallabag/ImportBundle/Import/PocketImport.php b/src/Wallabag/ImportBundle/Import/PocketImport.php
index 238ddbd1f..4499ce699 100644
--- a/src/Wallabag/ImportBundle/Import/PocketImport.php
+++ b/src/Wallabag/ImportBundle/Import/PocketImport.php
@@ -60,7 +60,7 @@ class PocketImport implements ImportInterface
      */
     public function getDescription()
     {
-        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.';
+        return 'import.pocket.description';
     }
 
     /**
@@ -139,7 +139,7 @@ class PocketImport implements ImportInterface
     /**
      * Get whether articles must be all marked as read.
      */
-    public function getRead()
+    public function getMarkAsRead()
     {
         return $this->markAsRead;
     }
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
index 1d773d3bb..173a587f1 100644
--- a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
+++ b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
@@ -67,7 +67,7 @@ class WallabagV1Import implements ImportInterface
      */
     public function getDescription()
     {
-        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.';
+        return 'import.wallabag_v1.description';
     }
 
     /**
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php
index c4bac5615..0a32864eb 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
      */
     public function getDescription()
     {
-        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.';
+        return 'import.wallabag_v2.description';
     }
 
     /**
diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig
index 8c300624d..aebbfa208 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
-{% block title %}{% trans %}Import{% endtrans %}{% endblock %}
+
+{% block title %}{{ 'import.page_title'|trans }}{% endblock %}
 
 {% block content %}
 <div class="row">
     <div class="col s12">
         <div class="card-panel settings">
-            {% trans %}Welcome to wallabag importer. Please select your previous service that you want to migrate.{% endtrans %}
+            {{ 'import.page_description'|trans }}
             <ul>
                 {% for import in imports %}
                     <li>
                         <h5>{{ import.name }}</h5>
                         <blockquote>{{ import.description|trans }}</blockquote>
-                        <p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{% trans %}Import contents{% endtrans %}</a></p>
+                        <p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{{ 'import.action.import_contents'|trans }}</a></p>
                     </li>
                 {% endfor %}
             </ul>
diff --git a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig
index 3365fc6af..401dbd33a 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
-{% block title %}{% trans %}Import > Pocket{% endtrans %}{% endblock %}
+
+{% block title %}{{ 'import.pocket.page_title'|trans }}{% endblock %}
 
 {% block content %}
 <div class="row">
@@ -7,27 +8,29 @@
         <div class="card-panel settings">
             {% if not has_consumer_key %}
                 <div class="card-panel red darken-1">
-                    {% trans %}Pocket import isn't configured.{% endtrans %}
+                    {{ 'import.pocket.config_missing.description'|trans }}
+
                     {% if is_granted('ROLE_SUPER_ADMIN') %}
-                        {% 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 %}
+                        {{ 'import.pocket.config_missing.admin_message'|trans({'%keyurls%': '<a href="' ~ path('craue_config_settings_modify') ~ '#set-import">', '%keyurle%':'</a>'})|raw }}
                     {% else %}
-                        {% trans %}Your server admin needs to define an API Key for Pocket.{% endtrans %}
+                        {{ 'import.pocket.config_missing.user_message'|trans }}
                     {% endif %}
                 </div>
             {% endif %}
 
             <blockquote>{{ import.description|trans }}</blockquote>
-            <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>
+            <p>{{ 'import.pocket.authorize_message'|trans }}</p>
+
             <form method="post" action="{{ path('import_pocket_auth') }}">
-            <div class="row">
-                <div class="input-field col s6 with-checkbox">
-                    <h6>{% trans %}Mark all as read ?{% endtrans %}</h6>
-                        {{ form_widget(form.read) }}
-                    <label for="form_read">{% trans %}Mark all imported entries as read{% endtrans %}</label>
+                <div class="row">
+                    <div class="input-field col s6 with-checkbox">
+                        <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6>
+                        {{ form_widget(form.mark_as_read) }}
+                        {{ form_label(form.mark_as_read) }}
+                    </div>
                 </div>
-            </div>
                 <button class="btn waves-effect waves-light" type="submit" name="action">
-                    {% trans %}Connect to Pocket and import data{% endtrans %}
+                    {{ 'import.pocket.connect_to_pocket'|trans }}
                 </button>
             </form>
         </div>
diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig
index a418ed1c5..13e24c8cf 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
-{% block title %}{% trans %}Import > Wallabag v1{% endtrans %}{% endblock %}
+
+{% block title %}{{ 'import.wallabag_v1.page_title'|trans }}{% endblock %}
 
 {% block content %}
 <div class="row">
@@ -7,7 +8,8 @@
         <div class="card-panel settings">
             <div class="row">
                 <blockquote>{{ import.description|trans }}</blockquote>
-                <p>{% trans %}Please select your wallabag export and click on the below button to upload and import it.{% endtrans %}</p>
+                <p>{{ 'import.wallabag_v1.how_to'|trans }}</p>
+
                 <div class="col s12">
                     {{ form_start(form, {'method': 'POST'}) }}
                         {{ form_errors(form) }}
@@ -15,7 +17,7 @@
                             <div class="file-field input-field col s12">
                                 {{ form_errors(form.file) }}
                                 <div class="btn">
-                                    <span>{% trans %}File{% endtrans %}</span>
+                                    <span>{{ form.file.vars.label|trans }}</span>
                                     {{ form_widget(form.file) }}
                                 </div>
                                 <div class="file-path-wrapper">
@@ -23,15 +25,15 @@
                                 </div>
                             </div>
                             <div class="input-field col s6 with-checkbox">
-                                <h6>{% trans %}Mark all as read ?{% endtrans %}</h6>
+                                <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6>
                                 {{ form_widget(form.mark_as_read) }}
-                                <label for="upload_import_file_mark_as_read">{% trans %}Mark all imported entries as read{% endtrans %}</label>
+                                {{ form_label(form.mark_as_read) }}
                             </div>
                         </div>
-                        <div class="hidden">{{ form_rest(form) }}</div>
-                        <button class="btn waves-effect waves-light" type="submit" name="action">
-                            {% trans %}Upload file{% endtrans %}
-                        </button>
+
+                        {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }}
+
+                        {{ form_rest(form) }}
                     </form>
                 </div>
             </div>
diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig
index 78fe67e46..c2905fc64 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 @@
 {% extends "WallabagImportBundle:WallabagV1:index.html.twig" %}
-{% block title %}{% trans %}Import > Wallabag v2{% endtrans %}{% endblock %}
+
+{% block title %}{{ 'import.wallabag_v2.page_title'|trans }}{% endblock %}
diff --git a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php
index 7f97b0f55..6c876b3b4 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
 
         $this->assertTrue($content->getTags()->contains($tag));
 
-        $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
-        $this->assertContains('Import summary', $alert[0]);
+        $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
+        $this->assertContains('Import summary', $body[0]);
     }
 
     public function testImportWallabagWithFileAndMarkAllAsRead()
@@ -99,7 +99,8 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
 
         $this->assertTrue($content2->isArchived());
 
-        $this->assertContains('Import summary', $client->getResponse()->getContent());
+        $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
+        $this->assertContains('Import summary', $body[0]);
     }
 
     public function testImportWallabagWithEmptyFile()
@@ -122,7 +123,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
 
         $crawler = $client->followRedirect();
 
-        $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
-        $this->assertContains('Import failed, please try again', $alert[0]);
+        $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
+        $this->assertContains('Import failed, please try again', $body[0]);
     }
 }
diff --git a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php
index 617c05177..58baa8360 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
 
         $crawler = $client->followRedirect();
 
-        $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
-        $this->assertContains('Import summary', $alert[0]);
+        $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
+        $this->assertContains('Import summary', $body[0]);
 
         $content = $client->getContainer()
             ->get('doctrine.orm.entity_manager')
@@ -87,7 +87,7 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
 
         $crawler = $client->followRedirect();
 
-        $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
-        $this->assertContains('Import failed, please try again', $alert[0]);
+        $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
+        $this->assertContains('Import failed, please try again', $body[0]);
     }
 }
diff --git a/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php
index 450cdc953..43b60ec3e 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
 
         $this->assertEquals('Pocket', $pocketImport->getName());
         $this->assertNotEmpty($pocketImport->getUrl());
-        $this->assertContains('This importer will import all your Pocket data.', $pocketImport->getDescription());
+        $this->assertEquals('import.pocket.description', $pocketImport->getDescription());
     }
 
     public function testOAuthRequest()
diff --git a/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php
index 8ab7e8301..496cf2d37 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
 
         $this->assertEquals('wallabag v1', $wallabagV1Import->getName());
         $this->assertNotEmpty($wallabagV1Import->getUrl());
-        $this->assertContains('This importer will import all your wallabag v1 articles.', $wallabagV1Import->getDescription());
+        $this->assertEquals('import.wallabag_v1.description', $wallabagV1Import->getDescription());
     }
 
     public function testImport()
diff --git a/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php
index 2b642d274..341b10762 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
 
         $this->assertEquals('wallabag v2', $wallabagV2Import->getName());
         $this->assertNotEmpty($wallabagV2Import->getUrl());
-        $this->assertContains('This importer will import all your wallabag v2 articles.', $wallabagV2Import->getDescription());
+        $this->assertEquals('import.wallabag_v2.description', $wallabagV2Import->getDescription());
     }
 
     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 4da6075f4..85f2ea9cc 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 @@
 # Two factor mail
-auth_code.mailer.subject: 'Wallabag authentication Code'
-auth_code.mailer.body.hello: "Hi %user%,"
-auth_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."
-auth_code.mailer.body.second_para: "Here is the code:"
-auth_code.mailer.body.support: "Please don't hesitate to contact us if you have any problems:"
-auth_code.mailer.body.signature: "The wallabag team"
+auth_code:
+    on: 'on'
+    mailer:
+        subject: 'Wallabag authentication Code'
+        body:
+            hello: "Hi %user%,"
+            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."
+            second_para: "Here is the code:"
+            support: "Please don't hesitate to contact us if you have any problems:"
+            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 b4448d3a4..30ab5dd9e 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 @@
 # Two factor mail
-auth_code.mailer.subject: "Code d'authentification wallabag"
-auth_code.mailer.body.hello: "Bonjour %user%,"
-auth_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."
-auth_code.mailer.body.second_para: "Voici le code à renseigner :"
-auth_code.mailer.body.support: "Si vous avez un problème de connexion, n'hésitez pas à contacter le support :"
-auth_code.mailer.body.signature: "L'équipe wallabag"
+auth_code:
+    on: 'sur'
+    mailer:
+        subject: "Code d'authentification wallabag"
+        body:
+            hello: "Bonjour %user%,"
+            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."
+            second_para: "Voici le code à renseigner :"
+            support: "Si vous avez un problème de connexion, n'hésitez pas à contacter le support :"
+            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 d1fcb0e03..706463553 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 @@
 # Two factor mail
-auth_code.mailer.subject: 'Wallabag Doğrulama Kodu'
-auth_code.mailer.body.hello: "Merhaba %user%,"
-auth_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."
-auth_code.mailer.body.second_para: "Bu işlem için doğrulama kodunuz:"
-auth_code.mailer.body.support: "Eğer herhangi bir soru/sorununuz varsa, bizimle iletişime geçmekten çekinmeyin:"
-auth_code.mailer.body.signature: "wallabag ekibi"
+auth_code:
+    on: 'on'
+    mailer:
+        subject: 'Wallabag Doğrulama Kodu'
+        body:
+            hello: "Merhaba %user%,"
+            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."
+            second_para: "Bu işlem için doğrulama kodunuz:"
+            support: "Eğer herhangi bir soru/sorununuz varsa, bizimle iletişime geçmekten çekinmeyin:"
+            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
similarity index 96%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Authentication/form.html.twig
rename to src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig
index fa0e3dc1b..acf69196b 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 @@
         </div>
     </div>
     <div class="card-action center">
-        <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Cancel{% endtrans %}</a>
+        <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>
         <button class="btn waves-effect waves-light" type="submit" name="send">
             {{ "scheb_two_factor.login"|trans }}
             <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
similarity index 100%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/ChangePassword/changePassword_content.html.twig
rename to 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
similarity index 100%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/checkEmail.html.twig
rename to 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
similarity index 84%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/confirmed.html.twig
rename to src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig
index c6d4d3d21..674eb217e 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 @@
         {% endif %}
     </div>
     <div class="card-action center">
-        <a href="{{ path('homepage') }}" class="waves-effect waves-light btn"><i class="material-icons left"></i> {% trans %}Go to your account{% endtrans %}</a>
+        <a href="{{ path('homepage') }}" class="waves-effect waves-light btn"><i class="material-icons left"></i> {{ 'security.register.go_to_account'|trans }}</a>
     </div>
 </div>
 {% 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
similarity index 97%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/register_content.html.twig
rename to src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig
index e92b515e3..7d2b45d4b 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 @@
         </div>
     </div>
     <div class="card-action center">
-        <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Login{% endtrans %}</a>
+        <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>
         <button class="btn waves-effect waves-light" type="submit" name="send">
             {{ 'registration.submit'|trans({}, 'FOSUserBundle') }}
             <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
similarity index 100%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/checkEmail.html.twig
rename to 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
similarity index 100%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/passwordAlreadyRequested.html.twig
rename to 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
similarity index 82%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/request_content.html.twig
rename to src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig
index e871d7beb..7a5ac8383 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 @@
 {% trans_default_domain 'FOSUserBundle' %}
+
 <form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="fos_user_resetting_request">
     <div class="card-content">
         <div class="row">
-        <p>{% trans %}Enter your email address below and we'll send you password reset instructions.{% endtrans %}</p>
+            <p>{{ 'security.resetting.description'|trans({}, "messages") }}</p>
+
             {% for flashMessage in app.session.flashbag.get('notice') %}
                 <span class="black-text"><p>{{ flashMessage }}</p></span>
             {% endfor %}
@@ -18,7 +20,9 @@
         </div>
     </div>
     <div class="card-action center">
-        <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Login{% endtrans %}</a>
+        <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn">
+            <i class="material-icons left"></i> {{ 'security.login.submit'|trans({}, "messages") }}
+        </a>
         <button class="btn waves-effect waves-light" type="submit" name="send">
             {{ 'resetting.request.submit'|trans }}
         </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
similarity index 100%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/reset_content.html.twig
rename to 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
similarity index 75%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/Security/login.html.twig
rename to src/Wallabag/UserBundle/Resources/views/Security/login.html.twig
index 6bf99bf88..982a33b28 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 @@
         <div class="row">
 
             <div class="input-field col s12">
-                <label for="username">{% trans %}Username{% endtrans %}</label>
+                <label for="username">{{ 'security.login.username'|trans }}</label>
                 <input type="text" id="username" name="_username" value="{{ last_username }}" />
             </div>
 
             <div class="input-field col s12">
-                <label for="password">{% trans %}Password{% endtrans %}</label>
+                <label for="password">{{ 'security.login.password'|trans }}</label>
                 <input type="password" id="password" name="_password" />
             </div>
 
             <div class="input-field col s12">
                 <input type="checkbox" id="remember_me" name="_remember_me" checked />
-                <label for="remember_me">{% trans %}Keep me logged in{% endtrans %}</label>
+                <label for="remember_me">{{ 'security.login.keep_logged_in'|trans }}</label>
             </div>
 
         </div>
     </div>
     <div class="card-action center">
         <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
-        <a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Register{% endtrans %}</a>
+        <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>
         <button class="btn waves-effect waves-light" type="submit" name="send">
-            {% trans %}Login{% endtrans %}
+            {{ 'security.login.submit'|trans }}
             <i class="mdi-content-send right"></i>
         </button>
     </div>
     <div class="center">
-        <a href="{{ path('fos_user_resetting_request') }}">{% trans %}Forgot your password?{% endtrans %}</a>
+        <a href="{{ path('fos_user_resetting_request') }}">{{ 'security.login.forgot_password'|trans }}</a>
     </div>
 </form>
 {% 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 69d231600..c44fcfb77 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 @@
                         <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>
                         <td style="padding: 20px; padding-left: 0;" valign="top" id="cell_desc">
                             <h1>wallabag</h1>
-                            <h5>{% trans %}on{% endtrans %} {{ wallabag_url }}</h5>
+                            <h5>{{ "auth_code.on"|trans({}, 'wallabag_user') }} {{ wallabag_url }}</h5>
                         </td>
                     </tr>
                     <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
similarity index 88%
rename from src/Wallabag/UserBundle/Resources/views/themes/material/layout.html.twig
rename to src/Wallabag/UserBundle/Resources/views/layout.html.twig
index cbdc1da20..1d0189ca7 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 @@
 {% extends "WallabagCoreBundle::layout.html.twig" %}
 
-{% block title %}{% trans %}Welcome to wallabag!{% endtrans %}{% endblock %}
+{% block title %}{{ 'security.login.page_title'|trans }}{% endblock %}
 
 {% block body_class %}login{% endblock %}
 
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 5bb910818..000000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig
+++ /dev/null
@@ -1,32 +0,0 @@
-{% extends "WallabagUserBundle::layout.html.twig" %}
-
-{% block fos_user_content %}
-<form class="form" action="" method="post">
-    <fieldset class="w500p center">
-        {% for flashMessage in app.session.flashbag.get("two_factor") %}
-        <p class="error">{{ flashMessage|trans }}</p>
-        {% endfor %}
-
-        <div class="row">
-            <label for="_auth_code">{{ "scheb_two_factor.auth_code"|trans }}</label>
-            <input id="_auth_code" type="text" autocomplete="off" name="_auth_code" />
-        </div>
-
-        {% if useTrustedOption %}
-        <div class="row">
-            <input id="_trusted" type="checkbox" name="_trusted" />
-            <label for="_trusted">{{ "scheb_two_factor.trusted"|trans }}</label>
-        </div>
-        {% endif %}
-
-        <div class="row mts txtcenter">
-            <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Cancel{% endtrans %}</a>
-            <button type="submit" name="send">
-                {{ "scheb_two_factor.login"|trans }}
-                <i class="mdi-content-send right"></i>
-            </button>
-        </div>
-    </fieldset>
-
-</form>
-{% 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 2713bf452..000000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig
+++ /dev/null
@@ -1,20 +0,0 @@
-{% extends "WallabagCoreBundle::layout.html.twig" %}
-
-{% block title %}{% trans %}create an account{% endtrans %}{% endblock %}
-
-{% block body_class %}login{% endblock %}
-
-{% block menu %}{% endblock %}
-{% block messages %}{% endblock %}
-
-{% block content %}
-    {{ form_start(form) }}
-        <fieldset class="w500p center">
-            <h2 class="mbs txtcenter">{% trans %}create an account{% endtrans %}</h2>
-        {% include "FOSUserBundle:Registration:register_content.html.twig" %}
-        </fieldset>
-    </form>
-{% endblock %}
-
-{% block footer %}
-{% 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 41f940065..000000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig
+++ /dev/null
@@ -1,37 +0,0 @@
-{% trans_default_domain 'FOSUserBundle' %}
-
-{{ form_widget(form._token) }}
-
-{% for flashMessage in app.session.flashbag.get('notice') %}
-    <span><p>{{ flashMessage }}</p></span>
-{% endfor %}
-
-<div class="row">
-    {{ form_errors(form.email) }}
-    {{ form_label(form.email) }}
-    {{ form_widget(form.email) }}
-</div>
-
-<div class="row">
-    {{ form_errors(form.username) }}
-    {{ form_label(form.username) }}
-    {{ form_widget(form.username) }}
-</div>
-
-<div class="row">
-    {{ form_errors(form.plainPassword.first) }}
-    {{ form_label(form.plainPassword.first) }}
-    {{ form_widget(form.plainPassword.first) }}
-</div>
-
-<div class="row">
-    {{ form_errors(form.plainPassword.second) }}
-    {{ form_label(form.plainPassword.second) }}
-    {{ form_widget(form.plainPassword.second) }}
-</div>
-
-
-<div class="row mts txtcenter">
-    <button type="submit">{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}</button>
-    <a href="{{ path('fos_user_security_login') }}" class="button">{% trans %}Login{% endtrans %}</a>
-</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 056d65b50..000000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "WallabagCoreBundle::layout.html.twig" %}
-
-{% block title %}{% trans %}Forgot password{% endtrans %}{% endblock %}
-
-{% block body_class %}login{% endblock %}
-
-{% block menu %}{% endblock %}
-
-{% block content %}
-    <form>
-        <fieldset class="w500p center">
-            <h2 class="mbs txtcenter">{% trans %}Forgot password{% endtrans %}</h2>
-
-            <p>{{ 'An email has been sent to %email%. It contains a link you must click to reset your password.'|trans({'%email%': email}) }}</p>
-        </fieldset>
-    </form>
-{% 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 10094e836..000000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig
+++ /dev/null
@@ -1,20 +0,0 @@
-{% extends "WallabagCoreBundle::layout.html.twig" %}
-
-{% block title %}{% trans %}Forgot password{% endtrans %}{% endblock %}
-
-{% block body_class %}login{% endblock %}
-
-{% block menu %}{% endblock %}
-{% block messages %}{% endblock %}
-
-{% block content %}
-        <form action="{{ path('fos_user_resetting_send_email') }}" method="post" name="forgotPasswordform">
-            <fieldset class="w500p center">
-                <h2 class="mbs txtcenter">{% trans %}Forgot password{% endtrans %}</h2>
-                {% include "FOSUserBundle:Resetting:request_content.html.twig" %}
-            </fieldset>
-        </form>
-{% endblock %}
-
-{% block footer %}
-{% 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 1f8da8d7a..000000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig
+++ /dev/null
@@ -1,17 +0,0 @@
-{% trans_default_domain 'FOSUserBundle' %}
-
-{% trans %}Enter your email address below and we'll send you password reset instructions.{% endtrans %}
-
-{% if invalid_username is defined %}
-    <p>{{ 'resetting.request.invalid_username'|trans({'%username%': invalid_username}) }}</p>
-{% endif %}
-
-<div class="row">
-    <label for="username">{{ 'resetting.request.username'|trans }}</label>
-    <input type="text" id="username" name="username" required="required" />
-</div>
-
-<div class="row mts txtcenter">
-    <button type="submit">{{ 'resetting.request.submit'|trans }}</button>
-    <a href="{{ path('fos_user_security_login') }}" class="button">{% trans %}Login{% endtrans %}</a>
-</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 d52c36629..000000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig
+++ /dev/null
@@ -1,33 +0,0 @@
-{% extends "FOSUserBundle::layout.html.twig" %}
-
-{% block fos_user_content %}
-        <form action="{{ path('fos_user_security_check') }}" method="post" name="loginform">
-            <fieldset class="w500p center">
-                <h2 class="mbs txtcenter">{% trans %}Login to wallabag{% endtrans %}</h2>
-                {% if error %}
-                    <div>{{ error.message }}</div>
-                {% endif %}
-
-                {% for flashMessage in app.session.flashbag.get('notice') %}
-                    <p>{{ flashMessage }}</p>
-                {% endfor %}
-
-                <div class="row">
-                    <label class="col w150p" for="username">{% trans %}Username{% endtrans %}</label>
-                    <input type="text" id="username" name="_username" value="{{ last_username }}" />
-                </div>
-
-                <div class="row">
-                    <label class="col w150p" for="password">{% trans %}Password{% endtrans %}</label>
-                    <input type="password" id="password" name="_password" />
-                </div>
-
-                <div class="row mts txtcenter">
-                    <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
-                    <button type="submit">Login</button>
-                    <a href="{{ path('fos_user_registration_register') }}" class="button">{% trans %}Register{% endtrans %}</a>
-                    <a href="{{ path('fos_user_resetting_request') }}" class="small">Forgot your password?</a>
-                </div>
-            </fieldset>
-        </form>
-{% 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 60b321bf3..000000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends "WallabagCoreBundle::layout.html.twig" %}
-
-{% block title %}{% trans %}Welcome to wallabag!{% endtrans %}{% endblock %}
-
-{% block body_class %}login{% endblock %}
-
-{% block menu %}{% endblock %}
-{% block messages %}{% endblock %}
-
-{% block content %}
-    {% block fos_user_content %}
-    {% endblock fos_user_content %}
-{% endblock %}
-
-{% block footer %}
-{% endblock %}