Modify the existing i18n() javascript function to lookup strings in

the javascript i18n array as well as expanding arguments, and make all
lookups go through it.
This commit is contained in:
Tom Hughes 2009-10-02 23:41:19 +00:00
parent 596ab82461
commit f4dba81b64
3 changed files with 11 additions and 9 deletions

View 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}")

View 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
});

View 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");