- From: Ville Skytta via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 03 Jan 2009 21:09:33 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/validator/httpd/cgi-bin In directory hutz:/tmp/cvs-serv11276 Modified Files: check Log Message: Simplify localization selection, pre-process related config in BEGIN. Index: check =================================================================== RCS file: /sources/public/validator/httpd/cgi-bin/check,v retrieving revision 1.610 retrieving revision 1.611 diff -u -d -r1.610 -r1.611 --- check 3 Jan 2009 21:02:28 -0000 1.610 +++ check 3 Jan 2009 21:09:31 -0000 1.611 @@ -57,7 +57,6 @@ use HTML::Encoding 0.52 qw(); use HTML::Parser 3.25 qw(); # Need 3.25 for $p->ignore_elements. use HTML::Template 2.6 qw(); -use HTTP::Negotiate qw(); use HTTP::Request qw(); use HTTP::Headers::Auth qw(); # Needs to be imported after other HTTP::*. use SGML::Parser::OpenSP qw(); @@ -167,6 +166,14 @@ $CFG->{Protocols}->{Allow} = [split(/\s*,\s*/, $allowed)]; } + # Split available languages into a list + if (my $langs = delete($CFG->{Languages})) { + $CFG->{Languages} = [split(/\s+/, $langs)]; + } else { + # Default to english + $CFG->{Languages} = ["en"]; + } + { # Make types config indexed by FPI. my $_types = {}; map { $_types->{$CFG->{Types}->{$_}->{PubID}} = $CFG->{Types}->{$_} } @@ -281,37 +288,30 @@ #### Generate Template for Result. ############################################ ############################################################################### -# in case there is no language set up on the server, we'll use english as default: -if (!defined $CFG->{Languages}) { - $CFG->{Languages} = "en"; -} - # first we determine the chosen language based on # 1) lang argument given as parameter (if this language is available) # 2) HTTP language negotiation between variants available and user-agent choices # 3) English by default -my $lang = $q->param('lang') ? $q->param('lang') : ''; +my $lang = $q->param('lang') || ''; my @localizations; -my $lang_ok = FALSE; -foreach my $lang_available (split(" ", $CFG->{Languages})) { +foreach my $lang_available (@{$CFG->{Languages}}) { if ($lang eq $lang_available) { - $lang_ok = TRUE; - next; + # Requested language (from parameters) is available, just use it + undef @localizations; + last; } + push @localizations, + [$lang_available, 1, 'text/html', undef, 'utf-8', $lang_available, undef]; } -if (($lang eq '') or (!$lang_ok)) { # use HTTP-based negotiation - $lang = ''; - foreach my $lang_available (split(" ", $CFG->{Languages})) { - push @localizations, [$lang_available, 1.000, 'text/html', undef, - 'utf-8', $lang_available, undef]; - } +# If language is not chosen yet, use HTTP-based negotiation +if (@localizations) { + require HTTP::Negotiate; $lang = HTTP::Negotiate::choose(\@localizations); } -# HTTP::Negotiate::choose may return undef -# e.g if sent Accept-Language: en;q=0 -$lang = 'en_US' if (!defined($lang)); +# HTTP::Negotiate::choose may return undef e.g if sent Accept-Language: en;q=0 +$lang ||= 'en_US'; if ($lang eq "en") { $lang = 'en_US'; # legacy
Received on Saturday, 3 January 2009 21:09:43 UTC