TPAC: Add the ability to set a different default locale user/dbs/set_default_locale
authorDan Scott <dscott@laurentian.ca>
Sat, 4 Aug 2012 14:10:48 +0000 (10:10 -0400)
committerDan Scott <dscott@laurentian.ca>
Sat, 4 Aug 2012 14:10:48 +0000 (10:10 -0400)
Installations with multiple sites might desire different default locales
for their skins. This adds the Apache config directive
"OILSWebDefaultLocale", which enables you to set the default locale on a
global and a per-skin basis.

Note that this prevents the browser Accept-language header from having
any effect; sadly that header is not often used in real life.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Open-ILS/examples/apache/eg_vhost.conf
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGWeb.pm

index 0265d66..ecefc04 100644 (file)
@@ -577,11 +577,14 @@ RewriteRule ^/openurl$ ${openurl:%1} [NE,PT]
     # Locale messages files
     #PerlAddVar OILSWebLocale "en"
     #PerlAddVar OILSWebLocale "/openils/var/data/locale/messages.en.po"
-    #PerlAddVar OILSWebLocale "en_ca"
-    #PerlAddVar OILSWebLocale "/openils/var/data/locale/messages.en_ca.po"
-    #PerlAddVar OILSWebLocale "fr_ca"
-    #PerlAddVar OILSWebLocale "/openils/var/data/locale/messages.fr_ca.po"
+    #PerlAddVar OILSWebLocale "en-CA"
+    #PerlAddVar OILSWebLocale "/openils/var/data/locale/en-CA.po"
+    #PerlAddVar OILSWebLocale "fr-CA"
+    #PerlAddVar OILSWebLocale "/openils/var/data/locale/fr-CA.po"
 
+    # Set the default locale: defaults to en-US
+    #PerlAddVar OILSWebDefaultLocale "fr-CA"
+    
     # Templates will be loaded from the following paths in reverse order.
     PerlAddVar OILSWebTemplatePath "/openils/var/templates"
     #PerlAddVar OILSWebTemplatePath "/openils/var/templates_localskin"
index 1baf0ab..6bfae7a 100644 (file)
@@ -144,6 +144,7 @@ sub load_context {
     $ctx->{skin} = $cgi->cookie(OILS_HTTP_COOKIE_SKIN) || 'default';
     $ctx->{theme} = $cgi->cookie(OILS_HTTP_COOKIE_THEME) || 'default';
     $ctx->{proto} = $cgi->https ? 'https' : 'http';
+    my $default_locale = $r->dir_config('OILSWebDefaultLocale') || 'en_us';
 
     my @template_paths = uniq $r->dir_config->get('OILSWebTemplatePath');
     $ctx->{template_paths} = [ reverse @template_paths ];
@@ -167,8 +168,8 @@ sub load_context {
     }
 
     $ctx->{locale} = $set_locale ||
-        $cgi->cookie(OILS_HTTP_COOKIE_LOCALE) || 
-        parse_accept_lang($r->headers_in->get('Accept-Language')) || 'en_us';
+        $cgi->cookie(OILS_HTTP_COOKIE_LOCALE) || $default_locale ||
+        parse_accept_lang($r->headers_in->get('Accept-Language'));
 
     my $mprefix = $ctx->{media_prefix};
     if($mprefix and $mprefix !~ /^http/ and $mprefix !~ /^\//) {