Modify the existing i18n() javascript function to lookup strings in
authorTom Hughes <tom@compton.nu>
Fri, 2 Oct 2009 23:41:19 +0000 (23:41 +0000)
committerTom Hughes <tom@compton.nu>
Fri, 2 Oct 2009 23:41:19 +0000 (23:41 +0000)
the javascript i18n array as well as expanding arguments, and make all
lookups go through it.

app/helpers/application_helper.rb
public/javascripts/map.js
public/javascripts/site.js

index 0107372..7dcbe36 100644 (file)
@@ -15,7 +15,7 @@ module ApplicationHelper
     js = ""
 
     js << "<script type='text/javascript'>\n"
-    js << "rails_i18n = new Array();\n"
+    js << "i18n_strings = new Array();\n"
     js << javascript_strings_for_key("javascripts")
     js << "</script>\n"
 
@@ -29,7 +29,7 @@ private
     value = t(key)
 
     if value.is_a?(String)
-      js << "rails_i18n['#{key}'] = '" << escape_javascript(value) << "';\n"
+      js << "i18n_strings['#{key}'] = '" << escape_javascript(value) << "';\n"
     else
       value.each_key do |k|
         js << javascript_strings_for_key("#{key}.#{k}")
index 8ae2349..32953c4 100644 (file)
@@ -36,26 +36,26 @@ function createMap(divName, options) {
       displayProjection: new OpenLayers.Projection("EPSG:4326")
    });
 
-   var mapnik = new OpenLayers.Layer.OSM.Mapnik(rails_i18n["javascripts.map.base.mapnik"], {
+   var mapnik = new OpenLayers.Layer.OSM.Mapnik(i18n("javascripts.map.base.mapnik"), {
       displayOutsideMaxExtent: true,
       wrapDateLine: true
    });
    map.addLayer(mapnik);
 
-   var osmarender = new OpenLayers.Layer.OSM.Osmarender(rails_i18n["javascripts.map.base.osmarender"], {
+   var osmarender = new OpenLayers.Layer.OSM.Osmarender(i18n("javascripts.map.base.osmarender"), {
       displayOutsideMaxExtent: true,
       wrapDateLine: true
    });
    map.addLayer(osmarender);
 
-   var cyclemap = new OpenLayers.Layer.OSM.CycleMap(rails_i18n["javascripts.map.base.cycle_map"], {
+   var cyclemap = new OpenLayers.Layer.OSM.CycleMap(i18n("javascripts.map.base.cycle_map"), {
       displayOutsideMaxExtent: true,
       wrapDateLine: true
    });
    map.addLayer(cyclemap);
 
    var nonamekey = nonamekeys[document.domain];
-   var noname = new OpenLayers.Layer.OSM(rails_i18n["javascripts.map.base.noname"], [
+   var noname = new OpenLayers.Layer.OSM(i18n("javascripts.map.base.noname"), [
       "http://a.tile.cloudmade.com/" + nonamekey + "/3/256/${z}/${x}/${y}.png",
       "http://b.tile.cloudmade.com/" + nonamekey + "/3/256/${z}/${x}/${y}.png",
       "http://c.tile.cloudmade.com/" + nonamekey + "/3/256/${z}/${x}/${y}.png"
@@ -66,7 +66,7 @@ function createMap(divName, options) {
    });
    map.addLayer(noname);
 
-   var maplint = new OpenLayers.Layer.OSM.Maplint(rails_i18n["javascripts.map.overlays.maplint"], {
+   var maplint = new OpenLayers.Layer.OSM.Maplint(i18n("javascripts.map.overlays.maplint"), {
       displayOutsideMaxExtent: true,
       wrapDateLine: true
    });
index 9dbb2a6..43cca26 100644 (file)
@@ -62,7 +62,7 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,obj
       node.href = setArgs("/edit", args);
       node.style.fontStyle = 'normal';
     } else {
-      node.href = 'javascript:alert(rails_i18n["javascripts.site.edit_zoom_alert"]);';
+      node.href = 'javascript:alert(i18n("javascripts.site.edit_zoom_alert"));';
       node.style.fontStyle = 'italic';
     }
   }
@@ -87,7 +87,7 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,obj
       node.href = setArgs("/history", args);
       node.style.fontStyle = 'normal';
     } else {
-      node.href = 'javascript:alert(rails_i18n["javascripts.site.history_zoom_alert"]);';
+      node.href = 'javascript:alert(i18n("javascripts.site.history_zoom_alert"));';
       node.style.fontStyle = 'italic';
     }
   }
@@ -202,6 +202,8 @@ function getStyle(el, property) {
  * rails and then later by javascript.
  */
 function i18n(string, keys) {
+  string = i18n_strings[string] || string
+
   for (var key in keys) {
     var re_key = '\\[\\[' + key + '\\]\\]';
     var re = new RegExp(re_key, "g");