diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb
index ceba45f6..0f768017 100644
--- a/app/controllers/submissions_controller.rb
+++ b/app/controllers/submissions_controller.rb
@@ -57,13 +57,13 @@ class SubmissionsController < ApplicationController
       if params[:permanently].present?
         @submission.destroy!
 
-        'Submission has been removed'
+        t('submission_has_been_removed')
       else
         @submission.update!(archived_at: Time.current)
 
         SendSubmissionArchivedWebhookRequestJob.perform_async('submission_id' => @submission.id)
 
-        'Submission has been archived'
+        t('submission_has_been_archived')
       end
 
     redirect_back(fallback_location: template_path(@submission.template), notice:)
diff --git a/app/controllers/templates_restore_controller.rb b/app/controllers/templates_restore_controller.rb
index 2d1f80cf..312e4ae5 100644
--- a/app/controllers/templates_restore_controller.rb
+++ b/app/controllers/templates_restore_controller.rb
@@ -6,6 +6,6 @@ class TemplatesRestoreController < ApplicationController
   def create
     @template.update!(archived_at: nil)
 
-    redirect_to template_path(@template), notice: 'Template has been unarchived'
+    redirect_to template_path(@template), notice: t('template_has_been_unarchived')
   end
 end
diff --git a/app/javascript/images/preview.png b/app/javascript/images/preview.png
index 81acd3a9..22460a63 100644
Binary files a/app/javascript/images/preview.png and b/app/javascript/images/preview.png differ
diff --git a/app/javascript/images/preview.png.old b/app/javascript/images/preview.png.old
new file mode 100644
index 00000000..81acd3a9
Binary files /dev/null and b/app/javascript/images/preview.png.old differ
diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue
index c84c7eb1..934cd918 100644
--- a/app/javascript/submission_form/form.vue
+++ b/app/javascript/submission_form/form.vue
@@ -225,6 +225,7 @@
                     
                   
                 
+                
               
             
           
