From a2b05babb8bea07286902014e62dc163361d64df Mon Sep 17 00:00:00 2001 From: miker 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.43.2