webgui/lib/WebGUI/Content/AjaxI18N.pm
2009-02-20 23:47:30 +00:00

68 lines
1.7 KiB
Perl

package WebGUI::Content::AjaxI18N;
=head1 LEGAL
-------------------------------------------------------------------
WebGUI is Copyright 2001-2009 Plain Black Corporation.
-------------------------------------------------------------------
Please read the legal notices (docs/legal.txt) and the license
(docs/license.txt) that came with this distribution before using
this software.
-------------------------------------------------------------------
http://www.plainblack.com info@plainblack.com
-------------------------------------------------------------------
=cut
use strict;
use JSON ();
=head1 NAME
Package WebGUI::Content::AjaxI18N
=head1 DESCRIPTION
A content handler to get i18n data using the WebGUI.i18n JavaScript object.
=head1 SYNOPSIS
use WebGUI::Content::AjaxI18N
my $output = WebGUI::Content::AjaxI18N::handler($session);
=head1 SUBROUTINES
These subroutines are available from this package:
=cut
#-------------------------------------------------------------------
=head2 handler ( session )
The content handler for this package.
=cut
sub handler {
my ( $session ) = @_;
# Only handle op=ajaxGetI18N
return undef unless ( $session->form->get( "op" ) eq "ajaxGetI18N" );
my $json = $session->form->get( "request" );
my $namespaces = JSON->new->decode( $json );
my $i18n = WebGUI::International->new( $session );
my $response = {};
for my $ns ( keys %{ $namespaces } ) {
for my $key ( @{ $namespaces->{ $ns } } ) {
$response->{ $ns }->{ $key } = $i18n->get( $key, $ns );
}
}
$session->http->setMimeType( "application/json" );
return JSON->new->encode( $response );
}
1;