[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