diff options
| -rw-r--r-- | lib/AdminPanel/Shared/Locales.pm | 219 | 
1 files changed, 219 insertions, 0 deletions
| diff --git a/lib/AdminPanel/Shared/Locales.pm b/lib/AdminPanel/Shared/Locales.pm new file mode 100644 index 00000000..75956cf0 --- /dev/null +++ b/lib/AdminPanel/Shared/Locales.pm @@ -0,0 +1,219 @@ +# vim: set et ts=4 sw=4: +#***************************************************************************** +#  +#  Copyright (c) 2013-2014 Matteo Pasotti <matteo.pasotti@gmail.com> +#  +#  This program is free software; you can redistribute it and/or modify +#  it under the terms of the GNU General Public License version 2, as +#  published by the Free Software Foundation. +#  +#  This program is distributed in the hope that it will be useful, +#  but WITHOUT ANY WARRANTY; without even the implied warranty of +#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +#  GNU General Public License for more details. +#  +#  You should have received a copy of the GNU General Public License +#  along with this program; if not, write to the Free Software +#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +#  +#***************************************************************************** +package AdminPanel::Shared::Locales;  + +use Moose; +use diagnostics; +use utf8; +use Locale::gettext; +use Text::Iconv; +   +has 'domain_name' => ( +    is      => 'rw', +    default => 'apanel',  +); + +has 'dir_name' => ( +    is      => 'rw', +    default => undef,  +); + +has 'codeset' => ( +    is      => 'rw', +    default => 'UTF8',  +); + +has 'domain' => ( +    is      => 'rw',  +    init_arg  => undef, +); + +#============================================================= + +=head2 BUILD + +=head3 INPUT + +    $self: this object + +=head3 DESCRIPTION + +    The BUILD method is called after a Moose object is created. +    This method  initilaizes gettext domain. + +=cut + +#============================================================= +sub BUILD { +    my $self = shift; + +    $self->domain(Locale::gettext->domain_raw($self->domain_name)); +    $self->domain->dir($self->dir_name) if $self->dir_name; +    $self->domain->codeset($self->codeset) +} + + +#============================================================= + +=head2 P + +=head3 INPUT + +    $self :      this object +    $s_singular: msg id singular +    $s_plural:   msg id plural +    $nb:         value for plural + +=head3 OUTPUT + +    locale string + +=head3 DESCRIPTION + +    returns the given string localized (see dngettext) + +=cut + +#============================================================= +sub P {     +    my ($self, $s_singular, $s_plural, $nb, @para) = @_; +     +    sprintf($self->domain->nget($s_singular, $s_plural, $nb), @para); +} + +#============================================================= + +=head2 N + +=head3 INPUT + +    $self : this object +    $s:     msg id +     +=head3 OUTPUT + +    locale string + +=head3 DESCRIPTION + +    returns the given string localized (see dgettext) + +=cut + +#============================================================= +sub N { +    my ($self, $s, @para) = @_;  +     +    sprintf($self->domain->get($s), @para); +} + +#============================================================= + +=head2 N_ + +=head3 INPUT + +    $self : this object +    $s:     msg id +     +=head3 OUTPUT + +    msg id + +=head3 DESCRIPTION + +    returns the given string + +=cut + +#============================================================= +sub N_ { +    my $self = shift; +     +    $_[0];  +} + + +#============================================================= + +=head2 from_utf8 + +=head3 INPUT + +    $self: this object +    $s:    string to be converted + +=head3 OUTPUT\ + +    $converted: converted string + +=head3 DESCRIPTION + +    convert from utf-8 to current locale + +=cut + +#============================================================= +sub from_utf8 { +    my ($self, $s) = @_; + +    my $converter = Text::Iconv->new("utf-8", undef); +    my $converted = $converter->convert($s); + +    return $converted;  +} + + +#============================================================= + +=head2 to_utf8 + +=head3 INPUT + +    $self: this object +    $s:    string to be converted + +=head3 OUTPUT\ + +    $converted: converted string + +=head3 DESCRIPTION + +    convert to utf-8 from current locale + +=cut + +#============================================================= +sub to_utf8 {  +    my ($self, $s) = @_; + +    my $converter = Text::Iconv->new(undef, "utf-8"); +    my $converted = $converter->convert($s); + +    return $converted;  +} + + + +no Moose; +__PACKAGE__->meta->make_immutable; + + +1; | 
