[Cascavel-pm] Suporte a "internacionaliza??o".

Rod Za rodzadra em yahoo.com
Quarta Novembro 16 05:55:39 PST 2005


Olá Mongers,

Estou o módulo Locale::gettext para internacionalização do meu projeto. O projeto tem uma parte
servidora e uma consulta/gerenciamento via web . É relativamente muito fácil trabalhar com este
módulo e gerar os arquivos traduzidos ou para tradução (para quem já está acostumado com *nix). 

O módulo é utilizado para as traduções de mensagens ao usuário web. Estou utilizando o
CGI::Application + HTML::Template. 

A minha dúvida é se este modo é o mais indicado ou se existe um meio mais fácil/rápido/performante
de fazê-lo,

Abaixo um exemplo de como venho utilizando o módulo:

1) faço a declaração de meu módulo
2) verifico qual línguagem utilizar
3) O EXEMPLO ESPECÍFICO da utilização do módulo para tradução de textos no meu template pode ser
visto em "sub menu_make"

No final das contas eu faço a tradução segundo a linguagem escolhida e passo esta tradução para o
template (HTML::Template).

<\--code-->
#declaração do módulo adminApplication
package CGISGQI::adminApplication;
use strict;
use base 'CGI::Application';
use CGI::Session;
use lib '/opt/SGQI/lib';
use POSIX qw(strftime setlocale LC_MESSAGES);
use Locale::gettext;
use SGQI::Database::User;
use SGQI::Database::Group;
[...cortado...]
#
# sub setup
# define os modulos, inicia a aplicação
#

sub setup {
        my $self = shift;
        my $q    = $self->query();

        # prepara templates
           $self->param( 'locale' => 'pt_BR' );
           $self->param( 'locale' => $q->param('locale') ) if( $q->param('locale') );
           $self->tmpl_path( '/opt/SGQI/www/htdocs/templates/admin/'.$self->param( 'locale' ) );

        # prepara para internacionalização
           $self->{d} = Locale::gettext->domain( 'NetSGQI' );
           $self->{d}->dir( '/opt/SGQI/locale' );
        if( $q->param('locale') ){
           $self->param( 'locale' => $q->param('locale') );
           setlocale( LC_MESSAGES,$self->param('locale') );
        } else {
           $self->param( 'locale' => 'pt_BR'             );
           setlocale( LC_MESSAGES,$self->param('locale') );

        }
[...cortado...]

#sub menu_make
# cria/traduz o menu superior
#
sub _menu_make{
        my $self = shift;
        my $q    = $self->query();
        my $d    = $self->{d};
           $self->{MENU}[0] = $d->get( 'Página principal' );
           $self->{MENU}[1] = $d->get( 'Grupos'           );
           $self->{MENU}[2] = $d->get( 'Usuários'         );
           $self->{MENU}[3] = $d->get( 'Impressoras'      );
           $self->{MENU}[4] = $d->get( 'Relatórios'       );
        return $self;
}
[....cortado....]

<--code--/>


obrigado,


Rodrigo Zadra Armond.


	
		
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com


Mais detalhes sobre a lista de discussão Cascavel-pm