@@ -915,7 +916,7 @@ export default {
   },
   methods: {
     t (key) {
-      return this.i18n[key] || i18n[this.language?.toLowerCase()]?.[key] || i18n[this.browserLanguage]?.[key] || i18n.en[key] || key
+      return this.i18n[key] || i18n[this.language?.toLowerCase()]?.[key] || i18n[this.browserLanguage]?.[key] || i18n.pt[key] || key
     },
     onOrientationChange (event) {
       this.orientation = event.target.type
@@ -958,6 +959,9 @@ export default {
         return `${this.t('option')} ${index + 1}`
       }
     },
+    uncheckAll(currentField) {
+      return currentField.options.map( ({value}) => value = null)
+    },
     maybeTrackEmailClick () {
       const { queryParams } = this
 
diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue
index 812b233b..67ea0e24 100644
--- a/app/javascript/template_builder/builder.vue
+++ b/app/javascript/template_builder/builder.vue
@@ -131,7 +131,7 @@
                     class="flex items-center justify-center space-x-2"
                   >
                     
-                    Save and Preview
+                    {{ t('save_and_preview') }}
                   
                 
               
@@ -407,7 +407,7 @@ import MobileFields from './mobile_fields'
 import { IconPlus, IconUsersPlus, IconDeviceFloppy, IconChevronDown, IconEye, IconWritingSign, IconInnerShadowTop, IconInfoCircle } from '@tabler/icons-vue'
 import { v4 } from 'uuid'
 import { ref, computed } from 'vue'
-import { en as i18nEn } from './i18n'
+import { en as i18nEn, ptPT as i18nPt } from './i18n'
 
 export default {
   name: 'TemplateBuilder',
@@ -771,7 +771,7 @@ export default {
   },
   methods: {
     t (key) {
-      return this.i18n[key] || i18nEn[key] || key
+      return this.i18n[key] || i18nPt[key] || key
     },
     removePendingFields () {
       this.template.fields = this.template.fields.filter((f) => {
diff --git a/app/javascript/template_builder/i18n.js b/app/javascript/template_builder/i18n.js
index 33bfc4b5..102716ff 100644
--- a/app/javascript/template_builder/i18n.js
+++ b/app/javascript/template_builder/i18n.js
@@ -117,7 +117,131 @@ const en = {
   custom: 'Custom',
   numbers_only: 'Numbers only',
   letters_only: 'Letters only',
-  regexp_validation: 'Regexp validation'
+  regexp_validation: 'Regexp validation',
+  save_and_preview: 'Save and Preview'
 }
 
-export { en }
+const ptPT = {
+  editable: 'Editável',
+  search_field: 'Campo de pesquisa',
+  field_not_found: 'Campo não encontrado',
+  clear: 'Limpar',
+  align: 'Alinhar',
+  add_all_required_fields_to_continue: 'Adicione todos os campos obrigatórios para continuar',
+  uploaded_pdf_contains_form_fields_keep_or_remove_them: 'O PDF carregado contém campos de formulário. Manter ou remover?',
+  keep: 'Manter',
+  left: 'Esquerda',
+  heading: 'Cabeçalho',
+  validation: 'Validação',
+  add_blank_page: 'Adicionar página em branco',
+  right: 'Direita',
+  center: 'Centro',
+  description: 'Descrição',
+  display_title: 'Mostrar título',
+  with_logo: 'Com logotipo',
+  unchecked: 'Não marcado',
+  price: 'Preço',
+  type_value: 'Digite o valor',
+  equal: 'Igual',
+  not_equal: 'Diferente',
+  contains: 'Contém',
+  does_not_contain: 'Não contém',
+  not_empty: 'Não está vazio',
+  empty: 'Vazio',
+  select_field_: 'Selecione o campo...',
+  select_value_: 'Selecione o valor...',
+  remove_condition: 'Remover condição',
+  add_condition: 'Adicionar condição',
+  are_you_sure: 'Tem a certeza?',
+  sign_yourself: 'Assine você mesmo',
+  set_signing_date: 'Definir data de assinatura',
+  signing_date: 'Data de assinatura',
+  send: 'Enviar',
+  remove: 'Remover',
+  edit: 'Editar',
+  settings: 'Definições',
+  up: 'Cima',
+  down: 'Baixo',
+  checked: 'Marcado',
+  save: 'Guardar',
+  cancel: 'Cancelar',
+  any: 'Qualquer',
+  drawn: 'Desenhado',
+  formula: 'Fórmula',
+  typed: 'Digitado',
+  draw_field_on_the_document: 'Desenhar campo {field} no documento',
+  click_to_upload: 'Clique para carregar',
+  or_drag_and_drop_files: 'ou arraste e solte os ficheiros',
+  uploading: 'A carregar',
+  processing_: 'A processar...',
+  add_pdf_documents_or_images: 'Adicionar documentos PDF ou imagens',
+  add_documents_or_images: 'Adicionar documentos ou imagens',
+  required: 'Obrigatório',
+  default_value: 'Valor padrão',
+  format: 'Formato',
+  read_only: 'Apenas leitura',
+  page: 'Página',
+  draw_new_area: 'Desenhar nova área',
+  copy_to_all_pages: 'Copiar para todas as páginas',
+  add_option: 'Adicionar opção',
+  option: 'Opção',
+  condition: 'Condição',
+  first_party: 'Primeira Parte',
+  second_party: 'Segunda Parte',
+  third_party: 'Terceira Parte',
+  fourth_party: 'Quarta Parte',
+  fifth_party: 'Quinta Parte',
+  sixth_party: 'Sexta Parte',
+  seventh_party: 'Sétima Parte',
+  eighth_party: 'Oitava Parte',
+  ninth_party: 'Nona Parte',
+  tenth_party: 'Décima Parte',
+  eleventh_party: 'Décima Primeira Parte',
+  twelfth_party: 'Décima Segunda Parte',
+  thirteenth_party: 'Décima Terceira Parte',
+  fourteenth_party: 'Décima Quarta Parte',
+  fifteenth_party: 'Décima Quinta Parte',
+  sixteenth_party: 'Décima Sexta Parte',
+  seventeenth_party: 'Décima Sétima Parte',
+  eighteenth_party: 'Décima Oitava Parte',
+  nineteenth_party: 'Décima Nona Parte',
+  twentieth_party: 'Vigésima Parte',
+  draw: 'Desenhar',
+  add: 'Adicionar',
+  or_add_field_without_drawing: 'Ou adicionar campo sem desenhar',
+  text: 'Texto',
+  number: 'Número',
+  signature: 'Assinatura',
+  initials: 'Iniciais',
+  date: 'Data',
+  image: 'Imagem',
+  file: 'Ficheiro',
+  select: 'Selecionar',
+  checkbox: 'Caixa de seleção',
+  multiple: 'Múltiplo',
+  radio: 'Rádio',
+  cells: 'Células',
+  stamp: 'Carimbo',
+  payment: 'Pagamento',
+  phone: 'Telefone',
+  field: 'Campo',
+  group: 'Grupo',
+  draw_a_text_field_on_the_page_with_a_mouse: 'Desenhe um campo de texto na página com o rato',
+  draw_field: 'Desenhar Campo {field}',
+  replace: 'Substituir',
+  uploading_: 'A carregar...',
+  add_document: 'Adicionar Documento',
+  none: 'Nenhum',
+  ssn: 'NIF',
+  ein: 'NIPC',
+  email: 'Email',
+  url: 'URL',
+  zip: 'Código Postal',
+  custom: 'Personalizado',
+  numbers_only: 'Apenas números',
+  letters_only: 'Apenas letras',
+  regexp_validation: 'Validação por Regexp',
+  save_and_preview: 'Gravar e Prever'
+}
+
+export { en, ptPT }
diff --git a/app/models/submitter.rb b/app/models/submitter.rb
index 0af9d211..bc5a0360 100644
--- a/app/models/submitter.rb
+++ b/app/models/submitter.rb
@@ -61,15 +61,15 @@ class Submitter < ApplicationRecord
 
   def status
     if declined_at?
-      'declined'
+      'declinado'
     elsif completed_at?
-      'completed'
+      'completo'
     elsif opened_at?
-      'opened'
+      'aberto'
     elsif sent_at?
-      'sent'
+      'enviado'
     else
-      'awaiting'
+      'espera'
     end
   end
 
diff --git a/app/views/api_settings/index.html.erb b/app/views/api_settings/index.html.erb
index 0b9e1cfa..2e902295 100644
--- a/app/views/api_settings/index.html.erb
+++ b/app/views/api_settings/index.html.erb
@@ -48,7 +48,7 @@
          ]
        }'<% end.to_str %>
             
-              <%= render 'shared/clipboard_copy', icon: 'copy', text:, class: 'btn btn-ghost text-white', icon_class: 'w-6 h-6 text-white', copy_title: 'Copy', copied_title: 'Copied' %>
+              <%= render 'shared/clipboard_copy', icon: 'copy', text:, class: 'btn btn-ghost text-white', icon_class: 'w-6 h-6 text-white', copy_title: t('general_copy'), copied_title: t('general_copied') %>
             
             
<%= text %>
           
@@ -74,7 +74,7 @@
            "emails":  "<%= current_user.email.sub('@', '+test@') %>, <%= current_user.email.sub('@', '+test2@') %>"
        }'<% end.to_str %>
             
-              <%= render 'shared/clipboard_copy', icon: 'copy', text:, class: 'btn btn-ghost text-white', icon_class: 'w-6 h-6 text-white', copy_title: 'Copy', copied_title: 'Copied' %>
+              <%= render 'shared/clipboard_copy', icon: 'copy', text:, class: 'btn btn-ghost text-white', icon_class: 'w-6 h-6 text-white', copy_title: t('general_copy'), copied_title: t('general_copied') %>
             
             <%= text %>
           
@@ -96,7 +96,7 @@
             <% text = capture do %>curl '<%= api_template_url(current_account.templates&.last || 1) %>' \
        --header 'X-Auth-Token: <%= current_user.access_token.token %>'<% end.to_str %>
             
-              <%= render 'shared/clipboard_copy', icon: 'copy', text:, class: 'btn btn-ghost text-white', icon_class: 'w-6 h-6 text-white', copy_title: 'Copy', copied_title: 'Copied' %>
+              <%= render 'shared/clipboard_copy', icon: 'copy', text:, class: 'btn btn-ghost text-white', icon_class: 'w-6 h-6 text-white', copy_title: t('general_copy'), copied_title: t('general_copied') %>
             
             <%= text %>
           
diff --git a/app/views/dashboard/_toggle_view.html.erb b/app/views/dashboard/_toggle_view.html.erb
index 53810f92..9a35edcf 100644
--- a/app/views/dashboard/_toggle_view.html.erb
+++ b/app/views/dashboard/_toggle_view.html.erb
@@ -4,7 +4,7 @@
       <%= svg_icon('layout_grid', class: 'w-6 h-6 stroke-2') %>
     
   
-  
+  
     
diff --git a/app/views/pages/landing.html.erb b/app/views/pages/landing.html.erb
index 20043af8..6f6b6443 100644
--- a/app/views/pages/landing.html.erb
+++ b/app/views/pages/landing.html.erb
@@ -1,78 +1,16 @@
-
+
   
     
       
         
           <%= render 'shared/logo', width: '100', height: '100' %>
-          
-            DocuSeal
+          
+            <%= Docuseal.product_name %>
           
-          <% if Docuseal.version.present? %>
-            
-              v<%= Docuseal.version %>
-            
-          <% end %>
         
-        
-          A self-hosted and open-source web platform that provides secure and efficient digital document signing and processing.
-        
        
      
     
-      
-        
-          
-            
-              <%= svg_icon('brand_docker', class: 'w-10 h-10 text-base-100 stroke-1') %>
-            
-            
Easy to Start
-            
-              Run on your own host using Docker container, or deploy on  your favorite managed PaaS with a single click.
-            
-          
-        
-      
-      
-        
-          
-            
-              <%= svg_icon('devices', class: 'w-10 h-10 text-base-100') %>
-            
-            
Mobile Optimized
-            
-              Review and sign digital documents online from any device.
-              Docuseal document forms are optimized for screens of all sizes.
-            
-          
-        
-      
-      
-        
-          
-            
-              <%= svg_icon('shield_check', class: 'w-10 h-10 text-base-100') %>
-            
-            
Secure
-            
-              Host it on your hardware under a VPN to ensure that important documents can be accesses only within your organization.
-            
-          
-        
-      
-      
-        
-          
-            
-              <%= svg_icon('brand_github', class: 'w-10 h-10 text-base-100') %>
-            
-            
Open Source
-            
-              Source code is available under github.com/docusealco.
-              Open-source contributors are always ready to help!
-            
-          
-        
-      
 
      
    
 
diff --git a/app/views/shared/_clipboard_copy.html.erb b/app/views/shared/_clipboard_copy.html.erb
index 1c9fdc25..fbc6128f 100644
--- a/app/views/shared/_clipboard_copy.html.erb
+++ b/app/views/shared/_clipboard_copy.html.erb
@@ -4,7 +4,7 @@
     
       <%= svg_icon(local_assigns[:icon] || 'link', class: local_assigns[:icon_class] || 'w-6 h-6 text-white') %>
       
-        <%= local_assigns[:copy_title] || 'Copy' %>
+        <%= local_assigns[:copy_title] || t('general_copy') %>
       
       <% if local_assigns[:copy_title_md] %>
         
@@ -15,7 +15,7 @@
     
       <%= svg_icon(local_assigns[:copied_icon] || 'clipboard_copy', class: local_assigns[:icon_class] || 'w-6 h-6 text-white') %>
       
-        <%= local_assigns[:copied_title] || 'Copied' %>
+        <%= local_assigns[:copied_title] || t('general_copied') %>
       
       <% if local_assigns[:copied_title_md] %>
         
diff --git a/app/views/shared/_html_modal.html.erb b/app/views/shared/_html_modal.html.erb
index 1c104043..a966b195 100644
--- a/app/views/shared/_html_modal.html.erb
+++ b/app/views/shared/_html_modal.html.erb
@@ -1,5 +1,5 @@
 <% uuid = SecureRandom.uuid %>
-
+
 
 
   
diff --git a/app/views/shared/_navbar.html.erb b/app/views/shared/_navbar.html.erb
index 7434b175..00200b9c 100644
--- a/app/views/shared/_navbar.html.erb
+++ b/app/views/shared/_navbar.html.erb
@@ -1,27 +1,18 @@
-
+
   
   <% if signed_in? %>
     
-      <% if Docuseal.demo? %>
-        
-          <%= t('sign_up') %>
-        
-        
-          <%= render 'shared/github_button' %>
-        
-      <% else %>
+
         
           <%= render 'shared/navbar_buttons' %>
-          <%= link_to 'Settings', settings_profile_index_path, class: 'hidden md:inline-flex font-medium text-lg' %>
+          <% if current_user.role == 'admin' %>
+            <%= link_to t('settings'), settings_profile_index_path, class: 'hidden md:inline-flex font-medium text-lg' %>
+          <% end %>
         
-      <% end %>
       
         
   <% end %>
 
diff --git a/app/views/shared/_navbar_buttons.html.erb b/app/views/shared/_navbar_buttons.html.erb
index 4c81abd7..82aaca0c 100644
--- a/app/views/shared/_navbar_buttons.html.erb
+++ b/app/views/shared/_navbar_buttons.html.erb
@@ -1,6 +1,3 @@
-<%= link_to Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premise" }.to_query}", class: 'hidden md:inline-flex btn btn-warning btn-sm', data: { prefetch: false } do %>
-  Upgrade
-<% end %>
 <% if signed_in? && current_user != true_user %>
   
   <%= render 'shared/test_alert' %>
diff --git a/app/views/shared/_settings_nav.html.erb b/app/views/shared/_settings_nav.html.erb
index 2995cf5c..077d1b79 100644
--- a/app/views/shared/_settings_nav.html.erb
+++ b/app/views/shared/_settings_nav.html.erb
@@ -2,7 +2,7 @@
   
      
   
-    <%= f.button button_title(title: 'Add Recipients'), class: 'base-button' %>
+    <%= f.button button_title(title: t('general_add')+' '+t('recipients')), class: 'base-button' %>
   
 <% end %>
diff --git a/app/views/submissions/_send_email.html.erb b/app/views/submissions/_send_email.html.erb
index 04f352fa..9b2f486e 100644
--- a/app/views/submissions/_send_email.html.erb
+++ b/app/views/submissions/_send_email.html.erb
@@ -3,13 +3,13 @@
   
     <%= f.label :send_email, for: uuid = SecureRandom.uuid, class: 'flex items-center cursor-pointer' do %>
       <%= f.check_box :send_email, id: uuid, class: 'base-checkbox', disabled: !can_send_emails, checked: can_send_emails %>
-      
Send emails
+      
<%= t('submissions_send_emails') %>
     <% end %>
     
       <% if can_send_emails %>
         
       <% end %>
       <%= render 'email_stats' %>
diff --git a/app/views/submissions/_submitters_order.html.erb b/app/views/submissions/_submitters_order.html.erb
index 3cc6353a..a762e3b5 100644
--- a/app/views/submissions/_submitters_order.html.erb
+++ b/app/views/submissions/_submitters_order.html.erb
@@ -2,8 +2,8 @@
   
       <% elsif @submission.submitters.to_a.size == 1 && !@submission.expired? && !@submission.submitters.to_a.first.declined_at? %>
-        <%= render 'shared/clipboard_copy', text: submit_form_url(slug: @submission.submitters.to_a.first.slug), class: 'base-button', icon_class: 'w-6 h-6 text-white', copy_title: 'Copy Share Link', copied_title: 'Copied to Clipboard' %>
+        <%= render 'shared/clipboard_copy', text: submit_form_url(slug: @submission.submitters.to_a.first.slug), class: 'base-button', icon_class: 'w-6 h-6 text-white', copy_title: t('copy_share_link'), copied_title: t('copied_to_clipboard') %>
       <% end %>
     
 
   
@@ -146,7 +146,7 @@
                 <% if submitter&.declined_at? %>
                   Declined on <%= l(submitter.declined_at.in_time_zone(@submission.account.timezone), format: :short, locale: @submission.account.locale) %>
                 <% else %>
-                  <%= submitter&.completed_at? ? l(submitter.completed_at.in_time_zone(@submission.account.timezone), format: :long, locale: @submission.account.locale) : 'Not completed yet' %>
+                  <%= submitter&.completed_at? ? l(submitter.completed_at.in_time_zone(@submission.account.timezone), format: :long, locale: @submission.account.locale) : t('submissions_not_completed_yet') %>
                 <% end %>
               
             
@@ -160,7 +160,7 @@
             <% end %>
             <% if signed_in? && submitter && submitter.email && !submitter.completed_at && !@submission.archived_at? && can?(:update, submitter) && Accounts.can_send_emails?(current_account) && !@submission.expired? && !submitter.declined_at? %>
               
-                <%= button_to button_title(title: submitter.sent_at? ? 'Re-send Email' : 'Send Email', disabled_with: 'Sending'), submitter_send_email_index_path(submitter_slug: submitter.slug), class: 'btn btn-sm btn-primary w-full' %>
+                <%= button_to button_title(title: submitter.sent_at? ? 'Re-send Email' : t('submissions_send_email'), disabled_with: 'Sending'), submitter_send_email_index_path(submitter_slug: submitter.slug), class: 'btn btn-sm btn-primary w-full' %>
               
             <% end %>
             <% if signed_in? && submitter && submitter.phone && !submitter.completed_at && !@submission.archived_at? && can?(:update, submitter) && !@submission.expired? && !submitter.declined_at? %>
@@ -169,7 +169,7 @@
             <% if signed_in? && submitter && !submitter.completed_at? && !@submission.archived_at? && can?(:create, submitter) && !@submission.expired? && !submitter.declined_at? %>
               
             <% end %>
diff --git a/app/views/submissions_archived/index.html.erb b/app/views/submissions_archived/index.html.erb
index aa8494f3..8e23742e 100644
--- a/app/views/submissions_archived/index.html.erb
+++ b/app/views/submissions_archived/index.html.erb
@@ -6,7 +6,7 @@
 
 
 
   
-    
Submissions Archived
+    <%= I18n.t('submissions') %> <%= I18n.t('general_archive') %>
   
   <% if params[:q].present? || @pagy.pages > 1 %>
     <%= render 'shared/search_input', placeholder: 'Search...' %>
diff --git a/app/views/submissions_dashboard/index.html.erb b/app/views/submissions_dashboard/index.html.erb
index 78ee25e3..c97eba9c 100644
--- a/app/views/submissions_dashboard/index.html.erb
+++ b/app/views/submissions_dashboard/index.html.erb
@@ -5,7 +5,9 @@
     
       <%= render 'dashboard/toggle_view', selected: 'submissions' %>
     
-    
Submissions
+    
+      <%= I18n.t('submissions') %>
+    
    
   
     <% if params[:q].present? || @pagy.pages > 1 %>
@@ -17,7 +19,7 @@
       
       <%= link_to new_template_path, class: 'white-button !border gap-2', data: { turbo_frame: :modal } do %>
         <%= svg_icon('plus', class: 'w-6 h-6 stroke-2') %>
-        Create
+        <%= I18n.t('general_create') %>
       <% end %>
     <% end %>
   
@@ -25,7 +27,7 @@
 <% view_archived_html = capture do %>
   <% if current_account.submissions.where.not(archived_at: nil).exists? %>
     
   <% end %>
 <% end %>
diff --git a/app/views/submit_form/_banner.html.erb b/app/views/submit_form/_banner.html.erb
index cf07a792..4fac543d 100644
--- a/app/views/submit_form/_banner.html.erb
+++ b/app/views/submit_form/_banner.html.erb
@@ -1,3 +1,3 @@
-
+
   <%= render 'submit_form/docuseal_logo' %>
 
diff --git a/app/views/submit_form/_docuseal_logo.html.erb b/app/views/submit_form/_docuseal_logo.html.erb
index 645f7fc5..8747c7fe 100644
--- a/app/views/submit_form/_docuseal_logo.html.erb
+++ b/app/views/submit_form/_docuseal_logo.html.erb
@@ -1,4 +1,4 @@
-
-  <%= render 'shared/logo', class: 'w-9 h-9 md:w-12 md:h-12' %>
-  <%= Docuseal.product_name %>
+
+  <%= render 'shared/logo', class: 'w-9 h-9 md:w-12 md:h-12 my-10' %>
+  <%# Docuseal.product_name %>
 
diff --git a/app/views/submit_form/show.html.erb b/app/views/submit_form/show.html.erb
index 325d93c5..662d96fb 100644
--- a/app/views/submit_form/show.html.erb
+++ b/app/views/submit_form/show.html.erb
@@ -1,4 +1,4 @@
-<% content_for(:html_title, "#{@submitter.submission.template.name} | DocuSeal") %>
+<% content_for(:html_title, "#{@submitter.submission.template.name} | #{Docuseal.product_name}") %>
 <% content_for(:html_description, "#{@submitter.account.name} has invited you to fill and sign documents online effortlessly with a secure, fast, and user-friendly digital document signing solution.") %>
 <% fields_index = Templates.build_field_areas_index(@submitter.submission.template_fields || @submitter.submission.template.fields) %>
 <% values = @submitter.submission.submitters.reduce({}) { |acc, sub| acc.merge(sub.values) } %>
@@ -6,7 +6,7 @@
 <% page_blob_struct = Struct.new(:url, :metadata, keyword_init: true) %>
 
   
         <% end %>
         
-          View
+          <%= I18n.t('general_view') %>
         
         <% if !submission.archived_at? && !template.archived_at? %>
-          
-            <%= button_to button_title(title: nil, disabled_with: 'Arch', icon: svg_icon('archive', class: 'w-6 h-6')), submission_path(submission), class: 'btn btn-outline btn-sm w-full md:w-fit', form: { class: 'flex' }, title: 'Archive', method: :delete, onclick: 'event.stopPropagation()' %>
+          
+            <%= button_to button_title(title: nil, disabled_with: 'Arch', icon: svg_icon('archive', class: 'w-6 h-6')), submission_path(submission), class: 'btn btn-outline btn-sm w-full md:w-fit', form: { class: 'flex' }, title: I18n.t('general_archive'), method: :delete, onclick: 'event.stopPropagation()' %>
           
         <% end %>
         <% if local_assigns[:archived] && can?(:destroy, submission) %>
           
-            <%= button_to button_title(title: nil, disabled_with: 'Rem', icon: svg_icon('trash', class: 'w-6 h-6')), submission_path(submission, permanently: true), class: 'btn btn-outline btn-sm w-full md:w-fit', form: { class: 'flex' }, title: 'Remove', method: :delete, data: { turbo_confirm: 'Submission deletion is irreversible and will permanently remove all associated signed documents with it. Are you sure?' }, onclick: 'event.stopPropagation()' %>
+            <%= button_to button_title(title: nil, disabled_with: 'Rem', icon: svg_icon('trash', class: 'w-6 h-6')), submission_path(submission, permanently: true), class: 'btn btn-outline btn-sm w-full md:w-fit', form: { class: 'flex' }, title: I18n.t('general_remove'), method: :delete, data: { turbo_confirm: 'Submission deletion is irreversible and will permanently remove all associated signed documents with it. Are you sure?' }, onclick: 'event.stopPropagation()' %>
           
         <% end %>
        
diff --git a/app/views/templates/_title.html.erb b/app/views/templates/_title.html.erb
index 705b8926..724aeebf 100644
--- a/app/views/templates/_title.html.erb
+++ b/app/views/templates/_title.html.erb
@@ -52,13 +52,13 @@
   
 
   
     <% if !template.archived_at? && can?(:destroy, template) %>
-      <%= button_to button_title(title: 'Archive', disabled_with: 'Archiving', title_class: 'inline', icon: svg_icon('archive', class: 'w-6 h-6')), template_path(template), class: 'btn btn-outline btn-sm w-full', form_class: 'flex-1', method: :delete, data: { turbo_confirm: 'Are you sure?' } %>
+      <%= button_to button_title(title: I18n.t('general_toarchive'), disabled_with: I18n.t('archiving'), title_class: 'inline', icon: svg_icon('archive', class: 'w-6 h-6')), template_path(template), class: 'btn btn-outline btn-sm w-full', form_class: 'flex-1', method: :delete, data: { turbo_confirm: 'Are you sure?' } %>
     <% end %>
     <% if can?(:create, current_account.templates.new(author: current_user)) %>
       <%= link_to new_template_path(base_template_id: template.id), class: 'btn btn-outline btn-sm flex-1', data: { turbo_frame: :modal } do %>
         
           <%= svg_icon('copy', class: 'w-6 h-6') %>
-          Clone
+          <%= I18n.t('general_clone') %>
         
       <% end %>
     <% end %>
@@ -67,14 +67,14 @@
         <%= link_to edit_template_path(template), class: 'btn btn-outline btn-sm flex-1' do %>
           
             <%= svg_icon('pencil', class: 'w-6 h-6') %>
-            Edit
+            <%= I18n.t('general_edit') %>
           
         <% end %>
       <% elsif can?(:read, template) && !template.archived_at? %>
         <%= link_to template_preview_path(template), class: 'btn btn-outline btn-sm flex-1' do %>
           
             <%= svg_icon('file_text', class: 'w-6 h-6') %>
-            Preview
+            <%= I18n.t('general_preview') %>
           
         <% end %>
       <% end %>
diff --git a/app/views/templates/new.html.erb b/app/views/templates/new.html.erb
index 2a665b9e..584cc573 100644
--- a/app/views/templates/new.html.erb
+++ b/app/views/templates/new.html.erb
@@ -1,4 +1,4 @@
-<%= render 'shared/turbo_modal', title: @base_template ? 'Clone Template' : 'New Document Template' do %>
+<%= render 'shared/turbo_modal', title: @base_template ? t('general_clone')+' Template' : t('general_new')+' '+t('general_document')+'  Template' do %>
   <%= form_for @template, data: { turbo_frame: :_top }, html: { autocomplete: :off } do |f| %>
     <% if @base_template %>
       <%= hidden_field_tag :base_template_id, @base_template.id %>
@@ -9,7 +9,7 @@
       
     <% end %>
     
-      <%= f.text_field :name, required: true, placeholder: 'Document Name', class: 'base-input', dir: 'auto' %>
+      <%= f.text_field :name, required: true, placeholder: t('general_document')+' '+t('general_name'), class: 'base-input', dir: 'auto' %>
     
     
     
-      <%= f.button button_title(title: @base_template ? 'Submit' : 'Create', disabled_with: 'Creating'), class: 'base-button' %>
+      <%= f.button button_title(title: @base_template ? t('general_submit') : t('general_create'), disabled_with: 'Creating'), class: 'base-button' %>
     
   <% end %>
 <% end %>
diff --git a/app/views/templates/show.html.erb b/app/views/templates/show.html.erb
index d2112d65..ab101760 100644
--- a/app/views/templates/show.html.erb
+++ b/app/views/templates/show.html.erb
@@ -4,7 +4,7 @@
   
     
       
-        
Submissions
+        <%= I18n.t('submissions') %>
       
       
         <% if params[:q].present? || params[:status].present? || @pagy.pages > 1 %>
@@ -12,12 +12,12 @@
         <% end %>
         <%= link_to new_template_submissions_export_path(@template), class: 'hidden md:flex btn btn-ghost text-base', data: { turbo_frame: 'modal' } do %>
           <%= svg_icon('download', class: 'w-6 h-6 stroke-2') %>
-          Export
+          <%= I18n.t('general_export') %>
         <% end %>
         <% if !@template.archived_at? && can?(:create, Submission) %>
           <%= link_to new_template_submission_path(@template), class: 'white-button !border', data: { turbo_frame: 'modal' } do %>
             <%= svg_icon('plus', class: 'w-6 h-6 stroke-2') %>
-            Add Recipients
+            <%= I18n.t('general_add') %> <%= I18n.t('recipients') %>
           <% end %>
         <% end %>
       
@@ -63,25 +63,25 @@
   
     
       
-        
There are no Submissions
+        
<%= I18n.t('submissions_empty') %>
         <% if @template.archived_at.blank? && params[:q].blank? %>
-          
Send an invitation to fill and complete the form
+          
<%= I18n.t('submissions_send_invite') %>
           
             <% if can?(:create, Submission) %>
               <%= link_to new_template_submission_path(@template, with_link: true), class: 'base-button mt-6', data: { turbo_frame: 'modal' } do %>
                 <%= svg_icon('plus', class: 'w-6 h-6 stroke-2') %>
-                
Send to Recipients
+                
<%= I18n.t('submissions_send_recipients') %>
               <% end %>
             <% end %>
             <% if @template.submitters.size == 1 %>
               <%= link_to start_form_url(slug: @template.slug), class: 'white-button mt-6', target: '_blank', rel: 'noopener' do %>
                 <%= svg_icon('writing', class: 'w-6 h-6') %>
-                
Sign it Yourself
+                
<%= I18n.t('submissions_sign_yourself') %>
               <% end %>
             <% else %>
               <%= link_to new_template_submission_path(@template, selfsign: true), class: 'white-button mt-6', data: { turbo_frame: 'modal' } do %>
                 <%= svg_icon('writing', class: 'w-6 h-6') %>
-                
Sign it Yourself
+                
<%= I18n.t('submissions_sign_yourself') %>
               <% end %>
             <% end %>
           <% end %>
@@ -93,7 +93,7 @@
 <% view_archived_html = capture do %>
   <% if @template.submissions.where.not(archived_at: nil).exists? && !@template.archived_at? %>
     
   <% end %>
 <% end %>
diff --git a/app/views/templates_archived/index.html.erb b/app/views/templates_archived/index.html.erb
index 695530ba..f1317453 100644
--- a/app/views/templates_archived/index.html.erb
+++ b/app/views/templates_archived/index.html.erb
@@ -1,7 +1,7 @@
 
   <%= link_to root_path do %>
     ←
-    Back to Active
+    <%= I18n.t('templates_archived_back_to_active') %>
   <% end %>
 
 
@@ -19,7 +19,7 @@
 <% elsif params[:q].present? %>
   
     
-      Templates not Found
+      Templates <%= I18n.t('not_found') %>
     
    
 <% end %>
diff --git a/app/views/templates_archived_submissions/index.html.erb b/app/views/templates_archived_submissions/index.html.erb
index f853c8fd..210663db 100644
--- a/app/views/templates_archived_submissions/index.html.erb
+++ b/app/views/templates_archived_submissions/index.html.erb
@@ -2,18 +2,18 @@
 
   <%= link_to template_path(@template) do %>
     ←
-    Back to Active
+    <%= I18n.t('templates_archived_back_to_active') %>
   <% end %>
 
 
   
-    
Submissions Archived
+    <%= I18n.t('submissions') %> <%= I18n.t('general_archive') %>
   
   
     <%= render 'shared/search_input' %>
     <%= link_to new_template_submissions_export_path(@template), class: 'order-3 md:order-1 btn btn-ghost text-base', data: { turbo_frame: 'modal' } do %>
       <%= svg_icon('download', class: 'w-6 h-6 stroke-2') %>
-      Export
+      <%= I18n.t('general_export') %>
     <% end %>
   
  
@@ -24,7 +24,7 @@
 <% elsif params[:q].present? %>
   
     
-      Submissions not Found
+      <%= I18n.t('submissions') %> <%= I18n.t('not_found') %>
     
    
 <% end %>
diff --git a/app/views/templates_dashboard/index.html.erb b/app/views/templates_dashboard/index.html.erb
index f6907d15..2b45e0fb 100644
--- a/app/views/templates_dashboard/index.html.erb
+++ b/app/views/templates_dashboard/index.html.erb
@@ -7,7 +7,7 @@
         <%= render 'dashboard/toggle_view', selected: 'templates' %>
       
     <% end %>
-    
Document Templates
+    
<%=t('general_document')%> Templates
    
   
     <% if params[:q].present? || @pagy.pages > 1 || @template_folders.present? %>
@@ -19,7 +19,7 @@
       
       <%= link_to new_template_path, class: 'white-button !border gap-2', data: { turbo_frame: :modal } do %>
         <%= svg_icon('plus', class: 'w-6 h-6 stroke-2') %>
-        Create
+        <%=t('general_create')%>
       <% end %>
     <% end %>
   
@@ -27,7 +27,7 @@
 <% view_archived_html = capture do %>
   <% if has_archived %>
     
   <% end %>
 <% end %>
diff --git a/app/views/templates_form_preview/show.html.erb b/app/views/templates_form_preview/show.html.erb
index 3ba11403..ac1f7081 100644
--- a/app/views/templates_form_preview/show.html.erb
+++ b/app/views/templates_form_preview/show.html.erb
@@ -16,7 +16,7 @@
         
       <% end %>
       
-        Exit Preview
+        <%= I18n.t('templates_form_preview_exit') %>
       
      
    
diff --git a/app/views/templates_uploads/show.html.erb b/app/views/templates_uploads/show.html.erb
index ee55c253..480eee3a 100644
--- a/app/views/templates_uploads/show.html.erb
+++ b/app/views/templates_uploads/show.html.erb
@@ -4,7 +4,7 @@
     
       <%= render 'shared/logo', width: 50, height: 50, class: 'mx-auto animate-bounce' %>
       
-        Processing...
+        <%= I18n.t('processing') %>...
       
     
    
diff --git a/app/views/users/_role_select.html.erb b/app/views/users/_role_select.html.erb
index b1d26c0f..f7823577 100644
--- a/app/views/users/_role_select.html.erb
+++ b/app/views/users/_role_select.html.erb
@@ -2,12 +2,7 @@
   <%= f.label :role, class: 'label' %>
   <%= f.select :role, nil, {}, class: 'base-select' do %>
     
-    
-    
+    
+    
   <% end %>
-  
">
-    <%= svg_icon('info_circle', class: 'w-4 h-4 inline align-text-bottom') %>
-    Unlock more user roles with DocuSeal Pro.
-    Learn More
-  
 
 
diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb
index 52eb7907..c233299e 100644
--- a/app/views/users/index.html.erb
+++ b/app/views/users/index.html.erb
@@ -82,7 +82,7 @@
           <% if params[:status] == 'archived' %>
             
View Active
           <% else %>
-            
View Archived
+            
<%= I18n.t('general_view') %> <%= I18n.t('general_archive') %>
           <% end %>
         
 
       <% end %>
diff --git a/config/application.rb b/config/application.rb
index a120c74a..76cd22d5 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -26,7 +26,8 @@ module DocuSeal
     config.active_storage.draw_routes = ENV['MULTITENANT'] != 'true'
 
     config.i18n.available_locales = %i[en en-US en-GB es-ES fr-FR pt-PT de-DE it-IT es it de fr pl uk cs pt he nl ar ko]
-    config.i18n.fallbacks = [:en]
+    config.i18n.fallbacks = [:'pt-PT']
+    config.i18n.default_locale = :'pt-PT'
 
     config.exceptions_app = ->(env) { ErrorsController.action(:show).call(env) }
 
diff --git a/config/database.yml b/config/database.yml
index f26c54ef..bf430e8e 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -6,6 +6,9 @@ default: &default
 development:
   <<: *default
   database: docuseal_dev
+  port: <%= ENV['DATABASE_PORT'] %>
+  username: <%= ENV['DATABASE_USER'] %>
+  password: <%= ENV['DATABASE_PASSWORD'] %>
 
 test:
   <<: *default
diff --git a/config/dotenv.rb b/config/dotenv.rb
index 319785e7..0b35f18e 100644
--- a/config/dotenv.rb
+++ b/config/dotenv.rb
@@ -1,5 +1,4 @@
 # frozen_string_literal: true
-
 if ENV['RAILS_ENV'] == 'production'
   if !ENV['AWS_SECRET_MANAGER_ID'].to_s.empty?
     require 'aws-sdk-secretsmanager'
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 9deda2d1..bbd62897 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1,4 +1,4 @@
-en: &en
+langs: &langs
   language_en: English
   language_en-US: English (US)
   language_en-GB: English (UK)
@@ -18,6 +18,8 @@ en: &en
   language_nl: Nederlands
   language_ar: العربية
   language_ko: 한국어
+  
+en: &en
   view: View
   hi_there: Hi there
   email: Email
@@ -74,6 +76,65 @@ en: &en
     scopes:
       write: Update your data
       read: Read your data
+  templates_dropzone_upload_new: Click to upload file
+  templates_dropzone_drop_message: Click to upload or drop here
+  templates_dropzone_uploading: Uploading...
+  templates_archived_back_to_active: Back to active
+  templates_form_preview_exit: Exit preview
+  submissions_empty: No submissions yet
+  submissions_send_invite: Send invite to complete the file
+  submissions_send_recipients: Send to recipients
+  submissions_send_emails: Send emails
+  submissions_sign_yourself: Sign yourself
+  submissions_type_emails: Type emails here
+  submissions: Submissions
+  submissions_sign_now: Sign now
+  submissions_add_new: Add New
+  submissions_add_recipient: Add Recipient
+  submissions_add_recipients: Add Recipients
+  submissions_not_completed_yet: Not completed yet
+  submissions_sign_in_person: Sign in person
+  signed_with: signed with
+  template: Document
+  recipient: Recipient
+  recipients: Recipients
+  archiving: Archiving
+  general_name: Name
+  general_document: Document
+  general_documents: Documents
+  general_export: Export
+  general_new: New
+  general_add: Add
+  general_archive: Archive
+  general_toarchive: Archive
+  general_archived: Archived
+  general_edit: Edit
+  general_view: View
+  general_create: Create
+  general_remove: Remove
+  general_change: Change
+  general_copy: Copy
+  general_copied: Copied
+  general_submit: Submit
+  general_clone: Clone
+  copy_share_link: Copy share link
+  copied_to_clipboard: Copied to Clipboard
+  processing: Processing
+  not_found: not found
+  folder: Folder
+  first_party: First Party
+  devise:
+    sessions:
+      user:
+        signed_in: Signed in
+        signed_out: Signed out
+    failure:
+      user:
+        invalid: Invalid user
+  settings: Settings
+  submissions_preserve_order: Preserve Order
+  submissions_preserve_order_hint: When checked, notifications will be sent to the second party once the form is completed by the previous party. Uncheck this option to send notifications to all parties simultaneously right away.
+  submissions_edit_message: Edit Message
 
 es: &es
   view: Vista
@@ -241,7 +302,7 @@ fr: &fr
 pt: &pt
   view: Visualizar
   hi_there: Olá,
-  download: Baixar
+  download: Descarregar
   decline: Recusar
   declined: Recusado
   decline_reason: Motivo da recusa
@@ -268,12 +329,12 @@ pt: &pt
   sending: Enviando
   resubmit: Reenviar
   or: ou
-  download_documents: Baixar documentos
-  downloading: Baixando
+  download_documents: Descarregar documentos
+  downloading: A Descarregar
   completed_successfully: Concluído com sucesso
   password: Senha
   sign_in: Entrar
-  signing_in: Entrando
+  signing_in: A Entrar
   sign_in_with_microsoft: Entrar com Microsoft
   sign_in_with_google: Entrar com Google
   forgot_your_password_: Esqueceu sua senha?
@@ -283,13 +344,80 @@ pt: &pt
   last_name: Sobrenome
   company_name_optional: Nome da empresa (opcional)
   sign_up: Inscrever-se
-  signing_up: Inscrevendo-se
+  signing_up: A Inscrevenr-se
   profile_details: Detalhes do perfil
   create_free_account: Criar conta gratuita
   sign_up_with_google: Inscrever-se com Google
   sign_up_with_microsoft: Inscrever-se com Microsoft
-  by_creating_an_account_you_agree_to_our_html: 'Ao criar uma conta, você concorda com nossa 
Política de Privacidade e 
Termos de Serviço.'
+  by_creating_an_account_you_agree_to_our_html: 'Ao criar uma conta, você concorda com nossa 
Política de Privacidade e 
Termos de Serviço.'
   enter_email_to_continue: Insira o e-mail para continuar
+  templates_dropzone_upload_new: Clique para inserir ficheiro
+  templates_dropzone_drop_message: Clique para inserir ou deixe cair aqui
+  templates_dropzone_uploading: A Carregar...
+  templates_archived_back_to_active: Voltar aos activos
+  templates_form_preview_exit: Sair do preview
+  submissions_empty: Não há submissões ainda
+  submissions_send_invite: Enviar convite para completar o ficheiro
+  submissions_send_recipients: Enviar aos recipientes
+  submissions_send_emails: Enviar emails
+  submissions_send_invite: Enviar convite para completar o ficheiro
+  submissions_send_recipients: Enviar aos recipientes
+  submissions_send_emails: Enviar emails
+  submissions_sign_yourself: Assine você mesmo
+  submissions_type_emails: Escrever emails aqui 
+  submissions_type_emails: Escrever emails aqui 
+  submissions: Submissões
+  submissions_sign_now: Assinar agora
+  submissions_add_new: Adicionar Novo
+  submissions_add_recipient: Adicionar Recipiente
+  submissions_add_recipients: Adicionar Recipientes
+  submissions_not_completed_yet: Não finalizado ainda
+  submissions_sign_in_person: Assinar pessoalmente
+  submissions_preserve_order: Preservar Ordem
+  submissions_preserve_order_hint: Quando verificada, as notificações serão enviadas à segunda parte assim que o formulário for preenchido pela parte anterior. Desmarque esta opção para enviar notificações a todas as partes simultaneamente imediatamente.
+  submissions_edit_message: Editar mensagem
+  signed_with: assinados com 
+  template: Documento
+  recipient: Recipiente
+  recipients: Recipientes
+  archiving: A Arquivar
+  general_name: Nome
+  general_document: Documento
+  general_documents: Documentos
+  general_export: Exportar
+  general_new: Novo
+  general_add: Adicionar
+  general_archive: Arquivo
+  general_toarchive: Arquivar
+  general_archived: Arquivado
+  general_edit: Editar
+  general_view: Ver
+  general_create: Criar
+  general_remove: Remover
+  general_change: Mudar
+  general_copy: Copiar
+  general_copied: Copiado
+  general_submit: Submeter
+  general_submit: Submeter
+  general_clone: Clonar
+  copy_share_link: Copiar o link de partilha
+  copied_to_clipboard: Copiado para o Clipboard
+  processing: A processar
+  not_found: não encontrados
+  folder: Pasta
+  first_party: Primeira Parte
+  devise:
+    sessions:
+      user:
+        signed_in: Iniciou a sessão
+        signed_out: Fechou a sessão
+      failure:
+        user:
+          invalid: Utilizador inválido
+  settings: Configurar
+  submission_has_been_removed: Submissão foi removida
+  submission_has_been_archived: Submissão foi arquivada
+  submission_has_been_unarchived: Submissão foi desarquivada
 
 de: &de
   view: Ansicht
@@ -720,27 +848,34 @@ ko:
 
 en-US:
   <<: *en
+  <<: *langs
   date:
     formats:
       default: "%m/%d/%Y"
 
 en-GB:
   <<: *en
+  <<: *langs
   date:
     formats:
       default: "%d/%m/%Y"
 
 es-ES:
   <<: *es
+  <<: *langs
 
 fr-FR:
   <<: *fr
+  <<: *langs
 
 pt-PT:
   <<: *pt
+  <<: *langs
 
 de-DE:
   <<: *de
+  <<: *langs
 
 it-IT:
   <<: *it
+  <<: *langs