- &Packages::I18N::Locale::load( "$homedir/po" );
-
- my $acc = I18N::AcceptLanguage->new();
- my %all_langs = map { $_ => 1 } (@LANGUAGES, @DDTP_LANGUAGES);
- my @all_langs = sort keys %all_langs;
- my $http_lang = $acc->accepts( $input->http("Accept-Language"),
- \@all_langs ) || 'en';
- debug( "LANGUAGES=@all_langs header=".
+ my $last_modified = $Packages::DB::db_read_time;
+ my $now = time;
+ my $expires = $last_modified + (12*3600);
+ $expires = $now + 3600 if $expires < $now;
+ # allow some fudge, since the db mod time is not the end of
+ # the cron job
+ $last_modified = $now if $now - $last_modified < 3600;
+
+ if ($input->http('If-Modified-Since') and
+ (my $client_timestamp = str2time($input->http('If-Modified-Since'), 'UTC'))) {
+ if ($client_timestamp >= $last_modified) {
+ # we are not modified since asked -> return "304 Not Modified"
+ print $input->header(-status => 304);
+ exit;
+ }
+ }
+
+ my %PO_LANGUAGES = map { $_ => 1 } @LANGUAGES;
+ my %DDTP_LANGUAGES = map { $_ => 1 } @DDTP_LANGUAGES;
+ my $acc = I18N::AcceptLanguage->new(defaultLanguage => 'en');
+ my $ddtp_lang = $acc->accepts( $input->http("Accept-Language"),
+ \@DDTP_LANGUAGES );
+ my $po_lang = $acc->accepts( $input->http("Accept-Language"),
+ \@LANGUAGES );
+ debug( "LANGS=@LANGUAGES DDTP_LANGS=@DDTP_LANGUAGES header=".