Qualquer um que já fez um site em inglês e português já se deparou com o problema de como exibir as datas.

No site em inglês, é necessário exibir a data no formato MES/DIA/ANO, enquanto no Brasil (e na maioria dos países do mundo), seguimos o formato DIA/MES/ANO.

Existem várias formas, de fazer isso, algumas mais elegantes que outras, vou mostrar neste post como alterar usando o módulo contrib Date. Aprenda de uma vez por todas a lidar com a localização de formatos de data e hora no Drupal.

O jeito errado

A forma mais simples – e deselegante – de se alterar o formato de data conforme o idioma, é com a função t() dentro da função format_date(). No seu código as coisas ficariam assim:

<?php $date = format_date($date, 'custom', t('d/m/Y')); ?>

Isso já é o suficiente para atualizar o formato da data e hora baseado em qual idioma está ativado no momento. Porém essa não é a melhor forma, pois você estará salvando configuração (formato de data) como se fosse uma string para ser traduzida. Isso não é muito semântico e dificulta a manutenção do site.

Como se esse motivo já não bastasse, essa abordagem não é compatível com outros módulos contrib, especialmente o Views.

Existem módulos para isso: Date e Locale

Se você como eu se incomodou com a solução de utilizar o t() para localizar os formatos de data, você não está sozinho. A solução limpa é usar o módulo contrib Date, que permite que você trabalhe de maneira elegante com os formatos de data e hora do seu site.

Para começar, baixe o módulo "date" do drupal.org, ative na sua instalação local e acesse o endereço: /admin/config/regional/date-time

Você verá o formulário abaixo ao acessar a URL. Na imagem a seguir, vemos os três tipos de datas que vêm com o Drupal por padrão, Long, Medium e Short. Caso não esteja vendo a aba "Localize", você pode ter esquecido de habilitar o módulo locale.

screenshot

Clique na aba "Formats" e depois crie dois formatos de data: um para português e outro para inglês, como visto nas duas imagens a seguir.

screenshot

screenshot

Em seguida, crie um novo Formato de Data. Nesse caso, estamos adicionando um novo tipo de data chamado Blog Post Short Date e estamos atribuindo o formato de data inglês que criamos anteriormente, pois na minha instalação de exemplo, ele é o idioma padrão do site.

screenshot

Para terminar, acesse a aba "Localize" na mesma interface administrativa e edite o idioma português. Adicione o formato de data em português para o tipo de data do Blog Post Short Date conforme imagem a seguir.

screenshot

Agora, você pode usar tranquilamente o seu novo formato de entrada no Views ou no PHP, com o código abaixo:

<?php $date = format_date($date, 'blog_post_short_date'); ?>

Dúvidas ou sugestões? Deixe nos comentários :)

Comentar