Login
Andre Publicado em 17/03/2018, atualizado em 26/10/2020
Elementor

Como traduzir a data no formulário do Elementor

Neste tutorial vou mostrar como traduzir a data no formulário do Elementor utilizando um código customizado de PHP dentro do child theme.

Você já viu vários sites no Brasil com botões ou campos de preenchimento em inglês, correto?

Pode ser um pouco de perfeccionismo, mas na hora de entregar o projeto para o cliente eu procuro traduzir todas as palavras dentro do site.

Acho que perde um pouco a credibilidade do site que possui elementos não traduzidos para a língua nativa.

Porém, o problema com a tradução do módulo de formulário do Elementor Pro vai além de simples estética…

O formato de data é (yyyy/mm/dd) ao invés de (dd/mm/yyyy)!

O pior – eu só fui perceber isso dias antes de entregar o projeto para meu cliente.

Fiz uma pesquisa rápida na internet e não encontrei nenhuma postagem sobre o assunto no fórum do WordPress ou no GitHub.

Como vários países utilizam o formato (dd/mm/yyyy) – eu vi a importância de ter o formulário traduzido e alterado para o formato de data que o web designer quiser.

Então, abri um chamado de suporte no GitHub do Elementor:

Notifiquei os desenvolvedores sobre o problema no GitHub

Confira o chamado de suporte clicando aqui.

Depois de várias interações com os desenvolvedores via fórum e email, conseguimos chegar na solução.

É fato que os web designers que utilizam a versão Pro do Elementor irão precisar traduzir em algum momento a data do formulário para o formato correto.

Portanto, muito justo eu documentar a solução para toda a comunidade Elementor brasileira! ❤👨‍💻

Vou mostrar para você passo a passo o que eu fiz para conseguir traduzir o formulário.

Formato padrão errado para data no Brasil

Preparei um vídeo explicando na prática o processo caso surja alguma dúvida.

Vídeo sobre como traduzir a data no formulário do Elementor

3 Etapas para traduzir a data no formulário do Elementor

O vídeo acima explica em menos de 4 minutos o conteúdo do tutorial. Siga os passos abaixo para saber todas as etapas necessárias para traduzir o formulário.

Primeiro, copie o código abaixo e cole dentro do functions.php do seu child theme.

