diff --git a/data/presets/forms.json b/data/presets/forms.json index 363ce05fa..47d4c233b 100644 --- a/data/presets/forms.json +++ b/data/presets/forms.json @@ -1 +1 @@ -{"access":{"key":"access","type":"combo"},"address":{"type":"address","title":"Address","keys":["addr:housename","addr:housenumber","addr:street","addr:city"]},"atm":{"key":"atm","type":"check"},"building":{"key":"building","type":"combo"},"building_area":{"key":"building","type":"check","default":{"area":"yes"}},"building_yes":{"key":"building","type":"combo","default":{"area":"yes"}},"capacity":{"key":"capacity","type":"text"},"cuisine":{"key":"cuisine","type":"combo","indexed":true},"denomination":{"key":"denomination","type":"combo"},"elevation":{"key":"ele","type":"number"},"emergency":{"key":"emergency","type":"check"},"fee":{"key":"fee","type":"check"},"internet_access":{"key":"internet_access","title":"Internet Access","type":"combo","options":["yes","no","wlan","wired","terminal"]},"layer":{"key":"layer","type":"combo"},"levels":{"key":"building:levels","type":"number","title":"Levels"},"maxspeed":{"key":"maxspeed","type":"combo"},"network":{"key":"network","type":"text"},"oneway":{"key":"oneway","type":"check"},"opening_hours":{"key":"opening_hours","type":"text"},"operator":{"key":"operator","type":"text"},"religion":{"key":"religion","type":"combo","options":["christian","muslim","buddhist","jewish","hindu","shinto","taoist"]},"roadtype":{"title":" ","type":"radio","options":["bridge","tunnel","embankment","cutting"]},"shelter":{"key":"shelter","type":"check"},"surface":{"key":"surface","type":"combo"}} \ No newline at end of file +{"access":{"key":"access","type":"combo"},"address":{"type":"address","keys":["addr:housename","addr:housenumber","addr:street","addr:city"]},"atm":{"key":"atm","type":"check"},"building":{"key":"building","type":"combo"},"building_area":{"key":"building","type":"check","default":{"area":"yes"}},"building_yes":{"key":"building","type":"combo","default":{"area":"yes"}},"capacity":{"key":"capacity","type":"text"},"cuisine":{"key":"cuisine","type":"combo","indexed":true},"denomination":{"key":"denomination","type":"combo"},"elevation":{"key":"ele","type":"number"},"emergency":{"key":"emergency","type":"check"},"fee":{"key":"fee","type":"check"},"internet_access":{"key":"internet_access","type":"combo","options":["yes","no","wlan","wired","terminal"]},"layer":{"key":"layer","type":"combo"},"levels":{"key":"building:levels","type":"number"},"maxspeed":{"key":"maxspeed","type":"combo"},"network":{"key":"network","type":"text"},"oneway":{"key":"oneway","type":"check"},"opening_hours":{"key":"opening_hours","type":"text"},"operator":{"key":"operator","type":"text"},"religion":{"key":"religion","type":"combo","options":["christian","muslim","buddhist","jewish","hindu","shinto","taoist"]},"roadtype":{"title":" ","type":"radio","options":["bridge","tunnel","embankment","cutting"]},"shelter":{"key":"shelter","type":"check"},"surface":{"key":"surface","type":"combo"}} \ No newline at end of file diff --git a/data/presets/forms/address.json b/data/presets/forms/address.json index 34048ee5c..dd8a73898 100644 --- a/data/presets/forms/address.json +++ b/data/presets/forms/address.json @@ -1,6 +1,5 @@ { "type": "address", - "title": "Address", "keys": [ "addr:housename", "addr:housenumber", diff --git a/data/presets/forms/internet_access.json b/data/presets/forms/internet_access.json index 26f07d0e4..f8e7ae72e 100644 --- a/data/presets/forms/internet_access.json +++ b/data/presets/forms/internet_access.json @@ -1,6 +1,5 @@ { "key": "internet_access", - "title": "Internet Access", "type": "combo", "options": [ "yes", diff --git a/data/presets/forms/levels.json b/data/presets/forms/levels.json index c96a9e16a..75e50864f 100644 --- a/data/presets/forms/levels.json +++ b/data/presets/forms/levels.json @@ -1,5 +1,4 @@ { "key": "building:levels", - "type": "number", - "title": "Levels" + "type": "number" } \ No newline at end of file diff --git a/index.html b/index.html index 2311d0afe..666ca1041 100644 --- a/index.html +++ b/index.html @@ -166,6 +166,7 @@ + diff --git a/js/id/presets.js b/js/id/presets.js index 946dcd16a..2747a80c0 100644 --- a/js/id/presets.js +++ b/js/id/presets.js @@ -20,7 +20,9 @@ iD.presets = function(context) { all.load = function(d) { if (d.forms) { - forms = d.forms; + _.forEach(d.forms, function(d, id) { + forms[id] = iD.presets.Form(d, id); + }); } if (d.presets) { diff --git a/js/id/presets/form.js b/js/id/presets/form.js new file mode 100644 index 000000000..e0e232d2a --- /dev/null +++ b/js/id/presets/form.js @@ -0,0 +1,9 @@ +iD.presets.Form = function(form, id) { + form = _.clone(form); + + form.label = function() { + return t('presets.forms.' + id + '.label', {default: form.key}); + }; + + return form; +}; diff --git a/js/id/presets/preset.js b/js/id/presets/preset.js index 2953aacce..7e8dc2672 100644 --- a/js/id/presets/preset.js +++ b/js/id/presets/preset.js @@ -7,7 +7,7 @@ iD.presets.Preset = function(preset, forms) { if (typeof f === 'string') { return forms[f]; } else { - return f; + return iD.presets.Form(f, f.key); } }) : []; diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 985a77353..8e022d144 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -41,7 +41,7 @@ iD.ui.preset = function(context) { .attr('class', 'col3 preset-label') .append('h4') .attr('for', 'input-' + d.key) - .text(d.title || d.key); + .text(function(d) { return d.label(); }); input.call(wrap.append('div') .attr('class', 'col9 preset-input'), d); diff --git a/js/lib/locale.js b/js/lib/locale.js index 704a45d4c..91b3818a9 100644 --- a/js/lib/locale.js +++ b/js/lib/locale.js @@ -18,6 +18,8 @@ function t(s, o, loc) { if (rep !== undefined) { if (o) for (var k in o) rep = rep.replace('{' + k + '}', o[k]); return rep; + } else if (o.default) { + return o.default; } else { var missing = 'Missing translation: ' + s; if (console) console.error(missing); diff --git a/locale/en.js b/locale/en.js index ad3296a01..0ca323771 100644 --- a/locale/en.js +++ b/locale/en.js @@ -239,5 +239,105 @@ locale.en = { zoom: { 'in': "Zoom In", out: "Zoom Out" + }, + + // We expect these to be extracted at some point. + "presets": { + "forms": { + "access": { + "label": "Access" + }, + "address": { + "label": "Address" + }, + "atm": { + "label": "ATM" + }, + "building": { + "label": "Building" + }, + "building_area": { + "label": "Building" + }, + "building_yes": { + "label": "Building" + }, + "capacity": { + "label": "Capacity" + }, + "cuisine": { + "label": "Cuisine" + }, + "denomination": { + "label": "Denomination" + }, + "elevation": { + "label": "Elevation" + }, + "emergency": { + "label": "Emergency" + }, + "fee": { + "label": "Fee" + }, + "internet_access": { + "label": "Internet Access", + "options": { + "yes": "Yes", + "no": "No", + "wlan": "Wifi", + "wired": "Wired", + "terminal": "Terminal" + } + }, + "layer": { + "label": "Layer" + }, + "levels": { + "label": "Levels" + }, + "maxspeed": { + "label": "Speed Limit" + }, + "network": { + "label": "Network" + }, + "oneway": { + "label": "One Way" + }, + "opening_hours": { + "label": "Hours" + }, + "operator": { + "label": "Operator" + }, + "religion": { + "label": "Religion", + "options": { + "christian": "Christian", + "muslim": "Muslim", + "buddhist": "Buddhist", + "jewish": "Jewish", + "hindu": "Hindu", + "shinto": "Shinto", + "taoist": "Taoist" + } + }, + "roadtype": { + "label": "Road Type", + "options": { + "bridge": "Bridge", + "tunnel": "Tunnel", + "embankment": "Embankment", + "cutting": "Cutting" + } + }, + "shelter": { + "label": "Shelter" + }, + "surface": { + "label": "Surface" + } + } } };