From a2b05babb8bea07286902014e62dc163361d64df Mon Sep 17 00:00:00 2001
From: miker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Date: Wed, 30 Dec 2009 17:09:22 +0000
Subject: [PATCH] simple (minded?) dojo NLS page translator

git-svn-id: svn://svn.open-ils.org/ILS/trunk@15249 dcc99617-32d9-48b4-a31d-7c20da2025e4
---
 Open-ILS/web/js/dojo/openils/I18N.js | 42 ++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/Open-ILS/web/js/dojo/openils/I18N.js b/Open-ILS/web/js/dojo/openils/I18N.js
index 12e1a7abf2..5e10313de8 100644
--- a/Open-ILS/web/js/dojo/openils/I18N.js
+++ b/Open-ILS/web/js/dojo/openils/I18N.js
@@ -56,6 +56,48 @@ if(!dojo._hasResource["openils.I18N"]) {
 		return obj_list;
 	}
 
+    openils.I18N.translatePage = function () {
+
+        dojo.require('dojo.query');
+
+        var elements = dojo.query('*[i18n]');
+        if (!elements.length) return null;
+
+        dojo.forEach(elements, function(e){
+
+            var what = e.getAttribute('i18n');
+            var parts = what.match(/^(.+)\.([^.]+)$/);
+            var app = parts[0]; var bundle = parts[1];
+            if (!app || !bundle) return null;
+
+            if (!openils.I18N.translatePage.NLSCache[app][bundle]) {
+                dojo.requireLocalization(app,bundle);
+                openils.I18N.translatePage.NLSCache[app][bundle] = dojo.i18n.getLocalization(app,bundle);
+
+                if (!openils.I18N.translatePage.NLSCache[app][bundle]) return null;
+            }
+
+            dojo.require('dojo.string');
+
+            var template = e.innerHTML;
+            var finalHTML = dojo.string.substitute( template, openils.I18N.translatePage.NLSCache[app][bundle] );
+
+            if (template == finalHTML) { // no subsititution occurred
+                dojo.require("dojox.jsonPath");
+                var transString = e.getAttribute('string') || template;
+                finalHTML = dojox.jsonPath.query(
+                    openils.I18N.translatePage.NLSCache[app][bundle],
+                    '$.'+transString,
+                    {evalType:"RESULT"}
+                );
+            }
+
+            if (finalHTML) e.innerHTML = finalHTML;
+
+        });
+    }
+    openils.I18N.translatePage.NLSCache = {}; // stash this on the function .. WHEEEE
+
 }
 
 
-- 
2.11.0