André Alves de Lima

Talking about Software Development and more…

Configurando o idioma do Report Viewer

Quando instalamos aplicações desktop em computadores com sistema operacional que não esteja traduzido para português, temos que nos atentar para a globalização das nossas aplicações. Em alguns casos, os controles podem vir formatados em inglês (ou no formato do idioma que estiver configurado no computador). Se a aplicação conta com relatórios do Report Viewer, esse é um ponto que devemos prestar bastante atenção, uma vez que, por padrão, os relatórios trazem o formato de datas e números em inglês. Como fazemos para alterar o idioma do Report Viewer? É isso que eu mostro para você no vídeo de hoje:

Alterando o idioma do controle

A alteração do idioma do Report Viewer pode ser dividida em duas partes. Primeiro, temos a tradução do controle em si (labels, tooltips, mensagens de erro, etc). E, depois, temos a configuração do idioma do relatório (para que as datas, números e moedas venham no formato correto).

Para alterarmos o idioma do controle do Report Viewer, temos que configurar o idioma da aplicação como um todo. Fazemos isso setando a cultura da thread principal da aplicação. Isso pode ser feito no método “main” ou no construtor do formulário principal da sua aplicação:

            // C#
            var cultura = new System.Globalization.CultureInfo("pt-BR");
            System.Threading.Thread.CurrentThread.CurrentCulture = cultura;
            System.Threading.Thread.CurrentThread.CurrentUICulture = cultura;
        ' VB.NET
        Dim Cultura = New System.Globalization.CultureInfo("pt-BR")
        System.Threading.Thread.CurrentThread.CurrentCulture = Cultura
        System.Threading.Thread.CurrentThread.CurrentUICulture = Cultura

E com isso o controle do Report Viewer exibirá mensagens, tooltips, etc. no idioma configurado:

Alterando o idioma do relatório

Dentro do relatório, nós provavelmente teremos TextBoxes com formatação de data/hora, número e moeda. Se nós não configurarmos um idioma específico dentro do relatório, muito provavelmente o Report Viewer utilizará as informações de cultura do idioma inglês americano. Ou seja, as datas aparecerão invertidas e os números com ponto como separador (ao invés de vírgula).

Para que esses tipos de controles venham com a formatação correta, nós temos que alterar a propriedade “Language” do relatório:

Ao fazermos isso, as datas e números aparecerão no formato correto. Porém, se tivermos formatado um TextBox com formato monetário, ele ficará “travado” para o formato configurado no computador de desenvolvimento (no meu caso, em Euros):

Formatando moedas

Se quisermos que as moedas também venham formatadas respeitando o idioma selecionado no relatório, nós teremos que configurar uma expressão para fazer a formatação manual (ao invés de fazermos a formatação como indicado acima). A expressão para esses tipos de TextBox seria a seguinte:

=String.Format("{0:c}", Fields!NomeDoCampo.Value)

Aí sim os campos com moedas serão formatados da maneira correta:

Sincronizando o idioma do relatório com o idioma da aplicação

Para não termos que configurar o idioma em dois lugares diferentes (na aplicação e depois em cada um dos relatórios), nós podemos configurar o idioma dos relatórios de maneira dinâmica, de forma que ele respeite automaticamente o idioma configurado na aplicação.

Se você procurar por esse assunto na internet, você encontrará muita gente sugerindo as mais diversas gambiarras para solucionar essa questão (como passar o idioma para o relatório via parâmetro, por exemplo). Porém, isso é algo muito fácil de ser resolvido. Basta configurarmos o idioma do relatório com uma expressão que retornará o idioma da aplicação. Essa informação está disponível dentro de “Built-in fields” na janela de expressões:

Baixe o projeto de exemplo

Para baixar o projeto de exemplo desse artigo, assine a minha newsletter. Ao fazer isso, além de ter acesso ao projeto, você receberá um e-mail toda semana sobre o artigo publicado e ficará sabendo também em primeira mão sobre o artigo da próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail. Inscreva-se utilizando o formulário no final do artigo.

Concluindo

No vídeo de hoje você conferiu o esquema de tradução de relatórios do Report Viewer. Primeiramente, conferimos como podemos configurar o idioma do controle do Report Viewer. Em seguida, nós aprendemos a configurar os formatos de hora, número e moeda dos nossos relatórios. Por fim, nós vimos como sincronizar o idioma da aplicação e dos relatórios.

E você, já teve problemas com os idiomas e formatações no Report Viewer? Conseguiu resolver esses problemas seguindo os passos que eu indiquei no vídeo? Ficamos aguardando as suas experiências na caixa de comentários logo abaixo.

Até a próxima!

André Lima

Newsletter do André Lima

* indicates required



Powered by MailChimp

8 thoughts on “Configurando o idioma do Report Viewer

  • Henrique disse:

    acredito que pode ajudar muito para aqueles que usam outra moeda. obg
    Replace(FormatCurrency(Parameters!Dinheiro.Value),”R$”,”Kz “)

    • andrealveslima disse:

      Olá Henrique, obrigado pelo comentário!

      Só não entendi se foi uma dúvida ou uma dica que você está querendo compartilhar aqui conosco.. Se for uma dúvida, explique com maiores detalhes, por favor..

      Abraço!
      André Lima

  • Henrique disse:

    Na verdade é uma dica. eu estava com dificuldades em converter um valor na moeda angolana Kwanza (kz) mais vinha sempre em R$ dai eu fiz este codigo dentro da expressao. formato em moeda e faço o replce.

    penso que serve para outras moedas ou coversões de string

    Replace(FormatCurrency(Parameters!Dinheiro.Value),”R$”,”Kz “)

  • Juliano Rodrigues disse:

    Prezado André,

    Espero que ainda esteja disposto a esclarecer dúvidas neste antigo post!

    Utilizo CRViewer do VS2015.
    Me deparei com um obstáculo, que pode até parecer ridículo para muitos, porém não estou encontrando o “Built-in fields – Language” para configurar o idioma do relatório.

    Onde se encontra isso no CRViewer do VS2015? Existe esta opção?

    Obrigado!

    • andrealveslima disse:

      Olá Juliano!

      Que eu saiba, em relatórios do Crystal Reports, ele sempre respeita o idioma que está setado na aplicação.. Ou seja, se a “Culture” da aplicação está setada em português, o viewer e as formatações serão exibidas em português..

      É isso que você está querendo dizer? Se não for isso, me explica melhor aí..

      Abraço!
      André Lima

      • Juliano Rodrigues disse:

        A Culture não é automática não.
        Pelo menos em meus relatórios não está funcionando assim.

        O problema é que não encontrei o “Built-in fields – Language”

        Mas passei a usar o “Special Fields – Content Location” e setei todos os labels do report como fórmulas, então dependendo do “Content Location” mostro o label no idioma correto.

        Achei outra solução viável.

        Obrigado!

        • andrealveslima disse:

          Olá Juliano!

          Muito obrigado pelo retorno.. Estranho você não ter conseguido encontrar o “built in fields”.. Mas, de qualquer forma, o que importa é que você conseguiu resolver o problema.. :)

          Valeu por compartilhar a solução..

          Abraço!
          André Lima

Deixe uma resposta

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