package Apache::Language::PlainFile; use strict; use Apache::Language::Constants; use vars qw($VERSION); $VERSION = '0.03'; sub modified { my ($class, $data, $cfg) = @_; my $lastmod = (stat $cfg->{DictName})[9]; return $lastmod > $cfg->{LastModified}; } sub store { my ($class, $data, $cfg, $key, $lang, $value) = @_; $cfg->{DATA}{$key}{$lang} = $value; return L_OK; } sub fetch { my ($class, $data, $cfg, $key, $lang) = @_; return $cfg->{DATA}{$key}{$lang} if $lang; my $variant = $data->best_lang(keys % {$cfg->{DATA}{$key}}); return $cfg->{DATA}{$key}{$variant} if $variant; return undef; } sub firstkey { my ($class, $data, $cfg) = @_; my $a = keys % {$cfg->{DATA}}; return each % {$cfg->{DATA}}; } sub nextkey { my ($class, $data, $cfg, $lastkey) = @_; return each % {$cfg->{DATA}}; } sub initialize { my ($self, $data, $cfg) = @_; my $filename = $data->filename; if ($data->package =~ /^Apache::ROOT/) { #This is under Apache::Registry, so simply append .dic to the script name $filename =~ s/^(.*)$/$1.dic/; } else { $filename =~ s/\.[^.]*$/.dic/; #Find the language file } $cfg->{DictName} = $filename; $cfg->{LastModified} = (stat $filename)[9]; my $fh = IO::File->new; $fh->open($filename) or return L_DECLINED; local($/) = ""; #read untill empty line while (<$fh>){ #this should be more carefully validating stuff.. my ($lang, $code) = /([^:]*):(\w+)/ or last; unless ($code){ warn __PACKAGE__ . ": bad syntax in $filename ($_)"; return L_ERROR; } my $string = <$fh> if defined($fh) or "No string found"; $cfg->{DATA}{$code}{$lang} = $string; } $fh->close; return L_OK; } 1; __END__ =head1 NAME Apache::Language::PlainFile - Default LanguageHandler under Apache::Language =head1 SYNOPSIS Since it's the default handler, it never needs to be activated. =head1 DESCRIPTION This is the default LanguageHandler under Apache::Language. It searches language definitions for a specific script/module in a file with a corresponding name. For a script, it's the scriptname with a .dic added. For a module, simply replace the .pm with a .dic That file must reside in the same directory as the script/module it describes, and be readable by the web-server process. The format of that file is as follows: language-tag:Key Content for 'language' version of 'Key' language-tag:Key [...] The only really important thing is to make sure that entries are separated with completely blank lines. =head1 TODO Nothing for now. =head1 SEE ALSO perl(1), L(3), L(3) L(3), and all L. =head1 SUPPORT Please send any questions or comments to the Apache modperl mailing list or to me at =head1 NOTES This code was made possible by : =over =item * Doug MacEachern Creator of mod_perl. That should mean enough. =item * Andreas Koenig The one I got the idea from in the first place. =item * The mod_perl mailing-list at for all your mod_perl related problems. =back =head1 AUTHOR Philippe M. Chiasson =head1 COPYRIGHT Copyright (c) 1999 Philippe M. Chiasson. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut