use Modern::Perl; package localization; use base 'Locale::Maketext'; use Locale::Maketext::Lexicon { "i-default" => ['Auto'], _auto => 1, _decode => 1, _style => 'gettext', }; sub init { my $class = shift; $class->fail_with(sub { my($lh, $key, @params) = @_; $key =~ /^_"([^"]*)"$/; #" return $lh->maketext($1||$key, @params); }); } sub add { my $class = shift; my $locale = shift; my $file = shift; Locale::Maketext::Lexicon->import({ $locale => [Gettext => $file], _auto => 1, _decode => 1, _style => 'gettext', }); } sub add_mo { my $class = shift; my $dir = shift; my $locales = shift; my $handles = {}; foreach my $lan (@$locales) { $class->add($lan, "$dir/$lan.mo"); $handles->{$lan} = $class->get_handle($lan); } return $handles; } sub available_locales { my $dir = shift; return [ map { m|(\w+)\.mo$|; $1 } glob("$dir/*.mo") ]; } sub fallback_languages { return ("ru","i-default"); } 1;