TPAC: Add the ability to set a different default locale
authorDan Scott <dscott@laurentian.ca>
Sat, 4 Aug 2012 14:10:48 +0000 (10:10 -0400)
committerDan Scott <dscott@laurentian.ca>
Sun, 2 Sep 2012 02:35:56 +0000 (22:35 -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>
Signed-off-by: Art Rhyno <art632000@yahoo.ca>

Conflicts:
Open-ILS/examples/apache/eg_vhost.conf

Signed-off-by: Bill Erickson <berick@esilibrary.com>
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 c2b4cd2..81903c9 100644 (file)
@@ -591,6 +591,9 @@ RewriteRule ^/openurl$ ${openurl:%1} [NE,PT]
     #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 44c6018..cb65581 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'));
 
     # set the editor default locale for each page load
     $OpenILS::Utils::CStoreEditor::default_locale = parse_eg_locale($ctx->{locale});