X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/0cb97bd7d96030c07d9716c3d26d39bcd4f712ff..35785067979a410f2a3f78927d50869ee398f349:/app/views/browse/start.rjs diff --git a/app/views/browse/start.rjs b/app/views/browse/start.rjs index 04f5e12c9..64e4431a4 100644 --- a/app/views/browse/start.rjs +++ b/app/views/browse/start.rjs @@ -1,4 +1,4 @@ -page.replace_html :sidebar_title, 'Data' +page.replace_html :sidebar_title, t('browse.start_rjs.data_frame_title') page.replace_html :sidebar_content, :partial => 'start' page << <= 15) { useMap(); } else { - setStatus("Zoom in or select an area of the map to view"); + setStatus("#{I18n.t('browse.start_rjs.zoom_or_select')}"); } } } @@ -50,11 +50,6 @@ page << < '{{num_features}}')}", { num_features: browseFeatureList.length }))); div.appendChild(p); var input = document.createElement("input"); input.type = "submit"; - input.value = "Load Data"; + input.value = "#{I18n.t('browse.start_rjs.load_data')}"; input.onclick = loadFeatureList; div.appendChild(input); $("browse_content").innerHTML = ""; $("browse_content").appendChild(div); } - + function loadFeatureList() { browseDataLayer.addFeatures(browseFeatureList); browseDataLayer.events.triggerEvent("loadend"); @@ -153,7 +153,7 @@ page << < 0.25) { - setStatus("Unable to load: Bounding box size of " + size + " is too large (must be smaller than 0.25)"); + if (size > #{APP_CONFIG['max_request_area']}) { + setStatus(i18n_js("#{I18n.t('browse.start_rjs.unable_to_load_size', :bbox_size => '{{bbox_size}}', :max_bbox_size => APP_CONFIG['max_request_area'])}", { bbox_size: size })); } else { - loadGML("/api/0.5/map?bbox=" + projected.toBBOX()); + loadGML("/api/#{API_VERSION}/map?bbox=" + projected.toBBOX()); } } function loadGML(url) { - setStatus("Loading..."); + setStatus("#{I18n.t('browse.start_rjs.loading')}"); $("browse_content").innerHTML = ""; if (!browseDataLayer) { @@ -210,21 +210,24 @@ page << < '{{feature}}')}", { feature: featureNameHistory(this.feature) }))); tr.appendChild(heading); var td = document.createElement("td"); @@ -427,7 +430,7 @@ page << <= 0; i--) { - var user = nodes[i].getAttribute("user") || "private user"; + var user = nodes[i].getAttribute("user") || "#{I18n.t('browse.start_rjs.private_user')}"; var timestamp = nodes[i].getAttribute("timestamp"); var item = document.createElement("li"); - item.appendChild(document.createTextNode("Edited by " + user + " at " + timestamp)); + item.appendChild(document.createTextNode(i18n_js("#{I18n.t('browse.start_rjs.edited_by_user_at_timestamp', :user => '{{user}}', :timestamp => '{{timestamp}}')}", { user: user, timestamp: timestamp }))); history.appendChild(item); } div.appendChild(history); @@ -454,15 +457,51 @@ page << < '{{id}}')}", { id: feature.osm_id }); + } else if (featureType(feature) == "way") { + return i18n_js("#{I18n.t('browse.start_rjs.object_list.selected.type.way', :id => '{{id}}')}", { id: feature.osm_id }); } } + function featureNameHistory(feature) { + if (feature.attributes.name) { + return feature.attributes.name; + } else if (featureType(feature) == "node") { + return i18n_js("#{I18n.t('browse.start_rjs.object_list.history.type.node', :id => '{{id}}')}", { id: feature.osm_id }); + } else if (featureType(feature) == "way") { + return i18n_js("#{I18n.t('browse.start_rjs.object_list.history.type.way', :id => '{{id}}')}", { id: feature.osm_id }); + } + } + + /* + This is a hack so that we can interpolate JavaScript variables in + translation strings from Ruby, doing the string replacement + client-side instead of on the server. + */ + function i18n_js(string, keys) { + for (var key in keys) { + var re_key = '\{\{' + key + '\}\}'; + var re = new RegExp(re_key, "g"); + + string = string.replace(re, keys[key]); + } + + return string; + } + function setStatus(status) { $("browse_status").innerHTML = status; $("browse_status").style.display = "block"; @@ -473,9 +512,5 @@ page << <