- From: Olivier Thereaux via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 14 Mar 2007 06:33:37 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/validator/httpd/cgi-bin
In directory hutz:/tmp/cvs-serv24838/httpd/cgi-bin
Modified Files:
check
Log Message:
first pass at implementing language negotiation/selection. Can certainly be improved, but it works
Index: check
===================================================================
RCS file: /sources/public/validator/httpd/cgi-bin/check,v
retrieving revision 1.476
retrieving revision 1.477
diff -u -d -r1.476 -r1.477
--- check 12 Mar 2007 20:38:42 -0000 1.476
+++ check 14 Mar 2007 06:33:35 -0000 1.477
@@ -259,11 +259,44 @@
$File->{Warnings} = []; # Warnings...
$File->{Namespaces} = []; # Other (non-root) Namespaces.
+#########################################
+# Populate $File->{Opt} -- CGI Options. #
+#########################################
+
+#
+# Preprocess the CGI parameters.
+$q = &prepCGI($File, $q);
+
+
+
###############################################################################
#### Generate Template for Result. ############################################
###############################################################################
-my $lang = 'en_US'; # @@TODO: conneg;
+# 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 @localizations;
+my $lang_ok = FALSE;
+foreach my $lang_available ( split(" ", $CFG->{Languages}) ) {
+ if ($lang eq $lang_available){ $lang_ok = TRUE; next }
+}
+
+if (($lang eq '') or (!$lang_ok)) { # use HTTP-based negotiation
+ $lang = '';
+ use HTTP::Negotiate qw(choose);
+ foreach my $lang_available ( split(" ", $CFG->{Languages}) ) {
+ push @localizations, [$lang_available, 1.000, 'text/html', undef, 'utf-8', $lang_available , undef]
+ }
+ $lang = choose(\@localizations);
+}
+
+
+if ($lang eq "en") {
+ $lang = 'en_US'; # legacy
+}
my $T = HTML::Template->new(
filename => File::Spec->catfile($CFG->{Paths}->{Templates},
@@ -348,13 +381,9 @@
undef $lang;
-#########################################
-# Populate $File->{Opt} -- CGI Options. #
-#########################################
-
-#
-# Preprocess the CGI parameters.
-$q = &prepCGI($File, $q);
+#####################################################
+# Populate $File->{Opt} -- CGI Options. (continued) #
+#####################################################
#
# Set session switches.
Received on Wednesday, 14 March 2007 06:33:52 UTC