add_action('wp_footer', function () { if ( ! is_page( 10 ) ) { return; } ?> <script> jQuery( document ).ready( function( $ ){ function waitForFlatpicker( callback ) { if ( typeof window.flatpickr !== 'function' ) { setTimeout( function() { waitForFlatpicker( callback ) }, 2 ); } callback(); } waitForFlatpicker( function(){ flatpickr.l10ns.pt = { weekdays: { shorthand: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"], longhand: [ "Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado", ], }, months: { shorthand: [ "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez", ], longhand: [ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro", ], }, rangeSeparator: " até ", }; //set translations flatpickr.localize(flatpickr.l10ns.pt); flatpickr('.elementor-date-field'); //set format setTimeout( function(){ $('.elementor-date-field').each(function(){ flatpickr( $(this)[0] ).set('dateFormat', 'd/m/Y');}); }, 1000 ); }); }); </script> <?php } );
Code language: JavaScript (javascript)

Em segundo, abra a página do seu formulário de contato no modo de edição com Elementor e copie o ID dela.

Encontre o ID da página

E por último, altere o número no começo do código PHP:

if ( ! is_page( 288 ) ) {

Pronto, o formato da data e os nomes dos meses no calendário estão traduzidos!

Formulário com formato correto para escolha da data

Atenção: O código acima gera erros no site caso o formulário não esteja presente. Isso aconteceu com o meu cliente quando ele pediu para remover temporariamente o formulário de contato do site.

Lembre-se de remover o código PHP caso remova também o formulário da página.

Conclusão

O que você achou deste tutorial sobre como traduzir a data no formulário do Elementor?

Espero que possa te ajudar a traduzir os meses no calendário e mudar formato da data para o formato convencional no Brasil.

Você precisou fazer isso em algum projeto seu?

Deixe seu comentário e seu feedback.

Eles são sempre importantes para mim.

Obrigado por me acompanhar até aqui.

Abraço e até a próxima!

Comentários

  • Olá tudo bem? Primeiramente quero agradecer imensamente pela aula, super me ajudou a solucionar o problema, porém com um atento, os meus formulários apesar de terem sidos traduzidos continuam com a ordem da data errada em ano/mes/dia. Sabe oq pode estar acontecendo de errado?

    • Andre disse:

      Olá Thays, tudo bem? Você chegou a ver o vídeo desse tutorial? Pode ser que ficou faltando alguma parte do código ou pode ser também que exista algum bug que pode ser resolvido apenas por parte do suporte do Elementor

  • Leonardo M disse:

    Olá André, tudo bom?

    Faço a aplicação do código no functions.php do Child Theme ( Astra Child) e não consigo fazer com que funcione de nenhuma maneira, sabe o que pode ser? Já tentei de tudo, até mesmo instalei e reinstalei o Elementor e nada…

    • Andre disse:

      Olá Leonardo, tudo bem? Será que não está funcionando por causa do IF “! is_page( 10 )”? Caso consiga editar PHP, tente remover essa declaração para ver se funciona

    • Leonardo M disse:

      Já tentei também sem essa mas não mostrou diferença, continua sem mostrar resultados! 🙁
      Teria alguem email para que possa te enviar fotos de como estou aplicando?

    • Andre disse:

      Nesse caso acho que a melhor solução seria entrar em contato direto com o suporte do Elementor

  • Marcel disse:

    Muito obrigado!
    Funcionou perfeitamente!

  • vitor disse:

    Normalmente não comento mas dessa vez tenho que comentar! parabéns

  • Danyllo Resende disse:

    Olá André, tudo bem? Primeiramente muito obrigado pelo conteúdo.

    Gostaria de saber se você sabe uma solução para alterar o campo TIME. No modo mobile ele solicita 00:00:00:00 (Hora, Minuto, Segundos e Milesimos), gostaria que mostrasse apenas 00:00 (Hora e Minuto).

    Agradeço

    • Andre disse:

      Olá Danyllo, tudo bem? Infelizmente eu não sei como editar esse campo… Nesse caso acredito que o suporte do Elementor possa te ajudar melhor ao oferecer uma tradução para o tempo de uma forma mais comum como 00:00 no mobile. Caso ainda não tenham uma solução, acredito que façam uma atualização nesse sentido

  • Felipe disse:

    Show de bola! Deu tudo certinho aqui! Muito obrigado, André!

    Aproveitando para dar tbm um pequena contribuição para o pessoal…
    No meu caso, eu tinha várias páginas com o formulário. Consegui fazer isso de maneira fácil incluindo um array com os valores referência de cada página.

    Neste caso, ao invés de if ( ! is_page( 10 ) ), no meu ficou if ( ! is_page( array( 10, 15, 24, 78 )))

  • Perfeito. Obrigado

  • Olá Andre, tudo bem?

    Seu plugin funcionou perfeitamente na versão Desktop do site o qual estou trabalhando, mas no mobile e no tablet ele não funciona.

    Particularmente não entendo de programação e vasculhei na internet meios de fazer funcionar, porém sem sucesso. Inclusive, até o próprio plugin do Elementor Pro (Form Widget) não possui essa funcionalidade de escolha de formato e idioma.

    Print Screen da versão mobile – https://ibb.co/nRgjdPV

    Tu saberia me informar como faço para solucionar este problema?

    • Andre disse:

      Boa tarde Rodolpho, tudo bem? Pois é, ainda não fizeram uma forma nativa no Elementor para a tradução do formulário, mas estranho funcionar no desktop e não no mobile. Você tem uma licença ativa com eles? Seria interessante abrir um chamado de suporte no Elementor, assim incentiva também eles criarem uma solução de tradução do formulário e talvez te deem um norte melhor para a solução desse problema

  • Thales disse:

    Obrigado pela ajuda e vim comentar para ajudar quem, como eu, continuou tendo problemas, mesmo instalando esse código no functions do tema (eu não sabia criar tema filho, estava usando o astra). Para contornar isso: instale o plugin insert headers and footers. Copie o código a partir de até e cole na head do plugin baixado. Comigo funcionou só assim e olha que eu testei diversos outros códigos que eu achei nos canais de ajuda.

  • No meu caso, funcionou beleza, traduziu, mas a data ao exibir no campo do formulário fica no padrão americano. Só essa parte que não funcionou. Veja o print: https://prnt.sc/10eki4r

    • Andre disse:

      Olá Mikellison, tudo bem? Eu acredito que o formato da data pode ser alterado no próprio widget do Elementor ou em Configurações > Geral > Formato de data

  • Diogo disse:

    Olá André td joia? Comigo funcionou só em páginas, eu uso formulário em posts tb e infelizmente não deu certo! Eu uso form em vários posts, vc pode me dar uma dica? Desde já agradeço e parabéns por compartilhar conosco este script.

    • Andre disse:

      Bom dia Diogo, tudo bem? O código era para funcionar em posts também. Será que o Elementor não tem uma opção nativa para tradução hoje em dia? Pode ser até melhor do que a solução apresentada neste tutorial. Você entrou em contato com o suporte deles?

    • Diogo disse:

      Bom dia, então eu não entrei em contato com eles. Vou tentar fazer isso…deste já agradeço!

  • Gustavo Bartolotto Loureiro disse:

    Meu amigo, muito obrigado por disponibilizar esse conteúdo! Estava justamente com o mesmo problema e não estava querendo utilizar o formulário em HTML 5. E esse código que vc disponibilizou foi batata! Funcionou de primeira! Muito obrigado!

  • Shellen Lorreny Miranda disse:

    Olá bom dia.
    Eu fiz o que você colocou, primeiramente obrigada pelo conteúdo, mas uma dúvida quando o formulário é enviado como o email chega?
    O formato da hora para mim está chegando no formato americano, pelo que vi esta solução é somente front end?
    Você chegou a ver esta questão?

    • Shellen disse:

      Pode desconsiderar

    • Andre disse:

      Que bom que conseguiu resolver Shellen. Valeu!

    • Shellen Lorreny Miranda disse:

      Uma dúvida, você testou se o formulário estiver em uma single page?
      Estou precisando implementar em um modelo do elementor, veja https://prnt.sc/v9dnuz
      Não consegui fazer funcionar, você chegou a testar este código em um modelo single?
      Como solução paliativa tive que fazer assim:
      https://prnt.sc/v9dqfw
      Agradeço qualquer ajuda

    • Andre disse:

      Não cheguei a testar no single. Você já entrou em contato com o suporte do Elementor? Eles podem conseguir te ajudar nisso

    • Shellen Lorreny Miranda disse:

      Ah blz, vou olhar no suporte deles qualquer coisa te falo

    • Shellen Lorreny Miranda disse:

      Olá boa tarde.

      Após alguns testes e uma ajuda que tive para funcionar em qualquer página ou até mesmo em uma single, basta colocar o código assim:

      add_action(‘wp_footer’, function () {
      if ( ! is_page( 10 ) ) {
      return;
      }
      ?>

      jQuery( document ).ready( function( $ ){
      function waitForFlatpicker( callback ) {
      if ( typeof window.flatpickr !== ‘function’ ) {
      setTimeout( function() { waitForFlatpicker( callback ) }, 2 );
      }
      callback();
      }
      waitForFlatpicker( function(){
      flatpickr.l10ns.pt = {
      weekdays: {
      shorthand: [“Dom”, “Seg”, “Ter”, “Qua”, “Qui”, “Sex”, “Sáb”],
      longhand: [
      “Domingo”,
      “Segunda-feira”,
      “Terça-feira”,
      “Quarta-feira”,
      “Quinta-feira”,
      “Sexta-feira”,
      “Sábado”,
      ],
      },
      months: {
      shorthand: [
      “Jan”,
      “Fev”,
      “Mar”,
      “Abr”,
      “Mai”,
      “Jun”,
      “Jul”,
      “Ago”,
      “Set”,
      “Out”,
      “Nov”,
      “Dez”,
      ],
      longhand: [
      “Janeiro”,
      “Fevereiro”,
      “Março”,
      “Abril”,
      “Maio”,
      “Junho”,
      “Julho”,
      “Agosto”,
      “Setembro”,
      “Outubro”,
      “Novembro”,
      “Dezembro”,
      ],
      },
      rangeSeparator: ” até “,
      };
      //set translations
      flatpickr.localize(flatpickr.l10ns.pt);
      flatpickr(‘.elementor-date-field’);
      //set format
      setTimeout( function(){
      $(‘.elementor-date-field’).each(function(){ flatpickr( $(this)[0] ).set(‘dateFormat’, ‘d/m/Y’);});
      }, 1000 );
      });
      });

      <?php
      } );
      Não tendo a necessidade de colocar o IF (https://prnt.sc/vkuyj1).
      Desta forma funcionou, somente caso alguém precise usar o formulário em uma single.

  • Marcelo disse:

    Olá Andre,
    Este script ainda esta atualizado?
    Não consigo usar theme child por causa de um bug no Accordion do Elementor. Alguma sujestão para utilizar este script no funcitions.php do tema pai?
    Abraços,

    • Andre disse:

      Olá Marcelo, tudo bem? Nesse caso você precisa adicionar o script no seu tema filho ou utilizar algum plugin que facilite a inserção de scripts

    • Marcelo disse:

      Já resolvi. Era problema no Child Theme OceanWP. Substitui pelo Child Hello.

  • Erno K disse:

    Hello, very helpful article, thanks!

    I have a question though, how do you cope with the date field calendar weeks starting from Sunday and ending in Saturday. I translated the calendar with the code in this article but the calendar shows the weekday names wrong, as it does in your screenshot where the calendar is translated in portugese.

    For example today is monday 30.9.2019, but my form date picker thinks 30.9. is tuesday. Until I find a solution, I must use the calendar in english american style, and only change the date format to dd.mm.yyyy

    I posted a feature request in elementr github already 😀 Cheers!

    • Andre disse:

      Hello Erno! I’m glad you’ve found my tutorial even if it’s in portuguese. You’ve done well on contacting the Elementor team via GitHub, they helped me in my case because I opened a ticket there too. Hope you manage to solve this problem soon! See ya!

  • Oi Andre
    Primeiro: Muito obrigado pelo seu empenho em ajudar!!
    No meu caso estou criando um popup para “Agendar Avaliação” e lá tem o formulário. Fiz exatamente como no tutorial, mas nao deu certo. Achei primeiro que fosse o detalhe do número da página, mas aparentemente ele aparece igual (post.php?post=141…). O que você acha que pode estar acontecendo.
    Te agradeço novamente

    • Andre disse:

      Olá Jackson, tudo bem? Você utilizou o ID da página do popup, correto? Você pode tentar também tirar o if() que engloba o ID para que apareça no site todo

  • Ricardo disse:

    Oi, bom dia…

    Segue um dica, para quando o tema for atualizado não perder o código: https://en-gb.wordpress.org/plugins/code-snippets/

    E obrigado pela dica; Abraços

  • Renato disse:

    Hi Andre, thanks so much. I already sent you the access data a few minutes ago. Many greetings from Italy

  • Renato disse:

    Ciao Andre,
    great documentation. Thank you. We have the same problem in Italy. The date should be like this: 19.06.2019

    I tried to understand your video and your documentaton in Portugues language and it was quiet good for me because Italian has some similar sound 🙂

    But your code in my function.php is not accepted. Can you help me?

    I’m using wordpress newest version.
    A form with datepicker flatpickr in Elementor / Elementor Pro
    Theme: Ocean WP

    My function.php has about 950 rows and I don’t know where to place the code. I tried on the top in the middle and in the bottom but this insertion will not be accepted. I tried it with your brazilian version and also with a German version but no way.
    (your code has >>>>> add_action(‘wp_footer’, function () ………
    could this be causing me problems?
    I do not insert the form in the footer.

    Thank you for a hint.
    Ciao e grazie mille

    Renato

    • Andre disse:

      Hello Renato, how are you? Do you mean there is an error when you try saving the new code in your functions.php? Try sending your file to my e-mail so I can try to help you more: contato@teste.test.

    • Renato disse:

      Hello Andre
      did you receive my email? greetings from Italy

    • Andre disse:

      Yes and I have just replied it. It’s working just fine for the portuguese language. Try changing the strings to your desired language now. Hope I managed to help you. See ya!

  • Wallace disse:

    E se a página tiver mais de 1 formulário?

    No caso, a que estou criando terá 3 formulários.

    • Andre disse:

      Olá Wallace, tudo bem? Acredito que esta solução é válida também com 02 ou mais formulários na mesma página.

  • Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *