# --------------------------------------------------------------------------------
# Script header
# --------------------------------------------------------------------------------
# Loading perl modules
my $start = time();
use FindBin qw($Bin);
use File::Basename;
use Cwd;
use CGI qw/:standard *table tr td select/;
use CGI::Carp;
use CGI::Session;
use Data::Dumper;
use strict;
# Our global language variable
our $syslang = undef;
####
# Notice: this will work with Apache, cheap web-server might be a serious issue!
# a) Detect if we are called by the web-server or not
# b) Set the path accordingty
BEGIN {
# Adding application lib path
my $libdir = undef;
if ( not defined($ENV{SERVER_NAME}) ) { $libdir = getcwd; }
else { $libdir = File::Basename::dirname($ENV{SCRIPT_FILENAME}); }
# I know.... but sometimes I am lazy!
chdir "$libdir/../lib";
$libdir = getcwd;
if ( not grep(/$libdir/, @INC) ) { push (@INC, $libdir); }
undef $libdir;
}
##
##
# Setting the language
# This one is to fool the compiler! Don't ask!
use EN;
# Testing if the language has allready be set or using the one defines by the browser
# frdlang is my cgi language parameter
my $q = new CGI;
if ( $q->param("frdlang") ) { $syslang = uc($q->param("frdlang")); }
elsif ( not $syslang ) { $syslang = uc(substr($ENV{HTTP_ACCEPT_LANGUAGE}, 0, 2)); }
# Unloading language modules to force recompiling under mod_perl
foreach my $lang ( grep(/DE.pm$|FR.pm$|EN.pm$/, keys(%INC)) ) { delete $INC {$lang}; }
# Loading apropriate language module
if ( uc($syslang) =~ /^DE/ ) { require DE; DE->import(); }
elsif ( uc($syslang) =~ /^FR/ ) { require FR; FR->import(); }
elsif ( uc($syslang) =~ /^EN/ ) { require EN; EN->import(); }
##
##
# Unloading the application language related module to force recompile under mod perl
foreach my $module ( grep(/utils.pm$|install.pm$|login.pm$/, keys(%INC)) ) { delete $INC{$module}; }
# setting languages for each modules to load
$utils::syslang = $syslang;
$install::syslang = $syslang;
$login::syslang = $syslang;
# Loading language dependent modules
require utils; utils->import();
require install; install->import();
require login; login->import();
# ... your cgi code.