hier ist eine weitere lösung:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package Tie::I18N;
use Tie::Hash;
use base qw/Tie::StdHash/;
my %STRINGS = (
DE => {
ASK => "wieviele zeitschriften wollen sie kaufen?",
},
EN => {
ASK => "how many mags you wanna buy?",
}
);
sub TIEHASH {
my ($package, $language) = @_;
return bless {LANGUAGE => uc $language}, $package;
}
sub FETCH {
my ($self, $what) = @_;
return $STRINGS{$self->{LANGUAGE}}->{uc $what} || "";
}
1;
Quotekabel@linux:~/progs/perl> cat i18n.pl
use strict;
use Tie::I18N;
my %hash;
tie %hash, "Tie::I18N", "de";
print $hash{ASK}, $/;
untie %hash;
tie %hash, "Tie::I18N", "en";
print $hash{ASK}, $/;
untie %hash;
kabel@linux:~/progs/perl> perl -w i18n.pl
wieviele zeitschriften wollen sie kaufen?
how many mags you wanna buy?
kabel@linux:~/progs/perl>
%STRINGS müsste natürlich irgendwie dynamisch gefüllt werden ...
-- stefan