]> git.sesse.net Git - ccbs/commitdiff
Add support for the user selecting languages.
authorSteinar H. Gunderson <sesse@samfundet.no>
Sun, 17 Jul 2005 17:40:42 +0000 (17:40 +0000)
committerSteinar H. Gunderson <sesse@samfundet.no>
Sun, 17 Jul 2005 17:40:42 +0000 (17:40 +0000)
html/ccbs.pm
html/do-set-language.pl [new file with mode: 0755]
html/templates/index.tmpl

index 7940dd92fbf028514947221cca49709e609c4a11..65838027c25483dd55cc7f888b56d69ccf9ecf88 100755 (executable)
@@ -1,6 +1,7 @@
 package ccbs;
 use Template;
 use CGI;
 package ccbs;
 use Template;
 use CGI;
+use CGI::Cookie;
 use DBI;
 use HTML::Entities;
 use Time::HiRes;
 use DBI;
 use HTML::Entities;
 use Time::HiRes;
@@ -13,8 +14,16 @@ require '../intl/Sesse::GettextizeTemplates.pm';
 require '../config.pm';
 -r '../config.local.pm' and require '../config.local.pm';
 
 require '../config.pm';
 -r '../config.local.pm' and require '../config.local.pm';
 
-POSIX::setlocale( &POSIX::LC_CTYPE , $ccbs::config::lang );
-POSIX::setlocale( &POSIX::LC_MESSAGES , $ccbs::config::lang );
+# Check for language settings
+my %cookies = fetch CGI::Cookie;
+my $lang = defined($cookies{'language'}) ? $cookies{'language'}->value : undef;
+if (defined($lang) && ($lang eq 'nb_NO' || $lang eq 'en_US')) {
+       POSIX::setlocale( &POSIX::LC_CTYPE , $lang . ".UTF-8" );
+       POSIX::setlocale( &POSIX::LC_MESSAGES , $lang . ".UTF-8" );
+} else {
+       POSIX::setlocale( &POSIX::LC_CTYPE , $ccbs::config::lang );
+       POSIX::setlocale( &POSIX::LC_MESSAGES , $ccbs::config::lang );
+}
 Locale::gettext::bindtextdomain("ccbs", "po");
 Locale::gettext::textdomain("ccbs");
 
 Locale::gettext::bindtextdomain("ccbs", "po");
 Locale::gettext::textdomain("ccbs");
 
diff --git a/html/do-set-language.pl b/html/do-set-language.pl
new file mode 100755 (executable)
index 0000000..3750cb8
--- /dev/null
@@ -0,0 +1,15 @@
+#! /usr/bin/perl
+
+use ccbs;
+use CGI::Cookie;
+use strict;
+use warnings;
+
+my $cgi = new CGI;
+my $cookie = new CGI::Cookie(-name=>'language', -value=>($cgi->param('lang')));
+
+print CGI::header(-status=>'303 See other',
+               -location=>'http://ccbs.sesse.net/',
+               -cookie=>$cookie,
+               -type=>'text/html; charset=utf-8');
+
index 42f47c184242ac433027131f3c342ec22c1d9434..de03c0ecd70fb9a28c639908dd53a2c868ebc72d 100644 (file)
   </ul>
 </div>
 [% END %]
   </ul>
 </div>
 [% END %]
+
+<h2>Language support</h2>
+
+<div>
+  <p>You can select a different language if you'd like to. Note that this
+    feature requires cookie support in your web browser.</p>
+
+  <ul>
+    <li><a href="do-set-language.pl?lang=en_US">English</a></li>
+    <li><a href="do-set-language.pl?lang=nb_NO">Norwegian bokmÃ¥l</a></li>
+  </ul>
+</div>