Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Como traduzir textos do componente CrystalReportViewer .net

Neste artigo é apresentada uma forma de se fazer a tradução dos componentes de um crystal report viewer e passa a idéia de como fazer algumas edições simples de controle em tempo de execução.

O Crystal Reports é uma poderosa ferramenta de desenvolvimento de relatórios que vem juntamente com o visual studio desde a versão X, juntamente com  algumas biblioteca que contém objetos para manipularmos:  ordenação, fontes de dados, e etc nos relatórios e também para provermos a visualização desses relatório através do programa para usuário, um desse objetos é o  controle CrystalReportViewer utilizado para apresentação  dos relatórios, nele já temos um navegador e alguma opções de exportação e é utilizado pela maioria dos desenvolvedores que utilizam relatório crystal em aplicações .net, mas os texto em inglês do visualizador pode ser um problema para alguma pessoas, pois não é aceitavel em algumas organizações(como a que eu trabalho por exemplo), e não encontrei até hoje pelo menos, uma forma muito ortodoxa de se fazer a tradução desses textos, então nesse artigo vou dar um exemplo do que poderia ser feito. As implementações estão em c#.

No Visual Studio escolha File->New->Project e escolha o template para Windows Forms.

Vá para o designer do form Criado e expanda a Tool Box se você está com vs 2008 ou 2010 professional(no caso do 2010 o crystal tem que ser baixado separadamente) haverá uma seção rotulada como “Reporting” , escolha o controle CrystalReportViewer e arraste para o form.

Feito isso compile o projeto uma vez e veja que todos ToolTip dos Itens na parte superior estarão em inglês, assim como a nomeclatura da aba principal que estará escrito “Main Report”, o drop down “Zoom” terá também alguns itens em inglês.

Certo, agora vamos criar o método para fazer a tradução, ficará assim:

private void TraduzirCRV(CrystalReportViewer Cntl)

        {

            foreach (Control Ctl in Cntl.Controls)

            {

                #region Dicionario

                //Aqui está o dicionário para fazer a trudução, para quem quiser o texto em portugues que vai permanecer é só alterar aqui.

                Dictionary<string, string> Traducoes = new Dictionary<string, string>();

                Traducoes.Add("Export Report", "Exportar");

                Traducoes.Add("Print Report", "Imprimir");

                Traducoes.Add("Refresh", "Atualizar");

                Traducoes.Add("Toggle Parameter Panel", "Invisible");

                Traducoes.Add("Toggle Group Tree", "Invisible");

                Traducoes.Add("Go to First Page", "Primeira página");

                Traducoes.Add("Go to Previous Page", "Página anterior");

                Traducoes.Add("Go to Next Page", "Próxima página");

                Traducoes.Add("Go to Last Page", "Última página");

                Traducoes.Add("Go to Page", "Ir para página");

                Traducoes.Add("Find Text", "Procurar");

                Traducoes.Add("Zoom", "Zoom");

                Traducoes.Add("Close Current View", "Fechar");

                Traducoes.Add("Page Width", "Largura da página");

                Traducoes.Add("Whole Page", "Página Inteira");

                Traducoes.Add("Customize...", "Customizar...");

                Traducoes.Add("Current Page No.", "Nr. página atual");

                Traducoes.Add("Total Page No.", "Nr. Total páginas");

                Traducoes.Add("Zoom Factor", "Nível de zoom");

                #endregion Dicionario

 

                #region TraduzindoItens

                //Alterando o texto da tabpage principal(Onde está escrito Main Report).

                if (Ctl.GetType() == typeof(PageView))

                    try

                    {

                        ((TabControl)Ctl.Controls[0]).TabPages[0].Text = "Relatório";

                    }

                    catch {

                    }

 

                //Alterando o texto dos componente que ficam na barra superior.

                else if (Ctl.GetType() == typeof(System.Windows.Forms.ToolStrip))

                {

 

 

                    foreach (ToolStripItem Ti in ((ToolStrip)Ctl).Items)

                    {

                        if (Ti.ToolTipText != null)

                        {

                            Ti.ToolTipText = Traducoes[Ti.ToolTipText];

 

                            //Aqui eu escondo dois itens da barra superior que no meu contexto são irrelevantes    o que mostra uma barra com os parametros

                            // e o que mostra uma treeview com os grupos do relatório.

                            if (Ti.ToolTipText == "Invisible")

                            {

                                Ti.Visible = false;

                            }

                            //Aqui traduzindo os itens dentro do dropdown Zoom.

                            else if (Ti.ToolTipText == "Zoom" && Ti.GetType() ==typeof(ToolStripDropDownButton))

                            {

                                string[,] ItensDD = new string[30, 4];

                                foreach (ToolStripItem TiF in ((ToolStripDropDownButton)Ti).DropDownItems)

                                {

                                    try

                                    {

                                        TiF.Text = Traducoes[TiF.Text];

                                    }

                                    catch

                                    {

 

                                    }

                                }

                            }

                        }

                    }

 

                }

                //Alterando os textos da status bar

                else if (Ctl.GetType() == typeof(StatusBar))

                {

                    foreach (StatusBarPanel StBrPnl in ((StatusBar)Ctl).Panels)

                    {

                        string Texto = StBrPnl.Text.Substring(0, StBrPnl.Text.IndexOf(":"));

                        StBrPnl.Text = StBrPnl.Text.Replace(Texto, Traducoes[Texto]);

                    }

                }

                #endregion TraduzindoItens

 

            }

        }

Agora crie o evento load do form(pode ser criado clicando duas vezes no formulário) chamando esse método recém criado.

private void Form1_Load(object sender, EventArgs e)

        {

            TraduzirCRV(crystalReportViewer1);

        }

Pronto agora é só compilar novamente e conferir o resultado, espero ter ajudado, abraços!





    1 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Racers Informatica Ltda

Parabéns pelo artigo, muito bom, continue postando.

Abraços
 
Renan Henrique


em 2/9/2010 10:11 - Responder

 



[Este post ainda não foi associado a uma sequência]
Autor
Vinicius Junio Vieira

4 anos de experiência em desenvolvimento de aplicações .net e administração de banco de dados SQL server, tendo atuado principalmente com integrações entre bancos de dados, atualmente trabalhando em empresa desenvolvimento de aplicações mobile e internet.


Space do autor
Estatísticas #
Favorito:
Comentários:
Feedback:
Utilidade:
1   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03