X-Git-Url: http://git.shiar.net/perl/loc/.git/blobdiff_plain/e279cae8be610fa4fc0ecbf21d27d59e9953d9a0..0fc15cae405d8c2af2c9dc53eed4e03e2f5433da:/Lirama/Loc.pm diff --git a/Lirama/Loc.pm b/Lirama/Loc.pm deleted file mode 100644 index cd3529f..0000000 --- a/Lirama/Loc.pm +++ /dev/null @@ -1,115 +0,0 @@ -package Lirama::Loc; - -use strict; -use warnings; -use utf8; - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT = qw(langpref); -our @EXPORT_OK = qw(@langpref loc); - -our @langpref = qw(en eo nl sv el hu de fr ru kr fi); - -sub langpref { - # @_ is order of languages (prefered language last) - for my $lang (@_) { - unshift @langpref, splice @langpref, $_, 1 # move to front - for grep $langpref[$_] eq $lang, 0..$#langpref; - } # find $lang and move to front of @langpref -} # langpref - -sub loc($) { - my $this = shift; - # localize to most preferred language - ref $_[0] eq "HASH" or return $_[0]; - defined $_[0]{$_} and return $_[0]{$_} for @langpref; -} # loc - -sub TIEHASH { - my $this = shift; - - my $node = {}; - while (my ($id, $langs) = each %{$_[0]}) { - $node->{$id} = $this->loc($langs); - } # add each element of i18n hash - - return bless $node, $this; -} # new - -sub FETCH { - my $this = shift; - # custom expand: get preferred language from given hash - return $this->loc($_[0]) if ref $_[0] eq "HASH"; # deprecated in favor of loc() - # array ref used for passing arguments - @_ = @{$_[0]} if ref $_[0] eq "ARRAY"; - # get localized string by identifier - local $_ = shift; - #todo: shouldn't occur - find out where this is done, then fix and remove this check - defined $_ or return ''; - $_ = $this->{$_} if exists $this->{$_}; - # static output if no arguments given - return $_ unless @_; # unnecessary but faster for common case - # adaptive string (code) - $_ = $_->(@_) if ref $_ eq "CODE"; - # dynamic output - return sprintf $_, @_; -} # FETCH - -sub EXISTS { - # true if identifier is localized; non-existing strings still return - # themselves, so in standard meaning everything would exist - return exists $_[0]->{$_[1]}; -} # EXISTS - -sub FIRSTKEY { - my $this = shift; - keys %$this; # reset iterator - return each %$this; -} # FIRSTKEY - -sub NEXTKEY { - my $this = shift; - return each %$this; -} # NEXTKEY - -1; - -__END__ - - -=head1 NAME - -Lirama::Loc - Localize strings - -=head1 SYNOPSIS - - use Lirama::Loc; - - langpref(qw/en eo/); # prefer esperanto texts - - tie my %loc, "Lirama::Loc", { - test => { - en => "this is a test", - eo => "cxi tio estas testo", - nl => "dit is een test", - }, - }; - - print $loc{test}; - -=head1 DESCRIPTION - -Returns a text in the preferred language. - -=head1 SEE ALSO - -L - -=head1 AUTHOR - -Mischa POSLAWSKY - -Copyright 2005 Mischa POSLAWSKY. All rights reserved. - -=cut